@c8y/ngx-components 1021.22.0 → 1021.22.27

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 (148) hide show
  1. package/alarms/alarms-date-filter.component.d.ts +23 -10
  2. package/alarms/alarms-date-filter.component.d.ts.map +1 -1
  3. package/alarms/alarms-type-filter.component.d.ts +21 -14
  4. package/alarms/alarms-type-filter.component.d.ts.map +1 -1
  5. package/alarms/alarms-view.service.d.ts +7 -0
  6. package/alarms/alarms-view.service.d.ts.map +1 -1
  7. package/alarms/alarms.model.d.ts +1 -6
  8. package/alarms/alarms.model.d.ts.map +1 -1
  9. package/alarms/alarms.module.d.ts +1 -1
  10. package/alarms/index.d.ts +1 -0
  11. package/alarms/index.d.ts.map +1 -1
  12. package/branding/shared/data/branding-tracking.service.d.ts +20 -0
  13. package/branding/shared/data/branding-tracking.service.d.ts.map +1 -0
  14. package/branding/shared/data/branding-version.service.d.ts.map +1 -1
  15. package/branding/shared/data/index.d.ts +1 -0
  16. package/branding/shared/data/index.d.ts.map +1 -1
  17. package/branding/shared/data/store-branding.service.d.ts +8 -1
  18. package/branding/shared/data/store-branding.service.d.ts.map +1 -1
  19. package/branding/shared/lazy/branding/branding.component.d.ts +3 -2
  20. package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
  21. package/branding/shared/lazy/branding-theme-form/branding-theme-form.component.d.ts.map +1 -1
  22. package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
  23. package/cockpit-config/cockpit-config.module.d.ts +1 -1
  24. package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
  25. package/context-dashboard/context-dashboard.service.d.ts +1 -1
  26. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  27. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  28. package/core/common/service-registry.model.d.ts +2 -1
  29. package/core/common/service-registry.model.d.ts.map +1 -1
  30. package/core/common/ui-state.service.d.ts +0 -1
  31. package/core/common/ui-state.service.d.ts.map +1 -1
  32. package/core/i18n/missing-translation-custom.handler.d.ts +1 -0
  33. package/core/i18n/missing-translation-custom.handler.d.ts.map +1 -1
  34. package/core/plugins/index.d.ts +1 -0
  35. package/core/plugins/index.d.ts.map +1 -1
  36. package/core/plugins/plugin-loaded.pipe.d.ts +12 -0
  37. package/core/plugins/plugin-loaded.pipe.d.ts.map +1 -0
  38. package/core/plugins/plugins-resolve.service.d.ts +4 -2
  39. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  40. package/core/plugins/plugins.model.d.ts +3 -1
  41. package/core/plugins/plugins.model.d.ts.map +1 -1
  42. package/core/plugins/plugins.service.d.ts +3 -0
  43. package/core/plugins/plugins.service.d.ts.map +1 -1
  44. package/core/router/router-tabs.resolver.d.ts +2 -2
  45. package/core/router/router-tabs.resolver.d.ts.map +1 -1
  46. package/core/router/scoped-context-route.service.d.ts.map +1 -1
  47. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  48. package/ecosystem/application-plugins/application-plugins.guard.d.ts.map +1 -1
  49. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  50. package/esm2022/alarms/alarm-info.component.mjs +3 -3
  51. package/esm2022/alarms/alarm-severity-to-label.pipe.mjs +2 -2
  52. package/esm2022/alarms/alarms-date-filter.component.mjs +94 -42
  53. package/esm2022/alarms/alarms-type-filter.component.mjs +102 -72
  54. package/esm2022/alarms/alarms-view.service.mjs +16 -2
  55. package/esm2022/alarms/alarms.component.mjs +3 -3
  56. package/esm2022/alarms/alarms.model.mjs +1 -1
  57. package/esm2022/alarms/alarms.module.mjs +3 -3
  58. package/esm2022/alarms/index.mjs +2 -1
  59. package/esm2022/branding/shared/data/branding-tracking.service.mjs +58 -0
  60. package/esm2022/branding/shared/data/branding-version.service.mjs +9 -5
  61. package/esm2022/branding/shared/data/index.mjs +2 -1
  62. package/esm2022/branding/shared/data/store-branding.service.mjs +15 -4
  63. package/esm2022/branding/shared/lazy/branding/branding.component.mjs +16 -12
  64. package/esm2022/branding/shared/lazy/branding-theme-form/branding-theme-form.component.mjs +5 -2
  65. package/esm2022/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.mjs +2 -2
  66. package/esm2022/cockpit-config/cockpit-config.module.mjs +6 -3
  67. package/esm2022/cockpit-config/feature-config.component.mjs +5 -4
  68. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -13
  69. package/esm2022/core/bootstrap/bootstrap.component.mjs +4 -3
  70. package/esm2022/core/common/service-registry.model.mjs +1 -1
  71. package/esm2022/core/common/ui-state.service.mjs +1 -19
  72. package/esm2022/core/i18n/missing-translation-custom.handler.mjs +5 -1
  73. package/esm2022/core/i18n/translation-loader.service.mjs +2 -2
  74. package/esm2022/core/plugins/index.mjs +2 -1
  75. package/esm2022/core/plugins/plugin-loaded.pipe.mjs +26 -0
  76. package/esm2022/core/plugins/plugins-resolve.service.mjs +5 -1
  77. package/esm2022/core/plugins/plugins.model.mjs +2 -1
  78. package/esm2022/core/plugins/plugins.service.mjs +13 -5
  79. package/esm2022/core/router/router-tabs.resolver.mjs +22 -8
  80. package/esm2022/core/router/scoped-context-route.service.mjs +9 -4
  81. package/esm2022/core/tabs/tabs-outlet.component.mjs +3 -3
  82. package/esm2022/core/version/websdk-plugin-version.factory.mjs +2 -2
  83. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  84. package/esm2022/ecosystem/activity-log/activity-log.component.mjs +3 -3
  85. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +67 -23
  86. package/esm2022/ecosystem/application-plugins/application-plugins.guard.mjs +8 -2
  87. package/esm2022/ecosystem/application-plugins/orphaned-status-cell-renderer.component.mjs +7 -1
  88. package/esm2022/interval-picker/interval-picker.component.mjs +1 -1
  89. package/esm2022/interval-picker/interval-picker.model.mjs +1 -1
  90. package/esm2022/protocol-lwm2m/ng1/plugin-checker.service.mjs +5 -1
  91. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +2 -1
  92. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +73 -4
  93. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +29 -5
  94. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +7 -1
  95. package/esm2022/widgets/implementations/alarms/alarm-widget.service.mjs +12 -2
  96. package/fesm2022/c8y-ngx-components-alarms.mjs +200 -107
  97. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  98. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +76 -9
  99. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  100. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +19 -12
  101. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +7 -5
  103. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +46 -12
  105. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -2
  107. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +79 -23
  109. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-ecosystem.mjs +81 -25
  111. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  112. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs +4 -0
  114. package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -0
  116. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +124 -15
  118. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components.mjs +91 -50
  120. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  121. package/interval-picker/interval-picker.component.d.ts +2 -2
  122. package/interval-picker/interval-picker.component.d.ts.map +1 -1
  123. package/interval-picker/interval-picker.model.d.ts +5 -0
  124. package/interval-picker/interval-picker.model.d.ts.map +1 -1
  125. package/locales/de.po +431 -538
  126. package/locales/en.po +2 -889
  127. package/locales/en_US.po +2 -880
  128. package/locales/es.po +462 -540
  129. package/locales/fr.po +470 -549
  130. package/locales/ja_JP.po +405 -598
  131. package/locales/ko.po +649 -502
  132. package/locales/locales.pot +27 -12
  133. package/locales/nl.po +463 -541
  134. package/locales/pl.po +502 -552
  135. package/locales/pt_BR.po +466 -543
  136. package/locales/zh_CN.po +650 -498
  137. package/locales/zh_TW.po +650 -498
  138. package/package.json +1 -1
  139. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts +4 -0
  140. package/protocol-lwm2m/ng1/plugin-checker.service.d.ts.map +1 -1
  141. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  142. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +12 -1
  143. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  144. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +12 -1
  145. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  146. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +11 -1
  147. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  148. package/widgets/implementations/alarms/alarm-widget.service.d.ts.map +1 -1
