@tiba-spark/client-shared-lib 25.3.0-620 → 25.3.0-629

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/esm2022/libraries/components/index.mjs +14 -12
  2. package/esm2022/libraries/components/message-bar/message-bar-container/message-bar-container.component.mjs +4 -3
  3. package/esm2022/libraries/components/overlay-loading-container/{empty-resutls/empty-resutls.component.mjs → empty-results/empty-results.component.mjs} +1 -1
  4. package/esm2022/libraries/components/overlay-loading-container/error-results/error-results.component.mjs +26 -0
  5. package/esm2022/libraries/components/overlay-loading-container/index.mjs +3 -2
  6. package/esm2022/libraries/components/overlay-loading-container/loading-overlay.component.mjs +7 -9
  7. package/esm2022/libraries/components/restart-link/restart-link.component.mjs +41 -0
  8. package/esm2022/libraries/components/restart-link/restart-link.module.mjs +28 -0
  9. package/esm2022/libraries/constants/global-constants.mjs +3 -1
  10. package/esm2022/libraries/modules/auth/refresh-token.state.mjs +1 -1
  11. package/esm2022/libraries/pipes/humanize.pipe.mjs +25 -0
  12. package/esm2022/libraries/pipes/index.mjs +2 -1
  13. package/esm2022/libraries/pipes/shared-pipes.module.mjs +11 -6
  14. package/esm2022/libraries/resolvers/version.resolver.mjs +4 -1
  15. package/esm2022/libraries/services/refresh-token.service.mjs +35 -6
  16. package/esm2022/libraries/services/smartpark.service.mjs +18 -5
  17. package/fesm2022/tiba-spark-client-shared-lib.mjs +863 -723
  18. package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
  19. package/libraries/components/index.d.ts +13 -11
  20. package/libraries/components/index.d.ts.map +1 -1
  21. package/libraries/components/message-bar/message-bar-container/message-bar-container.component.d.ts +1 -0
  22. package/libraries/components/message-bar/message-bar-container/message-bar-container.component.d.ts.map +1 -1
  23. package/libraries/components/overlay-loading-container/{empty-resutls/empty-resutls.component.d.ts → empty-results/empty-results.component.d.ts} +1 -1
  24. package/libraries/components/overlay-loading-container/{empty-resutls/empty-resutls.component.d.ts.map → empty-results/empty-results.component.d.ts.map} +1 -1
  25. package/libraries/components/overlay-loading-container/error-results/error-results.component.d.ts +10 -0
  26. package/libraries/components/overlay-loading-container/error-results/error-results.component.d.ts.map +1 -0
  27. package/libraries/components/overlay-loading-container/index.d.ts +2 -1
  28. package/libraries/components/overlay-loading-container/index.d.ts.map +1 -1
  29. package/libraries/components/overlay-loading-container/loading-overlay.component.d.ts +0 -2
  30. package/libraries/components/overlay-loading-container/loading-overlay.component.d.ts.map +1 -1
  31. package/libraries/components/restart-link/restart-link.component.d.ts +19 -0
  32. package/libraries/components/restart-link/restart-link.component.d.ts.map +1 -0
  33. package/libraries/components/restart-link/restart-link.module.d.ts +10 -0
  34. package/libraries/components/restart-link/restart-link.module.d.ts.map +1 -0
  35. package/libraries/constants/global-constants.d.ts +2 -0
  36. package/libraries/constants/global-constants.d.ts.map +1 -1
  37. package/libraries/pipes/humanize.pipe.d.ts +16 -0
  38. package/libraries/pipes/humanize.pipe.d.ts.map +1 -0
  39. package/libraries/pipes/index.d.ts +1 -0
  40. package/libraries/pipes/index.d.ts.map +1 -1
  41. package/libraries/pipes/shared-pipes.module.d.ts +2 -1
  42. package/libraries/pipes/shared-pipes.module.d.ts.map +1 -1
  43. package/libraries/resolvers/version.resolver.d.ts.map +1 -1
  44. package/libraries/services/refresh-token.service.d.ts +6 -2
  45. package/libraries/services/refresh-token.service.d.ts.map +1 -1
  46. package/libraries/services/smartpark.service.d.ts +3 -1
  47. package/libraries/services/smartpark.service.d.ts.map +1 -1
  48. package/package.json +1 -1
  49. package/src/libraries/theme/_expansion-panel.scss +6 -1
  50. package/src/libraries/theme/mat-components/_mat-nav-list.scss +13 -0
@@ -19,7 +19,7 @@ import * as i1$3 from '@angular/material/tooltip';
19
19
  import { MatTooltipModule } from '@angular/material/tooltip';
20
20
  import * as i1$4 from '@angular/cdk/layout';
21
21
  import moment$1 from 'moment-timezone';
22
- import * as i2$2 from '@angular/material/dialog';
22
+ import * as i2$1 from '@angular/material/dialog';
23
23
  import { MatDialogModule, MAT_DIALOG_DATA, MatDialogConfig, MatDialogState } from '@angular/material/dialog';
24
24
  import * as i1$6 from '@angular/material/snack-bar';
25
25
  import { MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
@@ -37,9 +37,9 @@ import { datadogLogs } from '@datadog/browser-logs';
37
37
  import { HubConnectionBuilder, HttpTransportType, HubConnectionState } from '@microsoft/signalr';
38
38
  import { Workbook } from 'exceljs';
39
39
  import { saveAs } from 'file-saver';
40
- import * as i2$1 from '@angular/platform-browser';
41
40
  import * as i4 from '@angular/material/core';
42
41
  import { MatRippleModule } from '@angular/material/core';
42
+ import * as i2$2 from '@angular/platform-browser';
43
43
  import CryptoJS from 'crypto-js';
44
44
  import * as mixpanel from 'mixpanel-browser';
45
45
  import { PublicClientApplication, BrowserCacheLocation, LogLevel, InteractionType } from '@azure/msal-browser';
@@ -27439,6 +27439,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
27439
27439
  args: [{ name: 'tbFormat', standalone: true }]
27440
27440
  }] });
27441
27441
 
27442
+ class GroupPermissionsPipe {
27443
+ transform(permissions) {
27444
+ const groupPermissions = [];
27445
+ for (const permission of permissions?.filter(p => !p['hide'])) {
27446
+ if (permission.group === PermissionGroup$2.None) {
27447
+ groupPermissions.push(permission);
27448
+ }
27449
+ else {
27450
+ const groupIndex = groupPermissions.findIndex((groupPermissions) => groupPermissions.id === permission.group);
27451
+ if (groupIndex === -1) {
27452
+ const groupPermission = {
27453
+ id: permission.group,
27454
+ permissions: [permission]
27455
+ };
27456
+ groupPermissions.push(groupPermission);
27457
+ }
27458
+ else {
27459
+ groupPermissions[groupIndex].permissions.push(permission);
27460
+ }
27461
+ }
27462
+ }
27463
+ return groupPermissions;
27464
+ }
27465
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GroupPermissionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
27466
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GroupPermissionsPipe, isStandalone: true, name: "groupPermissions" }); }
27467
+ }
27468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GroupPermissionsPipe, decorators: [{
27469
+ type: Pipe,
27470
+ args: [{ name: 'groupPermissions', standalone: true }]
27471
+ }] });
27472
+
27473
+ /**
27474
+ * Transforms a string by replacing all underscores with spaces.
27475
+ *
27476
+ * @param value - The input string that may contain underscores.
27477
+ * @returns The transformed string with underscores replaced by spaces.
27478
+ * Split the string whenever an uppercase letter starts
27479
+ * Returns an empty string if the input is null, undefined, or empty.
27480
+ */
27481
+ class HumanizePipe {
27482
+ transform(value) {
27483
+ if (!value) {
27484
+ return '';
27485
+ }
27486
+ return value.split(/(?=[A-Z])/).join(' ').replace(/_/g, ' ');
27487
+ }
27488
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HumanizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
27489
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: HumanizePipe, isStandalone: true, name: "humanizePipe" }); }
27490
+ }
27491
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HumanizePipe, decorators: [{
27492
+ type: Pipe,
27493
+ args: [{ name: 'humanizePipe', standalone: true }]
27494
+ }] });
27495
+
27442
27496
  var OrderDirection$1;
27443
27497
  (function (OrderDirection) {
27444
27498
  OrderDirection[OrderDirection["Ascending"] = 0] = "Ascending";
@@ -27469,6 +27523,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
27469
27523
  args: [{ name: 'orderBy', standalone: true }]
27470
27524
  }] });
27471
27525
 
27526
+ class OrphanFacilitiesPipe {
27527
+ transform(facilityTreeDtos) {
27528
+ const facilityIds = facilityTreeDtos.map(f => f.id);
27529
+ const orphansFacilities = facilityTreeDtos.filter(ft => facilityIds.indexOf(ft.parent) < 0);
27530
+ return orphansFacilities;
27531
+ }
27532
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrphanFacilitiesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
27533
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OrphanFacilitiesPipe, isStandalone: true, name: "OrphanFacilities" }); }
27534
+ }
27535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrphanFacilitiesPipe, decorators: [{
27536
+ type: Pipe,
27537
+ args: [{ name: 'OrphanFacilities', standalone: true }]
27538
+ }] });
27539
+
27472
27540
  var FrequentParkingActionText;
27473
27541
  (function (FrequentParkingActionText) {
27474
27542
  FrequentParkingActionText["Unknown"] = "unknown";
@@ -27545,6 +27613,14 @@ var FrequentParkingErrorActionText;
27545
27613
  FrequentParkingErrorActionText["Exit"] = "exit";
27546
27614
  })(FrequentParkingErrorActionText || (FrequentParkingErrorActionText = {}));
27547
27615
 
27616
+ var LanguageTypeKeys;
27617
+ (function (LanguageTypeKeys) {
27618
+ LanguageTypeKeys["English"] = "en";
27619
+ LanguageTypeKeys["French"] = "fr";
27620
+ LanguageTypeKeys["Spanish"] = "es";
27621
+ LanguageTypeKeys["Hebrew"] = "he";
27622
+ })(LanguageTypeKeys || (LanguageTypeKeys = {}));
27623
+
27548
27624
  //----------------------
27549
27625
  // <auto-generated>
27550
27626
  // Generated using the NSwag toolchain v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)
@@ -87093,6 +87169,210 @@ const MinDisplayTimeout = 1;
87093
87169
  const DefaultImageTimeout = 10;
87094
87170
  ///// Vendor /////
87095
87171
  const MaxIPV4TextLength = 15;
87172
+ const RTL_LANGUAGES = [LanguageTypeKeys.Hebrew];
87173
+
87174
+ const DATE_FORMAT_YYYY_MM_DD = 'YYYY-MM-DD';
87175
+ const DATE_FORMAT_YYYY_MM_DD_HH_MM = 'YYYY-MM-DD HH:mm';
87176
+ var MiddayPeriod;
87177
+ (function (MiddayPeriod) {
87178
+ MiddayPeriod[MiddayPeriod["AM"] = 1] = "AM";
87179
+ MiddayPeriod[MiddayPeriod["PM"] = 2] = "PM";
87180
+ })(MiddayPeriod || (MiddayPeriod = {}));
87181
+ function parseSmartParkTime(value) {
87182
+ return moment$1(DEFAULT_SMART_PARK_DATE_TIME).seconds(value);
87183
+ }
87184
+ function parseDateTimeToSparkParkTime(selectedDate) {
87185
+ if (!selectedDate) {
87186
+ return null;
87187
+ }
87188
+ const date2 = moment$1(selectedDate);
87189
+ // If the date we want is in DST then to avoid incorrect results we need to add it 1 hour
87190
+ if (date2.isDST()) {
87191
+ date2.add({ hour: 1 });
87192
+ }
87193
+ return dateDiffInSeconds(moment$1(DEFAULT_SMART_PARK_DATE_TIME), date2);
87194
+ }
87195
+ function getDateTimeInSeconds(date, time) {
87196
+ date.setMinutes(time.minutes);
87197
+ date.setHours(time.hours);
87198
+ const dateTimeInSeconds = parseDateTimeToSparkParkTime(date);
87199
+ return dateTimeInSeconds;
87200
+ }
87201
+ function dateDiffInSeconds(date1, date2) {
87202
+ // moment ignore and return date with system time zone - using format correct the date object
87203
+ const defaultSmartParkTimeUTC = moment$1.tz(date1, 'utc');
87204
+ const selectedDateFormatted = moment$1(date2.format("YYYY-MM-DD HH:mm:ss"));
87205
+ return selectedDateFormatted.diff(defaultSmartParkTimeUTC, 'seconds');
87206
+ }
87207
+ function humanizeTimeElapsed(from, to) {
87208
+ return moment$1.duration(adjustForTimezone(from).getTime() - to.getTime()).humanize();
87209
+ }
87210
+ function humanizeUtcTimeElapsed(from, to) {
87211
+ return moment$1.duration(from.getTime() - to.getTime()).humanize();
87212
+ }
87213
+ function diffInMillis(value, isAbsolute) {
87214
+ const diff = moment$1.duration(moment$1(value).diff(moment$1())).asMilliseconds();
87215
+ if (isAbsolute) {
87216
+ return Math.abs(diff);
87217
+ }
87218
+ else {
87219
+ return diff;
87220
+ }
87221
+ }
87222
+ function getMomentNullable(date) {
87223
+ return date ? moment$1(date) : null;
87224
+ }
87225
+ function getUtcMomentNullable(date) {
87226
+ return date ? moment$1(date).utc(true) : null;
87227
+ }
87228
+ // When subtract the offset from the current date,
87229
+ // We get a date that if you remove the offset you will get UTCkind
87230
+ // of the time selected
87231
+ function adjustForTimezone(date) {
87232
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes() - date.getTimezoneOffset(), date.getSeconds());
87233
+ }
87234
+ // re-adjust method when need to set back the timezoneoffset after using adjustForTimezone
87235
+ function readjustForTimezone(date) {
87236
+ return !date ? null : new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes() + date.getTimezoneOffset(), date.getSeconds());
87237
+ }
87238
+ function isMaxDaysRangeValid(validFrom, validTo, allowedNumberOfDays) {
87239
+ let maxDaysRangeValid = true;
87240
+ if (validFrom && validTo) {
87241
+ const validFromDate = moment$1(validFrom);
87242
+ const validToDate = moment$1(validTo);
87243
+ const numberOfDays = moment$1.duration(validToDate.diff(validFromDate)).asDays();
87244
+ maxDaysRangeValid = !(numberOfDays > allowedNumberOfDays);
87245
+ }
87246
+ return maxDaysRangeValid;
87247
+ }
87248
+ function areDatesIdentical(fromDate, toDate) {
87249
+ if (fromDate && toDate) {
87250
+ const validFromDate = fromDate;
87251
+ const validToDate = toDate;
87252
+ validFromDate.setSeconds(0, 0);
87253
+ validToDate.setSeconds(0, 0);
87254
+ return validFromDate.getTime() === validToDate.getTime();
87255
+ }
87256
+ }
87257
+ function getUserTimeZone() {
87258
+ return moment$1.tz.guess();
87259
+ }
87260
+ function convertFormatWithoutTime(format) {
87261
+ let formatValues = format.split("h");
87262
+ if (formatValues.length === NO_RESULT) {
87263
+ formatValues = format.split("H");
87264
+ }
87265
+ return formatValues[0];
87266
+ }
87267
+ function getDateWithoutTime(rowValueTime, dateFormat) {
87268
+ const datePipe = new DatePipe('en-US');
87269
+ const date = rowValueTime?.toDate();
87270
+ return datePipe.transform(date, convertFormatWithoutTime(dateFormat));
87271
+ }
87272
+ function getMomentWithoutTime(momentDate) {
87273
+ const formattedDate = momentDate.format(DATE_FORMAT_YYYY_MM_DD);
87274
+ return new Date(formattedDate);
87275
+ }
87276
+ function getMomenWithTime(momentDate) {
87277
+ const formattedDate = momentDate.format(DATE_FORMAT_YYYY_MM_DD_HH_MM);
87278
+ return adjustForTimezone(new Date(formattedDate));
87279
+ }
87280
+ function formatMinutesToTimeNumber(value) {
87281
+ if (value > 0) {
87282
+ return `${Math.floor(value / 60).toString().padStart(2, '0')}${(value % 60).toString().padStart(2, '0')}`;
87283
+ }
87284
+ return null;
87285
+ }
87286
+ function formatTimeWithoutMidnight(value) {
87287
+ return formatTimeWithSeparator(value, false);
87288
+ }
87289
+ function formatTimeWithMidnight(value) {
87290
+ return formatTimeWithSeparator(value, true);
87291
+ }
87292
+ function formatTimeWithoutSeperatorAndWithMidnight(value) {
87293
+ return formatTimeWithoutSeparator(value, true);
87294
+ }
87295
+ function formatTimeWithoutSeperatorAndWithoutMidnight(value) {
87296
+ return formatTimeWithoutSeparator(value, false);
87297
+ }
87298
+ function formatTimeToMinutes(value) {
87299
+ value = value?.toString();
87300
+ if (value?.length === VALID_TIME_MAX_LENGTH) {
87301
+ const h = ((+value[0] * TENS_MULTIPLIER) + +value[1]) * MINUTES_PER_HOUR;
87302
+ const m = +value[2] * TENS_MULTIPLIER + +value[3];
87303
+ return h + m;
87304
+ }
87305
+ return null;
87306
+ }
87307
+ function minutesToTime(minutes) {
87308
+ return minutes >= 0 ? { hours: Math.floor(minutes / MINUTES_PER_HOUR), minutes: minutes % MINUTES_PER_HOUR } : null;
87309
+ }
87310
+ function timeToMinutes(time) {
87311
+ return time ? (time.hours * MINUTES_PER_HOUR) + time.minutes : 0;
87312
+ }
87313
+ function timeToMoment(time) {
87314
+ if (!time || time.hours == null || time.minutes == null) {
87315
+ return null;
87316
+ }
87317
+ let { hours, minutes, seconds, middayPeriod } = time;
87318
+ if (middayPeriod === MiddayPeriod.PM && hours < 12) {
87319
+ hours += 12;
87320
+ }
87321
+ else if (middayPeriod === MiddayPeriod.AM && hours === 12) {
87322
+ hours = 0;
87323
+ }
87324
+ return moment$1().hours(hours).minutes(minutes).seconds(seconds ?? 0);
87325
+ }
87326
+ function getFormattedTime(minutes, isMidnightEnable, format, defaultValue = null) {
87327
+ if (isMidnightEnable || minutes > 0) {
87328
+ return convertMinutesToTime(minutes, format);
87329
+ }
87330
+ return defaultValue !== null ? convertMinutesToTime(defaultValue, format) : null;
87331
+ }
87332
+ function convertMinutesToTime(minutes, format) {
87333
+ // Determine if the format is 12-hour or 24-hour and extract the time part
87334
+ const timeFormat = format.toLocaleLowerCase().includes('a') ? 'hh:mm A' : 'HH:mm';
87335
+ return moment$1().startOf('day').add(minutes, 'minutes').format(timeFormat);
87336
+ }
87337
+ // Wrapper method to format minutes with ":" as separator (e.g., "HH:mm")
87338
+ function formatTimeWithSeparator(value, isMidnightEnable) {
87339
+ return formatTime(value, isMidnightEnable, ':');
87340
+ }
87341
+ // Wrapper method to format minutes without separator (e.g., "HHmm")
87342
+ function formatTimeWithoutSeparator(value, isMidnightEnable) {
87343
+ return formatTime(value, isMidnightEnable, '');
87344
+ }
87345
+ // Core method for formatting minutes with flexibility in output format
87346
+ function formatTime(value, isMidnightEnabled, separator = ':') {
87347
+ if (isMidnightEnabled || value > 0) {
87348
+ const hours = Math.floor(value / MINUTES_PER_HOUR).toString().padStart(2, '0');
87349
+ const minutes = (value % MINUTES_PER_HOUR).toString().padStart(2, '0');
87350
+ return `${hours}${separator}${minutes}`;
87351
+ }
87352
+ return null;
87353
+ }
87354
+ function formatTimeToString(obj) {
87355
+ let result = '-';
87356
+ if (obj) {
87357
+ const hours = obj.hours?.toString().padStart(2, '0') ?? '00';
87358
+ const minutes = obj.minutes?.toString().padStart(2, '0') ?? '00';
87359
+ const seconds = obj.seconds?.toString().padStart(2, '0') ?? '00';
87360
+ result = `${hours}:${minutes}:${seconds}`;
87361
+ }
87362
+ return result;
87363
+ }
87364
+
87365
+ class SmartparkDateTimePipe {
87366
+ transform(seconds = 0) {
87367
+ return parseSmartParkTime(seconds).toDate();
87368
+ }
87369
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
87370
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SmartparkDateTimePipe, isStandalone: true, name: "smartparkDatetime" }); }
87371
+ }
87372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkDateTimePipe, decorators: [{
87373
+ type: Pipe,
87374
+ args: [{ name: 'smartparkDatetime', standalone: true }]
87375
+ }] });
87096
87376
 
87097
87377
  var OrderBy;
87098
87378
  (function (OrderBy) {
@@ -89155,14 +89435,6 @@ var InternetConnectionStatus;
89155
89435
  InternetConnectionStatus["Disconnected"] = "disconnected";
89156
89436
  })(InternetConnectionStatus || (InternetConnectionStatus = {}));
89157
89437
 
89158
- var LanguageTypeKeys;
89159
- (function (LanguageTypeKeys) {
89160
- LanguageTypeKeys["English"] = "en";
89161
- LanguageTypeKeys["French"] = "fr";
89162
- LanguageTypeKeys["Spanish"] = "es";
89163
- LanguageTypeKeys["Hebrew"] = "he";
89164
- })(LanguageTypeKeys || (LanguageTypeKeys = {}));
89165
-
89166
89438
  var LoopStatus;
89167
89439
  (function (LoopStatus) {
89168
89440
  LoopStatus[LoopStatus["Off"] = 0] = "Off";
@@ -90001,254 +90273,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
90001
90273
  args: [{ name: 'zerofyNegative', standalone: true }]
90002
90274
  }] });
90003
90275
 
