@cauca-911/input-validators 16.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/LICENSE +21 -0
- package/README.md +19 -0
- package/assets/i18n/cauca/en-input-validators.json +5 -0
- package/assets/i18n/cauca/es-input-validators.json +5 -0
- package/assets/i18n/cauca/fr-input-validators.json +5 -0
- package/esm2022/cauca-911-input-validators.mjs +5 -0
- package/esm2022/lib/cauca-input-validators.module.mjs +30 -0
- package/esm2022/lib/shared/directives/sms-avoid-characters.directive.mjs +56 -0
- package/esm2022/lib/shared/directives/sms-segment-calculator.directive.mjs +95 -0
- package/esm2022/lib/shared/models/gsm-7bit-chars.mjs +8 -0
- package/esm2022/public-api.mjs +7 -0
- package/fesm2022/cauca-911-input-validators.mjs +192 -0
- package/fesm2022/cauca-911-input-validators.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/cauca-input-validators.module.d.ts +9 -0
- package/lib/shared/directives/sms-avoid-characters.directive.d.ts +16 -0
- package/lib/shared/directives/sms-segment-calculator.directive.d.ts +18 -0
- package/lib/shared/models/gsm-7bit-chars.d.ts +7 -0
- package/package.json +38 -0
- package/public-api.d.ts +3 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018 CAUCA 9-1-1 inc
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# @cauca-911/core
|
|
2
|
+
|
|
3
|
+
Run `npm install @cauca-911/input-validators` to add this library to your project
|
|
4
|
+
|
|
5
|
+
## To use this library, you need to import the module with specific configuration
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
@NgModule({
|
|
10
|
+
imports: [
|
|
11
|
+
CaucaInputValidatorsModule,
|
|
12
|
+
]
|
|
13
|
+
});
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Directive to validate
|
|
17
|
+
- CaucaSmsSegmentCalculator
|
|
18
|
+
- CaucaAvoidCharacters
|
|
19
|
+
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1Y2EtOTExLWlucHV0LXZhbGlkYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1pbnB1dC12YWxpZGF0b3JzL3NyYy9jYXVjYS05MTEtaW5wdXQtdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
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 * as i0 from "@angular/core";
|
|
6
|
+
export class CaucaInputValidatorsModule {
|
|
7
|
+
static { this.ɵfac = function CaucaInputValidatorsModule_Factory(t) { return new (t || CaucaInputValidatorsModule)(); }; }
|
|
8
|
+
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CaucaInputValidatorsModule }); }
|
|
9
|
+
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule] }); }
|
|
10
|
+
}
|
|
11
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaucaInputValidatorsModule, [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [
|
|
15
|
+
SmsSegmentCalculatorDirective,
|
|
16
|
+
SmsAvoidCharactersDirective,
|
|
17
|
+
],
|
|
18
|
+
exports: [
|
|
19
|
+
SmsSegmentCalculatorDirective,
|
|
20
|
+
SmsAvoidCharactersDirective,
|
|
21
|
+
],
|
|
22
|
+
imports: [
|
|
23
|
+
CommonModule
|
|
24
|
+
],
|
|
25
|
+
}]
|
|
26
|
+
}], null, null); })();
|
|
27
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(CaucaInputValidatorsModule, { declarations: [SmsSegmentCalculatorDirective,
|
|
28
|
+
SmsAvoidCharactersDirective], imports: [CommonModule], exports: [SmsSegmentCalculatorDirective,
|
|
29
|
+
SmsAvoidCharactersDirective] }); })();
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1Y2EtaW5wdXQtdmFsaWRhdG9ycy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1pbnB1dC12YWxpZGF0b3JzL3NyYy9saWIvY2F1Y2EtaW5wdXQtdmFsaWRhdG9ycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDckcsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBZWpHLE1BQU0sT0FBTywwQkFBMEI7MkZBQTFCLDBCQUEwQjttRUFBMUIsMEJBQTBCO3VFQUhuQyxZQUFZOzt1RkFHSCwwQkFBMEI7Y0FidEMsUUFBUTtlQUFDO2dCQUNSLFlBQVksRUFBRTtvQkFDWiw2QkFBNkI7b0JBQzdCLDJCQUEyQjtpQkFDNUI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLDZCQUE2QjtvQkFDN0IsMkJBQTJCO2lCQUM1QjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtpQkFDYjthQUNGOzt3RkFDWSwwQkFBMEIsbUJBWG5DLDZCQUE2QjtRQUM3QiwyQkFBMkIsYUFPM0IsWUFBWSxhQUpaLDZCQUE2QjtRQUM3QiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNtc1NlZ21lbnRDYWxjdWxhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aXZlcy9zbXMtc2VnbWVudC1jYWxjdWxhdG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTbXNBdm9pZENoYXJhY3RlcnNEaXJlY3RpdmUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3RpdmVzL3Ntcy1hdm9pZC1jaGFyYWN0ZXJzLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFNtc1NlZ21lbnRDYWxjdWxhdG9yRGlyZWN0aXZlLFxuICAgIFNtc0F2b2lkQ2hhcmFjdGVyc0RpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFNtc1NlZ21lbnRDYWxjdWxhdG9yRGlyZWN0aXZlLFxuICAgIFNtc0F2b2lkQ2hhcmFjdGVyc0RpcmVjdGl2ZSxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYXVjYUlucHV0VmFsaWRhdG9yc01vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
onInput() {
|
|
13
|
+
this.checkCharacterException(this.elementRef.nativeElement.value);
|
|
14
|
+
}
|
|
15
|
+
checkCharacterException(text) {
|
|
16
|
+
const charsList = this.listUTF16Chars(text);
|
|
17
|
+
if (this.compareCharsList(this.charsToAvoid, charsList.charsToAvoid)) {
|
|
18
|
+
this.charsToAvoidChanged.emit(charsList.charsToAvoid);
|
|
19
|
+
this.charsToAvoid = charsList.charsToAvoid;
|
|
20
|
+
}
|
|
21
|
+
if (this.compareCharsList(this.charsToReplace, charsList.charsToReplace)) {
|
|
22
|
+
this.charsToReplaceChanged.emit(charsList.charsToReplace);
|
|
23
|
+
this.charsToReplace = charsList.charsToReplace;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
listUTF16Chars(text) {
|
|
27
|
+
const charToAvoidOrReplace = text.replace(new RegExp('([' + Gsm7bitChars.gsm7bitChars + ']+)', 'g'), '');
|
|
28
|
+
const charToReplace = charToAvoidOrReplace.replace(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'), '');
|
|
29
|
+
const charToAvoid = charToAvoidOrReplace.match(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'));
|
|
30
|
+
return {
|
|
31
|
+
charsToAvoid: charToAvoid || [],
|
|
32
|
+
charsToReplace: charToReplace ? charToReplace.split('') : []
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
compareCharsList(list1, list2) {
|
|
36
|
+
return JSON.stringify(list1) !== JSON.stringify(list2);
|
|
37
|
+
}
|
|
38
|
+
static { this.ɵfac = function SmsAvoidCharactersDirective_Factory(t) { return new (t || SmsAvoidCharactersDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
|
|
39
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsAvoidCharactersDirective, selectors: [["", "caucaSmsAvoidCharacters", ""]], hostBindings: function SmsAvoidCharactersDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
40
|
+
i0.ɵɵlistener("input", function SmsAvoidCharactersDirective_input_HostBindingHandler() { return ctx.onInput(); });
|
|
41
|
+
} }, outputs: { charsToAvoidChanged: "charsToAvoidChanged", charsToReplaceChanged: "charsToReplaceChanged" } }); }
|
|
42
|
+
}
|
|
43
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmsAvoidCharactersDirective, [{
|
|
44
|
+
type: Directive,
|
|
45
|
+
args: [{
|
|
46
|
+
selector: '[caucaSmsAvoidCharacters]'
|
|
47
|
+
}]
|
|
48
|
+
}], function () { return [{ type: i0.ElementRef }]; }, { charsToAvoidChanged: [{
|
|
49
|
+
type: Output
|
|
50
|
+
}], charsToReplaceChanged: [{
|
|
51
|
+
type: Output
|
|
52
|
+
}], onInput: [{
|
|
53
|
+
type: HostListener,
|
|
54
|
+
args: [':input']
|
|
55
|
+
}] }); })();
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWF2b2lkLWNoYXJhY3RlcnMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtaW5wdXQtdmFsaWRhdG9ycy9zcmMvbGliL3NoYXJlZC9kaXJlY3RpdmVzL3Ntcy1hdm9pZC1jaGFyYWN0ZXJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFVeEQsTUFBTSxPQUFPLDJCQUEyQjtJQVF0QyxZQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFQZix3QkFBbUIsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUMzRSwwQkFBcUIsR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUV0RixpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQUM1QixtQkFBYyxHQUFhLEVBQUUsQ0FBQztJQUlsQyxDQUFDO0lBR0UsT0FBTztRQUNaLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU8sdUJBQXVCLENBQUMsSUFBWTtRQUMxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3BFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFlBQVksQ0FBQztTQUM1QztRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLGNBQWMsQ0FBQztTQUNoRDtJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsSUFBWTtRQUNqQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxZQUFZLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLGVBQWUsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckgsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTdHLE9BQU87WUFDTCxZQUFZLEVBQUUsV0FBVyxJQUFJLEVBQUU7WUFDL0IsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUM3RCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWUsRUFBRSxLQUFlO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7NEZBM0NVLDJCQUEyQjtvRUFBM0IsMkJBQTJCOzRHQUEzQixhQUFTOzs7dUZBQVQsMkJBQTJCO2NBSHZDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2FBQ3RDOzZEQUdrQixtQkFBbUI7a0JBQW5DLE1BQU07WUFDVSxxQkFBcUI7a0JBQXJDLE1BQU07WUFVQSxPQUFPO2tCQURiLFlBQVk7bUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3NtN2JpdENoYXJzIH0gZnJvbSAnLi4vbW9kZWxzL2dzbS03Yml0LWNoYXJzJztcblxuaW50ZXJmYWNlIENoYXJzTGlzdCB7XG4gIGNoYXJzVG9Bdm9pZDogc3RyaW5nW107XG4gIGNoYXJzVG9SZXBsYWNlOiBzdHJpbmdbXTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2NhdWNhU21zQXZvaWRDaGFyYWN0ZXJzXSdcbn0pXG5leHBvcnQgY2xhc3MgU21zQXZvaWRDaGFyYWN0ZXJzRGlyZWN0aXZlIHtcblxuICBAT3V0cHV0KCkgcHVibGljIGNoYXJzVG9Bdm9pZENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYXJzVG9SZXBsYWNlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPHN0cmluZ1tdPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgcHJpdmF0ZSBjaGFyc1RvQXZvaWQ6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgY2hhcnNUb1JlcGxhY2U6IHN0cmluZ1tdID0gW107XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJzppbnB1dCcpXG4gIHB1YmxpYyBvbklucHV0KCkge1xuICAgIHRoaXMuY2hlY2tDaGFyYWN0ZXJFeGNlcHRpb24odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0NoYXJhY3RlckV4Y2VwdGlvbih0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFyc0xpc3QgPSB0aGlzLmxpc3RVVEYxNkNoYXJzKHRleHQpO1xuXG4gICAgaWYgKHRoaXMuY29tcGFyZUNoYXJzTGlzdCh0aGlzLmNoYXJzVG9Bdm9pZCwgY2hhcnNMaXN0LmNoYXJzVG9Bdm9pZCkpIHtcbiAgICAgIHRoaXMuY2hhcnNUb0F2b2lkQ2hhbmdlZC5lbWl0KGNoYXJzTGlzdC5jaGFyc1RvQXZvaWQpO1xuICAgICAgdGhpcy5jaGFyc1RvQXZvaWQgPSBjaGFyc0xpc3QuY2hhcnNUb0F2b2lkO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb21wYXJlQ2hhcnNMaXN0KHRoaXMuY2hhcnNUb1JlcGxhY2UsIGNoYXJzTGlzdC5jaGFyc1RvUmVwbGFjZSkpIHtcbiAgICAgIHRoaXMuY2hhcnNUb1JlcGxhY2VDaGFuZ2VkLmVtaXQoY2hhcnNMaXN0LmNoYXJzVG9SZXBsYWNlKTtcbiAgICAgIHRoaXMuY2hhcnNUb1JlcGxhY2UgPSBjaGFyc0xpc3QuY2hhcnNUb1JlcGxhY2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0VVRGMTZDaGFycyh0ZXh0OiBzdHJpbmcpOiBDaGFyc0xpc3Qge1xuICAgIGNvbnN0IGNoYXJUb0F2b2lkT3JSZXBsYWNlID0gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoJyhbJyArIEdzbTdiaXRDaGFycy5nc203Yml0Q2hhcnMgKyAnXSspJywgJ2cnKSwgJycpO1xuICAgIGNvbnN0IGNoYXJUb1JlcGxhY2UgPSBjaGFyVG9Bdm9pZE9yUmVwbGFjZS5yZXBsYWNlKG5ldyBSZWdFeHAoJyhbJyArIEdzbTdiaXRDaGFycy5nc203Yml0Q2hhcnNFeHQgKyAnXSspJywgJ2cnKSwgJycpO1xuICAgIGNvbnN0IGNoYXJUb0F2b2lkID0gY2hhclRvQXZvaWRPclJlcGxhY2UubWF0Y2gobmV3IFJlZ0V4cCgnKFsnICsgR3NtN2JpdENoYXJzLmdzbTdiaXRDaGFyc0V4dCArICddKyknLCAnZycpKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjaGFyc1RvQXZvaWQ6IGNoYXJUb0F2b2lkIHx8IFtdLFxuICAgICAgY2hhcnNUb1JlcGxhY2U6IGNoYXJUb1JlcGxhY2UgPyBjaGFyVG9SZXBsYWNlLnNwbGl0KCcnKSA6IFtdXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZUNoYXJzTGlzdChsaXN0MTogc3RyaW5nW10sIGxpc3QyOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShsaXN0MSkgIT09IEpTT04uc3RyaW5naWZ5KGxpc3QyKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,95 @@
|
|
|
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
|
+
onInput() {
|
|
27
|
+
this.checkNumberOfSegment(this.elementRef.nativeElement.value);
|
|
28
|
+
}
|
|
29
|
+
checkNumberOfSegment(text) {
|
|
30
|
+
const segmentCount = this.countNumberOfSegment(text);
|
|
31
|
+
if (this.segmentCount !== segmentCount) {
|
|
32
|
+
this.segmentCountChanged.emit(segmentCount);
|
|
33
|
+
this.segmentCount = segmentCount;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
countNumberOfSegment(text) {
|
|
37
|
+
if (!text) {
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
const length = this.countSmsChars(text);
|
|
41
|
+
const charset = this.getCharset(text);
|
|
42
|
+
const perMessage = (length > this.messageLength[charset] ? this.multiMessageLength[charset] : this.messageLength[charset]);
|
|
43
|
+
return Math.ceil(length / perMessage);
|
|
44
|
+
}
|
|
45
|
+
countSmsChars(text) {
|
|
46
|
+
let length = text.length;
|
|
47
|
+
const charset = this.getCharset(text);
|
|
48
|
+
if (charset === 'GSM7ext') {
|
|
49
|
+
length += this.countGsm7bitExt(text);
|
|
50
|
+
}
|
|
51
|
+
return length;
|
|
52
|
+
}
|
|
53
|
+
countGsm7bitExt(text) {
|
|
54
|
+
let char2;
|
|
55
|
+
const chars = () => {
|
|
56
|
+
let _i;
|
|
57
|
+
let _len;
|
|
58
|
+
const _results = [];
|
|
59
|
+
for (_i = 0, _len = text.length; _i < _len; _i++) {
|
|
60
|
+
char2 = text[_i];
|
|
61
|
+
if (char2.match(Gsm7bitChars.gsm7bitExtOnlyRegExp) != null) {
|
|
62
|
+
_results.push(char2);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return _results;
|
|
66
|
+
};
|
|
67
|
+
return chars.length;
|
|
68
|
+
}
|
|
69
|
+
getCharset(text) {
|
|
70
|
+
switch (false) {
|
|
71
|
+
case text.match(Gsm7bitChars.gsm7bitRegExp) == null:
|
|
72
|
+
return 'GSM7';
|
|
73
|
+
case text.match(Gsm7bitChars.gsm7bitExtRegExp) == null:
|
|
74
|
+
return 'GSM7ext';
|
|
75
|
+
default:
|
|
76
|
+
return 'UTF16';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static { this.ɵfac = function SmsSegmentCalculatorDirective_Factory(t) { return new (t || SmsSegmentCalculatorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
|
|
80
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsSegmentCalculatorDirective, selectors: [["", "caucaSmsSegmentCalculator", ""]], hostBindings: function SmsSegmentCalculatorDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
81
|
+
i0.ɵɵlistener("input", function SmsSegmentCalculatorDirective_input_HostBindingHandler() { return ctx.onInput(); });
|
|
82
|
+
} }, outputs: { segmentCountChanged: "segmentCountChanged" } }); }
|
|
83
|
+
}
|
|
84
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmsSegmentCalculatorDirective, [{
|
|
85
|
+
type: Directive,
|
|
86
|
+
args: [{
|
|
87
|
+
selector: '[caucaSmsSegmentCalculator]',
|
|
88
|
+
}]
|
|
89
|
+
}], function () { return [{ type: i0.ElementRef }]; }, { segmentCountChanged: [{
|
|
90
|
+
type: Output
|
|
91
|
+
}], onInput: [{
|
|
92
|
+
type: HostListener,
|
|
93
|
+
args: [':input']
|
|
94
|
+
}] }); })();
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLXNlZ21lbnQtY2FsY3VsYXRvci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1pbnB1dC12YWxpZGF0b3JzL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvc21zLXNlZ21lbnQtY2FsY3VsYXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBS3hELE1BQU0sT0FBTyw2QkFBNkI7SUFxQnhDLFlBQ1UsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXJCZix3QkFBbUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVoRixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixrQkFBYSxHQUFHO1lBQ3RCLGdFQUFnRTtZQUNoRSxJQUFJLEVBQUUsR0FBRztZQUNULGdFQUFnRTtZQUNoRSxPQUFPLEVBQUUsR0FBRztZQUNaLGdFQUFnRTtZQUNoRSxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUM7UUFDTSx1QkFBa0IsR0FBRztZQUN6QixnRUFBZ0U7WUFDaEUsSUFBSSxFQUFFLEdBQUc7WUFDVCxnRUFBZ0U7WUFDaEUsT0FBTyxFQUFFLEdBQUc7WUFDWixnRUFBZ0U7WUFDaEUsS0FBSyxFQUFFLEVBQUU7U0FDWixDQUFDO0lBSUUsQ0FBQztJQUdFLE9BQU87UUFDWixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVk7UUFDdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxZQUFZLEVBQUU7WUFDdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxJQUFZO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxPQUFPLENBQUMsQ0FBQztTQUNaO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxJQUFZO1FBQ2hDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVk7UUFDbEMsSUFBSSxLQUFLLENBQUM7UUFDVixNQUFNLEtBQUssR0FBRyxHQUFHLEVBQUU7WUFDZixJQUFJLEVBQUUsQ0FBQztZQUFDLElBQUksSUFBSSxDQUFDO1lBQ2pCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUVwQixLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRTtnQkFDOUMsS0FBSyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRTtvQkFDeEQsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDeEI7YUFDSjtZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztRQUVGLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN0QixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVk7UUFDN0IsUUFBUSxLQUFLLEVBQUU7WUFDWCxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUk7Z0JBQy9DLE9BQU8sTUFBTSxDQUFDO1lBQ2xCLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJO2dCQUNsRCxPQUFPLFNBQVMsQ0FBQztZQUNyQjtnQkFDSSxPQUFPLE9BQU8sQ0FBQztTQUN0QjtJQUNILENBQUM7OEZBekZVLDZCQUE2QjtvRUFBN0IsNkJBQTZCOzhHQUE3QixhQUFTOzs7dUZBQVQsNkJBQTZCO2NBSHpDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsNkJBQTZCO2FBQ3hDOzZEQUVrQixtQkFBbUI7a0JBQW5DLE1BQU07WUF5QkEsT0FBTztrQkFEYixZQUFZO21CQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdzbTdiaXRDaGFycyB9IGZyb20gJy4uL21vZGVscy9nc20tN2JpdC1jaGFycyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjYXVjYVNtc1NlZ21lbnRDYWxjdWxhdG9yXScsXG59KVxuZXhwb3J0IGNsYXNzIFNtc1NlZ21lbnRDYWxjdWxhdG9yRGlyZWN0aXZlIHtcbiAgQE91dHB1dCgpIHB1YmxpYyBzZWdtZW50Q291bnRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIHByaXZhdGUgc2VnbWVudENvdW50ID0gMDtcbiAgcHJpdmF0ZSBtZXNzYWdlTGVuZ3RoID0ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBHU003OiAxNjAsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIEdTTTdleHQ6IDE2MCxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgVVRGMTY6IDcwXG4gIH07XG4gIHByaXZhdGUgbXVsdGlNZXNzYWdlTGVuZ3RoID0ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgR1NNNzogMTUzLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgR1NNN2V4dDogMTUzLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICAgVVRGMTY6IDY3XG4gIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJzppbnB1dCcpXG4gIHB1YmxpYyBvbklucHV0KCkge1xuICAgIHRoaXMuY2hlY2tOdW1iZXJPZlNlZ21lbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja051bWJlck9mU2VnbWVudCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzZWdtZW50Q291bnQgPSB0aGlzLmNvdW50TnVtYmVyT2ZTZWdtZW50KHRleHQpO1xuXG4gICAgaWYgKHRoaXMuc2VnbWVudENvdW50ICE9PSBzZWdtZW50Q291bnQpIHtcbiAgICAgIHRoaXMuc2VnbWVudENvdW50Q2hhbmdlZC5lbWl0KHNlZ21lbnRDb3VudCk7XG4gICAgICB0aGlzLnNlZ21lbnRDb3VudCA9IHNlZ21lbnRDb3VudDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvdW50TnVtYmVyT2ZTZWdtZW50KHRleHQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuY291bnRTbXNDaGFycyh0ZXh0KTtcbiAgICBjb25zdCBjaGFyc2V0ID0gdGhpcy5nZXRDaGFyc2V0KHRleHQpO1xuICAgIGNvbnN0IHBlck1lc3NhZ2UgPSAobGVuZ3RoID4gdGhpcy5tZXNzYWdlTGVuZ3RoW2NoYXJzZXRdID8gdGhpcy5tdWx0aU1lc3NhZ2VMZW5ndGhbY2hhcnNldF0gOiB0aGlzLm1lc3NhZ2VMZW5ndGhbY2hhcnNldF0pO1xuXG4gICAgcmV0dXJuIE1hdGguY2VpbChsZW5ndGggLyBwZXJNZXNzYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgY291bnRTbXNDaGFycyh0ZXh0OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIGxldCBsZW5ndGggPSB0ZXh0Lmxlbmd0aDtcbiAgICBjb25zdCBjaGFyc2V0ID0gdGhpcy5nZXRDaGFyc2V0KHRleHQpO1xuXG4gICAgaWYgKGNoYXJzZXQgPT09ICdHU003ZXh0Jykge1xuICAgICAgICBsZW5ndGggKz0gdGhpcy5jb3VudEdzbTdiaXRFeHQodGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgY291bnRHc203Yml0RXh0KHRleHQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IGNoYXIyO1xuICAgIGNvbnN0IGNoYXJzID0gKCkgPT4ge1xuICAgICAgICBsZXQgX2k7IGxldCBfbGVuO1xuICAgICAgICBjb25zdCBfcmVzdWx0cyA9IFtdO1xuXG4gICAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gdGV4dC5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykge1xuICAgICAgICAgICAgY2hhcjIgPSB0ZXh0W19pXTtcbiAgICAgICAgICAgIGlmIChjaGFyMi5tYXRjaChHc203Yml0Q2hhcnMuZ3NtN2JpdEV4dE9ubHlSZWdFeHApICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICBfcmVzdWx0cy5wdXNoKGNoYXIyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3Jlc3VsdHM7XG4gICAgfTtcblxuICAgIHJldHVybiBjaGFycy5sZW5ndGg7XG4gIH1cblxuICBwcml2YXRlIGdldENoYXJzZXQodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGZhbHNlKSB7XG4gICAgICAgIGNhc2UgdGV4dC5tYXRjaChHc203Yml0Q2hhcnMuZ3NtN2JpdFJlZ0V4cCkgPT0gbnVsbDpcbiAgICAgICAgICAgIHJldHVybiAnR1NNNyc7XG4gICAgICAgIGNhc2UgdGV4dC5tYXRjaChHc203Yml0Q2hhcnMuZ3NtN2JpdEV4dFJlZ0V4cCkgPT0gbnVsbDpcbiAgICAgICAgICAgIHJldHVybiAnR1NNN2V4dCc7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ1VURjE2JztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
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
|
|
@@ -0,0 +1,7 @@
|
|
|
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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLWlucHV0LXZhbGlkYXRvcnMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHFDQUFxQyxDQUFDO0FBRXBELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjYXVjYS1pbnB1dC12YWxpZGF0b3JzXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2F1Y2EtaW5wdXQtdmFsaWRhdG9ycy5tb2R1bGUnO1xuXG5leHBvcnQgeyBTbXNBdm9pZENoYXJhY3RlcnNEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9zbXMtYXZvaWQtY2hhcmFjdGVycy5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgU21zU2VnbWVudENhbGN1bGF0b3JEaXJlY3RpdmUgfSBmcm9tICcuL2xpYi9zaGFyZWQvZGlyZWN0aXZlcy9zbXMtc2VnbWVudC1jYWxjdWxhdG9yLmRpcmVjdGl2ZSc7Il19
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Directive, Output, HostListener, NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
|
|
5
|
+
class Gsm7bitChars {
|
|
6
|
+
static { this.gsm7bitChars = '@£$¥èéùìòÇ\\nØø\\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\\"#¤%&\'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà'; }
|
|
7
|
+
static { this.gsm7bitCharsExt = '\\^{}\\\\\\[~\\]|€'; }
|
|
8
|
+
static { this.gsm7bitRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitChars + ']*$'); }
|
|
9
|
+
static { this.gsm7bitExtRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitChars + Gsm7bitChars.gsm7bitCharsExt + ']*$'); }
|
|
10
|
+
static { this.gsm7bitExtOnlyRegExp = RegExp('^[' + Gsm7bitChars.gsm7bitCharsExt + ']*$'); }
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
class SmsSegmentCalculatorDirective {
|
|
14
|
+
constructor(elementRef) {
|
|
15
|
+
this.elementRef = elementRef;
|
|
16
|
+
this.segmentCountChanged = new EventEmitter();
|
|
17
|
+
this.segmentCount = 0;
|
|
18
|
+
this.messageLength = {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
20
|
+
GSM7: 160,
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
22
|
+
GSM7ext: 160,
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
24
|
+
UTF16: 70
|
|
25
|
+
};
|
|
26
|
+
this.multiMessageLength = {
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
28
|
+
GSM7: 153,
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
30
|
+
GSM7ext: 153,
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
32
|
+
UTF16: 67
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
onInput() {
|
|
36
|
+
this.checkNumberOfSegment(this.elementRef.nativeElement.value);
|
|
37
|
+
}
|
|
38
|
+
checkNumberOfSegment(text) {
|
|
39
|
+
const segmentCount = this.countNumberOfSegment(text);
|
|
40
|
+
if (this.segmentCount !== segmentCount) {
|
|
41
|
+
this.segmentCountChanged.emit(segmentCount);
|
|
42
|
+
this.segmentCount = segmentCount;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
countNumberOfSegment(text) {
|
|
46
|
+
if (!text) {
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
const length = this.countSmsChars(text);
|
|
50
|
+
const charset = this.getCharset(text);
|
|
51
|
+
const perMessage = (length > this.messageLength[charset] ? this.multiMessageLength[charset] : this.messageLength[charset]);
|
|
52
|
+
return Math.ceil(length / perMessage);
|
|
53
|
+
}
|
|
54
|
+
countSmsChars(text) {
|
|
55
|
+
let length = text.length;
|
|
56
|
+
const charset = this.getCharset(text);
|
|
57
|
+
if (charset === 'GSM7ext') {
|
|
58
|
+
length += this.countGsm7bitExt(text);
|
|
59
|
+
}
|
|
60
|
+
return length;
|
|
61
|
+
}
|
|
62
|
+
countGsm7bitExt(text) {
|
|
63
|
+
let char2;
|
|
64
|
+
const chars = () => {
|
|
65
|
+
let _i;
|
|
66
|
+
let _len;
|
|
67
|
+
const _results = [];
|
|
68
|
+
for (_i = 0, _len = text.length; _i < _len; _i++) {
|
|
69
|
+
char2 = text[_i];
|
|
70
|
+
if (char2.match(Gsm7bitChars.gsm7bitExtOnlyRegExp) != null) {
|
|
71
|
+
_results.push(char2);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return _results;
|
|
75
|
+
};
|
|
76
|
+
return chars.length;
|
|
77
|
+
}
|
|
78
|
+
getCharset(text) {
|
|
79
|
+
switch (false) {
|
|
80
|
+
case text.match(Gsm7bitChars.gsm7bitRegExp) == null:
|
|
81
|
+
return 'GSM7';
|
|
82
|
+
case text.match(Gsm7bitChars.gsm7bitExtRegExp) == null:
|
|
83
|
+
return 'GSM7ext';
|
|
84
|
+
default:
|
|
85
|
+
return 'UTF16';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
static { this.ɵfac = function SmsSegmentCalculatorDirective_Factory(t) { return new (t || SmsSegmentCalculatorDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
|
|
89
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsSegmentCalculatorDirective, selectors: [["", "caucaSmsSegmentCalculator", ""]], hostBindings: function SmsSegmentCalculatorDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
90
|
+
i0.ɵɵlistener("input", function SmsSegmentCalculatorDirective_input_HostBindingHandler() { return ctx.onInput(); });
|
|
91
|
+
} }, outputs: { segmentCountChanged: "segmentCountChanged" } }); }
|
|
92
|
+
}
|
|
93
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmsSegmentCalculatorDirective, [{
|
|
94
|
+
type: Directive,
|
|
95
|
+
args: [{
|
|
96
|
+
selector: '[caucaSmsSegmentCalculator]',
|
|
97
|
+
}]
|
|
98
|
+
}], function () { return [{ type: i0.ElementRef }]; }, { segmentCountChanged: [{
|
|
99
|
+
type: Output
|
|
100
|
+
}], onInput: [{
|
|
101
|
+
type: HostListener,
|
|
102
|
+
args: [':input']
|
|
103
|
+
}] }); })();
|
|
104
|
+
|
|
105
|
+
class SmsAvoidCharactersDirective {
|
|
106
|
+
constructor(elementRef) {
|
|
107
|
+
this.elementRef = elementRef;
|
|
108
|
+
this.charsToAvoidChanged = new EventEmitter();
|
|
109
|
+
this.charsToReplaceChanged = new EventEmitter();
|
|
110
|
+
this.charsToAvoid = [];
|
|
111
|
+
this.charsToReplace = [];
|
|
112
|
+
}
|
|
113
|
+
onInput() {
|
|
114
|
+
this.checkCharacterException(this.elementRef.nativeElement.value);
|
|
115
|
+
}
|
|
116
|
+
checkCharacterException(text) {
|
|
117
|
+
const charsList = this.listUTF16Chars(text);
|
|
118
|
+
if (this.compareCharsList(this.charsToAvoid, charsList.charsToAvoid)) {
|
|
119
|
+
this.charsToAvoidChanged.emit(charsList.charsToAvoid);
|
|
120
|
+
this.charsToAvoid = charsList.charsToAvoid;
|
|
121
|
+
}
|
|
122
|
+
if (this.compareCharsList(this.charsToReplace, charsList.charsToReplace)) {
|
|
123
|
+
this.charsToReplaceChanged.emit(charsList.charsToReplace);
|
|
124
|
+
this.charsToReplace = charsList.charsToReplace;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
listUTF16Chars(text) {
|
|
128
|
+
const charToAvoidOrReplace = text.replace(new RegExp('([' + Gsm7bitChars.gsm7bitChars + ']+)', 'g'), '');
|
|
129
|
+
const charToReplace = charToAvoidOrReplace.replace(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'), '');
|
|
130
|
+
const charToAvoid = charToAvoidOrReplace.match(new RegExp('([' + Gsm7bitChars.gsm7bitCharsExt + ']+)', 'g'));
|
|
131
|
+
return {
|
|
132
|
+
charsToAvoid: charToAvoid || [],
|
|
133
|
+
charsToReplace: charToReplace ? charToReplace.split('') : []
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
compareCharsList(list1, list2) {
|
|
137
|
+
return JSON.stringify(list1) !== JSON.stringify(list2);
|
|
138
|
+
}
|
|
139
|
+
static { this.ɵfac = function SmsAvoidCharactersDirective_Factory(t) { return new (t || SmsAvoidCharactersDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
|
|
140
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SmsAvoidCharactersDirective, selectors: [["", "caucaSmsAvoidCharacters", ""]], hostBindings: function SmsAvoidCharactersDirective_HostBindings(rf, ctx) { if (rf & 1) {
|
|
141
|
+
i0.ɵɵlistener("input", function SmsAvoidCharactersDirective_input_HostBindingHandler() { return ctx.onInput(); });
|
|
142
|
+
} }, outputs: { charsToAvoidChanged: "charsToAvoidChanged", charsToReplaceChanged: "charsToReplaceChanged" } }); }
|
|
143
|
+
}
|
|
144
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmsAvoidCharactersDirective, [{
|
|
145
|
+
type: Directive,
|
|
146
|
+
args: [{
|
|
147
|
+
selector: '[caucaSmsAvoidCharacters]'
|
|
148
|
+
}]
|
|
149
|
+
}], function () { return [{ type: i0.ElementRef }]; }, { charsToAvoidChanged: [{
|
|
150
|
+
type: Output
|
|
151
|
+
}], charsToReplaceChanged: [{
|
|
152
|
+
type: Output
|
|
153
|
+
}], onInput: [{
|
|
154
|
+
type: HostListener,
|
|
155
|
+
args: [':input']
|
|
156
|
+
}] }); })();
|
|
157
|
+
|
|
158
|
+
class CaucaInputValidatorsModule {
|
|
159
|
+
static { this.ɵfac = function CaucaInputValidatorsModule_Factory(t) { return new (t || CaucaInputValidatorsModule)(); }; }
|
|
160
|
+
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CaucaInputValidatorsModule }); }
|
|
161
|
+
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule] }); }
|
|
162
|
+
}
|
|
163
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaucaInputValidatorsModule, [{
|
|
164
|
+
type: NgModule,
|
|
165
|
+
args: [{
|
|
166
|
+
declarations: [
|
|
167
|
+
SmsSegmentCalculatorDirective,
|
|
168
|
+
SmsAvoidCharactersDirective,
|
|
169
|
+
],
|
|
170
|
+
exports: [
|
|
171
|
+
SmsSegmentCalculatorDirective,
|
|
172
|
+
SmsAvoidCharactersDirective,
|
|
173
|
+
],
|
|
174
|
+
imports: [
|
|
175
|
+
CommonModule
|
|
176
|
+
],
|
|
177
|
+
}]
|
|
178
|
+
}], null, null); })();
|
|
179
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(CaucaInputValidatorsModule, { declarations: [SmsSegmentCalculatorDirective,
|
|
180
|
+
SmsAvoidCharactersDirective], imports: [CommonModule], exports: [SmsSegmentCalculatorDirective,
|
|
181
|
+
SmsAvoidCharactersDirective] }); })();
|
|
182
|
+
|
|
183
|
+
/*
|
|
184
|
+
* Public API Surface of cauca-input-validators
|
|
185
|
+
*/
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Generated bundle index. Do not edit.
|
|
189
|
+
*/
|
|
190
|
+
|
|
191
|
+
export { CaucaInputValidatorsModule, SmsAvoidCharactersDirective, SmsSegmentCalculatorDirective };
|
|
192
|
+
//# sourceMappingURL=cauca-911-input-validators.mjs.map
|
|
@@ -0,0 +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/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 { 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 {\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 @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 { 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 {\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 @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.charsToAvoidChanged.emit(charsList.charsToAvoid);\n this.charsToAvoid = charsList.charsToAvoid;\n }\n if (this.compareCharsList(this.charsToReplace, charsList.charsToReplace)) {\n this.charsToReplaceChanged.emit(charsList.charsToReplace);\n this.charsToReplace = charsList.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 || [],\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","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';\n\n@NgModule({\n declarations: [\n SmsSegmentCalculatorDirective,\n SmsAvoidCharactersDirective,\n ],\n exports: [\n SmsSegmentCalculatorDirective,\n SmsAvoidCharactersDirective,\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';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
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 "@angular/common";
|
|
5
|
+
export declare class CaucaInputValidatorsModule {
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CaucaInputValidatorsModule, never>;
|
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CaucaInputValidatorsModule, [typeof i1.SmsSegmentCalculatorDirective, typeof i2.SmsAvoidCharactersDirective], [typeof i3.CommonModule], [typeof i1.SmsSegmentCalculatorDirective, typeof i2.SmsAvoidCharactersDirective]>;
|
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<CaucaInputValidatorsModule>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SmsAvoidCharactersDirective {
|
|
4
|
+
private elementRef;
|
|
5
|
+
charsToAvoidChanged: EventEmitter<string[]>;
|
|
6
|
+
charsToReplaceChanged: EventEmitter<string[]>;
|
|
7
|
+
private charsToAvoid;
|
|
8
|
+
private charsToReplace;
|
|
9
|
+
constructor(elementRef: ElementRef);
|
|
10
|
+
onInput(): void;
|
|
11
|
+
private checkCharacterException;
|
|
12
|
+
private listUTF16Chars;
|
|
13
|
+
private compareCharsList;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SmsAvoidCharactersDirective, never>;
|
|
15
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SmsAvoidCharactersDirective, "[caucaSmsAvoidCharacters]", never, {}, { "charsToAvoidChanged": "charsToAvoidChanged"; "charsToReplaceChanged": "charsToReplaceChanged"; }, never, never, false, never>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class SmsSegmentCalculatorDirective {
|
|
4
|
+
private elementRef;
|
|
5
|
+
segmentCountChanged: EventEmitter<number>;
|
|
6
|
+
private segmentCount;
|
|
7
|
+
private messageLength;
|
|
8
|
+
private multiMessageLength;
|
|
9
|
+
constructor(elementRef: ElementRef);
|
|
10
|
+
onInput(): void;
|
|
11
|
+
private checkNumberOfSegment;
|
|
12
|
+
private countNumberOfSegment;
|
|
13
|
+
private countSmsChars;
|
|
14
|
+
private countGsm7bitExt;
|
|
15
|
+
private getCharset;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SmsSegmentCalculatorDirective, never>;
|
|
17
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<SmsSegmentCalculatorDirective, "[caucaSmsSegmentCalculator]", never, {}, { "segmentCountChanged": "segmentCountChanged"; }, never, never, false, never>;
|
|
18
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cauca-911/input-validators",
|
|
3
|
+
"version": "16.0.0",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": ">=16.0.0",
|
|
6
|
+
"@angular/core": ">=16.0.0",
|
|
7
|
+
"@ngx-translate/core": ">=15.0.0",
|
|
8
|
+
"rxjs": ">=7.8.0"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://cauca.ca",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"CAUCA",
|
|
13
|
+
"cauca-input-validators",
|
|
14
|
+
"cauca-911/input-validators",
|
|
15
|
+
"input-validators"
|
|
16
|
+
],
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"tslib": ">=2.4.1"
|
|
19
|
+
},
|
|
20
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
21
|
+
"module": "fesm2022/cauca-911-input-validators.mjs",
|
|
22
|
+
"typings": "index.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
"./package.json": {
|
|
25
|
+
"default": "./package.json"
|
|
26
|
+
},
|
|
27
|
+
".": {
|
|
28
|
+
"types": "./index.d.ts",
|
|
29
|
+
"esm2022": "./esm2022/cauca-911-input-validators.mjs",
|
|
30
|
+
"esm": "./esm2022/cauca-911-input-validators.mjs",
|
|
31
|
+
"default": "./fesm2022/cauca-911-input-validators.mjs"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"sideEffects": false,
|
|
35
|
+
"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"
|
|
37
|
+
}
|
|
38
|
+
}
|
package/public-api.d.ts
ADDED