@@ -4,8 +4,8 @@ import * as i2$2 from 'ngx-bootstrap/dropdown';
4
4
  import { BsDropdownModule, BsDropdownDirective } from 'ngx-bootstrap/dropdown';
5
5
  import * as i3$1 from '@angular/cdk/a11y';
6
6
  import { A11yModule } from '@angular/cdk/a11y';
7
- import { castArray, flatten, uniq, sortBy, groupBy, camelCase, isEqual, isUndefined, throttle as throttle$1, keys, get, isNaN as isNaN$1, isFinite, each, mapValues, mapKeys, forEach, reduce, union, cloneDeep, uniqBy, assign, min, every, first, map as map$1, find, negate, upperFirst, memoize as memoize$1, property, some, entries, omitBy, isDate, orderBy, flatMap, isEmpty, filter as filter$1, snakeCase, matches, isString, clone, toNumber, isEqualWith, escape as escape$1, escapeRegExp, assignWith, set, omit, pick, has, transform, identity, flow, isNil, chunk, values, without, indexOf, parseInt as parseInt$1, kebabCase, forOwn } from 'lodash-es';
8
- import { merge, of, defer, combineLatest, race, isObservable, from, Subject, BehaviorSubject, NEVER, Observable, firstValueFrom, fromEvent, pipe, throwError, concat, map as map$2, EMPTY, timer, fromEventPattern, startWith as startWith$1, switchMap as switchMap$1, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, empty, forkJoin, ReplaySubject, interval, shareReplay as shareReplay$1, mergeMap as mergeMap$1 } from 'rxjs';
7
+ import { castArray, flatten, uniq, sortBy, groupBy, camelCase, isEqual, isUndefined, throttle as throttle$1, keys, get, isNaN as isNaN$1, isFinite, each, mapValues, mapKeys, forEach, reduce, union, cloneDeep, uniqBy, assign, min, every, first, map as map$2, find, negate, upperFirst, memoize as memoize$1, property, some, entries, omitBy, isDate, orderBy, flatMap, isEmpty, filter as filter$1, snakeCase, matches, isString, clone, toNumber, isEqualWith, escape as escape$1, escapeRegExp, assignWith, set, omit, pick, has, transform, identity, flow, isNil, chunk, values, without, indexOf, parseInt as parseInt$1, kebabCase, forOwn } from 'lodash-es';
8
+ import { merge, of, defer, combineLatest, race, isObservable, from, Subject, BehaviorSubject, NEVER, Observable, firstValueFrom, map as map$1, distinctUntilChanged as distinctUntilChanged$1, fromEvent, pipe, throwError, concat, EMPTY, timer, fromEventPattern, startWith as startWith$1, switchMap as switchMap$1, takeUntil as takeUntil$1, empty, forkJoin, ReplaySubject, interval, shareReplay as shareReplay$1, mergeMap as mergeMap$1 } from 'rxjs';
9
9
  import { map, distinctUntilChanged, filter, startWith, switchMap, take, shareReplay, scan, debounceTime, share, takeUntil, tap, catchError, first as first$1, retryWhen, delay, concatMap, debounce, sample, withLatestFrom, mergeMap, every as every$1, toArray, merge as merge$1, expand, skip, mapTo, finalize, reduce as reduce$1, combineLatestWith } from 'rxjs/operators';
