nuxeo-development-framework 5.4.3 → 5.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +731 -427
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/ndf-filters/base/base-checkbox-radio.component.js +18 -7
  4. package/esm2015/lib/components/ndf-filters/components/predicate-text-input/predicate-text-input.component.js +2 -2
  5. package/esm2015/lib/components/ndf-filters/constants/type.js +3 -2
  6. package/esm2015/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.js +29 -14
  7. package/esm2015/lib/components/ndf-filters/containers/base-field.js +1 -1
  8. package/esm2015/lib/components/ndf-filters/containers/custom-field/custom-field.component.js +3 -2
  9. package/esm2015/lib/components/ndf-filters/containers/filters-panel/filters-panel.component.js +5 -3
  10. package/esm2015/lib/components/ndf-filters/custom-components/aggregation-group/aggregation-group.component.js +87 -0
  11. package/esm2015/lib/components/ndf-filters/custom-components/aggregation-group/map-aggregation-config.js +20 -0
  12. package/esm2015/lib/components/ndf-filters/custom-components/index.js +2 -1
  13. package/esm2015/lib/components/ndf-filters/models/custom-field-config.js +1 -1
  14. package/esm2015/lib/components/ndf-filters/models/field-options/custom-fields-options.js +1 -1
  15. package/esm2015/lib/components/ndf-filters/ndf-filters-panel.module.js +98 -28
  16. package/esm2015/lib/components/ndf-filters/public-api.js +4 -3
  17. package/esm2015/lib/components/ndf-filters/services/dynamic-component-loader.service.js +2 -33
  18. package/esm2015/lib/components/ndf-filters/utility/nxql-query.js +4 -4
  19. package/esm2015/lib/components/reports/ndf-reports/base/base-chart.js +10 -2
  20. package/esm2015/lib/components/reports/ndf-reports/charts-components/digit-chart/digit-chart.component.js +2 -2
  21. package/esm2015/lib/components/reports/ndf-reports/charts-components/graph-chart/graph-chart.component.js +2 -2
  22. package/esm2015/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.js +12 -4
  23. package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +8 -8
  24. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +24 -3
  25. package/esm2015/lib/components/reports/ndf-reports/models/base.js +1 -1
  26. package/esm2015/lib/components/reports/ndf-reports/models/dynamic-line.js +1 -1
  27. package/esm2015/lib/components/reports/ndf-reports/models/ndf-reports.config.js +1 -1
  28. package/esm2015/lib/components/reports/ndf-reports/models/request.js +1 -1
  29. package/esm2015/lib/components/reports/ndf-reports/services/base-chart-builder.service.js +5 -5
  30. package/esm2015/lib/components/reports/ndf-reports/services/chart-data-transformers.service.js +1 -1
  31. package/esm2015/lib/components/reports/ndf-reports/services/digit-chart.service.js +3 -3
  32. package/esm2015/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.js +34 -29
  33. package/esm2015/lib/components/reports/ndf-reports/services/index.js +2 -1
  34. package/esm2015/lib/components/reports/ndf-reports/services/ndf-reports.service.js +12 -5
  35. package/esm2015/lib/components/reports/ndf-reports/services/reports-data-transformers.service.js +70 -0
  36. package/esm2015/lib/components/reports/ndf-reports/utilities/reports-table.mapper.js +3 -3
  37. package/esm2015/lib/components/skeleton/skeleton.component.js +1 -1
  38. package/esm2015/lib/shared/evaluator/types.js +1 -1
  39. package/fesm2015/nuxeo-development-framework.js +650 -379
  40. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  41. package/lib/components/ndf-filters/base/base-checkbox-radio.component.d.ts +1 -0
  42. package/lib/components/ndf-filters/constants/type.d.ts +1 -0
  43. package/lib/components/ndf-filters/containers/aggregation-field/aggregation-field.component.d.ts +7 -0
  44. package/lib/components/ndf-filters/custom-components/aggregation-group/aggregation-group.component.d.ts +26 -0
  45. package/lib/components/ndf-filters/custom-components/aggregation-group/map-aggregation-config.d.ts +9 -0
  46. package/lib/components/ndf-filters/custom-components/index.d.ts +1 -0
  47. package/lib/components/ndf-filters/models/custom-field-config.d.ts +2 -2
  48. package/lib/components/ndf-filters/models/field-options/custom-fields-options.d.ts +14 -0
  49. package/lib/components/ndf-filters/ndf-filters-panel.module.d.ts +70 -59
  50. package/lib/components/ndf-filters/public-api.d.ts +3 -2
  51. package/lib/components/ndf-filters/services/dynamic-component-loader.service.d.ts +0 -3
  52. package/lib/components/reports/ndf-reports/base/base-chart.d.ts +5 -2
  53. package/lib/components/reports/ndf-reports/components/_parts/timeline-dialog/timeline-dialog.component.d.ts +2 -0
  54. package/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.d.ts +4 -2
  55. package/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.d.ts +7 -2
  56. package/lib/components/reports/ndf-reports/models/base.d.ts +3 -1
  57. package/lib/components/reports/ndf-reports/models/dynamic-line.d.ts +6 -1
  58. package/lib/components/reports/ndf-reports/models/ndf-reports.config.d.ts +1 -0
  59. package/lib/components/reports/ndf-reports/models/request.d.ts +1 -0
  60. package/lib/components/reports/ndf-reports/services/base-chart-builder.service.d.ts +3 -3
  61. package/lib/components/reports/ndf-reports/services/chart-data-transformers.service.d.ts +9 -2
  62. package/lib/components/reports/ndf-reports/services/digit-chart.service.d.ts +2 -2
  63. package/lib/components/reports/ndf-reports/services/dynamic-timeline-report.service.d.ts +10 -15
  64. package/lib/components/reports/ndf-reports/services/index.d.ts +1 -0
  65. package/lib/components/reports/ndf-reports/services/ndf-reports.service.d.ts +5 -1
  66. package/lib/components/reports/ndf-reports/services/reports-data-transformers.service.d.ts +48 -0
  67. package/lib/shared/evaluator/types.d.ts +1 -1
  68. package/package.json +1 -1
  69. package/src/docs/ndf-table.doc.md +4 -5
@@ -14235,7 +14235,8 @@ const PREDICATE_FIELD_TYPES = {
14235
14235
  date: 'date'
14236
14236
  };
14237
14237
  const CUSTOM_FIELD_TYPES = {
14238
- activeUser: 'activeUser'
14238
+ activeUser: 'activeUser',
14239
+ aggregationGroup: 'aggregationGroup',
14239
14240
  };
14240
14241
 
14241
14242
  class AggregationFieldService {
@@ -16323,77 +16324,145 @@ class FieldValueObject {
16323
16324
  }
16324
16325
  }
16325
16326
 
16326
- class BaseCustomValueAccessor extends BaseComponent {
16327
- constructor(injector) {
16328
- super(injector);
16329
- this.injector = injector;
16330
- this.onChange = () => { };
16331
- this.onTouched = () => { };
16332
- this.onValidationChange = () => { };
16333
- }
16334
- registerOnChange(fn) {
16335
- this.onChange = fn;
16327
+ class DynamicComponentLoaderService {
16328
+ constructor(_factoryResolver) {
16329
+ this._factoryResolver = _factoryResolver;
16330
+ this._components = new Map();
16336
16331
  }
16337
- registerOnTouched(fn) {
16338
- this.onTouched = fn;
16332
+ registerComponent(key, component) {
16333
+ this._components.set(key, component);
16339
16334
  }
16340
- setDisabledState(isDisabled) {
16341
- this.disabled = isDisabled;
16342
- this.cdr.markForCheck();
16335
+ renderComponent(key, vcr) {
16336
+ if (!this._components.has(key)) {
16337
+ throw 'unknown component ';
16338
+ }
16339
+ const component = this._components.get(key);
16340
+ return this.loadComponent(component, vcr);
16343
16341
  }
16344
- registerOnValidatorChange(fn) {
16345
- this.onValidationChange = fn;
16342
+ loadComponent(componentAngularType, vcr) {
16343
+ const component = this._factoryResolver.resolveComponentFactory(componentAngularType);
16344
+ return vcr.createComponent(component);
16346
16345
  }
16347
16346
  }
16348
- BaseCustomValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomValueAccessor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
16349
- BaseCustomValueAccessordir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomValueAccessor, inputs: { disabled: "disabled" }, usesInheritance: true, ngImport: i0 });
16350
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomValueAccessor, decorators: [{
16351
- type: Directive,
16352
- args: [{}]
16353
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { disabled: [{
16354
- type: Input
16355
- }] } });
16347
+ DynamicComponentLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicComponentLoaderService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
16348
+ DynamicComponentLoaderServiceprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicComponentLoaderService });
16349
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicComponentLoaderService, decorators: [{
16350
+ type: Injectable
16351
+ }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });
16356
16352
 
