@cauca-911/input-validators 20.2.3 → 20.2.5-beta1

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.
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { EventEmitter, inject, ElementRef, Directive, HostListener, Output } from '@angular/core';
3
+ import { NgControl } from '@angular/forms';
3
4
 
4
5
  class Gsm7bitChars {
5
6
  static { this.gsm7bitChars = '@£$¥èéùìòÇ\\nØø\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\\"#¤%&\'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà'; }
@@ -213,13 +214,29 @@ class UrlDetectorDirective {
213
214
  this.hasUrl = false;
214
215
  this.hasLongUrl = false;
215
216
  this.elementRef = inject(ElementRef);
216
- this.urlRegex = /((?:([a-zA-Z]{3,5}):\/\/(?:(?:[a-zA-Z0-9\$\-\_\.\+\!\*\'\(\)\,\;\?\&\=]|(?:\%[a-fA-F0-9]{2})){1,64}(?:\:(?:[a-zA-Z0-9\$\-\_\.\+\!\*\'\(\)\,\;\?\&\=]|(?:\%[a-fA-F0-9]{2})){1,25})?\@)?)?((?:(?:[a-zA-Z0-9][a-zA-Z0-9\-]{0,64}\.)+(?:[a-zA-Z0-9][a-zA-Z0-9\-]*))))(\/(?:(?:[a-zA-Z0-9\;\/\?\:\@\&\=\#\~\-\.\+\!\*\'\(\)\,\_])|(?:\%[a-fA-F0-9]{2}))*)?(?:\b|$)/gim;
217
+ this.ngControl = inject(NgControl, { optional: true, self: true });
218
+ this.urlRegex = /((https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*))/gi;
217
219
  }
218
220
  ngAfterViewInit() {
219
- this.onInput();
221
+ if (this.ngControl && this.ngControl.control) {
222
+ this.valueChangesSub = this.ngControl.control.valueChanges.subscribe(value => {
223
+ this.checkIfTextHasUrl(value || '');
224
+ });
225
+ this.checkIfTextHasUrl(this.ngControl.value || '');
226
+ }
227
+ else {
228
+ this.onInput();
229
+ }
230
+ }
231
+ ngOnDestroy() {
232
+ this.valueChangesSub?.unsubscribe();
220
233
  }
221
234
  onInput() {
222
- this.checkIfTextHasUrl(this.elementRef.nativeElement.value);
235
+ if (!this.ngControl) {
236
+ setTimeout(() => {
237
+ this.checkIfTextHasUrl(this.elementRef.nativeElement.value);
238
+ });
239
+ }
223
240
  }
224
241
  checkIfTextHasUrl(text) {
225
242
  const hasUrl = this.checkForUrl(text) || this.checkForScheme(text);
@@ -259,7 +276,7 @@ class UrlDetectorDirective {
259
276
  }
260
277
  static { this.ɵfac = function UrlDetectorDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UrlDetectorDirective)(); }; }
261
278
  static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: UrlDetectorDirective, selectors: [["", "caucaUrlDetector", ""]], hostBindings: function UrlDetectorDirective_HostBindings(rf, ctx) { if (rf & 1) {
262
- i0.ɵɵlistener("input", function UrlDetectorDirective_input_HostBindingHandler() { return ctx.onInput(); });
279
+ i0.ɵɵlistener("input", function UrlDetectorDirective_input_HostBindingHandler() { return ctx.onInput(); })("paste", function UrlDetectorDirective_paste_HostBindingHandler() { return ctx.onInput(); });
263
280
  } }, outputs: { hasUrlChanged: "hasUrlChanged", hasLongUrlChanged: "hasLongUrlChanged" } }); }
264
281
  }
265
282
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UrlDetectorDirective, [{
@@ -274,6 +291,9 @@ class UrlDetectorDirective {
274
291
  }], onInput: [{
275
292
  type: HostListener,
276
293
  args: ['input']
294
+ }, {
295
+ type: HostListener,
296
+ args: ['paste']
277
297
  }] }); })();
278
298
 