10
10
  import * as i1 from '@c8y/client';
11
11
  import { ApplicationAvailability, OperationStatus, TenantLoginOptionType, UserManagementSource, GrantType, ApplicationType, aggregationType, BearerAuthFromSessionStorage, FetchClient, Client, PasswordStrength, QueriesUtil, InventoryService, UserService, ApplicationService, TenantService, AlarmService, Service } from '@c8y/client';
@@ -14,7 +14,6 @@ import * as i1$3 from '@angular/router';
14
14
  import { NavigationEnd, RouterModule as RouterModule$1, ActivationEnd, NavigationStart, PRIMARY_OUTLET, ActivatedRoute, ActivationStart, ChildActivationEnd, ROUTES, Router, NavigationCancel, NavigationError } from '@angular/router';
15
15
  import * as i4 from '@c8y/ngx-components/api';
16
16
  import { DataModule } from '@c8y/ngx-components/api';
17
- import { satisfies, compare, coerce } from 'semver';
18
17
  import { coerceNumberProperty } from '@angular/cdk/coercion';
19
18
  import * as i2$1 from '@angular/cdk/scrolling';
20
19
  import { VIRTUAL_SCROLL_STRATEGY, ScrollingModule } from '@angular/cdk/scrolling';
@@ -30,6 +29,7 @@ export * from '@c8y/ngx-components/gettext';
30
29
  import * as i3 from 'ngx-bootstrap/datepicker';
31
30
  import { BsDatepickerModule, BsDatepickerDirective } from 'ngx-bootstrap/datepicker';
