@bnsights/bbsf-utilities 1.0.42 → 1.0.43

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.
Files changed (124) hide show
  1. package/README.md +4 -0
  2. package/{esm2020 → esm2022}/bnsights-bbsf-utilities.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/bbsf-utilities.module.mjs +59 -59
  4. package/esm2022/lib/shared/authentication/auth.service.mjs +211 -0
  5. package/{esm2020 → esm2022}/lib/shared/authentication/index.mjs +1 -1
  6. package/{esm2020 → esm2022}/lib/shared/config/environment.mjs +11 -11
  7. package/{esm2020 → esm2022}/lib/shared/config/word/constants.mjs +104 -104
  8. package/{esm2020 → esm2022}/lib/shared/config/word/docx-document.mjs +347 -347
  9. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/index.mjs +3 -3
  10. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/render-document-file.mjs +153 -153
  11. package/{esm2020 → esm2022}/lib/shared/config/word/helpers/xml-builder.mjs +1835 -1835
  12. package/{esm2020 → esm2022}/lib/shared/config/word/html-to-docx.mjs +186 -186
  13. package/{esm2020 → esm2022}/lib/shared/config/word/index.mjs +49 -49
  14. package/{esm2020 → esm2022}/lib/shared/config/word/namespaces.mjs +36 -36
  15. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/content-types.mjs +2 -2
  16. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/core.mjs +6 -6
  17. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/document-rels.mjs +3 -3
  18. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/document.template.mjs +17 -17
  19. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/font-table.mjs +3 -3
  20. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/generic-rels.mjs +2 -2
  21. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/index.mjs +12 -12
  22. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/numbering.mjs +3 -3
  23. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/rels.mjs +3 -3
  24. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/settings.mjs +3 -3
  25. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/styles.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/theme.mjs +3 -3
  27. package/{esm2020 → esm2022}/lib/shared/config/word/schemas/web-settings.mjs +3 -3
  28. package/{esm2020 → esm2022}/lib/shared/config/word/utils/color-conversion.mjs +59 -59
  29. package/{esm2020 → esm2022}/lib/shared/config/word/utils/list.mjs +50 -50
  30. package/{esm2020 → esm2022}/lib/shared/config/word/utils/unit-conversion.mjs +29 -29
  31. package/{esm2020 → esm2022}/lib/shared/config/word/utils/url.mjs +6 -6
  32. package/{esm2020 → esm2022}/lib/shared/config/word/utils/vnode.mjs +2 -2
  33. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/documentTemplate.mjs +12 -12
  34. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/index.mjs +3 -3
  35. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/mhtPartTemplate.mjs +3 -3
  37. package/{esm2020 → esm2022}/lib/shared/config/word/word-work/utils.mjs +25 -25
  38. package/{esm2020 → esm2022}/lib/shared/enums/authentication-modes-enums.mjs +7 -7
  39. package/{esm2020 → esm2022}/lib/shared/index.mjs +3 -3
  40. package/{esm2020 → esm2022}/lib/shared/models/UserModel.mjs +2 -2
  41. package/{esm2020 → esm2022}/lib/shared/models/area-model.mjs +2 -2
  42. package/{esm2020 → esm2022}/lib/shared/models/error-model.mjs +2 -2
  43. package/{esm2020 → esm2022}/lib/shared/models/index.mjs +4 -4
  44. package/{esm2020 → esm2022}/lib/shared/models/request-options-model.mjs +10 -10
  45. package/{esm2020 → esm2022}/lib/shared/models/word-document-model.mjs +7 -7
  46. package/{esm2020 → esm2022}/lib/shared/services/appearance-configuration.service.mjs +35 -35
  47. package/esm2022/lib/shared/services/configuration.service.mjs +24 -0
  48. package/{esm2020 → esm2022}/lib/shared/services/control-validation.service.mjs +173 -173
  49. package/esm2022/lib/shared/services/environment.service.mjs +75 -0
  50. package/{esm2020 → esm2022}/lib/shared/services/index.mjs +11 -11
  51. package/{esm2020 → esm2022}/lib/shared/services/master-layout.service.mjs +72 -72
  52. package/{esm2020 → esm2022}/lib/shared/services/request-handler.service.mjs +199 -199
  53. package/{esm2020 → esm2022}/lib/shared/services/styles-bundle.service.mjs +55 -55
  54. package/{esm2020 → esm2022}/lib/shared/services/translate.service.mjs +14 -14
  55. package/{esm2020 → esm2022}/lib/shared/services/translation-resolver.service.mjs +6 -6
  56. package/{esm2020 → esm2022}/lib/shared/services/utility.service.mjs +87 -87
  57. package/{esm2020 → esm2022}/lib/shared/services/word-document.service.mjs +38 -38
  58. package/{esm2020 → esm2022}/public-api.mjs +29 -29
  59. package/{fesm2020 → fesm2022}/bnsights-bbsf-utilities.mjs +3836 -3836
  60. package/{fesm2020 → fesm2022}/bnsights-bbsf-utilities.mjs.map +1 -1
  61. package/index.d.ts +5 -5
  62. package/lib/bbsf-utilities.module.d.ts +10 -10
  63. package/lib/shared/authentication/auth.service.d.ts +52 -52
  64. package/lib/shared/authentication/index.d.ts +1 -1
  65. package/lib/shared/config/environment.d.ts +1 -1
  66. package/lib/shared/config/word/constants.d.ts +124 -124
  67. package/lib/shared/config/word/docx-document.d.ts +73 -73
  68. package/lib/shared/config/word/helpers/index.d.ts +1 -1
  69. package/lib/shared/config/word/helpers/render-document-file.d.ts +2 -2
  70. package/lib/shared/config/word/helpers/xml-builder.d.ts +16 -16
  71. package/lib/shared/config/word/html-to-docx.d.ts +1 -1
  72. package/lib/shared/config/word/index.d.ts +1 -1
  73. package/lib/shared/config/word/namespaces.d.ts +36 -36
  74. package/lib/shared/config/word/schemas/content-types.d.ts +1 -1
  75. package/lib/shared/config/word/schemas/core.d.ts +1 -1
  76. package/lib/shared/config/word/schemas/document-rels.d.ts +1 -1
  77. package/lib/shared/config/word/schemas/document.template.d.ts +4 -4
  78. package/lib/shared/config/word/schemas/font-table.d.ts +1 -1
  79. package/lib/shared/config/word/schemas/generic-rels.d.ts +1 -1
  80. package/lib/shared/config/word/schemas/index.d.ts +12 -12
  81. package/lib/shared/config/word/schemas/numbering.d.ts +1 -1
  82. package/lib/shared/config/word/schemas/rels.d.ts +1 -1
  83. package/lib/shared/config/word/schemas/settings.d.ts +1 -1
  84. package/lib/shared/config/word/schemas/styles.d.ts +1 -1
  85. package/lib/shared/config/word/schemas/theme.d.ts +1 -1
  86. package/lib/shared/config/word/schemas/web-settings.d.ts +1 -1
  87. package/lib/shared/config/word/utils/color-conversion.d.ts +7 -7
  88. package/lib/shared/config/word/utils/list.d.ts +6 -6
  89. package/lib/shared/config/word/utils/unit-conversion.d.ts +29 -29
  90. package/lib/shared/config/word/utils/url.d.ts +1 -1
  91. package/lib/shared/config/word/utils/vnode.d.ts +1 -1
  92. package/lib/shared/config/word/word-work/templates/documentTemplate.d.ts +12 -12
  93. package/lib/shared/config/word/word-work/templates/index.d.ts +3 -3
  94. package/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.d.ts +1 -1
  95. package/lib/shared/config/word/word-work/templates/mhtPartTemplate.d.ts +1 -1
  96. package/lib/shared/config/word/word-work/utils.d.ts +1 -1
  97. package/lib/shared/enums/authentication-modes-enums.d.ts +6 -6
  98. package/lib/shared/index.d.ts +3 -3
  99. package/lib/shared/models/UserModel.d.ts +6 -6
  100. package/lib/shared/models/area-model.d.ts +4 -4
  101. package/lib/shared/models/error-model.d.ts +5 -5
  102. package/lib/shared/models/index.d.ts +4 -4
  103. package/lib/shared/models/request-options-model.d.ts +11 -11
  104. package/lib/shared/models/word-document-model.d.ts +16 -16
  105. package/lib/shared/services/appearance-configuration.service.d.ts +14 -14
  106. package/lib/shared/services/configuration.service.d.ts +10 -10
  107. package/lib/shared/services/control-validation.service.d.ts +23 -23
  108. package/lib/shared/services/environment.service.d.ts +25 -25
  109. package/lib/shared/services/index.d.ts +11 -11
  110. package/lib/shared/services/master-layout.service.d.ts +24 -24
  111. package/lib/shared/services/request-handler.service.d.ts +33 -33
  112. package/lib/shared/services/styles-bundle.service.d.ts +12 -12
  113. package/lib/shared/services/translate.service.d.ts +6 -6
  114. package/lib/shared/services/translation-resolver.service.d.ts +2 -2
  115. package/lib/shared/services/utility.service.d.ts +23 -23
  116. package/lib/shared/services/word-document.service.d.ts +8 -8
  117. package/package.json +28 -29
  118. package/public-api.d.ts +17 -17
  119. package/bnsights-bbsf-utilities-1.0.42.tgz +0 -0
  120. package/esm2020/lib/shared/authentication/auth.service.mjs +0 -211
  121. package/esm2020/lib/shared/services/configuration.service.mjs +0 -24
  122. package/esm2020/lib/shared/services/environment.service.mjs +0 -75
  123. package/fesm2015/bnsights-bbsf-utilities.mjs +0 -4555
  124. package/fesm2015/bnsights-bbsf-utilities.mjs.map +0 -1
