ngx-vflow 1.16.4 → 2.0.0

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 (181) hide show
  1. package/README.md +35 -69
  2. package/fesm2022/ngx-vflow-testing.mjs +77 -67
  3. package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
  4. package/fesm2022/ngx-vflow.mjs +926 -559
  5. package/fesm2022/ngx-vflow.mjs.map +1 -1
  6. package/lib/vflow/components/custom-node-base/custom-node-base.component.d.ts +1 -1
  7. package/lib/vflow/components/vflow/vflow.component.d.ts +18 -9
  8. package/lib/vflow/directives/auto-pan.directive.d.ts +16 -0
  9. package/lib/vflow/directives/changes-controller.directive.d.ts +13 -87
  10. package/lib/vflow/directives/connection-controller.directive.d.ts +8 -10
  11. package/lib/vflow/directives/space-point-context.directive.d.ts +2 -1
  12. package/lib/vflow/interfaces/component-node-event.interface.d.ts +1 -2
  13. package/lib/vflow/interfaces/connection-events.interface.d.ts +66 -0
  14. package/lib/vflow/interfaces/connection-settings.interface.d.ts +7 -1
  15. package/lib/vflow/interfaces/connection.interface.d.ts +0 -5
  16. package/lib/vflow/interfaces/curve-factory.interface.d.ts +2 -2
  17. package/lib/vflow/interfaces/edge-label.interface.d.ts +0 -4
  18. package/lib/vflow/interfaces/edge.interface.d.ts +36 -8
  19. package/lib/vflow/interfaces/node.interface.d.ts +44 -63
  20. package/lib/vflow/interfaces/selection-strategy.interface.d.ts +16 -0
  21. package/lib/vflow/interfaces/template-context.interface.d.ts +8 -3
  22. package/lib/vflow/models/connection.model.d.ts +1 -1
  23. package/lib/vflow/models/edge.model.d.ts +20 -23
  24. package/lib/vflow/models/handle.model.d.ts +1 -1
  25. package/lib/vflow/models/node.model.d.ts +4 -7
  26. package/lib/vflow/public-components/custom-node/custom-node.component.d.ts +1 -1
  27. package/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.d.ts +2 -1
  28. package/lib/vflow/public-components/minimap/minimap.component.d.ts +1 -1
  29. package/lib/vflow/services/draggable.service.d.ts +3 -0
  30. package/lib/vflow/services/flow-entities.service.d.ts +2 -2
  31. package/lib/vflow/services/flow-settings.service.d.ts +3 -0
  32. package/lib/vflow/services/flow-status.service.d.ts +35 -7
  33. package/lib/vflow/services/selection.service.d.ts +4 -1
  34. package/lib/vflow/strategies/default-selection.strategy.d.ts +6 -0
  35. package/lib/vflow/strategies/manual-selection.strategy.d.ts +5 -0
  36. package/lib/vflow/types/selection-mode.type.d.ts +1 -0
  37. package/lib/vflow/types/unwrap-signal.type.d.ts +4 -0
  38. package/lib/vflow/utils/adjust-direction.d.ts +2 -6
  39. package/lib/vflow/utils/identity-checker/reference-identity-checker.d.ts +2 -2
  40. package/lib/vflow/utils/is-vflow-component.d.ts +0 -2
  41. package/lib/vflow/utils/signals/to-lazy-signal.d.ts +4 -4
  42. package/package.json +3 -7
  43. package/public-api.d.ts +3 -2
  44. package/testing/component-mocks/vflow-mock.component.d.ts +8 -6
  45. package/testing/directive-mocks/connection-controller-mock.directive.d.ts +8 -6
  46. package/esm2022/lib/vflow/components/alignment-helper/alignment-helper.component.mjs +0 -103
  47. package/esm2022/lib/vflow/components/background/background.component.mjs +0 -121
  48. package/esm2022/lib/vflow/components/connection/connection.component.mjs +0 -157
  49. package/esm2022/lib/vflow/components/custom-node-base/custom-node-base.component.mjs +0 -57
  50. package/esm2022/lib/vflow/components/default-node/default-node.component.mjs +0 -16
  51. package/esm2022/lib/vflow/components/defs/defs.component.mjs +0 -16
  52. package/esm2022/lib/vflow/components/edge/edge.component.mjs +0 -54
  53. package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +0 -76
  54. package/esm2022/lib/vflow/components/node/node.component.mjs +0 -107
  55. package/esm2022/lib/vflow/components/preview-flow/draw-node.mjs +0 -100
  56. package/esm2022/lib/vflow/components/preview-flow/preview-flow.component.mjs +0 -62
  57. package/esm2022/lib/vflow/components/vflow/vflow.component.mjs +0 -437
  58. package/esm2022/lib/vflow/constants/magic-number-to-fix-glitch-in-chrome.constant.mjs +0 -4
  59. package/esm2022/lib/vflow/decorators/microtask.decorator.mjs +0 -11
  60. package/esm2022/lib/vflow/directives/changes-controller.directive.mjs +0 -165
  61. package/esm2022/lib/vflow/directives/connection-controller.directive.mjs +0 -145
  62. package/esm2022/lib/vflow/directives/drag-handle.directive.mjs +0 -28
  63. package/esm2022/lib/vflow/directives/flow-size-controller.directive.mjs +0 -40
  64. package/esm2022/lib/vflow/directives/handle-size-controller.directive.mjs +0 -41
  65. package/esm2022/lib/vflow/directives/map-context.directive.mjs +0 -116
  66. package/esm2022/lib/vflow/directives/node-handles-controller.directive.mjs +0 -33
  67. package/esm2022/lib/vflow/directives/node-resize-controller.directive.mjs +0 -37
  68. package/esm2022/lib/vflow/directives/pointer.directive.mjs +0 -84
  69. package/esm2022/lib/vflow/directives/reference.directive.mjs +0 -17
  70. package/esm2022/lib/vflow/directives/root-pointer.directive.mjs +0 -58
  71. package/esm2022/lib/vflow/directives/root-svg-context.directive.mjs +0 -35
  72. package/esm2022/lib/vflow/directives/selectable.directive.mjs +0 -48
  73. package/esm2022/lib/vflow/directives/space-point-context.directive.mjs +0 -42
  74. package/esm2022/lib/vflow/directives/template.directive.mjs +0 -119
  75. package/esm2022/lib/vflow/interfaces/alignment-helper-settings.interface.mjs +0 -2
  76. package/esm2022/lib/vflow/interfaces/box.mjs +0 -2
  77. package/esm2022/lib/vflow/interfaces/component-node-event.interface.mjs +0 -2
  78. package/esm2022/lib/vflow/interfaces/connection-settings.interface.mjs +0 -2
  79. package/esm2022/lib/vflow/interfaces/connection.interface.mjs +0 -2
  80. package/esm2022/lib/vflow/interfaces/connection.internal.interface.mjs +0 -2
  81. package/esm2022/lib/vflow/interfaces/contextable.interface.mjs +0 -2
  82. package/esm2022/lib/vflow/interfaces/curve-factory.interface.mjs +0 -2
  83. package/esm2022/lib/vflow/interfaces/edge-label.interface.mjs +0 -2
  84. package/esm2022/lib/vflow/interfaces/edge.interface.mjs +0 -2
  85. package/esm2022/lib/vflow/interfaces/fit-view-options.interface.mjs +0 -2
  86. package/esm2022/lib/vflow/interfaces/flow-entity.interface.mjs +0 -2
  87. package/esm2022/lib/vflow/interfaces/intersecting-nodes-options.interface.mjs +0 -2
  88. package/esm2022/lib/vflow/interfaces/marker.interface.mjs +0 -2
  89. package/esm2022/lib/vflow/interfaces/node-preview.interface.mjs +0 -2
  90. package/esm2022/lib/vflow/interfaces/node.interface.mjs +0 -53
  91. package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +0 -7
  92. package/esm2022/lib/vflow/interfaces/point.interface.mjs +0 -2
  93. package/esm2022/lib/vflow/interfaces/rect.mjs +0 -10
  94. package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +0 -2
  95. package/esm2022/lib/vflow/interfaces/viewport.interface.mjs +0 -2
  96. package/esm2022/lib/vflow/math/edge-path/bezier-path.mjs +0 -66
  97. package/esm2022/lib/vflow/math/edge-path/smooth-step-path.mjs +0 -226
  98. package/esm2022/lib/vflow/math/edge-path/straigh-path.mjs +0 -12
  99. package/esm2022/lib/vflow/math/point-on-line-by-ratio.mjs +0 -12
  100. package/esm2022/lib/vflow/models/connection.model.mjs +0 -31
  101. package/esm2022/lib/vflow/models/edge-label.model.mjs +0 -8
  102. package/esm2022/lib/vflow/models/edge.model.mjs +0 -208
  103. package/esm2022/lib/vflow/models/handle.model.mjs +0 -98
  104. package/esm2022/lib/vflow/models/minimap.model.mjs +0 -7
  105. package/esm2022/lib/vflow/models/node.model.mjs +0 -181
  106. package/esm2022/lib/vflow/models/toolbar.model.mjs +0 -36
  107. package/esm2022/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.mjs +0 -25
  108. package/esm2022/lib/vflow/public-components/custom-node/custom-node.component.mjs +0 -24
  109. package/esm2022/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.mjs +0 -29
  110. package/esm2022/lib/vflow/public-components/handle/handle.component.mjs +0 -53
  111. package/esm2022/lib/vflow/public-components/minimap/minimap.component.mjs +0 -108
  112. package/esm2022/lib/vflow/public-components/node-toolbar/node-toolbar.component.mjs +0 -73
  113. package/esm2022/lib/vflow/public-components/resizable/resizable.component.mjs +0 -272
  114. package/esm2022/lib/vflow/services/component-event-bus.service.mjs +0 -18
  115. package/esm2022/lib/vflow/services/draggable.service.mjs +0 -124
  116. package/esm2022/lib/vflow/services/edge-changes.service.mjs +0 -43
  117. package/esm2022/lib/vflow/services/edge-rendering.service.mjs +0 -40
  118. package/esm2022/lib/vflow/services/flow-entities.service.mjs +0 -56
  119. package/esm2022/lib/vflow/services/flow-rendering.service.mjs +0 -41
  120. package/esm2022/lib/vflow/services/flow-settings.service.mjs +0 -33
  121. package/esm2022/lib/vflow/services/flow-status.service.mjs +0 -49
  122. package/esm2022/lib/vflow/services/handle.service.mjs +0 -30
  123. package/esm2022/lib/vflow/services/keyboard.service.mjs +0 -47
  124. package/esm2022/lib/vflow/services/node-accessor.service.mjs +0 -16
  125. package/esm2022/lib/vflow/services/node-changes.service.mjs +0 -41
  126. package/esm2022/lib/vflow/services/node-rendering.service.mjs +0 -66
  127. package/esm2022/lib/vflow/services/overlays.service.mjs +0 -35
  128. package/esm2022/lib/vflow/services/preview-flow-render-strategy.service.mjs +0 -21
  129. package/esm2022/lib/vflow/services/selection.service.mjs +0 -54
  130. package/esm2022/lib/vflow/services/viewport.service.mjs +0 -64
  131. package/esm2022/lib/vflow/types/background.type.mjs +0 -2
  132. package/esm2022/lib/vflow/types/connection-mode.type.mjs +0 -2
  133. package/esm2022/lib/vflow/types/edge-change.type.mjs +0 -2
  134. package/esm2022/lib/vflow/types/handle-type.type.mjs +0 -2
  135. package/esm2022/lib/vflow/types/keyboard-action.type.mjs +0 -2
  136. package/esm2022/lib/vflow/types/node-change.type.mjs +0 -2
  137. package/esm2022/lib/vflow/types/position.type.mjs +0 -2
  138. package/esm2022/lib/vflow/types/viewport-change-type.type.mjs +0 -2
  139. package/esm2022/lib/vflow/utils/add-nodes-to-edges.mjs +0 -11
  140. package/esm2022/lib/vflow/utils/adjust-direction.mjs +0 -30
  141. package/esm2022/lib/vflow/utils/align-number.mjs +0 -4
  142. package/esm2022/lib/vflow/utils/assert-injector.mjs +0 -27
  143. package/esm2022/lib/vflow/utils/event.mjs +0 -4
  144. package/esm2022/lib/vflow/utils/get-os.mjs +0 -24
  145. package/esm2022/lib/vflow/utils/get-overlapping-area.mjs +0 -6
  146. package/esm2022/lib/vflow/utils/get-space-points.mjs +0 -25
  147. package/esm2022/lib/vflow/utils/hash.mjs +0 -7
  148. package/esm2022/lib/vflow/utils/id.mjs +0 -5
  149. package/esm2022/lib/vflow/utils/identity-checker/reference-identity-checker.mjs +0 -28
  150. package/esm2022/lib/vflow/utils/is-callable.mjs +0 -10
  151. package/esm2022/lib/vflow/utils/is-defined.mjs +0 -4
  152. package/esm2022/lib/vflow/utils/is-group-node.mjs +0 -4
  153. package/esm2022/lib/vflow/utils/is-vflow-component.mjs +0 -9
  154. package/esm2022/lib/vflow/utils/nodes.mjs +0 -60
  155. package/esm2022/lib/vflow/utils/resizable.mjs +0 -11
  156. package/esm2022/lib/vflow/utils/round.mjs +0 -2
  157. package/esm2022/lib/vflow/utils/signals/extended-computed.mjs +0 -15
  158. package/esm2022/lib/vflow/utils/signals/to-lazy-signal.mjs +0 -35
  159. package/esm2022/lib/vflow/utils/to-unified-node.mjs +0 -24
  160. package/esm2022/lib/vflow/utils/transform-background.mjs +0 -4
  161. package/esm2022/lib/vflow/utils/viewport.mjs +0 -51
  162. package/esm2022/lib/vflow/vflow.mjs +0 -29
  163. package/esm2022/ngx-vflow.mjs +0 -5
  164. package/esm2022/public-api.mjs +0 -55
  165. package/esm2022/testing/component-mocks/custom-template-edge-mock.component.mjs +0 -16
  166. package/esm2022/testing/component-mocks/handle-mock.component.mjs +0 -26
  167. package/esm2022/testing/component-mocks/minimap-mock.component.mjs +0 -24
  168. package/esm2022/testing/component-mocks/node-toolbar-mock.component.mjs +0 -23
  169. package/esm2022/testing/component-mocks/resizable-mock.component.mjs +0 -27
  170. package/esm2022/testing/component-mocks/vflow-mock.component.mjs +0 -299
  171. package/esm2022/testing/directive-mocks/connection-controller-mock.directive.mjs +0 -29
  172. package/esm2022/testing/directive-mocks/drag-handle-mock.directive.mjs +0 -11
  173. package/esm2022/testing/directive-mocks/selectable-mock.directive.mjs +0 -14
  174. package/esm2022/testing/directive-mocks/template-mock.directive.mjs +0 -101
  175. package/esm2022/testing/ngx-vflow-testing.mjs +0 -5
  176. package/esm2022/testing/provide-custom-node-mocks.mjs +0 -60
  177. package/esm2022/testing/public-api.mjs +0 -13
  178. package/esm2022/testing/types.mjs +0 -2
  179. package/esm2022/testing/vflow-mocks.mjs +0 -28
  180. package/lib/vflow/public-components/custom-dynamic-node/custom-dynamic-node.component.d.ts +0 -13
  181. package/lib/vflow/utils/to-unified-node.d.ts +0 -2