32
31
  import { defineLocale, enGbLocale, zhCnLocale, ptBrLocale, plLocale, nlLocale, koLocale, jaLocale, frLocale, esLocale, deLocale } from 'ngx-bootstrap/chronos';
32
+ import { compare, coerce } from 'semver';
33
33
  import saveAs$1, { saveAs } from 'file-saver';
34
34
  import * as i1$2 from '@angular/platform-browser';
35
35
  import { BlobReader, ZipReader, BlobWriter, ZipWriter } from '@zip.js/zip.js';
@@ -897,25 +897,8 @@ class AppStateService extends StateService {
897
897
  this.state.supportUrl = await this.options.getSupportUrl();
898
898
  this.state.activateSupportUserAvailable = await this.options.getActivateSupportUser();
899
899
  this.state.versions.backend = await this.options.getSystemOption('system', 'version');
900
- try {
901
- this.showIncompatibleVersionsError();
902
- }
903
- catch (ex) {
904
- // ignore this
905
- }
906
900
  this.emitNewState();
907
901
  }
908
- showIncompatibleVersionsError() {
909
- if (this.options.noVersionWarning) {
910
- return;
911
- }
912
- const uiVersion = this.state.versions.ui.ngx;
913
- const backendVersion = this.state.versions.backend;
914
- if (!satisfies(uiVersion, `<=${backendVersion} || ~${backendVersion}`)) {
915
- const errorContent = `You are running version ${uiVersion} of the UI and version ${backendVersion} of backend!`;
916
- console.log('%c ' + errorContent, 'font-weight: bold; font-size: 30px; color: red;');
917
- }
918
- }
919
902
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AppStateService, deps: [{ token: i1.ApplicationService }, { token: i4.ApiService }, { token: OptionsService }, { token: i1.FetchClient }, { token: i1.TenantLoginOptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
920
903
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AppStateService, providedIn: 'root' }); }
921
904
  }
@@ -1685,6 +1668,7 @@ class MissingTranslationCustomHandler {
1685
1668
  else {
1686
1669
  translation = this.parser.interpolate(messageKey, interpolateParams);
1687
1670
  }
1671
+ translation = this.removeContextIndicators(translation);
1688
1672
  this.addToCache(messageKey, interpolateParams, translation);
1689
1673
  }
1690
1674
  return translation;
@@ -1715,6 +1699,9 @@ class MissingTranslationCustomHandler {
1715
1699
  }
1716
1700
  return undefined;
1717
1701
  }
