@alfresco/adf-extensions 8.3.0 → 8.3.1

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.
@@ -1,6 +1,6 @@
1
- import * as i1 from '@angular/common/http';
1
+ import { HttpClient } from '@angular/common/http';
2
2
  import * as i0 from '@angular/core';
3
- import { Injectable, InjectionToken, Inject, EventEmitter, inject, DestroyRef, ViewContainerRef, Output, Input, ViewChild, Component, ChangeDetectionStrategy, ViewEncapsulation, provideAppInitializer, NgModule } from '@angular/core';
3
+ import { inject, Injectable, InjectionToken, EventEmitter, DestroyRef, ViewContainerRef, Output, Input, ViewChild, Component, ChangeDetectionStrategy, ViewEncapsulation, provideAppInitializer, NgModule } from '@angular/core';
4
4
  import { BehaviorSubject } from 'rxjs';
5
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
  import '@alfresco/js-api';
@@ -21,15 +21,13 @@ import '@alfresco/js-api';
21
21
  * See the License for the specific language governing permissions and
22
22
  * limitations under the License.
23
23
  */
24
- // eslint-disable-next-line no-shadow
25
- var ContentActionType;
26
- (function (ContentActionType) {
27
- ContentActionType["default"] = "default";
28
- ContentActionType["button"] = "button";
29
- ContentActionType["separator"] = "separator";
30
- ContentActionType["menu"] = "menu";
31
- ContentActionType["custom"] = "custom";
32
- })(ContentActionType || (ContentActionType = {}));
24
+ const ContentActionType = {
25
+ default: 'default',
26
+ button: 'button',
27
+ separator: 'separator',
28
+ menu: 'menu',
29
+ custom: 'custom'
30
+ };
33
31
 
34
32
  /*!
35
33
  * @license
@@ -353,8 +351,8 @@ class RuleRef {
353
351
  * limitations under the License.
354
352
  */
355
353
  class ExtensionLoaderService {
356
- constructor(http) {
357
- this.http = http;
354
+ constructor() {
355
+ this.http = inject(HttpClient);
358
356
  }
359
357
  load(configPath, pluginsPath, extensions, extensionValues) {
360
358
  return new Promise((resolve) => {
@@ -474,15 +472,15 @@ class ExtensionLoaderService {
474
472
  }
475
473
  return extensions.map((file) => file.match('(?!.*/).+')[0]).filter((fileName) => !ignoreReferenceList.includes(fileName));
476
474
  }
477
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionLoaderService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
478
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionLoaderService, providedIn: 'root' }); }
475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionLoaderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
476
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionLoaderService, providedIn: 'root' }); }
479
477
  }
480
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionLoaderService, decorators: [{
478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionLoaderService, decorators: [{
481
479
  type: Injectable,
482
480
  args: [{
483
481
  providedIn: 'root'
484
482
  }]
485
- }], ctorParameters: () => [{ type: i1.HttpClient }] });
483
+ }] });
486
484
 
487
485
  /*!
488
486
  * @license
@@ -574,10 +572,10 @@ class ComponentRegisterService {
574
572
  hasComponentById(id) {
575
573
  return !!this.getComponentById(id);
576
574
  }
577
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ComponentRegisterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
578
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ComponentRegisterService, providedIn: 'root' }); }
575
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ComponentRegisterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
576
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ComponentRegisterService, providedIn: 'root' }); }
579
577
  }
580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ComponentRegisterService, decorators: [{
578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ComponentRegisterService, decorators: [{
581
579
  type: Injectable,
582
580
  args: [{ providedIn: 'root' }]
583
581
  }] });
@@ -599,8 +597,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
599
597
  * limitations under the License.
600
598
  */
601
599
  class RuleService {
602
- constructor(loader) {
603
- this.loader = loader;
600
+ constructor() {
601
+ this.loader = inject(ExtensionLoaderService);
604
602
  this.context = null;
605
603
  this.rules = [];
606
604
  this.evaluators = {};
@@ -660,15 +658,15 @@ class RuleService {
660
658
  }
661
659
  return false;
662
660
  }
663
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: RuleService, deps: [{ token: ExtensionLoaderService }], target: i0.ɵɵFactoryTarget.Injectable }); }
664
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: RuleService, providedIn: 'root' }); }
661
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: RuleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
662
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: RuleService, providedIn: 'root' }); }
665
663
  }
666
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: RuleService, decorators: [{
664
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: RuleService, decorators: [{
667
665
  type: Injectable,
668
666
  args: [{
669
667
  providedIn: 'root'
670
668
  }]
671
- }], ctorParameters: () => [{ type: ExtensionLoaderService }] });
669
+ }] });
672
670
 
673
671
  /*!
674
672
  * @license
@@ -726,12 +724,12 @@ function provideExtensionConfigValues(extensionConfigValue) {
726
724
  };
727
725
  }
728
726
  class ExtensionService {
729
- constructor(loader, componentRegister, ruleService, extensionJsons, extensionJsonValues) {
730
- this.loader = loader;
731
- this.componentRegister = componentRegister;
732
- this.ruleService = ruleService;
733
- this.extensionJsons = extensionJsons;
734
- this.extensionJsonValues = extensionJsonValues;
727
+ constructor() {
728
+ this.loader = inject(ExtensionLoaderService);
729
+ this.componentRegister = inject(ComponentRegisterService);
730
+ this.ruleService = inject(RuleService);
731
+ this.extensionJsons = inject(EXTENSION_JSONS);
732
+ this.extensionJsonValues = inject(EXTENSION_JSON_VALUES);
735
733
  this.configPath = 'assets/app.extensions.json';
736
734
  this.pluginsPath = 'assets/plugins';
737
735
  this.routes = [];
@@ -894,21 +892,15 @@ class ExtensionService {
894
892
  }
895
893
  return value;
896
894
  }
897
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionService, deps: [{ token: ExtensionLoaderService }, { token: ComponentRegisterService }, { token: RuleService }, { token: EXTENSION_JSONS }, { token: EXTENSION_JSON_VALUES }], target: i0.ɵɵFactoryTarget.Injectable }); }
898
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionService, providedIn: 'root' }); }
895
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
896
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionService, providedIn: 'root' }); }
899
897
  }
900
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionService, decorators: [{
898
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionService, decorators: [{
901
899
  type: Injectable,
902
900
  args: [{
903
901
  providedIn: 'root'
904
902
  }]
905
- }], ctorParameters: () => [{ type: ExtensionLoaderService }, { type: ComponentRegisterService }, { type: RuleService }, { type: undefined, decorators: [{
906
- type: Inject,
907
- args: [EXTENSION_JSONS]
908
- }] }, { type: undefined, decorators: [{
909
- type: Inject,
910
- args: [EXTENSION_JSON_VALUES]
911
- }] }] });
903
+ }], ctorParameters: () => [] });
912
904
 
913
905
  /*!
914
906
  * @license
@@ -927,8 +919,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
927
919
  * limitations under the License.
928
920
  */
929
921
  class AppExtensionService {
930
- constructor(extensionService) {
931
- this.extensionService = extensionService;
922
+ constructor() {
923
+ this.extensionService = inject(ExtensionService);
932
924
  this._references = new BehaviorSubject([]);
933
925
  this.references$ = this._references.asObservable();
934
926
  }
@@ -973,15 +965,15 @@ class AppExtensionService {
973
965
  }
974
966
  return false;
975
967
  }
976
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AppExtensionService, deps: [{ token: ExtensionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
977
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AppExtensionService, providedIn: 'root' }); }
968
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: AppExtensionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
969
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: AppExtensionService, providedIn: 'root' }); }
978
970
  }
979
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: AppExtensionService, decorators: [{
971
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: AppExtensionService, decorators: [{
980
972
  type: Injectable,
981
973
  args: [{
982
974
  providedIn: 'root'
983
975
  }]
984
- }], ctorParameters: () => [{ type: ExtensionService }] });
976
+ }], ctorParameters: () => [] });
985
977
 
986
978
  /*!
987
979
  * @license
@@ -1085,8 +1077,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
1085
1077
  * limitations under the License.
1086
1078
  */