16357
- class BaseCustomField extends BaseCustomValueAccessor {
16358
- constructor(injector) {
16359
- super(injector);
16360
- this.injector = injector;
16361
- this._isFieldDirty = false;
16353
+ class FilterQueryService {
16354
+ constructor() {
16355
+ this.keyToShortMap = new Map();
16356
+ this.shortToKeyMap = new Map();
16357
+ this.defaultShortKeys = {
16358
+ value: 'v',
16359
+ operator: 'o',
16360
+ min: 'n',
16361
+ max: 'x',
16362
+ prefix: 'p'
16363
+ };
16364
+ this.initializeDefaultKeys();
16362
16365
  }
16363
- get renderOptions() {
16364
- var _a, _b;
16365
- return (_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.render) === null || _b === void 0 ? void 0 : _b.options;
16366
+ registerKeys(keys) {
16367
+ Object.entries(keys).forEach(([key, value]) => this.registerKey(key, value));
16366
16368
  }
16367
- validate(control) {
16368
- return control.valid ? null : control.errors;
16369
+ registerKey(longKey, shortKey) {
16370
+ this.keyToShortMap.set(longKey, shortKey);
16371
+ this.shortToKeyMap.set(shortKey, longKey);
16369
16372
  }
16370
- _isValueObject() {
16371
- var _a;
16372
- return ((_a = this.field) === null || _a === void 0 ? void 0 : _a.valueType) === 'valueObject';
16373
+ /**
16374
+ * Encodes a query object into a URL-safe string by transforming its keys
16375
+ * and converting it to a JSON string.
16376
+ *
16377
+ * @param {Record<string, any>} query - The query object to encode.
16378
+ *
16379
+ * @example
16380
+ * // Example query object
16381
+ * const query = {
16382
+ * // Predicate field (payload sent)
16383
+ * 'locRef:boxCode': {
16384
+ * value: '1',
16385
+ * operator: 'LIKE',
16386
+ * },
16387
+ *
16388
+ * // Aggregation field (query parameter)
16389
+ * 'locRef:boxCode': [1]
16390
+ * };
16391
+ *
16392
+ * const encodedQuery = encodeQuery(query);
16393
+ * console.log(encodedQuery); // Encoded string representation
16394
+ *
16395
+ * @returns {string} - The URL-encoded JSON string representation of the query object.
16396
+ */
16397
+ encodeQuery(query) {
16398
+ const transformed = this.transformObject(query, this.keyToShortMap, false);
16399
+ return encodeURIComponent(JSON.stringify(transformed));
16373
16400
  }
16374
- _isSendAsQueryParams() {
16375
- var _a;
16376
- return ((_a = this.field) === null || _a === void 0 ? void 0 : _a.sendMode) === FIELD_SEND_MODE.queryParam;
16401
+ /**
16402
+ * Decodes a URL-encoded query string back into its original object form.
16403
+ *
16404
+ * @param {string} encodedQuery - The URL-encoded JSON string representation of a query.
16405
+ *
16406
+ * @example
16407
+ * const encodedQuery = "%7B%22locRef%3AboxCode%22%3A%7B%22value%22%3A%221%22%2C%22operator%22%3A%22LIKE%22%7D%7D";
16408
+ * const decodedQuery = decodeQuery(encodedQuery);
16409
+ * console.log(decodedQuery);
16410
+ * Output:
16411
+ * {
16412
+ * 'locRef:boxCode': {
16413
+ * value: '1',
16414
+ * operator: 'LIKE'
16415
+ * }
16416
+ * }
16417
+ *
16418
+ * @returns {Record<string, any> | null} - The decoded query object, or `null` if decoding fails.
16419
+ */
16420
+ decodeQuery(encodedQuery) {
16421
+ try {
16422
+ const parsedQuery = JSON.parse(decodeURIComponent(encodedQuery));
16423
+ return this.transformObject(parsedQuery, this.shortToKeyMap, true);
16424
+ }
16425
+ catch (error) {
16426
+ console.error('Failed to decode query:', error);
16427
+ return null;
16428
+ }
16377
16429
  }
16378
- _prepareValueObject(value, operator, prefix) {
16379
- var _a;
16380
- if (operator === void 0) { operator = (_a = this.field) === null || _a === void 0 ? void 0 : _a.operator; }
16381
- return new FieldValueObject({
16382
- operator: operator,
16383
- value: value,
16384
- prefix
16430
+ initializeDefaultKeys() {
16431
+ Object.entries(this.defaultShortKeys).forEach(([longKey, shortKey]) => {
16432
+ this.registerKey(longKey, shortKey);
16385
16433
  });
16386
16434
  }
16435
+ transformObject(entry, keyMap, isDecode) {
16436
+ if (Array.isArray(entry)) {
16437
+ return entry.map((item) => this.transformObject(item, keyMap, isDecode));
16438
+ }
16439
+ if (entry && typeof entry === 'object') {
16440
+ if (!isDecode) {
16441
+ delete entry[VALUE_OBJECT];
16442
+ }
16443
+ return Object.keys(entry).reduce((acc, key) => {
16444
+ const newKey = keyMap.get(key);
16445
+ if (!newKey) {
16446
+ throw new Error(`Query key mapping not found for: ${key}`);
16447
+ }
16448
+ if (isDecode && newKey === 'operator') {
16449
+ acc[VALUE_OBJECT] = `${VALUE_OBJECT}`;
16450
+ }
16451
+ acc[newKey] = this.transformObject(entry[key], keyMap, isDecode);
16452
+ return acc;
16453
+ }, {});
16454
+ }
16455
+ return entry;
16456
+ }
16387
16457
  }
16388
- BaseCustomField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomField, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
16389
- BaseCustomFielddir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomField, inputs: { aggregations: "aggregations", field: "field" }, usesInheritance: true, ngImport: i0 });
16390
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomField, decorators: [{
16391
- type: Directive
16392
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { aggregations: [{
16393
- type: Input
16394
- }], field: [{
16395
- type: Input
16396
- }] } });
16458
+ FilterQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilterQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16459
+ FilterQueryServiceprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilterQueryService, providedIn: 'root' });
16460
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilterQueryService, decorators: [{
16461
+ type: Injectable,
16462
+ args: [{
16463
+ providedIn: 'root'
16464
+ }]
16465
+ }], ctorParameters: function () { return []; } });
16397
16466
 
16398
16467
  class NxQL {
16399
16468
  static _getDateRange(value) {
@@ -16514,8 +16583,7 @@ class NxQlQuery extends NxQL {
16514
16583
  [_opr.startsWith]: NxQlQuery.equals,
16515
16584
  [_opr.fullText]: NxQlQuery.equals
16516
16585
  };
16517
- const _val = Array.isArray(value) ? value.join(',') : value;
16518
- return operatorHandlers[operator](_val, prefix);
16586
+ return operatorHandlers[operator](value, prefix);
16519
16587
  }
16520
16588
  static equals(value, prefix = '') {
16521
16589
  return `${prefix ? `${prefix} ` : ''}'${value.trim()}'`;
@@ -16524,241 +16592,14 @@ class NxQlQuery extends NxQL {
16524
16592
  return `${prefix ? `${prefix} ` : ''}'%${value.trim()}%'`;
16525
16593
  }
16526
16594
  static in(value, prefix = '') {
16527
- return `${prefix ? `${prefix} ` : ''}(${value.trim()})`;
16595
+ const _val = Array.isArray(value) ? value.map(item => `'${item}'`).join(',') : value;
16596
+ return `${prefix ? `${prefix} ` : ''}(${_val.trim()})`;
16528
16597
  }
16529
16598
  static between(value1, value2) {
16530
16599
  return `${value1} AND ${value2}`;
16531
16600
  }
16532
16601
  }
16533
16602
 
16534
- class ActiveUserService extends BaseService {
16535
- getCurrentUser() {
16536
- return this.user;
16537
- }
16538
- }
16539
- ActiveUserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
16540
- ActiveUserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserService, providedIn: 'root' });
16541
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserService, decorators: [{
16542
- type: Injectable,
16543
- args: [{
16544
- providedIn: 'root'
16545
- }]
16546
- }] });
16547
-
16548
- class ActiveUserSwitchComponent extends BaseCustomField {
16549
- constructor() {
16550
- super(...arguments);
16551
- this._userService = this.injector.get(ActiveUserService);
16552
- this.isUserSelected = false;
16553
- }
16554
- writeValue(value) {
16555
- if (value) {
16556
- const val = isFieldValueObject(value) ? value.value : value;
16557
- this.isUserSelected = val === this.getValue();
16558
- }
16559
- }
16560
- toggle({ checked }) {
16561
- this.isUserSelected = checked;
16562
- if (!checked) {
16563
- this.onChange(null);
16564
- return;
16565
- }
16566
- if (this.field.valueType === 'property') {
16567
- this.onChange(this.getValue());
16568
- return;
16569
- }
16570
- this.updateObjectValue();
16571
- }
16572
- getValue() {
16573
- var _a;
16574
- return ___default.get(this._userService.getCurrentUser(), ((_a = this.renderOptions) === null || _a === void 0 ? void 0 : _a.bindValue) || 'properties.username');
16575
- }
16576
- updateObjectValue() {
16577
- var _a;
16578
- const operator = ((_a = this.field) === null || _a === void 0 ? void 0 : _a.operator) || COMPARISON_OPERATOR.equals;
16579
- const data = this._prepareValueObject(this.getValue(), operator);
16580
- this.onChange(data);
16581
- }
16582
- }
16583
- ActiveUserSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserSwitchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
16584
- ActiveUserSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ActiveUserSwitchComponent, selector: "active-user-switch", usesInheritance: true, ngImport: i0, template: "<mat-slide-toggle\r\n\tclass=\"filter-switch__item\"\r\n\t[checked]=\"isUserSelected\"\r\n\t(change)=\"toggle($event)\"\r\n\t[class.checkedBox]=\"isUserSelected\"\r\n\t[class.unCheckedBox]=\"!isUserSelected\"\r\n>\r\n\t{{ renderOptions?.text || field?.label | translate }}\r\n</mat-slide-toggle>\r\n", styles: [""], components: [{ type: i1$9.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], pipes: { "translate": i1.TranslatePipe } });
16585
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserSwitchComponent, decorators: [{
16586
- type: Component,
16587
- args: [{
16588
- selector: 'active-user-switch',
16589
- templateUrl: './active-user-switch.component.html',
16590
- styleUrls: ['./active-user-switch.component.scss']
16591
- }]
16592
- }] });
16593
-
16594
- class DynamicComponentLoaderService {
16595
- constructor(_factoryResolver) {
16596
- this._factoryResolver = _factoryResolver;
16597
- this._components = new Map();
16598
- this._registerCustomComponent();
16599
- this._registerAggregationsComponents();
16600
- this._registerPredicateComponents();
16601
- }
16602
- registerComponent(key, component) {
16603
- this._components.set(key, component);
16604
- }
16605
- renderComponent(key, vcr) {
16606
- if (!this._components.has(key)) {
16607
- throw 'unknown component ';
16608
- }
16609
- const component = this._components.get(key);
16610
- return this.loadComponent(component, vcr);
16611
- }
16612
- loadComponent(componentAngularType, vcr) {
16613
- const component = this._factoryResolver.resolveComponentFactory(componentAngularType);
16614
- return vcr.createComponent(component);
16615
- }
16616
- //------
16617
- // CUSTOM
16618
- //------
16619
- _registerCustomComponent() {
16620
- this.registerComponent(CUSTOM_FIELD_TYPES.activeUser, ActiveUserSwitchComponent);
16621
- }
16622
- //------
16623
- // AGGREGATION
16624
- //------
16625
- _registerAggregationsComponents() {
16626
- this.registerComponent(AGGREGATION_FIELD_TYPES.autocomplete, AggregationAutocompleteComponent);
16627
- this.registerComponent(AGGREGATION_FIELD_TYPES.dropdown, AggregationSelectComponent);
16628
- this.registerComponent(AGGREGATION_FIELD_TYPES.switch, AggregationSwitchComponent);
16629
- this.registerComponent(AGGREGATION_FIELD_TYPES.radio, AggregationRadioComponent);
16630
- this.registerComponent(AGGREGATION_FIELD_TYPES.dateList, AggregationDateListComponent);
16631
- this.registerComponent(AGGREGATION_FIELD_TYPES.custom, AggregationCustomComponent);
16632
- this.registerComponent(AGGREGATION_FIELD_TYPES.checkbox, AggregationCheckboxComponent);
16633
- }
16634
- //------
16635
- // PREDICATE
16636
- //------
16637
- _registerPredicateComponents() {
16638
- this.registerComponent(PREDICATE_FIELD_TYPES.input, PredicateTextInputComponent);
16639
- this.registerComponent(PREDICATE_FIELD_TYPES.date, PredicateDateInputComponent);
16640
- }
16641
- }
16642
- DynamicComponentLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicComponentLoaderService, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
16643
- DynamicComponentLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicComponentLoaderService });
16644
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicComponentLoaderService, decorators: [{
16645
- type: Injectable
16646
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }]; } });
16647
-
16648
- class FilterQueryService {
16649
- constructor() {
16650
- this.keyToShortMap = new Map();
16651
- this.shortToKeyMap = new Map();
16652
- this.defaultShortKeys = {
16653
- value: 'v',
16654
- operator: 'o',
16655
- min: 'n',
16656
- max: 'x',
16657
- prefix: 'p'
16658
- };
16659
- this.initializeDefaultKeys();
16660
- }
16661
- registerKeys(keys) {
16662
- Object.entries(keys).forEach(([key, value]) => this.registerKey(key, value));
16663
- }
16664
- registerKey(longKey, shortKey) {
16665
- this.keyToShortMap.set(longKey, shortKey);
16666
- this.shortToKeyMap.set(shortKey, longKey);
16667
- }
16668
- /**
16669
- * Encodes a query object into a URL-safe string by transforming its keys
16670
- * and converting it to a JSON string.
16671
- *
16672
- * @param {Record<string, any>} query - The query object to encode.
16673
- *
16674
- * @example
16675
- * // Example query object
16676
- * const query = {
16677
- * // Predicate field (payload sent)
16678
- * 'locRef:boxCode': {
16679
- * value: '1',
16680
- * operator: 'LIKE',
16681
- * },
16682
- *
16683
- * // Aggregation field (query parameter)
16684
- * 'locRef:boxCode': [1]
16685
- * };
16686
- *
16687
- * const encodedQuery = encodeQuery(query);
16688
- * console.log(encodedQuery); // Encoded string representation
16689
- *
16690
- * @returns {string} - The URL-encoded JSON string representation of the query object.
16691
- */
16692
- encodeQuery(query) {
16693
- const transformed = this.transformObject(query, this.keyToShortMap, false);
16694
- return encodeURIComponent(JSON.stringify(transformed));
16695
- }
16696
- /**
16697
- * Decodes a URL-encoded query string back into its original object form.
16698
- *
16699
- * @param {string} encodedQuery - The URL-encoded JSON string representation of a query.
16700
- *
16701
- * @example
16702
- * const encodedQuery = "%7B%22locRef%3AboxCode%22%3A%7B%22value%22%3A%221%22%2C%22operator%22%3A%22LIKE%22%7D%7D";
16703
- * const decodedQuery = decodeQuery(encodedQuery);
16704
- * console.log(decodedQuery);
16705
- * Output:
16706
- * {
16707
- * 'locRef:boxCode': {
16708
- * value: '1',
16709
- * operator: 'LIKE'
16710
- * }
16711
- * }
16712
- *
16713
- * @returns {Record<string, any> | null} - The decoded query object, or `null` if decoding fails.
16714
- */
16715
- decodeQuery(encodedQuery) {
16716
- try {
16717
- const parsedQuery = JSON.parse(decodeURIComponent(encodedQuery));
16718
- return this.transformObject(parsedQuery, this.shortToKeyMap, true);
16719
- }
16720
- catch (error) {
16721
- console.error('Failed to decode query:', error);
16722
- return null;
16723
- }
16724
- }
16725
- initializeDefaultKeys() {
16726
- Object.entries(this.defaultShortKeys).forEach(([longKey, shortKey]) => {
16727
- this.registerKey(longKey, shortKey);
16728
- });
16729
- }
16730
- transformObject(entry, keyMap, isDecode) {
16731
- if (Array.isArray(entry)) {
16732
- return entry.map((item) => this.transformObject(item, keyMap, isDecode));
16733
- }
16734
- if (entry && typeof entry === 'object') {
16735
- if (!isDecode) {
16736
- delete entry[VALUE_OBJECT];
16737
- }
16738
- return Object.keys(entry).reduce((acc, key) => {
16739
- const newKey = keyMap.get(key);
16740
- if (!newKey) {
16741
- throw new Error(`Query key mapping not found for: ${key}`);
16742
- }
16743
- if (isDecode && newKey === 'operator') {
16744
- acc[VALUE_OBJECT] = `${VALUE_OBJECT}`;
16745
- }
16746
- acc[newKey] = this.transformObject(entry[key], keyMap, isDecode);
16747
- return acc;
16748
- }, {});
16749
- }
16750
- return entry;
16751
- }
16752
- }
16753
- FilterQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilterQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
16754
- FilterQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilterQueryService, providedIn: 'root' });
16755
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilterQueryService, decorators: [{
16756
- type: Injectable,
16757
- args: [{
16758
- providedIn: 'root'
16759
- }]
16760
- }], ctorParameters: function () { return []; } });
16761
-
16762
16603
  class FiltersMapperService {
16763
16604
  preparePayload(fields, criteria) {
16764
16605
  return this._preparePayload(fields, criteria);
@@ -16922,7 +16763,10 @@ class AggregationBaseSelectionComponent extends BaseAggregationField {
16922
16763
  }
16923
16764
  writeValue(values) {
16924
16765
  if (values) {
16925
- const _values = isFieldValueObject(values) ? values.value : values;
16766
+ const _values = this._getValues(values);
16767
+ if (___default.isEqual(_values, this.internalValue)) {
16768
+ return;
16769
+ }
16926
16770
  const _vals = Array.isArray(_values) ? _values : [_values];
16927
16771
  this.internalValue = _values;
16928
16772
  this.selectionModel.select(..._vals);
@@ -16937,19 +16781,28 @@ class AggregationBaseSelectionComponent extends BaseAggregationField {
16937
16781
  updateValue() {
16938
16782
  this.selectionModel.changed
16939
16783
  .asObservable()
16940
- .pipe(map((data) => data.source.selected), distinctUntilChanged((a, b) => ___default.isEqual(a, b)), takeUntil(this.destroy$))
16784
+ .pipe(map((data) => data.source.selected), distinctUntilChanged((a, b) => ___default.isEqual(a, b)), filter$1((value) => !___default.isEqual(this.internalValue, value)), takeUntil(this.destroy$))
16941
16785
  .subscribe((value) => {
16942
16786
  this.emitValue(value);
16943
16787
  });
16944
16788
  }
16945
16789
  emitValue(value) {
16790
+ var _a;
16946
16791
  this.internalValue = value;
16947
16792
  this._isFieldDirty = !!(value === null || value === void 0 ? void 0 : value.length);
16948
- this.onChange(this._isValueObject() ? this._prepareValueObject(value) : value);
16793
+ if ((value === null || value === void 0 ? void 0 : value.length) !== 0 && this._isValueObject()) {
16794
+ this.onChange(this._prepareValueObject(value, ((_a = this.fieldConfig) === null || _a === void 0 ? void 0 : _a.operator) || COMPARISON_OPERATOR.in));
16795
+ return;
16796
+ }
16797
+ this.onChange(value);
16949
16798
  }
16950
16799
  sortChange(event) {
16951
16800
  this.sort = Object.assign({}, event);
16952
16801
  }
16802
+ _getValues(values) {
16803
+ var _a;
16804
+ return Array.isArray(values) ? values : ((_a = values) === null || _a === void 0 ? void 0 : _a.value) || [];
16805
+ }
16953
16806
  }
16954
16807
  AggregationBaseSelectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationBaseSelectionComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
16955
16808
  AggregationBaseSelectionComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: AggregationBaseSelectionComponent, usesInheritance: true, ngImport: i0 });
@@ -16957,6 +16810,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
16957
16810
  type: Directive
16958
16811
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
16959
16812
 
16813
+ class BaseCustomValueAccessor extends BaseComponent {
16814
+ constructor(injector) {
16815
+ super(injector);
16816
+ this.injector = injector;
16817
+ this.onChange = () => { };
16818
+ this.onTouched = () => { };
16819
+ this.onValidationChange = () => { };
16820
+ }
16821
+ registerOnChange(fn) {
16822
+ this.onChange = fn;
16823
+ }
16824
+ registerOnTouched(fn) {
16825
+ this.onTouched = fn;
16826
+ }
16827
+ setDisabledState(isDisabled) {
16828
+ this.disabled = isDisabled;
16829
+ this.cdr.markForCheck();
16830
+ }
16831
+ registerOnValidatorChange(fn) {
16832
+ this.onValidationChange = fn;
16833
+ }
16834
+ }
16835
+ BaseCustomValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomValueAccessor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
16836
+ BaseCustomValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomValueAccessor, inputs: { disabled: "disabled" }, usesInheritance: true, ngImport: i0 });
16837
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomValueAccessor, decorators: [{
16838
+ type: Directive,
16839
+ args: [{}]
16840
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { disabled: [{
16841
+ type: Input
16842
+ }] } });
16843
+
16960
16844
  class BasePredicateField extends BaseCustomValueAccessor {
16961
16845
  constructor() {
16962
16846
  super(...arguments);
@@ -16995,6 +16879,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
16995
16879
  type: Input
16996
16880
  }] } });
16997
16881
 
16882
+ class BaseCustomField extends BaseCustomValueAccessor {
16883
+ constructor(injector) {
16884
+ super(injector);
16885
+ this.injector = injector;
16886
+ this._isFieldDirty = false;
16887
+ }
16888
+ get renderOptions() {
16889
+ var _a, _b;
16890
+ return (_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.render) === null || _b === void 0 ? void 0 : _b.options;
16891
+ }
16892
+ validate(control) {
16893
+ return control.valid ? null : control.errors;
16894
+ }
16895
+ _isValueObject() {
16896
+ var _a;
16897
+ return ((_a = this.field) === null || _a === void 0 ? void 0 : _a.valueType) === 'valueObject';
16898
+ }
16899
+ _isSendAsQueryParams() {
16900
+ var _a;
16901
+ return ((_a = this.field) === null || _a === void 0 ? void 0 : _a.sendMode) === FIELD_SEND_MODE.queryParam;
16902
+ }
16903
+ _prepareValueObject(value, operator, prefix) {
16904
+ var _a;
16905
+ if (operator === void 0) { operator = (_a = this.field) === null || _a === void 0 ? void 0 : _a.operator; }
16906
+ return new FieldValueObject({
16907
+ operator: operator,
16908
+ value: value,
16909
+ prefix
16910
+ });
16911
+ }
16912
+ }
16913
+ BaseCustomField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomField, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
16914
+ BaseCustomField.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomField, inputs: { aggregations: "aggregations", field: "field" }, usesInheritance: true, ngImport: i0 });
16915
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomField, decorators: [{
16916
+ type: Directive
16917
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { aggregations: [{
16918
+ type: Input
16919
+ }], field: [{
16920
+ type: Input
16921
+ }] } });
16922
+
16998
16923
  const AUTOCOMPLETE_TEMPLATE = new InjectionToken('AutocompleteTemplateDirective');
