ngx-mask 19.0.3 → 19.0.5

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.
@@ -58,6 +58,7 @@ const initialConfig = {
58
58
  decimalMarker: ['.', ','],
59
59
  clearIfNotMatch: false,
60
60
  showMaskTyped: false,
61
+ instantPrefix: false,
61
62
  placeHolderCharacter: '_',
62
63
  dropSpecialCharacters: true,
63
64
  hiddenInput: false,
@@ -158,6 +159,7 @@ class NgxMaskApplierService {
158
159
  inputTransformFn = this._config.inputTransformFn;
159
160
  outputTransformFn = this._config.outputTransformFn;
160
161
  keepCharacterPositions = this._config.keepCharacterPositions;
162
+ instantPrefix = this._config.instantPrefix;
161
163
  _shift = new Set();
162
164
  plusOnePosition = false;
163
165
  maskExpression = '';
@@ -252,11 +254,48 @@ class NgxMaskApplierService {
252
254
  processedValue = this._stripToDecimal(processedValue);
253
255
  }
254
256
  const precision = this.getPrecision(maskExpression);
255
- const decimalMarker = Array.isArray(this.decimalMarker)
256
- ? this.thousandSeparator === MaskExpression.DOT
257
- ? MaskExpression.COMMA
258
- : MaskExpression.DOT
259
- : this.decimalMarker;
257
+ let decimalMarker = this.decimalMarker;
258
+ if (Array.isArray(this.decimalMarker)) {
259
+ const marker = this.decimalMarker.find((dm) => dm !== this.thousandSeparator);
260
+ decimalMarker = marker
261
+ ? marker
262
+ : this.actualValue.includes(this.decimalMarker[0])
263
+ ? this.decimalMarker[0]
264
+ : this.decimalMarker[1];
265
+ }
266
+ if (backspaced) {
267
+ const { decimalMarkerIndex, nonZeroIndex } = this._findFirstNonZeroAndDecimalIndex(processedValue, decimalMarker);
268
+ const zeroIndexMinus = processedValue[0] === MaskExpression.MINUS;
269
+ const zeroIndexNumberZero = processedValue[0] === MaskExpression.NUMBER_ZERO;
270
+ const zeroIndexDecimalMarker = processedValue[0] === decimalMarker;
271
+ const firstIndexDecimalMarker = processedValue[1] === decimalMarker;
272
+ if ((zeroIndexDecimalMarker && !nonZeroIndex) ||
273
+ (zeroIndexMinus && firstIndexDecimalMarker && !nonZeroIndex) ||
274
+ (zeroIndexNumberZero && !decimalMarkerIndex && !nonZeroIndex)) {
275
+ processedValue = MaskExpression.NUMBER_ZERO;
276
+ }
277
+ if (decimalMarkerIndex &&
278
+ nonZeroIndex &&
279
+ zeroIndexMinus &&
280
+ processedPosition === 1) {
281
+ if (decimalMarkerIndex < nonZeroIndex || decimalMarkerIndex > nonZeroIndex) {
282
+ processedValue = MaskExpression.MINUS + processedValue.slice(nonZeroIndex);
283
+ }
284
+ }
285
+ if (!decimalMarkerIndex && nonZeroIndex && processedValue.length > nonZeroIndex) {
286
+ processedValue = zeroIndexMinus
287
+ ? MaskExpression.MINUS + processedValue.slice(nonZeroIndex)
288
+ : processedValue.slice(nonZeroIndex);
289
+ }
290
+ if (decimalMarkerIndex && nonZeroIndex && processedPosition === 0) {
291
+ if (decimalMarkerIndex < nonZeroIndex) {
292
+ processedValue = processedValue.slice(decimalMarkerIndex - 1);
293
+ }
294
+ if (decimalMarkerIndex > nonZeroIndex) {
295
+ processedValue = processedValue.slice(nonZeroIndex);
296
+ }
297
+ }
298
+ }
260
299
  if (precision === 0) {
261
300
  processedValue = this.allowNegativeNumbers
262
301
  ? processedValue.length > 2 &&
@@ -292,7 +331,8 @@ class NgxMaskApplierService {
292
331
  }
293
332
  if (processedValue[0] === MaskExpression.NUMBER_ZERO &&
294
333
  processedValue[1] !== decimalMarker &&
295
- processedValue[1] !== this.thousandSeparator) {
334
+ processedValue[1] !== this.thousandSeparator &&
335
+ !backspaced) {
296
336
  processedValue =
297
337
  processedValue.length > 1
298
338
  ? processedValue.slice(0, 1) +
@@ -302,6 +342,7 @@ class NgxMaskApplierService {
302
342
  this.plusOnePosition = true;
303
343
  }
304
344
  if (this.allowNegativeNumbers &&
345
+ !backspaced &&
305
346
  processedValue[0] === MaskExpression.MINUS &&
306
347
  (processedValue[1] === decimalMarker ||
307
348
  processedValue[1] === MaskExpression.NUMBER_ZERO)) {
@@ -320,47 +361,6 @@ class NgxMaskApplierService {
320
361
  this.plusOnePosition = true;
321
362
  }
322
363
  }
323
- if (backspaced) {
324
- const inputValueAfterZero = processedValue.slice(this._findFirstNonZeroDigitIndex(processedValue), processedValue.length);
325
- const positionOfZeroOrDecimalMarker = processedValue[processedPosition] === MaskExpression.NUMBER_ZERO ||
326
- processedValue[processedPosition] === decimalMarker;
327
- const zeroIndexNumberZero = processedValue[0] === MaskExpression.NUMBER_ZERO;
328
- const firstIndexNumberZero = processedValue[1] === MaskExpression.NUMBER_ZERO;
329
- const zeroIndexMinus = processedValue[0] === MaskExpression.MINUS;
330
- const zeroIndexThousand = processedValue[0] === this.thousandSeparator;
331
- const firstIndexDecimalMarker = processedValue[1] === decimalMarker;
332
- const zeroIndexDecimalMarker = processedValue[0] === decimalMarker;
333
- const secondIndexDecimalMarker = processedValue[2] === decimalMarker;
334
- if (zeroIndexNumberZero && firstIndexDecimalMarker && processedPosition === 0) {
335
- return processedValue;
336
- }
337
- if (zeroIndexDecimalMarker && processedPosition === 0) {
338
- processedValue = inputValueAfterZero;
339
- }
340
- if (zeroIndexNumberZero &&
341
- firstIndexDecimalMarker &&
342
- positionOfZeroOrDecimalMarker &&
343
- processedPosition < 2) {
344
- processedValue = inputValueAfterZero;
345
- }
346
- if (zeroIndexMinus &&
347
- firstIndexNumberZero &&
348
- secondIndexDecimalMarker &&
349
- positionOfZeroOrDecimalMarker &&
350
- processedPosition < 3) {
351
- processedValue = MaskExpression.MINUS + inputValueAfterZero;
352
- }
353
- if (inputValueAfterZero !== MaskExpression.MINUS &&
354
- ((processedPosition === 0 && (zeroIndexNumberZero || zeroIndexThousand)) ||
355
- (this.allowNegativeNumbers &&
356
- processedPosition === 1 &&
357
- zeroIndexMinus &&
358
- !firstIndexNumberZero))) {
359
- processedValue = zeroIndexMinus
360
- ? MaskExpression.MINUS + inputValueAfterZero
361
- : inputValueAfterZero;
362
- }
363
- }
364
364
  const thousandSeparatorCharEscaped = this._charToRegExpExpression(this.thousandSeparator);
365
365
  let invalidChars = '@#!$%^&*()_+|~=`{}\\[\\]:\\s,\\.";<>?\\/'.replace(thousandSeparatorCharEscaped, '');
366
366
  if (Array.isArray(this.decimalMarker)) {
@@ -674,7 +674,7 @@ class NgxMaskApplierService {
674
674
  }
675
675
  let res = `${this.prefix}${onlySpecial ? MaskExpression.EMPTY_STRING : result}${this.showMaskTyped ? '' : this.suffix}`;
676
676
  if (result.length === 0) {
677
- res = !this.dropSpecialCharacters ? `${this.prefix}${result}` : `${result}`;
677
+ res = this.instantPrefix ? `${this.prefix}${result}` : `${result}`;
678
678
  }
679
679
  const isSpecialCharacterMaskFirstSymbol = processedValue.length === 1 &&
680
680
  this.specialCharacters.includes(maskExpression[0]) &&
@@ -854,19 +854,30 @@ class NgxMaskApplierService {
854
854
  : `${emptyOrMinus}${integerString}${decimal}${decimalPart}`;
855
855
  }
856
856
  }
857
- _findFirstNonZeroDigitIndex(inputString) {
857
+ _findFirstNonZeroAndDecimalIndex(inputString, decimalMarker) {
858
+ let decimalMarkerIndex = null;
859
+ let nonZeroIndex = null;
858
860
  for (let i = 0; i < inputString.length; i++) {
859
861
  const char = inputString[i];
860
- if (char && char >= '1' && char <= '9') {
861
- return i;
862
+ if (char === decimalMarker && decimalMarkerIndex === null) {
863
+ decimalMarkerIndex = i;
864
+ }
865
+ if (char && char >= '1' && char <= '9' && nonZeroIndex === null) {
866
+ nonZeroIndex = i;
867
+ }
868
+ if (decimalMarkerIndex !== null && nonZeroIndex !== null) {
869
+ break;
862
870
  }
863
871
  }
864
- return -1;
872
+ return {
873
+ decimalMarkerIndex,
874
+ nonZeroIndex,
875
+ };
865
876
  }
866
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskApplierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
867
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskApplierService });
877
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskApplierService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
878
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskApplierService });
868
879
  }
869
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskApplierService, decorators: [{
880
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskApplierService, decorators: [{
870
881
  type: Injectable
871
882
  }] });
872
883
 
@@ -1291,6 +1302,7 @@ class NgxMaskService extends NgxMaskApplierService {
1291
1302
  this.triggerOnMaskChange && this.maskChanged
1292
1303
  ? this.onChange(this.outputTransformFn(this._toNumber(this._checkSymbols(this._removeSuffix(this._removePrefix(inputValue))))))
1293
1304
  : '';
1305
+ this.writingValue = false;
1294
1306
  this.maskChanged = false;
1295
1307
  return;
1296
1308
  }
@@ -1456,10 +1468,10 @@ class NgxMaskService extends NgxMaskApplierService {
1456
1468
  currentLocaleDecimalMarker() {
1457
1469
  return (1.1).toLocaleString().substring(1, 2);
1458
1470
  }
1459
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1460
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskService });
1471
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
1472
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskService });
1461
1473
  }