279
299
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"cauca-911-input-validators.mjs","sources":["../../../projects/cauca-input-validators/src/lib/shared/models/gsm-7bit-chars.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/sms-avoid-characters.directive.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/sms-segment-calculator.directive.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/phone-number-detector.directive.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/url-detector.directive.ts","../../../projects/cauca-input-validators/src/public-api.ts","../../../projects/cauca-input-validators/src/cauca-911-input-validators.ts"],"sourcesContent":["export class Gsm7bitChars {\n public static gsm7bitChars = '@£$¥èéùìòÇ\\\\nØø\\\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\\\\\"#¤%&\\'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà';\n public static gsm7bitCharsExt = '\\\\^{}\\\\\\\\\\\\[~\\\\]|€';\n public static gsm7bitRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitChars + ']*$');\n public static gsm7bitExtRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitChars + Gsm7bitChars.gsm7bitCharsExt + ']*$');\n public static gsm7bitExtOnlyRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitCharsExt + ']*$');\n}","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';\nimport { Gsm7bitChars } from '../models/gsm-7bit-chars';\n\ninterface CharsList {\n charsToAvoid: string[];\n charsToReplace: string[];\n}\n\n@Directive({\n selector: '[caucaSmsAvoidCharacters]',\n})\nexport class SmsAvoidCharactersDirective implements AfterViewInit {\n\n @Output() public charsToAvoidChanged: EventEmitter<string[]> = new EventEmitter<string[]>();\n @Output() public charsToReplaceChanged: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n private charsToAvoid: string[] = [];\n private charsToReplace: string[] = [];\n private readonly elementRef = inject(ElementRef);\n\n public ngAfterViewInit(): void {\n this.onInput();\n }\n\n @HostListener(':input')\n public onInput() {\n this.checkCharacterException(this.elementRef.nativeElement.value);\n }\n\n private checkCharacterException(text: string): void {\n const charsList = this.listUTF16Chars(text);\n\n if (this.compareCharsList(this.charsToAvoid, charsList.charsToAvoid)) {\n this.charsToAvoid = this.removeDuplicates(charsList.charsToAvoid);\n this.charsToAvoidChanged.emit(this.charsToAvoid);\n }\n if (this.compareCharsList(this.charsToReplace, charsList.charsToReplace)) {\n this.charsToReplace = this.removeDuplicates(charsList.charsToReplace);\n this.charsToReplaceChanged.emit(this.charsToReplace);\n }\n }\n\n private listUTF16Chars(text: string): CharsList {\n const charToAvoidOrReplace = text.replace(new RegExp('([' + Gsm7bitChars.gsm7bitChars + ']+)', 'g'), '');\n const charToReplace = charToAvoidOrReplace.replace(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'), '');\n const charToAvoid = charToAvoidOrReplace.match(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'));\n\n return {\n charsToAvoid: charToAvoid ? charToAvoid[0].split('') : [],\n charsToReplace: charToReplace ? charToReplace.split('') : []\n };\n }\n\n private compareCharsList(list1: string[], list2: string[]): boolean {\n return JSON.stringify(list1) !== JSON.stringify(list2);\n }\n\n private removeDuplicates(items: string[]): string[] {\n return [...new Set(items)];\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';\nimport { Gsm7bitChars } from '../models/gsm-7bit-chars';\n\n@Directive({\n selector: '[caucaSmsSegmentCalculator]',\n})\nexport class SmsSegmentCalculatorDirective implements AfterViewInit {\n @Output() public segmentCountChanged: EventEmitter<number> = new EventEmitter<number>();\n\n private readonly elementRef = inject(ElementRef);\n private segmentCount = 0;\n private messageLength = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n GSM7: 160,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n GSM7ext: 160,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n UTF16: 70\n };\n private multiMessageLength = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n GSM7: 153,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n GSM7ext: 153,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n UTF16: 67\n };\n\n public ngAfterViewInit(): void {\n this.onInput();\n }\n\n @HostListener(':input')\n public onInput() {\n this.checkNumberOfSegment(this.elementRef.nativeElement.value);\n }\n\n private checkNumberOfSegment(text: string): void {\n const segmentCount = this.countNumberOfSegment(text);\n\n if (this.segmentCount !== segmentCount) {\n this.segmentCountChanged.emit(segmentCount);\n this.segmentCount = segmentCount;\n }\n }\n\n private countNumberOfSegment(text: string): number {\n if (!text) {\n return 0;\n }\n\n const length = this.countSmsChars(text);\n const charset = this.getCharset(text);\n const perMessage = (length > this.messageLength[charset] ? this.multiMessageLength[charset] : this.messageLength[charset]);\n\n return Math.ceil(length / perMessage);\n }\n\n private countSmsChars(text: string): number {\n let length = text.length;\n const charset = this.getCharset(text);\n\n if (charset === 'GSM7ext') {\n length += this.countGsm7bitExt(text);\n }\n\n return length;\n }\n\n private countGsm7bitExt(text: string): number {\n let char2;\n const chars = () => {\n let _i; let _len;\n const _results = [];\n\n for (_i = 0, _len = text.length; _i < _len; _i++) {\n char2 = text[_i];\n if (char2.match(Gsm7bitChars.gsm7bitExtOnlyRegExp) != null) {\n _results.push(char2);\n }\n }\n return _results;\n };\n\n return chars.length;\n }\n\n private getCharset(text: string): string {\n switch (false) {\n case text.match(Gsm7bitChars.gsm7bitRegExp) == null:\n return 'GSM7';\n case text.match(Gsm7bitChars.gsm7bitExtRegExp) == null:\n return 'GSM7ext';\n default:\n return 'UTF16';\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';\n\n@Directive({\n selector: '[caucaPhoneNumberDetector]',\n})\nexport class PhoneNumberDetectorDirective implements AfterViewInit {\n\n @Output() public hasPhoneNumberChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private hasPhoneNumber = false;\n private readonly elementRef = inject(ElementRef);\n\n public ngAfterViewInit(): void {\n this.onInput();\n }\n\n @HostListener(':input')\n public onInput() {\n this.checkIfTextHasPhoneNumber(this.elementRef.nativeElement.value);\n }\n\n private checkIfTextHasPhoneNumber(text: string): void {\n const hasPhoneNumber = this.checkForPhoneNumber(text);\n\n if (this.hasPhoneNumber !== hasPhoneNumber) {\n this.hasPhoneNumberChanged.emit(hasPhoneNumber);\n this.hasPhoneNumber = hasPhoneNumber;\n }\n }\n\n private checkForPhoneNumber(text: string): boolean {\n if (!text) {\n return false;\n }\n\n const regex = /\\(?(\\d{3})\\)?[- .]?(\\d{3})[- .]?(\\d{4})/gm;\n\n return regex.test(text);\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';\n\n@Directive({\n selector: '[caucaUrlDetector]',\n})\nexport class UrlDetectorDirective implements AfterViewInit {\n\n @Output() public hasUrlChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() public hasLongUrlChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private hasUrl = false;\n private hasLongUrl = false;\n private readonly elementRef = inject(ElementRef);\n private readonly urlRegex = /((?:([a-zA-Z]{3,5}):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?((?:(?:[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}\\.)+(?:[a-zA-Z0-9][a-zA-Z0-9\\-]*))))(\\/(?:(?:[a-zA-Z0-9\\;\\/\\?\\:\\@\\&\\=\\#\\~\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?(?:\\b|$)/gim;\n\n public ngAfterViewInit(): void {\n this.onInput();\n }\n\n @HostListener('input')\n public onInput() {\n this.checkIfTextHasUrl(this.elementRef.nativeElement.value);\n }\n\n private checkIfTextHasUrl(text: string): void {\n const hasUrl = this.checkForUrl(text) || this.checkForScheme(text);\n const hasLongUrl = this.checkForLongUrl(text);\n\n if (this.hasUrl !== hasUrl) {\n this.hasUrl = hasUrl;\n this.hasUrlChanged.emit(hasUrl);\n }\n\n if (this.hasLongUrl !== hasLongUrl) {\n this.hasLongUrl = hasLongUrl;\n this.hasLongUrlChanged.emit(hasLongUrl);\n }\n\n }\n\n private checkForScheme(text: string): boolean {\n if (!text) {\n return false;\n }\n\n const urlScheme = /[a-zA-Z]{3,5}:\\/\\//gim;\n return urlScheme.test(text);\n }\n\n private checkForUrl(text: string): boolean {\n if (!text) {\n return false;\n }\n\n this.urlRegex.lastIndex = 0;\n const url = this.urlRegex;\n return url.test(text);\n }\n\n private checkForLongUrl(text: string): boolean {\n if (!text) {\n return false;\n }\n\n this.urlRegex.lastIndex = 0;\n const fullUrl = this.urlRegex;\n const urls = text.match(fullUrl) || [];\n\n return urls.some((url: string) => url.length > 120);\n }\n}\n","/*\n * Public API Surface of cauca-input-validators\n */\n\nexport { SmsAvoidCharactersDirective } from './lib/shared/directives/sms-avoid-characters.directive';\nexport { SmsSegmentCalculatorDirective } from './lib/shared/directives/sms-segment-calculator.directive';\nexport { PhoneNumberDetectorDirective } from './lib/shared/directives/phone-number-detector.directive';\nexport { UrlDetectorDirective } from './lib/shared/directives/url-detector.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cauca-911-input-validators.mjs","sources":["../../../projects/cauca-input-validators/src/lib/shared/models/gsm-7bit-chars.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/sms-avoid-characters.directive.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/sms-segment-calculator.directive.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/phone-number-detector.directive.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/url-detector.directive.ts","../../../projects/cauca-input-validators/src/public-api.ts","../../../projects/cauca-input-validators/src/cauca-911-input-validators.ts"],"sourcesContent":["export class Gsm7bitChars {\n public static gsm7bitChars = '@£$¥èéùìòÇ\\\\nØø\\\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\\\\\"#¤%&\\'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà';\n public static gsm7bitCharsExt = '\\\\^{}\\\\\\\\\\\\[~\\\\]|€';\n public static gsm7bitRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitChars + ']*$');\n public static gsm7bitExtRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitChars + Gsm7bitChars.gsm7bitCharsExt + ']*$');\n public static gsm7bitExtOnlyRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitCharsExt + ']*$');\n}","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';\nimport { Gsm7bitChars } from '../models/gsm-7bit-chars';\n\ninterface CharsList {\n charsToAvoid: string[];\n charsToReplace: string[];\n}\n\n@Directive({\n selector: '[caucaSmsAvoidCharacters]',\n})\nexport class SmsAvoidCharactersDirective implements AfterViewInit {\n\n @Output() public charsToAvoidChanged: EventEmitter<string[]> = new EventEmitter<string[]>();\n @Output() public charsToReplaceChanged: EventEmitter<string[]> = new EventEmitter<string[]>();\n\n private charsToAvoid: string[] = [];\n private charsToReplace: string[] = [];\n private readonly elementRef = inject(ElementRef);\n\n public ngAfterViewInit(): void {\n this.onInput();\n }\n\n @HostListener(':input')\n public onInput() {\n this.checkCharacterException(this.elementRef.nativeElement.value);\n }\n\n private checkCharacterException(text: string): void {\n const charsList = this.listUTF16Chars(text);\n\n if (this.compareCharsList(this.charsToAvoid, charsList.charsToAvoid)) {\n this.charsToAvoid = this.removeDuplicates(charsList.charsToAvoid);\n this.charsToAvoidChanged.emit(this.charsToAvoid);\n }\n if (this.compareCharsList(this.charsToReplace, charsList.charsToReplace)) {\n this.charsToReplace = this.removeDuplicates(charsList.charsToReplace);\n this.charsToReplaceChanged.emit(this.charsToReplace);\n }\n }\n\n private listUTF16Chars(text: string): CharsList {\n const charToAvoidOrReplace = text.replace(new RegExp('([' + Gsm7bitChars.gsm7bitChars + ']+)', 'g'), '');\n const charToReplace = charToAvoidOrReplace.replace(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'), '');\n const charToAvoid = charToAvoidOrReplace.match(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'));\n\n return {\n charsToAvoid: charToAvoid ? charToAvoid[0].split('') : [],\n charsToReplace: charToReplace ? charToReplace.split('') : []\n };\n }\n\n private compareCharsList(list1: string[], list2: string[]): boolean {\n return JSON.stringify(list1) !== JSON.stringify(list2);\n }\n\n private removeDuplicates(items: string[]): string[] {\n return [...new Set(items)];\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';\nimport { Gsm7bitChars } from '../models/gsm-7bit-chars';\n\n@Directive({\n selector: '[caucaSmsSegmentCalculator]',\n})\nexport class SmsSegmentCalculatorDirective implements AfterViewInit {\n @Output() public segmentCountChanged: EventEmitter<number> = new EventEmitter<number>();\n\n private readonly elementRef = inject(ElementRef);\n private segmentCount = 0;\n private messageLength = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n GSM7: 160,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n GSM7ext: 160,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n UTF16: 70\n };\n private multiMessageLength = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n GSM7: 153,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n GSM7ext: 153,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n UTF16: 67\n };\n\n public ngAfterViewInit(): void {\n this.onInput();\n }\n\n @HostListener(':input')\n public onInput() {\n this.checkNumberOfSegment(this.elementRef.nativeElement.value);\n }\n\n private checkNumberOfSegment(text: string): void {\n const segmentCount = this.countNumberOfSegment(text);\n\n if (this.segmentCount !== segmentCount) {\n this.segmentCountChanged.emit(segmentCount);\n this.segmentCount = segmentCount;\n }\n }\n\n private countNumberOfSegment(text: string): number {\n if (!text) {\n return 0;\n }\n\n const length = this.countSmsChars(text);\n const charset = this.getCharset(text);\n const perMessage = (length > this.messageLength[charset] ? this.multiMessageLength[charset] : this.messageLength[charset]);\n\n return Math.ceil(length / perMessage);\n }\n\n private countSmsChars(text: string): number {\n let length = text.length;\n const charset = this.getCharset(text);\n\n if (charset === 'GSM7ext') {\n length += this.countGsm7bitExt(text);\n }\n\n return length;\n }\n\n private countGsm7bitExt(text: string): number {\n let char2;\n const chars = () => {\n let _i; let _len;\n const _results = [];\n\n for (_i = 0, _len = text.length; _i < _len; _i++) {\n char2 = text[_i];\n if (char2.match(Gsm7bitChars.gsm7bitExtOnlyRegExp) != null) {\n _results.push(char2);\n }\n }\n return _results;\n };\n\n return chars.length;\n }\n\n private getCharset(text: string): string {\n switch (false) {\n case text.match(Gsm7bitChars.gsm7bitRegExp) == null:\n return 'GSM7';\n case text.match(Gsm7bitChars.gsm7bitExtRegExp) == null:\n return 'GSM7ext';\n default:\n return 'UTF16';\n }\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, inject } from '@angular/core';\n\n@Directive({\n selector: '[caucaPhoneNumberDetector]',\n})\nexport class PhoneNumberDetectorDirective implements AfterViewInit {\n\n @Output() public hasPhoneNumberChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private hasPhoneNumber = false;\n private readonly elementRef = inject(ElementRef);\n\n public ngAfterViewInit(): void {\n this.onInput();\n }\n\n @HostListener(':input')\n public onInput() {\n this.checkIfTextHasPhoneNumber(this.elementRef.nativeElement.value);\n }\n\n private checkIfTextHasPhoneNumber(text: string): void {\n const hasPhoneNumber = this.checkForPhoneNumber(text);\n\n if (this.hasPhoneNumber !== hasPhoneNumber) {\n this.hasPhoneNumberChanged.emit(hasPhoneNumber);\n this.hasPhoneNumber = hasPhoneNumber;\n }\n }\n\n private checkForPhoneNumber(text: string): boolean {\n if (!text) {\n return false;\n }\n\n const regex = /\\(?(\\d{3})\\)?[- .]?(\\d{3})[- .]?(\\d{4})/gm;\n\n return regex.test(text);\n }\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Output, inject, OnDestroy } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[caucaUrlDetector]',\n})\nexport class UrlDetectorDirective implements AfterViewInit, OnDestroy {\n\n @Output() public hasUrlChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() public hasLongUrlChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n private hasUrl = false;\n private hasLongUrl = false;\n private readonly elementRef = inject(ElementRef);\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n private valueChangesSub?: Subscription;\n private readonly urlRegex = /((https?:\\/\\/)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*))/gi;\n\n public ngAfterViewInit(): void {\n if (this.ngControl && this.ngControl.control) {\n this.valueChangesSub = this.ngControl.control.valueChanges.subscribe(value => {\n this.checkIfTextHasUrl(value || '');\n });\n this.checkIfTextHasUrl(this.ngControl.value || '');\n } else {\n this.onInput();\n }\n }\n\n public ngOnDestroy(): void {\n this.valueChangesSub?.unsubscribe();\n }\n\n @HostListener('input')\n @HostListener('paste')\n public onInput() {\n if (!this.ngControl) {\n setTimeout(() => {\n this.checkIfTextHasUrl(this.elementRef.nativeElement.value);\n });\n }\n }\n\n private checkIfTextHasUrl(text: string): void {\n const hasUrl = this.checkForUrl(text) || this.checkForScheme(text);\n const hasLongUrl = this.checkForLongUrl(text);\n\n if (this.hasUrl !== hasUrl) {\n this.hasUrl = hasUrl;\n this.hasUrlChanged.emit(hasUrl);\n }\n\n if (this.hasLongUrl !== hasLongUrl) {\n this.hasLongUrl = hasLongUrl;\n this.hasLongUrlChanged.emit(hasLongUrl);\n }\n\n }\n\n private checkForScheme(text: string): boolean {\n if (!text) {\n return false;\n }\n\n const urlScheme = /[a-zA-Z]{3,5}:\\/\\//gim;\n return urlScheme.test(text);\n }\n\n private checkForUrl(text: string): boolean {\n if (!text) {\n return false;\n }\n\n this.urlRegex.lastIndex = 0;\n const url = this.urlRegex;\n return url.test(text);\n }\n\n private checkForLongUrl(text: string): boolean {\n if (!text) {\n return false;\n }\n\n this.urlRegex.lastIndex = 0;\n const fullUrl = this.urlRegex;\n const urls = text.match(fullUrl) || [];\n\n return urls.some((url: string) => url.length > 120);\n }\n}\n","/*\n * Public API Surface of cauca-input-validators\n */\n\nexport { SmsAvoidCharactersDirective } from './lib/shared/directives/sms-avoid-characters.directive';\nexport { SmsSegmentCalculatorDirective } from './lib/shared/directives/sms-segment-calculator.directive';\nexport { PhoneNumberDetectorDirective } from './lib/shared/directives/phone-number-detector.directive';\nexport { UrlDetectorDirective } from './lib/shared/directives/url-detector.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { AfterViewInit, EventEmitter } from '@angular/core';
2
+ import { AfterViewInit, EventEmitter, OnDestroy } from '@angular/core';
3
3
 
4
4
  declare class SmsAvoidCharactersDirective implements AfterViewInit {
5
5
  charsToAvoidChanged: EventEmitter<string[]>;
@@ -46,14 +46,17 @@ declare class PhoneNumberDetectorDirective implements AfterViewInit {
46
46
  static ɵdir: i0.ɵɵDirectiveDeclaration<PhoneNumberDetectorDirective, "[caucaPhoneNumberDetector]", never, {}, { "hasPhoneNumberChanged": "hasPhoneNumberChanged"; }, never, never, true, never>;
47
47
  }
48
48
 
49
- declare class UrlDetectorDirective implements AfterViewInit {
49
+ declare class UrlDetectorDirective implements AfterViewInit, OnDestroy {
50
50
  hasUrlChanged: EventEmitter<boolean>;
51
51
  hasLongUrlChanged: EventEmitter<boolean>;
52
52
  private hasUrl;
53
53
  private hasLongUrl;
54
54
  private readonly elementRef;
55
+ private readonly ngControl;
56
+ private valueChangesSub?;
55
57
  private readonly urlRegex;
56
58
  ngAfterViewInit(): void;
59
+ ngOnDestroy(): void;
57
60
  onInput(): void;
58
61
  private checkIfTextHasUrl;
59
62
  private checkForScheme;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cauca-911/input-validators",
3
- "version": "20.2.3",
3
+ "version": "20.2.5-beta1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.2.1",
6
6
  "@angular/core": ">=20.2.1",