@cauca-911/input-validators 18.0.0 → 20.0.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.
@@ -1,6 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Directive, Output, HostListener, NgModule } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
2
+ import { EventEmitter, inject, ElementRef, Directive, HostListener, Output } from '@angular/core';
4
3
 
5
4
  class Gsm7bitChars {
6
5
  static { this.gsm7bitChars = '@£$¥èéùìòÇ\\nØø\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\\"#¤%&\'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà'; }
@@ -10,10 +9,69 @@ class Gsm7bitChars {
10
9
  static { this.gsm7bitExtOnlyRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitCharsExt + ']*$'); }
11
10
  }
12
11
 
12
+ class SmsAvoidCharactersDirective {
13
+ constructor() {
14
+ this.charsToAvoidChanged = new EventEmitter();
15
+ this.charsToReplaceChanged = new EventEmitter();
16
+ this.charsToAvoid = [];
17
+ this.charsToReplace = [];
18
+ this.elementRef = inject(ElementRef);
19
+ }
20
+ ngAfterViewInit() {
21
+ this.onInput();
22
+ }
23
+ onInput() {
24
+ this.checkCharacterException(this.elementRef.nativeElement.value);
25
+ }
26
+ checkCharacterException(text) {
27
+ const charsList = this.listUTF16Chars(text);
28
+ if (this.compareCharsList(this.charsToAvoid, charsList.charsToAvoid)) {
29
+ this.charsToAvoid = this.removeDuplicates(charsList.charsToAvoid);
30
+ this.charsToAvoidChanged.emit(this.charsToAvoid);
31
+ }
32
+ if (this.compareCharsList(this.charsToReplace, charsList.charsToReplace)) {
33
+ this.charsToReplace = this.removeDuplicates(charsList.charsToReplace);
34
+ this.charsToReplaceChanged.emit(this.charsToReplace);
35
+ }
36
+ }
37
+ listUTF16Chars(text) {
38
+ const charToAvoidOrReplace = text.replace(new RegExp('([' + Gsm7bitChars.gsm7bitChars + ']+)', 'g'), '');
39
+ const charToReplace = charToAvoidOrReplace.replace(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'), '');
40
+ const charToAvoid = charToAvoidOrReplace.match(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'));
41
+ return {
42
+ charsToAvoid: charToAvoid ? charToAvoid[0].split('') : [],
43
+ charsToReplace: charToReplace ? charToReplace.split('') : []
44
+ };
45
+ }
46
+ compareCharsList(list1, list2) {
47
+ return JSON.stringify(list1) !== JSON.stringify(list2);
48
+ }
49
+ removeDuplicates(items) {
50
+ return [...new Set(items)];
51
+ }
52
+ static { this.ɵfac = function SmsAvoidCharactersDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SmsAvoidCharactersDirective)(); }; }
53
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsAvoidCharactersDirective, selectors: [["", "caucaSmsAvoidCharacters", ""]], hostBindings: function SmsAvoidCharactersDirective_HostBindings(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵlistener("input", function SmsAvoidCharactersDirective_input_HostBindingHandler() { return ctx.onInput(); });
55
+ } }, outputs: { charsToAvoidChanged: "charsToAvoidChanged", charsToReplaceChanged: "charsToReplaceChanged" } }); }
56
+ }
57
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmsAvoidCharactersDirective, [{
58
+ type: Directive,
59
+ args: [{
60
+ selector: '[caucaSmsAvoidCharacters]',
61
+ }]
62
+ }], null, { charsToAvoidChanged: [{
63
+ type: Output
64
+ }], charsToReplaceChanged: [{
65
+ type: Output
66
+ }], onInput: [{
67
+ type: HostListener,
68
+ args: [':input']
69
+ }] }); })();
70
+
13
71
  class SmsSegmentCalculatorDirective {
14
- constructor(elementRef) {
15
- this.elementRef = elementRef;
72
+ constructor() {
16
73
  this.segmentCountChanged = new EventEmitter();
74
+ this.elementRef = inject(ElementRef);
17
75
  this.segmentCount = 0;
18
76
  this.messageLength = {
19
77
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -88,7 +146,7 @@ class SmsSegmentCalculatorDirective {
88
146
  return 'UTF16';
89
147
  }
90
148
  }
91
- static { this.ɵfac = function SmsSegmentCalculatorDirective_Factory(t) { return new (t || SmsSegmentCalculatorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
149
+ static { this.ɵfac = function SmsSegmentCalculatorDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SmsSegmentCalculatorDirective)(); }; }
92
150
  static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsSegmentCalculatorDirective, selectors: [["", "caucaSmsSegmentCalculator", ""]], hostBindings: function SmsSegmentCalculatorDirective_HostBindings(rf, ctx) { if (rf & 1) {
93
151
  i0.ɵɵlistener("input", function SmsSegmentCalculatorDirective_input_HostBindingHandler() { return ctx.onInput(); });
94
152
  } }, outputs: { segmentCountChanged: "segmentCountChanged" } }); }
@@ -98,66 +156,7 @@ class SmsSegmentCalculatorDirective {
98
156
  args: [{
99
157
  selector: '[caucaSmsSegmentCalculator]',
100
158
  }]
101
- }], () => [{ type: i0.ElementRef }], { segmentCountChanged: [{
102
- type: Output
103
- }], onInput: [{
104
- type: HostListener,
105
- args: [':input']
106
- }] }); })();
107
-
108
- class SmsAvoidCharactersDirective {
109
- constructor(elementRef) {
110
- this.elementRef = elementRef;
111
- this.charsToAvoidChanged = new EventEmitter();
112
- this.charsToReplaceChanged = new EventEmitter();
113
- this.charsToAvoid = [];
114
- this.charsToReplace = [];
115
- }
116
- ngAfterViewInit() {
117
- this.onInput();
118
- }
119
- onInput() {
120
- this.checkCharacterException(this.elementRef.nativeElement.value);
121
- }
122
- checkCharacterException(text) {
123
- const charsList = this.listUTF16Chars(text);
124
- if (this.compareCharsList(this.charsToAvoid, charsList.charsToAvoid)) {
125
- this.charsToAvoid = this.removeDuplicates(charsList.charsToAvoid);
126
- this.charsToAvoidChanged.emit(this.charsToAvoid);
127
- }
128
- if (this.compareCharsList(this.charsToReplace, charsList.charsToReplace)) {
129
- this.charsToReplace = this.removeDuplicates(charsList.charsToReplace);
130
- this.charsToReplaceChanged.emit(this.charsToReplace);
131
- }
132
- }
133
- listUTF16Chars(text) {
134
- const charToAvoidOrReplace = text.replace(new RegExp('([' + Gsm7bitChars.gsm7bitChars + ']+)', 'g'), '');
135
- const charToReplace = charToAvoidOrReplace.replace(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'), '');
136
- const charToAvoid = charToAvoidOrReplace.match(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'));
137
- return {
138
- charsToAvoid: charToAvoid ? charToAvoid[0].split('') : [],
139
- charsToReplace: charToReplace ? charToReplace.split('') : []
140
- };
141
- }
142
- compareCharsList(list1, list2) {
143
- return JSON.stringify(list1) !== JSON.stringify(list2);
144
- }
145
- removeDuplicates(items) {
146
- return [...new Set(items)];
147
- }
148
- static { this.ɵfac = function SmsAvoidCharactersDirective_Factory(t) { return new (t || SmsAvoidCharactersDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
149
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsAvoidCharactersDirective, selectors: [["", "caucaSmsAvoidCharacters", ""]], hostBindings: function SmsAvoidCharactersDirective_HostBindings(rf, ctx) { if (rf & 1) {
150
- i0.ɵɵlistener("input", function SmsAvoidCharactersDirective_input_HostBindingHandler() { return ctx.onInput(); });
151
- } }, outputs: { charsToAvoidChanged: "charsToAvoidChanged", charsToReplaceChanged: "charsToReplaceChanged" } }); }
152
- }
153
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmsAvoidCharactersDirective, [{
154
- type: Directive,
155
- args: [{
156
- selector: '[caucaSmsAvoidCharacters]'
157
- }]
158
- }], () => [{ type: i0.ElementRef }], { charsToAvoidChanged: [{
159
- type: Output
160
- }], charsToReplaceChanged: [{
159
+ }], null, { segmentCountChanged: [{
161
160
  type: Output
162
161
  }], onInput: [{
163
162
  type: HostListener,
@@ -165,10 +164,10 @@ class SmsAvoidCharactersDirective {
165
164
  }] }); })();
166
165
 
167
166
  class PhoneNumberDetectorDirective {
168
- constructor(elementRef) {
169
- this.elementRef = elementRef;
167
+ constructor() {
170
168
  this.hasPhoneNumberChanged = new EventEmitter();
171
169
  this.hasPhoneNumber = false;
170
+ this.elementRef = inject(ElementRef);
172
171
  }
173
172
  ngAfterViewInit() {
174
173
  this.onInput();
@@ -190,7 +189,7 @@ class PhoneNumberDetectorDirective {
190
189
  const regex = /\(?(\d{3})\)?[- .]?(\d{3})[- .]?(\d{4})/gm;
191
190
  return regex.test(text);
192
191
  }
193
- static { this.ɵfac = function PhoneNumberDetectorDirective_Factory(t) { return new (t || PhoneNumberDetectorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
192
+ static { this.ɵfac = function PhoneNumberDetectorDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PhoneNumberDetectorDirective)(); }; }
194
193
  static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PhoneNumberDetectorDirective, selectors: [["", "caucaPhoneNumberDetector", ""]], hostBindings: function PhoneNumberDetectorDirective_HostBindings(rf, ctx) { if (rf & 1) {
195
194
  i0.ɵɵlistener("input", function PhoneNumberDetectorDirective_input_HostBindingHandler() { return ctx.onInput(); });
196
195
  } }, outputs: { hasPhoneNumberChanged: "hasPhoneNumberChanged" } }); }
@@ -198,9 +197,9 @@ class PhoneNumberDetectorDirective {
198
197
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PhoneNumberDetectorDirective, [{
199
198
  type: Directive,
200
199
  args: [{
201
- selector: '[caucaPhoneNumberDetector]'
200
+ selector: '[caucaPhoneNumberDetector]',
202
201
  }]
203
- }], () => [{ type: i0.ElementRef }], { hasPhoneNumberChanged: [{
202
+ }], null, { hasPhoneNumberChanged: [{
204
203
  type: Output
205
204
  }], onInput: [{
206
205
  type: HostListener,
@@ -208,12 +207,12 @@ class PhoneNumberDetectorDirective {
208
207
  }] }); })();
209
208
 
210
209
  class UrlDetectorDirective {
211
- constructor(elementRef) {
212
- this.elementRef = elementRef;
210
+ constructor() {
213
211
  this.hasUrlChanged = new EventEmitter();
214
212
  this.hasLongUrlChanged = new EventEmitter();
215
213
  this.hasUrl = false;
216
214
  this.hasLongUrl = false;
215
+ this.elementRef = inject(ElementRef);
217
216
  }
218
217
  ngAfterViewInit() {
219
218
  this.onInput();
@@ -248,7 +247,7 @@ class UrlDetectorDirective {
248
247
  const urls = text.match(fullUrl);
249
248
  return urls.some((url) => url.length > 120);
250
249
  }
251
- static { this.ɵfac = function UrlDetectorDirective_Factory(t) { return new (t || UrlDetectorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
250
+ static { this.ɵfac = function UrlDetectorDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UrlDetectorDirective)(); }; }
252
251
  static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: UrlDetectorDirective, selectors: [["", "caucaUrlDetector", ""]], hostBindings: function UrlDetectorDirective_HostBindings(rf, ctx) { if (rf & 1) {
253
252
  i0.ɵɵlistener("input", function UrlDetectorDirective_input_HostBindingHandler() { return ctx.onInput(); });
254
253
  } }, outputs: { hasUrlChanged: "hasUrlChanged", hasLongUrlChanged: "hasLongUrlChanged" } }); }
@@ -256,9 +255,9 @@ class UrlDetectorDirective {
256
255
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UrlDetectorDirective, [{
257
256
  type: Directive,
258
257
  args: [{
259
- selector: '[caucaUrlDetector]'
258
+ selector: '[caucaUrlDetector]',
260
259
  }]
261
- }], () => [{ type: i0.ElementRef }], { hasUrlChanged: [{
260
+ }], null, { hasUrlChanged: [{
262
261
  type: Output
263
262
  }], hasLongUrlChanged: [{
264
263
  type: Output
@@ -267,39 +266,6 @@ class UrlDetectorDirective {
267
266
  args: [':input']
268
267
  }] }); })();
269
268
 
270
- class CaucaInputValidatorsModule {
271
- static { this.ɵfac = function CaucaInputValidatorsModule_Factory(t) { return new (t || CaucaInputValidatorsModule)(); }; }
272
- static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CaucaInputValidatorsModule }); }
273
- static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule] }); }
274
- }
275
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaucaInputValidatorsModule, [{
276
- type: NgModule,
277
- args: [{
278
- declarations: [
279
- SmsSegmentCalculatorDirective,
280
- SmsAvoidCharactersDirective,
281
- PhoneNumberDetectorDirective,
282
- UrlDetectorDirective,
283
- ],
284
- exports: [
285
- SmsSegmentCalculatorDirective,
286
- SmsAvoidCharactersDirective,
287
- PhoneNumberDetectorDirective,
288
- UrlDetectorDirective,
289
- ],
290
- imports: [
291
- CommonModule
292
- ],
293
- }]
294
- }], null, null); })();
295
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(CaucaInputValidatorsModule, { declarations: [SmsSegmentCalculatorDirective,
296
- SmsAvoidCharactersDirective,
297
- PhoneNumberDetectorDirective,
298
- UrlDetectorDirective], imports: [CommonModule], exports: [SmsSegmentCalculatorDirective,
299
- SmsAvoidCharactersDirective,
300
- PhoneNumberDetectorDirective,
301
- UrlDetectorDirective] }); })();
302
-
303
269
  /*
304
270
  * Public API Surface of cauca-input-validators
305
271
  */