90004
- const DATE_FORMAT_YYYY_MM_DD = 'YYYY-MM-DD';
90005
- const DATE_FORMAT_YYYY_MM_DD_HH_MM = 'YYYY-MM-DD HH:mm';
90006
- var MiddayPeriod;
90007
- (function (MiddayPeriod) {
90008
- MiddayPeriod[MiddayPeriod["AM"] = 1] = "AM";
90009
- MiddayPeriod[MiddayPeriod["PM"] = 2] = "PM";
90010
- })(MiddayPeriod || (MiddayPeriod = {}));
90011
- function parseSmartParkTime(value) {
90012
- return moment$1(DEFAULT_SMART_PARK_DATE_TIME).seconds(value);
90013
- }
90014
- function parseDateTimeToSparkParkTime(selectedDate) {
90015
- if (!selectedDate) {
90016
- return null;
90017
- }
90018
- const date2 = moment$1(selectedDate);
90019
- // If the date we want is in DST then to avoid incorrect results we need to add it 1 hour
90020
- if (date2.isDST()) {
90021
- date2.add({ hour: 1 });
90022
- }
90023
- return dateDiffInSeconds(moment$1(DEFAULT_SMART_PARK_DATE_TIME), date2);
90024
- }
90025
- function getDateTimeInSeconds(date, time) {
90026
- date.setMinutes(time.minutes);
90027
- date.setHours(time.hours);
90028
- const dateTimeInSeconds = parseDateTimeToSparkParkTime(date);
90029
- return dateTimeInSeconds;
90030
- }
90031
- function dateDiffInSeconds(date1, date2) {
90032
- // moment ignore and return date with system time zone - using format correct the date object
90033
- const defaultSmartParkTimeUTC = moment$1.tz(date1, 'utc');
90034
- const selectedDateFormatted = moment$1(date2.format("YYYY-MM-DD HH:mm:ss"));
90035
- return selectedDateFormatted.diff(defaultSmartParkTimeUTC, 'seconds');
90036
- }
90037
- function humanizeTimeElapsed(from, to) {
90038
- return moment$1.duration(adjustForTimezone(from).getTime() - to.getTime()).humanize();
90039
- }
90040
- function humanizeUtcTimeElapsed(from, to) {
90041
- return moment$1.duration(from.getTime() - to.getTime()).humanize();
90042
- }
90043
- function diffInMillis(value, isAbsolute) {
90044
- const diff = moment$1.duration(moment$1(value).diff(moment$1())).asMilliseconds();
90045
- if (isAbsolute) {
90046
- return Math.abs(diff);
90047
- }
90048
- else {
90049
- return diff;
90050
- }
90051
- }
90052
- function getMomentNullable(date) {
90053
- return date ? moment$1(date) : null;
90054
- }
90055
- function getUtcMomentNullable(date) {
90056
- return date ? moment$1(date).utc(true) : null;
90057
- }
90058
- // When subtract the offset from the current date,
90059
- // We get a date that if you remove the offset you will get UTCkind
90060
- // of the time selected
90061
- function adjustForTimezone(date) {
90062
- return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes() - date.getTimezoneOffset(), date.getSeconds());
90063
- }
90064
- // re-adjust method when need to set back the timezoneoffset after using adjustForTimezone
90065
- function readjustForTimezone(date) {
90066
- return !date ? null : new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes() + date.getTimezoneOffset(), date.getSeconds());
90067
- }
90068
- function isMaxDaysRangeValid(validFrom, validTo, allowedNumberOfDays) {
90069
- let maxDaysRangeValid = true;
90070
- if (validFrom && validTo) {
90071
- const validFromDate = moment$1(validFrom);
90072
- const validToDate = moment$1(validTo);
90073
- const numberOfDays = moment$1.duration(validToDate.diff(validFromDate)).asDays();
90074
- maxDaysRangeValid = !(numberOfDays > allowedNumberOfDays);
90075
- }
90076
- return maxDaysRangeValid;
90077
- }
90078
- function areDatesIdentical(fromDate, toDate) {
90079
- if (fromDate && toDate) {
90080
- const validFromDate = fromDate;
90081
- const validToDate = toDate;
90082
- validFromDate.setSeconds(0, 0);
90083
- validToDate.setSeconds(0, 0);
90084
- return validFromDate.getTime() === validToDate.getTime();
90085
- }
90086
- }
90087
- function getUserTimeZone() {
90088
- return moment$1.tz.guess();
90089
- }
90090
- function convertFormatWithoutTime(format) {
90091
- let formatValues = format.split("h");
90092
- if (formatValues.length === NO_RESULT) {
90093
- formatValues = format.split("H");
90094
- }
90095
- return formatValues[0];
90096
- }
90097
- function getDateWithoutTime(rowValueTime, dateFormat) {
90098
- const datePipe = new DatePipe('en-US');
90099
- const date = rowValueTime?.toDate();
90100
- return datePipe.transform(date, convertFormatWithoutTime(dateFormat));
90101
- }
90102
- function getMomentWithoutTime(momentDate) {
90103
- const formattedDate = momentDate.format(DATE_FORMAT_YYYY_MM_DD);
90104
- return new Date(formattedDate);
90105
- }
90106
- function getMomenWithTime(momentDate) {
90107
- const formattedDate = momentDate.format(DATE_FORMAT_YYYY_MM_DD_HH_MM);
90108
- return adjustForTimezone(new Date(formattedDate));
90109
- }
90110
- function formatMinutesToTimeNumber(value) {
90111
- if (value > 0) {
90112
- return `${Math.floor(value / 60).toString().padStart(2, '0')}${(value % 60).toString().padStart(2, '0')}`;
90113
- }
90114
- return null;
90115
- }
90116
- function formatTimeWithoutMidnight(value) {
90117
- return formatTimeWithSeparator(value, false);
90118
- }
90119
- function formatTimeWithMidnight(value) {
90120
- return formatTimeWithSeparator(value, true);
90121
- }
90122
- function formatTimeWithoutSeperatorAndWithMidnight(value) {
90123
- return formatTimeWithoutSeparator(value, true);
90124
- }
90125
- function formatTimeWithoutSeperatorAndWithoutMidnight(value) {
90126
- return formatTimeWithoutSeparator(value, false);
90127
- }
90128
- function formatTimeToMinutes(value) {
90129
- value = value?.toString();
90130
- if (value?.length === VALID_TIME_MAX_LENGTH) {
90131
- const h = ((+value[0] * TENS_MULTIPLIER) + +value[1]) * MINUTES_PER_HOUR;
90132
- const m = +value[2] * TENS_MULTIPLIER + +value[3];
90133
- return h + m;
90134
- }
90135
- return null;
90136
- }
90137
- function minutesToTime(minutes) {
90138
- return minutes >= 0 ? { hours: Math.floor(minutes / MINUTES_PER_HOUR), minutes: minutes % MINUTES_PER_HOUR } : null;
90139
- }
90140
- function timeToMinutes(time) {
90141
- return time ? (time.hours * MINUTES_PER_HOUR) + time.minutes : 0;
90142
- }
90143
- function timeToMoment(time) {
90144
- if (!time || time.hours == null || time.minutes == null) {
90145
- return null;
90146
- }
90147
- let { hours, minutes, seconds, middayPeriod } = time;
90148
- if (middayPeriod === MiddayPeriod.PM && hours < 12) {
90149
- hours += 12;
90150
- }
90151
- else if (middayPeriod === MiddayPeriod.AM && hours === 12) {
90152
- hours = 0;
90153
- }
90154
- return moment$1().hours(hours).minutes(minutes).seconds(seconds ?? 0);
90155
- }
90156
- function getFormattedTime(minutes, isMidnightEnable, format, defaultValue = null) {
90157
- if (isMidnightEnable || minutes > 0) {
90158
- return convertMinutesToTime(minutes, format);
90159
- }
90160
- return defaultValue !== null ? convertMinutesToTime(defaultValue, format) : null;
90161
- }
90162
- function convertMinutesToTime(minutes, format) {
90163
- // Determine if the format is 12-hour or 24-hour and extract the time part
90164
- const timeFormat = format.toLocaleLowerCase().includes('a') ? 'hh:mm A' : 'HH:mm';
90165
- return moment$1().startOf('day').add(minutes, 'minutes').format(timeFormat);
90166
- }
90167
- // Wrapper method to format minutes with ":" as separator (e.g., "HH:mm")
90168
- function formatTimeWithSeparator(value, isMidnightEnable) {
90169
- return formatTime(value, isMidnightEnable, ':');
90170
- }
90171
- // Wrapper method to format minutes without separator (e.g., "HHmm")
90172
- function formatTimeWithoutSeparator(value, isMidnightEnable) {
90173
- return formatTime(value, isMidnightEnable, '');
90174
- }
90175
- // Core method for formatting minutes with flexibility in output format
90176
- function formatTime(value, isMidnightEnabled, separator = ':') {
90177
- if (isMidnightEnabled || value > 0) {
90178
- const hours = Math.floor(value / MINUTES_PER_HOUR).toString().padStart(2, '0');
90179
- const minutes = (value % MINUTES_PER_HOUR).toString().padStart(2, '0');
90180
- return `${hours}${separator}${minutes}`;
90181
- }
90182
- return null;
90183
- }
90184
- function formatTimeToString(obj) {
90185
- let result = '-';
90186
- if (obj) {
90187
- const hours = obj.hours?.toString().padStart(2, '0') ?? '00';
90188
- const minutes = obj.minutes?.toString().padStart(2, '0') ?? '00';
90189
- const seconds = obj.seconds?.toString().padStart(2, '0') ?? '00';
90190
- result = `${hours}:${minutes}:${seconds}`;
90191
- }
90192
- return result;
90193
- }
90194
-
90195
- class SmartparkDateTimePipe {
90196
- transform(seconds = 0) {
90197
- return parseSmartParkTime(seconds).toDate();
90198
- }
90199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
90200
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SmartparkDateTimePipe, isStandalone: true, name: "smartparkDatetime" }); }
90201
- }
90202
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkDateTimePipe, decorators: [{
90203
- type: Pipe,
90204
- args: [{ name: 'smartparkDatetime', standalone: true }]
90205
- }] });
90206
-
90207
- class OrphanFacilitiesPipe {
90208
- transform(facilityTreeDtos) {
90209
- const facilityIds = facilityTreeDtos.map(f => f.id);
90210
- const orphansFacilities = facilityTreeDtos.filter(ft => facilityIds.indexOf(ft.parent) < 0);
90211
- return orphansFacilities;
90212
- }
90213
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrphanFacilitiesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
90214
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: OrphanFacilitiesPipe, isStandalone: true, name: "OrphanFacilities" }); }
90215
- }
90216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrphanFacilitiesPipe, decorators: [{
90217
- type: Pipe,
90218
- args: [{ name: 'OrphanFacilities', standalone: true }]
90219
- }] });
90220
-
90221
- class GroupPermissionsPipe {
90222
- transform(permissions) {
90223
- const groupPermissions = [];
90224
- for (const permission of permissions?.filter(p => !p['hide'])) {
90225
- if (permission.group === PermissionGroup$2.None) {
90226
- groupPermissions.push(permission);
90227
- }
90228
- else {
90229
- const groupIndex = groupPermissions.findIndex((groupPermissions) => groupPermissions.id === permission.group);
90230
- if (groupIndex === -1) {
90231
- const groupPermission = {
90232
- id: permission.group,
90233
- permissions: [permission]
90234
- };
90235
- groupPermissions.push(groupPermission);
90236
- }
90237
- else {
90238
- groupPermissions[groupIndex].permissions.push(permission);
90239
- }
90240
- }
90241
- }
90242
- return groupPermissions;
90243
- }
90244
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GroupPermissionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
90245
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: GroupPermissionsPipe, isStandalone: true, name: "groupPermissions" }); }
90246
- }
90247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GroupPermissionsPipe, decorators: [{
90248
- type: Pipe,
90249
- args: [{ name: 'groupPermissions', standalone: true }]
90250
- }] });
90251
-
90252
90276
  class SharedPipesModule {
90253
90277
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
90254
90278
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SharedPipesModule, imports: [SmartparkDateTimePipe,
@@ -90274,7 +90298,8 @@ class SharedPipesModule {
90274
90298
  ZerofyNegativePipe,
90275
90299
  SubstrHightlightPipe,
90276
90300
  GroupPermissionsPipe,
90277
- OrphanFacilitiesPipe], exports: [SmartparkDateTimePipe,
90301
+ OrphanFacilitiesPipe,
90302
+ HumanizePipe], exports: [SmartparkDateTimePipe,
90278
90303
  CLogItPipe,
90279
90304
  CentToCoinPipe,
90280
90305
  CurlyToBoldPipe,
@@ -90297,7 +90322,8 @@ class SharedPipesModule {
90297
90322
  ZerofyNegativePipe,
90298
90323
  SubstrHightlightPipe,
90299
90324
  GroupPermissionsPipe,
90300
- OrphanFacilitiesPipe] }); }
90325
+ OrphanFacilitiesPipe,
90326
+ HumanizePipe] }); }
90301
90327
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedPipesModule }); }
90302
90328
  }
90303
90329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedPipesModule, decorators: [{
@@ -90329,6 +90355,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
90329
90355
  SubstrHightlightPipe,
90330
90356
  GroupPermissionsPipe,
90331
90357
  OrphanFacilitiesPipe,
90358
+ HumanizePipe,
90332
90359
  ],
90333
90360
  exports: [
90334
90361
  SmartparkDateTimePipe,
@@ -90355,6 +90382,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
90355
90382
  SubstrHightlightPipe,
90356
90383
  GroupPermissionsPipe,
90357
90384
  OrphanFacilitiesPipe,
90385
+ HumanizePipe,
90358
90386
  ],
90359
90387
  }]
90360
90388
  }] });
@@ -97075,6 +97103,7 @@ class MessageBarContainerComponent {
97075
97103
  [MessageBarStatus.Warning]: 'alert-warning'
97076
97104
  };
97077
97105
  return {
97106
+ 'ready': true,
97078
97107
  'alert-container': true,
97079
97108
  'alert-container-mobile': this.isMobileAppMode,
97080
97109
  'alert-dismissable': true,
@@ -97082,14 +97111,14 @@ class MessageBarContainerComponent {
97082
97111
  };
97083
97112
  }
97084
97113
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageBarContainerComponent, deps: [{ token: AppConfigService }, { token: MAT_SNACK_BAR_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
97085
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MessageBarContainerComponent, isStandalone: true, selector: "message-bar-container", inputs: { messageInfo: "messageInfo", fade: "fade" }, ngImport: i0, template: "<div data-qa=\"messageInfo\" [ngClass]=\"ngClass\">\n <container-element [ngSwitch]=\"messageInfo.status\">\n <tb-icon *ngSwitchCase=\"MessageBarType.Success\" [settings]=\"IconsHelper.success_circle\" [setCursorPointer]=\"false\"\n class=\"tb-successCircle\">\n </tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Error\" [settings]=\"IconsHelper.redX\" [setCursorPointer]=\"false\"\n class=\"tb-redx\"></tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Warning\" [settings]=\"IconsHelper.warning\" [setCursorPointer]=\"false\"\n class=\"tb-warning\"></tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Info\" [settings]=\"IconsHelper.info_blue\" [setCursorPointer]=\"false\"\n class=\"tb-info\"></tb-icon>\n </container-element>\n <span class=\"msg-text\" [innerHTML]=\"messageInfo.message\"></span>\n <ng-container *ngIf=\"messageInfo.action?.component\">\n <ng-container *ngComponentOutlet=\"messageInfo.action.component\"></ng-container>\n </ng-container>\n</div>", styles: [":host{display:flex;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97114
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MessageBarContainerComponent, isStandalone: true, selector: "message-bar-container", inputs: { messageInfo: "messageInfo", fade: "fade" }, ngImport: i0, template: "<div class=\"message-container\" data-qa=\"messageInfo\" [ngClass]=\"ngClass\">\n <container-element [ngSwitch]=\"messageInfo.status\">\n <tb-icon *ngSwitchCase=\"MessageBarType.Success\" [settings]=\"IconsHelper.success_circle\" [setCursorPointer]=\"false\"\n class=\"tb-successCircle\">\n </tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Error\" [settings]=\"IconsHelper.redX\" [setCursorPointer]=\"false\"\n class=\"tb-redx\"></tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Warning\" [settings]=\"IconsHelper.warning\" [setCursorPointer]=\"false\"\n class=\"tb-warning\"></tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Info\" [settings]=\"IconsHelper.info_blue\" [setCursorPointer]=\"false\"\n class=\"tb-info\"></tb-icon>\n </container-element>\n <span class=\"msg-text\" [innerHTML]=\"messageInfo.message\"></span>\n <ng-container *ngIf=\"messageInfo.action?.component\">\n <ng-container *ngComponentOutlet=\"messageInfo.action.component\"></ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:flex;width:100%}.message-container{opacity:0}.message-container.ready{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
97086
97115
  }
97087
97116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageBarContainerComponent, decorators: [{
97088
97117
  type: Component,
97089
97118
  args: [{ selector: 'message-bar-container', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
97090
97119
  CommonModule,
97091
97120
  IconModule,
97092
- ], template: "<div data-qa=\"messageInfo\" [ngClass]=\"ngClass\">\n <container-element [ngSwitch]=\"messageInfo.status\">\n <tb-icon *ngSwitchCase=\"MessageBarType.Success\" [settings]=\"IconsHelper.success_circle\" [setCursorPointer]=\"false\"\n class=\"tb-successCircle\">\n </tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Error\" [settings]=\"IconsHelper.redX\" [setCursorPointer]=\"false\"\n class=\"tb-redx\"></tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Warning\" [settings]=\"IconsHelper.warning\" [setCursorPointer]=\"false\"\n class=\"tb-warning\"></tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Info\" [settings]=\"IconsHelper.info_blue\" [setCursorPointer]=\"false\"\n class=\"tb-info\"></tb-icon>\n </container-element>\n <span class=\"msg-text\" [innerHTML]=\"messageInfo.message\"></span>\n <ng-container *ngIf=\"messageInfo.action?.component\">\n <ng-container *ngComponentOutlet=\"messageInfo.action.component\"></ng-container>\n </ng-container>\n</div>", styles: [":host{display:flex;width:100%}\n"] }]
97121
+ ], template: "<div class=\"message-container\" data-qa=\"messageInfo\" [ngClass]=\"ngClass\">\n <container-element [ngSwitch]=\"messageInfo.status\">\n <tb-icon *ngSwitchCase=\"MessageBarType.Success\" [settings]=\"IconsHelper.success_circle\" [setCursorPointer]=\"false\"\n class=\"tb-successCircle\">\n </tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Error\" [settings]=\"IconsHelper.redX\" [setCursorPointer]=\"false\"\n class=\"tb-redx\"></tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Warning\" [settings]=\"IconsHelper.warning\" [setCursorPointer]=\"false\"\n class=\"tb-warning\"></tb-icon>\n <tb-icon *ngSwitchCase=\"MessageBarType.Info\" [settings]=\"IconsHelper.info_blue\" [setCursorPointer]=\"false\"\n class=\"tb-info\"></tb-icon>\n </container-element>\n <span class=\"msg-text\" [innerHTML]=\"messageInfo.message\"></span>\n <ng-container *ngIf=\"messageInfo.action?.component\">\n <ng-container *ngComponentOutlet=\"messageInfo.action.component\"></ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:flex;width:100%}.message-container{opacity:0}.message-container.ready{opacity:1}\n"] }]
97093
97122
  }], ctorParameters: () => [{ type: AppConfigService }, { type: undefined, decorators: [{
97094
97123
  type: Optional
97095
97124
  }, {
@@ -103515,110 +103544,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
103515
103544
  type: Injectable
103516
103545
  }], ctorParameters: () => [{ type: i1$2.Store }, { type: FacilityServiceProxy }] });
103517
103546
 
103518
- // Module
103519
-
103520
- ;
103521
-
103522
- class MessageBarModule {
103523
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
103524
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MessageBarModule, declarations: [MessageBarComponent], imports: [CommonModule,
103525
- MessageBarContainerComponent,
103526
- MatSnackBarModule,
103527
- MatDialogModule], exports: [CommonModule,
103528
- MessageBarComponent] }); }
103529
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageBarModule, imports: [CommonModule,
103530
- MessageBarContainerComponent,
103531
- MatSnackBarModule,
103532
- MatDialogModule, CommonModule] }); }
103533
- }
103534
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageBarModule, decorators: [{
103535
- type: NgModule,
103536
- args: [{
103537
- declarations: [
103538
- MessageBarComponent,
103539
- ],
103540
- imports: [
103541
- CommonModule,
103542
- MessageBarContainerComponent,
103543
- MatSnackBarModule,
103544
- MatDialogModule,
103545
- ],
103546
- exports: [
103547
- CommonModule,
103548
- MessageBarComponent,
103549
- ],
103550
- providers: []
103551
- }]
103552
- }] });
103553
-
103554
- // Services
103555
-
103556
- class EmptyResultsComponent extends BaseComponent {
103557
- constructor() {
103558
- super();
103559
- }
103560
- ngOnInit() {
103561
- }
103562
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
103563
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EmptyResultsComponent, isStandalone: true, selector: "tb-empty-results", inputs: { options: "options" }, usesInheritance: true, ngImport: i0, template: "<div class=\"empty-results-wrapper {{options?.cssClass}}\">\n <ng-container *ngIf=\"options?.searchValue else noMessageValue\">\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate:{ searchValue: options?.searchValue}\"></span>\n </ng-container>\n <ng-template #noMessageValue>\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate\"></span>\n </ng-template>\n <tb-icon *ngIf=\"options?.tooltip?.icon\" [settings]=\"options?.tooltip?.icon\" class=\"tb-icon-30\" [matTooltip]=\"options?.tooltip?.text | translate\"\n [matTooltipPosition]=\"options?.tooltip?.position\">\n </tb-icon>\n</div>", styles: [":host{display:flex;flex-direction:column;flex-grow:1}:host.tb-mobile-search-validate-ticket{border:none}.empty-results-wrapper{display:flex;flex:1;justify-content:center}.empty-results-wrapper.tb-search-validate-ticket,.empty-results-wrapper.tb-mobile-search-validate-ticket{flex:unset}.empty-results-wrapper.tb-mobile-search-validate-ticket span{font-family:Quicksand,Quicksand Local,Roboto,Roboto Local,sans-serif;font-size:17px;font-weight:700;text-align:center}.empty-results-wrapper.tb-mobile-search-validate-ticket tb-icon{display:none}.empty-results-wrapper .empty-results-message{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;color:#919eab;cursor:default;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
103564
- }
103565
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyResultsComponent, decorators: [{
103566
- type: Component,
103567
- args: [{ selector: 'tb-empty-results', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
103568
- CommonModule,
103569
- IconModule,
103570
- LocalizationModule,
103571
- MatTooltipModule,
103572
- ], template: "<div class=\"empty-results-wrapper {{options?.cssClass}}\">\n <ng-container *ngIf=\"options?.searchValue else noMessageValue\">\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate:{ searchValue: options?.searchValue}\"></span>\n </ng-container>\n <ng-template #noMessageValue>\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate\"></span>\n </ng-template>\n <tb-icon *ngIf=\"options?.tooltip?.icon\" [settings]=\"options?.tooltip?.icon\" class=\"tb-icon-30\" [matTooltip]=\"options?.tooltip?.text | translate\"\n [matTooltipPosition]=\"options?.tooltip?.position\">\n </tb-icon>\n</div>", styles: [":host{display:flex;flex-direction:column;flex-grow:1}:host.tb-mobile-search-validate-ticket{border:none}.empty-results-wrapper{display:flex;flex:1;justify-content:center}.empty-results-wrapper.tb-search-validate-ticket,.empty-results-wrapper.tb-mobile-search-validate-ticket{flex:unset}.empty-results-wrapper.tb-mobile-search-validate-ticket span{font-family:Quicksand,Quicksand Local,Roboto,Roboto Local,sans-serif;font-size:17px;font-weight:700;text-align:center}.empty-results-wrapper.tb-mobile-search-validate-ticket tb-icon{display:none}.empty-results-wrapper .empty-results-message{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;color:#919eab;cursor:default;text-align:center}\n"] }]
103573
- }], ctorParameters: () => [], propDecorators: { options: [{
103574
- type: Input
103575
- }] } });
103576
-
103577
- class LoadingOverlayComponent extends BaseComponent {
103578
- get loadingOverlayOptions() {
103579
- return this._loadingOverlayOptions;
103580
- }
103581
- set loadingOverlayOptions(loadingOverlayOptions) {
103582
- this._loadingOverlayOptions = loadingOverlayOptions;
103583
- this.init(loadingOverlayOptions);
103584
- }
103585
- constructor(actionStatusService) {
103586
- super();
103587
- this.actionStatusService = actionStatusService;
103588
- this.IconsHelper = IconsHelper;
103589
- this.SpinnerDiameterSize = SpinnerDiameterSize;
103590
- }
103591
- init(loadingOverlayOptions) {
103592
- if (loadingOverlayOptions?.actions) {
103593
- const actions = loadingOverlayOptions.actions instanceof Array ? loadingOverlayOptions.actions : [loadingOverlayOptions.actions];
103594
- if (!loadingOverlayOptions.loading$) {
103595
- loadingOverlayOptions.loading$ = this.actionStatusService.actionsExecuting$(actions);
103596
- }
103597
- if (!loadingOverlayOptions.ignoreError && !loadingOverlayOptions.hasError$) {
103598
- loadingOverlayOptions.hasError$ = this.actionStatusService.actionsErrored$(actions);
103599
- }
103600
- }
103601
- }
103602
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingOverlayComponent, deps: [{ token: ActionStatusService }], target: i0.ɵɵFactoryTarget.Component }); }
103603
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoadingOverlayComponent, isStandalone: true, selector: "tb-loading-overlay", inputs: { data: "data", loadingOverlayOptions: "loadingOverlayOptions" }, usesInheritance: true, ngImport: i0, template: "<div\n *tbVar=\"(loadingOverlayOptions?.loading || (loadingOverlayOptions?.loading$ | async) || (loadingOverlayOptions?.loadingSignal && loadingOverlayOptions?.loadingSignal())) as loading\"\n [class.tb-loading]=\"loading\" class=\"tb-loading-overlay-container tb-flex-grow tb-flex-column tb-full-width\">\n <div class=\"tb-loading-overlay-content tb-flex-grow tb-flex-column\">\n <ng-container *ngIf=\"loadingOverlayOptions?.hasError$ | async; then errorOccurred else noErrorOccurred\">\n </ng-container>\n\n <ng-template #noErrorOccurred>\n <ng-container *ngIf=\"!loading && data && !data.length &&\n loadingOverlayOptions?.emptyResultsOptions; then displayNoDataMessage else displayContent\">\n </ng-container>\n </ng-template>\n\n <ng-template #displayContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n <div class=\"tb-loading-overlay tb-flex-grow\">\n <div class=\"tb-margin-auto\">\n <div class=\"tb-spinner\" [attr.data-qa]=\"DataQaAttribute.spinner\"\n class=\"diameter_{{loadingOverlayOptions?.diameter || SpinnerDiameterSize.Default}}\">\n <svg preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\" aria-hidden=\"true\" viewBox=\"0 0 34 34\">\n <circle cx=\"50%\" cy=\"50%\" r=\"15\"></circle>\n </svg>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #errorOccurred>\n <div #customErrorMessage>\n <ng-content select=\"[tb-error-message]\"></ng-content>\n </div>\n <div *ngIf=\"!customErrorMessage?.childNodes?.length\" class=\"tb-loading-error\">\n <tb-icon [settings]=\"IconsHelper.info_gray\" class=\"cursor-default\"></tb-icon>\n <div class=\"error-general error-primary tb-center-text\">{{ L.something_went_wrong | translate }}</div>\n <div class=\"error-general error-secondary tb-center-text\">{{ L.please_contact_us_to_report_the_error | translate }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #displayNoDataMessage>\n <tb-empty-results class=\"loading-overlay-empty-results {{loadingOverlayOptions?.emptyResultsOptions?.cssClass}}\"\n [options]=\"loadingOverlayOptions?.emptyResultsOptions\">\n </tb-empty-results>\n</ng-template>", styles: [":host{display:flex;flex:1;min-height:1px}.tb-loading-error{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;height:100%;justify-content:center;align-items:center;flex-direction:column;color:#919eab;padding:20px 0}.tb-loading-error .error-general{margin-top:10px;font-weight:500}.tb-loading-error .error-general.error-primary{font-size:15px}.tb-loading-error .error-general.error-secondary{font-size:13px}tb-empty-results.loading-overlay-empty-results{display:flex;justify-content:center;height:100%;border-radius:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "component", type: EmptyResultsComponent, selector: "tb-empty-results", inputs: ["options"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: SharedDirectivesModule }, { kind: "directive", type: VarDirective, selector: "[tbVar]", inputs: ["tbVar"] }] }); }
103604
- }
103605
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingOverlayComponent, decorators: [{
103606
- type: Component,
103607
- args: [{ selector: 'tb-loading-overlay', standalone: true, imports: [
103608
- CommonModule,
103609
- IconModule,
103610
- EmptyResultsComponent,
103611
- LocalizationModule,
103612
- SharedDirectivesModule,
103613
- ], template: "<div\n *tbVar=\"(loadingOverlayOptions?.loading || (loadingOverlayOptions?.loading$ | async) || (loadingOverlayOptions?.loadingSignal && loadingOverlayOptions?.loadingSignal())) as loading\"\n [class.tb-loading]=\"loading\" class=\"tb-loading-overlay-container tb-flex-grow tb-flex-column tb-full-width\">\n <div class=\"tb-loading-overlay-content tb-flex-grow tb-flex-column\">\n <ng-container *ngIf=\"loadingOverlayOptions?.hasError$ | async; then errorOccurred else noErrorOccurred\">\n </ng-container>\n\n <ng-template #noErrorOccurred>\n <ng-container *ngIf=\"!loading && data && !data.length &&\n loadingOverlayOptions?.emptyResultsOptions; then displayNoDataMessage else displayContent\">\n </ng-container>\n </ng-template>\n\n <ng-template #displayContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n <div class=\"tb-loading-overlay tb-flex-grow\">\n <div class=\"tb-margin-auto\">\n <div class=\"tb-spinner\" [attr.data-qa]=\"DataQaAttribute.spinner\"\n class=\"diameter_{{loadingOverlayOptions?.diameter || SpinnerDiameterSize.Default}}\">\n <svg preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\" aria-hidden=\"true\" viewBox=\"0 0 34 34\">\n <circle cx=\"50%\" cy=\"50%\" r=\"15\"></circle>\n </svg>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #errorOccurred>\n <div #customErrorMessage>\n <ng-content select=\"[tb-error-message]\"></ng-content>\n </div>\n <div *ngIf=\"!customErrorMessage?.childNodes?.length\" class=\"tb-loading-error\">\n <tb-icon [settings]=\"IconsHelper.info_gray\" class=\"cursor-default\"></tb-icon>\n <div class=\"error-general error-primary tb-center-text\">{{ L.something_went_wrong | translate }}</div>\n <div class=\"error-general error-secondary tb-center-text\">{{ L.please_contact_us_to_report_the_error | translate }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #displayNoDataMessage>\n <tb-empty-results class=\"loading-overlay-empty-results {{loadingOverlayOptions?.emptyResultsOptions?.cssClass}}\"\n [options]=\"loadingOverlayOptions?.emptyResultsOptions\">\n </tb-empty-results>\n</ng-template>", styles: [":host{display:flex;flex:1;min-height:1px}.tb-loading-error{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;height:100%;justify-content:center;align-items:center;flex-direction:column;color:#919eab;padding:20px 0}.tb-loading-error .error-general{margin-top:10px;font-weight:500}.tb-loading-error .error-general.error-primary{font-size:15px}.tb-loading-error .error-general.error-secondary{font-size:13px}tb-empty-results.loading-overlay-empty-results{display:flex;justify-content:center;height:100%;border-radius:4px}\n"] }]
103614
- }], ctorParameters: () => [{ type: ActionStatusService }], propDecorators: { data: [{
103615
- type: Input
103616
- }], loadingOverlayOptions: [{
103617
- type: Input
103618
- }] } });
103619
-
103620
- // Components
103621
-
103622
103547
  function appModuleAnimation() {
103623
103548
  return slideFromBottom();
103624
103549
  }
