coer-elements 0.0.25 → 0.0.27
Sign up to get free protection for your applications and to get access to all the features.
- package/esm2022/pipes/lib/no-image.pipe.mjs +4 -4
- package/esm2022/tools/lib/service.class.mjs +23 -22
- package/fesm2022/coer-elements-pipes.mjs +3 -3
- package/fesm2022/coer-elements-pipes.mjs.map +1 -1
- package/fesm2022/coer-elements-tools.mjs +22 -21
- package/fesm2022/coer-elements-tools.mjs.map +1 -1
- package/package.json +1 -1
@@ -1,16 +1,16 @@
|
|
1
1
|
import { Pipe } from '@angular/core';
|
2
|
-
import {
|
2
|
+
import { Tools } from 'coer-elements/tools';
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
export class NoImagePipe {
|
5
5
|
transform(value) {
|
6
|
-
const NO_IMAGE = '
|
6
|
+
const NO_IMAGE = 'coer-elements/images/no-image.png';
|
7
7
|
if (Tools.IsOnlyWhiteSpace(value)) {
|
8
8
|
return NO_IMAGE;
|
9
9
|
}
|
10
10
|
else if (typeof value === 'string') {
|
11
11
|
return value;
|
12
12
|
}
|
13
|
-
Files.ConvertToBase64(value).then(base64 => { return base64
|
13
|
+
//Files.ConvertToBase64(value as File).then(base64 => { return base64 });
|
14
14
|
return NO_IMAGE;
|
15
15
|
}
|
16
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoImagePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
20
20
|
type: Pipe,
|
21
21
|
args: [{ name: 'noImage' }]
|
22
22
|
}] });
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8taW1hZ2UucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvcGlwZXMvbGliL25vLWltYWdlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFTLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUduRCxNQUFNLE9BQU8sV0FBVztJQUVwQixTQUFTLENBQUMsS0FBdUM7UUFDN0MsTUFBTSxRQUFRLEdBQUcsbUNBQW1DLENBQUM7UUFFckQsSUFBRyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUcsQ0FBQztZQUNoQyxPQUFPLFFBQVEsQ0FBQztRQUNwQixDQUFDO2FBRUksSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQseUVBQXlFO1FBQ3pFLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7K0dBZlEsV0FBVzs2R0FBWCxXQUFXOzs0RkFBWCxXQUFXO2tCQUR2QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsZXMsIFRvb2xzIH0gZnJvbSAnY29lci1lbGVtZW50cy90b29scyc7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdub0ltYWdlJyB9KVxyXG5leHBvcnQgY2xhc3MgTm9JbWFnZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZyB8IEZpbGUgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBOT19JTUFHRSA9ICdjb2VyLWVsZW1lbnRzL2ltYWdlcy9uby1pbWFnZS5wbmcnO1xyXG5cclxuICAgICAgICBpZihUb29scy5Jc09ubHlXaGl0ZVNwYWNlKHZhbHVlKSApIHtcclxuICAgICAgICAgICAgcmV0dXJuIE5PX0lNQUdFO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL0ZpbGVzLkNvbnZlcnRUb0Jhc2U2NCh2YWx1ZSBhcyBGaWxlKS50aGVuKGJhc2U2NCA9PiB7IHJldHVybiBiYXNlNjQgfSk7XHJcbiAgICAgICAgcmV0dXJuIE5PX0lNQUdFO1xyXG4gICAgfVxyXG59Il19
|
@@ -43,7 +43,7 @@ export class Service {
|
|
43
43
|
},
|
44
44
|
error: (httpError) => {
|
45
45
|
this.ReleaseSubscription(this._GET$);
|
46
|
-
|
46
|
+
this.AlertError(httpError, request.alertError);
|
47
47
|
Resolve({
|
48
48
|
body: {},
|
49
49
|
status: httpError.status,
|
@@ -54,7 +54,7 @@ export class Service {
|
|
54
54
|
complete: () => {
|
55
55
|
this.ReleaseSubscription(this._GET$);
|
56
56
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
57
|
-
|
57
|
+
this.alert.Success(request.alertSuccess);
|
58
58
|
}
|
59
59
|
}
|
60
60
|
});
|
@@ -77,7 +77,7 @@ export class Service {
|
|
77
77
|
},
|
78
78
|
error: (httpError) => {
|
79
79
|
this.ReleaseSubscription(this._POST$);
|
80
|
-
|
80
|
+
this.AlertError(httpError, request.alertError);
|
81
81
|
Resolve({
|
82
82
|
body: {},
|
83
83
|
status: httpError.status,
|
@@ -88,7 +88,7 @@ export class Service {
|
|
88
88
|
complete: () => {
|
89
89
|
this.ReleaseSubscription(this._POST$);
|
90
90
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
91
|
-
|
91
|
+
this.alert.Success(request.alertSuccess);
|
92
92
|
}
|
93
93
|
}
|
94
94
|
});
|
@@ -111,7 +111,7 @@ export class Service {
|
|
111
111
|
},
|
112
112
|
error: (httpError) => {
|
113
113
|
this.ReleaseSubscription(this._PUT$);
|
114
|
-
|
114
|
+
this.AlertError(httpError, request.alertError);
|
115
115
|
Resolve({
|
116
116
|
body: {},
|
117
117
|
status: httpError.status,
|
@@ -122,7 +122,7 @@ export class Service {
|
|
122
122
|
complete: () => {
|
123
123
|
this.ReleaseSubscription(this._PUT$);
|
124
124
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
125
|
-
|
125
|
+
this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
|
126
126
|
}
|
127
127
|
}
|
128
128
|
});
|
@@ -145,7 +145,7 @@ export class Service {
|
|
145
145
|
},
|
146
146
|
error: (httpError) => {
|
147
147
|
this.ReleaseSubscription(this._PATCH$);
|
148
|
-
|
148
|
+
this.AlertError(httpError, request.alertError);
|
149
149
|
Resolve({
|
150
150
|
body: {},
|
151
151
|
status: httpError.status,
|
@@ -156,7 +156,7 @@ export class Service {
|
|
156
156
|
complete: () => {
|
157
157
|
this.ReleaseSubscription(this._PATCH$);
|
158
158
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
159
|
-
|
159
|
+
this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
|
160
160
|
}
|
161
161
|
}
|
162
162
|
});
|
@@ -179,7 +179,7 @@ export class Service {
|
|
179
179
|
},
|
180
180
|
error: (httpError) => {
|
181
181
|
this.ReleaseSubscription(this._DELETE$);
|
182
|
-
|
182
|
+
this.AlertError(httpError, request.alertError);
|
183
183
|
Resolve({
|
184
184
|
body: {},
|
185
185
|
status: httpError.status,
|
@@ -190,7 +190,7 @@ export class Service {
|
|
190
190
|
complete: () => {
|
191
191
|
this.ReleaseSubscription(this._DELETE$);
|
192
192
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
193
|
-
|
193
|
+
this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');
|
194
194
|
}
|
195
195
|
}
|
196
196
|
});
|
@@ -200,48 +200,49 @@ export class Service {
|
|
200
200
|
AlertError(httpError, message) {
|
201
201
|
if (httpError.status >= 500) {
|
202
202
|
if (Tools.IsNotOnlyWhiteSpace(message)) {
|
203
|
-
|
203
|
+
this.alert.Error('', message, 'fa-solid fa-bug', null);
|
204
204
|
}
|
205
205
|
}
|
206
206
|
else if (httpError.status < 500) {
|
207
207
|
switch (httpError.status) {
|
208
208
|
case 400: {
|
209
|
-
|
209
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');
|
210
210
|
break;
|
211
211
|
}
|
212
212
|
case 401: {
|
213
|
-
|
213
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');
|
214
214
|
break;
|
215
215
|
}
|
216
216
|
case 404: {
|
217
|
-
|
217
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');
|
218
218
|
break;
|
219
219
|
}
|
220
220
|
case 405: {
|
221
|
-
|
221
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');
|
222
222
|
break;
|
223
223
|
}
|
224
224
|
case 406: {
|
225
|
-
|
225
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');
|
226
226
|
break;
|
227
227
|
}
|
228
228
|
case 409: {
|
229
|
-
|
229
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');
|
230
230
|
break;
|
231
231
|
}
|
232
232
|
case 413: {
|
233
|
-
|
233
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');
|
234
234
|
break;
|
235
235
|
}
|
236
236
|
default: {
|
237
237
|
if (httpError.status <= 0) {
|
238
|
-
|
238
|
+
this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);
|
239
239
|
}
|
240
|
-
else
|
241
|
-
|
240
|
+
else
|
241
|
+
this.alert.Warning(httpError.error?.message || httpError.error);
|
242
|
+
break;
|
242
243
|
}
|
243
244
|
}
|
244
245
|
}
|
245
246
|
}
|
246
247
|
}
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvbGliL3NlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFnQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdoQyxNQUFNLE9BQU8sT0FBTztJQUFwQjtRQUVJLFlBQVk7UUFDTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkMsYUFBUSxHQUFHO1lBQ2pCLEVBQUUsRUFBRSxHQUFHO1lBQ1AsT0FBTyxFQUFFLEdBQUc7WUFDWixTQUFTLEVBQUUsR0FBRztZQUNkLFVBQVUsRUFBRSxHQUFHO1lBQ2YsV0FBVyxFQUFFLEdBQUc7WUFDaEIsUUFBUSxFQUFFLEdBQUc7WUFDYixVQUFVLEVBQUUsR0FBRztZQUNmLGFBQWEsRUFBRSxHQUFHO1lBQ2xCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsZUFBZSxFQUFFLEdBQUc7WUFDcEIsVUFBVSxFQUFFLEdBQUc7U0FDbEIsQ0FBQTtJQXFSTCxDQUFDO0lBMVFHLE1BQU07SUFDRSxtQkFBbUIsQ0FBQyxZQUEwQjtRQUNsRCxJQUFJLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFHRCxlQUFlO0lBQ0wsUUFBUSxDQUFJLE9BQXdCO1FBQzFDLE9BQU8sSUFBSSxPQUFPLENBQW1CLE9BQU8sQ0FBQyxF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Q0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwUmVxdWVzdCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBDb2VyQWxlcnQgfSBmcm9tIFwiLi9jb2VyLWFsZXJ0L2NvZXItYWxlcnQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IElIdHRwUmVxdWVzdCwgSUh0dHBSZXNwb25zZSB9IGZyb20gXCJjb2VyLWVsZW1lbnRzL2ludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgVG9vbHMgfSBmcm9tIFwiLi90b29sc1wiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNlcnZpY2Uge1xyXG5cclxuICAgIC8vSW5qZWN0aW9uc1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsZXJ0ID0gaW5qZWN0KENvZXJBbGVydCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgaHR0cENvZGUgPSB7XHJcbiAgICAgICAgT2s6IDIwMCxcclxuICAgICAgICBDcmVhdGVkOiAyMDEsXHJcbiAgICAgICAgTm9Db250ZW50OiAyMDQsXHJcbiAgICAgICAgQmFkUmVxdWVzdDogNDAwLFxyXG4gICAgICAgIFVuYXV0aG9yaXplOiA0MDEsXHJcbiAgICAgICAgTm90Rm91bmQ6IDQwNCxcclxuICAgICAgICBOb3RBbGxvd2VkOiA0MDUsXHJcbiAgICAgICAgTm90QWNjZXB0YWJsZTogNDA2LFxyXG4gICAgICAgIENvbmZsaWN0OiA0MDksXHJcbiAgICAgICAgUGF5bG9hZFRvb0xhcmdlOiA0MTMsXHJcbiAgICAgICAgSW5uZXJFcnJvcjogNTAwXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vU3Vic2NyaXB0aW9uc1xyXG4gICAgcHJpdmF0ZSBfR0VUJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX1BPU1QkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfUFVUJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX1BBVENIJCE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX0RFTEVURSQhOiBTdWJzY3JpcHRpb247XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBSZWxlYXNlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHN1YnNjcmlwdGlvbiAmJiAhc3Vic2NyaXB0aW9uLmNsb3NlZCkgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBIVFRQIEdFVCAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfR0VUPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fR0VUJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIkdFVFwiLCByZXF1ZXN0LnVybCwgeyBwYXJhbXM6IHJlcXVlc3QucXVlcnlQYXJhbXMsIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogSHR0cEV2ZW50PFQ+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogVG9vbHMuQnJlYWtSZWZlcmVuY2U8VD4ocmVzcG9uc2UuYm9keSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9HRVQkKTtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuQWxlcnRFcnJvcihodHRwRXJyb3IsIHJlcXVlc3QuYWxlcnRFcnJvcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogaHR0cEVycm9yLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShyZXF1ZXN0LmFsZXJ0U3VjY2VzcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8vL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2Vzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUE9TVCAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfUE9TVDxUPihyZXF1ZXN0OiBJSHR0cFJlcXVlc3Q8VD4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8SUh0dHBSZXNwb25zZTxUPj4oUmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QT1NUJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIlBPU1RcIiwgcmVxdWVzdC51cmwsIHJlcXVlc3QuYm9keSwgeyBwYXJhbXM6IHJlcXVlc3QucXVlcnlQYXJhbXMsIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogSHR0cEV2ZW50PFQ+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogVG9vbHMuQnJlYWtSZWZlcmVuY2U8VD4ocmVzcG9uc2UuYm9keSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLkFsZXJ0RXJyb3IoaHR0cEVycm9yLCByZXF1ZXN0LmFsZXJ0RXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGh0dHBFcnJvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2Vzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUFVUICovXHJcbiAgICBwcm90ZWN0ZWQgSFRUUF9QVVQ8VD4ocmVxdWVzdDogSUh0dHBSZXF1ZXN0PFQ+KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElIdHRwUmVzcG9uc2U8dm9pZD4+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUFVUJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QVVQkID0gdGhpcy5odHRwLnJlcXVlc3Q8VD4obmV3IEh0dHBSZXF1ZXN0KFwiUFVUXCIsIHJlcXVlc3QudXJsLCByZXF1ZXN0LmJvZHksIHsgcGFyYW1zOiByZXF1ZXN0LnF1ZXJ5UGFyYW1zLCBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMgfSkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEh0dHBFdmVudDxUPiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BVVCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUFVUJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2VzcywgJ1VwZGF0ZWQnLCAnZmEtc29saWQgZmEtYXJyb3dzLXJvdGF0ZSBmYS1zcGluJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUEFUQ0ggKi9cclxuICAgIHByb3RlY3RlZCBIVFRQX1BBVENIPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BBVENIJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QQVRDSCQgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QoXCJQQVRDSFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QQVRDSCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fUEFUQ0gkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5TdWNjZXNzKHJlcXVlc3QuYWxlcnRTdWNjZXNzLCAnVXBkYXRlZCcsICdmYS1zb2xpZCBmYS1hcnJvd3Mtcm90YXRlIGZhLXNwaW4nKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogSFRUUCBERUxFVEUgKi9cclxuICAgIHByb3RlY3RlZCBIVFRQX0RFTEVURTxUPihyZXF1ZXN0OiBJSHR0cFJlcXVlc3Q8VD4pIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8SUh0dHBSZXNwb25zZTx2b2lkPj4oUmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9ERUxFVEUkKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX0RFTEVURSQgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QoXCJERUxFVEVcIiwgcmVxdWVzdC51cmwsIHsgcGFyYW1zOiByZXF1ZXN0LnF1ZXJ5UGFyYW1zLCBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMgfSkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEh0dHBFdmVudDxUPiB8IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0RFTEVURSQpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fREVMRVRFJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5TdWNjZXNzKHJlcXVlc3QuYWxlcnRTdWNjZXNzLCAnRGVsZXRlZCcsICdmYS1yZWd1bGFyIGZhLXRyYXNoLWNhbicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgcHJpdmF0ZSBBbGVydEVycm9yKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsIG1lc3NhZ2U/OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaHR0cEVycm9yLnN0YXR1cyA+PSA1MDApIHtcclxuICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UobWVzc2FnZSkpIHtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5FcnJvcignJywgbWVzc2FnZSwgJ2ZhLXNvbGlkIGZhLWJ1ZycsIG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmIChodHRwRXJyb3Iuc3RhdHVzIDwgNTAwKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaChodHRwRXJyb3Iuc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwMDoge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsICdCYWQgUmVxdWVzdCcsICdmYS1yZWd1bGFyIGZhLWZhY2UtZ3Jpbi1iZWFtLXN3ZWF0IGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MDE6IHtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnVW5hdXRob3JpemUnLCAnZmEtcmVndWxhciBmYS1mYWNlLXJvbGxpbmctZXllcyBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDA0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ05vdCBGb3VuZCcsICdmYS1yZWd1bGFyIGZhLWZhY2UtbWVoIGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MDU6IHtcclxuICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEFsbG93ZWQnLCAnZmEtcmVndWxhciBmYS1mYWNlLWdyaW1hY2UgZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNjoge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsICdOb3QgQWNjZXB0YWJsZScsICdmYS1yZWd1bGFyIGZhLWZhY2UtZnJvd24tb3BlbiBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDA5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ0NvbmZsaWN0JywgJ2ZhLXJlZ3VsYXIgZmEtZmFjZS1kaXp6eSBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgNDEzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ1RvbyBMYXJnZScsICdmYS1yZWd1bGFyIGZhLWZhY2UtZmx1c2hlZCBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cEVycm9yLnN0YXR1cyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5hbGVydC5XYXJuaW5nKCdXaXRob3V0IENvbm5lY3Rpb24nLCAnV0VCIEFQSSBET1dOJywgJ2ZhLXNvbGlkIGZhLXBsdWctY2lyY2xlLXhtYXJrIGZhLWxnJywgbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIC8vdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvbGliL3NlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFnQyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdoQyxNQUFNLE9BQU8sT0FBTztJQUFwQjtRQUVJLFlBQVk7UUFDTyxVQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbkMsYUFBUSxHQUFHO1lBQ2pCLEVBQUUsRUFBRSxHQUFHO1lBQ1AsT0FBTyxFQUFFLEdBQUc7WUFDWixTQUFTLEVBQUUsR0FBRztZQUNkLFVBQVUsRUFBRSxHQUFHO1lBQ2YsV0FBVyxFQUFFLEdBQUc7WUFDaEIsUUFBUSxFQUFFLEdBQUc7WUFDYixVQUFVLEVBQUUsR0FBRztZQUNmLGFBQWEsRUFBRSxHQUFHO1lBQ2xCLFFBQVEsRUFBRSxHQUFHO1lBQ2IsZUFBZSxFQUFFLEdBQUc7WUFDcEIsVUFBVSxFQUFFLEdBQUc7U0FDbEIsQ0FBQTtJQXFSTCxDQUFDO0lBMVFHLE1BQU07SUFDRSxtQkFBbUIsQ0FBQyxZQUEwQjtRQUNsRCxJQUFJLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNO1lBQUUsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFHRCxlQUFlO0lBQ0wsUUFBUSxDQUFJLE9BQXdCO1FBQzFDLE9BQU8sSUFBSSxPQUFPLENBQW1CLE9BQU8sQ0FBQyxF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QyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztvQkFDOUcsTUFBTTtnQkFDVixDQUFDO2dCQUVELEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDUCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO29CQUNqSCxNQUFNO2dCQUNWLENBQUM7Z0JBRUQsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDTixJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxxQ0FBcUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDMUcsQ0FBQzs7d0JBRUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNyRSxNQUFNO2dCQUNWLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBSZXF1ZXN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IENvZXJBbGVydCB9IGZyb20gXCIuL2NvZXItYWxlcnQvY29lci1hbGVydC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSUh0dHBSZXF1ZXN0LCBJSHR0cFJlc3BvbnNlIH0gZnJvbSBcImNvZXItZWxlbWVudHMvaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBUb29scyB9IGZyb20gXCIuL3Rvb2xzXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU2VydmljZSB7XHJcblxyXG4gICAgLy9JbmplY3Rpb25zXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWxlcnQgPSBpbmplY3QoQ29lckFsZXJ0KTtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG5cclxuICAgIHByb3RlY3RlZCBodHRwQ29kZSA9IHtcclxuICAgICAgICBPazogMjAwLFxyXG4gICAgICAgIENyZWF0ZWQ6IDIwMSxcclxuICAgICAgICBOb0NvbnRlbnQ6IDIwNCxcclxuICAgICAgICBCYWRSZXF1ZXN0OiA0MDAsXHJcbiAgICAgICAgVW5hdXRob3JpemU6IDQwMSxcclxuICAgICAgICBOb3RGb3VuZDogNDA0LFxyXG4gICAgICAgIE5vdEFsbG93ZWQ6IDQwNSxcclxuICAgICAgICBOb3RBY2NlcHRhYmxlOiA0MDYsXHJcbiAgICAgICAgQ29uZmxpY3Q6IDQwOSxcclxuICAgICAgICBQYXlsb2FkVG9vTGFyZ2U6IDQxMyxcclxuICAgICAgICBJbm5lckVycm9yOiA1MDBcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy9TdWJzY3JpcHRpb25zXHJcbiAgICBwcml2YXRlIF9HRVQkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfUE9TVCQhOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIF9QVVQkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfUEFUQ0gkITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfREVMRVRFJCE6IFN1YnNjcmlwdGlvbjtcclxuXHJcblxyXG4gICAgLyoqICovXHJcbiAgICBwcml2YXRlIFJlbGVhc2VTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24pOiB2b2lkIHtcclxuICAgICAgICBpZiAoc3Vic2NyaXB0aW9uICYmICFzdWJzY3JpcHRpb24uY2xvc2VkKSBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgR0VUICovXHJcbiAgICBwcm90ZWN0ZWQgSFRUUF9HRVQ8VD4ocmVxdWVzdDogSUh0dHBSZXF1ZXN0PFQ+KSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPElIdHRwUmVzcG9uc2U8VD4+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fR0VUJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9HRVQkID0gdGhpcy5odHRwLnJlcXVlc3Q8VD4obmV3IEh0dHBSZXF1ZXN0KFwiR0VUXCIsIHJlcXVlc3QudXJsLCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBUb29scy5CcmVha1JlZmVyZW5jZTxUPihyZXNwb25zZS5ib2R5KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQWxlcnRFcnJvcihodHRwRXJyb3IsIHJlcXVlc3QuYWxlcnRFcnJvcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogaHR0cEVycm9yLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0dFVCQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoVG9vbHMuSXNOb3RPbmx5V2hpdGVTcGFjZShyZXF1ZXN0LmFsZXJ0U3VjY2VzcykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC5TdWNjZXNzKHJlcXVlc3QuYWxlcnRTdWNjZXNzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogSFRUUCBQT1NUICovXHJcbiAgICBwcm90ZWN0ZWQgSFRUUF9QT1NUPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPFQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BPU1QkKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX1BPU1QkID0gdGhpcy5odHRwLnJlcXVlc3Q8VD4obmV3IEh0dHBSZXF1ZXN0KFwiUE9TVFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBUb29scy5CcmVha1JlZmVyZW5jZTxUPihyZXNwb25zZS5ib2R5KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2Uuc3RhdHVzVGV4dCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgZXJyb3I6IChodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BPU1QkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkFsZXJ0RXJyb3IoaHR0cEVycm9yLCByZXF1ZXN0LmFsZXJ0RXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGh0dHBFcnJvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QT1NUJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LlN1Y2Nlc3MocmVxdWVzdC5hbGVydFN1Y2Nlc3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBIVFRQIFBVVCAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfUFVUPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BVVCQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fUFVUJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIlBVVFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QVVQkKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLkFsZXJ0RXJyb3IoaHR0cEVycm9yLCByZXF1ZXN0LmFsZXJ0RXJyb3IpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGh0dHBFcnJvci5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9rOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QVVQkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2VzcywgJ1VwZGF0ZWQnLCAnZmEtc29saWQgZmEtYXJyb3dzLXJvdGF0ZSBmYS1zcGluJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqIEhUVFAgUEFUQ0ggKi9cclxuICAgIHByb3RlY3RlZCBIVFRQX1BBVENIPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BBVENIJCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9QQVRDSCQgPSB0aGlzLmh0dHAucmVxdWVzdDxUPihuZXcgSHR0cFJlcXVlc3QoXCJQQVRDSFwiLCByZXF1ZXN0LnVybCwgcmVxdWVzdC5ib2R5LCB7IHBhcmFtczogcmVxdWVzdC5xdWVyeVBhcmFtcywgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzIH0pKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBIdHRwRXZlbnQ8VD4gfCBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UudHlwZSA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLnN0YXR1c1RleHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGVycm9yOiAoaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVsZWFzZVN1YnNjcmlwdGlvbih0aGlzLl9QQVRDSCQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQWxlcnRFcnJvcihodHRwRXJyb3IsIHJlcXVlc3QuYWxlcnRFcnJvcik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7fSBhcyBhbnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogaHR0cEVycm9yLnN0YXR1cyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX1BBVENIJCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKHJlcXVlc3QuYWxlcnRTdWNjZXNzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LlN1Y2Nlc3MocmVxdWVzdC5hbGVydFN1Y2Nlc3MsICdVcGRhdGVkJywgJ2ZhLXNvbGlkIGZhLWFycm93cy1yb3RhdGUgZmEtc3BpbicpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBIVFRQIERFTEVURSAqL1xyXG4gICAgcHJvdGVjdGVkIEhUVFBfREVMRVRFPFQ+KHJlcXVlc3Q6IElIdHRwUmVxdWVzdDxUPikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxJSHR0cFJlc3BvbnNlPHZvaWQ+PihSZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5SZWxlYXNlU3Vic2NyaXB0aW9uKHRoaXMuX0RFTEVURSQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fREVMRVRFJCA9IHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KG5ldyBIdHRwUmVxdWVzdChcIkRFTEVURVwiLCByZXF1ZXN0LnVybCwgeyBwYXJhbXM6IHJlcXVlc3QucXVlcnlQYXJhbXMsIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycyB9KSkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogSHR0cEV2ZW50PFQ+IHwgYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge30gYXMgYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5zdGF0dXNUZXh0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fREVMRVRFJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5BbGVydEVycm9yKGh0dHBFcnJvciwgcmVxdWVzdC5hbGVydEVycm9yKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHt9IGFzIGFueSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBodHRwRXJyb3Iuc3RhdHVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlbGVhc2VTdWJzY3JpcHRpb24odGhpcy5fREVMRVRFJCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKFRvb2xzLklzTm90T25seVdoaXRlU3BhY2UocmVxdWVzdC5hbGVydFN1Y2Nlc3MpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuU3VjY2VzcyhyZXF1ZXN0LmFsZXJ0U3VjY2VzcywgJ0RlbGV0ZWQnLCAnZmEtcmVndWxhciBmYS10cmFzaC1jYW4nKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKiogKi9cclxuICAgIHByaXZhdGUgQWxlcnRFcnJvcihodHRwRXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLCBtZXNzYWdlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGh0dHBFcnJvci5zdGF0dXMgPj0gNTAwKSB7XHJcbiAgICAgICAgICAgIGlmIChUb29scy5Jc05vdE9ubHlXaGl0ZVNwYWNlKG1lc3NhZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0LkVycm9yKCcnLCBtZXNzYWdlLCAnZmEtc29saWQgZmEtYnVnJywgbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKGh0dHBFcnJvci5zdGF0dXMgPCA1MDApIHtcclxuICAgICAgICAgICAgc3dpdGNoKGh0dHBFcnJvci5zdGF0dXMpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgNDAwOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbGVydC5XYXJuaW5nKGh0dHBFcnJvci5lcnJvcj8ubWVzc2FnZSB8fCBodHRwRXJyb3IuZXJyb3IsICdCYWQgUmVxdWVzdCcsICdmYS1yZWd1bGFyIGZhLWZhY2UtZ3Jpbi1iZWFtLXN3ZWF0IGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MDE6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ1VuYXV0aG9yaXplJywgJ2ZhLXJlZ3VsYXIgZmEtZmFjZS1yb2xsaW5nLWV5ZXMgZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNDoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEZvdW5kJywgJ2ZhLXJlZ3VsYXIgZmEtZmFjZS1tZWggZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEFsbG93ZWQnLCAnZmEtcmVndWxhciBmYS1mYWNlLWdyaW1hY2UgZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwNjoge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnTm90IEFjY2VwdGFibGUnLCAnZmEtcmVndWxhciBmYS1mYWNlLWZyb3duLW9wZW4gZmEtbGcnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIDQwOToge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZyhodHRwRXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgaHR0cEVycm9yLmVycm9yLCAnQ29uZmxpY3QnLCAnZmEtcmVndWxhciBmYS1mYWNlLWRpenp5IGZhLWxnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSA0MTM6IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvciwgJ1RvbyBMYXJnZScsICdmYS1yZWd1bGFyIGZhLWZhY2UtZmx1c2hlZCBmYS1sZycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaHR0cEVycm9yLnN0YXR1cyA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnQuV2FybmluZygnV2l0aG91dCBDb25uZWN0aW9uJywgJ1dFQiBBUEkgRE9XTicsICdmYS1zb2xpZCBmYS1wbHVnLWNpcmNsZS14bWFyayBmYS1sZycsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB0aGlzLmFsZXJ0Lldhcm5pbmcoaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
2
|
import { Pipe, NgModule } from '@angular/core';
|
3
3
|
import * as i1 from '@angular/platform-browser';
|
4
|
-
import { Tools
|
4
|
+
import { Tools } from 'coer-elements/tools';
|
5
5
|
|
6
6
|
class HtmlPipe {
|
7
7
|
constructor(sanitizer) {
|
@@ -20,14 +20,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
20
20
|
|
21
21
|
class NoImagePipe {
|
22
22
|
transform(value) {
|
23
|
-
const NO_IMAGE = '
|
23
|
+
const NO_IMAGE = 'coer-elements/images/no-image.png';
|
24
24
|
if (Tools.IsOnlyWhiteSpace(value)) {
|
25
25
|
return NO_IMAGE;
|
26
26
|
}
|
27
27
|
else if (typeof value === 'string') {
|
28
28
|
return value;
|
29
29
|
}
|
30
|
-
Files.ConvertToBase64(value).then(base64 => { return base64
|
30
|
+
//Files.ConvertToBase64(value as File).then(base64 => { return base64 });
|
31
31
|
return NO_IMAGE;
|
32
32
|
}
|
33
33
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoImagePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coer-elements-pipes.mjs","sources":["../../../projects/coer-elements/pipes/lib/html.pipe.ts","../../../projects/coer-elements/pipes/lib/no-image.pipe.ts","../../../projects/coer-elements/pipes/lib/numeric-format.pipe.ts","../../../projects/coer-elements/pipes/lib/pipes.module.ts","../../../projects/coer-elements/pipes/coer-elements-pipes.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'html' })\r\nexport class HtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n transform(value: string): any {\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core'
|
1
|
+
{"version":3,"file":"coer-elements-pipes.mjs","sources":["../../../projects/coer-elements/pipes/lib/html.pipe.ts","../../../projects/coer-elements/pipes/lib/no-image.pipe.ts","../../../projects/coer-elements/pipes/lib/numeric-format.pipe.ts","../../../projects/coer-elements/pipes/lib/pipes.module.ts","../../../projects/coer-elements/pipes/coer-elements-pipes.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({ name: 'html' })\r\nexport class HtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) {}\r\n\r\n transform(value: string): any {\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Files, Tools } from 'coer-elements/tools';\r\n\r\n@Pipe({ name: 'noImage' })\r\nexport class NoImagePipe implements PipeTransform {\r\n\r\n transform(value: string | File | null | undefined): string {\r\n const NO_IMAGE = 'coer-elements/images/no-image.png';\r\n\r\n if(Tools.IsOnlyWhiteSpace(value) ) {\r\n return NO_IMAGE;\r\n }\r\n\r\n else if (typeof value === 'string') {\r\n return value;\r\n }\r\n\r\n //Files.ConvertToBase64(value as File).then(base64 => { return base64 });\r\n return NO_IMAGE;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Tools } from 'coer-elements/tools';\r\n\r\n@Pipe({ name: 'numericFormat' })\r\nexport class NumericFormatPipe implements PipeTransform {\r\n\r\n transform(value: string | number | null | undefined, decimals: number = 0): string {\r\n return Tools.GetNumericFormat(value, decimals);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\n\r\n//Pipes\r\nimport { HtmlPipe } from './html.pipe';\r\nimport { NoImagePipe } from './no-image.pipe';\r\nimport { NumericFormatPipe } from './numeric-format.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n HtmlPipe,\r\n NoImagePipe,\r\n NumericFormatPipe\r\n ],\r\n exports: [\r\n HtmlPipe,\r\n NoImagePipe,\r\n NumericFormatPipe\r\n ]\r\n})\r\nexport class PipesModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAIa,QAAQ,CAAA;AAEjB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;KAAI;AAE/C,IAAA,SAAS,CAAC,KAAa,EAAA;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;KACxD;+GANQ,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAR,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,IAAI;mBAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;;;MCCT,WAAW,CAAA;AAEpB,IAAA,SAAS,CAAC,KAAuC,EAAA;QAC7C,MAAM,QAAQ,GAAG,mCAAmC,CAAC;AAErD,QAAA,IAAG,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAG;AAC/B,YAAA,OAAO,QAAQ,CAAC;SACnB;AAEI,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAChC,YAAA,OAAO,KAAK,CAAC;SAChB;;AAGD,QAAA,OAAO,QAAQ,CAAC;KACnB;+GAfQ,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAX,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;mBAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;;;MCCZ,iBAAiB,CAAA;AAE1B,IAAA,SAAS,CAAC,KAAyC,EAAE,QAAA,GAAmB,CAAC,EAAA;QACrE,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KAClD;+GAJQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;6GAAjB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA,EAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,IAAI;mBAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;;;MCgBlB,WAAW,CAAA;+GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,iBAVhB,QAAQ;YACR,WAAW;AACX,YAAA,iBAAiB,aAGjB,QAAQ;YACR,WAAW;YACX,iBAAiB,CAAA,EAAA,CAAA,CAAA,EAAA;gHAGZ,WAAW,EAAA,CAAA,CAAA,EAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAZvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,QAAQ;wBACR,WAAW;wBACX,iBAAiB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,QAAQ;wBACR,WAAW;wBACX,iBAAiB;AACpB,qBAAA;AACJ,iBAAA,CAAA;;;AClBD;;AAEG;;;;"}
|
@@ -1013,7 +1013,7 @@ class Service {
|
|
1013
1013
|
},
|
1014
1014
|
error: (httpError) => {
|
1015
1015
|
this.ReleaseSubscription(this._GET$);
|
1016
|
-
|
1016
|
+
this.AlertError(httpError, request.alertError);
|
1017
1017
|
Resolve({
|
1018
1018
|
body: {},
|
1019
1019
|
status: httpError.status,
|
@@ -1024,7 +1024,7 @@ class Service {
|
|
1024
1024
|
complete: () => {
|
1025
1025
|
this.ReleaseSubscription(this._GET$);
|
1026
1026
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
1027
|
-
|
1027
|
+
this.alert.Success(request.alertSuccess);
|
1028
1028
|
}
|
1029
1029
|
}
|
1030
1030
|
});
|
@@ -1047,7 +1047,7 @@ class Service {
|
|
1047
1047
|
},
|
1048
1048
|
error: (httpError) => {
|
1049
1049
|
this.ReleaseSubscription(this._POST$);
|
1050
|
-
|
1050
|
+
this.AlertError(httpError, request.alertError);
|
1051
1051
|
Resolve({
|
1052
1052
|
body: {},
|
1053
1053
|
status: httpError.status,
|
@@ -1058,7 +1058,7 @@ class Service {
|
|
1058
1058
|
complete: () => {
|
1059
1059
|
this.ReleaseSubscription(this._POST$);
|
1060
1060
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
1061
|
-
|
1061
|
+
this.alert.Success(request.alertSuccess);
|
1062
1062
|
}
|
1063
1063
|
}
|
1064
1064
|
});
|
@@ -1081,7 +1081,7 @@ class Service {
|
|
1081
1081
|
},
|
1082
1082
|
error: (httpError) => {
|
1083
1083
|
this.ReleaseSubscription(this._PUT$);
|
1084
|
-
|
1084
|
+
this.AlertError(httpError, request.alertError);
|
1085
1085
|
Resolve({
|
1086
1086
|
body: {},
|
1087
1087
|
status: httpError.status,
|
@@ -1092,7 +1092,7 @@ class Service {
|
|
1092
1092
|
complete: () => {
|
1093
1093
|
this.ReleaseSubscription(this._PUT$);
|
1094
1094
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
1095
|
-
|
1095
|
+
this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
|
1096
1096
|
}
|
1097
1097
|
}
|
1098
1098
|
});
|
@@ -1115,7 +1115,7 @@ class Service {
|
|
1115
1115
|
},
|
1116
1116
|
error: (httpError) => {
|
1117
1117
|
this.ReleaseSubscription(this._PATCH$);
|
1118
|
-
|
1118
|
+
this.AlertError(httpError, request.alertError);
|
1119
1119
|
Resolve({
|
1120
1120
|
body: {},
|
1121
1121
|
status: httpError.status,
|
@@ -1126,7 +1126,7 @@ class Service {
|
|
1126
1126
|
complete: () => {
|
1127
1127
|
this.ReleaseSubscription(this._PATCH$);
|
1128
1128
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
1129
|
-
|
1129
|
+
this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');
|
1130
1130
|
}
|
1131
1131
|
}
|
1132
1132
|
});
|
@@ -1149,7 +1149,7 @@ class Service {
|
|
1149
1149
|
},
|
1150
1150
|
error: (httpError) => {
|
1151
1151
|
this.ReleaseSubscription(this._DELETE$);
|
1152
|
-
|
1152
|
+
this.AlertError(httpError, request.alertError);
|
1153
1153
|
Resolve({
|
1154
1154
|
body: {},
|
1155
1155
|
status: httpError.status,
|
@@ -1160,7 +1160,7 @@ class Service {
|
|
1160
1160
|
complete: () => {
|
1161
1161
|
this.ReleaseSubscription(this._DELETE$);
|
1162
1162
|
if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {
|
1163
|
-
|
1163
|
+
this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');
|
1164
1164
|
}
|
1165
1165
|
}
|
1166
1166
|
});
|
@@ -1170,45 +1170,46 @@ class Service {
|
|
1170
1170
|
AlertError(httpError, message) {
|
1171
1171
|
if (httpError.status >= 500) {
|
1172
1172
|
if (Tools.IsNotOnlyWhiteSpace(message)) {
|
1173
|
-
|
1173
|
+
this.alert.Error('', message, 'fa-solid fa-bug', null);
|
1174
1174
|
}
|
1175
1175
|
}
|
1176
1176
|
else if (httpError.status < 500) {
|
1177
1177
|
switch (httpError.status) {
|
1178
1178
|
case 400: {
|
1179
|
-
|
1179
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');
|
1180
1180
|
break;
|
1181
1181
|
}
|
1182
1182
|
case 401: {
|
1183
|
-
|
1183
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');
|
1184
1184
|
break;
|
1185
1185
|
}
|
1186
1186
|
case 404: {
|
1187
|
-
|
1187
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');
|
1188
1188
|
break;
|
1189
1189
|
}
|
1190
1190
|
case 405: {
|
1191
|
-
|
1191
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');
|
1192
1192
|
break;
|
1193
1193
|
}
|
1194
1194
|
case 406: {
|
1195
|
-
|
1195
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');
|
1196
1196
|
break;
|
1197
1197
|
}
|
1198
1198
|
case 409: {
|
1199
|
-
|
1199
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');
|
1200
1200
|
break;
|
1201
1201
|
}
|
1202
1202
|
case 413: {
|
1203
|
-
|
1203
|
+
this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');
|
1204
1204
|
break;
|
1205
1205
|
}
|
1206
1206
|
default: {
|
1207
1207
|
if (httpError.status <= 0) {
|
1208
|
-
|
1208
|
+
this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);
|
1209
1209
|
}
|
1210
|
-
else
|
1211
|
-
|
1210
|
+
else
|
1211
|
+
this.alert.Warning(httpError.error?.message || httpError.error);
|
1212
|
+
break;
|
1212
1213
|
}
|
1213
1214
|
}
|
1214
1215
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"coer-elements-tools.mjs","sources":["../../../projects/coer-elements/tools/lib/tools.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/tools/lib/breadcrumbs.class.ts","../../../projects/coer-elements/tools/lib/control-value.class.ts","../../../projects/coer-elements/tools/lib/date-time.class.ts","../../../projects/coer-elements/tools/lib/files.class.ts","../../../projects/coer-elements/tools/lib/menu.class.ts","../../../projects/coer-elements/tools/lib/source.class.ts","../../../projects/coer-elements/tools/lib/page.class.ts","../../../projects/coer-elements/tools/lib/screen.class.ts","../../../projects/coer-elements/tools/lib/service.class.ts","../../../projects/coer-elements/tools/coer-elements-tools.ts"],"sourcesContent":["import { signal } from \"@angular/core\";\r\nconst reference_signal = signal<any>({});\r\n\r\nexport const Tools = {\r\n /** Generate a Guid */\r\n GetGuid: (seed: string = 'coer-system') => {\r\n let time = new Date().getTime();\r\n seed = seed.toString().trim()\r\n return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\r\n const random = (time + Math.random() * 16) % 16 | 0\r\n time = Math.floor(time / 16)\r\n return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16)\r\n })\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n IsNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n if (typeof value === 'string' && value.trim() === '') return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if has string value and is not only whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n if (typeof value === 'string' && value.trim() === '') return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Break reference of a object or array */\r\n BreakReference: <T>(object: T): T => {\r\n if (object === null) return object;\r\n if (typeof object === 'undefined') return object;\r\n if (typeof object === 'string') return object;\r\n if (typeof object === 'number') return object;\r\n if (typeof object === 'boolean') return object;\r\n const OBJECT = JSON.parse(JSON.stringify(object))\r\n return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT }\r\n },\r\n\r\n\r\n /** Clean extra whitespaces */\r\n CleanUpBlanks: (text: string | number): string => {\r\n if(Tools.IsNull(text)) return '';\r\n let worlds: string[] = String(text).split(' ');\r\n worlds = worlds.filter(x => x.length > 0);\r\n return worlds.join(' ');\r\n },\r\n\r\n\r\n /** Get properties of an object */\r\n GetObjectProperties: <T>(obj: T | null | undefined): string[] => {\r\n const properties: string[] = [];\r\n if (obj === null) return properties;\r\n if (typeof obj === 'undefined') return properties;\r\n if (typeof obj === 'string') return properties;\r\n if (typeof obj === 'number') return properties;\r\n if (typeof obj === 'boolean') return properties;\r\n for(const property in obj) properties.push(String(property));\r\n return properties;\r\n },\r\n\r\n\r\n /**\r\n * Set an index and merge more arrays of the same type\r\n * */\r\n SetIndex: <T>(array: T[], ...args: T[][]): T[] => {\r\n let index = 0;\r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n }\r\n\r\n return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));\r\n },\r\n\r\n\r\n /** Set First Char To Lower */\r\n FirstCharToLower: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toLowerCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Set First Char To Upper */\r\n FirstCharToUpper: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toUpperCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n SortBy: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return -1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return 1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(x[property] - Number(y[property])));\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Sort an array in descending order by property */\r\n SortByDesc: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return 1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return -1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(Number(y[property])) - x[property]);\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Return a string with forman numeric */\r\n GetNumericFormat: (value: string | number | null | undefined, decimals: number = 0): string => {\r\n if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(value))) {\r\n return '0';\r\n }\r\n\r\n let valueInteger = '';\r\n let valueDecimal = '';\r\n value = value!.toString().replaceAll(' ', '');\r\n\r\n if (value.includes('.') || (decimals > 0)) {\r\n valueInteger = value.includes('.') ? value.split('.')[0] : value;\r\n\r\n if (decimals > 0) {\r\n const PADDING = decimals - valueDecimal.length;\r\n valueDecimal = value.includes('.') ? value.split('.')[1] : '';\r\n for(let i = 0; i < PADDING; i++) valueDecimal += '0';\r\n valueDecimal = valueDecimal.substring(0, decimals);\r\n valueDecimal = `.${valueDecimal}`;\r\n }\r\n }\r\n\r\n else {\r\n valueInteger = value;\r\n }\r\n\r\n let counter = 0;\r\n const VALUE_INTEGER_ARRAY: string[] = [];\r\n for(const char of valueInteger.split('').reverse()) {\r\n if (counter == 3) {\r\n VALUE_INTEGER_ARRAY.push(',');\r\n counter = 0;\r\n }\r\n\r\n VALUE_INTEGER_ARRAY.push(char);\r\n ++counter;\r\n }\r\n\r\n valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');\r\n return `${valueInteger}${valueDecimal}`;\r\n },\r\n\r\n\r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null) => {\r\n if (Tools.IsNull(reference)) {\r\n return new Promise(Resolve => setTimeout(Resolve, milliseconds));\r\n }\r\n\r\n else return new Promise<void>(Resolve => {\r\n reference = reference!.replaceAll(' ', '_').toLowerCase();\r\n\r\n if (reference_signal().hasOwnProperty(reference)) {\r\n clearInterval(reference_signal()[reference!]);\r\n }\r\n\r\n reference_signal.set(Object.assign(reference_signal(), {\r\n [reference!]: setTimeout(() => {\r\n Resolve();\r\n clearInterval(reference_signal()[reference!]);\r\n const _reference = { ...reference_signal() };\r\n delete _reference[reference!];\r\n reference_signal.set({ ..._reference });\r\n }, milliseconds)\r\n }));\r\n });\r\n }\r\n};","import { Component } from '@angular/core';\r\nimport { Tools } from '../tools';\r\nimport * as bootstrap from 'bootstrap';\r\nimport Swal from 'sweetalert2'\r\n\r\n@Component({\r\n selector: 'coer-alert',\r\n templateUrl: './coer-alert.component.html',\r\n styleUrls: ['./coer-alert.component.scss'],\r\n standalone: true\r\n})\r\nexport class CoerAlert {\r\n\r\n /** */\r\n public Success(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Success';\r\n const alertSuccessTitle = document.getElementById('alert-success-title')!;\r\n alertSuccessTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-check-circle fa-beat');\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this.SetIcon(alertSuccessIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertSuccessMessage = document.getElementById('alert-success-message')!;\r\n alertSuccessMessage.innerHTML = message!;\r\n\r\n //Toast\r\n const alertSuccess = document.getElementById('alert-success')!;\r\n this.SetAutoHide(alertSuccess, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Error(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Error';\r\n const alertErrorTitle = document.getElementById('alert-error-title')!;\r\n alertErrorTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-octagon fa-beat');\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this.SetIcon(alertErrorIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertErrorBody = document.getElementById('alert-error-message')!;\r\n alertErrorBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertError = document.getElementById('alert-error')!;\r\n this.SetAutoHide(alertError, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertError);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Info(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Info';\r\n const alertInfoTitle = document.getElementById('alert-info-title')!;\r\n alertInfoTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-info-circle fa-beat');\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this.SetIcon(alertInfoIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertInfoBody = document.getElementById('alert-info-message')!;\r\n alertInfoBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertInfo = document.getElementById('alert-info')!;\r\n this.SetAutoHide(alertInfo, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Warning(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Warning';\r\n const alertWarningTitle = document.getElementById('alert-warning-title')!;\r\n alertWarningTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-triangle-fill fa-beat');\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this.SetIcon(alertWarningIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertWarningBody = document.getElementById('alert-warning-message')!;\r\n alertWarningBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertWarning = document.getElementById('alert-warning')!;\r\n this.SetAutoHide(alertWarning, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n protected Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning') {\r\n return new Promise<void>(Resolve => {\r\n const element = document.getElementById(alert)!;\r\n const toast = bootstrap.Toast.getOrCreateInstance(element);\r\n toast.hide();\r\n\r\n setTimeout(() => { Resolve() }, 200);\r\n })\r\n }\r\n\r\n\r\n /** */\r\n public Confirm(\r\n message: string = 'Proceed?',\r\n alertType: 'warning' | 'danger' | 'success' | 'info' = 'warning',\r\n icon: string | null = null) {\r\n return new Promise<boolean>(Resolve => {\r\n let color: string;\r\n let iconType: 'warning' | 'error' | 'success' | 'info';\r\n switch(alertType) {\r\n case 'danger': {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = '#dc3545'; //red\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (Tools.IsNull(icon)) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = '#198754'; //green\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (Tools.IsNull(icon)) icon = 'bi-info-circle';\r\n iconType = 'error';\r\n color = '#0d6efd'; //blue\r\n break\r\n };\r\n\r\n default: {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = '#ffc107'; //yellow\r\n break;\r\n }\r\n }\r\n\r\n switch(icon) {\r\n case 'delete': icon = 'fa-regular fa-trash-can'; break;\r\n }\r\n\r\n Swal.fire({\r\n icon: iconType,\r\n iconColor: 'transparent',\r\n iconHtml: `<i class=\"${icon}\" style=\"color: ${color};\"></i>`,\r\n html: message,\r\n showConfirmButton: true,\r\n confirmButtonText: 'Yes',\r\n confirmButtonColor: color,\r\n focusConfirm: true,\r\n showDenyButton: true,\r\n denyButtonColor: color,\r\n focusDeny: false,\r\n reverseButtons: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n customClass: {\r\n denyButton: 'sweet-alert-button',\r\n confirmButton: 'sweet-alert-button'\r\n }\r\n }).then(({ value }) => setTimeout(() => Resolve(value)));\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private SetIcon(element: HTMLElement, icon: string): void {\r\n for (const item of [...element.classList.value.split(' ')]) {\r\n if (item.length > 0) {\r\n element.classList.remove(item);\r\n element.classList.remove('q');\r\n }\r\n }\r\n\r\n icon = icon.trim();\r\n const hasWhiteSpaces: RegExp = / /;\r\n if (hasWhiteSpaces.test(icon)) {\r\n const classes = icon.split(' ');\r\n for (const icon of classes) element.classList.add(icon);\r\n }\r\n\r\n else element.classList.add(icon);\r\n }\r\n\r\n\r\n /** */\r\n private SetAutoHide(element: HTMLElement, autohide: number | null): void {\r\n element.removeAttribute('data-bs-autohide');\r\n element.removeAttribute('data-bs-delay');\r\n\r\n if (autohide && autohide > 0) {\r\n if (autohide < 1000) autohide = 1000;\r\n element.setAttribute('data-bs-autohide', 'true');\r\n element.setAttribute('data-bs-delay', String(autohide));\r\n }\r\n\r\n else element.setAttribute('data-bs-autohide', 'false');\r\n }\r\n\r\n\r\n /** */\r\n private GetIcon(title: string, icon: string | null, iconDefault: string): string {\r\n if (icon == null || icon == '') {\r\n title = title.replaceAll(' ', '').toUpperCase();\r\n\r\n switch(title) {\r\n case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DELETE': return 'fa-regular fa-trash-can';\r\n case 'DELETED': return 'fa-regular fa-trash-can';\r\n default: return iconDefault;\r\n }\r\n }\r\n\r\n return icon;\r\n }\r\n}","<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>","import { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Tools } from './tools';\r\n\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Add(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n const paths = breadcrumbs.map(item => item.path);\r\n\r\n if (!paths.includes(path)) {\r\n breadcrumbs.push({ page, path });\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource[] {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('breadcrumbs')) {\r\n return Tools.BreakReference(storage.breadcrumbs);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n /** */\r\n public static GetFirst(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static Save(breadcrumbs: IAppSource[]): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { breadcrumbs });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Remove(path: string): void {\r\n let breadcrumbs = this.Get();\r\n const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());\r\n\r\n if (index >= 0) {\r\n breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static SetLast(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs[breadcrumbs.length - 1] = { page, path };\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveLast(): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs.pop();\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n}","import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { forwardRef } from \"@angular/core\";\r\n\r\nexport const CONTROL_VALUE = <T>(component: T) => {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n}\r\n\r\n\r\nexport class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n protected _value: any;\r\n private _isTouched: boolean = false;\r\n protected _UpdateValue!: Function;\r\n private _IsTouched!: Function;\r\n\r\n\r\n public get isTouched() {\r\n return this._isTouched;\r\n }\r\n\r\n\r\n /** */\r\n protected SetValue(value: any): void {\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public SetTouched(isTouched: boolean): void {\r\n if(typeof this._IsTouched === 'function') {\r\n this._IsTouched(isTouched);\r\n }\r\n\r\n this._isTouched = isTouched;\r\n }\r\n\r\n\r\n /** */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnChange(callback: Function): void {\r\n this._UpdateValue = callback;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n \r\n /** */\r\n public setDisabledState(isDisabled: boolean): void {}\r\n}","import moment from \"moment\";\r\n\r\nexport class DateTime {\r\n /** Get UTC Offset */\r\n public static GetOffset(): number {\r\n return moment().utcOffset();\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetFormatDB(date: string | Date | moment.Moment): string {\r\n if ((typeof date === 'string')) date = date.replaceAll('/', '-');\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert UTC Date to Local Zone */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).add(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).subtract(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** DD MMM YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('DD MMM YYYY');\r\n }\r\n}","import { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\r\n public static readonly EXCEL_EXTENSIONS: string[] = ['xls', 'xlsx', 'csv'];\r\n\r\n /** Get Extension File */\r\n public static GetExtension(file: File): string | null {\r\n const fileName = file.name;\r\n\r\n if (fileName.includes('.')) {\r\n let worlds = fileName.split('.') as string[];\r\n\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim().toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Is Excel File */\r\n public static IsExcel(file: File): boolean {\r\n const EXTENSION = Files.GetExtension(file);\r\n\r\n return Tools.IsNotNull(EXTENSION)\r\n ? this.EXCEL_EXTENSIONS.includes(EXTENSION!)\r\n : false;\r\n }\r\n\r\n\r\n /** Read excel file */\r\n public static ReadExcel<T>(file: File) {\r\n return new Promise<{ columns: string[]; rows: T[]; }>(Resolve => {\r\n let columns: string[] = [];\r\n let rows: T[] = [];\r\n\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(file);\r\n\r\n reader.onload = () => {\r\n const dataBytes = new Uint8Array(reader.result as any);\r\n\r\n if (dataBytes) {\r\n const workbook = XLSX.read(dataBytes, {});\r\n const sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n let dataSheet: any[] = XLSX.utils.sheet_to_json(sheet, {\r\n header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n });\r\n\r\n //Get Headers\r\n for(const column in dataSheet[0]) {\r\n columns.push(Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));\r\n }\r\n\r\n //Get Rows\r\n rows = XLSX.utils.sheet_to_json(sheet, { header: columns });\r\n rows.shift();\r\n\r\n rows = rows.map(row => {\r\n const item = Tools.BreakReference<any>(row);\r\n delete item['__rowNum__'];\r\n return item;\r\n });\r\n }\r\n\r\n Resolve({ columns, rows });\r\n }\r\n\r\n reader.onerror = () => { Resolve({ columns, rows }) }\r\n });\r\n }\r\n\r\n\r\n /** Export to excel file */\r\n public static ExportExcel<T>(data: T[], fileName: string = 'coer_report', sheetName: string = 'Sheet1') {\r\n sheetName = Tools.CleanUpBlanks(sheetName);\r\n fileName = Tools.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.includes('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.includes('.csv')) {\r\n fileName = fileName.replaceAll('.csv', '.xlsx');\r\n }\r\n }\r\n\r\n else {\r\n fileName += '.xlsx';\r\n }\r\n\r\n const WORK_SHEET = XLSX.utils.json_to_sheet(data);\r\n const WORK_BOOK = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);\r\n XLSX.writeFile(WORK_BOOK, fileName);\r\n }\r\n\r\n\r\n /** Convert file to string base64 */\r\n public static ConvertToBase64(file: File) {\r\n return new Promise<string>(Resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n reader.onload = () => {\r\n Resolve(reader.result?.toString() || '');\r\n }\r\n\r\n reader.onerror = () => Resolve('');\r\n });\r\n }\r\n}","import { IMenuOptionSelected } from \"coer-elements/interfaces\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(menu: IMenuOptionSelected): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { menu });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IMenuOptionSelected | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Breadcrumbs } from \"./breadcrumbs.class\";\r\nimport { Tools } from \"./tools\";\r\n\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(page: string): void {\r\n const ROUTER = inject(Router);\r\n\r\n let path = ROUTER.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n Breadcrumbs.Add(page, path);\r\n\r\n const breadcrumbs = Breadcrumbs.Get();\r\n\r\n if(breadcrumbs.length >= 2) {\r\n breadcrumbs.pop();\r\n const breadcrumb = breadcrumbs.pop()!;\r\n this.Save({ page: breadcrumb.page, path: breadcrumb.path });\r\n }\r\n\r\n else this.Save(null);\r\n }\r\n\r\n\r\n /** */\r\n private static Save(source: IAppSource | null): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { source });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('source')) {\r\n return storage.source;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static GetRoot(): IAppSource | null {\r\n const breadcrumbs = Breadcrumbs.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static SetPageResponse<T>(pageResponse: T): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { pageResponse });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetPageResponse<T>(): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n return Tools.BreakReference(storage.pageResponse);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static ClearPageResponse(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n delete storage.pageResponse;\r\n }\r\n\r\n storage = Object.assign({}, storage);\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Reset(): void {\r\n sessionStorage.removeItem(this.storage);\r\n }\r\n}","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';\r\nimport { IAppSource, IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from './breadcrumbs.class';\r\nimport { Source } from './source.class';\r\nimport { Tools } from './tools';\r\n\r\n@Component({ template: '' })\r\nexport class Page implements AfterViewInit, OnDestroy {\r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly router = inject(Router);\r\n private readonly activatedRoute = inject(ActivatedRoute);\r\n\r\n /** */\r\n protected isUpdate: boolean = false;\r\n\r\n /** */\r\n protected isLoading: boolean = false;\r\n\r\n /** */\r\n protected isReadyPage: boolean = false;\r\n\r\n /** */\r\n protected enableAnimations: boolean = false;\r\n\r\n /** */\r\n protected routeParams: any;\r\n\r\n /** */\r\n protected queryParams: any;\r\n\r\n /** */\r\n protected breadcrumbs: IBreadcrumb[] = [];\r\n\r\n /** */\r\n protected pageResponse: any = null;\r\n\r\n /** */\r\n protected goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\r\n private _page: string = '';\r\n private _source: IAppSource | null = null;\r\n private _preventDestroy: boolean = false;\r\n\r\n\r\n constructor(@Inject(String) page: string) {\r\n this.SetPageName(page);\r\n this.SetSource();\r\n this.GetSource();\r\n this.GetNavigation();\r\n this.SetGoBack();\r\n this.GetPageResponse();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.routeParams = this.activatedRoute.snapshot.params;\r\n this.queryParams = this.activatedRoute.snapshot.queryParams;\r\n\r\n setTimeout(() => {\r\n this.isReadyPage = true;\r\n this.RunPage();\r\n setTimeout(() => { this.enableAnimations = true }, 1000);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this._preventDestroy) Source.ClearPageResponse();\r\n }\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunPage(): void {};\r\n\r\n\r\n /** Rename the last breadcrumb and update the url id */\r\n protected SetPageName(name: string, id: string | number | null = null): void {\r\n this._page = name;\r\n\r\n let path = this.router.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = path.split('/');\r\n const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();\r\n if (PATH_ID) {\r\n PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);\r\n path = PATH_ARRAY.join('/');\r\n }\r\n }\r\n\r\n if (this.breadcrumbs.length > 0) {\r\n this.breadcrumbs[this.breadcrumbs.length - 1].page = name;\r\n this.breadcrumbs[this.breadcrumbs.length - 1].path = path;\r\n Breadcrumbs.SetLast(name, path);\r\n }\r\n\r\n this.router.navigateByUrl(path)\r\n }\r\n\r\n\r\n /** */\r\n private SetSource(): void {\r\n Source.Set(this._page);\r\n }\r\n\r\n\r\n /** */\r\n private GetSource(): void {\r\n this._source = Source.Get();\r\n }\r\n\r\n\r\n /** */\r\n protected GetPageResponse(): void {\r\n this.pageResponse = Source.GetPageResponse();\r\n }\r\n\r\n\r\n /** */\r\n private GetNavigation(): void {\r\n if (this._source) {\r\n this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({\r\n page: item.page,\r\n path: item.path,\r\n click: this.GoBack(item.path)\r\n }));\r\n }\r\n\r\n else this.breadcrumbs = [{ page: this._page }];\r\n }\r\n\r\n\r\n /** */\r\n private SetGoBack(): void {\r\n if (this._source) {\r\n this.goBack = {\r\n show: true,\r\n path: this._source.path,\r\n click: this.GoBack()\r\n };\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private GoBack = (path?: string) => (() => {\r\n if (path) Breadcrumbs.Remove(path);\r\n else Breadcrumbs.RemoveLast();\r\n });\r\n\r\n\r\n /** Navigate to previous page */\r\n protected GoToSource<T>(pageResponse: T | null = null): void {\r\n if(this._source) {\r\n Breadcrumbs.RemoveLast();\r\n this.SetPageResponse(pageResponse);\r\n Tools.Sleep().then(_ => this.router.navigateByUrl(this._source!.path));\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected SetPageResponse<T>(pageResponse: T | null = null): void {\r\n if (Tools.IsNotNull(pageResponse)) {\r\n this._preventDestroy = true;\r\n Source.SetPageResponse(pageResponse);\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected Log(value: any, log: string | null = null): void {\r\n if (Tools.IsNotNull(log)) console.log({ log, value });\r\n else console.log(value);\r\n }\r\n}","\r\nimport { IScreenSize } from \"coer-elements/interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n public static get BREAKPOINT(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (window.innerWidth < 576) return 'xs';\r\n else if (window.innerWidth >= 576 && window.innerWidth < 768) return 'sm';\r\n else if (window.innerWidth >= 768 && window.innerWidth < 992) return 'md';\r\n else if (window.innerWidth >= 992 && window.innerWidth < 1200) return 'lg';\r\n else if (window.innerWidth >= 1200 && window.innerWidth < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n window.addEventListener(\"load\", () => {\r\n window.dispatchEvent(new Event('resize'));\r\n });\r\n\r\n window.onresize = () => {\r\n subscriber.next({\r\n width: this.WINDOW_WIDTH,\r\n height: this.WINDOW_HEIGHT,\r\n breakpoin: this.BREAKPOINT\r\n });\r\n }\r\n });\r\n\r\n\r\n /** */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n window.addEventListener('popstate', popStateEvent => {\r\n if (popStateEvent.state && popStateEvent.target) {\r\n subscriber.next((popStateEvent.target as any).location.href);\r\n }\r\n });\r\n });\r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nexport class Service {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly http = inject(HttpClient);\r\n\r\n protected httpCode = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\r\n NotFound: 404,\r\n NotAllowed: 405,\r\n NotAcceptable: 406,\r\n Conflict: 409,\r\n PayloadTooLarge: 413,\r\n InnerError: 500\r\n }\r\n\r\n\r\n //Subscriptions\r\n private _GET$!: Subscription;\r\n private _POST$!: Subscription;\r\n private _PUT$!: Subscription;\r\n private _PATCH$!: Subscription;\r\n private _DELETE$!: Subscription;\r\n\r\n\r\n /** */\r\n private ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** HTTP GET */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._GET$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n ////this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP POST */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._POST$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n //this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP PUT */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PUT$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n //this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP PATCH */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n //this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP DELETE */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n\r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n //this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n //this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private AlertError(httpError: HttpErrorResponse, message?: string): void {\r\n if (httpError.status >= 500) {\r\n if (Tools.IsNotOnlyWhiteSpace(message)) {\r\n //this.alert.Error('', message, 'fa-solid fa-bug', null);\r\n }\r\n }\r\n\r\n else if (httpError.status < 500) {\r\n switch(httpError.status) {\r\n case 400: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');\r\n break;\r\n }\r\n\r\n case 401: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 404: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');\r\n break;\r\n }\r\n\r\n case 405: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');\r\n break;\r\n }\r\n\r\n case 406: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');\r\n break;\r\n }\r\n\r\n case 409: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');\r\n break;\r\n }\r\n\r\n case 413: {\r\n //this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');\r\n break;\r\n }\r\n\r\n default: {\r\n if (httpError.status <= 0) {\r\n //this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);\r\n }\r\n\r\n else //this.alert.Warning(httpError.error?.message || httpError.error);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"coer-elements-tools.mjs","sources":["../../../projects/coer-elements/tools/lib/tools.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.ts","../../../projects/coer-elements/tools/lib/coer-alert/coer-alert.component.html","../../../projects/coer-elements/tools/lib/breadcrumbs.class.ts","../../../projects/coer-elements/tools/lib/control-value.class.ts","../../../projects/coer-elements/tools/lib/date-time.class.ts","../../../projects/coer-elements/tools/lib/files.class.ts","../../../projects/coer-elements/tools/lib/menu.class.ts","../../../projects/coer-elements/tools/lib/source.class.ts","../../../projects/coer-elements/tools/lib/page.class.ts","../../../projects/coer-elements/tools/lib/screen.class.ts","../../../projects/coer-elements/tools/lib/service.class.ts","../../../projects/coer-elements/tools/coer-elements-tools.ts"],"sourcesContent":["import { signal } from \"@angular/core\";\r\nconst reference_signal = signal<any>({});\r\n\r\nexport const Tools = {\r\n /** Generate a Guid */\r\n GetGuid: (seed: string = 'coer-system') => {\r\n let time = new Date().getTime();\r\n seed = seed.toString().trim()\r\n return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\r\n const random = (time + Math.random() * 16) % 16 | 0\r\n time = Math.floor(time / 16)\r\n return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16)\r\n })\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined, false otherwise */\r\n IsNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if the value is not null or undefined, false otherwise */\r\n IsNotNull: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */\r\n IsOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return true;\r\n if (value === null) return true;\r\n if (typeof value === 'string' && value.trim() === '') return true;\r\n return false;\r\n },\r\n\r\n\r\n /** Returns true if has string value and is not only whitespace, false otherwise */\r\n IsNotOnlyWhiteSpace: <T>(value: T | null | undefined): boolean => {\r\n if (value === undefined) return false;\r\n if (value === null) return false;\r\n if (typeof value === 'string' && value.trim() === '') return false;\r\n return true;\r\n },\r\n\r\n\r\n /** Break reference of a object or array */\r\n BreakReference: <T>(object: T): T => {\r\n if (object === null) return object;\r\n if (typeof object === 'undefined') return object;\r\n if (typeof object === 'string') return object;\r\n if (typeof object === 'number') return object;\r\n if (typeof object === 'boolean') return object;\r\n const OBJECT = JSON.parse(JSON.stringify(object))\r\n return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT }\r\n },\r\n\r\n\r\n /** Clean extra whitespaces */\r\n CleanUpBlanks: (text: string | number): string => {\r\n if(Tools.IsNull(text)) return '';\r\n let worlds: string[] = String(text).split(' ');\r\n worlds = worlds.filter(x => x.length > 0);\r\n return worlds.join(' ');\r\n },\r\n\r\n\r\n /** Get properties of an object */\r\n GetObjectProperties: <T>(obj: T | null | undefined): string[] => {\r\n const properties: string[] = [];\r\n if (obj === null) return properties;\r\n if (typeof obj === 'undefined') return properties;\r\n if (typeof obj === 'string') return properties;\r\n if (typeof obj === 'number') return properties;\r\n if (typeof obj === 'boolean') return properties;\r\n for(const property in obj) properties.push(String(property));\r\n return properties;\r\n },\r\n\r\n\r\n /**\r\n * Set an index and merge more arrays of the same type\r\n * */\r\n SetIndex: <T>(array: T[], ...args: T[][]): T[] => {\r\n let index = 0;\r\n for (const arg of args) {\r\n array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));\r\n }\r\n\r\n return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));\r\n },\r\n\r\n\r\n /** Set First Char To Lower */\r\n FirstCharToLower: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toLowerCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Set First Char To Upper */\r\n FirstCharToUpper: (text: string | null | undefined): string => {\r\n if (Tools.IsOnlyWhiteSpace(text)) return '';\r\n\r\n const textArray: string[] = [];\r\n for(let i = 0; i < text!.length; i++) {\r\n if(i === 0) textArray.push(text![i].toUpperCase());\r\n else textArray.push(text![i]);\r\n }\r\n\r\n return textArray.join('');\r\n },\r\n\r\n\r\n /** Sort an array in ascending order by property */\r\n SortBy: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return -1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return 1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(x[property] - Number(y[property])));\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Sort an array in descending order by property */\r\n SortByDesc: <T>(array: T[], property: string, propertyType: 'string' | 'number' = 'string'): T[] => {\r\n switch (propertyType) {\r\n case 'string': {\r\n return array.sort((x: any, y: any) => {\r\n if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim()) return 1;\r\n else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim()) return -1;\r\n else return 0;\r\n });\r\n }\r\n\r\n case 'number': {\r\n return array.sort((x: any, y: any) => Number(Number(y[property])) - x[property]);\r\n }\r\n }\r\n },\r\n\r\n\r\n /** Return a string with forman numeric */\r\n GetNumericFormat: (value: string | number | null | undefined, decimals: number = 0): string => {\r\n if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(value))) {\r\n return '0';\r\n }\r\n\r\n let valueInteger = '';\r\n let valueDecimal = '';\r\n value = value!.toString().replaceAll(' ', '');\r\n\r\n if (value.includes('.') || (decimals > 0)) {\r\n valueInteger = value.includes('.') ? value.split('.')[0] : value;\r\n\r\n if (decimals > 0) {\r\n const PADDING = decimals - valueDecimal.length;\r\n valueDecimal = value.includes('.') ? value.split('.')[1] : '';\r\n for(let i = 0; i < PADDING; i++) valueDecimal += '0';\r\n valueDecimal = valueDecimal.substring(0, decimals);\r\n valueDecimal = `.${valueDecimal}`;\r\n }\r\n }\r\n\r\n else {\r\n valueInteger = value;\r\n }\r\n\r\n let counter = 0;\r\n const VALUE_INTEGER_ARRAY: string[] = [];\r\n for(const char of valueInteger.split('').reverse()) {\r\n if (counter == 3) {\r\n VALUE_INTEGER_ARRAY.push(',');\r\n counter = 0;\r\n }\r\n\r\n VALUE_INTEGER_ARRAY.push(char);\r\n ++counter;\r\n }\r\n\r\n valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');\r\n return `${valueInteger}${valueDecimal}`;\r\n },\r\n\r\n\r\n /** Wait the time indicated */\r\n Sleep: (milliseconds: number = 0, reference: string | null = null) => {\r\n if (Tools.IsNull(reference)) {\r\n return new Promise(Resolve => setTimeout(Resolve, milliseconds));\r\n }\r\n\r\n else return new Promise<void>(Resolve => {\r\n reference = reference!.replaceAll(' ', '_').toLowerCase();\r\n\r\n if (reference_signal().hasOwnProperty(reference)) {\r\n clearInterval(reference_signal()[reference!]);\r\n }\r\n\r\n reference_signal.set(Object.assign(reference_signal(), {\r\n [reference!]: setTimeout(() => {\r\n Resolve();\r\n clearInterval(reference_signal()[reference!]);\r\n const _reference = { ...reference_signal() };\r\n delete _reference[reference!];\r\n reference_signal.set({ ..._reference });\r\n }, milliseconds)\r\n }));\r\n });\r\n }\r\n};","import { Component } from '@angular/core';\r\nimport { Tools } from '../tools';\r\nimport * as bootstrap from 'bootstrap';\r\nimport Swal from 'sweetalert2'\r\n\r\n@Component({\r\n selector: 'coer-alert',\r\n templateUrl: './coer-alert.component.html',\r\n styleUrls: ['./coer-alert.component.scss'],\r\n standalone: true\r\n})\r\nexport class CoerAlert {\r\n\r\n /** */\r\n public Success(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Success';\r\n const alertSuccessTitle = document.getElementById('alert-success-title')!;\r\n alertSuccessTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-check-circle fa-beat');\r\n const alertSuccessIcon = document.getElementById('alert-success-icon')!;\r\n this.SetIcon(alertSuccessIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertSuccessMessage = document.getElementById('alert-success-message')!;\r\n alertSuccessMessage.innerHTML = message!;\r\n\r\n //Toast\r\n const alertSuccess = document.getElementById('alert-success')!;\r\n this.SetAutoHide(alertSuccess, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertSuccess);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Error(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Error';\r\n const alertErrorTitle = document.getElementById('alert-error-title')!;\r\n alertErrorTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-octagon fa-beat');\r\n const alertErrorIcon = document.getElementById('alert-error-icon')!;\r\n this.SetIcon(alertErrorIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertErrorBody = document.getElementById('alert-error-message')!;\r\n alertErrorBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertError = document.getElementById('alert-error')!;\r\n this.SetAutoHide(alertError, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertError);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Info(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Info';\r\n const alertInfoTitle = document.getElementById('alert-info-title')!;\r\n alertInfoTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-info-circle fa-beat');\r\n const alertInfoIcon = document.getElementById('alert-info-icon')!;\r\n this.SetIcon(alertInfoIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertInfoBody = document.getElementById('alert-info-message')!;\r\n alertInfoBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertInfo = document.getElementById('alert-info')!;\r\n this.SetAutoHide(alertInfo, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertInfo);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n public Warning(message: string | null = null, title: string | null = null, icon: string | null = null, autohide: number | null = 3000): void {\r\n //Title\r\n if (Tools.IsOnlyWhiteSpace(title)) title = 'Warning';\r\n const alertWarningTitle = document.getElementById('alert-warning-title')!;\r\n alertWarningTitle.textContent = title;\r\n\r\n //Icon\r\n icon = this.GetIcon(title!, icon, 'bi-exclamation-triangle-fill fa-beat');\r\n const alertWarningIcon = document.getElementById('alert-warning-icon')!;\r\n this.SetIcon(alertWarningIcon, icon);\r\n\r\n //Message\r\n if (Tools.IsNull(message)) message = '';\r\n const alertWarningBody = document.getElementById('alert-warning-message')!;\r\n alertWarningBody.innerHTML = message!;\r\n\r\n //Toast\r\n const alertWarning = document.getElementById('alert-warning')!;\r\n this.SetAutoHide(alertWarning, autohide);\r\n\r\n const toast = bootstrap.Toast.getOrCreateInstance(alertWarning);\r\n toast.show();\r\n }\r\n\r\n\r\n /** */\r\n protected Close(alert: 'alert-success' | 'alert-error' | 'alert-info' | 'alert-warning') {\r\n return new Promise<void>(Resolve => {\r\n const element = document.getElementById(alert)!;\r\n const toast = bootstrap.Toast.getOrCreateInstance(element);\r\n toast.hide();\r\n\r\n setTimeout(() => { Resolve() }, 200);\r\n })\r\n }\r\n\r\n\r\n /** */\r\n public Confirm(\r\n message: string = 'Proceed?',\r\n alertType: 'warning' | 'danger' | 'success' | 'info' = 'warning',\r\n icon: string | null = null) {\r\n return new Promise<boolean>(Resolve => {\r\n let color: string;\r\n let iconType: 'warning' | 'error' | 'success' | 'info';\r\n switch(alertType) {\r\n case 'danger': {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-octagon';\r\n iconType = 'error';\r\n color = '#dc3545'; //red\r\n break;\r\n };\r\n\r\n case 'success': {\r\n if (Tools.IsNull(icon)) icon = 'bi-check-circle';\r\n iconType = 'info';\r\n color = '#198754'; //green\r\n break;\r\n };\r\n\r\n case 'info': {\r\n if (Tools.IsNull(icon)) icon = 'bi-info-circle';\r\n iconType = 'error';\r\n color = '#0d6efd'; //blue\r\n break\r\n };\r\n\r\n default: {\r\n if (Tools.IsNull(icon)) icon = 'bi-exclamation-triangle-fill';\r\n iconType = 'warning';\r\n color = '#ffc107'; //yellow\r\n break;\r\n }\r\n }\r\n\r\n switch(icon) {\r\n case 'delete': icon = 'fa-regular fa-trash-can'; break;\r\n }\r\n\r\n Swal.fire({\r\n icon: iconType,\r\n iconColor: 'transparent',\r\n iconHtml: `<i class=\"${icon}\" style=\"color: ${color};\"></i>`,\r\n html: message,\r\n showConfirmButton: true,\r\n confirmButtonText: 'Yes',\r\n confirmButtonColor: color,\r\n focusConfirm: true,\r\n showDenyButton: true,\r\n denyButtonColor: color,\r\n focusDeny: false,\r\n reverseButtons: true,\r\n allowOutsideClick: false,\r\n allowEscapeKey: false,\r\n allowEnterKey: true,\r\n customClass: {\r\n denyButton: 'sweet-alert-button',\r\n confirmButton: 'sweet-alert-button'\r\n }\r\n }).then(({ value }) => setTimeout(() => Resolve(value)));\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private SetIcon(element: HTMLElement, icon: string): void {\r\n for (const item of [...element.classList.value.split(' ')]) {\r\n if (item.length > 0) {\r\n element.classList.remove(item);\r\n element.classList.remove('q');\r\n }\r\n }\r\n\r\n icon = icon.trim();\r\n const hasWhiteSpaces: RegExp = / /;\r\n if (hasWhiteSpaces.test(icon)) {\r\n const classes = icon.split(' ');\r\n for (const icon of classes) element.classList.add(icon);\r\n }\r\n\r\n else element.classList.add(icon);\r\n }\r\n\r\n\r\n /** */\r\n private SetAutoHide(element: HTMLElement, autohide: number | null): void {\r\n element.removeAttribute('data-bs-autohide');\r\n element.removeAttribute('data-bs-delay');\r\n\r\n if (autohide && autohide > 0) {\r\n if (autohide < 1000) autohide = 1000;\r\n element.setAttribute('data-bs-autohide', 'true');\r\n element.setAttribute('data-bs-delay', String(autohide));\r\n }\r\n\r\n else element.setAttribute('data-bs-autohide', 'false');\r\n }\r\n\r\n\r\n /** */\r\n private GetIcon(title: string, icon: string | null, iconDefault: string): string {\r\n if (icon == null || icon == '') {\r\n title = title.replaceAll(' ', '').toUpperCase();\r\n\r\n switch(title) {\r\n case 'ENABLED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVE': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'ACTIVED': return 'fa-solid fa-thumbs-up fa-flip-horizontal';\r\n case 'DISABLE': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DISABLED': return 'fa-solid fa-thumbs-down fa-flip-horizontal';\r\n case 'DELETE': return 'fa-regular fa-trash-can';\r\n case 'DELETED': return 'fa-regular fa-trash-can';\r\n default: return iconDefault;\r\n }\r\n }\r\n\r\n return icon;\r\n }\r\n}","<aside class=\"toast-container coer-alert\">\r\n <!-- Success -->\r\n <div id=\"alert-success\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-success-icon\"></i>\r\n <strong id=\"alert-success-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-success')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-success-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Error -->\r\n <div id=\"alert-error\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-error-icon\"></i>\r\n <strong id=\"alert-error-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-error')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-error-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Info -->\r\n <div id=\"alert-info\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-info-icon\"></i>\r\n <strong id=\"alert-info-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-info')\" class=\"btn-close btn-close-white\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-info-message\"></pre>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Warning -->\r\n <div id=\"alert-warning\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" class=\"toast\">\r\n <div class=\"toast-header\">\r\n <i id=\"alert-warning-icon\"></i>\r\n <strong id=\"alert-warning-title\"></strong>\r\n <button type=\"button\" (click)=\"Close('alert-warning')\" class=\"btn-close\"></button>\r\n </div>\r\n\r\n <div class=\"toast-body\">\r\n <pre id=\"alert-warning-message\"></pre>\r\n </div>\r\n </div>\r\n</aside>","import { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Tools } from './tools';\r\n\r\nexport class Breadcrumbs {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Add(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n const paths = breadcrumbs.map(item => item.path);\r\n\r\n if (!paths.includes(path)) {\r\n breadcrumbs.push({ page, path });\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource[] {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('breadcrumbs')) {\r\n return Tools.BreakReference(storage.breadcrumbs);\r\n }\r\n }\r\n\r\n return [];\r\n }\r\n\r\n\r\n /** */\r\n public static GetFirst(): IAppSource | null {\r\n const breadcrumbs = this.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static Save(breadcrumbs: IAppSource[]): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { breadcrumbs });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Remove(path: string): void {\r\n let breadcrumbs = this.Get();\r\n const index = breadcrumbs.findIndex(x => x.path.toLowerCase().trim() === path.toLowerCase().trim());\r\n\r\n if (index >= 0) {\r\n breadcrumbs = Tools.BreakReference(breadcrumbs).splice(0, index + 1);\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static SetLast(page: string, path: string): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs[breadcrumbs.length - 1] = { page, path };\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n\r\n\r\n /** */\r\n public static RemoveLast(): void {\r\n const breadcrumbs = this.Get();\r\n\r\n if (breadcrumbs.length > 0) {\r\n breadcrumbs.pop();\r\n this.Save(breadcrumbs);\r\n }\r\n }\r\n}","import { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { forwardRef } from \"@angular/core\";\r\n\r\nexport const CONTROL_VALUE = <T>(component: T) => {\r\n return {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true\r\n }\r\n}\r\n\r\n\r\nexport class ControlValue implements ControlValueAccessor {\r\n\r\n //Variables\r\n protected _value: any;\r\n private _isTouched: boolean = false;\r\n protected _UpdateValue!: Function;\r\n private _IsTouched!: Function;\r\n\r\n\r\n public get isTouched() {\r\n return this._isTouched;\r\n }\r\n\r\n\r\n /** */\r\n protected SetValue(value: any): void {\r\n if(typeof this._UpdateValue === 'function') {\r\n this._UpdateValue(value);\r\n }\r\n\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public SetTouched(isTouched: boolean): void {\r\n if(typeof this._IsTouched === 'function') {\r\n this._IsTouched(isTouched);\r\n }\r\n\r\n this._isTouched = isTouched;\r\n }\r\n\r\n\r\n /** */\r\n public writeValue(value: any): void {\r\n this._value = value;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnChange(callback: Function): void {\r\n this._UpdateValue = callback;\r\n }\r\n\r\n\r\n /** */\r\n public registerOnTouched(callback: Function): void {\r\n this._IsTouched = callback;\r\n }\r\n\r\n \r\n /** */\r\n public setDisabledState(isDisabled: boolean): void {}\r\n}","import moment from \"moment\";\r\n\r\nexport class DateTime {\r\n /** Get UTC Offset */\r\n public static GetOffset(): number {\r\n return moment().utcOffset();\r\n }\r\n\r\n\r\n /** YYYY-MM-DD HH:mm:ss */\r\n public static GetFormatDB(date: string | Date | moment.Moment): string {\r\n if ((typeof date === 'string')) date = date.replaceAll('/', '-');\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert UTC Date to Local Zone */\r\n public static ToLocalZone(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).add(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** Convert Local Zone Date to UTC */\r\n public static ToUTC(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).subtract(DateTime.GetOffset(), 'minutes').format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n\r\n /** DD MMM YYYY */\r\n public static GetDateFormat(date: string | Date | moment.Moment): string {\r\n date = DateTime.GetFormatDB(date);\r\n return moment(date).parseZone().local(true).format('DD MMM YYYY');\r\n }\r\n}","import { Tools } from \"./tools\";\r\nimport * as XLSX from 'xlsx';\r\n\r\nexport class Files {\r\n public static readonly EXCEL_EXTENSIONS: string[] = ['xls', 'xlsx', 'csv'];\r\n\r\n /** Get Extension File */\r\n public static GetExtension(file: File): string | null {\r\n const fileName = file.name;\r\n\r\n if (fileName.includes('.')) {\r\n let worlds = fileName.split('.') as string[];\r\n\r\n if (worlds.length > 0) {\r\n let extension = worlds.pop()!;\r\n extension = extension.trim().toLowerCase();\r\n if (extension.length > 0) return extension;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** Is Excel File */\r\n public static IsExcel(file: File): boolean {\r\n const EXTENSION = Files.GetExtension(file);\r\n\r\n return Tools.IsNotNull(EXTENSION)\r\n ? this.EXCEL_EXTENSIONS.includes(EXTENSION!)\r\n : false;\r\n }\r\n\r\n\r\n /** Read excel file */\r\n public static ReadExcel<T>(file: File) {\r\n return new Promise<{ columns: string[]; rows: T[]; }>(Resolve => {\r\n let columns: string[] = [];\r\n let rows: T[] = [];\r\n\r\n const reader = new FileReader();\r\n reader.readAsArrayBuffer(file);\r\n\r\n reader.onload = () => {\r\n const dataBytes = new Uint8Array(reader.result as any);\r\n\r\n if (dataBytes) {\r\n const workbook = XLSX.read(dataBytes, {});\r\n const sheet = workbook.Sheets[workbook.SheetNames[0]];\r\n let dataSheet: any[] = XLSX.utils.sheet_to_json(sheet, {\r\n header: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\r\n });\r\n\r\n //Get Headers\r\n for(const column in dataSheet[0]) {\r\n columns.push(Tools.FirstCharToLower(String(dataSheet[0][column]).replaceAll(' ', '')));\r\n }\r\n\r\n //Get Rows\r\n rows = XLSX.utils.sheet_to_json(sheet, { header: columns });\r\n rows.shift();\r\n\r\n rows = rows.map(row => {\r\n const item = Tools.BreakReference<any>(row);\r\n delete item['__rowNum__'];\r\n return item;\r\n });\r\n }\r\n\r\n Resolve({ columns, rows });\r\n }\r\n\r\n reader.onerror = () => { Resolve({ columns, rows }) }\r\n });\r\n }\r\n\r\n\r\n /** Export to excel file */\r\n public static ExportExcel<T>(data: T[], fileName: string = 'coer_report', sheetName: string = 'Sheet1') {\r\n sheetName = Tools.CleanUpBlanks(sheetName);\r\n fileName = Tools.CleanUpBlanks(fileName);\r\n\r\n if(fileName.endsWith('.xls') || fileName.endsWith('.xlsx') || fileName.endsWith('.csv')) {\r\n if (fileName.includes('.xls')) {\r\n fileName = fileName.replaceAll('.xls', '.xlsx');\r\n }\r\n\r\n if (fileName.includes('.csv')) {\r\n fileName = fileName.replaceAll('.csv', '.xlsx');\r\n }\r\n }\r\n\r\n else {\r\n fileName += '.xlsx';\r\n }\r\n\r\n const WORK_SHEET = XLSX.utils.json_to_sheet(data);\r\n const WORK_BOOK = XLSX.utils.book_new();\r\n XLSX.utils.book_append_sheet(WORK_BOOK, WORK_SHEET, sheetName);\r\n XLSX.writeFile(WORK_BOOK, fileName);\r\n }\r\n\r\n\r\n /** Convert file to string base64 */\r\n public static ConvertToBase64(file: File) {\r\n return new Promise<string>(Resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n\r\n reader.onload = () => {\r\n Resolve(reader.result?.toString() || '');\r\n }\r\n\r\n reader.onerror = () => Resolve('');\r\n });\r\n }\r\n}","import { IMenuOptionSelected } from \"coer-elements/interfaces\";\r\n\r\nexport class Menu {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(menu: IMenuOptionSelected): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { menu });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IMenuOptionSelected | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('menu')) {\r\n return storage.menu;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}","import { inject } from \"@angular/core\";\r\nimport { Router } from '@angular/router';\r\nimport { IAppSource } from \"coer-elements/interfaces\";\r\nimport { Breadcrumbs } from \"./breadcrumbs.class\";\r\nimport { Tools } from \"./tools\";\r\n\r\nexport class Source {\r\n\r\n private static readonly storage = 'COER-System';\r\n\r\n /** */\r\n public static Set(page: string): void {\r\n const ROUTER = inject(Router);\r\n\r\n let path = ROUTER.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n Breadcrumbs.Add(page, path);\r\n\r\n const breadcrumbs = Breadcrumbs.Get();\r\n\r\n if(breadcrumbs.length >= 2) {\r\n breadcrumbs.pop();\r\n const breadcrumb = breadcrumbs.pop()!;\r\n this.Save({ page: breadcrumb.page, path: breadcrumb.path });\r\n }\r\n\r\n else this.Save(null);\r\n }\r\n\r\n\r\n /** */\r\n private static Save(source: IAppSource | null): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n if (storage) storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { source });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Get(): IAppSource | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('source')) {\r\n return storage.source;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static GetRoot(): IAppSource | null {\r\n const breadcrumbs = Breadcrumbs.Get();\r\n return (breadcrumbs.length > 0) ? breadcrumbs.shift()! : null;\r\n }\r\n\r\n\r\n /** */\r\n public static SetPageResponse<T>(pageResponse: T): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n storage = Object.assign({}, storage, { pageResponse });\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static GetPageResponse<T>(): T | null {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n\r\n if (storage) {\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n return Tools.BreakReference(storage.pageResponse);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n /** */\r\n public static ClearPageResponse(): void {\r\n let storage = sessionStorage.getItem(this.storage) as any;\r\n storage = JSON.parse(storage);\r\n\r\n if (storage.hasOwnProperty('pageResponse')) {\r\n delete storage.pageResponse;\r\n }\r\n\r\n storage = Object.assign({}, storage);\r\n sessionStorage.setItem(this.storage, JSON.stringify(storage));\r\n }\r\n\r\n\r\n /** */\r\n public static Reset(): void {\r\n sessionStorage.removeItem(this.storage);\r\n }\r\n}","import { ActivatedRoute, Router } from '@angular/router';\r\nimport { AfterViewInit, Component, Inject, inject, OnDestroy } from '@angular/core';\r\nimport { IAppSource, IBreadcrumb, IGoBack } from 'coer-elements/interfaces';\r\nimport { CoerAlert } from './coer-alert/coer-alert.component';\r\nimport { Breadcrumbs } from './breadcrumbs.class';\r\nimport { Source } from './source.class';\r\nimport { Tools } from './tools';\r\n\r\n@Component({ template: '' })\r\nexport class Page implements AfterViewInit, OnDestroy {\r\n\r\n //Injection\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly router = inject(Router);\r\n private readonly activatedRoute = inject(ActivatedRoute);\r\n\r\n /** */\r\n protected isUpdate: boolean = false;\r\n\r\n /** */\r\n protected isLoading: boolean = false;\r\n\r\n /** */\r\n protected isReadyPage: boolean = false;\r\n\r\n /** */\r\n protected enableAnimations: boolean = false;\r\n\r\n /** */\r\n protected routeParams: any;\r\n\r\n /** */\r\n protected queryParams: any;\r\n\r\n /** */\r\n protected breadcrumbs: IBreadcrumb[] = [];\r\n\r\n /** */\r\n protected pageResponse: any = null;\r\n\r\n /** */\r\n protected goBack: IGoBack = { show: false };\r\n\r\n //Private Variables\r\n private _page: string = '';\r\n private _source: IAppSource | null = null;\r\n private _preventDestroy: boolean = false;\r\n\r\n\r\n constructor(@Inject(String) page: string) {\r\n this.SetPageName(page);\r\n this.SetSource();\r\n this.GetSource();\r\n this.GetNavigation();\r\n this.SetGoBack();\r\n this.GetPageResponse();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.routeParams = this.activatedRoute.snapshot.params;\r\n this.queryParams = this.activatedRoute.snapshot.queryParams;\r\n\r\n setTimeout(() => {\r\n this.isReadyPage = true;\r\n this.RunPage();\r\n setTimeout(() => { this.enableAnimations = true }, 1000);\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this._preventDestroy) Source.ClearPageResponse();\r\n }\r\n\r\n /** Main method. Starts after ngAfterViewInit() */\r\n protected RunPage(): void {};\r\n\r\n\r\n /** Rename the last breadcrumb and update the url id */\r\n protected SetPageName(name: string, id: string | number | null = null): void {\r\n this._page = name;\r\n\r\n let path = this.router.url;\r\n if (path.includes('?')) path = path.split('?')[0];\r\n\r\n if (id) {\r\n const PATH_ARRAY = path.split('/');\r\n const PATH_ID = Tools.BreakReference(PATH_ARRAY).pop();\r\n if (PATH_ID) {\r\n PATH_ARRAY[PATH_ARRAY.length - 1] = String(id);\r\n path = PATH_ARRAY.join('/');\r\n }\r\n }\r\n\r\n if (this.breadcrumbs.length > 0) {\r\n this.breadcrumbs[this.breadcrumbs.length - 1].page = name;\r\n this.breadcrumbs[this.breadcrumbs.length - 1].path = path;\r\n Breadcrumbs.SetLast(name, path);\r\n }\r\n\r\n this.router.navigateByUrl(path)\r\n }\r\n\r\n\r\n /** */\r\n private SetSource(): void {\r\n Source.Set(this._page);\r\n }\r\n\r\n\r\n /** */\r\n private GetSource(): void {\r\n this._source = Source.Get();\r\n }\r\n\r\n\r\n /** */\r\n protected GetPageResponse(): void {\r\n this.pageResponse = Source.GetPageResponse();\r\n }\r\n\r\n\r\n /** */\r\n private GetNavigation(): void {\r\n if (this._source) {\r\n this.breadcrumbs = Breadcrumbs.Get().map(item => Object.assign({\r\n page: item.page,\r\n path: item.path,\r\n click: this.GoBack(item.path)\r\n }));\r\n }\r\n\r\n else this.breadcrumbs = [{ page: this._page }];\r\n }\r\n\r\n\r\n /** */\r\n private SetGoBack(): void {\r\n if (this._source) {\r\n this.goBack = {\r\n show: true,\r\n path: this._source.path,\r\n click: this.GoBack()\r\n };\r\n }\r\n }\r\n\r\n\r\n /** */\r\n private GoBack = (path?: string) => (() => {\r\n if (path) Breadcrumbs.Remove(path);\r\n else Breadcrumbs.RemoveLast();\r\n });\r\n\r\n\r\n /** Navigate to previous page */\r\n protected GoToSource<T>(pageResponse: T | null = null): void {\r\n if(this._source) {\r\n Breadcrumbs.RemoveLast();\r\n this.SetPageResponse(pageResponse);\r\n Tools.Sleep().then(_ => this.router.navigateByUrl(this._source!.path));\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected SetPageResponse<T>(pageResponse: T | null = null): void {\r\n if (Tools.IsNotNull(pageResponse)) {\r\n this._preventDestroy = true;\r\n Source.SetPageResponse(pageResponse);\r\n }\r\n };\r\n\r\n\r\n /** */\r\n protected ReloadPage(): void {\r\n Breadcrumbs.RemoveLast();\r\n setTimeout(() => window.location.reload());\r\n }\r\n\r\n\r\n /** */\r\n protected Log(value: any, log: string | null = null): void {\r\n if (Tools.IsNotNull(log)) console.log({ log, value });\r\n else console.log(value);\r\n }\r\n}","\r\nimport { IScreenSize } from \"coer-elements/interfaces\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport class Screen {\r\n\r\n public static get WINDOW_WIDTH(): number {\r\n return window.innerWidth;\r\n }\r\n\r\n\r\n public static get WINDOW_HEIGHT(): number {\r\n return window.innerHeight;\r\n }\r\n\r\n\r\n public static get DEVICE_WIDTH(): number {\r\n return window.screen.width;\r\n }\r\n\r\n\r\n public static get DEVICE_HEIGHT(): number {\r\n return window.screen.height;\r\n }\r\n\r\n\r\n public static get BREAKPOINT(): 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n if (window.innerWidth < 576) return 'xs';\r\n else if (window.innerWidth >= 576 && window.innerWidth < 768) return 'sm';\r\n else if (window.innerWidth >= 768 && window.innerWidth < 992) return 'md';\r\n else if (window.innerWidth >= 992 && window.innerWidth < 1200) return 'lg';\r\n else if (window.innerWidth >= 1200 && window.innerWidth < 1400) return 'xl';\r\n else return 'xxl';\r\n }\r\n\r\n\r\n /** */\r\n public static Resize = new Observable<IScreenSize>(subscriber => {\r\n window.addEventListener(\"load\", () => {\r\n window.dispatchEvent(new Event('resize'));\r\n });\r\n\r\n window.onresize = () => {\r\n subscriber.next({\r\n width: this.WINDOW_WIDTH,\r\n height: this.WINDOW_HEIGHT,\r\n breakpoin: this.BREAKPOINT\r\n });\r\n }\r\n });\r\n\r\n\r\n /** */\r\n public static BackButtonBrowser = new Observable<string>(subscriber => {\r\n window.addEventListener('popstate', popStateEvent => {\r\n if (popStateEvent.state && popStateEvent.target) {\r\n subscriber.next((popStateEvent.target as any).location.href);\r\n }\r\n });\r\n });\r\n}","import { inject } from \"@angular/core\";\r\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpRequest } from \"@angular/common/http\";\r\nimport { CoerAlert } from \"./coer-alert/coer-alert.component\";\r\nimport { IHttpRequest, IHttpResponse } from \"coer-elements/interfaces\";\r\nimport { Tools } from \"./tools\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nexport class Service {\r\n\r\n //Injections\r\n protected readonly alert = inject(CoerAlert);\r\n protected readonly http = inject(HttpClient);\r\n\r\n protected httpCode = {\r\n Ok: 200,\r\n Created: 201,\r\n NoContent: 204,\r\n BadRequest: 400,\r\n Unauthorize: 401,\r\n NotFound: 404,\r\n NotAllowed: 405,\r\n NotAcceptable: 406,\r\n Conflict: 409,\r\n PayloadTooLarge: 413,\r\n InnerError: 500\r\n }\r\n\r\n\r\n //Subscriptions\r\n private _GET$!: Subscription;\r\n private _POST$!: Subscription;\r\n private _PUT$!: Subscription;\r\n private _PATCH$!: Subscription;\r\n private _DELETE$!: Subscription;\r\n\r\n\r\n /** */\r\n private ReleaseSubscription(subscription: Subscription): void {\r\n if (subscription && !subscription.closed) subscription.unsubscribe();\r\n }\r\n\r\n\r\n /** HTTP GET */\r\n protected HTTP_GET<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n this._GET$ = this.http.request<T>(new HttpRequest(\"GET\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._GET$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._GET$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP POST */\r\n protected HTTP_POST<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<T>>(Resolve => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n this._POST$ = this.http.request<T>(new HttpRequest(\"POST\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: Tools.BreakReference<T>(response.body),\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._POST$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._POST$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP PUT */\r\n protected HTTP_PUT<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n this._PUT$ = this.http.request<T>(new HttpRequest(\"PUT\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PUT$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._PUT$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP PATCH */\r\n protected HTTP_PATCH<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n this._PATCH$ = this.http.request<T>(new HttpRequest(\"PATCH\", request.url, request.body, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._PATCH$);\r\n\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Updated', 'fa-solid fa-arrows-rotate fa-spin');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** HTTP DELETE */\r\n protected HTTP_DELETE<T>(request: IHttpRequest<T>) {\r\n return new Promise<IHttpResponse<void>>(Resolve => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n\r\n this._DELETE$ = this.http.request<T>(new HttpRequest(\"DELETE\", request.url, { params: request.queryParams, headers: request.headers })).subscribe({\r\n next: (response: HttpEvent<T> | any) => {\r\n if (response.type > 0) {\r\n Resolve({\r\n body: {} as any,\r\n status: response.status,\r\n message: response.statusText,\r\n ok: true\r\n });\r\n }\r\n },\r\n\r\n error: (httpError: HttpErrorResponse) => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n this.AlertError(httpError, request.alertError);\r\n\r\n Resolve({\r\n body: {} as any,\r\n status: httpError.status,\r\n message: httpError.error?.message || httpError.error,\r\n ok: false\r\n });\r\n },\r\n\r\n complete: () => {\r\n this.ReleaseSubscription(this._DELETE$);\r\n if (Tools.IsNotOnlyWhiteSpace(request.alertSuccess)) {\r\n this.alert.Success(request.alertSuccess, 'Deleted', 'fa-regular fa-trash-can');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n /** */\r\n private AlertError(httpError: HttpErrorResponse, message?: string): void {\r\n if (httpError.status >= 500) {\r\n if (Tools.IsNotOnlyWhiteSpace(message)) {\r\n this.alert.Error('', message, 'fa-solid fa-bug', null);\r\n }\r\n }\r\n\r\n else if (httpError.status < 500) {\r\n switch(httpError.status) {\r\n case 400: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Bad Request', 'fa-regular fa-face-grin-beam-sweat fa-lg');\r\n break;\r\n }\r\n\r\n case 401: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Unauthorize', 'fa-regular fa-face-rolling-eyes fa-lg');\r\n break;\r\n }\r\n\r\n case 404: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Found', 'fa-regular fa-face-meh fa-lg');\r\n break;\r\n }\r\n\r\n case 405: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Allowed', 'fa-regular fa-face-grimace fa-lg');\r\n break;\r\n }\r\n\r\n case 406: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Not Acceptable', 'fa-regular fa-face-frown-open fa-lg');\r\n break;\r\n }\r\n\r\n case 409: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Conflict', 'fa-regular fa-face-dizzy fa-lg');\r\n break;\r\n }\r\n\r\n case 413: {\r\n this.alert.Warning(httpError.error?.message || httpError.error, 'Too Large', 'fa-regular fa-face-flushed fa-lg');\r\n break;\r\n }\r\n\r\n default: {\r\n if (httpError.status <= 0) {\r\n this.alert.Warning('Without Connection', 'WEB API DOWN', 'fa-solid fa-plug-circle-xmark fa-lg', null);\r\n }\r\n\r\n else this.alert.Warning(httpError.error?.message || httpError.error);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|