@@ -308,5 +274,5 @@ class CaucaInputValidatorsModule {
308
274
  * Generated bundle index. Do not edit.
309
275
  */
310
276
 
311
- export { CaucaInputValidatorsModule, PhoneNumberDetectorDirective, SmsAvoidCharactersDirective, SmsSegmentCalculatorDirective, UrlDetectorDirective };
277
+ export { PhoneNumberDetectorDirective, SmsAvoidCharactersDirective, SmsSegmentCalculatorDirective, UrlDetectorDirective };
312
278
  //# sourceMappingURL=cauca-911-input-validators.mjs.map
@@ -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-segment-calculator.directive.ts","../../../projects/cauca-input-validators/src/lib/shared/directives/sms-avoid-characters.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/lib/cauca-input-validators.module.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 } 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 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 constructor(\n private elementRef: ElementRef\n ) {\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 } 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\n public constructor(\n private elementRef: ElementRef\n ) {\n }\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 } 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\n public constructor(\n private elementRef: ElementRef\n ) { }\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 } 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\n public constructor(\n private elementRef: ElementRef\n ) { }\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);\n\n if (this.hasUrl !== hasUrl) {\n this.hasUrl = hasUrl;\n this.hasUrlChanged.emit(hasUrl);\n\n const hasLongUrl = this.checkForLongUrl(text);\n\n if (this.hasLongUrl !== hasLongUrl) {\n this.hasLongUrl = hasUrl;\n this.hasLongUrlChanged.emit(hasUrl);\n }\n }\n }\n\n private checkForUrl(text: string): boolean {\n if (!text) {\n return false;\n }\n\n const partialUrl = /[a-zA-Z]{3,5}:\\/\\//gim;\n return partialUrl.test(text);\n }\n\n private checkForLongUrl(text: string): boolean {\n if (!text) {\n return false;\n }\n\n const fullUrl = /((?:([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-fA-F0-9]{2}))*)?(?:\\b|$)/gim;\n const urls = text.match(fullUrl);\n\n return urls.some((url: string) => url.length > 120);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SmsSegmentCalculatorDirective } from './shared/directives/sms-segment-calculator.directive';\nimport { SmsAvoidCharactersDirective } from './shared/directives/sms-avoid-characters.directive';\nimport { PhoneNumberDetectorDirective } from './shared/directives/phone-number-detector.directive';\nimport { UrlDetectorDirective } from './shared/directives/url-detector.directive';\n\n@NgModule({\n declarations: [\n SmsSegmentCalculatorDirective,\n SmsAvoidCharactersDirective,\n PhoneNumberDetectorDirective,\n UrlDetectorDirective,\n ],\n exports: [\n SmsSegmentCalculatorDirective,\n SmsAvoidCharactersDirective,\n PhoneNumberDetectorDirective,\n UrlDetectorDirective,\n ],\n imports: [\n CommonModule\n ],\n})\nexport class CaucaInputValidatorsModule { }\n","/*\n * Public API Surface of cauca-input-validators\n */\n\nexport * from './lib/cauca-input-validators.module';\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 } 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\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);\n\n if (this.hasUrl !== hasUrl) {\n this.hasUrl = hasUrl;\n this.hasUrlChanged.emit(hasUrl);\n\n const hasLongUrl = this.checkForLongUrl(text);\n\n if (this.hasLongUrl !== hasLongUrl) {\n this.hasLongUrl = hasUrl;\n this.hasLongUrlChanged.emit(hasUrl);\n }\n }\n }\n\n private checkForUrl(text: string): boolean {\n if (!text) {\n return false;\n }\n\n const partialUrl = /[a-zA-Z]{3,5}:\\/\\//gim;\n return partialUrl.test(text);\n }\n\n private checkForLongUrl(text: string): boolean {\n if (!text) {\n return false;\n }\n\n const fullUrl = /((?:([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-fA-F0-9]{2}))*)?(?:\\b|$)/gim;\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,64 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@cauca-911/input-validators" />
5
- export * from './public-api';
1
+ import * as i0 from '@angular/core';
2
+ import { AfterViewInit, EventEmitter } from '@angular/core';
3
+
4
+ declare class SmsAvoidCharactersDirective implements AfterViewInit {
5
+ charsToAvoidChanged: EventEmitter<string[]>;
6
+ charsToReplaceChanged: EventEmitter<string[]>;
7
+ private charsToAvoid;
8
+ private charsToReplace;
9
+ private readonly elementRef;
10
+ ngAfterViewInit(): void;
11
+ onInput(): void;
12
+ private checkCharacterException;
13
+ private listUTF16Chars;
14
+ private compareCharsList;
15
+ private removeDuplicates;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<SmsAvoidCharactersDirective, never>;
17
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SmsAvoidCharactersDirective, "[caucaSmsAvoidCharacters]", never, {}, { "charsToAvoidChanged": "charsToAvoidChanged"; "charsToReplaceChanged": "charsToReplaceChanged"; }, never, never, true, never>;
18
+ }
19
+
20
+ declare class SmsSegmentCalculatorDirective implements AfterViewInit {
21
+ segmentCountChanged: EventEmitter<number>;
22
+ private readonly elementRef;
23
+ private segmentCount;
24
+ private messageLength;
25
+ private multiMessageLength;
26
+ ngAfterViewInit(): void;
27
+ onInput(): void;
28
+ private checkNumberOfSegment;
29
+ private countNumberOfSegment;
30
+ private countSmsChars;
31
+ private countGsm7bitExt;
32
+ private getCharset;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<SmsSegmentCalculatorDirective, never>;
34
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SmsSegmentCalculatorDirective, "[caucaSmsSegmentCalculator]", never, {}, { "segmentCountChanged": "segmentCountChanged"; }, never, never, true, never>;
35
+ }
36
+
37
+ declare class PhoneNumberDetectorDirective implements AfterViewInit {
38
+ hasPhoneNumberChanged: EventEmitter<boolean>;
39
+ private hasPhoneNumber;
40
+ private readonly elementRef;
41
+ ngAfterViewInit(): void;
42
+ onInput(): void;
43
+ private checkIfTextHasPhoneNumber;
44
+ private checkForPhoneNumber;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<PhoneNumberDetectorDirective, never>;
46
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PhoneNumberDetectorDirective, "[caucaPhoneNumberDetector]", never, {}, { "hasPhoneNumberChanged": "hasPhoneNumberChanged"; }, never, never, true, never>;
47
+ }
48
+
49
+ declare class UrlDetectorDirective implements AfterViewInit {
50
+ hasUrlChanged: EventEmitter<boolean>;
51
+ hasLongUrlChanged: EventEmitter<boolean>;
52
+ private hasUrl;
53
+ private hasLongUrl;
54
+ private readonly elementRef;
55
+ ngAfterViewInit(): void;
56
+ onInput(): void;
57
+ private checkIfTextHasUrl;
58
+ private checkForUrl;
59
+ private checkForLongUrl;
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<UrlDetectorDirective, never>;
61
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UrlDetectorDirective, "[caucaUrlDetector]", never, {}, { "hasUrlChanged": "hasUrlChanged"; "hasLongUrlChanged": "hasLongUrlChanged"; }, never, never, true, never>;
62
+ }
63
+
64
+ export { PhoneNumberDetectorDirective, SmsAvoidCharactersDirective, SmsSegmentCalculatorDirective, UrlDetectorDirective };
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@cauca-911/input-validators",
3
- "version": "18.0.0",
3
+ "version": "20.0.0",
4
4
  "peerDependencies": {
5
- "@angular/common": ">=18.0.0",
6
- "@angular/core": ">=18.0.0",
7
- "@ngx-translate/core": ">=15.0.0",
5
+ "@angular/common": ">=20.1.3",
6
+ "@angular/core": ">=20.1.3",
7
+ "@angular/material": ">=20.1.3",
8
+ "@ngx-translate/core": ">=16.0.0",
8
9
  "rxjs": ">=7.8.0"
9
10
  },
10
11
  "homepage": "https://cauca.ca",
@@ -26,13 +27,11 @@
26
27
  },
