@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.
- package/fesm2022/cauca-911-input-validators.mjs +75 -109
- package/fesm2022/cauca-911-input-validators.mjs.map +1 -1
- package/index.d.ts +64 -5
- package/package.json +6 -7
- package/esm2022/cauca-911-input-validators.mjs +0 -5
- package/esm2022/lib/cauca-input-validators.module.mjs +0 -40
- package/esm2022/lib/shared/directives/phone-number-detector.directive.mjs +0 -45
- package/esm2022/lib/shared/directives/sms-avoid-characters.directive.mjs +0 -62
- package/esm2022/lib/shared/directives/sms-segment-calculator.directive.mjs +0 -98
- package/esm2022/lib/shared/directives/url-detector.directive.mjs +0 -62
- package/esm2022/lib/shared/models/gsm-7bit-chars.mjs +0 -8
- package/esm2022/public-api.mjs +0 -9
- package/lib/cauca-input-validators.module.d.ts +0 -11
- package/lib/shared/directives/phone-number-detector.directive.d.ts +0 -14
- package/lib/shared/directives/sms-avoid-characters.directive.d.ts +0 -18
- package/lib/shared/directives/sms-segment-calculator.directive.d.ts +0 -19
- package/lib/shared/directives/url-detector.directive.d.ts +0 -17
- package/lib/shared/models/gsm-7bit-chars.d.ts +0 -7
- package/public-api.d.ts +0 -5
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter,
|
|
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(
|
|
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(
|
|
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
|
-
}],
|
|
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(
|
|
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(
|
|
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
|
-
}],
|
|
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(
|
|
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(
|
|
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
|
-
}],
|
|
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 {
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": ">=
|
|
6
|
-
"@angular/core": ">=
|
|
7
|
-
"@
|
|
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
|
|
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
|
package/esm2022/public-api.mjs
DELETED
|
@@ -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
|
-
}
|
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';
|