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
@@ -1,124 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { select } from 'd3-selection';
3
- import { drag } from 'd3-drag';
4
- import { round } from '../utils/round';
5
- import { FlowEntitiesService } from './flow-entities.service';
6
- import { FlowSettingsService } from './flow-settings.service';
7
- import { align } from '../utils/align-number';
8
- import { FlowStatusService } from './flow-status.service';
9
- import * as i0 from "@angular/core";
10
- export class DraggableService {
11
- constructor() {
12
- this.entitiesService = inject(FlowEntitiesService);
13
- this.settingsService = inject(FlowSettingsService);
14
- this.flowStatusService = inject(FlowStatusService);
15
- }
16
- /**
17
- * Enable draggable behavior for element.
18
- *
19
- * @param element target element for toggling draggable
20
- * @param model model with data for this element
21
- */
22
- enable(element, model) {
23
- select(element).call(this.getDragBehavior(model));
24
- }
25
- /**
26
- * Disable draggable behavior for element.
27
- *
28
- * @param element target element for toggling draggable
29
- * @param model model with data for this element
30
- */
31
- disable(element) {
32
- select(element).call(drag().on('drag', null));
33
- }
34
- /**
35
- * TODO: not shure if this work, need to check
36
- *
37
- * @param element
38
- */
39
- destroy(element) {
40
- select(element).on('.drag', null);
41
- }
42
- /**
43
- * Node drag behavior. Updated node's coordinate according to dragging
44
- *
45
- * @param model
46
- * @returns
47
- */
48
- getDragBehavior(model) {
49
- let dragNodes = [];
50
- let initialPositions = [];
51
- const filterCondition = (event) => {
52
- // if there is at least one drag handle, we should check if we are dragging it
53
- if (model.dragHandlesCount()) {
54
- return !!event.target.closest('.vflow-drag-handle');
55
- }
56
- return true;
57
- };
58
- return drag()
59
- .filter(filterCondition)
60
- .on('start', (event) => {
61
- dragNodes = this.getDragNodes(model);
62
- this.flowStatusService.setNodeDragStartStatus(model);
63
- initialPositions = dragNodes.map((node) => ({
64
- x: node.point().x - event.x,
65
- y: node.point().y - event.y,
66
- }));
67
- })
68
- .on('drag', (event) => {
69
- dragNodes.forEach((model, index) => {
70
- const point = {
71
- x: round(event.x + initialPositions[index].x),
72
- y: round(event.y + initialPositions[index].y),
73
- };
74
- this.moveNode(model, point);
75
- });
76
- })
77
- .on('end', () => {
78
- this.flowStatusService.setNodeDragEndStatus(model);
79
- });
80
- }
81
- getDragNodes(model) {
82
- return model.selected()
83
- ? this.entitiesService
84
- .nodes()
85
- // selected draggable nodes (with current node)
86
- .filter((node) => node.selected() && node.draggable())
87
- : // we only can move current node if it's not selected
88
- [model];
89
- }
90
- /**
91
- * @todo make it unit testable
92
- */
93
- moveNode(model, point) {
94
- point = this.alignToGrid(point);
95
- const parent = model.parent();
96
- // keep node in bounds of parent
97
- if (parent) {
98
- point.x = Math.min(parent.width() - model.width(), point.x);
99
- point.x = Math.max(0, point.x);
100
- point.y = Math.min(parent.height() - model.height(), point.y);
101
- point.y = Math.max(0, point.y);
102
- }
103
- model.setPoint(point);
104
- }
105
- /**
106
- * @todo make it unit testable
107
- */
108
- alignToGrid(point) {
109
- const [snapX, snapY] = this.settingsService.snapGrid();
110
- if (snapX > 1) {
111
- point.x = align(point.x, snapX);
112
- }
113
- if (snapY > 1) {
114
- point.y = align(point.y, snapY);
115
- }
116
- return point;
117
- }
118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DraggableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
119
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DraggableService }); }
120
- }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DraggableService, decorators: [{
122
- type: Injectable
123
- }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZHJhZ2dhYmxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBSzFELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFVSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUMsc0JBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0E0SHZEO0lBMUhDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE9BQWdCLEVBQUUsS0FBZ0I7UUFDOUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTyxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sQ0FBQyxPQUFPLENB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QztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0E5SFUsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCB9IGZyb20gJ2QzLXNlbGVjdGlvbic7XG5pbXBvcnQgeyBEM0RyYWdFdmVudCwgZHJhZyB9IGZyb20gJ2QzLWRyYWcnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tICcuLi91dGlscy9yb3VuZCc7XG5pbXBvcnQgeyBGbG93RW50aXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvaW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBGbG93U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9mbG93LXNldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgYWxpZ24gfSBmcm9tICcuLi91dGlscy9hbGlnbi1udW1iZXInO1xuaW1wb3J0IHsgRmxvd1N0YXR1c1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctc3RhdHVzLnNlcnZpY2UnO1xuXG50eXBlIERyYWdFdmVudCA9IEQzRHJhZ0V2ZW50PEVsZW1lbnQsIHVua25vd24sIHVua25vd24+O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlU2VydmljZSB7XG4gIHByaXZhdGUgZW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuICBwcml2YXRlIHNldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93U3RhdHVzU2VydmljZSA9IGluamVjdChGbG93U3RhdHVzU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBkcmFnZ2FibGUgYmVoYXZpb3IgZm9yIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50IHRhcmdldCBlbGVtZW50IGZvciB0b2dnbGluZyBkcmFnZ2FibGVcbiAgICogQHBhcmFtIG1vZGVsIG1vZGVsIHdpdGggZGF0YSBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZW5hYmxlKGVsZW1lbnQ6IEVsZW1lbnQsIG1vZGVsOiBOb2RlTW9kZWwpIHtcbiAgICBzZWxlY3QoZWxlbWVudCkuY2FsbCh0aGlzLmdldERyYWdCZWhhdmlvcihtb2RlbCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGUgZHJhZ2dhYmxlIGJlaGF2aW9yIGZvciBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCB0YXJnZXQgZWxlbWVudCBmb3IgdG9nZ2xpbmcgZHJhZ2dhYmxlXG4gICAqIEBwYXJhbSBtb2RlbCBtb2RlbCB3aXRoIGRhdGEgZm9yIHRoaXMgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGRpc2FibGUoZWxlbWVudDogRWxlbWVudCkge1xuICAgIHNlbGVjdChlbGVtZW50KS5jYWxsKGRyYWcoKS5vbignZHJhZycsIG51bGwpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUT0RPOiBub3Qgc2h1cmUgaWYgdGhpcyB3b3JrLCBuZWVkIHRvIGNoZWNrXG4gICAqXG4gICAqIEBwYXJhbSBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZGVzdHJveShlbGVtZW50OiBFbGVtZW50KSB7XG4gICAgc2VsZWN0KGVsZW1lbnQpLm9uKCcuZHJhZycsIG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vZGUgZHJhZyBiZWhhdmlvci4gVXBkYXRlZCBub2RlJ3MgY29vcmRpbmF0ZSBhY2NvcmRpbmcgdG8gZHJhZ2dpbmdcbiAgICpcbiAgICogQHBhcmFtIG1vZGVsXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIGdldERyYWdCZWhhdmlvcihtb2RlbDogTm9kZU1vZGVsKSB7XG4gICAgbGV0IGRyYWdOb2RlczogTm9kZU1vZGVsW10gPSBbXTtcbiAgICBsZXQgaW5pdGlhbFBvc2l0aW9uczogUG9pbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZmlsdGVyQ29uZGl0aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgLy8gaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGRyYWcgaGFuZGxlLCB3ZSBzaG91bGQgY2hlY2sgaWYgd2UgYXJlIGRyYWdnaW5nIGl0XG4gICAgICBpZiAobW9kZWwuZHJhZ0hhbmRsZXNDb3VudCgpKSB7XG4gICAgICAgIHJldHVybiAhIShldmVudC50YXJnZXQgYXMgRWxlbWVudCkuY2xvc2VzdCgnLnZmbG93LWRyYWctaGFuZGxlJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICByZXR1cm4gZHJhZygpXG4gICAgICAuZmlsdGVyKGZpbHRlckNvbmRpdGlvbilcbiAgICAgIC5vbignc3RhcnQnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBkcmFnTm9kZXMgPSB0aGlzLmdldERyYWdOb2Rlcyhtb2RlbCk7XG5cbiAgICAgICAgdGhpcy5mbG93U3RhdHVzU2VydmljZS5zZXROb2RlRHJhZ1N0YXJ0U3RhdHVzKG1vZGVsKTtcblxuICAgICAgICBpbml0aWFsUG9zaXRpb25zID0gZHJhZ05vZGVzLm1hcCgobm9kZSkgPT4gKHtcbiAgICAgICAgICB4OiBub2RlLnBvaW50KCkueCAtIGV2ZW50LngsXG4gICAgICAgICAgeTogbm9kZS5wb2ludCgpLnkgLSBldmVudC55LFxuICAgICAgICB9KSk7XG4gICAgICB9KVxuXG4gICAgICAub24oJ2RyYWcnLCAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICBkcmFnTm9kZXMuZm9yRWFjaCgobW9kZWwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgcG9pbnQgPSB7XG4gICAgICAgICAgICB4OiByb3VuZChldmVudC54ICsgaW5pdGlhbFBvc2l0aW9uc1tpbmRleF0ueCksXG4gICAgICAgICAgICB5OiByb3VuZChldmVudC55ICsgaW5pdGlhbFBvc2l0aW9uc1tpbmRleF0ueSksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHRoaXMubW92ZU5vZGUobW9kZWwsIHBvaW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuXG4gICAgICAub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5mbG93U3RhdHVzU2VydmljZS5zZXROb2RlRHJhZ0VuZFN0YXR1cyhtb2RlbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHJhZ05vZGVzKG1vZGVsOiBOb2RlTW9kZWwpIHtcbiAgICByZXR1cm4gbW9kZWwuc2VsZWN0ZWQoKVxuICAgICAgPyB0aGlzLmVudGl0aWVzU2VydmljZVxuICAgICAgICAgIC5ub2RlcygpXG4gICAgICAgICAgLy8gc2VsZWN0ZWQgZHJhZ2dhYmxlIG5vZGVzICh3aXRoIGN1cnJlbnQgbm9kZSlcbiAgICAgICAgICAuZmlsdGVyKChub2RlKSA9PiBub2RlLnNlbGVjdGVkKCkgJiYgbm9kZS5kcmFnZ2FibGUoKSlcbiAgICAgIDogLy8gd2Ugb25seSBjYW4gbW92ZSBjdXJyZW50IG5vZGUgaWYgaXQncyBub3Qgc2VsZWN0ZWRcbiAgICAgICAgW21vZGVsXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdG9kbyBtYWtlIGl0IHVuaXQgdGVzdGFibGVcbiAgICovXG4gIHByaXZhdGUgbW92ZU5vZGUobW9kZWw6IE5vZGVNb2RlbCwgcG9pbnQ6IFBvaW50KSB7XG4gICAgcG9pbnQgPSB0aGlzLmFsaWduVG9HcmlkKHBvaW50KTtcblxuICAgIGNvbnN0IHBhcmVudCA9IG1vZGVsLnBhcmVudCgpO1xuICAgIC8vIGtlZXAgbm9kZSBpbiBib3VuZHMgb2YgcGFyZW50XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcG9pbnQueCA9IE1hdGgubWluKHBhcmVudC53aWR0aCgpIC0gbW9kZWwud2lkdGgoKSwgcG9pbnQueCk7XG4gICAgICBwb2ludC54ID0gTWF0aC5tYXgoMCwgcG9pbnQueCk7XG5cbiAgICAgIHBvaW50LnkgPSBNYXRoLm1pbihwYXJlbnQuaGVpZ2h0KCkgLSBtb2RlbC5oZWlnaHQoKSwgcG9pbnQueSk7XG4gICAgICBwb2ludC55ID0gTWF0aC5tYXgoMCwgcG9pbnQueSk7XG4gICAgfVxuXG4gICAgbW9kZWwuc2V0UG9pbnQocG9pbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIG1ha2UgaXQgdW5pdCB0ZXN0YWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBhbGlnblRvR3JpZChwb2ludDogUG9pbnQpIHtcbiAgICBjb25zdCBbc25hcFgsIHNuYXBZXSA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLnNuYXBHcmlkKCk7XG5cbiAgICBpZiAoc25hcFggPiAxKSB7XG4gICAgICBwb2ludC54ID0gYWxpZ24ocG9pbnQueCwgc25hcFgpO1xuICAgIH1cblxuICAgIGlmIChzbmFwWSA+IDEpIHtcbiAgICAgIHBvaW50LnkgPSBhbGlnbihwb2ludC55LCBzbmFwWSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvaW50O1xuICB9XG59XG4iXX0=
@@ -1,43 +0,0 @@
1
- import { Injectable, computed, inject, untracked } from '@angular/core';
2
- import { FlowEntitiesService } from './flow-entities.service';
3
- import { asyncScheduler, distinctUntilChanged, filter, map, merge, observeOn, pairwise, skip, switchMap, zip, } from 'rxjs';
4
- import { toObservable } from '@angular/core/rxjs-interop';
5
- import * as i0 from "@angular/core";
6
- const haveSameContents = (a, b) => a.length === b.length &&
7
- [...new Set([...a, ...b])].every((v) => a.filter((e) => e === v).length === b.filter((e) => e === v).length);
8
- export class EdgeChangesService {
9
- constructor() {
10
- this.entitiesService = inject(FlowEntitiesService);
11
- this.edgeDetachedChange$ = merge(toObservable(computed(() => {
12
- const nodes = this.entitiesService.nodes();
13
- const edges = untracked(this.entitiesService.edges);
14
- return edges.filter(({ source, target }) => !nodes.includes(source()) || !nodes.includes(target()));
15
- })), toObservable(this.entitiesService.edges).pipe(switchMap((edges) => {
16
- return zip(...edges.map((e) => e.detached$.pipe(map(() => e))));
17
- }), map((edges) => edges.filter((e) => e.detached())),
18
- // TODO check why there are 2 emits
19
- skip(2))).pipe(
20
- // here we check if 2 approaches to detect detached edges emits same
21
- // and same values (this may happen on node delete)
22
- distinctUntilChanged(haveSameContents), filter((edges) => !!edges.length), map((edges) => edges.map(({ edge }) => ({ type: 'detached', id: edge.id }))));
23
- this.edgeAddChange$ = toObservable(this.entitiesService.edges).pipe(pairwise(), map(([oldList, newList]) => {
24
- return newList.filter((edge) => !oldList.includes(edge));
25
- }), filter((edges) => !!edges.length), map((edges) => edges.map(({ edge }) => ({ type: 'add', id: edge.id }))));
26
- this.edgeRemoveChange$ = toObservable(this.entitiesService.edges).pipe(pairwise(), map(([oldList, newList]) => {
27
- return oldList.filter((edge) => !newList.includes(edge));
28
- }), filter((edges) => !!edges.length), map((edges) => edges.map(({ edge }) => ({ type: 'remove', id: edge.id }))));
29
- this.edgeSelectChange$ = toObservable(this.entitiesService.edges).pipe(switchMap((edges) => merge(...edges.map((edge) => edge.selected$.pipe(distinctUntilChanged(), skip(1), map(() => edge))))), map((changedEdge) => [{ type: 'select', id: changedEdge.edge.id, selected: changedEdge.selected() }]));
30
- this.changes$ = merge(this.edgeDetachedChange$, this.edgeAddChange$, this.edgeRemoveChange$, this.edgeSelectChange$).pipe(
31
- // this fixes the case when user gets 'deteched' changes
32
- // and tries to delete these edges inside stream
33
- // angular may ignore this change because [edges] input changed
34
- // right after [nodes] input change
35
- observeOn(asyncScheduler));
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeChangesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeChangesService }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeChangesService, decorators: [{
41
- type: Injectable
42
- }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1jaGFuZ2VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvZWRnZS1jaGFuZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBRUwsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUcxRCxNQUFNLGdCQUFnQixHQUFHLENBQUksQ0FBTSxFQUFFLENBQU0sRUFBRSxFQUFFLENBQzdDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU07SUFDckIsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUcvRyxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRVksb0JBQWUsR0FBRyxN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SSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUMsSUFBSTtRQUNKLHdEQUF3RDtRQUN4RCxnREFBZ0Q7UUFDaEQsK0RBQStEO1FBQy9ELG1DQUFtQztRQUNuQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQzFCLENBQUM7S0FDSDsrR0F6RVksa0JBQWtCO21IQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgaW5qZWN0LCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBhc3luY1NjaGVkdWxlcixcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBtZXJnZSxcbiAgb2JzZXJ2ZU9uLFxuICBwYWlyd2lzZSxcbiAgc2tpcCxcbiAgc3dpdGNoTWFwLFxuICB6aXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRWRnZUNoYW5nZSB9IGZyb20gJy4uL3R5cGVzL2VkZ2UtY2hhbmdlLnR5cGUnO1xuXG5jb25zdCBoYXZlU2FtZUNvbnRlbnRzID0gPFQ+KGE6IFRbXSwgYjogVFtdKSA9PlxuICBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiZcbiAgWy4uLm5ldyBTZXQoWy4uLmEsIC4uLmJdKV0uZXZlcnkoKHYpID0+IGEuZmlsdGVyKChlKSA9PiBlID09PSB2KS5sZW5ndGggPT09IGIuZmlsdGVyKChlKSA9PiBlID09PSB2KS5sZW5ndGgpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRWRnZUNoYW5nZXNTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGVudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgZWRnZURldGFjaGVkQ2hhbmdlJCA9IG1lcmdlKFxuICAgIHRvT2JzZXJ2YWJsZShcbiAgICAgIGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmVudGl0aWVzU2VydmljZS5ub2RlcygpO1xuICAgICAgICBjb25zdCBlZGdlcyA9IHVudHJhY2tlZCh0aGlzLmVudGl0aWVzU2VydmljZS5lZGdlcyk7XG5cbiAgICAgICAgcmV0dXJuIGVkZ2VzLmZpbHRlcigoeyBzb3VyY2UsIHRhcmdldCB9KSA9PiAhbm9kZXMuaW5jbHVkZXMoc291cmNlKCkhKSB8fCAhbm9kZXMuaW5jbHVkZXModGFyZ2V0KCkhKSk7XG4gICAgICB9KSxcbiAgICApLFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5lZGdlcykucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZWRnZXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHppcCguLi5lZGdlcy5tYXAoKGUpID0+IGUuZGV0YWNoZWQkLnBpcGUobWFwKCgpID0+IGUpKSkpO1xuICAgICAgfSksXG4gICAgICBtYXAoKGVkZ2VzKSA9PiBlZGdlcy5maWx0ZXIoKGUpID0+IGUuZGV0YWNoZWQoKSkpLFxuICAgICAgLy8gVE9ETyBjaGVjayB3aHkgdGhlcmUgYXJlIDIgZW1pdHNcbiAgICAgIHNraXAoMiksXG4gICAgKSxcbiAgKS5waXBlKFxuICAgIC8vIGhlcmUgd2UgY2hlY2sgaWYgMiBhcHByb2FjaGVzIHRvIGRldGVjdCBkZXRhY2hlZCBlZGdlcyBlbWl0cyBzYW1lXG4gICAgLy8gYW5kIHNhbWUgdmFsdWVzICh0aGlzIG1heSBoYXBwZW4gb24gbm9kZSBkZWxldGUpXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoaGF2ZVNhbWVDb250ZW50cyksXG4gICAgZmlsdGVyKChlZGdlcykgPT4gISFlZGdlcy5sZW5ndGgpLFxuICAgIG1hcCgoZWRnZXMpID0+IGVkZ2VzLm1hcCgoeyBlZGdlIH0pID0+ICh7IHR5cGU6ICdkZXRhY2hlZCcsIGlkOiBlZGdlLmlkIH0pKSksXG4gICkgc2F0aXNmaWVzIE9ic2VydmFibGU8RWRnZUNoYW5nZVtdPjtcblxuICBwcm90ZWN0ZWQgZWRnZUFkZENoYW5nZSQgPSB0b09ic2VydmFibGUodGhpcy5lbnRpdGllc1NlcnZpY2UuZWRnZXMpLnBpcGUoXG4gICAgcGFpcndpc2UoKSxcbiAgICBtYXAoKFtvbGRMaXN0LCBuZXdMaXN0XSkgPT4ge1xuICAgICAgcmV0dXJuIG5ld0xpc3QuZmlsdGVyKChlZGdlKSA9PiAhb2xkTGlzdC5pbmNsdWRlcyhlZGdlKSk7XG4gICAgfSksXG4gICAgZmlsdGVyKChlZGdlcykgPT4gISFlZGdlcy5sZW5ndGgpLFxuICAgIG1hcCgoZWRnZXMpID0+IGVkZ2VzLm1hcCgoeyBlZGdlIH0pID0+ICh7IHR5cGU6ICdhZGQnLCBpZDogZWRnZS5pZCB9KSkpLFxuICApIHNhdGlzZmllcyBPYnNlcnZhYmxlPEVkZ2VDaGFuZ2VbXT47XG5cbiAgcHJvdGVjdGVkIGVkZ2VSZW1vdmVDaGFuZ2UkID0gdG9PYnNlcnZhYmxlKHRoaXMuZW50aXRpZXNTZXJ2aWNlLmVkZ2VzKS5waXBlKFxuICAgIHBhaXJ3aXNlKCksXG4gICAgbWFwKChbb2xkTGlzdCwgbmV3TGlzdF0pID0+IHtcbiAgICAgIHJldHVybiBvbGRMaXN0LmZpbHRlcigoZWRnZSkgPT4gIW5ld0xpc3QuaW5jbHVkZXMoZWRnZSkpO1xuICAgIH0pLFxuICAgIGZpbHRlcigoZWRnZXMpID0+ICEhZWRnZXMubGVuZ3RoKSxcbiAgICBtYXAoKGVkZ2VzKSA9PiBlZGdlcy5tYXAoKHsgZWRnZSB9KSA9PiAoeyB0eXBlOiAncmVtb3ZlJywgaWQ6IGVkZ2UuaWQgfSkpKSxcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxFZGdlQ2hhbmdlW10+O1xuXG4gIHByb3RlY3RlZCBlZGdlU2VsZWN0Q2hhbmdlJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmVudGl0aWVzU2VydmljZS5lZGdlcykucGlwZShcbiAgICBzd2l0Y2hNYXAoKGVkZ2VzKSA9PlxuICAgICAgbWVyZ2UoXG4gICAgICAgIC4uLmVkZ2VzLm1hcCgoZWRnZSkgPT5cbiAgICAgICAgICBlZGdlLnNlbGVjdGVkJC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gZWRnZSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBtYXAoKGNoYW5nZWRFZGdlKSA9PiBbeyB0eXBlOiAnc2VsZWN0JywgaWQ6IGNoYW5nZWRFZGdlLmVkZ2UuaWQsIHNlbGVjdGVkOiBjaGFuZ2VkRWRnZS5zZWxlY3RlZCgpIH1dKSxcbiAgKSBzYXRpc2ZpZXMgT2JzZXJ2YWJsZTxFZGdlQ2hhbmdlW10+O1xuXG4gIHB1YmxpYyByZWFkb25seSBjaGFuZ2VzJDogT2JzZXJ2YWJsZTxFZGdlQ2hhbmdlW10+ID0gbWVyZ2UoXG4gICAgdGhpcy5lZGdlRGV0YWNoZWRDaGFuZ2UkLFxuICAgIHRoaXMuZWRnZUFkZENoYW5nZSQsXG4gICAgdGhpcy5lZGdlUmVtb3ZlQ2hhbmdlJCxcbiAgICB0aGlzLmVkZ2VTZWxlY3RDaGFuZ2UkLFxuICApLnBpcGUoXG4gICAgLy8gdGhpcyBmaXhlcyB0aGUgY2FzZSB3aGVuIHVzZXIgZ2V0cyAnZGV0ZWNoZWQnIGNoYW5nZXNcbiAgICAvLyBhbmQgdHJpZXMgdG8gZGVsZXRlIHRoZXNlIGVkZ2VzIGluc2lkZSBzdHJlYW1cbiAgICAvLyBhbmd1bGFyIG1heSBpZ25vcmUgdGhpcyBjaGFuZ2UgYmVjYXVzZSBbZWRnZXNdIGlucHV0IGNoYW5nZWRcbiAgICAvLyByaWdodCBhZnRlciBbbm9kZXNdIGlucHV0IGNoYW5nZVxuICAgIG9ic2VydmVPbihhc3luY1NjaGVkdWxlciksXG4gICk7XG59XG4iXX0=
@@ -1,40 +0,0 @@
1
- import { Injectable, computed, inject } from '@angular/core';
2
- import { FlowEntitiesService } from './flow-entities.service';
3
- import { FlowSettingsService } from './flow-settings.service';
4
- import * as i0 from "@angular/core";
5
- export class EdgeRenderingService {
6
- constructor() {
7
- this.flowEntitiesService = inject(FlowEntitiesService);
8
- this.flowSettingsService = inject(FlowSettingsService);
9
- this.edges = computed(() => {
10
- if (!this.flowSettingsService.optimization().virtualization) {
11
- return [...this.flowEntitiesService.validEdges()].sort((aEdge, bEdge) => aEdge.renderOrder() - bEdge.renderOrder());
12
- }
13
- return this.viewportEdges().sort((aEdge, bEdge) => aEdge.renderOrder() - bEdge.renderOrder());
14
- });
15
- this.viewportEdges = computed(() => {
16
- return this.flowEntitiesService.validEdges().filter((e) => {
17
- const sourceHandle = e.sourceHandle();
18
- const targetHandle = e.targetHandle();
19
- return sourceHandle && targetHandle;
20
- });
21
- });
22
- this.maxOrder = computed(() => {
23
- return Math.max(...this.flowEntitiesService.validEdges().map((n) => n.renderOrder()));
24
- });
25
- }
26
- pull(edge) {
27
- const isAlreadyOnTop = edge.renderOrder() !== 0 && this.maxOrder() === edge.renderOrder();
28
- if (isAlreadyOnTop) {
29
- return;
30
- }
31
- // pull node
32
- edge.renderOrder.set(this.maxOrder() + 1);
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeRenderingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeRenderingService }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EdgeRenderingService, decorators: [{
38
- type: Injectable
39
- }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS1yZW5kZXJpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9lZGdlLXJlbmRlcmluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFHOUQsTUFBTSxPQUFPLG9CQUFvQjtJQURqQztRQUVVLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xELHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTFDLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDcEQsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUM1RCxDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNoRyxDQUFDLENBQUMsQ0FBQztRQUVhLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDeEQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBRXRDLE9BQU8sWUFBWSxJQUFJLFlBQVksQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUssYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixDQUFDLENBQUMsQ0FBQztLQVlKO0lBVlEsSUFBSSxDQUFDLElBQWU7UUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTFGLElBQUksY0FBYyxFQUFFLENBQUM7WUFDbkIsT0FBTztRQUNULENBQUM7UUFFRCxZQUFZO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7K0dBcENVLG9CQUFvQjttSEFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4vZmxvdy1lbnRpdGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEVkZ2VNb2RlbCB9IGZyb20gJy4uL21vZGVscy9lZGdlLm1vZGVsJztcbmltcG9ydCB7IEZsb3dTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctc2V0dGluZ3Muc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFZGdlUmVuZGVyaW5nU2VydmljZSB7XG4gIHByaXZhdGUgZmxvd0VudGl0aWVzU2VydmljZSA9IGluamVjdChGbG93RW50aXRpZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmbG93U2V0dGluZ3NTZXJ2aWNlID0gaW5qZWN0KEZsb3dTZXR0aW5nc1NlcnZpY2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlZGdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZmxvd1NldHRpbmdzU2VydmljZS5vcHRpbWl6YXRpb24oKS52aXJ0dWFsaXphdGlvbikge1xuICAgICAgcmV0dXJuIFsuLi50aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UudmFsaWRFZGdlcygpXS5zb3J0KFxuICAgICAgICAoYUVkZ2UsIGJFZGdlKSA9PiBhRWRnZS5yZW5kZXJPcmRlcigpIC0gYkVkZ2UucmVuZGVyT3JkZXIoKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmlld3BvcnRFZGdlcygpLnNvcnQoKGFFZGdlLCBiRWRnZSkgPT4gYUVkZ2UucmVuZGVyT3JkZXIoKSAtIGJFZGdlLnJlbmRlck9yZGVyKCkpO1xuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdmlld3BvcnRFZGdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLnZhbGlkRWRnZXMoKS5maWx0ZXIoKGUpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZUhhbmRsZSA9IGUuc291cmNlSGFuZGxlKCk7XG4gICAgICBjb25zdCB0YXJnZXRIYW5kbGUgPSBlLnRhcmdldEhhbmRsZSgpO1xuXG4gICAgICByZXR1cm4gc291cmNlSGFuZGxlICYmIHRhcmdldEhhbmRsZTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBtYXhPcmRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gTWF0aC5tYXgoLi4udGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLnZhbGlkRWRnZXMoKS5tYXAoKG4pID0+IG4ucmVuZGVyT3JkZXIoKSkpO1xuICB9KTtcblxuICBwdWJsaWMgcHVsbChlZGdlOiBFZGdlTW9kZWwpIHtcbiAgICBjb25zdCBpc0FscmVhZHlPblRvcCA9IGVkZ2UucmVuZGVyT3JkZXIoKSAhPT0gMCAmJiB0aGlzLm1heE9yZGVyKCkgPT09IGVkZ2UucmVuZGVyT3JkZXIoKTtcblxuICAgIGlmIChpc0FscmVhZHlPblRvcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHB1bGwgbm9kZVxuICAgIGVkZ2UucmVuZGVyT3JkZXIuc2V0KHRoaXMubWF4T3JkZXIoKSArIDEpO1xuICB9XG59XG4iXX0=
@@ -1,56 +0,0 @@
1
- import { Injectable, computed, signal } from '@angular/core';
2
- import { ConnectionModel } from '../models/connection.model';
3
- import { hashCode } from '../utils/hash';
4
- import * as i0 from "@angular/core";
5
- export class FlowEntitiesService {
6
- constructor() {
7
- this.nodes = signal([], {
8
- // empty arrays considered equal, other arrays may not be equal
9
- equal: (a, b) => (!a.length && !b.length ? true : a === b),
10
- });
11
- this.rawNodes = computed(() => this.nodes().map((n) => n.rawNode));
12
- this.edges = signal([], {
13
- // empty arrays considered equal, other arrays may not be equal
14
- equal: (a, b) => (!a.length && !b.length ? true : a === b),
15
- });
16
- this.rawEdges = computed(() => this.edges().map((e) => e.edge));
17
- this.validEdges = computed(() => {
18
- const nodes = this.nodes();
19
- return this.edges().filter((e) => nodes.includes(e.source()) && nodes.includes(e.target()));
20
- });
21
- this.connection = signal(new ConnectionModel({}));
22
- this.markers = computed(() => {
23
- const markersMap = new Map();
24
- this.validEdges().forEach((e) => {
25
- if (e.edge.markers?.start) {
26
- const hash = hashCode(JSON.stringify(e.edge.markers.start));
27
- markersMap.set(hash, e.edge.markers.start);
28
- }
29
- if (e.edge.markers?.end) {
30
- const hash = hashCode(JSON.stringify(e.edge.markers.end));
31
- markersMap.set(hash, e.edge.markers.end);
32
- }
33
- });
34
- const connectionMarker = this.connection().settings.marker;
35
- if (connectionMarker) {
36
- const hash = hashCode(JSON.stringify(connectionMarker));
37
- markersMap.set(hash, connectionMarker);
38
- }
39
- return markersMap;
40
- });
41
- this.entities = computed(() => [...this.nodes(), ...this.edges()]);
42
- this.minimap = signal(null);
43
- }
44
- getNode(id) {
45
- return this.nodes().find(({ rawNode }) => rawNode.id === id);
46
- }
47
- getDetachedEdges() {
48
- return this.edges().filter((e) => e.detached());
49
- }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowEntitiesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
51
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowEntitiesService }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowEntitiesService, decorators: [{
54
- type: Injectable
55
- }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1lbnRpdGllcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3NlcnZpY2VzL2Zsb3ctZW50aXRpZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU16QyxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRWtCLFVBQUssR0FBRyxNQUFNLENBQWMsRUFBRSxFQUFFO1lBQzlDLCtEQUErRDtZQUMvRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzRCxDQUFDLENBQUM7UUFFYSxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQTJCLENBQUMsQ0FBQztRQUV4RixVQUFLLEdBQUcsTUFBTSxDQUFjLEVBQUUsRUFBRTtZQUM5QywrREFBK0Q7WUFDL0QsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFD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LENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDOytHQXpEVSxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFNpZ25hbCwgV3JpdGFibGVTaWduYWwsIGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcbmltcG9ydCB7IEVkZ2VNb2RlbCB9IGZyb20gJy4uL21vZGVscy9lZGdlLm1vZGVsJztcbmltcG9ydCB7IENvbm5lY3Rpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9jb25uZWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IE1hcmtlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvbWFya2VyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBoYXNoQ29kZSB9IGZyb20gJy4uL3V0aWxzL2hhc2gnO1xuaW1wb3J0IHsgRmxvd0VudGl0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmxvdy1lbnRpdHkuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1pbmltYXBNb2RlbCB9IGZyb20gJy4uL21vZGVscy9taW5pbWFwLm1vZGVsJztcbmltcG9ydCB7IER5bmFtaWNOb2RlLCBOb2RlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ub2RlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93RW50aXRpZXNTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IG5vZGVzID0gc2lnbmFsPE5vZGVNb2RlbFtdPihbXSwge1xuICAgIC8vIGVtcHR5IGFycmF5cyBjb25zaWRlcmVkIGVxdWFsLCBvdGhlciBhcnJheXMgbWF5IG5vdCBiZSBlcXVhbFxuICAgIGVxdWFsOiAoYSwgYikgPT4gKCFhLmxlbmd0aCAmJiAhYi5sZW5ndGggPyB0cnVlIDogYSA9PT0gYiksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSByYXdOb2RlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMubm9kZXMoKS5tYXAoKG4pID0+IG4ucmF3Tm9kZSkgYXMgTm9kZVtdIHwgRHluYW1pY05vZGVbXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVkZ2VzID0gc2lnbmFsPEVkZ2VNb2RlbFtdPihbXSwge1xuICAgIC8vIGVtcHR5IGFycmF5cyBjb25zaWRlcmVkIGVxdWFsLCBvdGhlciBhcnJheXMgbWF5IG5vdCBiZSBlcXVhbFxuICAgIGVxdWFsOiAoYSwgYikgPT4gKCFhLmxlbmd0aCAmJiAhYi5sZW5ndGggPyB0cnVlIDogYSA9PT0gYiksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSByYXdFZGdlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZWRnZXMoKS5tYXAoKGUpID0+IGUuZWRnZSkpO1xuXG4gIHB1YmxpYyByZWFkb25seSB2YWxpZEVkZ2VzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5ub2RlcygpO1xuXG4gICAgcmV0dXJuIHRoaXMuZWRnZXMoKS5maWx0ZXIoKGUpID0+IG5vZGVzLmluY2x1ZGVzKGUuc291cmNlKCkhKSAmJiBub2Rlcy5pbmNsdWRlcyhlLnRhcmdldCgpISkpO1xuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbiA9IHNpZ25hbDxDb25uZWN0aW9uTW9kZWw+KG5ldyBDb25uZWN0aW9uTW9kZWwoe30pKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbWFya2VycyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtYXJrZXJzTWFwID0gbmV3IE1hcDxudW1iZXIsIE1hcmtlcj4oKTtcblxuICAgIHRoaXMudmFsaWRFZGdlcygpLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGlmIChlLmVkZ2UubWFya2Vycz8uc3RhcnQpIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IGhhc2hDb2RlKEpTT04uc3RyaW5naWZ5KGUuZWRnZS5tYXJrZXJzLnN0YXJ0KSk7XG4gICAgICAgIG1hcmtlcnNNYXAuc2V0KGhhc2gsIGUuZWRnZS5tYXJrZXJzLnN0YXJ0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGUuZWRnZS5tYXJrZXJzPy5lbmQpIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IGhhc2hDb2RlKEpTT04uc3RyaW5naWZ5KGUuZWRnZS5tYXJrZXJzLmVuZCkpO1xuICAgICAgICBtYXJrZXJzTWFwLnNldChoYXNoLCBlLmVkZ2UubWFya2Vycy5lbmQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29ubmVjdGlvbk1hcmtlciA9IHRoaXMuY29ubmVjdGlvbigpLnNldHRpbmdzLm1hcmtlcjtcbiAgICBpZiAoY29ubmVjdGlvbk1hcmtlcikge1xuICAgICAgY29uc3QgaGFzaCA9IGhhc2hDb2RlKEpTT04uc3RyaW5naWZ5KGNvbm5lY3Rpb25NYXJrZXIpKTtcbiAgICAgIG1hcmtlcnNNYXAuc2V0KGhhc2gsIGNvbm5lY3Rpb25NYXJrZXIpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXJrZXJzTWFwO1xuICB9KTtcblxuICBwdWJsaWMgZW50aXRpZXM6IFNpZ25hbDxGbG93RW50aXR5W10+ID0gY29tcHV0ZWQoKCkgPT4gWy4uLnRoaXMubm9kZXMoKSwgLi4udGhpcy5lZGdlcygpXSk7XG5cbiAgcHVibGljIG1pbmltYXA6IFdyaXRhYmxlU2lnbmFsPE1pbmltYXBNb2RlbCB8IG51bGw+ID0gc2lnbmFsKG51bGwpO1xuXG4gIHB1YmxpYyBnZXROb2RlPFQ+KGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpLmZpbmQoKHsgcmF3Tm9kZSB9KSA9PiByYXdOb2RlLmlkID09PSBpZCkgYXMgTm9kZU1vZGVsPFQ+IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGdldERldGFjaGVkRWRnZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRnZXMoKS5maWx0ZXIoKGUpID0+IGUuZGV0YWNoZWQoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,41 +0,0 @@
1
- import { inject, Injectable, NgZone, signal } from '@angular/core';
2
- import { NodeRenderingService } from './node-rendering.service';
3
- import { EdgeRenderingService } from './edge-rendering.service';
4
- import { FlowSettingsService } from './flow-settings.service';
5
- import { FlowEntitiesService } from './flow-entities.service';
6
- import * as i0 from "@angular/core";
7
- export class FlowRenderingService {
8
- constructor() {
9
- this.nodeRenderingService = inject(NodeRenderingService);
10
- this.edgeRenderingService = inject(EdgeRenderingService);
11
- this.flowEntitiesService = inject(FlowEntitiesService);
12
- this.settingsService = inject(FlowSettingsService);
13
- this.flowInitialized = signal(false);
14
- inject(NgZone).runOutsideAngular(async () => {
15
- await skipFrames(2);
16
- this.flowInitialized.set(true);
17
- });
18
- }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowRenderingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
20
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowRenderingService }); }
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowRenderingService, decorators: [{
23
- type: Injectable
24
- }], ctorParameters: () => [] });
25
- // TODO may break on edge cases
26
- function skipFrames(count) {
27
- return new Promise((resolve) => {
28
- let frames = 0;
29
- function checkFrame() {
30
- frames++;
31
- if (frames < count) {
32
- requestAnimationFrame(checkFrame);
33
- }
34
- else {
35
- resolve();
36
- }
37
- }
38
- requestAnimationFrame(checkFrame);
39
- });
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1yZW5kZXJpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9mbG93LXJlbmRlcmluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRzlELE1BQU0sT0FBTyxvQkFBb0I7SUFRL0I7UUFQaUIseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDcEQseUJBQW9CLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDcEQsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbEQsb0JBQWUsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV4RCxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUdyQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDMUMsTUFBTSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQWRVLG9CQUFvQjttSEFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVOztBQWtCWCwrQkFBK0I7QUFDL0IsU0FBUyxVQUFVLENBQUMsS0FBYTtJQUMvQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0IsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRWYsU0FBUyxVQUFVO1lBQ2pCLE1BQU0sRUFBRSxDQUFDO1lBRVQsSUFBSSxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQ25CLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO1FBRUQscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBOZ1pvbmUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZVJlbmRlcmluZ1NlcnZpY2UgfSBmcm9tICcuL25vZGUtcmVuZGVyaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRnZVJlbmRlcmluZ1NlcnZpY2UgfSBmcm9tICcuL2VkZ2UtcmVuZGVyaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd1NldHRpbmdzU2VydmljZSB9IGZyb20gJy4vZmxvdy1zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93UmVuZGVyaW5nU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZVJlbmRlcmluZ1NlcnZpY2UgPSBpbmplY3QoTm9kZVJlbmRlcmluZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVkZ2VSZW5kZXJpbmdTZXJ2aWNlID0gaW5qZWN0KEVkZ2VSZW5kZXJpbmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBmbG93RW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdzU2VydmljZSA9IGluamVjdChGbG93U2V0dGluZ3NTZXJ2aWNlKTtcblxuICBwdWJsaWMgZmxvd0luaXRpYWxpemVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpbmplY3QoTmdab25lKS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBza2lwRnJhbWVzKDIpO1xuXG4gICAgICB0aGlzLmZsb3dJbml0aWFsaXplZC5zZXQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cbn1cblxuLy8gVE9ETyBtYXkgYnJlYWsgb24gZWRnZSBjYXNlc1xuZnVuY3Rpb24gc2tpcEZyYW1lcyhjb3VudDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBmcmFtZXMgPSAwO1xuXG4gICAgZnVuY3Rpb24gY2hlY2tGcmFtZSgpIHtcbiAgICAgIGZyYW1lcysrO1xuXG4gICAgICBpZiAoZnJhbWVzIDwgY291bnQpIHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGNoZWNrRnJhbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjaGVja0ZyYW1lKTtcbiAgfSk7XG59XG4iXX0=
@@ -1,33 +0,0 @@
1
- import { Injectable, signal } from '@angular/core';
2
- import { DEFAULT_OPTIMIZATION } from '../interfaces/optimization.interface';
3
- import * as i0 from "@angular/core";
4
- export class FlowSettingsService {
5
- constructor() {
6
- this.entitiesSelectable = signal(true);
7
- this.elevateNodesOnSelect = signal(true);
8
- this.elevateEdgesOnSelect = signal(true);
9
- /**
10
- * @see {VflowComponent.view}
11
- */
12
- this.view = signal([400, 400]);
13
- /**
14
- * Set based on view property. May change if view is 'auto'
15
- */
16
- this.computedFlowWidth = signal(0);
17
- /**
18
- * Set based on view property. May change if view is 'auto'
19
- */
20
- this.computedFlowHeight = signal(0);
21
- this.minZoom = signal(0.5);
22
- this.maxZoom = signal(3);
23
- this.background = signal({ type: 'solid', color: '#fff' });
24
- this.snapGrid = signal([1, 1]);
25
- this.optimization = signal(DEFAULT_OPTIMIZATION);
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
28
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowSettingsService }); }
29
- }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowSettingsService, decorators: [{
31
- type: Injectable
32
- }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3NlcnZpY2VzL2Zsb3ctc2V0dGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLG9CQUFvQixFQUFnQixNQUFNLHNDQUFzQyxDQUFDOztBQUcxRixNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRVMsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWxDLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0M7O1dBRUc7UUFDSSxTQUFJLEdBQThDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVFOztXQUVHO1FBQ0ksc0JBQWlCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJDOztXQUVHO1FBQ0ksdUJBQWtCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9CLFlBQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdEIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwQixlQUFVLEdBQUcsTUFBTSxDQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUVsRSxhQUFRLEdBQUcsTUFBTSxDQUFtQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVDLGlCQUFZLEdBQUcsTUFBTSxDQUF5QixvQkFBb0IsQ0FBQyxDQUFDO0tBQzVFOytHQTlCWSxtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFdyaXRhYmxlU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhY2tncm91bmQgfSBmcm9tICcuLi90eXBlcy9iYWNrZ3JvdW5kLnR5cGUnO1xuaW1wb3J0IHsgREVGQVVMVF9PUFRJTUlaQVRJT04sIE9wdGltaXphdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvb3B0aW1pemF0aW9uLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93U2V0dGluZ3NTZXJ2aWNlIHtcbiAgcHVibGljIGVudGl0aWVzU2VsZWN0YWJsZSA9IHNpZ25hbCh0cnVlKTtcblxuICBwdWJsaWMgZWxldmF0ZU5vZGVzT25TZWxlY3QgPSBzaWduYWwodHJ1ZSk7XG4gIHB1YmxpYyBlbGV2YXRlRWRnZXNPblNlbGVjdCA9IHNpZ25hbCh0cnVlKTtcblxuICAvKipcbiAgICogQHNlZSB7VmZsb3dDb21wb25lbnQudmlld31cbiAgICovXG4gIHB1YmxpYyB2aWV3OiBXcml0YWJsZVNpZ25hbDxbbnVtYmVyLCBudW1iZXJdIHwgJ2F1dG8nPiA9IHNpZ25hbChbNDAwLCA0MDBdKTtcblxuICAvKipcbiAgICogU2V0IGJhc2VkIG9uIHZpZXcgcHJvcGVydHkuIE1heSBjaGFuZ2UgaWYgdmlldyBpcyAnYXV0bydcbiAgICovXG4gIHB1YmxpYyBjb21wdXRlZEZsb3dXaWR0aCA9IHNpZ25hbCgwKTtcblxuICAvKipcbiAgICogU2V0IGJhc2VkIG9uIHZpZXcgcHJvcGVydHkuIE1heSBjaGFuZ2UgaWYgdmlldyBpcyAnYXV0bydcbiAgICovXG4gIHB1YmxpYyBjb21wdXRlZEZsb3dIZWlnaHQgPSBzaWduYWwoMCk7XG5cbiAgcHVibGljIG1pblpvb20gPSBzaWduYWwoMC41KTtcblxuICBwdWJsaWMgbWF4Wm9vbSA9IHNpZ25hbCgzKTtcblxuICBwdWJsaWMgYmFja2dyb3VuZCA9IHNpZ25hbDxCYWNrZ3JvdW5kPih7IHR5cGU6ICdzb2xpZCcsIGNvbG9yOiAnI2ZmZicgfSk7XG5cbiAgcHVibGljIHNuYXBHcmlkID0gc2lnbmFsPFtudW1iZXIsIG51bWJlcl0+KFsxLCAxXSk7XG5cbiAgcHVibGljIG9wdGltaXphdGlvbiA9IHNpZ25hbDxSZXF1aXJlZDxPcHRpbWl6YXRpb24+PihERUZBVUxUX09QVElNSVpBVElPTik7XG59XG4iXX0=
@@ -1,49 +0,0 @@
1
- import { Injectable, signal } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class FlowStatusService {
4
- constructor() {
5
- this.status = signal({ state: 'idle', payload: null });
6
- }
7
- setIdleStatus() {
8
- this.status.set({ state: 'idle', payload: null });
9
- }
10
- setConnectionStartStatus(source, sourceHandle) {
11
- this.status.set({ state: 'connection-start', payload: { source, sourceHandle } });
12
- }
13
- setReconnectionStartStatus(source, sourceHandle, oldEdge) {
14
- this.status.set({ state: 'reconnection-start', payload: { source, sourceHandle, oldEdge } });
15
- }
16
- setConnectionValidationStatus(valid, source, target, sourceHandle, targetHandle) {
17
- this.status.set({ state: 'connection-validation', payload: { source, target, sourceHandle, targetHandle, valid } });
18
- }
19
- setReconnectionValidationStatus(valid, source, target, sourceHandle, targetHandle, oldEdge) {
20
- this.status.set({
21
- state: 'reconnection-validation',
22
- payload: { source, target, sourceHandle, targetHandle, valid, oldEdge },
23
- });
24
- }
25
- setConnectionEndStatus(source, target, sourceHandle, targetHandle) {
26
- this.status.set({ state: 'connection-end', payload: { source, target, sourceHandle, targetHandle } });
27
- }
28
- setReconnectionEndStatus(source, target, sourceHandle, targetHandle, oldEdge) {
29
- this.status.set({ state: 'reconnection-end', payload: { source, target, sourceHandle, targetHandle, oldEdge } });
30
- }
31
- setNodeDragStartStatus(node) {
32
- this.status.set({ state: 'node-drag-start', payload: { node } });
33
- }
34
- setNodeDragEndStatus(node) {
35
- this.status.set({ state: 'node-drag-end', payload: { node } });
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowStatusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowStatusService }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FlowStatusService, decorators: [{
41
- type: Injectable
42
- }] });
43
- export function isNodeDragStartStatus(params) {
44
- return params.state === 'node-drag-start';
45
- }
46
- export function isNodeDragEndStatus(params) {
47
- return params.state === 'node-drag-end';
48
- }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0dXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9mbG93LXN0YXR1cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQTRFbkQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVrQixXQUFNLEdBQUcsTUFBTSxDQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztLQWdFL0U7SUE5RFEsYUFBYTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLE1BQWlCLEVBQUUsWUFBeUI7UUFDMUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRU0sMEJBQTBCLENBQUMsTUFBaUIsRUFBRSxZQUF5QixFQUFFLE9BQWtCO1FBQ2hHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTSw2QkFBNkIsQ0FDbEMsS0FBYyxFQUNkLE1BQWlCLEVBQ2pCLE1BQWlCLEVBQ2pCLFlBQXlCLEVBQ3pCLFlBQXlCO1FBRXpCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEgsQ0FBQztJQUVNLCtCQUErQixDQUNwQyxLQUFjLEVBQ2QsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsWUFBeUIsRUFDekIsWUFBeUIsRUFDekIsT0FBa0I7UUFFbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDZCxLQUFLLEVBQUUseUJBQXlCO1lBQ2hDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO1NBQ3hFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxzQkFBc0IsQ0FDM0IsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsWUFBeUIsRUFDekIsWUFBeUI7UUFFekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7SUFFTSx3QkFBd0IsQ0FDN0IsTUFBaUIsRUFDakIsTUFBaUIsRUFDakIsWUFBeUIsRUFDekIsWUFBeUIsRUFDekIsT0FBa0I7UUFFbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRU0sc0JBQXNCLENBQUMsSUFBZTtRQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLG9CQUFvQixDQUFDLElBQWU7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOytHQWhFVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7QUFvRVgsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE1BQWtCO0lBQ3RELE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxpQkFBaUIsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQWtCO0lBQ3BELE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUM7QUFDMUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IENvbm5lY3Rpb25JbnRlcm5hbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29ubmVjdGlvbi5pbnRlcm5hbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRWRnZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2VkZ2UubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNJZGxlIHtcbiAgc3RhdGU6ICdpZGxlJztcbiAgcGF5bG9hZDogbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzQ29ubmVjdGlvblN0YXJ0IHtcbiAgc3RhdGU6ICdjb25uZWN0aW9uLXN0YXJ0JztcbiAgcGF5bG9hZDogT21pdDxDb25uZWN0aW9uSW50ZXJuYWwsICd0YXJnZXQnIHwgJ3RhcmdldEhhbmRsZSc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNDb25uZWN0aW9uVmFsaWRhdGlvbiB7XG4gIHN0YXRlOiAnY29ubmVjdGlvbi12YWxpZGF0aW9uJztcbiAgcGF5bG9hZDogQ29ubmVjdGlvbkludGVybmFsICYge1xuICAgIHZhbGlkOiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGF0dXNDb25uZWN0aW9uRW5kIHtcbiAgc3RhdGU6ICdjb25uZWN0aW9uLWVuZCc7XG4gIHBheWxvYWQ6IENvbm5lY3Rpb25JbnRlcm5hbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzUmVjb25uZWN0aW9uU3RhcnQge1xuICBzdGF0ZTogJ3JlY29ubmVjdGlvbi1zdGFydCc7XG4gIHBheWxvYWQ6IE9taXQ8Q29ubmVjdGlvbkludGVybmFsLCAndGFyZ2V0JyB8ICd0YXJnZXRIYW5kbGUnPiAmIHtcbiAgICBvbGRFZGdlOiBFZGdlTW9kZWw7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N0YXR1c1JlY29ubmVjdGlvblZhbGlkYXRpb24ge1xuICBzdGF0ZTogJ3JlY29ubmVjdGlvbi12YWxpZGF0aW9uJztcbiAgcGF5bG9hZDogQ29ubmVjdGlvbkludGVybmFsICYge1xuICAgIHZhbGlkOiBib29sZWFuO1xuICAgIG9sZEVkZ2U6IEVkZ2VNb2RlbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzUmVjb25uZWN0aW9uRW5kIHtcbiAgc3RhdGU6ICdyZWNvbm5lY3Rpb24tZW5kJztcbiAgcGF5bG9hZDogQ29ubmVjdGlvbkludGVybmFsICYge1xuICAgIG9sZEVkZ2U6IEVkZ2VNb2RlbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzTm9kZURyYWdTdGFydCB7XG4gIHN0YXRlOiAnbm9kZS1kcmFnLXN0YXJ0JztcbiAgcGF5bG9hZDoge1xuICAgIG5vZGU6IE5vZGVNb2RlbDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93U3RhdHVzTm9kZURyYWdFbmQge1xuICBzdGF0ZTogJ25vZGUtZHJhZy1lbmQnO1xuICBwYXlsb2FkOiB7XG4gICAgbm9kZTogTm9kZU1vZGVsO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBGbG93U3RhdHVzID1cbiAgfCBGbG93U3RhdHVzSWRsZVxuICB8IEZsb3dTdGF0dXNDb25uZWN0aW9uU3RhcnRcbiAgfCBGbG93U3RhdHVzQ29ubmVjdGlvblZhbGlkYXRpb25cbiAgfCBGbG93U3RhdHVzQ29ubmVjdGlvbkVuZFxuICB8IEZsb3dTdGF0dXNSZWNvbm5lY3Rpb25TdGFydFxuICB8IEZsb3dTdGF0dXNSZWNvbm5lY3Rpb25WYWxpZGF0aW9uXG4gIHwgRmxvd1N0YXR1c1JlY29ubmVjdGlvbkVuZFxuICB8IEZsb3dTdGF0dXNOb2RlRHJhZ1N0YXJ0XG4gIHwgRmxvd1N0YXR1c05vZGVEcmFnRW5kO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmxvd1N0YXR1c1NlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzID0gc2lnbmFsPEZsb3dTdGF0dXM+KHsgc3RhdGU6ICdpZGxlJywgcGF5bG9hZDogbnVsbCB9KTtcblxuICBwdWJsaWMgc2V0SWRsZVN0YXR1cygpIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ2lkbGUnLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9XG5cbiAgcHVibGljIHNldENvbm5lY3Rpb25TdGFydFN0YXR1cyhzb3VyY2U6IE5vZGVNb2RlbCwgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCkge1xuICAgIHRoaXMuc3RhdHVzLnNldCh7IHN0YXRlOiAnY29ubmVjdGlvbi1zdGFydCcsIHBheWxvYWQ6IHsgc291cmNlLCBzb3VyY2VIYW5kbGUgfSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSZWNvbm5lY3Rpb25TdGFydFN0YXR1cyhzb3VyY2U6IE5vZGVNb2RlbCwgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCwgb2xkRWRnZTogRWRnZU1vZGVsKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHsgc3RhdGU6ICdyZWNvbm5lY3Rpb24tc3RhcnQnLCBwYXlsb2FkOiB7IHNvdXJjZSwgc291cmNlSGFuZGxlLCBvbGRFZGdlIH0gfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29ubmVjdGlvblZhbGlkYXRpb25TdGF0dXMoXG4gICAgdmFsaWQ6IGJvb2xlYW4sXG4gICAgc291cmNlOiBOb2RlTW9kZWwsXG4gICAgdGFyZ2V0OiBOb2RlTW9kZWwsXG4gICAgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCxcbiAgICB0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICApIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ2Nvbm5lY3Rpb24tdmFsaWRhdGlvbicsIHBheWxvYWQ6IHsgc291cmNlLCB0YXJnZXQsIHNvdXJjZUhhbmRsZSwgdGFyZ2V0SGFuZGxlLCB2YWxpZCB9IH0pO1xuICB9XG5cbiAgcHVibGljIHNldFJlY29ubmVjdGlvblZhbGlkYXRpb25TdGF0dXMoXG4gICAgdmFsaWQ6IGJvb2xlYW4sXG4gICAgc291cmNlOiBOb2RlTW9kZWwsXG4gICAgdGFyZ2V0OiBOb2RlTW9kZWwsXG4gICAgc291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCxcbiAgICB0YXJnZXRIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICAgIG9sZEVkZ2U6IEVkZ2VNb2RlbCxcbiAgKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHtcbiAgICAgIHN0YXRlOiAncmVjb25uZWN0aW9uLXZhbGlkYXRpb24nLFxuICAgICAgcGF5bG9hZDogeyBzb3VyY2UsIHRhcmdldCwgc291cmNlSGFuZGxlLCB0YXJnZXRIYW5kbGUsIHZhbGlkLCBvbGRFZGdlIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29ubmVjdGlvbkVuZFN0YXR1cyhcbiAgICBzb3VyY2U6IE5vZGVNb2RlbCxcbiAgICB0YXJnZXQ6IE5vZGVNb2RlbCxcbiAgICBzb3VyY2VIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICAgIHRhcmdldEhhbmRsZTogSGFuZGxlTW9kZWwsXG4gICkge1xuICAgIHRoaXMuc3RhdHVzLnNldCh7IHN0YXRlOiAnY29ubmVjdGlvbi1lbmQnLCBwYXlsb2FkOiB7IHNvdXJjZSwgdGFyZ2V0LCBzb3VyY2VIYW5kbGUsIHRhcmdldEhhbmRsZSB9IH0pO1xuICB9XG5cbiAgcHVibGljIHNldFJlY29ubmVjdGlvbkVuZFN0YXR1cyhcbiAgICBzb3VyY2U6IE5vZGVNb2RlbCxcbiAgICB0YXJnZXQ6IE5vZGVNb2RlbCxcbiAgICBzb3VyY2VIYW5kbGU6IEhhbmRsZU1vZGVsLFxuICAgIHRhcmdldEhhbmRsZTogSGFuZGxlTW9kZWwsXG4gICAgb2xkRWRnZTogRWRnZU1vZGVsLFxuICApIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ3JlY29ubmVjdGlvbi1lbmQnLCBwYXlsb2FkOiB7IHNvdXJjZSwgdGFyZ2V0LCBzb3VyY2VIYW5kbGUsIHRhcmdldEhhbmRsZSwgb2xkRWRnZSB9IH0pO1xuICB9XG5cbiAgcHVibGljIHNldE5vZGVEcmFnU3RhcnRTdGF0dXMobm9kZTogTm9kZU1vZGVsKSB7XG4gICAgdGhpcy5zdGF0dXMuc2V0KHsgc3RhdGU6ICdub2RlLWRyYWctc3RhcnQnLCBwYXlsb2FkOiB7IG5vZGUgfSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXROb2RlRHJhZ0VuZFN0YXR1cyhub2RlOiBOb2RlTW9kZWwpIHtcbiAgICB0aGlzLnN0YXR1cy5zZXQoeyBzdGF0ZTogJ25vZGUtZHJhZy1lbmQnLCBwYXlsb2FkOiB7IG5vZGUgfSB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlRHJhZ1N0YXJ0U3RhdHVzKHBhcmFtczogRmxvd1N0YXR1cyk6IHBhcmFtcyBpcyBGbG93U3RhdHVzTm9kZURyYWdTdGFydCB7XG4gIHJldHVybiBwYXJhbXMuc3RhdGUgPT09ICdub2RlLWRyYWctc3RhcnQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlRHJhZ0VuZFN0YXR1cyhwYXJhbXM6IEZsb3dTdGF0dXMpOiBwYXJhbXMgaXMgRmxvd1N0YXR1c05vZGVEcmFnRW5kIHtcbiAgcmV0dXJuIHBhcmFtcy5zdGF0ZSA9PT0gJ25vZGUtZHJhZy1lbmQnO1xufVxuIl19
@@ -1,30 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Injectable, signal } from '@angular/core';
3
- import { Microtask } from '../decorators/microtask.decorator';
4
- import * as i0 from "@angular/core";
5
- export class HandleService {
6
- constructor() {
7
- this.node = signal(null);
8
- }
9
- createHandle(newHandle) {
10
- const node = this.node();
11
- if (node) {
12
- node.handles.update((handles) => [...handles, newHandle]);
13
- }
14
- }
15
- destroyHandle(handleToDestoy) {
16
- const node = this.node();
17
- if (node) {
18
- node.handles.update((handles) => handles.filter((handle) => handle !== handleToDestoy));
19
- }
20
- }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
22
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleService }); }
23
- }
24
- __decorate([
25
- Microtask // TODO fixes rendering of handle for group node
26
- ], HandleService.prototype, "createHandle", null);
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleService, decorators: [{
28
- type: Injectable
29
- }], propDecorators: { createHandle: [] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvaGFuZGxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFhOUQsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFa0IsU0FBSSxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7S0FnQnZEO0lBYlEsWUFBWSxDQUFDLFNBQXNCO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxjQUEyQjtRQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQzsrR0FoQlUsYUFBYTttSEFBYixhQUFhOztBQUlqQjtJQUROLFNBQVMsQ0FBQyxnREFBZ0Q7aURBTTFEOzRGQVRVLGFBQWE7a0JBRHpCLFVBQVU7OEJBS0YsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFRlbXBsYXRlUmVmLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vdHlwZXMvcG9zaXRpb24udHlwZSc7XG5pbXBvcnQgeyBIYW5kbGVUeXBlIH0gZnJvbSAnLi4vdHlwZXMvaGFuZGxlLXR5cGUudHlwZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9oYW5kbGUubW9kZWwnO1xuaW1wb3J0IHsgTWljcm90YXNrIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9taWNyb3Rhc2suZGVjb3JhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBOb2RlSGFuZGxlIHtcbiAgcG9zaXRpb246IFBvc2l0aW9uO1xuICB0eXBlOiBIYW5kbGVUeXBlO1xuICB1c2VyT2Zmc2V0WDogbnVtYmVyO1xuICB1c2VyT2Zmc2V0WTogbnVtYmVyO1xuICBpZD86IHN0cmluZztcbiAgaG9zdFJlZmVyZW5jZT86IEVsZW1lbnQ7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIYW5kbGVTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IG5vZGUgPSBzaWduYWw8Tm9kZU1vZGVsIHwgbnVsbD4obnVsbCk7XG5cbiAgQE1pY3JvdGFzayAvLyBUT0RPIGZpeGVzIHJlbmRlcmluZyBvZiBoYW5kbGUgZm9yIGdyb3VwIG5vZGVcbiAgcHVibGljIGNyZWF0ZUhhbmRsZShuZXdIYW5kbGU6IEhhbmRsZU1vZGVsKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLmhhbmRsZXMudXBkYXRlKChoYW5kbGVzKSA9PiBbLi4uaGFuZGxlcywgbmV3SGFuZGxlXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lIYW5kbGUoaGFuZGxlVG9EZXN0b3k6IEhhbmRsZU1vZGVsKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLmhhbmRsZXMudXBkYXRlKChoYW5kbGVzKSA9PiBoYW5kbGVzLmZpbHRlcigoaGFuZGxlKSA9PiBoYW5kbGUgIT09IGhhbmRsZVRvRGVzdG95KSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,47 +0,0 @@
1
- import { Injectable, signal } from '@angular/core';
2
- import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
3
- import { fromEvent, merge, switchMap, tap } from 'rxjs';
4
- import { getOS } from '../utils/get-os';
5
- import * as i0 from "@angular/core";
6
- export class KeyboardService {
7
- constructor() {
8
- this.actions = signal({
9
- multiSelection: [
10
- getOS() === 'macos' ? 'MetaLeft' : 'ControlLeft',
11
- getOS() === 'macos' ? 'MetaRight' : 'ControlRight',
12
- ],
13
- });
14
- this.actionsActive = {
15
- multiSelection: false,
16
- };
17
- toObservable(this.actions)
18
- .pipe(switchMap(() => merge(fromEvent(document, 'keydown').pipe(tap((event) => {
19
- for (const action in this.actions()) {
20
- const keyCodes = this.actions()[action] ?? [];
21
- if (keyCodes.includes(event.code)) {
22
- this.actionsActive[action] = true;
23
- }
24
- }
25
- })), fromEvent(document, 'keyup').pipe(tap((event) => {
26
- for (const action in this.actions()) {
27
- const keyCodes = this.actions()[action] ?? [];
28
- if (keyCodes.includes(event.code)) {
29
- this.actionsActive[action] = false;
30
- }
31
- }
32
- })))), takeUntilDestroyed())
33
- .subscribe();
34
- }
35
- setShortcuts(newActions) {
36
- this.actions.update((actions) => ({ ...actions, ...newActions }));
37
- }
38
- isActiveAction(action) {
39
- return this.actionsActive[action];
40
- }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyboardService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
42
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyboardService }); }
43
- }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeyboardService, decorators: [{
45
- type: Injectable
46
- }], ctorParameters: () => [] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Ym9hcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9zZXJ2aWNlcy9rZXlib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFrQixNQUFNLGVBQWUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBR3hDLE1BQU0sT0FBTyxlQUFlO0lBWTFCO1FBWFEsWUFBTyxHQUFzQyxNQUFNLENBQUM7WUFDMUQsY0FBYyxFQUFFO2dCQUNkLEtBQUssRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUNoRCxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsY0FBYzthQUNuRDtTQUNGLENBQUMsQ0FBQztRQUVLLGtCQUFhLEdBQW9DO1lBQ3ZELGNBQWMsRUFBRSxLQUFLO1NBQ3RCLENBQUM7UUFHQSxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUN2QixJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNiLEtBQUssQ0FDSCxTQUFTLENBQWdCLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQXdCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRWhFLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUF3QixDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILEVBRUQsU0FBUyxDQUFnQixRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5QyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUF3QixDQUFDLElBQUksRUFBRSxDQUFDO2dCQUVoRSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBd0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDdkQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQ0YsRUFDRCxrQkFBa0IsRUFBRSxDQUNyQjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxZQUFZLENBQUMsVUFBNkI7UUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQXNCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDOytHQXJEVSxlQUFlO21IQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLZXlib2FyZEFjdGlvbiwgS2V5Ym9hcmRTaG9ydGN1dHMgfSBmcm9tICcuLi90eXBlcy9rZXlib2FyZC1hY3Rpb24udHlwZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBnZXRPUyB9IGZyb20gJy4uL3V0aWxzL2dldC1vcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLZXlib2FyZFNlcnZpY2Uge1xuICBwcml2YXRlIGFjdGlvbnM6IFdyaXRhYmxlU2lnbmFsPEtleWJvYXJkU2hvcnRjdXRzPiA9IHNpZ25hbCh7XG4gICAgbXVsdGlTZWxlY3Rpb246IFtcbiAgICAgIGdldE9TKCkgPT09ICdtYWNvcycgPyAnTWV0YUxlZnQnIDogJ0NvbnRyb2xMZWZ0JyxcbiAgICAgIGdldE9TKCkgPT09ICdtYWNvcycgPyAnTWV0YVJpZ2h0JyA6ICdDb250cm9sUmlnaHQnLFxuICAgIF0sXG4gIH0pO1xuXG4gIHByaXZhdGUgYWN0aW9uc0FjdGl2ZTogUmVjb3JkPEtleWJvYXJkQWN0aW9uLCBib29sZWFuPiA9IHtcbiAgICBtdWx0aVNlbGVjdGlvbjogZmFsc2UsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuYWN0aW9ucylcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICBtZXJnZShcbiAgICAgICAgICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudCwgJ2tleWRvd24nKS5waXBlKFxuICAgICAgICAgICAgICB0YXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gaW4gdGhpcy5hY3Rpb25zKCkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGtleUNvZGVzID0gdGhpcy5hY3Rpb25zKClbYWN0aW9uIGFzIEtleWJvYXJkQWN0aW9uXSA/PyBbXTtcblxuICAgICAgICAgICAgICAgICAgaWYgKGtleUNvZGVzLmluY2x1ZGVzKGV2ZW50LmNvZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uc0FjdGl2ZVthY3Rpb24gYXMgS2V5Ym9hcmRBY3Rpb25dID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KGRvY3VtZW50LCAna2V5dXAnKS5waXBlKFxuICAgICAgICAgICAgICB0YXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gaW4gdGhpcy5hY3Rpb25zKCkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGtleUNvZGVzID0gdGhpcy5hY3Rpb25zKClbYWN0aW9uIGFzIEtleWJvYXJkQWN0aW9uXSA/PyBbXTtcblxuICAgICAgICAgICAgICAgICAgaWYgKGtleUNvZGVzLmluY2x1ZGVzKGV2ZW50LmNvZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uc0FjdGl2ZVthY3Rpb24gYXMgS2V5Ym9hcmRBY3Rpb25dID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2hvcnRjdXRzKG5ld0FjdGlvbnM6IEtleWJvYXJkU2hvcnRjdXRzKSB7XG4gICAgdGhpcy5hY3Rpb25zLnVwZGF0ZSgoYWN0aW9ucykgPT4gKHsgLi4uYWN0aW9ucywgLi4ubmV3QWN0aW9ucyB9KSk7XG4gIH1cblxuICBwdWJsaWMgaXNBY3RpdmVBY3Rpb24oYWN0aW9uOiBLZXlib2FyZEFjdGlvbikge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbnNBY3RpdmVbYWN0aW9uXTtcbiAgfVxufVxuIl19
@@ -1,16 +0,0 @@
1
- import { Injectable, signal } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Service to fix cyclic dependency between node and resizable component
5
- */
6
- export class NodeAccessorService {
7
- constructor() {
8
- this.model = signal(null);
9
- }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeAccessorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeAccessorService }); }
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NodeAccessorService, decorators: [{
14
- type: Injectable
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1hY2Nlc3Nvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L3NlcnZpY2VzL25vZGUtYWNjZXNzb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRVMsVUFBSyxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7S0FDL0M7K0dBRlksbUJBQW1CO21IQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9ub2RlLm1vZGVsJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIGZpeCBjeWNsaWMgZGVwZW5kZW5jeSBiZXR3ZWVuIG5vZGUgYW5kIHJlc2l6YWJsZSBjb21wb25lbnRcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vZGVBY2Nlc3NvclNlcnZpY2Uge1xuICBwdWJsaWMgbW9kZWwgPSBzaWduYWw8Tm9kZU1vZGVsIHwgbnVsbD4obnVsbCk7XG59XG4iXX0=