@@ -103764,57 +103689,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
103764
103689
 
103765
103690
  // Module
103766
103691
 
103767
- // Module
103768
-
103769
- class NotificationModule {
103770
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
103771
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NotificationModule, imports: [CommonModule,
103772
- CommandNotificationComponent,
103773
- NotificationCloseAllButtonComponent,
103774
- NotificationTypeLabelComponent,
103775
- AlertNotificationComponent,
103776
- IconModule,
103777
- LocalizationModule,
103778
- MatTooltipModule, i1$9.ToastrModule] }); }
103779
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationModule, providers: [
103780
- NotificationEventService,
103781
- CommandNotificationService,
103782
- AlertNotificationService,
103783
- ], imports: [CommonModule,
103784
- CommandNotificationComponent,
103785
- NotificationCloseAllButtonComponent,
103786
- NotificationTypeLabelComponent,
103787
- AlertNotificationComponent,
103788
- IconModule,
103789
- LocalizationModule,
103790
- MatTooltipModule,
103791
- ToastrModule.forRoot()] }); }
103792
- }
103793
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationModule, decorators: [{
103794
- type: NgModule,
103795
- args: [{
103796
- declarations: [],
103797
- imports: [
103798
- CommonModule,
103799
- CommandNotificationComponent,
103800
- NotificationCloseAllButtonComponent,
103801
- NotificationTypeLabelComponent,
103802
- AlertNotificationComponent,
103803
- IconModule,
103804
- LocalizationModule,
103805
- MatTooltipModule,
103806
- ToastrModule.forRoot(),
103807
- ],
103808
- providers: [
103809
- NotificationEventService,
103810
- CommandNotificationService,
103811
- AlertNotificationService,
103812
- ],
103813
- }]
103814
- }] });
103815
-
103816
- // Module
103817
-
103818
103692
  class DeviceIconComponent {
103819
103693
  constructor(deviceService) {
103820
103694
  this.deviceService = deviceService;
@@ -104447,33 +104321,232 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104447
104321
 
104448
104322
  // Module
104449
104323
 
104450
- class ComStatusIconComponent {
104324
+ // Module
104325
+
104326
+ ;
104327
+
104328
+ class MessageBarModule {
104329
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
104330
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MessageBarModule, declarations: [MessageBarComponent], imports: [CommonModule,
104331
+ MessageBarContainerComponent,
104332
+ MatSnackBarModule,
104333
+ MatDialogModule], exports: [CommonModule,
104334
+ MessageBarComponent] }); }
104335
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageBarModule, imports: [CommonModule,
104336
+ MessageBarContainerComponent,
104337
+ MatSnackBarModule,
104338
+ MatDialogModule, CommonModule] }); }
104339
+ }
104340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MessageBarModule, decorators: [{
104341
+ type: NgModule,
104342
+ args: [{
104343
+ declarations: [
104344
+ MessageBarComponent,
104345
+ ],
104346
+ imports: [
104347
+ CommonModule,
104348
+ MessageBarContainerComponent,
104349
+ MatSnackBarModule,
104350
+ MatDialogModule,
104351
+ ],
104352
+ exports: [
104353
+ CommonModule,
104354
+ MessageBarComponent,
104355
+ ],
104356
+ providers: []
104357
+ }]
104358
+ }] });
104359
+
104360
+ // Services
104361
+
104362
+ // Module
104363
+
104364
+ class NotificationModule {
104365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
104366
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NotificationModule, imports: [CommonModule,
104367
+ CommandNotificationComponent,
104368
+ NotificationCloseAllButtonComponent,
104369
+ NotificationTypeLabelComponent,
104370
+ AlertNotificationComponent,
104371
+ IconModule,
104372
+ LocalizationModule,
104373
+ MatTooltipModule, i1$9.ToastrModule] }); }
104374
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationModule, providers: [
104375
+ NotificationEventService,
104376
+ CommandNotificationService,
104377
+ AlertNotificationService,
104378
+ ], imports: [CommonModule,
104379
+ CommandNotificationComponent,
104380
+ NotificationCloseAllButtonComponent,
104381
+ NotificationTypeLabelComponent,
104382
+ AlertNotificationComponent,
104383
+ IconModule,
104384
+ LocalizationModule,
104385
+ MatTooltipModule,
104386
+ ToastrModule.forRoot()] }); }
104387
+ }
104388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationModule, decorators: [{
104389
+ type: NgModule,
104390
+ args: [{
104391
+ declarations: [],
104392
+ imports: [
104393
+ CommonModule,
104394
+ CommandNotificationComponent,
104395
+ NotificationCloseAllButtonComponent,
104396
+ NotificationTypeLabelComponent,
104397
+ AlertNotificationComponent,
104398
+ IconModule,
104399
+ LocalizationModule,
104400
+ MatTooltipModule,
104401
+ ToastrModule.forRoot(),
104402
+ ],
104403
+ providers: [
104404
+ NotificationEventService,
104405
+ CommandNotificationService,
104406
+ AlertNotificationService,
104407
+ ],
104408
+ }]
104409
+ }] });
104410
+
104411
+ // Module
104412
+
104413
+ class EmptyResultsComponent extends BaseComponent {
104451
104414
  constructor() {
104452
- this.isActive = true;
104415
+ super();
104453
104416
  }
104454
- set status(status) {
104455
- this.statusName = this.isActive ? ComAggregatedStatus[status]?.toLowerCase() : DeviceActivityLabel.get(DeviceActivityStatus.Inactive);
104417
+ ngOnInit() {
104456
104418
  }
104457
- ;
104458
- set active(active) {
104459
- this.isActive = active;
104460
- this.statusName = active ? this.statusName : DeviceActivityLabel.get(DeviceActivityStatus.Inactive);
104419
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104420
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: EmptyResultsComponent, isStandalone: true, selector: "tb-empty-results", inputs: { options: "options" }, usesInheritance: true, ngImport: i0, template: "<div class=\"empty-results-wrapper {{options?.cssClass}}\">\n <ng-container *ngIf=\"options?.searchValue else noMessageValue\">\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate:{ searchValue: options?.searchValue}\"></span>\n </ng-container>\n <ng-template #noMessageValue>\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate\"></span>\n </ng-template>\n <tb-icon *ngIf=\"options?.tooltip?.icon\" [settings]=\"options?.tooltip?.icon\" class=\"tb-icon-30\" [matTooltip]=\"options?.tooltip?.text | translate\"\n [matTooltipPosition]=\"options?.tooltip?.position\">\n </tb-icon>\n</div>", styles: [":host{display:flex;flex-direction:column;flex-grow:1}:host.tb-mobile-search-validate-ticket{border:none}.empty-results-wrapper{display:flex;flex:1;justify-content:center}.empty-results-wrapper.tb-search-validate-ticket,.empty-results-wrapper.tb-mobile-search-validate-ticket{flex:unset}.empty-results-wrapper.tb-mobile-search-validate-ticket span{font-family:Quicksand,Quicksand Local,Roboto,Roboto Local,sans-serif;font-size:17px;font-weight:700;text-align:center}.empty-results-wrapper.tb-mobile-search-validate-ticket tb-icon{display:none}.empty-results-wrapper .empty-results-message{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;color:#919eab;cursor:default;text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104421
+ }
104422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EmptyResultsComponent, decorators: [{
104423
+ type: Component,
104424
+ args: [{ selector: 'tb-empty-results', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
104425
+ CommonModule,
104426
+ IconModule,
104427
+ LocalizationModule,
104428
+ MatTooltipModule,
104429
+ ], template: "<div class=\"empty-results-wrapper {{options?.cssClass}}\">\n <ng-container *ngIf=\"options?.searchValue else noMessageValue\">\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate:{ searchValue: options?.searchValue}\"></span>\n </ng-container>\n <ng-template #noMessageValue>\n <span class=\"empty-results-message\" [innerHTML]=\"options?.noDataMessage | translate\"></span>\n </ng-template>\n <tb-icon *ngIf=\"options?.tooltip?.icon\" [settings]=\"options?.tooltip?.icon\" class=\"tb-icon-30\" [matTooltip]=\"options?.tooltip?.text | translate\"\n [matTooltipPosition]=\"options?.tooltip?.position\">\n </tb-icon>\n</div>", styles: [":host{display:flex;flex-direction:column;flex-grow:1}:host.tb-mobile-search-validate-ticket{border:none}.empty-results-wrapper{display:flex;flex:1;justify-content:center}.empty-results-wrapper.tb-search-validate-ticket,.empty-results-wrapper.tb-mobile-search-validate-ticket{flex:unset}.empty-results-wrapper.tb-mobile-search-validate-ticket span{font-family:Quicksand,Quicksand Local,Roboto,Roboto Local,sans-serif;font-size:17px;font-weight:700;text-align:center}.empty-results-wrapper.tb-mobile-search-validate-ticket tb-icon{display:none}.empty-results-wrapper .empty-results-message{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;align-items:center;color:#919eab;cursor:default;text-align:center}\n"] }]
104430
+ }], ctorParameters: () => [], propDecorators: { options: [{
104431
+ type: Input
104432
+ }] } });
104433
+
104434
+ class ErrorResultsComponent extends BaseComponent {
104435
+ constructor() {
104436
+ super();
104437
+ this.IconsHelper = IconsHelper;
104461
104438
  }
104462
- ;
104463
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComStatusIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104464
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ComStatusIconComponent, isStandalone: true, selector: "tb-com-status-icon", inputs: { status: "status", active: "active" }, ngImport: i0, template: "<div [ngClass]=\"'tb-com-status-' + statusName\" class=\"tb-com-status-icon\"></div>\n", styles: [":host{display:block}.tb-com-status-icon{display:block;height:18px;width:18px}.tb-com-status-inactive{background-image:url(/assets/status/inactive.svg)}.tb-com-status-ok{background-image:url(/assets/status/ok.svg)}.tb-com-status-warning{background-image:url(/assets/status/warning.svg)}.tb-com-status-error{background-image:url(/assets/status/error.svg)}.tb-com-status-comerror{background-image:url(/assets/status/com-error.svg)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104439
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104440
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ErrorResultsComponent, isStandalone: true, selector: "tb-error-results", usesInheritance: true, ngImport: i0, template: "<div class=\"tb-loading-error\">\n <tb-icon [settings]=\"IconsHelper.info_gray\" class=\"cursor-default\"></tb-icon>\n <div class=\"error-general error-primary tb-center-text\">{{ L.something_went_wrong | translate }}</div>\n <div class=\"error-general error-secondary tb-center-text\">{{ L.please_contact_us_to_report_the_error | translate }}\n </div>\n</div>\n", styles: [":host{display:block;height:100%;width:100%}.tb-loading-error{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;height:100%;justify-content:center;align-items:center;flex-direction:column;color:#919eab;padding:20px 0}.tb-loading-error .error-general{margin-top:10px;font-weight:500}.tb-loading-error .error-general.error-primary{font-size:15px}.tb-loading-error .error-general.error-secondary{font-size:13px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104465
104441
  }
104466
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComStatusIconComponent, decorators: [{
104442
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorResultsComponent, decorators: [{
104467
104443
  type: Component,
104468
- args: [{ selector: 'tb-com-status-icon', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
104469
- CommonModule
104470
- ], template: "<div [ngClass]=\"'tb-com-status-' + statusName\" class=\"tb-com-status-icon\"></div>\n", styles: [":host{display:block}.tb-com-status-icon{display:block;height:18px;width:18px}.tb-com-status-inactive{background-image:url(/assets/status/inactive.svg)}.tb-com-status-ok{background-image:url(/assets/status/ok.svg)}.tb-com-status-warning{background-image:url(/assets/status/warning.svg)}.tb-com-status-error{background-image:url(/assets/status/error.svg)}.tb-com-status-comerror{background-image:url(/assets/status/com-error.svg)}\n"] }]
104471
- }], propDecorators: { status: [{
104444
+ args: [{ selector: 'tb-error-results', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
104445
+ CommonModule,
104446
+ IconModule,
104447
+ LocalizationModule,
104448
+ ], template: "<div class=\"tb-loading-error\">\n <tb-icon [settings]=\"IconsHelper.info_gray\" class=\"cursor-default\"></tb-icon>\n <div class=\"error-general error-primary tb-center-text\">{{ L.something_went_wrong | translate }}</div>\n <div class=\"error-general error-secondary tb-center-text\">{{ L.please_contact_us_to_report_the_error | translate }}\n </div>\n</div>\n", styles: [":host{display:block;height:100%;width:100%}.tb-loading-error{font-family:Open Sans,Open Sans Local,Roboto,Roboto Local,sans-serif;display:flex;height:100%;justify-content:center;align-items:center;flex-direction:column;color:#919eab;padding:20px 0}.tb-loading-error .error-general{margin-top:10px;font-weight:500}.tb-loading-error .error-general.error-primary{font-size:15px}.tb-loading-error .error-general.error-secondary{font-size:13px}\n"] }]
104449
+ }], ctorParameters: () => [] });
104450
+
104451
+ class LoadingOverlayComponent extends BaseComponent {
104452
+ get loadingOverlayOptions() {
104453
+ return this._loadingOverlayOptions;
104454
+ }
104455
+ set loadingOverlayOptions(loadingOverlayOptions) {
104456
+ this._loadingOverlayOptions = loadingOverlayOptions;
104457
+ this.init(loadingOverlayOptions);
104458
+ }
104459
+ constructor(actionStatusService) {
104460
+ super();
104461
+ this.actionStatusService = actionStatusService;
104462
+ this.SpinnerDiameterSize = SpinnerDiameterSize;
104463
+ }
104464
+ init(loadingOverlayOptions) {
104465
+ if (loadingOverlayOptions?.actions) {
104466
+ const actions = loadingOverlayOptions.actions instanceof Array ? loadingOverlayOptions.actions : [loadingOverlayOptions.actions];
104467
+ if (!loadingOverlayOptions.loading$) {
104468
+ loadingOverlayOptions.loading$ = this.actionStatusService.actionsExecuting$(actions);
104469
+ }
104470
+ if (!loadingOverlayOptions.ignoreError && !loadingOverlayOptions.hasError$) {
104471
+ loadingOverlayOptions.hasError$ = this.actionStatusService.actionsErrored$(actions);
104472
+ }
104473
+ }
104474
+ }
104475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingOverlayComponent, deps: [{ token: ActionStatusService }], target: i0.ɵɵFactoryTarget.Component }); }
104476
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LoadingOverlayComponent, isStandalone: true, selector: "tb-loading-overlay", inputs: { data: "data", loadingOverlayOptions: "loadingOverlayOptions" }, usesInheritance: true, ngImport: i0, template: "<div\n *tbVar=\"(loadingOverlayOptions?.loading || (loadingOverlayOptions?.loading$ | async) || (loadingOverlayOptions?.loadingSignal && loadingOverlayOptions?.loadingSignal())) as loading\"\n [class.tb-loading]=\"loading\" class=\"tb-loading-overlay-container tb-flex-grow tb-flex-column tb-full-width\">\n <div class=\"tb-loading-overlay-content tb-flex-grow tb-flex-column\">\n <ng-container *ngIf=\"loadingOverlayOptions?.hasError$ | async; then errorOccurred else noErrorOccurred\">\n </ng-container>\n\n <ng-template #noErrorOccurred>\n <ng-container *ngIf=\"!loading && data && !data.length &&\n loadingOverlayOptions?.emptyResultsOptions; then displayNoDataMessage else displayContent\">\n </ng-container>\n </ng-template>\n\n <ng-template #displayContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n <div class=\"tb-loading-overlay tb-flex-grow\">\n <div class=\"tb-margin-auto\">\n <div class=\"tb-spinner\" [attr.data-qa]=\"DataQaAttribute.spinner\"\n class=\"diameter_{{loadingOverlayOptions?.diameter || SpinnerDiameterSize.Default}}\">\n <svg preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\" aria-hidden=\"true\" viewBox=\"0 0 34 34\">\n <circle cx=\"50%\" cy=\"50%\" r=\"15\"></circle>\n </svg>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #errorOccurred>\n <div #customErrorMessage class=\"display-contents\">\n <ng-content select=\"[tb-error-message]\"></ng-content>\n </div>\n @if (!customErrorMessage?.childNodes?.length) {\n <tb-error-results></tb-error-results>\n }\n</ng-template>\n\n<ng-template #displayNoDataMessage>\n <tb-empty-results class=\"loading-overlay-empty-results {{loadingOverlayOptions?.emptyResultsOptions?.cssClass}}\"\n [options]=\"loadingOverlayOptions?.emptyResultsOptions\">\n </tb-empty-results>\n</ng-template>\n", styles: [":host{display:flex;flex:1;min-height:1px}tb-empty-results.loading-overlay-empty-results{display:flex;justify-content:center;height:100%;border-radius:4px}.display-contents{display:contents}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: EmptyResultsComponent, selector: "tb-empty-results", inputs: ["options"] }, { kind: "component", type: ErrorResultsComponent, selector: "tb-error-results" }, { kind: "ngmodule", type: LocalizationModule }, { kind: "ngmodule", type: SharedDirectivesModule }, { kind: "directive", type: VarDirective, selector: "[tbVar]", inputs: ["tbVar"] }] }); }
104477
+ }
104478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingOverlayComponent, decorators: [{
104479
+ type: Component,
104480
+ args: [{ selector: 'tb-loading-overlay', standalone: true, imports: [
104481
+ CommonModule,
104482
+ IconModule,
104483
+ EmptyResultsComponent,
104484
+ ErrorResultsComponent,
104485
+ LocalizationModule,
104486
+ SharedDirectivesModule,
104487
+ ], template: "<div\n *tbVar=\"(loadingOverlayOptions?.loading || (loadingOverlayOptions?.loading$ | async) || (loadingOverlayOptions?.loadingSignal && loadingOverlayOptions?.loadingSignal())) as loading\"\n [class.tb-loading]=\"loading\" class=\"tb-loading-overlay-container tb-flex-grow tb-flex-column tb-full-width\">\n <div class=\"tb-loading-overlay-content tb-flex-grow tb-flex-column\">\n <ng-container *ngIf=\"loadingOverlayOptions?.hasError$ | async; then errorOccurred else noErrorOccurred\">\n </ng-container>\n\n <ng-template #noErrorOccurred>\n <ng-container *ngIf=\"!loading && data && !data.length &&\n loadingOverlayOptions?.emptyResultsOptions; then displayNoDataMessage else displayContent\">\n </ng-container>\n </ng-template>\n\n <ng-template #displayContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n <div class=\"tb-loading-overlay tb-flex-grow\">\n <div class=\"tb-margin-auto\">\n <div class=\"tb-spinner\" [attr.data-qa]=\"DataQaAttribute.spinner\"\n class=\"diameter_{{loadingOverlayOptions?.diameter || SpinnerDiameterSize.Default}}\">\n <svg preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\" aria-hidden=\"true\" viewBox=\"0 0 34 34\">\n <circle cx=\"50%\" cy=\"50%\" r=\"15\"></circle>\n </svg>\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #errorOccurred>\n <div #customErrorMessage class=\"display-contents\">\n <ng-content select=\"[tb-error-message]\"></ng-content>\n </div>\n @if (!customErrorMessage?.childNodes?.length) {\n <tb-error-results></tb-error-results>\n }\n</ng-template>\n\n<ng-template #displayNoDataMessage>\n <tb-empty-results class=\"loading-overlay-empty-results {{loadingOverlayOptions?.emptyResultsOptions?.cssClass}}\"\n [options]=\"loadingOverlayOptions?.emptyResultsOptions\">\n </tb-empty-results>\n</ng-template>\n", styles: [":host{display:flex;flex:1;min-height:1px}tb-empty-results.loading-overlay-empty-results{display:flex;justify-content:center;height:100%;border-radius:4px}.display-contents{display:contents}\n"] }]
104488
+ }], ctorParameters: () => [{ type: ActionStatusService }], propDecorators: { data: [{
104472
104489
  type: Input
104473
- }], active: [{
104490
+ }], loadingOverlayOptions: [{
104491
+ type: Input
104492
+ }] } });
104493
+
104494
+ // Components
104495
+
104496
+ class RestartLinkComponent {
104497
+ constructor(translate, store, elementRef) {
104498
+ this.translate = translate;
104499
+ this.store = store;
104500
+ this.elementRef = elementRef;
104501
+ this.label = this.translate.instant(Localization.please_refresh_and_try_again);
104502
+ this.messageText = this.translate.instant(Localization.refresh_link_something_went_wrong_message);
104503
+ this.IconSettings = IconsHelper;
104504
+ }
104505
+ ngOnInit() {
104506
+ // Direction will be handled globally once RTL support is implemented
104507
+ const userSettings = this.store.selectSnapshot(SessionState.mappedUserSettings);
104508
+ const userLocalization = userSettings.get(SettingsCategory$2.Localization);
104509
+ const direction = RTL_LANGUAGES.includes(userLocalization.keyName) ? 'rtl' : 'ltr';
104510
+ this.elementRef.nativeElement.dir = direction;
104511
+ }
104512
+ onClick() {
104513
+ window.location.reload();
104514
+ }
104515
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestartLinkComponent, deps: [{ token: i1$5.TranslateService }, { token: i1$2.Store }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
104516
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RestartLinkComponent, selector: "tb-restart-link", inputs: { label: "label", messageText: "messageText" }, ngImport: i0, template: "<div class=\"restart-link-container\">\n <div class=\"text-content\">\n <span>\n {{ messageText }}\n </span>\n <span class=\"tb-text-link\" (click)=\"onClick()\">\n {{ label }}\n </span>\n </div>\n <tb-icon [settings]=\"IconSettings.refresh\" [setCursorPointer]=\"false\" class=\"tb-icon-30 tb-mt-2 icon-fixed\"></tb-icon>\n</div>\n", styles: [":host{display:inline-block;padding-left:4px;min-width:270px}:host[dir=rtl] .restart-link-container{flex-direction:row-reverse}:host[dir=rtl] .text-content{direction:rtl;text-align:right}:host[dir=ltr] .text-content{direction:ltr;text-align:left}.restart-link-container,.restart-link-container .text-content{display:flex;align-items:center;gap:.5em}.restart-link-container .tb-text-link{color:#0985eb;cursor:pointer;display:flex;align-items:center;text-decoration:none}.restart-link-container .tb-text-link:hover{opacity:.9}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tb-icon", inputs: ["setCursorPointer", "facilityCommandIcon", "remoteCommandIcon", "settings"] }] }); }
104517
+ }
104518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestartLinkComponent, decorators: [{
104519
+ type: Component,
104520
+ args: [{ selector: 'tb-restart-link', template: "<div class=\"restart-link-container\">\n <div class=\"text-content\">\n <span>\n {{ messageText }}\n </span>\n <span class=\"tb-text-link\" (click)=\"onClick()\">\n {{ label }}\n </span>\n </div>\n <tb-icon [settings]=\"IconSettings.refresh\" [setCursorPointer]=\"false\" class=\"tb-icon-30 tb-mt-2 icon-fixed\"></tb-icon>\n</div>\n", styles: [":host{display:inline-block;padding-left:4px;min-width:270px}:host[dir=rtl] .restart-link-container{flex-direction:row-reverse}:host[dir=rtl] .text-content{direction:rtl;text-align:right}:host[dir=ltr] .text-content{direction:ltr;text-align:left}.restart-link-container,.restart-link-container .text-content{display:flex;align-items:center;gap:.5em}.restart-link-container .tb-text-link{color:#0985eb;cursor:pointer;display:flex;align-items:center;text-decoration:none}.restart-link-container .tb-text-link:hover{opacity:.9}\n"] }]
104521
+ }], ctorParameters: () => [{ type: i1$5.TranslateService }, { type: i1$2.Store }, { type: i0.ElementRef }], propDecorators: { label: [{
104522
+ type: Input
104523
+ }], messageText: [{
104474
104524
  type: Input
104475
104525
  }] } });
