codefoxcore 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ import { DOCUMENT, isPlatformBrowser } from "@angular/common";
2
+ import { inject, PLATFORM_ID } from "@angular/core";
3
+ export function isBrowser() {
4
+ const platformId = inject(PLATFORM_ID);
5
+ return isPlatformBrowser(platformId);
6
+ }
7
+ export function localStorage() {
8
+ const document = inject(DOCUMENT);
9
+ if (document.defaultView !== null) {
10
+ return document.defaultView.window.localStorage;
11
+ }
12
+ return null;
13
+ }
14
+ export function sessionStorage() {
15
+ const document = inject(DOCUMENT);
16
+ if (document.defaultView !== null) {
17
+ return document.defaultView.window.sessionStorage;
18
+ }
19
+ return null;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGVmb3hjb3JlL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEQsTUFBTSxVQUFVLFNBQVM7SUFDeEIsTUFBTSxVQUFVLEdBQVcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZO0lBQzNCLE1BQU0sUUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxJQUFJLFFBQVEsQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO1FBQ2xDLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO0tBQ2hEO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLGNBQWM7SUFDN0IsTUFBTSxRQUFRLEdBQWEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLElBQUksUUFBUSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7UUFDbEMsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7S0FDbEQ7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IGluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQnJvd3NlcigpOiBib29sZWFuIHtcclxuXHRjb25zdCBwbGF0Zm9ybUlkOiBPYmplY3QgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cdHJldHVybiBpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsU3RvcmFnZSgpOiBTdG9yYWdlIHwgbnVsbCB7XHJcblx0Y29uc3QgZG9jdW1lbnQ6IERvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuXHRpZiAoZG9jdW1lbnQuZGVmYXVsdFZpZXcgIT09IG51bGwpIHtcclxuXHRcdHJldHVybiBkb2N1bWVudC5kZWZhdWx0Vmlldy53aW5kb3cubG9jYWxTdG9yYWdlO1xyXG5cdH1cclxuXHRyZXR1cm4gbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNlc3Npb25TdG9yYWdlKCk6IFN0b3JhZ2UgfCBudWxsIHtcclxuXHRjb25zdCBkb2N1bWVudDogRG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG5cdGlmIChkb2N1bWVudC5kZWZhdWx0VmlldyAhPT0gbnVsbCkge1xyXG5cdFx0cmV0dXJuIGRvY3VtZW50LmRlZmF1bHRWaWV3LndpbmRvdy5zZXNzaW9uU3RvcmFnZTtcclxuXHR9XHJcblx0cmV0dXJuIG51bGw7XHJcbn0iXX0=
@@ -25,4 +25,10 @@ export var LogLevel;
25
25
  LogLevel[LogLevel["Fatal"] = 5] = "Fatal";
26
26
  LogLevel[LogLevel["Off"] = 6] = "Off";
27
27
  })(LogLevel || (LogLevel = {}));
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGVmb3hjb3JlL3NyYy9saWIvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrREEsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM1QiwyQ0FBbUIsQ0FBQTtJQUNuQixxQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CO0FBMEJELE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDdkIsOEJBQVcsQ0FBQTtJQUNYLG9DQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDdkIsc0NBQW1CLENBQUE7SUFDbkIsc0NBQW1CLENBQUE7SUFDbkIsb0NBQWlCLENBQUE7SUFDakIsZ0NBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUI7QUErQkQsTUFBTSxDQUFOLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNoQixxQ0FBTyxDQUFBO0lBQ1AseUNBQVMsQ0FBQTtJQUNULHVDQUFRLENBQUE7SUFDUix1Q0FBUSxDQUFBO0lBQ1IseUNBQVMsQ0FBQTtJQUNULHlDQUFTLENBQUE7SUFDVCxxQ0FBTyxDQUFBO0FBQ1gsQ0FBQyxFQVJXLFFBQVEsS0FBUixRQUFRLFFBUW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBUeXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gXCIuL2NsYXNzZXMvZGlhbG9nLnJlZi5jbGFzc1wiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dDb21wb25lbnRSZWZDb250YWluZXIge1xyXG4gICAgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcclxuICAgIGNvbnRhaW5lcjogSFRNTERpdkVsZW1lbnQ7XHJcblx0b3BlbkluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFByZWRlZmluZWREaWFsb2dzID0ge1trZXk6IHN0cmluZ106ICgoKSA9PiBQcm9taXNlPFR5cGU8YW55Pj4pIHwge2NvbXBvbmVudDogKCkgPT4gUHJvbWlzZTxUeXBlPGFueT4+LCBjb25maWd1cmF0aW9uOiBEaWFsb2dDb25maWd1cmF0aW9ufX07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0NvbmZpZ3VyYXRpb24ge1xyXG4gICAgc2hvd0Nsb3NlSWNvbj86IGJvb2xlYW47XHJcblx0YmVmb3JlQ2xvc2U/OiBDZkRpYWxvZ0NvbmZpZ3VyYXRpb25CZWZvcmVDbG9zZTtcclxuXHRpZ25vcmVLZXlVcD86IGJvb2xlYW47XHJcbiAgICBkYXRhPzogYW55O1xyXG4gICAgbm9QYWRkaW5nPzogYm9vbGVhbjtcclxuXHRrZWVwQWN0aXZlRWxlbWVudD86IGJvb2xlYW47XHJcblx0Y29udGFpbmVyQ2xhc3Nlcz86IHN0cmluZ1tdO1xyXG5cdGRpYWxvZ0NsYXNzZXM/OiBzdHJpbmdbXTtcclxuXHR0aXRsZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBjb250ZW50RWxlbWVudD86IEVsZW1lbnQgfCBudWxsO1xyXG4gICAgc2luZ2xlPzogYm9vbGVhbjtcclxuICAgIHdpZHRoPzogc3RyaW5nIHwgbnVsbDtcclxuXHRoZWlnaHQ/OiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDZkRpYWxvZ0NvbmZpZ3VyYXRpb25CZWZvcmVDbG9zZSA9IG51bGwgfCAoKCkgPT4gYm9vbGVhbiB8IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+KSB8IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtQ29uZmlndXJhdGlvbiB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG4gICAgYWNjZXB0VGV4dDogc3RyaW5nO1xyXG4gICAgZGVjbGluZVRleHQ6IHN0cmluZztcclxuXHRoaWRlRGVjbGluZUJ1dHRvbj86IGJvb2xlYW47XHJcbiAgICBzd2l0Y2hCdXR0b25Db2xvcnM/OiBib29sZWFuO1xyXG4gICAgYWNjZXB0VGltZW91dD86IG51bWJlcjtcclxuICAgIGFjY2VwdFZhbGlkYXRpb25UZXh0Pzogc3RyaW5nO1xyXG4gICAgYWNjZXB0VmFsaWRhdGlvbk1vZGU/OiBBY2NlcHRWYWxpZGF0aW9uTW9kZTtcclxuICAgIGFjY2VwdFZhbGlkYXRpb25MYWJlbD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBbGVydENvbmZpZ3VyYXRpb24ge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHRleHQ6IHN0cmluZztcclxuXHRzaG93Q2xvc2VJY29uPzogYm9vbGVhbjtcclxuXHRidXR0b24/OiBQYXJ0aWFsPEFsZXJ0QnV0dG9uQ29uZmlndXJhdGlvbj47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEFjY2VwdFZhbGlkYXRpb25Nb2RlIHtcclxuICAgIFBBVFRFUk4gPSAnUEFUVEVSTicsXHJcbiAgICBURVhUID0gJ1RFWFQnXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWxlcnRCdXR0b25Db25maWd1cmF0aW9uIHtcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdHNldmVyaXR5OiBzdHJpbmc7XHJcblx0Y2FsbGJhY2s6IChwYXJhbXM6IHtkaWFsb2dSZWY6IERpYWxvZ1JlZn0pID0+IHZvaWQ7XHJcblx0dHJhbnNsYXRlTGFiZWw6IGJvb2xlYW47XHJcblx0Zm9jdXM6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2ZEaWFsb2dDbG9zZVBhcmFtcyB7XHJcbiAgICBtZXNzYWdlPzogTWVzc2FnZVBhcnRpYWw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZVBhcnRpYWwgZXh0ZW5kcyBQYXJ0aWFsPE1lc3NhZ2VDb25maWd1cmF0aW9uPiB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VDb25maWd1cmF0aW9uIHtcclxuICAgIGNsb3NlYWJsZTogYm9vbGVhbjtcclxuICAgIHBvc2l0aW9uOiBNZXNzYWdlUG9zaXRpb247XHJcbiAgICBsaWZldGltZTogbnVtYmVyIHwgbnVsbDtcclxuICAgIHNldmVyaXR5OiBNZXNzYWdlU2V2ZXJpdHk7XHJcblx0a2VlcE9uSG92ZXI6IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGVudW0gTWVzc2FnZVBvc2l0aW9uIHtcclxuICAgIFRPUCA9ICd0b3AnLFxyXG4gICAgQk9UVE9NID0gJ2JvdHRvbSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTWVzc2FnZVNldmVyaXR5IHtcclxuICAgIFNVQ0NFU1MgPSAnc3VjY2VzcycsXHJcbiAgICBXQVJOSU5HID0gJ3dhcm5pbmcnLFxyXG4gICAgREFOR0VSID0gJ2RhbmdlcicsXHJcbiAgICBJTkZPID0gJ2luZm8nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ0NvbmZpZ3VyYXRpb24ge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHRleHQ6IHN0cmluZztcclxuXHRsb2FkaW5nSWNvbj86IHN0cmluZztcclxuICAgIGljb25TaXplPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1vZGFsV2l0aEJ1dHRvbnNDb25maWd1cmF0aW9uIHtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcblx0c2hvd0Nsb3NlSWNvbj86IGJvb2xlYW47XHJcblx0YnV0dG9uczogQnV0dG9uQ29uZmlndXJhdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJ1dHRvbkNvbmZpZ3VyYXRpb24ge1xyXG5cdGxhYmVsOiBzdHJpbmc7XHJcblx0c2V2ZXJpdHk6IHN0cmluZztcclxuXHRjYWxsYmFjaz86IChwYXJhbXM6IHtkaWFsb2dSZWY6IERpYWxvZ1JlZn0pID0+IHZvaWQ7XHJcblx0cm91dGVyTGluaz86IGFueTtcclxuXHRmb2N1cz86IGJvb2xlYW47XHJcblx0cGVybWlzc2lvbj86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG5cdHRyYW5zbGF0ZUxhYmVsPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIGV4dGVuZHMgTWVzc2FnZUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTG9nTGV2ZWwge1xyXG4gICAgQWxsID0gMCxcclxuICAgIERlYnVnID0gMSxcclxuICAgIEluZm8gPSAyLFxyXG4gICAgV2FybiA9IDMsXHJcbiAgICBFcnJvciA9IDQsXHJcbiAgICBGYXRhbCA9IDUsXHJcbiAgICBPZmYgPSA2XHJcbn0iXX0=
28
+ export var TokenServiceMode;
29
+ (function (TokenServiceMode) {
30
+ TokenServiceMode[TokenServiceMode["LOCALSTORAGE"] = 0] = "LOCALSTORAGE";
31
+ TokenServiceMode[TokenServiceMode["SESSIONSTORAGE"] = 1] = "SESSIONSTORAGE";
32
+ TokenServiceMode[TokenServiceMode["COOKIE"] = 2] = "COOKIE";
33
+ })(TokenServiceMode || (TokenServiceMode = {}));
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGVmb3hjb3JlL3NyYy9saWIvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrREEsTUFBTSxDQUFOLElBQVksb0JBR1g7QUFIRCxXQUFZLG9CQUFvQjtJQUM1QiwyQ0FBbUIsQ0FBQTtJQUNuQixxQ0FBYSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CO0FBMEJELE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDdkIsOEJBQVcsQ0FBQTtJQUNYLG9DQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDdkIsc0NBQW1CLENBQUE7SUFDbkIsc0NBQW1CLENBQUE7SUFDbkIsb0NBQWlCLENBQUE7SUFDakIsZ0NBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsZUFBZSxLQUFmLGVBQWUsUUFLMUI7QUErQkQsTUFBTSxDQUFOLElBQVksUUFRWDtBQVJELFdBQVksUUFBUTtJQUNoQixxQ0FBTyxDQUFBO0lBQ1AseUNBQVMsQ0FBQTtJQUNULHVDQUFRLENBQUE7SUFDUix1Q0FBUSxDQUFBO0lBQ1IseUNBQVMsQ0FBQTtJQUNULHlDQUFTLENBQUE7SUFDVCxxQ0FBTyxDQUFBO0FBQ1gsQ0FBQyxFQVJXLFFBQVEsS0FBUixRQUFRLFFBUW5CO0FBRUQsTUFBTSxDQUFOLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUN4Qix1RUFBZ0IsQ0FBQTtJQUNoQiwyRUFBa0IsQ0FBQTtJQUNsQiwyREFBVSxDQUFBO0FBQ2QsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYsIFR5cGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSBcIi4vY2xhc3Nlcy9kaWFsb2cucmVmLmNsYXNzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0NvbXBvbmVudFJlZkNvbnRhaW5lciB7XHJcbiAgICBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xyXG4gICAgY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudDtcclxuXHRvcGVuSW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJlZGVmaW5lZERpYWxvZ3MgPSB7W2tleTogc3RyaW5nXTogKCgpID0+IFByb21pc2U8VHlwZTxhbnk+PikgfCB7Y29tcG9uZW50OiAoKSA9PiBQcm9taXNlPFR5cGU8YW55Pj4sIGNvbmZpZ3VyYXRpb246IERpYWxvZ0NvbmZpZ3VyYXRpb259fTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGlhbG9nQ29uZmlndXJhdGlvbiB7XHJcbiAgICBzaG93Q2xvc2VJY29uPzogYm9vbGVhbjtcclxuXHRiZWZvcmVDbG9zZT86IENmRGlhbG9nQ29uZmlndXJhdGlvbkJlZm9yZUNsb3NlO1xyXG5cdGlnbm9yZUtleVVwPzogYm9vbGVhbjtcclxuICAgIGRhdGE/OiBhbnk7XHJcbiAgICBub1BhZGRpbmc/OiBib29sZWFuO1xyXG5cdGtlZXBBY3RpdmVFbGVtZW50PzogYm9vbGVhbjtcclxuXHRjb250YWluZXJDbGFzc2VzPzogc3RyaW5nW107XHJcblx0ZGlhbG9nQ2xhc3Nlcz86IHN0cmluZ1tdO1xyXG5cdHRpdGxlPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGNvbnRlbnRFbGVtZW50PzogRWxlbWVudCB8IG51bGw7XHJcbiAgICBzaW5nbGU/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBzdHJpbmcgfCBudWxsO1xyXG5cdGhlaWdodD86IHN0cmluZyB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIENmRGlhbG9nQ29uZmlndXJhdGlvbkJlZm9yZUNsb3NlID0gbnVsbCB8ICgoKSA9PiBib29sZWFuIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj4pIHwgT2JzZXJ2YWJsZTxib29sZWFuPiB8IFByb21pc2U8Ym9vbGVhbj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1Db25maWd1cmF0aW9uIHtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcbiAgICBhY2NlcHRUZXh0OiBzdHJpbmc7XHJcbiAgICBkZWNsaW5lVGV4dDogc3RyaW5nO1xyXG5cdGhpZGVEZWNsaW5lQnV0dG9uPzogYm9vbGVhbjtcclxuICAgIHN3aXRjaEJ1dHRvbkNvbG9ycz86IGJvb2xlYW47XHJcbiAgICBhY2NlcHRUaW1lb3V0PzogbnVtYmVyO1xyXG4gICAgYWNjZXB0VmFsaWRhdGlvblRleHQ/OiBzdHJpbmc7XHJcbiAgICBhY2NlcHRWYWxpZGF0aW9uTW9kZT86IEFjY2VwdFZhbGlkYXRpb25Nb2RlO1xyXG4gICAgYWNjZXB0VmFsaWRhdGlvbkxhYmVsPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFsZXJ0Q29uZmlndXJhdGlvbiB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG5cdHNob3dDbG9zZUljb24/OiBib29sZWFuO1xyXG5cdGJ1dHRvbj86IFBhcnRpYWw8QWxlcnRCdXR0b25Db25maWd1cmF0aW9uPjtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQWNjZXB0VmFsaWRhdGlvbk1vZGUge1xyXG4gICAgUEFUVEVSTiA9ICdQQVRURVJOJyxcclxuICAgIFRFWFQgPSAnVEVYVCdcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBbGVydEJ1dHRvbkNvbmZpZ3VyYXRpb24ge1xyXG5cdGxhYmVsOiBzdHJpbmc7XHJcblx0c2V2ZXJpdHk6IHN0cmluZztcclxuXHRjYWxsYmFjazogKHBhcmFtczoge2RpYWxvZ1JlZjogRGlhbG9nUmVmfSkgPT4gdm9pZDtcclxuXHR0cmFuc2xhdGVMYWJlbDogYm9vbGVhbjtcclxuXHRmb2N1czogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDZkRpYWxvZ0Nsb3NlUGFyYW1zIHtcclxuICAgIG1lc3NhZ2U/OiBNZXNzYWdlUGFydGlhbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlUGFydGlhbCBleHRlbmRzIFBhcnRpYWw8TWVzc2FnZUNvbmZpZ3VyYXRpb24+IHtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgY2xvc2VhYmxlOiBib29sZWFuO1xyXG4gICAgcG9zaXRpb246IE1lc3NhZ2VQb3NpdGlvbjtcclxuICAgIGxpZmV0aW1lOiBudW1iZXIgfCBudWxsO1xyXG4gICAgc2V2ZXJpdHk6IE1lc3NhZ2VTZXZlcml0eTtcclxuXHRrZWVwT25Ib3ZlcjogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgZW51bSBNZXNzYWdlUG9zaXRpb24ge1xyXG4gICAgVE9QID0gJ3RvcCcsXHJcbiAgICBCT1RUT00gPSAnYm90dG9tJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBNZXNzYWdlU2V2ZXJpdHkge1xyXG4gICAgU1VDQ0VTUyA9ICdzdWNjZXNzJyxcclxuICAgIFdBUk5JTkcgPSAnd2FybmluZycsXHJcbiAgICBEQU5HRVIgPSAnZGFuZ2VyJyxcclxuICAgIElORk8gPSAnaW5mbydcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMb2FkaW5nQ29uZmlndXJhdGlvbiB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgdGV4dDogc3RyaW5nO1xyXG5cdGxvYWRpbmdJY29uPzogc3RyaW5nO1xyXG4gICAgaWNvblNpemU/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9kYWxXaXRoQnV0dG9uc0NvbmZpZ3VyYXRpb24ge1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHRleHQ6IHN0cmluZztcclxuXHRzaG93Q2xvc2VJY29uPzogYm9vbGVhbjtcclxuXHRidXR0b25zOiBCdXR0b25Db25maWd1cmF0aW9uW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uQ29uZmlndXJhdGlvbiB7XHJcblx0bGFiZWw6IHN0cmluZztcclxuXHRzZXZlcml0eTogc3RyaW5nO1xyXG5cdGNhbGxiYWNrPzogKHBhcmFtczoge2RpYWxvZ1JlZjogRGlhbG9nUmVmfSkgPT4gdm9pZDtcclxuXHRyb3V0ZXJMaW5rPzogYW55O1xyXG5cdGZvY3VzPzogYm9vbGVhbjtcclxuXHRwZXJtaXNzaW9uPzogc3RyaW5nIHwgc3RyaW5nW107XHJcblx0dHJhbnNsYXRlTGFiZWw/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2UgZXh0ZW5kcyBNZXNzYWdlQ29uZmlndXJhdGlvbiB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XHJcbiAgICBBbGwgPSAwLFxyXG4gICAgRGVidWcgPSAxLFxyXG4gICAgSW5mbyA9IDIsXHJcbiAgICBXYXJuID0gMyxcclxuICAgIEVycm9yID0gNCxcclxuICAgIEZhdGFsID0gNSxcclxuICAgIE9mZiA9IDZcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVG9rZW5TZXJ2aWNlTW9kZSB7XHJcbiAgICBMT0NBTFNUT1JBR0UgPSAwLFxyXG4gICAgU0VTU0lPTlNUT1JBR0UgPSAxLFxyXG4gICAgQ09PS0lFID0gMlxyXG59Il19
@@ -0,0 +1,92 @@
1
+ import { DOCUMENT } from "@angular/common";
2
+ import { Injectable, inject } from "@angular/core";
3
+ import { isBrowser } from "../helpers";
4
+ import { LoggerService } from "./logger.service";
5
+ import * as i0 from "@angular/core";
6
+ export class CookieService {
7
+ constructor() {
8
+ this.browser = isBrowser();
9
+ this.document = inject(DOCUMENT);
10
+ this.loggerService = inject(LoggerService);
11
+ }
12
+ /**
13
+ * Get the value of a cookie by name, returns `null` if the cookie is not set
14
+ *
15
+ * @param name name of the cookie
16
+ * @returns value of the cookie
17
+ */
18
+ get(name) {
19
+ if (!this.browser) {
20
+ return null;
21
+ }
22
+ const cookies = this.cookies;
23
+ return cookies[name] || null;
24
+ }
25
+ /**
26
+ * Set the value of a cookie with the given name
27
+ *
28
+ * @param name name of the cookie
29
+ * @param value value of the cookie
30
+ * @param expire expire of the cookie in seconds, if null, it will never expire
31
+ * @param path path of the cookie, default is '/'
32
+ * @param config optional configuration values (expire in seconds, path of cookie)
33
+ */
34
+ set(name, value, expire = null, path = '/') {
35
+ if (!this.browser) {
36
+ return;
37
+ }
38
+ if (path === null) {
39
+ path = '/';
40
+ }
41
+ // Default cookie informations
42
+ let cookie = `${name}=${value};`;
43
+ // If we have an expire date, we need to set
44
+ if (expire !== null) {
45
+ let d = new Date();
46
+ d.setTime(d.getTime() + (expire * 1000));
47
+ cookie += `expires=${d.toUTCString()};`;
48
+ }
49
+ // Set path
50
+ cookie += `path=${path};`;
51
+ // Log
52
+ this.loggerService.info('Cookie data to set: ' + cookie);
53
+ // Set the cookie
54
+ this.document.cookie = cookie;
55
+ }
56
+ /**
57
+ * Delete a cookie by its name
58
+ *
59
+ * @param name name of the cookie
60
+ */
61
+ delete(name) {
62
+ if (!this.browser) {
63
+ return;
64
+ }
65
+ this.set(name, '', -1);
66
+ }
67
+ get cookies() {
68
+ if (!this.browser) {
69
+ return {};
70
+ }
71
+ const cookies = this.document.cookie;
72
+ if (cookies.length === 0) {
73
+ return {};
74
+ }
75
+ const cookiesArray = cookies.split(';');
76
+ const cookiesObject = {};
77
+ cookiesArray.forEach((cookiesArrayItem) => {
78
+ const cookiesArrayItemSplit = cookiesArrayItem.split('=');
79
+ cookiesObject[cookiesArrayItemSplit[0].trim()] = cookiesArrayItemSplit[1];
80
+ });
81
+ return cookiesObject;
82
+ }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
84
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CookieService, providedIn: 'root' }); }
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CookieService, decorators: [{
87
+ type: Injectable,
88
+ args: [{
89
+ providedIn: 'root'
90
+ }]
91
+ }] });
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL3NlcnZpY2VzL2Nvb2tpZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLakQsTUFBTSxPQUFPLGFBQWE7SUFIMUI7UUFLQyxZQUFPLEdBQVksU0FBUyxFQUFFLENBQUM7UUFDL0IsYUFBUSxHQUFhLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QyxrQkFBYSxHQUFrQixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7S0FxRnJEO0lBbkZBOzs7OztPQUtHO0lBQ0gsR0FBRyxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQztTQUNaO1FBQ0QsTUFBTSxPQUFPLEdBQTRCLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdEQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEdBQUcsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLFNBQXdCLElBQUksRUFBRSxPQUFzQixHQUFHO1FBRXZGLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2xCLE9BQU87U0FDUDtRQUVELElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNsQixJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQ1g7UUFFRCw4QkFBOEI7UUFDOUIsSUFBSSxNQUFNLEdBQVcsR0FBRyxJQUFJLElBQUksS0FBSyxHQUFHLENBQUM7UUFFekMsNENBQTRDO1FBQzVDLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUM7U0FDeEM7UUFFRCxXQUFXO1FBQ1gsTUFBTSxJQUFJLFFBQVEsSUFBSSxHQUFHLENBQUM7UUFFMUIsTUFBTTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRXpELGlCQUFpQjtRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNsQixPQUFPO1NBQ1A7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBRVYsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEIsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUVELE1BQU0sT0FBTyxHQUFXLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzdDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDekIsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUNELE1BQU0sWUFBWSxHQUFhLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEQsTUFBTSxhQUFhLEdBQTRCLEVBQUUsQ0FBQztRQUNsRCxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQXdCLEVBQUUsRUFBRTtZQUNqRCxNQUFNLHFCQUFxQixHQUFhLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwRSxhQUFhLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sYUFBYSxDQUFDO0lBQ3RCLENBQUM7K0dBekZXLGFBQWE7bUhBQWIsYUFBYSxjQUZiLE1BQU07OzRGQUVOLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1gsVUFBVSxFQUFFLE1BQU07aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XHJcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tIFwiLi9sb2dnZXIuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29va2llU2VydmljZSB7XHJcblxyXG5cdGJyb3dzZXI6IGJvb2xlYW4gPSBpc0Jyb3dzZXIoKTtcclxuXHRkb2N1bWVudDogRG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG5cclxuXHRsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlID0gaW5qZWN0KExvZ2dlclNlcnZpY2UpO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgdGhlIHZhbHVlIG9mIGEgY29va2llIGJ5IG5hbWUsIHJldHVybnMgYG51bGxgIGlmIHRoZSBjb29raWUgaXMgbm90IHNldFxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgdGhlIGNvb2tpZVxyXG5cdCAqIEByZXR1cm5zIHZhbHVlIG9mIHRoZSBjb29raWVcclxuXHQgKi9cclxuXHRnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcblx0XHRpZiAoIXRoaXMuYnJvd3Nlcikge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGNvb2tpZXM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0gdGhpcy5jb29raWVzO1xyXG5cdFx0cmV0dXJuIGNvb2tpZXNbbmFtZV0gfHwgbnVsbDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB0aGUgdmFsdWUgb2YgYSBjb29raWUgd2l0aCB0aGUgZ2l2ZW4gbmFtZVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgdGhlIGNvb2tpZVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSB2YWx1ZSBvZiB0aGUgY29va2llXHJcblx0ICogQHBhcmFtIGV4cGlyZSBleHBpcmUgb2YgdGhlIGNvb2tpZSBpbiBzZWNvbmRzLCBpZiBudWxsLCBpdCB3aWxsIG5ldmVyIGV4cGlyZVxyXG5cdCAqIEBwYXJhbSBwYXRoIHBhdGggb2YgdGhlIGNvb2tpZSwgZGVmYXVsdCBpcyAnLydcclxuXHQgKiBAcGFyYW0gY29uZmlnIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gdmFsdWVzIChleHBpcmUgaW4gc2Vjb25kcywgcGF0aCBvZiBjb29raWUpXHJcblx0ICovXHJcblx0c2V0KG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgZXhwaXJlOiBudW1iZXIgfCBudWxsID0gbnVsbCwgcGF0aDogc3RyaW5nIHwgbnVsbCA9ICcvJyk6IHZvaWQge1xyXG5cclxuXHRcdGlmICghdGhpcy5icm93c2VyKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAocGF0aCA9PT0gbnVsbCkge1xyXG5cdFx0XHRwYXRoID0gJy8nO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIERlZmF1bHQgY29va2llIGluZm9ybWF0aW9uc1xyXG5cdFx0bGV0IGNvb2tpZTogc3RyaW5nID0gYCR7bmFtZX09JHt2YWx1ZX07YDtcclxuXHJcblx0XHQvLyBJZiB3ZSBoYXZlIGFuIGV4cGlyZSBkYXRlLCB3ZSBuZWVkIHRvIHNldFxyXG5cdFx0aWYgKGV4cGlyZSAhPT0gbnVsbCkge1xyXG5cdFx0XHRsZXQgZDogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdGQuc2V0VGltZShkLmdldFRpbWUoKSArIChleHBpcmUgKiAxMDAwKSk7XHJcblx0XHRcdGNvb2tpZSArPSBgZXhwaXJlcz0ke2QudG9VVENTdHJpbmcoKX07YDtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBTZXQgcGF0aFxyXG5cdFx0Y29va2llICs9IGBwYXRoPSR7cGF0aH07YDtcclxuXHJcblx0XHQvLyBMb2dcclxuXHRcdHRoaXMubG9nZ2VyU2VydmljZS5pbmZvKCdDb29raWUgZGF0YSB0byBzZXQ6ICcgKyBjb29raWUpO1xyXG5cclxuXHRcdC8vIFNldCB0aGUgY29va2llXHJcblx0XHR0aGlzLmRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZSBhIGNvb2tpZSBieSBpdHMgbmFtZVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgdGhlIGNvb2tpZVxyXG5cdCAqL1xyXG5cdGRlbGV0ZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5icm93c2VyKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuc2V0KG5hbWUsICcnLCAtMSk7XHJcblx0fVxyXG5cclxuXHRnZXQgY29va2llcygpOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSB7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmJyb3dzZXIpIHtcclxuXHRcdFx0cmV0dXJuIHt9O1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGNvb2tpZXM6IHN0cmluZyA9IHRoaXMuZG9jdW1lbnQuY29va2llO1xyXG5cdFx0aWYgKGNvb2tpZXMubGVuZ3RoID09PSAwKSB7XHJcblx0XHRcdHJldHVybiB7fTtcclxuXHRcdH1cclxuXHRcdGNvbnN0IGNvb2tpZXNBcnJheTogc3RyaW5nW10gPSBjb29raWVzLnNwbGl0KCc7Jyk7XHJcblx0XHRjb25zdCBjb29raWVzT2JqZWN0OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xyXG5cdFx0Y29va2llc0FycmF5LmZvckVhY2goKGNvb2tpZXNBcnJheUl0ZW06IHN0cmluZykgPT4ge1xyXG5cdFx0XHRjb25zdCBjb29raWVzQXJyYXlJdGVtU3BsaXQ6IHN0cmluZ1tdID0gY29va2llc0FycmF5SXRlbS5zcGxpdCgnPScpO1xyXG5cdFx0XHRjb29raWVzT2JqZWN0W2Nvb2tpZXNBcnJheUl0ZW1TcGxpdFswXS50cmltKCldID0gY29va2llc0FycmF5SXRlbVNwbGl0WzFdO1xyXG5cdFx0fSlcclxuXHRcdHJldHVybiBjb29raWVzT2JqZWN0O1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -2,4 +2,6 @@ export * from './dialog.service';
2
2
  export * from './message.service';