package/README.md CHANGED
@@ -1,85 +1,51 @@
1
- <img width="1305" alt="image" src="https://github.com/artem-mangilev/ngx-vflow/assets/53087914/3520a5a4-9a8f-40d6-9c3f-50d16fabc48f">
1
+ <div align="center">
2
2
 
3
- ---
3
+ # ngx-vflow
4
4
 
5
- `ngx-vflow` is an Angular library for creating node-based applications. It aims to assist you in building anything from a static diagram to a visual editor. You can utilize the default design or apply your own by customizing everything using familiar technologies.
5
+ [![NPM Version](https://img.shields.io/npm/v/ngx-vflow?color=blue)](https://www.npmjs.com/package/ngx-vflow)
6
+ [![License](https://img.shields.io/badge/license-MIT-007EC7.svg)](LICENSE)
7
+ [![Discord](https://img.shields.io/badge/discord-ngx--vflow-5865F2?logo=discord&logoColor=white)](https://discord.gg/RavS5ydTJV)
6
8
 
7
- ## Installation
9
+ **A powerful Angular library for building node-based UIs**
8
10
 
9
- ```
10
- npm i ngx-vflow --save
11
- ```
11
+ [Documentation](https://www.ngx-vflow.org/) • [API Reference](https://www.ngx-vflow.org/api)
12
12
 
13
- ## Version Compatibility
13
+ </div>
14
14
 
15
- | ngx-vlow | Angular |
16
- | -------- | --------- |
17
- | v0.x | v16.2.0+ |
18
- | v1.x | v17.3.12+ |
19
-
20
- ## Basic Example
21
-
22
- The following code describes 3 nodes and creates 2 edges between them.
23
-
24
- ```ts
25
- @Component({
26
- template: `<vflow [nodes]="nodes" [edges]="edges" />`,
27
- changeDetection: ChangeDetectionStrategy.OnPush,
28
- standalone: true,
29
- imports: [Vflow],
30
- })
31
- export class DefaultEdgesDemoComponent {
32
- public nodes: Node[] = [
33
- {
34
- id: '1',
35
- point: { x: 10, y: 200 },
36
- type: 'default',
37
- text: '1',
38
- },
39
- {
40
- id: '2',
41
- point: { x: 200, y: 100 },
42
- type: 'default',
43
- text: '2',
44
- },
45
- {
46
- id: '3',
47
- point: { x: 200, y: 300 },
48
- type: 'default',
49
- text: '3',
50
- },
51
- ];
52
-
53
- public edges: Edge[] = [
54
- {
55
- id: '1 -> 2',
56
- source: '1',
57
- target: '2',
58
- },
59
- {
60
- id: '1 -> 3',
61
- source: '1',
62
- target: '3',
63
- },
64
- ];
65
- }
66
- ```
15
+ <img width="1305" alt="ngx-vflow showcase" src="https://github.com/artem-mangilev/ngx-vflow/assets/53087914/5cbd3669-10a5-4ecb-9a1f-c9ae4eb5fb5a">
67
16
 
68
- The code above renders to this:
17
+ ---
69
18
 
70
- <img width="398" alt="image" src="https://github.com/artem-mangilev/ngx-vflow/assets/53087914/2a1b778a-2bfa-4176-9d50-065fdb1f1dec">
19
+ - **Declarative API & Full Customization** - Custom nodes, edges, and handles with Angular components
20
+ - **Subflows** - Create nested flows with parent-child relationships
21
+ - **Interactive Connections** - Create, validate, and reconnect edges
22
+ - **Rich Interactions** - Dragging, selecting, zooming, panning, and keyboard shortcuts
23
+ - **Precise Control** - Snap to grid, alignment helpers, and custom backgrounds
24
+ - **Navigation** - Built-in minimap
25
+ - **Performance** - Virtualization and lazy loading for large graphs
26
+ - **Reactivity** - Uses Signals to keep internal and external states in sync
27
+ - **Layout Algorithms** - Integration with any layouts
71
28
 
72
- For more complex example you may see the documentation: https://www.ngx-vflow.org/
29
+ ## Installation
73
30
 
74
- ## API
31
+ ```bash
32
+ npm install ngx-vflow --save
33
+ ```
34
+
35
+ ## Version Compatibility
75
36
 
76
- `vflow` component API is described here: https://www.ngx-vflow.org/api/ngx-vflow/classes/VflowComponent
37
+ | ngx-vflow | Angular |
38
+ | --------- | --------- |
39
+ | v0.x | v16.2.0+ |
40
+ | v1.x | v17.3.12+ |
41
+ | v2.x | v19.2.17+ |
77
42
 
78
- Host directives for `vflow` that you may find helpful:
43
+ ## Community & Support
79
44
 
80
- - https://www.ngx-vflow.org/api/ngx-vflow/classes/ConnectionControllerDirective
81
- - https://www.ngx-vflow.org/api/ngx-vflow/classes/ChangesControllerDirective
45
+ - Join our [Discord community](https://discord.gg/RavS5ydTJV) for help and discussions
46
+ - Report bugs and request features on [GitHub Issues](https://github.com/artem-mangilev/ngx-vflow/issues)
47
+ - Check out the [documentation](https://www.ngx-vflow.org/) for guides and examples
82
48
 
83
49
  ## License
84
50
 
85
- MIT
51
+ MIT © [Artem Mangilev](https://github.com/artem-mangilev)
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { signal, inject, TemplateRef, Directive, input, output, contentChild, Component, ChangeDetectionStrategy, Input } from '@angular/core';
2
+ import { signal, inject, TemplateRef, Directive, input, output, contentChild, Input, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { ɵNodeModel as _NodeModel, ɵComponentEventBusService as _ComponentEventBusService, ɵNodeAccessorService as _NodeAccessorService, ɵFlowEntitiesService as _FlowEntitiesService, ɵHandleService as _HandleService, ɵRootPointerDirective as _RootPointerDirective, ɵSpacePointContextDirective as _SpacePointContextDirective, ɵSelectionService as _SelectionService, ɵFlowSettingsService as _FlowSettingsService, ɵViewportService as _ViewportService, ɵNodeRenderingService as _NodeRenderingService, DEFAULT_OPTIMIZATION, ɵConnectionModel as _ConnectionModel } from 'ngx-vflow';
4
4
  import { of } from 'rxjs';
5
5
  import { NgTemplateOutlet } from '@angular/common';
6
6
  import { toObservable } from '@angular/core/rxjs-interop';
7
7
 
8
- const mockModel = () => new _NodeModel({ id: 'mock', type: 'default', point: { x: 0, y: 0 } });
8
+ const mockModel = () => new _NodeModel({ id: 'mock', type: 'default', point: signal({ x: 0, y: 0 }) });
9
9
  function provideCustomNodeMocks() {
10
10
  return [
11
11
  {
@@ -66,10 +66,10 @@ class EdgeTemplateMockDirective {
66
66
  constructor() {
67
67
  this.templateRef = inject(TemplateRef);
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
70
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: EdgeTemplateMockDirective, isStandalone: true, selector: "ng-template[edge]", ngImport: i0 }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EdgeTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
70
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: EdgeTemplateMockDirective, isStandalone: true, selector: "ng-template[edge]", ngImport: i0 }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeTemplateMockDirective, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EdgeTemplateMockDirective, decorators: [{
73
73
  type: Directive,
74
74
  args: [{
75
75
  standalone: true,
@@ -80,10 +80,10 @@ class ConnectionTemplateMockDirective {
80
80
  constructor() {
81
81
  this.templateRef = inject(TemplateRef);
82
82
  }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConnectionTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
84
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ConnectionTemplateMockDirective, isStandalone: true, selector: "ng-template[connection]", ngImport: i0 }); }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ConnectionTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
84
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: ConnectionTemplateMockDirective, isStandalone: true, selector: "ng-template[connection]", ngImport: i0 }); }
85
85
  }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConnectionTemplateMockDirective, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ConnectionTemplateMockDirective, decorators: [{
87
87
  type: Directive,
88
88
  args: [{
89
89
  standalone: true,
@@ -94,10 +94,10 @@ class EdgeLabelHtmlTemplateMockDirective {
94
94
  constructor() {
95
95
  this.templateRef = inject(TemplateRef);
96
96
  }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeLabelHtmlTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
98
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: EdgeLabelHtmlTemplateMockDirective, isStandalone: true, selector: "ng-template[edgeLabelHtml]", ngImport: i0 }); }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EdgeLabelHtmlTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
98
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: EdgeLabelHtmlTemplateMockDirective, isStandalone: true, selector: "ng-template[edgeLabelHtml]", ngImport: i0 }); }
99
99
  }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeLabelHtmlTemplateMockDirective, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EdgeLabelHtmlTemplateMockDirective, decorators: [{
101
101
  type: Directive,
102
102
  args: [{
103
103
  standalone: true,
@@ -108,10 +108,10 @@ class NodeHtmlTemplateMockDirective {
108
108
  constructor() {
109
109
  this.templateRef = inject(TemplateRef);
110
110
  }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeHtmlTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
112
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NodeHtmlTemplateMockDirective, isStandalone: true, selector: "ng-template[nodeHtml]", ngImport: i0 }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NodeHtmlTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
112
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: NodeHtmlTemplateMockDirective, isStandalone: true, selector: "ng-template[nodeHtml]", ngImport: i0 }); }
113
113
  }
114
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeHtmlTemplateMockDirective, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NodeHtmlTemplateMockDirective, decorators: [{
115
115
  type: Directive,
116
116
  args: [{
117
117
  standalone: true,
@@ -122,10 +122,10 @@ class NodeSvgTemplateMockDirective {
122
122
  constructor() {
123
123
  this.templateRef = inject(TemplateRef);
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeSvgTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
126
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NodeSvgTemplateMockDirective, isStandalone: true, selector: "ng-template[nodeSvg]", ngImport: i0 }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NodeSvgTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
126
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: NodeSvgTemplateMockDirective, isStandalone: true, selector: "ng-template[nodeSvg]", ngImport: i0 }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeSvgTemplateMockDirective, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NodeSvgTemplateMockDirective, decorators: [{
129
129
  type: Directive,
130
130
  args: [{
131
131
  standalone: true,
@@ -136,10 +136,10 @@ class GroupNodeTemplateMockDirective {
136
136
  constructor() {
137
137
  this.templateRef = inject(TemplateRef);
138
138
  }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupNodeTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
140
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: GroupNodeTemplateMockDirective, isStandalone: true, selector: "ng-template[groupNode]", ngImport: i0 }); }
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GroupNodeTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
140
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: GroupNodeTemplateMockDirective, isStandalone: true, selector: "ng-template[groupNode]", ngImport: i0 }); }
141
141
  }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GroupNodeTemplateMockDirective, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GroupNodeTemplateMockDirective, decorators: [{
143
143
  type: Directive,
144
144
  args: [{
145
145
  standalone: true,
@@ -150,10 +150,10 @@ class HandleTemplateMockDirective {
150
150
  constructor() {
151
151
  this.templateRef = inject(TemplateRef);
152
152
  }
153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
154
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: HandleTemplateMockDirective, isStandalone: true, selector: "ng-template[handle]", ngImport: i0 }); }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: HandleTemplateMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
154
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: HandleTemplateMockDirective, isStandalone: true, selector: "ng-template[handle]", ngImport: i0 }); }
155
155
  }
156
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleTemplateMockDirective, decorators: [{
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: HandleTemplateMockDirective, decorators: [{
157
157
  type: Directive,
158
158
  args: [{
159
159
  standalone: true,
@@ -169,13 +169,15 @@ class VflowMockComponent {
169
169
  this.background = '#fff';
170
170
  this.optimization = DEFAULT_OPTIMIZATION;
171
171
  this.entitiesSelectable = true;
172
+ this.selectionMode = 'default';
172
173
  this.keyboardShortcuts = {
173
174
  multiSelection: null,
174
175
  };
175
176
  this.connection = new _ConnectionModel({});
177
+ this.autoPan = true;
176
178
  this.alignmentHelper = input(false);
177
179
  // eslint-disable-next-line @angular-eslint/no-output-on-prefix
178
- this.onComponentNodeEvent = output();
180
+ this.componentNodeEvent = output();
179
181
  this.nodeTemplateDirective = contentChild(NodeHtmlTemplateMockDirective);
180
182
  this.groupNodeTemplateDirective = contentChild(GroupNodeTemplateMockDirective);
181
183
  this.edgeTemplateDirective = contentChild(EdgeTemplateMockDirective);
@@ -236,8 +238,8 @@ class VflowMockComponent {
236
238
  createSignal(value) {
237
239
  return signal(value);
238
240
  }
239
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VflowMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
240
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: VflowMockComponent, isStandalone: true, selector: "vflow", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: false, isRequired: true, transformFunction: null }, edges: { classPropertyName: "edges", publicName: "edges", isSignal: false, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: false, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: "minZoom", publicName: "minZoom", isSignal: false, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: "maxZoom", publicName: "maxZoom", isSignal: false, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: false, isRequired: false, transformFunction: null }, optimization: { classPropertyName: "optimization", publicName: "optimization", isSignal: false, isRequired: false, transformFunction: null }, entitiesSelectable: { classPropertyName: "entitiesSelectable", publicName: "entitiesSelectable", isSignal: false, isRequired: false, transformFunction: null }, keyboardShortcuts: { classPropertyName: "keyboardShortcuts", publicName: "keyboardShortcuts", isSignal: false, isRequired: false, transformFunction: null }, connection: { classPropertyName: "connection", publicName: "connection", isSignal: false, isRequired: false, transformFunction: (settings) => new _ConnectionModel(settings) }, snapGrid: { classPropertyName: "snapGrid", publicName: "snapGrid", isSignal: false, isRequired: false, transformFunction: null }, elevateNodesOnSelect: { classPropertyName: "elevateNodesOnSelect", publicName: "elevateNodesOnSelect", isSignal: false, isRequired: false, transformFunction: null }, elevateEdgesOnSelect: { classPropertyName: "elevateEdgesOnSelect", publicName: "elevateEdgesOnSelect", isSignal: false, isRequired: false, transformFunction: null }, alignmentHelper: { classPropertyName: "alignmentHelper", publicName: "alignmentHelper", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onComponentNodeEvent: "onComponentNodeEvent" }, queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateMockDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
241
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: VflowMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
242
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.17", type: VflowMockComponent, isStandalone: true, selector: "vflow", inputs: { nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: false, isRequired: true, transformFunction: null }, edges: { classPropertyName: "edges", publicName: "edges", isSignal: false, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: false, isRequired: false, transformFunction: null }, minZoom: { classPropertyName: "minZoom", publicName: "minZoom", isSignal: false, isRequired: false, transformFunction: null }, maxZoom: { classPropertyName: "maxZoom", publicName: "maxZoom", isSignal: false, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: false, isRequired: false, transformFunction: null }, optimization: { classPropertyName: "optimization", publicName: "optimization", isSignal: false, isRequired: false, transformFunction: null }, entitiesSelectable: { classPropertyName: "entitiesSelectable", publicName: "entitiesSelectable", isSignal: false, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: false, isRequired: false, transformFunction: null }, keyboardShortcuts: { classPropertyName: "keyboardShortcuts", publicName: "keyboardShortcuts", isSignal: false, isRequired: false, transformFunction: null }, connection: { classPropertyName: "connection", publicName: "connection", isSignal: false, isRequired: false, transformFunction: (settings) => new _ConnectionModel(settings) }, snapGrid: { classPropertyName: "snapGrid", publicName: "snapGrid", isSignal: false, isRequired: false, transformFunction: null }, elevateNodesOnSelect: { classPropertyName: "elevateNodesOnSelect", publicName: "elevateNodesOnSelect", isSignal: false, isRequired: false, transformFunction: null }, elevateEdgesOnSelect: { classPropertyName: "elevateEdgesOnSelect", publicName: "elevateEdgesOnSelect", isSignal: false, isRequired: false, transformFunction: null }, autoPan: { classPropertyName: "autoPan", publicName: "autoPan", isSignal: false, isRequired: false, transformFunction: null }, alignmentHelper: { classPropertyName: "alignmentHelper", publicName: "alignmentHelper", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { componentNodeEvent: "componentNodeEvent" }, queries: [{ propertyName: "nodeTemplateDirective", first: true, predicate: NodeHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "groupNodeTemplateDirective", first: true, predicate: GroupNodeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeTemplateDirective", first: true, predicate: EdgeTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "edgeLabelHtmlDirective", first: true, predicate: EdgeLabelHtmlTemplateMockDirective, descendants: true, isSignal: true }, { propertyName: "connectionTemplateDirective", first: true, predicate: ConnectionTemplateMockDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
241
243
  <ng-content />
242
244
 
243
245
  @for (node of nodes; track $index) {
@@ -280,34 +282,35 @@ class VflowMockComponent {
280
282
  },
281
283
  }" />
282
284
 
283
- @if (edge.edgeLabels?.start) {
285
+ @if (edge.edgeLabels?.()?.start; as label) {
284
286
  <ng-component
285
287
  [ngTemplateOutlet]="edgeLabelHtmlDirective()?.templateRef ?? null"
286
288
  [ngTemplateOutletContext]="{
287
289
  $implicit: {
288
290
  edge: edge,
291
+ label,
289
292
  },
290
293
  }" />
291
294
  }
292
295
 
293
- @if (edge.edgeLabels?.center) {
296
+ @if (edge.edgeLabels?.()?.center; as label) {
294
297
  <ng-component
295
298
  [ngTemplateOutlet]="edgeLabelHtmlDirective()?.templateRef ?? null"
296
299
  [ngTemplateOutletContext]="{
297
300
  $implicit: {
298
301
  edge: edge,
299
- label: edge.edgeLabels?.center,
302
+ label,
300
303
  },
301
304
  }" />
302
305
  }
303
306
 
304
- @if (edge.edgeLabels?.end) {
307
+ @if (edge.edgeLabels?.()?.end; as label) {
305
308
  <ng-component
306
309
  [ngTemplateOutlet]="edgeLabelHtmlDirective()?.templateRef ?? null"
307
310
  [ngTemplateOutletContext]="{
308
311
  $implicit: {
309
312
  edge: edge,
310
- label: edge.edgeLabels?.end,
313
+ label,
311
314
  },
312
315
  }" />
313
316
  }
@@ -326,7 +329,7 @@ class VflowMockComponent {
326
329
  }
327
330
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
328
331
  }
329
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: VflowMockComponent, decorators: [{
332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: VflowMockComponent, decorators: [{
330
333
  type: Component,
331
334
  args: [{
332
335
  selector: 'vflow',
@@ -373,34 +376,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
373
376
  },
374
377
  }" />
375
378
 
376
- @if (edge.edgeLabels?.start) {
379
+ @if (edge.edgeLabels?.()?.start; as label) {
377
380
  <ng-component
378
381
  [ngTemplateOutlet]="edgeLabelHtmlDirective()?.templateRef ?? null"
379
382
  [ngTemplateOutletContext]="{
380
383
  $implicit: {
381
384
  edge: edge,
385
+ label,
382
386
  },
383
387
  }" />
384
388
  }
385
389
 
386
- @if (edge.edgeLabels?.center) {
390
+ @if (edge.edgeLabels?.()?.center; as label) {
387
391
  <ng-component
388
392
  [ngTemplateOutlet]="edgeLabelHtmlDirective()?.templateRef ?? null"
389
393
  [ngTemplateOutletContext]="{
390
394
  $implicit: {
391
395
  edge: edge,
392
- label: edge.edgeLabels?.center,
396
+ label,
393
397
  },
394
398
  }" />
395
399
  }
396
400
 
397
- @if (edge.edgeLabels?.end) {
401
+ @if (edge.edgeLabels?.()?.end; as label) {
398
402
  <ng-component
399
403
  [ngTemplateOutlet]="edgeLabelHtmlDirective()?.templateRef ?? null"
400
404
  [ngTemplateOutletContext]="{
401
405
  $implicit: {
402
406
  edge: edge,
403
- label: edge.edgeLabels?.end,
407
+ label,
404
408
  },
405
409
  }" />
406
410
  }
@@ -419,7 +423,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
419
423
  }
420
424
  `,
421
425
  changeDetection: ChangeDetectionStrategy.OnPush,
422
- standalone: true,
423
426
  imports: [NgTemplateOutlet],
424
427
  }]
425
428
  }], propDecorators: { nodes: [{
@@ -439,6 +442,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
439
442
  type: Input
440
443
  }], entitiesSelectable: [{
441
444
  type: Input
445
+ }], selectionMode: [{
446
+ type: Input
442
447
  }], keyboardShortcuts: [{
443
448
  type: Input
444
449
  }], connection: [{
@@ -452,6 +457,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
452
457
  type: Input
453
458
  }], elevateEdgesOnSelect: [{
454
459
  type: Input
460
+ }], autoPan: [{
461
+ type: Input
455
462
  }] } });
456
463
 
457
464
  class HandleMockComponent {
@@ -465,10 +472,10 @@ class HandleMockComponent {
465
472
  }
466
473
  // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
467
474
  ngOnInit() { }
468
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
469
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: HandleMockComponent, isStandalone: true, selector: "handle", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, offsetX: { classPropertyName: "offsetX", publicName: "offsetX", isSignal: true, isRequired: false, transformFunction: null }, offsetY: { classPropertyName: "offsetY", publicName: "offsetY", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: HandleMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
476
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: HandleMockComponent, isStandalone: true, selector: "handle", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, offsetX: { classPropertyName: "offsetX", publicName: "offsetX", isSignal: true, isRequired: false, transformFunction: null }, offsetY: { classPropertyName: "offsetY", publicName: "offsetY", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
470
477
  }
471
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleMockComponent, decorators: [{
478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: HandleMockComponent, decorators: [{
472
479
  type: Component,
473
480
  args: [{
474
481
  selector: 'handle',
@@ -490,10 +497,10 @@ class ResizableMockComponent {
490
497
  ngOnDestroy() { }
491
498
  // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
492
499
  ngAfterViewInit() { }
493
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResizableMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
494
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: ResizableMockComponent, isStandalone: true, selector: "[resizable]", inputs: { resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, resizerColor: { classPropertyName: "resizerColor", publicName: "resizerColor", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
500
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ResizableMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
501
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: ResizableMockComponent, isStandalone: true, selector: "[resizable]", inputs: { resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, resizerColor: { classPropertyName: "resizerColor", publicName: "resizerColor", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
495
502
  }
496
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ResizableMockComponent, decorators: [{
503
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ResizableMockComponent, decorators: [{
497
504
  type: Component,
498
505
  args: [{
499
506
  selector: '[resizable]',
@@ -512,10 +519,10 @@ class MiniMapMockComponent {
512
519
  }
513
520
  // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
514
521
  ngOnInit() { }
515
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MiniMapMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
516
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: MiniMapMockComponent, isStandalone: true, selector: "mini-map", inputs: { maskColor: { classPropertyName: "maskColor", publicName: "maskColor", isSignal: true, isRequired: false, transformFunction: null }, strokeColor: { classPropertyName: "strokeColor", publicName: "strokeColor", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, scaleOnHover: { classPropertyName: "scaleOnHover", publicName: "scaleOnHover", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
522
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MiniMapMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
523
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: MiniMapMockComponent, isStandalone: true, selector: "mini-map", inputs: { maskColor: { classPropertyName: "maskColor", publicName: "maskColor", isSignal: true, isRequired: false, transformFunction: null }, strokeColor: { classPropertyName: "strokeColor", publicName: "strokeColor", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, scaleOnHover: { classPropertyName: "scaleOnHover", publicName: "scaleOnHover", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
517
524
  }
518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MiniMapMockComponent, decorators: [{
525
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: MiniMapMockComponent, decorators: [{
519
526
  type: Component,
520
527
  args: [{
521
528
  selector: 'mini-map',
@@ -533,10 +540,10 @@ class NodeToolbarMockComponent {
533
540
  ngOnInit() { }
534
541
  // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
535
542
  ngOnDestroy() { }
536
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeToolbarMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
537
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: NodeToolbarMockComponent, isStandalone: true, selector: "node-toolbar", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
543
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NodeToolbarMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
544
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.17", type: NodeToolbarMockComponent, isStandalone: true, selector: "node-toolbar", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
538
545
  }
539
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeToolbarMockComponent, decorators: [{
546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NodeToolbarMockComponent, decorators: [{
540
547
  type: Component,
541
548
  args: [{
542
549
  selector: 'node-toolbar',
@@ -548,12 +555,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
548
555
 
549
556
  class ConnectionControllerMockDirective {
550
557
  constructor() {
558
+ this.connectStart = output();
551
559
  this.connect = output();
552
- // eslint-disable-next-line @angular-eslint/no-output-on-prefix
553
- this.onConnect = output();
560
+ this.connectEnd = output();
561
+ this.reconnectStart = output();
554
562
  this.reconnect = output();
555
- // eslint-disable-next-line @angular-eslint/no-output-on-prefix
556
- this.onReconnect = output();
563
+ this.reconnectEnd = output();
557
564
  }
558
565
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
559
566
  startConnection(handle) { }
@@ -565,28 +572,31 @@ class ConnectionControllerMockDirective {
565
572
  resetValidateConnection(targetHandle) { }
566
573
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
567
574
  endConnection() { }
568
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConnectionControllerMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
569
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ConnectionControllerMockDirective, isStandalone: true, selector: "[connect], [onConnect]", outputs: { connect: "connect", onConnect: "onConnect", reconnect: "reconnect", onReconnect: "onReconnect" }, ngImport: i0 }); }
575
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ConnectionControllerMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
576
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: ConnectionControllerMockDirective, isStandalone: true, selector: "[connectStart], [connect], [connectEnd], [reconnectStart], [reconnect], [reconnectEnd]", outputs: { connectStart: "connectStart", connect: "connect", connectEnd: "connectEnd", reconnectStart: "reconnectStart", reconnect: "reconnect", reconnectEnd: "reconnectEnd" }, ngImport: i0 }); }
570
577
  }
571
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConnectionControllerMockDirective, decorators: [{
578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: ConnectionControllerMockDirective, decorators: [{
572
579
  type: Directive,
573
- args: [{ selector: '[connect], [onConnect]', standalone: true }]
580
+ args: [{
581
+ selector: '[connectStart], [connect], [connectEnd], [reconnectStart], [reconnect], [reconnectEnd]',
582
+ standalone: true,
583
+ }]
574
584
  }] });
575
585
 
576
586
  class DragHandleMockDirective {
577
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DragHandleMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
578
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DragHandleMockDirective, isStandalone: true, selector: "[dragHandle]", ngImport: i0 }); }
587
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DragHandleMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
588
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: DragHandleMockDirective, isStandalone: true, selector: "[dragHandle]", ngImport: i0 }); }
579
589
  }
580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DragHandleMockDirective, decorators: [{
590
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: DragHandleMockDirective, decorators: [{
581
591
  type: Directive,
582
592
  args: [{ selector: '[dragHandle]', standalone: true }]
583
593
  }] });
584
594
 
585
595
  class SelectableMockDirective {
586
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectableMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
587
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: SelectableMockDirective, isStandalone: true, selector: "[selectable]", ngImport: i0 }); }
596
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectableMockDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
597
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.17", type: SelectableMockDirective, isStandalone: true, selector: "[selectable]", ngImport: i0 }); }
588
598
  }
589
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectableMockDirective, decorators: [{
599
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SelectableMockDirective, decorators: [{
590
600
  type: Directive,
591
601
  args: [{
592
602
  selector: '[selectable]',
@@ -595,10 +605,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
595
605
  }] });
596
606
 
597
607
  class CustomTemplateEdgeMockComponent {
598
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomTemplateEdgeMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
599
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CustomTemplateEdgeMockComponent, isStandalone: true, selector: "g[customTemplateEdge]", ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
608
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CustomTemplateEdgeMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
609
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: CustomTemplateEdgeMockComponent, isStandalone: true, selector: "g[customTemplateEdge]", ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
600
610
  }
601
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CustomTemplateEdgeMockComponent, decorators: [{
611
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: CustomTemplateEdgeMockComponent, decorators: [{
602
612
  type: Component,
603
613
  args: [{
604
614
  selector: 'g[customTemplateEdge]',