104476
104526
 
104527
+ class RestartLinkModule {
104528
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestartLinkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
104529
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: RestartLinkModule, declarations: [RestartLinkComponent], imports: [CommonModule,
104530
+ IconModule], exports: [RestartLinkComponent] }); }
104531
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestartLinkModule, imports: [CommonModule,
104532
+ IconModule] }); }
104533
+ }
104534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RestartLinkModule, decorators: [{
104535
+ type: NgModule,
104536
+ args: [{
104537
+ declarations: [
104538
+ RestartLinkComponent
104539
+ ],
104540
+ imports: [
104541
+ CommonModule,
104542
+ IconModule
104543
+ ],
104544
+ exports: [
104545
+ RestartLinkComponent
104546
+ ]
104547
+ }]
104548
+ }] });
104549
+
104477
104550
  class GlobalMessageContainerComponent extends BaseComponent {
104478
104551
  constructor(appConfig) {
104479
104552
  super();
@@ -104514,142 +104587,101 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104514
104587
  type: Input
104515
104588
  }] } });
104516
104589
 
104517
- let LogoState = class LogoState {
104518
- constructor(assetService, domSanitizer, messageBarService, mobileServiceProxyIdentity) {
104519
- this.assetService = assetService;
104520
- this.domSanitizer = domSanitizer;
104521
- this.messageBarService = messageBarService;
104522
- this.mobileServiceProxyIdentity = mobileServiceProxyIdentity;
104523
- this.cleanLogo = () => new CleanLogoAction();
104524
- }
104525
- static image(state) {
104526
- return state.image;
104527
- }
104528
- onGetLogoAction(ctx, action) {
104529
- if (ctx.getState().identifier !== action.logo.identifier) {
104530
- this.cleanLogo();
104531
- return this.assetService.getLogo(action.logo.identifier).pipe(tap(logo => this.convertAndPatch(ctx, logo.data, action.logo.identifier)));
104532
- }
104533
- }
104534
- onGetMobileLogoAction(ctx, action) {
104535
- if (ctx.getState().identifier !== action.logo.identifier) {
104536
- this.cleanLogo();
104537
- return this.mobileServiceProxyIdentity.getMobileLogo(action.logo.identifier, VERSION_V1).pipe(tap(logo => this.convertAndPatch(ctx, logo.data, action.logo.identifier)));
104538
- }
104539
- }
104540
- onUploadLogoAction(ctx, action) {
104541
- const uploadLogo = new UploadLogoDto();
104542
- uploadLogo.identifier = action.file.identifier;
104543
- uploadLogo.imageB64 = action.file.imageB64;
104544
- uploadLogo.fileType = action.file.fileType;
104545
- return this.assetService.uploadLogo(uploadLogo).pipe(tap({
104546
- next: uploadedLogo => this.convertAndPatch(ctx, uploadedLogo.data, action.file.identifier),
104547
- error: (err) => {
104548
- this.messageBarService.error(parseApiErrorMessage(err));
104590
+ class InternetConnectionService {
104591
+ constructor(router) {
104592
+ this.router = router;
104593
+ this.autoReloadComponent = true;
104594
+ this.destroy$ = new Subject();
104595
+ this.status().pipe(takeUntil$1(this.destroy$), skip(1)).subscribe(internetConnectionStatus => {
104596
+ if (internetConnectionStatus === InternetConnectionStatus.Connected && this.autoReloadComponent) {
104597
+ this.reloadComponent();
104549
104598
  }
104550
- }));
104599
+ });
104551
104600
  }
104552
- onDeleteLogoAction(ctx, action) {
104553
- return this.assetService.deleteLogo(action.logo).pipe(tap({
104554
- next: () => {
104555
- ctx.patchState({
104556
- image: null,
104557
- });
104558
- },
104559
- error: (err) => {
104560
- this.messageBarService.error(parseApiErrorMessage(err));
104561
- }
104562
- }));
104601
+ status() {
104602
+ return of(fromEvent(window, 'offline').pipe(map(() => InternetConnectionStatus.Disconnected)), fromEvent(window, 'online').pipe(map(() => InternetConnectionStatus.Connected)), new Observable((sub) => {
104603
+ sub.next(navigator.onLine ? InternetConnectionStatus.Connected : InternetConnectionStatus.Disconnected);
104604
+ sub.complete();
104605
+ })).pipe(mergeAll());
104563
104606
  }
104564
- onCleanLogoAction(ctx) {
104565
- ctx.patchState({
104566
- image: null
104607
+ reloadComponent() {
104608
+ const currentUrl = this.router.url;
104609
+ const currentRouteReuseStrategy = this.router.routeReuseStrategy.shouldReuseRoute;
104610
+ this.router.routeReuseStrategy.shouldReuseRoute = () => false;
104611
+ this.router.onSameUrlNavigation = 'reload';
104612
+ this.router.navigate([currentUrl]).then(() => {
104613
+ this.router.routeReuseStrategy.shouldReuseRoute = currentRouteReuseStrategy;
104614
+ this.router.onSameUrlNavigation = 'ignore';
104567
104615
  });
104568
104616
  }
104569
- convertAndPatch(ctx, logo, identifier) {
104570
- if (logo?.image) {
104571
- const base64Image = this.domSanitizer.bypassSecurityTrustUrl(`${DATA_IMAGE_BASE64_PREFIX},${logo?.image}`);
104572
- ctx.patchState({
104573
- image: base64Image,
104574
- identifier
104575
- });
104576
- }
104617
+ ngOnDestroy() {
104618
+ this.destroy$.next();
104619
+ this.destroy$.complete();
104577
104620
  }
104578
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoState, deps: [{ token: AssetServiceProxy }, { token: i2$1.DomSanitizer }, { token: MessageBarService }, { token: MobileServiceProxyIdentity }], target: i0.ɵɵFactoryTarget.Injectable }); }
104579
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoState }); }
104580
- };
104581
- __decorate([
104582
- Action(GetLogoAction)
104583
- ], LogoState.prototype, "onGetLogoAction", null);
104584
- __decorate([
104585
- Action(GetMobileLogoAction)
104586
- ], LogoState.prototype, "onGetMobileLogoAction", null);
104587
- __decorate([
104588
- Action(UploadLogoAction, { cancelUncompleted: true })
104589
- ], LogoState.prototype, "onUploadLogoAction", null);
104590
- __decorate([
104591
- Action(DeleteLogoAction, { cancelUncompleted: true })
104592
- ], LogoState.prototype, "onDeleteLogoAction", null);
104593
- __decorate([
104594
- Action(CleanLogoAction, { cancelUncompleted: true })
104595
- ], LogoState.prototype, "onCleanLogoAction", null);
104596
- __decorate([
104597
- Dispatch()
104598
- ], LogoState.prototype, "cleanLogo", void 0);
104599
- __decorate([
104600
- Selector()
104601
- ], LogoState, "image", null);
104602
- LogoState = __decorate([
104603
- State({
104604
- name: 'logo',
104605
- defaults: {
104606
- image: null,
104607
- identifier: null
104608
- }
104609
- })
104610
- ], LogoState);
104611
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoState, decorators: [{
104612
- type: Injectable
104613
- }], ctorParameters: () => [{ type: AssetServiceProxy }, { type: i2$1.DomSanitizer }, { type: MessageBarService }, { type: MobileServiceProxyIdentity }], propDecorators: { onGetLogoAction: [], onGetMobileLogoAction: [], onUploadLogoAction: [], onDeleteLogoAction: [], onCleanLogoAction: [], cleanLogo: [] } });
104614
-
104615
- class TenantLogoModule {
104616
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantLogoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
104617
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: TenantLogoModule, imports: [i1$2.ɵNgxsFeatureModule, MessageBarModule] }); }
104618
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantLogoModule, imports: [NgxsModule.forFeature([LogoState]),
104619
- MessageBarModule] }); }
104621
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternetConnectionService, deps: [{ token: i1$8.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
104622
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternetConnectionService }); }
104620
104623
  }
104621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantLogoModule, decorators: [{
104622
- type: NgModule,
104623
- args: [{
104624
- declarations: [],
104625
- imports: [
104626
- NgxsModule.forFeature([LogoState]),
104627
- MessageBarModule
104628
- ]
104629
- }]
104630
- }] });
104624
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternetConnectionService, decorators: [{
104625
+ type: Injectable
104626
+ }], ctorParameters: () => [{ type: i1$8.Router }] });
104631
104627
 
