@mosa-ng/core 21.0.4 → 21.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -67,11 +67,17 @@ function getTransformMatrix(element) {
|
|
|
67
67
|
z: transform[2],
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
|
-
function some(item, searchValue, searchKey) {
|
|
70
|
+
function some(item, searchValue, searchKey, compareFn = 'equals') {
|
|
71
71
|
let searchValues = searchValue;
|
|
72
72
|
if (!Array.isArray(searchValue)) {
|
|
73
73
|
searchValues = [searchValue];
|
|
74
74
|
}
|
|
75
|
+
if (typeof compareFn === 'function') {
|
|
76
|
+
return searchValues.some((val) => compareFn(item, val));
|
|
77
|
+
}
|
|
78
|
+
else if (compareFn === 'not-equals') {
|
|
79
|
+
return !searchValues.includes(searchKey ? item[searchKey] : item);
|
|
80
|
+
}
|
|
75
81
|
return searchValues.includes(searchKey ? item[searchKey] : item);
|
|
76
82
|
}
|
|
77
83
|
/**
|
|
@@ -158,10 +164,10 @@ class TranslateCollectorService {
|
|
|
158
164
|
localStorage.setItem(MOSA_MERGED_TRANSLATION(lang), JSON.stringify(merged));
|
|
159
165
|
this.myTranslateService.reloadLang(lang);
|
|
160
166
|
}
|
|
161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
162
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
167
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TranslateCollectorService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
168
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TranslateCollectorService, providedIn: 'root' }); }
|
|
163
169
|
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TranslateCollectorService, decorators: [{
|
|
165
171
|
type: Injectable,
|
|
166
172
|
args: [{
|
|
167
173
|
providedIn: 'root',
|
|
@@ -212,10 +218,10 @@ class AssetsI18nLoaderService {
|
|
|
212
218
|
return of(null);
|
|
213
219
|
}));
|
|
214
220
|
}
|
|
215
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
216
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AssetsI18nLoaderService, deps: [{ token: i1$1.HttpClient }, { token: TranslateCollectorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
222
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AssetsI18nLoaderService, providedIn: 'root' }); }
|
|
217
223
|
}
|
|
218
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: AssetsI18nLoaderService, decorators: [{
|
|
219
225
|
type: Injectable,
|
|
220
226
|
args: [{
|
|
221
227
|
providedIn: 'root',
|
|
@@ -410,10 +416,10 @@ class CoreLoggerService {
|
|
|
410
416
|
}
|
|
411
417
|
return val;
|
|
412
418
|
}
|
|
413
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
414
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
419
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CoreLoggerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
420
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CoreLoggerService, providedIn: 'root' }); }
|
|
415
421
|
}
|
|
416
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
422
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CoreLoggerService, decorators: [{
|
|
417
423
|
type: Injectable,
|
|
418
424
|
args: [{
|
|
419
425
|
providedIn: 'root',
|
|
@@ -615,10 +621,10 @@ class ApiService {
|
|
|
615
621
|
}
|
|
616
622
|
return options;
|
|
617
623
|
}
|
|
618
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
619
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
624
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
625
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ApiService, providedIn: 'root' }); }
|
|
620
626
|
}
|
|
621
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
627
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ApiService, decorators: [{
|
|
622
628
|
type: Injectable,
|
|
623
629
|
args: [{
|
|
624
630
|
providedIn: 'root',
|
|
@@ -656,10 +662,10 @@ class MosaSocketService {
|
|
|
656
662
|
};
|
|
657
663
|
return Subject.create(observer, observable);
|
|
658
664
|
}
|
|
659
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
660
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
665
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MosaSocketService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
666
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MosaSocketService, providedIn: 'root' }); }
|
|
661
667
|
}
|
|
662
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
668
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MosaSocketService, decorators: [{
|
|
663
669
|
type: Injectable,
|
|
664
670
|
args: [{
|
|
665
671
|
providedIn: 'root',
|
|
@@ -679,10 +685,10 @@ class CustomTranslateLoaderService {
|
|
|
679
685
|
const defaultTranslation = localStorage.getItem(MOSA_FALLBACK_TRANSLATION);
|
|
680
686
|
return isNullOrEmpty(defaultTranslation) ? {} : JSON.parse(defaultTranslation);
|
|
681
687
|
}
|
|
682
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
683
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
688
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CustomTranslateLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
689
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CustomTranslateLoaderService, providedIn: 'root' }); }
|
|
684
690
|
}
|
|
685
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
691
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CustomTranslateLoaderService, decorators: [{
|
|
686
692
|
type: Injectable,
|
|
687
693
|
args: [{
|
|
688
694
|
providedIn: 'root',
|
|
@@ -693,10 +699,10 @@ class CanDeactivateGuard {
|
|
|
693
699
|
canDeactivate(component) {
|
|
694
700
|
return component.canDeactivate ? component.canDeactivate() : true;
|
|
695
701
|
}
|
|
696
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
697
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
702
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CanDeactivateGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
703
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CanDeactivateGuard, providedIn: 'root' }); }
|
|
698
704
|
}
|
|
699
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: CanDeactivateGuard, decorators: [{
|
|
700
706
|
type: Injectable,
|
|
701
707
|
args: [{
|
|
702
708
|
providedIn: 'root',
|
|
@@ -1117,54 +1123,54 @@ class DictionaryItemPipe {
|
|
|
1117
1123
|
transform(key, dictionary) {
|
|
1118
1124
|
return dictionary.get(key)?.value;
|
|
1119
1125
|
}
|
|
1120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1121
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
1126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DictionaryItemPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1127
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: DictionaryItemPipe, isStandalone: true, name: "dictionaryItem" }); }
|
|
1122
1128
|
}
|
|
1123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: DictionaryItemPipe, decorators: [{
|
|
1124
1130
|
type: Pipe,
|
|
1125
1131
|
args: [{ name: 'dictionaryItem' }]
|
|
1126
1132
|
}] });
|
|
1127
1133
|
|
|
1128
1134
|
class FilterPipe {
|
|
1129
1135
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1130
|
-
transform(array, searchValue, searchKey) {
|
|
1136
|
+
transform(array, searchValue, searchKey, compareFn = 'equals') {
|
|
1131
1137
|
// Return if array is empty or null
|
|
1132
1138
|
if (!array?.length) {
|
|
1133
1139
|
return [];
|
|
1134
1140
|
}
|
|
1135
|
-
const foundItems = array.filter((v) => some(v, searchValue, searchKey));
|
|
1141
|
+
const foundItems = array.filter((v) => some(v, searchValue, searchKey, compareFn));
|
|
1136
1142
|
if (!foundItems.length) {
|
|
1137
1143
|
return [];
|
|
1138
1144
|
}
|
|
1139
1145
|
// Return whole item
|
|
1140
1146
|
return foundItems;
|
|
1141
1147
|
}
|
|
1142
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1143
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
1148
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1149
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: FilterPipe, isStandalone: true, name: "filter" }); }
|
|
1144
1150
|
}
|
|
1145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FilterPipe, decorators: [{
|
|
1146
1152
|
type: Pipe,
|
|
1147
1153
|
args: [{ name: 'filter' }]
|
|
1148
1154
|
}] });
|
|
1149
1155
|
|
|
1150
1156
|
class FindPipe {
|
|
1151
1157
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1152
|
-
transform(array, searchValue, searchKey) {
|
|
1158
|
+
transform(array, searchValue, searchKey, compareFn = 'equals') {
|
|
1153
1159
|
// Return if array is empty or null
|
|
1154
1160
|
if (!array?.length) {
|
|
1155
1161
|
return null;
|
|
1156
1162
|
}
|
|
1157
|
-
const foundItem = array.find((v) => some(v, searchValue, searchKey));
|
|
1163
|
+
const foundItem = array.find((v) => some(v, searchValue, searchKey, compareFn));
|
|
1158
1164
|
if (!foundItem) {
|
|
1159
1165
|
return null;
|
|
1160
1166
|
}
|
|
1161
1167
|
// Return whole item
|
|
1162
1168
|
return foundItem;
|
|
1163
1169
|
}
|
|
1164
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1165
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
1170
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FindPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1171
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: FindPipe, isStandalone: true, name: "find" }); }
|
|
1166
1172
|
}
|
|
1167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: FindPipe, decorators: [{
|
|
1168
1174
|
type: Pipe,
|
|
1169
1175
|
args: [{ name: 'find' }]
|
|
1170
1176
|
}] });
|
|
@@ -1181,10 +1187,10 @@ class JoinPipe {
|
|
|
1181
1187
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1182
1188
|
return array.map((val) => returnField ? val[returnField] : val).join(separator);
|
|
1183
1189
|
}
|
|
1184
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1185
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
1190
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: JoinPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1191
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: JoinPipe, isStandalone: true, name: "join" }); }
|
|
1186
1192
|
}
|
|
1187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: JoinPipe, decorators: [{
|
|
1188
1194
|
type: Pipe,
|
|
1189
1195
|
args: [{ name: 'join' }]
|
|
1190
1196
|
}] });
|
|
@@ -1291,10 +1297,10 @@ class MosaDatePipe {
|
|
|
1291
1297
|
years: this.myTranslateService.instant('mosa.pipes.timeSince.years'),
|
|
1292
1298
|
};
|
|
1293
1299
|
}
|
|
1294
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1295
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
1300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MosaDatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1301
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: MosaDatePipe, isStandalone: true, name: "mosaDate" }); }
|
|
1296
1302
|
}
|
|
1297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MosaDatePipe, decorators: [{
|
|
1298
1304
|
type: Pipe,
|
|
1299
1305
|
args: [{ name: 'mosaDate' }]
|
|
1300
1306
|
}], ctorParameters: () => [] });
|
|
@@ -1368,10 +1374,10 @@ class MosaDurationPipe {
|
|
|
1368
1374
|
}
|
|
1369
1375
|
return '';
|
|
1370
1376
|
}
|
|
1371
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1372
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.
|
|
1377
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MosaDurationPipe, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1378
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: MosaDurationPipe, isStandalone: true, name: "mosaDuration" }); }
|
|
1373
1379
|
}
|
|
1374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: MosaDurationPipe, decorators: [{
|
|
1375
1381
|
type: Pipe,
|
|
1376
1382
|
args: [{ name: 'mosaDuration' }]
|
|
1377
1383
|
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mosa-ng-core.mjs","sources":["../../../../projects/core/src/lib/utils/commons.util.ts","../../../../projects/core/src/lib/enums/i18n-supported.enum.ts","../../../../projects/core/src/lib/constants/local-storage.constant.ts","../../../../projects/core/src/lib/services/translation/translate-collector.service.ts","../../../../projects/core/src/lib/services/translation/assets-i18n-loader.service.ts","../../../../projects/core/src/lib/services/core-logger.service.ts","../../../../projects/core/src/lib/services/api.service.ts","../../../../projects/core/src/lib/services/mosa-socket.service.ts","../../../../projects/core/src/lib/services/translation/custom-translate-loader.service.ts","../../../../projects/core/src/lib/services/guards/can-deactivate.guard.ts","../../../../projects/core/src/lib/services/guards/authentication.guard.ts","../../../../projects/core/src/lib/services/interceptors/language.interceptor.ts","../../../../projects/core/src/lib/services/interceptors/refresh-token.interceptor.ts","../../../../projects/core/src/lib/utils/dictionary.util.ts","../../../../projects/core/src/lib/utils/prototypes.util.ts","../../../../projects/core/src/lib/utils/sieve.util.ts","../../../../projects/core/src/lib/enums/theme.enum.ts","../../../../projects/core/src/lib/enums/content-position.enum.ts","../../../../projects/core/src/lib/enums/browser.enum.ts","../../../../projects/core/src/lib/pipes/dictionary-item.pipe.ts","../../../../projects/core/src/lib/pipes/filter.pipe.ts","../../../../projects/core/src/lib/pipes/find.pipe.ts","../../../../projects/core/src/lib/pipes/join.pipe.ts","../../../../projects/core/src/lib/pipes/mosa-date.pipe.ts","../../../../projects/core/src/lib/pipes/mosa-duration.pipe.ts","../../../../projects/core/src/lib/provider.ts","../../../../projects/core/src/mosa-ng-core.ts"],"sourcesContent":["import { ITransformMatrix } from '../models/transform-matrix.model';\n\n/**\n * Checks if an object is null or undefined. Does not check for\n * empty strings, or false booleans\n * @param val\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNullOrUndefined(val: any): boolean {\n return val === null || val === undefined;\n}\n\n/**\n * Checks if a string is null or empty\n * @param str\n */\nexport function isNullOrEmpty(str: string | null | undefined): boolean {\n return !str?.trim();\n}\n\n/**\n * Checks if a string or number is zero or higher\n * @param num\n */\nexport function isZeroOrHigher(num: number | string | null | undefined): boolean {\n return num != null && +num >= 0;\n}\n\n/**\n * Checks if an object is a number\n * @param num\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNumber(num: any): boolean {\n return num !== null && !isNaN(+num);\n}\n\n/**\n * Round to nearest number given\n * @param value\n * @param round\n */\nexport function roundNearest(value: number): number {\n return Math.ceil(value / 5) * 5;\n}\n\n/**\n * Merge a two dimensional array\n * @param array\n */\nexport function mergeArray<T>(array: T[][]): T[] {\n return array.reduce((flat: T[], toFlatten: T[] | T[][]): T[] =>\n flat.concat(Array.isArray(toFlatten) ? mergeArray<T>(toFlatten as T[][]) : toFlatten), []);\n}\n\n/**\n * Get CSS Transform matrix from an element\n * @param element\n */\nexport function getTransformMatrix(element: HTMLElement): ITransformMatrix {\n const values = element.style.transform.split(/\\w+\\(|\\);?/);\n const transform = values[ 1 ].split(/,\\s?/g).map((numStr: string): number => parseInt(numStr, 10));\n\n return {\n x: transform[ 0 ],\n y: transform[ 1 ],\n z: transform[ 2 ],\n };\n}\n\nexport function some<T>(item: T, searchValue: T[keyof T] | T[keyof T][], searchKey?: keyof T): boolean {\n let searchValues: T[keyof T][] = searchValue as T[keyof T][];\n if (!Array.isArray(searchValue)) {\n searchValues = [ searchValue ];\n }\n\n return searchValues.includes(searchKey ? item[ searchKey ] : item as T[keyof T]);\n}\n\n/**\n * Generates a random string with numbers and letters\n * @param length\n */\nexport function getRandomString(length: number = 10): string {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result: string = '';\n for (let i: number = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return result;\n}\n\n/**\n * Trys to convert a json string. If it fails it returns [null] or a given fallback of [T]\n */\nexport function tryJsonParse<T>(data: string | undefined | null, fallback?: () => T): T | null {\n try {\n if (!isNullOrEmpty(data)) {\n return JSON.parse(data!);\n }\n } catch {\n // Ignore - go on with fallback check\n }\n\n if (fallback) {\n return fallback();\n }\n return null;\n}\n","export enum I18nSupported {\n enUS = 'en-US',\n deDE = 'de-DE',\n deCH = 'de-CH',\n deAT = 'de-AT',\n enGB = 'en-GB',\n frFR = 'fr-FR',\n esES = 'es-ES',\n ptPT = 'pt-PT',\n}\n","import { I18nSupported } from '../enums/i18n-supported.enum';\n\nexport const MOSA_MERGED_TRANSLATION = (lang: string): string => `mosa_${ lang }_merged_${ location.host }`;\nexport const MOSA_FALLBACK_TRANSLATION = `mosa_${ I18nSupported.enUS }_merged_${ location.host }`;\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MOSA_MERGED_TRANSLATION } from '../../constants/local-storage.constant';\nimport { IKeyMap } from '../../models/key-map.model';\nimport { isNullOrUndefined } from '../../utils/commons.util';\n\nexport interface ITranslationMap {\n priority: number;\n translation: IKeyMap<string>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslateCollectorService {\n\n private translationMap: IKeyMap<ITranslationMap[]> = {};\n\n constructor(private readonly myTranslateService: TranslateService) {\n }\n\n public addTranslations(translation: Record<string, string>, lang: string, priority: number): void {\n if (isNullOrUndefined(this.translationMap[ lang ])) {\n this.translationMap[ lang ] = [];\n }\n\n this.translationMap[ lang ].push({ priority, translation });\n this.translationMap[ lang ].sort((a: ITranslationMap, b: ITranslationMap) => a.priority - b.priority);\n const merged: IKeyMap<string> = JSON.parse(localStorage.getItem(MOSA_MERGED_TRANSLATION(lang))|| '{}');\n\n for (const translationsData of this.translationMap[ lang ]) {\n const translations: IKeyMap<string> = translationsData.translation;\n if (translations != null) {\n Object.keys(translations).forEach((key: string) => void (merged[ key ] = translations[ key ]));\n }\n }\n\n let trans: boolean = true;\n let count: number = 0;\n while (trans) {\n count++;\n trans = false;\n if (count >= 10) {\n console.warn('Limit reached! Please check translation file! Last replaced values:');\n }\n Object.keys(merged).forEach((key: string) => {\n if (merged[ key ].startsWith('@:')) {\n merged[ key ] = merged[ merged[ key ].substring(2, merged[ key ].length) ];\n trans = count < 10;\n if (count > 10) {\n console.warn(merged[ key ]);\n }\n }\n });\n }\n localStorage.setItem(MOSA_MERGED_TRANSLATION(lang), JSON.stringify(merged));\n this.myTranslateService.reloadLang(lang);\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { getRandomString } from '../../utils/commons.util';\nimport { TranslateCollectorService } from './translate-collector.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AssetsI18nLoaderService {\n\n protected priority: number = 0;\n protected supportedLanguages: string[] = [];\n\n private supportedLanguagesPromise: Promise<string[]> | null = null;\n\n constructor(\n protected myHttpClient: HttpClient,\n protected myTranslateCollectorService: TranslateCollectorService,\n ) {\n }\n\n public async init(path?: string, libName?: string, priority?: number): Promise<void> {\n const languages: string[] = await this.getSupportedLanguages();\n\n for (const lang of languages) {\n await firstValueFrom(this.loadTranslations(lang, path, libName, priority));\n }\n }\n\n private async getSupportedLanguages(): Promise<string[]> {\n // If we already have the data, return it immediately\n if (this.supportedLanguages.length > 0) {\n return this.supportedLanguages;\n }\n\n // If a request is already in flight, return that same promise\n if (this.supportedLanguagesPromise) {\n return this.supportedLanguagesPromise;\n }\n\n // Create the promise for the HTTP call\n this.supportedLanguagesPromise = (async (): Promise<string[]> => {\n const url = `assets/i18n/supported-languages.json?v=${getRandomString()}`;\n const res = await firstValueFrom(\n this.myHttpClient.get<{ languages: string[] }>(url)\n ).catch(() => null);\n\n if (!res?.languages) {\n this.supportedLanguagesPromise = null;\n return [];\n }\n\n this.supportedLanguages = res.languages;\n return res.languages;\n })();\n\n return this.supportedLanguagesPromise;\n }\n\n private loadTranslations(lang: string, path?: string, libName?: string, priority?: number): Observable<Record<string, string> | null> {\n const filename: string = libName ? `${libName}-${lang}.json` : `${lang}.json`;\n return this.myHttpClient.get<Record<string, string>>(`${(path || './assets/i18n/') + filename}?v=${getRandomString()}`)\n .pipe(\n tap((response: Record<string, string>) =>\n this.myTranslateCollectorService.addTranslations(response, lang, priority || this.priority)),\n catchError(() => {\n console.error(`Missing file -> ${filename}`);\n return of(null);\n }),\n );\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ILogEvent } from '../models/logger/log-event.model';\nimport { LogType } from '../models/logger/log-type.model';\nimport { ILoggerConfig } from '../models/logger/logger-config.model';\nimport { ILoggerDefaultConfig } from '../models/logger/logger-default-config.model';\nimport { isNullOrUndefined } from '../utils/commons.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLoggerService {\n\n public defaultConfig: ILoggerDefaultConfig | undefined;\n\n private readonly uiLogs$: BehaviorSubject<ILogEvent | null> = new BehaviorSubject<ILogEvent | null>(null);\n\n /**\n * Default constructor\n */\n constructor() {\n }\n\n public subUiLogs(): Observable<ILogEvent | null> {\n return this.uiLogs$.asObservable();\n }\n\n /**\n * Gets the error message from any type of object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async getErrorMsg(err: any): Promise<string> {\n let msg: string = 'Unknown Error';\n\n if (!err) {\n return msg;\n }\n\n if (typeof err === 'string') {\n msg = err;\n } else if (err.msg) {\n msg = err.msg;\n } else if (err.error?.msg) {\n msg = err.error.msg;\n } else if (err.error?.message) {\n msg = err.error.message;\n } else if (err.error?.errors?.[ 0 ]?.message) {\n msg = err.error.errors[ 0 ].message;\n } else if (err.message) {\n msg = err.message;\n } else if (err.Message) {\n msg = err.Message;\n }\n\n if (err.error instanceof Blob) {\n // Convert the Blob back to a string\n const text: string = await (err.error as Blob).text();\n const errorBody = JSON.parse(text);\n return errorBody.message;\n }\n\n if (typeof err.error === 'string') {\n msg = err.error;\n }\n\n if (!msg && err instanceof HttpErrorResponse) {\n if (typeof err.error !== 'string') {\n return `mosa.commons.errors.status[${err.status}].message`;\n }\n\n return err.error;\n }\n\n return msg;\n }\n\n /**\n * Get the title to be shown in logger toast\n * @param err\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getErrorTitle(err: any): string {\n let title: string = 'mosa.commons.logs.error.label';\n if (err?.label) {\n title = err.label;\n } else if (err?.title) {\n title = err.title;\n } else if (err?.error?.label) {\n title = err.error.label;\n } else if (err?.error?.title) {\n title = err.error.title;\n }\n return title;\n }\n\n /**\n * Logs an error to the user\n * @param data\n * @param showUser\n * @param config\n */\n public async logError(config: ILoggerConfig): Promise<void> {\n config = this.serializeConfig(config);\n config.msg = await this.getErrorMsg(config.msg);\n\n if (!config.title) {\n config.title = this.getErrorTitle(config.msg);\n }\n\n config.className = 'snackbar-error';\n\n this.show(config, 'error');\n }\n\n /**\n * Logs a success message to the user\n * @param data\n * @param config\n */\n public logSuccess(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-success';\n\n this.show(config, 'success');\n }\n\n /**\n * Logs a warning to the user\n * @param data\n * @param showUser\n * @param config\n */\n public logWarning(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-warning';\n\n this.show(config, 'warning');\n }\n\n /**\n * Logs an info to the user\n * @param data\n * @param config\n */\n public logInfo(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-info';\n\n this.show(config, 'info');\n }\n\n /**\n * Logs any kind of message to the user\n * @param data\n * @param config\n */\n public log(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-default';\n\n this.show(config, 'default');\n }\n\n /**\n * Show the log\n * @requires @mosa-ng/material\n * @param data\n * @param type\n * @param config\n */\n public show(config: ILoggerConfig, type: LogType): void {\n this.uiLogs$.next({ title: config.title, msg: config.msg, type, config });\n }\n\n /**\n * Serializes empty values, so no error is being returned\n * @param config\n * @private\n */\n private serializeConfig(config: ILoggerConfig | undefined): ILoggerConfig {\n // Check if user has default config\n if (!this.defaultConfig) {\n this.defaultConfig = {\n debug: true,\n };\n }\n\n if (!config) {\n // Get user default config\n config = {\n showDismiss: this.defaultConfig.showDismiss,\n closeOnClick: isNullOrUndefined(this.defaultConfig.closeOnClick) ? true : this.defaultConfig.closeOnClick,\n className: this.defaultConfig.className,\n duration: this.defaultConfig.duration || 4,\n };\n }\n\n // Serialize configuration\n config.duration = CoreLoggerService.getValue<number>(config.duration!, this.defaultConfig.duration!, 4);\n config.className = CoreLoggerService.getValue<string>(config.className!, this.defaultConfig.className!, '');\n config.showDismiss = CoreLoggerService.getValue<boolean>(config.showDismiss!, this.defaultConfig.showDismiss!, false);\n config.closeOnClick = CoreLoggerService.getValue<boolean>(config.closeOnClick!, this.defaultConfig.closeOnClick!, true);\n\n return config;\n }\n\n /**\n * Gets a value which is not undefined or null\n * @param val\n * @param val1\n * @param def\n * @private\n */\n private static getValue<T>(val: T, val1: T, def: T): T {\n if (isNullOrUndefined(val)) {\n if (isNullOrUndefined(val1)) {\n return def;\n }\n return val1;\n }\n return val;\n }\n\n}\n","import { HttpClient, HttpErrorResponse, HttpEvent, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, throwError } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { IApiOptions } from '../models/api-options.model';\nimport { ITokenSettings } from '../models/token-settings.model';\nimport { CoreLoggerService } from './core-logger.service';\nimport { isNullOrEmpty } from '../utils/commons.util';\nimport { IApiResult } from '../models/api-result.model';\n\nexport const LOCAL_STORAGE_TOKEN_KEY = 'tokenSettings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n\n private refreshTokenUrl: string = '/api/auth/token/refresh';\n\n private readonly myCoreLoggerService: CoreLoggerService = inject(CoreLoggerService);\n private readonly myHttpClient: HttpClient = inject(HttpClient);\n\n /**\n * Sets the token\n * @param tokenSettings\n */\n public setToken(tokenSettings: ITokenSettings): void {\n window.localStorage.setItem(LOCAL_STORAGE_TOKEN_KEY, JSON.stringify(tokenSettings));\n }\n\n /**\n * Gets token\n */\n public getToken(): ITokenSettings | null {\n const tokenSettings: string | null = window.localStorage.getItem(LOCAL_STORAGE_TOKEN_KEY);\n if (isNullOrEmpty(tokenSettings)) {\n return null;\n }\n\n return JSON.parse(tokenSettings!);\n }\n\n /**\n * Deletes token\n */\n public deleteToken(): void {\n window.localStorage.removeItem(LOCAL_STORAGE_TOKEN_KEY);\n }\n\n public setRefreshTokenUrl(url: string): void {\n this.refreshTokenUrl = url;\n }\n\n public getRefreshTokenUrl(): string {\n return this.refreshTokenUrl;\n }\n\n public refreshToken<T>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<IApiResult<ITokenSettings>> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.post<IApiResult<ITokenSettings>>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<IApiResult<ITokenSettings>>) => this.handleResponse(response)),\n tap((res: IApiResult<ITokenSettings>) => this.setToken({ ...this.getToken()!, ...res.data })),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http get call\n * @param url\n * @param headers\n * @param options\n */\n public get<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.get<T>(url, { ...options.httpOptions as any, headers })\n .pipe(\n // switchMap(() => ,\n map((response: HttpEvent<T>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an async http get call, which also includes the response headers\n * @param url\n * @param headers\n * @param options\n */\n public async getWithHeadersAsync<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Promise<HttpEvent<T>> {\n return firstValueFrom(this.getWithHeaders<T>(url, headers, options));\n }\n\n /**\n * Makes an http get call, which also includes the response headers\n * @param url\n * @param headers\n * @param options\n */\n public getWithHeaders<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<HttpEvent<T>> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.get<T>(url, { ...options.httpOptions as any, headers, observe: 'response' })\n .pipe(\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http patch call (For partial updates)\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public patch<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.patch<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http put call\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public put<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.put<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http post call\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public post<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.post<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * makes an http delete call\n * @param url\n * @param headers\n * @param options\n * @returns Observable\n */\n public delete<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n return this.myHttpClient.delete<T>(url, { ...options.httpOptions as {}, headers })\n .pipe(\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Appends a script to the html body\n * @param path\n * @param attributes\n * @param onLoad\n */\n public loadExternalScript(path: string, attributes?: { key: string, value: string }[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLoad?: ((this: GlobalEventHandlers, ev: Event) => any)): void {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = path;\n script.async = true;\n\n if (onLoad) {\n script.onload = onLoad;\n }\n\n if (attributes) {\n for (const attribute of attributes) {\n script.setAttribute(attribute.key, attribute.value);\n }\n }\n\n document.body.append(script);\n }\n\n private handleError(err: HttpErrorResponse, options: IApiOptions): Observable<never> {\n if (!options?.skipErrorHandling) {\n void this.myCoreLoggerService.logError({ msg: err });\n }\n\n return throwError(() => err);\n }\n\n private handleResponse<T>(response: HttpEvent<T>): T {\n if (response instanceof HttpResponse) {\n return response.body as T;\n }\n return response as T;\n }\n\n private getHeaders(headers?: HttpHeaders, options?: IApiOptions): HttpHeaders {\n if (!headers) {\n headers = new HttpHeaders();\n }\n\n if (!options?.skipContentType) {\n if (!headers.get('Content-Type')) {\n headers = headers.set('Content-Type', 'application/json');\n }\n }\n\n const tokenSettings: ITokenSettings | null = this.getToken();\n if (!options?.skipAuth && tokenSettings) {\n headers = headers.set('Authorization', `${tokenSettings.tokenType} ${tokenSettings.accessToken}`);\n }\n return headers;\n }\n\n private static serializeOptions(options?: IApiOptions): IApiOptions {\n if (!options) {\n options = {};\n }\n\n if (!options.httpOptions) {\n options.httpOptions = {};\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MosaSocketService {\n\n private subject: Subject<MessageEvent> | undefined;\n\n constructor() {\n }\n\n public connect(url: string): Subject<MessageEvent> {\n if (!this.subject) {\n this.subject = this.create(url);\n }\n return this.subject;\n }\n\n public send(data: MessageEvent): void {\n this.subject?.next(data);\n }\n\n private create(url: string): Subject<MessageEvent> {\n const ws = new WebSocket(url);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const observable = new Observable((obs: Observer<MessageEvent>): any => {\n ws.onmessage = obs.next.bind(obs);\n ws.onerror = obs.error.bind(obs);\n ws.onclose = obs.complete.bind(obs);\n return ws.close.bind(ws);\n });\n const observer = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n next: (data: any): void => {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(data));\n }\n },\n };\n return Subject.create(observer, observable);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { MOSA_FALLBACK_TRANSLATION, MOSA_MERGED_TRANSLATION } from '../../constants/local-storage.constant';\nimport { IKeyMap } from '../../models/key-map.model';\nimport { isNullOrEmpty, tryJsonParse } from '../../utils/commons.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomTranslateLoaderService {\n\n public getTranslation(lang: string): Observable<IKeyMap<string> | null> {\n return new Observable<IKeyMap<string> | null>((observer: Observer<IKeyMap<string> | null>) => {\n const item: string | null = localStorage.getItem(MOSA_MERGED_TRANSLATION(lang));\n const responseObj: IKeyMap<string> | null = tryJsonParse(item, () => this.loadFallbackLanguage());\n\n observer.next(responseObj);\n observer.complete();\n });\n }\n\n private loadFallbackLanguage(): IKeyMap<string> {\n const defaultTranslation: string | null = localStorage.getItem(MOSA_FALLBACK_TRANSLATION);\n return isNullOrEmpty(defaultTranslation) ? {} : JSON.parse(defaultTranslation!);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport interface ICanComponentDeactivate {\n canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CanDeactivateGuard implements CanDeactivate<ICanComponentDeactivate> {\n\n public canDeactivate(component: ICanComponentDeactivate): boolean {\n return component.canDeactivate ? component.canDeactivate() as boolean : true;\n }\n\n}\n","import { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { ApiService } from '../api.service';\n\nexport const authenticationGuard: CanActivateFn = (_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\n const apiService: ApiService = inject(ApiService);\n if (!apiService.getToken()) {\n return false;\n }\n\n return true;\n};\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport const languageInterceptor: HttpInterceptorFn = (req, next) => {\n const translate: TranslateService = inject(TranslateService);\n const lang: string = translate.getCurrentLang() || 'en-US';\n\n // Clone the request to add the Accept-Language header\n const authReq = req.clone({\n setHeaders: {\n 'Accept-Language': lang\n }\n });\n\n return next(authReq);\n};\n","import { HttpErrorResponse, HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { mergeMap, Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { inject } from '@angular/core';\nimport { ApiService } from '../api.service';\nimport { ITokenSettings } from '../../models/token-settings.model';\n\nexport function refreshTokenInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\n const apiService = inject(ApiService);\n\n return next(req).pipe(\n catchError((err: unknown) => {\n if (err instanceof HttpErrorResponse && err?.status === 401) {\n return apiService.refreshToken(apiService.getRefreshTokenUrl(), apiService.getToken())\n .pipe(mergeMap(() => next(updateHeader(req, apiService))));\n }\n return throwError(() => err);\n }),\n );\n}\n\nfunction updateHeader(req: HttpRequest<unknown>, apiService: ApiService): HttpRequest<unknown> {\n const authToken: ITokenSettings | null = apiService.getToken();\n req = req.clone({\n headers: req.headers.set('Authorization', `${authToken?.tokenType} ${authToken?.accessToken}`),\n });\n return req;\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IDictionaryItem } from '../models/dictionary-item.model';\nimport { IKeyMap } from '../models/key-map.model';\n\nexport class Dictionary<Key, Value> {\n\n private readonly dictionaryItems$: BehaviorSubject<IDictionaryItem<Key, Value>[]>;\n\n /**\n * Default constructor.\n * @param data Requires an array of IDictionaryItem with a key and a value\n */\n constructor(...data: IDictionaryItem<Key, Value>[]) {\n this.dictionaryItems$ = new BehaviorSubject<IDictionaryItem<Key, Value>[]>(data);\n }\n\n /**\n * Observable to subscribe to dictionary changes\n */\n public valueChanges(): Observable<IDictionaryItem<Key, Value>[]> {\n return this.dictionaryItems$.asObservable();\n }\n\n /**\n * Observable to subscribe to dictionary as object changes\n */\n public objectArray(): Observable<IKeyMap<Value>> {\n return this.dictionaryItems$.asObservable()\n .pipe(\n map((items: IDictionaryItem<Key, Value>[]): IKeyMap<Value> => this.toObject(items)),\n );\n }\n\n /**\n * Gets the items of the dictionary\n * @returns dictionary items\n */\n public get items(): IDictionaryItem<Key, Value>[] {\n return this.dictionaryItems$.value;\n }\n\n /**\n * Gets a dictionary item by key\n * @param key\n * @returns single dictionary item\n */\n public get(key: Key): IDictionaryItem<Key, Value> | undefined {\n return this.dictionaryItems$.value.find((item: IDictionaryItem<Key, Value>): boolean => item.key === key);\n }\n\n /**\n * Checks if dictionary contains item\n * @param key\n */\n public contains(key: Key): boolean {\n return this.get(key) != null;\n }\n\n /**\n * Adds a dictionary item\n * @param key\n * @param value\n */\n public add(key: Key, value: Value): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n dictionaryItems.push({ key, value });\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Updates a dictionary item\n * @param data\n * @param index\n */\n public update(data: IDictionaryItem<Key, Value>, index?: number): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n if (!index) {\n index = this.getIndex(data.key);\n }\n\n if (index !== -1) {\n dictionaryItems[ index ] = data;\n } else {\n console.warn('Dictionary: Index not found');\n }\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Gets an index with a specific key\n * @param key\n */\n public getIndex(key: Key): number {\n return this.dictionaryItems$.value.findIndex((val: IDictionaryItem<Key, Value>): boolean => val.key === key);\n }\n\n /**\n * Removes an item from the dictionary\n * @param value\n * @param index\n */\n public remove(value: Key, index?: number): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n if (!index) {\n index = this.getIndex(value);\n }\n\n if (index !== -1) {\n dictionaryItems.splice(index, 1);\n } else {\n console.warn('Dictionary: Index not found');\n }\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Private function to cast array to an object\n * @param items\n * @private\n */\n private toObject(items: IDictionaryItem<Key, Value>[]): IKeyMap<Value> {\n const obj: IKeyMap<Value> = {};\n for (const item of items) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj[ item.key as any ] = item.value;\n }\n return obj;\n }\n\n /**\n * Private function to update dictionary items\n * @param items\n * @private\n */\n private updateItems(items: IDictionaryItem<Key, Value>[]): void {\n this.dictionaryItems$.next(items);\n }\n\n}\n","/**\n * Cast any type\n * @param data to be casted\n * @returns casted data\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any,max-classes-per-file\nexport function cast<T>(data: any): T {\n return data as T;\n}\n\nexport class StringExtensions implements IStringExtensions {\n public getPart(maxChars: number, appendDot?: boolean): string {\n let newStr = cast<string>(this).replace(/\\\\n/g, ' ');\n if (newStr.length > maxChars) {\n newStr = newStr.substring(0, maxChars);\n if (appendDot && newStr.length > maxChars - 3) {\n newStr += '...';\n }\n }\n return newStr;\n }\n\n public fromJSON<T>(): T | null {\n let str: string = cast<string>(this);\n if (typeof this !== 'string') {\n str = JSON.stringify(str);\n }\n\n try {\n str = JSON.parse(str);\n } catch {\n return null;\n }\n\n if (typeof str === 'object') {\n return str as T;\n }\n\n return null;\n }\n\n public toCSSClass(): string {\n return cast<string>(this)?.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase();\n }\n\n public toUTC(): string {\n return `${cast<string>(this)}Z`;\n }\n}\n\nexport class ArrayExtensions implements IArrayExtensions {\n public hasChanges<T>(data: T[]): boolean {\n return JSON.stringify(this) !== JSON.stringify(data);\n }\n\n public replaceRange<T>(data: T[], start: number, end: number): T[] {\n const array: T[] = cast<T[]>(this);\n let replaceDataIndex: number = 0;\n for (let i: number = start; i < end; i++) {\n if (!array[ i ] && !data[ replaceDataIndex ]) {\n array.splice(i, 1);\n continue;\n }\n\n array[ i ] = data[ replaceDataIndex ];\n replaceDataIndex++;\n }\n return array;\n }\n}\n\nexport class NumberExtensions implements INumberExtensions {\n public between(start: number, end: number): boolean {\n const num: number = cast<number>(this);\n return num >= start && num <= end;\n }\n}\n\n/**\n * @interface StringExtensions\n */\nexport interface IStringExtensions {\n /**\n * Gets a part of a string\n * @param maxChars maximum amount of chars\n * @param appendDot append three dots at the end\n * @returns splitted string\n */\n getPart(maxChars: number, appendDot?: boolean): string;\n\n /**\n * Converts a string from json\n * @returns object of expected type\n */\n fromJSON<T>(): T | null;\n\n /**\n * Converts a string to a css class\n * @returns converted kebab case css class\n */\n toCSSClass(): string;\n\n /**\n * Converts a datetime string to utc format\n */\n toUTC(): string;\n}\n\nexport interface IArrayExtensions {\n /**\n * Checks if array has changes\n * @param data array passed\n * @deprecated learn how to program\n */\n hasChanges: <T>(data: T[]) => boolean;\n /**\n * Replaces a specific element range in an array\n * @param data\n */\n replaceRange: <T>(replaceData: T[], start: number, end: number) => T[];\n}\n\nexport interface INumberExtensions {\n /**\n * checks if a number in a range\n * @param start of range\n * @param end of range\n */\n between(start: number, end: number): boolean;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention,id-blacklist,@typescript-eslint/no-empty-object-type\n interface String extends IStringExtensions {\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-empty-object-type,@typescript-eslint/no-unused-vars\n interface Array<T> extends IArrayExtensions {\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention,id-blacklist,@typescript-eslint/no-empty-object-type\n interface Number extends INumberExtensions {\n }\n}\n\nexport class Prototypes {\n\n /**\n * Initialize prototypes\n */\n public static init(): void {\n const stringExtensions = new StringExtensions();\n const arrayExtensions = new ArrayExtensions();\n const numberExtensions = new NumberExtensions();\n\n String.prototype.getPart = stringExtensions.getPart;\n String.prototype.fromJSON = stringExtensions.fromJSON;\n String.prototype.toCSSClass = stringExtensions.toCSSClass;\n String.prototype.toUTC = stringExtensions.toUTC;\n\n Array.prototype.hasChanges = arrayExtensions.hasChanges;\n Array.prototype.replaceRange = arrayExtensions.replaceRange;\n\n Number.prototype.between = numberExtensions.between;\n }\n}\n","import { ISieveFilter } from '../models/sieve/sieve-filter.model';\nimport { SieveOperator } from '../models/sieve/sieve-operator.model';\nimport { ISieveOptions } from '../models/sieve/sieve-options.model';\nimport { ISieveSort } from '../models/sieve/sieve-sort.model';\n\nexport class Sieve {\n\n private readonly options: ISieveOptions;\n\n constructor(options: ISieveOptions) {\n this.options = options;\n this.options.baseUrl = options.baseUrl || '';\n this.options.filters = options.filters || [];\n this.options.sorts = options.sorts || [];\n }\n\n /**\n * public getter to get page size\n */\n public get pageSize(): number {\n return this.options.pageSize || 10;\n }\n\n /**\n * Setter to set page size\n */\n public set pageSize(pageSize: number) {\n this.options.pageSize = pageSize;\n }\n\n /**\n * public getter to get page\n */\n public get page(): number {\n return this.options.page || 0;\n }\n\n /**\n * Setter to set page\n */\n public set page(page: number) {\n this.options.page = page;\n }\n\n /**\n * public getter to get filters\n */\n public get filters(): ISieveFilter[] | undefined {\n return this.options.filters;\n }\n\n /**\n * Setter to set filters\n */\n public set filters(filters: ISieveFilter[]) {\n this.options.filters = filters;\n }\n\n /**\n * public getter to get sorts\n */\n public get sorts(): ISieveSort[] | undefined {\n return this.options.sorts;\n }\n\n /**\n * Setter to set sorts\n */\n public set sorts(sorts: ISieveSort[]) {\n this.options.sorts = sorts;\n }\n\n /**\n * method to add a sort option\n * @param name of the item to sort\n * @param desc sort descending\n */\n public addSort(name: string, desc?: boolean): void {\n this.options.sorts?.push({\n name,\n desc,\n });\n }\n\n /**\n * method to add a filter option\n * @param key of the item\n * @param operator { SieveOperator }\n * @param value filtered value\n */\n public addFilter(key: string, operator: SieveOperator, value: string): void {\n this.options.filters?.push({\n key,\n operator,\n value,\n });\n }\n\n /**\n * Getter for base url\n */\n public get baseUrl(): string | undefined {\n return this.options.baseUrl;\n }\n\n /**\n * Setter for base url\n * @param url\n */\n public set baseUrl(url: string) {\n this.options.baseUrl = url;\n }\n\n /**\n * Convert to queried string\n */\n public getUrl(): string {\n return `${ this.options.baseUrl }${ this.toQuery() }`;\n }\n\n /**\n * to Query\n * @private converts options to actual query\n */\n private toQuery(): string {\n let query = '?';\n\n if (this.page) {\n query += `page=${ this.page }`;\n }\n\n if (this.pageSize) {\n query += `&pageSize=${ this.pageSize }`;\n }\n\n if (this.filters?.length) {\n let filterQuery: string = '&filters=';\n\n for (const filter of this.filters) {\n if (filter.value) {\n filterQuery += `${ filter.key }${ filter.operator }${ filter.value },`;\n }\n }\n\n if (filterQuery !== '&filters=') {\n filterQuery = filterQuery.slice(0, -1);\n query += filterQuery;\n }\n }\n\n if (this.sorts?.length) {\n let sortQuery: string = '&sorts=';\n\n for (const sort of this.sorts) {\n sortQuery += `${ sort.desc ? '-' : '+' }${ sort.name },`;\n }\n\n sortQuery = sortQuery.slice(0, -1);\n query += sortQuery;\n }\n\n if (query.startsWith('&')) {\n query = query.slice(1);\n }\n\n return query;\n }\n\n}\n","export enum Theme {\n light,\n dark,\n}\n","export enum ContentPosition {\n top = 'top',\n topLeft = 'top-left',\n topRight = 'top-right',\n bottom = 'bottom',\n bottomLeft = 'bottom-left',\n bottomRight = 'bottom-right',\n center = 'center',\n centerLeft = 'center-left',\n centerRight = 'center-right',\n}\n","export enum Browser {\n chrome,\n firefox,\n internetExplorer,\n opera,\n edge,\n safari,\n other,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Dictionary } from '../utils/dictionary.util';\n\n@Pipe({ name: 'dictionaryItem' })\nexport class DictionaryItemPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(key: any, dictionary: Dictionary<any, any>): string {\n return dictionary.get(key)?.value;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { some } from '../utils/commons.util';\n\n@Pipe({ name: 'filter' })\nexport class FilterPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T[] {\n // Return if array is empty or null\n if (!array?.length) {\n return [];\n }\n\n const foundItems: T[] = array.filter((v: T): boolean => some(v, searchValue, searchKey));\n if (!foundItems.length) {\n return [];\n }\n\n // Return whole item\n return foundItems;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { some } from '../utils/commons.util';\n\n@Pipe({ name: 'find' })\nexport class FindPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T | null {\n // Return if array is empty or null\n if (!array?.length) {\n return null;\n }\n\n const foundItem: T | undefined = array.find((v: T): boolean => some(v, searchValue, searchKey));\n if (!foundItem) {\n return null;\n }\n\n // Return whole item\n return foundItem;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'join' })\nexport class JoinPipe implements PipeTransform {\n\n /**\n * Join array by separator\n * @param array\n * @param returnField\n * @param separator\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(array: any[], returnField: any, separator: string = ', '): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return array.map((val: any): string => returnField ? val[ returnField ] : val).join(separator);\n }\n\n}\n","import { DatePipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Pipe({ name: 'mosaDate' })\nexport class MosaDatePipe implements PipeTransform {\n\n private readonly store$: BehaviorSubject<number> = new BehaviorSubject<number>(new Date().getTime());\n\n private templates: Record<string, string> = {};\n\n private readonly myTranslateService: TranslateService = inject(TranslateService);\n private readonly myDatePipe: DatePipe = inject(DatePipe);\n\n constructor() {\n this.updateTemplates();\n setInterval((): void => this.store$.next(new Date().getTime()), 10);\n this.myTranslateService.onLangChange.subscribe((): void => {\n this.updateTemplates();\n this.store$.next(new Date().getTime());\n });\n }\n\n public transform(date: string | Date | undefined, mode: 'full' | 'timeSince' | 'date' = 'timeSince', options?: { withPrefix?: boolean, withSuffix?: boolean }): Observable<string> {\n return this.store$.pipe(map((currentDate: number): string => this.calcDate(currentDate, date, mode, options)));\n }\n\n private calcDate(currentTimestamp: number, date: string | Date | undefined, mode: 'full' | 'timeSince' | 'date', options?: { withPrefix?: boolean, withSuffix?: boolean }): string {\n if (!date) {\n return '';\n }\n\n let parsed: Date;\n if (date instanceof Date) {\n parsed = new Date(date.toString());\n } else {\n parsed = new Date(date);\n }\n\n if (!currentTimestamp) {\n currentTimestamp = new Date().getTime();\n }\n const currentDate = new Date(currentTimestamp);\n const parsedTimestamp: number = parsed.getTime();\n\n const convertedDate: string | null = this.myDatePipe.transform(parsed, 'dd. MMM. yyyy hh:mm aaa');\n if (mode === 'full' || mode === 'timeSince') {\n const seconds: number = Math.abs(((currentTimestamp - parsedTimestamp) * .001) >> 0);\n const minutes: number = seconds / 60;\n const hours: number = minutes / 60;\n const days: number = hours / 24;\n const years: number = days / 365;\n\n const yearDifference = (currentDate.getFullYear() - parsed.getFullYear()) * 12;\n const monthDifference = currentDate.getMonth() - parsed.getMonth();\n\n let timeSince: string = '';\n if (parsedTimestamp > currentTimestamp) {\n timeSince = (options?.withPrefix ? this.templates[ 'prefixFuture' ] : '') + (\n seconds > 0 && seconds < 2 && this.template('second', 1) ||\n seconds < 60 && this.template('seconds', seconds) ||\n seconds < 120 && this.template('minute', 1) ||\n minutes < 60 && this.template('minutes', minutes) ||\n minutes < 120 && this.template('hour', 1) ||\n hours < 24 && this.template('hours', hours) ||\n hours < 42 && this.template('day', 1) ||\n days < 30 && this.template('days', days) ||\n days < 45 && this.template('month', 1) ||\n days < 365 && this.template('months', yearDifference + monthDifference) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffixFuture' ] : '');\n } else {\n timeSince = (options?.withPrefix ? this.templates[ 'prefixPast' ] : '') + (\n seconds > 0 && seconds < 2 && this.template('second', 1) ||\n seconds < 60 && this.template('seconds', seconds) ||\n seconds < 120 && this.template('minute', 1) ||\n minutes < 60 && this.template('minutes', minutes) ||\n minutes < 120 && this.template('hour', 1) ||\n hours < 24 && this.template('hours', hours) ||\n hours < 42 && this.template('day', 1) ||\n days < 30 && this.template('days', days) ||\n days < 45 && this.template('month', 1) ||\n days < 365 && this.template('months', yearDifference + monthDifference) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffixPast' ] : '');\n }\n\n if (mode === 'timeSince') {\n return timeSince;\n }\n\n if (mode === 'full') {\n return `${convertedDate} (${timeSince})`;\n }\n }\n\n return convertedDate || '';\n }\n\n private template(key: string, val: number): string {\n return this.templates[ key ]?.replace(/%d/i, String(Math.abs(Math.round(val))));\n }\n\n private updateTemplates(): void {\n this.templates = {\n prefixPast: this.myTranslateService.instant('mosa.pipes.timeSince.prefix.past'),\n suffixPast: this.myTranslateService.instant('mosa.pipes.timeSince.suffix.past'),\n prefixFuture: this.myTranslateService.instant('mosa.pipes.timeSince.prefix.future'),\n suffixFuture: this.myTranslateService.instant('mosa.pipes.timeSince.suffix.future'),\n second: this.myTranslateService.instant('mosa.pipes.timeSince.second'),\n seconds: this.myTranslateService.instant('mosa.pipes.timeSince.seconds'),\n minute: this.myTranslateService.instant('mosa.pipes.timeSince.minute'),\n minutes: this.myTranslateService.instant('mosa.pipes.timeSince.minutes'),\n hour: this.myTranslateService.instant('mosa.pipes.timeSince.hour'),\n hours: this.myTranslateService.instant('mosa.pipes.timeSince.hours'),\n day: this.myTranslateService.instant('mosa.pipes.timeSince.day'),\n days: this.myTranslateService.instant('mosa.pipes.timeSince.days'),\n month: this.myTranslateService.instant('mosa.pipes.timeSince.month'),\n months: this.myTranslateService.instant('mosa.pipes.timeSince.months'),\n year: this.myTranslateService.instant('mosa.pipes.timeSince.year'),\n years: this.myTranslateService.instant('mosa.pipes.timeSince.years'),\n };\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MosaDurationFormat } from '../models/mosa-duration.model';\n\n@Pipe({ name: 'mosaDuration' })\nexport class MosaDurationPipe implements PipeTransform {\n\n private readonly store$: BehaviorSubject<number> = new BehaviorSubject<number>(new Date().getTime());\n private readonly interval: NodeJS.Timeout;\n\n constructor(\n private readonly myTranslateService: TranslateService,\n ) {\n this.interval = setInterval(() => this.store$.next(new Date().getTime()), 1000);\n this.myTranslateService.onLangChange.subscribe((): void => this.store$.next(new Date().getTime()));\n }\n\n /**\n * Converts a timestamp to a duration in the given format\n * @param millis\n * @param format\n * @returns\n * auto: 15000 -> 15 seconds\n * seconds: 15000 -> 15 seconds\n * minutes: 60000 -> 1 minute\n * hours: 7200000 -> 2 hours\n * days: 172800000 -> 2 days\n */\n public transform(millis: number | undefined, format: MosaDurationFormat = 'auto'): Observable<string> {\n return this.store$.pipe(\n map((currentDate: number): string => {\n if (!millis) {\n clearInterval(this.interval);\n return '';\n }\n\n if (millis - currentDate < 0) {\n clearInterval(this.interval);\n return '';\n }\n\n return this.calcDuration(currentDate, millis, format);\n }),\n );\n }\n\n\n private getTranslation(num: number, format: MosaDurationFormat): string {\n if (num === 1) {\n return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.pipes.dateTime[${format}].label`)}`;\n }\n return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.pipes.dateTime[${format}].plural.label`)}`;\n }\n\n\n private calcDuration(currentDate: number, millis: number, format: MosaDurationFormat): string {\n millis = millis - currentDate;\n\n const seconds: number = millis / 1000;\n if (format === 'seconds') {\n return this.getTranslation(seconds, 'seconds');\n }\n\n const minutes: number = seconds / 60;\n if (format === 'minutes') {\n return this.getTranslation(minutes, 'minutes');\n }\n\n const hours: number = minutes / 60;\n if (format === 'hours') {\n return this.getTranslation(hours, 'hours');\n }\n\n const days: number = hours / 24;\n if (format === 'days') {\n return this.getTranslation(days, 'days');\n }\n\n if (format === 'auto') {\n if (seconds < 60) {\n return this.getTranslation(seconds, 'seconds');\n }\n\n if (minutes < 60) {\n return this.getTranslation(minutes, 'minutes');\n }\n\n if (hours < 24) {\n return this.getTranslation(hours, 'hours');\n }\n\n return this.getTranslation(days, 'days');\n }\n\n return '';\n }\n}\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { AssetsI18nLoaderService } from './services/translation/assets-i18n-loader.service';\n\n/*\n * Public API Surface of core\n */\n\n/**\n * Services\n */\nexport * from './services/api.service';\nexport * from './services/mosa-socket.service';\nexport * from './services/core-logger.service';\n\nexport * from './services/translation/translate-collector.service';\nexport * from './services/translation/custom-translate-loader.service';\nexport * from './services/translation/assets-i18n-loader.service';\n\n/**\n * Guards\n */\nexport * from './services/guards/can-deactivate.guard';\nexport * from './services/guards/authentication.guard';\n\n/**\n * Interceptors\n */\nexport * from './services/interceptors/language.interceptor';\nexport * from './services/interceptors/refresh-token.interceptor';\n\n/**\n * Models\n */\nexport * from './models/dictionary-item.model';\nexport * from './models/api-options.model';\nexport * from './models/api-result.model';\nexport * from './models/mosa-duration.model';\nexport * from './models/token-settings.model';\nexport * from './models/transform-matrix.model';\nexport * from './models/key-map.model';\nexport * from './models/item.model';\nexport * from './models/size.model';\n\nexport * from './models/sieve/sieve-response.model';\nexport * from './models/sieve/sieve-sort.model';\nexport * from './models/sieve/sieve-filter.model';\nexport * from './models/sieve/sieve-operator.model';\nexport * from './models/sieve/sieve-options.model';\n\nexport * from './models/logger/logger-config.model';\nexport * from './models/logger/log.model';\nexport * from './models/logger/log-event.model';\nexport * from './models/logger/log-message-data.model';\nexport * from './models/logger/logger-base-config.model';\nexport * from './models/logger/logger-default-config.model';\nexport * from './models/logger/log-type.model';\n\nexport * from './models/types/form.type';\n\n/**\n * Utils\n */\nexport * from './utils/commons.util';\nexport * from './utils/dictionary.util';\nexport * from './utils/promise.util';\nexport * from './utils/prototypes.util';\nexport * from './utils/sieve.util';\n\n/**\n * Enums\n */\nexport * from './enums/theme.enum';\nexport * from './enums/content-position.enum';\nexport * from './enums/browser.enum';\nexport * from './enums/i18n-supported.enum';\n\n/**\n * Constants\n */\nexport * from './constants/local-storage.constant';\n\n/**\n * Pipes\n */\nexport * from './pipes/dictionary-item.pipe';\nexport * from './pipes/filter.pipe';\nexport * from './pipes/find.pipe';\nexport * from './pipes/join.pipe';\nexport * from './pipes/mosa-date.pipe';\nexport * from './pipes/mosa-duration.pipe';\n\nfunction initI18n(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, undefined, 1);\n}\n\nfunction initI18nCore(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, 'mosa-core');\n}\n\nexport const provideMosaCore: () => EnvironmentProviders = () => makeEnvironmentProviders([\n provideAppInitializer(() => initI18n(inject(AssetsI18nLoaderService))),\n provideAppInitializer(() => initI18nCore(inject(AssetsI18nLoaderService))),\n]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TranslateCollectorService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mosa-ng-core.mjs","sources":["../../../../projects/core/src/lib/utils/commons.util.ts","../../../../projects/core/src/lib/enums/i18n-supported.enum.ts","../../../../projects/core/src/lib/constants/local-storage.constant.ts","../../../../projects/core/src/lib/services/translation/translate-collector.service.ts","../../../../projects/core/src/lib/services/translation/assets-i18n-loader.service.ts","../../../../projects/core/src/lib/services/core-logger.service.ts","../../../../projects/core/src/lib/services/api.service.ts","../../../../projects/core/src/lib/services/mosa-socket.service.ts","../../../../projects/core/src/lib/services/translation/custom-translate-loader.service.ts","../../../../projects/core/src/lib/services/guards/can-deactivate.guard.ts","../../../../projects/core/src/lib/services/guards/authentication.guard.ts","../../../../projects/core/src/lib/services/interceptors/language.interceptor.ts","../../../../projects/core/src/lib/services/interceptors/refresh-token.interceptor.ts","../../../../projects/core/src/lib/utils/dictionary.util.ts","../../../../projects/core/src/lib/utils/prototypes.util.ts","../../../../projects/core/src/lib/utils/sieve.util.ts","../../../../projects/core/src/lib/enums/theme.enum.ts","../../../../projects/core/src/lib/enums/content-position.enum.ts","../../../../projects/core/src/lib/enums/browser.enum.ts","../../../../projects/core/src/lib/pipes/dictionary-item.pipe.ts","../../../../projects/core/src/lib/pipes/filter.pipe.ts","../../../../projects/core/src/lib/pipes/find.pipe.ts","../../../../projects/core/src/lib/pipes/join.pipe.ts","../../../../projects/core/src/lib/pipes/mosa-date.pipe.ts","../../../../projects/core/src/lib/pipes/mosa-duration.pipe.ts","../../../../projects/core/src/lib/provider.ts","../../../../projects/core/src/mosa-ng-core.ts"],"sourcesContent":["import { ITransformMatrix } from '../models/transform-matrix.model';\n\n/**\n * Checks if an object is null or undefined. Does not check for\n * empty strings, or false booleans\n * @param val\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNullOrUndefined(val: any): boolean {\n return val === null || val === undefined;\n}\n\n/**\n * Checks if a string is null or empty\n * @param str\n */\nexport function isNullOrEmpty(str: string | null | undefined): boolean {\n return !str?.trim();\n}\n\n/**\n * Checks if a string or number is zero or higher\n * @param num\n */\nexport function isZeroOrHigher(num: number | string | null | undefined): boolean {\n return num != null && +num >= 0;\n}\n\n/**\n * Checks if an object is a number\n * @param num\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNumber(num: any): boolean {\n return num !== null && !isNaN(+num);\n}\n\n/**\n * Round to nearest number given\n * @param value\n * @param round\n */\nexport function roundNearest(value: number): number {\n return Math.ceil(value / 5) * 5;\n}\n\n/**\n * Merge a two dimensional array\n * @param array\n */\nexport function mergeArray<T>(array: T[][]): T[] {\n return array.reduce((flat: T[], toFlatten: T[] | T[][]): T[] =>\n flat.concat(Array.isArray(toFlatten) ? mergeArray<T>(toFlatten as T[][]) : toFlatten), []);\n}\n\n/**\n * Get CSS Transform matrix from an element\n * @param element\n */\nexport function getTransformMatrix(element: HTMLElement): ITransformMatrix {\n const values = element.style.transform.split(/\\w+\\(|\\);?/);\n const transform = values[ 1 ].split(/,\\s?/g).map((numStr: string): number => parseInt(numStr, 10));\n\n return {\n x: transform[ 0 ],\n y: transform[ 1 ],\n z: transform[ 2 ],\n };\n}\n\nexport function some<T>(item: T, searchValue: T[keyof T] | T[keyof T][], searchKey?: keyof T, compareFn: ((item: T, val: T[keyof T]) => boolean) | 'equals' | 'not-equals' = 'equals'): boolean {\n let searchValues: T[keyof T][] = searchValue as T[keyof T][];\n if (!Array.isArray(searchValue)) {\n searchValues = [ searchValue ];\n }\n\n if (typeof compareFn === 'function') {\n return searchValues.some((val: T[keyof T]) => compareFn(item, val));\n } else if (compareFn === 'not-equals') {\n return !searchValues.includes(searchKey ? item[ searchKey ] : item as T[keyof T]);\n }\n\n return searchValues.includes(searchKey ? item[ searchKey ] : item as T[keyof T]);\n}\n\n/**\n * Generates a random string with numbers and letters\n * @param length\n */\nexport function getRandomString(length: number = 10): string {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result: string = '';\n for (let i: number = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return result;\n}\n\n/**\n * Trys to convert a json string. If it fails it returns [null] or a given fallback of [T]\n */\nexport function tryJsonParse<T>(data: string | undefined | null, fallback?: () => T): T | null {\n try {\n if (!isNullOrEmpty(data)) {\n return JSON.parse(data!);\n }\n } catch {\n // Ignore - go on with fallback check\n }\n\n if (fallback) {\n return fallback();\n }\n return null;\n}\n","export enum I18nSupported {\n enUS = 'en-US',\n deDE = 'de-DE',\n deCH = 'de-CH',\n deAT = 'de-AT',\n enGB = 'en-GB',\n frFR = 'fr-FR',\n esES = 'es-ES',\n ptPT = 'pt-PT',\n}\n","import { I18nSupported } from '../enums/i18n-supported.enum';\n\nexport const MOSA_MERGED_TRANSLATION = (lang: string): string => `mosa_${ lang }_merged_${ location.host }`;\nexport const MOSA_FALLBACK_TRANSLATION = `mosa_${ I18nSupported.enUS }_merged_${ location.host }`;\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MOSA_MERGED_TRANSLATION } from '../../constants/local-storage.constant';\nimport { IKeyMap } from '../../models/key-map.model';\nimport { isNullOrUndefined } from '../../utils/commons.util';\n\nexport interface ITranslationMap {\n priority: number;\n translation: IKeyMap<string>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslateCollectorService {\n\n private translationMap: IKeyMap<ITranslationMap[]> = {};\n\n constructor(private readonly myTranslateService: TranslateService) {\n }\n\n public addTranslations(translation: Record<string, string>, lang: string, priority: number): void {\n if (isNullOrUndefined(this.translationMap[ lang ])) {\n this.translationMap[ lang ] = [];\n }\n\n this.translationMap[ lang ].push({ priority, translation });\n this.translationMap[ lang ].sort((a: ITranslationMap, b: ITranslationMap) => a.priority - b.priority);\n const merged: IKeyMap<string> = JSON.parse(localStorage.getItem(MOSA_MERGED_TRANSLATION(lang))|| '{}');\n\n for (const translationsData of this.translationMap[ lang ]) {\n const translations: IKeyMap<string> = translationsData.translation;\n if (translations != null) {\n Object.keys(translations).forEach((key: string) => void (merged[ key ] = translations[ key ]));\n }\n }\n\n let trans: boolean = true;\n let count: number = 0;\n while (trans) {\n count++;\n trans = false;\n if (count >= 10) {\n console.warn('Limit reached! Please check translation file! Last replaced values:');\n }\n Object.keys(merged).forEach((key: string) => {\n if (merged[ key ].startsWith('@:')) {\n merged[ key ] = merged[ merged[ key ].substring(2, merged[ key ].length) ];\n trans = count < 10;\n if (count > 10) {\n console.warn(merged[ key ]);\n }\n }\n });\n }\n localStorage.setItem(MOSA_MERGED_TRANSLATION(lang), JSON.stringify(merged));\n this.myTranslateService.reloadLang(lang);\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, of } from 'rxjs';\nimport { catchError, tap } from 'rxjs/operators';\nimport { getRandomString } from '../../utils/commons.util';\nimport { TranslateCollectorService } from './translate-collector.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AssetsI18nLoaderService {\n\n protected priority: number = 0;\n protected supportedLanguages: string[] = [];\n\n private supportedLanguagesPromise: Promise<string[]> | null = null;\n\n constructor(\n protected myHttpClient: HttpClient,\n protected myTranslateCollectorService: TranslateCollectorService,\n ) {\n }\n\n public async init(path?: string, libName?: string, priority?: number): Promise<void> {\n const languages: string[] = await this.getSupportedLanguages();\n\n for (const lang of languages) {\n await firstValueFrom(this.loadTranslations(lang, path, libName, priority));\n }\n }\n\n private async getSupportedLanguages(): Promise<string[]> {\n // If we already have the data, return it immediately\n if (this.supportedLanguages.length > 0) {\n return this.supportedLanguages;\n }\n\n // If a request is already in flight, return that same promise\n if (this.supportedLanguagesPromise) {\n return this.supportedLanguagesPromise;\n }\n\n // Create the promise for the HTTP call\n this.supportedLanguagesPromise = (async (): Promise<string[]> => {\n const url = `assets/i18n/supported-languages.json?v=${getRandomString()}`;\n const res = await firstValueFrom(\n this.myHttpClient.get<{ languages: string[] }>(url)\n ).catch(() => null);\n\n if (!res?.languages) {\n this.supportedLanguagesPromise = null;\n return [];\n }\n\n this.supportedLanguages = res.languages;\n return res.languages;\n })();\n\n return this.supportedLanguagesPromise;\n }\n\n private loadTranslations(lang: string, path?: string, libName?: string, priority?: number): Observable<Record<string, string> | null> {\n const filename: string = libName ? `${libName}-${lang}.json` : `${lang}.json`;\n return this.myHttpClient.get<Record<string, string>>(`${(path || './assets/i18n/') + filename}?v=${getRandomString()}`)\n .pipe(\n tap((response: Record<string, string>) =>\n this.myTranslateCollectorService.addTranslations(response, lang, priority || this.priority)),\n catchError(() => {\n console.error(`Missing file -> ${filename}`);\n return of(null);\n }),\n );\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ILogEvent } from '../models/logger/log-event.model';\nimport { LogType } from '../models/logger/log-type.model';\nimport { ILoggerConfig } from '../models/logger/logger-config.model';\nimport { ILoggerDefaultConfig } from '../models/logger/logger-default-config.model';\nimport { isNullOrUndefined } from '../utils/commons.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLoggerService {\n\n public defaultConfig: ILoggerDefaultConfig | undefined;\n\n private readonly uiLogs$: BehaviorSubject<ILogEvent | null> = new BehaviorSubject<ILogEvent | null>(null);\n\n /**\n * Default constructor\n */\n constructor() {\n }\n\n public subUiLogs(): Observable<ILogEvent | null> {\n return this.uiLogs$.asObservable();\n }\n\n /**\n * Gets the error message from any type of object\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async getErrorMsg(err: any): Promise<string> {\n let msg: string = 'Unknown Error';\n\n if (!err) {\n return msg;\n }\n\n if (typeof err === 'string') {\n msg = err;\n } else if (err.msg) {\n msg = err.msg;\n } else if (err.error?.msg) {\n msg = err.error.msg;\n } else if (err.error?.message) {\n msg = err.error.message;\n } else if (err.error?.errors?.[ 0 ]?.message) {\n msg = err.error.errors[ 0 ].message;\n } else if (err.message) {\n msg = err.message;\n } else if (err.Message) {\n msg = err.Message;\n }\n\n if (err.error instanceof Blob) {\n // Convert the Blob back to a string\n const text: string = await (err.error as Blob).text();\n const errorBody = JSON.parse(text);\n return errorBody.message;\n }\n\n if (typeof err.error === 'string') {\n msg = err.error;\n }\n\n if (!msg && err instanceof HttpErrorResponse) {\n if (typeof err.error !== 'string') {\n return `mosa.commons.errors.status[${err.status}].message`;\n }\n\n return err.error;\n }\n\n return msg;\n }\n\n /**\n * Get the title to be shown in logger toast\n * @param err\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public getErrorTitle(err: any): string {\n let title: string = 'mosa.commons.logs.error.label';\n if (err?.label) {\n title = err.label;\n } else if (err?.title) {\n title = err.title;\n } else if (err?.error?.label) {\n title = err.error.label;\n } else if (err?.error?.title) {\n title = err.error.title;\n }\n return title;\n }\n\n /**\n * Logs an error to the user\n * @param data\n * @param showUser\n * @param config\n */\n public async logError(config: ILoggerConfig): Promise<void> {\n config = this.serializeConfig(config);\n config.msg = await this.getErrorMsg(config.msg);\n\n if (!config.title) {\n config.title = this.getErrorTitle(config.msg);\n }\n\n config.className = 'snackbar-error';\n\n this.show(config, 'error');\n }\n\n /**\n * Logs a success message to the user\n * @param data\n * @param config\n */\n public logSuccess(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-success';\n\n this.show(config, 'success');\n }\n\n /**\n * Logs a warning to the user\n * @param data\n * @param showUser\n * @param config\n */\n public logWarning(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-warning';\n\n this.show(config, 'warning');\n }\n\n /**\n * Logs an info to the user\n * @param data\n * @param config\n */\n public logInfo(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-info';\n\n this.show(config, 'info');\n }\n\n /**\n * Logs any kind of message to the user\n * @param data\n * @param config\n */\n public log(config: ILoggerConfig): void {\n config = this.serializeConfig(config);\n config.className = 'snackbar-default';\n\n this.show(config, 'default');\n }\n\n /**\n * Show the log\n * @requires @mosa-ng/material\n * @param data\n * @param type\n * @param config\n */\n public show(config: ILoggerConfig, type: LogType): void {\n this.uiLogs$.next({ title: config.title, msg: config.msg, type, config });\n }\n\n /**\n * Serializes empty values, so no error is being returned\n * @param config\n * @private\n */\n private serializeConfig(config: ILoggerConfig | undefined): ILoggerConfig {\n // Check if user has default config\n if (!this.defaultConfig) {\n this.defaultConfig = {\n debug: true,\n };\n }\n\n if (!config) {\n // Get user default config\n config = {\n showDismiss: this.defaultConfig.showDismiss,\n closeOnClick: isNullOrUndefined(this.defaultConfig.closeOnClick) ? true : this.defaultConfig.closeOnClick,\n className: this.defaultConfig.className,\n duration: this.defaultConfig.duration || 4,\n };\n }\n\n // Serialize configuration\n config.duration = CoreLoggerService.getValue<number>(config.duration!, this.defaultConfig.duration!, 4);\n config.className = CoreLoggerService.getValue<string>(config.className!, this.defaultConfig.className!, '');\n config.showDismiss = CoreLoggerService.getValue<boolean>(config.showDismiss!, this.defaultConfig.showDismiss!, false);\n config.closeOnClick = CoreLoggerService.getValue<boolean>(config.closeOnClick!, this.defaultConfig.closeOnClick!, true);\n\n return config;\n }\n\n /**\n * Gets a value which is not undefined or null\n * @param val\n * @param val1\n * @param def\n * @private\n */\n private static getValue<T>(val: T, val1: T, def: T): T {\n if (isNullOrUndefined(val)) {\n if (isNullOrUndefined(val1)) {\n return def;\n }\n return val1;\n }\n return val;\n }\n\n}\n","import { HttpClient, HttpErrorResponse, HttpEvent, HttpHeaders, HttpResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, throwError } from 'rxjs';\nimport { catchError, map, tap } from 'rxjs/operators';\nimport { IApiOptions } from '../models/api-options.model';\nimport { ITokenSettings } from '../models/token-settings.model';\nimport { CoreLoggerService } from './core-logger.service';\nimport { isNullOrEmpty } from '../utils/commons.util';\nimport { IApiResult } from '../models/api-result.model';\n\nexport const LOCAL_STORAGE_TOKEN_KEY = 'tokenSettings';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n\n private refreshTokenUrl: string = '/api/auth/token/refresh';\n\n private readonly myCoreLoggerService: CoreLoggerService = inject(CoreLoggerService);\n private readonly myHttpClient: HttpClient = inject(HttpClient);\n\n /**\n * Sets the token\n * @param tokenSettings\n */\n public setToken(tokenSettings: ITokenSettings): void {\n window.localStorage.setItem(LOCAL_STORAGE_TOKEN_KEY, JSON.stringify(tokenSettings));\n }\n\n /**\n * Gets token\n */\n public getToken(): ITokenSettings | null {\n const tokenSettings: string | null = window.localStorage.getItem(LOCAL_STORAGE_TOKEN_KEY);\n if (isNullOrEmpty(tokenSettings)) {\n return null;\n }\n\n return JSON.parse(tokenSettings!);\n }\n\n /**\n * Deletes token\n */\n public deleteToken(): void {\n window.localStorage.removeItem(LOCAL_STORAGE_TOKEN_KEY);\n }\n\n public setRefreshTokenUrl(url: string): void {\n this.refreshTokenUrl = url;\n }\n\n public getRefreshTokenUrl(): string {\n return this.refreshTokenUrl;\n }\n\n public refreshToken<T>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<IApiResult<ITokenSettings>> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.post<IApiResult<ITokenSettings>>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<IApiResult<ITokenSettings>>) => this.handleResponse(response)),\n tap((res: IApiResult<ITokenSettings>) => this.setToken({ ...this.getToken()!, ...res.data })),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http get call\n * @param url\n * @param headers\n * @param options\n */\n public get<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.get<T>(url, { ...options.httpOptions as any, headers })\n .pipe(\n // switchMap(() => ,\n map((response: HttpEvent<T>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an async http get call, which also includes the response headers\n * @param url\n * @param headers\n * @param options\n */\n public async getWithHeadersAsync<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Promise<HttpEvent<T>> {\n return firstValueFrom(this.getWithHeaders<T>(url, headers, options));\n }\n\n /**\n * Makes an http get call, which also includes the response headers\n * @param url\n * @param headers\n * @param options\n */\n public getWithHeaders<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<HttpEvent<T>> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.get<T>(url, { ...options.httpOptions as any, headers, observe: 'response' })\n .pipe(\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http patch call (For partial updates)\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public patch<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.patch<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http put call\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public put<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.put<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Makes an http post call\n * @param url\n * @param data\n * @param headers\n * @param options\n */\n public post<T, T1>(url: string, data?: T, headers?: HttpHeaders, options?: IApiOptions): Observable<T1> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.myHttpClient.post<T1>(url, data, { ...options.httpOptions as any, headers })\n .pipe(\n map((response: HttpEvent<T1>) => this.handleResponse(response)),\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * makes an http delete call\n * @param url\n * @param headers\n * @param options\n * @returns Observable\n */\n public delete<T>(url: string, headers?: HttpHeaders, options?: IApiOptions): Observable<T> {\n options = ApiService.serializeOptions(options);\n headers = this.getHeaders(headers, options);\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n return this.myHttpClient.delete<T>(url, { ...options.httpOptions as {}, headers })\n .pipe(\n catchError((err: HttpErrorResponse): Observable<never> => this.handleError(err, options)),\n );\n }\n\n /**\n * Appends a script to the html body\n * @param path\n * @param attributes\n * @param onLoad\n */\n public loadExternalScript(path: string, attributes?: { key: string, value: string }[],\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onLoad?: ((this: GlobalEventHandlers, ev: Event) => any)): void {\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = path;\n script.async = true;\n\n if (onLoad) {\n script.onload = onLoad;\n }\n\n if (attributes) {\n for (const attribute of attributes) {\n script.setAttribute(attribute.key, attribute.value);\n }\n }\n\n document.body.append(script);\n }\n\n private handleError(err: HttpErrorResponse, options: IApiOptions): Observable<never> {\n if (!options?.skipErrorHandling) {\n void this.myCoreLoggerService.logError({ msg: err });\n }\n\n return throwError(() => err);\n }\n\n private handleResponse<T>(response: HttpEvent<T>): T {\n if (response instanceof HttpResponse) {\n return response.body as T;\n }\n return response as T;\n }\n\n private getHeaders(headers?: HttpHeaders, options?: IApiOptions): HttpHeaders {\n if (!headers) {\n headers = new HttpHeaders();\n }\n\n if (!options?.skipContentType) {\n if (!headers.get('Content-Type')) {\n headers = headers.set('Content-Type', 'application/json');\n }\n }\n\n const tokenSettings: ITokenSettings | null = this.getToken();\n if (!options?.skipAuth && tokenSettings) {\n headers = headers.set('Authorization', `${tokenSettings.tokenType} ${tokenSettings.accessToken}`);\n }\n return headers;\n }\n\n private static serializeOptions(options?: IApiOptions): IApiOptions {\n if (!options) {\n options = {};\n }\n\n if (!options.httpOptions) {\n options.httpOptions = {};\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Observer, Subject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MosaSocketService {\n\n private subject: Subject<MessageEvent> | undefined;\n\n constructor() {\n }\n\n public connect(url: string): Subject<MessageEvent> {\n if (!this.subject) {\n this.subject = this.create(url);\n }\n return this.subject;\n }\n\n public send(data: MessageEvent): void {\n this.subject?.next(data);\n }\n\n private create(url: string): Subject<MessageEvent> {\n const ws = new WebSocket(url);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const observable = new Observable((obs: Observer<MessageEvent>): any => {\n ws.onmessage = obs.next.bind(obs);\n ws.onerror = obs.error.bind(obs);\n ws.onclose = obs.complete.bind(obs);\n return ws.close.bind(ws);\n });\n const observer = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n next: (data: any): void => {\n if (ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(data));\n }\n },\n };\n return Subject.create(observer, observable);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Observer } from 'rxjs';\nimport { MOSA_FALLBACK_TRANSLATION, MOSA_MERGED_TRANSLATION } from '../../constants/local-storage.constant';\nimport { IKeyMap } from '../../models/key-map.model';\nimport { isNullOrEmpty, tryJsonParse } from '../../utils/commons.util';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CustomTranslateLoaderService {\n\n public getTranslation(lang: string): Observable<IKeyMap<string> | null> {\n return new Observable<IKeyMap<string> | null>((observer: Observer<IKeyMap<string> | null>) => {\n const item: string | null = localStorage.getItem(MOSA_MERGED_TRANSLATION(lang));\n const responseObj: IKeyMap<string> | null = tryJsonParse(item, () => this.loadFallbackLanguage());\n\n observer.next(responseObj);\n observer.complete();\n });\n }\n\n private loadFallbackLanguage(): IKeyMap<string> {\n const defaultTranslation: string | null = localStorage.getItem(MOSA_FALLBACK_TRANSLATION);\n return isNullOrEmpty(defaultTranslation) ? {} : JSON.parse(defaultTranslation!);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanDeactivate } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport interface ICanComponentDeactivate {\n canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CanDeactivateGuard implements CanDeactivate<ICanComponentDeactivate> {\n\n public canDeactivate(component: ICanComponentDeactivate): boolean {\n return component.canDeactivate ? component.canDeactivate() as boolean : true;\n }\n\n}\n","import { ActivatedRouteSnapshot, CanActivateFn, RouterStateSnapshot } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { ApiService } from '../api.service';\n\nexport const authenticationGuard: CanActivateFn = (_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot) => {\n const apiService: ApiService = inject(ApiService);\n if (!apiService.getToken()) {\n return false;\n }\n\n return true;\n};\n","import { HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport const languageInterceptor: HttpInterceptorFn = (req, next) => {\n const translate: TranslateService = inject(TranslateService);\n const lang: string = translate.getCurrentLang() || 'en-US';\n\n // Clone the request to add the Accept-Language header\n const authReq = req.clone({\n setHeaders: {\n 'Accept-Language': lang\n }\n });\n\n return next(authReq);\n};\n","import { HttpErrorResponse, HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { mergeMap, Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { inject } from '@angular/core';\nimport { ApiService } from '../api.service';\nimport { ITokenSettings } from '../../models/token-settings.model';\n\nexport function refreshTokenInterceptor(req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\n const apiService = inject(ApiService);\n\n return next(req).pipe(\n catchError((err: unknown) => {\n if (err instanceof HttpErrorResponse && err?.status === 401) {\n return apiService.refreshToken(apiService.getRefreshTokenUrl(), apiService.getToken())\n .pipe(mergeMap(() => next(updateHeader(req, apiService))));\n }\n return throwError(() => err);\n }),\n );\n}\n\nfunction updateHeader(req: HttpRequest<unknown>, apiService: ApiService): HttpRequest<unknown> {\n const authToken: ITokenSettings | null = apiService.getToken();\n req = req.clone({\n headers: req.headers.set('Authorization', `${authToken?.tokenType} ${authToken?.accessToken}`),\n });\n return req;\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { IDictionaryItem } from '../models/dictionary-item.model';\nimport { IKeyMap } from '../models/key-map.model';\n\nexport class Dictionary<Key, Value> {\n\n private readonly dictionaryItems$: BehaviorSubject<IDictionaryItem<Key, Value>[]>;\n\n /**\n * Default constructor.\n * @param data Requires an array of IDictionaryItem with a key and a value\n */\n constructor(...data: IDictionaryItem<Key, Value>[]) {\n this.dictionaryItems$ = new BehaviorSubject<IDictionaryItem<Key, Value>[]>(data);\n }\n\n /**\n * Observable to subscribe to dictionary changes\n */\n public valueChanges(): Observable<IDictionaryItem<Key, Value>[]> {\n return this.dictionaryItems$.asObservable();\n }\n\n /**\n * Observable to subscribe to dictionary as object changes\n */\n public objectArray(): Observable<IKeyMap<Value>> {\n return this.dictionaryItems$.asObservable()\n .pipe(\n map((items: IDictionaryItem<Key, Value>[]): IKeyMap<Value> => this.toObject(items)),\n );\n }\n\n /**\n * Gets the items of the dictionary\n * @returns dictionary items\n */\n public get items(): IDictionaryItem<Key, Value>[] {\n return this.dictionaryItems$.value;\n }\n\n /**\n * Gets a dictionary item by key\n * @param key\n * @returns single dictionary item\n */\n public get(key: Key): IDictionaryItem<Key, Value> | undefined {\n return this.dictionaryItems$.value.find((item: IDictionaryItem<Key, Value>): boolean => item.key === key);\n }\n\n /**\n * Checks if dictionary contains item\n * @param key\n */\n public contains(key: Key): boolean {\n return this.get(key) != null;\n }\n\n /**\n * Adds a dictionary item\n * @param key\n * @param value\n */\n public add(key: Key, value: Value): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n dictionaryItems.push({ key, value });\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Updates a dictionary item\n * @param data\n * @param index\n */\n public update(data: IDictionaryItem<Key, Value>, index?: number): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n if (!index) {\n index = this.getIndex(data.key);\n }\n\n if (index !== -1) {\n dictionaryItems[ index ] = data;\n } else {\n console.warn('Dictionary: Index not found');\n }\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Gets an index with a specific key\n * @param key\n */\n public getIndex(key: Key): number {\n return this.dictionaryItems$.value.findIndex((val: IDictionaryItem<Key, Value>): boolean => val.key === key);\n }\n\n /**\n * Removes an item from the dictionary\n * @param value\n * @param index\n */\n public remove(value: Key, index?: number): void {\n const dictionaryItems: IDictionaryItem<Key, Value>[] = [ ...this.dictionaryItems$.value ];\n if (!index) {\n index = this.getIndex(value);\n }\n\n if (index !== -1) {\n dictionaryItems.splice(index, 1);\n } else {\n console.warn('Dictionary: Index not found');\n }\n this.updateItems(dictionaryItems);\n }\n\n /**\n * Private function to cast array to an object\n * @param items\n * @private\n */\n private toObject(items: IDictionaryItem<Key, Value>[]): IKeyMap<Value> {\n const obj: IKeyMap<Value> = {};\n for (const item of items) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n obj[ item.key as any ] = item.value;\n }\n return obj;\n }\n\n /**\n * Private function to update dictionary items\n * @param items\n * @private\n */\n private updateItems(items: IDictionaryItem<Key, Value>[]): void {\n this.dictionaryItems$.next(items);\n }\n\n}\n","/**\n * Cast any type\n * @param data to be casted\n * @returns casted data\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any,max-classes-per-file\nexport function cast<T>(data: any): T {\n return data as T;\n}\n\nexport class StringExtensions implements IStringExtensions {\n public getPart(maxChars: number, appendDot?: boolean): string {\n let newStr = cast<string>(this).replace(/\\\\n/g, ' ');\n if (newStr.length > maxChars) {\n newStr = newStr.substring(0, maxChars);\n if (appendDot && newStr.length > maxChars - 3) {\n newStr += '...';\n }\n }\n return newStr;\n }\n\n public fromJSON<T>(): T | null {\n let str: string = cast<string>(this);\n if (typeof this !== 'string') {\n str = JSON.stringify(str);\n }\n\n try {\n str = JSON.parse(str);\n } catch {\n return null;\n }\n\n if (typeof str === 'object') {\n return str as T;\n }\n\n return null;\n }\n\n public toCSSClass(): string {\n return cast<string>(this)?.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase();\n }\n\n public toUTC(): string {\n return `${cast<string>(this)}Z`;\n }\n}\n\nexport class ArrayExtensions implements IArrayExtensions {\n public hasChanges<T>(data: T[]): boolean {\n return JSON.stringify(this) !== JSON.stringify(data);\n }\n\n public replaceRange<T>(data: T[], start: number, end: number): T[] {\n const array: T[] = cast<T[]>(this);\n let replaceDataIndex: number = 0;\n for (let i: number = start; i < end; i++) {\n if (!array[ i ] && !data[ replaceDataIndex ]) {\n array.splice(i, 1);\n continue;\n }\n\n array[ i ] = data[ replaceDataIndex ];\n replaceDataIndex++;\n }\n return array;\n }\n}\n\nexport class NumberExtensions implements INumberExtensions {\n public between(start: number, end: number): boolean {\n const num: number = cast<number>(this);\n return num >= start && num <= end;\n }\n}\n\n/**\n * @interface StringExtensions\n */\nexport interface IStringExtensions {\n /**\n * Gets a part of a string\n * @param maxChars maximum amount of chars\n * @param appendDot append three dots at the end\n * @returns splitted string\n */\n getPart(maxChars: number, appendDot?: boolean): string;\n\n /**\n * Converts a string from json\n * @returns object of expected type\n */\n fromJSON<T>(): T | null;\n\n /**\n * Converts a string to a css class\n * @returns converted kebab case css class\n */\n toCSSClass(): string;\n\n /**\n * Converts a datetime string to utc format\n */\n toUTC(): string;\n}\n\nexport interface IArrayExtensions {\n /**\n * Checks if array has changes\n * @param data array passed\n * @deprecated learn how to program\n */\n hasChanges: <T>(data: T[]) => boolean;\n /**\n * Replaces a specific element range in an array\n * @param data\n */\n replaceRange: <T>(replaceData: T[], start: number, end: number) => T[];\n}\n\nexport interface INumberExtensions {\n /**\n * checks if a number in a range\n * @param start of range\n * @param end of range\n */\n between(start: number, end: number): boolean;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention,id-blacklist,@typescript-eslint/no-empty-object-type\n interface String extends IStringExtensions {\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention,@typescript-eslint/no-empty-object-type,@typescript-eslint/no-unused-vars\n interface Array<T> extends IArrayExtensions {\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention,id-blacklist,@typescript-eslint/no-empty-object-type\n interface Number extends INumberExtensions {\n }\n}\n\nexport class Prototypes {\n\n /**\n * Initialize prototypes\n */\n public static init(): void {\n const stringExtensions = new StringExtensions();\n const arrayExtensions = new ArrayExtensions();\n const numberExtensions = new NumberExtensions();\n\n String.prototype.getPart = stringExtensions.getPart;\n String.prototype.fromJSON = stringExtensions.fromJSON;\n String.prototype.toCSSClass = stringExtensions.toCSSClass;\n String.prototype.toUTC = stringExtensions.toUTC;\n\n Array.prototype.hasChanges = arrayExtensions.hasChanges;\n Array.prototype.replaceRange = arrayExtensions.replaceRange;\n\n Number.prototype.between = numberExtensions.between;\n }\n}\n","import { ISieveFilter } from '../models/sieve/sieve-filter.model';\nimport { SieveOperator } from '../models/sieve/sieve-operator.model';\nimport { ISieveOptions } from '../models/sieve/sieve-options.model';\nimport { ISieveSort } from '../models/sieve/sieve-sort.model';\n\nexport class Sieve {\n\n private readonly options: ISieveOptions;\n\n constructor(options: ISieveOptions) {\n this.options = options;\n this.options.baseUrl = options.baseUrl || '';\n this.options.filters = options.filters || [];\n this.options.sorts = options.sorts || [];\n }\n\n /**\n * public getter to get page size\n */\n public get pageSize(): number {\n return this.options.pageSize || 10;\n }\n\n /**\n * Setter to set page size\n */\n public set pageSize(pageSize: number) {\n this.options.pageSize = pageSize;\n }\n\n /**\n * public getter to get page\n */\n public get page(): number {\n return this.options.page || 0;\n }\n\n /**\n * Setter to set page\n */\n public set page(page: number) {\n this.options.page = page;\n }\n\n /**\n * public getter to get filters\n */\n public get filters(): ISieveFilter[] | undefined {\n return this.options.filters;\n }\n\n /**\n * Setter to set filters\n */\n public set filters(filters: ISieveFilter[]) {\n this.options.filters = filters;\n }\n\n /**\n * public getter to get sorts\n */\n public get sorts(): ISieveSort[] | undefined {\n return this.options.sorts;\n }\n\n /**\n * Setter to set sorts\n */\n public set sorts(sorts: ISieveSort[]) {\n this.options.sorts = sorts;\n }\n\n /**\n * method to add a sort option\n * @param name of the item to sort\n * @param desc sort descending\n */\n public addSort(name: string, desc?: boolean): void {\n this.options.sorts?.push({\n name,\n desc,\n });\n }\n\n /**\n * method to add a filter option\n * @param key of the item\n * @param operator { SieveOperator }\n * @param value filtered value\n */\n public addFilter(key: string, operator: SieveOperator, value: string): void {\n this.options.filters?.push({\n key,\n operator,\n value,\n });\n }\n\n /**\n * Getter for base url\n */\n public get baseUrl(): string | undefined {\n return this.options.baseUrl;\n }\n\n /**\n * Setter for base url\n * @param url\n */\n public set baseUrl(url: string) {\n this.options.baseUrl = url;\n }\n\n /**\n * Convert to queried string\n */\n public getUrl(): string {\n return `${ this.options.baseUrl }${ this.toQuery() }`;\n }\n\n /**\n * to Query\n * @private converts options to actual query\n */\n private toQuery(): string {\n let query = '?';\n\n if (this.page) {\n query += `page=${ this.page }`;\n }\n\n if (this.pageSize) {\n query += `&pageSize=${ this.pageSize }`;\n }\n\n if (this.filters?.length) {\n let filterQuery: string = '&filters=';\n\n for (const filter of this.filters) {\n if (filter.value) {\n filterQuery += `${ filter.key }${ filter.operator }${ filter.value },`;\n }\n }\n\n if (filterQuery !== '&filters=') {\n filterQuery = filterQuery.slice(0, -1);\n query += filterQuery;\n }\n }\n\n if (this.sorts?.length) {\n let sortQuery: string = '&sorts=';\n\n for (const sort of this.sorts) {\n sortQuery += `${ sort.desc ? '-' : '+' }${ sort.name },`;\n }\n\n sortQuery = sortQuery.slice(0, -1);\n query += sortQuery;\n }\n\n if (query.startsWith('&')) {\n query = query.slice(1);\n }\n\n return query;\n }\n\n}\n","export enum Theme {\n light,\n dark,\n}\n","export enum ContentPosition {\n top = 'top',\n topLeft = 'top-left',\n topRight = 'top-right',\n bottom = 'bottom',\n bottomLeft = 'bottom-left',\n bottomRight = 'bottom-right',\n center = 'center',\n centerLeft = 'center-left',\n centerRight = 'center-right',\n}\n","export enum Browser {\n chrome,\n firefox,\n internetExplorer,\n opera,\n edge,\n safari,\n other,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Dictionary } from '../utils/dictionary.util';\n\n@Pipe({ name: 'dictionaryItem' })\nexport class DictionaryItemPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(key: any, dictionary: Dictionary<any, any>): string {\n return dictionary.get(key)?.value;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { some } from '../utils/commons.util';\n\n@Pipe({ name: 'filter' })\nexport class FilterPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T, compareFn: ((item: T, val: T[keyof T]) => boolean) | 'equals' | 'not-equals' = 'equals'): T[] {\n // Return if array is empty or null\n if (!array?.length) {\n return [];\n }\n\n const foundItems: T[] = array.filter((v: T): boolean => some(v, searchValue, searchKey, compareFn));\n if (!foundItems.length) {\n return [];\n }\n\n // Return whole item\n return foundItems;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { some } from '../utils/commons.util';\n\n@Pipe({ name: 'find' })\nexport class FindPipe implements PipeTransform {\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T, compareFn: ((item: T, val: T[keyof T]) => boolean) | 'equals' | 'not-equals' = 'equals'): T | null {\n // Return if array is empty or null\n if (!array?.length) {\n return null;\n }\n\n const foundItem: T | undefined = array.find((v: T): boolean => some(v, searchValue, searchKey, compareFn));\n if (!foundItem) {\n return null;\n }\n\n // Return whole item\n return foundItem;\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'join' })\nexport class JoinPipe implements PipeTransform {\n\n /**\n * Join array by separator\n * @param array\n * @param returnField\n * @param separator\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public transform(array: any[], returnField: any, separator: string = ', '): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return array.map((val: any): string => returnField ? val[ returnField ] : val).join(separator);\n }\n\n}\n","import { DatePipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Pipe({ name: 'mosaDate' })\nexport class MosaDatePipe implements PipeTransform {\n\n private readonly store$: BehaviorSubject<number> = new BehaviorSubject<number>(new Date().getTime());\n\n private templates: Record<string, string> = {};\n\n private readonly myTranslateService: TranslateService = inject(TranslateService);\n private readonly myDatePipe: DatePipe = inject(DatePipe);\n\n constructor() {\n this.updateTemplates();\n setInterval((): void => this.store$.next(new Date().getTime()), 10);\n this.myTranslateService.onLangChange.subscribe((): void => {\n this.updateTemplates();\n this.store$.next(new Date().getTime());\n });\n }\n\n public transform(date: string | Date | undefined, mode: 'full' | 'timeSince' | 'date' = 'timeSince', options?: { withPrefix?: boolean, withSuffix?: boolean }): Observable<string> {\n return this.store$.pipe(map((currentDate: number): string => this.calcDate(currentDate, date, mode, options)));\n }\n\n private calcDate(currentTimestamp: number, date: string | Date | undefined, mode: 'full' | 'timeSince' | 'date', options?: { withPrefix?: boolean, withSuffix?: boolean }): string {\n if (!date) {\n return '';\n }\n\n let parsed: Date;\n if (date instanceof Date) {\n parsed = new Date(date.toString());\n } else {\n parsed = new Date(date);\n }\n\n if (!currentTimestamp) {\n currentTimestamp = new Date().getTime();\n }\n const currentDate = new Date(currentTimestamp);\n const parsedTimestamp: number = parsed.getTime();\n\n const convertedDate: string | null = this.myDatePipe.transform(parsed, 'dd. MMM. yyyy hh:mm aaa');\n if (mode === 'full' || mode === 'timeSince') {\n const seconds: number = Math.abs(((currentTimestamp - parsedTimestamp) * .001) >> 0);\n const minutes: number = seconds / 60;\n const hours: number = minutes / 60;\n const days: number = hours / 24;\n const years: number = days / 365;\n\n const yearDifference = (currentDate.getFullYear() - parsed.getFullYear()) * 12;\n const monthDifference = currentDate.getMonth() - parsed.getMonth();\n\n let timeSince: string = '';\n if (parsedTimestamp > currentTimestamp) {\n timeSince = (options?.withPrefix ? this.templates[ 'prefixFuture' ] : '') + (\n seconds > 0 && seconds < 2 && this.template('second', 1) ||\n seconds < 60 && this.template('seconds', seconds) ||\n seconds < 120 && this.template('minute', 1) ||\n minutes < 60 && this.template('minutes', minutes) ||\n minutes < 120 && this.template('hour', 1) ||\n hours < 24 && this.template('hours', hours) ||\n hours < 42 && this.template('day', 1) ||\n days < 30 && this.template('days', days) ||\n days < 45 && this.template('month', 1) ||\n days < 365 && this.template('months', yearDifference + monthDifference) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffixFuture' ] : '');\n } else {\n timeSince = (options?.withPrefix ? this.templates[ 'prefixPast' ] : '') + (\n seconds > 0 && seconds < 2 && this.template('second', 1) ||\n seconds < 60 && this.template('seconds', seconds) ||\n seconds < 120 && this.template('minute', 1) ||\n minutes < 60 && this.template('minutes', minutes) ||\n minutes < 120 && this.template('hour', 1) ||\n hours < 24 && this.template('hours', hours) ||\n hours < 42 && this.template('day', 1) ||\n days < 30 && this.template('days', days) ||\n days < 45 && this.template('month', 1) ||\n days < 365 && this.template('months', yearDifference + monthDifference) ||\n years < 1.5 && this.template('year', 1) ||\n this.template('years', years)\n ) + (options?.withSuffix ? this.templates[ 'suffixPast' ] : '');\n }\n\n if (mode === 'timeSince') {\n return timeSince;\n }\n\n if (mode === 'full') {\n return `${convertedDate} (${timeSince})`;\n }\n }\n\n return convertedDate || '';\n }\n\n private template(key: string, val: number): string {\n return this.templates[ key ]?.replace(/%d/i, String(Math.abs(Math.round(val))));\n }\n\n private updateTemplates(): void {\n this.templates = {\n prefixPast: this.myTranslateService.instant('mosa.pipes.timeSince.prefix.past'),\n suffixPast: this.myTranslateService.instant('mosa.pipes.timeSince.suffix.past'),\n prefixFuture: this.myTranslateService.instant('mosa.pipes.timeSince.prefix.future'),\n suffixFuture: this.myTranslateService.instant('mosa.pipes.timeSince.suffix.future'),\n second: this.myTranslateService.instant('mosa.pipes.timeSince.second'),\n seconds: this.myTranslateService.instant('mosa.pipes.timeSince.seconds'),\n minute: this.myTranslateService.instant('mosa.pipes.timeSince.minute'),\n minutes: this.myTranslateService.instant('mosa.pipes.timeSince.minutes'),\n hour: this.myTranslateService.instant('mosa.pipes.timeSince.hour'),\n hours: this.myTranslateService.instant('mosa.pipes.timeSince.hours'),\n day: this.myTranslateService.instant('mosa.pipes.timeSince.day'),\n days: this.myTranslateService.instant('mosa.pipes.timeSince.days'),\n month: this.myTranslateService.instant('mosa.pipes.timeSince.month'),\n months: this.myTranslateService.instant('mosa.pipes.timeSince.months'),\n year: this.myTranslateService.instant('mosa.pipes.timeSince.year'),\n years: this.myTranslateService.instant('mosa.pipes.timeSince.years'),\n };\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MosaDurationFormat } from '../models/mosa-duration.model';\n\n@Pipe({ name: 'mosaDuration' })\nexport class MosaDurationPipe implements PipeTransform {\n\n private readonly store$: BehaviorSubject<number> = new BehaviorSubject<number>(new Date().getTime());\n private readonly interval: NodeJS.Timeout;\n\n constructor(\n private readonly myTranslateService: TranslateService,\n ) {\n this.interval = setInterval(() => this.store$.next(new Date().getTime()), 1000);\n this.myTranslateService.onLangChange.subscribe((): void => this.store$.next(new Date().getTime()));\n }\n\n /**\n * Converts a timestamp to a duration in the given format\n * @param millis\n * @param format\n * @returns\n * auto: 15000 -> 15 seconds\n * seconds: 15000 -> 15 seconds\n * minutes: 60000 -> 1 minute\n * hours: 7200000 -> 2 hours\n * days: 172800000 -> 2 days\n */\n public transform(millis: number | undefined, format: MosaDurationFormat = 'auto'): Observable<string> {\n return this.store$.pipe(\n map((currentDate: number): string => {\n if (!millis) {\n clearInterval(this.interval);\n return '';\n }\n\n if (millis - currentDate < 0) {\n clearInterval(this.interval);\n return '';\n }\n\n return this.calcDuration(currentDate, millis, format);\n }),\n );\n }\n\n\n private getTranslation(num: number, format: MosaDurationFormat): string {\n if (num === 1) {\n return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.pipes.dateTime[${format}].label`)}`;\n }\n return `${num.toFixed(0)} ${this.myTranslateService.instant(`mosa.pipes.dateTime[${format}].plural.label`)}`;\n }\n\n\n private calcDuration(currentDate: number, millis: number, format: MosaDurationFormat): string {\n millis = millis - currentDate;\n\n const seconds: number = millis / 1000;\n if (format === 'seconds') {\n return this.getTranslation(seconds, 'seconds');\n }\n\n const minutes: number = seconds / 60;\n if (format === 'minutes') {\n return this.getTranslation(minutes, 'minutes');\n }\n\n const hours: number = minutes / 60;\n if (format === 'hours') {\n return this.getTranslation(hours, 'hours');\n }\n\n const days: number = hours / 24;\n if (format === 'days') {\n return this.getTranslation(days, 'days');\n }\n\n if (format === 'auto') {\n if (seconds < 60) {\n return this.getTranslation(seconds, 'seconds');\n }\n\n if (minutes < 60) {\n return this.getTranslation(minutes, 'minutes');\n }\n\n if (hours < 24) {\n return this.getTranslation(hours, 'hours');\n }\n\n return this.getTranslation(days, 'days');\n }\n\n return '';\n }\n}\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { AssetsI18nLoaderService } from './services/translation/assets-i18n-loader.service';\n\n/*\n * Public API Surface of core\n */\n\n/**\n * Services\n */\nexport * from './services/api.service';\nexport * from './services/mosa-socket.service';\nexport * from './services/core-logger.service';\n\nexport * from './services/translation/translate-collector.service';\nexport * from './services/translation/custom-translate-loader.service';\nexport * from './services/translation/assets-i18n-loader.service';\n\n/**\n * Guards\n */\nexport * from './services/guards/can-deactivate.guard';\nexport * from './services/guards/authentication.guard';\n\n/**\n * Interceptors\n */\nexport * from './services/interceptors/language.interceptor';\nexport * from './services/interceptors/refresh-token.interceptor';\n\n/**\n * Models\n */\nexport * from './models/dictionary-item.model';\nexport * from './models/api-options.model';\nexport * from './models/api-result.model';\nexport * from './models/mosa-duration.model';\nexport * from './models/token-settings.model';\nexport * from './models/transform-matrix.model';\nexport * from './models/key-map.model';\nexport * from './models/item.model';\nexport * from './models/size.model';\n\nexport * from './models/sieve/sieve-response.model';\nexport * from './models/sieve/sieve-sort.model';\nexport * from './models/sieve/sieve-filter.model';\nexport * from './models/sieve/sieve-operator.model';\nexport * from './models/sieve/sieve-options.model';\n\nexport * from './models/logger/logger-config.model';\nexport * from './models/logger/log.model';\nexport * from './models/logger/log-event.model';\nexport * from './models/logger/log-message-data.model';\nexport * from './models/logger/logger-base-config.model';\nexport * from './models/logger/logger-default-config.model';\nexport * from './models/logger/log-type.model';\n\nexport * from './models/types/form.type';\n\n/**\n * Utils\n */\nexport * from './utils/commons.util';\nexport * from './utils/dictionary.util';\nexport * from './utils/promise.util';\nexport * from './utils/prototypes.util';\nexport * from './utils/sieve.util';\n\n/**\n * Enums\n */\nexport * from './enums/theme.enum';\nexport * from './enums/content-position.enum';\nexport * from './enums/browser.enum';\nexport * from './enums/i18n-supported.enum';\n\n/**\n * Constants\n */\nexport * from './constants/local-storage.constant';\n\n/**\n * Pipes\n */\nexport * from './pipes/dictionary-item.pipe';\nexport * from './pipes/filter.pipe';\nexport * from './pipes/find.pipe';\nexport * from './pipes/join.pipe';\nexport * from './pipes/mosa-date.pipe';\nexport * from './pipes/mosa-duration.pipe';\n\nfunction initI18n(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, undefined, 1);\n}\n\nfunction initI18nCore(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, 'mosa-core');\n}\n\nexport const provideMosaCore: () => EnvironmentProviders = () => makeEnvironmentProviders([\n provideAppInitializer(() => initI18n(inject(AssetsI18nLoaderService))),\n provideAppInitializer(() => initI18nCore(inject(AssetsI18nLoaderService))),\n]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TranslateCollectorService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mosa-ng/core",
|
|
3
|
-
"version": "21.0
|
|
3
|
+
"version": "21.1.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=21.0.0 < 22.0.0",
|
|
6
6
|
"@angular/core": ">=21.0.0 < 22.0.0"
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"tslib": "^2.3.0"
|
|
10
10
|
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/codingsamuel/mosa-ng.git"
|
|
14
|
+
},
|
|
11
15
|
"sideEffects": false,
|
|
12
16
|
"module": "fesm2022/mosa-ng-core.mjs",
|
|
13
17
|
"typings": "types/mosa-ng-core.d.ts",
|
package/types/mosa-ng-core.d.ts
CHANGED
|
@@ -474,7 +474,7 @@ declare function mergeArray<T>(array: T[][]): T[];
|
|
|
474
474
|
* @param element
|
|
475
475
|
*/
|
|
476
476
|
declare function getTransformMatrix(element: HTMLElement): ITransformMatrix;
|
|
477
|
-
declare function some<T>(item: T, searchValue: T[keyof T] | T[keyof T][], searchKey?: keyof T): boolean;
|
|
477
|
+
declare function some<T>(item: T, searchValue: T[keyof T] | T[keyof T][], searchKey?: keyof T, compareFn?: ((item: T, val: T[keyof T]) => boolean) | 'equals' | 'not-equals'): boolean;
|
|
478
478
|
/**
|
|
479
479
|
* Generates a random string with numbers and letters
|
|
480
480
|
* @param length
|
|
@@ -753,13 +753,13 @@ declare class DictionaryItemPipe implements PipeTransform {
|
|
|
753
753
|
}
|
|
754
754
|
|
|
755
755
|
declare class FilterPipe implements PipeTransform {
|
|
756
|
-
transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T[];
|
|
756
|
+
transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T, compareFn?: ((item: T, val: T[keyof T]) => boolean) | 'equals' | 'not-equals'): T[];
|
|
757
757
|
static ɵfac: i0.ɵɵFactoryDeclaration<FilterPipe, never>;
|
|
758
758
|
static ɵpipe: i0.ɵɵPipeDeclaration<FilterPipe, "filter", true>;
|
|
759
759
|
}
|
|
760
760
|
|
|
761
761
|
declare class FindPipe implements PipeTransform {
|
|
762
|
-
transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T): T | null;
|
|
762
|
+
transform<T>(array: T[] | undefined, searchValue: any, searchKey?: keyof T, compareFn?: ((item: T, val: T[keyof T]) => boolean) | 'equals' | 'not-equals'): T | null;
|
|
763
763
|
static ɵfac: i0.ɵɵFactoryDeclaration<FindPipe, never>;
|
|
764
764
|
static ɵpipe: i0.ɵɵPipeDeclaration<FindPipe, "find", true>;
|
|
765
765
|
}
|