@@ -1,173 +1,173 @@
1
- import { __decorate } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { BlockUI } from 'ng-block-ui';
4
- import { RequestOptionsModel } from '../models';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from ".";
7
- export class ControlValidationService {
8
- constructor(utilityService) {
9
- this.utilityService = utilityService;
10
- this.requestOptions = new RequestOptionsModel();
11
- this.isCreatedBefor = false;
12
- }
13
- showGlobalError(errorMessage, formId, deleteOld) {
14
- let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');
15
- if (globalErorrElement.length > 0) {
16
- this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');
17
- }
18
- if (this.isCreatedBefor == true) {
19
- this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');
20
- }
21
- // tslint:disable-next-line: prefer-const
22
- if (!formId)
23
- formId = "currentForm";
24
- var object = document.getElementById(formId);
25
- const tagName = 'div';
26
- // tslint:disable-next-line: prefer-const
27
- var elementToAppend = document.createElement(tagName); // Your tag name here
28
- let message = "";
29
- if (!errorMessage || (typeof errorMessage == "string")) {
30
- if (localStorage.getItem('language') == "ar")
31
- message = errorMessage ? errorMessage : "لديك بعص الأخطاء . من فضلك قم بالمراجعه ";
32
- else
33
- message = errorMessage ? errorMessage : "You have some validation errors. Please check below";
34
- elementToAppend.innerHTML = "<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>" + message + "</li></ul>";
35
- elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';
36
- elementToAppend.id += 'errorId';
37
- // tslint:disable-next-line: prefer-for-of
38
- const elementToAppen = elementToAppend.cloneNode(true);
39
- // let targetElement = object.getElementsByClassName("b-control")[0];
40
- object.insertBefore(elementToAppen, object.firstChild);
41
- }
42
- else {
43
- let ul = document.createElement("ul");
44
- elementToAppend.appendChild(ul);
45
- for (const iterator of errorMessage) {
46
- let li = document.createElement("li");
47
- li.innerHTML = iterator;
48
- ul.appendChild(li);
49
- }
50
- elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';
51
- elementToAppend.id += 'errorId';
52
- // tslint:disable-next-line: prefer-for-of
53
- const elementToAppen = elementToAppend.cloneNode(true);
54
- // let targetElement = object.getElementsByClassName("b-control")[0];
55
- object.insertBefore(elementToAppen, object.firstChild);
56
- }
57
- this.isCreatedBefor = true;
58
- }
59
- removeGlobalError() {
60
- const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');
61
- // tslint:disable-next-line: prefer-for-of
62
- for (let index = 0; index < removedList.length; index++) {
63
- const element = removedList[index];
64
- element.remove();
65
- }
66
- this.isCreatedBefor = false;
67
- }
68
- showInputErro(errors) {
69
- // show error on top of form
70
- this.showGlobalError();
71
- // remove old error from server
72
- this.removeElementsByClass('errortemplet');
73
- // Looping in error Object
74
- for (const key in errors) {
75
- if (errors.hasOwnProperty(key)) {
76
- for (const iterator of errors[key]) {
77
- const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];
78
- if (input.attributes['ng-reflect-name'].value === key) {
79
- this.removeElementsByClass('erroclass-' + key);
80
- const tagName = 'p';
81
- const elementToAppend = document.createElement(tagName); // Your tag name here
82
- elementToAppend.innerHTML = iterator;
83
- elementToAppend.style.color = 'red';
84
- elementToAppend.className += 'errortemplet erroclass-' + key;
85
- const elementToappen = elementToAppend.cloneNode(true);
86
- input.parentNode.insertBefore(elementToappen, input.lastChild);
87
- break;
88
- }
89
- }
90
- }
91
- }
92
- }
93
- removeElementsByClass(className) {
94
- const elements = document.getElementsByClassName(className);
95
- while (elements.length > 0) {
96
- elements[0].parentNode.removeChild(elements[0]);
97
- }
98
- }
99
- renderServerErrors(form, err, requestOptions, formId) {
100
- if (err.error == null) {
101
- return;
102
- }
103
- let errorsArray = [];
104
- this.requestOptions = requestOptions;
105
- if (err.error.validation_errors) {
106
- err.error.validation_errors.forEach((element) => {
107
- let fieldName = element.field;
108
- let controlName = element.controlName;
109
- let message = element.message;
110
- if (form == null) {
111
- this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);
112
- }
113
- else if (controlName && !this.hasControlName(form, controlName)) {
114
- errorsArray.push(`${fieldName}: ${message}`);
115
- }
116
- else {
117
- this.setFieldError(form, controlName, fieldName, message);
118
- this.showGlobalError(null, formId);
119
- }
120
- });
121
- if (errorsArray.length > 0)
122
- this.showGlobalError(errorsArray, formId);
123
- }
124
- }
125
- hasControlName(form, controlName) {
126
- let control = form.get(controlName);
127
- return control != null;
128
- }
129
- setFieldError(form, controlName, fieldName, message) {
130
- let control = null;
131
- if (controlName)
132
- control = this.getControlFormNameByFieldName(form, controlName);
133
- else
134
- control = this.getControlFormNameByFieldName(form, fieldName.split('.')[0]);
135
- let errors = { "errorMassage": message };
136
- let fieldNameArray = fieldName.split('.');
137
- if (fieldNameArray.length >= 1) {
138
- switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {
139
- case "english":
140
- let englishControl = control.get("English");
141
- englishControl.setErrors(errors);
142
- break;
143
- case "arabic":
144
- let arabicControl = control.get("Arabic");
145
- arabicControl.setErrors(errors);
146
- break;
147
- default:
148
- control.setErrors(errors);
149
- }
150
- }
151
- else {
152
- this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);
153
- }
154
- }
155
- getControlFormNameByFieldName(form, fieldName) {
156
- const formControls = form.controls;
157
- let controlName = Object.keys(formControls).find(c => c.toLocaleLowerCase() === fieldName.toLocaleLowerCase());
158
- let control = form.get(controlName);
159
- return control;
160
- }
161
- }
162
- ControlValidationServicefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ControlValidationService, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable });
163
- ControlValidationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ControlValidationService, providedIn: 'root' });
164
- __decorate([
165
- BlockUI()
166
- ], ControlValidationService.prototype, "blockUI", void 0);
167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ControlValidationService, decorators: [{
168
- type: Injectable,
169
- args: [{
170
- providedIn: 'root'
171
- }]
172
- }], ctorParameters: function () { return [{ type: i1.UtilityService }]; }, propDecorators: { blockUI: [] } });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWxpZGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9jb250cm9sLXZhbGlkYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFhLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBYyxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBTTVELE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRjFDLG1CQUFjLEdBQXdCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUt4RSxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUZ2QixDQUFDO0lBTUQsZUFBZSxDQUFDLFlBQWdDLEVBQUUsTUFBZSxFQUFFLFNBQW1CO1FBQ3BGLElBQUksa0JBQWtCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLDJEQUEyRCxDQUFDLENBQUE7UUFDckgsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQ3pGO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMscUJBQXFCLENBQUMsMkRBQTJELENBQUMsQ0FBQztTQUN6RjtRQUNELHlDQUF5QztRQUN6QyxJQUFJLENBQUMsTUFBTTtZQUNULE1BQU0sR0FBRyxhQUFhLENBQUE7UUFDeEIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxL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O29CQUNoQyxNQUFNO2dCQUNSO29CQUNFLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDN0I7U0FDRjthQUNJO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQy9LO0lBQ0gsQ0FBQztJQUVPLDZCQUE2QixDQUFDLElBQWUsRUFBRSxTQUFpQjtRQUN0RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssU0FBUyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUMvRyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O3NIQTVLVSx3QkFBd0I7MEhBQXhCLHdCQUF3QixjQUZ2QixNQUFNO0FBV1A7SUFBVixPQUFPLEVBQUU7eURBQW9COzRGQVRuQix3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CO3FHQVVZLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJsb2NrVUksIE5nQmxvY2tVSSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuaW1wb3J0IHsgRXJyb3JNb2RlbCwgUmVxdWVzdE9wdGlvbnNNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9uc01vZGVsID0gbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGlzQ3JlYXRlZEJlZm9yID0gZmFsc2U7XHJcblxyXG4gIEBCbG9ja1VJKCkgYmxvY2tVSTogTmdCbG9ja1VJO1xyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoZXJyb3JNZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW10sIGZvcm1JZD86IHN0cmluZywgZGVsZXRlT2xkPzogYm9vbGVhbikge1xyXG4gICAgbGV0IGdsb2JhbEVyb3JyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FsZXJ0IGFsZXJ0LUludmFsaWRWYWxpZGF0aW9uIGJnLWxpZ2h0LWRhbmdlciB0ZXh0LWRhbmdlcicpXHJcbiAgICBpZiAoZ2xvYmFsRXJvcnJFbGVtZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5yZW1vdmVFbGVtZW50c0J5Q2xhc3MoJ2FsZXJ0IGFsZXJ0LUludmFsaWRWYWxpZGF0aW9uIGJnLWxpZ2h0LWRhbmdlciB0ZXh0LWRhbmdlcicpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNDcmVhdGVkQmVmb3IgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnJlbW92ZUVsZW1lbnRzQnlDbGFzcygnYWxlcnQgYWxlcnQtSW52YWxpZFZhbGlkYXRpb24gYmctbGlnaHQtZGFuZ2VyIHRleHQtZGFuZ2VyJyk7XHJcbiAgICB9XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHByZWZlci1jb25zdFxyXG4gICAgaWYgKCFmb3JtSWQpXHJcbiAgICAgIGZvcm1JZCA9IFwiY3VycmVudEZvcm1cIlxyXG4gICAgdmFyIG9iamVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZvcm1JZCk7XHJcbiAgICBjb25zdCB0YWdOYW1lID0gJ2Rpdic7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHByZWZlci1jb25zdFxyXG4gICAgdmFyIGVsZW1lbnRUb0FwcGVuZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7IC8vIFlvdXIgdGFnIG5hbWUgaGVyZVxyXG4gICAgbGV0IG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gXCJcIjtcclxuXHJcbiAgICBpZiAoIWVycm9yTWVzc2FnZSB8fCAodHlwZW9mIGVycm9yTWVzc2FnZSA9PSBcInN0cmluZ1wiKSkge1xyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gXCJhclwiKVxyXG4gICAgICAgIG1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UgPyBlcnJvck1lc3NhZ2UgOiBcItmE2K/ZitmDINio2LnYtSDYp9mE2KPYrti32KfYoSAuINmF2YYg2YHYttmE2YMg2YLZhSDYqNin2YTZhdix2KfYrNi52YcgXCI7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBtZXNzYWdlID0gZXJyb3JNZXNzYWdlID8gZXJyb3JNZXNzYWdlIDogXCJZb3UgaGF2ZSBzb21lIHZhbGlkYXRpb24gZXJyb3JzLiBQbGVhc2UgY2hlY2sgYmVsb3dcIlxyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuaW5uZXJIVE1MID0gXCI8dWwgY2xhc3M9J2xpc3QtdW5zdHlsZWQgbS0wIHB5LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmcy02Jz48bGk+PGkgY2xhc3M9J2ZhIGZhLXRpbWVzLWNpcmNsZSB0ZXh0LWRhbmdlciBtZS0zIGZzLTInPjwvaT5cIiArIG1lc3NhZ2UgKyBcIjwvbGk+PC91bD5cIjtcclxuICAgICAgZWxlbWVudFRvQXBwZW5kLmNsYXNzTmFtZSArPSAnYWxlcnQgYWxlcnQtSW52YWxpZFZhbGlkYXRpb24gYmctbGlnaHQtZGFuZ2VyIHRleHQtZGFuZ2VyJztcclxuICAgICAgZWxlbWVudFRvQXBwZW5kLmlkICs9ICdlcnJvcklkJztcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBwcmVmZXItZm9yLW9mXHJcbiAgICAgIGNvbnN0IGVsZW1lbnRUb0FwcGVuID0gZWxlbWVudFRvQXBwZW5kLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgLy8gbGV0IHRhcmdldEVsZW1lbnQgPSBvYmplY3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImItY29udHJvbFwiKVswXTtcclxuICAgICAgb2JqZWN0Lmluc2VydEJlZm9yZShlbGVtZW50VG9BcHBlbiwgb2JqZWN0LmZpcnN0Q2hpbGQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB1bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiKTtcclxuICAgICAgZWxlbWVudFRvQXBwZW5kLmFwcGVuZENoaWxkKHVsKTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgbGV0IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xyXG4gICAgICAgIGxpLmlubmVySFRNTCA9IGl0ZXJhdG9yO1xyXG4gICAgICAgIHVsLmFwcGVuZENoaWxkKGxpKTtcclxuICAgICAgfVxyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuY2xhc3NOYW1lICs9ICdhbGVydCBhbGVydC1JbnZhbGlkVmFsaWRhdGlvbiBiZy1saWdodC1kYW5nZXIgdGV4dC1kYW5nZXInO1xyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuaWQgKz0gJ2Vycm9ySWQnO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHByZWZlci1mb3Itb2ZcclxuICAgICAgY29uc3QgZWxlbWVudFRvQXBwZW4gPSBlbGVtZW50VG9BcHBlbmQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAvLyBsZXQgdGFyZ2V0RWxlbWVudCA9IG9iamVjdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYi1jb250cm9sXCIpWzBdO1xyXG4gICAgICBvYmplY3QuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FwcGVuLCBvYmplY3QuZmlyc3RDaGlsZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzQ3JlYXRlZEJlZm9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUdsb2JhbEVycm9yKCkge1xyXG4gICAgY29uc3QgcmVtb3ZlZExpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhbGVydCBhbGVydC1JbnZhbGlkVmFsaWRhdGlvbiBiZy1saWdodC1kYW5nZXIgdGV4dC1kYW5nZXInKTtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogcHJlZmVyLWZvci1vZlxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJlbW92ZWRMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gcmVtb3ZlZExpc3RbaW5kZXhdO1xyXG4gICAgICBlbGVtZW50LnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2hvd0lucHV0RXJybyhlcnJvcnM6IGFueSkge1xyXG4gICAgLy8gc2hvdyBlcnJvciBvbiB0b3Agb2YgZm9ybSBcclxuICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAvLyByZW1vdmUgb2xkIGVycm9yIGZyb20gc2VydmVyXHJcbiAgICB0aGlzLnJlbW92ZUVsZW1lbnRzQnlDbGFzcygnZXJyb3J0ZW1wbGV0Jyk7XHJcbiAgICAvLyBMb29waW5nIGluIGVycm9yIE9iamVjdFxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XHJcbiAgICAgIGlmIChlcnJvcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JzW2tleV0pIHtcclxuICAgICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW25nLXJlZmxlY3QtbmFtZT0nICsga2V5ICsgJ10nKVswXTtcclxuICAgICAgICAgIGlmICgoaW5wdXQuYXR0cmlidXRlc1snbmctcmVmbGVjdC1uYW1lJ10udmFsdWUgYXMgc3RyaW5nKSA9PT0ga2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRWxlbWVudHNCeUNsYXNzKCdlcnJvY2xhc3MtJyArIGtleSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhZ05hbWUgPSAncCdcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvQXBwZW5kID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsgLy8gWW91ciB0YWcgbmFtZSBoZXJlXHJcbiAgICAgICAgICAgIGVsZW1lbnRUb0FwcGVuZC5pbm5lckhUTUwgPSBpdGVyYXRvcjtcclxuICAgICAgICAgICAgZWxlbWVudFRvQXBwZW5kLnN0eWxlLmNvbG9yID0gJ3JlZCdcclxuICAgICAgICAgICAgZWxlbWVudFRvQXBwZW5kLmNsYXNzTmFtZSArPSAnZXJyb3J0ZW1wbGV0IGVycm9jbGFzcy0nICsga2V5O1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9hcHBlbiA9IGVsZW1lbnRUb0FwcGVuZC5jbG9uZU5vZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgIGlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb2FwcGVuLCBpbnB1dC5sYXN0Q2hpbGQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUVsZW1lbnRzQnlDbGFzcyhjbGFzc05hbWUpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWUpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJTZXJ2ZXJFcnJvcnMoZm9ybTogRm9ybUdyb3VwLCBlcnI6IEh0dHBFcnJvclJlc3BvbnNlLCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdE9wdGlvbnNNb2RlbCwgZm9ybUlkPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXJyLmVycm9yID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGVycm9yc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIHRoaXMucmVxdWVzdE9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucztcclxuXHJcbiAgICBpZiAoZXJyLmVycm9yLnZhbGlkYXRpb25fZXJyb3JzKSB7XHJcbiAgICAgIGVyci5lcnJvci52YWxpZGF0aW9uX2Vycm9ycy5mb3JFYWNoKChlbGVtZW50OiBFcnJvck1vZGVsKSA9PiB7XHJcbiAgICAgICAgbGV0IGZpZWxkTmFtZSA9IGVsZW1lbnQuZmllbGQ7XHJcbiAgICAgICAgbGV0IGNvbnRyb2xOYW1lID0gZWxlbWVudC5jb250cm9sTmFtZTtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IGVsZW1lbnQubWVzc2FnZTtcclxuICAgICAgICBpZiAoZm9ybSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3RPcHRpb25zLmN1c3RvbUVycm9yTWVzc2FnZSA/IHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKHRoaXMucmVxdWVzdE9wdGlvbnMuY3VzdG9tRXJyb3JNZXNzYWdlKSA6IHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKGAke21lc3NhZ2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvbnRyb2xOYW1lICYmICF0aGlzLmhhc0NvbnRyb2xOYW1lKGZvcm0sIGNvbnRyb2xOYW1lKSkge1xyXG4gICAgICAgICAgZXJyb3JzQXJyYXkucHVzaChgJHtmaWVsZE5hbWV9OiAke21lc3NhZ2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRGaWVsZEVycm9yKGZvcm0sIGNvbnRyb2xOYW1lLCBmaWVsZE5hbWUsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IobnVsbCwgZm9ybUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGVycm9yc0FycmF5Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoZXJyb3JzQXJyYXksIGZvcm1JZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQ29udHJvbE5hbWUoZm9ybTogRm9ybUdyb3VwLCBjb250cm9sTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY29udHJvbCA9IGZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgIHJldHVybiBjb250cm9sICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpZWxkRXJyb3IoZm9ybTogRm9ybUdyb3VwLCBjb250cm9sTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgY29udHJvbCA9IG51bGxcclxuXHJcbiAgICBpZiAoY29udHJvbE5hbWUpXHJcbiAgICAgIGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2xGb3JtTmFtZUJ5RmllbGROYW1lKGZvcm0sIGNvbnRyb2xOYW1lKTtcclxuICAgIGVsc2VcclxuICAgICAgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbEZvcm1OYW1lQnlGaWVsZE5hbWUoZm9ybSwgZmllbGROYW1lLnNwbGl0KCcuJylbMF0pO1xyXG5cclxuICAgIGxldCBlcnJvcnMgPSB7IFwiZXJyb3JNYXNzYWdlXCI6IG1lc3NhZ2UgfTtcclxuICAgIGxldCBmaWVsZE5hbWVBcnJheSA9IGZpZWxkTmFtZS5zcGxpdCgnLicpO1xyXG4gICAgaWYgKGZpZWxkTmFtZUFycmF5Lmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgIHN3aXRjaCAoZmllbGROYW1lQXJyYXlbZmllbGROYW1lQXJyYXkubGVuZ3RoIC0gMV0udG9Mb2NhbGVMb3dlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgXCJlbmdsaXNoXCI6XHJcbiAgICAgICAgICBsZXQgZW5nbGlzaENvbnRyb2wgPSBjb250cm9sLmdldChcIkVuZ2xpc2hcIilcclxuICAgICAgICAgIGVuZ2xpc2hDb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImFyYWJpY1wiOlxyXG4gICAgICAgICAgbGV0IGFyYWJpY0NvbnRyb2wgPSBjb250cm9sLmdldChcIkFyYWJpY1wiKVxyXG4gICAgICAgICAgYXJhYmljQ29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5yZXF1ZXN0T3B0aW9ucy5jdXN0b21FcnJvck1lc3NhZ2UgPyB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSh0aGlzLnJlcXVlc3RPcHRpb25zLmN1c3RvbUVycm9yTWVzc2FnZSkgOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZShgJHttZXNzYWdlfWApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRyb2xGb3JtTmFtZUJ5RmllbGROYW1lKGZvcm06IEZvcm1Hcm91cCwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9scyA9IGZvcm0uY29udHJvbHM7XHJcbiAgICBsZXQgY29udHJvbE5hbWUgPSBPYmplY3Qua2V5cyhmb3JtQ29udHJvbHMpLmZpbmQoYyA9PiBjLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IGZpZWxkTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcclxuICAgIGxldCBjb250cm9sID0gZm9ybS5nZXQoY29udHJvbE5hbWUpO1xyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
1
+ import { __decorate } from "tslib";
2
+ import { Injectable } from '@angular/core';
3
+ import { BlockUI } from 'ng-block-ui';
4
+ import { RequestOptionsModel } from '../models';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from ".";
7
+ export class ControlValidationService {
8
+ constructor(utilityService) {
9
+ this.utilityService = utilityService;
10
+ this.requestOptions = new RequestOptionsModel();
11
+ this.isCreatedBefor = false;
12
+ }
13
+ showGlobalError(errorMessage, formId, deleteOld) {
14
+ let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');
15
+ if (globalErorrElement.length > 0) {
16
+ this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');
17
+ }
18
+ if (this.isCreatedBefor == true) {
19
+ this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');
20
+ }
21
+ // tslint:disable-next-line: prefer-const
22
+ if (!formId)
23
+ formId = "currentForm";
24
+ var object = document.getElementById(formId);
25
+ const tagName = 'div';
26
+ // tslint:disable-next-line: prefer-const
27
+ var elementToAppend = document.createElement(tagName); // Your tag name here
28
+ let message = "";
29
+ if (!errorMessage || (typeof errorMessage == "string")) {
30
+ if (localStorage.getItem('language') == "ar")
31
+ message = errorMessage ? errorMessage : "لديك بعص الأخطاء . من فضلك قم بالمراجعه ";
32
+ else
33
+ message = errorMessage ? errorMessage : "You have some validation errors. Please check below";
34
+ elementToAppend.innerHTML = "<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>" + message + "</li></ul>";
35
+ elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';
36
+ elementToAppend.id += 'errorId';
37
+ // tslint:disable-next-line: prefer-for-of
38
+ const elementToAppen = elementToAppend.cloneNode(true);
39
+ // let targetElement = object.getElementsByClassName("b-control")[0];
40
+ object.insertBefore(elementToAppen, object.firstChild);
41
+ }
42
+ else {
43
+ let ul = document.createElement("ul");
44
+ elementToAppend.appendChild(ul);
45
+ for (const iterator of errorMessage) {
46
+ let li = document.createElement("li");
47
+ li.innerHTML = iterator;
48
+ ul.appendChild(li);
49
+ }
50
+ elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';
51
+ elementToAppend.id += 'errorId';
52
+ // tslint:disable-next-line: prefer-for-of
53
+ const elementToAppen = elementToAppend.cloneNode(true);
54
+ // let targetElement = object.getElementsByClassName("b-control")[0];
55
+ object.insertBefore(elementToAppen, object.firstChild);
56
+ }
57
+ this.isCreatedBefor = true;
58
+ }
59
+ removeGlobalError() {
60
+ const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');
61
+ // tslint:disable-next-line: prefer-for-of
62
+ for (let index = 0; index < removedList.length; index++) {
63
+ const element = removedList[index];
64
+ element.remove();
65
+ }
66
+ this.isCreatedBefor = false;
67
+ }
68
+ showInputErro(errors) {
69
+ // show error on top of form
70
+ this.showGlobalError();
71
+ // remove old error from server
72
+ this.removeElementsByClass('errortemplet');
73
+ // Looping in error Object
74
+ for (const key in errors) {
75
+ if (errors.hasOwnProperty(key)) {
76
+ for (const iterator of errors[key]) {
77
+ const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];
78
+ if (input.attributes['ng-reflect-name'].value === key) {
79
+ this.removeElementsByClass('erroclass-' + key);
80
+ const tagName = 'p';
81
+ const elementToAppend = document.createElement(tagName); // Your tag name here
82
+ elementToAppend.innerHTML = iterator;
83
+ elementToAppend.style.color = 'red';
84
+ elementToAppend.className += 'errortemplet erroclass-' + key;
85
+ const elementToappen = elementToAppend.cloneNode(true);
86
+ input.parentNode.insertBefore(elementToappen, input.lastChild);
87
+ break;
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }
93
+ removeElementsByClass(className) {
94
+ const elements = document.getElementsByClassName(className);
95
+ while (elements.length > 0) {
96
+ elements[0].parentNode.removeChild(elements[0]);
97
+ }
98
+ }
99
+ renderServerErrors(form, err, requestOptions, formId) {
100
+ if (err.error == null) {
101
+ return;
102
+ }
103
+ let errorsArray = [];
104
+ this.requestOptions = requestOptions;
105
+ if (err.error.validation_errors) {
106
+ err.error.validation_errors.forEach((element) => {
107
+ let fieldName = element.field;
108
+ let controlName = element.controlName;
109
+ let message = element.message;
110
+ if (form == null) {
111
+ this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);
112
+ }
113
+ else if (controlName && !this.hasControlName(form, controlName)) {
114
+ errorsArray.push(`${fieldName}: ${message}`);
115
+ }
116
+ else {
117
+ this.setFieldError(form, controlName, fieldName, message);
118
+ this.showGlobalError(null, formId);
119
+ }
120
+ });
121
+ if (errorsArray.length > 0)
122
+ this.showGlobalError(errorsArray, formId);
123
+ }
124
+ }
125
+ hasControlName(form, controlName) {
126
+ let control = form.get(controlName);
127
+ return control != null;
128
+ }
129
+ setFieldError(form, controlName, fieldName, message) {
130
+ let control = null;
131
+ if (controlName)
132
+ control = this.getControlFormNameByFieldName(form, controlName);
133
+ else
134
+ control = this.getControlFormNameByFieldName(form, fieldName.split('.')[0]);
135
+ let errors = { "errorMassage": message };
136
+ let fieldNameArray = fieldName.split('.');
137
+ if (fieldNameArray.length >= 1) {
138
+ switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {
139
+ case "english":
140
+ let englishControl = control.get("English");
141
+ englishControl.setErrors(errors);
142
+ break;
143
+ case "arabic":
144
+ let arabicControl = control.get("Arabic");
145
+ arabicControl.setErrors(errors);
146
+ break;
147
+ default:
148
+ control.setErrors(errors);
149
+ }
150
+ }
151
+ else {
152
+ this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);
153
+ }
154
+ }
155
+ getControlFormNameByFieldName(form, fieldName) {
156
+ const formControls = form.controls;
157
+ let controlName = Object.keys(formControls).find(c => c.toLocaleLowerCase() === fieldName.toLocaleLowerCase());
158
+ let control = form.get(controlName);
159
+ return control;
160
+ }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ControlValidationService, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
162
+ static { thisprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ControlValidationService, providedIn: 'root' }); }
163
+ }
164
+ __decorate([
165
+ BlockUI()
166
+ ], ControlValidationService.prototype, "blockUI", void 0);
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: ControlValidationService, decorators: [{
168
+ type: Injectable,
169
+ args: [{
170
+ providedIn: 'root'
171
+ }]
172
+ }], ctorParameters: () => [{ type: i1.UtilityService }], propDecorators: { blockUI: [] } });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC12YWxpZGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9jb250cm9sLXZhbGlkYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFhLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBYyxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7O0FBTTVELE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRjFDLG1CQUFjLEdBQXdCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUt4RSxtQkFBYyxHQUFHLEtBQUssQ0FBQztJQUZ2QixDQUFDO0lBTUQsZUFBZSxDQUFDLFlBQWdDLEVBQUUsTUFBZSxFQUFFLFNBQW1CO1FBQ3BGLElBQUksa0JBQWtCLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLDJEQUEyRCxDQUFDLENBQUE7UUFDckgsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1NBQ3pGO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMscUJBQXFCLENBQUMsMkRBQTJELENBQUMsQ0FBQztTQUN6RjtRQUNELHlDQUF5QztRQUN6QyxJQUFJLENBQUMsTUFBTTtZQUNULE1BQU0sR0FBRyxhQUFhLENBQUE7UUFDeEIsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBRyxL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O29CQUNoQyxNQUFNO2dCQUNSO29CQUNFLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDN0I7U0FDRjthQUNJO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1NBQy9LO0lBQ0gsQ0FBQztJQUVPLDZCQUE2QixDQUFDLElBQWUsRUFBRSxTQUFpQjtRQUN0RSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssU0FBUyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUMvRyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OEdBNUtVLHdCQUF3QjtrSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07O0FBV1A7SUFBVixPQUFPLEVBQUU7eURBQW9COzJGQVRuQix3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CO21GQVVZLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEJsb2NrVUksIE5nQmxvY2tVSSB9IGZyb20gJ25nLWJsb2NrLXVpJztcclxuaW1wb3J0IHsgRXJyb3JNb2RlbCwgUmVxdWVzdE9wdGlvbnNNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250cm9sVmFsaWRhdGlvblNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0T3B0aW9uc01vZGVsID0gbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsaXR5U2VydmljZTogVXRpbGl0eVNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIGlzQ3JlYXRlZEJlZm9yID0gZmFsc2U7XHJcblxyXG4gIEBCbG9ja1VJKCkgYmxvY2tVSTogTmdCbG9ja1VJO1xyXG5cclxuICBzaG93R2xvYmFsRXJyb3IoZXJyb3JNZXNzYWdlPzogc3RyaW5nIHwgc3RyaW5nW10sIGZvcm1JZD86IHN0cmluZywgZGVsZXRlT2xkPzogYm9vbGVhbikge1xyXG4gICAgbGV0IGdsb2JhbEVyb3JyRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FsZXJ0IGFsZXJ0LUludmFsaWRWYWxpZGF0aW9uIGJnLWxpZ2h0LWRhbmdlciB0ZXh0LWRhbmdlcicpXHJcbiAgICBpZiAoZ2xvYmFsRXJvcnJFbGVtZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5yZW1vdmVFbGVtZW50c0J5Q2xhc3MoJ2FsZXJ0IGFsZXJ0LUludmFsaWRWYWxpZGF0aW9uIGJnLWxpZ2h0LWRhbmdlciB0ZXh0LWRhbmdlcicpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNDcmVhdGVkQmVmb3IgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnJlbW92ZUVsZW1lbnRzQnlDbGFzcygnYWxlcnQgYWxlcnQtSW52YWxpZFZhbGlkYXRpb24gYmctbGlnaHQtZGFuZ2VyIHRleHQtZGFuZ2VyJyk7XHJcbiAgICB9XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHByZWZlci1jb25zdFxyXG4gICAgaWYgKCFmb3JtSWQpXHJcbiAgICAgIGZvcm1JZCA9IFwiY3VycmVudEZvcm1cIlxyXG4gICAgdmFyIG9iamVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZvcm1JZCk7XHJcbiAgICBjb25zdCB0YWdOYW1lID0gJ2Rpdic7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHByZWZlci1jb25zdFxyXG4gICAgdmFyIGVsZW1lbnRUb0FwcGVuZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnTmFtZSk7IC8vIFlvdXIgdGFnIG5hbWUgaGVyZVxyXG4gICAgbGV0IG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gXCJcIjtcclxuXHJcbiAgICBpZiAoIWVycm9yTWVzc2FnZSB8fCAodHlwZW9mIGVycm9yTWVzc2FnZSA9PSBcInN0cmluZ1wiKSkge1xyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlJykgPT0gXCJhclwiKVxyXG4gICAgICAgIG1lc3NhZ2UgPSBlcnJvck1lc3NhZ2UgPyBlcnJvck1lc3NhZ2UgOiBcItmE2K/ZitmDINio2LnYtSDYp9mE2KPYrti32KfYoSAuINmF2YYg2YHYttmE2YMg2YLZhSDYqNin2YTZhdix2KfYrNi52YcgXCI7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBtZXNzYWdlID0gZXJyb3JNZXNzYWdlID8gZXJyb3JNZXNzYWdlIDogXCJZb3UgaGF2ZSBzb21lIHZhbGlkYXRpb24gZXJyb3JzLiBQbGVhc2UgY2hlY2sgYmVsb3dcIlxyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuaW5uZXJIVE1MID0gXCI8dWwgY2xhc3M9J2xpc3QtdW5zdHlsZWQgbS0wIHB5LTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmcy02Jz48bGk+PGkgY2xhc3M9J2ZhIGZhLXRpbWVzLWNpcmNsZSB0ZXh0LWRhbmdlciBtZS0zIGZzLTInPjwvaT5cIiArIG1lc3NhZ2UgKyBcIjwvbGk+PC91bD5cIjtcclxuICAgICAgZWxlbWVudFRvQXBwZW5kLmNsYXNzTmFtZSArPSAnYWxlcnQgYWxlcnQtSW52YWxpZFZhbGlkYXRpb24gYmctbGlnaHQtZGFuZ2VyIHRleHQtZGFuZ2VyJztcclxuICAgICAgZWxlbWVudFRvQXBwZW5kLmlkICs9ICdlcnJvcklkJztcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBwcmVmZXItZm9yLW9mXHJcbiAgICAgIGNvbnN0IGVsZW1lbnRUb0FwcGVuID0gZWxlbWVudFRvQXBwZW5kLmNsb25lTm9kZSh0cnVlKTtcclxuICAgICAgLy8gbGV0IHRhcmdldEVsZW1lbnQgPSBvYmplY3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImItY29udHJvbFwiKVswXTtcclxuICAgICAgb2JqZWN0Lmluc2VydEJlZm9yZShlbGVtZW50VG9BcHBlbiwgb2JqZWN0LmZpcnN0Q2hpbGQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCB1bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ1bFwiKTtcclxuICAgICAgZWxlbWVudFRvQXBwZW5kLmFwcGVuZENoaWxkKHVsKTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgbGV0IGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpXCIpO1xyXG4gICAgICAgIGxpLmlubmVySFRNTCA9IGl0ZXJhdG9yO1xyXG4gICAgICAgIHVsLmFwcGVuZENoaWxkKGxpKTtcclxuICAgICAgfVxyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuY2xhc3NOYW1lICs9ICdhbGVydCBhbGVydC1JbnZhbGlkVmFsaWRhdGlvbiBiZy1saWdodC1kYW5nZXIgdGV4dC1kYW5nZXInO1xyXG4gICAgICBlbGVtZW50VG9BcHBlbmQuaWQgKz0gJ2Vycm9ySWQnO1xyXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IHByZWZlci1mb3Itb2ZcclxuICAgICAgY29uc3QgZWxlbWVudFRvQXBwZW4gPSBlbGVtZW50VG9BcHBlbmQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgICAvLyBsZXQgdGFyZ2V0RWxlbWVudCA9IG9iamVjdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYi1jb250cm9sXCIpWzBdO1xyXG4gICAgICBvYmplY3QuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FwcGVuLCBvYmplY3QuZmlyc3RDaGlsZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzQ3JlYXRlZEJlZm9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUdsb2JhbEVycm9yKCkge1xyXG4gICAgY29uc3QgcmVtb3ZlZExpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhbGVydCBhbGVydC1JbnZhbGlkVmFsaWRhdGlvbiBiZy1saWdodC1kYW5nZXIgdGV4dC1kYW5nZXInKTtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogcHJlZmVyLWZvci1vZlxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJlbW92ZWRMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gcmVtb3ZlZExpc3RbaW5kZXhdO1xyXG4gICAgICBlbGVtZW50LnJlbW92ZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0NyZWF0ZWRCZWZvciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2hvd0lucHV0RXJybyhlcnJvcnM6IGFueSkge1xyXG4gICAgLy8gc2hvdyBlcnJvciBvbiB0b3Agb2YgZm9ybSBcclxuICAgIHRoaXMuc2hvd0dsb2JhbEVycm9yKCk7XHJcbiAgICAvLyByZW1vdmUgb2xkIGVycm9yIGZyb20gc2VydmVyXHJcbiAgICB0aGlzLnJlbW92ZUVsZW1lbnRzQnlDbGFzcygnZXJyb3J0ZW1wbGV0Jyk7XHJcbiAgICAvLyBMb29waW5nIGluIGVycm9yIE9iamVjdFxyXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JzKSB7XHJcbiAgICAgIGlmIChlcnJvcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGZvciAoY29uc3QgaXRlcmF0b3Igb2YgZXJyb3JzW2tleV0pIHtcclxuICAgICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW25nLXJlZmxlY3QtbmFtZT0nICsga2V5ICsgJ10nKVswXTtcclxuICAgICAgICAgIGlmICgoaW5wdXQuYXR0cmlidXRlc1snbmctcmVmbGVjdC1uYW1lJ10udmFsdWUgYXMgc3RyaW5nKSA9PT0ga2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRWxlbWVudHNCeUNsYXNzKCdlcnJvY2xhc3MtJyArIGtleSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhZ05hbWUgPSAncCdcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudFRvQXBwZW5kID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTsgLy8gWW91ciB0YWcgbmFtZSBoZXJlXHJcbiAgICAgICAgICAgIGVsZW1lbnRUb0FwcGVuZC5pbm5lckhUTUwgPSBpdGVyYXRvcjtcclxuICAgICAgICAgICAgZWxlbWVudFRvQXBwZW5kLnN0eWxlLmNvbG9yID0gJ3JlZCdcclxuICAgICAgICAgICAgZWxlbWVudFRvQXBwZW5kLmNsYXNzTmFtZSArPSAnZXJyb3J0ZW1wbGV0IGVycm9jbGFzcy0nICsga2V5O1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50VG9hcHBlbiA9IGVsZW1lbnRUb0FwcGVuZC5jbG9uZU5vZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgIGlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb2FwcGVuLCBpbnB1dC5sYXN0Q2hpbGQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUVsZW1lbnRzQnlDbGFzcyhjbGFzc05hbWUpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWUpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJTZXJ2ZXJFcnJvcnMoZm9ybTogRm9ybUdyb3VwLCBlcnI6IEh0dHBFcnJvclJlc3BvbnNlLCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdE9wdGlvbnNNb2RlbCwgZm9ybUlkPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXJyLmVycm9yID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGVycm9yc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIHRoaXMucmVxdWVzdE9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucztcclxuXHJcbiAgICBpZiAoZXJyLmVycm9yLnZhbGlkYXRpb25fZXJyb3JzKSB7XHJcbiAgICAgIGVyci5lcnJvci52YWxpZGF0aW9uX2Vycm9ycy5mb3JFYWNoKChlbGVtZW50OiBFcnJvck1vZGVsKSA9PiB7XHJcbiAgICAgICAgbGV0IGZpZWxkTmFtZSA9IGVsZW1lbnQuZmllbGQ7XHJcbiAgICAgICAgbGV0IGNvbnRyb2xOYW1lID0gZWxlbWVudC5jb250cm9sTmFtZTtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IGVsZW1lbnQubWVzc2FnZTtcclxuICAgICAgICBpZiAoZm9ybSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcXVlc3RPcHRpb25zLmN1c3RvbUVycm9yTWVzc2FnZSA/IHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKHRoaXMucmVxdWVzdE9wdGlvbnMuY3VzdG9tRXJyb3JNZXNzYWdlKSA6IHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKGAke21lc3NhZ2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvbnRyb2xOYW1lICYmICF0aGlzLmhhc0NvbnRyb2xOYW1lKGZvcm0sIGNvbnRyb2xOYW1lKSkge1xyXG4gICAgICAgICAgZXJyb3JzQXJyYXkucHVzaChgJHtmaWVsZE5hbWV9OiAke21lc3NhZ2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRGaWVsZEVycm9yKGZvcm0sIGNvbnRyb2xOYW1lLCBmaWVsZE5hbWUsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IobnVsbCwgZm9ybUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKGVycm9yc0FycmF5Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgdGhpcy5zaG93R2xvYmFsRXJyb3IoZXJyb3JzQXJyYXksIGZvcm1JZClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzQ29udHJvbE5hbWUoZm9ybTogRm9ybUdyb3VwLCBjb250cm9sTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY29udHJvbCA9IGZvcm0uZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgIHJldHVybiBjb250cm9sICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEZpZWxkRXJyb3IoZm9ybTogRm9ybUdyb3VwLCBjb250cm9sTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgY29udHJvbCA9IG51bGxcclxuXHJcbiAgICBpZiAoY29udHJvbE5hbWUpXHJcbiAgICAgIGNvbnRyb2wgPSB0aGlzLmdldENvbnRyb2xGb3JtTmFtZUJ5RmllbGROYW1lKGZvcm0sIGNvbnRyb2xOYW1lKTtcclxuICAgIGVsc2VcclxuICAgICAgY29udHJvbCA9IHRoaXMuZ2V0Q29udHJvbEZvcm1OYW1lQnlGaWVsZE5hbWUoZm9ybSwgZmllbGROYW1lLnNwbGl0KCcuJylbMF0pO1xyXG5cclxuICAgIGxldCBlcnJvcnMgPSB7IFwiZXJyb3JNYXNzYWdlXCI6IG1lc3NhZ2UgfTtcclxuICAgIGxldCBmaWVsZE5hbWVBcnJheSA9IGZpZWxkTmFtZS5zcGxpdCgnLicpO1xyXG4gICAgaWYgKGZpZWxkTmFtZUFycmF5Lmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgIHN3aXRjaCAoZmllbGROYW1lQXJyYXlbZmllbGROYW1lQXJyYXkubGVuZ3RoIC0gMV0udG9Mb2NhbGVMb3dlckNhc2UoKSkge1xyXG4gICAgICAgIGNhc2UgXCJlbmdsaXNoXCI6XHJcbiAgICAgICAgICBsZXQgZW5nbGlzaENvbnRyb2wgPSBjb250cm9sLmdldChcIkVuZ2xpc2hcIilcclxuICAgICAgICAgIGVuZ2xpc2hDb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImFyYWJpY1wiOlxyXG4gICAgICAgICAgbGV0IGFyYWJpY0NvbnRyb2wgPSBjb250cm9sLmdldChcIkFyYWJpY1wiKVxyXG4gICAgICAgICAgYXJhYmljQ29udHJvbC5zZXRFcnJvcnMoZXJyb3JzKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb250cm9sLnNldEVycm9ycyhlcnJvcnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5yZXF1ZXN0T3B0aW9ucy5jdXN0b21FcnJvck1lc3NhZ2UgPyB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSh0aGlzLnJlcXVlc3RPcHRpb25zLmN1c3RvbUVycm9yTWVzc2FnZSkgOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZShgJHttZXNzYWdlfWApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENvbnRyb2xGb3JtTmFtZUJ5RmllbGROYW1lKGZvcm06IEZvcm1Hcm91cCwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGZvcm1Db250cm9scyA9IGZvcm0uY29udHJvbHM7XHJcbiAgICBsZXQgY29udHJvbE5hbWUgPSBPYmplY3Qua2V5cyhmb3JtQ29udHJvbHMpLmZpbmQoYyA9PiBjLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IGZpZWxkTmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcclxuICAgIGxldCBjb250cm9sID0gZm9ybS5nZXQoY29udHJvbE5hbWUpO1xyXG4gICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -0,0 +1,75 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { environment } from '../config/environment';
3
+ import * as i0 from "@angular/core";
4
+ export class EnvironmentService {
5
+ static { this.areaList = []; }
6
+ static { this.AreaList = []; }
7
+ getEnvironmentObject() {
8
+ return environment;
9
+ }
10
+ getBaseUrl() {
11
+ return environment["BBSF_BaseURL"];
12
+ }
13
+ getApiUrl() {
14
+ return environment["BBSF_ApiUrl"];
15
+ }
16
+ getProductionMode() {
17
+ return environment["BBSF_IsProduction"];
18
+ }
19
+ getDefaultLanguage() {
20
+ return environment["BBSF_DefaultLanguage"];
21
+ }
22
+ getIdentityServerUrl() {
23
+ return environment["BBSF_IdentityServerUrl"];
24
+ }
25
+ getIsIdentityServerExternal() {
26
+ return environment["BBSF_IsExternalIdentityServer"];
27
+ }
28
+ getIsIdentityServerClientId() {
29
+ return environment["BBSF_IdentityServer_Client_Id"];
30
+ }
31
+ getIsIdentityServerClientSecret() {
32
+ return environment["BBSF_IdentityServer_Client_Secret"];
33
+ }
34
+ getBBSFAuthenticationMode() {
35
+ let Mode = environment["BBSF_AuthenticationMode"];
36
+ return Mode;
37
+ }
38
+ getUAEPassBaseUrl() {
39
+ let Mode = environment["UAEPass_BaseUrl"];
40
+ return Mode;
41
+ }
42
+ getUAEPassClientID() {
43
+ let Mode = environment["UAEPass_ClientID"];
44
+ return Mode;
45
+ }
46
+ getUAEPassRedirectUrl() {
47
+ let Mode = environment["UAEPass_RedirectUrl"];
48
+ return Mode;
49
+ }
50
+ getUAEPassAuthorizationEndPoint() {
51
+ let Mode = environment["UAEPass_AuthorizationEndPoint"];
52
+ return Mode;
53
+ }
54
+ getUAEPassRedirectLogoutUrl() {
55
+ let Mode = environment["UAEPass_RedirectLogoutUrl"];
56
+ return Mode;
57
+ }
58
+ getUAEPassLogoutEndPoint() {
59
+ let Mode = environment["UAEPass_LogoutEndPoint"];
60
+ return Mode;
61
+ }
62
+ getIsEnableWindowsAuthentication() {
63
+ let Mode = environment["BBSF_Enable_WindowsAuthentication"];
64
+ return Mode.toLocaleLowerCase() == 'true';
65
+ }
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EnvironmentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
67
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EnvironmentService, providedIn: 'root' }); }
68
+ }
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.6", ngImport: i0, type: EnvironmentService, decorators: [{
70
+ type: Injectable,
71
+ args: [{
72
+ providedIn: 'root'
73
+ }]
74
+ }] });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Vudmlyb25tZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBTXBELE1BQU0sT0FBTyxrQkFBa0I7YUFFdEIsYUFBUSxHQUFnQixFQUFFLEFBQWxCLENBQWtCO2FBRTNCLGFBQVEsR0FBZ0IsRUFBRSxBQUFsQixDQUFrQjtJQUVoQyxvQkFBb0I7UUFDbEIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0lBQ25DLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBWSxDQUFBO0lBQ3BELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxXQUFXLENBQUMsc0JBQXNCLENBQVcsQ0FBQTtJQUN0RCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE9BQU8sV0FBVyxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLFdBQVcsQ0FBQywrQkFBK0IsQ0FBVyxDQUFBO0lBQy9ELENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxXQUFXLENBQUMsK0JBQStCLENBQVcsQ0FBQTtJQUMvRCxDQUFDO0lBRUQsK0JBQStCO1FBQzdCLE9BQU8sV0FBVyxDQUFDLG1DQUFtQyxDQUFXLENBQUE7SUFDbkUsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixJQUFJLElBQUksR0FBRyxXQUFXLENBQUMseUJBQXlCLENBQVcsQ0FBQTtRQUMzRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsaUJBQWlCLENBQVcsQ0FBQTtRQUNuRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFXLENBQUE7UUFDcEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxxQkFBcUIsQ0FBVyxDQUFBO1FBQ3ZELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELCtCQUErQjtRQUM3QixJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsK0JBQStCLENBQVcsQ0FBQTtRQUNqRSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLDJCQUEyQixDQUFXLENBQUE7UUFDN0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBVyxDQUFBO1FBQzFELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdELGdDQUFnQztRQUM5QixJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsbUNBQW1DLENBQVcsQ0FBQTtRQUNyRSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFFLE1BQU0sQ0FBQztJQUMxQyxDQUFDOzhHQTlFVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzsyRkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uL2NvbmZpZy9lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IEFyZWFNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbnZpcm9ubWVudFNlcnZpY2Uge1xyXG5cclxuICBzdGF0aWMgYXJlYUxpc3Q6IEFyZWFNb2RlbFtdID0gW11cclxuXHJcbiBzdGF0aWMgQXJlYUxpc3Q6IEFyZWFNb2RlbFtdID0gW11cclxuXHJcbiAgZ2V0RW52aXJvbm1lbnRPYmplY3QoKSB7XHJcbiAgICByZXR1cm4gZW52aXJvbm1lbnQ7XHJcbiAgfVxyXG5cclxuICBnZXRCYXNlVXJsKCkge1xyXG4gICAgcmV0dXJuIGVudmlyb25tZW50W1wiQkJTRl9CYXNlVVJMXCJdXHJcbiAgfVxyXG5cclxuICBnZXRBcGlVcmwoKSB7XHJcbiAgICByZXR1cm4gZW52aXJvbm1lbnRbXCJCQlNGX0FwaVVybFwiXVxyXG4gIH1cclxuXHJcbiAgZ2V0UHJvZHVjdGlvbk1vZGUoKSB7XHJcbiAgICByZXR1cm4gZW52aXJvbm1lbnRbXCJCQlNGX0lzUHJvZHVjdGlvblwiXSBhcyBib29sZWFuXHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0TGFuZ3VhZ2UoKSB7XHJcbiAgICByZXR1cm4gZW52aXJvbm1lbnRbXCJCQlNGX0RlZmF1bHRMYW5ndWFnZVwiXSBhcyBzdHJpbmdcclxuICB9XHJcblxyXG4gIGdldElkZW50aXR5U2VydmVyVXJsKCkge1xyXG4gICAgcmV0dXJuIGVudmlyb25tZW50W1wiQkJTRl9JZGVudGl0eVNlcnZlclVybFwiXVxyXG4gIH1cclxuXHJcbiAgZ2V0SXNJZGVudGl0eVNlcnZlckV4dGVybmFsKCkge1xyXG4gICAgcmV0dXJuIGVudmlyb25tZW50W1wiQkJTRl9Jc0V4dGVybmFsSWRlbnRpdHlTZXJ2ZXJcIl0gYXMgc3RyaW5nXHJcbiAgfVxyXG5cclxuICBnZXRJc0lkZW50aXR5U2VydmVyQ2xpZW50SWQoKSB7XHJcbiAgICByZXR1cm4gZW52aXJvbm1lbnRbXCJCQlNGX0lkZW50aXR5U2VydmVyX0NsaWVudF9JZFwiXSBhcyBzdHJpbmdcclxuICB9XHJcblxyXG4gIGdldElzSWRlbnRpdHlTZXJ2ZXJDbGllbnRTZWNyZXQoKSB7XHJcbiAgICByZXR1cm4gZW52aXJvbm1lbnRbXCJCQlNGX0lkZW50aXR5U2VydmVyX0NsaWVudF9TZWNyZXRcIl0gYXMgc3RyaW5nXHJcbiAgfVxyXG5cclxuICBnZXRCQlNGQXV0aGVudGljYXRpb25Nb2RlKCkge1xyXG4gICAgbGV0IE1vZGUgPSBlbnZpcm9ubWVudFtcIkJCU0ZfQXV0aGVudGljYXRpb25Nb2RlXCJdIGFzIHN0cmluZ1xyXG4gICAgcmV0dXJuIE1vZGU7XHJcbiAgfVxyXG5cclxuICBnZXRVQUVQYXNzQmFzZVVybCgpIHtcclxuICAgIGxldCBNb2RlID0gZW52aXJvbm1lbnRbXCJVQUVQYXNzX0Jhc2VVcmxcIl0gYXMgc3RyaW5nXHJcbiAgICByZXR1cm4gTW9kZTtcclxuICB9XHJcbiAgZ2V0VUFFUGFzc0NsaWVudElEKCkge1xyXG4gICAgbGV0IE1vZGUgPSBlbnZpcm9ubWVudFtcIlVBRVBhc3NfQ2xpZW50SURcIl0gYXMgc3RyaW5nXHJcbiAgICByZXR1cm4gTW9kZTtcclxuICB9XHJcbiAgZ2V0VUFFUGFzc1JlZGlyZWN0VXJsKCkge1xyXG4gICAgbGV0IE1vZGUgPSBlbnZpcm9ubWVudFtcIlVBRVBhc3NfUmVkaXJlY3RVcmxcIl0gYXMgc3RyaW5nXHJcbiAgICByZXR1cm4gTW9kZTtcclxuICB9XHJcbiAgZ2V0VUFFUGFzc0F1dGhvcml6YXRpb25FbmRQb2ludCgpIHtcclxuICAgIGxldCBNb2RlID0gZW52aXJvbm1lbnRbXCJVQUVQYXNzX0F1dGhvcml6YXRpb25FbmRQb2ludFwiXSBhcyBzdHJpbmdcclxuICAgIHJldHVybiBNb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VUFFUGFzc1JlZGlyZWN0TG9nb3V0VXJsKCkge1xyXG4gICAgbGV0IE1vZGUgPSBlbnZpcm9ubWVudFtcIlVBRVBhc3NfUmVkaXJlY3RMb2dvdXRVcmxcIl0gYXMgc3RyaW5nXHJcbiAgICByZXR1cm4gTW9kZTtcclxuICB9XHJcblxyXG4gIGdldFVBRVBhc3NMb2dvdXRFbmRQb2ludCgpIHtcclxuICAgIGxldCBNb2RlID0gZW52aXJvbm1lbnRbXCJVQUVQYXNzX0xvZ291dEVuZFBvaW50XCJdIGFzIHN0cmluZ1xyXG4gICAgcmV0dXJuIE1vZGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0SXNFbmFibGVXaW5kb3dzQXV0aGVudGljYXRpb24oKSB7XHJcbiAgICBsZXQgTW9kZSA9IGVudmlyb25tZW50W1wiQkJTRl9FbmFibGVfV2luZG93c0F1dGhlbnRpY2F0aW9uXCJdIGFzIHN0cmluZ1xyXG4gICAgcmV0dXJuIE1vZGUudG9Mb2NhbGVMb3dlckNhc2UoKT09J3RydWUnO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,12 +1,12 @@
1
- export * from './appearance-configuration.service';
2
- export * from './configuration.service';
3
- export * from './control-validation.service';
4
- export * from './environment.service';
5
- export * from './master-layout.service';
6
- export * from './request-handler.service';
7
- export * from './styles-bundle.service';
8
- export * from './translate.service';
9
- export * from './translation-resolver.service';
10
- export * from './utility.service';
11
- export * from './word-document.service';
1
+ export * from './appearance-configuration.service';
2
+ export * from './configuration.service';
3
+ export * from './control-validation.service';
4
+ export * from './environment.service';
5
+ export * from './master-layout.service';
6
+ export * from './request-handler.service';
7
+ export * from './styles-bundle.service';
8
+ export * from './translate.service';
9
+ export * from './translation-resolver.service';
10
+ export * from './utility.service';
11
+ export * from './word-document.service';
12
12
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwcGVhcmFuY2UtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnRyb2wtdmFsaWRhdGlvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXN0ZXItbGF5b3V0LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3JlcXVlc3QtaGFuZGxlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zdHlsZXMtYnVuZGxlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi90cmFuc2xhdGlvbi1yZXNvbHZlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlsaXR5LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3dvcmQtZG9jdW1lbnQuc2VydmljZSc7XHJcbiJdfQ==