104632
- class LogoComponent extends BaseComponent {
104633
- constructor() {
104628
+ class AccountFrameMessageBarComponent extends BaseComponent {
104629
+ constructor(appConfig, internetConnectionService, messageBarService) {
104634
104630
  super();
104631
+ this.appConfig = appConfig;
104632
+ this.internetConnectionService = internetConnectionService;
104633
+ this.messageBarService = messageBarService;
104634
+ this.InternetConnectionStatus = InternetConnectionStatus;
104635
+ this.IconsHelper = IconsHelper;
104636
+ this.IconsHelperText = IconsHelperText;
104635
104637
  }
104636
104638
  ngOnInit() {
104639
+ const isEdgeMode = this.appConfig.getConfig().appType === AppType.Edge;
104640
+ this.displayNoInternetConnection$ = this.internetConnectionService.status().pipe(takeUntil$1(this.destroy$), map(status => {
104641
+ let displayNoInternetConnection = false;
104642
+ if (!isEdgeMode) {
104643
+ displayNoInternetConnection = status === InternetConnectionStatus.Disconnected;
104644
+ if (displayNoInternetConnection) {
104645
+ console.warn('INTERNET CONNECTION STATUS: ', status, new Date().toISOString());
104646
+ }
104647
+ this.messageBarService.clearMessagebar();
104648
+ this.messageBarService.clearSnackbar();
104649
+ }
104650
+ return displayNoInternetConnection;
104651
+ }));
104637
104652
  }
104638
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104639
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LogoComponent, isStandalone: true, selector: "tb-logo", inputs: { classImage: "classImage" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"image$ | async as image\">\n <div [class.tb-h-60]=\"image\" class=\"tb-logo-wrapper {{classImage}}\">\n <img class=\"image-logo\" [src]=\"image\">\n </div>\n</ng-container>\n", styles: [":host{width:100%}.tb-logo-wrapper{display:flex;justify-content:center}.tb-logo-wrapper.tb-user-menu-logo{height:20px!important;max-width:50px;margin:5px 10px}.image-logo{max-width:100%;object-fit:contain}.mobile-menu-logo{margin:0;padding:5px 6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TenantLogoModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104653
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccountFrameMessageBarComponent, deps: [{ token: AppConfigService }, { token: InternetConnectionService }, { token: MessageBarService }], target: i0.ɵɵFactoryTarget.Component }); }
104654
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AccountFrameMessageBarComponent, isStandalone: true, selector: "tb-account-frame-message-bar", usesInheritance: true, ngImport: i0, template: `
104655
+ <tb-global-message-container [isPositionStatic]="true" *ngIf="displayNoInternetConnection$ | async else displayMessageBar"
104656
+ [message]="L.no_internet_connection | translate"
104657
+ [icon]="IconsHelperText[IconsHelper[IconsHelper.no_internet_connection]]"></tb-global-message-container>
104658
+ <ng-template #displayMessageBar>
104659
+ <tb-message-bar></tb-message-bar>
104660
+ </ng-template>
104661
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$5.TranslatePipe, name: "translate" }, { kind: "component", type: GlobalMessageContainerComponent, selector: "tb-global-message-container", inputs: ["isMobile", "message", "title", "icon", "timeAgoInSeconds", "isPositionStatic"] }, { kind: "ngmodule", type: MessageBarModule }, { kind: "component", type: MessageBarComponent, selector: "tb-message-bar", inputs: ["id", "stack", "fade", "dialog", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104640
104662
  }
104641
- __decorate([
104642
- Select(LogoState.image)
104643
- ], LogoComponent.prototype, "image$", void 0);
104644
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoComponent, decorators: [{
104663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccountFrameMessageBarComponent, decorators: [{
104645
104664
  type: Component,
104646
- args: [{ selector: 'tb-logo', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
104665
+ args: [{
104666
+ changeDetection: ChangeDetectionStrategy.OnPush,
104667
+ selector: 'tb-account-frame-message-bar',
104668
+ template: `
104669
+ <tb-global-message-container [isPositionStatic]="true" *ngIf="displayNoInternetConnection$ | async else displayMessageBar"
104670
+ [message]="L.no_internet_connection | translate"
104671
+ [icon]="IconsHelperText[IconsHelper[IconsHelper.no_internet_connection]]"></tb-global-message-container>
104672
+ <ng-template #displayMessageBar>
104673
+ <tb-message-bar></tb-message-bar>
104674
+ </ng-template>
104675
+ `,
104676
+ standalone: true,
104677
+ imports: [
104647
104678
  CommonModule,
104648
- TenantLogoModule,
104649
- ], template: "<ng-container *ngIf=\"image$ | async as image\">\n <div [class.tb-h-60]=\"image\" class=\"tb-logo-wrapper {{classImage}}\">\n <img class=\"image-logo\" [src]=\"image\">\n </div>\n</ng-container>\n", styles: [":host{width:100%}.tb-logo-wrapper{display:flex;justify-content:center}.tb-logo-wrapper.tb-user-menu-logo{height:20px!important;max-width:50px;margin:5px 10px}.image-logo{max-width:100%;object-fit:contain}.mobile-menu-logo{margin:0;padding:5px 6px}\n"] }]
104650
- }], ctorParameters: () => [], propDecorators: { image$: [], classImage: [{
104651
- type: Input
104652
- }] } });
104679
+ LocalizationModule,
104680
+ GlobalMessageContainerComponent,
104681
+ MessageBarModule,
104682
+ ]
104683
+ }]
104684
+ }], ctorParameters: () => [{ type: AppConfigService }, { type: InternetConnectionService }, { type: MessageBarService }] });
104653
104685
 
104654
104686
  class CloudConfirmDialogComponent extends BaseComponent {
104655
104687
  constructor(translateService, data, dialogRef) {
@@ -104665,8 +104697,8 @@ class CloudConfirmDialogComponent extends BaseComponent {
104665
104697
  close(ok) {
104666
104698
  this.dialogRef.close(ok);
104667
104699
  }
104668
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CloudConfirmDialogComponent, deps: [{ token: i1$5.TranslateService }, { token: MAT_DIALOG_DATA }, { token: i2$2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
104669
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CloudConfirmDialogComponent, isStandalone: true, selector: "tb-cloud-confirm-dialog", usesInheritance: true, ngImport: i0, template: "<div class=\"tb-modal\">\n <div class=\"modal-title-container\">\n <div class=\"ellipsis modal-title-content\" mat-dialog-title>\n <div class=\"modal-title-primary ellipsis\">{{data.confirmTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data.confirmSubTitle\">{{data.confirmSubTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.ticket\">\n <span class=\"entity-identifier-type\">{{ data.ticket.type }}</span>\n <span>#{{ data.ticket.number }}</span>\n </div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.device\">{{ data.device.name }} | #{{ data.device.commId }}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.lpr\">{{ L.car_plate | translate }}: {{ data.lpr.lprString }}</div>\n <div class=\"modal-title-sub-secondary ellipsis\" *ngIf=\"data?.parkName\">\n <span>{{ data.parkName }}</span>\n <span *ngIf=\"data?.zoneName\"> | {{ data.zoneName }}</span>\n </div>\n </div>\n <div class=\"modal-button-wrapper\">\n <tb-notification-type-label *ngIf=\"data?.notificationSeverity\" class=\"tb-mr-5\" [notificationSeverity]=\"data?.notificationSeverity\"\n [notificationSeverityInvert]=\"data?.notificationSeverityInvert\">\n </tb-notification-type-label>\n </div>\n </div>\n <mat-dialog-content>\n <tb-message-bar *ngIf=\"data.showMessageBar\" [dialog]=\"true\"></tb-message-bar>\n <div class=\"modal-text\" *ngFor=\"let confirmMessage of data.confirmMessages\">\n <span [innerHTML]=\"confirmMessage | curlyToBold\"></span>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-left\">\n <!-- No Left Action -->\n </div>\n <div class=\"buttons-wrapper-right\">\n <button *ngIf=\"!data.hideCancel\" class='tb-button tb-tertiary-button basic-button' tabindex=\"-1\" (click)=\"close(false)\"\n [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.cancel_btn\" matRipple>\n <span class=\"button-text\">{{ data.cancelText | translate }}</span>\n </button>\n <button *ngIf=\"!data.hideOk\" class='tb-button tb-primary-button basic-button' (click)=\"close(true)\"\n [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ data.okText | translate }}</span>\n </button>\n </div>\n </div>\n </mat-dialog-actions>\n</div>", styles: [".modal-text span{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$5.TranslatePipe, name: "translate" }, { kind: "component", type: NotificationTypeLabelComponent, selector: "tb-notification-type-label", inputs: ["notificationSeverity", "notificationSeverityInvert", "notificationSeverityText"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MessageBarModule }, { kind: "component", type: MessageBarComponent, selector: "tb-message-bar", inputs: ["id", "stack", "fade", "dialog", "class"] }, { kind: "pipe", type: CurlyToBoldPipe, name: "curlyToBold" }] }); }
104700
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CloudConfirmDialogComponent, deps: [{ token: i1$5.TranslateService }, { token: MAT_DIALOG_DATA }, { token: i2$1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
104701
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CloudConfirmDialogComponent, isStandalone: true, selector: "tb-cloud-confirm-dialog", usesInheritance: true, ngImport: i0, template: "<div class=\"tb-modal\">\n <div class=\"modal-title-container\">\n <div class=\"ellipsis modal-title-content\" mat-dialog-title>\n <div class=\"modal-title-primary ellipsis\">{{data.confirmTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data.confirmSubTitle\">{{data.confirmSubTitle}}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.ticket\">\n <span class=\"entity-identifier-type\">{{ data.ticket.type }}</span>\n <span>#{{ data.ticket.number }}</span>\n </div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.device\">{{ data.device.name }} | #{{ data.device.commId }}</div>\n <div class=\"modal-title-secondary ellipsis\" *ngIf=\"data?.lpr\">{{ L.car_plate | translate }}: {{ data.lpr.lprString }}</div>\n <div class=\"modal-title-sub-secondary ellipsis\" *ngIf=\"data?.parkName\">\n <span>{{ data.parkName }}</span>\n <span *ngIf=\"data?.zoneName\"> | {{ data.zoneName }}</span>\n </div>\n </div>\n <div class=\"modal-button-wrapper\">\n <tb-notification-type-label *ngIf=\"data?.notificationSeverity\" class=\"tb-mr-5\" [notificationSeverity]=\"data?.notificationSeverity\"\n [notificationSeverityInvert]=\"data?.notificationSeverityInvert\">\n </tb-notification-type-label>\n </div>\n </div>\n <mat-dialog-content>\n <tb-message-bar *ngIf=\"data.showMessageBar\" [dialog]=\"true\"></tb-message-bar>\n <div class=\"modal-text\" *ngFor=\"let confirmMessage of data.confirmMessages\">\n <span [innerHTML]=\"confirmMessage | curlyToBold\"></span>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <div class=\"buttons-wrapper\">\n <div class=\"buttons-wrapper-left\">\n <!-- No Left Action -->\n </div>\n <div class=\"buttons-wrapper-right\">\n <button *ngIf=\"!data.hideCancel\" class='tb-button tb-tertiary-button basic-button' tabindex=\"-1\" (click)=\"close(false)\"\n [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.cancel_btn\" matRipple>\n <span class=\"button-text\">{{ data.cancelText | translate }}</span>\n </button>\n <button *ngIf=\"!data.hideOk\" class='tb-button tb-primary-button basic-button' (click)=\"close(true)\"\n [attr.data-qa]=\"DataQaAttribute.cloud_confirm_diaglog+'_'+DataQaAttribute.confirm_btn\" matRipple>\n <span class=\"button-text\">{{ data.okText | translate }}</span>\n </button>\n </div>\n </div>\n </mat-dialog-actions>\n</div>", styles: [".modal-text span{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$5.TranslatePipe, name: "translate" }, { kind: "component", type: NotificationTypeLabelComponent, selector: "tb-notification-type-label", inputs: ["notificationSeverity", "notificationSeverityInvert", "notificationSeverityText"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i2$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i2$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MessageBarModule }, { kind: "component", type: MessageBarComponent, selector: "tb-message-bar", inputs: ["id", "stack", "fade", "dialog", "class"] }, { kind: "pipe", type: CurlyToBoldPipe, name: "curlyToBold" }] }); }
104670
104702
  }
104671
104703
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CloudConfirmDialogComponent, decorators: [{
104672
104704
  type: Component,
@@ -104684,33 +104716,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104684
104716
  }], ctorParameters: () => [{ type: i1$5.TranslateService }, { type: undefined, decorators: [{
104685
104717
  type: Inject,
104686
104718
  args: [MAT_DIALOG_DATA]
104687
- }] }, { type: i2$2.MatDialogRef }] });
104719
+ }] }, { type: i2$1.MatDialogRef }] });
104688
104720
 
104689
- class SearchValueHighlightComponent extends BaseComponent {
104721
+ class ComStatusIconComponent {
104690
104722
  constructor() {
104691
- super();
104692
- this.isLuckySearchField = false;
104723
+ this.isActive = true;
104693
104724
  }
104694
- ngOnInit() {
104725
+ set status(status) {
104726
+ this.statusName = this.isActive ? ComAggregatedStatus[status]?.toLowerCase() : DeviceActivityLabel.get(DeviceActivityStatus.Inactive);
104695
104727
  }
104696
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchValueHighlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104697
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchValueHighlightComponent, isStandalone: true, selector: "[search-value-highlight]", inputs: { displayValue: "displayValue", searchValue: "searchValue", isLuckySearch: "isLuckySearch", isLuckySearchField: "isLuckySearchField", ngClass: "ngClass" }, usesInheritance: true, ngImport: i0, template: "<span [ngClass]=\"ngClass\" *ngIf=\"displayValue?.toString().length\">\n <ng-content></ng-content>\n</span>\n<span [ngClass]=\"ngClass\" innerHTML=\"{{ displayValue | substrHighlight:searchValue:isLuckySearch:isLuckySearchField }}\"></span>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SubstrHightlightPipe, name: "substrHighlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104728
+ ;
104729
+ set active(active) {
104730
+ this.isActive = active;
104731
+ this.statusName = active ? this.statusName : DeviceActivityLabel.get(DeviceActivityStatus.Inactive);
104732
+ }
104733
+ ;
104734
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComStatusIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104735
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ComStatusIconComponent, isStandalone: true, selector: "tb-com-status-icon", inputs: { status: "status", active: "active" }, ngImport: i0, template: "<div [ngClass]=\"'tb-com-status-' + statusName\" class=\"tb-com-status-icon\"></div>\n", styles: [":host{display:block}.tb-com-status-icon{display:block;height:18px;width:18px}.tb-com-status-inactive{background-image:url(/assets/status/inactive.svg)}.tb-com-status-ok{background-image:url(/assets/status/ok.svg)}.tb-com-status-warning{background-image:url(/assets/status/warning.svg)}.tb-com-status-error{background-image:url(/assets/status/error.svg)}.tb-com-status-comerror{background-image:url(/assets/status/com-error.svg)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104698
104736
  }
104699
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchValueHighlightComponent, decorators: [{
104737
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ComStatusIconComponent, decorators: [{
104700
104738
  type: Component,
104701
- args: [{ selector: '[search-value-highlight]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
104702
- CommonModule,
104703
- SubstrHightlightPipe
104704
- ], template: "<span [ngClass]=\"ngClass\" *ngIf=\"displayValue?.toString().length\">\n <ng-content></ng-content>\n</span>\n<span [ngClass]=\"ngClass\" innerHTML=\"{{ displayValue | substrHighlight:searchValue:isLuckySearch:isLuckySearchField }}\"></span>" }]
104705
- }], ctorParameters: () => [], propDecorators: { displayValue: [{
104706
- type: Input
104707
- }], searchValue: [{
104708
- type: Input
104709
- }], isLuckySearch: [{
104710
- type: Input
104711
- }], isLuckySearchField: [{
104739
+ args: [{ selector: 'tb-com-status-icon', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
104740
+ CommonModule
104741
+ ], template: "<div [ngClass]=\"'tb-com-status-' + statusName\" class=\"tb-com-status-icon\"></div>\n", styles: [":host{display:block}.tb-com-status-icon{display:block;height:18px;width:18px}.tb-com-status-inactive{background-image:url(/assets/status/inactive.svg)}.tb-com-status-ok{background-image:url(/assets/status/ok.svg)}.tb-com-status-warning{background-image:url(/assets/status/warning.svg)}.tb-com-status-error{background-image:url(/assets/status/error.svg)}.tb-com-status-comerror{background-image:url(/assets/status/com-error.svg)}\n"] }]
104742
+ }], propDecorators: { status: [{
104712
104743
  type: Input
104713
- }], ngClass: [{
104744
+ }], active: [{
104714
104745
  type: Input
104715
104746
  }] } });
104716
104747
 
@@ -104755,163 +104786,140 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104755
104786
  type: Output
104756
104787
  }] } });
104757
104788
 
104758
- class InternetConnectionService {
104759
- constructor(router) {
104760
- this.router = router;
104761
- this.autoReloadComponent = true;
104762
- this.destroy$ = new Subject();
104763
- this.status().pipe(takeUntil$1(this.destroy$), skip(1)).subscribe(internetConnectionStatus => {
104764
- if (internetConnectionStatus === InternetConnectionStatus.Connected && this.autoReloadComponent) {
104765
- this.reloadComponent();
104766
- }
104767
- });
104789
+ let LogoState = class LogoState {
104790
+ constructor(assetService, domSanitizer, messageBarService, mobileServiceProxyIdentity) {
104791
+ this.assetService = assetService;
104792
+ this.domSanitizer = domSanitizer;
104793
+ this.messageBarService = messageBarService;
104794
+ this.mobileServiceProxyIdentity = mobileServiceProxyIdentity;
104795
+ this.cleanLogo = () => new CleanLogoAction();
104768
104796
  }
104769
- status() {
104770
- return of(fromEvent(window, 'offline').pipe(map(() => InternetConnectionStatus.Disconnected)), fromEvent(window, 'online').pipe(map(() => InternetConnectionStatus.Connected)), new Observable((sub) => {
104771
- sub.next(navigator.onLine ? InternetConnectionStatus.Connected : InternetConnectionStatus.Disconnected);
104772
- sub.complete();
104773
- })).pipe(mergeAll());
104797
+ static image(state) {
104798
+ return state.image;
104774
104799
  }
104775
- reloadComponent() {
104776
- const currentUrl = this.router.url;
104777
- const currentRouteReuseStrategy = this.router.routeReuseStrategy.shouldReuseRoute;
104778
- this.router.routeReuseStrategy.shouldReuseRoute = () => false;
104779
- this.router.onSameUrlNavigation = 'reload';
104780
- this.router.navigate([currentUrl]).then(() => {
104781
- this.router.routeReuseStrategy.shouldReuseRoute = currentRouteReuseStrategy;
104782
- this.router.onSameUrlNavigation = 'ignore';
104783
- });
104800
+ onGetLogoAction(ctx, action) {
104801
+ if (ctx.getState().identifier !== action.logo.identifier) {
104802
+ this.cleanLogo();
104803
+ return this.assetService.getLogo(action.logo.identifier).pipe(tap(logo => this.convertAndPatch(ctx, logo.data, action.logo.identifier)));
104804
+ }
104784
104805
  }
104785
- ngOnDestroy() {
104786
- this.destroy$.next();
104787
- this.destroy$.complete();
104806
+ onGetMobileLogoAction(ctx, action) {
104807
+ if (ctx.getState().identifier !== action.logo.identifier) {
104808
+ this.cleanLogo();
104809
+ return this.mobileServiceProxyIdentity.getMobileLogo(action.logo.identifier, VERSION_V1).pipe(tap(logo => this.convertAndPatch(ctx, logo.data, action.logo.identifier)));
104810
+ }
104788
104811
  }
104789
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternetConnectionService, deps: [{ token: i1$8.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
104790
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternetConnectionService }); }
104791
- }
104792
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternetConnectionService, decorators: [{
104793
- type: Injectable
104794
- }], ctorParameters: () => [{ type: i1$8.Router }] });
104795
-
104796
- class AccountFrameMessageBarComponent extends BaseComponent {
104797
- constructor(appConfig, internetConnectionService, messageBarService) {
104798
- super();
104799
- this.appConfig = appConfig;
104800
- this.internetConnectionService = internetConnectionService;
104801
- this.messageBarService = messageBarService;
104802
- this.InternetConnectionStatus = InternetConnectionStatus;
104803
- this.IconsHelper = IconsHelper;
104804
- this.IconsHelperText = IconsHelperText;
104812
+ onUploadLogoAction(ctx, action) {
104813
+ const uploadLogo = new UploadLogoDto();
104814
+ uploadLogo.identifier = action.file.identifier;
104815
+ uploadLogo.imageB64 = action.file.imageB64;
104816
+ uploadLogo.fileType = action.file.fileType;
104817
+ return this.assetService.uploadLogo(uploadLogo).pipe(tap({
104818
+ next: uploadedLogo => this.convertAndPatch(ctx, uploadedLogo.data, action.file.identifier),
104819
+ error: (err) => {
104820
+ this.messageBarService.error(parseApiErrorMessage(err));
104821
+ }
104822
+ }));
104805
104823
  }
104806
- ngOnInit() {
104807
- const isEdgeMode = this.appConfig.getConfig().appType === AppType.Edge;
104808
- this.displayNoInternetConnection$ = this.internetConnectionService.status().pipe(takeUntil$1(this.destroy$), map(status => {
104809
- let displayNoInternetConnection = false;
104810
- if (!isEdgeMode) {
104811
- displayNoInternetConnection = status === InternetConnectionStatus.Disconnected;
104812
- if (displayNoInternetConnection) {
104813
- console.warn('INTERNET CONNECTION STATUS: ', status, new Date().toISOString());
104814
- }
104815
- this.messageBarService.clearMessagebar();
104816
- this.messageBarService.clearSnackbar();
104824
+ onDeleteLogoAction(ctx, action) {
104825
+ return this.assetService.deleteLogo(action.logo).pipe(tap({
104826
+ next: () => {
104827
+ ctx.patchState({
104828
+ image: null,
104829
+ });
104830
+ },
104831
+ error: (err) => {
104832
+ this.messageBarService.error(parseApiErrorMessage(err));
104817
104833
  }
104818
- return displayNoInternetConnection;
104819
104834
  }));
104820
104835
  }
104821
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccountFrameMessageBarComponent, deps: [{ token: AppConfigService }, { token: InternetConnectionService }, { token: MessageBarService }], target: i0.ɵɵFactoryTarget.Component }); }
104822
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AccountFrameMessageBarComponent, isStandalone: true, selector: "tb-account-frame-message-bar", usesInheritance: true, ngImport: i0, template: `
104823
- <tb-global-message-container [isPositionStatic]="true" *ngIf="displayNoInternetConnection$ | async else displayMessageBar"
104824
- [message]="L.no_internet_connection | translate"
104825
- [icon]="IconsHelperText[IconsHelper[IconsHelper.no_internet_connection]]"></tb-global-message-container>
104826
- <ng-template #displayMessageBar>
104827
- <tb-message-bar></tb-message-bar>
104828
- </ng-template>
104829
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1$5.TranslatePipe, name: "translate" }, { kind: "component", type: GlobalMessageContainerComponent, selector: "tb-global-message-container", inputs: ["isMobile", "message", "title", "icon", "timeAgoInSeconds", "isPositionStatic"] }, { kind: "ngmodule", type: MessageBarModule }, { kind: "component", type: MessageBarComponent, selector: "tb-message-bar", inputs: ["id", "stack", "fade", "dialog", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104836
+ onCleanLogoAction(ctx) {
104837
+ ctx.patchState({
104838
+ image: null
104839
+ });
104840
+ }
104841
+ convertAndPatch(ctx, logo, identifier) {
104842
+ if (logo?.image) {
104843
+ const base64Image = this.domSanitizer.bypassSecurityTrustUrl(`${DATA_IMAGE_BASE64_PREFIX},${logo?.image}`);
104844
+ ctx.patchState({
104845
+ image: base64Image,
104846
+ identifier
104847
+ });
104848
+ }
104849
+ }
104850
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoState, deps: [{ token: AssetServiceProxy }, { token: i2$2.DomSanitizer }, { token: MessageBarService }, { token: MobileServiceProxyIdentity }], target: i0.ɵɵFactoryTarget.Injectable }); }
104851
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoState }); }
104852
+ };
104853
+ __decorate([
104854
+ Action(GetLogoAction)
104855
+ ], LogoState.prototype, "onGetLogoAction", null);
104856
+ __decorate([
104857
+ Action(GetMobileLogoAction)
104858
+ ], LogoState.prototype, "onGetMobileLogoAction", null);
104859
+ __decorate([
104860
+ Action(UploadLogoAction, { cancelUncompleted: true })
104861
+ ], LogoState.prototype, "onUploadLogoAction", null);
104862
+ __decorate([
104863
+ Action(DeleteLogoAction, { cancelUncompleted: true })
104864
+ ], LogoState.prototype, "onDeleteLogoAction", null);
104865
+ __decorate([
104866
+ Action(CleanLogoAction, { cancelUncompleted: true })
104867
+ ], LogoState.prototype, "onCleanLogoAction", null);
104868
+ __decorate([
104869
+ Dispatch()
104870
+ ], LogoState.prototype, "cleanLogo", void 0);
104871
+ __decorate([
104872
+ Selector()
104873
+ ], LogoState, "image", null);
104874
+ LogoState = __decorate([
104875
+ State({
104876
+ name: 'logo',
104877
+ defaults: {
104878
+ image: null,
104879
+ identifier: null
104880
+ }
104881
+ })
104882
+ ], LogoState);
104883
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoState, decorators: [{
104884
+ type: Injectable
104885
+ }], ctorParameters: () => [{ type: AssetServiceProxy }, { type: i2$2.DomSanitizer }, { type: MessageBarService }, { type: MobileServiceProxyIdentity }], propDecorators: { onGetLogoAction: [], onGetMobileLogoAction: [], onUploadLogoAction: [], onDeleteLogoAction: [], onCleanLogoAction: [], cleanLogo: [] } });
104886
+
104887
+ class TenantLogoModule {
104888
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantLogoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
104889
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: TenantLogoModule, imports: [i1$2.ɵNgxsFeatureModule, MessageBarModule] }); }
104890
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantLogoModule, imports: [NgxsModule.forFeature([LogoState]),
104891
+ MessageBarModule] }); }
104830
104892
  }
104831
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AccountFrameMessageBarComponent, decorators: [{
104832
- type: Component,
104893
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TenantLogoModule, decorators: [{
104894
+ type: NgModule,
104833
104895
  args: [{
104834
- changeDetection: ChangeDetectionStrategy.OnPush,
104835
- selector: 'tb-account-frame-message-bar',
104836
- template: `
104837
- <tb-global-message-container [isPositionStatic]="true" *ngIf="displayNoInternetConnection$ | async else displayMessageBar"
104838
- [message]="L.no_internet_connection | translate"
104839
- [icon]="IconsHelperText[IconsHelper[IconsHelper.no_internet_connection]]"></tb-global-message-container>
104840
- <ng-template #displayMessageBar>
104841
- <tb-message-bar></tb-message-bar>
104842
- </ng-template>
104843
- `,
104844
- standalone: true,
104896
+ declarations: [],
104845
104897
  imports: [
104846
- CommonModule,
104847
- LocalizationModule,
104848
- GlobalMessageContainerComponent,
104849
- MessageBarModule,
104898
+ NgxsModule.forFeature([LogoState]),
104899
+ MessageBarModule
104850
104900
  ]
104851
104901
  }]
104852
- }], ctorParameters: () => [{ type: AppConfigService }, { type: InternetConnectionService }, { type: MessageBarService }] });
104853
-
104854
- class ParkTimeService {
104855
- constructor(store) {
104856
- this.store = store;
104857
- this.startTimer = (facility, guid) => {
104858
- const diffDictionary = this.store.selectSnapshot(FacilityState.clientServerDiffDictionary);
104859
- const facilityGuid = guid || this.store.selectSnapshot(FacilityState.guid);
104860
- const serverClientTimeSpan = diffDictionary[facilityGuid] || 0;
104861
- return timer(0, 1000).pipe(startWith(0), map(() => this.populateFacilityDateTime(facility?.timeDrift || 0, facility?.spTimeZone, serverClientTimeSpan)));
104862
- };
104863
- this.initCurrentTime();
104864
- }
104865
- getCurrentDateTimeTimer(guid, parkId) {
104866
- const facilityDictionary = this.store.selectSnapshot(FacilityState.facilityDictionary);
104867
- return this.startTimer(facilityDictionary[guid][parkId], guid);
104868
- }
104869
- getCurrentDateTime(parkId, guid) {
104870
- const facilityDictionary = this.store.selectSnapshot(FacilityState.facilityDictionary);
104871
- const diffDictionary = this.store.selectSnapshot(FacilityState.clientServerDiffDictionary);
104872
- const facility = facilityDictionary[guid] ? facilityDictionary[guid][parkId] : null;
104873
- return this.populateFacilityDateTime(facility?.timeDrift || 0, facility?.spTimeZone, diffDictionary[guid]);
104874
- }
104875
- initCurrentTime() {
104876
- this.currentTime$ = this.facility$.pipe(filter(facility => !!facility && !facility.isMultiPark), switchMap$1(facility => this.startTimer(facility)));
104877
- }
104878
- populateFacilityDateTime(timeDrift, spTimeZone, serverClientTimeSpan) {
104879
- return moment$1.tz(spTimeZone).subtract(serverClientTimeSpan, 'milliseconds').subtract(timeDrift, 'seconds');
104880
- }
104881
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParkTimeService, deps: [{ token: i1$2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
104882
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParkTimeService }); }
104883
- }
104884
- __decorate([
104885
- Select(FacilityState.selected)
104886
- ], ParkTimeService.prototype, "facility$", void 0);
104887
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParkTimeService, decorators: [{
104888
- type: Injectable
104889
- }], ctorParameters: () => [{ type: i1$2.Store }], propDecorators: { facility$: [] } });
104902
+ }] });
104890
104903
 
104891
- class TimeElapsedCounterComponent extends BaseComponent {
104892
- constructor(parkTimeService) {
104904
+ class LogoComponent extends BaseComponent {
104905
+ constructor() {
104893
104906
  super();
104894
- this.parkTimeService = parkTimeService;
104895
104907
  }
104896
104908
  ngOnInit() {
104897
- this.elapsdTime$ = this.parkTimeService.getCurrentDateTimeTimer(this.guid, this.parkId).pipe(takeUntil$1(this.destroy$), map(currentTime => {
104898
- return dateDiffInSeconds(this.startDate, currentTime);
104899
- }));
104900
104909
  }
104901
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeElapsedCounterComponent, deps: [{ token: ParkTimeService }], target: i0.ɵɵFactoryTarget.Component }); }
104902
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TimeElapsedCounterComponent, isStandalone: true, selector: "tb-time-elapsed-counter", inputs: { startDate: "startDate", parkId: "parkId", guid: "guid" }, usesInheritance: true, ngImport: i0, template: "{{ elapsdTime$ | async | timeElapsed }}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: TimeElapsedPipe, name: "timeElapsed" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104910
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104911
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LogoComponent, isStandalone: true, selector: "tb-logo", inputs: { classImage: "classImage" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"image$ | async as image\">\n <div [class.tb-h-60]=\"image\" class=\"tb-logo-wrapper {{classImage}}\">\n <img class=\"image-logo\" [src]=\"image\">\n </div>\n</ng-container>\n", styles: [":host{width:100%}.tb-logo-wrapper{display:flex;justify-content:center}.tb-logo-wrapper.tb-user-menu-logo{height:20px!important;max-width:50px;margin:5px 10px}.image-logo{max-width:100%;object-fit:contain}.mobile-menu-logo{margin:0;padding:5px 6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TenantLogoModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104903
104912
  }
104904
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeElapsedCounterComponent, decorators: [{
104913
+ __decorate([
104914
+ Select(LogoState.image)
104915
+ ], LogoComponent.prototype, "image$", void 0);
104916
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LogoComponent, decorators: [{
104905
104917
  type: Component,
104906
- args: [{ selector: 'tb-time-elapsed-counter', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
104918
+ args: [{ selector: 'tb-logo', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
104907
104919
  CommonModule,
104908
- TimeElapsedPipe
104909
- ], template: "{{ elapsdTime$ | async | timeElapsed }}\n" }]
104910
- }], ctorParameters: () => [{ type: ParkTimeService }], propDecorators: { startDate: [{
104911
- type: Input
104912
- }], parkId: [{
104913
- type: Input
104914
- }], guid: [{
104920
+ TenantLogoModule,
104921
+ ], template: "<ng-container *ngIf=\"image$ | async as image\">\n <div [class.tb-h-60]=\"image\" class=\"tb-logo-wrapper {{classImage}}\">\n <img class=\"image-logo\" [src]=\"image\">\n </div>\n</ng-container>\n", styles: [":host{width:100%}.tb-logo-wrapper{display:flex;justify-content:center}.tb-logo-wrapper.tb-user-menu-logo{height:20px!important;max-width:50px;margin:5px 10px}.image-logo{max-width:100%;object-fit:contain}.mobile-menu-logo{margin:0;padding:5px 6px}\n"] }]
104922
+ }], ctorParameters: () => [], propDecorators: { image$: [], classImage: [{
104915
104923
  type: Input
104916
104924
  }] } });
104917
104925
 
@@ -105066,12 +105074,12 @@ class ModalService {
105066
105074
  this.componentRef[dialogId] = undefined;
105067
105075
  }
105068
105076
  }
105069
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalService, deps: [{ token: i2$2.MatDialog }, { token: i1$6.MatSnackBar }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable }); }
105077
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalService, deps: [{ token: i2$1.MatDialog }, { token: i1$6.MatSnackBar }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable }); }
105070
105078
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalService }); }
105071
105079
  }
105072
105080
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalService, decorators: [{
105073
105081
  type: Injectable
105074
- }], ctorParameters: () => [{ type: i2$2.MatDialog }, { type: i1$6.MatSnackBar }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }] });
105082
+ }], ctorParameters: () => [{ type: i2$1.MatDialog }, { type: i1$6.MatSnackBar }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }] });
105075
105083
 
105076
105084
  class CanDeactivateService {
105077
105085
  constructor(modalService, translateService) {
@@ -105564,6 +105572,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
105564
105572
  }]
105565
105573
  }], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { appSection$: [], userInfo$: [] } });
105566
105574
 
