nuxeo-development-framework 4.0.1 → 4.0.3

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 (134) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +1661 -81
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/diagrams/components/base-node.component.js +41 -0
  4. package/esm2015/lib/components/diagrams/components/circle-node/circle-node.component.js +20 -0
  5. package/esm2015/lib/components/diagrams/components/content-node/content-node.component.js +21 -0
  6. package/esm2015/lib/components/diagrams/components/custom-connection.component.js +48 -0
  7. package/esm2015/lib/components/diagrams/components/custom-socket.component.js +34 -0
  8. package/esm2015/lib/components/diagrams/components/index.js +12 -0
  9. package/esm2015/lib/components/diagrams/components/node-icon.component.js +35 -0
  10. package/esm2015/lib/components/diagrams/components/node-inputs.component.js +62 -0
  11. package/esm2015/lib/components/diagrams/components/node-outputs.component.js +58 -0
  12. package/esm2015/lib/components/diagrams/components/remove-button.component.js +65 -0
  13. package/esm2015/lib/components/diagrams/components/status-icon.component.js +37 -0
  14. package/esm2015/lib/components/diagrams/components/template-node/template-node.component.js +41 -0
  15. package/esm2015/lib/components/diagrams/components/zoom-control.component.js +62 -0
  16. package/esm2015/lib/components/diagrams/constants/defaults.js +19 -0
  17. package/esm2015/lib/components/diagrams/constants/direction.js +7 -0
  18. package/esm2015/lib/components/diagrams/constants/index.js +8 -0
  19. package/esm2015/lib/components/diagrams/constants/message-type.js +5 -0
  20. package/esm2015/lib/components/diagrams/constants/node-type.js +7 -0
  21. package/esm2015/lib/components/diagrams/constants/notify-events.js +4 -0
  22. package/esm2015/lib/components/diagrams/constants/sizes.js +7 -0
  23. package/esm2015/lib/components/diagrams/constants/status.js +9 -0
  24. package/esm2015/lib/components/diagrams/diagrams.module.js +73 -0
  25. package/esm2015/lib/components/diagrams/directive/diagram.directive.js +83 -0
  26. package/esm2015/lib/components/diagrams/directive/index.js +2 -0
  27. package/esm2015/lib/components/diagrams/editor/customize.js +58 -0
  28. package/esm2015/lib/components/diagrams/editor/editor.js +95 -0
  29. package/esm2015/lib/components/diagrams/editor/index.js +5 -0
  30. package/esm2015/lib/components/diagrams/editor/overrides/connection-path.transformers.js +25 -0
  31. package/esm2015/lib/components/diagrams/editor/overrides/index.js +2 -0
  32. package/esm2015/lib/components/diagrams/editor/path-plugin.js +17 -0
  33. package/esm2015/lib/components/diagrams/editor/socket-position-watcher.js +7 -0
  34. package/esm2015/lib/components/diagrams/index.js +2 -0
  35. package/esm2015/lib/components/diagrams/models/base-node.model.js +25 -0
  36. package/esm2015/lib/components/diagrams/models/circle-node.model.js +10 -0
  37. package/esm2015/lib/components/diagrams/models/connection.model.js +8 -0
  38. package/esm2015/lib/components/diagrams/models/content-node.model.js +7 -0
  39. package/esm2015/lib/components/diagrams/models/index.js +7 -0
  40. package/esm2015/lib/components/diagrams/models/socket.model.js +8 -0
  41. package/esm2015/lib/components/diagrams/models/template-node.model.js +12 -0
  42. package/esm2015/lib/components/diagrams/public-api.js +9 -0
  43. package/esm2015/lib/components/diagrams/services/diagram-plugins.service.js +19 -0
  44. package/esm2015/lib/components/diagrams/services/diagram.service.js +174 -0
  45. package/esm2015/lib/components/diagrams/services/index.js +5 -0
  46. package/esm2015/lib/components/diagrams/services/message.service.js +24 -0
  47. package/esm2015/lib/components/diagrams/services/workflow.service.js +244 -0
  48. package/esm2015/lib/components/diagrams/types/common.type.js +2 -0
  49. package/esm2015/lib/components/diagrams/types/customization.type.js +2 -0
  50. package/esm2015/lib/components/diagrams/types/diagram-config.type.js +2 -0
  51. package/esm2015/lib/components/diagrams/types/diagram-editor.type.js +2 -0
  52. package/esm2015/lib/components/diagrams/types/emitter-type.js +2 -0
  53. package/esm2015/lib/components/diagrams/types/index.js +14 -0
  54. package/esm2015/lib/components/diagrams/types/layout.type.js +2 -0
  55. package/esm2015/lib/components/diagrams/types/node-content.js +2 -0
  56. package/esm2015/lib/components/diagrams/types/node-definition.js +2 -0
  57. package/esm2015/lib/components/diagrams/types/node-status.type.js +2 -0
  58. package/esm2015/lib/components/diagrams/types/node.type.js +2 -0
  59. package/esm2015/lib/components/diagrams/types/notify-event.type.js +2 -0
  60. package/esm2015/lib/components/diagrams/types/path.type.js +2 -0
  61. package/esm2015/lib/components/diagrams/types/schemes.type.js +2 -0
  62. package/esm2015/lib/components/diagrams/utilities/index.js +3 -0
  63. package/esm2015/lib/components/diagrams/utilities/remove.util.js +95 -0
  64. package/esm2015/lib/components/diagrams/utilities/serialize.js +23 -0
  65. package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +2 -1
  66. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +25 -2
  67. package/esm2015/public-api.js +3 -2
  68. package/fesm2015/nuxeo-development-framework.js +1561 -75
  69. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  70. package/lib/components/diagrams/components/base-node.component.d.ts +29 -0
  71. package/lib/components/diagrams/components/circle-node/circle-node.component.d.ts +7 -0
  72. package/lib/components/diagrams/components/content-node/content-node.component.d.ts +8 -0
  73. package/lib/components/diagrams/components/custom-connection.component.d.ts +8 -0
  74. package/lib/components/diagrams/components/custom-socket.component.d.ts +6 -0
  75. package/lib/components/diagrams/components/index.d.ts +11 -0
  76. package/lib/components/diagrams/components/node-icon.component.d.ts +8 -0
  77. package/lib/components/diagrams/components/node-inputs.component.d.ts +12 -0
  78. package/lib/components/diagrams/components/node-outputs.component.d.ts +12 -0
  79. package/lib/components/diagrams/components/remove-button.component.d.ts +7 -0
  80. package/lib/components/diagrams/components/status-icon.component.d.ts +8 -0
  81. package/lib/components/diagrams/components/template-node/template-node.component.d.ts +17 -0
  82. package/lib/components/diagrams/components/zoom-control.component.d.ts +11 -0
  83. package/lib/components/diagrams/constants/defaults.d.ts +2 -0
  84. package/lib/components/diagrams/constants/direction.d.ts +6 -0
  85. package/lib/components/diagrams/constants/index.d.ts +7 -0
  86. package/lib/components/diagrams/constants/message-type.d.ts +4 -0
  87. package/lib/components/diagrams/constants/node-type.d.ts +6 -0
  88. package/lib/components/diagrams/constants/notify-events.d.ts +3 -0
  89. package/lib/components/diagrams/constants/sizes.d.ts +6 -0
  90. package/lib/components/diagrams/constants/status.d.ts +8 -0
  91. package/lib/components/diagrams/diagrams.module.d.ts +25 -0
  92. package/lib/components/diagrams/directive/diagram.directive.d.ts +27 -0
  93. package/lib/components/diagrams/directive/index.d.ts +1 -0
  94. package/lib/components/diagrams/editor/customize.d.ts +25 -0
  95. package/lib/components/diagrams/editor/editor.d.ts +3 -0
  96. package/lib/components/diagrams/editor/index.d.ts +4 -0
  97. package/lib/components/diagrams/editor/overrides/connection-path.transformers.d.ts +7 -0
  98. package/lib/components/diagrams/editor/overrides/index.d.ts +1 -0
  99. package/lib/components/diagrams/editor/path-plugin.d.ts +4 -0
  100. package/lib/components/diagrams/editor/socket-position-watcher.d.ts +3 -0
  101. package/lib/components/diagrams/index.d.ts +1 -0
  102. package/lib/components/diagrams/models/base-node.model.d.ts +21 -0
  103. package/lib/components/diagrams/models/circle-node.model.d.ts +7 -0
  104. package/lib/components/diagrams/models/connection.model.d.ts +8 -0
  105. package/lib/components/diagrams/models/content-node.model.d.ts +5 -0
  106. package/lib/components/diagrams/models/index.d.ts +6 -0
  107. package/lib/components/diagrams/models/socket.model.d.ts +5 -0
  108. package/lib/components/diagrams/models/template-node.model.d.ts +8 -0
  109. package/lib/components/diagrams/public-api.d.ts +8 -0
  110. package/lib/components/diagrams/services/diagram-plugins.service.d.ts +16 -0
  111. package/lib/components/diagrams/services/diagram.service.d.ts +42 -0
  112. package/lib/components/diagrams/services/index.d.ts +4 -0
  113. package/lib/components/diagrams/services/message.service.d.ts +10 -0
  114. package/lib/components/diagrams/services/workflow.service.d.ts +81 -0
  115. package/lib/components/diagrams/types/common.type.d.ts +4 -0
  116. package/lib/components/diagrams/types/customization.type.d.ts +10 -0
  117. package/lib/components/diagrams/types/diagram-config.type.d.ts +36 -0
  118. package/lib/components/diagrams/types/diagram-editor.type.d.ts +25 -0
  119. package/lib/components/diagrams/types/emitter-type.d.ts +5 -0
  120. package/lib/components/diagrams/types/index.d.ts +13 -0
  121. package/lib/components/diagrams/types/layout.type.d.ts +13 -0
  122. package/lib/components/diagrams/types/node-content.d.ts +9 -0
  123. package/lib/components/diagrams/types/node-definition.d.ts +19 -0
  124. package/lib/components/diagrams/types/node-status.type.d.ts +2 -0
  125. package/lib/components/diagrams/types/node.type.d.ts +2 -0
  126. package/lib/components/diagrams/types/notify-event.type.d.ts +2 -0
  127. package/lib/components/diagrams/types/path.type.d.ts +17 -0
  128. package/lib/components/diagrams/types/schemes.type.d.ts +3 -0
  129. package/lib/components/diagrams/utilities/index.d.ts +2 -0
  130. package/lib/components/diagrams/utilities/remove.util.d.ts +30 -0
  131. package/lib/components/diagrams/utilities/serialize.d.ts +15 -0
  132. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +1 -0
  133. package/package.json +14 -2
  134. package/public-api.d.ts +2 -1
@@ -105,6 +105,18 @@ import { MatDividerModule } from '@angular/material/divider';
105
105
  import localeAr from '@angular/common/locales/ar';
106
106
  import localeEn from '@angular/common/locales/en';
107
107
  import { RxReactiveFormsModule } from '@rxweb/reactive-form-validators';
108
+ import * as i2$8 from 'rete-angular-plugin';
109
+ import { SocketComponent, ConnectionComponent, NodeComponent, AngularPlugin, Presets as Presets$1, ReteModule } from 'rete-angular-plugin';
110
+ import { ClassicPreset, NodeEditor } from 'rete';
111
+ import { AreaPlugin, AreaExtensions } from 'rete-area-plugin';
112
+ import { AutoArrangePlugin, Presets } from 'rete-auto-arrange-plugin';
113
+ import { ConnectionPlugin, Presets as Presets$2 } from 'rete-connection-plugin';
114
+ import { ReroutePlugin, RerouteExtensions } from 'rete-connection-reroute-plugin';
115
+ import { ReadonlyPlugin } from 'rete-readonly-plugin';
116
+ import { MinimapPlugin } from 'rete-minimap-plugin';
117
+ import { curveLinear } from 'd3-shape';
118
+ import { ConnectionPathPlugin, Transformers } from 'rete-connection-path-plugin';
119
+ import { getDOMSocketPosition } from 'rete-render-utils';
108
120
  import * as i7$3 from '@angular/material/badge';
109
121
  import { MatBadgeModule } from '@angular/material/badge';
110
122
  import { MatToolbarModule } from '@angular/material/toolbar';
@@ -7011,6 +7023,23 @@ class DepartmentApiService {
7011
7023
  return treeItem;
7012
7024
  });
7013
7025
  }
7026
+ getFullDepartmentTree(customPageProvider, customParams) {
7027
+ let obj = customParams ? customParams : {};
7028
+ let params = Object.assign({ pageProvider: customPageProvider ? customPageProvider : 'PP_Department', currentPageIndex: 0, offset: 0, pageSize: 40, quickFilters: 'Parent Dept' }, obj);
7029
+ if (this.globalAdminService.isGlobalAdmin) {
7030
+ params['queryParams'] = this.globalAdminService.activeTenant;
7031
+ }
7032
+ else if (!this.globalAdminService.isGlobalAdmin && this.nuxeoService.nuxeoClient.user.properties.tenantId) {
7033
+ params['queryParams'] = this.nuxeoService.nuxeoClient.user.properties.tenantId;
7034
+ }
7035
+ return this.CallApiService.query(Object.assign({}, params), {
7036
+ headers: {
7037
+ 'X-NXproperties': '*',
7038
+ 'enrichers-document': 'children',
7039
+ depth: 'max',
7040
+ },
7041
+ });
7042
+ }
7014
7043
  }
7015
7044
  DepartmentApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DepartmentApiService, deps: [{ token: CallApiService }, { token: TranslationService }, { token: NuxeoService }, { token: AdapterService }, { token: GlobalAdminService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
7016
7045
  DepartmentApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DepartmentApiService, providedIn: 'root' });
@@ -7052,6 +7081,12 @@ __decorate([
7052
7081
  cacheBusterNotifier: departmentCacheBuster$,
7053
7082
  })
7054
7083
  ], DepartmentApiService.prototype, "updateDepartment", null);
7084
+ __decorate([
7085
+ Cacheable({
7086
+ cacheBusterObserver: departmentCacheBuster$,
7087
+ storageStrategy: LocalStorageStrategy
7088
+ })
7089
+ ], DepartmentApiService.prototype, "getFullDepartmentTree", null);
7055
7090
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DepartmentApiService, decorators: [{
7056
7091
  type: Injectable,
7057
7092
  args: [{
@@ -7060,7 +7095,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
7060
7095
  }], ctorParameters: function () { return [{ type: CallApiService }, { type: TranslationService }, { type: NuxeoService }, { type: AdapterService }, { type: GlobalAdminService }, { type: undefined, decorators: [{
7061
7096
  type: Inject,
7062
7097
  args: ['environment']
7063
- }] }]; }, propDecorators: { getDepartmentTree: [], getDepartmentDetails: [], getDepartmentNestedTree: [], createDepartment: [], createDepartmentInRoot: [], updateDepartment: [] } });
7098
+ }] }]; }, propDecorators: { getDepartmentTree: [], getDepartmentDetails: [], getDepartmentNestedTree: [], createDepartment: [], createDepartmentInRoot: [], updateDepartment: [], getFullDepartmentTree: [] } });
7064
7099
 