3
3
  export * from './api.service';
4
4
  export * from './logger.service';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaWFsb2cuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbWVzc2FnZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9hcGkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnO1xyXG4iXX0=
5
+ export * from './cookie.service';
6
+ export * from './token.service';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2RlZm94Y29yZS9zcmMvbGliL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2Uuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBpLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb29raWUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdG9rZW4uc2VydmljZSc7XHJcbiJdfQ==
@@ -0,0 +1,128 @@
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { TokenServiceMode } from '../interfaces';
3
+ import { isBrowser, localStorage, sessionStorage } from '../helpers';
4
+ import { CookieService } from './cookie.service';
5
+ import { LoggerService } from './logger.service';
6
+ import * as i0 from "@angular/core";
7
+ export class TokenService {
8
+ constructor() {
9
+ this.cookieService = inject(CookieService);
10
+ this.loggerService = inject(LoggerService);
11
+ this.localStorage = localStorage();
12
+ this.sessionStorage = sessionStorage();
13
+ this.isBrowser = isBrowser();
14
+ this.cookiePath = null;
15
+ this.accessToken = null;
16
+ this.accessTokenKey = 'acccessToken';
17
+ this.accessTokenCookieExpireDays = 30;
18
+ }
19
+ write(mode) {
20
+ if (this.accessToken === null) {
21
+ this.loggerService.error('No accessToken set to write!');
22
+ return;
23
+ }
24
+ if (mode === null) {
25
+ this.loggerService.error('Invalid mode for token write!');
26
+ }
27
+ switch (mode) {
28
+ case TokenServiceMode.LOCALSTORAGE:
29
+ if (this.isBrowser && this.localStorage !== null) {
30
+ this.localStorage.setItem(this.accessTokenKey, this.accessToken);
31
+ this.loggerService.debug('Token set to local storage: ' + this.accessToken);
32
+ }
33
+ else {
34
+ this.loggerService.error('Trying to set localStorage on not a browser platform!');
35
+ }
36
+ break;
37
+ case TokenServiceMode.SESSIONSTORAGE:
38
+ if (this.isBrowser && this.sessionStorage !== null) {
39
+ this.sessionStorage.setItem(this.accessTokenKey, this.accessToken);
40
+ this.loggerService.debug('Token set to session storage: ' + this.accessToken);
41
+ }
42
+ else {
43
+ this.loggerService.error('Trying to set sessionStorage on not a browser platform!');
44
+ }
45
+ break;
46
+ case TokenServiceMode.COOKIE:
47
+ this.cookieService.set(this.accessTokenKey, this.accessToken, this.accessTokenCookieExpireDays * 24 * 60 * 60, this.cookiePath);
48
+ this.loggerService.debug('Token set to cookie: ' + this.accessToken);
49
+ break;
50
+ }
51
+ }
52
+ read(mode) {
53
+ if (mode === null) {
54
+ this.loggerService.error('Invalid mode for token read!');
55
+ return null;
56
+ }
57
+ switch (mode) {
58
+ case TokenServiceMode.LOCALSTORAGE:
59
+ this.loggerService.debug('Trying to read token from local storage');
60
+ if (this.isBrowser && this.localStorage !== null) {
61
+ const tokenLocalStorage = this.localStorage.getItem(this.accessTokenKey);
62
+ if (tokenLocalStorage !== null) {
63
+ this.loggerService.debug('Token read from local storage: ' + tokenLocalStorage);
64
+ }
65
+ return tokenLocalStorage;
66
+ }
67
+ else {
68
+ this.loggerService.error('Trying to read from localStorage on not a browser platform!');
69
+ return null;
70
+ }
71
+ case TokenServiceMode.SESSIONSTORAGE:
72
+ if (this.isBrowser && this.sessionStorage !== null) {
73
+ this.loggerService.debug('Trying to read token from session storage');
74
+ const tokenSessionStorage = this.sessionStorage.getItem(this.accessTokenKey);
75
+ if (tokenSessionStorage !== null) {
76
+ this.loggerService.debug('Token read from session storage: ' + tokenSessionStorage);
77
+ }
78
+ return tokenSessionStorage;
79
+ }
80
+ else {
81
+ this.loggerService.error('Trying to read from sessionStorage on not a browser platform!');
82
+ return null;
83
+ }
84
+ case TokenServiceMode.COOKIE: {
85
+ this.loggerService.debug('Trying to read token from session cookie');
86
+ const cookieAccessToken = this.cookieService.get(this.accessTokenKey);
87
+ if (cookieAccessToken !== null) {
88
+ this.loggerService.debug('Token read from cookie: ' + cookieAccessToken);
89
+ }
90
+ return cookieAccessToken;
91
+ }
92
+ }
93
+ }
94
+ delete(mode) {
95
+ if (mode === null) {
96
+ this.loggerService.error('Invalid mode for token delete!');
97
+ }
98
+ switch (mode) {
99
+ case TokenServiceMode.LOCALSTORAGE:
100
+ if (this.localStorage !== null) {
101
+ this.loggerService.debug('Token deleted from local storage');
102
+ this.localStorage.removeItem(this.accessTokenKey);
103
+ }
104
+ break;
105
+ case TokenServiceMode.SESSIONSTORAGE:
106
+ if (this.sessionStorage !== null) {
107
+ this.loggerService.debug('Token deleted from session storage');
108
+ this.sessionStorage.removeItem(this.accessTokenKey);
109
+ }
110
+ break;
111
+ case TokenServiceMode.COOKIE: {
112
+ this.loggerService.debug('Token deleted from cookie');
113
+ this.cookieService.delete(this.accessTokenKey);
114
+ break;
115
+ }
116
+ }
117
+ this.accessToken = null;
118
+ }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
120
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, providedIn: 'root' }); }
121
+ }
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, decorators: [{
123
+ type: Injectable,
124
+ args: [{
125
+ providedIn: 'root'
126
+ }]
127
+ }] });
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZGVmb3hjb3JlL3NyYy9saWIvc2VydmljZXMvdG9rZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBS2pELE1BQU0sT0FBTyxZQUFZO0lBSHpCO1FBS0Msa0JBQWEsR0FBa0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JELGtCQUFhLEdBQWtCLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRCxpQkFBWSxHQUFtQixZQUFZLEVBQUUsQ0FBQztRQUM5QyxtQkFBYyxHQUFtQixjQUFjLEVBQUUsQ0FBQztRQUNsRCxjQUFTLEdBQVksU0FBUyxFQUFFLENBQUM7UUFFakMsZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLGdDQUEyQixHQUFHLEVBQUUsQ0FBQztLQW9HakM7SUFsR08sS0FBSyxDQUFDLElBQTZCO1FBQ3pDLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUN6RCxPQUFPO1NBQ1A7UUFDRCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7WUFDbEIsSUFB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Z0JBQ0QsTUFBTTtZQUNQLEtBQUssZ0JBQWdCLENBQUMsY0FBYztnQkFDbkMsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksRUFBRTtvQkFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUNwRDtnQkFDRCxNQUFNO1lBQ1AsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNO2FBQ047U0FDRDtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7K0dBOUdXLFlBQVk7bUhBQVosWUFBWSxjQUZULE1BQU07OzRGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRva2VuU2VydmljZU1vZGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgaXNCcm93c2VyLCBsb2NhbFN0b3JhZ2UsIHNlc3Npb25TdG9yYWdlIH0gZnJvbSAnLi4vaGVscGVycyc7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICcuL2Nvb2tpZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4vbG9nZ2VyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2tlblNlcnZpY2Uge1xyXG5cclxuXHRjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlID0gaW5qZWN0KENvb2tpZVNlcnZpY2UpO1xyXG5cdGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UgPSBpbmplY3QoTG9nZ2VyU2VydmljZSk7XHJcblx0bG9jYWxTdG9yYWdlOiBTdG9yYWdlIHwgbnVsbCA9IGxvY2FsU3RvcmFnZSgpO1xyXG5cdHNlc3Npb25TdG9yYWdlOiBTdG9yYWdlIHwgbnVsbCA9IHNlc3Npb25TdG9yYWdlKCk7XHJcblx0aXNCcm93c2VyOiBib29sZWFuID0gaXNCcm93c2VyKCk7XHJcblxyXG5cdGNvb2tpZVBhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cdGFjY2Vzc1Rva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHRhY2Nlc3NUb2tlbktleSA9ICdhY2NjZXNzVG9rZW4nO1xyXG5cdGFjY2Vzc1Rva2VuQ29va2llRXhwaXJlRGF5cyA9IDMwO1xyXG5cclxuXHRwdWJsaWMgd3JpdGUobW9kZTogVG9rZW5TZXJ2aWNlTW9kZSB8IG51bGwpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFjY2Vzc1Rva2VuID09PSBudWxsKSB7XHJcblx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcignTm8gYWNjZXNzVG9rZW4gc2V0IHRvIHdyaXRlIScpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZiAobW9kZSA9PT0gbnVsbCkge1xyXG5cdFx0XHR0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ0ludmFsaWQgbW9kZSBmb3IgdG9rZW4gd3JpdGUhJyk7XHJcblx0XHR9XHJcblx0XHRzd2l0Y2ggKG1vZGUpIHtcclxuXHRcdFx0Y2FzZSBUb2tlblNlcnZpY2VNb2RlLkxPQ0FMU1RPUkFHRTpcclxuXHRcdFx0XHRpZiAodGhpcy5pc0Jyb3dzZXIgJiYgdGhpcy5sb2NhbFN0b3JhZ2UgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5hY2Nlc3NUb2tlbktleSwgdGhpcy5hY2Nlc3NUb2tlbik7XHJcblx0XHRcdFx0XHR0aGlzLmxvZ2dlclNlcnZpY2UuZGVidWcoJ1Rva2VuIHNldCB0byBsb2NhbCBzdG9yYWdlOiAnICsgdGhpcy5hY2Nlc3NUb2tlbik7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcignVHJ5aW5nIHRvIHNldCBsb2NhbFN0b3JhZ2Ugb24gbm90IGEgYnJvd3NlciBwbGF0Zm9ybSEnKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlTW9kZS5TRVNTSU9OU1RPUkFHRTpcclxuXHRcdFx0XHRpZiAodGhpcy5pc0Jyb3dzZXIgJiYgdGhpcy5zZXNzaW9uU3RvcmFnZSAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHRoaXMuYWNjZXNzVG9rZW5LZXksIHRoaXMuYWNjZXNzVG9rZW4pO1xyXG5cdFx0XHRcdFx0dGhpcy5sb2dnZXJTZXJ2aWNlLmRlYnVnKCdUb2tlbiBzZXQgdG8gc2Vzc2lvbiBzdG9yYWdlOiAnICsgdGhpcy5hY2Nlc3NUb2tlbik7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcignVHJ5aW5nIHRvIHNldCBzZXNzaW9uU3RvcmFnZSBvbiBub3QgYSBicm93c2VyIHBsYXRmb3JtIScpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBUb2tlblNlcnZpY2VNb2RlLkNPT0tJRTpcclxuXHRcdFx0XHR0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KHRoaXMuYWNjZXNzVG9rZW5LZXksIHRoaXMuYWNjZXNzVG9rZW4sIHRoaXMuYWNjZXNzVG9rZW5Db29raWVFeHBpcmVEYXlzICogMjQgKiA2MCAqIDYwLCB0aGlzLmNvb2tpZVBhdGgpO1xyXG5cdFx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5kZWJ1ZygnVG9rZW4gc2V0IHRvIGNvb2tpZTogJyArIHRoaXMuYWNjZXNzVG9rZW4pO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgcmVhZChtb2RlOiBUb2tlblNlcnZpY2VNb2RlIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xyXG5cdFx0aWYgKG1vZGUgPT09IG51bGwpIHtcclxuXHRcdFx0dGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKCdJbnZhbGlkIG1vZGUgZm9yIHRva2VuIHJlYWQhJyk7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdFx0c3dpdGNoIChtb2RlKSB7XHJcblx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlTW9kZS5MT0NBTFNUT1JBR0U6XHJcblx0XHRcdFx0dGhpcy5sb2dnZXJTZXJ2aWNlLmRlYnVnKCdUcnlpbmcgdG8gcmVhZCB0b2tlbiBmcm9tIGxvY2FsIHN0b3JhZ2UnKTtcclxuXHRcdFx0XHRpZiAodGhpcy5pc0Jyb3dzZXIgJiYgdGhpcy5sb2NhbFN0b3JhZ2UgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdGNvbnN0IHRva2VuTG9jYWxTdG9yYWdlOiBzdHJpbmcgfCBudWxsID0gdGhpcy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmFjY2Vzc1Rva2VuS2V5KTtcclxuXHRcdFx0XHRcdGlmICh0b2tlbkxvY2FsU3RvcmFnZSAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxvZ2dlclNlcnZpY2UuZGVidWcoJ1Rva2VuIHJlYWQgZnJvbSBsb2NhbCBzdG9yYWdlOiAnICsgdG9rZW5Mb2NhbFN0b3JhZ2UpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuIHRva2VuTG9jYWxTdG9yYWdlO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ1RyeWluZyB0byByZWFkIGZyb20gbG9jYWxTdG9yYWdlIG9uIG5vdCBhIGJyb3dzZXIgcGxhdGZvcm0hJyk7XHJcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdGNhc2UgVG9rZW5TZXJ2aWNlTW9kZS5TRVNTSU9OU1RPUkFHRTpcclxuXHRcdFx0XHRpZiAodGhpcy5pc0Jyb3dzZXIgJiYgdGhpcy5zZXNzaW9uU3RvcmFnZSAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2dnZXJTZXJ2aWNlLmRlYnVnKCdUcnlpbmcgdG8gcmVhZCB0b2tlbiBmcm9tIHNlc3Npb24gc3RvcmFnZScpO1xyXG5cdFx0XHRcdFx0Y29uc3QgdG9rZW5TZXNzaW9uU3RvcmFnZTogc3RyaW5nIHwgbnVsbCA9IHRoaXMuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmFjY2Vzc1Rva2VuS2V5KTtcclxuXHRcdFx0XHRcdGlmICh0b2tlblNlc3Npb25TdG9yYWdlICE9PSBudWxsKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5kZWJ1ZygnVG9rZW4gcmVhZCBmcm9tIHNlc3Npb24gc3RvcmFnZTogJyArIHRva2VuU2Vzc2lvblN0b3JhZ2UpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmV0dXJuIHRva2VuU2Vzc2lvblN0b3JhZ2U7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcignVHJ5aW5nIHRvIHJlYWQgZnJvbSBzZXNzaW9uU3RvcmFnZSBvbiBub3QgYSBicm93c2VyIHBsYXRmb3JtIScpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRjYXNlIFRva2VuU2VydmljZU1vZGUuQ09PS0lFOiB7XHJcblx0XHRcdFx0dGhpcy5sb2dnZXJTZXJ2aWNlLmRlYnVnKCdUcnlpbmcgdG8gcmVhZCB0b2tlbiBmcm9tIHNlc3Npb24gY29va2llJyk7XHJcblx0XHRcdFx0Y29uc3QgY29va2llQWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGwgPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KHRoaXMuYWNjZXNzVG9rZW5LZXkpO1xyXG5cdFx0XHRcdGlmIChjb29raWVBY2Nlc3NUb2tlbiAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2dnZXJTZXJ2aWNlLmRlYnVnKCdUb2tlbiByZWFkIGZyb20gY29va2llOiAnICsgY29va2llQWNjZXNzVG9rZW4pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gY29va2llQWNjZXNzVG9rZW47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHB1YmxpYyBkZWxldGUobW9kZTogVG9rZW5TZXJ2aWNlTW9kZSB8IG51bGwpOiB2b2lkIHtcclxuXHRcdGlmIChtb2RlID09PSBudWxsKSB7XHJcblx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcignSW52YWxpZCBtb2RlIGZvciB0b2tlbiBkZWxldGUhJyk7XHJcblx0XHR9XHJcblx0XHRzd2l0Y2ggKG1vZGUpIHtcclxuXHRcdFx0Y2FzZSBUb2tlblNlcnZpY2VNb2RlLkxPQ0FMU1RPUkFHRTpcclxuXHRcdFx0XHRpZiAodGhpcy5sb2NhbFN0b3JhZ2UgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5kZWJ1ZygnVG9rZW4gZGVsZXRlZCBmcm9tIGxvY2FsIHN0b3JhZ2UnKTtcclxuXHRcdFx0XHRcdHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5hY2Nlc3NUb2tlbktleSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlIFRva2VuU2VydmljZU1vZGUuU0VTU0lPTlNUT1JBR0U6XHJcblx0XHRcdFx0aWYgKHRoaXMuc2Vzc2lvblN0b3JhZ2UgIT09IG51bGwpIHtcclxuXHRcdFx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5kZWJ1ZygnVG9rZW4gZGVsZXRlZCBmcm9tIHNlc3Npb24gc3RvcmFnZScpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuYWNjZXNzVG9rZW5LZXkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSBUb2tlblNlcnZpY2VNb2RlLkNPT0tJRToge1xyXG5cdFx0XHRcdHRoaXMubG9nZ2VyU2VydmljZS5kZWJ1ZygnVG9rZW4gZGVsZXRlZCBmcm9tIGNvb2tpZScpO1xyXG5cdFx0XHRcdHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5hY2Nlc3NUb2tlbktleSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHRoaXMuYWNjZXNzVG9rZW4gPSBudWxsO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { Subject, filter, Observable, takeUntil, timer } from 'rxjs';
2
- import { isPlatformBrowser } from '@angular/common';
2
+ import { isPlatformBrowser, DOCUMENT } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
4
  import { InjectionToken, inject, Injector, PLATFORM_ID, ApplicationRef, createComponent, Injectable } from '@angular/core';