105575
+ class SearchValueHighlightComponent extends BaseComponent {
105576
+ constructor() {
105577
+ super();
105578
+ this.isLuckySearchField = false;
105579
+ }
105580
+ ngOnInit() {
105581
+ }
105582
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchValueHighlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105583
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchValueHighlightComponent, isStandalone: true, selector: "[search-value-highlight]", inputs: { displayValue: "displayValue", searchValue: "searchValue", isLuckySearch: "isLuckySearch", isLuckySearchField: "isLuckySearchField", ngClass: "ngClass" }, usesInheritance: true, ngImport: i0, template: "<span [ngClass]=\"ngClass\" *ngIf=\"displayValue?.toString().length\">\n <ng-content></ng-content>\n</span>\n<span [ngClass]=\"ngClass\" innerHTML=\"{{ displayValue | substrHighlight:searchValue:isLuckySearch:isLuckySearchField }}\"></span>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: SubstrHightlightPipe, name: "substrHighlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105584
+ }
105585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchValueHighlightComponent, decorators: [{
105586
+ type: Component,
105587
+ args: [{ selector: '[search-value-highlight]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
105588
+ CommonModule,
105589
+ SubstrHightlightPipe
105590
+ ], template: "<span [ngClass]=\"ngClass\" *ngIf=\"displayValue?.toString().length\">\n <ng-content></ng-content>\n</span>\n<span [ngClass]=\"ngClass\" innerHTML=\"{{ displayValue | substrHighlight:searchValue:isLuckySearch:isLuckySearchField }}\"></span>" }]
105591
+ }], ctorParameters: () => [], propDecorators: { displayValue: [{
105592
+ type: Input
105593
+ }], searchValue: [{
105594
+ type: Input
105595
+ }], isLuckySearch: [{
105596
+ type: Input
105597
+ }], isLuckySearchField: [{
105598
+ type: Input
105599
+ }], ngClass: [{
105600
+ type: Input
105601
+ }] } });
105602
+
105567
105603
  class StatusIconComponent {
105568
105604
  constructor() {
105569
105605
  this.isActive = true;
@@ -105591,6 +105627,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
105591
105627
  type: Input
105592
105628
  }] } });
105593
105629
 
105630
+ class ParkTimeService {
105631
+ constructor(store) {
105632
+ this.store = store;
105633
+ this.startTimer = (facility, guid) => {
105634
+ const diffDictionary = this.store.selectSnapshot(FacilityState.clientServerDiffDictionary);
105635
+ const facilityGuid = guid || this.store.selectSnapshot(FacilityState.guid);
105636
+ const serverClientTimeSpan = diffDictionary[facilityGuid] || 0;
105637
+ return timer(0, 1000).pipe(startWith(0), map(() => this.populateFacilityDateTime(facility?.timeDrift || 0, facility?.spTimeZone, serverClientTimeSpan)));
105638
+ };
105639
+ this.initCurrentTime();
105640
+ }
105641
+ getCurrentDateTimeTimer(guid, parkId) {
105642
+ const facilityDictionary = this.store.selectSnapshot(FacilityState.facilityDictionary);
105643
+ return this.startTimer(facilityDictionary[guid][parkId], guid);
105644
+ }
105645
+ getCurrentDateTime(parkId, guid) {
105646
+ const facilityDictionary = this.store.selectSnapshot(FacilityState.facilityDictionary);
105647
+ const diffDictionary = this.store.selectSnapshot(FacilityState.clientServerDiffDictionary);
105648
+ const facility = facilityDictionary[guid] ? facilityDictionary[guid][parkId] : null;
105649
+ return this.populateFacilityDateTime(facility?.timeDrift || 0, facility?.spTimeZone, diffDictionary[guid]);
105650
+ }
105651
+ initCurrentTime() {
105652
+ this.currentTime$ = this.facility$.pipe(filter(facility => !!facility && !facility.isMultiPark), switchMap$1(facility => this.startTimer(facility)));
105653
+ }
105654
+ populateFacilityDateTime(timeDrift, spTimeZone, serverClientTimeSpan) {
105655
+ return moment$1.tz(spTimeZone).subtract(serverClientTimeSpan, 'milliseconds').subtract(timeDrift, 'seconds');
105656
+ }
105657
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParkTimeService, deps: [{ token: i1$2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
105658
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParkTimeService }); }
105659
+ }
105660
+ __decorate([
105661
+ Select(FacilityState.selected)
105662
+ ], ParkTimeService.prototype, "facility$", void 0);
105663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ParkTimeService, decorators: [{
105664
+ type: Injectable
105665
+ }], ctorParameters: () => [{ type: i1$2.Store }], propDecorators: { facility$: [] } });
105666
+
105667
+ class TimeElapsedCounterComponent extends BaseComponent {
105668
+ constructor(parkTimeService) {
105669
+ super();
105670
+ this.parkTimeService = parkTimeService;
105671
+ }
105672
+ ngOnInit() {
105673
+ this.elapsdTime$ = this.parkTimeService.getCurrentDateTimeTimer(this.guid, this.parkId).pipe(takeUntil$1(this.destroy$), map(currentTime => {
105674
+ return dateDiffInSeconds(this.startDate, currentTime);
105675
+ }));
105676
+ }
105677
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeElapsedCounterComponent, deps: [{ token: ParkTimeService }], target: i0.ɵɵFactoryTarget.Component }); }
105678
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TimeElapsedCounterComponent, isStandalone: true, selector: "tb-time-elapsed-counter", inputs: { startDate: "startDate", parkId: "parkId", guid: "guid" }, usesInheritance: true, ngImport: i0, template: "{{ elapsdTime$ | async | timeElapsed }}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: TimeElapsedPipe, name: "timeElapsed" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105679
+ }
105680
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeElapsedCounterComponent, decorators: [{
105681
+ type: Component,
105682
+ args: [{ selector: 'tb-time-elapsed-counter', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
105683
+ CommonModule,
105684
+ TimeElapsedPipe
105685
+ ], template: "{{ elapsdTime$ | async | timeElapsed }}\n" }]
105686
+ }], ctorParameters: () => [{ type: ParkTimeService }], propDecorators: { startDate: [{
105687
+ type: Input
105688
+ }], parkId: [{
105689
+ type: Input
105690
+ }], guid: [{
105691
+ type: Input
105692
+ }] } });
105693
+
105594
105694
  // Module
105595
105695
 
105596
105696
  const SUPPORTED_DEVICES_SCHEDULER = [
@@ -107557,12 +107657,13 @@ class SmartparkService {
107557
107657
  return this.loading.asObservable();
107558
107658
  }
107559
107659
  get hasError$() {
107560
- return this.loading.asObservable();
107660
+ return this.hasError.asObservable();
107561
107661
  }
107562
- constructor(store, facilityServiceProxy, actionStatusService) {
107662
+ constructor(store, facilityServiceProxy, actionStatusService, messageBarService) {
107563
107663
  this.store = store;
107564
107664
  this.facilityServiceProxy = facilityServiceProxy;
107565
107665
  this.actionStatusService = actionStatusService;
107666
+ this.messageBarService = messageBarService;
107566
107667
  this.loading = new BehaviorSubject(false);
107567
107668
  this.hasError = new BehaviorSubject(false);
107568
107669
  }
@@ -107584,6 +107685,15 @@ class SmartparkService {
107584
107685
  }), catchError$1(e => {
107585
107686
  this.hasError.next(true);
107586
107687
  this.loading.next(false);
107688
+ if (e.status !== HttpStatusCode$2.RequestTimeout) {
107689
+ const messageInfo = {
107690
+ duration: ONE_SECOND_IN_MILLISECONDS * 15,
107691
+ action: {
107692
+ component: RestartLinkComponent
107693
+ },
107694
+ };
107695
+ this.messageBarService.warn("", messageInfo);
107696
+ }
107587
107697
  throw e;
107588
107698
  }));
107589
107699
  }
@@ -107614,12 +107724,12 @@ class SmartparkService {
107614
107724
  }
107615
107725
  return loadingOverlayOptions;
107616
107726
  }
107617
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkService, deps: [{ token: i1$2.Store }, { token: FacilityServiceProxy }, { token: ActionStatusService }], target: i0.ɵɵFactoryTarget.Injectable }); }
107727
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkService, deps: [{ token: i1$2.Store }, { token: FacilityServiceProxy }, { token: ActionStatusService }, { token: MessageBarService }], target: i0.ɵɵFactoryTarget.Injectable }); }
107618
107728
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkService }); }
107619
107729
  }
107620
107730
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SmartparkService, decorators: [{
107621
107731
  type: Injectable
107622
- }], ctorParameters: () => [{ type: i1$2.Store }, { type: FacilityServiceProxy }, { type: ActionStatusService }] });
107732
+ }], ctorParameters: () => [{ type: i1$2.Store }, { type: FacilityServiceProxy }, { type: ActionStatusService }, { type: MessageBarService }] });
107623
107733
 
107624
107734
  class AppModuleService {
107625
107735
  constructor() {
@@ -107650,22 +107760,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
107650
107760
  }], ctorParameters: () => [] });
107651
107761
 
107652
107762
  class RefreshTokenService {
107653
- constructor(store, usersServiceProxyIdentity, sessionStorageService, mobileServiceProxyIdentity) {
107763
+ constructor(store, usersServiceProxyIdentity, sessionStorageService, actions$, mobileServiceProxyIdentity) {
107654
107764
  this.store = store;
107655
107765
  this.usersServiceProxyIdentity = usersServiceProxyIdentity;
107656
107766
  this.sessionStorageService = sessionStorageService;
107767
+ this.actions$ = actions$;
107657
107768
  this.mobileServiceProxyIdentity = mobileServiceProxyIdentity;
107658
107769
  this.isRefreshing = false;
107659
107770
  this.refreshTokenSubject = new Subject();
107660
107771
  }
107661
107772
  handleRefreshToken(request, next) {
107662
107773
  if (!this.isRefreshing) {
107774
+ const subscription = this.listenToLogoutAction();
107663
107775
  this.isRefreshing = true;
107664
107776
  const refreshInfo = this.sessionStorageService.getAuth;
107665
107777
  return this.usersServiceProxyIdentity.refreshToken(refreshInfo?.refreshToken).pipe(switchMap$1(tokenResult => {
107666
107778
  this.setAuthSession(tokenResult.data);
107667
107779
  return next.handle(this.addToken(request, tokenResult.data.accessToken));
107668
107780
  }), catchError((error) => throwError(() => error)), finalize(() => {
107781
+ if (subscription) {
107782
+ subscription.unsubscribe();
107783
+ }
107669
107784
  this.isRefreshing = false;
107670
107785
  // Process the request queue after token refresh completes
107671
107786
  this.refreshTokenSubject.next(this.sessionStorageService.accessToken);
@@ -107678,12 +107793,16 @@ class RefreshTokenService {
107678
107793
  }
107679
107794
  handleMobileRefreshToken(request, next) {
107680
107795
  if (!this.isRefreshing) {
107796
+ const subscription = this.listenToLogoutMobileAction();
107681
107797
  this.isRefreshing = true;
107682
107798
  const refreshInfo = this.sessionStorageService.getAuth;
107683
107799
  return this.mobileServiceProxyIdentity.mobileRefreshToken(refreshInfo?.refreshToken, VERSION_V1).pipe(switchMap$1(tokenResult => {
107684
107800
  this.setAuthSession(tokenResult.data);
107685
107801
  return next.handle(this.addToken(request, tokenResult.data.accessToken));
107686
107802
  }), catchError((error) => throwError(() => error)), finalize(() => {
107803
+ if (subscription) {
107804
+ subscription.unsubscribe();
107805
+ }
107687
107806
  this.isRefreshing = false;
107688
107807
  // Process the request queue after token refresh completes
107689
107808
  this.refreshTokenSubject.next(this.sessionStorageService.accessToken);
@@ -107714,6 +107833,25 @@ class RefreshTokenService {
107714
107833
  this.sessionStorageService.setAuthSession(tokenResult.accessToken, newRefreshData);
107715
107834
  this.store.dispatch(new SetStateAction(tokenResult.accessToken, newRefreshData));
107716
107835
  }
107836
+ listenToLogoutAction() {
107837
+ return this.actions$
107838
+ .pipe(ofActionDispatched(LogoutAction), first$1())
107839
+ .subscribe(() => {
107840
+ this.clearRefreshTokenQueue();
107841
+ });
107842
+ }
107843
+ listenToLogoutMobileAction() {
107844
+ return this.actions$
107845
+ .pipe(ofActionDispatched(LogoutMobileAction), first$1())
107846
+ .subscribe(() => {
107847
+ this.clearRefreshTokenQueue();
107848
+ });
107849
+ }
107850
+ clearRefreshTokenQueue() {
107851
+ this.refreshTokenSubject.complete();
107852
+ this.refreshTokenSubject = new Subject();
107853
+ this.isRefreshing = false;
107854
+ }
107717
107855
  handleRefreshTokenQueue(request, next) {
107718
107856
  return this.refreshTokenSubject.pipe(filter((token) => !this.isRefreshing && !!token), take$1(1), switchMap$1((token) => next.handle(this.addToken(request, token))));
107719
107857
  }
@@ -107724,12 +107862,12 @@ class RefreshTokenService {
107724
107862
  }
107725
107863
  });
107726
107864
  }
107727
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RefreshTokenService, deps: [{ token: i1$2.Store }, { token: UsersServiceProxyIdentity }, { token: SessionStorageService }, { token: MobileServiceProxyIdentity }], target: i0.ɵɵFactoryTarget.Injectable }); }
107865
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RefreshTokenService, deps: [{ token: i1$2.Store }, { token: UsersServiceProxyIdentity }, { token: SessionStorageService }, { token: i1$2.Actions }, { token: MobileServiceProxyIdentity }], target: i0.ɵɵFactoryTarget.Injectable }); }
107728
107866
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RefreshTokenService }); }
107729
107867
  }
107730
107868
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RefreshTokenService, decorators: [{
107731
107869
  type: Injectable
107732
- }], ctorParameters: () => [{ type: i1$2.Store }, { type: UsersServiceProxyIdentity }, { type: SessionStorageService }, { type: MobileServiceProxyIdentity }] });
107870
+ }], ctorParameters: () => [{ type: i1$2.Store }, { type: UsersServiceProxyIdentity }, { type: SessionStorageService }, { type: i1$2.Actions }, { type: MobileServiceProxyIdentity }] });
107733
107871
 