7065
7100
  var _DropdownTreeviewSelectI18n_defaultSelection;
7066
7101
  /** @ignore */
@@ -14005,6 +14040,7 @@ class ScanComponent {
14005
14040
  allinputs[i].value = '';
14006
14041
  }
14007
14042
  }
14043
+ //@ts-ignore
14008
14044
  if (Dynamsoft.Lib.env.bIE === true && Dynamsoft.Lib.env.bWin64 === true) {
14009
14045
  let o = document.getElementById('samplesource64bit');
14010
14046
  if (o) {
@@ -23436,6 +23472,79 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
23436
23472
  type: Input
23437
23473
  }] } });
23438
23474
 
23475
+ var _FileGridInfiniteScrollDirective_instances, _FileGridInfiniteScrollDirective_scrollSubject, _FileGridInfiniteScrollDirective_scrollHandler, _FileGridInfiniteScrollDirective_isNodeChanging, _FileGridInfiniteScrollDirective_handleViewModeChanged, _FileGridInfiniteScrollDirective_removeListener;
23476
+ class FileGridInfiniteScrollDirective {
23477
+ constructor() {
23478
+ _FileGridInfiniteScrollDirective_instances.add(this);
23479
+ this.infiniteScrollDistance = 5;
23480
+ this.scrolled = new EventEmitter();
23481
+ _FileGridInfiniteScrollDirective_scrollSubject.set(this, new Subject());
23482
+ _FileGridInfiniteScrollDirective_scrollHandler.set(this, void 0);
23483
+ _FileGridInfiniteScrollDirective_isNodeChanging.set(this, false);
23484
+ }
23485
+ ngAfterViewInit() {
23486
+ this.fileManager.instance.on('contentReady', (e) => {
23487
+ __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
23488
+ });
23489
+ this.fileManager.instance.on('optionChanged', (e) => {
23490
+ if (e.fullName === 'itemView.mode') {
23491
+ __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
23492
+ }
23493
+ else if (e.fullName === 'currentPath') {
23494
+ __classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_isNodeChanging, true, "f");
23495
+ __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
23496
+ setTimeout(() => { __classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_isNodeChanging, false, "f"); }, 1000);
23497
+ }
23498
+ });
23499
+ __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollSubject, "f").pipe(debounceTime(500)).subscribe(() => {
23500
+ this.scrolled.emit();
23501
+ console.log('scroll trigered');
23502
+ });
23503
+ }
23504
+ }
23505
+ _FileGridInfiniteScrollDirective_scrollSubject = new WeakMap(), _FileGridInfiniteScrollDirective_scrollHandler = new WeakMap(), _FileGridInfiniteScrollDirective_isNodeChanging = new WeakMap(), _FileGridInfiniteScrollDirective_instances = new WeakSet(), _FileGridInfiniteScrollDirective_handleViewModeChanged = function _FileGridInfiniteScrollDirective_handleViewModeChanged() {
23506
+ try {
23507
+ __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_removeListener).call(this);
23508
+ setTimeout(() => {
23509
+ const scrollableElement = this.fileManager.instance._itemView._$element[0].getElementsByClassName('dx-scrollable-container')[0];
23510
+ // Define the event handler function
23511
+ const onScroll = () => {
23512
+ if (__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_isNodeChanging, "f"))
23513
+ return;
23514
+ const scrollTop = scrollableElement.scrollTop;
23515
+ const scrollHeight = scrollableElement.scrollHeight;
23516
+ const clientHeight = scrollableElement.clientHeight;
23517
+ if (scrollTop + clientHeight >= scrollHeight - this.infiniteScrollDistance) {
23518
+ __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollSubject, "f").next();
23519
+ }
23520
+ };
23521
+ __classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_scrollHandler, onScroll, "f");
23522
+ scrollableElement.addEventListener('scroll', onScroll);
23523
+ }, 100);
23524
+ }
23525
+ catch (e) { }
23526
+ }, _FileGridInfiniteScrollDirective_removeListener = function _FileGridInfiniteScrollDirective_removeListener() {
23527
+ const scrollableElement = this.fileManager.instance._itemView._$element[0].getElementsByClassName('dx-scrollable-container')[0];
23528
+ if (__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollHandler, "f")) {
23529
+ scrollableElement.removeEventListener('scroll', __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollHandler, "f"));
23530
+ }
23531
+ };
23532
+ FileGridInfiniteScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileGridInfiniteScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23533
+ FileGridInfiniteScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FileGridInfiniteScrollDirective, selector: "[ndfFileGridInfiniteScroll]", inputs: { fileManager: ["ndfFileGridInfiniteScroll", "fileManager"], infiniteScrollDistance: "infiniteScrollDistance" }, outputs: { scrolled: "scrolled" }, ngImport: i0 });
23534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileGridInfiniteScrollDirective, decorators: [{
23535
+ type: Directive,
23536
+ args: [{
23537
+ selector: '[ndfFileGridInfiniteScroll]'
23538
+ }]
23539
+ }], propDecorators: { fileManager: [{
23540
+ type: Input,
23541
+ args: ['ndfFileGridInfiniteScroll']
23542
+ }], infiniteScrollDistance: [{
23543
+ type: Input
23544
+ }], scrolled: [{
23545
+ type: Output
23546
+ }] } });
23547
+
23439
23548
  var _FileManagerAbstract_instances, _FileManagerAbstract_foldersSubscription$, _FileManagerAbstract_loadMore, _FileManagerAbstract_resetPagination, _FileManagerAbstract_initPagination, _FileManagerAbstract_getNode, _FileManagerAbstract_addOrReplace;
23440
23549
  //
23441
23550
  class FileManagerAbstract {
@@ -25425,79 +25534,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
25425
25534
  }]
25426
25535
  }] });
25427
25536
 
25428
- var _FileGridInfiniteScrollDirective_instances, _FileGridInfiniteScrollDirective_scrollSubject, _FileGridInfiniteScrollDirective_scrollHandler, _FileGridInfiniteScrollDirective_isNodeChanging, _FileGridInfiniteScrollDirective_handleViewModeChanged, _FileGridInfiniteScrollDirective_removeListener;
25429
- class FileGridInfiniteScrollDirective {
25430
- constructor() {
25431
- _FileGridInfiniteScrollDirective_instances.add(this);
25432
- this.infiniteScrollDistance = 5;
25433
- this.scrolled = new EventEmitter();
25434
- _FileGridInfiniteScrollDirective_scrollSubject.set(this, new Subject());
25435
- _FileGridInfiniteScrollDirective_scrollHandler.set(this, void 0);
25436
- _FileGridInfiniteScrollDirective_isNodeChanging.set(this, false);
25437
- }
25438
- ngAfterViewInit() {
25439
- this.fileManager.instance.on('contentReady', (e) => {
25440
- __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
25441
- });
25442
- this.fileManager.instance.on('optionChanged', (e) => {
25443
- if (e.fullName === 'itemView.mode') {
25444
- __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
25445
- }
25446
- else if (e.fullName === 'currentPath') {
25447
- __classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_isNodeChanging, true, "f");
25448
- __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_handleViewModeChanged).call(this);
25449
- setTimeout(() => { __classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_isNodeChanging, false, "f"); }, 1000);
25450
- }
25451
- });
25452
- __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollSubject, "f").pipe(debounceTime(500)).subscribe(() => {
25453
- this.scrolled.emit();
25454
- console.log('scroll trigered');
25455
- });
25456
- }
25457
- }
25458
- _FileGridInfiniteScrollDirective_scrollSubject = new WeakMap(), _FileGridInfiniteScrollDirective_scrollHandler = new WeakMap(), _FileGridInfiniteScrollDirective_isNodeChanging = new WeakMap(), _FileGridInfiniteScrollDirective_instances = new WeakSet(), _FileGridInfiniteScrollDirective_handleViewModeChanged = function _FileGridInfiniteScrollDirective_handleViewModeChanged() {
25459
- try {
25460
- __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_instances, "m", _FileGridInfiniteScrollDirective_removeListener).call(this);
25461
- setTimeout(() => {
25462
- const scrollableElement = this.fileManager.instance._itemView._$element[0].getElementsByClassName('dx-scrollable-container')[0];
25463
- // Define the event handler function
25464
- const onScroll = () => {
25465
- if (__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_isNodeChanging, "f"))
25466
- return;
25467
- const scrollTop = scrollableElement.scrollTop;
25468
- const scrollHeight = scrollableElement.scrollHeight;
25469
- const clientHeight = scrollableElement.clientHeight;
25470
- if (scrollTop + clientHeight >= scrollHeight - this.infiniteScrollDistance) {
25471
- __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollSubject, "f").next();
25472
- }
25473
- };
25474
- __classPrivateFieldSet(this, _FileGridInfiniteScrollDirective_scrollHandler, onScroll, "f");
25475
- scrollableElement.addEventListener('scroll', onScroll);
25476
- }, 100);
25477
- }
25478
- catch (e) { }
25479
- }, _FileGridInfiniteScrollDirective_removeListener = function _FileGridInfiniteScrollDirective_removeListener() {
25480
- const scrollableElement = this.fileManager.instance._itemView._$element[0].getElementsByClassName('dx-scrollable-container')[0];
25481
- if (__classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollHandler, "f")) {
25482
- scrollableElement.removeEventListener('scroll', __classPrivateFieldGet(this, _FileGridInfiniteScrollDirective_scrollHandler, "f"));
25483
- }
25484
- };
25485
- FileGridInfiniteScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileGridInfiniteScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
25486
- FileGridInfiniteScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: FileGridInfiniteScrollDirective, selector: "[ndfFileGridInfiniteScroll]", inputs: { fileManager: ["ndfFileGridInfiniteScroll", "fileManager"], infiniteScrollDistance: "infiniteScrollDistance" }, outputs: { scrolled: "scrolled" }, ngImport: i0 });
25487
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileGridInfiniteScrollDirective, decorators: [{
25488
- type: Directive,
25489
- args: [{
25490
- selector: '[ndfFileGridInfiniteScroll]'
25491
- }]
25492
- }], propDecorators: { fileManager: [{
25493
- type: Input,
25494
- args: ['ndfFileGridInfiniteScroll']
25495
- }], infiniteScrollDistance: [{
25496
- type: Input
25497
- }], scrolled: [{
25498
- type: Output
25499
- }] } });
25500
-
25501
25537
  class FileMangerModule {
25502
25538
  }
25503
25539
  FileMangerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileMangerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -27192,6 +27228,1456 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
27192
27228
  }]
27193
27229
  }] });
27194
27230
 