1087
1079
  class PreviewExtensionComponent {
1088
- constructor(extensionService) {
1089
- this.extensionService = extensionService;
1080
+ constructor() {
1081
+ this.extensionService = inject(ExtensionService);
1090
1082
  /** Identifier of a node that is opened by the viewer. */
1091
1083
  this.nodeId = null;
1092
1084
  this.contentLoaded = new EventEmitter();
@@ -1124,16 +1116,16 @@ class PreviewExtensionComponent {
1124
1116
  }
1125
1117
  }
1126
1118
  }
1127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: PreviewExtensionComponent, deps: [{ token: ExtensionService }], target: i0.ɵɵFactoryTarget.Component }); }
1128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: PreviewExtensionComponent, isStandalone: true, selector: "adf-preview-extension", inputs: { id: "id", nodeId: "nodeId", url: "url", extension: "extension" }, outputs: { contentLoaded: "contentLoaded" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<div #content></div>`, isInline: true }); }
1119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PreviewExtensionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: PreviewExtensionComponent, isStandalone: true, selector: "adf-preview-extension", inputs: { id: "id", nodeId: "nodeId", url: "url", extension: "extension" }, outputs: { contentLoaded: "contentLoaded" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<div #content></div>`, isInline: true }); }
1129
1121
  }
1130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: PreviewExtensionComponent, decorators: [{
1122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: PreviewExtensionComponent, decorators: [{
1131
1123
  type: Component,
1132
1124
  args: [{
1133
1125
  selector: 'adf-preview-extension',
1134
1126
  template: `<div #content></div>`
1135
1127
  }]
1136
- }], ctorParameters: () => [{ type: ExtensionService }], propDecorators: { content: [{
1128
+ }], propDecorators: { content: [{
1137
1129
  type: ViewChild,
1138
1130
  args: ['content', { read: ViewContainerRef, static: true }]
1139
1131
  }], id: [{
@@ -1165,8 +1157,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
1165
1157
  * limitations under the License.
1166
1158
  */
1167
1159
  class DynamicColumnComponent {
1168
- constructor(extensions) {
1169
- this.extensions = extensions;
1160
+ constructor() {
1161
+ this.extensions = inject(ExtensionService);
1170
1162
  }
1171
1163
  ngOnInit() {
1172
1164
  const componentType = this.extensions.getComponentById(this.id);
@@ -1192,13 +1184,13 @@ class DynamicColumnComponent {
1192
1184
  this.componentRef.instance.context = this.context;
1193
1185
  }
1194
1186
  }
1195
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DynamicColumnComponent, deps: [{ token: ExtensionService }], target: i0.ɵɵFactoryTarget.Component }); }
1196
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: DynamicColumnComponent, isStandalone: true, selector: "adf-dynamic-column", inputs: { id: "id", context: "context" }, host: { classAttribute: "adf-dynamic-column" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<ng-container #content />`, isInline: true, styles: [".adf-dynamic-column{display:flex;align-items:center;width:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DynamicColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: DynamicColumnComponent, isStandalone: true, selector: "adf-dynamic-column", inputs: { id: "id", context: "context" }, host: { classAttribute: "adf-dynamic-column" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<ng-container #content />`, isInline: true, styles: [".adf-dynamic-column{display:flex;align-items:center;width:inherit}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1197
1189
  }
1198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DynamicColumnComponent, decorators: [{
1190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DynamicColumnComponent, decorators: [{
1199
1191
  type: Component,
1200
1192
  args: [{ selector: 'adf-dynamic-column', template: `<ng-container #content />`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'adf-dynamic-column' }, styles: [".adf-dynamic-column{display:flex;align-items:center;width:inherit}\n"] }]
1201
- }], ctorParameters: () => [{ type: ExtensionService }], propDecorators: { content: [{
1193
+ }], propDecorators: { content: [{
1202
1194
  type: ViewChild,
1203
1195
  args: ['content', { read: ViewContainerRef, static: true }]
1204
1196
  }], id: [{
@@ -1225,8 +1217,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
1225
1217
  */
1226
1218
  // cSpell:words lifecycle
1227
1219
  class DynamicExtensionComponent {
1228
- constructor(extensions) {
1229
- this.extensions = extensions;
1220
+ constructor() {
1221
+ this.extensions = inject(ExtensionService);
1230
1222
  this.loaded = false;
1231
1223
  }
1232
1224
  ngOnChanges(changes) {
@@ -1273,16 +1265,16 @@ class DynamicExtensionComponent {
1273
1265
  lifecycleHookIsImplemented(lifecycleMethod) {
1274
1266
  return !!this.componentRef.instance[lifecycleMethod];
1275
1267
  }
1276
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DynamicExtensionComponent, deps: [{ token: ExtensionService }], target: i0.ɵɵFactoryTarget.Component }); }
1277
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: DynamicExtensionComponent, isStandalone: true, selector: "adf-dynamic-component", inputs: { id: "id", data: "data" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<div #content></div>`, isInline: true }); }
1268
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DynamicExtensionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1269
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: DynamicExtensionComponent, isStandalone: true, selector: "adf-dynamic-component", inputs: { id: "id", data: "data" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<div #content></div>`, isInline: true }); }
1278
1270
  }
1279
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DynamicExtensionComponent, decorators: [{
1271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DynamicExtensionComponent, decorators: [{
1280
1272
  type: Component,
1281
1273
  args: [{
1282
1274
  selector: 'adf-dynamic-component',
1283
1275
  template: `<div #content></div>`
1284
1276
  }]
1285
- }], ctorParameters: () => [{ type: ExtensionService }], propDecorators: { content: [{
1277
+ }], propDecorators: { content: [{
1286
1278
  type: ViewChild,
1287
1279
  args: ['content', { read: ViewContainerRef, static: true }]
1288
1280
  }], id: [{
@@ -1308,8 +1300,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
1308
1300
  * limitations under the License.
1309
1301
  */
1310
1302
  class DynamicTabComponent {
1311
- constructor(extensions) {
1312
- this.extensions = extensions;
1303
+ constructor() {
1304
+ this.extensions = inject(ExtensionService);
1313
1305
  }
1314
1306
  ngOnInit() {
1315
1307
  const componentType = this.extensions.getComponentById(this.id);
@@ -1335,16 +1327,16 @@ class DynamicTabComponent {
1335
1327
  this.componentRef.instance.node = this.node;
1336
1328
  }
1337
1329
  }
1338
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DynamicTabComponent, deps: [{ token: ExtensionService }], target: i0.ɵɵFactoryTarget.Component }); }
1339
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: DynamicTabComponent, isStandalone: true, selector: "adf-dynamic-tab", inputs: { id: "id", node: "node" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<div #content></div>`, isInline: true }); }
1330
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DynamicTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1331
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: DynamicTabComponent, isStandalone: true, selector: "adf-dynamic-tab", inputs: { id: "id", node: "node" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `<div #content></div>`, isInline: true }); }
1340
1332
  }
1341
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DynamicTabComponent, decorators: [{
1333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: DynamicTabComponent, decorators: [{
1342
1334
  type: Component,
1343
1335
  args: [{
1344
1336
  selector: 'adf-dynamic-tab',
1345
1337
  template: `<div #content></div>`
1346
1338
  }]
1347
- }], ctorParameters: () => [{ type: ExtensionService }], propDecorators: { content: [{
1339
+ }], propDecorators: { content: [{
1348
1340
  type: ViewChild,
1349
1341
  args: ['content', { read: ViewContainerRef, static: true }]
1350
1342
  }], id: [{
@@ -1408,11 +1400,11 @@ class ExtensionsModule {
1408
1400
  ngModule: ExtensionsModule
1409
1401
  };
1410
1402
  }
1411
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1412
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: ExtensionsModule }); }
1413
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionsModule }); }
1403
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1404
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: ExtensionsModule }); }
1405
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionsModule }); }
1414
1406
  }
1415
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: ExtensionsModule, decorators: [{
1407
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ExtensionsModule, decorators: [{
1416
1408
  type: NgModule
1417
1409
  }] });
1418
1410
 
@@ -1 +1 @@
1
- {"version":3,"file":"adf-extensions.mjs","sources":["../../../../lib/extensions/src/lib/config/action.extensions.ts","../../../../lib/extensions/src/lib/config/document-list.extensions.ts","../../../../lib/extensions/src/lib/config/extension-element.ts","../../../../lib/extensions/src/lib/config/extension-utils.ts","../../../../lib/extensions/src/lib/config/extension.config.ts","../../../../lib/extensions/src/lib/config/icon.extensions.ts","../../../../lib/extensions/src/lib/config/navbar.extensions.ts","../../../../lib/extensions/src/lib/config/permission.extensions.ts","../../../../lib/extensions/src/lib/config/routing.extensions.ts","../../../../lib/extensions/src/lib/config/rule.extensions.ts","../../../../lib/extensions/src/lib/config/sidebar.extensions.ts","../../../../lib/extensions/src/lib/config/viewer.extensions.ts","../../../../lib/extensions/src/lib/services/extension-loader.service.ts","../../../../lib/extensions/src/lib/evaluators/core.evaluators.ts","../../../../lib/extensions/src/lib/services/component-register.service.ts","../../../../lib/extensions/src/lib/services/rule.service.ts","../../../../lib/extensions/src/lib/services/extension.service.ts","../../../../lib/extensions/src/lib/services/app-extension.service.ts","../../../../lib/extensions/src/lib/store/states/navigation.state.ts","../../../../lib/extensions/src/lib/store/states/profile.state.ts","../../../../lib/extensions/src/lib/store/states/selection.state.ts","../../../../lib/extensions/src/lib/store/states/repository.state.ts","../../../../lib/extensions/src/lib/components/viewer/viewer-extension.interface.ts","../../../../lib/extensions/src/lib/components/viewer/preview-extension.component.ts","../../../../lib/extensions/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../lib/extensions/src/lib/components/dynamic-component/dynamic.component.ts","../../../../lib/extensions/src/lib/components/dynamic-tab/dynamic-tab.component.ts","../../../../lib/extensions/src/lib/components/public-api.ts","../../../../lib/extensions/src/lib/extensions.module.ts","../../../../lib/extensions/src/lib/providers.ts","../../../../lib/extensions/src/public-api.ts","../../../../lib/extensions/src/adf-extensions.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\n// eslint-disable-next-line no-shadow\nexport enum ContentActionType {\n default = 'default',\n button = 'button',\n separator = 'separator',\n menu = 'menu',\n custom = 'custom'\n}\n\nexport interface ContentActionRef extends ExtensionElement {\n type: ContentActionType;\n\n title?: string;\n tooltip?: string;\n description?: string;\n icon?: string;\n children?: Array<ContentActionRef>;\n component?: string;\n data?: any;\n color?: string;\n actions?: {\n [key: string]: string;\n click?: string;\n };\n rules?: {\n [key: string]: string;\n enabled?: string;\n visible?: string;\n };\n}\n\nexport interface ActionRef {\n id: string;\n type: string;\n payload?: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable id-blacklist */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface DataColumnTypes {\n text: string;\n image: string;\n date: string;\n json: string;\n icon: string;\n fileSize: string;\n location: string;\n boolean: string;\n amount: string;\n number: string;\n}\n\nexport type DataColumnType = keyof DataColumnTypes;\n\nexport interface DocumentListPresetRef extends ExtensionElement {\n key: string;\n type: DataColumnType;\n title?: string;\n format?: string;\n class?: string;\n sortable: boolean;\n template: string;\n desktopOnly: boolean;\n sortingKey: string;\n isHidden?: boolean;\n rules?: {\n [key: string]: string;\n visible?: string;\n };\n draggable?: boolean;\n resizable?: boolean;\n maxTextLength?: number;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ExtensionElement {\n id: string;\n\n order?: number;\n disabled?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentActionRef, ContentActionType } from './action.extensions';\n\nexport const getValue = (target: any, key: string): any => {\n if (!target) {\n return undefined;\n }\n\n const keys = key.split('.');\n key = '';\n\n do {\n key += keys.shift();\n const value = target[key];\n if (\n value !== undefined &&\n (typeof value === 'object' || !keys.length)\n ) {\n target = value;\n key = '';\n } else if (!keys.length) {\n target = undefined;\n } else {\n key += '.';\n }\n } while (keys.length);\n\n return target;\n};\n\nexport const filterEnabled = (entry: { disabled?: boolean }): boolean => !entry.disabled;\n\nexport const sortByOrder = (\n a: { order?: number | undefined },\n b: { order?: number | undefined }\n) => {\n const left = a.order === undefined ? Number.MAX_SAFE_INTEGER : a.order;\n const right = b.order === undefined ? Number.MAX_SAFE_INTEGER : b.order;\n return left - right;\n};\n\nexport const reduceSeparators = (\n acc: ContentActionRef[],\n el: ContentActionRef,\n i: number,\n arr: ContentActionRef[]\n): ContentActionRef[] => {\n // remove leading separator\n if (i === 0) {\n if (arr[i].type === ContentActionType.separator) {\n return acc;\n }\n }\n // remove duplicate separators\n if (i > 0) {\n const prev = arr[i - 1];\n if (\n prev.type === ContentActionType.separator &&\n el.type === ContentActionType.separator\n ) {\n return acc;\n }\n\n // remove trailing separator\n if (i === arr.length - 1) {\n if (el.type === ContentActionType.separator) {\n return acc;\n }\n }\n }\n\n return acc.concat(el);\n};\n\nexport const reduceEmptyMenus = (\n acc: ContentActionRef[],\n el: ContentActionRef\n): ContentActionRef[] => {\n if (el.type === ContentActionType.menu) {\n if ((el.children || []).length === 0) {\n return acc;\n }\n }\n return acc.concat(el);\n};\n\nexport const mergeObjects = (...objects: any[]): any => {\n const result = {};\n\n objects.forEach((source) => {\n Object.keys(source).forEach((prop) => {\n let replace = false;\n\n if (prop.endsWith('.$replace')) {\n replace = true;\n prop = prop.replace('.$replace', '');\n }\n\n if (!prop.startsWith('$')) {\n if (replace) {\n result[prop] = source[`${prop}.$replace`];\n } else if (prop in result && Array.isArray(result[prop])) {\n if (Array.isArray(source[prop])) {\n result[prop] = mergeArrays(result[prop], source[prop]);\n } else {\n result[prop] = [...result[prop], source[prop]];\n }\n } else if (prop in result && typeof result[prop] === 'object') {\n result[prop] = mergeObjects(result[prop], source[prop]);\n } else {\n result[prop] = source[prop];\n }\n }\n });\n });\n\n return result;\n};\n\nexport const mergeArrays = (left: any[], right: any[]): any[] => {\n const result = [];\n const map = {};\n\n (left || []).forEach((entry) => {\n const element = entry;\n if (element && Object.prototype.hasOwnProperty.call(element, 'id')) {\n map[element.id] = element;\n } else {\n result.push(element);\n }\n });\n\n (right || []).forEach((entry) => {\n const element = entry;\n if (element && Object.prototype.hasOwnProperty.call(element, 'id') && map[element.id]) {\n const merged = mergeObjects(map[element.id], element);\n map[element.id] = merged;\n } else {\n result.push(element);\n }\n });\n\n return Object.keys(map).map((key) => map[key]).concat(result);\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RouteRef } from './routing.extensions';\nimport { RuleRef } from './rule.extensions';\nimport { ActionRef } from './action.extensions';\n\nexport interface ExtensionRef {\n $id: string;\n $name: string;\n $version: string;\n $vendor: string;\n $license: string;\n $runtime?: string;\n $description?: string;\n $dependencies?: Array<string>;\n\n appConfig?: any;\n rules?: Array<RuleRef>;\n routes?: Array<RouteRef>;\n actions?: Array<ActionRef>;\n\n features?: {\n [key: string]: any;\n };\n}\n\nexport interface ExtensionConfig extends ExtensionRef {\n $references?: Array<string | ExtensionRef>;\n $ignoreReferenceList?: Array<string>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface IconRef extends ExtensionElement {\n value: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface NavBarRules {\n [ruleId: string]: string;\n}\n\nexport interface NavBarGroupRef extends ExtensionElement {\n items: Array<NavBarLinkRef>;\n rules?: NavBarRules;\n}\n\nexport interface NavBarLinkRef extends ExtensionElement {\n icon: string;\n title: string;\n route: string;\n\n provider?: string;\n component?: string;\n url?: string; // evaluated at runtime based on route ref\n description?: string;\n children?: Array<NavBarLinkRef>;\n rules?: NavBarRules;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface NodePermissions {\n check(source: any, permissions: string[], options?: any): boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface RouteRef {\n id: string;\n path: string;\n component: string;\n parentRoute?: string;\n layout?: string;\n auth?: string[];\n data?: { [key: string]: string };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SelectionState } from '../store/states/selection.state';\nimport { NavigationState } from '../store/states/navigation.state';\nimport { NodePermissions } from './permission.extensions';\nimport { ProfileState } from '../store/states/profile.state';\nimport { RepositoryInfo } from '@alfresco/js-api';\n\nexport type RuleEvaluator = (context: RuleContext, ...args: any[]) => boolean;\n\nexport interface RuleContext {\n repository: RepositoryInfo;\n auth: any;\n selection: SelectionState;\n navigation: NavigationState;\n profile: ProfileState;\n permissions: NodePermissions;\n\n getEvaluator(key: string): RuleEvaluator;\n}\n\nexport class RuleRef {\n type: string;\n id?: string;\n parameters?: Array<RuleParameter>;\n}\n\nexport interface RuleParameter {\n type: string;\n value: any;\n parameters?: Array<RuleParameter>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface SidebarTabRef extends ExtensionElement {\n title: string;\n component: string;\n\n icon?: string;\n rules?: {\n [key: string]: string;\n visible?: string;\n };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface ViewerExtensionRef extends ExtensionElement {\n fileExtension: string;\n component: string;\n\n rules?: {\n [key: string]: string;\n visible?: string;\n };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActionRef, ContentActionRef, ContentActionType } from '../config/action.extensions';\nimport { ExtensionElement } from '../config/extension-element';\nimport { filterEnabled, getValue, mergeObjects, sortByOrder } from '../config/extension-utils';\nimport { ExtensionConfig, ExtensionRef } from '../config/extension.config';\nimport { RouteRef } from '../config/routing.extensions';\nimport { RuleRef } from '../config/rule.extensions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExtensionLoaderService {\n constructor(private http: HttpClient) {}\n\n load(configPath: string, pluginsPath: string, extensions?: string[], extensionValues?: ExtensionConfig[]): Promise<ExtensionConfig> {\n return new Promise<any>((resolve) => {\n this.loadConfig(configPath, 0).then((result) => {\n if (result) {\n let config = result.config;\n\n const override = sessionStorage.getItem('app.extension.config');\n if (override) {\n config = JSON.parse(override);\n }\n\n if (!config.$references?.length) {\n config.$references = this.filterIgnoredExtensions(extensions || [], config.$ignoreReferenceList);\n } else {\n config.$references = this.filterIgnoredExtensions(config.$references, config.$ignoreReferenceList);\n }\n\n if (config.$references?.length > 0 || extensionValues) {\n const plugins = (config.$references ?? []).map((name, idx) => this.loadConfig(`${pluginsPath}/${name}`, idx));\n\n Promise.all(plugins).then((results) => {\n let configs = results\n .filter((entry) => entry)\n .sort(sortByOrder)\n .map((entry) => entry.config);\n\n if (extensionValues) {\n configs = [...configs, ...extensionValues];\n }\n\n if (configs.length > 0) {\n config = mergeObjects(config, ...configs);\n }\n\n config = {\n ...config,\n ...this.getMetadata(result.config),\n $references: configs.map((ext) => this.getMetadata(ext))\n };\n\n resolve(config);\n });\n } else {\n resolve(config);\n }\n }\n });\n });\n }\n\n /**\n * Retrieves configuration elements.\n * Filters element by **enabled** and **order** attributes.\n * Example:\n * `getElements<ViewerExtensionRef>(config, 'features.viewer.extensions')`\n * @param config configuration settings\n * @param key element key\n * @param fallback fallback array of values\n * @returns list of elements\n */\n getElements<T extends ExtensionElement>(config: ExtensionConfig, key: string, fallback: Array<T> = []): Array<T> {\n const values = getValue(config, key) || fallback || [];\n return values.filter(filterEnabled).sort(sortByOrder);\n }\n\n getContentActions(config: ExtensionConfig, key: string): Array<ContentActionRef> {\n return this.getElements(config, key).map(this.setActionDefaults);\n }\n\n getRules(config: ExtensionConfig): Array<RuleRef> {\n if (config?.rules) {\n return config.rules;\n }\n return [];\n }\n\n getRoutes(config: ExtensionConfig): Array<RouteRef> {\n if (config) {\n return config.routes || [];\n }\n return [];\n }\n\n getActions(config: ExtensionConfig): Array<ActionRef> {\n if (config) {\n return config.actions || [];\n }\n return [];\n }\n\n getFeatures(config: ExtensionConfig): any {\n if (config) {\n return config.features || [];\n }\n return [];\n }\n\n protected getMetadata(config: ExtensionConfig): ExtensionRef {\n const result: any = {};\n\n Object.keys(config)\n .filter((key) => key.startsWith('$'))\n .forEach((key) => {\n result[key] = config[key];\n });\n\n return result;\n }\n\n protected loadConfig(url: string, order: number): Promise<{ order: number; config: ExtensionConfig }> {\n return new Promise((resolve) => {\n this.http.get<ExtensionConfig>(url).subscribe(\n (config) => {\n resolve({\n order,\n config\n });\n },\n () => {\n resolve(null);\n }\n );\n });\n }\n\n protected setActionDefaults(action: ContentActionRef): ContentActionRef {\n if (action) {\n action.type = action.type || ContentActionType.default;\n action.icon = action.icon || 'extension';\n }\n return action;\n }\n\n private filterIgnoredExtensions(extensions: Array<string | ExtensionRef>, ignoreReferenceList: string[]): Array<string | ExtensionRef> {\n if (!ignoreReferenceList?.length) {\n return extensions;\n }\n\n return extensions.map((file: string) => file.match('(?!.*/).+')[0]).filter((fileName: string) => !ignoreReferenceList.includes(fileName));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RuleContext, RuleParameter } from '../config/rule.extensions';\n\nexport const not = (context: RuleContext, ...args: RuleParameter[]): boolean => {\n if (!args || args.length === 0) {\n return false;\n }\n\n return args\n .every((arg) => {\n const evaluator = context.getEvaluator(arg.value);\n if (!evaluator) {\n console.warn('evaluator not found: ' + arg.value);\n return false;\n }\n return !evaluator(context, ...(arg.parameters || []));\n });\n};\n\nexport const every = (context: RuleContext, ...args: RuleParameter[]): boolean => {\n if (!args || args.length === 0) {\n return false;\n }\n\n return args\n .every((arg) => {\n const evaluator = context.getEvaluator(arg.value);\n if (!evaluator) {\n console.warn('evaluator not found: ' + arg.value);\n return false;\n }\n return evaluator(context, ...(arg.parameters || []));\n });\n};\n\nexport const some = (context: RuleContext, ...args: RuleParameter[]): boolean => {\n if (!args || args.length === 0) {\n return false;\n }\n\n return args\n .some((arg) => {\n const evaluator = context.getEvaluator(arg.value);\n if (!evaluator) {\n console.warn('evaluator not found: ' + arg.value);\n return false;\n }\n return evaluator(context, ...(arg.parameters || []));\n });\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, Type } from '@angular/core';\nimport { MatMenuItem } from '@angular/material/menu';\n\nexport interface ExtensionComponent {\n data: any;\n menuItem?: MatMenuItem;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ComponentRegisterService {\n components: Record<string, Type<any>> = {};\n\n setComponents(values: Record<string, Type<any>>) {\n if (values) {\n this.components = Object.assign({}, this.components, values);\n }\n }\n\n getComponentById<T>(id: string): Type<T> {\n return this.components[id];\n }\n\n hasComponentById(id: string): boolean {\n return !!this.getComponentById(id);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { RuleRef, RuleContext, RuleEvaluator, RuleParameter } from '../config/rule.extensions';\nimport { ExtensionConfig } from '../config/extension.config';\nimport { ExtensionLoaderService } from './extension-loader.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RuleService {\n context: RuleContext = null;\n rules: Array<RuleRef> = [];\n evaluators: { [key: string]: RuleEvaluator } = {};\n\n constructor(protected loader: ExtensionLoaderService) {}\n\n setup(config: ExtensionConfig) {\n this.rules = this.loader.getRules(config);\n }\n\n /**\n * Adds one or more new rule evaluators to the existing set.\n * @param values The new evaluators to add\n */\n setEvaluators(values: Record<string, RuleEvaluator>) {\n if (values) {\n this.evaluators = Object.assign({}, this.evaluators, values);\n }\n }\n\n /**\n * Retrieves a rule using its ID value.\n * @param id The ID value to look for\n * @returns The rule or null if not found\n */\n getRuleById(id: string): RuleRef {\n return this.rules.find((ref) => ref.id === id);\n }\n\n /**\n * Retrieves a RuleEvaluator function using its key name.\n * @param key Key name to look for\n * @returns RuleEvaluator or null if not found\n */\n getEvaluator(key: string): RuleEvaluator {\n if (key?.startsWith('!')) {\n const fn = this.evaluators[key.substring(1)];\n return (context: RuleContext, ...args: RuleParameter[]): boolean => !fn(context, ...args);\n }\n return this.evaluators[key];\n }\n\n /**\n * Evaluates a rule.\n * @param ruleId ID of the rule to evaluate\n * @param context Custom rule execution context.\n * @returns True if the rule passed, false otherwise\n */\n evaluateRule(ruleId: string, context?: RuleContext): boolean {\n const ruleRef = this.getRuleById(ruleId);\n context = context || this.context;\n\n if (ruleRef) {\n const evaluator = this.getEvaluator(ruleRef.type);\n if (evaluator) {\n return evaluator(context, ...ruleRef.parameters);\n }\n } else {\n const evaluator = this.getEvaluator(ruleId);\n if (evaluator) {\n return evaluator(context);\n }\n }\n return false;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, Type, InjectionToken, Inject } from '@angular/core';\nimport { RuleEvaluator, RuleRef, RuleContext } from '../config/rule.extensions';\nimport { ExtensionConfig } from '../config/extension.config';\nimport { ExtensionLoaderService } from './extension-loader.service';\nimport { RouteRef } from '../config/routing.extensions';\nimport { ActionRef } from '../config/action.extensions';\nimport * as core from '../evaluators/core.evaluators';\nimport { ComponentRegisterService } from './component-register.service';\nimport { RuleService } from './rule.service';\nimport { ExtensionElement } from '../config/extension-element';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * The default extensions factory\n * @returns the list of extension json files\n */\nexport function extensionJsonsFactory() {\n return [];\n}\n\nexport const EXTENSION_JSONS = new InjectionToken<string[][]>('extension-jsons', {\n providedIn: 'root',\n factory: extensionJsonsFactory\n});\n\nexport const EXTENSION_JSON_VALUES = new InjectionToken<string[][]>('extension-jsons-values', {\n providedIn: 'root',\n factory: extensionJsonsFactory\n});\n\n/**\n * Provides the extension json values for the angular modules\n * @param jsons files to provide\n * @returns a provider section\n */\nexport function provideExtensionConfig(jsons: string[]) {\n return {\n provide: EXTENSION_JSONS,\n useValue: jsons,\n multi: true\n };\n}\n\n/**\n * Provides the extension json raw values for the angular modules\n * @param extensionConfigValue config value\n * @returns a provider section\n */\nexport function provideExtensionConfigValues(extensionConfigValue: ExtensionConfig[]) {\n return {\n provide: EXTENSION_JSON_VALUES,\n useValue: extensionConfigValue,\n multi: true\n };\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExtensionService {\n configPath = 'assets/app.extensions.json';\n pluginsPath = 'assets/plugins';\n\n routes: Array<RouteRef> = [];\n actions: Array<ActionRef> = [];\n features: Array<any> = [];\n authGuards: Record<string, unknown> = {};\n\n setup$: Observable<ExtensionConfig>;\n\n protected config: ExtensionConfig = null;\n protected onSetup$ = new BehaviorSubject<ExtensionConfig>(this.config);\n\n constructor(\n protected loader: ExtensionLoaderService,\n protected componentRegister: ComponentRegisterService,\n protected ruleService: RuleService,\n @Inject(EXTENSION_JSONS) protected extensionJsons: string[],\n @Inject(EXTENSION_JSON_VALUES) protected extensionJsonValues: ExtensionConfig[]\n ) {\n this.setup$ = this.onSetup$.asObservable();\n }\n\n /**\n * Loads and registers an extension config file and plugins (specified by path properties).\n * @returns The loaded config data\n */\n async load(): Promise<ExtensionConfig> {\n const config = await this.loader.load(this.configPath, this.pluginsPath, this.extensionJsons.flat(), this.extensionJsonValues.flat());\n\n this.setup(config);\n return config;\n }\n\n /**\n * Registers extensions from a config object.\n * @param config Object with config data\n */\n setup(config: ExtensionConfig) {\n if (!config) {\n console.warn('Extension configuration not found');\n return;\n }\n\n this.config = config;\n\n this.setEvaluators({\n 'core.every': core.every,\n 'core.some': core.some,\n 'core.not': core.not\n });\n\n this.actions = this.loader.getActions(config);\n this.routes = this.loader.getRoutes(config);\n this.features = this.loader.getFeatures(config);\n\n this.ruleService.setup(config);\n this.onSetup$.next(config);\n }\n\n /**\n * Gets features by key.\n * @param key Key string using dot notation or array of strings\n * @param defaultValue Default value returned if feature is not found, default is empty array\n * @returns Feature found by key\n */\n getFeature<T = any[]>(key: string | string[], defaultValue: any = []): T {\n const properties: string[] = Array.isArray(key) ? key : key.split('.');\n return properties.reduce((prev, curr) => prev?.[curr], this.features) || defaultValue;\n }\n\n getElements<T extends ExtensionElement>(key: string, fallback: Array<T> = []): Array<T> {\n return this.loader.getElements(this.config, key, fallback);\n }\n\n /**\n * Adds one or more new rule evaluators to the existing set.\n * @param values The new evaluators to add\n */\n setEvaluators(values: Record<string, RuleEvaluator>) {\n this.ruleService.setEvaluators(values);\n }\n\n /**\n * Adds one or more new auth guards to the existing set.\n * @param values The new auth guards to add\n */\n setAuthGuards(values: Record<string, unknown>) {\n if (values) {\n this.authGuards = Object.assign({}, this.authGuards, values);\n }\n }\n\n /**\n * Adds one or more new components to the existing set.\n * @param values The new components to add\n */\n setComponents(values: Record<string, Type<any>>) {\n this.componentRegister.setComponents(values);\n }\n\n /**\n * Retrieves a route using its ID value.\n * @param id The ID value to look for\n * @returns The route or null if not found\n */\n getRouteById(id: string): RouteRef {\n return this.routes.find((route) => route.id === id);\n }\n\n /**\n * Retrieves one or more auth guards using an array of ID values.\n * @param ids Array of ID value to look for\n * @returns Array of auth guards or empty array if none were found\n */\n getAuthGuards(ids: string[]): Array<unknown> {\n return (ids || []).map((id) => this.authGuards[id]).filter((guard) => guard);\n }\n\n /**\n * Retrieves an action using its ID value.\n * @param id The ID value to look for\n * @returns Action or null if not found\n */\n getActionById(id: string): ActionRef {\n return this.actions.find((action) => action.id === id);\n }\n\n /**\n * Retrieves a RuleEvaluator function using its key name.\n * @param key Key name to look for\n * @returns RuleEvaluator or null if not found\n */\n getEvaluator(key: string): RuleEvaluator {\n return this.ruleService.getEvaluator(key);\n }\n\n /**\n * Evaluates a rule.\n * @param ruleId ID of the rule to evaluate\n * @param context Custom rule execution context.\n * @returns True if the rule passed, false otherwise\n */\n evaluateRule(ruleId: string, context?: RuleContext): boolean {\n return this.ruleService.evaluateRule(ruleId, context);\n }\n\n /**\n * Retrieves a registered extension component using its ID value.\n * @param id The ID value to look for\n * @returns The component or null if not found\n */\n getComponentById<T>(id: string) {\n return this.componentRegister.getComponentById<T>(id);\n }\n\n /**\n * Retrieves a rule using its ID value.\n * @param id The ID value to look for\n * @returns The rule or null if not found\n */\n getRuleById(id: string): RuleRef {\n return this.ruleService.getRuleById(id);\n }\n\n /**\n * Runs a lightweight expression stored in a string.\n * @param value String containing the expression or literal value\n * @param context Parameter object for the expression with details of app state\n * @returns Result of evaluated expression, if found, or the literal value otherwise\n */\n runExpression(value: string | any, context?: any) {\n if (typeof value === 'string') {\n return this.evaluateExpression(value, context);\n } else {\n const duplicate = Object.assign({}, value);\n Object.keys(duplicate).forEach((key) => {\n duplicate[key] = this.evaluateExpression(duplicate[key], context);\n });\n return duplicate;\n }\n }\n\n private evaluateExpression(value: string, context?: any): string {\n const pattern = new RegExp(/\\$\\((.*\\)?)\\)/g);\n const matches = pattern.exec(value);\n\n if (matches && matches.length > 1) {\n const expression = matches[1];\n const fn = new Function('context', `return ${expression}`);\n const result = fn(context);\n\n return result;\n }\n return value;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ExtensionConfig, ExtensionRef } from '../config/extension.config';\nimport { ExtensionService } from '../services/extension.service';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { ViewerExtensionRef } from '../config/viewer.extensions';\nimport { DocumentListPresetRef } from '../config/document-list.extensions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppExtensionService {\n references$: Observable<ExtensionRef[]>;\n private _references = new BehaviorSubject<ExtensionRef[]>([]);\n\n constructor(protected extensionService: ExtensionService) {\n this.references$ = this._references.asObservable();\n }\n\n async load() {\n const config = await this.extensionService.load();\n this.setup(config);\n }\n\n setup(config: ExtensionConfig) {\n if (!config) {\n return;\n }\n\n const references = (config.$references || []).filter((entry) => typeof entry === 'object').map((entry) => entry as ExtensionRef);\n this._references.next(references);\n }\n\n /**\n * Provides a collection of document list columns for the particular preset.\n * The result is filtered by the **disabled** state.\n * @param key Preset key.\n * @returns list of document list presets\n */\n getDocumentListPreset(key: string): DocumentListPresetRef[] {\n return this.extensionService.getElements<DocumentListPresetRef>(`features.documentList.${key}`).filter((entry) => !entry.disabled);\n }\n\n /**\n * Provides a list of the Viewer content extensions,\n * filtered by **disabled** state and **rules**.\n * @returns list of viewer extension references\n */\n getViewerExtensions(): ViewerExtensionRef[] {\n return this.extensionService\n .getElements<ViewerExtensionRef>('features.viewer.extensions')\n .filter((extension) => !this.isViewerExtensionDisabled(extension));\n }\n\n protected isViewerExtensionDisabled(extension: ViewerExtensionRef): boolean {\n if (extension) {\n if (extension.disabled) {\n return true;\n }\n\n if (extension.rules?.disabled) {\n return this.extensionService.evaluateRule(extension.rules.disabled);\n }\n }\n\n return false;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node } from '@alfresco/js-api';\n\nexport interface NavigationState {\n currentFolder?: Node;\n url?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Group } from '@alfresco/js-api';\n\nexport interface ProfileState {\n [key: string]: any;\n\n id: string;\n isAdmin: boolean;\n firstName: string;\n lastName: string;\n userName?: string;\n initials?: string;\n groups?: Group[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NodeEntry, SiteEntry } from '@alfresco/js-api';\n\nexport interface SelectionState {\n count: number;\n nodes: NodeEntry[];\n libraries: SiteEntry[];\n isEmpty: boolean;\n first?: NodeEntry;\n last?: NodeEntry;\n folder?: NodeEntry;\n file?: NodeEntry;\n library?: SiteEntry;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface RepositoryState {\n isAuditEnabled?: boolean;\n isQuickShareEnabled?: boolean;\n isReadOnly?: boolean;\n isThumbnailGenerationEnabled?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node } from '@alfresco/js-api';\n\nexport interface ViewerExtensionInterface {\n url: string;\n nameFile: string;\n node: Node;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n Input,\n ComponentRef,\n OnInit,\n ViewChild,\n ViewContainerRef,\n OnDestroy,\n OnChanges,\n EventEmitter,\n Output,\n DestroyRef,\n inject\n} from '@angular/core';\nimport { ExtensionService } from '../../services/extension.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-preview-extension',\n template: `<div #content></div>`\n})\nexport class PreviewExtensionComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('content', { read: ViewContainerRef, static: true })\n content: ViewContainerRef;\n\n /** ID string of the component to preview. */\n @Input()\n id: string;\n\n /** Identifier of a node that is opened by the viewer. */\n @Input()\n nodeId: string = null;\n\n /** URL of the content in the repository. */\n @Input()\n url: string;\n\n /** File extension (.jpg, .png, etc) for the viewer. */\n @Input()\n extension: string;\n\n @Output()\n contentLoaded = new EventEmitter<void>();\n\n private readonly destroyRef = inject(DestroyRef);\n\n private componentRef: ComponentRef<any>;\n\n constructor(private extensionService: ExtensionService) {}\n\n ngOnInit() {\n if (!this.id) {\n return;\n }\n\n const componentType = this.extensionService.getComponentById(this.id);\n if (componentType) {\n this.content.clear();\n this.componentRef = this.content.createComponent(componentType, { index: 0 });\n this.updateInstance();\n }\n }\n\n ngOnChanges() {\n this.updateInstance();\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private updateInstance() {\n if (this.componentRef?.instance) {\n this.componentRef.setInput('url', this.url);\n this.componentRef.setInput('extension', this.extension);\n this.componentRef.setInput('nodeId', this.nodeId);\n\n if (this.componentRef.instance?.contentLoaded) {\n this.componentRef.instance.contentLoaded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.contentLoaded.emit();\n });\n }\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n Input,\n OnInit,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n ComponentRef,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n ChangeDetectionStrategy\n} from '@angular/core';\nimport { ExtensionService } from '../../services/extension.service';\n\n@Component({\n selector: 'adf-dynamic-column',\n template: `<ng-container #content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'adf-dynamic-column' },\n styles: [\n `\n .adf-dynamic-column {\n display: flex;\n align-items: center;\n width: inherit;\n }\n `\n ]\n})\nexport class DynamicColumnComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('content', { read: ViewContainerRef, static: true })\n content: ViewContainerRef;\n\n @Input()\n id: string;\n\n @Input()\n context: any;\n\n private componentRef: ComponentRef<any>;\n\n constructor(private extensions: ExtensionService) {}\n\n ngOnInit() {\n const componentType = this.extensions.getComponentById(this.id);\n if (componentType) {\n this.content.clear();\n this.componentRef = this.content.createComponent(componentType, { index: 0 });\n this.updateInstance();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.node) {\n this.updateInstance();\n }\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private updateInstance() {\n if (this.componentRef?.instance) {\n this.componentRef.instance.context = this.context;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, ComponentRef, ViewChild, ViewContainerRef, OnDestroy, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';\nimport { ExtensionService } from '../../services/extension.service';\nimport { ExtensionComponent } from '../../services/component-register.service';\nimport { MatMenuItem } from '@angular/material/menu';\n\n// cSpell:words lifecycle\n@Component({\n selector: 'adf-dynamic-component',\n template: `<div #content></div>`\n})\nexport class DynamicExtensionComponent implements OnChanges, OnDestroy, AfterViewInit {\n @ViewChild('content', { read: ViewContainerRef, static: true })\n content: ViewContainerRef;\n\n /** Unique ID string for the component to show. */\n @Input() id: string;\n\n /** Data for the dynamically-loaded component instance. */\n @Input() data: any;\n\n /** Provides the menu item of dynamically-loaded component instance. */\n menuItem: MatMenuItem;\n\n private componentRef: ComponentRef<ExtensionComponent>;\n private loaded: boolean = false;\n\n constructor(private extensions: ExtensionService) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.loaded) {\n this.loadComponent();\n this.loaded = true;\n }\n\n if (changes.data) {\n this.data = changes.data.currentValue;\n }\n\n this.updateInstance();\n this.proxy('ngOnChanges', changes);\n }\n\n ngOnDestroy() {\n if (this.componentCreated()) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n ngAfterViewInit() {\n this.menuItem = this.componentRef?.instance?.menuItem;\n }\n\n private loadComponent() {\n const componentType = this.extensions.getComponentById<ExtensionComponent>(this.id);\n if (componentType) {\n this.content.clear();\n this.componentRef = this.content.createComponent(componentType, { index: 0 });\n }\n }\n\n private updateInstance() {\n if (this.componentCreated()) {\n this.componentRef.instance.data = this.data;\n }\n }\n\n private proxy(lifecycleMethod: string, ...args: any[]) {\n if (this.componentCreated() && this.lifecycleHookIsImplemented(lifecycleMethod)) {\n // eslint-disable-next-line prefer-spread\n this.componentRef.instance[lifecycleMethod].apply(this.componentRef.instance, args);\n }\n }\n\n private componentCreated(): boolean {\n return !!this.componentRef && !!this.componentRef.instance;\n }\n\n private lifecycleHookIsImplemented(lifecycleMethod: string): boolean {\n return !!this.componentRef.instance[lifecycleMethod];\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, OnInit, OnDestroy, ViewChild, ViewContainerRef, ComponentRef, OnChanges, SimpleChanges } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { ExtensionService } from '../../services/extension.service';\n\n@Component({\n selector: 'adf-dynamic-tab',\n template: `<div #content></div>`\n})\nexport class DynamicTabComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('content', { read: ViewContainerRef, static: true })\n content: ViewContainerRef;\n\n /** Unique ID string for the component to show. */\n @Input()\n id: string;\n\n @Input()\n node: Node;\n\n private componentRef: ComponentRef<any>;\n\n constructor(private extensions: ExtensionService) {}\n\n ngOnInit() {\n const componentType = this.extensions.getComponentById(this.id);\n if (componentType) {\n this.content.clear();\n this.componentRef = this.content.createComponent(componentType, { index: 0 });\n this.updateInstance();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.node) {\n this.updateInstance();\n }\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private updateInstance() {\n if (this.componentRef?.instance) {\n this.componentRef.instance.node = this.node;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './viewer/viewer-extension.interface';\nexport * from './viewer/preview-extension.component';\nexport * from './dynamic-column/dynamic-column.component';\nexport * from './dynamic-component/dynamic.component';\nexport * from './dynamic-tab/dynamic-tab.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule, ModuleWithProviders, inject, provideAppInitializer } from '@angular/core';\nimport { AppExtensionService } from './services/app-extension.service';\n\n/** @deprecated use provideAppExtensions() api instead */\n@NgModule()\nexport class ExtensionsModule {\n static forRoot(): ModuleWithProviders<ExtensionsModule> {\n return {\n ngModule: ExtensionsModule,\n providers: [\n provideAppInitializer(() => {\n const appExtensionService = inject(AppExtensionService);\n return appExtensionService.load();\n })\n ]\n };\n }\n\n /**\n * @deprecated use provideAppExtensions() api instead\n * @returns Module with providers\n */\n static forChild(): ModuleWithProviders<ExtensionsModule> {\n return {\n ngModule: ExtensionsModule\n };\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EnvironmentProviders, inject, provideAppInitializer, Provider, Type } from '@angular/core';\nimport { AppExtensionService } from './services/app-extension.service';\nimport { ExtensionService } from './services/extension.service';\nimport { RuleEvaluator } from './config/rule.extensions';\n\n/**\n * Provides all necessary entries for the app extensibility\n * @returns list of providers\n */\nexport function provideAppExtensions(): (Provider | EnvironmentProviders)[] {\n return [\n provideAppInitializer(() => {\n const appExtensionService = inject(AppExtensionService);\n return appExtensionService.load();\n })\n ];\n}\n\n/**\n * Provides a way to register extension entities in a single API\n *\n * Example:\n * ```typescript\n * providers: [\n * provideExtensions({\n * authGuards: {\n * auth1: guard1,\n * auth2: guard2\n * },\n * evaluators: {\n * eval1: evaluator1,\n * eval2: evaluator2\n * },\n * components: {\n * component: component1\n * }\n * });\n * ]\n * ```\n * @param params Parameters for the api\n * @param params.authGuards Auth guards to register\n * @param params.evaluators Rule evaluators to register\n * @param params.components Components to register\n * @returns list of Angular providers\n */\nexport function provideExtensions(params: {\n authGuards?: Record<string, unknown>;\n evaluators?: Record<string, RuleEvaluator>;\n components?: Record<string, Type<any>>;\n}) {\n return [\n provideAppInitializer(() => {\n const service = inject(ExtensionService);\n\n if (params) {\n if (params.authGuards) {\n service.setAuthGuards(params.authGuards);\n }\n if (params.evaluators) {\n service.setEvaluators(params.evaluators);\n }\n if (params.components) {\n service.setComponents(params.components);\n }\n }\n\n return Promise.resolve();\n })\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/config/action.extensions';\nexport * from './lib/config/document-list.extensions';\nexport * from './lib/config/extension-element';\nexport * from './lib/config/extension-utils';\nexport * from './lib/config/extension.config';\nexport * from './lib/config/icon.extensions';\nexport * from './lib/config/navbar.extensions';\nexport * from './lib/config/permission.extensions';\nexport * from './lib/config/routing.extensions';\nexport * from './lib/config/rule.extensions';\nexport * from './lib/config/sidebar.extensions';\nexport * from './lib/config/viewer.extensions';\n\nexport * from './lib/services/extension-loader.service';\nexport * from './lib/services/extension.service';\nexport * from './lib/services/component-register.service';\nexport * from './lib/services/app-extension.service';\nexport * from './lib/services/rule.service';\n\nexport * from './lib/store/states/navigation.state';\nexport * from './lib/store/states/profile.state';\nexport * from './lib/store/states/selection.state';\nexport * from './lib/store/states/repository.state';\n\nexport * from './lib/components/public-api';\nexport * from './lib/extensions.module';\nexport * from './lib/providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ExtensionLoaderService","core.every","core.some","core.not","i2.ComponentRegisterService","i3.RuleService","i1.ExtensionService"],"mappings":"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"}
1
+ {"version":3,"file":"adf-extensions.mjs","sources":["../../../../lib/extensions/src/lib/config/action.extensions.ts","../../../../lib/extensions/src/lib/config/document-list.extensions.ts","../../../../lib/extensions/src/lib/config/extension-element.ts","../../../../lib/extensions/src/lib/config/extension-utils.ts","../../../../lib/extensions/src/lib/config/extension.config.ts","../../../../lib/extensions/src/lib/config/icon.extensions.ts","../../../../lib/extensions/src/lib/config/navbar.extensions.ts","../../../../lib/extensions/src/lib/config/permission.extensions.ts","../../../../lib/extensions/src/lib/config/routing.extensions.ts","../../../../lib/extensions/src/lib/config/rule.extensions.ts","../../../../lib/extensions/src/lib/config/sidebar.extensions.ts","../../../../lib/extensions/src/lib/config/viewer.extensions.ts","../../../../lib/extensions/src/lib/services/extension-loader.service.ts","../../../../lib/extensions/src/lib/evaluators/core.evaluators.ts","../../../../lib/extensions/src/lib/services/component-register.service.ts","../../../../lib/extensions/src/lib/services/rule.service.ts","../../../../lib/extensions/src/lib/services/extension.service.ts","../../../../lib/extensions/src/lib/services/app-extension.service.ts","../../../../lib/extensions/src/lib/store/states/navigation.state.ts","../../../../lib/extensions/src/lib/store/states/profile.state.ts","../../../../lib/extensions/src/lib/store/states/selection.state.ts","../../../../lib/extensions/src/lib/store/states/repository.state.ts","../../../../lib/extensions/src/lib/components/viewer/viewer-extension.interface.ts","../../../../lib/extensions/src/lib/components/viewer/preview-extension.component.ts","../../../../lib/extensions/src/lib/components/dynamic-column/dynamic-column.component.ts","../../../../lib/extensions/src/lib/components/dynamic-component/dynamic.component.ts","../../../../lib/extensions/src/lib/components/dynamic-tab/dynamic-tab.component.ts","../../../../lib/extensions/src/lib/components/public-api.ts","../../../../lib/extensions/src/lib/extensions.module.ts","../../../../lib/extensions/src/lib/providers.ts","../../../../lib/extensions/src/public-api.ts","../../../../lib/extensions/src/adf-extensions.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport const ContentActionType = {\n default: 'default',\n button: 'button',\n separator: 'separator',\n menu: 'menu',\n custom: 'custom'\n} as const;\n\nexport type ContentActionType = (typeof ContentActionType)[keyof typeof ContentActionType];\n\nexport interface ContentActionRef extends ExtensionElement {\n type: ContentActionType;\n\n title?: string;\n tooltip?: string;\n description?: string;\n icon?: string;\n children?: Array<ContentActionRef>;\n component?: string;\n data?: any;\n color?: string;\n actions?: {\n [key: string]: string;\n click?: string;\n };\n rules?: {\n [key: string]: string;\n enabled?: string;\n visible?: string;\n };\n}\n\nexport interface ActionRef {\n id: string;\n type: string;\n payload?: any;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable id-blacklist */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface DataColumnTypes {\n text: string;\n image: string;\n date: string;\n json: string;\n icon: string;\n fileSize: string;\n location: string;\n boolean: string;\n amount: string;\n number: string;\n}\n\nexport type DataColumnType = keyof DataColumnTypes;\n\nexport interface DocumentListPresetRef extends ExtensionElement {\n key: string;\n type: DataColumnType;\n title?: string;\n format?: string;\n class?: string;\n sortable: boolean;\n template: string;\n desktopOnly: boolean;\n sortingKey: string;\n isHidden?: boolean;\n rules?: {\n [key: string]: string;\n visible?: string;\n };\n draggable?: boolean;\n resizable?: boolean;\n maxTextLength?: number;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ExtensionElement {\n id: string;\n\n order?: number;\n disabled?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContentActionRef, ContentActionType } from './action.extensions';\n\nexport const getValue = (target: any, key: string): any => {\n if (!target) {\n return undefined;\n }\n\n const keys = key.split('.');\n key = '';\n\n do {\n key += keys.shift();\n const value = target[key];\n if (\n value !== undefined &&\n (typeof value === 'object' || !keys.length)\n ) {\n target = value;\n key = '';\n } else if (!keys.length) {\n target = undefined;\n } else {\n key += '.';\n }\n } while (keys.length);\n\n return target;\n};\n\nexport const filterEnabled = (entry: { disabled?: boolean }): boolean => !entry.disabled;\n\nexport const sortByOrder = (\n a: { order?: number | undefined },\n b: { order?: number | undefined }\n) => {\n const left = a.order === undefined ? Number.MAX_SAFE_INTEGER : a.order;\n const right = b.order === undefined ? Number.MAX_SAFE_INTEGER : b.order;\n return left - right;\n};\n\nexport const reduceSeparators = (\n acc: ContentActionRef[],\n el: ContentActionRef,\n i: number,\n arr: ContentActionRef[]\n): ContentActionRef[] => {\n // remove leading separator\n if (i === 0) {\n if (arr[i].type === ContentActionType.separator) {\n return acc;\n }\n }\n // remove duplicate separators\n if (i > 0) {\n const prev = arr[i - 1];\n if (\n prev.type === ContentActionType.separator &&\n el.type === ContentActionType.separator\n ) {\n return acc;\n }\n\n // remove trailing separator\n if (i === arr.length - 1) {\n if (el.type === ContentActionType.separator) {\n return acc;\n }\n }\n }\n\n return acc.concat(el);\n};\n\nexport const reduceEmptyMenus = (\n acc: ContentActionRef[],\n el: ContentActionRef\n): ContentActionRef[] => {\n if (el.type === ContentActionType.menu) {\n if ((el.children || []).length === 0) {\n return acc;\n }\n }\n return acc.concat(el);\n};\n\nexport const mergeObjects = (...objects: any[]): any => {\n const result = {};\n\n objects.forEach((source) => {\n Object.keys(source).forEach((prop) => {\n let replace = false;\n\n if (prop.endsWith('.$replace')) {\n replace = true;\n prop = prop.replace('.$replace', '');\n }\n\n if (!prop.startsWith('$')) {\n if (replace) {\n result[prop] = source[`${prop}.$replace`];\n } else if (prop in result && Array.isArray(result[prop])) {\n if (Array.isArray(source[prop])) {\n result[prop] = mergeArrays(result[prop], source[prop]);\n } else {\n result[prop] = [...result[prop], source[prop]];\n }\n } else if (prop in result && typeof result[prop] === 'object') {\n result[prop] = mergeObjects(result[prop], source[prop]);\n } else {\n result[prop] = source[prop];\n }\n }\n });\n });\n\n return result;\n};\n\nexport const mergeArrays = (left: any[], right: any[]): any[] => {\n const result = [];\n const map = {};\n\n (left || []).forEach((entry) => {\n const element = entry;\n if (element && Object.prototype.hasOwnProperty.call(element, 'id')) {\n map[element.id] = element;\n } else {\n result.push(element);\n }\n });\n\n (right || []).forEach((entry) => {\n const element = entry;\n if (element && Object.prototype.hasOwnProperty.call(element, 'id') && map[element.id]) {\n const merged = mergeObjects(map[element.id], element);\n map[element.id] = merged;\n } else {\n result.push(element);\n }\n });\n\n return Object.keys(map).map((key) => map[key]).concat(result);\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RouteRef } from './routing.extensions';\nimport { RuleRef } from './rule.extensions';\nimport { ActionRef } from './action.extensions';\n\nexport interface ExtensionRef {\n $id: string;\n $name: string;\n $version: string;\n $vendor: string;\n $license: string;\n $runtime?: string;\n $description?: string;\n $dependencies?: Array<string>;\n\n appConfig?: any;\n rules?: Array<RuleRef>;\n routes?: Array<RouteRef>;\n actions?: Array<ActionRef>;\n\n features?: {\n [key: string]: any;\n };\n}\n\nexport interface ExtensionConfig extends ExtensionRef {\n $references?: Array<string | ExtensionRef>;\n $ignoreReferenceList?: Array<string>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface IconRef extends ExtensionElement {\n value: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface NavBarRules {\n [ruleId: string]: string;\n}\n\nexport interface NavBarGroupRef extends ExtensionElement {\n items: Array<NavBarLinkRef>;\n rules?: NavBarRules;\n}\n\nexport interface NavBarLinkRef extends ExtensionElement {\n icon: string;\n title: string;\n route: string;\n\n provider?: string;\n component?: string;\n url?: string; // evaluated at runtime based on route ref\n description?: string;\n children?: Array<NavBarLinkRef>;\n rules?: NavBarRules;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface NodePermissions {\n check(source: any, permissions: string[], options?: any): boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface RouteRef {\n id: string;\n path: string;\n component: string;\n parentRoute?: string;\n layout?: string;\n auth?: string[];\n data?: { [key: string]: string };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SelectionState } from '../store/states/selection.state';\nimport { NavigationState } from '../store/states/navigation.state';\nimport { NodePermissions } from './permission.extensions';\nimport { ProfileState } from '../store/states/profile.state';\nimport { RepositoryInfo } from '@alfresco/js-api';\n\nexport type RuleEvaluator = (context: RuleContext, ...args: any[]) => boolean;\n\nexport interface RuleContext {\n repository: RepositoryInfo;\n auth: any;\n selection: SelectionState;\n navigation: NavigationState;\n profile: ProfileState;\n permissions: NodePermissions;\n\n getEvaluator(key: string): RuleEvaluator;\n}\n\nexport class RuleRef {\n type: string;\n id?: string;\n parameters?: Array<RuleParameter>;\n}\n\nexport interface RuleParameter {\n type: string;\n value: any;\n parameters?: Array<RuleParameter>;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface SidebarTabRef extends ExtensionElement {\n title: string;\n component: string;\n\n icon?: string;\n rules?: {\n [key: string]: string;\n visible?: string;\n };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ExtensionElement } from './extension-element';\n\nexport interface ViewerExtensionRef extends ExtensionElement {\n fileExtension: string;\n component: string;\n\n rules?: {\n [key: string]: string;\n visible?: string;\n };\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { ActionRef, ContentActionRef, ContentActionType } from '../config/action.extensions';\nimport { ExtensionElement } from '../config/extension-element';\nimport { filterEnabled, getValue, mergeObjects, sortByOrder } from '../config/extension-utils';\nimport { ExtensionConfig, ExtensionRef } from '../config/extension.config';\nimport { RouteRef } from '../config/routing.extensions';\nimport { RuleRef } from '../config/rule.extensions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExtensionLoaderService {\n private readonly http = inject(HttpClient);\n\n load(configPath: string, pluginsPath: string, extensions?: string[], extensionValues?: ExtensionConfig[]): Promise<ExtensionConfig> {\n return new Promise<any>((resolve) => {\n this.loadConfig(configPath, 0).then((result) => {\n if (result) {\n let config = result.config;\n\n const override = sessionStorage.getItem('app.extension.config');\n if (override) {\n config = JSON.parse(override);\n }\n\n if (!config.$references?.length) {\n config.$references = this.filterIgnoredExtensions(extensions || [], config.$ignoreReferenceList);\n } else {\n config.$references = this.filterIgnoredExtensions(config.$references, config.$ignoreReferenceList);\n }\n\n if (config.$references?.length > 0 || extensionValues) {\n const plugins = (config.$references ?? []).map((name, idx) => this.loadConfig(`${pluginsPath}/${name}`, idx));\n\n Promise.all(plugins).then((results) => {\n let configs = results\n .filter((entry) => entry)\n .sort(sortByOrder)\n .map((entry) => entry.config);\n\n if (extensionValues) {\n configs = [...configs, ...extensionValues];\n }\n\n if (configs.length > 0) {\n config = mergeObjects(config, ...configs);\n }\n\n config = {\n ...config,\n ...this.getMetadata(result.config),\n $references: configs.map((ext) => this.getMetadata(ext))\n };\n\n resolve(config);\n });\n } else {\n resolve(config);\n }\n }\n });\n });\n }\n\n /**\n * Retrieves configuration elements.\n * Filters element by **enabled** and **order** attributes.\n * Example:\n * `getElements<ViewerExtensionRef>(config, 'features.viewer.extensions')`\n * @param config configuration settings\n * @param key element key\n * @param fallback fallback array of values\n * @returns list of elements\n */\n getElements<T extends ExtensionElement>(config: ExtensionConfig, key: string, fallback: Array<T> = []): Array<T> {\n const values = getValue(config, key) || fallback || [];\n return values.filter(filterEnabled).sort(sortByOrder);\n }\n\n getContentActions(config: ExtensionConfig, key: string): Array<ContentActionRef> {\n return this.getElements(config, key).map(this.setActionDefaults);\n }\n\n getRules(config: ExtensionConfig): Array<RuleRef> {\n if (config?.rules) {\n return config.rules;\n }\n return [];\n }\n\n getRoutes(config: ExtensionConfig): Array<RouteRef> {\n if (config) {\n return config.routes || [];\n }\n return [];\n }\n\n getActions(config: ExtensionConfig): Array<ActionRef> {\n if (config) {\n return config.actions || [];\n }\n return [];\n }\n\n getFeatures(config: ExtensionConfig): any {\n if (config) {\n return config.features || [];\n }\n return [];\n }\n\n protected getMetadata(config: ExtensionConfig): ExtensionRef {\n const result: any = {};\n\n Object.keys(config)\n .filter((key) => key.startsWith('$'))\n .forEach((key) => {\n result[key] = config[key];\n });\n\n return result;\n }\n\n protected loadConfig(url: string, order: number): Promise<{ order: number; config: ExtensionConfig }> {\n return new Promise((resolve) => {\n this.http.get<ExtensionConfig>(url).subscribe(\n (config) => {\n resolve({\n order,\n config\n });\n },\n () => {\n resolve(null);\n }\n );\n });\n }\n\n protected setActionDefaults(action: ContentActionRef): ContentActionRef {\n if (action) {\n action.type = action.type || ContentActionType.default;\n action.icon = action.icon || 'extension';\n }\n return action;\n }\n\n private filterIgnoredExtensions(extensions: Array<string | ExtensionRef>, ignoreReferenceList: string[]): Array<string | ExtensionRef> {\n if (!ignoreReferenceList?.length) {\n return extensions;\n }\n\n return extensions.map((file: string) => file.match('(?!.*/).+')[0]).filter((fileName: string) => !ignoreReferenceList.includes(fileName));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RuleContext, RuleParameter } from '../config/rule.extensions';\n\nexport const not = (context: RuleContext, ...args: RuleParameter[]): boolean => {\n if (!args || args.length === 0) {\n return false;\n }\n\n return args\n .every((arg) => {\n const evaluator = context.getEvaluator(arg.value);\n if (!evaluator) {\n console.warn('evaluator not found: ' + arg.value);\n return false;\n }\n return !evaluator(context, ...(arg.parameters || []));\n });\n};\n\nexport const every = (context: RuleContext, ...args: RuleParameter[]): boolean => {\n if (!args || args.length === 0) {\n return false;\n }\n\n return args\n .every((arg) => {\n const evaluator = context.getEvaluator(arg.value);\n if (!evaluator) {\n console.warn('evaluator not found: ' + arg.value);\n return false;\n }\n return evaluator(context, ...(arg.parameters || []));\n });\n};\n\nexport const some = (context: RuleContext, ...args: RuleParameter[]): boolean => {\n if (!args || args.length === 0) {\n return false;\n }\n\n return args\n .some((arg) => {\n const evaluator = context.getEvaluator(arg.value);\n if (!evaluator) {\n console.warn('evaluator not found: ' + arg.value);\n return false;\n }\n return evaluator(context, ...(arg.parameters || []));\n });\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, Type } from '@angular/core';\nimport { MatMenuItem } from '@angular/material/menu';\n\nexport interface ExtensionComponent {\n data: any;\n menuItem?: MatMenuItem;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ComponentRegisterService {\n components: Record<string, Type<any>> = {};\n\n setComponents(values: Record<string, Type<any>>) {\n if (values) {\n this.components = Object.assign({}, this.components, values);\n }\n }\n\n getComponentById<T>(id: string): Type<T> {\n return this.components[id];\n }\n\n hasComponentById(id: string): boolean {\n return !!this.getComponentById(id);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { RuleRef, RuleContext, RuleEvaluator, RuleParameter } from '../config/rule.extensions';\nimport { ExtensionConfig } from '../config/extension.config';\nimport { ExtensionLoaderService } from './extension-loader.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RuleService {\n protected loader = inject(ExtensionLoaderService);\n\n context: RuleContext = null;\n rules: Array<RuleRef> = [];\n evaluators: { [key: string]: RuleEvaluator } = {};\n\n setup(config: ExtensionConfig) {\n this.rules = this.loader.getRules(config);\n }\n\n /**\n * Adds one or more new rule evaluators to the existing set.\n * @param values The new evaluators to add\n */\n setEvaluators(values: Record<string, RuleEvaluator>) {\n if (values) {\n this.evaluators = Object.assign({}, this.evaluators, values);\n }\n }\n\n /**\n * Retrieves a rule using its ID value.\n * @param id The ID value to look for\n * @returns The rule or null if not found\n */\n getRuleById(id: string): RuleRef {\n return this.rules.find((ref) => ref.id === id);\n }\n\n /**\n * Retrieves a RuleEvaluator function using its key name.\n * @param key Key name to look for\n * @returns RuleEvaluator or null if not found\n */\n getEvaluator(key: string): RuleEvaluator {\n if (key?.startsWith('!')) {\n const fn = this.evaluators[key.substring(1)];\n return (context: RuleContext, ...args: RuleParameter[]): boolean => !fn(context, ...args);\n }\n return this.evaluators[key];\n }\n\n /**\n * Evaluates a rule.\n * @param ruleId ID of the rule to evaluate\n * @param context Custom rule execution context.\n * @returns True if the rule passed, false otherwise\n */\n evaluateRule(ruleId: string, context?: RuleContext): boolean {\n const ruleRef = this.getRuleById(ruleId);\n context = context || this.context;\n\n if (ruleRef) {\n const evaluator = this.getEvaluator(ruleRef.type);\n if (evaluator) {\n return evaluator(context, ...ruleRef.parameters);\n }\n } else {\n const evaluator = this.getEvaluator(ruleId);\n if (evaluator) {\n return evaluator(context);\n }\n }\n return false;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, Type, InjectionToken, inject } from '@angular/core';\nimport { RuleEvaluator, RuleRef, RuleContext } from '../config/rule.extensions';\nimport { ExtensionConfig } from '../config/extension.config';\nimport { ExtensionLoaderService } from './extension-loader.service';\nimport { RouteRef } from '../config/routing.extensions';\nimport { ActionRef } from '../config/action.extensions';\nimport * as core from '../evaluators/core.evaluators';\nimport { ComponentRegisterService } from './component-register.service';\nimport { RuleService } from './rule.service';\nimport { ExtensionElement } from '../config/extension-element';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * The default extensions factory\n * @returns the list of extension json files\n */\nexport function extensionJsonsFactory() {\n return [];\n}\n\nexport const EXTENSION_JSONS = new InjectionToken<string[][]>('extension-jsons', {\n providedIn: 'root',\n factory: extensionJsonsFactory\n});\n\nexport const EXTENSION_JSON_VALUES = new InjectionToken<string[][]>('extension-jsons-values', {\n providedIn: 'root',\n factory: extensionJsonsFactory\n});\n\n/**\n * Provides the extension json values for the angular modules\n * @param jsons files to provide\n * @returns a provider section\n */\nexport function provideExtensionConfig(jsons: string[]) {\n return {\n provide: EXTENSION_JSONS,\n useValue: jsons,\n multi: true\n };\n}\n\n/**\n * Provides the extension json raw values for the angular modules\n * @param extensionConfigValue config value\n * @returns a provider section\n */\nexport function provideExtensionConfigValues(extensionConfigValue: ExtensionConfig[]) {\n return {\n provide: EXTENSION_JSON_VALUES,\n useValue: extensionConfigValue,\n multi: true\n };\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExtensionService {\n protected loader = inject(ExtensionLoaderService);\n protected componentRegister = inject(ComponentRegisterService);\n protected ruleService = inject(RuleService);\n protected extensionJsons = inject(EXTENSION_JSONS);\n protected extensionJsonValues = inject(EXTENSION_JSON_VALUES);\n\n configPath = 'assets/app.extensions.json';\n pluginsPath = 'assets/plugins';\n\n routes: Array<RouteRef> = [];\n actions: Array<ActionRef> = [];\n features: Array<any> = [];\n authGuards: Record<string, unknown> = {};\n\n setup$: Observable<ExtensionConfig>;\n\n protected config: ExtensionConfig = null;\n protected onSetup$ = new BehaviorSubject<ExtensionConfig>(this.config);\n\n constructor() {\n this.setup$ = this.onSetup$.asObservable();\n }\n\n /**\n * Loads and registers an extension config file and plugins (specified by path properties).\n * @returns The loaded config data\n */\n async load(): Promise<ExtensionConfig> {\n const config = await this.loader.load(this.configPath, this.pluginsPath, this.extensionJsons.flat(), this.extensionJsonValues.flat() as any);\n\n this.setup(config);\n return config;\n }\n\n /**\n * Registers extensions from a config object.\n * @param config Object with config data\n */\n setup(config: ExtensionConfig) {\n if (!config) {\n console.warn('Extension configuration not found');\n return;\n }\n\n this.config = config;\n\n this.setEvaluators({\n 'core.every': core.every,\n 'core.some': core.some,\n 'core.not': core.not\n });\n\n this.actions = this.loader.getActions(config);\n this.routes = this.loader.getRoutes(config);\n this.features = this.loader.getFeatures(config);\n\n this.ruleService.setup(config);\n this.onSetup$.next(config);\n }\n\n /**\n * Gets features by key.\n * @param key Key string using dot notation or array of strings\n * @param defaultValue Default value returned if feature is not found, default is empty array\n * @returns Feature found by key\n */\n getFeature<T = any[]>(key: string | string[], defaultValue: any = []): T {\n const properties: string[] = Array.isArray(key) ? key : key.split('.');\n return properties.reduce((prev, curr) => prev?.[curr], this.features) || defaultValue;\n }\n\n getElements<T extends ExtensionElement>(key: string, fallback: Array<T> = []): Array<T> {\n return this.loader.getElements(this.config, key, fallback);\n }\n\n /**\n * Adds one or more new rule evaluators to the existing set.\n * @param values The new evaluators to add\n */\n setEvaluators(values: Record<string, RuleEvaluator>) {\n this.ruleService.setEvaluators(values);\n }\n\n /**\n * Adds one or more new auth guards to the existing set.\n * @param values The new auth guards to add\n */\n setAuthGuards(values: Record<string, unknown>) {\n if (values) {\n this.authGuards = Object.assign({}, this.authGuards, values);\n }\n }\n\n /**\n * Adds one or more new components to the existing set.\n * @param values The new components to add\n */\n setComponents(values: Record<string, Type<any>>) {\n this.componentRegister.setComponents(values);\n }\n\n /**\n * Retrieves a route using its ID value.\n * @param id The ID value to look for\n * @returns The route or null if not found\n */\n getRouteById(id: string): RouteRef {\n return this.routes.find((route) => route.id === id);\n }\n\n /**\n * Retrieves one or more auth guards using an array of ID values.\n * @param ids Array of ID value to look for\n * @returns Array of auth guards or empty array if none were found\n */\n getAuthGuards(ids: string[]): Array<unknown> {\n return (ids || []).map((id) => this.authGuards[id]).filter((guard) => guard);\n }\n\n /**\n * Retrieves an action using its ID value.\n * @param id The ID value to look for\n * @returns Action or null if not found\n */\n getActionById(id: string): ActionRef {\n return this.actions.find((action) => action.id === id);\n }\n\n /**\n * Retrieves a RuleEvaluator function using its key name.\n * @param key Key name to look for\n * @returns RuleEvaluator or null if not found\n */\n getEvaluator(key: string): RuleEvaluator {\n return this.ruleService.getEvaluator(key);\n }\n\n /**\n * Evaluates a rule.\n * @param ruleId ID of the rule to evaluate\n * @param context Custom rule execution context.\n * @returns True if the rule passed, false otherwise\n */\n evaluateRule(ruleId: string, context?: RuleContext): boolean {\n return this.ruleService.evaluateRule(ruleId, context);\n }\n\n /**\n * Retrieves a registered extension component using its ID value.\n * @param id The ID value to look for\n * @returns The component or null if not found\n */\n getComponentById<T>(id: string) {\n return this.componentRegister.getComponentById<T>(id);\n }\n\n /**\n * Retrieves a rule using its ID value.\n * @param id The ID value to look for\n * @returns The rule or null if not found\n */\n getRuleById(id: string): RuleRef {\n return this.ruleService.getRuleById(id);\n }\n\n /**\n * Runs a lightweight expression stored in a string.\n * @param value String containing the expression or literal value\n * @param context Parameter object for the expression with details of app state\n * @returns Result of evaluated expression, if found, or the literal value otherwise\n */\n runExpression(value: string | any, context?: any) {\n if (typeof value === 'string') {\n return this.evaluateExpression(value, context);\n } else {\n const duplicate = Object.assign({}, value);\n Object.keys(duplicate).forEach((key) => {\n duplicate[key] = this.evaluateExpression(duplicate[key], context);\n });\n return duplicate;\n }\n }\n\n private evaluateExpression(value: string, context?: any): string {\n const pattern = new RegExp(/\\$\\((.*\\)?)\\)/g);\n const matches = pattern.exec(value);\n\n if (matches && matches.length > 1) {\n const expression = matches[1];\n const fn = new Function('context', `return ${expression}`);\n const result = fn(context);\n\n return result;\n }\n return value;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { ExtensionConfig, ExtensionRef } from '../config/extension.config';\nimport { ExtensionService } from '../services/extension.service';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { ViewerExtensionRef } from '../config/viewer.extensions';\nimport { DocumentListPresetRef } from '../config/document-list.extensions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppExtensionService {\n protected extensionService = inject(ExtensionService);\n\n references$: Observable<ExtensionRef[]>;\n private readonly _references = new BehaviorSubject<ExtensionRef[]>([]);\n\n constructor() {\n this.references$ = this._references.asObservable();\n }\n\n async load() {\n const config = await this.extensionService.load();\n this.setup(config);\n }\n\n setup(config: ExtensionConfig) {\n if (!config) {\n return;\n }\n\n const references = (config.$references || []).filter((entry) => typeof entry === 'object').map((entry) => entry as ExtensionRef);\n this._references.next(references);\n }\n\n /**\n * Provides a collection of document list columns for the particular preset.\n * The result is filtered by the **disabled** state.\n * @param key Preset key.\n * @returns list of document list presets\n */\n getDocumentListPreset(key: string): DocumentListPresetRef[] {\n return this.extensionService.getElements<DocumentListPresetRef>(`features.documentList.${key}`).filter((entry) => !entry.disabled);\n }\n\n /**\n * Provides a list of the Viewer content extensions,\n * filtered by **disabled** state and **rules**.\n * @returns list of viewer extension references\n */\n getViewerExtensions(): ViewerExtensionRef[] {\n return this.extensionService\n .getElements<ViewerExtensionRef>('features.viewer.extensions')\n .filter((extension) => !this.isViewerExtensionDisabled(extension));\n }\n\n protected isViewerExtensionDisabled(extension: ViewerExtensionRef): boolean {\n if (extension) {\n if (extension.disabled) {\n return true;\n }\n\n if (extension.rules?.disabled) {\n return this.extensionService.evaluateRule(extension.rules.disabled);\n }\n }\n\n return false;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node } from '@alfresco/js-api';\n\nexport interface NavigationState {\n currentFolder?: Node;\n url?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Group } from '@alfresco/js-api';\n\nexport interface ProfileState {\n [key: string]: any;\n\n id: string;\n isAdmin: boolean;\n firstName: string;\n lastName: string;\n userName?: string;\n initials?: string;\n groups?: Group[];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NodeEntry, SiteEntry } from '@alfresco/js-api';\n\nexport interface SelectionState {\n count: number;\n nodes: NodeEntry[];\n libraries: SiteEntry[];\n isEmpty: boolean;\n first?: NodeEntry;\n last?: NodeEntry;\n folder?: NodeEntry;\n file?: NodeEntry;\n library?: SiteEntry;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface RepositoryState {\n isAuditEnabled?: boolean;\n isQuickShareEnabled?: boolean;\n isReadOnly?: boolean;\n isThumbnailGenerationEnabled?: boolean;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Node } from '@alfresco/js-api';\n\nexport interface ViewerExtensionInterface {\n url: string;\n nameFile: string;\n node: Node;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n Input,\n ComponentRef,\n OnInit,\n ViewChild,\n ViewContainerRef,\n OnDestroy,\n OnChanges,\n EventEmitter,\n Output,\n DestroyRef,\n inject\n} from '@angular/core';\nimport { ExtensionService } from '../../services/extension.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-preview-extension',\n template: `<div #content></div>`\n})\nexport class PreviewExtensionComponent implements OnInit, OnChanges, OnDestroy {\n private readonly extensionService = inject(ExtensionService);\n\n @ViewChild('content', { read: ViewContainerRef, static: true })\n content: ViewContainerRef;\n\n /** ID string of the component to preview. */\n @Input()\n id: string;\n\n /** Identifier of a node that is opened by the viewer. */\n @Input()\n nodeId: string = null;\n\n /** URL of the content in the repository. */\n @Input()\n url: string;\n\n /** File extension (.jpg, .png, etc) for the viewer. */\n @Input()\n extension: string;\n\n @Output()\n contentLoaded = new EventEmitter<void>();\n\n private readonly destroyRef = inject(DestroyRef);\n\n private componentRef: ComponentRef<any>;\n\n ngOnInit() {\n if (!this.id) {\n return;\n }\n\n const componentType = this.extensionService.getComponentById(this.id);\n if (componentType) {\n this.content.clear();\n this.componentRef = this.content.createComponent(componentType, { index: 0 });\n this.updateInstance();\n }\n }\n\n ngOnChanges() {\n this.updateInstance();\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private updateInstance() {\n if (this.componentRef?.instance) {\n this.componentRef.setInput('url', this.url);\n this.componentRef.setInput('extension', this.extension);\n this.componentRef.setInput('nodeId', this.nodeId);\n\n if (this.componentRef.instance?.contentLoaded) {\n this.componentRef.instance.contentLoaded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.contentLoaded.emit();\n });\n }\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n Input,\n OnInit,\n OnDestroy,\n ViewChild,\n ViewContainerRef,\n ComponentRef,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n inject\n} from '@angular/core';\nimport { ExtensionService } from '../../services/extension.service';\n\n@Component({\n selector: 'adf-dynamic-column',\n template: `<ng-container #content />`,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'adf-dynamic-column' },\n styles: [\n `\n .adf-dynamic-column {\n display: flex;\n align-items: center;\n width: inherit;\n }\n `\n ]\n})\nexport class DynamicColumnComponent implements OnInit, OnChanges, OnDestroy {\n private readonly extensions = inject(ExtensionService);\n\n @ViewChild('content', { read: ViewContainerRef, static: true })\n content: ViewContainerRef;\n\n @Input()\n id: string;\n\n @Input()\n context: any;\n\n private componentRef: ComponentRef<any>;\n\n ngOnInit() {\n const componentType = this.extensions.getComponentById(this.id);\n if (componentType) {\n this.content.clear();\n this.componentRef = this.content.createComponent(componentType, { index: 0 });\n this.updateInstance();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.node) {\n this.updateInstance();\n }\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private updateInstance() {\n if (this.componentRef?.instance) {\n this.componentRef.instance.context = this.context;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n Input,\n ComponentRef,\n ViewChild,\n ViewContainerRef,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n AfterViewInit,\n inject\n} from '@angular/core';\nimport { ExtensionService } from '../../services/extension.service';\nimport { ExtensionComponent } from '../../services/component-register.service';\nimport { MatMenuItem } from '@angular/material/menu';\n\n// cSpell:words lifecycle\n@Component({\n selector: 'adf-dynamic-component',\n template: `<div #content></div>`\n})\nexport class DynamicExtensionComponent implements OnChanges, OnDestroy, AfterViewInit {\n private readonly extensions = inject(ExtensionService);\n\n @ViewChild('content', { read: ViewContainerRef, static: true })\n content: ViewContainerRef;\n\n /** Unique ID string for the component to show. */\n @Input() id: string;\n\n /** Data for the dynamically-loaded component instance. */\n @Input() data: any;\n\n /** Provides the menu item of dynamically-loaded component instance. */\n menuItem: MatMenuItem;\n\n private componentRef: ComponentRef<ExtensionComponent>;\n private loaded: boolean = false;\n\n ngOnChanges(changes: SimpleChanges) {\n if (!this.loaded) {\n this.loadComponent();\n this.loaded = true;\n }\n\n if (changes.data) {\n this.data = changes.data.currentValue;\n }\n\n this.updateInstance();\n this.proxy('ngOnChanges', changes);\n }\n\n ngOnDestroy() {\n if (this.componentCreated()) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n ngAfterViewInit() {\n this.menuItem = this.componentRef?.instance?.menuItem;\n }\n\n private loadComponent() {\n const componentType = this.extensions.getComponentById<ExtensionComponent>(this.id);\n if (componentType) {\n this.content.clear();\n this.componentRef = this.content.createComponent(componentType, { index: 0 });\n }\n }\n\n private updateInstance() {\n if (this.componentCreated()) {\n this.componentRef.instance.data = this.data;\n }\n }\n\n private proxy(lifecycleMethod: string, ...args: any[]) {\n if (this.componentCreated() && this.lifecycleHookIsImplemented(lifecycleMethod)) {\n // eslint-disable-next-line prefer-spread\n this.componentRef.instance[lifecycleMethod].apply(this.componentRef.instance, args);\n }\n }\n\n private componentCreated(): boolean {\n return !!this.componentRef && !!this.componentRef.instance;\n }\n\n private lifecycleHookIsImplemented(lifecycleMethod: string): boolean {\n return !!this.componentRef.instance[lifecycleMethod];\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, Input, OnInit, OnDestroy, ViewChild, ViewContainerRef, ComponentRef, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { Node } from '@alfresco/js-api';\nimport { ExtensionService } from '../../services/extension.service';\n\n@Component({\n selector: 'adf-dynamic-tab',\n template: `<div #content></div>`\n})\nexport class DynamicTabComponent implements OnInit, OnChanges, OnDestroy {\n private readonly extensions = inject(ExtensionService);\n\n @ViewChild('content', { read: ViewContainerRef, static: true })\n content: ViewContainerRef;\n\n /** Unique ID string for the component to show. */\n @Input()\n id: string;\n\n @Input()\n node: Node;\n\n private componentRef: ComponentRef<any>;\n\n ngOnInit() {\n const componentType = this.extensions.getComponentById(this.id);\n if (componentType) {\n this.content.clear();\n this.componentRef = this.content.createComponent(componentType, { index: 0 });\n this.updateInstance();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.node) {\n this.updateInstance();\n }\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n private updateInstance() {\n if (this.componentRef?.instance) {\n this.componentRef.instance.node = this.node;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './viewer/viewer-extension.interface';\nexport * from './viewer/preview-extension.component';\nexport * from './dynamic-column/dynamic-column.component';\nexport * from './dynamic-component/dynamic.component';\nexport * from './dynamic-tab/dynamic-tab.component';\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NgModule, ModuleWithProviders, inject, provideAppInitializer } from '@angular/core';\nimport { AppExtensionService } from './services/app-extension.service';\n\n/** @deprecated use provideAppExtensions() api instead */\n@NgModule()\nexport class ExtensionsModule {\n static forRoot(): ModuleWithProviders<ExtensionsModule> {\n return {\n ngModule: ExtensionsModule,\n providers: [\n provideAppInitializer(() => {\n const appExtensionService = inject(AppExtensionService);\n return appExtensionService.load();\n })\n ]\n };\n }\n\n /**\n * @deprecated use provideAppExtensions() api instead\n * @returns Module with providers\n */\n static forChild(): ModuleWithProviders<ExtensionsModule> {\n return {\n ngModule: ExtensionsModule\n };\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EnvironmentProviders, inject, provideAppInitializer, Provider, Type } from '@angular/core';\nimport { AppExtensionService } from './services/app-extension.service';\nimport { ExtensionService } from './services/extension.service';\nimport { RuleEvaluator } from './config/rule.extensions';\n\n/**\n * Provides all necessary entries for the app extensibility\n * @returns list of providers\n */\nexport function provideAppExtensions(): (Provider | EnvironmentProviders)[] {\n return [\n provideAppInitializer(() => {\n const appExtensionService = inject(AppExtensionService);\n return appExtensionService.load();\n })\n ];\n}\n\n/**\n * Provides a way to register extension entities in a single API\n *\n * Example:\n * ```typescript\n * providers: [\n * provideExtensions({\n * authGuards: {\n * auth1: guard1,\n * auth2: guard2\n * },\n * evaluators: {\n * eval1: evaluator1,\n * eval2: evaluator2\n * },\n * components: {\n * component: component1\n * }\n * });\n * ]\n * ```\n * @param params Parameters for the api\n * @param params.authGuards Auth guards to register\n * @param params.evaluators Rule evaluators to register\n * @param params.components Components to register\n * @returns list of Angular providers\n */\nexport function provideExtensions(params: {\n authGuards?: Record<string, unknown>;\n evaluators?: Record<string, RuleEvaluator>;\n components?: Record<string, Type<any>>;\n}) {\n return [\n provideAppInitializer(() => {\n const service = inject(ExtensionService);\n\n if (params) {\n if (params.authGuards) {\n service.setAuthGuards(params.authGuards);\n }\n if (params.evaluators) {\n service.setEvaluators(params.evaluators);\n }\n if (params.components) {\n service.setComponents(params.components);\n }\n }\n\n return Promise.resolve();\n })\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/config/action.extensions';\nexport * from './lib/config/document-list.extensions';\nexport * from './lib/config/extension-element';\nexport * from './lib/config/extension-utils';\nexport * from './lib/config/extension.config';\nexport * from './lib/config/icon.extensions';\nexport * from './lib/config/navbar.extensions';\nexport * from './lib/config/permission.extensions';\nexport * from './lib/config/routing.extensions';\nexport * from './lib/config/rule.extensions';\nexport * from './lib/config/sidebar.extensions';\nexport * from './lib/config/viewer.extensions';\n\nexport * from './lib/services/extension-loader.service';\nexport * from './lib/services/extension.service';\nexport * from './lib/services/component-register.service';\nexport * from './lib/services/app-extension.service';\nexport * from './lib/services/rule.service';\n\nexport * from './lib/store/states/navigation.state';\nexport * from './lib/store/states/profile.state';\nexport * from './lib/store/states/selection.state';\nexport * from './lib/store/states/repository.state';\n\nexport * from './lib/components/public-api';\nexport * from './lib/extensions.module';\nexport * from './lib/providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["core.every","core.some","core.not"],"mappings":"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"}
@@ -15,15 +15,13 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { OnInit, OnDestroy, ViewContainerRef, OnChanges, SimpleChanges } from '@angular/core';
18
- import { ExtensionService } from '../../services/extension.service';
19
18
  import * as i0 from "@angular/core";
20
19
  export declare class DynamicColumnComponent implements OnInit, OnChanges, OnDestroy {
21
- private extensions;
20
+ private readonly extensions;
22
21
  content: ViewContainerRef;
23
22
  id: string;
24
23
  context: any;
25
24
  private componentRef;
26
- constructor(extensions: ExtensionService);
27
25
  ngOnInit(): void;
28
26
  ngOnChanges(changes: SimpleChanges): void;
29
27
  ngOnDestroy(): void;
@@ -15,11 +15,10 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { ViewContainerRef, OnDestroy, OnChanges, SimpleChanges, AfterViewInit } from '@angular/core';
18
- import { ExtensionService } from '../../services/extension.service';
19
18
  import { MatMenuItem } from '@angular/material/menu';
20
19
  import * as i0 from "@angular/core";
21
20
  export declare class DynamicExtensionComponent implements OnChanges, OnDestroy, AfterViewInit {
22
- private extensions;
21
+ private readonly extensions;
23
22
  content: ViewContainerRef;
24
23
  /** Unique ID string for the component to show. */
25
24
  id: string;
@@ -29,7 +28,6 @@ export declare class DynamicExtensionComponent implements OnChanges, OnDestroy,
29
28
  menuItem: MatMenuItem;
30
29
  private componentRef;
31
30
  private loaded;
32
- constructor(extensions: ExtensionService);
33
31
  ngOnChanges(changes: SimpleChanges): void;
34
32
  ngOnDestroy(): void;
35
33
  ngAfterViewInit(): void;
@@ -16,16 +16,14 @@
16
16
  */
17
17
  import { OnInit, OnDestroy, ViewContainerRef, OnChanges, SimpleChanges } from '@angular/core';
18
18
  import { Node } from '@alfresco/js-api';
19
- import { ExtensionService } from '../../services/extension.service';
20
19
  import * as i0 from "@angular/core";
21
20
  export declare class DynamicTabComponent implements OnInit, OnChanges, OnDestroy {
22
- private extensions;
21
+ private readonly extensions;
23
22
  content: ViewContainerRef;
24
23
  /** Unique ID string for the component to show. */
25
24
  id: string;
26
25
  node: Node;
27
26
  private componentRef;
28
- constructor(extensions: ExtensionService);
29
27
  ngOnInit(): void;
30
28
  ngOnChanges(changes: SimpleChanges): void;
31
29
  ngOnDestroy(): void;
@@ -15,10 +15,9 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { OnInit, ViewContainerRef, OnDestroy, OnChanges, EventEmitter } from '@angular/core';
18
- import { ExtensionService } from '../../services/extension.service';
19
18
  import * as i0 from "@angular/core";
20
19
  export declare class PreviewExtensionComponent implements OnInit, OnChanges, OnDestroy {
21
- private extensionService;
20
+ private readonly extensionService;
22
21
  content: ViewContainerRef;
23
22
  /** ID string of the component to preview. */
24
23
  id: string;
@@ -31,7 +30,6 @@ export declare class PreviewExtensionComponent implements OnInit, OnChanges, OnD
31
30
  contentLoaded: EventEmitter<void>;
32
31
  private readonly destroyRef;
33
32
  private componentRef;
34
- constructor(extensionService: ExtensionService);
35
33
  ngOnInit(): void;
36
34
  ngOnChanges(): void;
37
35
  ngOnDestroy(): void;
@@ -15,13 +15,14 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { ExtensionElement } from './extension-element';
18
- export declare enum ContentActionType {
19
- default = "default",
20
- button = "button",
21
- separator = "separator",
22
- menu = "menu",
23
- custom = "custom"
24
- }
18
+ export declare const ContentActionType: {
19
+ readonly default: "default";
20
+ readonly button: "button";
21
+ readonly separator: "separator";
22
+ readonly menu: "menu";
23
+ readonly custom: "custom";
24
+ };
25
+ export type ContentActionType = (typeof ContentActionType)[keyof typeof ContentActionType];
25
26
  export interface ContentActionRef extends ExtensionElement {
26
27
  type: ContentActionType;
27
28
  title?: string;
@@ -7,8 +7,8 @@ import * as i0 from "@angular/core";
7
7
  export declare class AppExtensionService {
8
8
  protected extensionService: ExtensionService;
9
9
  references$: Observable<ExtensionRef[]>;
10
- private _references;
11
- constructor(extensionService: ExtensionService);
10
+ private readonly _references;
11
+ constructor();
12
12
  load(): Promise<void>;
13
13
  setup(config: ExtensionConfig): void;
14
14
  /**
@@ -1,20 +1,3 @@
1
- /*!
2
- * @license
3
- * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- */
17
- import { HttpClient } from '@angular/common/http';
18
1
  import { ActionRef, ContentActionRef } from '../config/action.extensions';
19
2
  import { ExtensionElement } from '../config/extension-element';
20
3
  import { ExtensionConfig, ExtensionRef } from '../config/extension.config';
@@ -22,8 +5,7 @@ import { RouteRef } from '../config/routing.extensions';
22
5
  import { RuleRef } from '../config/rule.extensions';
23
6
  import * as i0 from "@angular/core";
24
7
  export declare class ExtensionLoaderService {
25
- private http;
26
- constructor(http: HttpClient);
8
+ private readonly http;
27
9
  load(configPath: string, pluginsPath: string, extensions?: string[], extensionValues?: ExtensionConfig[]): Promise<ExtensionConfig>;
28
10
  /**
29
11
  * Retrieves configuration elements.
@@ -56,8 +56,8 @@ export declare class ExtensionService {
56
56
  protected loader: ExtensionLoaderService;
57
57
  protected componentRegister: ComponentRegisterService;
58
58
  protected ruleService: RuleService;
59
- protected extensionJsons: string[];
60
- protected extensionJsonValues: ExtensionConfig[];
59
+ protected extensionJsons: string[][];
60
+ protected extensionJsonValues: string[][];
61
61
  configPath: string;
62
62
  pluginsPath: string;
63
63
  routes: Array<RouteRef>;
@@ -67,7 +67,7 @@ export declare class ExtensionService {
67
67
  setup$: Observable<ExtensionConfig>;
68
68
  protected config: ExtensionConfig;
69
69
  protected onSetup$: BehaviorSubject<ExtensionConfig>;
70
- constructor(loader: ExtensionLoaderService, componentRegister: ComponentRegisterService, ruleService: RuleService, extensionJsons: string[], extensionJsonValues: ExtensionConfig[]);
70
+ constructor();
71
71
  /**
72
72
  * Loads and registers an extension config file and plugins (specified by path properties).
73
73
  * @returns The loaded config data
@@ -9,7 +9,6 @@ export declare class RuleService {
9
9
  evaluators: {
10
10
  [key: string]: RuleEvaluator;
11
11
  };
12
- constructor(loader: ExtensionLoaderService);
13
12
  setup(config: ExtensionConfig): void;
14
13
  /**
15
14
  * Adds one or more new rule evaluators to the existing set.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@alfresco/adf-extensions",
3
3
  "description": "Provides extensibility support for ADF applications.",
4
- "version": "8.3.0",
4
+ "version": "8.3.1",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Hyland Software, Inc. and its affiliates",
7
7
  "repository": {
@@ -14,7 +14,7 @@
14
14
  "peerDependencies": {
15
15
  "@angular/common": ">=14.1.3",
16
16
  "@angular/core": ">=14.1.3",
17
- "@alfresco/js-api": ">=9.1.1"
17
+ "@alfresco/js-api": ">=9.3.1"
18
18
  },
19
19
  "keywords": [
20
20
  "extensions",