5
5
  import { Title } from '@angular/platform-browser';
@@ -170,6 +170,12 @@ var LogLevel;
170
170
  LogLevel[LogLevel["Fatal"] = 5] = "Fatal";
171
171
  LogLevel[LogLevel["Off"] = 6] = "Off";
172
172
  })(LogLevel || (LogLevel = {}));
173
+ var TokenServiceMode;
174
+ (function (TokenServiceMode) {
175
+ TokenServiceMode[TokenServiceMode["LOCALSTORAGE"] = 0] = "LOCALSTORAGE";
176
+ TokenServiceMode[TokenServiceMode["SESSIONSTORAGE"] = 1] = "SESSIONSTORAGE";
177
+ TokenServiceMode[TokenServiceMode["COOKIE"] = 2] = "COOKIE";
178
+ })(TokenServiceMode || (TokenServiceMode = {}));
173
179
 
174
180
  const MESSAGE_DEFAULT_CONFIGURATION = new InjectionToken('Message default configuration', {
175
181
  factory: () => {
@@ -812,9 +818,237 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
812
818
  }]
813
819
  }] });
814
820
 
821
+ function isBrowser() {
822
+ const platformId = inject(PLATFORM_ID);
823
+ return isPlatformBrowser(platformId);
824
+ }
825
+ function localStorage() {
826
+ const document = inject(DOCUMENT);
827
+ if (document.defaultView !== null) {
828
+ return document.defaultView.window.localStorage;
829
+ }
830
+ return null;
831
+ }
832
+ function sessionStorage() {
833
+ const document = inject(DOCUMENT);
834
+ if (document.defaultView !== null) {
835
+ return document.defaultView.window.sessionStorage;
836
+ }
837
+ return null;
838
+ }
839
+
840
+ class CookieService {
841
+ constructor() {
842
+ this.browser = isBrowser();
843
+ this.document = inject(DOCUMENT);
844
+ this.loggerService = inject(LoggerService);
845
+ }
846
+ /**
847
+ * Get the value of a cookie by name, returns `null` if the cookie is not set
848
+ *
849
+ * @param name name of the cookie
850
+ * @returns value of the cookie
851
+ */
852
+ get(name) {
853
+ if (!this.browser) {
854
+ return null;
855
+ }
856
+ const cookies = this.cookies;
857
+ return cookies[name] || null;
858
+ }
859
+ /**
860
+ * Set the value of a cookie with the given name
861
+ *
862
+ * @param name name of the cookie
863
+ * @param value value of the cookie
864
+ * @param expire expire of the cookie in seconds, if null, it will never expire
865
+ * @param path path of the cookie, default is '/'
866
+ * @param config optional configuration values (expire in seconds, path of cookie)
867
+ */
868
+ set(name, value, expire = null, path = '/') {
869
+ if (!this.browser) {
870
+ return;
871
+ }
872
+ if (path === null) {
873
+ path = '/';
874
+ }
875
+ // Default cookie informations
876
+ let cookie = `${name}=${value};`;
877
+ // If we have an expire date, we need to set
878
+ if (expire !== null) {
879
+ let d = new Date();
880
+ d.setTime(d.getTime() + (expire * 1000));
881
+ cookie += `expires=${d.toUTCString()};`;
882
+ }
883
+ // Set path
884
+ cookie += `path=${path};`;
885
+ // Log
886
+ this.loggerService.info('Cookie data to set: ' + cookie);
887
+ // Set the cookie
888
+ this.document.cookie = cookie;
889
+ }
890
+ /**
891
+ * Delete a cookie by its name
892
+ *
893
+ * @param name name of the cookie
894
+ */
895
+ delete(name) {
896
+ if (!this.browser) {
897
+ return;
898
+ }
899
+ this.set(name, '', -1);
900
+ }
901
+ get cookies() {
902
+ if (!this.browser) {
903
+ return {};
904
+ }
905
+ const cookies = this.document.cookie;
906
+ if (cookies.length === 0) {
907
+ return {};
908
+ }
909
+ const cookiesArray = cookies.split(';');
910
+ const cookiesObject = {};
911
+ cookiesArray.forEach((cookiesArrayItem) => {
912
+ const cookiesArrayItemSplit = cookiesArrayItem.split('=');
913
+ cookiesObject[cookiesArrayItemSplit[0].trim()] = cookiesArrayItemSplit[1];
914
+ });
915
+ return cookiesObject;
916
+ }
917
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
918
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CookieService, providedIn: 'root' }); }
919
+ }
920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CookieService, decorators: [{
921
+ type: Injectable,
922
+ args: [{
923
+ providedIn: 'root'
924
+ }]
925
+ }] });
926
+
927
+ class TokenService {
928
+ constructor() {
929
+ this.cookieService = inject(CookieService);
930
+ this.loggerService = inject(LoggerService);
931
+ this.localStorage = localStorage();
932
+ this.sessionStorage = sessionStorage();
933
+ this.isBrowser = isBrowser();
934
+ this.cookiePath = null;
935
+ this.accessToken = null;
936
+ this.accessTokenKey = 'acccessToken';
937
+ this.accessTokenCookieExpireDays = 30;
938
+ }
939
+ write(mode) {
940
+ if (this.accessToken === null) {
941
+ this.loggerService.error('No accessToken set to write!');
942
+ return;
943
+ }
944
+ if (mode === null) {
945
+ this.loggerService.error('Invalid mode for token write!');
946
+ }
947
+ switch (mode) {
948
+ case TokenServiceMode.LOCALSTORAGE:
949
+ if (this.isBrowser && this.localStorage !== null) {
950
+ this.localStorage.setItem(this.accessTokenKey, this.accessToken);
951
+ this.loggerService.debug('Token set to local storage: ' + this.accessToken);
952
+ }
953
+ else {
954
+ this.loggerService.error('Trying to set localStorage on not a browser platform!');
955
+ }
956
+ break;
957
+ case TokenServiceMode.SESSIONSTORAGE:
958
+ if (this.isBrowser && this.sessionStorage !== null) {
959
+ this.sessionStorage.setItem(this.accessTokenKey, this.accessToken);
960
+ this.loggerService.debug('Token set to session storage: ' + this.accessToken);
961
+ }
962
+ else {
963
+ this.loggerService.error('Trying to set sessionStorage on not a browser platform!');
964
+ }
965
+ break;
966
+ case TokenServiceMode.COOKIE:
967
+ this.cookieService.set(this.accessTokenKey, this.accessToken, this.accessTokenCookieExpireDays * 24 * 60 * 60, this.cookiePath);
968
+ this.loggerService.debug('Token set to cookie: ' + this.accessToken);
969
+ break;
970
+ }
971
+ }
972
+ read(mode) {
973
+ if (mode === null) {
974
+ this.loggerService.error('Invalid mode for token read!');
975
+ return null;
976
+ }
977
+ switch (mode) {
978
+ case TokenServiceMode.LOCALSTORAGE:
979
+ this.loggerService.debug('Trying to read token from local storage');
980
+ if (this.isBrowser && this.localStorage !== null) {
981
+ const tokenLocalStorage = this.localStorage.getItem(this.accessTokenKey);
982
+ if (tokenLocalStorage !== null) {
983
+ this.loggerService.debug('Token read from local storage: ' + tokenLocalStorage);
984
+ }
985
+ return tokenLocalStorage;
986
+ }
987
+ else {
988
+ this.loggerService.error('Trying to read from localStorage on not a browser platform!');
989
+ return null;
990
+ }
991
+ case TokenServiceMode.SESSIONSTORAGE:
992
+ if (this.isBrowser && this.sessionStorage !== null) {
993
+ this.loggerService.debug('Trying to read token from session storage');
994
+ const tokenSessionStorage = this.sessionStorage.getItem(this.accessTokenKey);
995
+ if (tokenSessionStorage !== null) {
996
+ this.loggerService.debug('Token read from session storage: ' + tokenSessionStorage);
997
+ }
998
+ return tokenSessionStorage;
999
+ }
1000
+ else {
1001
+ this.loggerService.error('Trying to read from sessionStorage on not a browser platform!');
1002
+ return null;
1003
+ }
1004
+ case TokenServiceMode.COOKIE: {
1005
+ this.loggerService.debug('Trying to read token from session cookie');
1006
+ const cookieAccessToken = this.cookieService.get(this.accessTokenKey);
1007
+ if (cookieAccessToken !== null) {
1008
+ this.loggerService.debug('Token read from cookie: ' + cookieAccessToken);
1009
+ }
1010
+ return cookieAccessToken;
1011
+ }
1012
+ }
1013
+ }
1014
+ delete(mode) {
1015
+ if (mode === null) {
1016
+ this.loggerService.error('Invalid mode for token delete!');
1017
+ }
1018
+ switch (mode) {
1019
+ case TokenServiceMode.LOCALSTORAGE:
1020
+ if (this.localStorage !== null) {
1021
+ this.loggerService.debug('Token deleted from local storage');
1022
+ this.localStorage.removeItem(this.accessTokenKey);
1023
+ }
1024
+ break;
1025
+ case TokenServiceMode.SESSIONSTORAGE:
1026
+ if (this.sessionStorage !== null) {
1027
+ this.loggerService.debug('Token deleted from session storage');
1028
+ this.sessionStorage.removeItem(this.accessTokenKey);
1029
+ }
1030
+ break;
1031
+ case TokenServiceMode.COOKIE: {
1032
+ this.loggerService.debug('Token deleted from cookie');
1033
+ this.cookieService.delete(this.accessTokenKey);
1034
+ break;
1035
+ }
1036
+ }
1037
+ this.accessToken = null;
1038
+ }
1039
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1040
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, providedIn: 'root' }); }
1041
+ }
1042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, decorators: [{
1043
+ type: Injectable,
1044
+ args: [{
1045
+ providedIn: 'root'
1046
+ }]
1047
+ }] });
1048
+
815
1049
  /**
816
1050
  * Generated bundle index. Do not edit.
817
1051
  */
818
1052
 