16999
16924
  class AutocompleteTemplateDirective {
17000
16925
  constructor(template) {
@@ -17949,7 +17874,7 @@ class PredicateTextInputComponent extends BasePredicateField {
17949
17874
  updateObjectValue() {
17950
17875
  var _a;
17951
17876
  if (this.internalValue.value) {
17952
- const operator = (((_a = this.selectValue) === null || _a === void 0 ? void 0 : _a.value) || COMPARISON_OPERATOR.like);
17877
+ const operator = (((_a = this.selectValue) === null || _a === void 0 ? void 0 : _a.value) || this.field.operator || COMPARISON_OPERATOR.like);
17953
17878
  const data = this._prepareValueObject(this.internalValue.value, operator);
17954
17879
  this.onChange(data);
17955
17880
  return;
@@ -18333,7 +18258,7 @@ class AggregationFieldComponent extends BaseField {
18333
18258
  [AGGREGATION_FIELD_TYPES.switch]: this._prepareField.bind(this),
18334
18259
  [AGGREGATION_FIELD_TYPES.autocomplete]: this._prepareField.bind(this),
18335
18260
  [AGGREGATION_FIELD_TYPES.dateList]: this._prepareField.bind(this),
18336
- [AGGREGATION_FIELD_TYPES.custom]: this._prepareField.bind(this)
18261
+ [AGGREGATION_FIELD_TYPES.custom]: this._prepareField.bind(this),
18337
18262
  };
18338
18263
  }
18339
18264
  ngOnInit() {
@@ -18346,7 +18271,8 @@ class AggregationFieldComponent extends BaseField {
18346
18271
  }
18347
18272
  }
18348
18273
  _prepareField() {
18349
- const instance = this._componentRef.instance;
18274
+ const instance = this._componentRef
18275
+ .instance;
18350
18276
  instance.aggregation = this.aggregation;
18351
18277
  instance.fieldConfig = this.fieldConfig;
18352
18278
  if (this.contentTemplate) {
@@ -18359,13 +18285,13 @@ AggregationFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.
18359
18285
  {
18360
18286
  provide: NG_VALUE_ACCESSOR,
18361
18287
  useExisting: forwardRef(() => AggregationFieldComponent),
18362
- multi: true
18288
+ multi: true,
18363
18289
  },
18364
18290
  {
18365
18291
  provide: NG_VALIDATORS,
18366
18292
  useExisting: forwardRef(() => AggregationFieldComponent),
18367
- multi: true
18368
- }
18293
+ multi: true,
18294
+ },
18369
18295
  ], usesInheritance: true, ngImport: i0, template: '<ng-container #dynamicContainer></ng-container>', isInline: true, styles: [""], encapsulation: i0.ViewEncapsulation.None });
18370
18296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationFieldComponent, decorators: [{
18371
18297
  type: Component,
@@ -18378,29 +18304,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
18378
18304
  {
18379
18305
  provide: NG_VALUE_ACCESSOR,
18380
18306
  useExisting: forwardRef(() => AggregationFieldComponent),
18381
- multi: true
18307
+ multi: true,
18382
18308
  },
18383
18309
  {
18384
18310
  provide: NG_VALIDATORS,
18385
18311
  useExisting: forwardRef(() => AggregationFieldComponent),
18386
- multi: true
18387
- }
18312
+ multi: true,
18313
+ },
18388
18314
  ],
18389
18315
  host: {
18390
- '[class]': "'aggregation-field' + ' aggregation-field__fieldConfig?.render?.type' "
18391
- }
18316
+ '[class]': "'aggregation-field' + ' aggregation-field__fieldConfig?.render?.type' ",
18317
+ },
18392
18318
  }]
18393
18319
  }], propDecorators: { aggregation: [{
18394
18320
  type: Input
18395
18321
  }], contentTemplate: [{
18396
18322
  type: Input
18397
- }] } });
18323
+ }] } });
18324
+ class AggregationFieldModule {
18325
+ }
18326
+ AggregationFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18327
+ AggregationFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationFieldModule, declarations: [AggregationFieldComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule], exports: [AggregationFieldComponent] });
18328
+ AggregationFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationFieldModule, imports: [[CommonModule, FormsModule, ReactiveFormsModule]] });
18329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationFieldModule, decorators: [{
18330
+ type: NgModule,
18331
+ args: [{
18332
+ declarations: [AggregationFieldComponent],
18333
+ exports: [AggregationFieldComponent],
18334
+ imports: [CommonModule, FormsModule, ReactiveFormsModule],
18335
+ }]
18336
+ }] });
18398
18337
 
18399
18338
  class CustomFieldComponent extends BaseField {
18400
18339
  constructor() {
18401
18340
  super(...arguments);
18402
18341
  this.handlers = {
18403
- activeUser: this._prepareField.bind(this)
18342
+ activeUser: this._prepareField.bind(this),
18343
+ aggregationGroup: this._prepareField.bind(this)
18404
18344
  };
18405
18345
  }
18406
18346
  ngOnInit() {
@@ -18896,12 +18836,14 @@ class FiltersPanelComponent extends BaseFiltersPanel {
18896
18836
  }
18897
18837
  for (const field of this.fields) {
18898
18838
  const key = field.config.fieldKey;
18899
- this.formGroup.addControl(key, new FormControl(field.config.values));
18839
+ if (!this.formGroup.contains(key)) {
18840
+ this.formGroup.addControl(key, new FormControl(field.config.values));
18841
+ }
18900
18842
  }
18901
18843
  }
18902
18844
  _handleFormGroupChanges() {
18903
18845
  this.formGroup.valueChanges
18904
- .pipe(debounceTime(300), map((data) => removeEmptyKeys(data)), distinctUntilChanged((a, b) => ___default.isEqual(a || {}, b || {})), takeUntil(this.destroy$))
18846
+ .pipe(debounceTime(300), map((data) => removeEmptyKeys(data)), distinctUntilChanged((a, b) => ___default.isEqual(a, b)), takeUntil(this.destroy$))
18905
18847
  .subscribe((res) => {
18906
18848
  this.filterChanged.emit(res);
18907
18849
  });
@@ -18939,6 +18881,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
18939
18881
  type: Output
18940
18882
  }] } });
18941
18883
 
18884
+ class ActiveUserService extends BaseService {
18885
+ getCurrentUser() {
18886
+ return this.user;
18887
+ }
18888
+ }
18889
+ ActiveUserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
18890
+ ActiveUserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserService, providedIn: 'root' });
18891
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserService, decorators: [{
18892
+ type: Injectable,
18893
+ args: [{
18894
+ providedIn: 'root'
18895
+ }]
18896
+ }] });
18897
+
18898
+ class ActiveUserSwitchComponent extends BaseCustomField {
18899
+ constructor() {
18900
+ super(...arguments);
18901
+ this._userService = this.injector.get(ActiveUserService);
18902
+ this.isUserSelected = false;
18903
+ }
18904
+ writeValue(value) {
18905
+ if (value) {
18906
+ const val = isFieldValueObject(value) ? value.value : value;
18907
+ this.isUserSelected = val === this.getValue();
18908
+ }
18909
+ }
18910
+ toggle({ checked }) {
18911
+ this.isUserSelected = checked;
18912
+ if (!checked) {
18913
+ this.onChange(null);
18914
+ return;
18915
+ }
18916
+ if (this.field.valueType === 'property') {
18917
+ this.onChange(this.getValue());
18918
+ return;
18919
+ }
18920
+ this.updateObjectValue();
18921
+ }
18922
+ getValue() {
18923
+ var _a;
18924
+ return ___default.get(this._userService.getCurrentUser(), ((_a = this.renderOptions) === null || _a === void 0 ? void 0 : _a.bindValue) || 'properties.username');
18925
+ }
18926
+ updateObjectValue() {
18927
+ var _a;
18928
+ const operator = ((_a = this.field) === null || _a === void 0 ? void 0 : _a.operator) || COMPARISON_OPERATOR.equals;
18929
+ const data = this._prepareValueObject(this.getValue(), operator);
18930
+ this.onChange(data);
18931
+ }
18932
+ }
18933
+ ActiveUserSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserSwitchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
18934
+ ActiveUserSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ActiveUserSwitchComponent, selector: "active-user-switch", usesInheritance: true, ngImport: i0, template: "<mat-slide-toggle\r\n\tclass=\"filter-switch__item\"\r\n\t[checked]=\"isUserSelected\"\r\n\t(change)=\"toggle($event)\"\r\n\t[class.checkedBox]=\"isUserSelected\"\r\n\t[class.unCheckedBox]=\"!isUserSelected\"\r\n>\r\n\t{{ renderOptions?.text || field?.label | translate }}\r\n</mat-slide-toggle>\r\n", styles: [""], components: [{ type: i1$9.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], pipes: { "translate": i1.TranslatePipe } });
18935
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActiveUserSwitchComponent, decorators: [{
18936
+ type: Component,
18937
+ args: [{
18938
+ selector: 'active-user-switch',
18939
+ templateUrl: './active-user-switch.component.html',
18940
+ styleUrls: ['./active-user-switch.component.scss']
18941
+ }]
18942
+ }] });
18943
+
18944
+ class MapToAggregationConfigPipe {
18945
+ transform(config) {
18946
+ if (!config) {
18947
+ return null;
18948
+ }
18949
+ const aggregationConfig = Object.assign(Object.assign({}, config), { valueType: 'property', sendMode: 'queryParam' });
18950
+ return aggregationConfig;
18951
+ }
18952
+ }
18953
+ MapToAggregationConfigPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapToAggregationConfigPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
18954
+ MapToAggregationConfigPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapToAggregationConfigPipe, name: "mapToAggregationConfig" });
18955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MapToAggregationConfigPipe, decorators: [{
18956
+ type: Pipe,
18957
+ args: [{
18958
+ name: 'mapToAggregationConfig'
18959
+ }]
18960
+ }] });
18961
+
18962
+ class AggregationGroupComponent extends BaseCustomField {
18963
+ constructor() {
18964
+ super(...arguments);
18965
+ this.formItems = new FormArray([]);
18966
+ this.formGroup = new FormGroup({
18967
+ items: this.formItems
18968
+ });
18969
+ this.internalValue = [];
18970
+ this.fieldTypes = FIELD_TYPE;
18971
+ }
18972
+ get options() {
18973
+ var _a, _b;
18974
+ return (_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.render) === null || _b === void 0 ? void 0 : _b.options;
18975
+ }
18976
+ trackByFieldKey(_, field) {
18977
+ return field === null || field === void 0 ? void 0 : field.fieldKey;
18978
+ }
18979
+ writeValue(value) {
18980
+ if (value) {
18981
+ const _values = this._getValues(value);
18982
+ if (___default.isEqual(_values, this.internalValue)) {
18983
+ return;
18984
+ }
18985
+ this.internalValue = _values;
18986
+ this.formItems.clear();
18987
+ this._prepareFormFields(this.internalValue);
18988
+ }
18989
+ }
18990
+ ngOnInit() {
18991
+ this._prepareFormFields(this.internalValue);
18992
+ this._listenToChanges();
18993
+ }
18994
+ _listenToChanges() {
18995
+ this.formGroup.valueChanges
18996
+ .pipe(distinctUntilChanged((a, b) => ___default.isEqual(a, b)), map(({ items }) => items.reduce((acc, curr) => acc.concat(curr), []).filter(Boolean)), filter$1((value) => !___default.isEqual(this.internalValue, value)), takeUntil(this.destroy$))
18997
+ .subscribe((value) => {
18998
+ this.emitValue(value);
18999
+ });
19000
+ }
19001
+ _prepareFormFields(values = []) {
19002
+ var _a;
19003
+ const items = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.aggregations) || [];
19004
+ if (!!items.length) {
19005
+ this.formItems.clear();
19006
+ items.forEach((item) => {
19007
+ this.formItems.push(new FormControl(values));
19008
+ });
19009
+ }
19010
+ }
19011
+ emitValue(value) {
19012
+ var _a;
19013
+ this.internalValue = value;
19014
+ if ((value === null || value === void 0 ? void 0 : value.length) !== 0 && this._isValueObject()) {
19015
+ this.onChange(this._prepareValueObject(value, ((_a = this.field) === null || _a === void 0 ? void 0 : _a.operator) || COMPARISON_OPERATOR.in));
19016
+ return;
19017
+ }
19018
+ this.onChange(value);
19019
+ }
19020
+ _getValues(values) {
19021
+ var _a;
19022
+ return Array.isArray(values) ? values : ((_a = values) === null || _a === void 0 ? void 0 : _a.value) || [];
19023
+ }
19024
+ }
19025
+ AggregationGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
19026
+ AggregationGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: AggregationGroupComponent, selector: "app-aggregation-group", usesInheritance: true, ngImport: i0, template: "<div [formGroup]=\"formGroup\" *ngIf=\"options?.aggregations && aggregations\">\r\n\t<div formArrayName=\"items\">\r\n\t\t<ng-container *ngFor=\"let fieldConfig of options?.aggregations; trackBy: trackByFieldKey; let i = index\">\r\n\t\t\t<ng-container *permission=\"{ name: fieldConfig?.permission }\">\r\n\t\t\t\t<app-aggregation-field\r\n\t\t\t\t\t*ngIf=\"fieldConfig?.condition | checkCondition: aggregations : currentLang\"\r\n\t\t\t\t\t[aggregation]=\"aggregations[fieldConfig.aggregation]\"\r\n\t\t\t\t\t[fieldConfig]=\"fieldConfig | mapToAggregationConfig\"\r\n\t\t\t\t\t[formControlName]=\"i\"\r\n\t\t\t\t></app-aggregation-field>\r\n\t\t\t</ng-container>\r\n\t\t</ng-container>\r\n\t</div>\r\n</div>\r\n", styles: [""], components: [{ type: AggregationFieldComponent, selector: "app-aggregation-field", inputs: ["aggregation", "contentTemplate"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2$4.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: PermissionsDirective, selector: "[permission]", inputs: ["permission"] }, { type: i2$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$4.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "mapToAggregationConfig": MapToAggregationConfigPipe, "checkCondition": CheckConditionPipe } });
19027
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AggregationGroupComponent, decorators: [{
19028
+ type: Component,
19029
+ args: [{
19030
+ selector: 'app-aggregation-group',
19031
+ templateUrl: './aggregation-group.component.html',
19032
+ styleUrls: ['./aggregation-group.component.scss']
19033
+ }]
19034
+ }] });
19035
+
18942
19036
  class NdfDatepickerModule {
18943
19037
  }
18944
19038
  NdfDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -18991,7 +19085,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
18991
19085
  }]
18992
19086
  }] });
18993
19087
 
18994
- const CONTAINERS$1 = [FiltersPanelComponent, PredicateFieldComponent, AggregationFieldComponent, CustomFieldComponent];
19088
+ const CONTAINERS$1 = [
19089
+ FiltersPanelComponent,
19090
+ PredicateFieldComponent,
19091
+ CustomFieldComponent,
19092
+ ];
18995
19093
  const COMPONENTS$4 = [
18996
19094
  AggregationAutocompleteComponent,
18997
19095
  AggregationSelectComponent,
@@ -19001,9 +19099,13 @@ const COMPONENTS$4 = [
19001
19099
  AggregationCustomComponent,
19002
19100
  AggregationDateListComponent,
19003
19101
  PredicateTextInputComponent,
19004
- PredicateDateInputComponent
19102
+ PredicateDateInputComponent,
19103
+ ];
19104
+ const CUSTOM_ELEMENTS = [
19105
+ ActiveUserSwitchComponent,
19106
+ AggregationGroupComponent,
19107
+ MapToAggregationConfigPipe,
19005
19108
  ];
19006
- const CUSTOM_ELEMENTS = [ActiveUserSwitchComponent];
19007
19109
  const PARTS = [
19008
19110
  FilterOptionTextComponent,
19009
19111
  FilterSearchInputComponent,
@@ -19012,7 +19114,7 @@ const PARTS = [
19012
19114
  FilterEmptyMessageComponent,
19013
19115
  FilterDateRangeComponent,
19014
19116
  FilterAutocompleteInputComponent,
19015
- FilterOptionsSortComponent
19117
+ FilterOptionsSortComponent,
19016
19118
  ];
19017
19119
  const EXPORTED_PARTS = [HtmlDialogComponent];
19018
19120
  const DIRECTIVES$3 = [
@@ -19024,7 +19126,7 @@ const DIRECTIVES$3 = [
19024
19126
  CustomTemplateDirective,
19025
19127
  DropdownLabelTemplateDirective,
19026
19128
  DropdownMultiLabelTemplateDirective,
19027
- DateListTemplateDirective
19129
+ DateListTemplateDirective,
19028
19130
  ];
19029
19131
  const PIPES = [
19030
19132
  AutocompleteFilterPipe,
@@ -19036,12 +19138,49 @@ const PIPES = [
19036
19138
  SortListPipe,
19037
19139
  TooltipPipe,
19038
19140
  FiltersByRolesPipe,
19039
- CheckConditionPipe
19141
+ CheckConditionPipe,
19040
19142
  ];
19041
19143
  class NdfFiltersPanelModule {
19144
+ /**
19145
+ *
19146
+ */
19147
+ constructor(loaderService) {
19148
+ this.loaderService = loaderService;
19149
+ this._registerCustomComponent();
19150
+ this._registerAggregationsComponents();
19151
+ this._registerPredicateComponents();
19152
+ }
19153
+ //------
19154
+ // CUSTOM
19155
+ //------
19156
+ _registerCustomComponent() {
19157
+ this.loaderService.registerComponent(CUSTOM_FIELD_TYPES.activeUser, ActiveUserSwitchComponent);
19158
+ this.loaderService.registerComponent(CUSTOM_FIELD_TYPES.aggregationGroup, AggregationGroupComponent);
19159
+ }
19160
+ //------
19161
+ // AGGREGATION
19162
+ //------
19163
+ _registerAggregationsComponents() {
19164
+ this.loaderService.registerComponent(AGGREGATION_FIELD_TYPES.autocomplete, AggregationAutocompleteComponent);
19165
+ this.loaderService.registerComponent(AGGREGATION_FIELD_TYPES.dropdown, AggregationSelectComponent);
19166
+ this.loaderService.registerComponent(AGGREGATION_FIELD_TYPES.switch, AggregationSwitchComponent);
19167
+ this.loaderService.registerComponent(AGGREGATION_FIELD_TYPES.radio, AggregationRadioComponent);
19168
+ this.loaderService.registerComponent(AGGREGATION_FIELD_TYPES.dateList, AggregationDateListComponent);
19169
+ this.loaderService.registerComponent(AGGREGATION_FIELD_TYPES.custom, AggregationCustomComponent);
19170
+ this.loaderService.registerComponent(AGGREGATION_FIELD_TYPES.checkbox, AggregationCheckboxComponent);
19171
+ }
19172
+ //------
19173
+ // PREDICATE
19174
+ //------
19175
+ _registerPredicateComponents() {
19176
+ this.loaderService.registerComponent(PREDICATE_FIELD_TYPES.input, PredicateTextInputComponent);
19177
+ this.loaderService.registerComponent(PREDICATE_FIELD_TYPES.date, PredicateDateInputComponent);
19178
+ }
19042
19179
  }
19043
- NdfFiltersPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfFiltersPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
19044
- NdfFiltersPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfFiltersPanelModule, declarations: [FiltersPanelComponent, PredicateFieldComponent, AggregationFieldComponent, CustomFieldComponent, AggregationAutocompleteComponent,
19180
+ NdfFiltersPanelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfFiltersPanelModule, deps: [{ token: DynamicComponentLoaderService }], target: i0.ɵɵFactoryTarget.NgModule });
19181
+ NdfFiltersPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfFiltersPanelModule, declarations: [FiltersPanelComponent,
19182
+ PredicateFieldComponent,
19183
+ CustomFieldComponent, AggregationAutocompleteComponent,
19045
19184
  AggregationSelectComponent,
19046
19185
  AggregationCheckboxComponent,
19047
19186
  AggregationSwitchComponent,
@@ -19049,7 +19188,9 @@ NdfFiltersPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
19049
19188
  AggregationCustomComponent,
19050
19189
  AggregationDateListComponent,
19051
19190
  PredicateTextInputComponent,
19052
- PredicateDateInputComponent, ActiveUserSwitchComponent, CheckboxTemplateDirective,
19191
+ PredicateDateInputComponent, ActiveUserSwitchComponent,
19192
+ AggregationGroupComponent,
19193
+ MapToAggregationConfigPipe, CheckboxTemplateDirective,
19053
19194
  RadioTemplateDirective,
19054
19195
  SwitchTemplateDirective,
19055
19196
  DropdownTemplateDirective,
@@ -19092,7 +19233,10 @@ NdfFiltersPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
19092
19233
  DynamicFormModule,
19093
19234
  NuxeoDialogModule,
19094
19235
  DirectiveModule,
19095
- NdfDatepickerModule, i5$4.NgxMaskModule], exports: [FiltersPanelComponent, PredicateFieldComponent, AggregationFieldComponent, CustomFieldComponent, AggregationAutocompleteComponent,
19236
+ NdfDatepickerModule,
19237
+ AggregationFieldModule, i5$4.NgxMaskModule], exports: [FiltersPanelComponent,
19238
+ PredicateFieldComponent,
19239
+ CustomFieldComponent, AggregationAutocompleteComponent,
19096
19240
  AggregationSelectComponent,
19097
19241
  AggregationCheckboxComponent,
19098
19242
  AggregationSwitchComponent,
@@ -19100,7 +19244,9 @@ NdfFiltersPanelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", v
19100
19244
  AggregationCustomComponent,
19101
19245
  AggregationDateListComponent,
19102
19246
  PredicateTextInputComponent,
19103
- PredicateDateInputComponent, ActiveUserSwitchComponent, CheckboxTemplateDirective,
19247
+ PredicateDateInputComponent, ActiveUserSwitchComponent,
19248
+ AggregationGroupComponent,
19249
+ MapToAggregationConfigPipe, CheckboxTemplateDirective,
19104
19250
  RadioTemplateDirective,
19105
19251
  SwitchTemplateDirective,
19106
19252
  DropdownTemplateDirective,
@@ -19130,15 +19276,30 @@ NdfFiltersPanelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", v
19130
19276
  NuxeoDialogModule,
19131
19277
  DirectiveModule,
19132
19278
  NdfDatepickerModule,
19279
+ AggregationFieldModule,
19133
19280
  NgxMaskModule.forRoot({
19134
- validation: true
19135
- })
19281
+ validation: true,
19282
+ }),
19136
19283
  ]] });
