ngx-mask 8.1.7 → 8.2.0
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.
- package/README.md +75 -52
- package/bundles/ngx-mask.umd.js +69 -15
- package/bundles/ngx-mask.umd.js.map +1 -1
- package/bundles/ngx-mask.umd.min.js +1 -1
- package/bundles/ngx-mask.umd.min.js.map +1 -1
- package/esm2015/lib/config.js +4 -1
- package/esm2015/lib/mask-applier.service.js +4 -1
- package/esm2015/lib/mask.directive.js +56 -14
- package/esm2015/lib/mask.service.js +1 -4
- package/esm5/lib/config.js +4 -1
- package/esm5/lib/mask-applier.service.js +4 -1
- package/esm5/lib/mask.directive.js +64 -13
- package/esm5/lib/mask.service.js +1 -4
- package/fesm2015/ngx-mask.js +61 -16
- package/fesm2015/ngx-mask.js.map +1 -1
- package/fesm5/ngx-mask.js +69 -15
- package/fesm5/ngx-mask.js.map +1 -1
- package/lib/config.d.ts +1 -0
- package/lib/mask-applier.service.d.ts +1 -0
- package/lib/mask.directive.d.ts +3 -0
- package/lib/mask.service.d.ts +0 -1
- package/ngx-mask.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-mask.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://ngx-mask/lib/config.ts","ng://ngx-mask/lib/mask-applier.service.ts","ng://ngx-mask/lib/mask.service.ts","ng://ngx-mask/lib/mask.directive.ts","ng://ngx-mask/lib/mask.pipe.ts","ng://ngx-mask/lib/ngx-mask.module.ts","ng://ngx-mask/lib/custom-keyboard-event.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { InjectionToken } from '@angular/core';\n\nexport interface IConfig {\n suffix: string;\n prefix: string;\n thousandSeparator: string;\n decimalMarker: '.' | ',';\n clearIfNotMatch: boolean;\n showTemplate: boolean;\n showMaskTyped: boolean;\n placeHolderCharacter: string;\n shownMaskExpression: string;\n dropSpecialCharacters: boolean | string[];\n specialCharacters: string[];\n hiddenInput: boolean | undefined;\n validation: boolean;\n separatorLimit: string;\n patterns: {\n [character: string]: {\n pattern: RegExp;\n optional?: boolean;\n symbol?: string;\n };\n };\n}\n\nexport type optionsConfig = Partial<IConfig>;\nexport const config: InjectionToken<IConfig> = new InjectionToken('config');\nexport const NEW_CONFIG: InjectionToken<IConfig> = new InjectionToken('NEW_CONFIG');\nexport const INITIAL_CONFIG: InjectionToken<IConfig> = new InjectionToken('INITIAL_CONFIG');\n\nexport const initialConfig: IConfig = {\n suffix: '',\n prefix: '',\n thousandSeparator: ' ',\n decimalMarker: '.',\n clearIfNotMatch: false,\n showTemplate: false,\n showMaskTyped: false,\n placeHolderCharacter: '_',\n dropSpecialCharacters: true,\n hiddenInput: undefined,\n shownMaskExpression: '',\n separatorLimit: '',\n validation: true,\n // tslint:disable-next-line: quotemark\n specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '\"', \"'\"],\n patterns: {\n '0': {\n pattern: new RegExp('\\\\d'),\n },\n '9': {\n pattern: new RegExp('\\\\d'),\n optional: true,\n },\n X: {\n pattern: new RegExp('\\\\d'),\n symbol: '*',\n },\n A: {\n pattern: new RegExp('[a-zA-Z0-9]'),\n },\n S: {\n pattern: new RegExp('[a-zA-Z]'),\n },\n d: {\n pattern: new RegExp('\\\\d'),\n },\n m: {\n pattern: new RegExp('\\\\d'),\n },\n M: {\n pattern: new RegExp('\\\\d'),\n },\n H: {\n pattern: new RegExp('\\\\d'),\n },\n h: {\n pattern: new RegExp('\\\\d'),\n },\n s: {\n pattern: new RegExp('\\\\d'),\n },\n },\n};\n\nexport const timeMasks: string[] = ['Hh:m0:s0', 'Hh:m0', 'm0:s0'];\n\nexport const withoutValidation: string[] = [\n 'percent',\n 'Hh',\n 's0',\n 'm0',\n 'separator',\n 'd0/M0/0000',\n 'd0/M0',\n 'd0',\n 'M0',\n];\n","import { Inject, Injectable } from '@angular/core';\n\nimport { config, IConfig } from './config';\n\n@Injectable()\nexport class MaskApplierService {\n public dropSpecialCharacters: IConfig['dropSpecialCharacters'];\n public hiddenInput: IConfig['hiddenInput'];\n public showTemplate!: IConfig['showTemplate'];\n public clearIfNotMatch!: IConfig['clearIfNotMatch'];\n public maskExpression: string = '';\n public actualValue: string = '';\n public shownMaskExpression: string = '';\n public maskSpecialCharacters!: IConfig['specialCharacters'];\n public maskAvailablePatterns!: IConfig['patterns'];\n public prefix!: IConfig['prefix'];\n public suffix!: IConfig['suffix'];\n public thousandSeparator!: IConfig['thousandSeparator'];\n public decimalMarker!: IConfig['decimalMarker'];\n public customPattern!: IConfig['patterns'];\n public ipError?: boolean;\n public showMaskTyped!: IConfig['showMaskTyped'];\n public placeHolderCharacter!: IConfig['placeHolderCharacter'];\n public validation: IConfig['validation'];\n public separatorLimit: IConfig['separatorLimit'];\n\n private _shift!: Set<number>;\n\n public constructor(@Inject(config) protected _config: IConfig) {\n this._shift = new Set();\n this.clearIfNotMatch = this._config.clearIfNotMatch;\n this.dropSpecialCharacters = this._config.dropSpecialCharacters;\n this.maskSpecialCharacters = this._config.specialCharacters;\n this.maskAvailablePatterns = this._config.patterns;\n this.prefix = this._config.prefix;\n this.suffix = this._config.suffix;\n this.thousandSeparator = this._config.thousandSeparator;\n this.decimalMarker = this._config.decimalMarker;\n this.hiddenInput = this._config.hiddenInput;\n this.showMaskTyped = this._config.showMaskTyped;\n this.placeHolderCharacter = this._config.placeHolderCharacter;\n this.validation = this._config.validation;\n this.separatorLimit = this._config.separatorLimit;\n }\n\n public applyMaskWithPattern(inputValue: string, maskAndPattern: [string, IConfig['patterns']]): string {\n const [mask, customPattern] = maskAndPattern;\n this.customPattern = customPattern;\n return this.applyMask(inputValue, mask);\n }\n public applyMask(inputValue: string, maskExpression: string, position: number = 0, cb: Function = () => { }): string {\n if (inputValue === undefined || inputValue === null || maskExpression === undefined) {\n return '';\n }\n let cursor = 0;\n let result = '';\n let multi = false;\n let backspaceShift = false;\n let shift = 1;\n let stepBack = false;\n if (inputValue.slice(0, this.prefix.length) === this.prefix) {\n inputValue = inputValue.slice(this.prefix.length, inputValue.length);\n }\n if (!!this.suffix && inputValue.endsWith(this.suffix)) {\n inputValue = inputValue.slice(0, inputValue.length - this.suffix.length);\n }\n const inputArray: string[] = inputValue.toString().split('');\n if (maskExpression === 'IP') {\n this.ipError = !!(inputArray.filter((i: string) => i === '.').length < 3 && inputArray.length < 7);\n maskExpression = '099.099.099.099';\n }\n if (maskExpression.startsWith('percent')) {\n if (inputValue.match('[a-z]|[A-Z]') || inputValue.match(/[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,\\/]/)) {\n inputValue = this._stripToDecimal(inputValue);\n const precision: number = this.getPrecision(maskExpression);\n inputValue = this.checkInputPrecision(inputValue, precision, '.');\n }\n if (inputValue.indexOf('.') > 0 && !this.percentage(inputValue.substring(0, inputValue.indexOf('.')))) {\n const base: string = inputValue.substring(0, inputValue.indexOf('.') - 1);\n inputValue = `${base}${inputValue.substring(inputValue.indexOf('.'), inputValue.length)}`;\n }\n if (this.percentage(inputValue)) {\n result = inputValue;\n } else {\n result = inputValue.substring(0, inputValue.length - 1);\n }\n } else if (maskExpression.startsWith('separator')) {\n if (\n inputValue.match('[wа-ÑÐ-Я]') ||\n inputValue.match('[ÐÑÐ-Ñ]') ||\n inputValue.match('[a-z]|[A-Z]') ||\n inputValue.match(/[-@#!$%\\\\^&*()_£¬'+|~=`{}\\[\\]:\";<>.?\\/]/) ||\n inputValue.match('[^A-Za-z0-9,]')\n ) {\n inputValue = this._stripToDecimal(inputValue);\n }\n\n inputValue =\n inputValue.length > 1 && inputValue[0] === '0' && inputValue[1] !== this.decimalMarker\n ? inputValue.slice(1, inputValue.length)\n : inputValue;\n\n // TODO: we had different rexexps here for the different cases... but tests dont seam to bother - check this\n // separator: no COMMA, dot-sep: no SPACE, COMMA OK, comma-sep: no SPACE, COMMA OK\n\n const thousandSeperatorCharEscaped: string = this._charToRegExpExpression(this.thousandSeparator);\n const decimalMarkerEscaped: string = this._charToRegExpExpression(this.decimalMarker);\n const invalidChars: string = '@#!$%^&*()_+|~=`{}\\\\[\\\\]:\\\\s,\";<>?\\\\/'\n .replace(thousandSeperatorCharEscaped, '')\n .replace(decimalMarkerEscaped, '');\n\n const invalidCharRegexp: RegExp = new RegExp('[' + invalidChars + ']');\n\n if (inputValue.match(invalidCharRegexp)) {\n inputValue = inputValue.substring(0, inputValue.length - 1);\n }\n\n const precision: number = this.getPrecision(maskExpression);\n inputValue = this.checkInputPrecision(inputValue, precision, this.decimalMarker);\n const strForSep: string = inputValue.replace(new RegExp(thousandSeperatorCharEscaped, 'g'), '');\n result = this._formatWithSeparators(strForSep, this.thousandSeparator, this.decimalMarker, precision);\n\n const commaShift: number = result.indexOf(',') - inputValue.indexOf(',');\n const shiftStep: number = result.length - inputValue.length;\n\n if (shiftStep > 0 && result[position] !== ',') {\n backspaceShift = true;\n let _shift = 0;\n do {\n this._shift.add(position + _shift);\n _shift++;\n } while (_shift < shiftStep);\n } else if (\n (commaShift !== 0 && position > 0 && !(result.indexOf(',') >= position && position > 3)) ||\n (!(result.indexOf('.') >= position && position > 3) && shiftStep <= 0)\n ) {\n this._shift.clear();\n backspaceShift = true;\n shift = shiftStep;\n position += shiftStep;\n this._shift.add(position);\n } else {\n this._shift.clear();\n }\n } else {\n for (\n // tslint:disable-next-line\n let i: number = 0, inputSymbol: string = inputArray[0];\n i < inputArray.length;\n i++ , inputSymbol = inputArray[i]\n ) {\n if (cursor === maskExpression.length) {\n break;\n }\n if (this._checkSymbolMask(inputSymbol, maskExpression[cursor]) && maskExpression[cursor + 1] === '?') {\n result += inputSymbol;\n cursor += 2;\n } else if (\n maskExpression[cursor + 1] === '*' &&\n multi &&\n this._checkSymbolMask(inputSymbol, maskExpression[cursor + 2])\n ) {\n result += inputSymbol;\n cursor += 3;\n multi = false;\n } else if (this._checkSymbolMask(inputSymbol, maskExpression[cursor]) && maskExpression[cursor + 1] === '*') {\n result += inputSymbol;\n multi = true;\n } else if (\n maskExpression[cursor + 1] === '?' &&\n this._checkSymbolMask(inputSymbol, maskExpression[cursor + 2])\n ) {\n result += inputSymbol;\n cursor += 3;\n } else if (\n this._checkSymbolMask(inputSymbol, maskExpression[cursor]) ||\n (this.hiddenInput &&\n this.maskAvailablePatterns[maskExpression[cursor]] &&\n this.maskAvailablePatterns[maskExpression[cursor]].symbol === inputSymbol)\n ) {\n if (maskExpression[cursor] === 'H') {\n if (Number(inputSymbol) > 2) {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'h') {\n if (result === '2' && Number(inputSymbol) > 3) {\n cursor += 1;\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'm') {\n if (Number(inputSymbol) > 5) {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 's') {\n if (Number(inputSymbol) > 5) {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n const daysCount = 31;\n if (maskExpression[cursor] === 'd') {\n if (Number(inputValue.slice(cursor, cursor + 2)) > daysCount || inputValue[cursor + 1] === '/') {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'M') {\n const monthsCount = 12;\n // mask without day\n const withoutDays: boolean =\n cursor === 0 &&\n (Number(inputSymbol) > 2 ||\n Number(inputValue.slice(cursor, cursor + 2)) > monthsCount ||\n inputValue[cursor + 1] === '/');\n // day<10 && month<12 for input\n const day1monthInput: boolean =\n inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n ((inputValue[cursor - 2] === '/' &&\n (Number(inputValue.slice(cursor - 1, cursor + 1)) > monthsCount && inputValue[cursor] !== '/')) ||\n inputValue[cursor] === '/' ||\n ((inputValue[cursor - 3] === '/' &&\n (Number(inputValue.slice(cursor - 2, cursor)) > monthsCount && inputValue[cursor - 1] !== '/')) ||\n inputValue[cursor - 1] === '/'));\n // 10<day<31 && month<12 for input\n const day2monthInput: boolean =\n Number(inputValue.slice(cursor - 3, cursor - 1)) <= daysCount &&\n !inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n inputValue[cursor - 1] === '/' &&\n (Number(inputValue.slice(cursor, cursor + 2)) > monthsCount || inputValue[cursor + 1] === '/');\n // day<10 && month<12 for paste whole data\n const day1monthPaste: boolean =\n Number(inputValue.slice(cursor - 3, cursor - 1)) > daysCount &&\n !inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n (!inputValue.slice(cursor - 2, cursor).includes('/') &&\n Number(inputValue.slice(cursor - 2, cursor)) > monthsCount);\n // 10<day<31 && month<12 for paste whole data\n const day2monthPaste: boolean =\n Number(inputValue.slice(cursor - 3, cursor - 1)) <= daysCount &&\n !inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n inputValue[cursor - 1] !== '/' &&\n Number(inputValue.slice(cursor - 1, cursor + 1)) > monthsCount;\n\n if (withoutDays || day1monthInput || day2monthInput || day1monthPaste || day2monthPaste) {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n result += inputSymbol;\n cursor++;\n } else if (this.maskSpecialCharacters.indexOf(maskExpression[cursor]) !== -1) {\n result += maskExpression[cursor];\n cursor++;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n } else if (\n this.maskSpecialCharacters.indexOf(inputSymbol) > -1 &&\n this.maskAvailablePatterns[maskExpression[cursor]] &&\n this.maskAvailablePatterns[maskExpression[cursor]].optional\n ) {\n if (!!inputArray[cursor] && maskExpression !== '099.099.099.099') {\n result += inputArray[cursor];\n }\n cursor++;\n i--;\n } else if (\n this.maskExpression[cursor + 1] === '*' &&\n this._findSpecialChar(this.maskExpression[cursor + 2]) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.maskExpression[cursor + 1] === '?' &&\n this._findSpecialChar(this.maskExpression[cursor + 2]) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (this.showMaskTyped && this.maskSpecialCharacters.indexOf(inputSymbol) < 0 && inputSymbol !== this.placeHolderCharacter) {\n stepBack = true;\n }\n }\n }\n if (\n result.length + 1 === maskExpression.length &&\n this.maskSpecialCharacters.indexOf(maskExpression[maskExpression.length - 1]) !== -1\n ) {\n result += maskExpression[maskExpression.length - 1];\n }\n\n let newPosition: number = position + 1;\n\n while (this._shift.has(newPosition)) {\n shift++;\n newPosition++;\n }\n\n let actualShift: number = this._shift.has(position) ? shift : 0;\n if (stepBack) {\n actualShift--;\n }\n\n cb(actualShift, backspaceShift);\n if (shift < 0) {\n this._shift.clear();\n }\n let res = `${this.prefix}${result}${this.suffix}`;\n if (result.length === 0) {\n res = `${this.prefix}${result}`;\n }\n return res;\n }\n public _findSpecialChar(inputSymbol: string): undefined | string {\n return this.maskSpecialCharacters.find((val: string) => val === inputSymbol);\n }\n\n protected _checkSymbolMask(inputSymbol: string, maskSymbol: string): boolean {\n this.maskAvailablePatterns = this.customPattern ? this.customPattern : this.maskAvailablePatterns;\n return (\n this.maskAvailablePatterns[maskSymbol] &&\n this.maskAvailablePatterns[maskSymbol].pattern &&\n this.maskAvailablePatterns[maskSymbol].pattern.test(inputSymbol)\n );\n }\n\n private _formatWithSeparators = (\n str: string,\n thousandSeparatorChar: string,\n decimalChar: string,\n precision: number\n ) => {\n const x: string[] = str.split(decimalChar);\n const decimals: string = x.length > 1 ? `${decimalChar}${x[1]}` : '';\n let res: string = x[0];\n const separatorLimit: string = this.separatorLimit.replace(/\\s/g, '');\n if (separatorLimit && +separatorLimit) {\n if (res[0] === '-') {\n res = `-${res.slice(1, res.length).slice(0, separatorLimit.length)}`;\n } else {\n res = res.slice(0, separatorLimit.length);\n }\n }\n const rgx: RegExp = /(\\d+)(\\d{3})/;\n while (rgx.test(res)) {\n res = res.replace(rgx, '$1' + thousandSeparatorChar + '$2');\n }\n if (precision === undefined) {\n return res + decimals;\n } else if (precision === 0) {\n return res;\n }\n return res + decimals.substr(0, precision + 1);\n };\n\n private percentage = (str: string): boolean => {\n return Number(str) >= 0 && Number(str) <= 100;\n };\n\n private getPrecision = (maskExpression: string): number => {\n const x: string[] = maskExpression.split('.');\n if (x.length > 1) {\n return Number(x[x.length - 1]);\n }\n\n return Infinity;\n };\n\n private checkInputPrecision = (\n inputValue: string,\n precision: number,\n decimalMarker: IConfig['decimalMarker']\n ): string => {\n if (precision < Infinity) {\n const precisionRegEx: RegExp = new RegExp(this._charToRegExpExpression(decimalMarker) + `\\\\d{${precision}}.*$`);\n\n const precisionMatch: RegExpMatchArray | null = inputValue.match(precisionRegEx);\n if (precisionMatch && precisionMatch[0].length - 1 > precision) {\n inputValue = inputValue.substring(0, inputValue.length - 1);\n } else if (precision === 0 && inputValue.endsWith(decimalMarker)) {\n inputValue = inputValue.substring(0, inputValue.length - 1);\n }\n }\n return inputValue;\n };\n\n private _stripToDecimal(str: string): string {\n return str\n .split('')\n .filter((i: string, idx: number) => {\n return i.match('^-?\\\\d') || i === '.' || i === ',' || (i === '-' && idx === 0);\n })\n .join('');\n }\n\n private _charToRegExpExpression(char: string): string {\n const charsToEscape = '[\\\\^$.|?*+()';\n return char === ' ' ? '\\\\s' : charsToEscape.indexOf(char) >= 0 ? '\\\\' + char : char;\n }\n // tslint:disable-next-line:max-file-line-count\n}\n","import { ElementRef, Inject, Injectable, Renderer2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { config, IConfig } from './config';\nimport { MaskApplierService } from './mask-applier.service';\n\n@Injectable()\nexport class MaskService extends MaskApplierService {\n public maskExpression: string = '';\n public isNumberValue: boolean = false;\n public showMaskTyped: boolean = false;\n public placeHolderCharacter: string = '_';\n public maskIsShown: string = '';\n public selStart: number | null = null;\n public selEnd: number | null = null;\n protected _formElement: HTMLInputElement;\n\n public onChange = (_: any) => { };\n\n public constructor(\n @Inject(DOCUMENT) private document: any,\n @Inject(config) protected _config: IConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2\n ) {\n super(_config);\n this._formElement = this._elementRef.nativeElement;\n }\n\n // tslint:disable-next-line:cyclomatic-complexity\n public applyMask(inputValue: string, maskExpression: string, position: number = 0, cb: Function = () => { }): string {\n if (!maskExpression) {\n return inputValue;\n }\n this.maskIsShown = this.showMaskTyped ? this.showMaskInInput() : '';\n if (this.maskExpression === 'IP' && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(inputValue || '#');\n }\n if (!inputValue && this.showMaskTyped) {\n this.formControlResult(this.prefix);\n return this.prefix + this.maskIsShown;\n }\n const getSymbol: string = !!inputValue && typeof this.selStart === 'number' ? inputValue[this.selStart] : '';\n let newInputValue = '';\n if (this.hiddenInput !== undefined) {\n let actualResult: string[] = this.actualValue.split('');\n // tslint:disable no-unused-expression\n inputValue !== '' && actualResult.length\n ? typeof this.selStart === 'number' && typeof this.selEnd === 'number'\n ? inputValue.length > actualResult.length\n ? actualResult.splice(this.selStart, 0, getSymbol)\n : inputValue.length < actualResult.length\n ? actualResult.length - inputValue.length === 1\n ? actualResult.splice(this.selStart - 1, 1)\n : actualResult.splice(this.selStart, this.selEnd - this.selStart)\n : null\n : null\n : (actualResult = []);\n // tslint:enable no-unused-expression\n newInputValue = this.actualValue.length ? this.shiftTypedSymbols(actualResult.join('')) : inputValue;\n }\n newInputValue = Boolean(newInputValue) && newInputValue.length ? newInputValue : inputValue;\n const result: string = super.applyMask(newInputValue, maskExpression, position, cb);\n this.actualValue = this.getActualValue(result);\n\n // handle some separator implications:\n // a.) adjust decimalMarker default (. -> ,) if thousandSeparator is a dot\n if (this.thousandSeparator === '.' && this.decimalMarker === '.') {\n this.decimalMarker = ',';\n }\n\n // b) remove decimal marker from list of special characters to mask\n if (this.maskExpression.startsWith('separator') && this.dropSpecialCharacters === true) {\n this.maskSpecialCharacters = this.maskSpecialCharacters.filter((item: string) => item !== this.decimalMarker);\n }\n\n this.formControlResult(result);\n\n if (!this.showMaskTyped) {\n if (this.hiddenInput) {\n return result && result.length ? this.hideInput(result, this.maskExpression) : result;\n }\n return result;\n }\n const resLen: number = result.length;\n const prefNmask: string = this.prefix + this.maskIsShown;\n return result + (this.maskExpression === 'IP' ? prefNmask : prefNmask.slice(resLen));\n }\n\n public applyValueChanges(position: number = 0, cb: Function = () => { }): void {\n this._formElement.value = this.applyMask(this._formElement.value, this.maskExpression, position, cb);\n if (this._formElement === this.document.activeElement) {\n return;\n }\n this.clearIfNotMatchFn();\n }\n\n public hideInput(inputValue: string, maskExpression: string): string {\n return inputValue\n .split('')\n .map((curr: string, index: number) => {\n if (\n this.maskAvailablePatterns &&\n this.maskAvailablePatterns[maskExpression[index]] &&\n this.maskAvailablePatterns[maskExpression[index]].symbol\n ) {\n return this.maskAvailablePatterns[maskExpression[index]].symbol;\n }\n return curr;\n })\n .join('');\n }\n\n // this function is not necessary, it checks result against maskExpression\n public getActualValue(res: string): string {\n const compare: string[] = res\n .split('')\n .filter(\n (symbol: string, i: number) =>\n this._checkSymbolMask(symbol, this.maskExpression[i]) ||\n (this.maskSpecialCharacters.includes(this.maskExpression[i]) && symbol === this.maskExpression[i])\n );\n if (compare.join('') === res) {\n return compare.join('');\n }\n return res;\n }\n\n public shiftTypedSymbols(inputValue: string): string {\n let symbolToReplace = '';\n const newInputValue: string[] =\n (inputValue &&\n inputValue.split('').map((currSymbol: string, index: number) => {\n if (\n this.maskSpecialCharacters.includes(inputValue[index + 1]) &&\n inputValue[index + 1] !== this.maskExpression[index + 1]\n ) {\n symbolToReplace = currSymbol;\n return inputValue[index + 1];\n }\n if (symbolToReplace.length) {\n const replaceSymbol: string = symbolToReplace;\n symbolToReplace = '';\n return replaceSymbol;\n }\n return currSymbol;\n })) ||\n [];\n return newInputValue.join('');\n }\n\n public showMaskInInput(inputVal?: string): string {\n if (this.showMaskTyped && !!this.shownMaskExpression) {\n if (this.maskExpression.length !== this.shownMaskExpression.length) {\n throw new Error('Mask expression must match mask placeholder length');\n } else {\n return this.shownMaskExpression;\n }\n } else if (this.showMaskTyped) {\n if (inputVal) {\n return this._checkForIp(inputVal);\n }\n return this.maskExpression.replace(/\\w/g, this.placeHolderCharacter);\n }\n return '';\n }\n\n public clearIfNotMatchFn(): void {\n if (\n this.clearIfNotMatch &&\n this.prefix.length + this.maskExpression.length + this.suffix.length !==\n this._formElement.value.replace(/_/g, '').length\n ) {\n this.formElementProperty = ['value', ''];\n this.applyMask(this._formElement.value, this.maskExpression);\n }\n }\n\n public set formElementProperty([name, value]: [string, string | boolean]) {\n this._renderer.setProperty(this._formElement, name, value);\n }\n\n public checkSpecialCharAmount(mask: string): number {\n const chars: string[] = mask.split('').filter((item: string) => this._findSpecialChar(item));\n return chars.length;\n }\n\n private _checkForIp(inputVal: string): string {\n if (inputVal === '#') {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n const arr: string[] = [];\n for (let i = 0; i < inputVal.length; i++) {\n if (inputVal[i].match('\\\\d')) {\n arr.push(inputVal[i]);\n }\n }\n if (arr.length <= 3) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 3 && arr.length <= 6) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 6 && arr.length <= 9) {\n return this.placeHolderCharacter;\n }\n if (arr.length > 9 && arr.length <= 12) {\n return '';\n }\n return '';\n }\n\n private formControlResult(inputValue: string): void {\n if (Array.isArray(this.dropSpecialCharacters)) {\n this.onChange(this._removeMask(this._removeSuffix(this._removePrefix(inputValue)), this.dropSpecialCharacters));\n } else if (this.dropSpecialCharacters) {\n this.onChange(this._checkSymbols(inputValue));\n } else {\n this.onChange(this._removeSuffix(this._removePrefix(inputValue)));\n }\n }\n\n private _removeMask(value: string, specialCharactersForRemove: string[]): string {\n return value ? value.replace(this._regExpForRemove(specialCharactersForRemove), '') : value;\n }\n\n private _removePrefix(value: string): string {\n if (!this.prefix) {\n return value;\n }\n return value ? value.replace(this.prefix, '') : value;\n }\n\n private _removeSuffix(value: string): string {\n if (!this.suffix) {\n return value;\n }\n return value ? value.replace(this.suffix, '') : value;\n }\n\n private _retrieveSeparatorValue(result: string): string {\n return this._removeMask(this._removeSuffix(this._removePrefix(result)), this.maskSpecialCharacters);\n }\n\n private _regExpForRemove(specialCharactersForRemove: string[]): RegExp {\n return new RegExp(specialCharactersForRemove.map((item: string) => `\\\\${item}`).join('|'), 'gi');\n }\n\n private _checkSymbols(result: string): string | number | undefined | null {\n if (result === '') {\n return result;\n }\n\n const separatorPrecision: number | null = this._retrieveSeparatorPrecision(this.maskExpression);\n let separatorValue: string = this._retrieveSeparatorValue(result);\n if (this.decimalMarker !== '.') {\n separatorValue = separatorValue.replace(this.decimalMarker, '.');\n }\n\n if (this.isNumberValue) {\n if (separatorPrecision) {\n if (result === this.decimalMarker) {\n return null;\n }\n return this._checkPrecision(this.maskExpression, separatorValue);\n } else {\n return Number(separatorValue);\n }\n } else {\n return separatorValue;\n }\n }\n\n // TODO should think about helpers or separting decimal precision to own property\n private _retrieveSeparatorPrecision(maskExpretion: string): number | null {\n const matcher: RegExpMatchArray | null = maskExpretion.match(new RegExp(`^separator\\\\.([^d]*)`));\n return matcher ? Number(matcher[1]) : null;\n }\n\n private _checkPrecision(separatorExpression: string, separatorValue: string): number | string {\n if (separatorExpression.indexOf('2') > 0) {\n return Number(separatorValue).toFixed(2);\n }\n return Number(separatorValue);\n }\n}\n","import { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\nimport { Directive, forwardRef, HostListener, Inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { CustomKeyboardEvent } from './custom-keyboard-event';\nimport { config, IConfig, timeMasks, withoutValidation } from './config';\nimport { MaskService } from './mask.service';\n\n// tslint:disable deprecation\n@Directive({\n selector: '[mask]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskDirective),\n multi: true,\n },\n MaskService,\n ],\n})\nexport class MaskDirective implements ControlValueAccessor, OnChanges {\n @Input('mask') public maskExpression: string = '';\n @Input() public specialCharacters: IConfig['specialCharacters'] = [];\n @Input() public patterns: IConfig['patterns'] = {};\n @Input() public prefix: IConfig['prefix'] = '';\n @Input() public suffix: IConfig['suffix'] = '';\n @Input() public thousandSeparator: IConfig['thousandSeparator'] = ' ';\n @Input() public decimalMarker: IConfig['decimalMarker'] = '.';\n @Input() public dropSpecialCharacters: IConfig['dropSpecialCharacters'] | null = null;\n @Input() public hiddenInput: IConfig['hiddenInput'] | null = null;\n @Input() public showMaskTyped: IConfig['showMaskTyped'] | null = null;\n @Input() public placeHolderCharacter: IConfig['placeHolderCharacter'] | null = null;\n @Input() public shownMaskExpression: IConfig['shownMaskExpression'] | null = null;\n @Input() public showTemplate: IConfig['showTemplate'] | null = null;\n @Input() public clearIfNotMatch: IConfig['clearIfNotMatch'] | null = null;\n @Input() public validation: IConfig['validation'] | null = null;\n @Input() public separatorLimit: IConfig['separatorLimit'] | null = null;\n private _maskValue: string = '';\n private _inputValue!: string;\n private _position: number | null = null;\n private _start!: number;\n private _end!: number;\n private _code!: string;\n\n public constructor(\n @Inject(DOCUMENT) private document: any,\n private _maskService: MaskService,\n @Inject(config) protected _config: IConfig\n ) { }\n\n public onChange = (_: any) => { };\n public onTouch = () => { };\n\n public ngOnChanges(changes: SimpleChanges): void {\n const {\n maskExpression,\n specialCharacters,\n patterns,\n prefix,\n suffix,\n thousandSeparator,\n decimalMarker,\n dropSpecialCharacters,\n hiddenInput,\n showMaskTyped,\n placeHolderCharacter,\n shownMaskExpression,\n showTemplate,\n clearIfNotMatch,\n validation,\n separatorLimit,\n } = changes;\n if (maskExpression) {\n this._maskValue = changes.maskExpression.currentValue || '';\n }\n if (specialCharacters) {\n if (!specialCharacters.currentValue || !Array.isArray(specialCharacters.currentValue)) {\n return;\n } else {\n this._maskService.maskSpecialCharacters = changes.specialCharacters.currentValue || [];\n }\n }\n // Only overwrite the mask available patterns if a pattern has actually been passed in\n if (patterns && patterns.currentValue) {\n this._maskService.maskAvailablePatterns = patterns.currentValue;\n }\n if (prefix) {\n this._maskService.prefix = prefix.currentValue;\n }\n if (suffix) {\n this._maskService.suffix = suffix.currentValue;\n }\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator.currentValue;\n }\n if (decimalMarker) {\n this._maskService.decimalMarker = decimalMarker.currentValue;\n }\n if (dropSpecialCharacters) {\n this._maskService.dropSpecialCharacters = dropSpecialCharacters.currentValue;\n }\n if (hiddenInput) {\n this._maskService.hiddenInput = hiddenInput.currentValue;\n }\n if (showMaskTyped) {\n this._maskService.showMaskTyped = showMaskTyped.currentValue;\n }\n if (placeHolderCharacter) {\n this._maskService.placeHolderCharacter = placeHolderCharacter.currentValue;\n }\n if (shownMaskExpression) {\n this._maskService.shownMaskExpression = shownMaskExpression.currentValue;\n }\n if (showTemplate) {\n this._maskService.showTemplate = showTemplate.currentValue;\n }\n if (clearIfNotMatch) {\n this._maskService.clearIfNotMatch = clearIfNotMatch.currentValue;\n }\n if (validation) {\n this._maskService.validation = validation.currentValue;\n }\n if (separatorLimit) {\n this._maskService.separatorLimit = separatorLimit.currentValue;\n }\n this._applyMask();\n }\n\n // tslint:disable-next-line: cyclomatic-complexity\n public validate({ value }: FormControl): ValidationErrors | null {\n if (!this._maskService.validation) {\n return null;\n }\n if (this._maskService.ipError) {\n return { 'Mask error': true };\n }\n if (this._maskValue.startsWith('separator')) {\n return null;\n }\n if (withoutValidation.includes(this._maskValue)) {\n return null;\n }\n if (this._maskService.clearIfNotMatch) {\n return null;\n }\n if (timeMasks.includes(this._maskValue)) {\n return this._validateTime(value);\n }\n if (value && value.toString().length >= 1) {\n let counterOfOpt = 0;\n for (const key in this._maskService.maskAvailablePatterns) {\n if (\n this._maskService.maskAvailablePatterns[key].optional &&\n this._maskService.maskAvailablePatterns[key].optional === true\n ) {\n if (this._maskValue.indexOf(key) !== this._maskValue.lastIndexOf(key)) {\n const opt: string = this._maskValue\n .split('')\n .filter((i: string) => i === key)\n .join('');\n counterOfOpt += opt.length;\n } else if (this._maskValue.indexOf(key) !== -1) {\n counterOfOpt++;\n }\n if (this._maskValue.indexOf(key) !== -1 && value.toString().length >= this._maskValue.indexOf(key)) {\n return null;\n }\n if (counterOfOpt === this._maskValue.length) {\n return null;\n }\n }\n }\n if (\n this._maskValue.indexOf('{') === 1 &&\n value.toString().length === this._maskValue.length + Number(this._maskValue.split('{')[1].split('}')[0]) - 4\n ) {\n return null;\n }\n if (this._maskValue.indexOf('*') === 1 || this._maskValue.indexOf('?') === 1) {\n return null;\n } else if (\n (this._maskValue.indexOf('*') > 1 && value.toString().length < this._maskValue.indexOf('*')) ||\n (this._maskValue.indexOf('?') > 1 && value.toString().length < this._maskValue.indexOf('?')) ||\n this._maskValue.indexOf('{') === 1\n ) {\n return { 'Mask error': true };\n }\n if (this._maskValue.indexOf('*') === -1 || this._maskValue.indexOf('?') === -1) {\n const length: number = this._maskService.dropSpecialCharacters\n ? this._maskValue.length - this._maskService.checkSpecialCharAmount(this._maskValue) - counterOfOpt\n : this._maskValue.length - counterOfOpt;\n if (value.toString().length < length) {\n return { 'Mask error': true };\n }\n }\n }\n return null;\n }\n\n @HostListener('input', ['$event'])\n public onInput(e: CustomKeyboardEvent): void {\n const el: HTMLInputElement = e.target as HTMLInputElement;\n this._inputValue = el.value;\n if (!this._maskValue) {\n this.onChange(el.value);\n return;\n }\n const position: number =\n el.selectionStart === 1\n ? (el.selectionStart as number) + this._maskService.prefix.length\n : (el.selectionStart as number);\n let caretShift = 0;\n let backspaceShift = false;\n this._maskService.applyValueChanges(position, (shift: number, _backspaceShift: boolean) => {\n caretShift = shift;\n backspaceShift = _backspaceShift;\n });\n // only set the selection if the element is active\n if (this.document.activeElement !== el) {\n return;\n }\n this._position = this._position === 1 && this._inputValue.length === 1 ? null : this._position;\n const positionToApply: number = this._position\n ? this._inputValue.length + position + caretShift\n : position + (this._code === 'Backspace' && !backspaceShift ? 0 : caretShift);\n el.setSelectionRange(positionToApply, positionToApply);\n if ((this.maskExpression.includes('H') || this.maskExpression.includes('M')) && caretShift === 0) {\n el.setSelectionRange((el.selectionStart as number) + 1, (el.selectionStart as number) + 1);\n }\n this._position = null;\n }\n\n @HostListener('blur')\n public onBlur(): void {\n this._maskService.clearIfNotMatchFn();\n this.onTouch();\n }\n\n @HostListener('click', ['$event'])\n public onFocus(e: MouseEvent | CustomKeyboardEvent): void {\n const el: HTMLInputElement = e.target as HTMLInputElement;\n const posStart = 0;\n const posEnd = 0;\n if (\n el !== null &&\n el.selectionStart !== null &&\n el.selectionStart === el.selectionEnd &&\n el.selectionStart > this._maskService.prefix.length &&\n // tslint:disable-next-line\n (e as any).keyCode !== 38\n )\n if (this._maskService.showMaskTyped) {\n // We are showing the mask in the input\n this._maskService.maskIsShown = this._maskService.showMaskInInput();\n if (el.setSelectionRange && this._maskService.prefix + this._maskService.maskIsShown === el.value) {\n // the input ONLY contains the mask, so position the cursor at the start\n el.focus();\n el.setSelectionRange(posStart, posEnd);\n } else {\n // the input contains some characters already\n if (el.selectionStart > this._maskService.actualValue.length) {\n // if the user clicked beyond our value's length, position the cursor at the end of our value\n el.setSelectionRange(this._maskService.actualValue.length, this._maskService.actualValue.length);\n }\n }\n }\n const nextValue: string | null =\n !el.value || el.value === this._maskService.prefix\n ? this._maskService.prefix + this._maskService.maskIsShown\n : el.value;\n\n /** Fix of cursor position jumping to end in most browsers no matter where cursor is inserted onFocus */\n if (el.value !== nextValue) {\n el.value = nextValue;\n }\n\n /** fix of cursor position with prefix when mouse click occur */\n if (((el.selectionStart as number) || (el.selectionEnd as number)) <= this._maskService.prefix.length) {\n el.selectionStart = this._maskService.prefix.length;\n return;\n }\n }\n\n // tslint:disable-next-line: cyclomatic-complexity\n @HostListener('keydown', ['$event'])\n public onKeyDown(e: CustomKeyboardEvent): void {\n this._code = e.code ? e.code : e.key;\n const el: HTMLInputElement = e.target as HTMLInputElement;\n this._inputValue = el.value;\n if (e.keyCode === 38) {\n e.preventDefault();\n }\n if (e.keyCode === 37 || e.keyCode === 8 || e.keyCode === 46) {\n if (e.keyCode === 8 && el.value.length === 0) {\n el.selectionStart = el.selectionEnd;\n }\n if (e.keyCode === 8 && (el.selectionStart as number) !== 0) {\n // If specialChars is false, (shouldn't ever happen) then set to the defaults\n this.specialCharacters = this.specialCharacters || this._config.specialCharacters;\n if (this.prefix.length > 1 && (el.selectionStart as number) <= this.prefix.length) {\n el.setSelectionRange(this.prefix.length, this.prefix.length);\n } else {\n if (\n this._inputValue.length !== (el.selectionStart as number) &&\n (el.selectionStart as number) !== 1\n ) {\n while (\n this.specialCharacters.includes(\n this._inputValue[(el.selectionStart as number) - 1].toString()\n ) &&\n ((this.prefix.length >= 1 && (el.selectionStart as number) > this.prefix.length) ||\n this.prefix.length === 0)\n ) {\n el.setSelectionRange((el.selectionStart as number) - 1, (el.selectionStart as number) - 1);\n }\n }\n this.suffixCheckOnPressDelete(e.keyCode, el);\n }\n }\n this.suffixCheckOnPressDelete(e.keyCode, el);\n if (this._maskService.prefix.length &&\n (el.selectionStart as number) <= this._maskService.prefix.length &&\n (el.selectionEnd as number) <= this._maskService.prefix.length\n ) {\n e.preventDefault();\n }\n const cursorStart: number | null = el.selectionStart;\n // this.onFocus(e);\n if (\n e.keyCode === 8 &&\n !el.readOnly &&\n cursorStart === 0 &&\n el.selectionEnd === el.value.length &&\n el.value.length !== 0\n ) {\n this._position = this._maskService.prefix ? this._maskService.prefix.length : 0;\n this._maskService.applyMask(this._maskService.prefix, this._maskService.maskExpression, this._position);\n }\n }\n if (\n !!this.suffix &&\n this.suffix.length > 1 &&\n this._inputValue.length - this.suffix.length < (el.selectionStart as number)\n ) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n }\n this._maskService.selStart = el.selectionStart;\n this._maskService.selEnd = el.selectionEnd;\n }\n\n /** It writes the value in the input */\n public async writeValue(inputValue: string | number): Promise<void> {\n if (inputValue === undefined) {\n inputValue = '';\n }\n if (typeof inputValue === 'number') {\n inputValue = String(inputValue);\n inputValue = this.decimalMarker !== '.' ? inputValue.replace('.', this.decimalMarker) : inputValue;\n this._maskService.isNumberValue = true;\n }\n (inputValue && this._maskService.maskExpression) ||\n (this._maskService.maskExpression && (this._maskService.prefix || this._maskService.showMaskTyped))\n ? (this._maskService.formElementProperty = [\n 'value',\n this._maskService.applyMask(inputValue, this._maskService.maskExpression),\n ])\n : (this._maskService.formElementProperty = ['value', inputValue]);\n this._inputValue = inputValue;\n }\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n this._maskService.onChange = this.onChange;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n public suffixCheckOnPressDelete(keyCode: number, el: HTMLInputElement): void {\n if (keyCode === 46 && this.suffix.length > 0) {\n if (this._inputValue.length - this.suffix.length <= (el.selectionStart as number)) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n }\n }\n if (keyCode === 8) {\n if (\n this.suffix.length > 1 &&\n this._inputValue.length - this.suffix.length < (el.selectionStart as number)\n ) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n }\n if (this.suffix.length === 1 && this._inputValue.length === (el.selectionStart as number)) {\n el.setSelectionRange((el.selectionStart as number) - 1, (el.selectionStart as number) - 1);\n }\n }\n }\n\n /** It disables the input element */\n public setDisabledState(isDisabled: boolean): void {\n this._maskService.formElementProperty = ['disabled', isDisabled];\n }\n\n @HostListener('ngModelChange', ['$event'])\n // tslint:disable-next-line: no-any\n public onModelChange(e: any): void {\n if (!e) {\n this._maskService.actualValue = '';\n }\n }\n\n private _repeatPatternSymbols(maskExp: string): string {\n return (\n (maskExp.match(/{[0-9]+}/) &&\n maskExp.split('').reduce((accum: string, currval: string, index: number): string => {\n this._start = currval === '{' ? index : this._start;\n\n if (currval !== '}') {\n return this._maskService._findSpecialChar(currval) ? accum + currval : accum;\n }\n this._end = index;\n const repeatNumber: number = Number(maskExp.slice(this._start + 1, this._end));\n const repaceWith: string = new Array(repeatNumber + 1).join(maskExp[this._start - 1]);\n return accum + repaceWith;\n }, '')) ||\n maskExp\n );\n }\n // tslint:disable-next-line:no-any\n private _applyMask(): any {\n this._maskService.maskExpression = this._repeatPatternSymbols(this._maskValue || '');\n this._maskService.formElementProperty = [\n 'value',\n this._maskService.applyMask(this._inputValue, this._maskService.maskExpression),\n ];\n }\n\n private _validateTime(value: string): ValidationErrors | null {\n const rowMaskLen: number = this._maskValue.split('').filter((s: string) => s !== ':').length;\n if (+value[value.length - 1] === 0 && value.length < rowMaskLen) {\n return { 'Mask error': true };\n }\n if (value.length <= rowMaskLen - 2) {\n return { 'Mask error': true };\n }\n return null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { MaskApplierService } from './mask-applier.service';\nimport { IConfig } from './config';\n\n@Pipe({\n name: 'mask',\n pure: true,\n})\nexport class MaskPipe implements PipeTransform {\n public constructor(private _maskService: MaskApplierService) {}\n\n public transform(\n value: string | number,\n mask: string | [string, IConfig['patterns']],\n thousandSeparator: string | null = null\n ): string {\n if (!value && typeof value !== 'number') {\n return '';\n }\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator;\n }\n if (typeof mask === 'string') {\n return this._maskService.applyMask(`${value}`, mask);\n }\n return this._maskService.applyMaskWithPattern(`${value}`, mask);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { config, INITIAL_CONFIG, initialConfig, NEW_CONFIG, optionsConfig } from './config';\nimport { MaskApplierService } from './mask-applier.service';\nimport { MaskDirective } from './mask.directive';\nimport { MaskPipe } from './mask.pipe';\n\n@NgModule({\n exports: [MaskDirective, MaskPipe],\n declarations: [MaskDirective, MaskPipe],\n})\nexport class NgxMaskModule {\n public static forRoot(configValue?: optionsConfig | (() => optionsConfig)): ModuleWithProviders {\n return {\n ngModule: NgxMaskModule,\n providers: [\n {\n provide: NEW_CONFIG,\n useValue: configValue,\n },\n {\n provide: INITIAL_CONFIG,\n useValue: initialConfig,\n },\n {\n provide: config,\n useFactory: _configFactory,\n deps: [INITIAL_CONFIG, NEW_CONFIG],\n },\n MaskApplierService,\n ],\n };\n }\n public static forChild(_configValue?: optionsConfig): ModuleWithProviders {\n return {\n ngModule: NgxMaskModule,\n };\n }\n}\n\n/**\n * @internal\n */\nexport function _configFactory(\n initConfig: optionsConfig,\n configValue: optionsConfig | (() => optionsConfig)\n): optionsConfig {\n return configValue instanceof Function ? { ...initConfig, ...configValue() } : { ...initConfig, ...configValue };\n}\n","// tslint:disable: no-any typedef\ndeclare var global: any;\n\n(function() {\n if (!global.KeyboardEvent) {\n global.KeyboardEvent = function(_eventType: any, _init: any) {};\n }\n})();\n\nexport type CustomKeyboardEvent = KeyboardEvent;\n"],"names":["InjectionToken","Injectable","Inject","tslib_1.__extends","DOCUMENT","ElementRef","Renderer2","Directive","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","Input","HostListener","Pipe","NgModule","global"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-mask.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://ngx-mask/lib/config.ts","ng://ngx-mask/lib/mask-applier.service.ts","ng://ngx-mask/lib/mask.service.ts","ng://ngx-mask/lib/mask.directive.ts","ng://ngx-mask/lib/mask.pipe.ts","ng://ngx-mask/lib/ngx-mask.module.ts","ng://ngx-mask/lib/custom-keyboard-event.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { InjectionToken } from '@angular/core';\n\nexport interface IConfig {\n suffix: string;\n prefix: string;\n thousandSeparator: string;\n decimalMarker: '.' | ',';\n clearIfNotMatch: boolean;\n showTemplate: boolean;\n showMaskTyped: boolean;\n placeHolderCharacter: string;\n shownMaskExpression: string;\n dropSpecialCharacters: boolean | string[];\n specialCharacters: string[];\n hiddenInput: boolean | undefined;\n validation: boolean;\n separatorLimit: string;\n allowNegativeNumbers: boolean;\n patterns: {\n [character: string]: {\n pattern: RegExp;\n optional?: boolean;\n symbol?: string;\n };\n };\n}\n\nexport type optionsConfig = Partial<IConfig>;\nexport const config: InjectionToken<IConfig> = new InjectionToken('config');\nexport const NEW_CONFIG: InjectionToken<IConfig> = new InjectionToken('NEW_CONFIG');\nexport const INITIAL_CONFIG: InjectionToken<IConfig> = new InjectionToken('INITIAL_CONFIG');\n\nexport const initialConfig: IConfig = {\n suffix: '',\n prefix: '',\n thousandSeparator: ' ',\n decimalMarker: '.',\n clearIfNotMatch: false,\n showTemplate: false,\n showMaskTyped: false,\n placeHolderCharacter: '_',\n dropSpecialCharacters: true,\n hiddenInput: undefined,\n shownMaskExpression: '',\n separatorLimit: '',\n allowNegativeNumbers: false,\n validation: true,\n // tslint:disable-next-line: quotemark\n specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '\"', \"'\"],\n patterns: {\n '0': {\n pattern: new RegExp('\\\\d'),\n },\n '9': {\n pattern: new RegExp('\\\\d'),\n optional: true,\n },\n X: {\n pattern: new RegExp('\\\\d'),\n symbol: '*',\n },\n A: {\n pattern: new RegExp('[a-zA-Z0-9]'),\n },\n S: {\n pattern: new RegExp('[a-zA-Z]'),\n },\n d: {\n pattern: new RegExp('\\\\d'),\n },\n m: {\n pattern: new RegExp('\\\\d'),\n },\n M: {\n pattern: new RegExp('\\\\d'),\n },\n H: {\n pattern: new RegExp('\\\\d'),\n },\n h: {\n pattern: new RegExp('\\\\d'),\n },\n s: {\n pattern: new RegExp('\\\\d'),\n },\n },\n};\n\nexport const timeMasks: string[] = ['Hh:m0:s0', 'Hh:m0', 'm0:s0'];\n\nexport const withoutValidation: string[] = [\n 'percent',\n 'Hh',\n 's0',\n 'm0',\n 'separator',\n 'd0/M0/0000',\n 'd0/M0',\n 'd0',\n 'M0',\n];\n","import { Inject, Injectable } from '@angular/core';\n\nimport { config, IConfig } from './config';\n\n@Injectable()\nexport class MaskApplierService {\n public dropSpecialCharacters: IConfig['dropSpecialCharacters'];\n public hiddenInput: IConfig['hiddenInput'];\n public showTemplate!: IConfig['showTemplate'];\n public clearIfNotMatch!: IConfig['clearIfNotMatch'];\n public maskExpression: string = '';\n public actualValue: string = '';\n public shownMaskExpression: string = '';\n public maskSpecialCharacters!: IConfig['specialCharacters'];\n public maskAvailablePatterns!: IConfig['patterns'];\n public prefix!: IConfig['prefix'];\n public suffix!: IConfig['suffix'];\n public thousandSeparator!: IConfig['thousandSeparator'];\n public decimalMarker!: IConfig['decimalMarker'];\n public customPattern!: IConfig['patterns'];\n public ipError?: boolean;\n public showMaskTyped!: IConfig['showMaskTyped'];\n public placeHolderCharacter!: IConfig['placeHolderCharacter'];\n public validation: IConfig['validation'];\n public separatorLimit: IConfig['separatorLimit'];\n public allowNegativeNumbers: IConfig['allowNegativeNumbers'];\n\n private _shift!: Set<number>;\n\n public constructor(@Inject(config) protected _config: IConfig) {\n this._shift = new Set();\n this.clearIfNotMatch = this._config.clearIfNotMatch;\n this.dropSpecialCharacters = this._config.dropSpecialCharacters;\n this.maskSpecialCharacters = this._config.specialCharacters;\n this.maskAvailablePatterns = this._config.patterns;\n this.prefix = this._config.prefix;\n this.suffix = this._config.suffix;\n this.thousandSeparator = this._config.thousandSeparator;\n this.decimalMarker = this._config.decimalMarker;\n this.hiddenInput = this._config.hiddenInput;\n this.showMaskTyped = this._config.showMaskTyped;\n this.placeHolderCharacter = this._config.placeHolderCharacter;\n this.validation = this._config.validation;\n this.separatorLimit = this._config.separatorLimit;\n this.allowNegativeNumbers = this._config.allowNegativeNumbers;\n }\n\n public applyMaskWithPattern(inputValue: string, maskAndPattern: [string, IConfig['patterns']]): string {\n const [mask, customPattern] = maskAndPattern;\n this.customPattern = customPattern;\n return this.applyMask(inputValue, mask);\n }\n public applyMask(inputValue: string, maskExpression: string, position: number = 0, cb: Function = () => { }): string {\n if (inputValue === undefined || inputValue === null || maskExpression === undefined) {\n return '';\n }\n let cursor = 0;\n let result = '';\n let multi = false;\n let backspaceShift = false;\n let shift = 1;\n let stepBack = false;\n if (inputValue.slice(0, this.prefix.length) === this.prefix) {\n inputValue = inputValue.slice(this.prefix.length, inputValue.length);\n }\n if (!!this.suffix && inputValue.endsWith(this.suffix)) {\n inputValue = inputValue.slice(0, inputValue.length - this.suffix.length);\n }\n const inputArray: string[] = inputValue.toString().split('');\n if (maskExpression === 'IP') {\n this.ipError = !!(inputArray.filter((i: string) => i === '.').length < 3 && inputArray.length < 7);\n maskExpression = '099.099.099.099';\n }\n if (maskExpression.startsWith('percent')) {\n if (inputValue.match('[a-z]|[A-Z]') || inputValue.match(/[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,\\/]/)) {\n inputValue = this._stripToDecimal(inputValue);\n const precision: number = this.getPrecision(maskExpression);\n inputValue = this.checkInputPrecision(inputValue, precision, '.');\n }\n if (inputValue.indexOf('.') > 0 && !this.percentage(inputValue.substring(0, inputValue.indexOf('.')))) {\n const base: string = inputValue.substring(0, inputValue.indexOf('.') - 1);\n inputValue = `${base}${inputValue.substring(inputValue.indexOf('.'), inputValue.length)}`;\n }\n if (this.percentage(inputValue)) {\n result = inputValue;\n } else {\n result = inputValue.substring(0, inputValue.length - 1);\n }\n } else if (maskExpression.startsWith('separator')) {\n if (\n inputValue.match('[wа-ÑÐ-Я]') ||\n inputValue.match('[ÐÑÐ-Ñ]') ||\n inputValue.match('[a-z]|[A-Z]') ||\n inputValue.match(/[-@#!$%\\\\^&*()_£¬'+|~=`{}\\[\\]:\";<>.?\\/]/) ||\n inputValue.match('[^A-Za-z0-9,]')\n ) {\n inputValue = this._stripToDecimal(inputValue);\n }\n\n inputValue =\n inputValue.length > 1 && inputValue[0] === '0' && inputValue[1] !== this.decimalMarker\n ? inputValue.slice(1, inputValue.length)\n : inputValue;\n\n // TODO: we had different rexexps here for the different cases... but tests dont seam to bother - check this\n // separator: no COMMA, dot-sep: no SPACE, COMMA OK, comma-sep: no SPACE, COMMA OK\n\n const thousandSeperatorCharEscaped: string = this._charToRegExpExpression(this.thousandSeparator);\n const decimalMarkerEscaped: string = this._charToRegExpExpression(this.decimalMarker);\n const invalidChars: string = '@#!$%^&*()_+|~=`{}\\\\[\\\\]:\\\\s,\";<>?\\\\/'\n .replace(thousandSeperatorCharEscaped, '')\n .replace(decimalMarkerEscaped, '');\n\n const invalidCharRegexp: RegExp = new RegExp('[' + invalidChars + ']');\n\n if (inputValue.match(invalidCharRegexp)) {\n inputValue = inputValue.substring(0, inputValue.length - 1);\n }\n\n const precision: number = this.getPrecision(maskExpression);\n inputValue = this.checkInputPrecision(inputValue, precision, this.decimalMarker);\n const strForSep: string = inputValue.replace(new RegExp(thousandSeperatorCharEscaped, 'g'), '');\n result = this._formatWithSeparators(strForSep, this.thousandSeparator, this.decimalMarker, precision);\n\n const commaShift: number = result.indexOf(',') - inputValue.indexOf(',');\n const shiftStep: number = result.length - inputValue.length;\n\n if (shiftStep > 0 && result[position] !== ',') {\n backspaceShift = true;\n let _shift = 0;\n do {\n this._shift.add(position + _shift);\n _shift++;\n } while (_shift < shiftStep);\n } else if (\n (commaShift !== 0 && position > 0 && !(result.indexOf(',') >= position && position > 3)) ||\n (!(result.indexOf('.') >= position && position > 3) && shiftStep <= 0)\n ) {\n this._shift.clear();\n backspaceShift = true;\n shift = shiftStep;\n position += shiftStep;\n this._shift.add(position);\n } else {\n this._shift.clear();\n }\n } else {\n for (\n // tslint:disable-next-line\n let i: number = 0, inputSymbol: string = inputArray[0];\n i < inputArray.length;\n i++ , inputSymbol = inputArray[i]\n ) {\n if (cursor === maskExpression.length) {\n break;\n }\n if (this._checkSymbolMask(inputSymbol, maskExpression[cursor]) && maskExpression[cursor + 1] === '?') {\n result += inputSymbol;\n cursor += 2;\n } else if (\n maskExpression[cursor + 1] === '*' &&\n multi &&\n this._checkSymbolMask(inputSymbol, maskExpression[cursor + 2])\n ) {\n result += inputSymbol;\n cursor += 3;\n multi = false;\n } else if (this._checkSymbolMask(inputSymbol, maskExpression[cursor]) && maskExpression[cursor + 1] === '*') {\n result += inputSymbol;\n multi = true;\n } else if (\n maskExpression[cursor + 1] === '?' &&\n this._checkSymbolMask(inputSymbol, maskExpression[cursor + 2])\n ) {\n result += inputSymbol;\n cursor += 3;\n } else if (\n this._checkSymbolMask(inputSymbol, maskExpression[cursor]) ||\n (this.hiddenInput &&\n this.maskAvailablePatterns[maskExpression[cursor]] &&\n this.maskAvailablePatterns[maskExpression[cursor]].symbol === inputSymbol)\n ) {\n if (maskExpression[cursor] === 'H') {\n if (Number(inputSymbol) > 2) {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'h') {\n if (result === '2' && Number(inputSymbol) > 3) {\n cursor += 1;\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'm') {\n if (Number(inputSymbol) > 5) {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 's') {\n if (Number(inputSymbol) > 5) {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n const daysCount = 31;\n if (maskExpression[cursor] === 'd') {\n if (Number(inputValue.slice(cursor, cursor + 2)) > daysCount || inputValue[cursor + 1] === '/') {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'M') {\n const monthsCount = 12;\n // mask without day\n const withoutDays: boolean =\n cursor === 0 &&\n (Number(inputSymbol) > 2 ||\n Number(inputValue.slice(cursor, cursor + 2)) > monthsCount ||\n inputValue[cursor + 1] === '/');\n // day<10 && month<12 for input\n const day1monthInput: boolean =\n inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n ((inputValue[cursor - 2] === '/' &&\n (Number(inputValue.slice(cursor - 1, cursor + 1)) > monthsCount && inputValue[cursor] !== '/')) ||\n inputValue[cursor] === '/' ||\n ((inputValue[cursor - 3] === '/' &&\n (Number(inputValue.slice(cursor - 2, cursor)) > monthsCount && inputValue[cursor - 1] !== '/')) ||\n inputValue[cursor - 1] === '/'));\n // 10<day<31 && month<12 for input\n const day2monthInput: boolean =\n Number(inputValue.slice(cursor - 3, cursor - 1)) <= daysCount &&\n !inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n inputValue[cursor - 1] === '/' &&\n (Number(inputValue.slice(cursor, cursor + 2)) > monthsCount || inputValue[cursor + 1] === '/');\n // day<10 && month<12 for paste whole data\n const day1monthPaste: boolean =\n Number(inputValue.slice(cursor - 3, cursor - 1)) > daysCount &&\n !inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n (!inputValue.slice(cursor - 2, cursor).includes('/') &&\n Number(inputValue.slice(cursor - 2, cursor)) > monthsCount);\n // 10<day<31 && month<12 for paste whole data\n const day2monthPaste: boolean =\n Number(inputValue.slice(cursor - 3, cursor - 1)) <= daysCount &&\n !inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n inputValue[cursor - 1] !== '/' &&\n Number(inputValue.slice(cursor - 1, cursor + 1)) > monthsCount;\n\n if (withoutDays || day1monthInput || day2monthInput || day1monthPaste || day2monthPaste) {\n cursor += 1;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n result += inputSymbol;\n cursor++;\n } else if (this.maskSpecialCharacters.indexOf(maskExpression[cursor]) !== -1) {\n result += maskExpression[cursor];\n cursor++;\n const shiftStep: number = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n } else if (\n this.maskSpecialCharacters.indexOf(inputSymbol) > -1 &&\n this.maskAvailablePatterns[maskExpression[cursor]] &&\n this.maskAvailablePatterns[maskExpression[cursor]].optional\n ) {\n if (!!inputArray[cursor] && maskExpression !== '099.099.099.099') {\n result += inputArray[cursor];\n }\n cursor++;\n i--;\n } else if (\n this.maskExpression[cursor + 1] === '*' &&\n this._findSpecialChar(this.maskExpression[cursor + 2]) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (\n this.maskExpression[cursor + 1] === '?' &&\n this._findSpecialChar(this.maskExpression[cursor + 2]) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi\n ) {\n cursor += 3;\n result += inputSymbol;\n } else if (this.showMaskTyped && this.maskSpecialCharacters.indexOf(inputSymbol) < 0 && inputSymbol !== this.placeHolderCharacter) {\n stepBack = true;\n }\n }\n }\n if (\n result.length + 1 === maskExpression.length &&\n this.maskSpecialCharacters.indexOf(maskExpression[maskExpression.length - 1]) !== -1\n ) {\n result += maskExpression[maskExpression.length - 1];\n }\n\n let newPosition: number = position + 1;\n\n while (this._shift.has(newPosition)) {\n shift++;\n newPosition++;\n }\n\n let actualShift: number = this._shift.has(position) ? shift : 0;\n if (stepBack) {\n actualShift--;\n }\n\n cb(actualShift, backspaceShift);\n if (shift < 0) {\n this._shift.clear();\n }\n let res = `${this.prefix}${result}${this.suffix}`;\n if (result.length === 0) {\n res = `${this.prefix}${result}`;\n }\n return res;\n }\n public _findSpecialChar(inputSymbol: string): undefined | string {\n return this.maskSpecialCharacters.find((val: string) => val === inputSymbol);\n }\n\n protected _checkSymbolMask(inputSymbol: string, maskSymbol: string): boolean {\n this.maskAvailablePatterns = this.customPattern ? this.customPattern : this.maskAvailablePatterns;\n return (\n this.maskAvailablePatterns[maskSymbol] &&\n this.maskAvailablePatterns[maskSymbol].pattern &&\n this.maskAvailablePatterns[maskSymbol].pattern.test(inputSymbol)\n );\n }\n\n private _formatWithSeparators = (\n str: string,\n thousandSeparatorChar: string,\n decimalChar: string,\n precision: number\n ) => {\n const x: string[] = str.split(decimalChar);\n const decimals: string = x.length > 1 ? `${decimalChar}${x[1]}` : '';\n let res: string = x[0];\n const separatorLimit: string = this.separatorLimit.replace(/\\s/g, '');\n if (separatorLimit && +separatorLimit) {\n if (res[0] === '-') {\n res = `-${res.slice(1, res.length).slice(0, separatorLimit.length)}`;\n } else {\n res = res.slice(0, separatorLimit.length);\n }\n }\n const rgx: RegExp = /(\\d+)(\\d{3})/;\n while (rgx.test(res)) {\n res = res.replace(rgx, '$1' + thousandSeparatorChar + '$2');\n }\n if (precision === undefined) {\n return res + decimals;\n } else if (precision === 0) {\n return res;\n }\n return res + decimals.substr(0, precision + 1);\n };\n\n private percentage = (str: string): boolean => {\n return Number(str) >= 0 && Number(str) <= 100;\n };\n\n private getPrecision = (maskExpression: string): number => {\n const x: string[] = maskExpression.split('.');\n if (x.length > 1) {\n return Number(x[x.length - 1]);\n }\n\n return Infinity;\n };\n\n private checkInputPrecision = (\n inputValue: string,\n precision: number,\n decimalMarker: IConfig['decimalMarker']\n ): string => {\n if (precision < Infinity) {\n const precisionRegEx: RegExp = new RegExp(this._charToRegExpExpression(decimalMarker) + `\\\\d{${precision}}.*$`);\n\n const precisionMatch: RegExpMatchArray | null = inputValue.match(precisionRegEx);\n if (precisionMatch && precisionMatch[0].length - 1 > precision) {\n inputValue = inputValue.substring(0, inputValue.length - 1);\n } else if (precision === 0 && inputValue.endsWith(decimalMarker)) {\n inputValue = inputValue.substring(0, inputValue.length - 1);\n }\n }\n return inputValue;\n };\n\n private _stripToDecimal(str: string): string {\n return str\n .split('')\n .filter((i: string, idx: number) => {\n return i.match('^-?\\\\d') || i === '.' || i === ',' || (i === '-' && idx === 0);\n })\n .join('');\n }\n\n private _charToRegExpExpression(char: string): string {\n const charsToEscape = '[\\\\^$.|?*+()';\n return char === ' ' ? '\\\\s' : charsToEscape.indexOf(char) >= 0 ? '\\\\' + char : char;\n }\n // tslint:disable-next-line:max-file-line-count\n}\n","import { ElementRef, Inject, Injectable, Renderer2 } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { config, IConfig } from './config';\nimport { MaskApplierService } from './mask-applier.service';\n\n@Injectable()\nexport class MaskService extends MaskApplierService {\n public maskExpression: string = '';\n public isNumberValue: boolean = false;\n public placeHolderCharacter: string = '_';\n public maskIsShown: string = '';\n public selStart: number | null = null;\n public selEnd: number | null = null;\n protected _formElement: HTMLInputElement;\n\n public onChange = (_: any) => {};\n\n public constructor(\n @Inject(DOCUMENT) private document: any,\n @Inject(config) protected _config: IConfig,\n private _elementRef: ElementRef,\n private _renderer: Renderer2\n ) {\n super(_config);\n this._formElement = this._elementRef.nativeElement;\n }\n\n // tslint:disable-next-line:cyclomatic-complexity\n public applyMask(inputValue: string, maskExpression: string, position: number = 0, cb: Function = () => {}): string {\n if (!maskExpression) {\n return inputValue;\n }\n this.maskIsShown = this.showMaskTyped ? this.showMaskInInput() : '';\n if (this.maskExpression === 'IP' && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(inputValue || '#');\n }\n if (!inputValue && this.showMaskTyped) {\n this.formControlResult(this.prefix);\n return this.prefix + this.maskIsShown;\n }\n const getSymbol: string = !!inputValue && typeof this.selStart === 'number' ? inputValue[this.selStart] : '';\n let newInputValue = '';\n if (this.hiddenInput !== undefined) {\n let actualResult: string[] = this.actualValue.split('');\n // tslint:disable no-unused-expression\n inputValue !== '' && actualResult.length\n ? typeof this.selStart === 'number' && typeof this.selEnd === 'number'\n ? inputValue.length > actualResult.length\n ? actualResult.splice(this.selStart, 0, getSymbol)\n : inputValue.length < actualResult.length\n ? actualResult.length - inputValue.length === 1\n ? actualResult.splice(this.selStart - 1, 1)\n : actualResult.splice(this.selStart, this.selEnd - this.selStart)\n : null\n : null\n : (actualResult = []);\n // tslint:enable no-unused-expression\n newInputValue = this.actualValue.length ? this.shiftTypedSymbols(actualResult.join('')) : inputValue;\n }\n newInputValue = Boolean(newInputValue) && newInputValue.length ? newInputValue : inputValue;\n const result: string = super.applyMask(newInputValue, maskExpression, position, cb);\n this.actualValue = this.getActualValue(result);\n\n // handle some separator implications:\n // a.) adjust decimalMarker default (. -> ,) if thousandSeparator is a dot\n if (this.thousandSeparator === '.' && this.decimalMarker === '.') {\n this.decimalMarker = ',';\n }\n\n // b) remove decimal marker from list of special characters to mask\n if (this.maskExpression.startsWith('separator') && this.dropSpecialCharacters === true) {\n this.maskSpecialCharacters = this.maskSpecialCharacters.filter((item: string) => item !== this.decimalMarker);\n }\n\n this.formControlResult(result);\n\n if (!this.showMaskTyped) {\n if (this.hiddenInput) {\n return result && result.length ? this.hideInput(result, this.maskExpression) : result;\n }\n return result;\n }\n const resLen: number = result.length;\n const prefNmask: string = this.prefix + this.maskIsShown;\n return result + (this.maskExpression === 'IP' ? prefNmask : prefNmask.slice(resLen));\n }\n\n public applyValueChanges(position: number = 0, cb: Function = () => {}): void {\n this._formElement.value = this.applyMask(this._formElement.value, this.maskExpression, position, cb);\n if (this._formElement === this.document.activeElement) {\n return;\n }\n this.clearIfNotMatchFn();\n }\n\n public hideInput(inputValue: string, maskExpression: string): string {\n return inputValue\n .split('')\n .map((curr: string, index: number) => {\n if (\n this.maskAvailablePatterns &&\n this.maskAvailablePatterns[maskExpression[index]] &&\n this.maskAvailablePatterns[maskExpression[index]].symbol\n ) {\n return this.maskAvailablePatterns[maskExpression[index]].symbol;\n }\n return curr;\n })\n .join('');\n }\n\n // this function is not necessary, it checks result against maskExpression\n public getActualValue(res: string): string {\n const compare: string[] = res\n .split('')\n .filter(\n (symbol: string, i: number) =>\n this._checkSymbolMask(symbol, this.maskExpression[i]) ||\n (this.maskSpecialCharacters.includes(this.maskExpression[i]) && symbol === this.maskExpression[i])\n );\n if (compare.join('') === res) {\n return compare.join('');\n }\n return res;\n }\n\n public shiftTypedSymbols(inputValue: string): string {\n let symbolToReplace = '';\n const newInputValue: string[] =\n (inputValue &&\n inputValue.split('').map((currSymbol: string, index: number) => {\n if (\n this.maskSpecialCharacters.includes(inputValue[index + 1]) &&\n inputValue[index + 1] !== this.maskExpression[index + 1]\n ) {\n symbolToReplace = currSymbol;\n return inputValue[index + 1];\n }\n if (symbolToReplace.length) {\n const replaceSymbol: string = symbolToReplace;\n symbolToReplace = '';\n return replaceSymbol;\n }\n return currSymbol;\n })) ||\n [];\n return newInputValue.join('');\n }\n\n public showMaskInInput(inputVal?: string): string {\n if (this.showMaskTyped && !!this.shownMaskExpression) {\n if (this.maskExpression.length !== this.shownMaskExpression.length) {\n throw new Error('Mask expression must match mask placeholder length');\n } else {\n return this.shownMaskExpression;\n }\n } else if (this.showMaskTyped) {\n if (inputVal) {\n return this._checkForIp(inputVal);\n }\n return this.maskExpression.replace(/\\w/g, this.placeHolderCharacter);\n }\n return '';\n }\n\n public clearIfNotMatchFn(): void {\n if (\n this.clearIfNotMatch &&\n this.prefix.length + this.maskExpression.length + this.suffix.length !==\n this._formElement.value.replace(/_/g, '').length\n ) {\n this.formElementProperty = ['value', ''];\n this.applyMask(this._formElement.value, this.maskExpression);\n }\n }\n\n public set formElementProperty([name, value]: [string, string | boolean]) {\n this._renderer.setProperty(this._formElement, name, value);\n }\n\n public checkSpecialCharAmount(mask: string): number {\n const chars: string[] = mask.split('').filter((item: string) => this._findSpecialChar(item));\n return chars.length;\n }\n\n private _checkForIp(inputVal: string): string {\n if (inputVal === '#') {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n const arr: string[] = [];\n for (let i = 0; i < inputVal.length; i++) {\n if (inputVal[i].match('\\\\d')) {\n arr.push(inputVal[i]);\n }\n }\n if (arr.length <= 3) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 3 && arr.length <= 6) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 6 && arr.length <= 9) {\n return this.placeHolderCharacter;\n }\n if (arr.length > 9 && arr.length <= 12) {\n return '';\n }\n return '';\n }\n\n private formControlResult(inputValue: string): void {\n if (Array.isArray(this.dropSpecialCharacters)) {\n this.onChange(this._removeMask(this._removeSuffix(this._removePrefix(inputValue)), this.dropSpecialCharacters));\n } else if (this.dropSpecialCharacters) {\n this.onChange(this._checkSymbols(inputValue));\n } else {\n this.onChange(this._removeSuffix(this._removePrefix(inputValue)));\n }\n }\n\n private _removeMask(value: string, specialCharactersForRemove: string[]): string {\n return value ? value.replace(this._regExpForRemove(specialCharactersForRemove), '') : value;\n }\n\n private _removePrefix(value: string): string {\n if (!this.prefix) {\n return value;\n }\n return value ? value.replace(this.prefix, '') : value;\n }\n\n private _removeSuffix(value: string): string {\n if (!this.suffix) {\n return value;\n }\n return value ? value.replace(this.suffix, '') : value;\n }\n\n private _retrieveSeparatorValue(result: string): string {\n return this._removeMask(this._removeSuffix(this._removePrefix(result)), this.maskSpecialCharacters);\n }\n\n private _regExpForRemove(specialCharactersForRemove: string[]): RegExp {\n return new RegExp(specialCharactersForRemove.map((item: string) => `\\\\${item}`).join('|'), 'gi');\n }\n\n private _checkSymbols(result: string): string | number | undefined | null {\n if (result === '') {\n return result;\n }\n\n const separatorPrecision: number | null = this._retrieveSeparatorPrecision(this.maskExpression);\n let separatorValue: string = this._retrieveSeparatorValue(result);\n if (this.decimalMarker !== '.') {\n separatorValue = separatorValue.replace(this.decimalMarker, '.');\n }\n\n if (this.isNumberValue) {\n if (separatorPrecision) {\n if (result === this.decimalMarker) {\n return null;\n }\n return this._checkPrecision(this.maskExpression, separatorValue);\n } else {\n return Number(separatorValue);\n }\n } else {\n return separatorValue;\n }\n }\n\n // TODO should think about helpers or separting decimal precision to own property\n private _retrieveSeparatorPrecision(maskExpretion: string): number | null {\n const matcher: RegExpMatchArray | null = maskExpretion.match(new RegExp(`^separator\\\\.([^d]*)`));\n return matcher ? Number(matcher[1]) : null;\n }\n\n private _checkPrecision(separatorExpression: string, separatorValue: string): number | string {\n if (separatorExpression.indexOf('2') > 0) {\n return Number(separatorValue).toFixed(2);\n }\n return Number(separatorValue);\n }\n}\n","import { ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\nimport { Directive, forwardRef, HostListener, Inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { CustomKeyboardEvent } from './custom-keyboard-event';\nimport { config, IConfig, timeMasks, withoutValidation } from './config';\nimport { MaskService } from './mask.service';\n\n// tslint:disable deprecation\n@Directive({\n selector: '[mask]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskDirective),\n multi: true,\n },\n MaskService,\n ],\n})\nexport class MaskDirective implements ControlValueAccessor, OnChanges {\n @Input('mask') public maskExpression: string = '';\n @Input() public specialCharacters: IConfig['specialCharacters'] = [];\n @Input() public patterns: IConfig['patterns'] = {};\n @Input() public prefix: IConfig['prefix'] = '';\n @Input() public suffix: IConfig['suffix'] = '';\n @Input() public thousandSeparator: IConfig['thousandSeparator'] = ' ';\n @Input() public decimalMarker: IConfig['decimalMarker'] = '.';\n @Input() public dropSpecialCharacters: IConfig['dropSpecialCharacters'] | null = null;\n @Input() public hiddenInput: IConfig['hiddenInput'] | null = null;\n @Input() public showMaskTyped: IConfig['showMaskTyped'] | null = null;\n @Input() public placeHolderCharacter: IConfig['placeHolderCharacter'] | null = null;\n @Input() public shownMaskExpression: IConfig['shownMaskExpression'] | null = null;\n @Input() public showTemplate: IConfig['showTemplate'] | null = null;\n @Input() public clearIfNotMatch: IConfig['clearIfNotMatch'] | null = null;\n @Input() public validation: IConfig['validation'] | null = null;\n @Input() public separatorLimit: IConfig['separatorLimit'] | null = null;\n @Input() public allowNegativeNumbers: IConfig['allowNegativeNumbers'] | null = null;\n private _maskValue: string = '';\n private _inputValue!: string;\n private _position: number | null = null;\n private _start!: number;\n private _end!: number;\n private _code!: string;\n\n public constructor(\n @Inject(DOCUMENT) private document: any,\n private _maskService: MaskService,\n @Inject(config) protected _config: IConfig\n ) {}\n\n public onChange = (_: any) => {};\n public onTouch = () => {};\n\n public ngOnChanges(changes: SimpleChanges): void {\n const {\n maskExpression,\n specialCharacters,\n patterns,\n prefix,\n suffix,\n thousandSeparator,\n decimalMarker,\n dropSpecialCharacters,\n hiddenInput,\n showMaskTyped,\n placeHolderCharacter,\n shownMaskExpression,\n showTemplate,\n clearIfNotMatch,\n validation,\n separatorLimit,\n allowNegativeNumbers,\n } = changes;\n if (maskExpression) {\n this._maskValue = changes.maskExpression.currentValue || '';\n }\n if (specialCharacters) {\n if (!specialCharacters.currentValue || !Array.isArray(specialCharacters.currentValue)) {\n return;\n } else {\n this._maskService.maskSpecialCharacters = changes.specialCharacters.currentValue || [];\n }\n }\n // Only overwrite the mask available patterns if a pattern has actually been passed in\n if (patterns && patterns.currentValue) {\n this._maskService.maskAvailablePatterns = patterns.currentValue;\n }\n if (prefix) {\n this._maskService.prefix = prefix.currentValue;\n }\n if (suffix) {\n this._maskService.suffix = suffix.currentValue;\n }\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator.currentValue;\n }\n if (decimalMarker) {\n this._maskService.decimalMarker = decimalMarker.currentValue;\n }\n if (dropSpecialCharacters) {\n this._maskService.dropSpecialCharacters = dropSpecialCharacters.currentValue;\n }\n if (hiddenInput) {\n this._maskService.hiddenInput = hiddenInput.currentValue;\n }\n if (showMaskTyped) {\n this._maskService.showMaskTyped = showMaskTyped.currentValue;\n }\n if (placeHolderCharacter) {\n this._maskService.placeHolderCharacter = placeHolderCharacter.currentValue;\n }\n if (shownMaskExpression) {\n this._maskService.shownMaskExpression = shownMaskExpression.currentValue;\n }\n if (showTemplate) {\n this._maskService.showTemplate = showTemplate.currentValue;\n }\n if (clearIfNotMatch) {\n this._maskService.clearIfNotMatch = clearIfNotMatch.currentValue;\n }\n if (validation) {\n this._maskService.validation = validation.currentValue;\n }\n if (separatorLimit) {\n this._maskService.separatorLimit = separatorLimit.currentValue;\n }\n if (allowNegativeNumbers) {\n this._maskService.maskSpecialCharacters = this._maskService.maskSpecialCharacters.filter((c: string) => c !== '-');\n }\n this._applyMask();\n }\n\n // tslint:disable-next-line: cyclomatic-complexity\n public validate({ value }: FormControl): ValidationErrors | null {\n if (!this._maskService.validation) {\n return null;\n }\n if (this._maskService.ipError) {\n return this._createValidationError(value);\n }\n if (this._maskValue.startsWith('separator')) {\n return null;\n }\n if (withoutValidation.includes(this._maskValue)) {\n return null;\n }\n if (this._maskService.clearIfNotMatch) {\n return null;\n }\n if (timeMasks.includes(this._maskValue)) {\n return this._validateTime(value);\n }\n if (value && value.toString().length >= 1) {\n let counterOfOpt = 0;\n for (const key in this._maskService.maskAvailablePatterns) {\n if (\n this._maskService.maskAvailablePatterns[key].optional &&\n this._maskService.maskAvailablePatterns[key].optional === true\n ) {\n if (this._maskValue.indexOf(key) !== this._maskValue.lastIndexOf(key)) {\n const opt: string = this._maskValue\n .split('')\n .filter((i: string) => i === key)\n .join('');\n counterOfOpt += opt.length;\n } else if (this._maskValue.indexOf(key) !== -1) {\n counterOfOpt++;\n }\n if (this._maskValue.indexOf(key) !== -1 && value.toString().length >= this._maskValue.indexOf(key)) {\n return null;\n }\n if (counterOfOpt === this._maskValue.length) {\n return null;\n }\n }\n }\n if (\n this._maskValue.indexOf('{') === 1 &&\n value.toString().length === this._maskValue.length + Number(this._maskValue.split('{')[1].split('}')[0]) - 4\n ) {\n return null;\n }\n if (this._maskValue.indexOf('*') === 1 || this._maskValue.indexOf('?') === 1) {\n return null;\n } else if (\n (this._maskValue.indexOf('*') > 1 && value.toString().length < this._maskValue.indexOf('*')) ||\n (this._maskValue.indexOf('?') > 1 && value.toString().length < this._maskValue.indexOf('?')) ||\n this._maskValue.indexOf('{') === 1\n ) {\n return this._createValidationError(value);\n }\n if (this._maskValue.indexOf('*') === -1 || this._maskValue.indexOf('?') === -1) {\n const length: number = this._maskService.dropSpecialCharacters\n ? this._maskValue.length - this._maskService.checkSpecialCharAmount(this._maskValue) - counterOfOpt\n : this._maskValue.length - counterOfOpt;\n if (value.toString().length < length) {\n return this._createValidationError(value);\n }\n }\n }\n return null;\n }\n\n @HostListener('input', ['$event'])\n public onInput(e: CustomKeyboardEvent): void {\n const el: HTMLInputElement = e.target as HTMLInputElement;\n this._inputValue = el.value;\n if (!this._maskValue) {\n this.onChange(el.value);\n return;\n }\n const position: number =\n el.selectionStart === 1\n ? (el.selectionStart as number) + this._maskService.prefix.length\n : (el.selectionStart as number);\n let caretShift = 0;\n let backspaceShift = false;\n this._maskService.applyValueChanges(position, (shift: number, _backspaceShift: boolean) => {\n caretShift = shift;\n backspaceShift = _backspaceShift;\n });\n // only set the selection if the element is active\n if (this.document.activeElement !== el) {\n return;\n }\n this._position = this._position === 1 && this._inputValue.length === 1 ? null : this._position;\n let positionToApply: number = this._position\n ? this._inputValue.length + position + caretShift\n : position + (this._code === 'Backspace' && !backspaceShift ? 0 : caretShift);\n if (positionToApply > this._getActualInputLength()) {\n positionToApply = this._getActualInputLength();\n }\n el.setSelectionRange(positionToApply, positionToApply);\n if ((this.maskExpression.includes('H') || this.maskExpression.includes('M')) && caretShift === 0) {\n el.setSelectionRange((el.selectionStart as number) + 1, (el.selectionStart as number) + 1);\n }\n this._position = null;\n }\n\n @HostListener('blur')\n public onBlur(): void {\n this._maskService.clearIfNotMatchFn();\n this.onTouch();\n }\n\n @HostListener('click', ['$event'])\n public onFocus(e: MouseEvent | CustomKeyboardEvent): void {\n const el: HTMLInputElement = e.target as HTMLInputElement;\n const posStart = 0;\n const posEnd = 0;\n if (\n el !== null &&\n el.selectionStart !== null &&\n el.selectionStart === el.selectionEnd &&\n el.selectionStart > this._maskService.prefix.length &&\n // tslint:disable-next-line\n (e as any).keyCode !== 38\n )\n if (this._maskService.showMaskTyped) {\n // We are showing the mask in the input\n this._maskService.maskIsShown = this._maskService.showMaskInInput();\n if (el.setSelectionRange && this._maskService.prefix + this._maskService.maskIsShown === el.value) {\n // the input ONLY contains the mask, so position the cursor at the start\n el.focus();\n el.setSelectionRange(posStart, posEnd);\n } else {\n // the input contains some characters already\n if (el.selectionStart > this._maskService.actualValue.length) {\n // if the user clicked beyond our value's length, position the cursor at the end of our value\n el.setSelectionRange(this._maskService.actualValue.length, this._maskService.actualValue.length);\n }\n }\n }\n const nextValue: string | null =\n !el.value || el.value === this._maskService.prefix\n ? this._maskService.prefix + this._maskService.maskIsShown\n : el.value;\n\n /** Fix of cursor position jumping to end in most browsers no matter where cursor is inserted onFocus */\n if (el.value !== nextValue) {\n el.value = nextValue;\n }\n\n /** fix of cursor position with prefix when mouse click occur */\n if (((el.selectionStart as number) || (el.selectionEnd as number)) <= this._maskService.prefix.length) {\n el.selectionStart = this._maskService.prefix.length;\n return;\n }\n\n /** select only inserted text */\n if ((el.selectionEnd as number) > this._getActualInputLength()) {\n el.selectionEnd = this._getActualInputLength();\n }\n }\n\n // tslint:disable-next-line: cyclomatic-complexity\n @HostListener('keydown', ['$event'])\n public onKeyDown(e: CustomKeyboardEvent): void {\n this._code = e.code ? e.code : e.key;\n const el: HTMLInputElement = e.target as HTMLInputElement;\n this._inputValue = el.value;\n if (e.keyCode === 38) {\n e.preventDefault();\n }\n if (e.keyCode === 37 || e.keyCode === 8 || e.keyCode === 46) {\n if (e.keyCode === 8 && el.value.length === 0) {\n el.selectionStart = el.selectionEnd;\n }\n if (e.keyCode === 8 && (el.selectionStart as number) !== 0) {\n // If specialChars is false, (shouldn't ever happen) then set to the defaults\n this.specialCharacters = this.specialCharacters || this._config.specialCharacters;\n if (this.prefix.length > 1 && (el.selectionStart as number) <= this.prefix.length) {\n el.setSelectionRange(this.prefix.length, this.prefix.length);\n } else {\n if (this._inputValue.length !== (el.selectionStart as number) && (el.selectionStart as number) !== 1) {\n while (\n this.specialCharacters.includes(this._inputValue[(el.selectionStart as number) - 1].toString()) &&\n ((this.prefix.length >= 1 && (el.selectionStart as number) > this.prefix.length) ||\n this.prefix.length === 0)\n ) {\n el.setSelectionRange((el.selectionStart as number) - 1, (el.selectionStart as number) - 1);\n }\n }\n this.suffixCheckOnPressDelete(e.keyCode, el);\n }\n }\n this.suffixCheckOnPressDelete(e.keyCode, el);\n if (\n this._maskService.prefix.length &&\n (el.selectionStart as number) <= this._maskService.prefix.length &&\n (el.selectionEnd as number) <= this._maskService.prefix.length\n ) {\n e.preventDefault();\n }\n const cursorStart: number | null = el.selectionStart;\n // this.onFocus(e);\n if (\n e.keyCode === 8 &&\n !el.readOnly &&\n cursorStart === 0 &&\n el.selectionEnd === el.value.length &&\n el.value.length !== 0\n ) {\n this._position = this._maskService.prefix ? this._maskService.prefix.length : 0;\n this._maskService.applyMask(this._maskService.prefix, this._maskService.maskExpression, this._position);\n }\n }\n if (\n !!this.suffix &&\n this.suffix.length > 1 &&\n this._inputValue.length - this.suffix.length < (el.selectionStart as number)\n ) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n } else if (\n (e.keyCode === 65 && e.ctrlKey === true) || // Ctrl+ A\n (e.keyCode === 65 && e.metaKey === true) // Cmd + A (Mac)\n ) {\n el.setSelectionRange(0, this._getActualInputLength());\n e.preventDefault();\n }\n this._maskService.selStart = el.selectionStart;\n this._maskService.selEnd = el.selectionEnd;\n }\n\n /** It writes the value in the input */\n public async writeValue(inputValue: string | number): Promise<void> {\n if (inputValue === undefined) {\n inputValue = '';\n }\n if (typeof inputValue === 'number') {\n inputValue = String(inputValue);\n inputValue = this.decimalMarker !== '.' ? inputValue.replace('.', this.decimalMarker) : inputValue;\n this._maskService.isNumberValue = true;\n }\n (inputValue && this._maskService.maskExpression) ||\n (this._maskService.maskExpression && (this._maskService.prefix || this._maskService.showMaskTyped))\n ? (this._maskService.formElementProperty = [\n 'value',\n this._maskService.applyMask(inputValue, this._maskService.maskExpression),\n ])\n : (this._maskService.formElementProperty = ['value', inputValue]);\n this._inputValue = inputValue;\n }\n\n public registerOnChange(fn: any): void {\n this.onChange = fn;\n this._maskService.onChange = this.onChange;\n }\n\n public registerOnTouched(fn: any): void {\n this.onTouch = fn;\n }\n\n public suffixCheckOnPressDelete(keyCode: number, el: HTMLInputElement): void {\n if (keyCode === 46 && this.suffix.length > 0) {\n if (this._inputValue.length - this.suffix.length <= (el.selectionStart as number)) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n }\n }\n if (keyCode === 8) {\n if (this.suffix.length > 1 && this._inputValue.length - this.suffix.length < (el.selectionStart as number)) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n }\n if (this.suffix.length === 1 && this._inputValue.length === (el.selectionStart as number)) {\n el.setSelectionRange((el.selectionStart as number) - 1, (el.selectionStart as number) - 1);\n }\n }\n }\n\n /** It disables the input element */\n public setDisabledState(isDisabled: boolean): void {\n this._maskService.formElementProperty = ['disabled', isDisabled];\n }\n\n @HostListener('ngModelChange', ['$event'])\n // tslint:disable-next-line: no-any\n public onModelChange(e: any): void {\n if (!e) {\n this._maskService.actualValue = '';\n }\n }\n\n private _repeatPatternSymbols(maskExp: string): string {\n return (\n (maskExp.match(/{[0-9]+}/) &&\n maskExp.split('').reduce((accum: string, currval: string, index: number): string => {\n this._start = currval === '{' ? index : this._start;\n\n if (currval !== '}') {\n return this._maskService._findSpecialChar(currval) ? accum + currval : accum;\n }\n this._end = index;\n const repeatNumber: number = Number(maskExp.slice(this._start + 1, this._end));\n const repaceWith: string = new Array(repeatNumber + 1).join(maskExp[this._start - 1]);\n return accum + repaceWith;\n }, '')) ||\n maskExp\n );\n }\n // tslint:disable-next-line:no-any\n private _applyMask(): any {\n this._maskService.maskExpression = this._repeatPatternSymbols(this._maskValue || '');\n this._maskService.formElementProperty = [\n 'value',\n this._maskService.applyMask(this._inputValue, this._maskService.maskExpression),\n ];\n }\n\n private _validateTime(value: string): ValidationErrors | null {\n const rowMaskLen: number = this._maskValue.split('').filter((s: string) => s !== ':').length;\n if (value === null || value.length === 0) {\n return null; // Don't validate empty values to allow for optional form control\n }\n\n if ((+value[value.length - 1] === 0 && value.length < rowMaskLen) || value.length <= rowMaskLen - 2) {\n return this._createValidationError(value);\n }\n\n return null;\n }\n\n private _getActualInputLength() {\n return (\n this._maskService.actualValue.length || this._maskService.actualValue.length + this._maskService.prefix.length\n );\n }\n\n private _createValidationError(actualValue: string): ValidationErrors {\n return {\n mask: {\n requiredMask: this._maskValue,\n actualValue,\n },\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { MaskApplierService } from './mask-applier.service';\nimport { IConfig } from './config';\n\n@Pipe({\n name: 'mask',\n pure: true,\n})\nexport class MaskPipe implements PipeTransform {\n public constructor(private _maskService: MaskApplierService) {}\n\n public transform(\n value: string | number,\n mask: string | [string, IConfig['patterns']],\n thousandSeparator: string | null = null\n ): string {\n if (!value && typeof value !== 'number') {\n return '';\n }\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator;\n }\n if (typeof mask === 'string') {\n return this._maskService.applyMask(`${value}`, mask);\n }\n return this._maskService.applyMaskWithPattern(`${value}`, mask);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { config, INITIAL_CONFIG, initialConfig, NEW_CONFIG, optionsConfig } from './config';\nimport { MaskApplierService } from './mask-applier.service';\nimport { MaskDirective } from './mask.directive';\nimport { MaskPipe } from './mask.pipe';\n\n@NgModule({\n exports: [MaskDirective, MaskPipe],\n declarations: [MaskDirective, MaskPipe],\n})\nexport class NgxMaskModule {\n public static forRoot(configValue?: optionsConfig | (() => optionsConfig)): ModuleWithProviders {\n return {\n ngModule: NgxMaskModule,\n providers: [\n {\n provide: NEW_CONFIG,\n useValue: configValue,\n },\n {\n provide: INITIAL_CONFIG,\n useValue: initialConfig,\n },\n {\n provide: config,\n useFactory: _configFactory,\n deps: [INITIAL_CONFIG, NEW_CONFIG],\n },\n MaskApplierService,\n ],\n };\n }\n public static forChild(_configValue?: optionsConfig): ModuleWithProviders {\n return {\n ngModule: NgxMaskModule,\n };\n }\n}\n\n/**\n * @internal\n */\nexport function _configFactory(\n initConfig: optionsConfig,\n configValue: optionsConfig | (() => optionsConfig)\n): optionsConfig {\n return configValue instanceof Function ? { ...initConfig, ...configValue() } : { ...initConfig, ...configValue };\n}\n","// tslint:disable: no-any typedef\ndeclare var global: any;\n\n(function() {\n if (!global.KeyboardEvent) {\n global.KeyboardEvent = function(_eventType: any, _init: any) {};\n }\n})();\n\nexport type CustomKeyboardEvent = KeyboardEvent;\n"],"names":["InjectionToken","Injectable","Inject","tslib_1.__extends","DOCUMENT","ElementRef","Renderer2","Directive","NG_VALUE_ACCESSOR","forwardRef","NG_VALIDATORS","Input","HostListener","Pipe","NgModule","global"],"mappings":"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"}
|