1462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskService, decorators: [{
1474
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskService, decorators: [{
1463
1475
  type: Injectable
1464
1476
  }] });
1465
1477
 
@@ -1515,6 +1527,7 @@ class NgxMaskDirective {
1515
1527
  inputTransformFn = input(null);
1516
1528
  outputTransformFn = input(null);
1517
1529
  keepCharacterPositions = input(null);
1530
+ instantPrefix = input(null);
1518
1531
  maskFilled = output();
1519
1532
  _maskValue = signal('');
1520
1533
  _inputValue = signal('');
@@ -1530,7 +1543,7 @@ class NgxMaskDirective {
1530
1543
  onChange = (_) => { };
1531
1544
  onTouch = () => { };
1532
1545
  ngOnChanges(changes) {
1533
- const { mask, specialCharacters, patterns, prefix, suffix, thousandSeparator, decimalMarker, dropSpecialCharacters, hiddenInput, showMaskTyped, placeHolderCharacter, shownMaskExpression, clearIfNotMatch, validation, separatorLimit, allowNegativeNumbers, leadZeroDateTime, leadZero, triggerOnMaskChange, apm, inputTransformFn, outputTransformFn, keepCharacterPositions, } = changes;
1546
+ const { mask, specialCharacters, patterns, prefix, suffix, thousandSeparator, decimalMarker, dropSpecialCharacters, hiddenInput, showMaskTyped, placeHolderCharacter, shownMaskExpression, clearIfNotMatch, validation, separatorLimit, allowNegativeNumbers, leadZeroDateTime, leadZero, triggerOnMaskChange, apm, inputTransformFn, outputTransformFn, keepCharacterPositions, instantPrefix, } = changes;
1534
1547
  if (mask) {
1535
1548
  if (mask.currentValue !== mask.previousValue && !mask.firstChange) {
1536
1549
  this._maskService.maskChanged = true;
@@ -1567,6 +1580,9 @@ class NgxMaskDirective {
1567
1580
  if (apm && apm.currentValue) {
1568
1581
  this._maskService.apm = apm.currentValue;
1569
1582
  }
1583
+ if (instantPrefix) {
1584
+ this._maskService.instantPrefix = instantPrefix.currentValue;
1585
+ }
1570
1586
  if (prefix) {
1571
1587
  this._maskService.prefix = prefix.currentValue;
1572
1588
  }
@@ -1575,6 +1591,27 @@ class NgxMaskDirective {
1575
1591
  }
1576
1592
  if (thousandSeparator) {
1577
1593
  this._maskService.thousandSeparator = thousandSeparator.currentValue;
1594
+ if (thousandSeparator.previousValue && thousandSeparator.currentValue) {
1595
+ const previousDecimalMarker = this._maskService.decimalMarker;
1596
+ if (thousandSeparator.currentValue === this._maskService.decimalMarker) {
1597
+ this._maskService.decimalMarker =
1598
+ thousandSeparator.currentValue === MaskExpression.COMMA
1599
+ ? MaskExpression.DOT
1600
+ : MaskExpression.COMMA;
1601
+ }
1602
+ if (this._maskService.dropSpecialCharacters === true) {
1603
+ this._maskService.specialCharacters = this._config.specialCharacters;
1604
+ }
1605
+ if (typeof previousDecimalMarker === 'string' &&
1606
+ typeof this._maskService.decimalMarker === 'string') {
1607
+ this._inputValue.set(this._inputValue()
1608
+ .split(thousandSeparator.previousValue)
1609
+ .join('')
1610
+ .replace(previousDecimalMarker, this._maskService.decimalMarker));
1611
+ this._maskService.actualValue = this._inputValue();
1612
+ }
1613
+ this._maskService.writingValue = true;
1614
+ }
1578
1615
  }
1579
1616
  if (decimalMarker) {
1580
1617
  this._maskService.decimalMarker = decimalMarker.currentValue;
@@ -2172,7 +2209,7 @@ class NgxMaskDirective {
2172
2209
  }
2173
2210
  this._maskService.isNumberValue = true;
2174
2211
  }
2175
- if (typeof inputValue !== 'string') {
2212
+ if (typeof inputValue !== 'string' || value === null || typeof value === 'undefined') {
2176
2213
  inputValue = '';
2177
2214
  }
2178
2215
  this._inputValue.set(inputValue);
@@ -2315,8 +2352,8 @@ class NgxMaskDirective {
2315
2352
  return uniqueCharacters.size === 1;
2316
2353
  });
2317
2354
  }
2318
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2319
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.3", type: NgxMaskDirective, isStandalone: true, selector: "input[mask], textarea[mask]", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, specialCharacters: { classPropertyName: "specialCharacters", publicName: "specialCharacters", isSignal: true, isRequired: false, transformFunction: null }, patterns: { classPropertyName: "patterns", publicName: "patterns", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null }, decimalMarker: { classPropertyName: "decimalMarker", publicName: "decimalMarker", isSignal: true, isRequired: false, transformFunction: null }, dropSpecialCharacters: { classPropertyName: "dropSpecialCharacters", publicName: "dropSpecialCharacters", isSignal: true, isRequired: false, transformFunction: null }, hiddenInput: { classPropertyName: "hiddenInput", publicName: "hiddenInput", isSignal: true, isRequired: false, transformFunction: null }, showMaskTyped: { classPropertyName: "showMaskTyped", publicName: "showMaskTyped", isSignal: true, isRequired: false, transformFunction: null }, placeHolderCharacter: { classPropertyName: "placeHolderCharacter", publicName: "placeHolderCharacter", isSignal: true, isRequired: false, transformFunction: null }, shownMaskExpression: { classPropertyName: "shownMaskExpression", publicName: "shownMaskExpression", isSignal: true, isRequired: false, transformFunction: null }, clearIfNotMatch: { classPropertyName: "clearIfNotMatch", publicName: "clearIfNotMatch", isSignal: true, isRequired: false, transformFunction: null }, validation: { classPropertyName: "validation", publicName: "validation", isSignal: true, isRequired: false, transformFunction: null }, separatorLimit: { classPropertyName: "separatorLimit", publicName: "separatorLimit", isSignal: true, isRequired: false, transformFunction: null }, allowNegativeNumbers: { classPropertyName: "allowNegativeNumbers", publicName: "allowNegativeNumbers", isSignal: true, isRequired: false, transformFunction: null }, leadZeroDateTime: { classPropertyName: "leadZeroDateTime", publicName: "leadZeroDateTime", isSignal: true, isRequired: false, transformFunction: null }, leadZero: { classPropertyName: "leadZero", publicName: "leadZero", isSignal: true, isRequired: false, transformFunction: null }, triggerOnMaskChange: { classPropertyName: "triggerOnMaskChange", publicName: "triggerOnMaskChange", isSignal: true, isRequired: false, transformFunction: null }, apm: { classPropertyName: "apm", publicName: "apm", isSignal: true, isRequired: false, transformFunction: null }, inputTransformFn: { classPropertyName: "inputTransformFn", publicName: "inputTransformFn", isSignal: true, isRequired: false, transformFunction: null }, outputTransformFn: { classPropertyName: "outputTransformFn", publicName: "outputTransformFn", isSignal: true, isRequired: false, transformFunction: null }, keepCharacterPositions: { classPropertyName: "keepCharacterPositions", publicName: "keepCharacterPositions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { maskFilled: "maskFilled" }, host: { listeners: { "paste": "onPaste()", "focus": "onFocus($event)", "ngModelChange": "onModelChange($event)", "input": "onInput($event)", "compositionstart": "onCompositionStart($event)", "compositionend": "onCompositionEnd($event)", "blur": "onBlur($event)", "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, providers: [
2355
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2356
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.4", type: NgxMaskDirective, isStandalone: true, selector: "input[mask], textarea[mask]", inputs: { mask: { classPropertyName: "mask", publicName: "mask", isSignal: true, isRequired: false, transformFunction: null }, specialCharacters: { classPropertyName: "specialCharacters", publicName: "specialCharacters", isSignal: true, isRequired: false, transformFunction: null }, patterns: { classPropertyName: "patterns", publicName: "patterns", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null }, decimalMarker: { classPropertyName: "decimalMarker", publicName: "decimalMarker", isSignal: true, isRequired: false, transformFunction: null }, dropSpecialCharacters: { classPropertyName: "dropSpecialCharacters", publicName: "dropSpecialCharacters", isSignal: true, isRequired: false, transformFunction: null }, hiddenInput: { classPropertyName: "hiddenInput", publicName: "hiddenInput", isSignal: true, isRequired: false, transformFunction: null }, showMaskTyped: { classPropertyName: "showMaskTyped", publicName: "showMaskTyped", isSignal: true, isRequired: false, transformFunction: null }, placeHolderCharacter: { classPropertyName: "placeHolderCharacter", publicName: "placeHolderCharacter", isSignal: true, isRequired: false, transformFunction: null }, shownMaskExpression: { classPropertyName: "shownMaskExpression", publicName: "shownMaskExpression", isSignal: true, isRequired: false, transformFunction: null }, clearIfNotMatch: { classPropertyName: "clearIfNotMatch", publicName: "clearIfNotMatch", isSignal: true, isRequired: false, transformFunction: null }, validation: { classPropertyName: "validation", publicName: "validation", isSignal: true, isRequired: false, transformFunction: null }, separatorLimit: { classPropertyName: "separatorLimit", publicName: "separatorLimit", isSignal: true, isRequired: false, transformFunction: null }, allowNegativeNumbers: { classPropertyName: "allowNegativeNumbers", publicName: "allowNegativeNumbers", isSignal: true, isRequired: false, transformFunction: null }, leadZeroDateTime: { classPropertyName: "leadZeroDateTime", publicName: "leadZeroDateTime", isSignal: true, isRequired: false, transformFunction: null }, leadZero: { classPropertyName: "leadZero", publicName: "leadZero", isSignal: true, isRequired: false, transformFunction: null }, triggerOnMaskChange: { classPropertyName: "triggerOnMaskChange", publicName: "triggerOnMaskChange", isSignal: true, isRequired: false, transformFunction: null }, apm: { classPropertyName: "apm", publicName: "apm", isSignal: true, isRequired: false, transformFunction: null }, inputTransformFn: { classPropertyName: "inputTransformFn", publicName: "inputTransformFn", isSignal: true, isRequired: false, transformFunction: null }, outputTransformFn: { classPropertyName: "outputTransformFn", publicName: "outputTransformFn", isSignal: true, isRequired: false, transformFunction: null }, keepCharacterPositions: { classPropertyName: "keepCharacterPositions", publicName: "keepCharacterPositions", isSignal: true, isRequired: false, transformFunction: null }, instantPrefix: { classPropertyName: "instantPrefix", publicName: "instantPrefix", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { maskFilled: "maskFilled" }, host: { listeners: { "paste": "onPaste()", "focus": "onFocus($event)", "ngModelChange": "onModelChange($event)", "input": "onInput($event)", "compositionstart": "onCompositionStart($event)", "compositionend": "onCompositionEnd($event)", "blur": "onBlur($event)", "click": "onClick($event)", "keydown": "onKeyDown($event)" } }, providers: [
2320
2357
  {
2321
2358
  provide: NG_VALUE_ACCESSOR,
2322
2359
  useExisting: NgxMaskDirective,
@@ -2330,7 +2367,7 @@ class NgxMaskDirective {
2330
2367
  NgxMaskService,
2331
2368
  ], exportAs: ["mask", "ngxMask"], usesOnChanges: true, ngImport: i0 });
2332
2369
  }
2333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskDirective, decorators: [{
2370
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskDirective, decorators: [{
2334
2371
  type: Directive,
2335
2372
  args: [{
2336
2373
  selector: 'input[mask], textarea[mask]',
@@ -2463,10 +2500,10 @@ class NgxMaskPipe {
2463
2500
  });
2464
2501
  }
2465
2502
  }
2466
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2467
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskPipe, isStandalone: true, name: "mask" });
2503
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2504
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskPipe, isStandalone: true, name: "mask" });
2468
2505
  }
2469
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: NgxMaskPipe, decorators: [{
2506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.4", ngImport: i0, type: NgxMaskPipe, decorators: [{
2470
2507
  type: Pipe,
2471
2508
  args: [{
2472
2509
  name: 'mask',