19137
19284
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfFiltersPanelModule, decorators: [{
19138
19285
  type: NgModule,
19139
19286
  args: [{
19140
- declarations: [CONTAINERS$1, COMPONENTS$4, CUSTOM_ELEMENTS, DIRECTIVES$3, PIPES, PARTS, EXPORTED_PARTS],
19141
- exports: [CONTAINERS$1, COMPONENTS$4, CUSTOM_ELEMENTS, DIRECTIVES$3, EXPORTED_PARTS],
19287
+ declarations: [
19288
+ CONTAINERS$1,
19289
+ COMPONENTS$4,
19290
+ CUSTOM_ELEMENTS,
19291
+ DIRECTIVES$3,
19292
+ PIPES,
19293
+ PARTS,
19294
+ EXPORTED_PARTS,
19295
+ ],
19296
+ exports: [
19297
+ CONTAINERS$1,
19298
+ COMPONENTS$4,
19299
+ CUSTOM_ELEMENTS,
19300
+ DIRECTIVES$3,
19301
+ EXPORTED_PARTS,
19302
+ ],
19142
19303
  imports: [
19143
19304
  CommonModule,
19144
19305
  FormsModule,
@@ -19160,13 +19321,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
19160
19321
  NuxeoDialogModule,
19161
19322
  DirectiveModule,
19162
19323
  NdfDatepickerModule,
19324
+ AggregationFieldModule,
19163
19325
  NgxMaskModule.forRoot({
19164
- validation: true
19165
- })
19326
+ validation: true,
19327
+ }),
19166
19328
  ],
19167
- providers: [DynamicComponentLoaderService, AggregationFieldService]
19329
+ providers: [DynamicComponentLoaderService, AggregationFieldService],
19168
19330
  }]
19169
- }] });
19331
+ }], ctorParameters: function () { return [{ type: DynamicComponentLoaderService }]; } });
19170
19332
 
19171
19333
  class TextSearchComponent extends DestroySubject {
19172
19334
  constructor() {
@@ -19537,7 +19699,7 @@ class SkeletonComponent {
19537
19699
  }
19538
19700
  }
19539
19701
  SkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19540
- SkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SkeletonComponent, selector: "app-skeleton", inputs: { styleClass: "styleClass", style: "style", shape: "shape", animation: "animation", radius: "radius", size: "size", width: "width", height: "height", randomWidth: "randomWidth" }, ngImport: i0, template: `<div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="containerStyle()"></div>`, isInline: true, styles: [".skeleton-circle{--skeleton-radius: 50%}.skeleton-none{--skeleton-animation: none}.skeleton-opacity{--skeleton-animation: skeleton-opacity 1.2s infinite;--skeleton-bg: linear-gradient( 0deg, rgba(150, 153, 158, 0) 40%, rgba(150, 153, 158, .6) 100% );--skeleton-transform: none}.skeleton{position:relative;overflow:hidden;background-color:var(--skeleton-bg, #e9ecef);border-radius:var(--skeleton-radius, 3px)}.skeleton:after{content:\"\";animation:var(--skeleton-animation, skeleton-animation 1.2s infinite);height:100%;left:0;position:absolute;right:0;top:0;transform:var(--skeleton-transform, translateX(-100%));z-index:1;background:var(--skeleton-bg, linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, .5), rgba(255, 255, 255, 0)))}@keyframes skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes skeleton-opacity{0%{opacity:.12}to{opacity:.02}}\n"], directives: [{ type: i4$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
19702
+ SkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SkeletonComponent, selector: "app-skeleton", inputs: { styleClass: "styleClass", style: "style", shape: "shape", animation: "animation", radius: "radius", size: "size", width: "width", height: "height", randomWidth: "randomWidth" }, ngImport: i0, template: `<div [ngClass]="containerClass()" [class]="styleClass" [ngStyle]="containerStyle()"></div>`, isInline: true, styles: [".skeleton-circle{--skeleton-radius: 50%}.skeleton-none{--skeleton-animation: none}.skeleton-opacity{--skeleton-animation: skeleton-opacity 1.2s infinite;--skeleton-opacity-bg: linear-gradient( 0deg, rgba(150, 153, 158, 0) 40%, rgba(150, 153, 158, .6) 100% );--skeleton-transform: none}.skeleton{position:relative;overflow:hidden;background-color:var(--skeleton-bg);border-radius:var(--skeleton-radius, 3px)}.skeleton:after{content:\"\";animation:var(--skeleton-animation, skeleton-animation 1.2s infinite);height:100%;left:0;position:absolute;right:0;top:0;transform:var(--skeleton-transform, translateX(-100%));z-index:1;background:var(--skeleton-animation-bg, linear-gradient(90deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, .5), rgba(255, 255, 255, 0)))}@keyframes skeleton-animation{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes skeleton-opacity{0%{opacity:.12}to{opacity:.02}}\n"], directives: [{ type: i4$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
19541
19703
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SkeletonComponent, decorators: [{
19542
19704
  type: Component,
19543
19705
  args: [{
@@ -41200,6 +41362,12 @@ class BaseChart extends DestroySubject {
41200
41362
  get config() {
41201
41363
  return this._config;
41202
41364
  }
41365
+ set criteria(value) {
41366
+ this._criteria = ___default.cloneDeep(value);
41367
+ }
41368
+ get criteria() {
41369
+ return this._criteria;
41370
+ }
41203
41371
  _subscribeToLanguage() {
41204
41372
  this._translateService.onLangChange
41205
41373
  .pipe(distinctUntilChanged((pre, next) => pre.lang == next.lang), filter$1(() => this._isInitialized), takeUntil(this.destroy$))
@@ -41209,18 +41377,92 @@ class BaseChart extends DestroySubject {
41209
41377
  }
41210
41378
  }
41211
41379
  BaseChart.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseChart, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
41212
- BaseChart.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseChart, inputs: { data: "data", config: "config" }, outputs: { onReady: "onReady" }, usesInheritance: true, ngImport: i0 });
41380
+ BaseChart.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseChart, inputs: { data: "data", config: "config", criteria: "criteria" }, outputs: { onReady: "onReady" }, usesInheritance: true, ngImport: i0 });
41213
41381
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseChart, decorators: [{
41214
41382
  type: Directive
41215
41383
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { data: [{
41216
41384
  type: Input
41217
41385
  }], config: [{
41218
41386
  type: Input
41387
+ }], criteria: [{
41388
+ type: Input
41219
41389
  }], onReady: [{
41220
41390
  type: Output
41221
41391
  }] } });
41222
41392
 
41393
+ class ReportsDataTransformers {
41394
+ constructor() {
41395
+ this._transformations = new Map();
41396
+ }
41397
+ register(arg1, arg2) {
41398
+ if (typeof arg1 === 'object') {
41399
+ Object.entries(arg1).forEach(([key, fn]) => this._transformations.set(key, fn));
41400
+ return;
41401
+ }
41402
+ if (typeof arg1 === 'string' && arg2) {
41403
+ this._transformations.set(arg1, arg2);
41404
+ }
41405
+ }
41406
+ /**
41407
+ * Retrieves a transformer function by its key.
41408
+ *
41409
+ * @param {string} key - The key of the transformer function.
41410
+ * @returns {ReportDataTransformer | undefined} - The transformer function or undefined if not found.
41411
+ */
41412
+ get(key) {
41413
+ return this._transformations.get(key);
41414
+ }
41415
+ /**
41416
+ * Retrieves all registered transformer functions.
41417
+ *
41418
+ * @returns {Map<string, ReportDataTransformer>} - A map of all transformer functions.
41419
+ */
41420
+ getAll() {
41421
+ return this._transformations;
41422
+ }
41423
+ /**
41424
+ * Clears all registered transformer functions.
41425
+ */
41426
+ clear() {
41427
+ this._transformations.clear();
41428
+ }
41429
+ /**
41430
+ * Checks if a transformer function is registered for a specific key.
41431
+ *
41432
+ * @param {string} key - The key to check.
41433
+ * @returns {boolean} - True if the key exists, false otherwise.
41434
+ */
41435
+ has(key) {
41436
+ return this._transformations.has(key);
41437
+ }
41438
+ /**
41439
+ * Removes a transformer function by its key.
41440
+ *
41441
+ * @param {string} key - The key of the transformer function to remove.
41442
+ */
41443
+ remove(key) {
41444
+ this._transformations.delete(key);
41445
+ }
41446
+ transform(key, data) {
41447
+ const fn = this.get(key);
41448
+ if (!fn) {
41449
+ throw new Error(`No transformer registered for key: ${key}`);
41450
+ }
41451
+ return fn(data);
41452
+ }
41453
+ }
41454
+ ReportsDataTransformers.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsDataTransformers, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
41455
+ ReportsDataTransformers.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsDataTransformers, providedIn: 'root' });
41456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ReportsDataTransformers, decorators: [{
41457
+ type: Injectable,
41458
+ args: [{ providedIn: 'root' }]
41459
+ }] });
41460
+
41223
41461
  class NdfReportsService extends BaseService {
41462
+ constructor(injector, _reportsDataTransformers) {
41463
+ super(injector);
41464
+ this._reportsDataTransformers = _reportsDataTransformers;
41465
+ }
41224
41466
  getData(request, criteria = {}) {
41225
41467
  return (request === null || request === void 0 ? void 0 : request.customUrl) ? this._customQuery(request, criteria) : this._query(request, criteria);
41226
41468
  }
@@ -41230,7 +41472,7 @@ class NdfReportsService extends BaseService {
41230
41472
  pageProvider: request.pageProvider,
41231
41473
  headers: request === null || request === void 0 ? void 0 : request.headers,
41232
41474
  params: params
41233
- });
41475
+ }).pipe(switchMap((response) => !!(request === null || request === void 0 ? void 0 : request.transformer) ? this._reportsDataTransformers.transform(request === null || request === void 0 ? void 0 : request.transformer, response) : of(response)));
41234
41476
  }
41235
41477
  _customQuery(request, criteria) {
41236
41478
  var _a;
@@ -41241,7 +41483,7 @@ class NdfReportsService extends BaseService {
41241
41483
  headers: request === null || request === void 0 ? void 0 : request.headers,
41242
41484
  queryParams: params,
41243
41485
  payload: payload
41244
- });
41486
+ }).pipe(switchMap((response) => !!(request === null || request === void 0 ? void 0 : request.transformer) ? this._reportsDataTransformers.transform(request === null || request === void 0 ? void 0 : request.transformer, response) : of(response)));
41245
41487
  }
41246
41488
  _prepareRequest(request, criteria) {
41247
41489
  const params = Object.assign(Object.assign({ pageSize: 1 }, ((request === null || request === void 0 ? void 0 : request.params) || {})), ((criteria === null || criteria === void 0 ? void 0 : criteria.params) || {}));
@@ -41256,14 +41498,14 @@ class NdfReportsService extends BaseService {
41256
41498
  };
41257
41499
  }
41258
41500
  }
41259
- NdfReportsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
41501
+ NdfReportsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsService, deps: [{ token: i0.Injector }, { token: ReportsDataTransformers }], target: i0.ɵɵFactoryTarget.Injectable });
41260
41502
  NdfReportsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsService, providedIn: 'root' });
41261
41503
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsService, decorators: [{
41262
41504
  type: Injectable,
41263
41505
  args: [{
41264
41506
  providedIn: 'root'
41265
41507
  }]
41266
- }] });
41508
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: ReportsDataTransformers }]; } });
41267
41509
 