27
28
  ".": {
28
29
  "types": "./index.d.ts",
29
- "esm2022": "./esm2022/cauca-911-input-validators.mjs",
30
- "esm": "./esm2022/cauca-911-input-validators.mjs",
31
30
  "default": "./fesm2022/cauca-911-input-validators.mjs"
32
31
  }
33
32
  },
34
33
  "sideEffects": false,
35
34
  "scripts": {
36
- "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled by Ivy in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with Ivy partial compilation mode, before attempting to publish.\\n')\" && exit 1"
35
+ "prepublishOnly": "node --eval \"console.error('ERROR: Trying to publish a package that has been compiled in full compilation mode. This is not allowed.\\nPlease delete and rebuild the package with partial compilation mode, before attempting to publish.\\n')\" && exit 1"
37
36
  }
38
37
  }
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1Y2EtOTExLWlucHV0LXZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1pbnB1dC12YWxpZGF0b3JzL3NyYy9jYXVjYS05MTEtaW5wdXQtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,40 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { SmsSegmentCalculatorDirective } from './shared/directives/sms-segment-calculator.directive';
4
- import { SmsAvoidCharactersDirective } from './shared/directives/sms-avoid-characters.directive';
5
- import { PhoneNumberDetectorDirective } from './shared/directives/phone-number-detector.directive';
6
- import { UrlDetectorDirective } from './shared/directives/url-detector.directive';
7
- import * as i0 from "@angular/core";
8
- export class CaucaInputValidatorsModule {
9
- static { this.ɵfac = function CaucaInputValidatorsModule_Factory(t) { return new (t || CaucaInputValidatorsModule)(); }; }
10
- static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CaucaInputValidatorsModule }); }
11
- static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule] }); }
12
- }
13
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaucaInputValidatorsModule, [{
14
- type: NgModule,
15
- args: [{
16
- declarations: [
17
- SmsSegmentCalculatorDirective,
18
- SmsAvoidCharactersDirective,
19
- PhoneNumberDetectorDirective,
20
- UrlDetectorDirective,
21
- ],
22
- exports: [
23
- SmsSegmentCalculatorDirective,
24
- SmsAvoidCharactersDirective,
25
- PhoneNumberDetectorDirective,
26
- UrlDetectorDirective,
27
- ],
28
- imports: [
29
- CommonModule
30
- ],
31
- }]
32
- }], null, null); })();
33
- (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(CaucaInputValidatorsModule, { declarations: [SmsSegmentCalculatorDirective,
34
- SmsAvoidCharactersDirective,
35
- PhoneNumberDetectorDirective,
36
- UrlDetectorDirective], imports: [CommonModule], exports: [SmsSegmentCalculatorDirective,
37
- SmsAvoidCharactersDirective,
38
- PhoneNumberDetectorDirective,
39
- UrlDetectorDirective] }); })();
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1Y2EtaW5wdXQtdmFsaWRhdG9ycy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1pbnB1dC12YWxpZGF0b3JzL3NyYy9saWIvY2F1Y2EtaW5wdXQtdmFsaWRhdG9ycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDckcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDakcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDbkcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBbUJsRixNQUFNLE9BQU8sMEJBQTBCOzJGQUExQiwwQkFBMEI7bUVBQTFCLDBCQUEwQjt1RUFIbkMsWUFBWTs7aUZBR0gsMEJBQTBCO2NBakJ0QyxRQUFRO2VBQUM7Z0JBQ1IsWUFBWSxFQUFFO29CQUNaLDZCQUE2QjtvQkFDN0IsMkJBQTJCO29CQUMzQiw0QkFBNEI7b0JBQzVCLG9CQUFvQjtpQkFDckI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLDZCQUE2QjtvQkFDN0IsMkJBQTJCO29CQUMzQiw0QkFBNEI7b0JBQzVCLG9CQUFvQjtpQkFDckI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7aUJBQ2I7YUFDRjs7d0ZBQ1ksMEJBQTBCLG1CQWZuQyw2QkFBNkI7UUFDN0IsMkJBQTJCO1FBQzNCLDRCQUE0QjtRQUM1QixvQkFBb0IsYUFTcEIsWUFBWSxhQU5aLDZCQUE2QjtRQUM3QiwyQkFBMkI7UUFDM0IsNEJBQTRCO1FBQzVCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU21zU2VnbWVudENhbGN1bGF0b3JEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL3Ntcy1zZWdtZW50LWNhbGN1bGF0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNtc0F2b2lkQ2hhcmFjdGVyc0RpcmVjdGl2ZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGl2ZXMvc21zLWF2b2lkLWNoYXJhY3RlcnMuZGlyZWN0aXZlJztcbmltcG9ydCB7IFBob25lTnVtYmVyRGV0ZWN0b3JEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL3Bob25lLW51bWJlci1kZXRlY3Rvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVXJsRGV0ZWN0b3JEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL3VybC1kZXRlY3Rvci5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBTbXNTZWdtZW50Q2FsY3VsYXRvckRpcmVjdGl2ZSxcbiAgICBTbXNBdm9pZENoYXJhY3RlcnNEaXJlY3RpdmUsXG4gICAgUGhvbmVOdW1iZXJEZXRlY3RvckRpcmVjdGl2ZSxcbiAgICBVcmxEZXRlY3RvckRpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNtc1NlZ21lbnRDYWxjdWxhdG9yRGlyZWN0aXZlLFxuICAgIFNtc0F2b2lkQ2hhcmFjdGVyc0RpcmVjdGl2ZSxcbiAgICBQaG9uZU51bWJlckRldGVjdG9yRGlyZWN0aXZlLFxuICAgIFVybERldGVjdG9yRGlyZWN0aXZlLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENhdWNhSW5wdXRWYWxpZGF0b3JzTW9kdWxlIHsgfVxuIl19
@@ -1,45 +0,0 @@
1
- import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class PhoneNumberDetectorDirective {
4
- constructor(elementRef) {
5
- this.elementRef = elementRef;
6
- this.hasPhoneNumberChanged = new EventEmitter();
7
- this.hasPhoneNumber = false;
8
- }
9
- ngAfterViewInit() {
10
- this.onInput();
11
- }
12
- onInput() {
13
- this.checkIfTextHasPhoneNumber(this.elementRef.nativeElement.value);
14
- }
15
- checkIfTextHasPhoneNumber(text) {
16
- const hasPhoneNumber = this.checkForPhoneNumber(text);
17
- if (this.hasPhoneNumber !== hasPhoneNumber) {
18
- this.hasPhoneNumberChanged.emit(hasPhoneNumber);
19
- this.hasPhoneNumber = hasPhoneNumber;
20
- }
21
- }
22
- checkForPhoneNumber(text) {
23
- if (!text) {
24
- return false;
25
- }
26
- const regex = /\(?(\d{3})\)?[- .]?(\d{3})[- .]?(\d{4})/gm;
27
- return regex.test(text);
28
- }
29
- static { this.ɵfac = function PhoneNumberDetectorDirective_Factory(t) { return new (t || PhoneNumberDetectorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
30
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PhoneNumberDetectorDirective, selectors: [["", "caucaPhoneNumberDetector", ""]], hostBindings: function PhoneNumberDetectorDirective_HostBindings(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵlistener("input", function PhoneNumberDetectorDirective_input_HostBindingHandler() { return ctx.onInput(); });
32
- } }, outputs: { hasPhoneNumberChanged: "hasPhoneNumberChanged" } }); }
33
- }
34
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PhoneNumberDetectorDirective, [{
35
- type: Directive,
36
- args: [{
37
- selector: '[caucaPhoneNumberDetector]'
38
- }]
39
- }], () => [{ type: i0.ElementRef }], { hasPhoneNumberChanged: [{
40
- type: Output
41
- }], onInput: [{
42
- type: HostListener,
43
- args: [':input']
44
- }] }); })();
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLWRldGVjdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLWlucHV0LXZhbGlkYXRvcnMvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9waG9uZS1udW1iZXItZGV0ZWN0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt6RyxNQUFNLE9BQU8sNEJBQTRCO0lBTXZDLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUxmLDBCQUFxQixHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBRXBGLG1CQUFjLEdBQUcsS0FBSyxDQUFDO0lBSTNCLENBQUM7SUFFRSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBR00sT0FBTztRQUNaLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU8seUJBQXlCLENBQUMsSUFBWTtRQUM1QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEQsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFZO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRywyQ0FBMkMsQ0FBQztRQUUxRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQzs2RkFwQ1UsNEJBQTRCO29FQUE1Qiw0QkFBNEI7WUFBNUIsaUdBQUEsYUFBUyxJQUFtQjs7O2lGQUE1Qiw0QkFBNEI7Y0FIeEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSw0QkFBNEI7YUFDdkM7MkNBR2tCLHFCQUFxQjtrQkFBckMsTUFBTTtZQWFBLE9BQU87a0JBRGIsWUFBWTttQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjYXVjYVBob25lTnVtYmVyRGV0ZWN0b3JdJ1xufSlcbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlckRldGVjdG9yRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBoYXNQaG9uZU51bWJlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIGhhc1Bob25lTnVtYmVyID0gZmFsc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbklucHV0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCc6aW5wdXQnKVxuICBwdWJsaWMgb25JbnB1dCgpIHtcbiAgICB0aGlzLmNoZWNrSWZUZXh0SGFzUGhvbmVOdW1iZXIodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0lmVGV4dEhhc1Bob25lTnVtYmVyKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGhhc1Bob25lTnVtYmVyID0gdGhpcy5jaGVja0ZvclBob25lTnVtYmVyKHRleHQpO1xuXG4gICAgaWYgKHRoaXMuaGFzUGhvbmVOdW1iZXIgIT09IGhhc1Bob25lTnVtYmVyKSB7XG4gICAgICB0aGlzLmhhc1Bob25lTnVtYmVyQ2hhbmdlZC5lbWl0KGhhc1Bob25lTnVtYmVyKTtcbiAgICAgIHRoaXMuaGFzUGhvbmVOdW1iZXIgPSBoYXNQaG9uZU51bWJlcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yUGhvbmVOdW1iZXIodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCByZWdleCA9IC9cXCg/KFxcZHszfSlcXCk/Wy0gLl0/KFxcZHszfSlbLSAuXT8oXFxkezR9KS9nbTtcblxuICAgIHJldHVybiByZWdleC50ZXN0KHRleHQpO1xuICB9XG59XG4iXX0=
@@ -1,62 +0,0 @@
1
- import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
- import { Gsm7bitChars } from '../models/gsm-7bit-chars';
3
- import * as i0 from "@angular/core";
4
- export class SmsAvoidCharactersDirective {
5
- constructor(elementRef) {
6
- this.elementRef = elementRef;
7
- this.charsToAvoidChanged = new EventEmitter();
8
- this.charsToReplaceChanged = new EventEmitter();
9
- this.charsToAvoid = [];
10
- this.charsToReplace = [];
11
- }
12
- ngAfterViewInit() {
13
- this.onInput();
14
- }
15
- onInput() {
16
- this.checkCharacterException(this.elementRef.nativeElement.value);
17
- }
18
- checkCharacterException(text) {
19
- const charsList = this.listUTF16Chars(text);
20
- if (this.compareCharsList(this.charsToAvoid, charsList.charsToAvoid)) {
21
- this.charsToAvoid = this.removeDuplicates(charsList.charsToAvoid);
22
- this.charsToAvoidChanged.emit(this.charsToAvoid);
23
- }
24
- if (this.compareCharsList(this.charsToReplace, charsList.charsToReplace)) {
25
- this.charsToReplace = this.removeDuplicates(charsList.charsToReplace);
26
- this.charsToReplaceChanged.emit(this.charsToReplace);
27
- }
28
- }
29
- listUTF16Chars(text) {
30
- const charToAvoidOrReplace = text.replace(new RegExp('([' + Gsm7bitChars.gsm7bitChars + ']+)', 'g'), '');
31
- const charToReplace = charToAvoidOrReplace.replace(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'), '');
32
- const charToAvoid = charToAvoidOrReplace.match(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'));
33
- return {
34
- charsToAvoid: charToAvoid ? charToAvoid[0].split('') : [],
35
- charsToReplace: charToReplace ? charToReplace.split('') : []
36
- };
37
- }
38
- compareCharsList(list1, list2) {
39
- return JSON.stringify(list1) !== JSON.stringify(list2);
40
- }
41
- removeDuplicates(items) {
42
- return [...new Set(items)];
43
- }
44
- static { this.ɵfac = function SmsAvoidCharactersDirective_Factory(t) { return new (t || SmsAvoidCharactersDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
45
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsAvoidCharactersDirective, selectors: [["", "caucaSmsAvoidCharacters", ""]], hostBindings: function SmsAvoidCharactersDirective_HostBindings(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵlistener("input", function SmsAvoidCharactersDirective_input_HostBindingHandler() { return ctx.onInput(); });
47
- } }, outputs: { charsToAvoidChanged: "charsToAvoidChanged", charsToReplaceChanged: "charsToReplaceChanged" } }); }
48
- }
49
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmsAvoidCharactersDirective, [{
50
- type: Directive,
51
- args: [{
52
- selector: '[caucaSmsAvoidCharacters]'
53
- }]
54
- }], () => [{ type: i0.ElementRef }], { charsToAvoidChanged: [{
55
- type: Output
56
- }], charsToReplaceChanged: [{
57
- type: Output
58
- }], onInput: [{
59
- type: HostListener,
60
- args: [':input']
61
- }] }); })();
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWF2b2lkLWNoYXJhY3RlcnMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtaW5wdXQtdmFsaWRhdG9ycy9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL3Ntcy1hdm9pZC1jaGFyYWN0ZXJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBVXhELE1BQU0sT0FBTywyQkFBMkI7SUFRdEMsWUFDVSxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBUGYsd0JBQW1CLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDM0UsMEJBQXFCLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFFdEYsaUJBQVksR0FBYSxFQUFFLENBQUM7UUFDNUIsbUJBQWMsR0FBYSxFQUFFLENBQUM7SUFLdEMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFHTSxPQUFPO1FBQ1osSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxJQUFZO1FBQzFDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFNUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLElBQVk7UUFDakMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsWUFBWSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RyxNQUFNLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxlQUFlLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JILE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLGVBQWUsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU3RyxPQUFPO1lBQ0wsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6RCxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzdELENBQUM7SUFDSixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBZSxFQUFFLEtBQWU7UUFDdkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWU7UUFDdEMsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDOzRGQXBEVSwyQkFBMkI7b0VBQTNCLDJCQUEyQjtZQUEzQixnR0FBQSxhQUFTLElBQWtCOzs7aUZBQTNCLDJCQUEyQjtjQUh2QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjthQUN0QzsyQ0FHa0IsbUJBQW1CO2tCQUFuQyxNQUFNO1lBQ1UscUJBQXFCO2tCQUFyQyxNQUFNO1lBZUEsT0FBTztrQkFEYixZQUFZO21CQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdzbTdiaXRDaGFycyB9IGZyb20gJy4uL21vZGVscy9nc20tN2JpdC1jaGFycyc7XG5cbmludGVyZmFjZSBDaGFyc0xpc3Qge1xuICBjaGFyc1RvQXZvaWQ6IHN0cmluZ1tdO1xuICBjaGFyc1RvUmVwbGFjZTogc3RyaW5nW107XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjYXVjYVNtc0F2b2lkQ2hhcmFjdGVyc10nXG59KVxuZXhwb3J0IGNsYXNzIFNtc0F2b2lkQ2hhcmFjdGVyc0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhcnNUb0F2b2lkQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZ1tdPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhcnNUb1JlcGxhY2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBwcml2YXRlIGNoYXJzVG9Bdm9pZDogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBjaGFyc1RvUmVwbGFjZTogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uSW5wdXQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJzppbnB1dCcpXG4gIHB1YmxpYyBvbklucHV0KCkge1xuICAgIHRoaXMuY2hlY2tDaGFyYWN0ZXJFeGNlcHRpb24odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NoYXJhY3RlckV4Y2VwdGlvbih0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFyc0xpc3QgPSB0aGlzLmxpc3RVVEYxNkNoYXJzKHRleHQpO1xuXG4gICAgaWYgKHRoaXMuY29tcGFyZUNoYXJzTGlzdCh0aGlzLmNoYXJzVG9Bdm9pZCwgY2hhcnNMaXN0LmNoYXJzVG9Bdm9pZCkpIHtcbiAgICAgIHRoaXMuY2hhcnNUb0F2b2lkID0gdGhpcy5yZW1vdmVEdXBsaWNhdGVzKGNoYXJzTGlzdC5jaGFyc1RvQXZvaWQpO1xuICAgICAgdGhpcy5jaGFyc1RvQXZvaWRDaGFuZ2VkLmVtaXQodGhpcy5jaGFyc1RvQXZvaWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb21wYXJlQ2hhcnNMaXN0KHRoaXMuY2hhcnNUb1JlcGxhY2UsIGNoYXJzTGlzdC5jaGFyc1RvUmVwbGFjZSkpIHtcbiAgICAgIHRoaXMuY2hhcnNUb1JlcGxhY2UgPSB0aGlzLnJlbW92ZUR1cGxpY2F0ZXMoY2hhcnNMaXN0LmNoYXJzVG9SZXBsYWNlKTtcbiAgICAgIHRoaXMuY2hhcnNUb1JlcGxhY2VDaGFuZ2VkLmVtaXQodGhpcy5jaGFyc1RvUmVwbGFjZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0VVRGMTZDaGFycyh0ZXh0OiBzdHJpbmcpOiBDaGFyc0xpc3Qge1xuICAgIGNvbnN0IGNoYXJUb0F2b2lkT3JSZXBsYWNlID0gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoJyhbJyArIEdzbTdiaXRDaGFycy5nc203Yml0Q2hhcnMgKyAnXSspJywgJ2cnKSwgJycpO1xuICAgIGNvbnN0IGNoYXJUb1JlcGxhY2UgPSBjaGFyVG9Bdm9pZE9yUmVwbGFjZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyhbJyArIEdzbTdiaXRDaGFycy5nc203Yml0Q2hhcnNFeHQgKyAnXSspJywgJ2cnKSwgJycpO1xuICAgIGNvbnN0IGNoYXJUb0F2b2lkID0gY2hhclRvQXZvaWRPclJlcGxhY2UubWF0Y2gobmV3IFJlZ0V4cCgnKFsnICsgR3NtN2JpdENoYXJzLmdzbTdiaXRDaGFyc0V4dCArICddKyknLCAnZycpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjaGFyc1RvQXZvaWQ6IGNoYXJUb0F2b2lkID8gY2hhclRvQXZvaWRbMF0uc3BsaXQoJycpIDogW10sXG4gICAgICBjaGFyc1RvUmVwbGFjZTogY2hhclRvUmVwbGFjZSA/IGNoYXJUb1JlcGxhY2Uuc3BsaXQoJycpIDogW11cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wYXJlQ2hhcnNMaXN0KGxpc3QxOiBzdHJpbmdbXSwgbGlzdDI6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGxpc3QxKSAhPT0gSlNPTi5zdHJpbmdpZnkobGlzdDIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEdXBsaWNhdGVzKGl0ZW1zOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoaXRlbXMpXTtcbiAgfVxufVxuIl19
@@ -1,98 +0,0 @@
1
- import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
- import { Gsm7bitChars } from '../models/gsm-7bit-chars';
3
- import * as i0 from "@angular/core";
4
- export class SmsSegmentCalculatorDirective {
5
- constructor(elementRef) {
6
- this.elementRef = elementRef;
7
- this.segmentCountChanged = new EventEmitter();
8
- this.segmentCount = 0;
9
- this.messageLength = {
10
- // eslint-disable-next-line @typescript-eslint/naming-convention
11
- GSM7: 160,
12
- // eslint-disable-next-line @typescript-eslint/naming-convention
13
- GSM7ext: 160,
14
- // eslint-disable-next-line @typescript-eslint/naming-convention
15
- UTF16: 70
16
- };
17
- this.multiMessageLength = {
18
- // eslint-disable-next-line @typescript-eslint/naming-convention
19
- GSM7: 153,
20
- // eslint-disable-next-line @typescript-eslint/naming-convention
21
- GSM7ext: 153,
22
- // eslint-disable-next-line @typescript-eslint/naming-convention
23
- UTF16: 67
24
- };
25
- }
26
- ngAfterViewInit() {
27
- this.onInput();
28
- }
29
- onInput() {
30
- this.checkNumberOfSegment(this.elementRef.nativeElement.value);
31
- }
32
- checkNumberOfSegment(text) {
33
- const segmentCount = this.countNumberOfSegment(text);
34
- if (this.segmentCount !== segmentCount) {
35
- this.segmentCountChanged.emit(segmentCount);
36
- this.segmentCount = segmentCount;
37
- }
38
- }
39
- countNumberOfSegment(text) {
40
- if (!text) {
41
- return 0;
42
- }
43
- const length = this.countSmsChars(text);
44
- const charset = this.getCharset(text);
45
- const perMessage = (length > this.messageLength[charset] ? this.multiMessageLength[charset] : this.messageLength[charset]);
46
- return Math.ceil(length / perMessage);
47
- }
48
- countSmsChars(text) {
49
- let length = text.length;
50
- const charset = this.getCharset(text);
51
- if (charset === 'GSM7ext') {
52
- length += this.countGsm7bitExt(text);
53
- }
54
- return length;
55
- }
56
- countGsm7bitExt(text) {
57
- let char2;
58
- const chars = () => {
59
- let _i;
60
- let _len;
61
- const _results = [];
62
- for (_i = 0, _len = text.length; _i < _len; _i++) {
63
- char2 = text[_i];
64
- if (char2.match(Gsm7bitChars.gsm7bitExtOnlyRegExp) != null) {
65
- _results.push(char2);
66
- }
67
- }
68
- return _results;
69
- };
70
- return chars.length;
71
- }
72
- getCharset(text) {
73
- switch (false) {
74
- case text.match(Gsm7bitChars.gsm7bitRegExp) == null:
75
- return 'GSM7';
76
- case text.match(Gsm7bitChars.gsm7bitExtRegExp) == null:
77
- return 'GSM7ext';
78
- default:
79
- return 'UTF16';
80
- }
81
- }
82
- static { this.ɵfac = function SmsSegmentCalculatorDirective_Factory(t) { return new (t || SmsSegmentCalculatorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
83
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsSegmentCalculatorDirective, selectors: [["", "caucaSmsSegmentCalculator", ""]], hostBindings: function SmsSegmentCalculatorDirective_HostBindings(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵlistener("input", function SmsSegmentCalculatorDirective_input_HostBindingHandler() { return ctx.onInput(); });
85
- } }, outputs: { segmentCountChanged: "segmentCountChanged" } }); }
86
- }
87
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmsSegmentCalculatorDirective, [{
88
- type: Directive,
89
- args: [{
90
- selector: '[caucaSmsSegmentCalculator]',
91
- }]
92
- }], () => [{ type: i0.ElementRef }], { segmentCountChanged: [{
93
- type: Output
94
- }], onInput: [{
95
- type: HostListener,
96
- args: [':input']
97
- }] }); })();
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLXNlZ21lbnQtY2FsY3VsYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1pbnB1dC12YWxpZGF0b3JzL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvc21zLXNlZ21lbnQtY2FsY3VsYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUt4RCxNQUFNLE9BQU8sNkJBQTZCO0lBcUJ4QyxZQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFyQmYsd0JBQW1CLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFaEYsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsa0JBQWEsR0FBRztZQUN0QixnRUFBZ0U7WUFDaEUsSUFBSSxFQUFFLEdBQUc7WUFDVCxnRUFBZ0U7WUFDaEUsT0FBTyxFQUFFLEdBQUc7WUFDWixnRUFBZ0U7WUFDaEUsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO1FBQ00sdUJBQWtCLEdBQUc7WUFDekIsZ0VBQWdFO1lBQ2hFLElBQUksRUFBRSxHQUFHO1lBQ1QsZ0VBQWdFO1lBQ2hFLE9BQU8sRUFBRSxHQUFHO1lBQ1osZ0VBQWdFO1lBQ2hFLEtBQUssRUFBRSxFQUFFO1NBQ1osQ0FBQztJQUtGLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBR00sT0FBTztRQUNaLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sb0JBQW9CLENBQUMsSUFB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O2tCQURiLFlBQVk7bUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3NtN2JpdENoYXJzIH0gZnJvbSAnLi4vbW9kZWxzL2dzbS03Yml0LWNoYXJzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NhdWNhU21zU2VnbWVudENhbGN1bGF0b3JdJyxcbn0pXG5leHBvcnQgY2xhc3MgU21zU2VnbWVudENhbGN1bGF0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWdtZW50Q291bnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgc2VnbWVudENvdW50ID0gMDtcbiAgcHJpdmF0ZSBtZXNzYWdlTGVuZ3RoID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBHU003OiAxNjAsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIEdTTTdleHQ6IDE2MCxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgVVRGMTY6IDcwXG4gIH07XG4gIHByaXZhdGUgbXVsdGlNZXNzYWdlTGVuZ3RoID0ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgR1NNNzogMTUzLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgR1NNN2V4dDogMTUzLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgVVRGMTY6IDY3XG4gIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbklucHV0KCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCc6aW5wdXQnKVxuICBwdWJsaWMgb25JbnB1dCgpIHtcbiAgICB0aGlzLmNoZWNrTnVtYmVyT2ZTZWdtZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tOdW1iZXJPZlNlZ21lbnQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc2VnbWVudENvdW50ID0gdGhpcy5jb3VudE51bWJlck9mU2VnbWVudCh0ZXh0KTtcblxuICAgIGlmICh0aGlzLnNlZ21lbnRDb3VudCAhPT0gc2VnbWVudENvdW50KSB7XG4gICAgICB0aGlzLnNlZ21lbnRDb3VudENoYW5nZWQuZW1pdChzZWdtZW50Q291bnQpO1xuICAgICAgdGhpcy5zZWdtZW50Q291bnQgPSBzZWdtZW50Q291bnQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb3VudE51bWJlck9mU2VnbWVudCh0ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSB0aGlzLmNvdW50U21zQ2hhcnModGV4dCk7XG4gICAgY29uc3QgY2hhcnNldCA9IHRoaXMuZ2V0Q2hhcnNldCh0ZXh0KTtcbiAgICBjb25zdCBwZXJNZXNzYWdlID0gKGxlbmd0aCA+IHRoaXMubWVzc2FnZUxlbmd0aFtjaGFyc2V0XSA/IHRoaXMubXVsdGlNZXNzYWdlTGVuZ3RoW2NoYXJzZXRdIDogdGhpcy5tZXNzYWdlTGVuZ3RoW2NoYXJzZXRdKTtcblxuICAgIHJldHVybiBNYXRoLmNlaWwobGVuZ3RoIC8gcGVyTWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIGNvdW50U21zQ2hhcnModGV4dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgbGVuZ3RoID0gdGV4dC5sZW5ndGg7XG4gICAgY29uc3QgY2hhcnNldCA9IHRoaXMuZ2V0Q2hhcnNldCh0ZXh0KTtcblxuICAgIGlmIChjaGFyc2V0ID09PSAnR1NNN2V4dCcpIHtcbiAgICAgICAgbGVuZ3RoICs9IHRoaXMuY291bnRHc203Yml0RXh0KHRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIGNvdW50R3NtN2JpdEV4dCh0ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBjaGFyMjtcbiAgICBjb25zdCBjaGFycyA9ICgpID0+IHtcbiAgICAgICAgbGV0IF9pOyBsZXQgX2xlbjtcbiAgICAgICAgY29uc3QgX3Jlc3VsdHMgPSBbXTtcblxuICAgICAgICBmb3IgKF9pID0gMCwgX2xlbiA9IHRleHQubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHtcbiAgICAgICAgICAgIGNoYXIyID0gdGV4dFtfaV07XG4gICAgICAgICAgICBpZiAoY2hhcjIubWF0Y2goR3NtN2JpdENoYXJzLmdzbTdiaXRFeHRPbmx5UmVnRXhwKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChjaGFyMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9yZXN1bHRzO1xuICAgIH07XG5cbiAgICByZXR1cm4gY2hhcnMubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGFyc2V0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChmYWxzZSkge1xuICAgICAgICBjYXNlIHRleHQubWF0Y2goR3NtN2JpdENoYXJzLmdzbTdiaXRSZWdFeHApID09IG51bGw6XG4gICAgICAgICAgICByZXR1cm4gJ0dTTTcnO1xuICAgICAgICBjYXNlIHRleHQubWF0Y2goR3NtN2JpdENoYXJzLmdzbTdiaXRFeHRSZWdFeHApID09IG51bGw6XG4gICAgICAgICAgICByZXR1cm4gJ0dTTTdleHQnO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICdVVEYxNic7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,62 +0,0 @@
1
- import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class UrlDetectorDirective {
4
- constructor(elementRef) {
5
- this.elementRef = elementRef;
6
- this.hasUrlChanged = new EventEmitter();
7
- this.hasLongUrlChanged = new EventEmitter();
8
- this.hasUrl = false;
9
- this.hasLongUrl = false;
10
- }
11
- ngAfterViewInit() {
12
- this.onInput();
13
- }
14
- onInput() {
15
- this.checkIfTextHasUrl(this.elementRef.nativeElement.value);
16
- }
17
- checkIfTextHasUrl(text) {
18
- const hasUrl = this.checkForUrl(text);
19
- if (this.hasUrl !== hasUrl) {
20
- this.hasUrl = hasUrl;
21
- this.hasUrlChanged.emit(hasUrl);
22
- const hasLongUrl = this.checkForLongUrl(text);
23
- if (this.hasLongUrl !== hasLongUrl) {
24
- this.hasLongUrl = hasUrl;
25
- this.hasLongUrlChanged.emit(hasUrl);
26
- }
27
- }
28
- }
29
- checkForUrl(text) {
30
- if (!text) {
31
- return false;
32
- }
33
- const partialUrl = /[a-zA-Z]{3,5}:\/\//gim;
34
- return partialUrl.test(text);
35
- }
36
- checkForLongUrl(text) {
37
- if (!text) {
38
- return false;
39
- }
40
- const fullUrl = /((?:([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-fA-F0-9]{2}))*)?(?:\b|$)/gim;
41
- const urls = text.match(fullUrl);
42
- return urls.some((url) => url.length > 120);
43
- }
44
- static { this.ɵfac = function UrlDetectorDirective_Factory(t) { return new (t || UrlDetectorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
45
- static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: UrlDetectorDirective, selectors: [["", "caucaUrlDetector", ""]], hostBindings: function UrlDetectorDirective_HostBindings(rf, ctx) { if (rf & 1) {
46
- i0.ɵɵlistener("input", function UrlDetectorDirective_input_HostBindingHandler() { return ctx.onInput(); });
47
- } }, outputs: { hasUrlChanged: "hasUrlChanged", hasLongUrlChanged: "hasLongUrlChanged" } }); }
48
- }
49
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UrlDetectorDirective, [{
50
- type: Directive,
51
- args: [{
52
- selector: '[caucaUrlDetector]'
53
- }]
54
- }], () => [{ type: i0.ElementRef }], { hasUrlChanged: [{
55
- type: Output
56
- }], hasLongUrlChanged: [{
57
- type: Output
58
- }], onInput: [{
59
- type: HostListener,
60
- args: [':input']
61
- }] }); })();
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWRldGVjdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLWlucHV0LXZhbGlkYXRvcnMvc3JjL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy91cmwtZGV0ZWN0b3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt6RyxNQUFNLE9BQU8sb0JBQW9CO0lBUS9CLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVBmLGtCQUFhLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDbkUsc0JBQWlCLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFaEYsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGVBQVUsR0FBRyxLQUFLLENBQUM7SUFJdkIsQ0FBQztJQUVFLGVBQWU7UUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFHTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFZO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWhDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFOUMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztnQkFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsSUFBWTtRQUM5QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsdUJBQXVCLENBQUM7UUFDM0MsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBWTtRQUNsQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsMlZBQTJWLENBQUM7UUFDNVcsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdEQsQ0FBQztxRkF2RFUsb0JBQW9CO29FQUFwQixvQkFBb0I7WUFBcEIseUZBQUEsYUFBUyxJQUFXOzs7aUZBQXBCLG9CQUFvQjtjQUhoQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjthQUMvQjsyQ0FHa0IsYUFBYTtrQkFBN0IsTUFBTTtZQUNVLGlCQUFpQjtrQkFBakMsTUFBTTtZQWNBLE9BQU87a0JBRGIsWUFBWTttQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjYXVjYVVybERldGVjdG9yXSdcbn0pXG5leHBvcnQgY2xhc3MgVXJsRGV0ZWN0b3JEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBAT3V0cHV0KCkgcHVibGljIGhhc1VybENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBoYXNMb25nVXJsQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgaGFzVXJsID0gZmFsc2U7XG4gIHByaXZhdGUgaGFzTG9uZ1VybCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub25JbnB1dCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignOmlucHV0JylcbiAgcHVibGljIG9uSW5wdXQoKSB7XG4gICAgdGhpcy5jaGVja0lmVGV4dEhhc1VybCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZUZXh0SGFzVXJsKHRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGhhc1VybCA9IHRoaXMuY2hlY2tGb3JVcmwodGV4dCk7XG5cbiAgICBpZiAodGhpcy5oYXNVcmwgIT09IGhhc1VybCkge1xuICAgICAgdGhpcy5oYXNVcmwgPSBoYXNVcmw7XG4gICAgICB0aGlzLmhhc1VybENoYW5nZWQuZW1pdChoYXNVcmwpO1xuXG4gICAgICBjb25zdCBoYXNMb25nVXJsID0gdGhpcy5jaGVja0ZvckxvbmdVcmwodGV4dCk7XG5cbiAgICAgIGlmICh0aGlzLmhhc0xvbmdVcmwgIT09IGhhc0xvbmdVcmwpIHtcbiAgICAgICAgdGhpcy5oYXNMb25nVXJsID0gaGFzVXJsO1xuICAgICAgICB0aGlzLmhhc0xvbmdVcmxDaGFuZ2VkLmVtaXQoaGFzVXJsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yVXJsKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcGFydGlhbFVybCA9IC9bYS16QS1aXXszLDV9OlxcL1xcLy9naW07XG4gICAgcmV0dXJuIHBhcnRpYWxVcmwudGVzdCh0ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JMb25nVXJsKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGV4dCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFVybCA9IC8oKD86KFthLXpBLVpdezMsNX0pOlxcL1xcLyg/Oig/OlthLXpBLVowLTlcXCRcXC1cXF9cXC5cXCtcXCFcXCpcXCdcXChcXClcXCxcXDtcXD9cXCZcXD1dfCg/OlxcJVthLWZBLUYwLTldezJ9KSl7MSw2NH0oPzpcXDooPzpbYS16QS1aMC05XFwkXFwtXFxfXFwuXFwrXFwhXFwqXFwnXFwoXFwpXFwsXFw7XFw/XFwmXFw9XXwoPzpcXCVbYS1mQS1GMC05XXsyfSkpezEsMjV9KT9cXEApPyk/KCg/Oig/OlthLXpBLVowLTldW2EtekEtWjAtOVxcLV17MCw2NH1cXC4pKyg/Oig/OlthLXpBLVowLTlcXC1dKikpKSkpKFxcLyg/Oig/OlthLXpBLVowLTlcXDtcXC9cXD9cXDpcXEBcXCZcXD1cXCNcXH5cXC1cXC5cXCtcXCFcXCpcXCdcXChcXClcXCxcXF9dKXwoPzpcXCVbYS1mQS1GMC05XXsyfSkpKik/KD86XFxifCQpL2dpbTtcbiAgICBjb25zdCB1cmxzID0gdGV4dC5tYXRjaChmdWxsVXJsKTtcblxuICAgIHJldHVybiB1cmxzLnNvbWUoKHVybDogc3RyaW5nKSA9PiB1cmwubGVuZ3RoID4gMTIwKTtcbiAgfVxufVxuIl19
@@ -1,8 +0,0 @@
1
- export class Gsm7bitChars {
2
- static { this.gsm7bitChars = '@£$¥èéùìòÇ\\nØø\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\\"#¤%&\'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà'; }
3
- static { this.gsm7bitCharsExt = '\\^{}\\\\\\[~\\]|€'; }
4
- static { this.gsm7bitRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitChars + ']*$'); }
5
- static { this.gsm7bitExtRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitChars + Gsm7bitChars.gsm7bitCharsExt + ']*$'); }
6
- static { this.gsm7bitExtOnlyRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitCharsExt + ']*$'); }
7
- }
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3NtLTdiaXQtY2hhcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1pbnB1dC12YWxpZGF0b3JzL3NyYy9saWIvc2hhcmVkL21vZGVscy9nc20tN2JpdC1jaGFycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sWUFBWTthQUNQLGlCQUFZLEdBQUcsd0lBQXdJLENBQUM7YUFDeEosb0JBQWUsR0FBRyxvQkFBb0IsQ0FBQzthQUN2QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsQ0FBQzthQUNqRSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQzthQUNuRyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgR3NtN2JpdENoYXJzIHtcbiAgICBwdWJsaWMgc3RhdGljIGdzbTdiaXRDaGFycyA9ICdAwqMkwqXDqMOpw7nDrMOyw4dcXFxcbsOYw7hcXFxccsOFw6XOlF/Ops6TzpvOqc6gzqjOo86Yzp7DhsOmw5/DiSAhXFxcXFwiI8KkJSZcXCcoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj/CoUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaw4TDlsORw5zCp8K/YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXrDpMO2w7HDvMOgJztcbiAgICBwdWJsaWMgc3RhdGljIGdzbTdiaXRDaGFyc0V4dCA9ICdcXFxcXnt9XFxcXFxcXFxcXFxcW35cXFxcXXzigqwnO1xuICAgIHB1YmxpYyBzdGF0aWMgZ3NtN2JpdFJlZ0V4cCA9IFJlZ0V4cCgnXlsnICsgR3NtN2JpdENoYXJzLmdzbTdiaXRDaGFycyArICddKiQnKTtcbiAgICBwdWJsaWMgc3RhdGljIGdzbTdiaXRFeHRSZWdFeHAgPSBSZWdFeHAoJ15bJyArIEdzbTdiaXRDaGFycy5nc203Yml0Q2hhcnMgKyBHc203Yml0Q2hhcnMuZ3NtN2JpdENoYXJzRXh0ICsgJ10qJCcpO1xuICAgIHB1YmxpYyBzdGF0aWMgZ3NtN2JpdEV4dE9ubHlSZWdFeHAgPSBSZWdFeHAoJ15bJyArIEdzbTdiaXRDaGFycy5nc203Yml0Q2hhcnNFeHQgKyAnXSokJyk7XG59Il19
@@ -1,9 +0,0 @@
1
- /*
2
- * Public API Surface of cauca-input-validators
3
- */
4
- export * from './lib/cauca-input-validators.module';
5
- export { SmsAvoidCharactersDirective } from './lib/shared/directives/sms-avoid-characters.directive';
6
- export { SmsSegmentCalculatorDirective } from './lib/shared/directives/sms-segment-calculator.directive';
7
- export { PhoneNumberDetectorDirective } from './lib/shared/directives/phone-number-detector.directive';
8
- export { UrlDetectorDirective } from './lib/shared/directives/url-detector.directive';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLWlucHV0LXZhbGlkYXRvcnMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHFDQUFxQyxDQUFDO0FBRXBELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjYXVjYS1pbnB1dC12YWxpZGF0b3JzXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F1Y2EtaW5wdXQtdmFsaWRhdG9ycy5tb2R1bGUnO1xuXG5leHBvcnQgeyBTbXNBdm9pZENoYXJhY3RlcnNEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9zbXMtYXZvaWQtY2hhcmFjdGVycy5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgU21zU2VnbWVudENhbGN1bGF0b3JEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9zbXMtc2VnbWVudC1jYWxjdWxhdG9yLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBQaG9uZU51bWJlckRldGVjdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvcGhvbmUtbnVtYmVyLWRldGVjdG9yLmRpcmVjdGl2ZSc7XG5leHBvcnQgeyBVcmxEZXRlY3RvckRpcmVjdGl2ZSB9IGZyb20gJy4vbGliL3NoYXJlZC9kaXJlY3RpdmVzL3VybC1kZXRlY3Rvci5kaXJlY3RpdmUnOyJdfQ==
@@ -1,11 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./shared/directives/sms-segment-calculator.directive";
3
- import * as i2 from "./shared/directives/sms-avoid-characters.directive";
4
- import * as i3 from "./shared/directives/phone-number-detector.directive";
5
- import * as i4 from "./shared/directives/url-detector.directive";
6
- import * as i5 from "@angular/common";
7
- export declare class CaucaInputValidatorsModule {
8
- static ɵfac: i0.ɵɵFactoryDeclaration<CaucaInputValidatorsModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<CaucaInputValidatorsModule, [typeof i1.SmsSegmentCalculatorDirective, typeof i2.SmsAvoidCharactersDirective, typeof i3.PhoneNumberDetectorDirective, typeof i4.UrlDetectorDirective], [typeof i5.CommonModule], [typeof i1.SmsSegmentCalculatorDirective, typeof i2.SmsAvoidCharactersDirective, typeof i3.PhoneNumberDetectorDirective, typeof i4.UrlDetectorDirective]>;
10
- static ɵinj: i0.ɵɵInjectorDeclaration<CaucaInputValidatorsModule>;
11
- }
@@ -1,14 +0,0 @@
1
- import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class PhoneNumberDetectorDirective implements AfterViewInit {
4
- private elementRef;
5
- hasPhoneNumberChanged: EventEmitter<boolean>;
6
- private hasPhoneNumber;
7
- constructor(elementRef: ElementRef);
8
- ngAfterViewInit(): void;
9
- onInput(): void;
10
- private checkIfTextHasPhoneNumber;
11
- private checkForPhoneNumber;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<PhoneNumberDetectorDirective, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<PhoneNumberDetectorDirective, "[caucaPhoneNumberDetector]", never, {}, { "hasPhoneNumberChanged": "hasPhoneNumberChanged"; }, never, never, false, never>;
14
- }
@@ -1,18 +0,0 @@
1
- import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class SmsAvoidCharactersDirective implements AfterViewInit {
4
- private elementRef;
5
- charsToAvoidChanged: EventEmitter<string[]>;
6
- charsToReplaceChanged: EventEmitter<string[]>;
7
- private charsToAvoid;
8
- private charsToReplace;
9
- constructor(elementRef: ElementRef);
10
- ngAfterViewInit(): void;
11
- onInput(): void;
12
- private checkCharacterException;
13
- private listUTF16Chars;
14
- private compareCharsList;
15
- private removeDuplicates;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<SmsAvoidCharactersDirective, never>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<SmsAvoidCharactersDirective, "[caucaSmsAvoidCharacters]", never, {}, { "charsToAvoidChanged": "charsToAvoidChanged"; "charsToReplaceChanged": "charsToReplaceChanged"; }, never, never, false, never>;
18
- }
@@ -1,19 +0,0 @@
1
- import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class SmsSegmentCalculatorDirective implements AfterViewInit {
4
- private elementRef;
5
- segmentCountChanged: EventEmitter<number>;
6
- private segmentCount;
7
- private messageLength;
8
- private multiMessageLength;
9
- constructor(elementRef: ElementRef);
10
- ngAfterViewInit(): void;
11
- onInput(): void;
12
- private checkNumberOfSegment;
13
- private countNumberOfSegment;
14
- private countSmsChars;
15
- private countGsm7bitExt;
16
- private getCharset;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<SmsSegmentCalculatorDirective, never>;
18
- static ɵdir: i0.ɵɵDirectiveDeclaration<SmsSegmentCalculatorDirective, "[caucaSmsSegmentCalculator]", never, {}, { "segmentCountChanged": "segmentCountChanged"; }, never, never, false, never>;
19
- }
@@ -1,17 +0,0 @@
1
- import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class UrlDetectorDirective implements AfterViewInit {
4
- private elementRef;
5
- hasUrlChanged: EventEmitter<boolean>;
6
- hasLongUrlChanged: EventEmitter<boolean>;
7
- private hasUrl;
8
- private hasLongUrl;
9
- constructor(elementRef: ElementRef);
10
- ngAfterViewInit(): void;
11
- onInput(): void;
12
- private checkIfTextHasUrl;
13
- private checkForUrl;
14
- private checkForLongUrl;
15
- static ɵfac: i0.ɵɵFactoryDeclaration<UrlDetectorDirective, never>;
16
- static ɵdir: i0.ɵɵDirectiveDeclaration<UrlDetectorDirective, "[caucaUrlDetector]", never, {}, { "hasUrlChanged": "hasUrlChanged"; "hasLongUrlChanged": "hasLongUrlChanged"; }, never, never, false, never>;
17
- }
@@ -1,7 +0,0 @@
1
- export declare class Gsm7bitChars {
2
- static gsm7bitChars: string;
3
- static gsm7bitCharsExt: string;
4
- static gsm7bitRegExp: RegExp;
5
- static gsm7bitExtRegExp: RegExp;
6
- static gsm7bitExtOnlyRegExp: RegExp;
7
- }
package/public-api.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export * from './lib/cauca-input-validators.module';
2
- export { SmsAvoidCharactersDirective } from './lib/shared/directives/sms-avoid-characters.directive';
3
- export { SmsSegmentCalculatorDirective } from './lib/shared/directives/sms-segment-calculator.directive';
4
- export { PhoneNumberDetectorDirective } from './lib/shared/directives/phone-number-detector.directive';
5
- export { UrlDetectorDirective } from './lib/shared/directives/url-detector.directive';