1702
+ removeContextIndicators(translation) {
1703
+ return translation.replace(/`[^`]*`/g, '');
1704
+ }
1718
1705
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MissingTranslationCustomHandler, deps: [{ token: i1$1.TranslateParser }, { token: PatternMessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1719
1706
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MissingTranslationCustomHandler }); }
1720
1707
  }
@@ -4476,6 +4463,7 @@ var ApplicationPluginStatus;
4476
4463
  ApplicationPluginStatus["LATEST"] = "LATEST";
4477
4464
  ApplicationPluginStatus["OUTDATED"] = "OUTDATED";
4478
4465
  ApplicationPluginStatus["REVOKED"] = "REVOKED";
4466
+ ApplicationPluginStatus["AUTO"] = "AUTO";
4479
4467
  })(ApplicationPluginStatus || (ApplicationPluginStatus = {}));
4480
4468
  var PackageType;
4481
4469
  (function (PackageType) {
@@ -4565,6 +4553,7 @@ class PluginsResolveService {
4565
4553
  this._pluginDetails$ = new Subject();
4566
4554
  this._allPluginsLoaded$ = new BehaviorSubject(false);
4567
4555
  this._contextPathsFromWhereRemotesHaveBeenLoaded$ = new BehaviorSubject([]);
4556
+ this._loadedPluginNames$ = new BehaviorSubject([]);
4568
4557
  this.injectors$ = this._injectors$.asObservable().pipe(
4569
4558
  // not specifying the bufferSize of shareReplay so all injectors are received on subscription
4570
4559
  shareReplay());
@@ -4575,6 +4564,7 @@ class PluginsResolveService {
4575
4564
  this.allPluginsLoaded$ = this._allPluginsLoaded$.asObservable();
4576
4565
  this.contextPathsFromWhereRemotesHaveBeenLoaded$ =
4577
4566
  this._contextPathsFromWhereRemotesHaveBeenLoaded$.asObservable();
4567
+ this.loadedPluginNames$ = this._loadedPluginNames$.asObservable();
4578
4568
  }
4579
4569
  /**
4580
4570
  * Loads plugins by resolving the remote NgModules and injecting it. Also attaching
@@ -4601,6 +4591,8 @@ class PluginsResolveService {
4601
4591
  else {
4602
4592
  this.loadModule(moduleOrProviders);
4603
4593
  }
4594
+ const newLoadedPluginNames = [...this._loadedPluginNames$.value, name];
4595
+ this._loadedPluginNames$.next(newLoadedPluginNames);
4604
4596
  }
4605
4597
  catch (ex) {
4606
4598
  console.error(`Failed to load ${name}`, ex);
@@ -4837,8 +4829,9 @@ class PluginsService {
4837
4829
  */
4838
4830
  async addRemotes(application, plugins) {
4839
4831
  const pluginsArray = Array.isArray(plugins) ? plugins : [plugins];
4840
- const appConfig = application?.config || { remotes: {} };
4841
- const appConfigRemotes = appConfig?.remotes || {};
4832
+ const manifestRemotes = application.manifest?.remotes || {};
4833
+ const appConfig = application?.config;
4834
+ const appConfigRemotes = appConfig?.remotes || manifestRemotes;
4842
4835
  const appConfigExcludedRemotes = appConfig?.excludedRemotes || {};
4843
4836
  // only normal and self optional scoped plugins should be added to remotes
4844
4837
  // self scoped plugins will be automatically added
@@ -4856,8 +4849,9 @@ class PluginsService {
4856
4849
  */
4857
4850
  async removeRemotes(application, plugins) {
4858
4851
  const pluginsArray = Array.isArray(plugins) ? plugins : [plugins];
4859
- const appConfig = application?.config || { remotes: {} };
4860
- const appConfigRemotes = appConfig?.remotes || {};
4852
+ const manifestRemotes = application.manifest?.remotes || {};
4853
+ const appConfig = application?.config;
4854
+ const appConfigRemotes = appConfig?.remotes || manifestRemotes;
4861
4855
  const appConfigExcludedRemotes = appConfig?.excludedRemotes || {};
4862
4856
  // app plugins need to be removed from remotes
4863
4857
  const newRemotes = this.removePluginsFromRemotesConfig(appConfigRemotes, plugins);
@@ -4907,6 +4901,12 @@ class PluginsService {
4907
4901
  return undefined;
4908
4902
  }
4909
4903
  }
4904
+ async resetRemotes(application) {
4905
+ return await this.applicationService.updateApplicationConfig(application, {
4906
+ remotes: undefined,
4907
+ excludedRemotes: undefined
4908
+ });
4909
+ }
4910
4910
  sortVersions(source, order) {
4911
4911
  const sourceCopy = cloneDeep(source);
4912
4912
  if (source.list && source.path) {
@@ -5173,6 +5173,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
5173
5173
  }]
5174
5174
  }] });
5175
5175
 
5176
+ class PluginLoadedPipe {
5177
+ constructor(pluginsResolve) {
5178
+ this.pluginsResolve = pluginsResolve;
5179
+ }
5180
+ transform(pluginName) {
5181
+ if (!pluginName) {
5182
+ return of(false);
5183
+ }
5184
+ return this.pluginsResolve.loadedPluginNames$.pipe(map$1(pluginNames => pluginNames.includes(pluginName)), distinctUntilChanged$1());
5185
+ }
5186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, deps: [{ token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Pipe }); }
5187
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, isStandalone: true, name: "c8yPluginLoaded" }); }
5188
+ }
5189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, decorators: [{
5190
+ type: Pipe,
5191
+ args: [{
5192
+ name: 'c8yPluginLoaded',
5193
+ standalone: true
5194
+ }]
5195
+ }], ctorParameters: () => [{ type: PluginsResolveService }] });
5196
+
5176
5197
  /**
5177
5198
  * A service to load translations from different sources.
5178
5199
  * It combines translations from the app, user-defined translations, and plugins.
@@ -5194,7 +5215,7 @@ class TranslationLoaderService {
5194
5215
  this.translateService.onLangChange
5195
5216
  .pipe(map(event => event.lang), distinctUntilChanged(), switchMap(lang => this.getTranslation(lang).pipe(map(translations => ({ lang, translations })))))
5196
5217
  .subscribe(({ lang, translations }) => {
5197
- this.translateService.setTranslation(lang, translations, false);
5218
+ this.translateService.setTranslation(lang, translations, true);
5198
5219
  });
5199
5220
  }
5200
5221
  getTranslation(lang) {
@@ -6473,7 +6494,7 @@ class FilesService {
6473
6494
  * @returns Returns list of file extensions.
6474
6495
  */
6475
6496
  getFileExtensions() {
6476
- return uniq(flatten(map$1(this.fileTypeExtensionsMap, ({ exts }) => exts)));
6497
+ return uniq(flatten(map$2(this.fileTypeExtensionsMap, ({ exts }) => exts)));
6477
6498
  }
6478
6499
  /**
6479
6500
  * The list of generic file types.
@@ -9333,7 +9354,7 @@ class InterAppService {
9333
9354
  * @returns Observable of Application
9334
9355
  */
9335
9356
  getApp$(key) {
9336
- return this.stateService.currentAppsOfUser.pipe(map$2(apps => apps.find(app => app.key === key)));
9357
+ return this.stateService.currentAppsOfUser.pipe(map$1(apps => apps.find(app => app.key === key)));
9337
9358
  }
9338
9359
  /**
9339
9360
  * Checks if current application is the same as the one that key is provided
@@ -9341,7 +9362,7 @@ class InterAppService {
9341
9362
  * @returns Observable of boolean; true if current app matches provided key.
9342
9363
  */
9343
9364
  isCurrentApp$(key) {
9344
- return this.stateService.currentApplication.pipe(map$2(app => app?.key === key));
9365
+ return this.stateService.currentApplication.pipe(map$1(app => app?.key === key));
9345
9366
  }
9346
9367
  /**
9347
9368
  * Checks if other (other than current) application link should be displayed. It consists of two conditions:
@@ -9352,9 +9373,9 @@ class InterAppService {
9352
9373
  */
9353
9374
  shouldShowAppLink$(appKey) {
9354
9375
  return combineLatest([
9355
- this.getApp$(appKey).pipe(map$2(Boolean)),
9356
- this.isCurrentApp$(appKey).pipe(map$2(val => !val))
9357
- ]).pipe(map$2(([linkedAppIsAvailable, linkLeadsToOtherAppThanCurrent]) => linkedAppIsAvailable && linkLeadsToOtherAppThanCurrent));
9376
+ this.getApp$(appKey).pipe(map$1(Boolean)),
9377
+ this.isCurrentApp$(appKey).pipe(map$1(val => !val))
9378
+ ]).pipe(map$1(([linkedAppIsAvailable, linkLeadsToOtherAppThanCurrent]) => linkedAppIsAvailable && linkLeadsToOtherAppThanCurrent));
9358
9379
  }
9359
9380
  /**
9360
9381
  * Navigates to app by provided app key
@@ -9362,7 +9383,7 @@ class InterAppService {
9362
9383
  * @param path {string} - Additional path in target application.
9363
9384
  */
9364
9385
  async navigateToApp(appKey, path) {
9365
- const contextPath = await firstValueFrom(this.getApp$(appKey).pipe(map$2(app => app?.contextPath)));
9386
+ const contextPath = await firstValueFrom(this.getApp$(appKey).pipe(map$1(app => app?.contextPath)));
9366
9387
  if (!contextPath) {
9367
9388
  const msg = this.translateService.instant(gettext$1('Application with key "{{appKey}}" not found.'), { appKey });
9368
9389
  this.alertService.danger(msg);
@@ -16949,11 +16970,11 @@ class TabsOutletComponent {
16949
16970
  return { widthScroll, width, scrollLeft };
16950
16971
  }
16951
16972
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1$3.Router }, { token: i0.Renderer2 }, { token: HeaderService }, { token: TabsService }], target: i0.ɵɵFactoryTarget.Component }); }
16952
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { 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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i2$3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
16973
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { 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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i2$3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
16953
16974
  }
16954
16975
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, decorators: [{
16955
16976
  type: Component,
16956
- args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
16977
+ args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
16957
16978
  }], ctorParameters: () => [{ type: i1$3.Router }, { type: i0.Renderer2 }, { type: HeaderService }, { type: TabsService }], propDecorators: { tabs: [{
16958
16979
  type: Input
16959
16980
  }], orientation: [{
@@ -18079,8 +18100,9 @@ class BootstrapComponent {
18079
18100
  // Remotes in the URL are used in the development process.
18080
18101
  let remotes = PluginsResolveService.mergeRemotes([
18081
18102
  selfRemotes,
18082
- this.options?.remotes,
18083
- config?.remotes,
18103
+ // if the config remotes are not present we fall back to the application remotes
18104
+ config?.remotes || this.options?.remotes || {},
18105
+ // url remotes should always be loaded
18084
18106
  this.pluginsResolve.loadUrlRemotes()
18085
18107
  ]);
18086
18108
  // remove remotes that are on the exclude list
@@ -18998,7 +19020,7 @@ class SelectKeyboardService {
18998
19020
  return list.changes.pipe(startWith$1(list), switchMap$1((items) => combineLatest([
18999
19021
  merge(fromEvent(input, 'keyup'), fromEvent(input, 'keydown')),
19000
19022
  of(items.toArray())
19001
- ])), map$2(([e, items]) => this.handleKeyboard(e, input, items, dropdown)), distinctUntilChanged$1(), takeUntil$1(this.destroyed$));
19023
+ ])), map$1(([e, items]) => this.handleKeyboard(e, input, items, dropdown)), distinctUntilChanged$1(), takeUntil$1(this.destroyed$));
19002
19024
  }
19003
19025
  ngOnDestroy() {
19004
19026
  this.unregister();
@@ -22082,7 +22104,7 @@ class WebSDKPluginVersionFactory {
22082
22104
  const versionsBehindKey = modules.map(module => {
22083
22105
  return {
22084
22106
  label: `${contextPath} => ${module}`,
22085
- version: version || 'unspecified',
22107
+ version: version || 'latest',
22086
22108
  type: 'INSTALLED_MF_PLUGINS',
22087
22109
  hidden: true,
22088
22110
  custom: {
@@ -23148,7 +23170,7 @@ class DropAreaComponent {
23148
23170
  return maxFileSizeInMegaBytes * 1_048_576;
23149
23171
  }
23150
23172
  getFilesNamesAsString(files) {
23151
- return map$1(files, ({ name }) => name).join(', ');
23173
+ return map$2(files, ({ name }) => name).join(', ');
23152
23174
  }
23153
23175
  isFilesArrayEmpty() {
23154
23176
  return get(this, 'files.length', 0) === 0;
@@ -24166,12 +24188,13 @@ class RouterTabsResolver {
24166
24188
  resolve(currentRoute) {
24167
24189
  const routeConfig = currentRoute.routeConfig;
24168
24190
  const latestChildren = this.getLatestChildRoutes(routeConfig.rootContext);
24169
- return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map((guard) => guard.canActivate(currentRoute, this.routerStateSnapshot)), mergeMap((result) => {
24191
+ return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map(canActivate => canActivate(currentRoute, this.routerStateSnapshot)), mergeMap((result) => {
24170
24192
  if (isObservable(result)) {
24171
24193
  return result;
24172
24194
  }
24173
- if (result && typeof result.then === 'function') {
24174
- return from(result);
24195
+ const resultAsPromise = result;
24196
+ if (resultAsPromise && typeof resultAsPromise.then === 'function') {
24197
+ return from(resultAsPromise);
24175
24198
  }
24176
24199
  return of(result);
24177
24200
  }), tap(result => {
@@ -24222,11 +24245,24 @@ class RouterTabsResolver {
24222
24245
  return null;
24223
24246
  }
24224
24247
  getGuards(child) {
24225
- const guards = (child.canActivate || []).map(guard => {
24226
- return this.injector.get(guard);
24248
+ const injector = child._injector || this.injector;
24249
+ const canActivates = child.canActivate || [];
24250
+ const guards = canActivates.map(guard => {
24251
+ return ((route, state) => {
24252
+ // for legacy CanActivate guards
24253
+ const instance = this.injector.get(guard, null);
24254
+ if (instance) {
24255
+ return instance.canActivate(route, state);
24256
+ }
24257
+ // for current CanActivateFn guards
24258
+ const canActivate = guard;
24259
+ return runInInjectionContext(injector, () => {
24260
+ return canActivate(route, state);
24261
+ });
24262
+ });
24227
24263
  });
24228
24264
  if (child.data && child.data.showIf) {
24229
- guards.push({ canActivate: child.data.showIf });
24265
+ guards.push((route, state) => child.data.showIf(route, state));
24230
24266
  }
24231
24267
  return guards;
24232
24268
  }
@@ -24564,6 +24600,9 @@ class ScopedContextRouteService {
24564
24600
  this.redirectToFirstTab();
24565
24601
  }
24566
24602
  redirectToFirstTab(event) {
24603
+ const currentQueryParams = this.router.routerState.snapshot.root.queryParams;
24604
+ const queryParamsString = new URLSearchParams(currentQueryParams).toString();
24605
+ const queryParamsSuffix = queryParamsString ? `?${queryParamsString}` : '';
24567
24606
  if (event) {
24568
24607
  if (this.needsRedirect(event)) {
24569
24608
  const tab = this.tabsService.sortTabs(event.snapshot.data.tabs)?.[0];
@@ -24573,7 +24612,9 @@ class ScopedContextRouteService {
24573
24612
  const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
24574
24613
  const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
24575
24614
  if (currentContextId === tabPathId) {
24576
- this.router.navigateByUrl(tab.path, { replaceUrl: true });
24615
+ this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, {
24616
+ replaceUrl: true
24617
+ });
24577
24618
  }
24578
24619
  }
24579
24620
  }
@@ -24583,7 +24624,7 @@ class ScopedContextRouteService {
24583
24624
  this.tabsService.firstTab$.pipe(filter((tab) => !!tab?.path)).subscribe((tab) => {
24584
24625
  const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
24585
24626
  if (currentContextId === tabPathId) {
24586
- this.router.navigateByUrl(tab.path, { replaceUrl: true });
24627
+ this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, { replaceUrl: true });
24587
24628
  }
24588
24629
  });
24589
24630
  }
@@ -24609,7 +24650,7 @@ class ScopedContextRouteService {
24609
24650
  getMatchingContextRoute(url) {
24610
24651
  const viewContexts = Object.values(ViewContext);
24611
24652
  // replace all :id placeholders with a regex matcher for a number
24612
- const regexMatchers = viewContexts.map(context => `^/${context.replace(/:id/g, '([0-9]+)')}$`);
24653
+ const regexMatchers = viewContexts.map(context => `^/${context.replace(/:id/g, '([0-9]+)')}(\\?.*)?$`);
24613
24654
  const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
24614
24655
  return matchingRegexContext ? viewContexts[regexMatchers.indexOf(matchingRegexContext)] : null;
24615
24656
  }
@@ -31413,7 +31454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
31413
31454
 
31414
31455
  class VisibleControlsPipe {
31415
31456
  transform(actionControls, arg) {
31416
- return defer(() => of(actionControls ?? [])).pipe(mergeMap$1(controls => forkJoin(controls.map(control => toObservable(!control.showIf || control.showIf(arg)).pipe(map$2(visible => ({ control, visible }))))).pipe(map$2(evaluatedControls => evaluatedControls.filter(ec => ec.visible).map(ec => ec.control)))), map$2(visible => values(groupBy(visible, 'type'))
31457
+ return defer(() => of(actionControls ?? [])).pipe(mergeMap$1(controls => forkJoin(controls.map(control => toObservable(!control.showIf || control.showIf(arg)).pipe(map$1(visible => ({ control, visible }))))).pipe(map$1(evaluatedControls => evaluatedControls.filter(ec => ec.visible).map(ec => ec.control)))), map$1(visible => values(groupBy(visible, 'type'))
31417
31458
  .map((actionControls) => {
31418
31459
  if (actionControls?.length === 1) {
31419
31460
  return actionControls[0];
@@ -35242,5 +35283,5 @@ function colorValidator(allowedModes) {
35242
35283
  * Generated bundle index. Do not edit.
35243
35284
  */
35244
35285
 
35245
- export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangePasswordComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CredentialsComponent, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, LoginComponent, LoginModule, LoginService, LoginViews, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_QUERY_PARAM, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthValidatorDirective, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginsExportScopes, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProvidePhoneNumberComponent, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RecoverPasswordComponent, RelativeTimePipe, RequiredInputPlaceholderDirective, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SkipLinkDirective, SmsChallengeComponent, StandalonePluginInjector, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StrengthValidatorService, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpAuthComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, viewContextRoutes, wrapperLegendFieldConfig };
35286
+ export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangePasswordComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CredentialsComponent, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, LoginComponent, LoginModule, LoginService, LoginViews, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_QUERY_PARAM, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthValidatorDirective, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginLoadedPipe, PluginsExportScopes, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProvidePhoneNumberComponent, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RecoverPasswordComponent, RelativeTimePipe, RequiredInputPlaceholderDirective, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SkipLinkDirective, SmsChallengeComponent, StandalonePluginInjector, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StrengthValidatorService, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpAuthComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, viewContextRoutes, wrapperLegendFieldConfig };
35246
35287
  //# sourceMappingURL=c8y-ngx-components.mjs.map