819
- export { ALERT_CONFIGURATIONS, ALERT_DEFAULT_BUTTON_CONFIGURATION, AcceptValidationMode, ApiService, CF_PREDEFINED_DIALOGS, CONFIRM_CONFIGURATIONS, DialogConfig, DialogInjector, DialogRef, DialogService, LOG_LEVEL, LogLevel, LoggerService, MESSAGE_DEFAULT_CONFIGURATION, MessagePosition, MessageService, MessageSeverity };
1053
+ export { ALERT_CONFIGURATIONS, ALERT_DEFAULT_BUTTON_CONFIGURATION, AcceptValidationMode, ApiService, CF_PREDEFINED_DIALOGS, CONFIRM_CONFIGURATIONS, CookieService, DialogConfig, DialogInjector, DialogRef, DialogService, LOG_LEVEL, LogLevel, LoggerService, MESSAGE_DEFAULT_CONFIGURATION, MessagePosition, MessageService, MessageSeverity, TokenService, TokenServiceMode };
820
1054
  //# sourceMappingURL=codefoxcore.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"codefoxcore.mjs","sources":["../../../projects/codefoxcore/src/lib/classes/dialog.ref.class.ts","../../../projects/codefoxcore/src/lib/classes/dialog.config.class.ts","../../../projects/codefoxcore/src/lib/classes/dialog.injector.class.ts","../../../projects/codefoxcore/src/lib/tokens/alert.token.ts","../../../projects/codefoxcore/src/lib/tokens/dialog.token.ts","../../../projects/codefoxcore/src/lib/tokens/confirm.token.ts","../../../projects/codefoxcore/src/lib/interfaces.ts","../../../projects/codefoxcore/src/lib/tokens/message.token.ts","../../../projects/codefoxcore/src/lib/tokens/loglevel.token.ts","../../../projects/codefoxcore/src/lib/services/dialog.service.ts","../../../projects/codefoxcore/src/lib/services/message.service.ts","../../../projects/codefoxcore/src/lib/services/logger.service.ts","../../../projects/codefoxcore/src/lib/services/api.service.ts","../../../projects/codefoxcore/src/codefoxcore.ts"],"sourcesContent":["import { filter, Observable, Subject, takeUntil } from \"rxjs\";\r\nimport { CfDialogCloseParams } from \"../interfaces\";\r\nimport { MessageService } from \"../services\";\r\nimport { DialogConfig } from \"../classes\";\r\n\r\nexport class DialogRef<T = any> {\r\n\tmessageService: MessageService | null = null;\r\n dialogConfig: DialogConfig | null = null;\r\n\tprivate readonly _onClose: Subject<any> = new Subject<any>();\r\n onClose: Observable<T | undefined> = this._onClose.asObservable();\r\n onCloseValue: Observable<T> = this._onClose.pipe(filter(result => result !== undefined && result !== null));\r\n onCloseOnValue: (value: any) => Observable<any> = (value: any) => this._onClose.pipe(filter(result => result === value));\r\n private readonly _onMessage: Subject<any> = new Subject<any>();\r\n\tonMessage: Observable<any> = this._onMessage.asObservable();\r\n private readonly _onDestroy = new Subject<any>();\r\n onDestroy: Observable<any> = this._onDestroy.asObservable();\r\n\tsavedTitle: string = '';\r\n\ttitle: string | null = null;\r\n\topened: Date = new Date();\r\n\tprivate doClose(result?: any, params: CfDialogCloseParams = {}): void {\r\n\t\tif (params.message !== undefined && this.messageService !== null) {\r\n\t\t\tthis.messageService.show(params.message.title, params.message.message, params.message);\r\n\t\t}\r\n\t\tthis._onClose.next(result); \r\n\t}\r\n close(result?: any, params: CfDialogCloseParams = {}): void { \r\n\t\tif (this.dialogConfig === null || this.dialogConfig.beforeClose === null) {\r\n\t\t\tthis.doClose(result, params);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif (this.dialogConfig.beforeClose instanceof Promise) {\r\n\t\t\tthis.dialogConfig.beforeClose.then((value: boolean) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.doClose(result, params);\r\n\t\t\t\t}\r\n\t\t\t}).catch(() => {});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.dialogConfig.beforeClose instanceof Observable) {\r\n\t\t\tthis.dialogConfig.beforeClose.pipe(takeUntil(this._onClose)).subscribe((value: boolean) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.doClose(result, params);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tconst beforeCloseResult: boolean | Observable<boolean> | Promise<boolean> = this.dialogConfig.beforeClose();\r\n\r\n\t\tif (beforeCloseResult instanceof Promise) {\r\n\t\t\tbeforeCloseResult.then((value: boolean) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.doClose(result, params);\r\n\t\t\t\t}\r\n\t\t\t}).catch(() => {});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (beforeCloseResult instanceof Observable) {\r\n\t\t\tbeforeCloseResult.pipe(takeUntil(this._onClose)).subscribe((value: boolean) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.doClose(result, params);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (beforeCloseResult) {\r\n\t\t\tthis.doClose(result, params);\r\n\t\t}\r\n\t}\r\n forceClose(result?: any): void {\r\n this.doClose(result);\r\n }\r\n\tmessage(message: any): void { this._onMessage.next(message); }\r\n destroy(): void { this._onDestroy.next(undefined); }\r\n}\r\n","import { ResolveData } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { DialogConfiguration } from \"../interfaces\";\r\n\r\nexport class DialogConfig implements DialogConfiguration {\r\n showCloseIcon: boolean = true;\r\n\tbeforeClose: null | (() => boolean | Observable<boolean> | Promise<boolean>) | Observable<boolean> | Promise<boolean> = null;\r\n\tignoreKeyUp: boolean = false;\r\n data: {[key: (string | number)]: any} = {};\r\n noPadding: boolean = false;\r\n\tkeepActiveElement: boolean = false;\r\n\tcontainerClasses: string[] = [];\r\n\tdialogClasses: string[] = [];\r\n resolve: ResolveData = {};\r\n\ttitle: string | null = null;\r\n contentElement: Element | null = null;\r\n single: boolean = false;\r\n width: string | null = null;\r\n\theight: string | null = null;\r\n getData(key: string | number, defaultOnUndefined: any = null): any {\r\n return this.data[key] !== undefined ? this.data[key] : defaultOnUndefined;\r\n }\r\n}\r\n","import { InjectionToken, Injector, Type } from \"@angular/core\";\r\n\r\nexport class DialogInjector implements Injector {\r\n constructor(private _parentInjector: Injector, private _additionalTokens: WeakMap<any, any>) { }\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: {}): T;\r\n get(token: any, notFoundValue?: any): any;\r\n get(token: any, notFoundValue?: any, _?: any): any {\r\n const value = this._additionalTokens.get(token);\r\n if (value) { return value; }\r\n return this._parentInjector.get<any>(token, notFoundValue);\r\n }\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { AlertButtonConfiguration, AlertConfiguration } from \"../interfaces\";\r\n\r\nexport const ALERT_DEFAULT_BUTTON_CONFIGURATION: InjectionToken<AlertButtonConfiguration> = new InjectionToken('Alert default button', {\r\n\tfactory: (): AlertButtonConfiguration => {\r\n\t\treturn {\r\n\t\t\tlabel: 'alert.ok',\r\n\t\t\tseverity: 'success',\r\n\t\t\tcallback: ({ dialogRef }) => {\r\n\t\t\t\tdialogRef.close();\r\n\t\t\t},\r\n\t\t\tfocus: true,\r\n\t\t\ttranslateLabel: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport const ALERT_CONFIGURATIONS: InjectionToken<{[key: string]: AlertConfiguration}> = new InjectionToken('Alert configurations predefined', {\r\n factory: (): {[key: string]: AlertConfiguration} => {\r\n return {};\r\n }\r\n});\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { PredefinedDialogs } from \"../interfaces\";\r\n\r\nexport const CF_PREDEFINED_DIALOGS: InjectionToken<PredefinedDialogs> = new InjectionToken('Predefined dialogs', {\r\n factory: () => {\r\n return {};\r\n }\r\n});\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { ConfirmConfiguration } from \"../interfaces\";\r\n\r\nexport const CONFIRM_CONFIGURATIONS: InjectionToken<{[key: string]: ConfirmConfiguration}> = new InjectionToken('Confirm configurations predefined', {\r\n factory: (): {[key: string]: ConfirmConfiguration} => {\r\n return {};\r\n }\r\n});\r\n","import { ComponentRef, Type } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { DialogRef } from \"./classes/dialog.ref.class\";\r\n\r\nexport interface DialogComponentRefContainer {\r\n componentRef: ComponentRef<any>;\r\n container: HTMLDivElement;\r\n\topenIndex: number;\r\n}\r\n\r\nexport type PredefinedDialogs = {[key: string]: (() => Promise<Type<any>>) | {component: () => Promise<Type<any>>, configuration: DialogConfiguration}};\r\n\r\nexport interface DialogConfiguration {\r\n showCloseIcon?: boolean;\r\n\tbeforeClose?: CfDialogConfigurationBeforeClose;\r\n\tignoreKeyUp?: boolean;\r\n data?: any;\r\n noPadding?: boolean;\r\n\tkeepActiveElement?: boolean;\r\n\tcontainerClasses?: string[];\r\n\tdialogClasses?: string[];\r\n\ttitle?: string | null;\r\n contentElement?: Element | null;\r\n single?: boolean;\r\n width?: string | null;\r\n\theight?: string | null;\r\n}\r\n\r\nexport type CfDialogConfigurationBeforeClose = null | (() => boolean | Observable<boolean> | Promise<boolean>) | Observable<boolean> | Promise<boolean>;\r\n\r\nexport interface ConfirmConfiguration {\r\n title: string;\r\n text: string;\r\n acceptText: string;\r\n declineText: string;\r\n\thideDeclineButton?: boolean;\r\n switchButtonColors?: boolean;\r\n acceptTimeout?: number;\r\n acceptValidationText?: string;\r\n acceptValidationMode?: AcceptValidationMode;\r\n acceptValidationLabel?: string;\r\n}\r\n\r\nexport interface AlertConfiguration {\r\n title: string;\r\n text: string;\r\n\tshowCloseIcon?: boolean;\r\n\tbutton?: Partial<AlertButtonConfiguration>;\r\n}\r\n\r\nexport enum AcceptValidationMode {\r\n PATTERN = 'PATTERN',\r\n TEXT = 'TEXT'\r\n}\r\n\r\nexport interface AlertButtonConfiguration {\r\n\tlabel: string;\r\n\tseverity: string;\r\n\tcallback: (params: {dialogRef: DialogRef}) => void;\r\n\ttranslateLabel: boolean;\r\n\tfocus: boolean;\r\n}\r\n\r\nexport interface CfDialogCloseParams {\r\n message?: MessagePartial;\r\n}\r\n\r\nexport interface MessagePartial extends Partial<MessageConfiguration> {\r\n title: string;\r\n message: string;\r\n}\r\n\r\nexport interface MessageConfiguration {\r\n closeable: boolean;\r\n position: MessagePosition;\r\n lifetime: number | null;\r\n severity: MessageSeverity;\r\n\tkeepOnHover: boolean;\r\n}\r\nexport enum MessagePosition {\r\n TOP = 'top',\r\n BOTTOM = 'bottom'\r\n}\r\n\r\nexport enum MessageSeverity {\r\n SUCCESS = 'success',\r\n WARNING = 'warning',\r\n DANGER = 'danger',\r\n INFO = 'info'\r\n}\r\n\r\nexport interface LoadingConfiguration {\r\n title: string;\r\n text: string;\r\n\tloadingIcon?: string;\r\n iconSize?: number;\r\n}\r\n\r\nexport interface ModalWithButtonsConfiguration {\r\n title: string;\r\n text: string;\r\n\tshowCloseIcon?: boolean;\r\n\tbuttons: ButtonConfiguration[];\r\n}\r\n\r\nexport interface ButtonConfiguration {\r\n\tlabel: string;\r\n\tseverity: string;\r\n\tcallback?: (params: {dialogRef: DialogRef}) => void;\r\n\trouterLink?: any;\r\n\tfocus?: boolean;\r\n\tpermission?: string | string[];\r\n\ttranslateLabel?: boolean;\r\n}\r\n\r\nexport interface Message extends MessageConfiguration {\r\n title: string;\r\n message: string;\r\n}\r\n\r\nexport enum LogLevel {\r\n All = 0,\r\n Debug = 1,\r\n Info = 2,\r\n Warn = 3,\r\n Error = 4,\r\n Fatal = 5,\r\n Off = 6\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { MessageConfiguration, MessagePosition, MessageSeverity } from \"../interfaces\";\r\n\r\nexport const MESSAGE_DEFAULT_CONFIGURATION: InjectionToken<MessageConfiguration> = new InjectionToken('Message default configuration', {\r\n\tfactory: (): MessageConfiguration => {\r\n\t\treturn {\r\n\t\t\tcloseable: true,\r\n\t\t\tlifetime: 3000,\r\n\t\t\tposition: MessagePosition.TOP,\r\n\t\t\tseverity: MessageSeverity.SUCCESS,\r\n\t\t\tkeepOnHover: false\r\n\t\t};\r\n\t}\r\n});\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { LogLevel } from \"../interfaces\";\r\n\r\nexport const LOG_LEVEL: InjectionToken<LogLevel> = new InjectionToken('Log level', {\r\n factory: (): LogLevel => {\r\n return LogLevel.All;\r\n }\r\n});\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EmbeddedViewRef,\r\n inject,\r\n Injectable,\r\n Injector,\r\n PLATFORM_ID,\r\n Type\r\n} from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AlertConfiguration, DialogConfiguration, ConfirmConfiguration, LoadingConfiguration, ModalWithButtonsConfiguration, PredefinedDialogs, DialogComponentRefContainer } from '../interfaces';\r\nimport { DialogConfig, DialogInjector, DialogRef } from '../classes';\r\nimport { ALERT_CONFIGURATIONS, CF_PREDEFINED_DIALOGS, CONFIRM_CONFIGURATIONS } from '../tokens';\r\nimport { MessageService } from '../services';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n\tprivate injector: Injector = inject(Injector);\r\n\tprivate predefinedConfirmConfigurations: {[key: string]: ConfirmConfiguration} = inject(CONFIRM_CONFIGURATIONS);\r\n\tprivate predefinedAlertConfigurations: {[key: string]: AlertConfiguration} = inject(ALERT_CONFIGURATIONS);\r\n\tprivate predefinedDialogs: PredefinedDialogs = inject(CF_PREDEFINED_DIALOGS);\r\n\r\n\ttitle: Title = inject(Title);\r\n\tmessageService: MessageService = inject(MessageService);\r\n\r\n\tdialogs: Map<DialogRef, DialogComponentRefContainer> = new Map();\r\n\topenIndex: number = 1;\r\n\tplatformId: Object = inject(PLATFORM_ID);\r\n\r\n constructor() {\r\n\t\tif (isPlatformBrowser(this.platformId)) {\r\n\t\t\tdocument.addEventListener(\"keyup\", (keyboardEvent: KeyboardEvent) => {\r\n\t\t\t\tif (keyboardEvent.key.toLowerCase() === 'escape') {\r\n\t\t\t\t\tlet lastOpenIndex: number = 0;\r\n\t\t\t\t\tlet lastOpenedDialogRef: DialogRef | null = null;\r\n\t\t\t\t\tfor (const [dialogRef, cfDialogComponentRefContainer] of this.dialogs.entries()) {\r\n\t\t\t\t\t\tif (cfDialogComponentRefContainer.openIndex > lastOpenIndex) {\r\n\t\t\t\t\t\t\tlastOpenIndex = cfDialogComponentRefContainer.openIndex;\r\n\t\t\t\t\t\t\tlastOpenedDialogRef = dialogRef;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\r\n\t\t\t\t\tif (lastOpenedDialogRef !== null && lastOpenedDialogRef.dialogConfig !== null) {\r\n\t\t\t\t\t\tif (lastOpenedDialogRef.dialogConfig.ignoreKeyUp || document.activeElement instanceof HTMLInputElement || document.activeElement instanceof HTMLTextAreaElement) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\r\n\t\t\t\t\t\tlastOpenedDialogRef.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tasync openPredefined<T = any>(name: string, dialogConfiguration: DialogConfiguration = {}): Promise<DialogRef<T>> {\r\n\t\tif (this.predefinedDialogs[name] === undefined) {\r\n\t\t\tthrow Error('Dialog with name \"' + name + '\" not found!');\r\n\t\t}\r\n\t\tconst predefinedDialog = this.predefinedDialogs[name];\r\n\t\tif (typeof predefinedDialog === 'function') {\r\n\t\t\treturn this.openImport(predefinedDialog, dialogConfiguration);\r\n\t\t}\r\n\t\treturn this.openImport(predefinedDialog.component, {...predefinedDialog.configuration, ...dialogConfiguration});\r\n\t}\r\n\r\n\tasync openImport<T = any>(component: () => Promise<Type<any>>, dialogConfiguration: DialogConfiguration = {}): Promise<DialogRef<T>> {\r\n\t\treturn new Promise(async (resolve) => {\r\n\t\t\tresolve(this.open<T>(await component(), dialogConfiguration));\r\n\t\t});\r\n\t}\r\n\r\n open<T = any>(component: Type<any>, dialogConfiguration: DialogConfiguration = {}): DialogRef<T> {\r\n\r\n\t\tfor (let dialog of this.dialogs.entries()) {\r\n\t\t\tif (\r\n\t\t\t\t(dialogConfiguration.single && dialog[1].componentRef.componentType.name === component.name) ||\r\n\t\t\t\t(dialog[0].dialogConfig !== null && dialog[0].dialogConfig.single && dialog[1].componentRef.componentType.name === component.name)\r\n\t\t\t) {\r\n\t\t\t\treturn dialog[0];\r\n\t\t\t}\r\n\t\t}\r\n\r\n const dialogConfig: DialogConfig = this.createDialogConfig(dialogConfiguration);\r\n\r\n\t\tif (!dialogConfig.keepActiveElement) {\r\n\t\t\tif (document.activeElement instanceof HTMLElement) {\r\n\t\t\t\tdocument.activeElement.blur();\r\n\t\t\t}\r\n\t\t}\r\n\r\n const dialogRef: DialogRef<T> = this.appendToBody(component, dialogConfig);\r\n\t\tdialogRef.messageService = this.messageService;\r\n\t\tdialogRef.dialogConfig = dialogConfig;\r\n\r\n\t\tthis.changeAndStoreTitle(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n\tchangeAndStoreTitle(dialogRef: DialogRef): void {\r\n\t\tdialogRef.savedTitle = this.title.getTitle();\r\n\t\tif (dialogRef.dialogConfig !== null && dialogRef.dialogConfig.title !== null) {\r\n\t\t\tthis.title.setTitle(dialogRef.dialogConfig.title);\r\n\t\t}\r\n\t}\r\n\r\n createDialogConfig(dialogConfiguration: DialogConfiguration): DialogConfig {\r\n const dialogConfig: DialogConfig = new DialogConfig();\r\n if (dialogConfiguration.showCloseIcon !== undefined) {\r\n dialogConfig.showCloseIcon = dialogConfiguration.showCloseIcon;\r\n }\r\n\t\tif (dialogConfiguration.beforeClose !== undefined) {\r\n dialogConfig.beforeClose = dialogConfiguration.beforeClose;\r\n }\r\n\t\tif (dialogConfiguration.ignoreKeyUp !== undefined) {\r\n dialogConfig.ignoreKeyUp = dialogConfiguration.ignoreKeyUp;\r\n }\r\n if (dialogConfiguration.data !== undefined) {\r\n dialogConfig.data = dialogConfiguration.data;\r\n }\r\n if (dialogConfiguration.noPadding !== undefined) {\r\n dialogConfig.noPadding = dialogConfiguration.noPadding;\r\n }\r\n\t\tif (dialogConfiguration.keepActiveElement !== undefined) {\r\n\t\t\tdialogConfig.keepActiveElement = dialogConfiguration.keepActiveElement;\r\n\t\t}\r\n\t\tif (dialogConfiguration.containerClasses !== undefined) {\r\n\t\t\tdialogConfig.containerClasses = dialogConfiguration.containerClasses;\r\n\t\t}\r\n\t\tif (dialogConfiguration.dialogClasses !== undefined) {\r\n\t\t\tdialogConfig.dialogClasses = dialogConfiguration.dialogClasses;\r\n\t\t}\r\n\t\tif (dialogConfiguration.title !== undefined) {\r\n\t\t\tdialogConfig.title = dialogConfiguration.title;\r\n\t\t}\r\n\t\tif (dialogConfiguration.contentElement !== undefined) {\r\n\t\t\tdialogConfig.contentElement = dialogConfiguration.contentElement;\r\n\t\t}\r\n\t\tif (dialogConfiguration.single !== undefined) {\r\n\t\t\tdialogConfig.single = dialogConfiguration.single;\r\n\t\t}\r\n\t\tif (dialogConfiguration.width !== undefined) {\r\n\t\t\tdialogConfig.width = dialogConfiguration.width;\r\n\t\t}\r\n\t\tif (dialogConfiguration.height !== undefined) {\r\n\t\t\tdialogConfig.height = dialogConfiguration.height;\r\n\t\t}\r\n return dialogConfig;\r\n }\r\n\r\n appendToBody(component: Type<any>, dialogConfig: DialogConfig): DialogRef {\r\n\r\n\t\tconst appRef: ApplicationRef = this.injector.get(ApplicationRef);\r\n\r\n // CREATE INJECTION TOKENS\r\n const tokens: WeakMap<any, any> = new WeakMap();\r\n\r\n // CREATE DIALOG CONFIGURATION CLASS\r\n tokens.set(DialogConfig, dialogConfig);\r\n\r\n // CREATE DIALOG REFERENCE CLASS\r\n const dialogRef: DialogRef = new DialogRef();\r\n tokens.set(DialogRef, dialogRef);\r\n\r\n // LISTEN ON DIALOG CLOSE\r\n const closeSub: Subscription = dialogRef.onClose.subscribe(() => {\r\n this.removeFromBody(dialogRef);\r\n closeSub.unsubscribe();\r\n });\r\n\r\n // CREATE COMPONENT REF\r\n const componentRef: ComponentRef<any> = createComponent(component, {\r\n\t\t\tenvironmentInjector: appRef.injector,\r\n\t\t\telementInjector: new DialogInjector(this.injector, tokens)\r\n\t\t});\r\n\r\n // ATTACH VIEW TO ANGULAR\r\n appRef.attachView(componentRef.hostView);\r\n\r\n // CREATE DIALOG CONTAINER ELEMENT\r\n const dialogContainer: HTMLDivElement = document.createElement('div');\r\n dialogContainer.classList.add('cf-dialog-container');\r\n\t\tif (dialogConfig.containerClasses.length > 0) {\r\n\t\t\tdialogContainer.classList.add(...dialogConfig.containerClasses);\r\n\t\t}\r\n\r\n\t\t// APPEND DOM ELEMENT TO DIALOG\r\n\t\tconst childDomElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n\t\tchildDomElem.classList.add('cf-dialog');\r\n\t\t\r\n\t\tif (dialogConfig.width !== null) {\r\n\t\t\tchildDomElem.style.width = dialogConfig.width;\r\n\t\t}\r\n\t\tif (dialogConfig.height !== null) {\r\n\t\t\tchildDomElem.style.height = dialogConfig.height;\r\n\t\t}\r\n\t\tif (dialogConfig.noPadding) {\r\n childDomElem.classList.add('no-padding');\r\n }\r\n\t\tif (dialogConfig.dialogClasses.length > 0) {\r\n\t\t\tchildDomElem.classList.add(...dialogConfig.dialogClasses);\r\n\t\t}\r\n\r\n\t\tif (dialogConfig.contentElement !== null) {\r\n\t\t\tchildDomElem.appendChild(dialogConfig.contentElement);\r\n\t\t}\r\n\r\n\t\tdialogContainer.appendChild(childDomElem);\r\n\r\n // CLOSEABLE? APPEND BUTTON\r\n if (dialogConfig.showCloseIcon) {\r\n const closeElement: HTMLDivElement = document.createElement('div');\r\n closeElement.classList.add(...['cf-dialog-close', 'remixicon', 'close-line']);\r\n closeElement.onclick = () => {\r\n dialogRef.close();\r\n };\r\n childDomElem.appendChild(closeElement);\r\n }\r\n\r\n // APPEND DIALOG CONTAINER TO BODY\r\n document.body.appendChild(dialogContainer);\r\n\r\n this.dialogs.set(dialogRef, {\r\n componentRef,\r\n container: dialogContainer,\r\n\t\t\topenIndex: this.openIndex \r\n });\r\n\r\n\t\tthis.openIndex++;\r\n\r\n return dialogRef;\r\n }\r\n\r\n removeFromBody(dialogRef: DialogRef): void {\r\n\r\n\t\tconst appRef: ApplicationRef = this.injector.get(ApplicationRef);\r\n\r\n if (!dialogRef || !this.dialogs.has(dialogRef)) {\r\n return;\r\n }\r\n const dialogComponentRefContainer: DialogComponentRefContainer | undefined = this.dialogs.get(dialogRef);\r\n if (dialogComponentRefContainer == undefined) {\r\n return;\r\n }\r\n\t\t\r\n appRef.detachView(dialogComponentRefContainer.componentRef.hostView);\r\n\r\n if (dialogComponentRefContainer.container !== null) {\r\n dialogComponentRefContainer.container.remove();\r\n }\r\n dialogComponentRefContainer.componentRef.destroy();\r\n this.dialogs.delete(dialogRef);\r\n\r\n\t\tif (this.dialogs.size === 0) {\r\n\t\t\tthis.openIndex = 1;\r\n\t\t}\r\n\r\n\t\t// Restore title\r\n\t\tif (this.dialogs.size === 0) {\r\n\t\t\tthis.title.setTitle(dialogRef.savedTitle);\r\n\t\t} else {\r\n\t\t\tlet latestOpenedDialogRef: DialogRef | null = null;\r\n\t\t\tthis.dialogs.forEach((_, dialogRef: DialogRef) => {\r\n\t\t\t\tif (latestOpenedDialogRef === null) {\r\n\t\t\t\t\tlatestOpenedDialogRef = dialogRef;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (latestOpenedDialogRef.opened < dialogRef.opened) {\r\n\t\t\t\t\t\tlatestOpenedDialogRef = dialogRef;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (latestOpenedDialogRef !== null) {\r\n\t\t\t\t//this.title.setTitle(latestOpenedDialogRef.savedTitle);\r\n\t\t\t} else {\r\n\t\t\t\tthis.title.setTitle(dialogRef.savedTitle);\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n\tconfirm(\r\n\t\tconfiguration: ConfirmConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<boolean> {\r\n\t\tif (typeof configuration === 'string') {\r\n\t\t\tconst predefinedConfirmConfiguration: ConfirmConfiguration | undefined = this.predefinedConfirmConfigurations[configuration];\r\n\t\t\tif (predefinedConfirmConfiguration === undefined) {\r\n\t\t\t\tthrow new Error('Predefined confirm configuration not found for: ' + configuration);\r\n\t\t\t}\r\n\t\t\tconfiguration = predefinedConfirmConfiguration;\r\n\t\t}\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.open(component, {\r\n\t\t\t\t...dialogConfiguration,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tconfiguration\r\n\t\t\t\t},\r\n\t\t\t\tignoreKeyUp: true,\r\n\t\t\t\tshowCloseIcon: false\r\n\t\t\t}).onClose.pipe(filter(value => value !== undefined)).subscribe((accepted: boolean) => {\r\n\t\t\t\tif (accepted) {\r\n\t\t\t\t\tresolve(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n async confirmAsync(\r\n\t\tconfiguration: ConfirmConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<boolean> {\r\n return await new Promise((resolve) => {\r\n this.confirm(configuration, dialogConfiguration, component).then(() => {\r\n resolve(true);\r\n }).catch(() => {\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\t\r\n\tconfirmAccept(\r\n\t\tconfiguration: ConfirmConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<boolean> {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tthis.confirm(configuration, dialogConfiguration, component).then(() => resolve(true)).catch(() => {});\r\n\t\t});\r\n\t}\r\n\t\r\n\tconfirmDecline(\r\n\t\tconfiguration: ConfirmConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<boolean> {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tthis.confirm(configuration, dialogConfiguration, component).then(() => {}).catch(() => resolve(true));\r\n\t\t});\r\n\t}\r\n\r\n\tshowLoading(\r\n\t\tconfiguration: LoadingConfiguration,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): DialogRef {\r\n\t\treturn this.open(component, {\r\n\t\t\t...dialogConfiguration,\r\n\t\t\tshowCloseIcon: false,\r\n\t\t\tignoreKeyUp: true,\r\n\t\t\tdata: {\r\n\t\t\t\tconfiguration\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tshowAlert(\r\n\t\tconfiguration: AlertConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<void> {\r\n\t\tif (typeof configuration === 'string') {\r\n\t\t\tconst predefinedAlertConfiguration: AlertConfiguration | undefined = this.predefinedAlertConfigurations[configuration];\r\n\t\t\tif (predefinedAlertConfiguration === undefined) {\r\n\t\t\t\tthrow new Error('Predefined alert configuration not found for: ' + configuration);\r\n\t\t\t}\r\n\t\t\tconfiguration = predefinedAlertConfiguration;\r\n\t\t}\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\treturn this.open(component, {\r\n\t\t\t\t...dialogConfiguration,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tconfiguration\r\n\t\t\t\t},\r\n\t\t\t\tignoreKeyUp: true,\r\n\t\t\t\tshowCloseIcon: false\r\n\t\t\t}).onClose.subscribe(() => {\r\n\t\t\t\tresolve();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tshowModalWithButtons(\r\n\t\tconfiguration: ModalWithButtonsConfiguration,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): DialogRef {\r\n\t\treturn this.open(component, {\r\n\t\t\t...dialogConfiguration,\r\n\t\t\tdata: {\r\n\t\t\t\tconfiguration\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Subject, Subscription, timer } from 'rxjs';\r\nimport { Message, MessageConfiguration, MessageSeverity } from '../interfaces';\r\nimport { MESSAGE_DEFAULT_CONFIGURATION } from '../tokens';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class MessageService {\r\n\r\n /**\r\n * Default configuration\r\n * \r\n * Can be changed if you overwrite it or use the `MESSAGE_DEFAULT_CONFIGURATION` InjectionToken\r\n */\r\n public defaultConfiguration: MessageConfiguration = inject(MESSAGE_DEFAULT_CONFIGURATION);\r\n \r\n /**\r\n * Message subject\r\n */\r\n private messageSubject: Subject<Message> = new Subject();\r\n\r\n /**\r\n * Show\r\n * \r\n * Displays message with the given configuration\r\n * \r\n * @param messageConfiguration `Partial<MessageConfiguration>`\r\n */\r\n public show(title: string, message: string, configuration?: Partial<MessageConfiguration>): void {\r\n this.messageSubject.next({\r\n\t\t\t...this.defaultConfiguration,\r\n ...configuration,\r\n\t\t\ttitle,\r\n\t\t\tmessage\r\n });\r\n }\r\n\r\n /**\r\n * Show success message\r\n * \r\n * Display a message with default success severity\r\n * \r\n * @param title `string`, required\r\n * @param message `string`, required\r\n * @param lifetime `number`, optional, default is `this.defaultLifetime`\r\n * @param position `MessagePosition`, optional, default is `this.defaultPosition`\r\n * @param closeable `boolean`, optional, default is `this.defaultClosable`\r\n */\r\n\tpublic showSuccessMessage(\r\n\t\ttitle: string,\r\n\t\tmessage: string,\r\n\t\tconfiguration?: Partial<Omit<MessageConfiguration, 'severity'>>\r\n\t): void {\r\n\t\tthis.show(title, message, {\r\n\t\t\t...configuration,\r\n\t\t\tseverity: MessageSeverity.SUCCESS\r\n\t\t});\r\n\t}\r\n\r\n /**\r\n * Show danger message\r\n * \r\n * Display a message with default danger severity\r\n * \r\n * @param title `string`, required\r\n * @param message `string`, required\r\n * @param lifetime `number`, optional, default is `this.defaultLifetime`\r\n * @param position `MessagePosition`, optional, default is `this.defaultPosition`\r\n * @param closeable `boolean`, optional, default is `this.defaultClosable`\r\n */\r\n\tpublic showDangerMessage(\r\n\t\ttitle: string,\r\n\t\tmessage: string,\r\n\t\tconfiguration?: Partial<Omit<MessageConfiguration, 'severity'>>\r\n\t): void {\r\n\t\tthis.show(title, message, {\r\n\t\t\t...configuration,\r\n\t\t\tseverity: MessageSeverity.DANGER,\r\n\t\t\tkeepOnHover: true\r\n\t\t});\r\n\t}\r\n\r\n /**\r\n * Show warning message\r\n * \r\n * Display a message with default warning severity\r\n * \r\n * @param title `string`, required\r\n * @param message `string`, required\r\n * @param lifetime `number`, optional, default is `this.defaultLifetime`\r\n * @param position `MessagePosition`, optional, default is `this.defaultPosition`\r\n * @param closeable `boolean`, optional, default is `this.defaultClosable`\r\n */\r\n\tpublic showWarningMessage(\r\n\t\ttitle: string,\r\n\t\tmessage: string,\r\n\t\tconfiguration?: Partial<Omit<MessageConfiguration, 'severity'>>\r\n\t): void {\r\n\t\tthis.show(title, message, {\r\n\t\t\t...configuration,\r\n\t\t\tseverity: MessageSeverity.WARNING\r\n\t\t});\r\n\t}\r\n\r\n /**\r\n * Show info message\r\n * \r\n * Display a message with default info severity\r\n * \r\n * @param title `string`, required\r\n * @param message `string`, required\r\n * @param lifetime `number`, optional, default is `this.defaultLifetime`\r\n * @param position `MessagePosition`, optional, default is `this.defaultPosition`\r\n * @param closeable `boolean`, optional, default is `this.defaultClosable`\r\n */\r\n\tpublic showInfoMessage(\r\n\t\ttitle: string,\r\n\t\tmessage: string,\r\n\t\tconfiguration?: Partial<Omit<MessageConfiguration, 'severity'>>\r\n\t): void {\r\n\t\tthis.show(title, message, {\r\n\t\t\t...configuration,\r\n\t\t\tseverity: MessageSeverity.INFO\r\n\t\t});\r\n\t}\r\n\r\n private showMessage(message: Message): void {\r\n let container: HTMLElement | null = document.getElementById('cf-toasts-' + message.position + '-container');\r\n if (container === null) {\r\n container = document.createElement('div');\r\n container.id = 'cf-toasts-' + message.position + '-container';\r\n document.body.appendChild(container);\r\n }\r\n\r\n const div: HTMLElement = this.createMessageHtmlElement(message);\r\n\r\n container.appendChild(div);\r\n\r\n if (message.lifetime !== null) {\r\n\r\n\t\t\tlet disposeTimerSubscription: Subscription | null = timer(message.lifetime + 500).subscribe(() => {\r\n\t\t\t\tthis.hideMessage(div);\r\n\t\t\t});\r\n\r\n\t\t\tif (message.keepOnHover) {\r\n\t\t\t\tdiv.addEventListener('mouseenter', () => {\r\n\t\t\t\t\tif (disposeTimerSubscription !== null) {\r\n\t\t\t\t\t\tdisposeTimerSubscription.unsubscribe();\r\n\t\t\t\t\t\tdisposeTimerSubscription = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n }\r\n }\r\n\r\n private createMessageHtmlElement(message: Message): HTMLElement {\r\n const div: HTMLElement = document.createElement('div');\r\n div.classList.add('cf-toast', 'cf-' + message.severity + '-toast');\r\n const titleDiv: HTMLElement = document.createElement('div');\r\n titleDiv.classList.add('cf-toast-title');\r\n titleDiv.innerText = message.title;\r\n const messageDiv: HTMLElement = document.createElement('div');\r\n messageDiv.classList.add('cf-toast-message');\r\n messageDiv.innerText = message.message;\r\n div.appendChild(titleDiv);\r\n div.appendChild(messageDiv);\r\n if (message.closeable) {\r\n const closeIcon: HTMLElement = document.createElement('i');\r\n closeIcon.classList.add('close-icon', 'remixicon', 'close-line');\r\n closeIcon.onclick = () => {\r\n this.hideMessage(div, true);\r\n };\r\n div.appendChild(closeIcon);\r\n }\r\n return div;\r\n }\r\n\r\n private hideMessage(messageElement: HTMLElement, forceClose: boolean = false): void {\r\n messageElement.classList.add('hidden-toast');\r\n\r\n let remainOpen = false;\r\n messageElement.addEventListener('mouseenter', (() => {\r\n remainOpen = true;\r\n }));\r\n\r\n timer(500).subscribe(() => {\r\n if (remainOpen && !forceClose) {\r\n messageElement.classList.remove('hidden-toast');\r\n return;\r\n }\r\n messageElement.removeEventListener('mouseenter', (() => {}));\r\n messageElement.remove();\r\n });\r\n }\r\n\r\n constructor() {\r\n this.messageSubject.subscribe((message: Message) => {\r\n this.showMessage(message);\r\n });\r\n }\r\n\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { LogLevel } from '../interfaces';\r\nimport { LOG_LEVEL } from '../tokens';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LoggerService {\r\n\r\n\tprivate _logLevel: LogLevel | null = inject(LOG_LEVEL);\r\n\r\n\tprivate logLevelColors: string[] = [\r\n\t\t'',\r\n\t\t'background-color: #D2BDF3; padding: 5px 10px;',\r\n\t\t'background-color: #A2DDFF; padding: 5px 10px;',\r\n\t\t'background-color: #FFD5C5; padding: 5px 10px;',\r\n\t\t'background-color: #EA4331; color: #FFFFFF; padding: 5px 10px;',\r\n\t\t'background-color: #F71900; color: #FFFFFF; padding: 5px 10px;',\r\n\t\t''\r\n\t];\r\n\r\n\tpublic debug(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Debug, group });\r\n\t}\r\n\r\n\tpublic info(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Info, group });\r\n\t}\r\n\r\n\tpublic warn(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Warn, group });\r\n\t}\r\n\r\n\tpublic error(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Error, group });\r\n\t}\r\n\r\n\tpublic fatal(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Fatal, group });\r\n\t}\r\n\r\n\tpublic groupEnd(): void {\r\n\t\tconsole.groupEnd();\r\n\t}\r\n\r\n\tprivate log(configuration: {\r\n\t\tlog: any,\r\n\t\tlogLevel: LogLevel,\r\n\t\tgroup: boolean\r\n\t}): void {\r\n\t\tif (this._logLevel === null || this._logLevel === LogLevel.Off || this._logLevel > configuration.logLevel) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (configuration.group) {\r\n\t\t\tconsole.group(configuration.log);\r\n\t\t} else {\r\n\t\t\tconsole.log('%c' + configuration.log, this.logLevelColors[configuration.logLevel]);\r\n\t\t}\r\n\t}\r\n\r\n\tset logLevel(logLevel: LogLevel | null) {\r\n\t\tthis._logLevel = logLevel;\r\n\t}\r\n\r\n\tget logLevel(): LogLevel | null {\r\n\t\treturn this._logLevel;\r\n\t}\r\n}\r\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { LoggerService } from \"./logger.service\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ApiService {\r\n\r\n\thttpClient: HttpClient = inject(HttpClient);\r\n\tloggerService: LoggerService = inject(LoggerService);\r\n\r\n\tprivate _apiBaseUrl: string | null = null;\r\n\r\n\tpublic post<T>(endPoint: (string|number)[], body: any): Observable<any> {\r\n\t\treturn this.httpClient.post<T>(this.generateUrl(endPoint), body);\r\n\t}\r\n\r\n\tpublic get<T>(endPoint: (string|number)[]): Observable<any> {\r\n\t\treturn this.httpClient.get<T>(this.generateUrl(endPoint));\r\n\t}\r\n\r\n\tpublic getFileArrayBuffer(endPoint: (string|number)[]): Observable<ArrayBuffer> {\r\n\t\treturn this.httpClient.get(this.generateUrl(endPoint), {\r\n\t\t\tresponseType: 'arraybuffer'\r\n\t\t});\r\n\t}\r\n\r\n\tpublic getFileText(endPoint: (string|number)[]): Observable<string> {\r\n\t\treturn this.httpClient.get(this.generateUrl(endPoint), {\r\n\t\t\tresponseType: 'text'\r\n\t\t});\r\n\t}\r\n\r\n\tpublic getWithHttpParams<T>(endPoint: (string|number)[], params: HttpParams | null = null): Observable<any> {\r\n\t\tif (params === null) {\r\n\t\t\treturn this.get(endPoint);\r\n\t\t} else {\r\n\t\t\treturn this.httpClient.get<T>(this.generateUrl(endPoint), {\r\n\t\t\t\tparams\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic delete<T>(endPoint: (string|number)[]): Observable<any> {\r\n\t\treturn this.httpClient.delete<T>(this.generateUrl(endPoint));\r\n\t}\r\n\r\n\tpublic patch<T>(endPoint: (string|number)[], body: any): Observable<any> {\r\n\t\treturn this.httpClient.patch<T>(this.generateUrl(endPoint), body);\r\n\t}\r\n\r\n\tpublic head<T>(endPoint: (string|number)[]): Observable<any> {\r\n\t\treturn this.httpClient.head<T>(this.generateUrl(endPoint));\r\n\t}\r\n\r\n\tpublic options<T>(endPoint: (string|number)[]): Observable<any> {\r\n\t\treturn this.httpClient.options<T>(this.generateUrl(endPoint));\r\n\t}\r\n\r\n\tpublic put<T>(endPoint: (string|number)[], body: any): Observable<any> {\r\n\t\treturn this.httpClient.put<T>(this.generateUrl(endPoint), body);\r\n\t}\r\n\r\n\tpublic generateUrl(endPoint: (string|number)[]): string {\r\n\t\tif (this._apiBaseUrl === null) {\r\n\t\t\tthrow new Error('No API base url set in generateUrl call!');\r\n\t\t}\r\n if (endPoint.length === 0) {\r\n return this._apiBaseUrl;\r\n }\r\n\t\tif (typeof endPoint[0] === 'string' && endPoint[0].startsWith('#')) {\r\n endPoint[0] = endPoint[0].slice(1);\r\n\t\t\treturn endPoint.map((v, i) => i === 0 ? v : encodeURIComponent(v)).join('/');\r\n\t\t}\r\n\t\treturn [this._apiBaseUrl, ...endPoint.map((v) => encodeURIComponent(v))].join('/');\r\n\t}\r\n\r\n\tset apiBaseUrl(apiBaseUrl: string) {\r\n\t\tthis.loggerService.info('Api Service base url set to: ' + apiBaseUrl);\r\n\t\tif (apiBaseUrl[apiBaseUrl.length - 1] === '/') {\r\n\t\t\tapiBaseUrl = apiBaseUrl.slice(0, apiBaseUrl.length - 1);\r\n\t\t}\r\n\t\tthis._apiBaseUrl = apiBaseUrl;\r\n\t}\r\n\r\n\tget apiBaseUrl(): string | null {\r\n\t\treturn this._apiBaseUrl;\r\n\t}\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":"codefoxcore.mjs","sources":["../../../projects/codefoxcore/src/lib/classes/dialog.ref.class.ts","../../../projects/codefoxcore/src/lib/classes/dialog.config.class.ts","../../../projects/codefoxcore/src/lib/classes/dialog.injector.class.ts","../../../projects/codefoxcore/src/lib/tokens/alert.token.ts","../../../projects/codefoxcore/src/lib/tokens/dialog.token.ts","../../../projects/codefoxcore/src/lib/tokens/confirm.token.ts","../../../projects/codefoxcore/src/lib/interfaces.ts","../../../projects/codefoxcore/src/lib/tokens/message.token.ts","../../../projects/codefoxcore/src/lib/tokens/loglevel.token.ts","../../../projects/codefoxcore/src/lib/services/dialog.service.ts","../../../projects/codefoxcore/src/lib/services/message.service.ts","../../../projects/codefoxcore/src/lib/services/logger.service.ts","../../../projects/codefoxcore/src/lib/services/api.service.ts","../../../projects/codefoxcore/src/lib/helpers.ts","../../../projects/codefoxcore/src/lib/services/cookie.service.ts","../../../projects/codefoxcore/src/lib/services/token.service.ts","../../../projects/codefoxcore/src/codefoxcore.ts"],"sourcesContent":["import { filter, Observable, Subject, takeUntil } from \"rxjs\";\r\nimport { CfDialogCloseParams } from \"../interfaces\";\r\nimport { MessageService } from \"../services\";\r\nimport { DialogConfig } from \"../classes\";\r\n\r\nexport class DialogRef<T = any> {\r\n\tmessageService: MessageService | null = null;\r\n dialogConfig: DialogConfig | null = null;\r\n\tprivate readonly _onClose: Subject<any> = new Subject<any>();\r\n onClose: Observable<T | undefined> = this._onClose.asObservable();\r\n onCloseValue: Observable<T> = this._onClose.pipe(filter(result => result !== undefined && result !== null));\r\n onCloseOnValue: (value: any) => Observable<any> = (value: any) => this._onClose.pipe(filter(result => result === value));\r\n private readonly _onMessage: Subject<any> = new Subject<any>();\r\n\tonMessage: Observable<any> = this._onMessage.asObservable();\r\n private readonly _onDestroy = new Subject<any>();\r\n onDestroy: Observable<any> = this._onDestroy.asObservable();\r\n\tsavedTitle: string = '';\r\n\ttitle: string | null = null;\r\n\topened: Date = new Date();\r\n\tprivate doClose(result?: any, params: CfDialogCloseParams = {}): void {\r\n\t\tif (params.message !== undefined && this.messageService !== null) {\r\n\t\t\tthis.messageService.show(params.message.title, params.message.message, params.message);\r\n\t\t}\r\n\t\tthis._onClose.next(result); \r\n\t}\r\n close(result?: any, params: CfDialogCloseParams = {}): void { \r\n\t\tif (this.dialogConfig === null || this.dialogConfig.beforeClose === null) {\r\n\t\t\tthis.doClose(result, params);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif (this.dialogConfig.beforeClose instanceof Promise) {\r\n\t\t\tthis.dialogConfig.beforeClose.then((value: boolean) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.doClose(result, params);\r\n\t\t\t\t}\r\n\t\t\t}).catch(() => {});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.dialogConfig.beforeClose instanceof Observable) {\r\n\t\t\tthis.dialogConfig.beforeClose.pipe(takeUntil(this._onClose)).subscribe((value: boolean) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.doClose(result, params);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tconst beforeCloseResult: boolean | Observable<boolean> | Promise<boolean> = this.dialogConfig.beforeClose();\r\n\r\n\t\tif (beforeCloseResult instanceof Promise) {\r\n\t\t\tbeforeCloseResult.then((value: boolean) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.doClose(result, params);\r\n\t\t\t\t}\r\n\t\t\t}).catch(() => {});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (beforeCloseResult instanceof Observable) {\r\n\t\t\tbeforeCloseResult.pipe(takeUntil(this._onClose)).subscribe((value: boolean) => {\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tthis.doClose(result, params);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (beforeCloseResult) {\r\n\t\t\tthis.doClose(result, params);\r\n\t\t}\r\n\t}\r\n forceClose(result?: any): void {\r\n this.doClose(result);\r\n }\r\n\tmessage(message: any): void { this._onMessage.next(message); }\r\n destroy(): void { this._onDestroy.next(undefined); }\r\n}\r\n","import { ResolveData } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { DialogConfiguration } from \"../interfaces\";\r\n\r\nexport class DialogConfig implements DialogConfiguration {\r\n showCloseIcon: boolean = true;\r\n\tbeforeClose: null | (() => boolean | Observable<boolean> | Promise<boolean>) | Observable<boolean> | Promise<boolean> = null;\r\n\tignoreKeyUp: boolean = false;\r\n data: {[key: (string | number)]: any} = {};\r\n noPadding: boolean = false;\r\n\tkeepActiveElement: boolean = false;\r\n\tcontainerClasses: string[] = [];\r\n\tdialogClasses: string[] = [];\r\n resolve: ResolveData = {};\r\n\ttitle: string | null = null;\r\n contentElement: Element | null = null;\r\n single: boolean = false;\r\n width: string | null = null;\r\n\theight: string | null = null;\r\n getData(key: string | number, defaultOnUndefined: any = null): any {\r\n return this.data[key] !== undefined ? this.data[key] : defaultOnUndefined;\r\n }\r\n}\r\n","import { InjectionToken, Injector, Type } from \"@angular/core\";\r\n\r\nexport class DialogInjector implements Injector {\r\n constructor(private _parentInjector: Injector, private _additionalTokens: WeakMap<any, any>) { }\r\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T, flags?: {}): T;\r\n get(token: any, notFoundValue?: any): any;\r\n get(token: any, notFoundValue?: any, _?: any): any {\r\n const value = this._additionalTokens.get(token);\r\n if (value) { return value; }\r\n return this._parentInjector.get<any>(token, notFoundValue);\r\n }\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { AlertButtonConfiguration, AlertConfiguration } from \"../interfaces\";\r\n\r\nexport const ALERT_DEFAULT_BUTTON_CONFIGURATION: InjectionToken<AlertButtonConfiguration> = new InjectionToken('Alert default button', {\r\n\tfactory: (): AlertButtonConfiguration => {\r\n\t\treturn {\r\n\t\t\tlabel: 'alert.ok',\r\n\t\t\tseverity: 'success',\r\n\t\t\tcallback: ({ dialogRef }) => {\r\n\t\t\t\tdialogRef.close();\r\n\t\t\t},\r\n\t\t\tfocus: true,\r\n\t\t\ttranslateLabel: true\r\n\t\t}\r\n\t}\r\n});\r\n\r\nexport const ALERT_CONFIGURATIONS: InjectionToken<{[key: string]: AlertConfiguration}> = new InjectionToken('Alert configurations predefined', {\r\n factory: (): {[key: string]: AlertConfiguration} => {\r\n return {};\r\n }\r\n});\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { PredefinedDialogs } from \"../interfaces\";\r\n\r\nexport const CF_PREDEFINED_DIALOGS: InjectionToken<PredefinedDialogs> = new InjectionToken('Predefined dialogs', {\r\n factory: () => {\r\n return {};\r\n }\r\n});\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { ConfirmConfiguration } from \"../interfaces\";\r\n\r\nexport const CONFIRM_CONFIGURATIONS: InjectionToken<{[key: string]: ConfirmConfiguration}> = new InjectionToken('Confirm configurations predefined', {\r\n factory: (): {[key: string]: ConfirmConfiguration} => {\r\n return {};\r\n }\r\n});\r\n","import { ComponentRef, Type } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { DialogRef } from \"./classes/dialog.ref.class\";\r\n\r\nexport interface DialogComponentRefContainer {\r\n componentRef: ComponentRef<any>;\r\n container: HTMLDivElement;\r\n\topenIndex: number;\r\n}\r\n\r\nexport type PredefinedDialogs = {[key: string]: (() => Promise<Type<any>>) | {component: () => Promise<Type<any>>, configuration: DialogConfiguration}};\r\n\r\nexport interface DialogConfiguration {\r\n showCloseIcon?: boolean;\r\n\tbeforeClose?: CfDialogConfigurationBeforeClose;\r\n\tignoreKeyUp?: boolean;\r\n data?: any;\r\n noPadding?: boolean;\r\n\tkeepActiveElement?: boolean;\r\n\tcontainerClasses?: string[];\r\n\tdialogClasses?: string[];\r\n\ttitle?: string | null;\r\n contentElement?: Element | null;\r\n single?: boolean;\r\n width?: string | null;\r\n\theight?: string | null;\r\n}\r\n\r\nexport type CfDialogConfigurationBeforeClose = null | (() => boolean | Observable<boolean> | Promise<boolean>) | Observable<boolean> | Promise<boolean>;\r\n\r\nexport interface ConfirmConfiguration {\r\n title: string;\r\n text: string;\r\n acceptText: string;\r\n declineText: string;\r\n\thideDeclineButton?: boolean;\r\n switchButtonColors?: boolean;\r\n acceptTimeout?: number;\r\n acceptValidationText?: string;\r\n acceptValidationMode?: AcceptValidationMode;\r\n acceptValidationLabel?: string;\r\n}\r\n\r\nexport interface AlertConfiguration {\r\n title: string;\r\n text: string;\r\n\tshowCloseIcon?: boolean;\r\n\tbutton?: Partial<AlertButtonConfiguration>;\r\n}\r\n\r\nexport enum AcceptValidationMode {\r\n PATTERN = 'PATTERN',\r\n TEXT = 'TEXT'\r\n}\r\n\r\nexport interface AlertButtonConfiguration {\r\n\tlabel: string;\r\n\tseverity: string;\r\n\tcallback: (params: {dialogRef: DialogRef}) => void;\r\n\ttranslateLabel: boolean;\r\n\tfocus: boolean;\r\n}\r\n\r\nexport interface CfDialogCloseParams {\r\n message?: MessagePartial;\r\n}\r\n\r\nexport interface MessagePartial extends Partial<MessageConfiguration> {\r\n title: string;\r\n message: string;\r\n}\r\n\r\nexport interface MessageConfiguration {\r\n closeable: boolean;\r\n position: MessagePosition;\r\n lifetime: number | null;\r\n severity: MessageSeverity;\r\n\tkeepOnHover: boolean;\r\n}\r\nexport enum MessagePosition {\r\n TOP = 'top',\r\n BOTTOM = 'bottom'\r\n}\r\n\r\nexport enum MessageSeverity {\r\n SUCCESS = 'success',\r\n WARNING = 'warning',\r\n DANGER = 'danger',\r\n INFO = 'info'\r\n}\r\n\r\nexport interface LoadingConfiguration {\r\n title: string;\r\n text: string;\r\n\tloadingIcon?: string;\r\n iconSize?: number;\r\n}\r\n\r\nexport interface ModalWithButtonsConfiguration {\r\n title: string;\r\n text: string;\r\n\tshowCloseIcon?: boolean;\r\n\tbuttons: ButtonConfiguration[];\r\n}\r\n\r\nexport interface ButtonConfiguration {\r\n\tlabel: string;\r\n\tseverity: string;\r\n\tcallback?: (params: {dialogRef: DialogRef}) => void;\r\n\trouterLink?: any;\r\n\tfocus?: boolean;\r\n\tpermission?: string | string[];\r\n\ttranslateLabel?: boolean;\r\n}\r\n\r\nexport interface Message extends MessageConfiguration {\r\n title: string;\r\n message: string;\r\n}\r\n\r\nexport enum LogLevel {\r\n All = 0,\r\n Debug = 1,\r\n Info = 2,\r\n Warn = 3,\r\n Error = 4,\r\n Fatal = 5,\r\n Off = 6\r\n}\r\n\r\nexport enum TokenServiceMode {\r\n LOCALSTORAGE = 0,\r\n SESSIONSTORAGE = 1,\r\n COOKIE = 2\r\n}","import { InjectionToken } from \"@angular/core\";\r\nimport { MessageConfiguration, MessagePosition, MessageSeverity } from \"../interfaces\";\r\n\r\nexport const MESSAGE_DEFAULT_CONFIGURATION: InjectionToken<MessageConfiguration> = new InjectionToken('Message default configuration', {\r\n\tfactory: (): MessageConfiguration => {\r\n\t\treturn {\r\n\t\t\tcloseable: true,\r\n\t\t\tlifetime: 3000,\r\n\t\t\tposition: MessagePosition.TOP,\r\n\t\t\tseverity: MessageSeverity.SUCCESS,\r\n\t\t\tkeepOnHover: false\r\n\t\t};\r\n\t}\r\n});\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { LogLevel } from \"../interfaces\";\r\n\r\nexport const LOG_LEVEL: InjectionToken<LogLevel> = new InjectionToken('Log level', {\r\n factory: (): LogLevel => {\r\n return LogLevel.All;\r\n }\r\n});\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EmbeddedViewRef,\r\n inject,\r\n Injectable,\r\n Injector,\r\n PLATFORM_ID,\r\n Type\r\n} from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { filter, Subscription } from 'rxjs';\r\nimport { AlertConfiguration, DialogConfiguration, ConfirmConfiguration, LoadingConfiguration, ModalWithButtonsConfiguration, PredefinedDialogs, DialogComponentRefContainer } from '../interfaces';\r\nimport { DialogConfig, DialogInjector, DialogRef } from '../classes';\r\nimport { ALERT_CONFIGURATIONS, CF_PREDEFINED_DIALOGS, CONFIRM_CONFIGURATIONS } from '../tokens';\r\nimport { MessageService } from '../services';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n\tprivate injector: Injector = inject(Injector);\r\n\tprivate predefinedConfirmConfigurations: {[key: string]: ConfirmConfiguration} = inject(CONFIRM_CONFIGURATIONS);\r\n\tprivate predefinedAlertConfigurations: {[key: string]: AlertConfiguration} = inject(ALERT_CONFIGURATIONS);\r\n\tprivate predefinedDialogs: PredefinedDialogs = inject(CF_PREDEFINED_DIALOGS);\r\n\r\n\ttitle: Title = inject(Title);\r\n\tmessageService: MessageService = inject(MessageService);\r\n\r\n\tdialogs: Map<DialogRef, DialogComponentRefContainer> = new Map();\r\n\topenIndex: number = 1;\r\n\tplatformId: Object = inject(PLATFORM_ID);\r\n\r\n constructor() {\r\n\t\tif (isPlatformBrowser(this.platformId)) {\r\n\t\t\tdocument.addEventListener(\"keyup\", (keyboardEvent: KeyboardEvent) => {\r\n\t\t\t\tif (keyboardEvent.key.toLowerCase() === 'escape') {\r\n\t\t\t\t\tlet lastOpenIndex: number = 0;\r\n\t\t\t\t\tlet lastOpenedDialogRef: DialogRef | null = null;\r\n\t\t\t\t\tfor (const [dialogRef, cfDialogComponentRefContainer] of this.dialogs.entries()) {\r\n\t\t\t\t\t\tif (cfDialogComponentRefContainer.openIndex > lastOpenIndex) {\r\n\t\t\t\t\t\t\tlastOpenIndex = cfDialogComponentRefContainer.openIndex;\r\n\t\t\t\t\t\t\tlastOpenedDialogRef = dialogRef;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\r\n\t\t\t\t\tif (lastOpenedDialogRef !== null && lastOpenedDialogRef.dialogConfig !== null) {\r\n\t\t\t\t\t\tif (lastOpenedDialogRef.dialogConfig.ignoreKeyUp || document.activeElement instanceof HTMLInputElement || document.activeElement instanceof HTMLTextAreaElement) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\r\n\t\t\t\t\t\tlastOpenedDialogRef.close();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tasync openPredefined<T = any>(name: string, dialogConfiguration: DialogConfiguration = {}): Promise<DialogRef<T>> {\r\n\t\tif (this.predefinedDialogs[name] === undefined) {\r\n\t\t\tthrow Error('Dialog with name \"' + name + '\" not found!');\r\n\t\t}\r\n\t\tconst predefinedDialog = this.predefinedDialogs[name];\r\n\t\tif (typeof predefinedDialog === 'function') {\r\n\t\t\treturn this.openImport(predefinedDialog, dialogConfiguration);\r\n\t\t}\r\n\t\treturn this.openImport(predefinedDialog.component, {...predefinedDialog.configuration, ...dialogConfiguration});\r\n\t}\r\n\r\n\tasync openImport<T = any>(component: () => Promise<Type<any>>, dialogConfiguration: DialogConfiguration = {}): Promise<DialogRef<T>> {\r\n\t\treturn new Promise(async (resolve) => {\r\n\t\t\tresolve(this.open<T>(await component(), dialogConfiguration));\r\n\t\t});\r\n\t}\r\n\r\n open<T = any>(component: Type<any>, dialogConfiguration: DialogConfiguration = {}): DialogRef<T> {\r\n\r\n\t\tfor (let dialog of this.dialogs.entries()) {\r\n\t\t\tif (\r\n\t\t\t\t(dialogConfiguration.single && dialog[1].componentRef.componentType.name === component.name) ||\r\n\t\t\t\t(dialog[0].dialogConfig !== null && dialog[0].dialogConfig.single && dialog[1].componentRef.componentType.name === component.name)\r\n\t\t\t) {\r\n\t\t\t\treturn dialog[0];\r\n\t\t\t}\r\n\t\t}\r\n\r\n const dialogConfig: DialogConfig = this.createDialogConfig(dialogConfiguration);\r\n\r\n\t\tif (!dialogConfig.keepActiveElement) {\r\n\t\t\tif (document.activeElement instanceof HTMLElement) {\r\n\t\t\t\tdocument.activeElement.blur();\r\n\t\t\t}\r\n\t\t}\r\n\r\n const dialogRef: DialogRef<T> = this.appendToBody(component, dialogConfig);\r\n\t\tdialogRef.messageService = this.messageService;\r\n\t\tdialogRef.dialogConfig = dialogConfig;\r\n\r\n\t\tthis.changeAndStoreTitle(dialogRef);\r\n\r\n return dialogRef;\r\n }\r\n\r\n\tchangeAndStoreTitle(dialogRef: DialogRef): void {\r\n\t\tdialogRef.savedTitle = this.title.getTitle();\r\n\t\tif (dialogRef.dialogConfig !== null && dialogRef.dialogConfig.title !== null) {\r\n\t\t\tthis.title.setTitle(dialogRef.dialogConfig.title);\r\n\t\t}\r\n\t}\r\n\r\n createDialogConfig(dialogConfiguration: DialogConfiguration): DialogConfig {\r\n const dialogConfig: DialogConfig = new DialogConfig();\r\n if (dialogConfiguration.showCloseIcon !== undefined) {\r\n dialogConfig.showCloseIcon = dialogConfiguration.showCloseIcon;\r\n }\r\n\t\tif (dialogConfiguration.beforeClose !== undefined) {\r\n dialogConfig.beforeClose = dialogConfiguration.beforeClose;\r\n }\r\n\t\tif (dialogConfiguration.ignoreKeyUp !== undefined) {\r\n dialogConfig.ignoreKeyUp = dialogConfiguration.ignoreKeyUp;\r\n }\r\n if (dialogConfiguration.data !== undefined) {\r\n dialogConfig.data = dialogConfiguration.data;\r\n }\r\n if (dialogConfiguration.noPadding !== undefined) {\r\n dialogConfig.noPadding = dialogConfiguration.noPadding;\r\n }\r\n\t\tif (dialogConfiguration.keepActiveElement !== undefined) {\r\n\t\t\tdialogConfig.keepActiveElement = dialogConfiguration.keepActiveElement;\r\n\t\t}\r\n\t\tif (dialogConfiguration.containerClasses !== undefined) {\r\n\t\t\tdialogConfig.containerClasses = dialogConfiguration.containerClasses;\r\n\t\t}\r\n\t\tif (dialogConfiguration.dialogClasses !== undefined) {\r\n\t\t\tdialogConfig.dialogClasses = dialogConfiguration.dialogClasses;\r\n\t\t}\r\n\t\tif (dialogConfiguration.title !== undefined) {\r\n\t\t\tdialogConfig.title = dialogConfiguration.title;\r\n\t\t}\r\n\t\tif (dialogConfiguration.contentElement !== undefined) {\r\n\t\t\tdialogConfig.contentElement = dialogConfiguration.contentElement;\r\n\t\t}\r\n\t\tif (dialogConfiguration.single !== undefined) {\r\n\t\t\tdialogConfig.single = dialogConfiguration.single;\r\n\t\t}\r\n\t\tif (dialogConfiguration.width !== undefined) {\r\n\t\t\tdialogConfig.width = dialogConfiguration.width;\r\n\t\t}\r\n\t\tif (dialogConfiguration.height !== undefined) {\r\n\t\t\tdialogConfig.height = dialogConfiguration.height;\r\n\t\t}\r\n return dialogConfig;\r\n }\r\n\r\n appendToBody(component: Type<any>, dialogConfig: DialogConfig): DialogRef {\r\n\r\n\t\tconst appRef: ApplicationRef = this.injector.get(ApplicationRef);\r\n\r\n // CREATE INJECTION TOKENS\r\n const tokens: WeakMap<any, any> = new WeakMap();\r\n\r\n // CREATE DIALOG CONFIGURATION CLASS\r\n tokens.set(DialogConfig, dialogConfig);\r\n\r\n // CREATE DIALOG REFERENCE CLASS\r\n const dialogRef: DialogRef = new DialogRef();\r\n tokens.set(DialogRef, dialogRef);\r\n\r\n // LISTEN ON DIALOG CLOSE\r\n const closeSub: Subscription = dialogRef.onClose.subscribe(() => {\r\n this.removeFromBody(dialogRef);\r\n closeSub.unsubscribe();\r\n });\r\n\r\n // CREATE COMPONENT REF\r\n const componentRef: ComponentRef<any> = createComponent(component, {\r\n\t\t\tenvironmentInjector: appRef.injector,\r\n\t\t\telementInjector: new DialogInjector(this.injector, tokens)\r\n\t\t});\r\n\r\n // ATTACH VIEW TO ANGULAR\r\n appRef.attachView(componentRef.hostView);\r\n\r\n // CREATE DIALOG CONTAINER ELEMENT\r\n const dialogContainer: HTMLDivElement = document.createElement('div');\r\n dialogContainer.classList.add('cf-dialog-container');\r\n\t\tif (dialogConfig.containerClasses.length > 0) {\r\n\t\t\tdialogContainer.classList.add(...dialogConfig.containerClasses);\r\n\t\t}\r\n\r\n\t\t// APPEND DOM ELEMENT TO DIALOG\r\n\t\tconst childDomElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n\t\tchildDomElem.classList.add('cf-dialog');\r\n\t\t\r\n\t\tif (dialogConfig.width !== null) {\r\n\t\t\tchildDomElem.style.width = dialogConfig.width;\r\n\t\t}\r\n\t\tif (dialogConfig.height !== null) {\r\n\t\t\tchildDomElem.style.height = dialogConfig.height;\r\n\t\t}\r\n\t\tif (dialogConfig.noPadding) {\r\n childDomElem.classList.add('no-padding');\r\n }\r\n\t\tif (dialogConfig.dialogClasses.length > 0) {\r\n\t\t\tchildDomElem.classList.add(...dialogConfig.dialogClasses);\r\n\t\t}\r\n\r\n\t\tif (dialogConfig.contentElement !== null) {\r\n\t\t\tchildDomElem.appendChild(dialogConfig.contentElement);\r\n\t\t}\r\n\r\n\t\tdialogContainer.appendChild(childDomElem);\r\n\r\n // CLOSEABLE? APPEND BUTTON\r\n if (dialogConfig.showCloseIcon) {\r\n const closeElement: HTMLDivElement = document.createElement('div');\r\n closeElement.classList.add(...['cf-dialog-close', 'remixicon', 'close-line']);\r\n closeElement.onclick = () => {\r\n dialogRef.close();\r\n };\r\n childDomElem.appendChild(closeElement);\r\n }\r\n\r\n // APPEND DIALOG CONTAINER TO BODY\r\n document.body.appendChild(dialogContainer);\r\n\r\n this.dialogs.set(dialogRef, {\r\n componentRef,\r\n container: dialogContainer,\r\n\t\t\topenIndex: this.openIndex \r\n });\r\n\r\n\t\tthis.openIndex++;\r\n\r\n return dialogRef;\r\n }\r\n\r\n removeFromBody(dialogRef: DialogRef): void {\r\n\r\n\t\tconst appRef: ApplicationRef = this.injector.get(ApplicationRef);\r\n\r\n if (!dialogRef || !this.dialogs.has(dialogRef)) {\r\n return;\r\n }\r\n const dialogComponentRefContainer: DialogComponentRefContainer | undefined = this.dialogs.get(dialogRef);\r\n if (dialogComponentRefContainer == undefined) {\r\n return;\r\n }\r\n\t\t\r\n appRef.detachView(dialogComponentRefContainer.componentRef.hostView);\r\n\r\n if (dialogComponentRefContainer.container !== null) {\r\n dialogComponentRefContainer.container.remove();\r\n }\r\n dialogComponentRefContainer.componentRef.destroy();\r\n this.dialogs.delete(dialogRef);\r\n\r\n\t\tif (this.dialogs.size === 0) {\r\n\t\t\tthis.openIndex = 1;\r\n\t\t}\r\n\r\n\t\t// Restore title\r\n\t\tif (this.dialogs.size === 0) {\r\n\t\t\tthis.title.setTitle(dialogRef.savedTitle);\r\n\t\t} else {\r\n\t\t\tlet latestOpenedDialogRef: DialogRef | null = null;\r\n\t\t\tthis.dialogs.forEach((_, dialogRef: DialogRef) => {\r\n\t\t\t\tif (latestOpenedDialogRef === null) {\r\n\t\t\t\t\tlatestOpenedDialogRef = dialogRef;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (latestOpenedDialogRef.opened < dialogRef.opened) {\r\n\t\t\t\t\t\tlatestOpenedDialogRef = dialogRef;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (latestOpenedDialogRef !== null) {\r\n\t\t\t\t//this.title.setTitle(latestOpenedDialogRef.savedTitle);\r\n\t\t\t} else {\r\n\t\t\t\tthis.title.setTitle(dialogRef.savedTitle);\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n\tconfirm(\r\n\t\tconfiguration: ConfirmConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<boolean> {\r\n\t\tif (typeof configuration === 'string') {\r\n\t\t\tconst predefinedConfirmConfiguration: ConfirmConfiguration | undefined = this.predefinedConfirmConfigurations[configuration];\r\n\t\t\tif (predefinedConfirmConfiguration === undefined) {\r\n\t\t\t\tthrow new Error('Predefined confirm configuration not found for: ' + configuration);\r\n\t\t\t}\r\n\t\t\tconfiguration = predefinedConfirmConfiguration;\r\n\t\t}\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tthis.open(component, {\r\n\t\t\t\t...dialogConfiguration,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tconfiguration\r\n\t\t\t\t},\r\n\t\t\t\tignoreKeyUp: true,\r\n\t\t\t\tshowCloseIcon: false\r\n\t\t\t}).onClose.pipe(filter(value => value !== undefined)).subscribe((accepted: boolean) => {\r\n\t\t\t\tif (accepted) {\r\n\t\t\t\t\tresolve(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treject(true);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n async confirmAsync(\r\n\t\tconfiguration: ConfirmConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<boolean> {\r\n return await new Promise((resolve) => {\r\n this.confirm(configuration, dialogConfiguration, component).then(() => {\r\n resolve(true);\r\n }).catch(() => {\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\t\r\n\tconfirmAccept(\r\n\t\tconfiguration: ConfirmConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<boolean> {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tthis.confirm(configuration, dialogConfiguration, component).then(() => resolve(true)).catch(() => {});\r\n\t\t});\r\n\t}\r\n\t\r\n\tconfirmDecline(\r\n\t\tconfiguration: ConfirmConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<boolean> {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tthis.confirm(configuration, dialogConfiguration, component).then(() => {}).catch(() => resolve(true));\r\n\t\t});\r\n\t}\r\n\r\n\tshowLoading(\r\n\t\tconfiguration: LoadingConfiguration,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): DialogRef {\r\n\t\treturn this.open(component, {\r\n\t\t\t...dialogConfiguration,\r\n\t\t\tshowCloseIcon: false,\r\n\t\t\tignoreKeyUp: true,\r\n\t\t\tdata: {\r\n\t\t\t\tconfiguration\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tshowAlert(\r\n\t\tconfiguration: AlertConfiguration | string,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): Promise<void> {\r\n\t\tif (typeof configuration === 'string') {\r\n\t\t\tconst predefinedAlertConfiguration: AlertConfiguration | undefined = this.predefinedAlertConfigurations[configuration];\r\n\t\t\tif (predefinedAlertConfiguration === undefined) {\r\n\t\t\t\tthrow new Error('Predefined alert configuration not found for: ' + configuration);\r\n\t\t\t}\r\n\t\t\tconfiguration = predefinedAlertConfiguration;\r\n\t\t}\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\treturn this.open(component, {\r\n\t\t\t\t...dialogConfiguration,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tconfiguration\r\n\t\t\t\t},\r\n\t\t\t\tignoreKeyUp: true,\r\n\t\t\t\tshowCloseIcon: false\r\n\t\t\t}).onClose.subscribe(() => {\r\n\t\t\t\tresolve();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tshowModalWithButtons(\r\n\t\tconfiguration: ModalWithButtonsConfiguration,\r\n\t\tdialogConfiguration: DialogConfiguration = {},\r\n\t\tcomponent: Type<any>\r\n\t): DialogRef {\r\n\t\treturn this.open(component, {\r\n\t\t\t...dialogConfiguration,\r\n\t\t\tdata: {\r\n\t\t\t\tconfiguration\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { Subject, Subscription, timer } from 'rxjs';\r\nimport { Message, MessageConfiguration, MessageSeverity } from '../interfaces';\r\nimport { MESSAGE_DEFAULT_CONFIGURATION } from '../tokens';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class MessageService {\r\n\r\n /**\r\n * Default configuration\r\n * \r\n * Can be changed if you overwrite it or use the `MESSAGE_DEFAULT_CONFIGURATION` InjectionToken\r\n */\r\n public defaultConfiguration: MessageConfiguration = inject(MESSAGE_DEFAULT_CONFIGURATION);\r\n \r\n /**\r\n * Message subject\r\n */\r\n private messageSubject: Subject<Message> = new Subject();\r\n\r\n /**\r\n * Show\r\n * \r\n * Displays message with the given configuration\r\n * \r\n * @param messageConfiguration `Partial<MessageConfiguration>`\r\n */\r\n public show(title: string, message: string, configuration?: Partial<MessageConfiguration>): void {\r\n this.messageSubject.next({\r\n\t\t\t...this.defaultConfiguration,\r\n ...configuration,\r\n\t\t\ttitle,\r\n\t\t\tmessage\r\n });\r\n }\r\n\r\n /**\r\n * Show success message\r\n * \r\n * Display a message with default success severity\r\n * \r\n * @param title `string`, required\r\n * @param message `string`, required\r\n * @param lifetime `number`, optional, default is `this.defaultLifetime`\r\n * @param position `MessagePosition`, optional, default is `this.defaultPosition`\r\n * @param closeable `boolean`, optional, default is `this.defaultClosable`\r\n */\r\n\tpublic showSuccessMessage(\r\n\t\ttitle: string,\r\n\t\tmessage: string,\r\n\t\tconfiguration?: Partial<Omit<MessageConfiguration, 'severity'>>\r\n\t): void {\r\n\t\tthis.show(title, message, {\r\n\t\t\t...configuration,\r\n\t\t\tseverity: MessageSeverity.SUCCESS\r\n\t\t});\r\n\t}\r\n\r\n /**\r\n * Show danger message\r\n * \r\n * Display a message with default danger severity\r\n * \r\n * @param title `string`, required\r\n * @param message `string`, required\r\n * @param lifetime `number`, optional, default is `this.defaultLifetime`\r\n * @param position `MessagePosition`, optional, default is `this.defaultPosition`\r\n * @param closeable `boolean`, optional, default is `this.defaultClosable`\r\n */\r\n\tpublic showDangerMessage(\r\n\t\ttitle: string,\r\n\t\tmessage: string,\r\n\t\tconfiguration?: Partial<Omit<MessageConfiguration, 'severity'>>\r\n\t): void {\r\n\t\tthis.show(title, message, {\r\n\t\t\t...configuration,\r\n\t\t\tseverity: MessageSeverity.DANGER,\r\n\t\t\tkeepOnHover: true\r\n\t\t});\r\n\t}\r\n\r\n /**\r\n * Show warning message\r\n * \r\n * Display a message with default warning severity\r\n * \r\n * @param title `string`, required\r\n * @param message `string`, required\r\n * @param lifetime `number`, optional, default is `this.defaultLifetime`\r\n * @param position `MessagePosition`, optional, default is `this.defaultPosition`\r\n * @param closeable `boolean`, optional, default is `this.defaultClosable`\r\n */\r\n\tpublic showWarningMessage(\r\n\t\ttitle: string,\r\n\t\tmessage: string,\r\n\t\tconfiguration?: Partial<Omit<MessageConfiguration, 'severity'>>\r\n\t): void {\r\n\t\tthis.show(title, message, {\r\n\t\t\t...configuration,\r\n\t\t\tseverity: MessageSeverity.WARNING\r\n\t\t});\r\n\t}\r\n\r\n /**\r\n * Show info message\r\n * \r\n * Display a message with default info severity\r\n * \r\n * @param title `string`, required\r\n * @param message `string`, required\r\n * @param lifetime `number`, optional, default is `this.defaultLifetime`\r\n * @param position `MessagePosition`, optional, default is `this.defaultPosition`\r\n * @param closeable `boolean`, optional, default is `this.defaultClosable`\r\n */\r\n\tpublic showInfoMessage(\r\n\t\ttitle: string,\r\n\t\tmessage: string,\r\n\t\tconfiguration?: Partial<Omit<MessageConfiguration, 'severity'>>\r\n\t): void {\r\n\t\tthis.show(title, message, {\r\n\t\t\t...configuration,\r\n\t\t\tseverity: MessageSeverity.INFO\r\n\t\t});\r\n\t}\r\n\r\n private showMessage(message: Message): void {\r\n let container: HTMLElement | null = document.getElementById('cf-toasts-' + message.position + '-container');\r\n if (container === null) {\r\n container = document.createElement('div');\r\n container.id = 'cf-toasts-' + message.position + '-container';\r\n document.body.appendChild(container);\r\n }\r\n\r\n const div: HTMLElement = this.createMessageHtmlElement(message);\r\n\r\n container.appendChild(div);\r\n\r\n if (message.lifetime !== null) {\r\n\r\n\t\t\tlet disposeTimerSubscription: Subscription | null = timer(message.lifetime + 500).subscribe(() => {\r\n\t\t\t\tthis.hideMessage(div);\r\n\t\t\t});\r\n\r\n\t\t\tif (message.keepOnHover) {\r\n\t\t\t\tdiv.addEventListener('mouseenter', () => {\r\n\t\t\t\t\tif (disposeTimerSubscription !== null) {\r\n\t\t\t\t\t\tdisposeTimerSubscription.unsubscribe();\r\n\t\t\t\t\t\tdisposeTimerSubscription = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n }\r\n }\r\n\r\n private createMessageHtmlElement(message: Message): HTMLElement {\r\n const div: HTMLElement = document.createElement('div');\r\n div.classList.add('cf-toast', 'cf-' + message.severity + '-toast');\r\n const titleDiv: HTMLElement = document.createElement('div');\r\n titleDiv.classList.add('cf-toast-title');\r\n titleDiv.innerText = message.title;\r\n const messageDiv: HTMLElement = document.createElement('div');\r\n messageDiv.classList.add('cf-toast-message');\r\n messageDiv.innerText = message.message;\r\n div.appendChild(titleDiv);\r\n div.appendChild(messageDiv);\r\n if (message.closeable) {\r\n const closeIcon: HTMLElement = document.createElement('i');\r\n closeIcon.classList.add('close-icon', 'remixicon', 'close-line');\r\n closeIcon.onclick = () => {\r\n this.hideMessage(div, true);\r\n };\r\n div.appendChild(closeIcon);\r\n }\r\n return div;\r\n }\r\n\r\n private hideMessage(messageElement: HTMLElement, forceClose: boolean = false): void {\r\n messageElement.classList.add('hidden-toast');\r\n\r\n let remainOpen = false;\r\n messageElement.addEventListener('mouseenter', (() => {\r\n remainOpen = true;\r\n }));\r\n\r\n timer(500).subscribe(() => {\r\n if (remainOpen && !forceClose) {\r\n messageElement.classList.remove('hidden-toast');\r\n return;\r\n }\r\n messageElement.removeEventListener('mouseenter', (() => {}));\r\n messageElement.remove();\r\n });\r\n }\r\n\r\n constructor() {\r\n this.messageSubject.subscribe((message: Message) => {\r\n this.showMessage(message);\r\n });\r\n }\r\n\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { LogLevel } from '../interfaces';\r\nimport { LOG_LEVEL } from '../tokens';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LoggerService {\r\n\r\n\tprivate _logLevel: LogLevel | null = inject(LOG_LEVEL);\r\n\r\n\tprivate logLevelColors: string[] = [\r\n\t\t'',\r\n\t\t'background-color: #D2BDF3; padding: 5px 10px;',\r\n\t\t'background-color: #A2DDFF; padding: 5px 10px;',\r\n\t\t'background-color: #FFD5C5; padding: 5px 10px;',\r\n\t\t'background-color: #EA4331; color: #FFFFFF; padding: 5px 10px;',\r\n\t\t'background-color: #F71900; color: #FFFFFF; padding: 5px 10px;',\r\n\t\t''\r\n\t];\r\n\r\n\tpublic debug(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Debug, group });\r\n\t}\r\n\r\n\tpublic info(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Info, group });\r\n\t}\r\n\r\n\tpublic warn(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Warn, group });\r\n\t}\r\n\r\n\tpublic error(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Error, group });\r\n\t}\r\n\r\n\tpublic fatal(log: any, group: boolean = false): void {\r\n\t\tthis.log({ log, logLevel: LogLevel.Fatal, group });\r\n\t}\r\n\r\n\tpublic groupEnd(): void {\r\n\t\tconsole.groupEnd();\r\n\t}\r\n\r\n\tprivate log(configuration: {\r\n\t\tlog: any,\r\n\t\tlogLevel: LogLevel,\r\n\t\tgroup: boolean\r\n\t}): void {\r\n\t\tif (this._logLevel === null || this._logLevel === LogLevel.Off || this._logLevel > configuration.logLevel) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (configuration.group) {\r\n\t\t\tconsole.group(configuration.log);\r\n\t\t} else {\r\n\t\t\tconsole.log('%c' + configuration.log, this.logLevelColors[configuration.logLevel]);\r\n\t\t}\r\n\t}\r\n\r\n\tset logLevel(logLevel: LogLevel | null) {\r\n\t\tthis._logLevel = logLevel;\r\n\t}\r\n\r\n\tget logLevel(): LogLevel | null {\r\n\t\treturn this._logLevel;\r\n\t}\r\n}\r\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { LoggerService } from \"./logger.service\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ApiService {\r\n\r\n\thttpClient: HttpClient = inject(HttpClient);\r\n\tloggerService: LoggerService = inject(LoggerService);\r\n\r\n\tprivate _apiBaseUrl: string | null = null;\r\n\r\n\tpublic post<T>(endPoint: (string|number)[], body: any): Observable<any> {\r\n\t\treturn this.httpClient.post<T>(this.generateUrl(endPoint), body);\r\n\t}\r\n\r\n\tpublic get<T>(endPoint: (string|number)[]): Observable<any> {\r\n\t\treturn this.httpClient.get<T>(this.generateUrl(endPoint));\r\n\t}\r\n\r\n\tpublic getFileArrayBuffer(endPoint: (string|number)[]): Observable<ArrayBuffer> {\r\n\t\treturn this.httpClient.get(this.generateUrl(endPoint), {\r\n\t\t\tresponseType: 'arraybuffer'\r\n\t\t});\r\n\t}\r\n\r\n\tpublic getFileText(endPoint: (string|number)[]): Observable<string> {\r\n\t\treturn this.httpClient.get(this.generateUrl(endPoint), {\r\n\t\t\tresponseType: 'text'\r\n\t\t});\r\n\t}\r\n\r\n\tpublic getWithHttpParams<T>(endPoint: (string|number)[], params: HttpParams | null = null): Observable<any> {\r\n\t\tif (params === null) {\r\n\t\t\treturn this.get(endPoint);\r\n\t\t} else {\r\n\t\t\treturn this.httpClient.get<T>(this.generateUrl(endPoint), {\r\n\t\t\t\tparams\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic delete<T>(endPoint: (string|number)[]): Observable<any> {\r\n\t\treturn this.httpClient.delete<T>(this.generateUrl(endPoint));\r\n\t}\r\n\r\n\tpublic patch<T>(endPoint: (string|number)[], body: any): Observable<any> {\r\n\t\treturn this.httpClient.patch<T>(this.generateUrl(endPoint), body);\r\n\t}\r\n\r\n\tpublic head<T>(endPoint: (string|number)[]): Observable<any> {\r\n\t\treturn this.httpClient.head<T>(this.generateUrl(endPoint));\r\n\t}\r\n\r\n\tpublic options<T>(endPoint: (string|number)[]): Observable<any> {\r\n\t\treturn this.httpClient.options<T>(this.generateUrl(endPoint));\r\n\t}\r\n\r\n\tpublic put<T>(endPoint: (string|number)[], body: any): Observable<any> {\r\n\t\treturn this.httpClient.put<T>(this.generateUrl(endPoint), body);\r\n\t}\r\n\r\n\tpublic generateUrl(endPoint: (string|number)[]): string {\r\n\t\tif (this._apiBaseUrl === null) {\r\n\t\t\tthrow new Error('No API base url set in generateUrl call!');\r\n\t\t}\r\n if (endPoint.length === 0) {\r\n return this._apiBaseUrl;\r\n }\r\n\t\tif (typeof endPoint[0] === 'string' && endPoint[0].startsWith('#')) {\r\n endPoint[0] = endPoint[0].slice(1);\r\n\t\t\treturn endPoint.map((v, i) => i === 0 ? v : encodeURIComponent(v)).join('/');\r\n\t\t}\r\n\t\treturn [this._apiBaseUrl, ...endPoint.map((v) => encodeURIComponent(v))].join('/');\r\n\t}\r\n\r\n\tset apiBaseUrl(apiBaseUrl: string) {\r\n\t\tthis.loggerService.info('Api Service base url set to: ' + apiBaseUrl);\r\n\t\tif (apiBaseUrl[apiBaseUrl.length - 1] === '/') {\r\n\t\t\tapiBaseUrl = apiBaseUrl.slice(0, apiBaseUrl.length - 1);\r\n\t\t}\r\n\t\tthis._apiBaseUrl = apiBaseUrl;\r\n\t}\r\n\r\n\tget apiBaseUrl(): string | null {\r\n\t\treturn this._apiBaseUrl;\r\n\t}\r\n}\r\n","import { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\r\nimport { inject, PLATFORM_ID } from \"@angular/core\";\r\n\r\nexport function isBrowser(): boolean {\r\n\tconst platformId: Object = inject(PLATFORM_ID);\r\n\treturn isPlatformBrowser(platformId);\r\n}\r\n\r\nexport function localStorage(): Storage | null {\r\n\tconst document: Document = inject(DOCUMENT);\r\n\tif (document.defaultView !== null) {\r\n\t\treturn document.defaultView.window.localStorage;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\nexport function sessionStorage(): Storage | null {\r\n\tconst document: Document = inject(DOCUMENT);\r\n\tif (document.defaultView !== null) {\r\n\t\treturn document.defaultView.window.sessionStorage;\r\n\t}\r\n\treturn null;\r\n}","import { DOCUMENT } from \"@angular/common\";\r\nimport { Injectable, inject } from \"@angular/core\";\r\nimport { isBrowser } from \"../helpers\";\r\nimport { LoggerService } from \"./logger.service\";\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class CookieService {\r\n\r\n\tbrowser: boolean = isBrowser();\r\n\tdocument: Document = inject(DOCUMENT);\r\n\r\n\tloggerService: LoggerService = inject(LoggerService);\r\n\r\n\t/**\r\n\t * Get the value of a cookie by name, returns `null` if the cookie is not set\r\n\t * \r\n\t * @param name name of the cookie\r\n\t * @returns value of the cookie\r\n\t */\r\n\tget(name: string): string | null {\r\n\t\tif (!this.browser) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst cookies: {[key: string]: string} = this.cookies;\r\n\t\treturn cookies[name] || null;\r\n\t}\r\n\r\n\t/**\r\n\t * Set the value of a cookie with the given name\r\n\t * \r\n\t * @param name name of the cookie\r\n\t * @param value value of the cookie\r\n\t * @param expire expire of the cookie in seconds, if null, it will never expire\r\n\t * @param path path of the cookie, default is '/'\r\n\t * @param config optional configuration values (expire in seconds, path of cookie)\r\n\t */\r\n\tset(name: string, value: string, expire: number | null = null, path: string | null = '/'): void {\r\n\r\n\t\tif (!this.browser) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (path === null) {\r\n\t\t\tpath = '/';\r\n\t\t}\r\n\r\n\t\t// Default cookie informations\r\n\t\tlet cookie: string = `${name}=${value};`;\r\n\r\n\t\t// If we have an expire date, we need to set\r\n\t\tif (expire !== null) {\r\n\t\t\tlet d: Date = new Date();\r\n\t\t\td.setTime(d.getTime() + (expire * 1000));\r\n\t\t\tcookie += `expires=${d.toUTCString()};`;\r\n\t\t}\r\n\r\n\t\t// Set path\r\n\t\tcookie += `path=${path};`;\r\n\r\n\t\t// Log\r\n\t\tthis.loggerService.info('Cookie data to set: ' + cookie);\r\n\r\n\t\t// Set the cookie\r\n\t\tthis.document.cookie = cookie;\r\n\t}\r\n\r\n\t/**\r\n\t * Delete a cookie by its name\r\n\t * \r\n\t * @param name name of the cookie\r\n\t */\r\n\tdelete(name: string): void {\r\n\t\tif (!this.browser) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.set(name, '', -1);\r\n\t}\r\n\r\n\tget cookies(): {[key: string]: string} {\r\n\r\n\t\tif (!this.browser) {\r\n\t\t\treturn {};\r\n\t\t}\r\n\r\n\t\tconst cookies: string = this.document.cookie;\r\n\t\tif (cookies.length === 0) {\r\n\t\t\treturn {};\r\n\t\t}\r\n\t\tconst cookiesArray: string[] = cookies.split(';');\r\n\t\tconst cookiesObject: {[key: string]: string} = {};\r\n\t\tcookiesArray.forEach((cookiesArrayItem: string) => {\r\n\t\t\tconst cookiesArrayItemSplit: string[] = cookiesArrayItem.split('=');\r\n\t\t\tcookiesObject[cookiesArrayItemSplit[0].trim()] = cookiesArrayItemSplit[1];\r\n\t\t})\r\n\t\treturn cookiesObject;\r\n\t}\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { TokenServiceMode } from '../interfaces';\r\nimport { isBrowser, localStorage, sessionStorage } from '../helpers';\r\nimport { CookieService } from './cookie.service';\r\nimport { LoggerService } from './logger.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenService {\r\n\r\n\tcookieService: CookieService = inject(CookieService);\r\n\tloggerService: LoggerService = inject(LoggerService);\r\n\tlocalStorage: Storage | null = localStorage();\r\n\tsessionStorage: Storage | null = sessionStorage();\r\n\tisBrowser: boolean = isBrowser();\r\n\r\n\tcookiePath: string | null = null;\r\n\taccessToken: string | null = null;\r\n\taccessTokenKey = 'acccessToken';\r\n\taccessTokenCookieExpireDays = 30;\r\n\r\n\tpublic write(mode: TokenServiceMode | null): void {\r\n\t\tif (this.accessToken === null) {\r\n\t\t\tthis.loggerService.error('No accessToken set to write!');\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (mode === null) {\r\n\t\t\tthis.loggerService.error('Invalid mode for token write!');\r\n\t\t}\r\n\t\tswitch (mode) {\r\n\t\t\tcase TokenServiceMode.LOCALSTORAGE:\r\n\t\t\t\tif (this.isBrowser && this.localStorage !== null) {\r\n\t\t\t\t\tthis.localStorage.setItem(this.accessTokenKey, this.accessToken);\r\n\t\t\t\t\tthis.loggerService.debug('Token set to local storage: ' + this.accessToken);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.loggerService.error('Trying to set localStorage on not a browser platform!');\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase TokenServiceMode.SESSIONSTORAGE:\r\n\t\t\t\tif (this.isBrowser && this.sessionStorage !== null) {\r\n\t\t\t\t\tthis.sessionStorage.setItem(this.accessTokenKey, this.accessToken);\r\n\t\t\t\t\tthis.loggerService.debug('Token set to session storage: ' + this.accessToken);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.loggerService.error('Trying to set sessionStorage on not a browser platform!');\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase TokenServiceMode.COOKIE:\r\n\t\t\t\tthis.cookieService.set(this.accessTokenKey, this.accessToken, this.accessTokenCookieExpireDays * 24 * 60 * 60, this.cookiePath);\r\n\t\t\t\tthis.loggerService.debug('Token set to cookie: ' + this.accessToken);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t}\r\n\r\n\tpublic read(mode: TokenServiceMode | null): string | null {\r\n\t\tif (mode === null) {\r\n\t\t\tthis.loggerService.error('Invalid mode for token read!');\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tswitch (mode) {\r\n\t\t\tcase TokenServiceMode.LOCALSTORAGE:\r\n\t\t\t\tthis.loggerService.debug('Trying to read token from local storage');\r\n\t\t\t\tif (this.isBrowser && this.localStorage !== null) {\r\n\t\t\t\t\tconst tokenLocalStorage: string | null = this.localStorage.getItem(this.accessTokenKey);\r\n\t\t\t\t\tif (tokenLocalStorage !== null) {\r\n\t\t\t\t\t\tthis.loggerService.debug('Token read from local storage: ' + tokenLocalStorage);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn tokenLocalStorage;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.loggerService.error('Trying to read from localStorage on not a browser platform!');\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\tcase TokenServiceMode.SESSIONSTORAGE:\r\n\t\t\t\tif (this.isBrowser && this.sessionStorage !== null) {\r\n\t\t\t\t\tthis.loggerService.debug('Trying to read token from session storage');\r\n\t\t\t\t\tconst tokenSessionStorage: string | null = this.sessionStorage.getItem(this.accessTokenKey);\r\n\t\t\t\t\tif (tokenSessionStorage !== null) {\r\n\t\t\t\t\t\tthis.loggerService.debug('Token read from session storage: ' + tokenSessionStorage);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn tokenSessionStorage;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.loggerService.error('Trying to read from sessionStorage on not a browser platform!');\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\tcase TokenServiceMode.COOKIE: {\r\n\t\t\t\tthis.loggerService.debug('Trying to read token from session cookie');\r\n\t\t\t\tconst cookieAccessToken: string | null = this.cookieService.get(this.accessTokenKey);\r\n\t\t\t\tif (cookieAccessToken !== null) {\r\n\t\t\t\t\tthis.loggerService.debug('Token read from cookie: ' + cookieAccessToken);\r\n\t\t\t\t}\r\n\t\t\t\treturn cookieAccessToken;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic delete(mode: TokenServiceMode | null): void {\r\n\t\tif (mode === null) {\r\n\t\t\tthis.loggerService.error('Invalid mode for token delete!');\r\n\t\t}\r\n\t\tswitch (mode) {\r\n\t\t\tcase TokenServiceMode.LOCALSTORAGE:\r\n\t\t\t\tif (this.localStorage !== null) {\r\n\t\t\t\t\tthis.loggerService.debug('Token deleted from local storage');\r\n\t\t\t\t\tthis.localStorage.removeItem(this.accessTokenKey);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase TokenServiceMode.SESSIONSTORAGE:\r\n\t\t\t\tif (this.sessionStorage !== null) {\r\n\t\t\t\t\tthis.loggerService.debug('Token deleted from session storage');\r\n\t\t\t\t\tthis.sessionStorage.removeItem(this.accessTokenKey);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase TokenServiceMode.COOKIE: {\r\n\t\t\t\tthis.loggerService.debug('Token deleted from cookie');\r\n\t\t\t\tthis.cookieService.delete(this.accessTokenKey);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.accessToken = null;\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function isBrowser(): boolean;