107734
107872
  class FileService {
107735
107873
  constructor(messageBarService, translateService) {
@@ -114738,6 +114876,8 @@ class VersionResolver {
114738
114876
  resolve() {
114739
114877
  return this.smartparkServiceProxy.versions().pipe(tap(versionsMap => {
114740
114878
  this.store.dispatch(new SetSmartParkVersionsAction(versionsMap.data));
114879
+ }), catchError$1(() => {
114880
+ return of(null);
114741
114881
  }));
114742
114882
  }
114743
114883
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: VersionResolver, deps: [{ token: SmartparkServiceProxy }, { token: i1$2.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -114753,5 +114893,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
114753
114893
  * Generated bundle index. Do not edit.
114754
114894
  */
114755
114895
 
114756
- export { ACCESS_PROFILE_DAT_TYPES_SP, ACTIVE_BYTE, ADVANCED_OPTIONS_VALUE, AES_DEFAULT_IV, ALERT_NOTIFICATION_CONTAINER, ALLOWED_FILES_FORMATS, ALLOWED_FILES_MAX_SIZE_MB, ALLOWED_FILES__SIZE_200_KB, ALLOWED_FILES__SIZE_2_MB, ALLOWED_NUMBER_OF_DAYS, ALLOWED_UPLOAD_FILES_QUANTITY, ALL_DAYS_IN_BINARY, ALL_DAYS_IN_BYTE, AccessProfileChangeValidTypesText, AccessProfileDayTypesText, AccessProfileRestrictionTypesText, AccessProfileShortDayTypesText, AccessProfileSpecialDaysMap, AccessProfileTypesText, AccountFrameMessageBarComponent, AccountLinkedEntitiesText, AccountLinkedEntityText, AccountSetPasswordAction, AccountSetPasswordErrorAction, AccountSetPasswordInitAction, ActionReasonsModule, ActionReasonsState, ActionStatusService, AddSmartparkAction, AddUserAction, AdministrativeNotificationEntityType, AdministrativeNotificationsModule, AdministrativeNotificationsState, AggregatedStatusText, AlertChangedAction, AlertNotificationBorderClass, AlertNotificationClassificationMap, AlertNotificationComponent, AlertNotificationService, AlertsAndNotificationsService, AlertsAndNotificationsState, AlertsDeviceTypeLabel, AlertsDeviceTypeOptions, AlertsDeviceTypeOptionsMapping, AmountStepSurchargeMinLimit, AnalyticsCommandsText, AnalyticsEventsText, AnalyticsService, AnalyticsSourceComponent, AnalyticsSourceProps, AppConfigService, AppModuleService, AppModuleToMainPermissionTypeMap, AppSectionLabel, AppSectionModuleMenu, AppSectionRoute, AppSettingsService, AppType, AuditActionTypeText, AuditLogoutAction, AuditLogoutMobileAction, AuthModule, AuthRouteGuard, AuthService, AuthTokenService, Authenticate2FAforUser, AuthenticateMultipleTenantsAction, AutofocusDirective, BOM_UNICODE, BackofficeAutheticateAction, BarcodeTypeLength, BarrireStateText, BaseComponent, BaseDeviceItemComponent, BaseDeviceService, BaseFacilityCommandsService, BaseNotificationService, BillDispenserStatusText, BillTypeText, BillValidatorStatusText, ButtonStatus, CANCEL_ALL_RELAY_VALUE, CLogItPipe, COLORS, CREDIT_CARD_POSTFIX_LENGTH, CalculatorModule, CalculatorState, CanDeactivateService, CarModule, CarState, CassetteStatusText, CentToCoinPipe, ChangeLanguageAction, ChangeMobileLanguageAction, ChangePasswordAction, ChangePasswordMobileAction, ChartLayout, CleanLogoAction, ClearActionReasonsAction, ClearAdministrativeNotificationsAction, ClearAlertsAndNotificationsAction, ClearBaseZonesAction, ClearCalculatorPriceAction, ClearCategoriesAction, ClearColorsAction, ClearDeviceAction, ClearDeviceEventsExpanded, ClearDevicesAction, ClearEventActivitiesExpanded, ClearFacilityDictionaryAction, ClearGroupsAction, ClearGuestAction, ClearGuestProfilesAction, ClearGuestsListAction, ClearHandledGuest, ClearInactiveSelectedParkAction, ClearJobTitlesAction, ClearLocateTicketSearchAction, ClearLocatedTicketAction, ClearLprTransactionsExpanded, ClearMacroCommandsAction, ClearModelsAction, ClearParkerAction, ClearRateAction, ClearSearchResultsAction, ClearSearchTermAction, ClearSearchTicketAction, ClearSelectedFacilityAction, ClearSelectedParkAction, ClearSelectedRow, ClearSelectedSmartparkAction, ClearSmartparksBasicAction, ClearSpAndSparkVersionsAction, ClearSpecialTransientTablesAction, ClearSuspendedParkActivitiesAction, ClearUserSettingsByCategoryAction, ClearUsersAction, ClearValidationTypesAction, ClearZoneAction, ClearZonesAction, ClearZsAction, cloudServiceProxies as Cloud, CloudConfirmDialogComponent, CofCredentialSubTypeText, CoinStatusText, CollapsedGuestsByBatchIdAction, ComAggregatedStatus, ComAggregatedStatusText, ComStatusIconComponent, CommandCenterModuleResolver, CommandNotificationBorderClass, CommandNotificationComponent, CommandNotificationDisplayCase, CommandNotificationService, CommandNotificationType, CommandsLocalizationKey, CommonPagesModule, CompanyService, ConfigMobileResolver, ConfigResolver, ConnectSmartparkAction, ContainerRefDirective, CoreEntities, CouponSearchFieldSelectorText, CreateBasicBatchAction, CreateBasicGuestAction, CreateBatchAction, CreateColorAction, CreateGuestAction, CreateModelAction, CreateOrUpdateSMTPDetailsAction, CredentialTypeText, CreditCardTypeText, CrudOperationText, CurlyToBoldPipe, DATA_IMAGE_BASE64_PREFIX, DATA_IMAGE_BASE64_SVG_PREFIX, DEFAULT_DATE_FORMAT, DEFAULT_EXPIRATION_MONTHS_COUNT, DEFAULT_MINIMUM_LENGTH, DEFAULT_PASSWORD_HISTORY_COUNT, DEFAULT_PERMITTED_CREDENTIALS, DEFAULT_SMART_PARK_DATE_TIME, DEFAULT_SORT_MENU, DEFAULT_STICKER_NUM, DEVICE_EVENT_OPTIONS_KEY, DEVICE_NAVIGATE_KEY, DISABLED_FOCUS_ELEMENT_CLASSES, DISABLED_FOCUS_ELEMENT_TYPES, DYNAMIC_PRICING_CONDITION, DataQaAttribute, DateService, DateValidityText, DaysText, DecimalToAmountPipe, DecimalToCurrencyPipe, DefaultImageTimeout, DeleteGuestAction, DeleteLogoAction, DeleteUserAction, DetectBrowserService, DeviceActivityChangedAction, DeviceActivityLabel, DeviceActivityMode, DeviceActivityModeText, DeviceActivityStatus, DeviceActivityType, DeviceAggregatedStatus, DeviceAggregatedStatusText, DeviceEventChangedAction, DeviceIconComponent, DeviceIndicationStatus, DeviceLaneTypes, DeviceLoop, DeviceModule, DevicePipeModule, DevicePrinterStatusText, DeviceRemoteCommandsService, DeviceSortBy, DeviceStatusBaseComponent, DeviceStatusChangedAction, DeviceTypeIconName, DeviceTypeText, DeviceTypesAlertsMapping, DevicesViewMode, DialogMode, DipSwitchStatus, Disable2FAAction, DisconnectSmartParkAction, DoorSensorStatus, DoorStatusText, DurationMessageBar, DynamicContainerComponent, DynamicEllipsisTooltipDirective, ENGLISH_LANGUAGE, ENVIRONMENT, EXPIRATION_MONTHS_COUNT_OPTIONS, edgeServiceProxies as Edge, EditUserAction, ElectronicWalletPaymentMethodTypesText, EllipsisMultilineDirective, EmailServerModule, EmailServerState, EmptyResultsComponent, Enable2FAAction, EnumsToArrayPipe, EnvironmentModeText, ErrorPageComponent, ErrorPageResolver, ExceedingBehaviorTypeText, ExpandGuestsByBatchIdAction, ExportFileService, ExportGuestsAction, ExportPdfSmartparksTableAction, ExportSmartparkAction, FONT_BASE64, FacilityChangedAction, FacilityMenuService, FacilityModule, FacilityRemoteCommandExecutedAction, FacilityRemoteCommandTypesIcon, FacilityRemoteCommandsLocalizationKey, FacilityRemoteCommandsMenuItems, FacilityService, FacilityState, FieldLabelComponent, FieldValidationsComponent, FileGenerateMethod, FileSanitizerService, FileService, FilterByDeviceType, FilterDevicesByTypePipe, FilterDevicesByZonePipe, FilterKeysPipe, FilterNumbersPipe, FilterPipe, FlattenedCoreEntities, FloatMessageBarService, ForgotPasswordAction, ForgotPasswordTenantlessAction, FormValidationsComponent, FormattedInputDirective, FrequentParkingActionText, FrequentParkingErrorActionText, GATE_STATE_VALUE, GeneralActionService, GenerateSearchParamsDto, GetAllLocalizationsAction, GetAllLocalizationsMobileAction, GetLogoAction, GetMobileLogoAction, GetRateByIdAction, GetSpecialTransientTablesAction, GetUserSettingsByCategoryAction, GlobalErrorService, GlobalMessageContainerComponent, GroupPermissionsPipe, GuestModule, GuestSearchFieldSelectorText, GuestState, GuestTypeCastText, GuestTypesText, HOUR_FORMAT_12, HOUR_FORMAT_24, HOUR_FORMAT_FULL_DAY, HandleAlertsAction, HandleNotificationAction, HandledNotificationAction, HasActionErrored, HealthAction, HoldRelayMode, HoldRelayModeText, HopperStatusText, HotelGuestSearchFieldSelectorText, HttpCancelBlackListUrls, HttpCancelInterceptor, HttpCancelService, INPUT_SEARCH_DEBOUNCE_TIME, INPUT_SEARCH_DEBOUNCE_TIME_LOW, INPUT_SEARCH_DEBOUNCE_TIME_MEDIUM, IconColumnComponent, IconComponent, IconModule, IconsHelper, IconsHelperText, identityServiceProxies as Identity, ImportMonthyStastusFieldSelectorText, InitAddSmartparkConnectionAction, InitSMTPDetailsAction, InitSessionFromLocalStorageAction, InitSmartparkTransportAction, InternetConnectionService, InternetConnectionStatus, IsActionExecuting, IsEllipsisDirective, LOCAL_ENGLISH_LANGUAGE, LOCATION_OPTIONS, LOGGED_TENANT_KEY, LanguageTypeKeys, LayoutModule, LayoutState, Load2FAUserAction, LoadActionReasonsAction, LoadAdministrativeNotificationsAction, LoadAlertsAndNotificationsAction, LoadAppConfigurationAction, LoadAppConfigurationMobileAction, LoadBackofficeAppConfigurationAction, LoadBackofficeSmartparksTableAction, LoadBackofficeSpAndSparkVersionsAction, LoadBackofficeVarsAction, LoadBaseZonesAction, LoadCalculatorPriceAction, LoadCategoriesAction, LoadColorsAction, LoadColorsAction1, LoadColorsAction2, LoadColorsAction3, LoadColorsAction4, LoadColorsAction5, LoadDeviceAction, LoadDeviceEventActivitiesAction, LoadDeviceEventsAction, LoadDeviceEventsCollapse, LoadDeviceLprTransactionsAction, LoadDeviceStatusAction, LoadDevicesAction, LoadDevicesByTypeAction, LoadEventActivitiesCollapse, LoadFacilityAction, LoadFacilityRemoteCommandsRefAction, LoadGroupsAction, LoadGuestByIdAction, LoadGuestProfilesAction, LoadGuestsAction, LoadGuestsByBatchIdAction, LoadGuestsByBatchIdCancelledAction, LoadJobTitlesAction, LoadLocateTicketSearchAction, LoadLocatedTicketAction, LoadLprTransactionsCollapse, LoadMacroCommandsAction, LoadMobileNotificationsAction, LoadMobileSmartparksBasicAction, LoadModelsAction, LoadModelsAction1, LoadModelsAction2, LoadModelsAction3, LoadModelsAction4, LoadModelsAction5, LoadOverflowPriceTableAction, LoadParkActivitiesAction, LoadParkDevicesAction, LoadParkerAction, LoadParkersAction, LoadParkingLotAction, LoadParksAction, LoadRateByIdAction, LoadRatesAction, LoadRemoteCommandsRefAction, LoadSMTPDetailsAction, LoadSelectedDeviceAction, LoadSmartparksAction, LoadSmartparksBasicAction, LoadSmartparksDropdownAction, LoadSmartparksTableAction, LoadSpAndSparkVersionsAction, LoadStickerPriceTableAction, LoadTicketNumParkersAction, LoadTransientPriceTableAction, LoadUserPermissionsAction, LoadUsersAction, LoadUsersAdministrativeNotificationsAction, LoadValidationTypeAction, LoadVarsAction, LoadZoneAction, LoadZonesAction, LoadZsAction, LoadingOverlayComponent, LocalStorageMigrator, LocalStorageService, Localization, LocalizationModule, LocalizationResolver, LocalizationService, LocalizationState, LoginModule, LoginRequestAction, LoginService, LoginState, LoginSuccess, LogoComponent, LogoState, LogoutAction, LogoutMobileAction, LoopStatus, LowerCaseUrlSerializer, LprTransactionsChangedAction, LprTransactionsOptionsText, LprTransactionsSearchFieldSelectorText, MANUAL_ACTION_REASON_NAME_MAX_LENGTH, MAX_ALLOWED_BADGE_VALUE, MAX_ALLOWED_CURRENT_BALANCE, MAX_ALLOWED_DEDUCTION_VALUE, MAX_ALLOWED_GUEST_UNIT_QUANTITY, MAX_ALLOWED_IDENTIFIER_VALUE, MAX_ALLOWED_STARTING_PURSE_VALUE, MAX_CARDS, MAX_CAR_PLATES, MAX_EMAIL_CHARACTERS_LENGTH, MAX_EXPORT_RECORDS, MAX_HOTEL_ROOM_NUMBER_LENGTH, MAX_INT16_VALUE, MAX_INT32_VALUE, MAX_INTEGER_VALUE, MAX_LENGTH_BATCH_NAME, MAX_LENGTH_DESCRIPTION_50, MAX_LENGTH_DESCRIPTION_70, MAX_LENGTH_FOOTER, MAX_LENGTH_LEFT, MAX_LENGTH_LEFT_BACKWARD_COMPATIBILITY, MAX_LENGTH_MANUAL_TEXT, MAX_LENGTH_NAME_20, MAX_LENGTH_NAME_30, MAX_LENGTH_NAME_50, MAX_LENGTH_QUANTITY, MAX_LENGTH_REASON_DESCRIPTION, MAX_LENGTH_SERACH_TERM, MAX_LENGTH_SERACH_TERM_30, MAX_MOBILE_LENGTH, MAX_NUMBER_OF_NIGHTS, MAX_NUMBER_OF_ROW_IN_MENU, MAX_OCCUPANCY_VALUE, MAX_PERIOD_TIME, MAX_PLATE_ID_LENGTH, MAX_PRICE_NO_TIME_LIMIT_VALUE, MAX_PRICE_PERIOD_VALUE, MAX_REPEAT_COUNT_VALUE, MAX_RESULTS, MAX_ROLE_NAME_LENGTH, MAX_SP, MAX_TIME_RANGE_ITEMS_PER_KEY, MC_READER_ID, MESSAGE_BAR_DEFAULT_ID, MINIMUM_DROPDOWN_RESULTS_WITHOUT_SEARCH, MINIMUM_LENGTH_OPTIONS, MINUTES_PER_HOUR, MIN_ALLOWED_GUEST_UNIT_QUANTITY, MIN_LENGTH_QUANTITY, MIN_NUMBER_OF_ROW_IN_MENU, MIN_TIME_RANGE_ITEMS_PER_KEY, MOBILE_REFRESH_INFO, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory, MSLAuthService, MULTIPLE, MainModuleToSubModulesPermissionTypeMap, MatHintErrorDirective, MaxAllowedSurchargeAmount, MaxAllowedSurchargeMaxLimit, MaxAllowedSurchargeMinLimit, MaxDisplayTimeout, MaxIPV4TextLength, MaxSurchargeNameLength, MenuAppModuleLoadAction, MenuClearAction, MenuLoadAction, MenuService, MenuSubModuleClearAction, MenuSubModuleLoadAction, MessageBarComponent, MessageBarContainerComponent, MessageBarModule, MessageBarPosition, MessageBarService, MessageBarStatus, MiddayPeriod, MinAllowedSurchargeAmount, MinAllowedSurchargeMaxLimit, MinAllowedSurchargeMinLimit, MinDisplayTimeout, MobileAppSectionLabel, MobileAuthenticateMultipleTenantsAction, MobileCommandCenterModuleResolver, MobileLogoutAction, ModalButtonsWrapperComponent, ModalService, ModuleGuard, ModuleMenuBaseComponent, MonthlyRenewalSettingsActionTypesText, MonthlyRenewalSettingsActionTypesValueText, MonthlySearchFieldSelectorText, MslEventType, NONE_ACTIVE_BYTE, NONE_USER_ID, NO_RESULT, NativeElementInjectorDirective, NotSupportedBrowserGuard, NotSupportedBrowserPageComponent, NotificationChangedAction, NotificationClass, NotificationClassficationType, NotificationCloseAllButtonComponent, NotificationConfig, NotificationEventService, NotificationHPositions, NotificationModule, NotificationSeverityText, NotificationTypeLabelComponent, NotificationTypeText, NotificationVPositions, NotificationsModule, ONE_DAY_IN_MINUTES_VALUE, ONE_MINUTE_IN_MILLISECONDS, ONE_SECOND_IN_MILLISECONDS, OffScreenDirective, OpenIdAuthInitializeService, OpenIdAuthService, OpenIdAutheticateAction, Operator, OrderBy, OrderByPipe, OrderDirection$1 as OrderDirection, OrphanFacilitiesPipe, PARKER_SEARCH_AUTO_REDIRECT, PASSWORD_EXPIRED, PASSWORD_HISTORY_COUNT_OPTIONS, PREVENT_CLICK_ELEMENT_CLASSES, ParkActivitiesModule, ParkActivitiesState, ParkActivityChangedAction, ParkConnectionStatus, ParkConnectionStatusClass, ParkConnectionStatusText, ParkManagerModule, ParkManagerState, ParkService, ParkTimeService, ParkerSearchTerm, ParkerService, ParkerState, ParkerTagsText, ParkerTypesText, PasswordScore, PasswordStrengthService, PaymentSearchFieldSelectorText, PaymentServiceTypeText, PaymentsTypesText, PermissionGroupText, PermissionTypeSupportedVersionDictionary, PermissionTypeText, PermissionsService, PrintReceiptAction, ProfileTypeText, RATE_ID_WITH_VALUE_2, REDIRECT_URL, RELAY_2_VALUE, RELAY_3_VALUE, RELAY_4_VALUE, RESET_PASSWORD_EMAIL, RTObjectObject, RangeModes, RangeModesText, RateModule, RateState, RealtimeEventService, RealtimeResolver, ReceiptGeneratedAction, RefreshTokenService, RefreshTokenState, RelayStatus, ReloadParkerAction, RemoteCommandService, RemoteCommandTypesIcon, RemoteValidationModule, RemoteValidationState, RemoveExpiredAlertsAndNotificationsAction, ReportCategories, ReportCategoriesText, ReportMethodDictionary, ReportSectionMenu, ResendPendingAdminInvitationsAction, ResendUserInvitationAction, ResetRatesAction, RestrictionLocationTypeText, RestrictionLocationTypeTextTable, RestrictionTypeText, RevenueService, RouteService, RowOperation, SESSION, STATUS_CODE_SERVER_VALIDATION, STATUS_CODE_UNAUTHORIZED, STRING_ZERO, SUPER_PARK_ROUTE_KEY, SUPPORETD_RESTORE_TICKET_TYPES, SUPPORTED_CAR_ON_LOOP_DEVICE_TYPES, SUPPORTED_DEVICES_SCHEDULER, SUPPORTED_GATE_DEVICE_TYPES, SUPPORTED_LPR_TRANSACTIONS_DEVICE_TYPES, SUPPORTED_PAYMENT_FOR_ISF_TYPES, SUPPORTED_RESTORE_TICKET_DEVICE_TYPES, SUPPORTED_STATUS_DEVICE_TYPES, SUPPORTED_TICKET_INSIDE_DEVICE_TYPES, SYSTEM_ALERT_VALUE, SearchFacilitiesMode, SearchFieldSelectorText, SearchTicketAction, SearchValueHighlightComponent, SecurityModule, SecurityState, SelectDeviceAction, SelectParkAction, SelectSmartParkAction, SelectedRowAction, SendEmailFromEntityAction, SendEmailToGuest, SendGuestPassesToEmailAction, SendTestEmailAction, ServiceProxyModule, ServicesRunningStatusChangedAction, SessionState, SessionStorageService, SetBackofficeSmartParkVersionsAction, SetBasicMenuAction, SetDeviceEventsExpanded, SetDeviceRemoteCommandsMapAction, SetDeviceStatusAction, SetDeviceViewModeAction, SetEventActivitiesExpanded, SetFacilityRemoteCommandsMapAction, SetGuestsAction, SetLprTransactionsExpanded, SetMobileModeAction, SetParkActivitiesAction, SetRealTimeEventStatusAction, SetSearchTermAction, SetSelectedParkAction, SetSmartParkAction, SetSmartParkTableAction, SetSmartParkVersionsAction, SetSmartparkBasicAction, SetSmartparkBasicAllAction, SetStateAction, SetTFASetupAction, SetTenantUserAction, SetTicketIdentifierAction, SetUserNameAction, SetUserStatusAction, SetUsersAction, SetkeepMeLoggedInAction, SharedComponentsModule, SharedDirectivesModule, SharedModule, SharedPipesModule, SideNavSortBy, SidenavModule, SidenavState, SignalR, SignalRObject, SignalRRefreshTokenAction, SingleSignOnProviderText, SmartParkDeviceStatusChangedAction, SmartParkStatusText, SmartparkDateTimePipe, SmartparkDialogState, SmartparkModule, SmartparkService, SmartparkState, SortDevicesPipe, SortPipe, SparkNotification, SpecialDaysPipe, SpinnerDiameterSize, StaticMessageBarService, StatusIconComponent, StickerSearchFieldSelectorText, StopPropagationDirective, StringItPipe, SubModuleGuard, SubstrHightlightManyPipe, SubstrHightlightPipe, SubstrHightlightSinglePipe, SwallowUnitStatusText, SyncUsersAndRolesBySmartparkIdAction, TBFormatPipe, TBNumberDirective, TENANT_KEY, TENS_MULTIPLIER, TableRowHeightSizes, TableTypeText, TagLabelType, TenantClearAction, TenantLoadAction, TenantLogoModule, TenantService, TenantlessLoginMode, TibaDateFormat, TibaMatDialogConfig, TibaRetryPolicy, TibaValidators, TicketService, TimeAgoPipe, TimeElapsedCounterComponent, TimeElapsedFormats, TimeElapsedPipe, TimeRangeFormats, TimeRangePipe, ToggleDrawerAction, ToggleDrawerCollapseAction, TooltipPositions, TrackAction, TransientParkingActionText, TranslateLocalPipe, TreeFilterKeysPipe, TreeMode, TypeCastText, UNSAVED_DATA, USER_IS_TEMPORARY_BLOCKED, UnloadParkingLotAction, UpdateAndActivateUserAction, UpdateAuthTokenAction, UpdateBasicGuestAction, UpdateBasicGuestTempAction, UpdateDocumentAction, UpdateGuestAction, UpdateGuestLocationAction, UpdateMobileMode, UpdateSmartparkAction, UpdateTenantInfoProps, UpdateTenantSingleSignOnAction, UpdateTicketPlateIdAction, UpdateUserAlertsPreferencesAction, UpdateUserNotificaitonsPreferencesAction, UpdateUserSettingsAction, UpdateUserSettingsInSessionAction, UpdateUserSettingsMobileAction, UploadLogoAction, UserCreationType, UserModule, UserSettingsModule, UserSettingsState, UserState, VALIDATION_TYPE_BY_HOURS_41, VALIDATION_TYPE_BY_HOURS_42, VALID_TIME_MAX_LENGTH, VERSION_10_1_0, VERSION_10_2_0, VERSION_10_2_1, VERSION_10_3_0, VERSION_10_3_9, VERSION_10_4_0, VERSION_25_1_0, VERSION_25_2_0, VERSION_25_2_1, VERSION_25_3_0, VERSION_7_4_0, VERSION_7_4_1, VERSION_8_1_0, VERSION_8_2_0, VERSION_8_3_0, VERSION_8_4_0, VERSION_9_1_0, VERSION_9_2_0, VERSION_9_2_2, VERSION_9_3_0, VERSION_9_4_0, VERSION_V1, VGuestWithBatchTableData, ValidateUserTokenAction, ValidationService, ValidationStickerType, ValidationTypeModule, ValidationTypeState, VarDirective, Verify2FactorAuthenticationAction, VersionMobileResolver, VersionResolver, VirtualValidationStatusText, WrapFnPipe, ZerofyNegativePipe, ZoneChangedAction, ZoneModule, ZoneState, accountModuleAnimation, adjustForTimezone, allowSpecialKeys, alphanumericRegex, appModuleAnimation, areDatesIdentical, areVersionsCompatible, arrayEquals, arraysAreDifferent, baseReduce, blobToBase64, buildMessageInfos, buildMessages, camelize, canceled, capitalizeFirstLetter, compareValues, convert24HoursToAmPM, convertAmPmTo24Hours, convertBinaryToDecimal, convertCentToWholeCoin, convertDecimalToBinary, convertFeaturePermissionsToDictionary, convertFormatWithoutTime, convertWholeCoinToCent, createDescriptor, createMessageText, dateDiffInSeconds, days, daysTranslation, decimalNumberRegex, decimalPercentageRegex, decimalPositiveNumberRegex, decryptClientSecret, delayCancellation, deviceIndicationStatusLocalization, deviceTypeFilterOptions, diffInMillis, dispatched, distinctObjectByProperties, distinctObjectByProperty, downloadFile, ensureObjectMetadata, entryDevicesLaneTypes, errored, exitDevicesLaneTypes, extractErrorsChanges, extractNumber, extractResetChanges, extractSetValueChanges, extractToggleStatusChanges, extractTouchedChanges, extractUpdateValueAndValidityChanges, filterDevicesByTypes, filterKeyValueBaseReduce, findChildRoute, findObjectDifferences, findParentElement, findParentElementDimensions, findParentRoute, findParentRouteConfig, flattenByKey, formatMinutesToTimeNumber, formatTimeToMinutes, formatTimeToString, formatTimeWithMidnight, formatTimeWithSeparator, formatTimeWithoutMidnight, formatTimeWithoutSeparator, formatTimeWithoutSeperatorAndWithMidnight, formatTimeWithoutSeperatorAndWithoutMidnight, getActivatedRoutePathSegment, getAddress, getCurrentLang, getDateTimeInSeconds, getDateWithoutTime, getDaysFromValue, getDefaultDeviceStatus, getFormattedTime, getMomenWithTime, getMomentNullable, getMomentWithoutTime, getNavigationRoute, getObjectMetadata, getParkerTypesText, getPasswordMinimalLength, getSecondsBackoff, getTooltipTextByParkerType, getUserTimeZone, getUtcMomentNullable, hasRequiredField, hasValue, humanizeTimeElapsed, humanizeUtcTimeElapsed, identity, initializeMsal, initializeOpenId, integerNumberRegex, integerPositiveNumberRegex, ipv4Regex, isBoolean, isCharacterLengthValid, isDefinedAndNotEmpty, isDeviceActive, isDeviceInFilterDeviceTypes, isDeviceInFiltersDeviceTypes, isFalsy, isIOSDevice, isMaxDaysRangeValid, isNullOrEmpty, isNumber, isObjectEmpty, isSearchFieldChanged, isSingularOrPlural, isTrueInBinary, isTruthy, isVersionGreaterThanEqual, loadHTMLContent, lowerCase, lowerCaseFirstLetter, mapTransientTags, markEntitiesAsChanged, markEntityAsUnchanged, matchesDeviceCriteria, matchesDeviceParkingLotCriteria, matchesDevicesParkingLotCriteria, minutesToTime, mobileRegex, nameof, navigateToForbiddenAccessPage, navigateToNotSupportedBrowserPage, noEmojiRegex, notificationAnimation, numberWithLeadingZero, ofStatus, omitKeys, openBackgroundIframe, openCloseFiltersAnimation, parentParkBaseEventTypes, parentParkEventTypes, parkBaseEventTypes, parkEventTypes, parkerEnumToText, parseApiErrorData, parseApiErrorMessage, parseDateTimeToSparkParkTime, parseSmartParkTime, passwordRegex, percentageRegex, printSpecialDaysText, printStackTrace, readjustForTimezone, regexExp, remoteCommandLocalizationMap, replaceAll, rtEventPermissions, safeParse, searchBarPopupAnimation, setErrorMessage, shortDaysTranslation, sleep, slideFromBottom, slideFromRight, slideFromUp, slideUpDown, successful, timeToMinutes, timeToMoment, toInt, toNumberMap, toStringMap, wrapConstructor };
114896
+ export { ACCESS_PROFILE_DAT_TYPES_SP, ACTIVE_BYTE, ADVANCED_OPTIONS_VALUE, AES_DEFAULT_IV, ALERT_NOTIFICATION_CONTAINER, ALLOWED_FILES_FORMATS, ALLOWED_FILES_MAX_SIZE_MB, ALLOWED_FILES__SIZE_200_KB, ALLOWED_FILES__SIZE_2_MB, ALLOWED_NUMBER_OF_DAYS, ALLOWED_UPLOAD_FILES_QUANTITY, ALL_DAYS_IN_BINARY, ALL_DAYS_IN_BYTE, AccessProfileChangeValidTypesText, AccessProfileDayTypesText, AccessProfileRestrictionTypesText, AccessProfileShortDayTypesText, AccessProfileSpecialDaysMap, AccessProfileTypesText, AccountFrameMessageBarComponent, AccountLinkedEntitiesText, AccountLinkedEntityText, AccountSetPasswordAction, AccountSetPasswordErrorAction, AccountSetPasswordInitAction, ActionReasonsModule, ActionReasonsState, ActionStatusService, AddSmartparkAction, AddUserAction, AdministrativeNotificationEntityType, AdministrativeNotificationsModule, AdministrativeNotificationsState, AggregatedStatusText, AlertChangedAction, AlertNotificationBorderClass, AlertNotificationClassificationMap, AlertNotificationComponent, AlertNotificationService, AlertsAndNotificationsService, AlertsAndNotificationsState, AlertsDeviceTypeLabel, AlertsDeviceTypeOptions, AlertsDeviceTypeOptionsMapping, AmountStepSurchargeMinLimit, AnalyticsCommandsText, AnalyticsEventsText, AnalyticsService, AnalyticsSourceComponent, AnalyticsSourceProps, AppConfigService, AppModuleService, AppModuleToMainPermissionTypeMap, AppSectionLabel, AppSectionModuleMenu, AppSectionRoute, AppSettingsService, AppType, AuditActionTypeText, AuditLogoutAction, AuditLogoutMobileAction, AuthModule, AuthRouteGuard, AuthService, AuthTokenService, Authenticate2FAforUser, AuthenticateMultipleTenantsAction, AutofocusDirective, BOM_UNICODE, BackofficeAutheticateAction, BarcodeTypeLength, BarrireStateText, BaseComponent, BaseDeviceItemComponent, BaseDeviceService, BaseFacilityCommandsService, BaseNotificationService, BillDispenserStatusText, BillTypeText, BillValidatorStatusText, ButtonStatus, CANCEL_ALL_RELAY_VALUE, CLogItPipe, COLORS, CREDIT_CARD_POSTFIX_LENGTH, CalculatorModule, CalculatorState, CanDeactivateService, CarModule, CarState, CassetteStatusText, CentToCoinPipe, ChangeLanguageAction, ChangeMobileLanguageAction, ChangePasswordAction, ChangePasswordMobileAction, ChartLayout, CleanLogoAction, ClearActionReasonsAction, ClearAdministrativeNotificationsAction, ClearAlertsAndNotificationsAction, ClearBaseZonesAction, ClearCalculatorPriceAction, ClearCategoriesAction, ClearColorsAction, ClearDeviceAction, ClearDeviceEventsExpanded, ClearDevicesAction, ClearEventActivitiesExpanded, ClearFacilityDictionaryAction, ClearGroupsAction, ClearGuestAction, ClearGuestProfilesAction, ClearGuestsListAction, ClearHandledGuest, ClearInactiveSelectedParkAction, ClearJobTitlesAction, ClearLocateTicketSearchAction, ClearLocatedTicketAction, ClearLprTransactionsExpanded, ClearMacroCommandsAction, ClearModelsAction, ClearParkerAction, ClearRateAction, ClearSearchResultsAction, ClearSearchTermAction, ClearSearchTicketAction, ClearSelectedFacilityAction, ClearSelectedParkAction, ClearSelectedRow, ClearSelectedSmartparkAction, ClearSmartparksBasicAction, ClearSpAndSparkVersionsAction, ClearSpecialTransientTablesAction, ClearSuspendedParkActivitiesAction, ClearUserSettingsByCategoryAction, ClearUsersAction, ClearValidationTypesAction, ClearZoneAction, ClearZonesAction, ClearZsAction, cloudServiceProxies as Cloud, CloudConfirmDialogComponent, CofCredentialSubTypeText, CoinStatusText, CollapsedGuestsByBatchIdAction, ComAggregatedStatus, ComAggregatedStatusText, ComStatusIconComponent, CommandCenterModuleResolver, CommandNotificationBorderClass, CommandNotificationComponent, CommandNotificationDisplayCase, CommandNotificationService, CommandNotificationType, CommandsLocalizationKey, CommonPagesModule, CompanyService, ConfigMobileResolver, ConfigResolver, ConnectSmartparkAction, ContainerRefDirective, CoreEntities, CouponSearchFieldSelectorText, CreateBasicBatchAction, CreateBasicGuestAction, CreateBatchAction, CreateColorAction, CreateGuestAction, CreateModelAction, CreateOrUpdateSMTPDetailsAction, CredentialTypeText, CreditCardTypeText, CrudOperationText, CurlyToBoldPipe, DATA_IMAGE_BASE64_PREFIX, DATA_IMAGE_BASE64_SVG_PREFIX, DEFAULT_DATE_FORMAT, DEFAULT_EXPIRATION_MONTHS_COUNT, DEFAULT_MINIMUM_LENGTH, DEFAULT_PASSWORD_HISTORY_COUNT, DEFAULT_PERMITTED_CREDENTIALS, DEFAULT_SMART_PARK_DATE_TIME, DEFAULT_SORT_MENU, DEFAULT_STICKER_NUM, DEVICE_EVENT_OPTIONS_KEY, DEVICE_NAVIGATE_KEY, DISABLED_FOCUS_ELEMENT_CLASSES, DISABLED_FOCUS_ELEMENT_TYPES, DYNAMIC_PRICING_CONDITION, DataQaAttribute, DateService, DateValidityText, DaysText, DecimalToAmountPipe, DecimalToCurrencyPipe, DefaultImageTimeout, DeleteGuestAction, DeleteLogoAction, DeleteUserAction, DetectBrowserService, DeviceActivityChangedAction, DeviceActivityLabel, DeviceActivityMode, DeviceActivityModeText, DeviceActivityStatus, DeviceActivityType, DeviceAggregatedStatus, DeviceAggregatedStatusText, DeviceEventChangedAction, DeviceIconComponent, DeviceIndicationStatus, DeviceLaneTypes, DeviceLoop, DeviceModule, DevicePipeModule, DevicePrinterStatusText, DeviceRemoteCommandsService, DeviceSortBy, DeviceStatusBaseComponent, DeviceStatusChangedAction, DeviceTypeIconName, DeviceTypeText, DeviceTypesAlertsMapping, DevicesViewMode, DialogMode, DipSwitchStatus, Disable2FAAction, DisconnectSmartParkAction, DoorSensorStatus, DoorStatusText, DurationMessageBar, DynamicContainerComponent, DynamicEllipsisTooltipDirective, ENGLISH_LANGUAGE, ENVIRONMENT, EXPIRATION_MONTHS_COUNT_OPTIONS, edgeServiceProxies as Edge, EditUserAction, ElectronicWalletPaymentMethodTypesText, EllipsisMultilineDirective, EmailServerModule, EmailServerState, EmptyResultsComponent, Enable2FAAction, EnumsToArrayPipe, EnvironmentModeText, ErrorPageComponent, ErrorPageResolver, ErrorResultsComponent, ExceedingBehaviorTypeText, ExpandGuestsByBatchIdAction, ExportFileService, ExportGuestsAction, ExportPdfSmartparksTableAction, ExportSmartparkAction, FONT_BASE64, FacilityChangedAction, FacilityMenuService, FacilityModule, FacilityRemoteCommandExecutedAction, FacilityRemoteCommandTypesIcon, FacilityRemoteCommandsLocalizationKey, FacilityRemoteCommandsMenuItems, FacilityService, FacilityState, FieldLabelComponent, FieldValidationsComponent, FileGenerateMethod, FileSanitizerService, FileService, FilterByDeviceType, FilterDevicesByTypePipe, FilterDevicesByZonePipe, FilterKeysPipe, FilterNumbersPipe, FilterPipe, FlattenedCoreEntities, FloatMessageBarService, ForgotPasswordAction, ForgotPasswordTenantlessAction, FormValidationsComponent, FormattedInputDirective, FrequentParkingActionText, FrequentParkingErrorActionText, GATE_STATE_VALUE, GeneralActionService, GenerateSearchParamsDto, GetAllLocalizationsAction, GetAllLocalizationsMobileAction, GetLogoAction, GetMobileLogoAction, GetRateByIdAction, GetSpecialTransientTablesAction, GetUserSettingsByCategoryAction, GlobalErrorService, GlobalMessageContainerComponent, GroupPermissionsPipe, GuestModule, GuestSearchFieldSelectorText, GuestState, GuestTypeCastText, GuestTypesText, HOUR_FORMAT_12, HOUR_FORMAT_24, HOUR_FORMAT_FULL_DAY, HandleAlertsAction, HandleNotificationAction, HandledNotificationAction, HasActionErrored, HealthAction, HoldRelayMode, HoldRelayModeText, HopperStatusText, HotelGuestSearchFieldSelectorText, HttpCancelBlackListUrls, HttpCancelInterceptor, HttpCancelService, HumanizePipe, INPUT_SEARCH_DEBOUNCE_TIME, INPUT_SEARCH_DEBOUNCE_TIME_LOW, INPUT_SEARCH_DEBOUNCE_TIME_MEDIUM, IconColumnComponent, IconComponent, IconModule, IconsHelper, IconsHelperText, identityServiceProxies as Identity, ImportMonthyStastusFieldSelectorText, InitAddSmartparkConnectionAction, InitSMTPDetailsAction, InitSessionFromLocalStorageAction, InitSmartparkTransportAction, InternetConnectionService, InternetConnectionStatus, IsActionExecuting, IsEllipsisDirective, LOCAL_ENGLISH_LANGUAGE, LOCATION_OPTIONS, LOGGED_TENANT_KEY, LanguageTypeKeys, LayoutModule, LayoutState, Load2FAUserAction, LoadActionReasonsAction, LoadAdministrativeNotificationsAction, LoadAlertsAndNotificationsAction, LoadAppConfigurationAction, LoadAppConfigurationMobileAction, LoadBackofficeAppConfigurationAction, LoadBackofficeSmartparksTableAction, LoadBackofficeSpAndSparkVersionsAction, LoadBackofficeVarsAction, LoadBaseZonesAction, LoadCalculatorPriceAction, LoadCategoriesAction, LoadColorsAction, LoadColorsAction1, LoadColorsAction2, LoadColorsAction3, LoadColorsAction4, LoadColorsAction5, LoadDeviceAction, LoadDeviceEventActivitiesAction, LoadDeviceEventsAction, LoadDeviceEventsCollapse, LoadDeviceLprTransactionsAction, LoadDeviceStatusAction, LoadDevicesAction, LoadDevicesByTypeAction, LoadEventActivitiesCollapse, LoadFacilityAction, LoadFacilityRemoteCommandsRefAction, LoadGroupsAction, LoadGuestByIdAction, LoadGuestProfilesAction, LoadGuestsAction, LoadGuestsByBatchIdAction, LoadGuestsByBatchIdCancelledAction, LoadJobTitlesAction, LoadLocateTicketSearchAction, LoadLocatedTicketAction, LoadLprTransactionsCollapse, LoadMacroCommandsAction, LoadMobileNotificationsAction, LoadMobileSmartparksBasicAction, LoadModelsAction, LoadModelsAction1, LoadModelsAction2, LoadModelsAction3, LoadModelsAction4, LoadModelsAction5, LoadOverflowPriceTableAction, LoadParkActivitiesAction, LoadParkDevicesAction, LoadParkerAction, LoadParkersAction, LoadParkingLotAction, LoadParksAction, LoadRateByIdAction, LoadRatesAction, LoadRemoteCommandsRefAction, LoadSMTPDetailsAction, LoadSelectedDeviceAction, LoadSmartparksAction, LoadSmartparksBasicAction, LoadSmartparksDropdownAction, LoadSmartparksTableAction, LoadSpAndSparkVersionsAction, LoadStickerPriceTableAction, LoadTicketNumParkersAction, LoadTransientPriceTableAction, LoadUserPermissionsAction, LoadUsersAction, LoadUsersAdministrativeNotificationsAction, LoadValidationTypeAction, LoadVarsAction, LoadZoneAction, LoadZonesAction, LoadZsAction, LoadingOverlayComponent, LocalStorageMigrator, LocalStorageService, Localization, LocalizationModule, LocalizationResolver, LocalizationService, LocalizationState, LoginModule, LoginRequestAction, LoginService, LoginState, LoginSuccess, LogoComponent, LogoState, LogoutAction, LogoutMobileAction, LoopStatus, LowerCaseUrlSerializer, LprTransactionsChangedAction, LprTransactionsOptionsText, LprTransactionsSearchFieldSelectorText, MANUAL_ACTION_REASON_NAME_MAX_LENGTH, MAX_ALLOWED_BADGE_VALUE, MAX_ALLOWED_CURRENT_BALANCE, MAX_ALLOWED_DEDUCTION_VALUE, MAX_ALLOWED_GUEST_UNIT_QUANTITY, MAX_ALLOWED_IDENTIFIER_VALUE, MAX_ALLOWED_STARTING_PURSE_VALUE, MAX_CARDS, MAX_CAR_PLATES, MAX_EMAIL_CHARACTERS_LENGTH, MAX_EXPORT_RECORDS, MAX_HOTEL_ROOM_NUMBER_LENGTH, MAX_INT16_VALUE, MAX_INT32_VALUE, MAX_INTEGER_VALUE, MAX_LENGTH_BATCH_NAME, MAX_LENGTH_DESCRIPTION_50, MAX_LENGTH_DESCRIPTION_70, MAX_LENGTH_FOOTER, MAX_LENGTH_LEFT, MAX_LENGTH_LEFT_BACKWARD_COMPATIBILITY, MAX_LENGTH_MANUAL_TEXT, MAX_LENGTH_NAME_20, MAX_LENGTH_NAME_30, MAX_LENGTH_NAME_50, MAX_LENGTH_QUANTITY, MAX_LENGTH_REASON_DESCRIPTION, MAX_LENGTH_SERACH_TERM, MAX_LENGTH_SERACH_TERM_30, MAX_MOBILE_LENGTH, MAX_NUMBER_OF_NIGHTS, MAX_NUMBER_OF_ROW_IN_MENU, MAX_OCCUPANCY_VALUE, MAX_PERIOD_TIME, MAX_PLATE_ID_LENGTH, MAX_PRICE_NO_TIME_LIMIT_VALUE, MAX_PRICE_PERIOD_VALUE, MAX_REPEAT_COUNT_VALUE, MAX_RESULTS, MAX_ROLE_NAME_LENGTH, MAX_SP, MAX_TIME_RANGE_ITEMS_PER_KEY, MC_READER_ID, MESSAGE_BAR_DEFAULT_ID, MINIMUM_DROPDOWN_RESULTS_WITHOUT_SEARCH, MINIMUM_LENGTH_OPTIONS, MINUTES_PER_HOUR, MIN_ALLOWED_GUEST_UNIT_QUANTITY, MIN_LENGTH_QUANTITY, MIN_NUMBER_OF_ROW_IN_MENU, MIN_TIME_RANGE_ITEMS_PER_KEY, MOBILE_REFRESH_INFO, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory, MSLAuthService, MULTIPLE, MainModuleToSubModulesPermissionTypeMap, MatHintErrorDirective, MaxAllowedSurchargeAmount, MaxAllowedSurchargeMaxLimit, MaxAllowedSurchargeMinLimit, MaxDisplayTimeout, MaxIPV4TextLength, MaxSurchargeNameLength, MenuAppModuleLoadAction, MenuClearAction, MenuLoadAction, MenuService, MenuSubModuleClearAction, MenuSubModuleLoadAction, MessageBarComponent, MessageBarContainerComponent, MessageBarModule, MessageBarPosition, MessageBarService, MessageBarStatus, MiddayPeriod, MinAllowedSurchargeAmount, MinAllowedSurchargeMaxLimit, MinAllowedSurchargeMinLimit, MinDisplayTimeout, MobileAppSectionLabel, MobileAuthenticateMultipleTenantsAction, MobileCommandCenterModuleResolver, MobileLogoutAction, ModalButtonsWrapperComponent, ModalService, ModuleGuard, ModuleMenuBaseComponent, MonthlyRenewalSettingsActionTypesText, MonthlyRenewalSettingsActionTypesValueText, MonthlySearchFieldSelectorText, MslEventType, NONE_ACTIVE_BYTE, NONE_USER_ID, NO_RESULT, NativeElementInjectorDirective, NotSupportedBrowserGuard, NotSupportedBrowserPageComponent, NotificationChangedAction, NotificationClass, NotificationClassficationType, NotificationCloseAllButtonComponent, NotificationConfig, NotificationEventService, NotificationHPositions, NotificationModule, NotificationSeverityText, NotificationTypeLabelComponent, NotificationTypeText, NotificationVPositions, NotificationsModule, ONE_DAY_IN_MINUTES_VALUE, ONE_MINUTE_IN_MILLISECONDS, ONE_SECOND_IN_MILLISECONDS, OffScreenDirective, OpenIdAuthInitializeService, OpenIdAuthService, OpenIdAutheticateAction, Operator, OrderBy, OrderByPipe, OrderDirection$1 as OrderDirection, OrphanFacilitiesPipe, PARKER_SEARCH_AUTO_REDIRECT, PASSWORD_EXPIRED, PASSWORD_HISTORY_COUNT_OPTIONS, PREVENT_CLICK_ELEMENT_CLASSES, ParkActivitiesModule, ParkActivitiesState, ParkActivityChangedAction, ParkConnectionStatus, ParkConnectionStatusClass, ParkConnectionStatusText, ParkManagerModule, ParkManagerState, ParkService, ParkTimeService, ParkerSearchTerm, ParkerService, ParkerState, ParkerTagsText, ParkerTypesText, PasswordScore, PasswordStrengthService, PaymentSearchFieldSelectorText, PaymentServiceTypeText, PaymentsTypesText, PermissionGroupText, PermissionTypeSupportedVersionDictionary, PermissionTypeText, PermissionsService, PrintReceiptAction, ProfileTypeText, RATE_ID_WITH_VALUE_2, REDIRECT_URL, RELAY_2_VALUE, RELAY_3_VALUE, RELAY_4_VALUE, RESET_PASSWORD_EMAIL, RTL_LANGUAGES, RTObjectObject, RangeModes, RangeModesText, RateModule, RateState, RealtimeEventService, RealtimeResolver, ReceiptGeneratedAction, RefreshTokenService, RefreshTokenState, RelayStatus, ReloadParkerAction, RemoteCommandService, RemoteCommandTypesIcon, RemoteValidationModule, RemoteValidationState, RemoveExpiredAlertsAndNotificationsAction, ReportCategories, ReportCategoriesText, ReportMethodDictionary, ReportSectionMenu, ResendPendingAdminInvitationsAction, ResendUserInvitationAction, ResetRatesAction, RestartLinkComponent, RestartLinkModule, RestrictionLocationTypeText, RestrictionLocationTypeTextTable, RestrictionTypeText, RevenueService, RouteService, RowOperation, SESSION, STATUS_CODE_SERVER_VALIDATION, STATUS_CODE_UNAUTHORIZED, STRING_ZERO, SUPER_PARK_ROUTE_KEY, SUPPORETD_RESTORE_TICKET_TYPES, SUPPORTED_CAR_ON_LOOP_DEVICE_TYPES, SUPPORTED_DEVICES_SCHEDULER, SUPPORTED_GATE_DEVICE_TYPES, SUPPORTED_LPR_TRANSACTIONS_DEVICE_TYPES, SUPPORTED_PAYMENT_FOR_ISF_TYPES, SUPPORTED_RESTORE_TICKET_DEVICE_TYPES, SUPPORTED_STATUS_DEVICE_TYPES, SUPPORTED_TICKET_INSIDE_DEVICE_TYPES, SYSTEM_ALERT_VALUE, SearchFacilitiesMode, SearchFieldSelectorText, SearchTicketAction, SearchValueHighlightComponent, SecurityModule, SecurityState, SelectDeviceAction, SelectParkAction, SelectSmartParkAction, SelectedRowAction, SendEmailFromEntityAction, SendEmailToGuest, SendGuestPassesToEmailAction, SendTestEmailAction, ServiceProxyModule, ServicesRunningStatusChangedAction, SessionState, SessionStorageService, SetBackofficeSmartParkVersionsAction, SetBasicMenuAction, SetDeviceEventsExpanded, SetDeviceRemoteCommandsMapAction, SetDeviceStatusAction, SetDeviceViewModeAction, SetEventActivitiesExpanded, SetFacilityRemoteCommandsMapAction, SetGuestsAction, SetLprTransactionsExpanded, SetMobileModeAction, SetParkActivitiesAction, SetRealTimeEventStatusAction, SetSearchTermAction, SetSelectedParkAction, SetSmartParkAction, SetSmartParkTableAction, SetSmartParkVersionsAction, SetSmartparkBasicAction, SetSmartparkBasicAllAction, SetStateAction, SetTFASetupAction, SetTenantUserAction, SetTicketIdentifierAction, SetUserNameAction, SetUserStatusAction, SetUsersAction, SetkeepMeLoggedInAction, SharedComponentsModule, SharedDirectivesModule, SharedModule, SharedPipesModule, SideNavSortBy, SidenavModule, SidenavState, SignalR, SignalRObject, SignalRRefreshTokenAction, SingleSignOnProviderText, SmartParkDeviceStatusChangedAction, SmartParkStatusText, SmartparkDateTimePipe, SmartparkDialogState, SmartparkModule, SmartparkService, SmartparkState, SortDevicesPipe, SortPipe, SparkNotification, SpecialDaysPipe, SpinnerDiameterSize, StaticMessageBarService, StatusIconComponent, StickerSearchFieldSelectorText, StopPropagationDirective, StringItPipe, SubModuleGuard, SubstrHightlightManyPipe, SubstrHightlightPipe, SubstrHightlightSinglePipe, SwallowUnitStatusText, SyncUsersAndRolesBySmartparkIdAction, TBFormatPipe, TBNumberDirective, TENANT_KEY, TENS_MULTIPLIER, TableRowHeightSizes, TableTypeText, TagLabelType, TenantClearAction, TenantLoadAction, TenantLogoModule, TenantService, TenantlessLoginMode, TibaDateFormat, TibaMatDialogConfig, TibaRetryPolicy, TibaValidators, TicketService, TimeAgoPipe, TimeElapsedCounterComponent, TimeElapsedFormats, TimeElapsedPipe, TimeRangeFormats, TimeRangePipe, ToggleDrawerAction, ToggleDrawerCollapseAction, TooltipPositions, TrackAction, TransientParkingActionText, TranslateLocalPipe, TreeFilterKeysPipe, TreeMode, TypeCastText, UNSAVED_DATA, USER_IS_TEMPORARY_BLOCKED, UnloadParkingLotAction, UpdateAndActivateUserAction, UpdateAuthTokenAction, UpdateBasicGuestAction, UpdateBasicGuestTempAction, UpdateDocumentAction, UpdateGuestAction, UpdateGuestLocationAction, UpdateMobileMode, UpdateSmartparkAction, UpdateTenantInfoProps, UpdateTenantSingleSignOnAction, UpdateTicketPlateIdAction, UpdateUserAlertsPreferencesAction, UpdateUserNotificaitonsPreferencesAction, UpdateUserSettingsAction, UpdateUserSettingsInSessionAction, UpdateUserSettingsMobileAction, UploadLogoAction, UserCreationType, UserModule, UserSettingsModule, UserSettingsState, UserState, VALIDATION_TYPE_BY_HOURS_41, VALIDATION_TYPE_BY_HOURS_42, VALID_TIME_MAX_LENGTH, VERSION_10_1_0, VERSION_10_2_0, VERSION_10_2_1, VERSION_10_3_0, VERSION_10_3_9, VERSION_10_4_0, VERSION_25_1_0, VERSION_25_2_0, VERSION_25_2_1, VERSION_25_3_0, VERSION_7_4_0, VERSION_7_4_1, VERSION_8_1_0, VERSION_8_2_0, VERSION_8_3_0, VERSION_8_4_0, VERSION_9_1_0, VERSION_9_2_0, VERSION_9_2_2, VERSION_9_3_0, VERSION_9_4_0, VERSION_V1, VGuestWithBatchTableData, ValidateUserTokenAction, ValidationService, ValidationStickerType, ValidationTypeModule, ValidationTypeState, VarDirective, Verify2FactorAuthenticationAction, VersionMobileResolver, VersionResolver, VirtualValidationStatusText, WrapFnPipe, ZerofyNegativePipe, ZoneChangedAction, ZoneModule, ZoneState, accountModuleAnimation, adjustForTimezone, allowSpecialKeys, alphanumericRegex, appModuleAnimation, areDatesIdentical, areVersionsCompatible, arrayEquals, arraysAreDifferent, baseReduce, blobToBase64, buildMessageInfos, buildMessages, camelize, canceled, capitalizeFirstLetter, compareValues, convert24HoursToAmPM, convertAmPmTo24Hours, convertBinaryToDecimal, convertCentToWholeCoin, convertDecimalToBinary, convertFeaturePermissionsToDictionary, convertFormatWithoutTime, convertWholeCoinToCent, createDescriptor, createMessageText, dateDiffInSeconds, days, daysTranslation, decimalNumberRegex, decimalPercentageRegex, decimalPositiveNumberRegex, decryptClientSecret, delayCancellation, deviceIndicationStatusLocalization, deviceTypeFilterOptions, diffInMillis, dispatched, distinctObjectByProperties, distinctObjectByProperty, downloadFile, ensureObjectMetadata, entryDevicesLaneTypes, errored, exitDevicesLaneTypes, extractErrorsChanges, extractNumber, extractResetChanges, extractSetValueChanges, extractToggleStatusChanges, extractTouchedChanges, extractUpdateValueAndValidityChanges, filterDevicesByTypes, filterKeyValueBaseReduce, findChildRoute, findObjectDifferences, findParentElement, findParentElementDimensions, findParentRoute, findParentRouteConfig, flattenByKey, formatMinutesToTimeNumber, formatTimeToMinutes, formatTimeToString, formatTimeWithMidnight, formatTimeWithSeparator, formatTimeWithoutMidnight, formatTimeWithoutSeparator, formatTimeWithoutSeperatorAndWithMidnight, formatTimeWithoutSeperatorAndWithoutMidnight, getActivatedRoutePathSegment, getAddress, getCurrentLang, getDateTimeInSeconds, getDateWithoutTime, getDaysFromValue, getDefaultDeviceStatus, getFormattedTime, getMomenWithTime, getMomentNullable, getMomentWithoutTime, getNavigationRoute, getObjectMetadata, getParkerTypesText, getPasswordMinimalLength, getSecondsBackoff, getTooltipTextByParkerType, getUserTimeZone, getUtcMomentNullable, hasRequiredField, hasValue, humanizeTimeElapsed, humanizeUtcTimeElapsed, identity, initializeMsal, initializeOpenId, integerNumberRegex, integerPositiveNumberRegex, ipv4Regex, isBoolean, isCharacterLengthValid, isDefinedAndNotEmpty, isDeviceActive, isDeviceInFilterDeviceTypes, isDeviceInFiltersDeviceTypes, isFalsy, isIOSDevice, isMaxDaysRangeValid, isNullOrEmpty, isNumber, isObjectEmpty, isSearchFieldChanged, isSingularOrPlural, isTrueInBinary, isTruthy, isVersionGreaterThanEqual, loadHTMLContent, lowerCase, lowerCaseFirstLetter, mapTransientTags, markEntitiesAsChanged, markEntityAsUnchanged, matchesDeviceCriteria, matchesDeviceParkingLotCriteria, matchesDevicesParkingLotCriteria, minutesToTime, mobileRegex, nameof, navigateToForbiddenAccessPage, navigateToNotSupportedBrowserPage, noEmojiRegex, notificationAnimation, numberWithLeadingZero, ofStatus, omitKeys, openBackgroundIframe, openCloseFiltersAnimation, parentParkBaseEventTypes, parentParkEventTypes, parkBaseEventTypes, parkEventTypes, parkerEnumToText, parseApiErrorData, parseApiErrorMessage, parseDateTimeToSparkParkTime, parseSmartParkTime, passwordRegex, percentageRegex, printSpecialDaysText, printStackTrace, readjustForTimezone, regexExp, remoteCommandLocalizationMap, replaceAll, rtEventPermissions, safeParse, searchBarPopupAnimation, setErrorMessage, shortDaysTranslation, sleep, slideFromBottom, slideFromRight, slideFromUp, slideUpDown, successful, timeToMinutes, timeToMoment, toInt, toNumberMap, toStringMap, wrapConstructor };
114757
114897
  //# sourceMappingURL=tiba-spark-client-shared-lib.mjs.map