27231
+ const DIAGRAM_DEFAULT_OPTIONS = {
27232
+ socketType: 'custom',
27233
+ connectionType: 'custom',
27234
+ fitToView: true,
27235
+ area: {
27236
+ restrict: true,
27237
+ scaling: { min: 0.5, max: 1.3 },
27238
+ },
27239
+ path: {
27240
+ arrow: {
27241
+ color: 'var(--path-color , #5d6481)',
27242
+ marker: 'M-3,-6 L-3,6 L10,0 Z',
27243
+ },
27244
+ transform: {
27245
+ active: true,
27246
+ },
27247
+ },
27248
+ };
27249
+
27250
+ const IN_OUT_DIRECTION = {
27251
+ start: 'start',
27252
+ end: 'end',
27253
+ top: 'top',
27254
+ bottom: 'bottom',
27255
+ };
27256
+
27257
+ const MESSAGE_TYPE = {
27258
+ configUpdated: 'configUpdated',
27259
+ refresh: 'refresh',
27260
+ };
27261
+
27262
+ const NODE_TYPE = {
27263
+ start: 'start',
27264
+ content: 'content',
27265
+ template: 'template',
27266
+ end: 'end',
27267
+ };
27268
+
27269
+ const NOTIFY_EVENT = {
27270
+ remove: 'remove',
27271
+ };
27272
+
27273
+ const NODE_MARGIN = 60;
27274
+ const NODE_WIDTH = 150;
27275
+ const NODE_HEIGHT = 118;
27276
+ const NODE_CIRCLE_SIZE = 72;
27277
+ const DIAGRAM_HEIGHT = 600;
27278
+ const SOCKET_WIDTH = 8;
27279
+
27280
+ const NODE_STATUS = {
27281
+ draft: 'draft',
27282
+ completed: 'completed',
27283
+ rejected: 'rejected',
27284
+ inProgress: 'inProgress',
27285
+ upcoming: 'upcoming',
27286
+ approved: 'approved',
27287
+ };
27288
+
27289
+ class DiagramPluginsService {
27290
+ setPlugins({ plugins, layout }) {
27291
+ this.area = plugins.area;
27292
+ this.readonly = plugins.readonly;
27293
+ this.arrange = plugins.arrange;
27294
+ this.reroute = plugins.reroute;
27295
+ }
27296
+ destroy() {
27297
+ this.area.destroy();
27298
+ }
27299
+ }
27300
+ DiagramPluginsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramPluginsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27301
+ DiagramPluginsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramPluginsService });
27302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramPluginsService, decorators: [{
27303
+ type: Injectable
27304
+ }] });
27305
+
27306
+ class BaseNodeClass extends ClassicPreset.Node {
27307
+ constructor(config) {
27308
+ super(config.label);
27309
+ this.type = NODE_TYPE.content;
27310
+ this.width = NODE_WIDTH;
27311
+ this.height = NODE_HEIGHT;
27312
+ this.directions = {
27313
+ inputs: IN_OUT_DIRECTION.start,
27314
+ outputs: IN_OUT_DIRECTION.end,
27315
+ };
27316
+ this.name = config === null || config === void 0 ? void 0 : config.name;
27317
+ this.directions = (config === null || config === void 0 ? void 0 : config.directions) || this.directions;
27318
+ this.type = config.type || NODE_TYPE.content;
27319
+ this.description = config === null || config === void 0 ? void 0 : config.description;
27320
+ this.status = config === null || config === void 0 ? void 0 : config.status;
27321
+ this.width = (config === null || config === void 0 ? void 0 : config.width) || NODE_WIDTH;
27322
+ this.height = (config === null || config === void 0 ? void 0 : config.height) || NODE_HEIGHT;
27323
+ this.content = config === null || config === void 0 ? void 0 : config.content;
27324
+ this.config = config === null || config === void 0 ? void 0 : config.config;
27325
+ this.styleClass = config === null || config === void 0 ? void 0 : config.styleClass;
27326
+ }
27327
+ }
27328
+
27329
+ class CircleNode extends BaseNodeClass {
27330
+ constructor(config) {
27331
+ super(config);
27332
+ this.width = NODE_CIRCLE_SIZE;
27333
+ this.height = NODE_CIRCLE_SIZE;
27334
+ }
27335
+ }
27336
+
27337
+ class Connection extends ClassicPreset.Connection {
27338
+ constructor() {
27339
+ super(...arguments);
27340
+ this.renderType = 'default';
27341
+ }
27342
+ }
27343
+
27344
+ class ContentNode extends BaseNodeClass {
27345
+ constructor(config) {
27346
+ super(config);
27347
+ }
27348
+ }
27349
+
27350
+ class Socket extends ClassicPreset.Socket {
27351
+ constructor(name, renderType = 'default') {
27352
+ super(name);
27353
+ this.renderType = renderType;
27354
+ }
27355
+ }
27356
+
27357
+ class TemplateNode extends BaseNodeClass {
27358
+ constructor(config) {
27359
+ super(config);
27360
+ this.type = NODE_TYPE.template;
27361
+ if (config.template) {
27362
+ this.template = config.template;
27363
+ }
27364
+ }
27365
+ }
27366
+
27367
+ /**
27368
+ *
27369
+ * @param config
27370
+ * @returns
27371
+ */
27372
+ const customizeSocket = (config) => (data) => {
27373
+ const payload = data.payload;
27374
+ if (payload.renderType === 'custom' || config.socketType === 'custom') {
27375
+ return CustomSocketComponent;
27376
+ }
27377
+ return SocketComponent;
27378
+ };
27379
+ /**
27380
+ *
27381
+ * @param config
27382
+ * @param editor
27383
+ * @returns
27384
+ */
27385
+ const customizeNode = (config, editor) => (data) => {
27386
+ var _a;
27387
+ const node = data.payload;
27388
+ (_a = node.config) !== null && _a !== void 0 ? _a : (node.config = config['node']);
27389
+ return initAngularComponentByType(node.type);
27390
+ };
27391
+ /**
27392
+ *
27393
+ * @param config
27394
+ * @returns
27395
+ */
27396
+ const customizeConnection = (config) => (data) => {
27397
+ const payload = data.payload;
27398
+ if (payload.renderType === 'custom' || config.connectionType == 'custom') {
27399
+ return CustomConnectionComponent;
27400
+ }
27401
+ return ConnectionComponent;
27402
+ };
27403
+ const initNodeByType = (type, config) => {
27404
+ const _nodes = {
27405
+ start: CircleNode,
27406
+ content: ContentNode,
27407
+ template: TemplateNode,
27408
+ end: CircleNode,
27409
+ };
27410
+ return new _nodes[type](config) || new ContentNode(config);
27411
+ };
27412
+ const initAngularComponentByType = (type) => {
27413
+ const _components = {
27414
+ content: ContentNodeComponent,
27415
+ start: CircleNodeComponent,
27416
+ end: CircleNodeComponent,
27417
+ template: TemplateNodeComponent,
27418
+ };
27419
+ return _components[type] || NodeComponent;
27420
+ };
27421
+
27422
+ const createSegmentedPath = (connection, options) => {
27423
+ const { multiPoints = true, offset = 0 } = options || {};
27424
+ return (points) => {
27425
+ if (points.length !== 2) {
27426
+ throw new Error('Exactly two points are required to create a linear path.');
27427
+ }
27428
+ const [start, end] = points;
27429
+ if (multiPoints) {
27430
+ const midpointY = (end.y - start.y) / 2 + start.y;
27431
+ const intermediatePoints = [
27432
+ { x: start.x, y: midpointY - offset },
27433
+ { x: end.x, y: midpointY + offset },
27434
+ ];
27435
+ // Use bezier curves between points to smooth corners
27436
+ return [
27437
+ Object.assign(Object.assign({}, start), { controlOut: { x: start.x, y: midpointY - offset } }),
27438
+ intermediatePoints[0],
27439
+ intermediatePoints[1],
27440
+ Object.assign(Object.assign({}, end), { controlIn: { x: end.x, y: midpointY + offset } }),
27441
+ ];
27442
+ }
27443
+ return [start, end];
27444
+ };
27445
+ };
27446
+
27447
+ const initPathPlugin = (config) => new ConnectionPathPlugin({
27448
+ curve: (c) => { var _a; return (_a = (c.curve || (config === null || config === void 0 ? void 0 : config.curve))) !== null && _a !== void 0 ? _a : curveLinear; },
27449
+ transformer: (c) => {
27450
+ var _a, _b, _c;
27451
+ return ((_a = config === null || config === void 0 ? void 0 : config.transform) === null || _a === void 0 ? void 0 : _a.active)
27452
+ ? createSegmentedPath(c, (_b = config === null || config === void 0 ? void 0 : config.transform) === null || _b === void 0 ? void 0 : _b.options)
27453
+ : Transformers.classic({
27454
+ vertical: !!(config === null || config === void 0 ? void 0 : config.vertical),
27455
+ curvature: (_c = config === null || config === void 0 ? void 0 : config.curvature) !== null && _c !== void 0 ? _c : 0.3,
27456
+ });
27457
+ },
27458
+ arrow: (connection) => (!(config === null || config === void 0 ? void 0 : config.arrow) ? false : config === null || config === void 0 ? void 0 : config.arrow),
27459
+ });
27460
+
27461
+ const socketPositionWatcher = (offset = 1, isVertical = false, editor) => getDOMSocketPosition({
27462
+ offset({ x, y }, nodeId, side, key) {
27463
+ return { x, y };
27464
+ },
27465
+ });
27466
+
27467
+ const createDiagramEditor = (container, injector, config) => __awaiter(void 0, void 0, void 0, function* () {
27468
+ var _a, _b, _c, _d, _e, _f, _g;
27469
+ //#region PLUGINS
27470
+ const socket = new Socket('', config === null || config === void 0 ? void 0 : config.socketType);
27471
+ const editor = new NodeEditor();
27472
+ const area = new AreaPlugin(container);
27473
+ const connection = new ConnectionPlugin();
27474
+ const pathPlugin = initPathPlugin(config === null || config === void 0 ? void 0 : config.path);
27475
+ const angularRender = new AngularPlugin({ injector });
27476
+ const readonly = new ReadonlyPlugin();
27477
+ const arrange = new AutoArrangePlugin();
27478
+ const reroute = new ReroutePlugin();
27479
+ const minimap = new MinimapPlugin((_a = config === null || config === void 0 ? void 0 : config.minimap) === null || _a === void 0 ? void 0 : _a.options);
27480
+ //#endregion
27481
+ //#region SELECTORS
27482
+ const selector = AreaExtensions.selector();
27483
+ const accumulating = AreaExtensions.accumulateOnCtrl();
27484
+ AreaExtensions.selectableNodes(area, selector, { accumulating });
27485
+ RerouteExtensions.selectablePins(reroute, selector, accumulating);
27486
+ //#endregion
27487
+ //#region PRESETS
27488
+ arrange.addPreset(Presets.classic.setup());
27489
+ angularRender.addPreset(Presets$1.classic.setup({
27490
+ socketPositionWatcher: socketPositionWatcher(0, (_b = config === null || config === void 0 ? void 0 : config.path) === null || _b === void 0 ? void 0 : _b.vertical, editor),
27491
+ customize: {
27492
+ node: customizeNode(config, editor),
27493
+ connection: customizeConnection(config),
27494
+ socket: customizeSocket(config),
27495
+ },
27496
+ }));
27497
+ angularRender.addPreset(Presets$1.minimap.setup({ size: ((_c = config === null || config === void 0 ? void 0 : config.minimap) === null || _c === void 0 ? void 0 : _c.size) || 150 }));
27498
+ connection.addPreset(Presets$2.classic.setup());
27499
+ if ((_d = config === null || config === void 0 ? void 0 : config.area) === null || _d === void 0 ? void 0 : _d.restrict) {
27500
+ const _scaling = (config === null || config === void 0 ? void 0 : config.area.scaling) || { min: 0.5, max: 1.5 };
27501
+ AreaExtensions.restrictor(area, {
27502
+ scaling: () => _scaling,
27503
+ });
27504
+ }
27505
+ //#endregion
27506
+ //#region USE
27507
+ if ((_e = config === null || config === void 0 ? void 0 : config.readonly) === null || _e === void 0 ? void 0 : _e.active) {
27508
+ editor.use(readonly.root);
27509
+ area.use(readonly.area);
27510
+ }
27511
+ editor.use(area);
27512
+ if (!((_f = config === null || config === void 0 ? void 0 : config.readonly) === null || _f === void 0 ? void 0 : _f.active)) {
27513
+ // Don't use the connection plugin in readonly mode
27514
+ area.use(connection);
27515
+ }
27516
+ if (config === null || config === void 0 ? void 0 : config.enableArrange) {
27517
+ area.use(arrange);
27518
+ }
27519
+ //@ts-ignore
27520
+ angularRender.use(pathPlugin);
27521
+ if (config.reroute) {
27522
+ //@ts-ignore
27523
+ angularRender.use(reroute);
27524
+ }
27525
+ if ((_g = config === null || config === void 0 ? void 0 : config.minimap) === null || _g === void 0 ? void 0 : _g.active) {
27526
+ area.use(minimap);
27527
+ }
27528
+ // Render Diagram
27529
+ area.use(angularRender);
27530
+ //#endregion
27531
+ return {
27532
+ editor,
27533
+ socket,
27534
+ plugins: {
27535
+ area,
27536
+ connection,
27537
+ arrange,
27538
+ reroute,
27539
+ readonly,
27540
+ },
27541
+ destroy: () => area.destroy(),
27542
+ layout: (props) => arrange.layout(props),
27543
+ fitToZoom: () => {
27544
+ AreaExtensions.zoomAt(area, editor.getNodes());
27545
+ },
27546
+ };
27547
+ });
27548
+
27549
+ /**
27550
+ *
27551
+ * @param node
27552
+ * @returns
27553
+ */
27554
+ const removeNode = (data, editor) => __awaiter(void 0, void 0, void 0, function* () {
27555
+ if (!data || !editor) {
27556
+ console.log('Node not found.');
27557
+ return;
27558
+ }
27559
+ const nodes = editor.getNodes();
27560
+ const node = editor.getNode(data.nodeId);
27561
+ if (!node) {
27562
+ console.log('Node not found.');
27563
+ return;
27564
+ }
27565
+ if (node.type === NODE_TYPE.start && nodes.length > 1) {
27566
+ return;
27567
+ }
27568
+ const nodeConfig = node.config;
27569
+ return (nodeConfig === null || nodeConfig === void 0 ? void 0 : nodeConfig.isLinked)
27570
+ ? yield removeNodeAndReplaceConnections(node, editor)
27571
+ : yield removeNodeAndConnections(node, editor);
27572
+ });
27573
+ /**
27574
+ *
27575
+ * @param node
27576
+ * @param editor
27577
+ */
27578
+ const removeNodeAndConnections = (node, editor) => __awaiter(void 0, void 0, void 0, function* () {
27579
+ removeConnections(node, editor);
27580
+ yield editor.removeNode(node.id);
27581
+ });
27582
+ /**
27583
+ *
27584
+ * @param node
27585
+ * @param editor
27586
+ */
27587
+ const removeNodeAndReplaceConnections = (node, editor) => __awaiter(void 0, void 0, void 0, function* () {
27588
+ const outputs = getConnections(editor, (connection) => connection.source == node.id);
27589
+ const inputs = getConnections(editor, (connection) => connection.target == node.id);
27590
+ if (!!inputs.length && !!outputs.length) {
27591
+ yield _updateConnections(outputs, inputs, editor);
27592
+ }
27593
+ else {
27594
+ removeConnections(node, editor);
27595
+ }
27596
+ yield editor.removeNode(node.id);
27597
+ });
27598
+ /**
27599
+ *
27600
+ * @param node
27601
+ * @param editor
27602
+ */
27603
+ const removeConnections = (node, editor) => {
27604
+ const connections = getConnections(editor, (connection) => connection.source === node.id || connection.target === node.id);
27605
+ if (connections.length) {
27606
+ connections.forEach((connection) => {
27607
+ editor.removeConnection(connection.id);
27608
+ });
27609
+ }
27610
+ };
27611
+ /**
27612
+ *
27613
+ * @param editor
27614
+ * @param predicate
27615
+ * @returns
27616
+ */
27617
+ const getConnections = (editor, predicate) => {
27618
+ return editor.getConnections().filter(predicate);
27619
+ };
27620
+ /**
27621
+ *
27622
+ * @param outputs
27623
+ * @param inputs
27624
+ * @param editor
27625
+ */
27626
+ const _updateConnections = (outputs, inputs, editor) => __awaiter(void 0, void 0, void 0, function* () {
27627
+ const source = inputs[0].source;
27628
+ const target = outputs[0].target;
27629
+ const sourceNode = editor.getNode(source);
27630
+ const targetNode = editor.getNode(target);
27631
+ [...outputs, ...inputs].forEach((connection) => __awaiter(void 0, void 0, void 0, function* () {
27632
+ yield editor.removeConnection(connection.id);
27633
+ }));
27634
+ if (!sourceNode || !targetNode) {
27635
+ return;
27636
+ }
27637
+ const connection = new Connection(sourceNode, `${sourceNode.id}-output`, targetNode, `${targetNode.id}-input`);
27638
+ yield editor.addConnection(connection);
27639
+ });
27640
+
27641
+ function serializePort(port) {
27642
+ return {
27643
+ id: port.id,
27644
+ label: port.label,
27645
+ socket: {
27646
+ name: port.socket.name,
27647
+ },
27648
+ };
27649
+ }
27650
+ function serializeControl(control) {
27651
+ if (control instanceof ClassicPreset.InputControl) {
27652
+ return {
27653
+ __type: 'ClassicPreset.InputControl',
27654
+ id: control.id,
27655
+ readonly: control.readonly,
27656
+ type: control.type,
27657
+ value: control.value,
27658
+ };
27659
+ }
27660
+ return null;
27661
+ }
27662
+
27663
+ class DiagramService {
27664
+ /**
27665
+ *
27666
+ */
27667
+ constructor(plugins) {
27668
+ this.plugins = plugins;
27669
+ this._editorSub = new Subject();
27670
+ this.onReady$ = this._editorSub.asObservable();
27671
+ }
27672
+ setEditor(editor) {
27673
+ this._editorSub.next(editor);
27674
+ this.editor = editor.editor;
27675
+ this.socket = editor.socket;
27676
+ this.destroy = editor.destroy;
27677
+ this.fitToZoom = editor.fitToZoom;
27678
+ }
27679
+ getContentNodes() {
27680
+ return this.editor
27681
+ .getNodes()
27682
+ .filter((nd) => ![NODE_TYPE.start, NODE_TYPE.end].includes(nd.type));
27683
+ }
27684
+ getNodesData() {
27685
+ return this.getContentNodes().map((node) => node.content.data);
27686
+ }
27687
+ canAddNode(nodeType) {
27688
+ if (nodeType === NODE_TYPE.content) {
27689
+ return true;
27690
+ }
27691
+ const _nodes = this.editor.getNodes();
27692
+ const _isExist = _nodes.some((nd) => nd.type === nodeType);
27693
+ return !_isExist;
27694
+ }
27695
+ addNode(node) {
27696
+ return __awaiter(this, void 0, void 0, function* () {
27697
+ yield this.editor.addNode(node);
27698
+ });
27699
+ }
27700
+ createNode(type = NODE_TYPE.content, config) {
27701
+ const _node = initNodeByType(type, config);
27702
+ if (config.type !== NODE_TYPE.start) {
27703
+ this.createInputs(_node);
27704
+ }
27705
+ if (config.type !== NODE_TYPE.end) {
27706
+ this.createOutputs(_node);
27707
+ }
27708
+ _node.notify = this.notifyListener(_node);
27709
+ return _node;
27710
+ }
27711
+ shouldAddStart(nodeType) {
27712
+ if (nodeType === NODE_TYPE.start) {
27713
+ return false;
27714
+ }
27715
+ const _nodes = this.editor.getNodes();
27716
+ const _isExist = _nodes.some((nd) => nd.type === NODE_TYPE.start);
27717
+ return !_isExist;
27718
+ }
27719
+ getLastNode() {
27720
+ const nodes = this.editor.getNodes();
27721
+ return nodes.length ? nodes[nodes.length - 1] : null;
27722
+ }
27723
+ getNodesByType(type) {
27724
+ return this.editor.getNodes().filter((nd) => nd.type === type);
27725
+ }
27726
+ getLastViewNode() {
27727
+ const nodes = Array.from(this.plugins.area.nodeViews.values());
27728
+ return nodes.length ? nodes[nodes.length - 1] : null;
27729
+ }
27730
+ createInputs(node) {
27731
+ node.addInput(`${node.id}-input`, new ClassicPreset.Input(this.socket));
27732
+ return node;
27733
+ }
27734
+ createOutputs(node) {
27735
+ node.addOutput(`${node.id}-output`, new ClassicPreset.Output(this.socket, '', false));
27736
+ return node;
27737
+ }
27738
+ addConnection(sourceNode, targetNode) {
27739
+ return __awaiter(this, void 0, void 0, function* () {
27740
+ yield this.editor.addConnection(this.createConnection(sourceNode, targetNode));
27741
+ });
27742
+ }
27743
+ createConnection(sourceNode, targetNode) {
27744
+ const connection = new Connection(sourceNode, `${sourceNode.id}-output`, targetNode, `${targetNode.id}-input`);
27745
+ connection.status = targetNode.status;
27746
+ return connection;
27747
+ }
27748
+ appendConnection(connection) {
27749
+ return __awaiter(this, void 0, void 0, function* () {
27750
+ yield this.editor.addConnection(connection);
27751
+ });
27752
+ }
27753
+ clear() {
27754
+ return __awaiter(this, void 0, void 0, function* () {
27755
+ return yield this.editor.clear();
27756
+ });
27757
+ }
27758
+ redraw() {
27759
+ this.editor.getNodes().forEach((node) => {
27760
+ this.plugins.area.update('node', node.id);
27761
+ });
27762
+ }
27763
+ notifyListener(node) {
27764
+ return (eventType, payload) => {
27765
+ var _a;
27766
+ const _actions = {
27767
+ [NOTIFY_EVENT.remove]: this._removeNode.bind(this),
27768
+ };
27769
+ return (_a = _actions[eventType]) === null || _a === void 0 ? void 0 : _a.call(_actions, payload);
27770
+ };
27771
+ }
27772
+ _removeNode(data) {
27773
+ return __awaiter(this, void 0, void 0, function* () {
27774
+ const node = this.editor.getNode(data.nodeId);
27775
+ if (!node) {
27776
+ return;
27777
+ }
27778
+ const viewNode = (id) => this.plugins.area.nodeViews.get(id);
27779
+ let config = node.config;
27780
+ let index = null;
27781
+ let position = null;
27782
+ let direction = null;
27783
+ if (config.isLinked) {
27784
+ index = this.editor.getNodes().findIndex((nd) => nd.id === data.nodeId);
27785
+ position = viewNode(data.nodeId).position;
27786
+ direction = node.directions;
27787
+ }
27788
+ this.plugins.readonly.disable();
27789
+ yield removeNode(data, this.editor);
27790
+ if (config.isLinked) {
27791
+ const nodes = this.editor.getNodes().slice(index);
27792
+ while (nodes.length) {
27793
+ const _node = nodes.shift();
27794
+ const _dir = Object.assign({}, _node.directions);
27795
+ const _position = Object.assign({}, viewNode(_node.id).position);
27796
+ _node.directions = direction;
27797
+ if (_node.type == NODE_TYPE.end) {
27798
+ position.y = Math.abs(Math.floor(position.y - (_node.height - NODE_CIRCLE_SIZE) / 2));
27799
+ }
27800
+ yield this.plugins.area.translate(_node.id, position);
27801
+ yield this.plugins.area.update('node', _node.id);
27802
+ position = _position;
27803
+ direction = _dir;
27804
+ }
27805
+ }
27806
+ this.plugins.readonly.enable();
27807
+ });
27808
+ }
27809
+ translateView() {
27810
+ return __awaiter(this, void 0, void 0, function* () {
27811
+ const { container, area } = this.plugins.area;
27812
+ const rect = container.getBoundingClientRect();
27813
+ const k = area.transform.k;
27814
+ const delta = -0.2;
27815
+ const ox = Math.max(0, (rect.left - container.clientWidth / 2) * k);
27816
+ const oy = Math.max(0, (rect.top - container.clientHeight / 2) * k);
27817
+ area.zoom(Math.max(0.1, k * (1 + delta)), ox * delta, oy * delta);
27818
+ });
27819
+ }
27820
+ }
27821
+ DiagramService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramService, deps: [{ token: DiagramPluginsService }], target: i0.ɵɵFactoryTarget.Injectable });
27822
+ DiagramService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramService });
27823
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramService, decorators: [{
27824
+ type: Injectable
27825
+ }], ctorParameters: function () { return [{ type: DiagramPluginsService }]; } });
27826
+
27827
+ class MessageService {
27828
+ constructor() {
27829
+ this.messageSubject = new Subject();
27830
+ }
27831
+ sendMessage(key, payload) {
27832
+ this.messageSubject.next({ key, payload });
27833
+ }
27834
+ onMessage(key) {
27835
+ return this.messageSubject.asObservable().pipe(filter$1((data) => data.key === key), map((data) => data.payload));
27836
+ }
27837
+ }
27838
+ MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27839
+ MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageService, providedIn: 'root' });
27840
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MessageService, decorators: [{
27841
+ type: Injectable,
27842
+ args: [{
27843
+ providedIn: 'root',
27844
+ }]
27845
+ }] });
27846
+
27847
+ class WorkflowService {
27848
+ constructor(_diagram, _plugins, _message) {
27849
+ this._diagram = _diagram;
27850
+ this._plugins = _plugins;
27851
+ this._message = _message;
27852
+ this._defaultNodeHeight = NODE_HEIGHT;
27853
+ this._defaultNodeWidth = NODE_WIDTH;
27854
+ this._defaultNodeCircleSize = NODE_CIRCLE_SIZE;
27855
+ this._defaultNodeMargin = NODE_MARGIN;
27856
+ this._offset = 60;
27857
+ }
27858
+ get _diagramClientRect() {
27859
+ return this._plugins.area.container.getBoundingClientRect();
27860
+ }
27861
+ setConfig(_config) {
27862
+ this._config = _config;
27863
+ this._message.sendMessage(MESSAGE_TYPE.configUpdated, _config);
27864
+ }
27865
+ addNode(nodeType, data) {
27866
+ var _a, _b;
27867
+ return __awaiter(this, void 0, void 0, function* () {
27868
+ if (!this._diagram.canAddNode(nodeType)) {
27869
+ if (this._isReadonlyDisabled()) {
27870
+ this._plugins.readonly.enable();
27871
+ }
27872
+ return;
27873
+ }
27874
+ let position = { x: this._offset, y: this._offset };
27875
+ if (this._isReadonlyEnabled()) {
27876
+ this._plugins.readonly.disable();
27877
+ }
27878
+ const _node = this._createNode(nodeType, data);
27879
+ if (this._diagram.shouldAddStart(nodeType)) {
27880
+ yield this.addStartNode(position);
27881
+ }
27882
+ if ((_a = this._config.node) === null || _a === void 0 ? void 0 : _a.isLinked) {
27883
+ const lastNode = yield this._linkToLastNode(_node);
27884
+ if (lastNode) {
27885
+ position = this._calculatePosition(_node, lastNode);
27886
+ }
27887
+ }
27888
+ yield this._diagram.addNode(_node);
27889
+ yield this._plugins.area.translate(_node.id, position);
27890
+ if ((_b = this._config) === null || _b === void 0 ? void 0 : _b.fitToView) {
27891
+ setTimeout(() => {
27892
+ this._diagram.fitToZoom();
27893
+ }, 300);
27894
+ }
27895
+ if (this._isReadonlyDisabled()) {
27896
+ this._plugins.readonly.enable();
27897
+ }
27898
+ });
27899
+ }
27900
+ removeEndNode() {
27901
+ return __awaiter(this, void 0, void 0, function* () {
27902
+ const node = this._diagram.getNodesByType(NODE_TYPE.end)[0];
27903
+ if (node) {
27904
+ yield removeNodeAndConnections(node, this._diagram.editor);
27905
+ }
27906
+ });
27907
+ }
27908
+ /**
27909
+ *
27910
+ * @param _node
27911
+ * @param lastNode
27912
+ * @returns
27913
+ */
27914
+ _calculatePosition(_node, lastNode) {
27915
+ const isEndNode = _node.type === NODE_TYPE.end;
27916
+ return {
27917
+ x: this._calculatePositionX(lastNode.node.type, lastNode.viewNode.position.x),
27918
+ y: this._calculatePositionY(isEndNode ? NODE_TYPE.end : lastNode.node.type, lastNode.viewNode.position.y),
27919
+ };
27920
+ }
27921
+ _createNode(nodeType, data, config) {
27922
+ return this._diagram.createNode(nodeType, Object.assign(Object.assign({ label: nodeType, type: nodeType, name: data.name, description: data.description, status: data.status }, (config ? config : {})), { content: data }));
27923
+ }
27924
+ addWrapNodesPipe(editor) {
27925
+ editor.addPipe((context) => __awaiter(this, void 0, void 0, function* () {
27926
+ if (context.type === 'nodecreate') {
27927
+ if (context.data.type === NODE_TYPE.end) {
27928
+ let node = this._diagram.getLastNode();
27929
+ node.directions.outputs = IN_OUT_DIRECTION.end;
27930
+ yield this._plugins.area.update('node', node.id);
27931
+ }
27932
+ else {
27933
+ return this._changeNodeSocketPosition(context);
27934
+ }
27935
+ }
27936
+ if (context.type === 'nodecreated' && context.data.type !== NODE_TYPE.end) {
27937
+ setTimeout(() => {
27938
+ this._updateNodePosition(context);
27939
+ });
27940
+ }
27941
+ return context;
27942
+ }));
27943
+ }
27944
+ _changeNodeSocketPosition(context) {
27945
+ const previousNode = this._diagram.getLastViewNode();
27946
+ if (previousNode && this._isNearEndBoundary(previousNode)) {
27947
+ context.data.directions.outputs = IN_OUT_DIRECTION.bottom;
27948
+ }
27949
+ if (previousNode && this._isOverEndBoundary(context.data, previousNode)) {
27950
+ context.data.directions.inputs = IN_OUT_DIRECTION.top;
27951
+ context.data.directions.outputs = IN_OUT_DIRECTION.end;
27952
+ }
27953
+ return Object.assign({}, context);
27954
+ }
27955
+ _linkToLastNode(_addedNode) {
27956
+ return __awaiter(this, void 0, void 0, function* () {
27957
+ let node = this._diagram.getLastNode();
27958
+ let viewNode = this._diagram.getLastViewNode();
27959
+ if (node && viewNode) {
27960
+ yield this._diagram.addConnection(node, _addedNode);
27961
+ return { node, viewNode };
27962
+ }
27963
+ return null;
27964
+ });
27965
+ }
27966
+ /**
27967
+ *
27968
+ * @returns
27969
+ */
27970
+ _isReadonlyDisabled() {
27971
+ return this._config.readonly && !this._plugins.readonly.enabled;
27972
+ }
27973
+ /**
27974
+ *
27975
+ * @returns
27976
+ */
27977
+ _isReadonlyEnabled() {
27978
+ return this._config.readonly && this._plugins.readonly.enabled;
27979
+ }
27980
+ /**
27981
+ *
27982
+ * @param position
27983
+ */
27984
+ addStartNode(position) {
27985
+ return __awaiter(this, void 0, void 0, function* () {
27986
+ const startNode = this._diagram.createNode(NODE_TYPE.start, {
27987
+ type: NODE_TYPE.start,
27988
+ label: NODE_TYPE.start,
27989
+ name: 'start',
27990
+ });
27991
+ yield this._diagram.addNode(startNode);
27992
+ yield this._plugins.area.translate(startNode.id, position);
27993
+ });
27994
+ }
27995
+ /**
27996
+ *
27997
+ * @param nodeType
27998
+ * @param y
27999
+ * @returns
28000
+ */
28001
+ _calculatePositionY(nodeType, y) {
28002
+ if (nodeType === NODE_TYPE.start) {
28003
+ return Math.abs(Math.floor(y - (this._defaultNodeHeight - this._defaultNodeCircleSize) / 2));
28004
+ }
28005
+ if (nodeType === NODE_TYPE.end) {
28006
+ return Math.abs(Math.floor(y + (this._defaultNodeHeight - this._defaultNodeCircleSize) / 2));
28007
+ }
28008
+ return y;
28009
+ }
28010
+ /**
28011
+ *
28012
+ * @param nodeType
28013
+ * @param lastNodePositionX
28014
+ * @returns
28015
+ */
28016
+ _calculatePositionX(nodeType, lastNodePositionX) {
28017
+ const _nodeWidth = nodeType === NODE_TYPE.content
28018
+ ? this._defaultNodeWidth
28019
+ : this._defaultNodeCircleSize;
28020
+ return lastNodePositionX + this._defaultNodeMargin + _nodeWidth;
28021
+ }
28022
+ /**
28023
+ *
28024
+ * @param node
28025
+ * @param previousNode
28026
+ * @returns
28027
+ */
28028
+ _isOverEndBoundary(node, previousNode) {
28029
+ var _a;
28030
+ const _diagramWidth = Number((_a = this._diagramClientRect) === null || _a === void 0 ? void 0 : _a.width) - this._defaultNodeMargin;
28031
+ const _width = previousNode.position.x + (node.width + this._defaultNodeMargin) * 2;
28032
+ return _width >= _diagramWidth;
28033
+ }
28034
+ /**
28035
+ *
28036
+ * @param previousNode
28037
+ * @returns
28038
+ */
28039
+ _isNearEndBoundary(previousNode) {
28040
+ var _a;
28041
+ const currentPosition = previousNode.position.x +
28042
+ this._defaultNodeWidth +
28043
+ this._defaultNodeMargin * 2 +
28044
+ this._offset;
28045
+ const wrapLine = Number((_a = this._diagramClientRect) === null || _a === void 0 ? void 0 : _a.width) - this._defaultNodeWidth * 2;
28046
+ return currentPosition >= wrapLine;
28047
+ }
28048
+ _updateNodePosition(context) {
28049
+ var _a, _b;
28050
+ return __awaiter(this, void 0, void 0, function* () {
28051
+ const _previousNode = this._diagram.getLastNode();
28052
+ const _nodeViewPosition = (_a = this._plugins.area.nodeViews.get(context.data.id)) === null || _a === void 0 ? void 0 : _a.position;
28053
+ if (_previousNode && _nodeViewPosition) {
28054
+ const _diagramWidth = Number((_b = this._diagramClientRect) === null || _b === void 0 ? void 0 : _b.width);
28055
+ const _currentX = _nodeViewPosition.x + context.data.width;
28056
+ if (_currentX >= _diagramWidth) {
28057
+ this._plugins.readonly.disable();
28058
+ const _fNode = this._diagram.editor
28059
+ .getNodes()
28060
+ .find((nd) => nd.type !== NODE_TYPE.start);
28061
+ let x = this._offset;
28062
+ if (_fNode) {
28063
+ const _fViewNode = this._plugins.area.nodeViews.get(_fNode.id);
28064
+ x = (_fViewNode === null || _fViewNode === void 0 ? void 0 : _fViewNode.position.x) || this._offset;
28065
+ }
28066
+ yield this._plugins.area.translate(context.data.id, {
28067
+ x: x,
28068
+ y: _nodeViewPosition.y + this._defaultNodeMargin + context.data.height,
28069
+ });
28070
+ this._plugins.readonly.enable();
28071
+ }
28072
+ }
28073
+ return context;
28074
+ });
28075
+ }
28076
+ }
28077
+ WorkflowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: WorkflowService, deps: [{ token: DiagramService }, { token: DiagramPluginsService }, { token: MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
28078
+ WorkflowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: WorkflowService });
28079
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: WorkflowService, decorators: [{
28080
+ type: Injectable
28081
+ }], ctorParameters: function () { return [{ type: DiagramService }, { type: DiagramPluginsService }, { type: MessageService }]; } });
28082
+
28083
+ class BaseNodeComponent extends NodeComponent {
28084
+ constructor(cdr, _messageService) {
28085
+ super(cdr);
28086
+ this._messageService = _messageService;
28087
+ this.nodeTypes = NODE_TYPE;
28088
+ this.directions = IN_OUT_DIRECTION;
28089
+ this.destroy$ = new Subject();
28090
+ this._cdr = cdr;
28091
+ this._messageService
28092
+ .onMessage(MESSAGE_TYPE.configUpdated)
28093
+ .pipe(takeUntil(this.destroy$))
28094
+ .subscribe((res) => {
28095
+ this._cdr.detectChanges();
28096
+ });
28097
+ }
28098
+ removeNode() {
28099
+ this.data.notify(NOTIFY_EVENT.remove, { nodeId: this.data.id });
28100
+ }
28101
+ ngOnDestroy() {
28102
+ this.destroy$.next();
28103
+ this.destroy$.complete();
28104
+ }
28105
+ }
28106
+ BaseNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseNodeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: MessageService }], target: i0.ɵɵFactoryTarget.Component });
28107
+ BaseNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BaseNodeComponent, selector: "ng-component", inputs: { data: "data" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
28108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseNodeComponent, decorators: [{
28109
+ type: Component,
28110
+ args: [{
28111
+ template: '',
28112
+ }]
28113
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: MessageService }]; }, propDecorators: { data: [{
28114
+ type: Input
28115
+ }] } });
28116
+
28117
+ class RemoveButtonComponent {
28118
+ constructor() {
28119
+ this.remove = new EventEmitter();
28120
+ }
28121
+ }
28122
+ RemoveButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RemoveButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28123
+ RemoveButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RemoveButtonComponent, selector: "node-remove-button", outputs: { remove: "remove" }, ngImport: i0, template: `
28124
+ <button
28125
+ mat-icon-button
28126
+ (click)="remove.emit()"
28127
+ (pointerdown)="$event.stopPropagation()"
28128
+ (dblclick)="$event.stopPropagation()"
28129
+ class="remove-icon"
28130
+ >
28131
+ <mat-icon>close</mat-icon>
28132
+ </button>
28133
+ `, isInline: true, styles: ["\n :host {\n --size: var(--remove-icon-size, 30px);\n position: var(--remove-icon-position, absolute);\n inset: var(--remove-icon-inset, 0 0 auto auto);\n opacity: var(--remove-icon-opacity, 0);\n background: var(--remove-icon-background, inherit);\n width: var(--size);\n height: var(--size);\n line-height: var(var(--remove-icon-size), calc(var(--size) - 6));\n border-radius: 50%;\n z-index: 2;\n .remove-icon {\n border: 1px solid currentColor;\n border-radius: 50%;\n width: var(--size);\n height: var(--size);\n line-height: var(--remove-icon-size, 30px);\n background: var(--remove-icon-background, inherit);\n }\n }\n "], components: [{ type: i1$8.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$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
28134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RemoveButtonComponent, decorators: [{
28135
+ type: Component,
28136
+ args: [{
28137
+ selector: 'node-remove-button',
28138
+ template: `
28139
+ <button
28140
+ mat-icon-button
28141
+ (click)="remove.emit()"
28142
+ (pointerdown)="$event.stopPropagation()"
28143
+ (dblclick)="$event.stopPropagation()"
28144
+ class="remove-icon"
28145
+ >
28146
+ <mat-icon>close</mat-icon>
28147
+ </button>
28148
+ `,
28149
+ styles: [
28150
+ `
28151
+ :host {
28152
+ --size: var(--remove-icon-size, 30px);
28153
+ position: var(--remove-icon-position, absolute);
28154
+ inset: var(--remove-icon-inset, 0 0 auto auto);
28155
+ opacity: var(--remove-icon-opacity, 0);
28156
+ background: var(--remove-icon-background, inherit);
28157
+ width: var(--size);
28158
+ height: var(--size);
28159
+ line-height: var(var(--remove-icon-size), calc(var(--size) - 6));
28160
+ border-radius: 50%;
28161
+ z-index: 2;
28162
+ .remove-icon {
28163
+ border: 1px solid currentColor;
28164
+ border-radius: 50%;
28165
+ width: var(--size);
28166
+ height: var(--size);
28167
+ line-height: var(--remove-icon-size, 30px);
28168
+ background: var(--remove-icon-background, inherit);
28169
+ }
28170
+ }
28171
+ `,
28172
+ ],
28173
+ }]
28174
+ }], propDecorators: { remove: [{
28175
+ type: Output
28176
+ }] } });
28177
+
28178
+ class NodeInputsComponent {
28179
+ }
28180
+ NodeInputsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NodeInputsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28181
+ NodeInputsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NodeInputsComponent, selector: "node-inputs", inputs: { direction: "direction", data: "data", seed: "seed", emit: "emit", sortByIndex: "sortByIndex" }, host: { properties: { "class": " 'da-node__inputs inputs-' + direction" } }, ngImport: i0, template: `
28182
+ <div
28183
+ *ngFor="let input of data.inputs | keyvalue : sortByIndex"
28184
+ class="da-node__inputs__socket"
28185
+ style=" height: var(--socket-size, 16px);"
28186
+ refComponent
28187
+ [data]="{
28188
+ type: 'socket',
28189
+ side: 'input',
28190
+ key: input.key,
28191
+ nodeId: data.id,
28192
+ payload: input.value?.socket,
28193
+ seed: seed
28194
+ }"
28195
+ [emit]="emit"
28196
+ ></div>
28197
+ `, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$8.RefDirective, selector: "[refComponent]", inputs: ["data", "emit"] }], pipes: { "keyvalue": i4.KeyValuePipe }, encapsulation: i0.ViewEncapsulation.None });
28198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NodeInputsComponent, decorators: [{
28199
+ type: Component,
28200
+ args: [{
28201
+ selector: 'node-inputs',
28202
+ encapsulation: ViewEncapsulation.None,
28203
+ host: {
28204
+ '[class]': " 'da-node__inputs inputs-' + direction",
28205
+ },
28206
+ template: `
28207
+ <div
28208
+ *ngFor="let input of data.inputs | keyvalue : sortByIndex"
28209
+ class="da-node__inputs__socket"
28210
+ style=" height: var(--socket-size, 16px);"
28211
+ refComponent
28212
+ [data]="{
28213
+ type: 'socket',
28214
+ side: 'input',
28215
+ key: input.key,
28216
+ nodeId: data.id,
28217
+ payload: input.value?.socket,
28218
+ seed: seed
28219
+ }"
28220
+ [emit]="emit"
28221
+ ></div>
28222
+ `,
28223
+ }]
28224
+ }], propDecorators: { direction: [{
28225
+ type: Input
28226
+ }], data: [{
28227
+ type: Input
28228
+ }], seed: [{
28229
+ type: Input
28230
+ }], emit: [{
28231
+ type: Input
28232
+ }], sortByIndex: [{
28233
+ type: Input
28234
+ }] } });
28235
+
28236
+ class NodeOutputsComponent {
28237
+ }
28238
+ NodeOutputsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NodeOutputsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28239
+ NodeOutputsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NodeOutputsComponent, selector: "node-outputs", inputs: { direction: "direction", data: "data", seed: "seed", emit: "emit", sortByIndex: "sortByIndex" }, host: { properties: { "class": " 'da-node__outputs outputs-' + direction" } }, ngImport: i0, template: `<div
28240
+ class="da-node__outputs__socket"
28241
+ style=" height: var(--socket-size, 16px);"
28242
+ *ngFor="let output of data.outputs | keyvalue : sortByIndex"
28243
+ refComponent
28244
+ [data]="{
28245
+ type: 'socket',
28246
+ side: 'output',
28247
+ key: output.key,
28248
+ nodeId: data.id,
28249
+ payload: output.value?.socket,
28250
+ seed: seed
28251
+ }"
28252
+ [emit]="emit"
28253
+ ></div>`, isInline: true, directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$8.RefDirective, selector: "[refComponent]", inputs: ["data", "emit"] }], pipes: { "keyvalue": i4.KeyValuePipe }, encapsulation: i0.ViewEncapsulation.None });
28254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NodeOutputsComponent, decorators: [{
28255
+ type: Component,
28256
+ args: [{
28257
+ selector: 'node-outputs',
28258
+ encapsulation: ViewEncapsulation.None,
28259
+ host: {
28260
+ '[class]': " 'da-node__outputs outputs-' + direction",
28261
+ },
28262
+ template: `<div
28263
+ class="da-node__outputs__socket"
28264
+ style=" height: var(--socket-size, 16px);"
28265
+ *ngFor="let output of data.outputs | keyvalue : sortByIndex"
28266
+ refComponent
28267
+ [data]="{
28268
+ type: 'socket',
28269
+ side: 'output',
28270
+ key: output.key,
28271
+ nodeId: data.id,
28272
+ payload: output.value?.socket,
28273
+ seed: seed
28274
+ }"
28275
+ [emit]="emit"
28276
+ ></div>`,
28277
+ }]
28278
+ }], propDecorators: { direction: [{
28279
+ type: Input
28280
+ }], data: [{
28281
+ type: Input
28282
+ }], seed: [{
28283
+ type: Input
28284
+ }], emit: [{
28285
+ type: Input
28286
+ }], sortByIndex: [{
28287
+ type: Input
28288
+ }] } });
28289
+
28290
+ class CircleNodeComponent extends BaseNodeComponent {
28291
+ }
28292
+ CircleNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CircleNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28293
+ CircleNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CircleNodeComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"da-node da-node--{{ data.type }} circle-node circle-node--{{ data.type }} {{\r\n data?.status ? ' da-node--' + data?.status : ''\r\n }} \"\r\n [style.--node-width]=\"data.width + 'px'\"\r\n [style.--node-height]=\"data.width + 'px'\"\r\n>\r\n <node-remove-button\r\n (remove)=\"removeNode()\"\r\n *ngIf=\"data.config?.canRemove\"\r\n ></node-remove-button>\r\n\r\n <div\r\n class=\"da-node__title circle-node__title\"\r\n [attr.tooltip]=\"data.content?.data?.tooltip\"\r\n [class.node-tooltip]=\"!!data.content?.data?.tooltip\"\r\n >\r\n {{ 'diagram.' + data.name | translate }}\r\n </div>\r\n\r\n <node-inputs\r\n [direction]=\"data.directions.inputs\"\r\n [data]=\"data\"\r\n [seed]=\"seed\"\r\n [emit]=\"emit\"\r\n [sortByIndex]=\"sortByIndex\"\r\n ></node-inputs>\r\n\r\n <node-outputs\r\n [direction]=\"data.directions.outputs\"\r\n [data]=\"data\"\r\n [seed]=\"seed\"\r\n [emit]=\"emit\"\r\n [sortByIndex]=\"sortByIndex\"\r\n ></node-outputs>\r\n</div>\r\n", styles: [".da-node{--width: var(--node-width);--height: var(--node-height);--socket-offset-negative: 0;--socket-position-start: var(--socket-offset-negative) auto;--socket-position-end: auto var(--socket-offset-negative);width:var(--width);height:var(--height);display:var(--node-display, flex);justify-content:var(--node-justify, center);align-items:var(--node-items, center);flex-direction:var(--node-direction, column);border:var(--node-border, 1px solid #234990);border-radius:var(--node-radius, 10px);color:var(--node-color, #234990);background:var(--node-background, #fff);box-shadow:var(--node-shadow, unset);cursor:var(--node-cursor, pointer)}.da-node--draft{--node-color: var(--status-draft-color, #555);--node-background: var( --status-draft-background, #f5f5f5 );--node-border: var(--status-draft-border, 1px solid #555);--node-shadow: var(--status-draft-shadow, unset)}.da-node--upcoming{--node-color: var(--status-upcoming-color, var(--Primary-100, #234990));--node-background: var( --status-upcoming-background, #fff );--node-border: var(--status-upcoming-border, 1px solid var(--node-color, #234990));--node-shadow: var(--status-upcoming-shadow, unset)}.da-node--inProgress{--node-color: var(--status-progress-color, var(--orange-color, #f29339));--node-background: var( --status-progress-background, var(--light-orange-color, #fdf4dc) );--node-border: var(--status-progress-border, 1px solid var(--orange-color, #f29339));--node-shadow: var(--status-progress-shadow, var(--node-shadow, inset 0 0 0 2px var(--node-background), inset 0 0 0 3px var(--orange-color, #f29339)))}.da-node--completed{--node-color: var(--status-completed-color, var(--green-color, #05cd99));--node-background: var( --status-completed-background, var(--light-green-color, #f0fff0) );--node-border: var(--status-completed-border, 1px solid var(--green-color, #05cd99));--node-shadow: var(--status-completed-shadow, unset)}.da-node--approved{--node-color: var(--status-completed-color, var(--green-color, #05cd99));--node-background: var( --status-completed-background, var(--light-green-color, #f0fff0) );--node-border: var(--status-completed-border, 1px solid var(--green-color, #05cd99));--node-shadow: var(--status-completed-shadow, unset)}.da-node--rejected{--node-color: var(--status-rejected-color, var(--red-color, #bf0b30));--node-background: var( --status-rejected-background, var(--light-red-color, #ffe0e7) );--node-border: var(--status-rejected-border, 1px solid var(--red-color, #bf0b30));--node-shadow: var(--status-rejected-shadow, unset)}.da-node__check-status{position:absolute;position:var(--check-icon-position, absolute);inset:var(--check-icon-inset, -6px -6px auto auto);color:var(--check-icon-color)}.da-node__check-status--completed{--check-icon-color: var(--status-completed-color)}.da-node__check-status--rejected{--check-icon-color: var(--status-rejected-color)}.da-node__title{text-align:center;font-weight:600}.da-node__description,.da-node__title{color:var(--node-text-color, #28282d);font-size:var(--node-text-font-size, .8rem);text-align:var(--node-text-align, center);padding-inline:var(--node-text-inline, .4rem)}.da-node__icon{position:absolute;inset-inline-start:var(--node-icon-inset-inline, 5px);inset-block-start:var(--node-icon-inset-block, 5px)}.da-node__inputs,.da-node__outputs{position:var(--input-output-position, absolute);inset-inline:var(--in-out-inset-inline);inset-block:var(--in-out-inset-block);height:var(--socket-size, 16px)}.da-node__inputs__socket,.da-node__outputs__socket{height:var(--socket-size, 16px)}.da-node__inputs.inputs-top{--in-out-inset-block: var(--socket-position-start)}.da-node__inputs.inputs-bottom{--in-out-inset-block: var(--socket-position-end)}.da-node__inputs.inputs-start{--in-out-inset-inline: var(--socket-position-start)}.da-node__inputs.inputs-end{--in-out-inset-inline: var(--socket-position-end)}.da-node__outputs.outputs-top{--in-out-inset-block: var(--socket-offset-negative)}.da-node__outputs.outputs-bottom{--in-out-inset-block: var(--socket-position-end)}.da-node__outputs.outputs-start{--in-out-inset-inline: var(--socket-position-start)}.da-node__outputs.outputs-end{--in-out-inset-inline: var(--socket-position-end)}.da-node:hover{--remove-icon-inset: -8px -8px auto auto;--remove-icon-opacity: 1}\n", ".circle-node{--node-radius: 50%}.circle-node__title.node-tooltip:after{content:attr(tooltip);position:absolute;left:50%;top:-6px;transform:translate(-50%) translateY(-100%);background:rgba(0,0,0,.7);text-align:center;color:#fff;padding:4px 2px;font-size:12px;min-width:100px;border-radius:5px;pointer-events:none;display:var(--tooltip-display, none)}.circle-node:hover{--tooltip-display: block}.da-node--end{border-width:3px}\n"], components: [{ type: RemoveButtonComponent, selector: "node-remove-button", outputs: ["remove"] }, { type: NodeInputsComponent, selector: "node-inputs", inputs: ["direction", "data", "seed", "emit", "sortByIndex"] }, { type: NodeOutputsComponent, selector: "node-outputs", inputs: ["direction", "data", "seed", "emit", "sortByIndex"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1$1.TranslatePipe } });
28294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CircleNodeComponent, decorators: [{
28295
+ type: Component,
28296
+ args: [{
28297
+ templateUrl: './circle-node.component.html',
28298
+ styleUrls: ['../../styles/node.scss', './circle-node.component.scss'],
28299
+ }]
28300
+ }] });
28301
+
28302
+ class StatusIconComponent {
28303
+ getIcon() {
28304
+ switch (this.status) {
28305
+ case NODE_STATUS.completed:
28306
+ return 'check_circle';
28307
+ case NODE_STATUS.rejected:
28308
+ return 'cancel';
28309
+ default:
28310
+ return '';
28311
+ }
28312
+ }
28313
+ }
28314
+ StatusIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StatusIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28315
+ StatusIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: StatusIconComponent, selector: "status-icon", inputs: { status: "status" }, host: { properties: { "class": "'da-node__check-status da-node__check-status--' + status" } }, ngImport: i0, template: ` <mat-icon>
28316
+ {{ getIcon() }}
28317
+ </mat-icon>`, isInline: true, components: [{ type: i2$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
28318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StatusIconComponent, decorators: [{
28319
+ type: Component,
28320
+ args: [{
28321
+ selector: 'status-icon',
28322
+ template: ` <mat-icon>
28323
+ {{ getIcon() }}
28324
+ </mat-icon>`,
28325
+ encapsulation: ViewEncapsulation.None,
28326
+ changeDetection: ChangeDetectionStrategy.OnPush,
28327
+ host: {
28328
+ '[class]': "'da-node__check-status da-node__check-status--' + status",
28329
+ },
28330
+ }]
28331
+ }], propDecorators: { status: [{
28332
+ type: Input
28333
+ }] } });
28334
+
28335
+ class NodeIconComponent {
28336
+ isIconTemplate(icon) {
28337
+ return icon instanceof TemplateRef;
28338
+ }
28339
+ }
28340
+ NodeIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NodeIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28341
+ NodeIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NodeIconComponent, selector: "node-icon", inputs: { icon: "icon" }, host: { classAttribute: "da-node__icon" }, ngImport: i0, template: `
28342
+ <mat-icon *ngIf="!isIconTemplate(icon)">{{ icon }}</mat-icon>
28343
+ <span *ngIf="isIconTemplate(icon)">
28344
+ <ng-container [ngTemplateOutlet]="icon"></ng-container>
28345
+ </span>
28346
+ `, isInline: true, components: [{ type: i2$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], encapsulation: i0.ViewEncapsulation.None });
28347
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NodeIconComponent, decorators: [{
28348
+ type: Component,
28349
+ args: [{
28350
+ selector: 'node-icon',
28351
+ template: `
28352
+ <mat-icon *ngIf="!isIconTemplate(icon)">{{ icon }}</mat-icon>
28353
+ <span *ngIf="isIconTemplate(icon)">
28354
+ <ng-container [ngTemplateOutlet]="icon"></ng-container>
28355
+ </span>
28356
+ `,
28357
+ encapsulation: ViewEncapsulation.None,
28358
+ host: {
28359
+ class: 'da-node__icon',
28360
+ },
28361
+ }]
28362
+ }], propDecorators: { icon: [{
28363
+ type: Input
28364
+ }] } });
28365
+
28366
+ class ContentNodeComponent extends BaseNodeComponent {
28367
+ }
28368
+ ContentNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ContentNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28369
+ ContentNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ContentNodeComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"da-node da-node--{{ data.type }} {{\r\n data?.status ? ' da-node--' + data?.status : ''\r\n }} {{ data?.styleClass }}\"\r\n [style.--node-width]=\"data.width + 'px'\"\r\n [style.--node-height]=\"data.height + 'px'\"\r\n>\r\n <node-remove-button (remove)=\"removeNode()\" *ngIf=\"data?.config?.canRemove\">\r\n </node-remove-button>\r\n\r\n <status-icon [status]=\"data?.status\" *ngIf=\"data?.status\"></status-icon>\r\n\r\n <node-icon *ngIf=\"data.content?.icon\" [icon]=\"data.content?.icon\"></node-icon>\r\n\r\n <div class=\"da-node__title\">{{ data.name }}</div>\r\n <div class=\"da-node__description\" *ngIf=\"data.description\">\r\n {{ data.description }}\r\n </div>\r\n <node-inputs\r\n [direction]=\"data.directions.inputs\"\r\n [data]=\"data\"\r\n [seed]=\"seed\"\r\n [emit]=\"emit\"\r\n [sortByIndex]=\"sortByIndex\"\r\n ></node-inputs>\r\n\r\n <node-outputs\r\n [direction]=\"data.directions.outputs\"\r\n [data]=\"data\"\r\n [seed]=\"seed\"\r\n [emit]=\"emit\"\r\n [sortByIndex]=\"sortByIndex\"\r\n ></node-outputs>\r\n</div>\r\n", styles: [".da-node{--width: var(--node-width);--height: var(--node-height);--socket-offset-negative: 0;--socket-position-start: var(--socket-offset-negative) auto;--socket-position-end: auto var(--socket-offset-negative);width:var(--width);height:var(--height);display:var(--node-display, flex);justify-content:var(--node-justify, center);align-items:var(--node-items, center);flex-direction:var(--node-direction, column);border:var(--node-border, 1px solid #234990);border-radius:var(--node-radius, 10px);color:var(--node-color, #234990);background:var(--node-background, #fff);box-shadow:var(--node-shadow, unset);cursor:var(--node-cursor, pointer)}.da-node--draft{--node-color: var(--status-draft-color, #555);--node-background: var( --status-draft-background, #f5f5f5 );--node-border: var(--status-draft-border, 1px solid #555);--node-shadow: var(--status-draft-shadow, unset)}.da-node--upcoming{--node-color: var(--status-upcoming-color, var(--Primary-100, #234990));--node-background: var( --status-upcoming-background, #fff );--node-border: var(--status-upcoming-border, 1px solid var(--node-color, #234990));--node-shadow: var(--status-upcoming-shadow, unset)}.da-node--inProgress{--node-color: var(--status-progress-color, var(--orange-color, #f29339));--node-background: var( --status-progress-background, var(--light-orange-color, #fdf4dc) );--node-border: var(--status-progress-border, 1px solid var(--orange-color, #f29339));--node-shadow: var(--status-progress-shadow, var(--node-shadow, inset 0 0 0 2px var(--node-background), inset 0 0 0 3px var(--orange-color, #f29339)))}.da-node--completed{--node-color: var(--status-completed-color, var(--green-color, #05cd99));--node-background: var( --status-completed-background, var(--light-green-color, #f0fff0) );--node-border: var(--status-completed-border, 1px solid var(--green-color, #05cd99));--node-shadow: var(--status-completed-shadow, unset)}.da-node--approved{--node-color: var(--status-completed-color, var(--green-color, #05cd99));--node-background: var( --status-completed-background, var(--light-green-color, #f0fff0) );--node-border: var(--status-completed-border, 1px solid var(--green-color, #05cd99));--node-shadow: var(--status-completed-shadow, unset)}.da-node--rejected{--node-color: var(--status-rejected-color, var(--red-color, #bf0b30));--node-background: var( --status-rejected-background, var(--light-red-color, #ffe0e7) );--node-border: var(--status-rejected-border, 1px solid var(--red-color, #bf0b30));--node-shadow: var(--status-rejected-shadow, unset)}.da-node__check-status{position:absolute;position:var(--check-icon-position, absolute);inset:var(--check-icon-inset, -6px -6px auto auto);color:var(--check-icon-color)}.da-node__check-status--completed{--check-icon-color: var(--status-completed-color)}.da-node__check-status--rejected{--check-icon-color: var(--status-rejected-color)}.da-node__title{text-align:center;font-weight:600}.da-node__description,.da-node__title{color:var(--node-text-color, #28282d);font-size:var(--node-text-font-size, .8rem);text-align:var(--node-text-align, center);padding-inline:var(--node-text-inline, .4rem)}.da-node__icon{position:absolute;inset-inline-start:var(--node-icon-inset-inline, 5px);inset-block-start:var(--node-icon-inset-block, 5px)}.da-node__inputs,.da-node__outputs{position:var(--input-output-position, absolute);inset-inline:var(--in-out-inset-inline);inset-block:var(--in-out-inset-block);height:var(--socket-size, 16px)}.da-node__inputs__socket,.da-node__outputs__socket{height:var(--socket-size, 16px)}.da-node__inputs.inputs-top{--in-out-inset-block: var(--socket-position-start)}.da-node__inputs.inputs-bottom{--in-out-inset-block: var(--socket-position-end)}.da-node__inputs.inputs-start{--in-out-inset-inline: var(--socket-position-start)}.da-node__inputs.inputs-end{--in-out-inset-inline: var(--socket-position-end)}.da-node__outputs.outputs-top{--in-out-inset-block: var(--socket-offset-negative)}.da-node__outputs.outputs-bottom{--in-out-inset-block: var(--socket-position-end)}.da-node__outputs.outputs-start{--in-out-inset-inline: var(--socket-position-start)}.da-node__outputs.outputs-end{--in-out-inset-inline: var(--socket-position-end)}.da-node:hover{--remove-icon-inset: -8px -8px auto auto;--remove-icon-opacity: 1}\n"], components: [{ type: RemoveButtonComponent, selector: "node-remove-button", outputs: ["remove"] }, { type: StatusIconComponent, selector: "status-icon", inputs: ["status"] }, { type: NodeIconComponent, selector: "node-icon", inputs: ["icon"] }, { type: NodeInputsComponent, selector: "node-inputs", inputs: ["direction", "data", "seed", "emit", "sortByIndex"] }, { type: NodeOutputsComponent, selector: "node-outputs", inputs: ["direction", "data", "seed", "emit", "sortByIndex"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
28370
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ContentNodeComponent, decorators: [{
28371
+ type: Component,
28372
+ args: [{
28373
+ templateUrl: './content-node.component.html',
28374
+ styleUrls: ['../../styles/node.scss'],
28375
+ }]
28376
+ }] });
28377
+
28378
+ class CustomConnectionComponent extends ConnectionComponent {
28379
+ }
28380
+ CustomConnectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28381
+ CustomConnectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomConnectionComponent, selector: "connection", inputs: { data: "data" }, usesInheritance: true, ngImport: i0, template: `
28382
+ <svg
28383
+ data-testid="connection"
28384
+ style="z-index:-1"
28385
+ class="{{ data?.status ? 'connection-status-' + data?.status : '' }}"
28386
+ >
28387
+ <path [attr.d]="path" />
28388
+ </svg>
28389
+ `, isInline: true, styles: ["\n svg {\n overflow: visible;\n position: absolute;\n pointer-events: none;\n path {\n fill: none;\n stroke-width: 2px;\n stroke: var(--path-color, #1b3e7f);\n pointer-events: auto;\n }\n }\n "] });
28390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomConnectionComponent, decorators: [{
28391
+ type: Component,
28392
+ args: [{
28393
+ selector: 'connection',
28394
+ styles: [
28395
+ `
28396
+ svg {
28397
+ overflow: visible;
28398
+ position: absolute;
28399
+ pointer-events: none;
28400
+ path {
28401
+ fill: none;
28402
+ stroke-width: 2px;
28403
+ stroke: var(--path-color, #1b3e7f);
28404
+ pointer-events: auto;
28405
+ }
28406
+ }
28407
+ `,
28408
+ ],
28409
+ template: `
28410
+ <svg
28411
+ data-testid="connection"
28412
+ style="z-index:-1"
28413
+ class="{{ data?.status ? 'connection-status-' + data?.status : '' }}"
28414
+ >
28415
+ <path [attr.d]="path" />
28416
+ </svg>
28417
+ `,
28418
+ }]
28419
+ }], propDecorators: { data: [{
28420
+ type: Input
28421
+ }] } });
28422
+
28423
+ class CustomSocketComponent extends SocketComponent {
28424
+ }
28425
+ CustomSocketComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomSocketComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28426
+ CustomSocketComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CustomSocketComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: ``, isInline: true, styles: ["\n :host {\n display: inline-block;\n cursor: pointer;\n border: 1px solid var(--primary-color, #1b3e7f);\n width: var(--socket-size, 16px);\n height: var(--socket-size, 16px);\n vertical-align: middle;\n background: white;\n z-index: 2;\n box-sizing: border-box;\n opacity: var(--socket-opacity, 0);\n border-radius: var(--socket-radius, 50%);\n &:hover {\n box-shadow: 0 0 0 1px var(--primary-color, #1b3e7f);\n }\n }\n "] });
28427
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomSocketComponent, decorators: [{
28428
+ type: Component,
28429
+ args: [{
28430
+ template: ``,
28431
+ styles: [
28432
+ `
28433
+ :host {
28434
+ display: inline-block;
28435
+ cursor: pointer;
28436
+ border: 1px solid var(--primary-color, #1b3e7f);
28437
+ width: var(--socket-size, 16px);
28438
+ height: var(--socket-size, 16px);
28439
+ vertical-align: middle;
28440
+ background: white;
28441
+ z-index: 2;
28442
+ box-sizing: border-box;
28443
+ opacity: var(--socket-opacity, 0);
28444
+ border-radius: var(--socket-radius, 50%);
28445
+ &:hover {
28446
+ box-shadow: 0 0 0 1px var(--primary-color, #1b3e7f);
28447
+ }
28448
+ }
28449
+ `,
28450
+ ],
28451
+ }]
28452
+ }] });
28453
+
28454
+ class TemplateNodeComponent extends BaseNodeComponent {
28455
+ ngOnInit() { }
28456
+ get templateOutletContext() {
28457
+ const { content, description, name, status, id } = this.data;
28458
+ return {
28459
+ $implicit: {
28460
+ content: content,
28461
+ description,
28462
+ name,
28463
+ status,
28464
+ id,
28465
+ },
28466
+ };
28467
+ }
28468
+ }
28469
+ TemplateNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TemplateNodeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
28470
+ TemplateNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TemplateNodeComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"da-node da-node--{{ data.type }} {{\r\n data?.status ? ' da-node--' + data?.status : ''\r\n }} {{ data?.styleClass }}\"\r\n [style.--node-width]=\"data.width + 'px'\"\r\n [style.--node-height]=\"data.height + 'px'\"\r\n>\r\n <node-remove-button (remove)=\"removeNode()\" *ngIf=\"data?.config?.canRemove\">\r\n </node-remove-button>\r\n\r\n <node-icon\r\n *ngIf=\"data.content?.icon\"\r\n [icon]=\"data.content?.icon\"\r\n class=\"da-node__icon\"\r\n ></node-icon>\r\n\r\n <ng-container\r\n [ngTemplateOutlet]=\"data?.template || defaultTemplate\"\r\n [ngTemplateOutletContext]=\"templateOutletContext\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate>\r\n <div class=\"da-node__title\">{{ data?.name }}</div>\r\n </ng-template>\r\n\r\n <node-inputs\r\n [direction]=\"data.directions.inputs\"\r\n [data]=\"data\"\r\n [seed]=\"seed\"\r\n [emit]=\"emit\"\r\n [sortByIndex]=\"sortByIndex\"\r\n ></node-inputs>\r\n\r\n <node-outputs\r\n [direction]=\"data.directions.outputs\"\r\n [data]=\"data\"\r\n [seed]=\"seed\"\r\n [emit]=\"emit\"\r\n [sortByIndex]=\"sortByIndex\"\r\n ></node-outputs>\r\n</div>\r\n", styles: [".da-node{--width: var(--node-width);--height: var(--node-height);--socket-offset-negative: 0;--socket-position-start: var(--socket-offset-negative) auto;--socket-position-end: auto var(--socket-offset-negative);width:var(--width);height:var(--height);display:var(--node-display, flex);justify-content:var(--node-justify, center);align-items:var(--node-items, center);flex-direction:var(--node-direction, column);border:var(--node-border, 1px solid #234990);border-radius:var(--node-radius, 10px);color:var(--node-color, #234990);background:var(--node-background, #fff);box-shadow:var(--node-shadow, unset);cursor:var(--node-cursor, pointer)}.da-node--draft{--node-color: var(--status-draft-color, #555);--node-background: var( --status-draft-background, #f5f5f5 );--node-border: var(--status-draft-border, 1px solid #555);--node-shadow: var(--status-draft-shadow, unset)}.da-node--upcoming{--node-color: var(--status-upcoming-color, var(--Primary-100, #234990));--node-background: var( --status-upcoming-background, #fff );--node-border: var(--status-upcoming-border, 1px solid var(--node-color, #234990));--node-shadow: var(--status-upcoming-shadow, unset)}.da-node--inProgress{--node-color: var(--status-progress-color, var(--orange-color, #f29339));--node-background: var( --status-progress-background, var(--light-orange-color, #fdf4dc) );--node-border: var(--status-progress-border, 1px solid var(--orange-color, #f29339));--node-shadow: var(--status-progress-shadow, var(--node-shadow, inset 0 0 0 2px var(--node-background), inset 0 0 0 3px var(--orange-color, #f29339)))}.da-node--completed{--node-color: var(--status-completed-color, var(--green-color, #05cd99));--node-background: var( --status-completed-background, var(--light-green-color, #f0fff0) );--node-border: var(--status-completed-border, 1px solid var(--green-color, #05cd99));--node-shadow: var(--status-completed-shadow, unset)}.da-node--approved{--node-color: var(--status-completed-color, var(--green-color, #05cd99));--node-background: var( --status-completed-background, var(--light-green-color, #f0fff0) );--node-border: var(--status-completed-border, 1px solid var(--green-color, #05cd99));--node-shadow: var(--status-completed-shadow, unset)}.da-node--rejected{--node-color: var(--status-rejected-color, var(--red-color, #bf0b30));--node-background: var( --status-rejected-background, var(--light-red-color, #ffe0e7) );--node-border: var(--status-rejected-border, 1px solid var(--red-color, #bf0b30));--node-shadow: var(--status-rejected-shadow, unset)}.da-node__check-status{position:absolute;position:var(--check-icon-position, absolute);inset:var(--check-icon-inset, -6px -6px auto auto);color:var(--check-icon-color)}.da-node__check-status--completed{--check-icon-color: var(--status-completed-color)}.da-node__check-status--rejected{--check-icon-color: var(--status-rejected-color)}.da-node__title{text-align:center;font-weight:600}.da-node__description,.da-node__title{color:var(--node-text-color, #28282d);font-size:var(--node-text-font-size, .8rem);text-align:var(--node-text-align, center);padding-inline:var(--node-text-inline, .4rem)}.da-node__icon{position:absolute;inset-inline-start:var(--node-icon-inset-inline, 5px);inset-block-start:var(--node-icon-inset-block, 5px)}.da-node__inputs,.da-node__outputs{position:var(--input-output-position, absolute);inset-inline:var(--in-out-inset-inline);inset-block:var(--in-out-inset-block);height:var(--socket-size, 16px)}.da-node__inputs__socket,.da-node__outputs__socket{height:var(--socket-size, 16px)}.da-node__inputs.inputs-top{--in-out-inset-block: var(--socket-position-start)}.da-node__inputs.inputs-bottom{--in-out-inset-block: var(--socket-position-end)}.da-node__inputs.inputs-start{--in-out-inset-inline: var(--socket-position-start)}.da-node__inputs.inputs-end{--in-out-inset-inline: var(--socket-position-end)}.da-node__outputs.outputs-top{--in-out-inset-block: var(--socket-offset-negative)}.da-node__outputs.outputs-bottom{--in-out-inset-block: var(--socket-position-end)}.da-node__outputs.outputs-start{--in-out-inset-inline: var(--socket-position-start)}.da-node__outputs.outputs-end{--in-out-inset-inline: var(--socket-position-end)}.da-node:hover{--remove-icon-inset: -8px -8px auto auto;--remove-icon-opacity: 1}\n", "\n :host {\n display: block;\n }\n "], components: [{ type: RemoveButtonComponent, selector: "node-remove-button", outputs: ["remove"] }, { type: NodeIconComponent, selector: "node-icon", inputs: ["icon"] }, { type: NodeInputsComponent, selector: "node-inputs", inputs: ["direction", "data", "seed", "emit", "sortByIndex"] }, { type: NodeOutputsComponent, selector: "node-outputs", inputs: ["direction", "data", "seed", "emit", "sortByIndex"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
28471
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TemplateNodeComponent, decorators: [{
28472
+ type: Component,
28473
+ args: [{
28474
+ templateUrl: './template-node.component.html',
28475
+ styleUrls: ['../../styles/node.scss'],
28476
+ changeDetection: ChangeDetectionStrategy.Default,
28477
+ styles: [
28478
+ `
28479
+ :host {
28480
+ display: block;
28481
+ }
28482
+ `,
28483
+ ],
28484
+ }]
28485
+ }] });
28486
+
28487
+ class ZoomControlComponent {
28488
+ constructor(_plugins) {
28489
+ this._plugins = _plugins;
28490
+ this.delta = 0.1;
28491
+ }
28492
+ zoomOut() {
28493
+ const k = this._plugins.area.area.transform.k;
28494
+ this._plugins.area.area.zoom(k - this.delta);
28495
+ }
28496
+ zoomIn() {
28497
+ const k = this._plugins.area.area.transform.k;
28498
+ this._plugins.area.area.zoom(k + this.delta);
28499
+ }
28500
+ }
28501
+ ZoomControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ZoomControlComponent, deps: [{ token: DiagramPluginsService }], target: i0.ɵɵFactoryTarget.Component });
28502
+ ZoomControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ZoomControlComponent, selector: "app-zoom-control", ngImport: i0, template: `
28503
+ <button mat-flat-button (click)="zoomOut()">
28504
+ <mat-icon>zoom_out</mat-icon>
28505
+ </button>
28506
+ <button mat-flat-button (click)="zoomIn()">
28507
+ <mat-icon>zoom_in</mat-icon>
28508
+ </button>
28509
+ `, isInline: true, styles: ["\n :host {\n position: var(--diagram-zoom-position, absolute);\n inset-inline: var(--diagram-zoom-inline, auto 5px);\n inset-block: var(--diagram-zoom-block, 5px auto);\n background: var(--diagram-zoom-background, #f8f8ff);\n border-radius: var(--diagram-zoom-radius, 4px);\n border: var(--diagram-zoom-border, 1px solid #dcdce4);\n display: var(--diagram-zoom-display, inline-flex);\n flex-direction: var(--diagram-zoom-direction, row);\n box-shadow: var(--diagram-zoom-shadow, 0 0 0 0 #eee);\n .mat-flat-button {\n background-color: transparent;\n min-width: 36px;\n }\n }\n "], components: [{ type: i1$8.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$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
28510
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ZoomControlComponent, decorators: [{
28511
+ type: Component,
28512
+ args: [{
28513
+ selector: 'app-zoom-control',
28514
+ template: `
28515
+ <button mat-flat-button (click)="zoomOut()">
28516
+ <mat-icon>zoom_out</mat-icon>
28517
+ </button>
28518
+ <button mat-flat-button (click)="zoomIn()">
28519
+ <mat-icon>zoom_in</mat-icon>
28520
+ </button>
28521
+ `,
28522
+ styles: [
28523
+ `
28524
+ :host {
28525
+ position: var(--diagram-zoom-position, absolute);
28526
+ inset-inline: var(--diagram-zoom-inline, auto 5px);
28527
+ inset-block: var(--diagram-zoom-block, 5px auto);
28528
+ background: var(--diagram-zoom-background, #f8f8ff);
28529
+ border-radius: var(--diagram-zoom-radius, 4px);
28530
+ border: var(--diagram-zoom-border, 1px solid #dcdce4);
28531
+ display: var(--diagram-zoom-display, inline-flex);
28532
+ flex-direction: var(--diagram-zoom-direction, row);
28533
+ box-shadow: var(--diagram-zoom-shadow, 0 0 0 0 #eee);
28534
+ .mat-flat-button {
28535
+ background-color: transparent;
28536
+ min-width: 36px;
28537
+ }
28538
+ }
28539
+ `,
28540
+ ],
28541
+ }]
28542
+ }], ctorParameters: function () { return [{ type: DiagramPluginsService }]; } });
28543
+
28544
+ class DiagramDirective {
28545
+ constructor(_elementRef, _renderer, _injector, _viewContainerRef, _resolver, _diagramService, _pluginsService) {
28546
+ this._elementRef = _elementRef;
28547
+ this._renderer = _renderer;
28548
+ this._injector = _injector;
28549
+ this._viewContainerRef = _viewContainerRef;
28550
+ this._resolver = _resolver;
28551
+ this._diagramService = _diagramService;
28552
+ this._pluginsService = _pluginsService;
28553
+ this.height = `${DIAGRAM_HEIGHT}px`;
28554
+ this.width = '100%';
28555
+ this.config = { readonly: { active: false } };
28556
+ this.zoomCtrl = true;
28557
+ this.onDiagramReady = new EventEmitter();
28558
+ }
28559
+ get clientRect() {
28560
+ return this._elementRef.nativeElement.getBoundingClientRect();
28561
+ }
28562
+ ngOnInit() {
28563
+ this._appendStyles();
28564
+ }
28565
+ _appendZoomComponent() {
28566
+ if (!this.zoomCtrl) {
28567
+ return;
28568
+ }
28569
+ const factory = this._resolver.resolveComponentFactory(ZoomControlComponent);
28570
+ this._viewContainerRef.createComponent(factory);
28571
+ }
28572
+ ngAfterViewInit() {
28573
+ return __awaiter(this, void 0, void 0, function* () {
28574
+ this._appendZoomComponent();
28575
+ try {
28576
+ const editor = yield createDiagramEditor(this._elementRef.nativeElement, this._injector, this.config //TODO it's Should be merged with DIAGRAM_DEFAULT_OPTIONS
28577
+ );
28578
+ this._pluginsService.setPlugins(editor);
28579
+ this._diagramService.setEditor(editor);
28580
+ this.diagramEditor = editor;
28581
+ this.onDiagramReady.emit(editor);
28582
+ }
28583
+ catch (error) {
28584
+ console.log(error);
28585
+ }
28586
+ });
28587
+ }
28588
+ _appendStyles() {
28589
+ const _requiredStyles = {
28590
+ position: 'var(--diagram-position, relative)',
28591
+ width: `var(--diagram-width, ${this.width})`,
28592
+ height: `var(--diagram-height, ${this.height})`,
28593
+ direction: 'ltr',
28594
+ };
28595
+ Object.entries(_requiredStyles).forEach(([key, value]) => {
28596
+ this._renderer.setStyle(this._elementRef.nativeElement, key, value);
28597
+ });
28598
+ }
28599
+ }
28600
+ DiagramDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: i0.ComponentFactoryResolver }, { token: DiagramService }, { token: DiagramPluginsService }], target: i0.ɵɵFactoryTarget.Directive });
28601
+ DiagramDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: DiagramDirective, selector: "[appDiagram]", inputs: { height: "height", width: "width", config: "config", zoomCtrl: "zoomCtrl" }, outputs: { onDiagramReady: "onDiagramReady" }, exportAs: ["diagram"], ngImport: i0 });
28602
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramDirective, decorators: [{
28603
+ type: Directive,
28604
+ args: [{
28605
+ selector: '[appDiagram]',
28606
+ exportAs: 'diagram',
28607
+ }]
28608
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: i0.ComponentFactoryResolver }, { type: DiagramService }, { type: DiagramPluginsService }]; }, propDecorators: { height: [{
28609
+ type: Input
28610
+ }], width: [{
28611
+ type: Input
28612
+ }], config: [{
28613
+ type: Input
28614
+ }], zoomCtrl: [{
28615
+ type: Input
28616
+ }], onDiagramReady: [{
28617
+ type: Output
28618
+ }] } });
28619
+
28620
+ class DiagramsModule {
28621
+ }
28622
+ DiagramsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
28623
+ DiagramsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramsModule, declarations: [CircleNodeComponent,
28624
+ ContentNodeComponent,
28625
+ CustomConnectionComponent,
28626
+ CustomSocketComponent,
28627
+ TemplateNodeComponent,
28628
+ DiagramDirective,
28629
+ RemoveButtonComponent,
28630
+ ZoomControlComponent,
28631
+ NodeIconComponent,
28632
+ StatusIconComponent,
28633
+ NodeInputsComponent,
28634
+ NodeOutputsComponent], imports: [CommonModule,
28635
+ ReteModule,
28636
+ MatButtonModule,
28637
+ MatIconModule,
28638
+ FormsModule,
28639
+ TranslateModule,
28640
+ MatTooltipModule], exports: [DiagramDirective, ZoomControlComponent] });
28641
+ DiagramsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramsModule, providers: [DiagramService, DiagramPluginsService, WorkflowService], imports: [[
28642
+ CommonModule,
28643
+ ReteModule,
28644
+ MatButtonModule,
28645
+ MatIconModule,
28646
+ FormsModule,
28647
+ TranslateModule,
28648
+ MatTooltipModule,
28649
+ ]] });
28650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DiagramsModule, decorators: [{
28651
+ type: NgModule,
28652
+ args: [{
28653
+ declarations: [
28654
+ CircleNodeComponent,
28655
+ ContentNodeComponent,
28656
+ CustomConnectionComponent,
28657
+ CustomSocketComponent,
28658
+ TemplateNodeComponent,
28659
+ DiagramDirective,
28660
+ RemoveButtonComponent,
28661
+ ZoomControlComponent,
28662
+ NodeIconComponent,
28663
+ StatusIconComponent,
28664
+ NodeInputsComponent,
28665
+ NodeOutputsComponent,
28666
+ ],
28667
+ imports: [
28668
+ CommonModule,
28669
+ ReteModule,
28670
+ MatButtonModule,
28671
+ MatIconModule,
28672
+ FormsModule,
28673
+ TranslateModule,
28674
+ MatTooltipModule,
28675
+ ],
28676
+ exports: [DiagramDirective, ZoomControlComponent],
28677
+ providers: [DiagramService, DiagramPluginsService, WorkflowService],
28678
+ }]
28679
+ }] });
28680
+
27195
28681
  const FILTER_DATES_TYPE = {
27196
28682
  lastDay: 'from_now-24H_to_now',
27197
28683
  lastWeek: 'from_now-7d_to_now',
@@ -29222,5 +30708,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
29222
30708
  * Generated bundle index. Do not edit.
29223
30709
  */
29224
30710
 
29225
- export { ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AvatarComponent, AvatarModule, BooleanViewerComponent, ButtonComponent, CallApiService, CardComponent, CardModule, ChartDataService, ClickOutsideDirective, ClipboardComponent, CommentApiService, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, ContentActionType, CopyComponent, CorrespondenceRelationComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomDocumentViewerComponent, CustomPpViewerComponent, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DataViewerComponent, DateFormatterService, DateHelperService, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DialogMangmentService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, 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, DynamicSingleChartComponent, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicViewModule, EXTENSION_JSONS, EnvManager, EvaluatorsService, ExtensionLoaderService, ExtensionService, FILTER_DATES_TYPE, FileGridInfiniteScrollDirective, FileManagerAbstract, FileManagerAdapter, FileManagerPaginationConfig, FileManagerService, FileMangerModule, FileSizePipe, FilterComponent, FilterModule, FolderModalComponent, FolderishType, FormBuilderService, GlobalAdminService, GlobalPdfTron, GregorianDatepickerComponent, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, IconService, InitializationService, ItemListComponent, Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService, LocalizedDatePipe, MY_MOMENT_FORMATS, MainfolderService, MomentDateAdapter, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NOTIFICATIONS_LIST_OPTIONS, NOTIFICATION_ICON, NOTIFICATION_ITEM, NOTIFICATION_STATUS, NgxHijriGregorianDatepickerModule, NoDataComponent, NotificationIconDirective, NotificationItemComponent, NotificationItemDirective, NotificationSourceSelectComponent, NotificationStatusToggleComponent, NotificationToastComponent, NotificationsButtonComponent, NotificationsDateSelectComponent, NotificationsListComponent, NotificationsListContainerComponent, NotificationsModule, NotificationsService, NotificationsSettingsContainerComponent, NuxeoCoreModule, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoService, PAGINATION_MODE, PANEL_MODE, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PublishDialogComponent, PublishingDocumentService, ReadMoreComponent, RecentlyViewedService, RenameComponent, RolesService, SUBSCRIPTION_STATE, SafeHtmlPipe, ScanComponent, ScanModalComponent, SearchAutocompleteComponent, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SingleActivityComponent, SpinnerComponent, TRANSLATION_PROVIDER, TableComponent, TableModule, TagsApiService, TemplateModalComponent, TimeAgoPipe, ToastsModule, TransferDocComponent, TranslateLoaderService, TranslatedVocabularySelectComponent, TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UserCardComponent, UserComponent, UserModule, UserPreferenceValues, UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, UtilityService, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService, VocabularyComponent, VocabularyModule, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getValue, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, sortByOrder };
30711
+ export { ActivitiesLogComponent, ActivitiesLogModule, ActivityLineComponent, AdapterService, AddPermissionsDialogComponent, AddToCollectionComponent, AppConfigService, AppHasRoleDirective, AttachmentItemComponent, AttachmentItemModule, AttachmentModalModule, AttachmentsComponent, AttachmentsListComponent, AttachmentsPageProviderComponent, AvatarComponent, AvatarModule, BaseNodeClass, BooleanViewerComponent, ButtonComponent, CallApiService, CardComponent, CardModule, ChartDataService, CircleNode, CircleNodeComponent, ClickOutsideDirective, ClipboardComponent, CommentApiService, CommentsDashletComponent, CommentsModule, ComponentRegisterService, ComponentTranslationModel, ConfirmCallerDialogComponent, ConfirmCallerModule, ConfirmDialogComponent, ConfirmationDialogComponent, ConfirmationDialogModule, Connection, ContentActionType, ContentNode, ContentNodeComponent, CopyComponent, CorrespondenceRelationComponent, CorrespondenceRelationModule, CorrespondenceRelationService, CorrespondenceTagsComponent, CreateDirectoryComponent, CreateEntityComponent, CreateEntityModule, CreateModalComponent, CreationTypeComponent, CtsTagsModule, CustomConnectionComponent, CustomDocumentViewerComponent, CustomPpViewerComponent, CustomSocketComponent, CustomToastrModule, CustomToastrService, CutomeVocViewerComponent, DIAGRAM_DEFAULT_OPTIONS, DIAGRAM_HEIGHT, DataViewerComponent, DateFormatterService, DateHelperService, DateViewerComponent, DeleteComponent, DepartmentApiService, DepartmentFormComponent, DepartmentManagementService, DepartmentViewerComponent, DiagramDirective, DiagramPluginsService, DiagramService, DiagramsModule, DialogMangmentService, DirectiveModule, DisplaySuitableIconComponent, DisplaySuitableIconModule, DocumentScanService, DocumentTemplatesConstants, DocumentTemplatesService, DocumentUploadComponent, DocumentsComponent, DocumentsConstants, DocumentsListComponent, DocumentsModule, DocumentsService, DragAndDropDirective, DropdownViewerComponent, DynamicChartComponent, DynamicChartModule, DynamicColumnComponent, 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, DynamicSingleChartComponent, DynamicTableComponent, DynamicTableModule, DynamicTableService, DynamicTabsComponent, DynamicTabsModule, DynamicViewModule, EXTENSION_JSONS, EnvManager, EvaluatorsService, ExtensionLoaderService, ExtensionService, FILTER_DATES_TYPE, FileGridInfiniteScrollDirective, FileManagerAbstract, FileManagerAdapter, FileManagerPaginationConfig, FileManagerService, FileMangerModule, FileSizePipe, FilterComponent, FilterModule, FolderModalComponent, FolderishType, FormBuilderService, GlobalAdminService, GlobalPdfTron, GregorianDatepickerComponent, HijriDatePipe, HijriDatepickerComponent, HijriGregorianDatepickerComponent, IN_OUT_DIRECTION, IconService, InitializationService, ItemListComponent, Lang, LatestActivityComponent, LatestActivityModule, LibrarySharedModule, ListViewerComponent, LoanRequestComponent, LocalStoragService, LocalizedDatePipe, MESSAGE_TYPE, MY_MOMENT_FORMATS, MainfolderService, MessageService, MomentDateAdapter, MoveComponent, MultiValuePipe, MultipleDynamicFormViewerComponent, MutipleDynamicFormViewerModule, NODE_CIRCLE_SIZE, NODE_HEIGHT, NODE_MARGIN, NODE_STATUS, NODE_TYPE, NODE_WIDTH, NOTIFICATIONS_LIST_OPTIONS, NOTIFICATION_ICON, NOTIFICATION_ITEM, NOTIFICATION_STATUS, NOTIFY_EVENT, NgxHijriGregorianDatepickerModule, NoDataComponent, NodeIconComponent, NodeInputsComponent, NodeOutputsComponent, NotificationIconDirective, NotificationItemComponent, NotificationItemDirective, NotificationSourceSelectComponent, NotificationStatusToggleComponent, NotificationToastComponent, NotificationsButtonComponent, NotificationsDateSelectComponent, NotificationsListComponent, NotificationsListContainerComponent, NotificationsModule, NotificationsService, NotificationsSettingsContainerComponent, NuxeoCoreModule, NuxeoDevelopmentFrameworkComponent, NuxeoDevelopmentFrameworkModule, NuxeoDevelopmentFrameworkService, NuxeoService, PAGINATION_MODE, PANEL_MODE, PaginationComponent, PaginationModule, PdfTronModule, PdftronComponent, PdftronService, PermissionService, PermissionsComponent, PermissionsDirective, PermissionsModule, PermissionsTemplateComponent, PipesModule, PublishDialogComponent, PublishingDocumentService, ReadMoreComponent, RecentlyViewedService, RemoveButtonComponent, RenameComponent, RolesService, SOCKET_WIDTH, SUBSCRIPTION_STATE, SafeHtmlPipe, ScanComponent, ScanModalComponent, SearchAutocompleteComponent, SecurePipe, SelectComponent, SelectModule, SelectUsersByDepartmentModule, SelectUsersByDepartmentsComponent, SetDirRtlDirective, SetRtlDirective, ShareDialogComponent, SharedDocsService, SharedServicesModule, SidepanelComponent, SingleActivityComponent, Socket, SpinnerComponent, StatusIconComponent, TRANSLATION_PROVIDER, TableComponent, TableModule, TagsApiService, TemplateModalComponent, TemplateNode, TemplateNodeComponent, TimeAgoPipe, ToastsModule, TransferDocComponent, TranslateLoaderService, TranslatedVocabularySelectComponent, TranslationService, TreeviewSelectComponent, UpdateModalComponent, UploadFileService, UploadManagmentService, UserCardComponent, UserComponent, UserModule, UserPreferenceValues, UserPreferencesService, UserService, UsersCardComponent, UsersCardModule, UtilityService, VersionsComponent, ViewerFilesService, ViewerLogComponent, ViewerLogModule, VocabularyApiService, VocabularyComponent, VocabularyModule, WorkflowService, ZoomControlComponent, appInitializer, departmentCacheBuster$, extensionJsonsFactory, filterEnabled, getConnections, getValue, mergeArrays, mergeObjects, minute$1 as minute, provideExtensionConfig, reduceEmptyMenus, reduceSeparators, removeConnections, removeNode, removeNodeAndConnections, serializeControl, serializePort, sortByOrder };
29226
30712
  //# sourceMappingURL=nuxeo-development-framework.js.map