41268
41510
  class ChartManagerService {
41269
41511
  constructor(_translateService, _document) {
@@ -41483,36 +41725,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
41483
41725
  class DynamicTimelineReportService {
41484
41726
  constructor(_ndfReportsService) {
41485
41727
  this._ndfReportsService = _ndfReportsService;
41486
- this._rebuildTriggerSub = new BehaviorSubject(false);
41487
- this.rebuild$ = this._rebuildTriggerSub.asObservable();
41488
41728
  this._isInitialized = false;
41489
41729
  this.isLoadingResult = false;
41490
- this._selectedGroupSub = new ReplaySubject();
41730
+ this._selectedGroupSub = new BehaviorSubject(null);
41491
41731
  this.selectedGroup$ = this._selectedGroupSub.asObservable();
41492
- }
41493
- updateSelectedGroup(selected) {
41494
- if (!this._selectedGroup) {
41495
- this._selectedGroup = selected || 'week';
41496
- }
41497
- this._selectedGroupSub.next(this._selectedGroup);
41732
+ this._rebuildTriggerSub = new BehaviorSubject(false);
41733
+ this.rebuild$ = this._rebuildTriggerSub.asObservable();
41498
41734
  }
41499
41735
  changeGroup(group) {
41500
- this._selectedGroup = group;
41501
- this._rebuildTriggerSub.next(true);
41736
+ this._selectedGroupSub.next(group);
41737
+ this.rebuild();
41502
41738
  }
41503
41739
  rebuild() {
41504
41740
  this._rebuildTriggerSub.next(true);
41505
41741
  }
41506
41742
  prepareData() {
41507
- return pipe(switchMap(([config, criteria]) => {
41743
+ return pipe(tap(([config, criteria]) => {
41508
41744
  var _a;
41745
+ if (!this._selectedGroupSub.getValue()) {
41746
+ this._selectedGroupSub.next(((_a = config === null || config === void 0 ? void 0 : config.group) === null || _a === void 0 ? void 0 : _a.selected) || 'week');
41747
+ }
41748
+ this.payload = ___default.merge(this.prepareSelectedGroups(config), criteria || {});
41749
+ }), switchMap(([config, criteria]) => {
41750
+ var _a, _b, _c;
41509
41751
  const request = config === null || config === void 0 ? void 0 : config.request;
41510
41752
  if (!request) {
41511
41753
  return of(null);
41512
41754
  }
41513
- this.updateSelectedGroup((_a = config === null || config === void 0 ? void 0 : config.group) === null || _a === void 0 ? void 0 : _a.selected);
41514
- this.payload = ___default.merge(criteria || {}, this._prepareSelectedGroups(config));
41515
- const data$ = this._ndfReportsService.getData(request, this.payload).pipe(catchError((error) => {
41755
+ let _payload = this.payload;
41756
+ if (((_a = request === null || request === void 0 ? void 0 : request.actions) === null || _a === void 0 ? void 0 : _a.beforeSubmit) && typeof ((_b = request === null || request === void 0 ? void 0 : request.actions) === null || _b === void 0 ? void 0 : _b.beforeSubmit) === 'string') {
41757
+ try {
41758
+ _payload = Evaluator.evaluate((_c = request === null || request === void 0 ? void 0 : request.actions) === null || _c === void 0 ? void 0 : _c.beforeSubmit, { config, criteria: this.payload }, 'payload');
41759
+ }
41760
+ catch (e) {
41761
+ console.error(e);
41762
+ _payload = this.payload;
41763
+ }
41764
+ }
41765
+ const data$ = this._ndfReportsService.getData(request, _payload).pipe(catchError((error) => {
41516
41766
  console.error(error);
41517
41767
  return of(null);
41518
41768
  }), finalize(() => {
@@ -41524,14 +41774,11 @@ class DynamicTimelineReportService {
41524
41774
  });
41525
41775
  }));
41526
41776
  }
41527
- _prepareSelectedGroups(config) {
41528
- const data = config.datasource.map((source) => {
41529
- var _a;
41530
- return ({
41531
- name: source.aggregation,
41532
- interval: this._selectedGroup || ((_a = config === null || config === void 0 ? void 0 : config.group) === null || _a === void 0 ? void 0 : _a.selected) || 'week'
41533
- });
41534
- });
41777
+ prepareSelectedGroups(config) {
41778
+ const data = config.datasource.map((source) => ({
41779
+ name: source.aggregation,
41780
+ interval: this._selectedGroupSub.getValue()
41781
+ }));
41535
41782
  return {
41536
41783
  payload: {
41537
41784
  aggregationNames: data
@@ -41540,10 +41787,9 @@ class DynamicTimelineReportService {
41540
41787
  }
41541
41788
  }
41542
41789
  DynamicTimelineReportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTimelineReportService, deps: [{ token: NdfReportsService }], target: i0.ɵɵFactoryTarget.Injectable });
41543
- DynamicTimelineReportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTimelineReportService, providedIn: 'root' });
41790
+ DynamicTimelineReportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTimelineReportService });
41544
41791
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTimelineReportService, decorators: [{
41545
- type: Injectable,
41546
- args: [{ providedIn: 'root' }]
41792
+ type: Injectable
41547
41793
  }], ctorParameters: function () { return [{ type: NdfReportsService }]; } });
41548
41794
 
41549
41795
  class ReportsStateService {
@@ -41676,7 +41922,7 @@ class DigitChartService {
41676
41922
  constructor(_dataTransformers) {
41677
41923
  this._dataTransformers = _dataTransformers;
41678
41924
  }
41679
- prepareChart(response, config) {
41925
+ prepareChart(response, config, filterCriteria) {
41680
41926
  if (!config.datasource) {
41681
41927
  console.warn('No datasource provided for chart configuration');
41682
41928
  return of(null);
@@ -41685,7 +41931,7 @@ class DigitChartService {
41685
41931
  const rawData = ___default.get(response, sourceConfig.propertyPath);
41686
41932
  if (this._dataTransformers.hasDigitsTransformer(sourceConfig === null || sourceConfig === void 0 ? void 0 : sourceConfig.transformer)) {
41687
41933
  const adapter = this._dataTransformers.getDigitsTransformer(sourceConfig === null || sourceConfig === void 0 ? void 0 : sourceConfig.transformer);
41688
- return adapter(rawData, response);
41934
+ return adapter(rawData, response, filterCriteria);
41689
41935
  }
41690
41936
  if (___default.isObject(rawData)) {
41691
41937
  return ___default.get(rawData, sourceConfig === null || sourceConfig === void 0 ? void 0 : sourceConfig.bindValue, rawData);
@@ -41714,7 +41960,7 @@ class BaseChartBuilderService {
41714
41960
  this._dataTransformers = _dataTransformers;
41715
41961
  this._translatePrefix = '';
41716
41962
  }
41717
- prepareChart(response, config) {
41963
+ prepareChart(response, config, filterCriteria) {
41718
41964
  var _a;
41719
41965
  this._translatePrefix = (_a = config === null || config === void 0 ? void 0 : config.prefix) !== null && _a !== void 0 ? _a : '';
41720
41966
  if (!config.datasource) {
@@ -41725,7 +41971,7 @@ class BaseChartBuilderService {
41725
41971
  });
41726
41972
  }
41727
41973
  return of(config.datasource).pipe(switchMap((sources) => {
41728
- const observables$ = sources.map((src) => this._prepareDataSource(src, response));
41974
+ const observables$ = sources.map((src) => this._prepareDataSource(src, response, filterCriteria));
41729
41975
  return forkJoin(observables$).pipe(map((results) => {
41730
41976
  return {
41731
41977
  data: this._prepareChartData(results, config),
@@ -41740,12 +41986,12 @@ class BaseChartBuilderService {
41740
41986
  }));
41741
41987
  }));
41742
41988
  }
41743
- _prepareDataSource(sourceConfig, response) {
41989
+ _prepareDataSource(sourceConfig, response, filterCriteria) {
41744
41990
  const buckets = ___default.get(response, sourceConfig.propertyPath) || [];
41745
41991
  return of(buckets).pipe(map((rawData) => {
41746
41992
  if (this._dataTransformers.hasGraphTransformer(sourceConfig === null || sourceConfig === void 0 ? void 0 : sourceConfig.transformer)) {
41747
41993
  const transformer = this._dataTransformers.getGraphTransformer(sourceConfig === null || sourceConfig === void 0 ? void 0 : sourceConfig.transformer);
41748
- const adaptedData = transformer(rawData, response);
41994
+ const adaptedData = transformer(rawData, response, filterCriteria, this._translateService.currentLang);
41749
41995
  if (adaptedData) {
41750
41996
  return adaptedData.map((row) => (Object.assign(Object.assign({}, row), { key: this._getLabel(row, sourceConfig) })));
41751
41997
  }
@@ -42136,7 +42382,7 @@ class DigitChartComponent extends BaseChart {
42136
42382
  this._dataSub.asObservable(),
42137
42383
  this._configSub.asObservable(),
42138
42384
  this._rebuildTriggerSub.asObservable()
42139
- ]).pipe(switchMap(([response, config]) => this._digitService.prepareChart(response, config)), finalize(() => {
42385
+ ]).pipe(switchMap(([response, config]) => this._digitService.prepareChart(response, config, this.criteria)), finalize(() => {
42140
42386
  this._isInitialized = true;
42141
42387
  }));
42142
42388
  }
@@ -42190,7 +42436,7 @@ class GraphChartComponent extends BaseChart {
42190
42436
  this._configSub.asObservable(),
42191
42437
  this._rebuildTriggerSub.asObservable()
42192
42438
  ]).pipe(switchMap(([response, config]) => {
42193
- return this._graphService.prepareChart(response, config);
42439
+ return this._graphService.prepareChart(response, config, this.criteria);
42194
42440
  }), tap((data) => {
42195
42441
  this._isInitialized = true;
42196
42442
  }));
@@ -42609,8 +42855,12 @@ class TimelineDialogComponent {
42609
42855
  this.dialogRef = dialogRef;
42610
42856
  this.chart = chart;
42611
42857
  this._timelineService = _timelineService;
42858
+ this._rebuildTriggerSub = new BehaviorSubject(false);
42612
42859
  this.selectedGroup$ = this._timelineService.selectedGroup$;
42613
42860
  this.report$ = combineLatest([of(this.chart.config), of(this.chart.criteria), this._timelineService.rebuild$]).pipe(this._timelineService.prepareData());
42861
+ this.filterCriteria$ = this._timelineService.selectedGroup$.pipe(map((group) => {
42862
+ return ___default.cloneDeep(___default.merge(this.chart.criteria || {}, this._timelineService.prepareSelectedGroups(this.chart.config)));
42863
+ }));
42614
42864
  }
42615
42865
  changeGroup(group) {
42616
42866
  this._timelineService.changeGroup(group);
@@ -42622,13 +42872,14 @@ class TimelineDialogComponent {
42622
42872
  }
42623
42873
  }
42624
42874
  TimelineDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineDialogComponent, deps: [{ token: i1$3.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: DynamicTimelineReportService }], target: i0.ɵɵFactoryTarget.Component });
42625
- TimelineDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TimelineDialogComponent, selector: "app-timeline-dialog", viewQueries: [{ propertyName: "graphChartComponent", first: true, predicate: ["graphChart"], descendants: true }], ngImport: i0, template: "<ndf-nuxeo-dialog dialogTitle=\"{{ chart?.title | translate }}\" *ngIf=\"report$ | async as report\">\r\n\t<ng-template #contentTemplate>\r\n\t\t<app-graph-chart\r\n\t\t\t#graphChart\r\n\t\t\t*ngIf=\"report.data\"\r\n\t\t\tclass=\"ndf-report__content ndf-report__content graph-chart\"\r\n\t\t\t[config]=\"report.config\"\r\n\t\t\t[data]=\"report.data\"\r\n\t\t></app-graph-chart>\r\n\t</ng-template>\r\n\t<ng-template #footerTemplate>\r\n\t\t<div class=\"flex gap-x-4\">\r\n\t\t\t<div class=\"chart-actions flex items-center rounded-lg gap-2 p-1\">\r\n\t\t\t\t<button\r\n\t\t\t\t\tclass=\"print-button chart-actions__item rounded\"\r\n\t\t\t\t\t(click)=\"printChart()\"\r\n\t\t\t\t\t[matTooltip]=\"'REPORTS.print' | translate\"\r\n\t\t\t\t\t*ngIf=\"chart.config?.print\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<mat-icon>print</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t\t<time-group-selector\r\n\t\t\t\t*ngIf=\"report.config?.group?.active ?? true\"\r\n\t\t\t\t[group]=\"selectedGroup$ | async\"\r\n\t\t\t\t(groupChange)=\"changeGroup($event)\"\r\n\t\t\t></time-group-selector>\r\n\t\t</div>\r\n\t</ng-template>\r\n</ndf-nuxeo-dialog>\r\n", styles: [":host{--graph-chart-height: 100%;--app-chart-height: 100%;--dialog-body-max-height: 100%}\n"], components: [{ type: NdfNuxeoDialog, selector: "ndf-nuxeo-dialog", inputs: ["dialogTitle", "subTitle", "panelClass", "loaderMode"] }, { type: GraphChartComponent, selector: "app-graph-chart" }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: TimeGroupSelectorComponent, selector: "time-group-selector", inputs: ["direction", "group"], outputs: ["groupChange"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "translate": i1.TranslatePipe, "async": i4$1.AsyncPipe } });
42875
+ TimelineDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TimelineDialogComponent, selector: "app-timeline-dialog", providers: [DynamicTimelineReportService], viewQueries: [{ propertyName: "graphChartComponent", first: true, predicate: ["graphChart"], descendants: true }], ngImport: i0, template: "<ndf-nuxeo-dialog dialogTitle=\"{{ chart?.title | translate }}\" *ngIf=\"report$ | async as report\">\r\n\t<ng-template #contentTemplate>\r\n\t\t<app-graph-chart\r\n\t\t\t#graphChart\r\n\t\t\tclass=\"ndf-report__content ndf-report__content timeline-chart\"\r\n\t\t\t[config]=\"report.config\"\r\n\t\t\t[criteria]=\"filterCriteria$ | async\"\r\n\t\t\t[data]=\"report.data\"\r\n\t\t></app-graph-chart>\r\n\t</ng-template>\r\n\t<ng-template #footerTemplate>\r\n\t\t<div class=\"flex gap-x-4\">\r\n\t\t\t<div class=\"chart-actions flex items-center rounded-lg gap-2 p-1\">\r\n\t\t\t\t<button\r\n\t\t\t\t\tclass=\"print-button chart-actions__item rounded\"\r\n\t\t\t\t\t(click)=\"printChart()\"\r\n\t\t\t\t\t[matTooltip]=\"'REPORTS.print' | translate\"\r\n\t\t\t\t\t*ngIf=\"chart.config?.print\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<mat-icon>print</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\r\n\t\t\t<time-group-selector\r\n\t\t\t\t*ngIf=\"report.config?.group?.active ?? true\"\r\n\t\t\t\t[group]=\"selectedGroup$ | async\"\r\n\t\t\t\t(groupChange)=\"changeGroup($event)\"\r\n\t\t\t></time-group-selector>\r\n\t\t</div>\r\n\t</ng-template>\r\n</ndf-nuxeo-dialog>\r\n", styles: [":host{--graph-chart-height: 100%;--app-chart-height: 100%;--dialog-body-max-height: 100%}\n"], components: [{ type: NdfNuxeoDialog, selector: "ndf-nuxeo-dialog", inputs: ["dialogTitle", "subTitle", "panelClass", "loaderMode"] }, { type: GraphChartComponent, selector: "app-graph-chart" }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: TimeGroupSelectorComponent, selector: "time-group-selector", inputs: ["direction", "group"], outputs: ["groupChange"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "translate": i1.TranslatePipe, "async": i4$1.AsyncPipe } });
42626
42876
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimelineDialogComponent, decorators: [{
42627
42877
  type: Component,
42628
42878
  args: [{
42629
42879
  selector: 'app-timeline-dialog',
42630
42880
  templateUrl: './timeline-dialog.component.html',
42631
- styleUrls: ['./timeline-dialog.component.scss']
42881
+ styleUrls: ['./timeline-dialog.component.scss'],
42882
+ providers: [DynamicTimelineReportService]
42632
42883
  }]
42633
42884
  }], ctorParameters: function () { return [{ type: i1$3.MatDialogRef }, { type: undefined, decorators: [{
42634
42885
  type: Inject,
@@ -42721,12 +42972,12 @@ class DynamicTimelineReportComponent extends BaseGraphReport {
42721
42972
  super(injector);
42722
42973
  this.injector = injector;
42723
42974
  this._timelineService = this.injector.get(DynamicTimelineReportService);
42724
- this.report$ = combineLatest([
42725
- this.config$,
42726
- this.criteria$.pipe(distinctUntilChanged((a, b) => ___default.isEqual(a, b))),
42727
- this._timelineService.rebuild$
42728
- ]).pipe(this._timelineService.prepareData());
42975
+ this._criteria$ = this.criteria$.pipe(distinctUntilChanged((a, b) => ___default.isEqual(a, b)));
42729
42976
  this.selectedGroup$ = this._timelineService.selectedGroup$;
42977
+ this.filterCriteria$ = combineLatest([this._criteria$, this._timelineService.selectedGroup$]).pipe(map(([criteria]) => {
42978
+ return ___default.cloneDeep(___default.merge(criteria || {}, this._timelineService.prepareSelectedGroups(this.config)));
42979
+ }));
42980
+ this.report$ = combineLatest([this.config$, this._criteria$, this._timelineService.rebuild$]).pipe(this._timelineService.prepareData());
42730
42981
  this._subscribeToLanguage();
42731
42982
  }
42732
42983
  _subscribeToLanguage() {
@@ -42756,7 +43007,7 @@ class DynamicTimelineReportComponent extends BaseGraphReport {
42756
43007
  }
42757
43008
  }
42758
43009
  DynamicTimelineReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTimelineReportComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
42759
- DynamicTimelineReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicTimelineReportComponent, selector: "app-dynamic-timeline-report", host: { classAttribute: "timeline-report flex flex-col flex-grow" }, providers: [DynamicTimelineReportService], viewQueries: [{ propertyName: "graphChartComponent", first: true, predicate: ["graphChart"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<chart-panel *ngIf=\"report$ | async as report; else noData\" class=\"ndf-report\">\r\n\t<chart-panel-header class=\"ndf-report__header mb-3\">\r\n\t\t<span>\r\n\t\t\t{{ config.label | translate }}\r\n\t\t</span>\r\n\r\n\t\t<button\r\n\t\t\t*ngIf=\"config?.dialog?.active\"\r\n\t\t\tclass=\"dialog-button\"\r\n\t\t\t(click)=\"openTimelineDialog()\"\r\n\t\t\t[matTooltip]=\"'REPORTS.fullscreen' | translate\"\r\n\t\t>\r\n\t\t\t<mat-icon>fullscreen</mat-icon>\r\n\t\t</button>\r\n\t</chart-panel-header>\r\n\r\n\t<app-graph-chart\r\n\r\n\t\t#graphChart\r\n\t\tclass=\"ndf-report__content ndf-report__content timeline-chart\"\r\n\t\t[config]=\"report.config\"\r\n\t\t[data]=\"report.data\"\r\n\t></app-graph-chart>\r\n\r\n\t<chart-panel-footer class=\"ndf-report__footer\">\r\n\t\t<div class=\"chart-actions flex items-center rounded-lg gap-2 flex-wrap p-1\">\r\n\t\t\t<button\r\n\t\t\t\tclass=\"print-button chart-actions__item\"\r\n\t\t\t\t(click)=\"printChart()\"\r\n\t\t\t\t[matTooltip]=\"'REPORTS.print' | translate\"\r\n\t\t\t\t*ngIf=\"config?.print\"\r\n\t\t\t>\r\n\t\t\t\t<mat-icon>print</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t<button\r\n\t\t\t\tclass=\"navigate-button chart-actions__item\"\r\n\t\t\t\t(click)=\"navigate()\"\r\n\t\t\t\t*ngIf=\"config?.navigate?.enabled\"\r\n\t\t\t\t[matTooltip]=\"'REPORTS.enabled' | translate\"\r\n\t\t\t>\r\n\t\t\t\t<mat-icon>send</mat-icon>\r\n\t\t\t</button>\r\n\r\n\t\t\t<button\r\n\t\t\t\tclass=\"navigate-button chart-actions__item\"\r\n\t\t\t\t(click)=\"openDetails()\"\r\n\t\t\t\t*ngIf=\"config?.details?.enabled\"\r\n\t\t\t\t[matTooltip]=\"'REPORTS.details' | translate\"\r\n\t\t\t>\r\n\t\t\t\t<mat-icon>info</mat-icon>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<time-group-selector\r\n\t\t\t*ngIf=\"config?.group?.active ?? true\"\r\n\t\t\t[group]=\"selectedGroup$ | async\"\r\n\t\t\t(groupChange)=\"changeGroup($event)\"\r\n\t\t></time-group-selector>\r\n\t</chart-panel-footer>\r\n</chart-panel>\r\n\r\n<ng-template #noData>\r\n\t<chart-panel class=\"ndf-report\">\r\n\t\t<chart-panel-header class=\"ndf-report__header mb-3\">\r\n\t\t\t{{ config.label | translate }}\r\n\t\t</chart-panel-header>\r\n\t\t<app-skeleton\r\n\t\t\tanimation=\"opacity\"\r\n\t\t\tclass=\"ndf-report__content ndf-report__content timeline-chart\"\r\n\t\t\theight=\"220px\"\r\n\t\t></app-skeleton>\r\n\t</chart-panel>\r\n</ng-template>\r\n", styles: [".ndf-report{display:flex;flex-direction:column;min-width:0;max-width:100%;flex-grow:1}.ndf-report__content{position:relative;padding-block:.5rem;flex-grow:1;min-width:0;max-width:100%}.chart-actions{border:var(--chart-actions-border, 1px solid var(--border-color))}.chart-actions__item{background:var(--chart-actions-background, transparent);color:var(--chart-actions-color, currentColor);box-shadow:var(--chart-actions-shadow, unset);width:var(--chart-actions-width, 35px);height:var(--chart-actions-height, 35px);border-radius:var(--chart-actions-border-radius, 4px);flex-grow:1;display:grid;place-items:center}.chart-actions__item .mat-icon{color:var(--main-color, currentColor)}.chart-actions__item:hover{--chart-actions-shadow: var(--chart-actions-hover-shadow, 0 0 0 1px var(--main-color))}.chart-actions__item.selected{--chart-actions-background: var(--chart-actions-active-background, var(--main-color));--chart-actions-color: var(--chart-actions-active-color, var(--main-hover))}.chart-actions__item.selected .mat-icon{color:currentColor!important}:host{min-width:0;max-width:100%}.timeline-chart{display:var(--ndf-report-display, flex);flex-direction:var(--ndf-report-direction, column);justify-content:var(--ndf-report-justify-content, center);align-items:var(--ndf-report-align-items, center)}\n"], components: [{ type: ChartPanel, selector: "chart-panel" }, { type: ChartPanelHeaderComponent, selector: "chart-panel-header" }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GraphChartComponent, selector: "app-graph-chart" }, { type: ChartPanelFooterComponent, selector: "chart-panel-footer" }, { type: TimeGroupSelectorComponent, selector: "time-group-selector", inputs: ["direction", "group"], outputs: ["groupChange"] }, { type: SkeletonComponent, selector: "app-skeleton", inputs: ["styleClass", "style", "shape", "animation", "radius", "size", "width", "height", "randomWidth"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
43010
+ DynamicTimelineReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DynamicTimelineReportComponent, selector: "app-dynamic-timeline-report", host: { classAttribute: "timeline-report flex flex-col flex-grow" }, providers: [DynamicTimelineReportService], viewQueries: [{ propertyName: "graphChartComponent", first: true, predicate: ["graphChart"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<chart-panel *ngIf=\"report$ | async as report; else noData\" class=\"ndf-report\">\r\n\t<chart-panel-header class=\"ndf-report__header mb-3\">\r\n\t\t<span>\r\n\t\t\t{{ config.label | translate }}\r\n\t\t</span>\r\n\r\n\t\t<button\r\n\t\t\t*ngIf=\"config?.dialog?.active\"\r\n\t\t\tclass=\"dialog-button\"\r\n\t\t\t(click)=\"openTimelineDialog()\"\r\n\t\t\t[matTooltip]=\"'REPORTS.fullscreen' | translate\"\r\n\t\t>\r\n\t\t\t<mat-icon>fullscreen</mat-icon>\r\n\t\t</button>\r\n\t</chart-panel-header>\r\n\r\n\t<app-graph-chart\r\n\t\t#graphChart\r\n\t\tclass=\"ndf-report__content ndf-report__content timeline-chart\"\r\n\t\t[config]=\"report.config\"\r\n\t\t[criteria]=\"filterCriteria$ | async\"\r\n\t\t[data]=\"report.data\"\r\n\t></app-graph-chart>\r\n\r\n\t<chart-panel-footer class=\"ndf-report__footer\">\r\n\t\t<div class=\"chart-actions flex items-center rounded-lg gap-2 flex-wrap p-1\">\r\n\t\t\t<button\r\n\t\t\t\tclass=\"print-button chart-actions__item\"\r\n\t\t\t\t(click)=\"printChart()\"\r\n\t\t\t\t[matTooltip]=\"'REPORTS.print' | translate\"\r\n\t\t\t\t*ngIf=\"config?.print\"\r\n\t\t\t>\r\n\t\t\t\t<mat-icon>print</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t<button\r\n\t\t\t\tclass=\"navigate-button chart-actions__item\"\r\n\t\t\t\t(click)=\"navigate()\"\r\n\t\t\t\t*ngIf=\"config?.navigate?.enabled\"\r\n\t\t\t\t[matTooltip]=\"'REPORTS.enabled' | translate\"\r\n\t\t\t>\r\n\t\t\t\t<mat-icon>send</mat-icon>\r\n\t\t\t</button>\r\n\r\n\t\t\t<button\r\n\t\t\t\tclass=\"navigate-button chart-actions__item\"\r\n\t\t\t\t(click)=\"openDetails()\"\r\n\t\t\t\t*ngIf=\"config?.details?.enabled\"\r\n\t\t\t\t[matTooltip]=\"'REPORTS.details' | translate\"\r\n\t\t\t>\r\n\t\t\t\t<mat-icon>info</mat-icon>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t\t<time-group-selector\r\n\t\t\t*ngIf=\"config?.group?.active ?? true\"\r\n\t\t\t[group]=\"selectedGroup$ | async\"\r\n\t\t\t(groupChange)=\"changeGroup($event)\"\r\n\t\t></time-group-selector>\r\n\t</chart-panel-footer>\r\n</chart-panel>\r\n\r\n<ng-template #noData>\r\n\t<chart-panel class=\"ndf-report\">\r\n\t\t<chart-panel-header class=\"ndf-report__header mb-3\">\r\n\t\t\t{{ config.label | translate }}\r\n\t\t</chart-panel-header>\r\n\t\t<app-skeleton\r\n\t\t\tanimation=\"opacity\"\r\n\t\t\tclass=\"ndf-report__content ndf-report__content timeline-chart\"\r\n\t\t\theight=\"220px\"\r\n\t\t></app-skeleton>\r\n\t</chart-panel>\r\n</ng-template>\r\n", styles: [".ndf-report{display:flex;flex-direction:column;min-width:0;max-width:100%;flex-grow:1}.ndf-report__content{position:relative;padding-block:.5rem;flex-grow:1;min-width:0;max-width:100%}.chart-actions{border:var(--chart-actions-border, 1px solid var(--border-color))}.chart-actions__item{background:var(--chart-actions-background, transparent);color:var(--chart-actions-color, currentColor);box-shadow:var(--chart-actions-shadow, unset);width:var(--chart-actions-width, 35px);height:var(--chart-actions-height, 35px);border-radius:var(--chart-actions-border-radius, 4px);flex-grow:1;display:grid;place-items:center}.chart-actions__item .mat-icon{color:var(--main-color, currentColor)}.chart-actions__item:hover{--chart-actions-shadow: var(--chart-actions-hover-shadow, 0 0 0 1px var(--main-color))}.chart-actions__item.selected{--chart-actions-background: var(--chart-actions-active-background, var(--main-color));--chart-actions-color: var(--chart-actions-active-color, var(--main-hover))}.chart-actions__item.selected .mat-icon{color:currentColor!important}:host{min-width:0;max-width:100%}.timeline-chart{display:var(--ndf-report-display, flex);flex-direction:var(--ndf-report-direction, column);justify-content:var(--ndf-report-justify-content, center);align-items:var(--ndf-report-align-items, center)}\n"], components: [{ type: ChartPanel, selector: "chart-panel" }, { type: ChartPanelHeaderComponent, selector: "chart-panel-header" }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: GraphChartComponent, selector: "app-graph-chart" }, { type: ChartPanelFooterComponent, selector: "chart-panel-footer" }, { type: TimeGroupSelectorComponent, selector: "time-group-selector", inputs: ["direction", "group"], outputs: ["groupChange"] }, { type: SkeletonComponent, selector: "app-skeleton", inputs: ["styleClass", "style", "shape", "animation", "radius", "size", "width", "height", "randomWidth"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltipPosition", "matTooltipDisabled", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
42760
43011
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicTimelineReportComponent, decorators: [{
42761
43012
  type: Component,
42762
43013
  args: [{
@@ -42782,8 +43033,8 @@ function mapToNdfTableConfig(report, details) {
42782
43033
  url: `/api/v1${_request === null || _request === void 0 ? void 0 : _request.customUrl.url}`,
42783
43034
  method: _request === null || _request === void 0 ? void 0 : _request.customUrl.method
42784
43035
  }, ((_b = _detailsConfig === null || _detailsConfig === void 0 ? void 0 : _detailsConfig.request) === null || _b === void 0 ? void 0 : _b.customUrl) || {});
42785
- const _headers = _request.headers || ((_c = _detailsConfig.request) === null || _c === void 0 ? void 0 : _c.headers) || {};
42786
- const _queryParam = _request.params || ((_d = _detailsConfig.request) === null || _d === void 0 ? void 0 : _d.params) || {};
43036
+ const _headers = ((_c = _detailsConfig.request) === null || _c === void 0 ? void 0 : _c.headers) || _request.headers || {};
43037
+ const _queryParam = ((_d = _detailsConfig.request) === null || _d === void 0 ? void 0 : _d.params) || _request.params || {};
42787
43038
  const _sortingBy = ___default.merge({
42788
43039
  sortBy: 'dc:modified',
42789
43040
  sortOrder: 'desc'
@@ -42920,6 +43171,7 @@ class NdfReportsComponent extends DestroySubject {
42920
43171
  this.jsonEditorEnabled = false;
42921
43172
  this.editorType = NDF_EDITOR_TYPE.REPORTS;
42922
43173
  this.navigateRoute = [];
43174
+ this._isConfigChanged = false;
42923
43175
  this.onQueryChange = new EventEmitter();
42924
43176
  this.trackByFn = (_, report) => {
42925
43177
  return report.id;
@@ -42942,7 +43194,9 @@ class NdfReportsComponent extends DestroySubject {
42942
43194
  var _a;
42943
43195
  return (_a = this.config) === null || _a === void 0 ? void 0 : _a.reports;
42944
43196
  }
42945
- set config(value) {
43197
+ set config(config) {
43198
+ const value = ___default.cloneDeep(config);
43199
+ this._checkConfigChange(value);
42946
43200
  this._configSubject.next(value);
42947
43201
  if (value === null || value === void 0 ? void 0 : value.activeQuery) {
42948
43202
  this._updateActiveQuery(value === null || value === void 0 ? void 0 : value.activeQuery);
@@ -43052,6 +43306,7 @@ class NdfReportsComponent extends DestroySubject {
43052
43306
  }));
43053
43307
  return forkJoin([of(config), data$]);
43054
43308
  }), map(([config, response]) => {
43309
+ this._prepareAggregations(response === null || response === void 0 ? void 0 : response.aggregations);
43055
43310
  return {
43056
43311
  config,
43057
43312
  response
@@ -43081,9 +43336,25 @@ class NdfReportsComponent extends DestroySubject {
43081
43336
  emitEvent: false
43082
43337
  });
43083
43338
  }
43339
+ _prepareAggregations(aggregations) {
43340
+ var _a;
43341
+ if (this._isConfigChanged && this.aggregations) {
43342
+ this.aggregations = null;
43343
+ }
43344
+ if (this.aggregations && ((_a = this.config.filters) === null || _a === void 0 ? void 0 : _a.reloadStrategy) === 'never') {
43345
+ return;
43346
+ }
43347
+ this.aggregations = aggregations;
43348
+ this._isConfigChanged = false;
43349
+ }
43350
+ _checkConfigChange(value) {
43351
+ const { activeQuery } = value, config = __rest(value, ["activeQuery"]);
43352
+ const _a = this._configSubject.getValue() || {}, { activeQuery: aq } = _a, currentConfig = __rest(_a, ["activeQuery"]);
43353
+ this._isConfigChanged = !___default.isEqual(currentConfig, config);
43354
+ }
43084
43355
  }
43085
43356
  NdfReportsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, deps: [{ token: i1.TranslateService }, { token: FiltersMapperService }, { token: NdfReportsService }, { token: ChartManagerService }, { token: ReportTransformService }, { token: i0.ChangeDetectorRef }, { token: FilterQueryService }, { token: ReportsStateService }, { token: i1$5.Router }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
43086
- NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n\t*ngIf=\"reportsData$ | async as reports\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tclass=\"ndf-reports__container\"\r\n\tndfFluidHeight\r\n>\r\n\t<div class=\"ndf-reports__panel\" *ngIf=\"!!filtersConfig?.fields?.length\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig?.fields\"\r\n\t\t\t[aggregations]=\"reports?.response?.aggregations\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\tclass=\"ndf-reports__filters\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\r\n\t<div class=\"ndf-reports__content p-4 pt-0\" (scrolled)=\"onContentScroll($event)\">\r\n\t\t<div class=\"ndf-reports__header flex pt-4\">\r\n\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t<app-editor-button\r\n\t\t\t\t*ngIf=\"jsonEditorEnabled && reportsKey\"\r\n\t\t\t\t[key]=\"reportsKey\"\r\n\t\t\t\t[type]=\"editorType\"\r\n\t\t\t></app-editor-button>\r\n\t\t</div>\r\n\t\t<mat-spinner *ngIf=\"isLoadingResult\" class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n\r\n\t\t<div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n\t\t\t<app-ndf-report\r\n\t\t\t\t*ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n\t\t\t\t[config]=\"config\"\r\n\t\t\t\t[data]=\"reports?.response\"\r\n\t\t\t\t[criteria]=\"filtersParams$ | async\"\r\n\t\t\t\t[class.col-small]=\"config?.layout?.width === 'small'\"\r\n\t\t\t\t[class.col-medium]=\"config?.layout?.width === 'medium'\"\r\n\t\t\t\t[class.col-half]=\"config?.layout?.width === 'half'\"\r\n\t\t\t\t[class.col-wide]=\"config?.layout?.width === 'wide'\"\r\n\t\t\t\t[class.col-extra-wide]=\"config?.layout?.width === 'extra'\"\r\n\t\t\t\t[class.col-full]=\"config?.layout?.width === 'full'\"\r\n\t\t\t\t[direction]=\"direction\"\r\n\t\t\t\tclass=\"reports-grid__item {{ config?.layout?.styleClass }}\"\r\n\t\t\t\t(onNavigate)=\"onNavigate($event)\"\r\n\t\t\t\t(onOpen)=\"openReportDetails($event, config)\"\r\n\t\t\t></app-ndf-report>\r\n\t\t</div>\r\n\t</div>\r\n\t<div\r\n\t\tclass=\"ndf-reports__details\"\r\n\t\t[class.opened]=\"showDetails\"\r\n\t\t[@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n\t\t(@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n\t>\r\n\t\t<app-ndf-table\r\n\t\t\t*ngIf=\"reportDetails$ | async as report\"\r\n\t\t\t[config]=\"report.config\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\t[customCriteria]=\"filtersParams$ | async\"\r\n\t\t>\r\n\t\t\t<ng-template searchTableTemplate>\r\n\t\t\t\t<div class=\"ndf-reports__details__header flex gap-2\">\r\n\t\t\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button mat-stroked-button class=\"close-button\" (click)=\"closeDetailsPanel()\">\r\n\t\t\t\t\t\t<mat-icon> close</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h3>\r\n\t\t\t\t\t{{ report.label | translate }}\r\n\t\t\t\t</h3>\r\n\t\t\t</ng-template>\r\n\t\t</app-ndf-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:hidden;display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc(var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-margin: var(--panel-width)}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-margin, 0);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 6;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}@media screen{.reports-grid__item{grid-column:var(--col-span, span var(--grid-column, 2));grid-row:span var(--row-span, 1);grid-template-rows:subgrid}}.reports-grid__item.col-small{--col-span: var(--col-small-span, span 1)}.reports-grid__item.col-medium{--col-span: var(--col-medium-span, span 2)}.reports-grid__item.col-half{--col-span: var(--col-half-span, span 3)}.reports-grid__item.col-wide{--col-span: var(--col-wide-span, span 4)}.reports-grid__item.col-extra-wide{--col-span: var(--col-extra-wide-span, span 5)}.reports-grid__item.col-full{--col-span: 1 / -1}@media screen and (max-width: 1200px){.reports-grid{--col-span: span 1;--col-half-span: var(--col-span);--col-medium-span: var(--col-span);--col-small-span: var(--col-span);--col-extra-wide-span: 1 / -1;--col-wide-span: 1 / -1;--reports-grid-gap: 1rem;--grid-columns: 2}}@media screen and (max-width: 776px){.reports-grid{--col-half-span: var(--col-span);--col-medium-span: var(--col-span);--col-small-span: var(--col-span);--col-span: 1 / -1;--reports-grid-gap: 1rem;--grid-columns: 1}}@media print{.reports-grid{--reports-grid-gap: 11mm;--reports-grid-margin-top: 11mm;--rg-columns: repeat(2, 1fr)}}\n"], components: [{ type: FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i1$c.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i3$1.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i4.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
43357
+ NdfReportsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NdfReportsComponent, selector: "app-ndf-reports", inputs: { jsonEditorEnabled: "jsonEditorEnabled", reportsKey: "reportsKey", navigateRoute: "navigateRoute", config: "config" }, outputs: { onQueryChange: "onQueryChange" }, host: { properties: { "dir": "direction" }, classAttribute: "ndf-reports" }, viewQueries: [{ propertyName: "fluidDirective", first: true, predicate: FluidHeightDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n\t*ngIf=\"reportsData$ | async as reports\"\r\n\t[class.panel-opened]=\"isPanelOpened && filtersConfig\"\r\n\t[dir]=\"direction\"\r\n\tclass=\"ndf-reports__container\"\r\n\tndfFluidHeight\r\n>\r\n\t<div class=\"ndf-reports__panel\" *ngIf=\"!!filtersConfig?.fields?.length\">\r\n\t\t<app-filters-panel\r\n\t\t\t[fields]=\"filtersConfig?.fields\"\r\n\t\t\t[aggregations]=\"aggregations\"\r\n\t\t\t(filterChanged)=\"filterChanged($event)\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\tclass=\"ndf-reports__filters\"\r\n\t\t></app-filters-panel>\r\n\t</div>\r\n\r\n\t<div class=\"ndf-reports__content p-4 pt-0\" (scrolled)=\"onContentScroll($event)\">\r\n\t\t<div class=\"ndf-reports__header flex pt-4\">\r\n\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t<app-editor-button\r\n\t\t\t\t*ngIf=\"jsonEditorEnabled && reportsKey\"\r\n\t\t\t\t[key]=\"reportsKey\"\r\n\t\t\t\t[type]=\"editorType\"\r\n\t\t\t></app-editor-button>\r\n\t\t</div>\r\n\t\t<mat-spinner *ngIf=\"isLoadingResult\" class=\"mt-5 mx-auto\" [diameter]=\"48\"></mat-spinner>\r\n\r\n\t\t<div class=\"reports-grid\" *ngIf=\"!isLoadingResult\">\r\n\t\t\t<app-ndf-report\r\n\t\t\t\t*ngFor=\"let config of reportConfig.items; trackBy: trackByFn\"\r\n\t\t\t\t[config]=\"config\"\r\n\t\t\t\t[data]=\"reports?.response\"\r\n\t\t\t\t[criteria]=\"filtersParams$ | async\"\r\n\t\t\t\t[direction]=\"direction\"\r\n\t\t\t\t[style.--col-start]=\"config.layout?.startColumn || 'auto'\"\r\n\r\n [class.wide]=\"config.layout?.width >= 6\"\r\n [attr.data-width]=\"config.layout?.width || 4\"\r\n\t\t\t\tclass=\"reports-grid__item {{ config?.layout?.styleClass }} \"\r\n\t\t\t\t(onNavigate)=\"onNavigate($event)\"\r\n\t\t\t\t(onOpen)=\"openReportDetails($event, config)\"\r\n\t\t\t></app-ndf-report>\r\n\t\t</div>\r\n\t</div>\r\n\t<div\r\n\t\tclass=\"ndf-reports__details\"\r\n\t\t[class.opened]=\"showDetails\"\r\n\t\t[@slideInOut]=\"showDetails ? 'open' : 'closed'\"\r\n\t\t(@slideInOut.done)=\"onDetailsAnimationEnd($event)\"\r\n\t>\r\n\t\t<app-ndf-table\r\n\t\t\t*ngIf=\"reportDetails$ | async as report\"\r\n\t\t\t[config]=\"report.config\"\r\n\t\t\t[activeQuery]=\"activeFiltersQuery$ | async\"\r\n\t\t\t[customCriteria]=\"filtersParams$ | async\"\r\n\t\t>\r\n\t\t\t<ng-template searchTableTemplate>\r\n\t\t\t\t<div class=\"ndf-reports__details__header flex gap-2\">\r\n\t\t\t\t\t<button mat-stroked-button class=\"toggle-button\" (click)=\"togglePanel()\">\r\n\t\t\t\t\t\t<mat-icon> filter_alt</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button mat-stroked-button class=\"close-button\" (click)=\"closeDetailsPanel()\">\r\n\t\t\t\t\t\t<mat-icon> close</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t\t<h3>\r\n\t\t\t\t\t{{ report.label | translate }}\r\n\t\t\t\t</h3>\r\n\t\t\t</ng-template>\r\n\t\t</app-ndf-table>\r\n\t</div>\r\n</div>\r\n", styles: [":host{padding-inline:var(--ndf-reports-inline-padding, 0);padding-block:var(--ndf-reports-block-padding, .5rem 0);height:100%;position:relative;display:flex;flex-direction:column;background-color:var(--ndf-reports-background, #fff);box-sizing:border-box;max-width:100%;flex:0 0 100%}:host:before,:host:after{box-sizing:border-box}:host[dir=ltr]{--ndf-reports-panel-translateX: -100%;--ndf-reports-details-translateX: 100%}.ndf-reports__header{background-color:var(--ndf-reports-background, #fff);flex-direction:var(--ndf-reports-header-direction, row);justify-content:var(--ndf-reports-header-justify, space-between);align-items:var(--ndf-reports-header-items, center);padding-inline:var(--ndf-reports-header-padding-inline, .5rem);padding-block:var(--ndf-reports-header-padding-block, 0 .5rem);position:var(--ndf-reports-header-position, sticky);top:0;z-index:1}.ndf-reports__header__actions{justify-content:var(--ndf-reports-actions-justify, flex-end)}.ndf-reports__header__custom-actions .toggle-button{min-width:0;padding:0 10px}.ndf-reports__container{--panel-width: var(--ndf-reports-panel-width, 18rem);position:relative;overflow:hidden;display:grid;transition:all .2s;max-width:100%;width:100%;height:var(--ndf-reports-height, calc(var(--ndf-fluid-height) - calc(var(--ndf-reports-block-padding, 1rem) * 2.5)));flex-grow:1;grid-gap:var(--ndf-table-container-gap, .5rem);gap:var(--ndf-table-container-gap, .5rem)}.ndf-reports__container.panel-opened{--ndf-details-margin: var(--panel-width);--ndf-reports-panel-translateX: 0;--ndf-reports-content-margin: var(--panel-width)}.ndf-reports__panel,.ndf-reports__content .ndf-reports__details{overflow:auto;transition:all .2s}.ndf-reports__panel{position:absolute;width:var(--panel-width);height:100%;transform:translate(var(--ndf-reports-panel-translateX, 100%));padding-inline:var(--ndf-reports-panel-inline-padding, .5rem);padding-block:var(--ndf-reports-panel-block-padding, .5rem);background:var(--ndf-reports-panel-background, #fff);z-index:1}.ndf-reports__content{flex-grow:1;padding-inline-start:var(--ndf-reports-content-margin, 0);overflow-y:var(--ndf-reports-content-overflow-y, auto);position:relative}.ndf-reports__details{position:absolute;inset-inline-end:0;width:calc(100% - var(--ndf-details-margin, 0px));height:100%;transform:translate(var(--ndf-reports-details-translateX, -100%));padding-inline:var(--ndf-reports-details-inline-padding, 0rem);flex-grow:1;padding-block:var(--ndf-reports-details-block-padding, 0rem);background:var(--ndf-reports-details-background, #fff);z-index:1;transition:all .2s}.reports-grid{--grid-columns: 12;--column-width: calc(100% / var(--grid-columns));display:grid;grid-gap:var(--reports-grid-gap, 1.5rem);gap:var(--reports-grid-gap, 1.5rem);grid-template-columns:var(--rg-columns, repeat(var(--grid-columns), 1fr));margin-block:var(--reports-grid-margin-block, 1.25rem 0);padding-inline:var(--reports-grid-padding-inline, .5rem)}.reports-grid__item{display:grid;grid-gap:.3rem;gap:.3rem;min-width:0;text-align:center;vertical-align:middle}.reports-grid__item[data-width=\"1\"]{--col-span: span 1}.reports-grid__item[data-width=\"2\"]{--col-span: span 2}.reports-grid__item[data-width=\"3\"]{--col-span: span 3}.reports-grid__item[data-width=\"4\"]{--col-span: span 4}.reports-grid__item[data-width=\"5\"]{--col-span: span 5}.reports-grid__item[data-width=\"6\"]{--col-span: span 6}.reports-grid__item[data-width=\"7\"]{--col-span: span 7}.reports-grid__item[data-width=\"8\"]{--col-span: span 8}.reports-grid__item[data-width=\"9\"]{--col-span: span 9}.reports-grid__item[data-width=\"10\"]{--col-span: span 10}.reports-grid__item[data-width=\"11\"]{--col-span: span 11}.reports-grid__item[data-width=\"12\"]{--col-span: span 12}@media screen{.reports-grid__item{grid-row-start:var(--row-start, initial);grid-column:var(--col-start, auto)/var(--col-span, span var(--grid-column, 2));grid-row:var(--start-row, auto)/span var(--row-span, 1);grid-template-rows:subgrid}}@media print{.reports-grid{--reports-grid-gap: 11mm;--reports-grid-margin-top: 11mm;--rg-columns: repeat(2, 1fr)}}\n"], components: [{ type: FiltersPanelComponent, selector: "app-filters-panel", inputs: ["aggregations", "fields", "activeQuery"], outputs: ["filterChanged"] }, { type: i1$c.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: EditorButtonComponent, selector: "app-editor-button", inputs: ["type", "key"] }, { type: i3$1.MatSpinner, selector: "mat-spinner", inputs: ["color"] }, { type: NdfReportComponent, selector: "app-ndf-report", inputs: ["config", "direction", "data", "criteria"], outputs: ["onNavigate", "onOpen"] }, { type: NdfTableComponent, selector: "app-ndf-table", inputs: ["rows", "totalRecords", "autoCalculateHeight", "emptyMessage", "activeQuery", "configPath", "configTransformer", "tableKey", "jsonEditorEnabled", "config", "customCriteria", "searchTerm"], outputs: ["onRowSelected", "onRowIndexSelected", "actionOnRow", "onGettingData", "onMultiRowSelected", "onLoading", "onPage", "onInitialized", "onLoaded", "onQueryChange", "onSort"] }], directives: [{ type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FluidHeightDirective, selector: "[ndfFluidHeight]", inputs: ["minHeight", "ndfFluidHeight", "subtractItems", "decrease", "delay", "cssVar", "calculate", "inlineStyle"], exportAs: ["ndfFluidHeight"] }, { type: i4.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { type: ScrollableDivDirective, selector: "[scrolled]", inputs: ["scrollTop"], outputs: ["scrolled"] }, { type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: SearchTableTemplateDirective, selector: "[searchTableTemplate]" }], pipes: { "async": i4$1.AsyncPipe, "translate": i1.TranslatePipe }, animations: [slideAnimation] });
43087
43358
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NdfReportsComponent, decorators: [{
43088
43359
  type: Component,
43089
43360
  args: [{
@@ -45250,5 +45521,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
45250
45521
  * Generated bundle index. Do not edit.
45251
45522
  */
45252
45523
 
45253
- export { ACTIONS_TABLE_TEMPLATE, AGGREGATION_FIELD_TYPES, AUTOCOMPLETE_TEMPLATE, ActionsTableTemplateDirective, ActiveUserSwitchComponent, ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AggregationAutocompleteComponent, AggregationCheckboxComponent, AggregationCustomComponent, AggregationDateListComponent, AggregationFieldComponent, AggregationRadioComponent, AggregationSelectComponent, AggregationSwitchComponent, ApisErrorsMessagesService, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AutocompleteFilterPipe, AutocompleteTemplateDirective, AvatarComponent, AvatarModule, BaseChartBuilderService, BaseChartComponent, BaseColumnComponent, BaseComponent, BaseDatePicker, BaseDateValueAccessor, BaseDialogComponent, BaseNodeClass, BaseSelector, BaseService, BooleanViewerComponent, ButtonComponent, CHART_DEFAULTS_OPTIONS, CHART_MAIN_COLOR, CHECKBOX_TEMPLATE, COLORS_COUNT, COMPARISON_OPERATOR, CONFIG_EDITOR_MODE, CUSTOM_FIELD_TYPES, CUSTOM_TEMPLATE, CachingExpiryUnit, CalendarService, CallApiService, CardComponent, CardModule, ChartComponent, ChartDataService, ChartDataTransformers, index$1 as ChartDefaults, ChartManagerService, ChartPanel, ChartPanelFooterComponent, ChartPanelHeaderComponent, ChartPanelModule, index as ChartPlugins, ChartPluginsRegistry, index$2 as ChartUtils, ChartsModule, CheckConditionPipe, CheckboxTemplateDirective, CircleNode, CircleNodeComponent, ClickOutsideDirective, ClipboardComponent, CommentApiService, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfigEditorActionsComponent, ConfigPreviewComponent, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, Connection, ConnectionLabelComponent, ContentActionType, ContentNode, ContentNodeComponent, CopyComponent, CopyToClipboardDirective, CopyToClipboardModule, CorrespondenceRelationComponent, CorrespondenceRelationCreateFormComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomConnectionComponent, CustomDocumentViewerComponent, CustomFieldComponent, CustomMomentDateAdapter, CustomPpViewerComponent, CustomSocketComponent, CustomTemplateDirective, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DATE_LIST_TEMPLATE, DATE_LIST_VIEW, DATE_LOCALE_KEYS, DATE_TYPE, DEFAULT_DEBOUNCE_TIME, DEFAULT_VIEW, DIAGRAM_DEFAULT_OPTIONS, DIAGRAM_HEIGHT, DROPDOWN_LABEL_TEMPLATE, DROPDOWN_MULTI_LABEL_TEMPLATE, DROPDOWN_TEMPLATE, DataChartComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateListTemplateDirective, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DestroySubject, DiagramDirective, DiagramPluginsService, DiagramService, DiagramUtils, DiagramsModule, DialogMangmentService, DigitChartService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownLabelTemplateDirective, DropdownMultiLabelTemplateDirective, DropdownTemplateDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, DynamicCustomComponent, DynamicFieldsRendererComponent, DynamicFieldsRendererModule, DynamicFilterComponent, DynamicFilterModule, DynamicFormBoolItemComponent, DynamicFormBuilderComponent, DynamicFormCheckboxItemComponent, DynamicFormComponent, DynamicFormDateItemComponent, DynamicFormDepartmentComponent, DynamicFormFieldComponent, DynamicFormHijriDateitemComponent, DynamicFormMapItemComponent, DynamicFormModule, DynamicFormOptionsComponent, DynamicFormSelectItemComponent, DynamicFormSelectTagComponent, DynamicFormSelectUserFilterComponent, DynamicFormSelectUsersComponent, DynamicFormService, DynamicFormSlideToggleitemComponent, DynamicFormTextItemComponent, DynamicFormTextareaComponent, DynamicFormViewerComponent, DynamicFormVocabularyItemComponent, DynamicSearchComponent, DynamicSearchModule, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicTimelineReportService, DynamicViewModule, EMPTY_TEMPLATE, ENTITY_TYPE, EXTENSION_JSONS, EditDeleteModalComponent, EditorModeSwitchComponent, EditorSettingsComponent, ElementHeightDirective, ElementHeightModule, EmptyTemplateDirective, EnvManager, Evaluator, EvaluatorsService, ExtensionLoaderService, ExtensionService, FIELD_SEND_MODE, FIELD_TYPE, FILTER_CUSTOM_TEMPLATE, FILTER_DATES_TYPE, FieldHeaderComponent, FieldValueObject, FileGridInfiniteScrollDirective, FileManagerAbstract, FileManagerAdapter, FileManagerPaginationConfig, FileManagerService, FileMangerModule, FileSizePipe, FilterAutocompleteInputComponent, FilterCollapseControlComponent, FilterComponent, FilterCustomTemplateDirective, FilterDateRangeComponent, FilterEmptyMessageComponent, FilterModule, FilterOptionTextComponent, FilterOptionsSortComponent, FilterPipe, FilterQueryService, FilterSearchInputComponent, FiltersByRolesPipe, FiltersMapperService, FiltersPanelComponent, FluidHeightDirective, FluidHeightModule, FolderModalComponent, FolderishType, FormBuilderService, GREGORIAN_DATE_FORMATS, GREGORIAN_FORMAT, GatewayNodeComponent, GatewayPortsComponent, GlobalAdminService, GlobalPdfTron, GregorianDatepickerComponent, HIJRI_DATE_ARABIC_NAMES, HIJRI_DATE_ENGLISH_NAMES, HIJRI_DATE_FORMATS, HIJRI_FORMAT, HashTranslateAsyncPipe, HashTranslatePipe, HijriAdapterService, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, HtmlDialogComponent, IN_OUT_DIRECTION, IconService, InfoDialogComponent, InitializationService, InputDateComponent, InputPort, InputRangeDateComponent, ItemListComponent, Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService, LocalizeState, LocalizedDatePipe, LocalizedLabelPipe, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY, MESSAGE_TYPE, MIN_VISIBLE_COUNT, MONACO_EDITOR_CONFIG, MY_MOMENT_FORMATS, MainfolderService, MessageService, ModeTogglerComponent, MomentDateAdapter, MonacoEditorComponent, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NDF_EDITOR_TYPE, NODE_CIRCLE_SIZE, NODE_GATEWAY_SIZE, NODE_HEIGHT, NODE_MARGIN, NODE_STATUS, NODE_TYPE, NODE_WIDTH, NOTIFICATIONS_LIST_OPTIONS, NOTIFICATION_ICON, NOTIFICATION_ITEM, NOTIFICATION_STATUS, NOTIFY_EVENT, NdfConfigEditorComponent, NdfConfigEditorModule, NdfConfirmationDialogComponent, NdfDatepickerComponent, NdfDatepickerModule, NdfFiltersPanelModule, NdfGregorianDatepickerComponent, NdfHijriDatepickerComponent, NdfNuxeoDialog, NdfPanelComponent, NdfPanelModule, NdfReportComponent, NdfReportsComponent, NdfReportsModule, NdfReportsService, NdfTableComponent, NdfTableConfigurationService, NdfTableModule, NdfTableService, NdfTabsComponent, NdfTabsModule, NdfTransformService, NgxHijriGregorianDatepickerModule, NoDataComponent, NoDataFoundComponent, NoDataModule, NodeIconComponent, NodeInputsComponent, NodeOutputsComponent, NodePortsComponent, NotificationIconDirective, NotificationItemComponent, NotificationItemDirective, NotificationSourceSelectComponent, NotificationStatusToggleComponent, NotificationToastComponent, NotificationsButtonComponent, NotificationsDateSelectComponent, NotificationsListComponent, NotificationsListContainerComponent, NotificationsModule, NotificationsService, NotificationsSettingsContainerComponent, NuxeoCoreModule, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoDialogModule, NuxeoDialogService, NuxeoMapper, NuxeoService, NxQL, NxQlQuery, OutputPort, PAGINATION_MODE, PANEL_MODE, PARAMS_KEYS, PREDICATE_FIELD_TYPES, PROJECT_BASE_HREF, PageSizesListComponent, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PredicateDateInputComponent, PredicateFieldComponent, PredicateTextInputComponent, PublishDialogComponent, PublishingDocumentService, RADIO_TEMPLATE, RadioTemplateDirective, ReadMoreComponent, RecentlyViewedService, RemoveButtonComponent, RenameComponent, ReportConfigMapperService, ReportTransformService, ReportsStateService, RolesService, SEARCH_TABLE_TEMPLATE, SOCKET_WIDTH, SUBSCRIPTION_STATE, SWITCH_TEMPLATE, SafeHtmlPipe, SanitizerPipe, ScanComponent, ScanModalComponent, SearchAutocompleteComponent, SearchTableTemplateDirective, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SilentPdfTronService, SingleActivityComponent, SkeletonComponent, SkeletonModule, Socket, SortListPipe, SortingListComponent, SpellCheckerFieldModule, SpellCheckerTextFieldComponent, SpinnerComponent, StatisticService, StatusIconComponent, SwitchTemplateDirective, TRANSLATION_PROVIDER, TableColumnsTogglerComponent, TableComponent, TableExportComponent, TableModule, TableSkeletonComponent, TagsApiService, TemplateModalComponent, TemplateNode, TemplateNodeComponent, TextSearchComponent, TimeAgoPipe, ToastsModule, TooltipPipe, TransferDocComponent, TranslateLoaderService, TranslatedVocabularySelectComponent, TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UserCardComponent, UserComponent, UserModule, UserPreferenceValues, UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, UtilityService, VALUE_OBJECT, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService, VocabularyComponent, VocabularyModule, WorkflowService, ZoomControlComponent, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getChartsOptions, getConnections, getDoughnutOptions, getHorizontalBarOptions, getLineOptions, getPieOptions, getRandomNumber, getValue, getVerticalBarOptions, isDateObject, isFieldValueObject, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, removeConnections, removeEmptyKeys, removeNode, removeNodeAndConnections, serializeControl, serializePort, slideAnimation, sortByOrder };
45524
+ export { ACTIONS_TABLE_TEMPLATE, AGGREGATION_FIELD_TYPES, AUTOCOMPLETE_TEMPLATE, ActionsTableTemplateDirective, ActiveUserSwitchComponent, ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AggregationAutocompleteComponent, AggregationCheckboxComponent, AggregationCustomComponent, AggregationDateListComponent, AggregationFieldComponent, AggregationFieldModule, AggregationGroupComponent, AggregationRadioComponent, AggregationSelectComponent, AggregationSwitchComponent, ApisErrorsMessagesService, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AutocompleteFilterPipe, AutocompleteTemplateDirective, AvatarComponent, AvatarModule, BaseChartBuilderService, BaseChartComponent, BaseColumnComponent, BaseComponent, BaseDatePicker, BaseDateValueAccessor, BaseDialogComponent, BaseNodeClass, BaseSelector, BaseService, BooleanViewerComponent, ButtonComponent, CHART_DEFAULTS_OPTIONS, CHART_MAIN_COLOR, CHECKBOX_TEMPLATE, COLORS_COUNT, COMPARISON_OPERATOR, CONFIG_EDITOR_MODE, CUSTOM_FIELD_TYPES, CUSTOM_TEMPLATE, CachingExpiryUnit, CalendarService, CallApiService, CardComponent, CardModule, ChartComponent, ChartDataService, ChartDataTransformers, index$1 as ChartDefaults, ChartManagerService, ChartPanel, ChartPanelFooterComponent, ChartPanelHeaderComponent, ChartPanelModule, index as ChartPlugins, ChartPluginsRegistry, index$2 as ChartUtils, ChartsModule, CheckConditionPipe, CheckboxTemplateDirective, CircleNode, CircleNodeComponent, ClickOutsideDirective, ClipboardComponent, CommentApiService, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfigEditorActionsComponent, ConfigPreviewComponent, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, Connection, ConnectionLabelComponent, ContentActionType, ContentNode, ContentNodeComponent, CopyComponent, CopyToClipboardDirective, CopyToClipboardModule, CorrespondenceRelationComponent, CorrespondenceRelationCreateFormComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomConnectionComponent, CustomDocumentViewerComponent, CustomFieldComponent, CustomMomentDateAdapter, CustomPpViewerComponent, CustomSocketComponent, CustomTemplateDirective, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DATE_LIST_TEMPLATE, DATE_LIST_VIEW, DATE_LOCALE_KEYS, DATE_TYPE, DEFAULT_DEBOUNCE_TIME, DEFAULT_VIEW, DIAGRAM_DEFAULT_OPTIONS, DIAGRAM_HEIGHT, DROPDOWN_LABEL_TEMPLATE, DROPDOWN_MULTI_LABEL_TEMPLATE, DROPDOWN_TEMPLATE, DataChartComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateListTemplateDirective, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DestroySubject, DiagramDirective, DiagramPluginsService, DiagramService, DiagramUtils, DiagramsModule, DialogMangmentService, DigitChartService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownLabelTemplateDirective, DropdownMultiLabelTemplateDirective, DropdownTemplateDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, DynamicCustomComponent, DynamicFieldsRendererComponent, DynamicFieldsRendererModule, DynamicFilterComponent, DynamicFilterModule, DynamicFormBoolItemComponent, DynamicFormBuilderComponent, DynamicFormCheckboxItemComponent, DynamicFormComponent, DynamicFormDateItemComponent, DynamicFormDepartmentComponent, DynamicFormFieldComponent, DynamicFormHijriDateitemComponent, DynamicFormMapItemComponent, DynamicFormModule, DynamicFormOptionsComponent, DynamicFormSelectItemComponent, DynamicFormSelectTagComponent, DynamicFormSelectUserFilterComponent, DynamicFormSelectUsersComponent, DynamicFormService, DynamicFormSlideToggleitemComponent, DynamicFormTextItemComponent, DynamicFormTextareaComponent, DynamicFormViewerComponent, DynamicFormVocabularyItemComponent, DynamicSearchComponent, DynamicSearchModule, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicTimelineReportService, DynamicViewModule, EMPTY_TEMPLATE, ENTITY_TYPE, EXTENSION_JSONS, EditDeleteModalComponent, EditorModeSwitchComponent, EditorSettingsComponent, ElementHeightDirective, ElementHeightModule, EmptyTemplateDirective, EnvManager, Evaluator, EvaluatorsService, ExtensionLoaderService, ExtensionService, FIELD_SEND_MODE, FIELD_TYPE, FILTER_CUSTOM_TEMPLATE, FILTER_DATES_TYPE, FieldHeaderComponent, FieldValueObject, FileGridInfiniteScrollDirective, FileManagerAbstract, FileManagerAdapter, FileManagerPaginationConfig, FileManagerService, FileMangerModule, FileSizePipe, FilterAutocompleteInputComponent, FilterCollapseControlComponent, FilterComponent, FilterCustomTemplateDirective, FilterDateRangeComponent, FilterEmptyMessageComponent, FilterModule, FilterOptionTextComponent, FilterOptionsSortComponent, FilterPipe, FilterQueryService, FilterSearchInputComponent, FiltersByRolesPipe, FiltersMapperService, FiltersPanelComponent, FluidHeightDirective, FluidHeightModule, FolderModalComponent, FolderishType, FormBuilderService, GREGORIAN_DATE_FORMATS, GREGORIAN_FORMAT, GatewayNodeComponent, GatewayPortsComponent, GlobalAdminService, GlobalPdfTron, GregorianDatepickerComponent, HIJRI_DATE_ARABIC_NAMES, HIJRI_DATE_ENGLISH_NAMES, HIJRI_DATE_FORMATS, HIJRI_FORMAT, HashTranslateAsyncPipe, HashTranslatePipe, HijriAdapterService, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, HtmlDialogComponent, IN_OUT_DIRECTION, IconService, InfoDialogComponent, InitializationService, InputDateComponent, InputPort, InputRangeDateComponent, ItemListComponent, Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService, LocalizeState, LocalizedDatePipe, LocalizedLabelPipe, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MAT_MOMENT_DATE_ADAPTER_OPTIONS_FACTORY, MESSAGE_TYPE, MIN_VISIBLE_COUNT, MONACO_EDITOR_CONFIG, MY_MOMENT_FORMATS, MainfolderService, MapToAggregationConfigPipe, MessageService, ModeTogglerComponent, MomentDateAdapter, MonacoEditorComponent, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NDF_EDITOR_TYPE, NODE_CIRCLE_SIZE, NODE_GATEWAY_SIZE, NODE_HEIGHT, NODE_MARGIN, NODE_STATUS, NODE_TYPE, NODE_WIDTH, NOTIFICATIONS_LIST_OPTIONS, NOTIFICATION_ICON, NOTIFICATION_ITEM, NOTIFICATION_STATUS, NOTIFY_EVENT, NdfConfigEditorComponent, NdfConfigEditorModule, NdfConfirmationDialogComponent, NdfDatepickerComponent, NdfDatepickerModule, NdfFiltersPanelModule, NdfGregorianDatepickerComponent, NdfHijriDatepickerComponent, NdfNuxeoDialog, NdfPanelComponent, NdfPanelModule, NdfReportComponent, NdfReportsComponent, NdfReportsModule, NdfReportsService, NdfTableComponent, NdfTableConfigurationService, NdfTableModule, NdfTableService, NdfTabsComponent, NdfTabsModule, NdfTransformService, NgxHijriGregorianDatepickerModule, NoDataComponent, NoDataFoundComponent, NoDataModule, NodeIconComponent, NodeInputsComponent, NodeOutputsComponent, NodePortsComponent, NotificationIconDirective, NotificationItemComponent, NotificationItemDirective, NotificationSourceSelectComponent, NotificationStatusToggleComponent, NotificationToastComponent, NotificationsButtonComponent, NotificationsDateSelectComponent, NotificationsListComponent, NotificationsListContainerComponent, NotificationsModule, NotificationsService, NotificationsSettingsContainerComponent, NuxeoCoreModule, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoDialogModule, NuxeoDialogService, NuxeoMapper, NuxeoService, NxQL, NxQlQuery, OutputPort, PAGINATION_MODE, PANEL_MODE, PARAMS_KEYS, PREDICATE_FIELD_TYPES, PROJECT_BASE_HREF, PageSizesListComponent, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PredicateDateInputComponent, PredicateFieldComponent, PredicateTextInputComponent, PublishDialogComponent, PublishingDocumentService, RADIO_TEMPLATE, RadioTemplateDirective, ReadMoreComponent, RecentlyViewedService, RemoveButtonComponent, RenameComponent, ReportConfigMapperService, ReportTransformService, ReportsDataTransformers, ReportsStateService, RolesService, SEARCH_TABLE_TEMPLATE, SOCKET_WIDTH, SUBSCRIPTION_STATE, SWITCH_TEMPLATE, SafeHtmlPipe, SanitizerPipe, ScanComponent, ScanModalComponent, SearchAutocompleteComponent, SearchTableTemplateDirective, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SilentPdfTronService, SingleActivityComponent, SkeletonComponent, SkeletonModule, Socket, SortListPipe, SortingListComponent, SpellCheckerFieldModule, SpellCheckerTextFieldComponent, SpinnerComponent, StatisticService, StatusIconComponent, SwitchTemplateDirective, TRANSLATION_PROVIDER, TableColumnsTogglerComponent, TableComponent, TableExportComponent, TableModule, TableSkeletonComponent, TagsApiService, TemplateModalComponent, TemplateNode, TemplateNodeComponent, TextSearchComponent, TimeAgoPipe, ToastsModule, TooltipPipe, TransferDocComponent, TranslateLoaderService, TranslatedVocabularySelectComponent, TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UserCardComponent, UserComponent, UserModule, UserPreferenceValues, UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, UtilityService, VALUE_OBJECT, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService, VocabularyComponent, VocabularyModule, WorkflowService, ZoomControlComponent, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getChartsOptions, getConnections, getDoughnutOptions, getHorizontalBarOptions, getLineOptions, getPieOptions, getRandomNumber, getValue, getVerticalBarOptions, isDateObject, isFieldValueObject, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, removeConnections, removeEmptyKeys, removeNode, removeNodeAndConnections, serializeControl, serializePort, slideAnimation, sortByOrder };
45254
45525
  //# sourceMappingURL=nuxeo-development-framework.js.map