2
+ export declare function localStorage(): Storage | null;
3
+ export declare function sessionStorage(): Storage | null;
@@ -119,3 +119,8 @@ export declare enum LogLevel {
119
119
  Fatal = 5,
120
120
  Off = 6
121
121
  }
122
+ export declare enum TokenServiceMode {
123
+ LOCALSTORAGE = 0,
124
+ SESSIONSTORAGE = 1,
125
+ COOKIE = 2
126
+ }
@@ -0,0 +1,35 @@
1
+ import { LoggerService } from "./logger.service";
2
+ import * as i0 from "@angular/core";
3
+ export declare class CookieService {
4
+ browser: boolean;
5
+ document: Document;
6
+ loggerService: LoggerService;
7
+ /**
8
+ * Get the value of a cookie by name, returns `null` if the cookie is not set
9
+ *
10
+ * @param name name of the cookie
11
+ * @returns value of the cookie
12
+ */
13
+ get(name: string): string | null;
14
+ /**
15
+ * Set the value of a cookie with the given name
16
+ *
17
+ * @param name name of the cookie
18
+ * @param value value of the cookie
19
+ * @param expire expire of the cookie in seconds, if null, it will never expire
20
+ * @param path path of the cookie, default is '/'
21
+ * @param config optional configuration values (expire in seconds, path of cookie)
22
+ */
23
+ set(name: string, value: string, expire?: number | null, path?: string | null): void;
24
+ /**
25
+ * Delete a cookie by its name
26
+ *
27
+ * @param name name of the cookie
28
+ */
29
+ delete(name: string): void;
30
+ get cookies(): {
31
+ [key: string]: string;
32
+ };
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<CookieService, never>;
34
+ static ɵprov: i0.ɵɵInjectableDeclaration<CookieService>;
35
+ }
@@ -2,3 +2,5 @@ export * from './dialog.service';
2
2
  export * from './message.service';
3
3
  export * from './api.service';
4
4
  export * from './logger.service';
5
+ export * from './cookie.service';
6
+ export * from './token.service';
@@ -0,0 +1,20 @@
1
+ import { TokenServiceMode } from '../interfaces';
2
+ import { CookieService } from './cookie.service';
3
+ import { LoggerService } from './logger.service';
4
+ import * as i0 from "@angular/core";
5
+ export declare class TokenService {
6
+ cookieService: CookieService;
7
+ loggerService: LoggerService;
8
+ localStorage: Storage | null;
9
+ sessionStorage: Storage | null;
10
+ isBrowser: boolean;
11
+ cookiePath: string | null;
12
+ accessToken: string | null;
13
+ accessTokenKey: string;
14
+ accessTokenCookieExpireDays: number;
15
+ write(mode: TokenServiceMode | null): void;
16
+ read(mode: TokenServiceMode | null): string | null;
17
+ delete(mode: TokenServiceMode | null): void;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<TokenService, never>;
19
+ static ɵprov: i0.ɵɵInjectableDeclaration<TokenService>;
20
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codefoxcore",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^16.1.0",
6
6
  "@angular/core": "^16.1.0"