ng-ipa-library 0.7.2 → 0.7.6
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/karma.conf.js +44 -0
- package/ng-package.json +43 -0
- package/package.json +24 -31
- package/src/lib/core/components/loading/loading.component.html +3 -0
- package/src/lib/core/components/loading/loading.component.scss +3 -0
- package/src/lib/core/components/loading/loading.component.ts +23 -0
- package/src/lib/core/interceptors/error.interceptor.ts +61 -0
- package/src/lib/core/interceptors/loading.interceptor.ts +69 -0
- package/src/lib/core/interceptors/token.interceptor.ts +77 -0
- package/src/lib/core/services/auth.service.ts +48 -0
- package/src/lib/core/services/error.service.ts +19 -0
- package/src/lib/core/services/loader.service.ts +21 -0
- package/src/lib/generate-form/generate-form.component.html +85 -0
- package/src/lib/generate-form/generate-form.component.scss +0 -0
- package/src/lib/generate-form/generate-form.component.ts +119 -0
- package/src/lib/ipa-form/datepicker/datepicker.component.html +21 -0
- package/src/lib/ipa-form/datepicker/datepicker.component.scss +13 -0
- package/src/lib/ipa-form/datepicker/datepicker.component.ts +67 -0
- package/src/lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component.ts +15 -0
- package/src/lib/ipa-form/datepicker/gregorian-datepicker/gregorian18n.ts +38 -0
- package/src/lib/ipa-form/datepicker/hijri-datepicker/IslamicI18n.ts +38 -0
- package/src/lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component.ts +14 -0
- package/src/lib/ipa-form/dropdown-input/dropdown-input.component.html +22 -0
- package/src/lib/ipa-form/dropdown-input/dropdown-input.component.scss +0 -0
- package/src/lib/ipa-form/dropdown-input/dropdown-input.component.ts +68 -0
- package/src/lib/ipa-form/file-upload/file-upload.component.html +37 -0
- package/src/lib/ipa-form/file-upload/file-upload.component.scss +45 -0
- package/src/lib/ipa-form/file-upload/file-upload.component.ts +109 -0
- package/src/lib/ipa-form/ipa-form.service.ts +294 -0
- package/src/lib/ipa-form/recaptcha/recaptcha.component.html +3 -0
- package/src/lib/ipa-form/recaptcha/recaptcha.component.scss +0 -0
- package/src/lib/ipa-form/recaptcha/recaptcha.component.ts +42 -0
- package/src/lib/ipa-form/text-input/text-input.component.html +10 -0
- package/src/lib/ipa-form/text-input/text-input.component.scss +0 -0
- package/src/lib/ipa-form/text-input/text-input.component.ts +69 -0
- package/src/lib/ipa-form/textarea-input/textarea-input.component.html +11 -0
- package/src/lib/ipa-form/textarea-input/textarea-input.component.scss +0 -0
- package/src/lib/ipa-form/textarea-input/textarea-input.component.ts +69 -0
- package/{lib/models/apiException.d.ts → src/lib/models/apiException.ts} +2 -1
- package/src/lib/models/apiResponse.ts +4 -0
- package/src/lib/models/breadcrumbs.model.ts +4 -0
- package/src/lib/models/decodedToken.model.ts +6 -0
- package/src/lib/models/exceptionUrl.model.ts +4 -0
- package/src/lib/models/generateForm.model.ts +29 -0
- package/src/lib/models/pagedResult.ts +4 -0
- package/src/lib/models/user.model.ts +7 -0
- package/src/lib/ng-ipa-library.component.ts +15 -0
- package/src/lib/ng-ipa-library.module.ts +63 -0
- package/src/lib/pipes/hijri-date.pipe.ts +15 -0
- package/src/lib/pipes/pipes.module.ts +8 -0
- package/src/lib/services/breadcrumbs.service.ts +189 -0
- package/src/lib/services/common.service.ts +63 -0
- package/src/lib/share-button/share-button.component.html +3 -0
- package/src/lib/share-button/share-button.component.scss +0 -0
- package/src/lib/share-button/share-button.component.ts +23 -0
- package/src/lib/share-button/share-button.module.ts +32 -0
- package/{public-api.d.ts → src/public-api.ts} +16 -1
- package/src/test.ts +26 -0
- package/tsconfig.lib.json +20 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
- package/bundles/ng-ipa-library.umd.js +0 -2101
- package/bundles/ng-ipa-library.umd.js.map +0 -1
- package/esm2015/lib/core/components/loading/loading.component.js +0 -27
- package/esm2015/lib/core/interceptors/error.interceptor.js +0 -46
- package/esm2015/lib/core/interceptors/loading.interceptor.js +0 -58
- package/esm2015/lib/core/interceptors/token.interceptor.js +0 -69
- package/esm2015/lib/core/services/auth.service.js +0 -48
- package/esm2015/lib/core/services/error.service.js +0 -22
- package/esm2015/lib/core/services/loader.service.js +0 -24
- package/esm2015/lib/generate-form/generate-form.component.js +0 -120
- package/esm2015/lib/ipa-form/datepicker/datepicker.component.js +0 -70
- package/esm2015/lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component.js +0 -28
- package/esm2015/lib/ipa-form/datepicker/gregorian-datepicker/gregorian18n.js +0 -38
- package/esm2015/lib/ipa-form/datepicker/hijri-datepicker/IslamicI18n.js +0 -38
- package/esm2015/lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component.js +0 -28
- package/esm2015/lib/ipa-form/dropdown-input/dropdown-input.component.js +0 -81
- package/esm2015/lib/ipa-form/file-upload/file-upload.component.js +0 -128
- package/esm2015/lib/ipa-form/ipa-form.service.js +0 -251
- package/esm2015/lib/ipa-form/recaptcha/recaptcha.component.js +0 -59
- package/esm2015/lib/ipa-form/text-input/text-input.component.js +0 -76
- package/esm2015/lib/ipa-form/textarea-input/textarea-input.component.js +0 -73
- package/esm2015/lib/models/apiException.js +0 -2
- package/esm2015/lib/models/apiResponse.js +0 -2
- package/esm2015/lib/models/breadcrumbs.model.js +0 -2
- package/esm2015/lib/models/decodedToken.model.js +0 -2
- package/esm2015/lib/models/exceptionUrl.model.js +0 -2
- package/esm2015/lib/models/generateForm.model.js +0 -2
- package/esm2015/lib/models/pagedResult.js +0 -2
- package/esm2015/lib/models/user.model.js +0 -2
- package/esm2015/lib/ng-ipa-library.module.js +0 -112
- package/esm2015/lib/pipes/hijri-date.pipe.js +0 -18
- package/esm2015/lib/pipes/pipes.module.js +0 -16
- package/esm2015/lib/services/breadcrumbs.service.js +0 -151
- package/esm2015/lib/services/common.service.js +0 -66
- package/esm2015/lib/share-button/share-button.component.js +0 -37
- package/esm2015/lib/share-button/share-button.module.js +0 -52
- package/esm2015/ng-ipa-library.js +0 -5
- package/esm2015/public-api.js +0 -40
- package/fesm2015/ng-ipa-library.js +0 -1633
- package/fesm2015/ng-ipa-library.js.map +0 -1
- package/lib/core/components/loading/loading.component.d.ts +0 -12
- package/lib/core/interceptors/error.interceptor.d.ts +0 -14
- package/lib/core/interceptors/loading.interceptor.d.ts +0 -14
- package/lib/core/interceptors/token.interceptor.d.ts +0 -15
- package/lib/core/services/auth.service.d.ts +0 -15
- package/lib/core/services/error.service.d.ts +0 -10
- package/lib/core/services/loader.service.d.ts +0 -12
- package/lib/generate-form/generate-form.component.d.ts +0 -32
- package/lib/ipa-form/datepicker/datepicker.component.d.ts +0 -31
- package/lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +0 -6
- package/lib/ipa-form/datepicker/gregorian-datepicker/gregorian18n.d.ts +0 -11
- package/lib/ipa-form/datepicker/hijri-datepicker/IslamicI18n.d.ts +0 -11
- package/lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +0 -6
- package/lib/ipa-form/dropdown-input/dropdown-input.component.d.ts +0 -31
- package/lib/ipa-form/file-upload/file-upload.component.d.ts +0 -36
- package/lib/ipa-form/ipa-form.service.d.ts +0 -49
- package/lib/ipa-form/recaptcha/recaptcha.component.d.ts +0 -22
- package/lib/ipa-form/text-input/text-input.component.d.ts +0 -30
- package/lib/ipa-form/textarea-input/textarea-input.component.d.ts +0 -29
- package/lib/models/apiResponse.d.ts +0 -4
- package/lib/models/breadcrumbs.model.d.ts +0 -4
- package/lib/models/decodedToken.model.d.ts +0 -6
- package/lib/models/exceptionUrl.model.d.ts +0 -4
- package/lib/models/generateForm.model.d.ts +0 -27
- package/lib/models/pagedResult.d.ts +0 -4
- package/lib/models/user.model.d.ts +0 -7
- package/lib/ng-ipa-library.module.d.ts +0 -25
- package/lib/pipes/hijri-date.pipe.d.ts +0 -7
- package/lib/pipes/pipes.module.d.ts +0 -7
- package/lib/services/breadcrumbs.service.d.ts +0 -18
- package/lib/services/common.service.d.ts +0 -8
- package/lib/share-button/share-button.component.d.ts +0 -11
- package/lib/share-button/share-button.module.d.ts +0 -13
- package/ng-ipa-library.d.ts +0 -5
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Self, ViewChild, } from '@angular/core';
|
|
2
|
-
import { FormControl } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../ipa-form.service";
|
|
5
|
-
import * as i2 from "@angular/forms";
|
|
6
|
-
import * as i3 from "@ng-select/ng-select";
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
8
|
-
import * as i5 from "@angular/cdk/bidi";
|
|
9
|
-
export class DropdownInputComponent {
|
|
10
|
-
constructor(validationService, controlDir) {
|
|
11
|
-
this.validationService = validationService;
|
|
12
|
-
this.controlDir = controlDir;
|
|
13
|
-
this.label = 'text input';
|
|
14
|
-
this.items = [];
|
|
15
|
-
this.required = false;
|
|
16
|
-
this.searchable = false;
|
|
17
|
-
this.notFoundText = 'لا يوجد بيانات';
|
|
18
|
-
this.formControl = new FormControl('');
|
|
19
|
-
this.controlDir.valueAccessor = this;
|
|
20
|
-
}
|
|
21
|
-
ngOnInit() {
|
|
22
|
-
const control = this.controlDir.control;
|
|
23
|
-
const validators = (control === null || control === void 0 ? void 0 : control.validator) ? [control.validator] : [];
|
|
24
|
-
control === null || control === void 0 ? void 0 : control.setValidators(validators);
|
|
25
|
-
control === null || control === void 0 ? void 0 : control.updateValueAndValidity();
|
|
26
|
-
this.formControl = control;
|
|
27
|
-
this.formControl.patchValue(null);
|
|
28
|
-
}
|
|
29
|
-
onChange(event) { }
|
|
30
|
-
onTouched() { }
|
|
31
|
-
writeValue(obj) {
|
|
32
|
-
if (this.input)
|
|
33
|
-
this.input.value = obj || '';
|
|
34
|
-
}
|
|
35
|
-
registerOnChange(fn) {
|
|
36
|
-
this.onChange = fn;
|
|
37
|
-
}
|
|
38
|
-
registerOnTouched(fn) {
|
|
39
|
-
this.onTouched = fn;
|
|
40
|
-
}
|
|
41
|
-
get errorMessage() {
|
|
42
|
-
this.errorMsg = this.validationService.getErrorMessage(this.formControl);
|
|
43
|
-
return this.errorMsg;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
DropdownInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: DropdownInputComponent, deps: [{ token: i1.IPAFormService }, { token: i2.NgControl, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
47
|
-
DropdownInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.9", type: DropdownInputComponent, selector: "ipa-dropdown-input", inputs: { id: "id", label: "label", items: "items", textField: "textField", valueField: "valueField", required: "required", searchable: "searchable", notFoundText: "notFoundText", classes: "classes", containerClasses: "containerClasses" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["select"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-floating {{containerClasses}}\"\r\n [ngClass]=\"{'was-validated': (controlDir.control?.dirty || controlDir.control?.touched) && required}\">\r\n\r\n <!-- searchable is false -->\r\n <ng-container *ngIf=\"!searchable\">\r\n <select #select id=\"{{id}}\" class=\"form-select {{classes}}\" [required]=\"required\" [formControl]=\"formControl\">\r\n <option *ngFor=\"let item of items\" [value]=\"valueField ? item[valueField] : item\">\r\n {{textField ? item[textField] : item}}</option>\r\n </select>\r\n <label for=\"{{id}}\">{{label}}</label>\r\n </ng-container>\r\n\r\n <!-- searchable is true -->\r\n <ng-select *ngIf=\"searchable\" #select dir=\"rtl\" class=\"{{classes}}\" [formControl]=\"formControl\" [items]=\"items\"\r\n [placeholder]=\"label\" [notFoundText]=\"notFoundText\" [required]=\"required\" [bindValue]=\"valueField\"\r\n [bindLabel]=\"textField\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n </ng-select>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n</div>", styles: [""], components: [{ type: i3.NgSelectComponent, selector: "ng-select", inputs: ["markFirst", "dropdownPosition", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "bufferAmount", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "bindLabel", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "virtualScroll", "openOnEnter", "appendTo", "bindValue", "appearance", "maxSelectedItems", "groupBy", "groupValue", "tabIndex", "typeahead"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }] });
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: DropdownInputComponent, decorators: [{
|
|
49
|
-
type: Component,
|
|
50
|
-
args: [{
|
|
51
|
-
selector: 'ipa-dropdown-input',
|
|
52
|
-
templateUrl: './dropdown-input.component.html',
|
|
53
|
-
styleUrls: ['./dropdown-input.component.scss'],
|
|
54
|
-
}]
|
|
55
|
-
}], ctorParameters: function () { return [{ type: i1.IPAFormService }, { type: i2.NgControl, decorators: [{
|
|
56
|
-
type: Self
|
|
57
|
-
}] }]; }, propDecorators: { input: [{
|
|
58
|
-
type: ViewChild,
|
|
59
|
-
args: ['select', { static: true }]
|
|
60
|
-
}], id: [{
|
|
61
|
-
type: Input
|
|
62
|
-
}], label: [{
|
|
63
|
-
type: Input
|
|
64
|
-
}], items: [{
|
|
65
|
-
type: Input
|
|
66
|
-
}], textField: [{
|
|
67
|
-
type: Input
|
|
68
|
-
}], valueField: [{
|
|
69
|
-
type: Input
|
|
70
|
-
}], required: [{
|
|
71
|
-
type: Input
|
|
72
|
-
}], searchable: [{
|
|
73
|
-
type: Input
|
|
74
|
-
}], notFoundText: [{
|
|
75
|
-
type: Input
|
|
76
|
-
}], classes: [{
|
|
77
|
-
type: Input
|
|
78
|
-
}], containerClasses: [{
|
|
79
|
-
type: Input
|
|
80
|
-
}] } });
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaXBhLWxpYnJhcnkvc3JjL2xpYi9pcGEtZm9ybS9kcm9wZG93bi1pbnB1dC9kcm9wZG93bi1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pcGEtbGlicmFyeS9zcmMvbGliL2lwYS1mb3JtL2Ryb3Bkb3duLWlucHV0L2Ryb3Bkb3duLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUVMLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBUXhELE1BQU0sT0FBTyxzQkFBc0I7SUFlakMsWUFDVSxpQkFBaUMsRUFDMUIsVUFBcUI7UUFENUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFnQjtRQUMxQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBZDdCLFVBQUssR0FBVyxZQUFZLENBQUM7UUFDN0IsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUdsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxnQkFBZ0IsQ0FBQztRQUd6QyxnQkFBVyxHQUFnQixJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQU83QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUN4QyxNQUFNLFVBQVUsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFakUsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsc0JBQXNCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQXNCLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVLElBQVMsQ0FBQztJQUU3QixTQUFTLEtBQVUsQ0FBQztJQUNwQixVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzs7bUhBbERVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLHlaQ2hCbkMsKzBDQXFCTTsyRkRMTyxzQkFBc0I7a0JBTGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsV0FBVyxFQUFFLGlDQUFpQztvQkFDOUMsU0FBUyxFQUFFLENBQUMsaUNBQWlDLENBQUM7aUJBQy9DOzswQkFrQkksSUFBSTs0Q0FoQmdDLEtBQUs7c0JBQTNDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDNUIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBTZWxmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSVBBRm9ybVNlcnZpY2UgfSBmcm9tICcuLi9pcGEtZm9ybS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaXBhLWRyb3Bkb3duLWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHJvcGRvd24taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBpbnB1dCE6IEhUTUxTZWxlY3RFbGVtZW50O1xyXG4gIEBJbnB1dCgpIGlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAndGV4dCBpbnB1dCc7XHJcbiAgQElucHV0KCkgaXRlbXM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgdGV4dEZpZWxkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHZhbHVlRmllbGQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWFyY2hhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbm90Rm91bmRUZXh0ID0gJ9mE2Kcg2YrZiNis2K8g2KjZitin2YbYp9iqJztcclxuICBASW5wdXQoKSBjbGFzc2VzITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNvbnRhaW5lckNsYXNzZXMhOiBzdHJpbmc7XHJcbiAgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICBlcnJvck1zZyE6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogSVBBRm9ybVNlcnZpY2UsXHJcbiAgICBAU2VsZigpIHB1YmxpYyBjb250cm9sRGlyOiBOZ0NvbnRyb2xcclxuICApIHtcclxuICAgIHRoaXMuY29udHJvbERpci52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuY29udHJvbERpci5jb250cm9sO1xyXG4gICAgY29uc3QgdmFsaWRhdG9ycyA9IGNvbnRyb2w/LnZhbGlkYXRvciA/IFtjb250cm9sLnZhbGlkYXRvcl0gOiBbXTtcclxuXHJcbiAgICBjb250cm9sPy5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgY29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnBhdGNoVmFsdWUobnVsbCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShldmVudDogYW55KTogdm9pZCB7fVxyXG5cclxuICBvblRvdWNoZWQoKTogdm9pZCB7fVxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0KSB0aGlzLmlucHV0LnZhbHVlID0gb2JqIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHRoaXMuZXJyb3JNc2cgPSB0aGlzLnZhbGlkYXRpb25TZXJ2aWNlLmdldEVycm9yTWVzc2FnZSh0aGlzLmZvcm1Db250cm9sKTtcclxuICAgIHJldHVybiB0aGlzLmVycm9yTXNnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1mbG9hdGluZyB7e2NvbnRhaW5lckNsYXNzZXN9fVwiXHJcbiAgW25nQ2xhc3NdPVwieyd3YXMtdmFsaWRhdGVkJzogKGNvbnRyb2xEaXIuY29udHJvbD8uZGlydHkgfHwgY29udHJvbERpci5jb250cm9sPy50b3VjaGVkKSAmJiByZXF1aXJlZH1cIj5cclxuXHJcbiAgPCEtLSBzZWFyY2hhYmxlIGlzIGZhbHNlIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VhcmNoYWJsZVwiPlxyXG4gICAgPHNlbGVjdCAjc2VsZWN0IGlkPVwie3tpZH19XCIgY2xhc3M9XCJmb3JtLXNlbGVjdCB7e2NsYXNzZXN9fVwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiPlxyXG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCIgW3ZhbHVlXT1cInZhbHVlRmllbGQgPyBpdGVtW3ZhbHVlRmllbGRdIDogaXRlbVwiPlxyXG4gICAgICAgIHt7dGV4dEZpZWxkID8gaXRlbVt0ZXh0RmllbGRdIDogaXRlbX19PC9vcHRpb24+XHJcbiAgICA8L3NlbGVjdD5cclxuICAgIDxsYWJlbCBmb3I9XCJ7e2lkfX1cIj57e2xhYmVsfX08L2xhYmVsPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIHNlYXJjaGFibGUgaXMgdHJ1ZSAtLT5cclxuICA8bmctc2VsZWN0ICpuZ0lmPVwic2VhcmNoYWJsZVwiICNzZWxlY3QgZGlyPVwicnRsXCIgY2xhc3M9XCJ7e2NsYXNzZXN9fVwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIFtpdGVtc109XCJpdGVtc1wiXHJcbiAgICBbcGxhY2Vob2xkZXJdPVwibGFiZWxcIiBbbm90Rm91bmRUZXh0XT1cIm5vdEZvdW5kVGV4dFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiIFtiaW5kVmFsdWVdPVwidmFsdWVGaWVsZFwiXHJcbiAgICBbYmluZExhYmVsXT1cInRleHRGaWVsZFwiXHJcbiAgICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQgaXMtaW52YWxpZDpmb2N1cyc6IChjb250cm9sRGlyLmNvbnRyb2w/LmludmFsaWQgJiYgKGNvbnRyb2xEaXIuY29udHJvbD8uZGlydHkgfHwgY29udHJvbERpci5jb250cm9sPy50b3VjaGVkKSkgJiYgZXJyb3JNc2csJ2lzLXZhbGlkIGlzLXZhbGlkOmZvY3VzJzogKGNvbnRyb2xEaXIuY29udHJvbD8udmFsaWQgJiYgKGNvbnRyb2xEaXIuY29udHJvbD8uZGlydHkgfHwgY29udHJvbERpci5jb250cm9sPy50b3VjaGVkKSAgJiYgKGVycm9yTXNnIHx8IGNvbnRyb2xEaXIudmFsdWUpKX1cIj5cclxuICA8L25nLXNlbGVjdD5cclxuICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwiZXJyb3JNZXNzYWdlICE9PSBudWxsXCI+XHJcbiAgICB7e2Vycm9yTXNnfX1cclxuICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { DropzoneDirective } from 'ngx-dropzone-wrapper';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "ngx-toastr";
|
|
5
|
-
import * as i2 from "ngx-dropzone-wrapper";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
export class FileUploadComponent {
|
|
8
|
-
constructor(
|
|
9
|
-
// private authService: AuthService,
|
|
10
|
-
toastrService) {
|
|
11
|
-
this.toastrService = toastrService;
|
|
12
|
-
this.label = '';
|
|
13
|
-
this.required = false;
|
|
14
|
-
this.acceptedFiles = '';
|
|
15
|
-
this.multiple = 1; // set maxFiles (NOT uploadMultiple)in the config object,
|
|
16
|
-
this.maxFileSize = 2;
|
|
17
|
-
this.method = 'POST';
|
|
18
|
-
this.autoUpload = false;
|
|
19
|
-
this.apiUrl = 'apiUrl';
|
|
20
|
-
this.successUpload = new EventEmitter();
|
|
21
|
-
this.fileAdded = new EventEmitter();
|
|
22
|
-
this.fileDeleted = new EventEmitter();
|
|
23
|
-
this.dragEnter = false;
|
|
24
|
-
this.errors = [];
|
|
25
|
-
this.filesAdded = [];
|
|
26
|
-
this.currentFiles = [];
|
|
27
|
-
}
|
|
28
|
-
ngOnInit() {
|
|
29
|
-
this.label = 'رفع ' + this.label;
|
|
30
|
-
this.config = {
|
|
31
|
-
url: this.apiUrl,
|
|
32
|
-
method: this.method,
|
|
33
|
-
headers: {
|
|
34
|
-
Authorization: 'Bearer ' + this.authorization,
|
|
35
|
-
},
|
|
36
|
-
maxFilesize: this.maxFileSize,
|
|
37
|
-
maxFiles: this.multiple,
|
|
38
|
-
uploadMultiple: this.multiple > 1,
|
|
39
|
-
dictInvalidFileType: 'صيغة الملف غير مسموح بها',
|
|
40
|
-
dictFileTooBig: 'الحجم تجاوز الحد المسموح',
|
|
41
|
-
dictMaxFilesExceeded: 'الرجاء حذف الملفات الموجودة حاليا لتتمكن من رفع هذا الملف',
|
|
42
|
-
acceptedFiles: this.acceptedFiles,
|
|
43
|
-
autoProcessQueue: this.autoUpload,
|
|
44
|
-
previewTemplate: '<span></span>',
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
operationCompleted(e) {
|
|
48
|
-
if (this.filesAdded.length > 0) {
|
|
49
|
-
this.successUpload.emit(this.filesAdded);
|
|
50
|
-
this.filesAdded = [];
|
|
51
|
-
}
|
|
52
|
-
this.dropzoneDir.reset();
|
|
53
|
-
}
|
|
54
|
-
onUploadSuccess(e) {
|
|
55
|
-
const file = e[0];
|
|
56
|
-
if (file.status === 'success') {
|
|
57
|
-
this.filesAdded.push(file);
|
|
58
|
-
}
|
|
59
|
-
this.toastrService.success('تم تحميل المرفقات بنجاح');
|
|
60
|
-
}
|
|
61
|
-
onUploadError(e) {
|
|
62
|
-
if (e[1]) {
|
|
63
|
-
this.errors = [];
|
|
64
|
-
this.errors.push(`${e[1]} (${e[0].name})`);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
fileWasAdded(e) {
|
|
68
|
-
const myDropzone = this.dropzoneDir.dropzone();
|
|
69
|
-
if (this.multiple === 1) {
|
|
70
|
-
this.currentFiles = [];
|
|
71
|
-
this.filesAdded = [];
|
|
72
|
-
this.errors = [];
|
|
73
|
-
const files = myDropzone.files;
|
|
74
|
-
if (files.length > 1) {
|
|
75
|
-
myDropzone.removeFile(files[0]);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
this.currentFiles.push(e);
|
|
79
|
-
this.fileAdded.emit(e);
|
|
80
|
-
}
|
|
81
|
-
sending(e) {
|
|
82
|
-
this.errors = [];
|
|
83
|
-
}
|
|
84
|
-
reset(e) { }
|
|
85
|
-
deleteFile(file) {
|
|
86
|
-
this.currentFiles = this.currentFiles.filter((x) => x.name !== file.name && x.size !== file.size);
|
|
87
|
-
this.errors = [];
|
|
88
|
-
this.fileDeleted.emit();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
FileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: FileUploadComponent, deps: [{ token: i1.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
-
FileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.9", type: FileUploadComponent, selector: "ipa-file-upload", inputs: { label: "label", required: "required", acceptedFiles: "acceptedFiles", multiple: "multiple", maxFileSize: "maxFileSize", method: "method", autoUpload: "autoUpload", apiUrl: "apiUrl", authorization: "authorization" }, outputs: { successUpload: "successUpload", fileAdded: "fileAdded", fileDeleted: "fileDeleted" }, viewQueries: [{ propertyName: "dropzoneDir", first: true, predicate: DropzoneDirective, descendants: true }], ngImport: i0, template: "<div class=\"file-upload\">\r\n <div class=\"upload-overlay\" [dropzone]=\"config\" (error)=\"onUploadError($event)\"\r\n (queueComplete)=\"operationCompleted($event)\" (success)=\"onUploadSuccess($event)\" (dragenter)=\"dragEnter = true\"\r\n (dragLeave)=\"dragEnter = false\" (drop)=\"dragEnter = false\" (dragEnd)=\"dragEnter = false\"\r\n [class.active-border]=\"dragEnter\" (sending)=\"sending($event)\" (reset)=\"reset($event)\"\r\n (addedFile)=\"fileWasAdded($event)\">\r\n </div>\r\n <div class=\"upload-btn-wrapper\">\r\n <div>\r\n <div class=\"subtitle mb-2\">\r\n {{label}}\r\n <span *ngIf=\"required\" class=\"required\">*</span>\r\n </div>\r\n <hr>\r\n <span style=\"font-size: 12px;\">\u0642\u0645 \u0628\u0633\u062D\u0628 \u0627\u0644\u0645\u0644\u0641 \u0623\u0648 \u0627\u0636\u063A\u0637 \u0647\u0646\u0627</span>\r\n <i class=\"fas fa-upload upload-icon mr-2\"></i>\r\n </div>\r\n <div *ngIf=\"acceptedFiles.length > 0\" class=\"allowed-extensions\">\r\n \u0627\u0644\u0635\u064A\u063A\u0629 \u0627\u0644\u0645\u0633\u0645\u0648\u062D \u0628\u0647\u0627:\r\n <span class=\"extensions\">{{ acceptedFiles }}</span>\r\n </div>\r\n <div class=\"allowed-extensions\">\r\n \u0627\u0642\u0635\u0649 \u062D\u062C\u0645 \u0644\u0644\u0645\u0631\u0641\u0642:\r\n <span class=\"extensions\">{{ maxFileSize }} MB</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"attachment-status\" style=\"text-align: center; margin-top:10px;\">\r\n <span style=\"font-size: 14px; margin: auto; font-weight:bold;\" *ngFor=\"let file of currentFiles\">\r\n {{ file.name }} <i (click)=\"deleteFile(file)\" class=\"fas fa-trash\"\r\n style=\"color:firebrick; cursor: pointer;\"></i>\r\n <br>\r\n </span>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"text-danger\" style=\"font-size: 12px;\" *ngFor=\"let error of errors\">{{error}}</li>\r\n </ul>\r\n</div>", styles: [".subtitle{border-bottom:none;display:block;line-height:2}.file-upload{border:dashed 1px #ccc;display:block;min-height:150px;border-radius:15px;width:350px;cursor:pointer;position:relative;margin:auto}.upload-overlay{position:absolute;width:100%;height:100%}.upload-btn-wrapper{text-align:center}.upload-icon{margin-right:5px}.list-unstyled{margin:10px!important;padding:14px!important;list-style:none}.allowed-extensions{color:#4d7297}.required{color:#dc3545;font-size:20px}\n"], directives: [{ type: i2.DropzoneDirective, selector: "[dropzone]", inputs: ["disabled", "dropzone"], outputs: ["init", "error", "success", "sending", "canceled", "complete", "processing", "drop", "dragStart", "dragEnd", "dragEnter", "dragOver", "dragLeave", "thumbnail", "addedFile", "addedFiles", "removedFile", "uploadProgress", "maxFilesReached", "maxFilesExceeded", "errorMultiple", "successMultiple", "sendingMultiple", "canceledMultiple", "completeMultiple", "processingMultiple", "reset", "queueComplete", "totalUploadProgress"], exportAs: ["ngxDropzone"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
93
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
94
|
-
type: Component,
|
|
95
|
-
args: [{
|
|
96
|
-
selector: 'ipa-file-upload',
|
|
97
|
-
templateUrl: './file-upload.component.html',
|
|
98
|
-
styleUrls: ['./file-upload.component.scss']
|
|
99
|
-
}]
|
|
100
|
-
}], ctorParameters: function () { return [{ type: i1.ToastrService }]; }, propDecorators: { dropzoneDir: [{
|
|
101
|
-
type: ViewChild,
|
|
102
|
-
args: [DropzoneDirective, { static: false }]
|
|
103
|
-
}], label: [{
|
|
104
|
-
type: Input
|
|
105
|
-
}], required: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], acceptedFiles: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], multiple: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], maxFileSize: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}], method: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}], autoUpload: [{
|
|
116
|
-
type: Input
|
|
117
|
-
}], apiUrl: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], authorization: [{
|
|
120
|
-
type: Input
|
|
121
|
-
}], successUpload: [{
|
|
122
|
-
type: Output
|
|
123
|
-
}], fileAdded: [{
|
|
124
|
-
type: Output
|
|
125
|
-
}], fileDeleted: [{
|
|
126
|
-
type: Output
|
|
127
|
-
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaXBhLWxpYnJhcnkvc3JjL2xpYi9pcGEtZm9ybS9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pcGEtbGlicmFyeS9zcmMvbGliL2lwYS1mb3JtL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFGLE9BQU8sRUFBMkIsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFPbEYsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUI7SUFDRSxvQ0FBb0M7SUFDNUIsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFwQjdCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyx5REFBeUQ7UUFDdkUsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUNoQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBRyxRQUFRLENBQUM7UUFFakIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9CLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFFdEIsZUFB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UyxDQUFDO0lBRXRCLFVBQVUsQ0FBQyxJQUFTO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQzFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUNwRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDOztnSEFsR1UsbUJBQW1CO29HQUFuQixtQkFBbUIsdWFBQ25CLGlCQUFpQixnRENWOUIsMmpFQW9DTTsyRkQzQk8sbUJBQW1CO2tCQUwvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFdBQVcsRUFBRSw4QkFBOEI7b0JBQzNDLFNBQVMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO2lCQUM1QztvR0FHQyxXQUFXO3NCQURWLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUV0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IERyb3B6b25lQ29uZmlnSW50ZXJmYWNlLCBEcm9wem9uZURpcmVjdGl2ZSB9IGZyb20gJ25neC1kcm9wem9uZS13cmFwcGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaXBhLWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoRHJvcHpvbmVEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIGRyb3B6b25lRGlyITogRHJvcHpvbmVEaXJlY3RpdmU7XHJcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcclxuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFjY2VwdGVkRmlsZXMgPSAnJztcclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IDE7IC8vIHNldCBtYXhGaWxlcyAoTk9UIHVwbG9hZE11bHRpcGxlKWluIHRoZSBjb25maWcgb2JqZWN0LFxyXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplID0gMjtcclxuICBASW5wdXQoKSBtZXRob2QgPSAnUE9TVCc7XHJcbiAgQElucHV0KCkgYXV0b1VwbG9hZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFwaVVybCA9ICdhcGlVcmwnO1xyXG4gIEBJbnB1dCgpIGF1dGhvcml6YXRpb24hOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIHN1Y2Nlc3NVcGxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbGVBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsZURlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgZHJhZ0VudGVyID0gZmFsc2U7XHJcbiAgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGNvbmZpZyE6IERyb3B6b25lQ29uZmlnSW50ZXJmYWNlO1xyXG4gIGZpbGVzQWRkZWQ6IEZpbGVbXSA9IFtdO1xyXG4gIGN1cnJlbnRGaWxlczogRmlsZVtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0clNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5sYWJlbCA9ICfYsdmB2LkgJyArIHRoaXMubGFiZWw7XHJcbiAgICB0aGlzLmNvbmZpZyA9IHtcclxuICAgICAgdXJsOiB0aGlzLmFwaVVybCxcclxuICAgICAgbWV0aG9kOiB0aGlzLm1ldGhvZCxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRoaXMuYXV0aG9yaXphdGlvbixcclxuICAgICAgfSxcclxuICAgICAgbWF4RmlsZXNpemU6IHRoaXMubWF4RmlsZVNpemUsXHJcbiAgICAgIG1heEZpbGVzOiB0aGlzLm11bHRpcGxlLFxyXG4gICAgICB1cGxvYWRNdWx0aXBsZTogdGhpcy5tdWx0aXBsZSA+IDEsXHJcbiAgICAgIGRpY3RJbnZhbGlkRmlsZVR5cGU6ICfYtdmK2LrYqSDYp9mE2YXZhNmBINi62YrYsSDZhdiz2YXZiNitINio2YfYpycsXHJcbiAgICAgIGRpY3RGaWxlVG9vQmlnOiAn2KfZhNit2KzZhSDYqtis2KfZiNiyINin2YTYrdivINin2YTZhdiz2YXZiNitJyxcclxuICAgICAgZGljdE1heEZpbGVzRXhjZWVkZWQ6XHJcbiAgICAgICAgJ9in2YTYsdis2KfYoSDYrdiw2YEg2KfZhNmF2YTZgdin2Kog2KfZhNmF2YjYrNmI2K/YqSDYrdin2YTZitinINmE2KrYqtmF2YPZhiDZhdmGINix2YHYuSDZh9iw2Kcg2KfZhNmF2YTZgScsXHJcbiAgICAgIGFjY2VwdGVkRmlsZXM6IHRoaXMuYWNjZXB0ZWRGaWxlcyxcclxuICAgICAgYXV0b1Byb2Nlc3NRdWV1ZTogdGhpcy5hdXRvVXBsb2FkLFxyXG4gICAgICBwcmV2aWV3VGVtcGxhdGU6ICc8c3Bhbj48L3NwYW4+JyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBvcGVyYXRpb25Db21wbGV0ZWQoZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5maWxlc0FkZGVkLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zdWNjZXNzVXBsb2FkLmVtaXQodGhpcy5maWxlc0FkZGVkKTtcclxuICAgICAgdGhpcy5maWxlc0FkZGVkID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLmRyb3B6b25lRGlyLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBvblVwbG9hZFN1Y2Nlc3MoZTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBmaWxlID0gZVswXTtcclxuICAgIGlmIChmaWxlLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgIHRoaXMuZmlsZXNBZGRlZC5wdXNoKGZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudG9hc3RyU2VydmljZS5zdWNjZXNzKCfYqtmFINiq2K3ZhdmK2YQg2KfZhNmF2LHZgdmC2KfYqiDYqNmG2KzYp9itJyk7XHJcbiAgfVxyXG5cclxuICBvblVwbG9hZEVycm9yKGU6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGVbMV0pIHtcclxuICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcclxuICAgICAgdGhpcy5lcnJvcnMucHVzaChgJHtlWzFdfSAoJHtlWzBdLm5hbWV9KWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmlsZVdhc0FkZGVkKGU6IEZpbGUpOiB2b2lkIHtcclxuICAgIGNvbnN0IG15RHJvcHpvbmUgPSB0aGlzLmRyb3B6b25lRGlyLmRyb3B6b25lKCk7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSA9PT0gMSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWxlcyA9IFtdO1xyXG4gICAgICB0aGlzLmZpbGVzQWRkZWQgPSBbXTtcclxuICAgICAgdGhpcy5lcnJvcnMgPSBbXTtcclxuICAgICAgY29uc3QgZmlsZXMgPSBteURyb3B6b25lLmZpbGVzO1xyXG4gICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIG15RHJvcHpvbmUucmVtb3ZlRmlsZShmaWxlc1swXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY3VycmVudEZpbGVzLnB1c2goZSk7XHJcbiAgICB0aGlzLmZpbGVBZGRlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgc2VuZGluZyhlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZXJyb3JzID0gW107XHJcbiAgfVxyXG5cclxuICByZXNldChlOiBhbnkpOiB2b2lkIHt9XHJcblxyXG4gIGRlbGV0ZUZpbGUoZmlsZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRGaWxlcyA9IHRoaXMuY3VycmVudEZpbGVzLmZpbHRlcihcclxuICAgICAgKHgpID0+IHgubmFtZSAhPT0gZmlsZS5uYW1lICYmIHguc2l6ZSAhPT0gZmlsZS5zaXplXHJcbiAgICApO1xyXG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcclxuICAgIHRoaXMuZmlsZURlbGV0ZWQuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmlsZS11cGxvYWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtb3ZlcmxheVwiIFtkcm9wem9uZV09XCJjb25maWdcIiAoZXJyb3IpPVwib25VcGxvYWRFcnJvcigkZXZlbnQpXCJcclxuICAgICAgICAocXVldWVDb21wbGV0ZSk9XCJvcGVyYXRpb25Db21wbGV0ZWQoJGV2ZW50KVwiIChzdWNjZXNzKT1cIm9uVXBsb2FkU3VjY2VzcygkZXZlbnQpXCIgKGRyYWdlbnRlcik9XCJkcmFnRW50ZXIgPSB0cnVlXCJcclxuICAgICAgICAoZHJhZ0xlYXZlKT1cImRyYWdFbnRlciA9IGZhbHNlXCIgKGRyb3ApPVwiZHJhZ0VudGVyID0gZmFsc2VcIiAoZHJhZ0VuZCk9XCJkcmFnRW50ZXIgPSBmYWxzZVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZS1ib3JkZXJdPVwiZHJhZ0VudGVyXCIgKHNlbmRpbmcpPVwic2VuZGluZygkZXZlbnQpXCIgKHJlc2V0KT1cInJlc2V0KCRldmVudClcIlxyXG4gICAgICAgIChhZGRlZEZpbGUpPVwiZmlsZVdhc0FkZGVkKCRldmVudClcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1idG4td3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJ0aXRsZSBtYi0yXCI+XHJcbiAgICAgICAgICAgICAgICB7e2xhYmVsfX1cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxocj5cclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDEycHg7XCI+2YLZhSDYqNiz2K3YqCDYp9mE2YXZhNmBINij2Ygg2KfYtti62Lcg2YfZhtinPC9zcGFuPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS11cGxvYWQgdXBsb2FkLWljb24gbXItMlwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiYWNjZXB0ZWRGaWxlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJhbGxvd2VkLWV4dGVuc2lvbnNcIj5cclxuICAgICAgICAgICAg2KfZhNi12YrYutipINin2YTZhdiz2YXZiNitINio2YfYpzpcclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRlbnNpb25zXCI+e3sgYWNjZXB0ZWRGaWxlcyB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWxsb3dlZC1leHRlbnNpb25zXCI+XHJcbiAgICAgICAgICAgINin2YLYtdmJINit2KzZhSDZhNmE2YXYsdmB2YI6XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXh0ZW5zaW9uc1wiPnt7IG1heEZpbGVTaXplIH19IE1CPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGlkPVwiYXR0YWNobWVudC1zdGF0dXNcIiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDoxMHB4O1wiPlxyXG4gICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDE0cHg7IG1hcmdpbjogYXV0bzsgZm9udC13ZWlnaHQ6Ym9sZDtcIiAqbmdGb3I9XCJsZXQgZmlsZSBvZiBjdXJyZW50RmlsZXNcIj5cclxuICAgICAgICB7eyBmaWxlLm5hbWUgfX0gPGkgKGNsaWNrKT1cImRlbGV0ZUZpbGUoZmlsZSlcIiBjbGFzcz1cImZhcyBmYS10cmFzaFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6ZmlyZWJyaWNrOyBjdXJzb3I6IHBvaW50ZXI7XCI+PC9pPlxyXG4gICAgICAgIDxicj5cclxuICAgIDwvc3Bhbj5cclxuICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuICAgICAgICA8bGkgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIHN0eWxlPVwiZm9udC1zaXplOiAxMnB4O1wiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj57e2Vycm9yfX08L2xpPlxyXG4gICAgPC91bD5cclxuPC9kaXY+Il19
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import momentHijri from 'moment-hijri';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@ng-bootstrap/ng-bootstrap";
|
|
5
|
-
export class IPAFormService {
|
|
6
|
-
constructor(parserFormatter) {
|
|
7
|
-
this.parserFormatter = parserFormatter;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* check link is valid.
|
|
11
|
-
*/
|
|
12
|
-
static linkValidation(control) {
|
|
13
|
-
const isValidLink = /^((https?:\/\/)[\w-]+(\.[a-z-]+)+\.?(:\d+)?(\/\S*)?)$/.test(control.value);
|
|
14
|
-
return isValidLink || !control.value ? null : { link: true };
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* check mp4 link is valid.
|
|
18
|
-
*/
|
|
19
|
-
static mp4LinkValidation(control) {
|
|
20
|
-
const isValidLink = /^((https?:\/\/)[\w-]+(\.[a-z-]+)+\.?(:\d+)?(\/\S*)?(\/[\w\u0600-\u06FF]+\.mp4))$/.test(control.value);
|
|
21
|
-
return isValidLink || !control.value ? null : { linkMP4: true };
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* check mobile number is valid.
|
|
25
|
-
*/
|
|
26
|
-
static mobileNo(control) {
|
|
27
|
-
const isValidLink = /^05\d{8}$/.test(control.value);
|
|
28
|
-
return isValidLink || !control.value ? null : { mobileNo: true };
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* check email is valid.
|
|
32
|
-
*/
|
|
33
|
-
static email(control) {
|
|
34
|
-
const isValidLink = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/.test(control.value);
|
|
35
|
-
return isValidLink || !control.value ? null : { Email: true };
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* check national ID or iqama ID is valid.
|
|
39
|
-
*/
|
|
40
|
-
static checkID(control) {
|
|
41
|
-
let isValid = false;
|
|
42
|
-
const value = control.value;
|
|
43
|
-
if (IPAFormService.nationalIdValidate(value) ||
|
|
44
|
-
IPAFormService.iqamaIdValidate(value)) {
|
|
45
|
-
isValid = true;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
isValid = false;
|
|
49
|
-
}
|
|
50
|
-
return isValid || !value ? null : { checkId: true };
|
|
51
|
-
}
|
|
52
|
-
getErrorMessage(control, patternErrorMsg = '') {
|
|
53
|
-
for (const propertyName in control === null || control === void 0 ? void 0 : control.errors) {
|
|
54
|
-
if ((control === null || control === void 0 ? void 0 : control.errors.hasOwnProperty(propertyName)) &&
|
|
55
|
-
(control.touched || control.dirty)) {
|
|
56
|
-
return this.getValidatorErrorMessage(propertyName, control.errors[propertyName], patternErrorMsg);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* convert gregorian date to hijri date (Based on Umm al-Qura calculations).
|
|
63
|
-
* @param date: gregorian date
|
|
64
|
-
* @param format: iDD => day: ١٥, iMM => month: ٠٤, iMMM => month: ربيع ٢,
|
|
65
|
-
* iMMMM => ربيع الثاني, iYY => year: ٤٢, iYYYY => year: ١٤٤٢,
|
|
66
|
-
* dd => ن, ddd => إثنين, dddd => الإثنين
|
|
67
|
-
* @example 'iYYYY/iM/iDهـ الموافق YYYY/M/Dم'
|
|
68
|
-
* '١٤٤٢/٠٤/١٥هـ الموافق ٢٠٢٠/١١/٣٠'
|
|
69
|
-
*/
|
|
70
|
-
convertToHijriDate(date, format = 'iYYYY-iMM-iDD', lang = 'ar-SA') {
|
|
71
|
-
momentHijri.locale(lang);
|
|
72
|
-
return momentHijri(date).format(format);
|
|
73
|
-
}
|
|
74
|
-
convertToGregorianDate(date, format = 'YYYY-MM-DD', lang = 'en') {
|
|
75
|
-
momentHijri.locale(lang);
|
|
76
|
-
const m = momentHijri.iConvert.toGregorian(date.year(), date.month(), date.date());
|
|
77
|
-
return momentHijri(new Date(m.gy, m.gm, m.gd)).format(format);
|
|
78
|
-
}
|
|
79
|
-
getCurrentHijriDate() {
|
|
80
|
-
momentHijri.locale('en');
|
|
81
|
-
return momentHijri().format('iYYYY/iMM/iDD');
|
|
82
|
-
}
|
|
83
|
-
getValidatorErrorMessage(validatorName, validatorValue, patternErrorMsg) {
|
|
84
|
-
if (validatorName === 'pattern') {
|
|
85
|
-
validatorValue = this.addPatternMsg(validatorValue, patternErrorMsg);
|
|
86
|
-
}
|
|
87
|
-
const config = {
|
|
88
|
-
required: 'هذا الحقل مطلوب',
|
|
89
|
-
pattern: `${validatorValue.message}`,
|
|
90
|
-
Email: 'خطأ في البريد الالكتروني (example@ipa.edu.sa)',
|
|
91
|
-
maxlength: `تجاوز عدد الحقل المسموح بها (${validatorValue.requiredLength}) حرف`,
|
|
92
|
-
minlength: `على الأقل عدد ${validatorValue.requiredLength} حرف.`,
|
|
93
|
-
min: `رقم اكبر من أو يساوي ${validatorValue.min}`,
|
|
94
|
-
max: `رقم اصغر من أو يساوي ${validatorValue.max}`,
|
|
95
|
-
ngbDate: this.getNgbDatepickerErrorMsg(validatorValue),
|
|
96
|
-
checkId: 'رقم الهوية أو الاقامة غير صحيح',
|
|
97
|
-
link: 'الرابط غير صحيح (http://google.com)',
|
|
98
|
-
linkMP4: 'الرابط غير صحيح (http://example.com/a.mp4)',
|
|
99
|
-
mobileNo: 'خطأ في رقم الجوال (05xxxxxxxx)',
|
|
100
|
-
};
|
|
101
|
-
return config[validatorName];
|
|
102
|
-
}
|
|
103
|
-
addPatternMsg(validatorValue, patternErrorMsg) {
|
|
104
|
-
let pattern = Object.assign(Object.assign({}, validatorValue), { message: patternErrorMsg });
|
|
105
|
-
return pattern;
|
|
106
|
-
}
|
|
107
|
-
getNgbDatepickerErrorMsg(validatorValue) {
|
|
108
|
-
let msg = '';
|
|
109
|
-
if (validatorValue.maxDate) {
|
|
110
|
-
msg = `التاريخ المدخل "${this.parserFormatter.format(validatorValue.maxDate.actual)}" اكبر من تاريخ اليوم "${this.parserFormatter.format(validatorValue.maxDate.maxDate)}"`;
|
|
111
|
-
}
|
|
112
|
-
else if (validatorValue.minDate) {
|
|
113
|
-
msg = `التاريخ المدخل "${this.parserFormatter.format(validatorValue.minDate.actual)}" يجب ان يكون اكبر من أو يساوي تاريخ البداية "${this.parserFormatter.format(validatorValue.minDate.minDate)}"`;
|
|
114
|
-
}
|
|
115
|
-
else if (validatorValue.invalid) {
|
|
116
|
-
msg = `التاريخ المدخل غير صحيح ${validatorValue.invalid}.`;
|
|
117
|
-
}
|
|
118
|
-
return msg;
|
|
119
|
-
}
|
|
120
|
-
static convertToEn(value) {
|
|
121
|
-
let newValue = '';
|
|
122
|
-
for (let i = 0; i < value.length; i++) {
|
|
123
|
-
let ch = value.charCodeAt(i);
|
|
124
|
-
if (ch >= 1584 && ch <= 1650) {
|
|
125
|
-
let newChar = ch - 1584;
|
|
126
|
-
newValue = newValue + String.fromCharCode(newChar);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
newValue = newValue + String.fromCharCode(ch);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return newValue;
|
|
133
|
-
}
|
|
134
|
-
static nationalIdValidate(civilId) {
|
|
135
|
-
if (civilId) {
|
|
136
|
-
let strID = this.convertToEn(civilId);
|
|
137
|
-
let digits = '';
|
|
138
|
-
let counter = 0;
|
|
139
|
-
while (counter < 9) {
|
|
140
|
-
if ((counter + 1) % 2 == 0) {
|
|
141
|
-
digits = digits + strID.substring(counter, counter + 1);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
digits =
|
|
145
|
-
digits + (+strID.substring(counter, counter + 1) * 2).toString();
|
|
146
|
-
}
|
|
147
|
-
counter++;
|
|
148
|
-
}
|
|
149
|
-
let intSum = 0;
|
|
150
|
-
let intSumTemp = 0;
|
|
151
|
-
let strSum;
|
|
152
|
-
let intOddSumDigit;
|
|
153
|
-
let CheckDigit;
|
|
154
|
-
counter = 0;
|
|
155
|
-
while (counter < digits.length) {
|
|
156
|
-
intSumTemp = +digits.charAt(counter) * 1;
|
|
157
|
-
intSum += intSumTemp;
|
|
158
|
-
counter++;
|
|
159
|
-
}
|
|
160
|
-
strSum = intSum.toString();
|
|
161
|
-
if (strSum.length == 1) {
|
|
162
|
-
intOddSumDigit = intSum;
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
intOddSumDigit = strSum.substring(strSum.length, strSum.length - 1);
|
|
166
|
-
}
|
|
167
|
-
if (intOddSumDigit == 0) {
|
|
168
|
-
CheckDigit = 0;
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
CheckDigit = (10 - +intOddSumDigit).toString();
|
|
172
|
-
}
|
|
173
|
-
let PublicID = this.convertToEn(civilId);
|
|
174
|
-
if (CheckDigit ==
|
|
175
|
-
PublicID.substring(PublicID.length - 1, PublicID.length) &&
|
|
176
|
-
strID.length == 10 &&
|
|
177
|
-
strID.substring(0, 1) == '1') {
|
|
178
|
-
return true;
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
return false;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
static iqamaIdValidate(civilId) {
|
|
189
|
-
if (civilId) {
|
|
190
|
-
let strID = this.convertToEn(civilId);
|
|
191
|
-
let digits = '';
|
|
192
|
-
let counter = 0;
|
|
193
|
-
while (counter < 9) {
|
|
194
|
-
if ((counter + 1) % 2 == 0) {
|
|
195
|
-
digits = digits + strID.substring(counter, counter + 1);
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
digits =
|
|
199
|
-
digits + (+strID.substring(counter, counter + 1) * 2).toString();
|
|
200
|
-
}
|
|
201
|
-
counter++;
|
|
202
|
-
}
|
|
203
|
-
let intSum = 0;
|
|
204
|
-
let intSumTemp = 0;
|
|
205
|
-
let strSum;
|
|
206
|
-
let intOddSumDigit;
|
|
207
|
-
let CheckDigit;
|
|
208
|
-
counter = 0;
|
|
209
|
-
while (counter < digits.length) {
|
|
210
|
-
intSumTemp = +digits.charAt(counter) * 1;
|
|
211
|
-
intSum += intSumTemp;
|
|
212
|
-
counter++;
|
|
213
|
-
}
|
|
214
|
-
strSum = intSum.toString();
|
|
215
|
-
if (strSum.length == 1) {
|
|
216
|
-
intOddSumDigit = intSum;
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
intOddSumDigit = strSum.substring(strSum.length, strSum.length - 1);
|
|
220
|
-
}
|
|
221
|
-
if (intOddSumDigit == 0) {
|
|
222
|
-
CheckDigit = 0;
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
CheckDigit = (10 - +intOddSumDigit).toString();
|
|
226
|
-
}
|
|
227
|
-
let PublicID = this.convertToEn(civilId);
|
|
228
|
-
if (CheckDigit ==
|
|
229
|
-
PublicID.substring(PublicID.length - 1, PublicID.length) &&
|
|
230
|
-
strID.length == 10 &&
|
|
231
|
-
strID.substring(0, 1) == '2') {
|
|
232
|
-
return true;
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
return false;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
return false;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
IPAFormService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: IPAFormService, deps: [{ token: i1.NgbDateParserFormatter }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
244
|
-
IPAFormService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: IPAFormService, providedIn: 'root' });
|
|
245
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: IPAFormService, decorators: [{
|
|
246
|
-
type: Injectable,
|
|
247
|
-
args: [{
|
|
248
|
-
providedIn: 'root',
|
|
249
|
-
}]
|
|
250
|
-
}], ctorParameters: function () { return [{ type: i1.NgbDateParserFormatter }]; } });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhLWZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWlwYS1saWJyYXJ5L3NyYy9saWIvaXBhLWZvcm0vaXBhLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQzs7O0FBT3ZDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQW9CLGVBQXVDO1FBQXZDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtJQUFHLENBQUM7SUFFL0Q7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQXdCO1FBQzVDLE1BQU0sV0FBVyxHQUNmLHVEQUF1RCxDQUFDLElBQUksQ0FDMUQsT0FBTyxDQUFDLEtBQUssQ0FDZCxDQUFDO1FBQ0osT0FBTyxXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxPQUF3QjtRQUMvQyxNQUFNLFdBQVcsR0FDZixrRkFBa0YsQ0FBQyxJQUFJLENBQ3JGLE9BQU8sQ0FBQyxLQUFLLENBQ2QsQ0FBQztRQUNKLE9BQU8sV0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQXdCO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELE9BQU8sV0FB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WUFDekMsSUFDRSxVQUFVO2dCQUNSLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDMUQsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFO2dCQUNsQixLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQzVCO2dCQUNBLE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQzs7MkdBM1JVLGNBQWM7K0dBQWQsY0FBYyxjQUZiLE1BQU07MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCBtb21lbnRIaWpyaSBmcm9tICdtb21lbnQtaGlqcmknO1xyXG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIElQQUZvcm1TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBhcnNlckZvcm1hdHRlcjogTmdiRGF0ZVBhcnNlckZvcm1hdHRlcikge31cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2sgbGluayBpcyB2YWxpZC5cclxuICAgKi9cclxuICBzdGF0aWMgbGlua1ZhbGlkYXRpb24oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgaXNWYWxpZExpbmsgPVxyXG4gICAgICAvXigoaHR0cHM/OlxcL1xcLylbXFx3LV0rKFxcLlthLXotXSspK1xcLj8oOlxcZCspPyhcXC9cXFMqKT8pJC8udGVzdChcclxuICAgICAgICBjb250cm9sLnZhbHVlXHJcbiAgICAgICk7XHJcbiAgICByZXR1cm4gaXNWYWxpZExpbmsgfHwgIWNvbnRyb2wudmFsdWUgPyBudWxsIDogeyBsaW5rOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjaGVjayBtcDQgbGluayBpcyB2YWxpZC5cclxuICAgKi9cclxuICBzdGF0aWMgbXA0TGlua1ZhbGlkYXRpb24oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgaXNWYWxpZExpbmsgPVxyXG4gICAgICAvXigoaHR0cHM/OlxcL1xcLylbXFx3LV0rKFxcLlthLXotXSspK1xcLj8oOlxcZCspPyhcXC9cXFMqKT8oXFwvW1xcd1xcdTA2MDAtXFx1MDZGRl0rXFwubXA0KSkkLy50ZXN0KFxyXG4gICAgICAgIGNvbnRyb2wudmFsdWVcclxuICAgICAgKTtcclxuICAgIHJldHVybiBpc1ZhbGlkTGluayB8fCAhY29udHJvbC52YWx1ZSA/IG51bGwgOiB7IGxpbmtNUDQ6IHRydWUgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIGNoZWNrIG1vYmlsZSBudW1iZXIgaXMgdmFsaWQuXHJcbiAgICovXHJcbiAgc3RhdGljIG1vYmlsZU5vKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IGlzVmFsaWRMaW5rID0gL14wNVxcZHs4fSQvLnRlc3QoY29udHJvbC52YWx1ZSk7XHJcbiAgICByZXR1cm4gaXNWYWxpZExpbmsgfHwgIWNvbnRyb2wudmFsdWUgPyBudWxsIDogeyBtb2JpbGVObzogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2sgZW1haWwgaXMgdmFsaWQuXHJcbiAgICovXHJcbiAgc3RhdGljIGVtYWlsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IGlzVmFsaWRMaW5rID1cclxuICAgICAgL14oKFtePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl0rKFxcLltePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl0rKSopfChcXFwiLitcXFwiKSlAKChbXjw+KClbXFxdXFwuLDs6XFxzQFxcXCJdK1xcLikrW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXXsyLH0pJC8udGVzdChcclxuICAgICAgICBjb250cm9sLnZhbHVlXHJcbiAgICAgICk7XHJcbiAgICByZXR1cm4gaXNWYWxpZExpbmsgfHwgIWNvbnRyb2wudmFsdWUgPyBudWxsIDogeyBFbWFpbDogdHJ1ZSB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogY2hlY2sgbmF0aW9uYWwgSUQgb3IgaXFhbWEgSUQgaXMgdmFsaWQuXHJcbiAgICovXHJcbiAgc3RhdGljIGNoZWNrSUQoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgIGlmIChcclxuICAgICAgSVBBRm9ybVNlcnZpY2UubmF0aW9uYWxJZFZhbGlkYXRlKHZhbHVlKSB8fFxyXG4gICAgICBJUEFGb3JtU2VydmljZS5pcWFtYUlkVmFsaWRhdGUodmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgaXNWYWxpZCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpc1ZhbGlkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNWYWxpZCB8fCAhdmFsdWUgPyBudWxsIDogeyBjaGVja0lkOiB0cnVlIH07XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2UoY29udHJvbDogRm9ybUNvbnRyb2wsIHBhdHRlcm5FcnJvck1zZyA9ICcnKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBpbiBjb250cm9sPy5lcnJvcnMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGNvbnRyb2w/LmVycm9ycy5oYXNPd25Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUpICYmXHJcbiAgICAgICAgKGNvbnRyb2wudG91Y2hlZCB8fCBjb250cm9sLmRpcnR5KVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWxpZGF0b3JFcnJvck1lc3NhZ2UoXHJcbiAgICAgICAgICBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICBjb250cm9sLmVycm9yc1twcm9wZXJ0eU5hbWVdLFxyXG4gICAgICAgICAgcGF0dGVybkVycm9yTXNnXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBjb252ZXJ0IGdyZWdvcmlhbiBkYXRlIHRvIGhpanJpIGRhdGUgKEJhc2VkIG9uIFVtbSBhbC1RdXJhIGNhbGN1bGF0aW9ucykuXHJcbiAgICogQHBhcmFtIGRhdGU6IGdyZWdvcmlhbiBkYXRlXHJcbiAgICogQHBhcmFtIGZvcm1hdDogaUREID0+IGRheTog2aHZpSwgaU1NID0+IG1vbnRoOiDZoNmkLCBpTU1NID0+IG1vbnRoOiDYsdio2YrYuSDZoixcclxuICAgKiAgICAgICAgICAgICAgIGlNTU1NID0+INix2KjZiti5INin2YTYq9in2YbZiiwgIGlZWSA9PiB5ZWFyOiDZpNmiLCBpWVlZWSA9PiB5ZWFyOiDZodmk2aTZoixcclxuICAgKiAgICAgICAgICAgICAgIGRkID0+INmGLCBkZGQgPT4g2KXYq9mG2YrZhiwgZGRkZCA9PiDYp9mE2KXYq9mG2YrZhlxyXG4gICAqIEBleGFtcGxlICdpWVlZWS9pTS9pRNmH2YAg2KfZhNmF2YjYp9mB2YIgWVlZWS9NL0TZhSdcclxuICAgKiAgICAgICAgICAgJ9mh2aTZpNmiL9mg2aQv2aHZpdmH2YAg2KfZhNmF2YjYp9mB2YIg2aLZoNmi2aAv2aHZoS/Zo9mgJ1xyXG4gICAqL1xyXG4gIGNvbnZlcnRUb0hpanJpRGF0ZShcclxuICAgIGRhdGU6IHN0cmluZyxcclxuICAgIGZvcm1hdCA9ICdpWVlZWS1pTU0taUREJyxcclxuICAgIGxhbmcgPSAnYXItU0EnXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIG1vbWVudEhpanJpLmxvY2FsZShsYW5nKTtcclxuICAgIHJldHVybiBtb21lbnRIaWpyaShkYXRlKS5mb3JtYXQoZm9ybWF0KTtcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb0dyZWdvcmlhbkRhdGUoXHJcbiAgICBkYXRlOiBNb21lbnQsXHJcbiAgICBmb3JtYXQgPSAnWVlZWS1NTS1ERCcsXHJcbiAgICBsYW5nID0gJ2VuJ1xyXG4gICk6IHN0cmluZyB7XHJcbiAgICBtb21lbnRIaWpyaS5sb2NhbGUobGFuZyk7XHJcbiAgICBjb25zdCBtID0gbW9tZW50SGlqcmkuaUNvbnZlcnQudG9HcmVnb3JpYW4oXHJcbiAgICAgIGRhdGUueWVhcigpLFxyXG4gICAgICBkYXRlLm1vbnRoKCksXHJcbiAgICAgIGRhdGUuZGF0ZSgpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIG1vbWVudEhpanJpKG5ldyBEYXRlKG0uZ3ksIG0uZ20sIG0uZ2QpKS5mb3JtYXQoZm9ybWF0KTtcclxuICB9XHJcblxyXG4gIGdldEN1cnJlbnRIaWpyaURhdGUoKSB7XHJcbiAgICBtb21lbnRIaWpyaS5sb2NhbGUoJ2VuJyk7XHJcbiAgICByZXR1cm4gbW9tZW50SGlqcmkoKS5mb3JtYXQoJ2lZWVlZL2lNTS9pREQnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFsaWRhdG9yRXJyb3JNZXNzYWdlKFxyXG4gICAgdmFsaWRhdG9yTmFtZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdG9yVmFsdWU6IGFueSxcclxuICAgIHBhdHRlcm5FcnJvck1zZzogc3RyaW5nXHJcbiAgKTogc3RyaW5nIHtcclxuICAgIGlmICh2YWxpZGF0b3JOYW1lID09PSAncGF0dGVybicpIHtcclxuICAgICAgdmFsaWRhdG9yVmFsdWUgPSB0aGlzLmFkZFBhdHRlcm5Nc2codmFsaWRhdG9yVmFsdWUsIHBhdHRlcm5FcnJvck1zZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWc6IGFueSA9IHtcclxuICAgICAgcmVxdWlyZWQ6ICfZh9iw2Kcg2KfZhNit2YLZhCDZhdi32YTZiNioJyxcclxuICAgICAgcGF0dGVybjogYCR7dmFsaWRhdG9yVmFsdWUubWVzc2FnZX1gLFxyXG4gICAgICBFbWFpbDogJ9iu2LfYoyDZgdmKINin2YTYqNix2YrYryDYp9mE2KfZhNmD2KrYsdmI2YbZiiAoZXhhbXBsZUBpcGEuZWR1LnNhKScsXHJcbiAgICAgIG1heGxlbmd0aDogYNiq2KzYp9mI2LIg2LnYr9ivINin2YTYrdmC2YQg2KfZhNmF2LPZhdmI2K0g2KjZh9inICgke3ZhbGlkYXRvclZhbHVlLnJlcXVpcmVkTGVuZ3RofSkg2K3YsdmBYCxcclxuICAgICAgbWlubGVuZ3RoOiBg2LnZhNmJINin2YTYo9mC2YQg2LnYr9ivICR7dmFsaWRhdG9yVmFsdWUucmVxdWlyZWRMZW5ndGh9INit2LHZgS5gLFxyXG4gICAgICBtaW46IGDYsdmC2YUg2KfZg9io2LEg2YXZhiDYo9mIINmK2LPYp9mI2YogJHt2YWxpZGF0b3JWYWx1ZS5taW59YCxcclxuICAgICAgbWF4OiBg2LHZgtmFINin2LXYutixINmF2YYg2KPZiCDZitiz2KfZiNmKICR7dmFsaWRhdG9yVmFsdWUubWF4fWAsXHJcbiAgICAgIG5nYkRhdGU6IHRoaXMuZ2V0TmdiRGF0ZXBpY2tlckVycm9yTXNnKHZhbGlkYXRvclZhbHVlKSxcclxuICAgICAgY2hlY2tJZDogJ9ix2YLZhSDYp9mE2YfZiNmK2Kkg2KPZiCDYp9mE2KfZgtin2YXYqSDYutmK2LEg2LXYrdmK2K0nLFxyXG4gICAgICBsaW5rOiAn2KfZhNix2KfYqNi3INi62YrYsSDYtdit2YrYrSAoaHR0cDovL2dvb2dsZS5jb20pJyxcclxuICAgICAgbGlua01QNDogJ9in2YTYsdin2KjYtyDYutmK2LEg2LXYrdmK2K0gKGh0dHA6Ly9leGFtcGxlLmNvbS9hLm1wNCknLFxyXG4gICAgICBtb2JpbGVObzogJ9iu2LfYoyDZgdmKINix2YLZhSDYp9mE2KzZiNin2YQgKDA1eHh4eHh4eHgpJyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gY29uZmlnW3ZhbGlkYXRvck5hbWVdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRQYXR0ZXJuTXNnKHZhbGlkYXRvclZhbHVlOiBhbnksIHBhdHRlcm5FcnJvck1zZzogc3RyaW5nKSB7XHJcbiAgICBsZXQgcGF0dGVybiA9IHtcclxuICAgICAgLi4udmFsaWRhdG9yVmFsdWUsXHJcbiAgICAgIG1lc3NhZ2U6IHBhdHRlcm5FcnJvck1zZyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gcGF0dGVybjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TmdiRGF0ZXBpY2tlckVycm9yTXNnKHZhbGlkYXRvclZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgbGV0IG1zZyA9ICcnO1xyXG4gICAgaWYgKHZhbGlkYXRvclZhbHVlLm1heERhdGUpIHtcclxuICAgICAgbXNnID0gYNin2YTYqtin2LHZitiuINin2YTZhdiv2K7ZhCBcIiR7dGhpcy5wYXJzZXJGb3JtYXR0ZXIuZm9ybWF0KFxyXG4gICAgICAgIHZhbGlkYXRvclZhbHVlLm1heERhdGUuYWN0dWFsXHJcbiAgICAgICl9XCIg2KfZg9io2LEg2YXZhiDYqtin2LHZitiuINin2YTZitmI2YUgXCIke3RoaXMucGFyc2VyRm9ybWF0dGVyLmZvcm1hdChcclxuICAgICAgICB2YWxpZGF0b3JWYWx1ZS5tYXhEYXRlLm1heERhdGVcclxuICAgICAgKX1cImA7XHJcbiAgICB9IGVsc2UgaWYgKHZhbGlkYXRvclZhbHVlLm1pbkRhdGUpIHtcclxuICAgICAgbXNnID0gYNin2YTYqtin2LHZitiuINin2YTZhdiv2K7ZhCBcIiR7dGhpcy5wYXJzZXJGb3JtYXR0ZXIuZm9ybWF0KFxyXG4gICAgICAgIHZhbGlkYXRvclZhbHVlLm1pbkRhdGUuYWN0dWFsXHJcbiAgICAgICl9XCIg2YrYrNioINin2YYg2YrZg9mI2YYg2KfZg9io2LEg2YXZhiDYo9mIINmK2LPYp9mI2Yog2KrYp9ix2YrYriDYp9mE2KjYr9in2YrYqSBcIiR7dGhpcy5wYXJzZXJGb3JtYXR0ZXIuZm9ybWF0KFxyXG4gICAgICAgIHZhbGlkYXRvclZhbHVlLm1pbkRhdGUubWluRGF0ZVxyXG4gICAgICApfVwiYDtcclxuICAgIH0gZWxzZSBpZiAodmFsaWRhdG9yVmFsdWUuaW52YWxpZCkge1xyXG4gICAgICBtc2cgPSBg2KfZhNiq2KfYsdmK2K4g2KfZhNmF2K/YrtmEINi62YrYsSDYtdit2YrYrSAke3ZhbGlkYXRvclZhbHVlLmludmFsaWR9LmA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbXNnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29udmVydFRvRW4odmFsdWU6IHN0cmluZykge1xyXG4gICAgbGV0IG5ld1ZhbHVlID0gJyc7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBjaCA9IHZhbHVlLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgIGlmIChjaCA+PSAxNTg0ICYmIGNoIDw9IDE2NTApIHtcclxuICAgICAgICBsZXQgbmV3Q2hhciA9IGNoIC0gMTU4NDtcclxuICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlICsgU3RyaW5nLmZyb21DaGFyQ29kZShuZXdDaGFyKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdWYWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIG5hdGlvbmFsSWRWYWxpZGF0ZShjaXZpbElkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChjaXZpbElkKSB7XHJcbiAgICAgIGxldCBzdHJJRCA9IHRoaXMuY29udmVydFRvRW4oY2l2aWxJZCk7XHJcbiAgICAgIGxldCBkaWdpdHMgPSAnJztcclxuICAgICAgbGV0IGNvdW50ZXIgPSAwO1xyXG4gICAgICB3aGlsZSAoY291bnRlciA8IDkpIHtcclxuICAgICAgICBpZiAoKGNvdW50ZXIgKyAxKSAlIDIgPT0gMCkge1xyXG4gICAgICAgICAgZGlnaXRzID0gZGlnaXRzICsgc3RySUQuc3Vic3RyaW5nKGNvdW50ZXIsIGNvdW50ZXIgKyAxKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZGlnaXRzID1cclxuICAgICAgICAgICAgZGlnaXRzICsgKCtzdHJJRC5zdWJzdHJpbmcoY291bnRlciwgY291bnRlciArIDEpICogMikudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY291bnRlcisrO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBpbnRTdW0gPSAwO1xyXG4gICAgICBsZXQgaW50U3VtVGVtcCA9IDA7XHJcbiAgICAgIGxldCBzdHJTdW07XHJcbiAgICAgIGxldCBpbnRPZGRTdW1EaWdpdDtcclxuICAgICAgbGV0IENoZWNrRGlnaXQ7XHJcbiAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICB3aGlsZSAoY291bnRlciA8IGRpZ2l0cy5sZW5ndGgpIHtcclxuICAgICAgICBpbnRTdW1UZW1wID0gK2RpZ2l0cy5jaGFyQXQoY291bnRlcikgKiAxO1xyXG4gICAgICAgIGludFN1bSArPSBpbnRTdW1UZW1wO1xyXG4gICAgICAgIGNvdW50ZXIrKztcclxuICAgICAgfVxyXG4gICAgICBzdHJTdW0gPSBpbnRTdW0udG9TdHJpbmcoKTtcclxuICAgICAgaWYgKHN0clN1bS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIGludE9kZFN1bURpZ2l0ID0gaW50U3VtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGludE9kZFN1bURpZ2l0ID0gc3RyU3VtLnN1YnN0cmluZyhzdHJTdW0ubGVuZ3RoLCBzdHJTdW0ubGVuZ3RoIC0gMSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGludE9kZFN1bURpZ2l0ID09IDApIHtcclxuICAgICAgICBDaGVja0RpZ2l0ID0gMDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBDaGVja0RpZ2l0ID0gKDEwIC0gK2ludE9kZFN1bURpZ2l0KS50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBQdWJsaWNJRCA9IHRoaXMuY29udmVydFRvRW4oY2l2aWxJZCk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBDaGVja0RpZ2l0ID09XHJcbiAgICAgICAgICBQdWJsaWNJRC5zdWJzdHJpbmcoUHVibGljSUQubGVuZ3RoIC0gMSwgUHVibGljSUQubGVuZ3RoKSAmJlxyXG4gICAgICAgIHN0cklELmxlbmd0aCA9PSAxMCAmJlxyXG4gICAgICAgIHN0cklELnN1YnN0cmluZygwLCAxKSA9PSAnMSdcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpcWFtYUlkVmFsaWRhdGUoY2l2aWxJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoY2l2aWxJZCkge1xyXG4gICAgICBsZXQgc3RySUQgPSB0aGlzLmNvbnZlcnRUb0VuKGNpdmlsSWQpO1xyXG4gICAgICBsZXQgZGlnaXRzID0gJyc7XHJcbiAgICAgIGxldCBjb3VudGVyID0gMDtcclxuICAgICAgd2hpbGUgKGNvdW50ZXIgPCA5KSB7XHJcbiAgICAgICAgaWYgKChjb3VudGVyICsgMSkgJSAyID09IDApIHtcclxuICAgICAgICAgIGRpZ2l0cyA9IGRpZ2l0cyArIHN0cklELnN1YnN0cmluZyhjb3VudGVyLCBjb3VudGVyICsgMSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRpZ2l0cyA9XHJcbiAgICAgICAgICAgIGRpZ2l0cyArICgrc3RySUQuc3Vic3RyaW5nKGNvdW50ZXIsIGNvdW50ZXIgKyAxKSAqIDIpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvdW50ZXIrKztcclxuICAgICAgfVxyXG4gICAgICBsZXQgaW50U3VtID0gMDtcclxuICAgICAgbGV0IGludFN1bVRlbXAgPSAwO1xyXG4gICAgICBsZXQgc3RyU3VtO1xyXG4gICAgICBsZXQgaW50T2RkU3VtRGlnaXQ7XHJcbiAgICAgIGxldCBDaGVja0RpZ2l0O1xyXG4gICAgICBjb3VudGVyID0gMDtcclxuICAgICAgd2hpbGUgKGNvdW50ZXIgPCBkaWdpdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgaW50U3VtVGVtcCA9ICtkaWdpdHMuY2hhckF0KGNvdW50ZXIpICogMTtcclxuICAgICAgICBpbnRTdW0gKz0gaW50U3VtVGVtcDtcclxuICAgICAgICBjb3VudGVyKys7XHJcbiAgICAgIH1cclxuICAgICAgc3RyU3VtID0gaW50U3VtLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmIChzdHJTdW0ubGVuZ3RoID09IDEpIHtcclxuICAgICAgICBpbnRPZGRTdW1EaWdpdCA9IGludFN1bTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpbnRPZGRTdW1EaWdpdCA9IHN0clN1bS5zdWJzdHJpbmcoc3RyU3VtLmxlbmd0aCwgc3RyU3VtLmxlbmd0aCAtIDEpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpbnRPZGRTdW1EaWdpdCA9PSAwKSB7XHJcbiAgICAgICAgQ2hlY2tEaWdpdCA9IDA7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgQ2hlY2tEaWdpdCA9ICgxMCAtICtpbnRPZGRTdW1EaWdpdCkudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgUHVibGljSUQgPSB0aGlzLmNvbnZlcnRUb0VuKGNpdmlsSWQpO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgQ2hlY2tEaWdpdCA9PVxyXG4gICAgICAgICAgUHVibGljSUQuc3Vic3RyaW5nKFB1YmxpY0lELmxlbmd0aCAtIDEsIFB1YmxpY0lELmxlbmd0aCkgJiZcclxuICAgICAgICBzdHJJRC5sZW5ndGggPT0gMTAgJiZcclxuICAgICAgICBzdHJJRC5zdWJzdHJpbmcoMCwgMSkgPT0gJzInXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { Component, Input, Self } from '@angular/core';
|
|
2
|
-
import { FormControl } from '@angular/forms';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/forms";
|
|
5
|
-
import * as i2 from "ngx-captcha";
|
|
6
|
-
export class RecaptchaComponent {
|
|
7
|
-
constructor(controlDir) {
|
|
8
|
-
this.controlDir = controlDir;
|
|
9
|
-
this.siteKey = '6LefJQYdAAAAAIlxmfkjNlWidMk8VukIZcs6lO5e';
|
|
10
|
-
this.recaptchaSize = 'normal';
|
|
11
|
-
this.lang = 'ar';
|
|
12
|
-
this.recaptchaType = 'image';
|
|
13
|
-
this.theme = 'light';
|
|
14
|
-
this.useGlobalDomain = true;
|
|
15
|
-
this.formControl = new FormControl('');
|
|
16
|
-
this.controlDir.valueAccessor = this;
|
|
17
|
-
}
|
|
18
|
-
ngOnInit() {
|
|
19
|
-
const control = this.controlDir.control;
|
|
20
|
-
const validators = (control === null || control === void 0 ? void 0 : control.validator) ? [control.validator] : [];
|
|
21
|
-
control === null || control === void 0 ? void 0 : control.setValidators(validators);
|
|
22
|
-
control === null || control === void 0 ? void 0 : control.updateValueAndValidity();
|
|
23
|
-
this.formControl = control;
|
|
24
|
-
}
|
|
25
|
-
onChange(event) { }
|
|
26
|
-
onTouched() { }
|
|
27
|
-
writeValue(obj) { }
|
|
28
|
-
registerOnChange(fn) {
|
|
29
|
-
this.onChange = fn;
|
|
30
|
-
}
|
|
31
|
-
registerOnTouched(fn) {
|
|
32
|
-
this.onTouched = fn;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
RecaptchaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: RecaptchaComponent, deps: [{ token: i1.NgControl, self: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
36
|
-
RecaptchaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.9", type: RecaptchaComponent, selector: "ipa-recaptcha", inputs: { siteKey: "siteKey", recaptchaSize: "recaptchaSize", lang: "lang", recaptchaType: "recaptchaType", theme: "theme", useGlobalDomain: "useGlobalDomain" }, ngImport: i0, template: "<ngx-recaptcha2 [siteKey]=\"siteKey\" [size]=\"recaptchaSize\" [hl]=\"lang\" [theme]=\"theme\" [type]=\"recaptchaType\"\n [useGlobalDomain]=\"useGlobalDomain\" [formControl]=\"formControl\">\n</ngx-recaptcha2>", styles: [""], components: [{ type: i2.ReCaptcha2Component, selector: "ngx-recaptcha2", inputs: ["theme", "size", "hl"] }], directives: [{ type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.9", ngImport: i0, type: RecaptchaComponent, decorators: [{
|
|
38
|
-
type: Component,
|
|
39
|
-
args: [{
|
|
40
|
-
selector: 'ipa-recaptcha',
|
|
41
|
-
templateUrl: './recaptcha.component.html',
|
|
42
|
-
styleUrls: ['./recaptcha.component.scss'],
|
|
43
|
-
}]
|
|
44
|
-
}], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
|
|
45
|
-
type: Self
|
|
46
|
-
}] }]; }, propDecorators: { siteKey: [{
|
|
47
|
-
type: Input
|
|
48
|
-
}], recaptchaSize: [{
|
|
49
|
-
type: Input
|
|
50
|
-
}], lang: [{
|
|
51
|
-
type: Input
|
|
52
|
-
}], recaptchaType: [{
|
|
53
|
-
type: Input
|
|
54
|
-
}], theme: [{
|
|
55
|
-
type: Input
|
|
56
|
-
}], useGlobalDomain: [{
|
|
57
|
-
type: Input
|
|
58
|
-
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWlwYS1saWJyYXJ5L3NyYy9saWIvaXBhLWZvcm0vcmVjYXB0Y2hhL3JlY2FwdGNoYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pcGEtbGlicmFyeS9zcmMvbGliL2lwYS1mb3JtL3JlY2FwdGNoYS9yZWNhcHRjaGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU94RCxNQUFNLE9BQU8sa0JBQWtCO0lBUTdCLFlBQTJCLFVBQXFCO1FBQXJCLGVBQVUsR0FBVixVQUFVLENBQVc7UUFQdkMsWUFBTyxHQUFHLDBDQUEwQyxDQUFDO1FBQ3JELGtCQUFhLEdBQXlCLFFBQVEsQ0FBQztRQUMvQyxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osa0JBQWEsR0FBc0IsT0FBTyxDQUFDO1FBQzNDLFVBQUssR0FBcUIsT0FBTyxDQUFDO1FBQ2xDLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLGdCQUFXLEdBQWdCLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUN2QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3hDLE1BQU0sVUFBVSxHQUFHLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVqRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxzQkFBc0IsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBc0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVUsSUFBUyxDQUFDO0lBRTdCLFNBQVMsS0FBVSxDQUFDO0lBQ3BCLFVBQVUsQ0FBQyxHQUFRLElBQVMsQ0FBQztJQUU3QixnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OytHQWhDVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix1TkNSL0Isc05BRWlCOzJGRE1KLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsV0FBVyxFQUFFLDRCQUE0QjtvQkFDekMsU0FBUyxFQUFFLENBQUMsNEJBQTRCLENBQUM7aUJBQzFDOzswQkFTYyxJQUFJOzRDQVBSLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpcGEtcmVjYXB0Y2hhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2FwdGNoYS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlY2FwdGNoYS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBSZWNhcHRjaGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBzaXRlS2V5ID0gJzZMZWZKUVlkQUFBQUFJbHhtZmtqTmxXaWRNazhWdWtJWmNzNmxPNWUnO1xuICBASW5wdXQoKSByZWNhcHRjaGFTaXplOiAnY29tcGFjdCcgfCAnbm9ybWFsJyA9ICdub3JtYWwnO1xuICBASW5wdXQoKSBsYW5nID0gJ2FyJztcbiAgQElucHV0KCkgcmVjYXB0Y2hhVHlwZTogJ2ltYWdlJyB8ICdhdWRpbycgPSAnaW1hZ2UnO1xuICBASW5wdXQoKSB0aGVtZTogJ2xpZ2h0JyB8ICdkYXJrJyA9ICdsaWdodCc7XG4gIEBJbnB1dCgpIHVzZUdsb2JhbERvbWFpbiA9IHRydWU7XG4gIGZvcm1Db250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIGNvbnN0cnVjdG9yKEBTZWxmKCkgcHVibGljIGNvbnRyb2xEaXI6IE5nQ29udHJvbCkge1xuICAgIHRoaXMuY29udHJvbERpci52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmNvbnRyb2xEaXIuY29udHJvbDtcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gY29udHJvbD8udmFsaWRhdG9yID8gW2NvbnRyb2wudmFsaWRhdG9yXSA6IFtdO1xuXG4gICAgY29udHJvbD8uc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICBjb250cm9sPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9IGNvbnRyb2wgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBvbkNoYW5nZShldmVudDogYW55KTogdm9pZCB7fVxuXG4gIG9uVG91Y2hlZCgpOiB2b2lkIHt9XG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHt9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbn1cbiIsIjxuZ3gtcmVjYXB0Y2hhMiBbc2l0ZUtleV09XCJzaXRlS2V5XCIgW3NpemVdPVwicmVjYXB0Y2hhU2l6ZVwiIFtobF09XCJsYW5nXCIgW3RoZW1lXT1cInRoZW1lXCIgW3R5cGVdPVwicmVjYXB0Y2hhVHlwZVwiXG4gICAgW3VzZUdsb2JhbERvbWFpbl09XCJ1c2VHbG9iYWxEb21haW5cIiBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIj5cbjwvbmd4LXJlY2FwdGNoYTI+Il19
|