ngx-vflow 1.12.0 → 1.13.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.
@@ -69,17 +69,22 @@ export class EdgeModel {
69
69
  });
70
70
  this.sourceHandle = extendedComputed((previousHandle) => {
71
71
  let handle = null;
72
- if (this.edge.sourceHandle) {
73
- handle =
74
- this.source()
75
- ?.handles()
76
- .find((handle) => handle.rawHandle.id === this.edge.sourceHandle) ?? null;
72
+ if (this.floating) {
73
+ handle = this.closestHandles().sourceHandle;
77
74
  }
78
75
  else {
79
- handle =
80
- this.source()
81
- ?.handles()
82
- .find((handle) => handle.rawHandle.type === 'source') ?? null;
76
+ if (this.edge.sourceHandle) {
77
+ handle =
78
+ this.source()
79
+ ?.handles()
80
+ .find((handle) => handle.rawHandle.id === this.edge.sourceHandle) ?? null;
81
+ }
82
+ else {
83
+ handle =
84
+ this.source()
85
+ ?.handles()
86
+ .find((handle) => handle.rawHandle.type === 'source') ?? null;
87
+ }
83
88
  }
84
89
  // In case of virtual scrolling, if the node is scrolled out of view the handle may disappear
85
90
  // which could lead to the edge not being rendered
@@ -92,17 +97,22 @@ export class EdgeModel {
92
97
  });
93
98
  this.targetHandle = extendedComputed((previousHandle) => {
94
99
  let handle = null;
95
- if (this.edge.targetHandle) {
96
- handle =
97
- this.target()
98
- ?.handles()
99
- .find((handle) => handle.rawHandle.id === this.edge.targetHandle) ?? null;
100
+ if (this.floating) {
101
+ handle = this.closestHandles().targetHandle;
100
102
  }
101
103
  else {
102
- handle =
103
- this.target()
104
- ?.handles()
105
- .find((handle) => handle.rawHandle.type === 'target') ?? null;
104
+ if (this.edge.targetHandle) {
105
+ handle =
106
+ this.target()
107
+ ?.handles()
108
+ .find((handle) => handle.rawHandle.id === this.edge.targetHandle) ?? null;
109
+ }
110
+ else {
111
+ handle =
112
+ this.target()
113
+ ?.handles()
114
+ .find((handle) => handle.rawHandle.type === 'target') ?? null;
115
+ }
106
116
  }
107
117
  // In case of virtual scrolling, if the node is scrolled out of view the handle may disappear
108
118
  // which could lead to the edge not being rendered
@@ -113,6 +123,44 @@ export class EdgeModel {
113
123
  }
114
124
  return handle;
115
125
  });
126
+ this.closestHandles = computed(() => {
127
+ const source = this.source();
128
+ const target = this.target();
129
+ if (!source || !target) {
130
+ return { sourceHandle: null, targetHandle: null };
131
+ }
132
+ // Get all source handles from source node
133
+ const sourceHandles = this.flowEntitiesService.connection().mode === 'strict'
134
+ ? source.handles().filter((h) => h.rawHandle.type === 'source')
135
+ : source.handles();
136
+ // Get all target handles from target node
137
+ const targetHandles = this.flowEntitiesService.connection().mode === 'strict'
138
+ ? target.handles().filter((h) => h.rawHandle.type === 'target')
139
+ : target.handles();
140
+ if (sourceHandles.length === 0 || targetHandles.length === 0) {
141
+ return { sourceHandle: null, targetHandle: null };
142
+ }
143
+ let minDistance = Infinity;
144
+ let closestSourceHandle = null;
145
+ let closestTargetHandle = null;
146
+ // Check all combinations of source and target handles
147
+ for (const sourceHandle of sourceHandles) {
148
+ for (const targetHandle of targetHandles) {
149
+ const sourcePoint = sourceHandle.pointAbsolute();
150
+ const targetPoint = targetHandle.pointAbsolute();
151
+ const distance = Math.sqrt(Math.pow(sourcePoint.x - targetPoint.x, 2) + Math.pow(sourcePoint.y - targetPoint.y, 2));
152
+ if (distance < minDistance) {
153
+ minDistance = distance;
154
+ closestSourceHandle = sourceHandle;
155
+ closestTargetHandle = targetHandle;
156
+ }
157
+ }
158
+ }
159
+ return {
160
+ sourceHandle: closestSourceHandle,
161
+ targetHandle: closestTargetHandle,
162
+ };
163
+ });
116
164
  /**
117
165
  * TODO: not reactive
118
166
  */
@@ -141,6 +189,7 @@ export class EdgeModel {
141
189
  this.type = edge.type ?? 'default';
142
190
  this.curve = edge.curve ?? 'bezier';
143
191
  this.reconnectable = edge.reconnectable ?? false;
192
+ this.floating = edge.floating ?? false;
144
193
  if (edge.edgeLabels?.start)
145
194
  this.edgeLabels.start = new EdgeLabelModel(edge.edgeLabels.start);
146
195
  if (edge.edgeLabels?.center)
@@ -161,4 +210,4 @@ export class EdgeModel {
161
210
  };
162
211
  }
163
212
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvZWRnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRFLE1BQU0sT0FBTyxTQUFTO0lBNkpwQixZQUFtQixJQUFVO1FBQVYsU0FBSSxHQUFKLElBQUksQ0FBTTtRQTVKWix3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUU1RCxXQUFNLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQztRQUNsRCxXQUFNLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQztRQUtsRCxhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FB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QUFHO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBbUIsRUFBRSxNQUFtQjtRQUNuRSxPQUFPO1lBQ0wsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixXQUFXLEVBQUUsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxXQUFXLEVBQUUsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUNuQyxjQUFjLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRO1lBQ3pDLGNBQWMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVE7WUFDekMsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUU7WUFDN0MsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUU7U0FDOUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRnZUxhYmVsUG9zaXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2VkZ2UtbGFiZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVkZ2UsIEN1cnZlLCBFZGdlVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWRnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRWRnZUxhYmVsTW9kZWwgfSBmcm9tICcuL2VkZ2UtbGFiZWwubW9kZWwnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi9ub2RlLm1vZGVsJztcbmltcG9ydCB7IHN0cmFpZ2h0UGF0aCB9IGZyb20gJy4uL21hdGgvZWRnZS1wYXRoL3N0cmFpZ2gtcGF0aCc7XG5pbXBvcnQgeyBiZXppZXJQYXRoIH0gZnJvbSAnLi4vbWF0aC9lZGdlLXBhdGgvYmV6aWVyLXBhdGgnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRmxvd0VudGl0eSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmxvdy1lbnRpdHkuaW50ZXJmYWNlJztcbmltcG9ydCB7IHNtb290aFN0ZXBQYXRoIH0gZnJvbSAnLi4vbWF0aC9lZGdlLXBhdGgvc21vb3RoLXN0ZXAtcGF0aCc7XG5pbXBvcnQgeyBoYXNoQ29kZSB9IGZyb20gJy4uL3V0aWxzL2hhc2gnO1xuaW1wb3J0IHsgQ29udGV4dGFibGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbnRleHRhYmxlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFZGdlQ29udGV4dCB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGVtcGxhdGUtY29udGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSGFuZGxlTW9kZWwgfSBmcm9tICcuL2hhbmRsZS5tb2RlbCc7XG5pbXBvcnQgeyBDdXJ2ZUZhY3RvcnlQYXJhbXMgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2N1cnZlLWZhY3RvcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZsb3dFbnRpdGllc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9mbG93LWVudGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZXh0ZW5kZWRDb21wdXRlZCB9IGZyb20gJy4uL3V0aWxzL3NpZ25hbHMvZXh0ZW5kZWQtY29tcHV0ZWQnO1xuXG5leHBvcnQgY2xhc3MgRWRnZU1vZGVsIGltcGxlbWVudHMgRmxvd0VudGl0eSwgQ29udGV4dGFibGU8RWRnZUNvbnRleHQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBmbG93RW50aXRpZXNTZXJ2aWNlID0gaW5qZWN0KEZsb3dFbnRpdGllc1NlcnZpY2UpO1xuXG4gIHB1YmxpYyBzb3VyY2UgPSBzaWduYWw8Tm9kZU1vZGVsIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwdWJsaWMgdGFyZ2V0ID0gc2lnbmFsPE5vZGVNb2RlbCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHVibGljIGN1cnZlOiBDdXJ2ZTtcbiAgcHVibGljIHR5cGU6IEVkZ2VUeXBlO1xuICBwdWJsaWMgcmVjb25uZWN0YWJsZTogYm9vbGVhbiB8ICdzb3VyY2UnIHwgJ3RhcmdldCc7XG5cbiAgcHVibGljIHNlbGVjdGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHNlbGVjdGVkJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNlbGVjdGVkKTtcblxuICBwdWJsaWMgcmVuZGVyT3JkZXIgPSBzaWduYWwoMCk7XG5cbiAgcHVibGljIGRldGFjaGVkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuc291cmNlKCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy50YXJnZXQoKTtcblxuICAgIGlmICghc291cmNlIHx8ICF0YXJnZXQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGxldCBleGlzdHNTb3VyY2VIYW5kbGUgPSBmYWxzZTtcbiAgICBsZXQgZXhpc3RzVGFyZ2V0SGFuZGxlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5lZGdlLnNvdXJjZUhhbmRsZSkge1xuICAgICAgZXhpc3RzU291cmNlSGFuZGxlID0gISFzb3VyY2UuaGFuZGxlcygpLmZpbmQoKGhhbmRsZSkgPT4gaGFuZGxlLnJhd0hhbmRsZS5pZCA9PT0gdGhpcy5lZGdlLnNvdXJjZUhhbmRsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0c1NvdXJjZUhhbmRsZSA9ICEhc291cmNlLmhhbmRsZXMoKS5maW5kKChoYW5kbGUpID0+IGhhbmRsZS5yYXdIYW5kbGUudHlwZSA9PT0gJ3NvdXJjZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmVkZ2UudGFyZ2V0SGFuZGxlKSB7XG4gICAgICBleGlzdHNUYXJnZXRIYW5kbGUgPSAhIXRhcmdldC5oYW5kbGVzKCkuZmluZCgoaGFuZGxlKSA9PiBoYW5kbGUucmF3SGFuZGxlLmlkID09PSB0aGlzLmVkZ2UudGFyZ2V0SGFuZGxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhpc3RzVGFyZ2V0SGFuZGxlID0gISF0YXJnZXQuaGFuZGxlcygpLmZpbmQoKGhhbmRsZSkgPT4gaGFuZGxlLnJhd0hhbmRsZS50eXBlID09PSAndGFyZ2V0Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICFleGlzdHNTb3VyY2VIYW5kbGUgfHwgIWV4aXN0c1RhcmdldEhhbmRsZTtcbiAgfSk7XG5cbiAgcHVibGljIGRldGFjaGVkJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmRldGFjaGVkKTtcblxuICBwdWJsaWMgcGF0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnNvdXJjZUhhbmRsZSgpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0SGFuZGxlKCk7XG5cbiAgICAvLyBUT0RPOiBkb24ndCBsaWtlIHRoaXNcbiAgICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgbGFiZWxQb2ludHM6IHtcbiAgICAgICAgICBzdGFydDogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgY2VudGVyOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgICBlbmQ6IHsgeDogMCwgeTogMCB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFBhdGhGYWN0b3J5UGFyYW1zKHNvdXJjZSwgdGFyZ2V0KTtcblxuICAgIHN3aXRjaCAodGhpcy5jdXJ2ZSkge1xuICAgICAgY2FzZSAnc3RyYWlnaHQnOlxuICAgICAgICByZXR1cm4gc3RyYWlnaHRQYXRoKHBhcmFtcyk7XG4gICAgICBjYXNlICdiZXppZXInOlxuICAgICAgICByZXR1cm4gYmV6aWVyUGF0aChwYXJhbXMpO1xuICAgICAgY2FzZSAnc21vb3RoLXN0ZXAnOlxuICAgICAgICByZXR1cm4gc21vb3RoU3RlcFBhdGgocGFyYW1zKTtcbiAgICAgIGNhc2UgJ3N0ZXAnOlxuICAgICAgICByZXR1cm4gc21vb3RoU3RlcFBhdGgocGFyYW1zLCAwKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnZlKHBhcmFtcyk7XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgc291cmNlSGFuZGxlID0gZXh0ZW5kZWRDb21wdXRlZDxIYW5kbGVNb2RlbCB8IG51bGw+KChwcmV2aW91c0hhbmRsZSkgPT4ge1xuICAgIGxldCBoYW5kbGU6IEhhbmRsZU1vZGVsIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5lZGdlLnNvdXJjZUhhbmRsZSkge1xuICAgICAgaGFuZGxlID1cbiAgICAgICAgdGhpcy5zb3VyY2UoKVxuICAgICAgICAgID8uaGFuZGxlcygpXG4gICAgICAgICAgLmZpbmQoKGhhbmRsZSkgPT4gaGFuZGxlLnJhd0hhbmRsZS5pZCA9PT0gdGhpcy5lZGdlLnNvdXJjZUhhbmRsZSkgPz8gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlID1cbiAgICAgICAgdGhpcy5zb3VyY2UoKVxuICAgICAgICAgID8uaGFuZGxlcygpXG4gICAgICAgICAgLmZpbmQoKGhhbmRsZSkgPT4gaGFuZGxlLnJhd0hhbmRsZS50eXBlID09PSAnc291cmNlJykgPz8gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBJbiBjYXNlIG9mIHZpcnR1YWwgc2Nyb2xsaW5nLCBpZiB0aGUgbm9kZSBpcyBzY3JvbGxlZCBvdXQgb2YgdmlldyB0aGUgaGFuZGxlIG1heSBkaXNhcHBlYXJcbiAgICAvLyB3aGljaCBjb3VsZCBsZWFkIHRvIHRoZSBlZGdlIG5vdCBiZWluZyByZW5kZXJlZFxuICAgIC8vIHNvIHdlIHJldHVybiB0aGUgcHJldmlvdXMgaGFuZGxlIGlmIHRoZSBjdXJyZW50IG9uZSBpcyBudWxsXG4gICAgLy8gVE9ETzogY2hlY2sgaWYgdGhpcyBicmVha3MgYW55dGhpbmdcbiAgICBpZiAoaGFuZGxlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gcHJldmlvdXNIYW5kbGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZTtcbiAgfSk7XG5cbiAgcHVibGljIHRhcmdldEhhbmRsZSA9IGV4dGVuZGVkQ29tcHV0ZWQ8SGFuZGxlTW9kZWwgfCBudWxsPigocHJldmlvdXNIYW5kbGUpID0+IHtcbiAgICBsZXQgaGFuZGxlOiBIYW5kbGVNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuZWRnZS50YXJnZXRIYW5kbGUpIHtcbiAgICAgIGhhbmRsZSA9XG4gICAgICAgIHRoaXMudGFyZ2V0KClcbiAgICAgICAgICA/LmhhbmRsZXMoKVxuICAgICAgICAgIC5maW5kKChoYW5kbGUpID0+IGhhbmRsZS5yYXdIYW5kbGUuaWQgPT09IHRoaXMuZWRnZS50YXJnZXRIYW5kbGUpID8/IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZSA9XG4gICAgICAgIHRoaXMudGFyZ2V0KClcbiAgICAgICAgICA/LmhhbmRsZXMoKVxuICAgICAgICAgIC5maW5kKChoYW5kbGUpID0+IGhhbmRsZS5yYXdIYW5kbGUudHlwZSA9PT0gJ3RhcmdldCcpID8/IG51bGw7XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSBvZiB2aXJ0dWFsIHNjcm9sbGluZywgaWYgdGhlIG5vZGUgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcgdGhlIGhhbmRsZSBtYXkgZGlzYXBwZWFyXG4gICAgLy8gd2hpY2ggY291bGQgbGVhZCB0byB0aGUgZWRnZSBub3QgYmVpbmcgcmVuZGVyZWRcbiAgICAvLyBzbyB3ZSByZXR1cm4gdGhlIHByZXZpb3VzIGhhbmRsZSBpZiB0aGUgY3VycmVudCBvbmUgaXMgbnVsbFxuICAgIC8vIFRPRE86IGNoZWNrIGlmIHRoaXMgYnJlYWtzIGFueXRoaW5nXG4gICAgaWYgKGhhbmRsZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHByZXZpb3VzSGFuZGxlO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUT0RPOiBub3QgcmVhY3RpdmVcbiAgICovXG4gIHB1YmxpYyBtYXJrZXJTdGFydFVybCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBtYXJrZXIgPSB0aGlzLmVkZ2UubWFya2Vycz8uc3RhcnQ7XG5cbiAgICByZXR1cm4gbWFya2VyID8gYHVybCgjJHtoYXNoQ29kZShKU09OLnN0cmluZ2lmeShtYXJrZXIpKX0pYCA6ICcnO1xuICB9KTtcblxuICAvKipcbiAgICogVE9ETzogbm90IHJlYWN0aXZlXG4gICAqL1xuICBwdWJsaWMgbWFya2VyRW5kVXJsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlciA9IHRoaXMuZWRnZS5tYXJrZXJzPy5lbmQ7XG5cbiAgICByZXR1cm4gbWFya2VyID8gYHVybCgjJHtoYXNoQ29kZShKU09OLnN0cmluZ2lmeShtYXJrZXIpKX0pYCA6ICcnO1xuICB9KTtcblxuICBwdWJsaWMgY29udGV4dCA9IHtcbiAgICAkaW1wbGljaXQ6IHtcbiAgICAgIC8vIFRPRE86IGNoZWNrIGlmIGVkZ2UgY291bGQgY2hhbmdlXG4gICAgICBlZGdlOiB0aGlzLmVkZ2UsXG4gICAgICBwYXRoOiBjb21wdXRlZCgoKSA9PiB0aGlzLnBhdGgoKS5wYXRoKSxcbiAgICAgIG1hcmtlclN0YXJ0OiB0aGlzLm1hcmtlclN0YXJ0VXJsLFxuICAgICAgbWFya2VyRW5kOiB0aGlzLm1hcmtlckVuZFVybCxcbiAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLmFzUmVhZG9ubHkoKSxcbiAgICB9LFxuICB9O1xuXG4gIHB1YmxpYyBlZGdlTGFiZWxzOiB7IFtwb3NpdGlvbiBpbiBFZGdlTGFiZWxQb3NpdGlvbl0/OiBFZGdlTGFiZWxNb2RlbCB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVkZ2U6IEVkZ2UpIHtcbiAgICB0aGlzLnR5cGUgPSBlZGdlLnR5cGUgPz8gJ2RlZmF1bHQnO1xuICAgIHRoaXMuY3VydmUgPSBlZGdlLmN1cnZlID8/ICdiZXppZXInO1xuICAgIHRoaXMucmVjb25uZWN0YWJsZSA9IGVkZ2UucmVjb25uZWN0YWJsZSA/PyBmYWxzZTtcblxuICAgIGlmIChlZGdlLmVkZ2VMYWJlbHM/LnN0YXJ0KSB0aGlzLmVkZ2VMYWJlbHMuc3RhcnQgPSBuZXcgRWRnZUxhYmVsTW9kZWwoZWRnZS5lZGdlTGFiZWxzLnN0YXJ0KTtcbiAgICBpZiAoZWRnZS5lZGdlTGFiZWxzPy5jZW50ZXIpIHRoaXMuZWRnZUxhYmVscy5jZW50ZXIgPSBuZXcgRWRnZUxhYmVsTW9kZWwoZWRnZS5lZGdlTGFiZWxzLmNlbnRlcik7XG4gICAgaWYgKGVkZ2UuZWRnZUxhYmVscz8uZW5kKSB0aGlzLmVkZ2VMYWJlbHMuZW5kID0gbmV3IEVkZ2VMYWJlbE1vZGVsKGVkZ2UuZWRnZUxhYmVscy5lbmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRoRmFjdG9yeVBhcmFtcyhzb3VyY2U6IEhhbmRsZU1vZGVsLCB0YXJnZXQ6IEhhbmRsZU1vZGVsKTogQ3VydmVGYWN0b3J5UGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbW9kZTogJ2VkZ2UnLFxuICAgICAgZWRnZTogdGhpcy5lZGdlLFxuICAgICAgc291cmNlUG9pbnQ6IHNvdXJjZS5wb2ludEFic29sdXRlKCksXG4gICAgICB0YXJnZXRQb2ludDogdGFyZ2V0LnBvaW50QWJzb2x1dGUoKSxcbiAgICAgIHNvdXJjZVBvc2l0aW9uOiBzb3VyY2UucmF3SGFuZGxlLnBvc2l0aW9uLFxuICAgICAgdGFyZ2V0UG9zaXRpb246IHRhcmdldC5yYXdIYW5kbGUucG9zaXRpb24sXG4gICAgICBhbGxFZGdlczogdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLnJhd0VkZ2VzKCksXG4gICAgICBhbGxOb2RlczogdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLnJhd05vZGVzKCksXG4gICAgfTtcbiAgfVxufVxuIl19
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRnZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9tb2RlbHMvZWRnZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRFLE1BQU0sT0FBTyxTQUFTO0lBeU5wQixZQUFtQixJQUFVO1FBQVYsU0FBSSxHQUFKLElBQUksQ0FBTTtRQXhOWix3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUU1RCxXQUFNLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQztRQUNsRCxXQUFNLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQztRQU1sRCxhQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FB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QUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUc7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxNQUFtQixFQUFFLE1BQW1CO1FBQ25FLE9BQU87WUFDTCxJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFdBQVcsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ25DLFdBQVcsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ25DLGNBQWMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVE7WUFDekMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUTtZQUN6QyxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRTtZQUM3QyxRQUFRLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRTtTQUM5QyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGdlTGFiZWxQb3NpdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWRnZS1sYWJlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRWRnZSwgQ3VydmUsIEVkZ2VUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9lZGdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFZGdlTGFiZWxNb2RlbCB9IGZyb20gJy4vZWRnZS1sYWJlbC5tb2RlbCc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgc3RyYWlnaHRQYXRoIH0gZnJvbSAnLi4vbWF0aC9lZGdlLXBhdGgvc3RyYWlnaC1wYXRoJztcbmltcG9ydCB7IGJlemllclBhdGggfSBmcm9tICcuLi9tYXRoL2VkZ2UtcGF0aC9iZXppZXItcGF0aCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGbG93RW50aXR5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9mbG93LWVudGl0eS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgc21vb3RoU3RlcFBhdGggfSBmcm9tICcuLi9tYXRoL2VkZ2UtcGF0aC9zbW9vdGgtc3RlcC1wYXRoJztcbmltcG9ydCB7IGhhc2hDb2RlIH0gZnJvbSAnLi4vdXRpbHMvaGFzaCc7XG5pbXBvcnQgeyBDb250ZXh0YWJsZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29udGV4dGFibGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEVkZ2VDb250ZXh0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90ZW1wbGF0ZS1jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4vaGFuZGxlLm1vZGVsJztcbmltcG9ydCB7IEN1cnZlRmFjdG9yeVBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3VydmUtZmFjdG9yeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmxvd0VudGl0aWVzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zsb3ctZW50aXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBleHRlbmRlZENvbXB1dGVkIH0gZnJvbSAnLi4vdXRpbHMvc2lnbmFscy9leHRlbmRlZC1jb21wdXRlZCc7XG5cbmV4cG9ydCBjbGFzcyBFZGdlTW9kZWwgaW1wbGVtZW50cyBGbG93RW50aXR5LCBDb250ZXh0YWJsZTxFZGdlQ29udGV4dD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IGZsb3dFbnRpdGllc1NlcnZpY2UgPSBpbmplY3QoRmxvd0VudGl0aWVzU2VydmljZSk7XG5cbiAgcHVibGljIHNvdXJjZSA9IHNpZ25hbDxOb2RlTW9kZWwgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyB0YXJnZXQgPSBzaWduYWw8Tm9kZU1vZGVsIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwdWJsaWMgY3VydmU6IEN1cnZlO1xuICBwdWJsaWMgdHlwZTogRWRnZVR5cGU7XG4gIHB1YmxpYyByZWNvbm5lY3RhYmxlOiBib29sZWFuIHwgJ3NvdXJjZScgfCAndGFyZ2V0JztcbiAgcHVibGljIGZsb2F0aW5nOiBib29sZWFuO1xuXG4gIHB1YmxpYyBzZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyBzZWxlY3RlZCQgPSB0b09ic2VydmFibGUodGhpcy5zZWxlY3RlZCk7XG5cbiAgcHVibGljIHJlbmRlck9yZGVyID0gc2lnbmFsKDApO1xuXG4gIHB1YmxpYyBkZXRhY2hlZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnNvdXJjZSgpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0KCk7XG5cbiAgICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBsZXQgZXhpc3RzU291cmNlSGFuZGxlID0gZmFsc2U7XG4gICAgbGV0IGV4aXN0c1RhcmdldEhhbmRsZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuZWRnZS5zb3VyY2VIYW5kbGUpIHtcbiAgICAgIGV4aXN0c1NvdXJjZUhhbmRsZSA9ICEhc291cmNlLmhhbmRsZXMoKS5maW5kKChoYW5kbGUpID0+IGhhbmRsZS5yYXdIYW5kbGUuaWQgPT09IHRoaXMuZWRnZS5zb3VyY2VIYW5kbGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleGlzdHNTb3VyY2VIYW5kbGUgPSAhIXNvdXJjZS5oYW5kbGVzKCkuZmluZCgoaGFuZGxlKSA9PiBoYW5kbGUucmF3SGFuZGxlLnR5cGUgPT09ICdzb3VyY2UnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lZGdlLnRhcmdldEhhbmRsZSkge1xuICAgICAgZXhpc3RzVGFyZ2V0SGFuZGxlID0gISF0YXJnZXQuaGFuZGxlcygpLmZpbmQoKGhhbmRsZSkgPT4gaGFuZGxlLnJhd0hhbmRsZS5pZCA9PT0gdGhpcy5lZGdlLnRhcmdldEhhbmRsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0c1RhcmdldEhhbmRsZSA9ICEhdGFyZ2V0LmhhbmRsZXMoKS5maW5kKChoYW5kbGUpID0+IGhhbmRsZS5yYXdIYW5kbGUudHlwZSA9PT0gJ3RhcmdldCcpO1xuICAgIH1cblxuICAgIHJldHVybiAhZXhpc3RzU291cmNlSGFuZGxlIHx8ICFleGlzdHNUYXJnZXRIYW5kbGU7XG4gIH0pO1xuXG4gIHB1YmxpYyBkZXRhY2hlZCQgPSB0b09ic2VydmFibGUodGhpcy5kZXRhY2hlZCk7XG5cbiAgcHVibGljIHBhdGggPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2VIYW5kbGUoKTtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldEhhbmRsZSgpO1xuXG4gICAgLy8gVE9ETzogZG9uJ3QgbGlrZSB0aGlzXG4gICAgaWYgKCFzb3VyY2UgfHwgIXRhcmdldCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogJycsXG4gICAgICAgIGxhYmVsUG9pbnRzOiB7XG4gICAgICAgICAgc3RhcnQ6IHsgeDogMCwgeTogMCB9LFxuICAgICAgICAgIGNlbnRlcjogeyB4OiAwLCB5OiAwIH0sXG4gICAgICAgICAgZW5kOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRQYXRoRmFjdG9yeVBhcmFtcyhzb3VyY2UsIHRhcmdldCk7XG5cbiAgICBzd2l0Y2ggKHRoaXMuY3VydmUpIHtcbiAgICAgIGNhc2UgJ3N0cmFpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHN0cmFpZ2h0UGF0aChwYXJhbXMpO1xuICAgICAgY2FzZSAnYmV6aWVyJzpcbiAgICAgICAgcmV0dXJuIGJlemllclBhdGgocGFyYW1zKTtcbiAgICAgIGNhc2UgJ3Ntb290aC1zdGVwJzpcbiAgICAgICAgcmV0dXJuIHNtb290aFN0ZXBQYXRoKHBhcmFtcyk7XG4gICAgICBjYXNlICdzdGVwJzpcbiAgICAgICAgcmV0dXJuIHNtb290aFN0ZXBQYXRoKHBhcmFtcywgMCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5jdXJ2ZShwYXJhbXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgcHVibGljIHNvdXJjZUhhbmRsZSA9IGV4dGVuZGVkQ29tcHV0ZWQ8SGFuZGxlTW9kZWwgfCBudWxsPigocHJldmlvdXNIYW5kbGUpID0+IHtcbiAgICBsZXQgaGFuZGxlOiBIYW5kbGVNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKHRoaXMuZmxvYXRpbmcpIHtcbiAgICAgIGhhbmRsZSA9IHRoaXMuY2xvc2VzdEhhbmRsZXMoKS5zb3VyY2VIYW5kbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmVkZ2Uuc291cmNlSGFuZGxlKSB7XG4gICAgICAgIGhhbmRsZSA9XG4gICAgICAgICAgdGhpcy5zb3VyY2UoKVxuICAgICAgICAgICAgPy5oYW5kbGVzKClcbiAgICAgICAgICAgIC5maW5kKChoYW5kbGUpID0+IGhhbmRsZS5yYXdIYW5kbGUuaWQgPT09IHRoaXMuZWRnZS5zb3VyY2VIYW5kbGUpID8/IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGUgPVxuICAgICAgICAgIHRoaXMuc291cmNlKClcbiAgICAgICAgICAgID8uaGFuZGxlcygpXG4gICAgICAgICAgICAuZmluZCgoaGFuZGxlKSA9PiBoYW5kbGUucmF3SGFuZGxlLnR5cGUgPT09ICdzb3VyY2UnKSA/PyBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEluIGNhc2Ugb2YgdmlydHVhbCBzY3JvbGxpbmcsIGlmIHRoZSBub2RlIGlzIHNjcm9sbGVkIG91dCBvZiB2aWV3IHRoZSBoYW5kbGUgbWF5IGRpc2FwcGVhclxuICAgIC8vIHdoaWNoIGNvdWxkIGxlYWQgdG8gdGhlIGVkZ2Ugbm90IGJlaW5nIHJlbmRlcmVkXG4gICAgLy8gc28gd2UgcmV0dXJuIHRoZSBwcmV2aW91cyBoYW5kbGUgaWYgdGhlIGN1cnJlbnQgb25lIGlzIG51bGxcbiAgICAvLyBUT0RPOiBjaGVjayBpZiB0aGlzIGJyZWFrcyBhbnl0aGluZ1xuICAgIGlmIChoYW5kbGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBwcmV2aW91c0hhbmRsZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlO1xuICB9KTtcblxuICBwdWJsaWMgdGFyZ2V0SGFuZGxlID0gZXh0ZW5kZWRDb21wdXRlZDxIYW5kbGVNb2RlbCB8IG51bGw+KChwcmV2aW91c0hhbmRsZSkgPT4ge1xuICAgIGxldCBoYW5kbGU6IEhhbmRsZU1vZGVsIHwgbnVsbCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5mbG9hdGluZykge1xuICAgICAgaGFuZGxlID0gdGhpcy5jbG9zZXN0SGFuZGxlcygpLnRhcmdldEhhbmRsZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZWRnZS50YXJnZXRIYW5kbGUpIHtcbiAgICAgICAgaGFuZGxlID1cbiAgICAgICAgICB0aGlzLnRhcmdldCgpXG4gICAgICAgICAgICA/LmhhbmRsZXMoKVxuICAgICAgICAgICAgLmZpbmQoKGhhbmRsZSkgPT4gaGFuZGxlLnJhd0hhbmRsZS5pZCA9PT0gdGhpcy5lZGdlLnRhcmdldEhhbmRsZSkgPz8gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZSA9XG4gICAgICAgICAgdGhpcy50YXJnZXQoKVxuICAgICAgICAgICAgPy5oYW5kbGVzKClcbiAgICAgICAgICAgIC5maW5kKChoYW5kbGUpID0+IGhhbmRsZS5yYXdIYW5kbGUudHlwZSA9PT0gJ3RhcmdldCcpID8/IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW4gY2FzZSBvZiB2aXJ0dWFsIHNjcm9sbGluZywgaWYgdGhlIG5vZGUgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcgdGhlIGhhbmRsZSBtYXkgZGlzYXBwZWFyXG4gICAgLy8gd2hpY2ggY291bGQgbGVhZCB0byB0aGUgZWRnZSBub3QgYmVpbmcgcmVuZGVyZWRcbiAgICAvLyBzbyB3ZSByZXR1cm4gdGhlIHByZXZpb3VzIGhhbmRsZSBpZiB0aGUgY3VycmVudCBvbmUgaXMgbnVsbFxuICAgIC8vIFRPRE86IGNoZWNrIGlmIHRoaXMgYnJlYWtzIGFueXRoaW5nXG4gICAgaWYgKGhhbmRsZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHByZXZpb3VzSGFuZGxlO1xuICAgIH1cblxuICAgIHJldHVybiBoYW5kbGU7XG4gIH0pO1xuXG4gIHB1YmxpYyBjbG9zZXN0SGFuZGxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzb3VyY2UgPSB0aGlzLnNvdXJjZSgpO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0KCk7XG5cbiAgICBpZiAoIXNvdXJjZSB8fCAhdGFyZ2V0KSB7XG4gICAgICByZXR1cm4geyBzb3VyY2VIYW5kbGU6IG51bGwsIHRhcmdldEhhbmRsZTogbnVsbCB9O1xuICAgIH1cblxuICAgIC8vIEdldCBhbGwgc291cmNlIGhhbmRsZXMgZnJvbSBzb3VyY2Ugbm9kZVxuICAgIGNvbnN0IHNvdXJjZUhhbmRsZXMgPVxuICAgICAgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmNvbm5lY3Rpb24oKS5tb2RlID09PSAnc3RyaWN0J1xuICAgICAgICA/IHNvdXJjZS5oYW5kbGVzKCkuZmlsdGVyKChoKSA9PiBoLnJhd0hhbmRsZS50eXBlID09PSAnc291cmNlJylcbiAgICAgICAgOiBzb3VyY2UuaGFuZGxlcygpO1xuICAgIC8vIEdldCBhbGwgdGFyZ2V0IGhhbmRsZXMgZnJvbSB0YXJnZXQgbm9kZVxuICAgIGNvbnN0IHRhcmdldEhhbmRsZXMgPVxuICAgICAgdGhpcy5mbG93RW50aXRpZXNTZXJ2aWNlLmNvbm5lY3Rpb24oKS5tb2RlID09PSAnc3RyaWN0J1xuICAgICAgICA/IHRhcmdldC5oYW5kbGVzKCkuZmlsdGVyKChoKSA9PiBoLnJhd0hhbmRsZS50eXBlID09PSAndGFyZ2V0JylcbiAgICAgICAgOiB0YXJnZXQuaGFuZGxlcygpO1xuXG4gICAgaWYgKHNvdXJjZUhhbmRsZXMubGVuZ3RoID09PSAwIHx8IHRhcmdldEhhbmRsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4geyBzb3VyY2VIYW5kbGU6IG51bGwsIHRhcmdldEhhbmRsZTogbnVsbCB9O1xuICAgIH1cblxuICAgIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuICAgIGxldCBjbG9zZXN0U291cmNlSGFuZGxlOiBIYW5kbGVNb2RlbCB8IG51bGwgPSBudWxsO1xuICAgIGxldCBjbG9zZXN0VGFyZ2V0SGFuZGxlOiBIYW5kbGVNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gQ2hlY2sgYWxsIGNvbWJpbmF0aW9ucyBvZiBzb3VyY2UgYW5kIHRhcmdldCBoYW5kbGVzXG4gICAgZm9yIChjb25zdCBzb3VyY2VIYW5kbGUgb2Ygc291cmNlSGFuZGxlcykge1xuICAgICAgZm9yIChjb25zdCB0YXJnZXRIYW5kbGUgb2YgdGFyZ2V0SGFuZGxlcykge1xuICAgICAgICBjb25zdCBzb3VyY2VQb2ludCA9IHNvdXJjZUhhbmRsZS5wb2ludEFic29sdXRlKCk7XG4gICAgICAgIGNvbnN0IHRhcmdldFBvaW50ID0gdGFyZ2V0SGFuZGxlLnBvaW50QWJzb2x1dGUoKTtcblxuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguc3FydChcbiAgICAgICAgICBNYXRoLnBvdyhzb3VyY2VQb2ludC54IC0gdGFyZ2V0UG9pbnQueCwgMikgKyBNYXRoLnBvdyhzb3VyY2VQb2ludC55IC0gdGFyZ2V0UG9pbnQueSwgMiksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgICAgIGNsb3Nlc3RTb3VyY2VIYW5kbGUgPSBzb3VyY2VIYW5kbGU7XG4gICAgICAgICAgY2xvc2VzdFRhcmdldEhhbmRsZSA9IHRhcmdldEhhbmRsZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2VIYW5kbGU6IGNsb3Nlc3RTb3VyY2VIYW5kbGUsXG4gICAgICB0YXJnZXRIYW5kbGU6IGNsb3Nlc3RUYXJnZXRIYW5kbGUsXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRPRE86IG5vdCByZWFjdGl2ZVxuICAgKi9cbiAgcHVibGljIG1hcmtlclN0YXJ0VXJsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtlciA9IHRoaXMuZWRnZS5tYXJrZXJzPy5zdGFydDtcblxuICAgIHJldHVybiBtYXJrZXIgPyBgdXJsKCMke2hhc2hDb2RlKEpTT04uc3RyaW5naWZ5KG1hcmtlcikpfSlgIDogJyc7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBUT0RPOiBub3QgcmVhY3RpdmVcbiAgICovXG4gIHB1YmxpYyBtYXJrZXJFbmRVcmwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbWFya2VyID0gdGhpcy5lZGdlLm1hcmtlcnM/LmVuZDtcblxuICAgIHJldHVybiBtYXJrZXIgPyBgdXJsKCMke2hhc2hDb2RlKEpTT04uc3RyaW5naWZ5KG1hcmtlcikpfSlgIDogJyc7XG4gIH0pO1xuXG4gIHB1YmxpYyBjb250ZXh0ID0ge1xuICAgICRpbXBsaWNpdDoge1xuICAgICAgLy8gVE9ETzogY2hlY2sgaWYgZWRnZSBjb3VsZCBjaGFuZ2VcbiAgICAgIGVkZ2U6IHRoaXMuZWRnZSxcbiAgICAgIHBhdGg6IGNvbXB1dGVkKCgpID0+IHRoaXMucGF0aCgpLnBhdGgpLFxuICAgICAgbWFya2VyU3RhcnQ6IHRoaXMubWFya2VyU3RhcnRVcmwsXG4gICAgICBtYXJrZXJFbmQ6IHRoaXMubWFya2VyRW5kVXJsLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQuYXNSZWFkb25seSgpLFxuICAgIH0sXG4gIH07XG5cbiAgcHVibGljIGVkZ2VMYWJlbHM6IHsgW3Bvc2l0aW9uIGluIEVkZ2VMYWJlbFBvc2l0aW9uXT86IEVkZ2VMYWJlbE1vZGVsIH0gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWRnZTogRWRnZSkge1xuICAgIHRoaXMudHlwZSA9IGVkZ2UudHlwZSA/PyAnZGVmYXVsdCc7XG4gICAgdGhpcy5jdXJ2ZSA9IGVkZ2UuY3VydmUgPz8gJ2Jlemllcic7XG4gICAgdGhpcy5yZWNvbm5lY3RhYmxlID0gZWRnZS5yZWNvbm5lY3RhYmxlID8/IGZhbHNlO1xuICAgIHRoaXMuZmxvYXRpbmcgPSBlZGdlLmZsb2F0aW5nID8/IGZhbHNlO1xuXG4gICAgaWYgKGVkZ2UuZWRnZUxhYmVscz8uc3RhcnQpIHRoaXMuZWRnZUxhYmVscy5zdGFydCA9IG5ldyBFZGdlTGFiZWxNb2RlbChlZGdlLmVkZ2VMYWJlbHMuc3RhcnQpO1xuICAgIGlmIChlZGdlLmVkZ2VMYWJlbHM/LmNlbnRlcikgdGhpcy5lZGdlTGFiZWxzLmNlbnRlciA9IG5ldyBFZGdlTGFiZWxNb2RlbChlZGdlLmVkZ2VMYWJlbHMuY2VudGVyKTtcbiAgICBpZiAoZWRnZS5lZGdlTGFiZWxzPy5lbmQpIHRoaXMuZWRnZUxhYmVscy5lbmQgPSBuZXcgRWRnZUxhYmVsTW9kZWwoZWRnZS5lZGdlTGFiZWxzLmVuZCk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhdGhGYWN0b3J5UGFyYW1zKHNvdXJjZTogSGFuZGxlTW9kZWwsIHRhcmdldDogSGFuZGxlTW9kZWwpOiBDdXJ2ZUZhY3RvcnlQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBtb2RlOiAnZWRnZScsXG4gICAgICBlZGdlOiB0aGlzLmVkZ2UsXG4gICAgICBzb3VyY2VQb2ludDogc291cmNlLnBvaW50QWJzb2x1dGUoKSxcbiAgICAgIHRhcmdldFBvaW50OiB0YXJnZXQucG9pbnRBYnNvbHV0ZSgpLFxuICAgICAgc291cmNlUG9zaXRpb246IHNvdXJjZS5yYXdIYW5kbGUucG9zaXRpb24sXG4gICAgICB0YXJnZXRQb3NpdGlvbjogdGFyZ2V0LnJhd0hhbmRsZS5wb3NpdGlvbixcbiAgICAgIGFsbEVkZ2VzOiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UucmF3RWRnZXMoKSxcbiAgICAgIGFsbE5vZGVzOiB0aGlzLmZsb3dFbnRpdGllc1NlcnZpY2UucmF3Tm9kZXMoKSxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -37,23 +37,23 @@ export class HandleModel {
37
37
  switch (this.rawHandle.position) {
38
38
  case 'left':
39
39
  return {
40
- x: 0,
41
- y: this.hostPosition().y + this.hostSize().height / 2,
40
+ x: -this.rawHandle.userOffsetX,
41
+ y: -this.rawHandle.userOffsetY + this.hostPosition().y + this.hostSize().height / 2,
42
42
  };
43
43
  case 'right':
44
44
  return {
45
- x: this.parentNode.size().width,
46
- y: this.hostPosition().y + this.hostSize().height / 2,
45
+ x: -this.rawHandle.userOffsetX + this.parentNode.size().width,
46
+ y: -this.rawHandle.userOffsetY + this.hostPosition().y + this.hostSize().height / 2,
47
47
  };
48
48
  case 'top':
49
49
  return {
50
- x: this.hostPosition().x + this.hostSize().width / 2,
51
- y: 0,
50
+ x: -this.rawHandle.userOffsetX + this.hostPosition().x + this.hostSize().width / 2,
51
+ y: -this.rawHandle.userOffsetY,
52
52
  };
53
53
  case 'bottom':
54
54
  return {
55
- x: this.hostPosition().x + this.hostSize().width / 2,
56
- y: this.parentNode.size().height,
55
+ x: -this.rawHandle.userOffsetX + this.hostPosition().x + this.hostSize().width / 2,
56
+ y: -this.rawHandle.userOffsetY + this.parentNode.size().height,
57
57
  };
58
58
  }
59
59
  });
@@ -95,4 +95,4 @@ export class HandleModel {
95
95
  return { width: 0, height: 0 };
96
96
  }
97
97
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBMkZ0QixZQUNTLFNBQXFCLEVBQ3JCLFVBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQTVGZCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQzs7O1dBR0c7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ2hDLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1NBQ2xDLENBQUMsQ0FBQztRQUVJLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxPQUFPO2dCQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzth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LEVBQUUsQ0FBQztRQUN0QyxDQUFDO1FBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5vZGVIYW5kbGUgfSBmcm9tICcuLi9zZXJ2aWNlcy9oYW5kbGUuc2VydmljZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuL25vZGUubW9kZWwnO1xuaW1wb3J0IHsgU3ViamVjdCwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IHR5cGUgSGFuZGxlU3RhdGUgPSAndmFsaWQnIHwgJ2ludmFsaWQnIHwgJ2lkbGUnO1xuXG5leHBvcnQgY2xhc3MgSGFuZGxlTW9kZWwge1xuICBwdWJsaWMgcmVhZG9ubHkgc3Ryb2tlV2lkdGggPSAyO1xuXG4gIC8qKlxuICAgKiBQcmUtY29tcHV0ZWQgc2l6ZSBmb3IgZGVmYXVsdCBoYW5kbGUsIGNoYW5nZWQgZHluYW1pY2FsbHlcbiAgICogZm9yIGN1c3RvbSBoYW5kbGVzXG4gICAqL1xuICBwdWJsaWMgc2l6ZSA9IHNpZ25hbCh7XG4gICAgd2lkdGg6IDEwICsgMiAqIHRoaXMuc3Ryb2tlV2lkdGgsXG4gICAgaGVpZ2h0OiAxMCArIDIgKiB0aGlzLnN0cm9rZVdpZHRoLFxuICB9KTtcblxuICBwdWJsaWMgcG9pbnRBYnNvbHV0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy5wYXJlbnROb2RlLmdsb2JhbFBvaW50KCkueCArIHRoaXMuaG9zdE9mZnNldCgpLnggKyB0aGlzLnNpemVPZmZzZXQoKS54LFxuICAgICAgeTogdGhpcy5wYXJlbnROb2RlLmdsb2JhbFBvaW50KCkueSArIHRoaXMuaG9zdE9mZnNldCgpLnkgKyB0aGlzLnNpemVPZmZzZXQoKS55LFxuICAgIH07XG4gIH0pO1xuXG4gIHB1YmxpYyBzdGF0ZSA9IHNpZ25hbDxIYW5kbGVTdGF0ZT4oJ2lkbGUnKTtcblxuICBwcml2YXRlIHVwZGF0ZUhvc3RTaXplQW5kUG9zaXRpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyBUT0RPOiBmb3Igc29tZSByZWFzb24gdG9MYXp5U2lnbmFsIGJyZWFrcyB1bml0IHRlc3RzLCBzbyB3ZSB1c2UgdG9TaWduYWwgaGVyZVxuICBwcml2YXRlIGhvc3RTaXplID0gdG9TaWduYWwodGhpcy51cGRhdGVIb3N0U2l6ZUFuZFBvc2l0aW9uJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldEhvc3RTaXplKCkpKSwge1xuICAgIGluaXRpYWxWYWx1ZTogeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0sXG4gIH0pO1xuXG4gIC8vIFRPRE86IGZvciBzb21lIHJlYXNvbiB0b0xhenlTaWduYWwgYnJlYWtzIHVuaXQgdGVzdHMsIHNvIHdlIHVzZSB0b1NpZ25hbCBoZXJlXG4gIHByaXZhdGUgaG9zdFBvc2l0aW9uID0gdG9TaWduYWwoXG4gICAgdGhpcy51cGRhdGVIb3N0U2l6ZUFuZFBvc2l0aW9uJC5waXBlKFxuICAgICAgbWFwKCgpID0+ICh7XG4gICAgICAgIHg6IHRoaXMuaG9zdFJlZmVyZW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gdGhpcy5ob3N0UmVmZXJlbmNlLm9mZnNldExlZnQgOiAwLCAvLyBmb3Igbm93IGp1c3QgMCBmb3IgZ3JvdXAgbm9kZXNcbiAgICAgICAgeTogdGhpcy5ob3N0UmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyB0aGlzLmhvc3RSZWZlcmVuY2Uub2Zmc2V0VG9wIDogMCwgLy8gZm9yIG5vdyBqdXN0IDAgZm9yIGdyb3VwIG5vZGVzXG4gICAgICB9KSksXG4gICAgKSxcbiAgICB7XG4gICAgICBpbml0aWFsVmFsdWU6IHsgeDogMCwgeTogMCB9LFxuICAgIH0sXG4gICk7XG5cbiAgcHVibGljIGhvc3RPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnJhd0hhbmRsZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogMCxcbiAgICAgICAgICB5OiB0aGlzLmhvc3RQb3NpdGlvbigpLnkgKyB0aGlzLmhvc3RTaXplKCkuaGVpZ2h0IC8gMixcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLnBhcmVudE5vZGUuc2l6ZSgpLndpZHRoLFxuICAgICAgICAgIHk6IHRoaXMuaG9zdFBvc2l0aW9uKCkueSArIHRoaXMuaG9zdFNpemUoKS5oZWlnaHQgLyAyLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiB0aGlzLmhvc3RQb3NpdGlvbigpLnggKyB0aGlzLmhvc3RTaXplKCkud2lkdGggLyAyLFxuICAgICAgICAgIHk6IDAsXG4gICAgICAgIH07XG4gICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IHRoaXMuaG9zdFBvc2l0aW9uKCkueCArIHRoaXMuaG9zdFNpemUoKS53aWR0aCAvIDIsXG4gICAgICAgICAgeTogdGhpcy5wYXJlbnROb2RlLnNpemUoKS5oZWlnaHQsXG4gICAgICAgIH07XG4gICAgfVxuICB9KTtcblxuICBwcml2YXRlIHNpemVPZmZzZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoICh0aGlzLnJhd0hhbmRsZS5wb3NpdGlvbikge1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHJldHVybiB7IHg6IC0odGhpcy5zaXplKCkud2lkdGggLyAyKSwgeTogMCB9O1xuICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICByZXR1cm4geyB4OiB0aGlzLnNpemUoKS53aWR0aCAvIDIsIHk6IDAgfTtcbiAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgIHJldHVybiB7IHg6IDAsIHk6IC0odGhpcy5zaXplKCkuaGVpZ2h0IC8gMikgfTtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJldHVybiB7IHg6IDAsIHk6IHRoaXMuc2l6ZSgpLmhlaWdodCAvIDIgfTtcbiAgICB9XG4gIH0pO1xuXG4gIHB1YmxpYyBob3N0UmVmZXJlbmNlID0gdGhpcy5yYXdIYW5kbGUuaG9zdFJlZmVyZW5jZSE7XG5cbiAgcHVibGljIHRlbXBsYXRlID0gdGhpcy5yYXdIYW5kbGUudGVtcGxhdGU7XG5cbiAgcHVibGljIHRlbXBsYXRlQ29udGV4dCA9IHtcbiAgICAkaW1wbGljaXQ6IHtcbiAgICAgIHBvaW50OiB0aGlzLmhvc3RPZmZzZXQsXG4gICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgIG5vZGU6IHRoaXMucGFyZW50Tm9kZS5yYXdOb2RlLFxuICAgIH0sXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJhd0hhbmRsZTogTm9kZUhhbmRsZSxcbiAgICBwdWJsaWMgcGFyZW50Tm9kZTogTm9kZU1vZGVsLFxuICApIHt9XG5cbiAgcHVibGljIHVwZGF0ZUhvc3QoKSB7XG4gICAgdGhpcy51cGRhdGVIb3N0U2l6ZUFuZFBvc2l0aW9uJC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldEhvc3RTaXplKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgaWYgKHRoaXMuaG9zdFJlZmVyZW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWR0aDogdGhpcy5ob3N0UmVmZXJlbmNlLm9mZnNldFdpZHRoLFxuICAgICAgICBoZWlnaHQ6IHRoaXMuaG9zdFJlZmVyZW5jZS5vZmZzZXRIZWlnaHQsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5ob3N0UmVmZXJlbmNlIGluc3RhbmNlb2YgU1ZHR3JhcGhpY3NFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5ob3N0UmVmZXJlbmNlLmdldEJCb3goKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG4gIH1cbn1cbiJdfQ==
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi9zcmMvbGliL3ZmbG93L21vZGVscy9oYW5kbGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXRELE1BQU0sT0FBTyxXQUFXO0lBMkZ0QixZQUNTLFNBQXFCLEVBQ3JCLFVBQXFCO1FBRHJCLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQTVGZCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVoQzs7O1dBR0c7UUFDSSxTQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ25CLEtBQUssRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ2hDLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXO1NBQ2xDLENBQUMsQ0FBQztRQUVJLGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxPQUFPO2dCQUNMLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQzth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Q3pDLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksSUFBSSxDQUFDLGFBQWEsWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUM5QyxPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVc7Z0JBQ3JDLE1BQU0sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVk7YUFDeEMsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLFlBQVksa0JBQWtCLEVBQUUsQ0FBQztZQUM1RCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOb2RlSGFuZGxlIH0gZnJvbSAnLi4vc2VydmljZXMvaGFuZGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm9kZU1vZGVsIH0gZnJvbSAnLi9ub2RlLm1vZGVsJztcbmltcG9ydCB7IFN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCB0eXBlIEhhbmRsZVN0YXRlID0gJ3ZhbGlkJyB8ICdpbnZhbGlkJyB8ICdpZGxlJztcblxuZXhwb3J0IGNsYXNzIEhhbmRsZU1vZGVsIHtcbiAgcHVibGljIHJlYWRvbmx5IHN0cm9rZVdpZHRoID0gMjtcblxuICAvKipcbiAgICogUHJlLWNvbXB1dGVkIHNpemUgZm9yIGRlZmF1bHQgaGFuZGxlLCBjaGFuZ2VkIGR5bmFtaWNhbGx5XG4gICAqIGZvciBjdXN0b20gaGFuZGxlc1xuICAgKi9cbiAgcHVibGljIHNpemUgPSBzaWduYWwoe1xuICAgIHdpZHRoOiAxMCArIDIgKiB0aGlzLnN0cm9rZVdpZHRoLFxuICAgIGhlaWdodDogMTAgKyAyICogdGhpcy5zdHJva2VXaWR0aCxcbiAgfSk7XG5cbiAgcHVibGljIHBvaW50QWJzb2x1dGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHRoaXMucGFyZW50Tm9kZS5nbG9iYWxQb2ludCgpLnggKyB0aGlzLmhvc3RPZmZzZXQoKS54ICsgdGhpcy5zaXplT2Zmc2V0KCkueCxcbiAgICAgIHk6IHRoaXMucGFyZW50Tm9kZS5nbG9iYWxQb2ludCgpLnkgKyB0aGlzLmhvc3RPZmZzZXQoKS55ICsgdGhpcy5zaXplT2Zmc2V0KCkueSxcbiAgICB9O1xuICB9KTtcblxuICBwdWJsaWMgc3RhdGUgPSBzaWduYWw8SGFuZGxlU3RhdGU+KCdpZGxlJyk7XG5cbiAgcHJpdmF0ZSB1cGRhdGVIb3N0U2l6ZUFuZFBvc2l0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gVE9ETzogZm9yIHNvbWUgcmVhc29uIHRvTGF6eVNpZ25hbCBicmVha3MgdW5pdCB0ZXN0cywgc28gd2UgdXNlIHRvU2lnbmFsIGhlcmVcbiAgcHJpdmF0ZSBob3N0U2l6ZSA9IHRvU2lnbmFsKHRoaXMudXBkYXRlSG9zdFNpemVBbmRQb3NpdGlvbiQucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRIb3N0U2l6ZSgpKSksIHtcbiAgICBpbml0aWFsVmFsdWU6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9LFxuICB9KTtcblxuICAvLyBUT0RPOiBmb3Igc29tZSByZWFzb24gdG9MYXp5U2lnbmFsIGJyZWFrcyB1bml0IHRlc3RzLCBzbyB3ZSB1c2UgdG9TaWduYWwgaGVyZVxuICBwcml2YXRlIGhvc3RQb3NpdGlvbiA9IHRvU2lnbmFsKFxuICAgIHRoaXMudXBkYXRlSG9zdFNpemVBbmRQb3NpdGlvbiQucGlwZShcbiAgICAgIG1hcCgoKSA9PiAoe1xuICAgICAgICB4OiB0aGlzLmhvc3RSZWZlcmVuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IHRoaXMuaG9zdFJlZmVyZW5jZS5vZmZzZXRMZWZ0IDogMCwgLy8gZm9yIG5vdyBqdXN0IDAgZm9yIGdyb3VwIG5vZGVzXG4gICAgICAgIHk6IHRoaXMuaG9zdFJlZmVyZW5jZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID8gdGhpcy5ob3N0UmVmZXJlbmNlLm9mZnNldFRvcCA6IDAsIC8vIGZvciBub3cganVzdCAwIGZvciBncm91cCBub2Rlc1xuICAgICAgfSkpLFxuICAgICksXG4gICAge1xuICAgICAgaW5pdGlhbFZhbHVlOiB7IHg6IDAsIHk6IDAgfSxcbiAgICB9LFxuICApO1xuXG4gIHB1YmxpYyBob3N0T2Zmc2V0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHN3aXRjaCAodGhpcy5yYXdIYW5kbGUucG9zaXRpb24pIHtcbiAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHg6IC10aGlzLnJhd0hhbmRsZS51c2VyT2Zmc2V0WCxcbiAgICAgICAgICB5OiAtdGhpcy5yYXdIYW5kbGUudXNlck9mZnNldFkgKyB0aGlzLmhvc3RQb3NpdGlvbigpLnkgKyB0aGlzLmhvc3RTaXplKCkuaGVpZ2h0IC8gMixcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiAtdGhpcy5yYXdIYW5kbGUudXNlck9mZnNldFggKyB0aGlzLnBhcmVudE5vZGUuc2l6ZSgpLndpZHRoLFxuICAgICAgICAgIHk6IC10aGlzLnJhd0hhbmRsZS51c2VyT2Zmc2V0WSArIHRoaXMuaG9zdFBvc2l0aW9uKCkueSArIHRoaXMuaG9zdFNpemUoKS5oZWlnaHQgLyAyLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB4OiAtdGhpcy5yYXdIYW5kbGUudXNlck9mZnNldFggKyB0aGlzLmhvc3RQb3NpdGlvbigpLnggKyB0aGlzLmhvc3RTaXplKCkud2lkdGggLyAyLFxuICAgICAgICAgIHk6IC10aGlzLnJhd0hhbmRsZS51c2VyT2Zmc2V0WSxcbiAgICAgICAgfTtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgeDogLXRoaXMucmF3SGFuZGxlLnVzZXJPZmZzZXRYICsgdGhpcy5ob3N0UG9zaXRpb24oKS54ICsgdGhpcy5ob3N0U2l6ZSgpLndpZHRoIC8gMixcbiAgICAgICAgICB5OiAtdGhpcy5yYXdIYW5kbGUudXNlck9mZnNldFkgKyB0aGlzLnBhcmVudE5vZGUuc2l6ZSgpLmhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgc2l6ZU9mZnNldCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2ggKHRoaXMucmF3SGFuZGxlLnBvc2l0aW9uKSB7XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcmV0dXJuIHsgeDogLSh0aGlzLnNpemUoKS53aWR0aCAvIDIpLCB5OiAwIH07XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiB7IHg6IHRoaXMuc2l6ZSgpLndpZHRoIC8gMiwgeTogMCB9O1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHsgeDogMCwgeTogLSh0aGlzLnNpemUoKS5oZWlnaHQgLyAyKSB9O1xuICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgcmV0dXJuIHsgeDogMCwgeTogdGhpcy5zaXplKCkuaGVpZ2h0IC8gMiB9O1xuICAgIH1cbiAgfSk7XG5cbiAgcHVibGljIGhvc3RSZWZlcmVuY2UgPSB0aGlzLnJhd0hhbmRsZS5ob3N0UmVmZXJlbmNlITtcblxuICBwdWJsaWMgdGVtcGxhdGUgPSB0aGlzLnJhd0hhbmRsZS50ZW1wbGF0ZTtcblxuICBwdWJsaWMgdGVtcGxhdGVDb250ZXh0ID0ge1xuICAgICRpbXBsaWNpdDoge1xuICAgICAgcG9pbnQ6IHRoaXMuaG9zdE9mZnNldCxcbiAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgbm9kZTogdGhpcy5wYXJlbnROb2RlLnJhd05vZGUsXG4gICAgfSxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmF3SGFuZGxlOiBOb2RlSGFuZGxlLFxuICAgIHB1YmxpYyBwYXJlbnROb2RlOiBOb2RlTW9kZWwsXG4gICkge31cblxuICBwdWJsaWMgdXBkYXRlSG9zdCgpIHtcbiAgICB0aGlzLnVwZGF0ZUhvc3RTaXplQW5kUG9zaXRpb24kLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SG9zdFNpemUoKTogeyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9IHtcbiAgICBpZiAodGhpcy5ob3N0UmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiB0aGlzLmhvc3RSZWZlcmVuY2Uub2Zmc2V0V2lkdGgsXG4gICAgICAgIGhlaWdodDogdGhpcy5ob3N0UmVmZXJlbmNlLm9mZnNldEhlaWdodCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLmhvc3RSZWZlcmVuY2UgaW5zdGFuY2VvZiBTVkdHcmFwaGljc0VsZW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmhvc3RSZWZlcmVuY2UuZ2V0QkJveCgpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcbiAgfVxufVxuIl19
@@ -21,6 +21,8 @@ export class HandleComponent {
21
21
  */
22
22
  this.id = input();
23
23
  this.template = input();
24
+ this.offsetX = input(0);
25
+ this.offsetY = input(0);
24
26
  }
25
27
  ngOnInit() {
26
28
  runInInjectionContext(this.injector, () => {
@@ -32,6 +34,8 @@ export class HandleComponent {
32
34
  id: this.id(),
33
35
  hostReference: this.element.parentElement,
34
36
  template: this.template(),
37
+ userOffsetX: this.offsetX(),
38
+ userOffsetY: this.offsetY(),
35
39
  }, node);
36
40
  this.handleService.createHandle(model);
37
41
  requestAnimationFrame(() => model.updateHost());
@@ -40,10 +44,10 @@ export class HandleComponent {
40
44
  });
41
45
  }
42
46
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: HandleComponent, 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 } }, ngImport: i0, template: "", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: HandleComponent, 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: "", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44
48
  }
45
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleComponent, decorators: [{
46
50
  type: Component,
47
51
  args: [{ standalone: true, selector: 'handle', changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
48
52
  }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUdSLE1BQU0sRUFDTixLQUFLLEVBQ0wscUJBQXFCLEdBQ3RCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBUXhELE1BQU0sT0FBTyxlQUFlO0lBTjVCO1FBT1UsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxZQUFPLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDcEUsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4Qzs7V0FFRztRQUNJLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFFN0M7O1dBRUc7UUFDSSxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBdUIsQ0FBQztRQUVwRDs7V0FFRztRQUNJLE9BQUUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVyQixhQUFRLEdBQUcsS0FBSyxFQUFvQixDQUFDO0tBMEI3QztJQXhCUSxRQUFRO1FBQ2IscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUV2QyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULE1BQU0sS0FBSyxHQUFHLElBQUksV0FBVyxDQUMzQjtvQkFDRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2pCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO29CQUNiLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWM7b0JBQzFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO2lCQUMxQixFQUNELElBQUksQ0FDTCxDQUFDO2dCQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV2QyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFFaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTlDVSxlQUFlO21HQUFmLGVBQWUsa2pCQ3RCNUIsRUFBQTs7NEZEc0JhLGVBQWU7a0JBTjNCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFFBQVEsbUJBRUQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9wb3NpdGlvbi50eXBlJztcbmltcG9ydCB7IEhhbmRsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oYW5kbGUuc2VydmljZSc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9oYW5kbGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdoYW5kbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaGFuZGxlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEhhbmRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIGhhbmRsZVNlcnZpY2UgPSBpbmplY3QoSGFuZGxlU2VydmljZSk7XG4gIHByaXZhdGUgZWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIC8qKlxuICAgKiBBdCB3aGF0IHNpZGUgb2Ygbm9kZSB0aGlzIGNvbXBvbmVudCBzaG91bGQgYmUgcGxhY2VkXG4gICAqL1xuICBwdWJsaWMgcG9zaXRpb24gPSBpbnB1dC5yZXF1aXJlZDxQb3NpdGlvbj4oKTtcblxuICAvKipcbiAgICogU291cmNlIG9yIHRhcmdldFxuICAgKi9cbiAgcHVibGljIHR5cGUgPSBpbnB1dC5yZXF1aXJlZDwnc291cmNlJyB8ICd0YXJnZXQnPigpO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgYmUgdXNlZCBpZiBub2RlIGhhcyBtb3JlIHRoYW4gb25lIHNvdXJjZS90YXJnZXRcbiAgICovXG4gIHB1YmxpYyBpZCA9IGlucHV0PHN0cmluZz4oKTtcblxuICBwdWJsaWMgdGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuaGFuZGxlU2VydmljZS5ub2RlKCk7XG5cbiAgICAgIGlmIChub2RlKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsID0gbmV3IEhhbmRsZU1vZGVsKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiB0aGlzLnBvc2l0aW9uKCksXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUoKSxcbiAgICAgICAgICAgIGlkOiB0aGlzLmlkKCksXG4gICAgICAgICAgICBob3N0UmVmZXJlbmNlOiB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudCEsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogdGhpcy50ZW1wbGF0ZSgpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmhhbmRsZVNlcnZpY2UuY3JlYXRlSGFuZGxlKG1vZGVsKTtcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gbW9kZWwudXBkYXRlSG9zdCgpKTtcblxuICAgICAgICB0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHRoaXMuaGFuZGxlU2VydmljZS5kZXN0cm95SGFuZGxlKG1vZGVsKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC12Zmxvdy1saWIvc3JjL2xpYi92Zmxvdy9wdWJsaWMtY29tcG9uZW50cy9oYW5kbGUvaGFuZGxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUdSLE1BQU0sRUFDTixLQUFLLEVBQ0wscUJBQXFCLEdBQ3RCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBUXhELE1BQU0sT0FBTyxlQUFlO0lBTjVCO1FBT1UsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxZQUFPLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDcEUsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4Qzs7V0FFRztRQUNJLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFFN0M7O1dBRUc7UUFDSSxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBdUIsQ0FBQztRQUVwRDs7V0FFRztRQUNJLE9BQUUsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVyQixhQUFRLEdBQUcsS0FBSyxFQUEyQixDQUFDO1FBRTVDLFlBQU8sR0FBRyxLQUFLLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsWUFBTyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztLQTRCbkM7SUExQlEsUUFBUTtRQUNiLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFdkMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxNQUFNLEtBQUssR0FBRyxJQUFJLFdBQVcsQ0FDM0I7b0JBQ0UsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNqQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtvQkFDYixhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFjO29CQUMxQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO2lCQUM1QixFQUNELElBQUksQ0FDTCxDQUFDO2dCQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUV2QyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFFaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQW5EVSxlQUFlO21HQUFmLGVBQWUsOHlCQ3RCNUIsRUFBQTs7NEZEc0JhLGVBQWU7a0JBTjNCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFFBQVEsbUJBRUQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdG9yLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi8uLi90eXBlcy9wb3NpdGlvbi50eXBlJztcbmltcG9ydCB7IEhhbmRsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9oYW5kbGUuc2VydmljZSc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9oYW5kbGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdoYW5kbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vaGFuZGxlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEhhbmRsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIGhhbmRsZVNlcnZpY2UgPSBpbmplY3QoSGFuZGxlU2VydmljZSk7XG4gIHByaXZhdGUgZWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcbiAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIC8qKlxuICAgKiBBdCB3aGF0IHNpZGUgb2Ygbm9kZSB0aGlzIGNvbXBvbmVudCBzaG91bGQgYmUgcGxhY2VkXG4gICAqL1xuICBwdWJsaWMgcG9zaXRpb24gPSBpbnB1dC5yZXF1aXJlZDxQb3NpdGlvbj4oKTtcblxuICAvKipcbiAgICogU291cmNlIG9yIHRhcmdldFxuICAgKi9cbiAgcHVibGljIHR5cGUgPSBpbnB1dC5yZXF1aXJlZDwnc291cmNlJyB8ICd0YXJnZXQnPigpO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgYmUgdXNlZCBpZiBub2RlIGhhcyBtb3JlIHRoYW4gb25lIHNvdXJjZS90YXJnZXRcbiAgICovXG4gIHB1YmxpYyBpZCA9IGlucHV0PHN0cmluZz4oKTtcblxuICBwdWJsaWMgdGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4oKTtcblxuICBwdWJsaWMgb2Zmc2V0WCA9IGlucHV0PG51bWJlcj4oMCk7XG4gIHB1YmxpYyBvZmZzZXRZID0gaW5wdXQ8bnVtYmVyPigwKTtcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmhhbmRsZVNlcnZpY2Uubm9kZSgpO1xuXG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBIYW5kbGVNb2RlbChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbigpLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlKCksXG4gICAgICAgICAgICBpZDogdGhpcy5pZCgpLFxuICAgICAgICAgICAgaG9zdFJlZmVyZW5jZTogdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQhLFxuICAgICAgICAgICAgdGVtcGxhdGU6IHRoaXMudGVtcGxhdGUoKSxcbiAgICAgICAgICAgIHVzZXJPZmZzZXRYOiB0aGlzLm9mZnNldFgoKSxcbiAgICAgICAgICAgIHVzZXJPZmZzZXRZOiB0aGlzLm9mZnNldFkoKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVTZXJ2aWNlLmNyZWF0ZUhhbmRsZShtb2RlbCk7XG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IG1vZGVsLnVwZGF0ZUhvc3QoKSk7XG5cbiAgICAgICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLmhhbmRsZVNlcnZpY2UuZGVzdHJveUhhbmRsZShtb2RlbCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCIiXX0=
@@ -27,4 +27,4 @@ __decorate([
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleService, decorators: [{
28
28
  type: Injectable
29
29
  }], propDecorators: { createHandle: [] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvaGFuZGxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFXOUQsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFa0IsU0FBSSxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7S0FnQnZEO0lBYlEsWUFBWSxDQUFDLFNBQXNCO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxjQUEyQjtRQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQzsrR0FoQlUsYUFBYTttSEFBYixhQUFhOztBQUlqQjtJQUROLFNBQVMsQ0FBQyxnREFBZ0Q7aURBTTFEOzRGQVRVLGFBQWE7a0JBRHpCLFVBQVU7OEJBS0YsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFRlbXBsYXRlUmVmLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vdHlwZXMvcG9zaXRpb24udHlwZSc7XG5pbXBvcnQgeyBIYW5kbGVUeXBlIH0gZnJvbSAnLi4vdHlwZXMvaGFuZGxlLXR5cGUudHlwZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9oYW5kbGUubW9kZWwnO1xuaW1wb3J0IHsgTWljcm90YXNrIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9taWNyb3Rhc2suZGVjb3JhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBOb2RlSGFuZGxlIHtcbiAgcG9zaXRpb246IFBvc2l0aW9uO1xuICB0eXBlOiBIYW5kbGVUeXBlO1xuICBpZD86IHN0cmluZztcbiAgaG9zdFJlZmVyZW5jZT86IEVsZW1lbnQ7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55Pjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEhhbmRsZVNlcnZpY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgbm9kZSA9IHNpZ25hbDxOb2RlTW9kZWwgfCBudWxsPihudWxsKTtcblxuICBATWljcm90YXNrIC8vIFRPRE8gZml4ZXMgcmVuZGVyaW5nIG9mIGhhbmRsZSBmb3IgZ3JvdXAgbm9kZVxuICBwdWJsaWMgY3JlYXRlSGFuZGxlKG5ld0hhbmRsZTogSGFuZGxlTW9kZWwpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIG5vZGUuaGFuZGxlcy51cGRhdGUoKGhhbmRsZXMpID0+IFsuLi5oYW5kbGVzLCBuZXdIYW5kbGVdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveUhhbmRsZShoYW5kbGVUb0Rlc3RveTogSGFuZGxlTW9kZWwpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIG5vZGUuaGFuZGxlcy51cGRhdGUoKGhhbmRsZXMpID0+IGhhbmRsZXMuZmlsdGVyKChoYW5kbGUpID0+IGhhbmRsZSAhPT0gaGFuZGxlVG9EZXN0b3kpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdmZsb3ctbGliL3NyYy9saWIvdmZsb3cvc2VydmljZXMvaGFuZGxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUFhOUQsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFFa0IsU0FBSSxHQUFHLE1BQU0sQ0FBbUIsSUFBSSxDQUFDLENBQUM7S0FnQnZEO0lBYlEsWUFBWSxDQUFDLFNBQXNCO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxjQUEyQjtRQUM5QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQzsrR0FoQlUsYUFBYTttSEFBYixhQUFhOztBQUlqQjtJQUROLFNBQVMsQ0FBQyxnREFBZ0Q7aURBTTFEOzRGQVRVLGFBQWE7a0JBRHpCLFVBQVU7OEJBS0YsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFRlbXBsYXRlUmVmLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vdHlwZXMvcG9zaXRpb24udHlwZSc7XG5pbXBvcnQgeyBIYW5kbGVUeXBlIH0gZnJvbSAnLi4vdHlwZXMvaGFuZGxlLXR5cGUudHlwZSc7XG5pbXBvcnQgeyBOb2RlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBIYW5kbGVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9oYW5kbGUubW9kZWwnO1xuaW1wb3J0IHsgTWljcm90YXNrIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9taWNyb3Rhc2suZGVjb3JhdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBOb2RlSGFuZGxlIHtcbiAgcG9zaXRpb246IFBvc2l0aW9uO1xuICB0eXBlOiBIYW5kbGVUeXBlO1xuICB1c2VyT2Zmc2V0WDogbnVtYmVyO1xuICB1c2VyT2Zmc2V0WTogbnVtYmVyO1xuICBpZD86IHN0cmluZztcbiAgaG9zdFJlZmVyZW5jZT86IEVsZW1lbnQ7XG4gIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PiB8IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIYW5kbGVTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IG5vZGUgPSBzaWduYWw8Tm9kZU1vZGVsIHwgbnVsbD4obnVsbCk7XG5cbiAgQE1pY3JvdGFzayAvLyBUT0RPIGZpeGVzIHJlbmRlcmluZyBvZiBoYW5kbGUgZm9yIGdyb3VwIG5vZGVcbiAgcHVibGljIGNyZWF0ZUhhbmRsZShuZXdIYW5kbGU6IEhhbmRsZU1vZGVsKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLmhhbmRsZXMudXBkYXRlKChoYW5kbGVzKSA9PiBbLi4uaGFuZGxlcywgbmV3SGFuZGxlXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lIYW5kbGUoaGFuZGxlVG9EZXN0b3k6IEhhbmRsZU1vZGVsKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLmhhbmRsZXMudXBkYXRlKChoYW5kbGVzKSA9PiBoYW5kbGVzLmZpbHRlcigoaGFuZGxlKSA9PiBoYW5kbGUgIT09IGhhbmRsZVRvRGVzdG95KSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -6,11 +6,13 @@ export class HandleMockComponent {
6
6
  this.type = input.required();
7
7
  this.id = input();
8
8
  this.template = input();
9
+ this.offsetX = input(0);
10
+ this.offsetY = input(0);
9
11
  }
10
12
  // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
11
13
  ngOnInit() { }
12
14
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- 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 } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15
+ 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 }); }
14
16
  }
15
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleMockComponent, decorators: [{
16
18
  type: Component,
@@ -21,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
21
23
  standalone: true,
22
24
  }]
23
25
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLW1vY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi90ZXN0aW5nL3NyYy9jb21wb25lbnQtbW9ja3MvaGFuZGxlLW1vY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7QUFVL0YsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQU9TLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDdEMsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDN0MsT0FBRSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3JCLGFBQVEsR0FBRyxLQUFLLEVBQW9CLENBQUM7S0FJN0M7SUFGQyxxRUFBcUU7SUFDOUQsUUFBUSxLQUFVLENBQUM7K0dBUGYsbUJBQW1CO21HQUFuQixtQkFBbUIsa2pCQUpwQixFQUFFOzs0RkFJRCxtQkFBbUI7a0JBTi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgVGVtcGxhdGVSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVDb21wb25lbnQsIFBvc2l0aW9uIH0gZnJvbSAnbmd4LXZmbG93JztcbmltcG9ydCB7IEFzSW50ZXJmYWNlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoYW5kbGUnLFxuICB0ZW1wbGF0ZTogJycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBIYW5kbGVNb2NrQ29tcG9uZW50IGltcGxlbWVudHMgQXNJbnRlcmZhY2U8SGFuZGxlQ29tcG9uZW50PiwgT25Jbml0IHtcbiAgcHVibGljIHBvc2l0aW9uID0gaW5wdXQucmVxdWlyZWQ8UG9zaXRpb24+KCk7XG4gIHB1YmxpYyB0eXBlID0gaW5wdXQucmVxdWlyZWQ8J3NvdXJjZScgfCAndGFyZ2V0Jz4oKTtcbiAgcHVibGljIGlkID0gaW5wdXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgdGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tZW1wdHktbGlmZWN5Y2xlLW1ldGhvZFxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7fVxufVxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLW1vY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXZmbG93LWxpYi90ZXN0aW5nL3NyYy9jb21wb25lbnQtbW9ja3MvaGFuZGxlLW1vY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUF1QixNQUFNLGVBQWUsQ0FBQzs7QUFVL0YsTUFBTSxPQUFPLG1CQUFtQjtJQU5oQztRQU9TLGFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFZLENBQUM7UUFDdEMsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDN0MsT0FBRSxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3JCLGFBQVEsR0FBRyxLQUFLLEVBQTJCLENBQUM7UUFDNUMsWUFBTyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO0tBSW5DO0lBRkMscUVBQXFFO0lBQzlELFFBQVEsS0FBVSxDQUFDOytHQVRmLG1CQUFtQjttR0FBbkIsbUJBQW1CLDh5QkFKcEIsRUFBRTs7NEZBSUQsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxRQUFRO29CQUNsQixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5wdXQsIFRlbXBsYXRlUmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgSGFuZGxlQ29tcG9uZW50LCBQb3NpdGlvbiB9IGZyb20gJ25neC12Zmxvdyc7XG5pbXBvcnQgeyBBc0ludGVyZmFjZSB9IGZyb20gJy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGFuZGxlJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgSGFuZGxlTW9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIEFzSW50ZXJmYWNlPEhhbmRsZUNvbXBvbmVudD4sIE9uSW5pdCB7XG4gIHB1YmxpYyBwb3NpdGlvbiA9IGlucHV0LnJlcXVpcmVkPFBvc2l0aW9uPigpO1xuICBwdWJsaWMgdHlwZSA9IGlucHV0LnJlcXVpcmVkPCdzb3VyY2UnIHwgJ3RhcmdldCc+KCk7XG4gIHB1YmxpYyBpZCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcHVibGljIHRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+KCk7XG4gIHB1YmxpYyBvZmZzZXRYID0gaW5wdXQ8bnVtYmVyPigwKTtcbiAgcHVibGljIG9mZnNldFkgPSBpbnB1dDxudW1iZXI+KDApO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tZW1wdHktbGlmZWN5Y2xlLW1ldGhvZFxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7fVxufVxuIl19
@@ -456,11 +456,13 @@ class HandleMockComponent {
456
456
  this.type = input.required();
457
457
  this.id = input();
458
458
  this.template = input();
459
+ this.offsetX = input(0);
460
+ this.offsetY = input(0);
459
461
  }
460
462
  // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method
461
463
  ngOnInit() { }
462
464
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleMockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
463
- 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 } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
465
+ 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 }); }
464
466
  }
465
467
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HandleMockComponent, decorators: [{
466
468
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-vflow-testing.mjs","sources":["../../../projects/ngx-vflow-lib/testing/src/provide-custom-node-mocks.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/template-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/vflow-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/handle-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/resizable-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/minimap-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/node-toolbar-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/connection-controller-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/drag-handle-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/selectable-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/custom-template-edge-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/vflow-mocks.ts","../../../projects/ngx-vflow-lib/testing/src/public-api.ts","../../../projects/ngx-vflow-lib/testing/src/ngx-vflow-testing.ts"],"sourcesContent":["import { Provider, signal } from '@angular/core';\nimport {\n ɵNodeModel as NodeModel,\n ɵComponentEventBusService as ComponentEventBusService,\n ɵHandleService as HandleService,\n ɵFlowSettingsService as FlowSettingsService,\n ɵFlowEntitiesService as FlowEntitiesService,\n ɵNodeAccessorService as NodeAccessorService,\n ɵRootPointerDirective as RootPointerDirective,\n ɵSpacePointContextDirective as SpacePointContextDirective,\n ɵViewportService as ViewportService,\n ɵSelectionService as SelectionService,\n Point,\n} from 'ngx-vflow';\nimport { of } from 'rxjs';\n\nconst mockModel = () => new NodeModel({ id: 'mock', type: 'default', point: { x: 0, y: 0 } });\n\nexport function provideCustomNodeMocks(): Provider[] {\n return [\n {\n provide: ComponentEventBusService,\n useValue: {\n pushEvent: () => {},\n },\n },\n {\n provide: NodeAccessorService,\n useFactory: () => ({\n model: signal(mockModel()),\n }),\n },\n FlowEntitiesService,\n\n // TODO: mocks below should be removed after the major release\n {\n provide: HandleService,\n useFactory: () => ({\n node: signal(mockModel()),\n createHandle: () => {},\n destroyHandle: () => {},\n }),\n },\n {\n provide: RootPointerDirective,\n useValue: {\n pointerMovement$: of({\n x: 0,\n y: 0,\n movementX: 0,\n movementY: 0,\n target: null,\n originalEvent: null,\n }),\n documentPointerEnd$: of(null),\n },\n },\n {\n provide: SpacePointContextDirective,\n useValue: {\n documentPointToFlowPoint: (point: Point) => point,\n },\n },\n {\n provide: SelectionService,\n useValue: {\n select: () => {},\n },\n },\n FlowSettingsService,\n ViewportService,\n ];\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type {\n ConnectionTemplateDirective,\n EdgeLabelHtmlTemplateDirective,\n EdgeTemplateDirective,\n GroupNodeTemplateDirective,\n HandleTemplateDirective,\n NodeHtmlTemplateDirective,\n} from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[edge]',\n})\nexport class EdgeTemplateMockDirective implements AsInterface<EdgeTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[connection]',\n})\nexport class ConnectionTemplateMockDirective implements AsInterface<ConnectionTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[edgeLabelHtml]',\n})\nexport class EdgeLabelHtmlTemplateMockDirective implements AsInterface<EdgeLabelHtmlTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[nodeHtml]',\n})\nexport class NodeHtmlTemplateMockDirective implements AsInterface<NodeHtmlTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[nodeSvg]',\n})\nexport class NodeSvgTemplateMockDirective implements AsInterface<NodeSvgTemplateMockDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[groupNode]',\n})\nexport class GroupNodeTemplateMockDirective implements AsInterface<GroupNodeTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[handle]',\n})\nexport class HandleTemplateMockDirective implements AsInterface<HandleTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Input,\n output,\n signal,\n WritableSignal,\n OnInit,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Node,\n DynamicNode,\n Edge,\n SpacePoint,\n Point,\n Background,\n KeyboardShortcuts,\n ConnectionSettings,\n ViewportState,\n NodeChange,\n EdgeChange,\n FitViewOptions,\n VflowComponent,\n IntersectingNodesOptions,\n ɵConnectionModel as ConnectionModel,\n DEFAULT_OPTIMIZATION,\n} from 'ngx-vflow';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n ConnectionTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n NodeHtmlTemplateMockDirective,\n} from '../directive-mocks/template-mock.directive';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'vflow',\n template: `\n <ng-content />\n\n @for (node of nodes; track $index) {\n @if (node.type === 'html-template') {\n <ng-component\n [ngTemplateOutlet]=\"nodeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n node: node,\n selected: createSignal(false),\n },\n }\" />\n }\n\n @if (node.type === 'template-group') {\n <ng-component\n [ngTemplateOutlet]=\"groupNodeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n node: node,\n selected: createSignal(false),\n width: createSignal(node.width),\n height: createSignal(node.height),\n },\n }\" />\n }\n }\n\n @for (edge of edges; track $index) {\n @if (edge.type === 'template') {\n <ng-component\n [ngTemplateOutlet]=\"edgeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n selected: createSignal(false),\n path: createSignal(''),\n markerStart: createSignal(''),\n markerEnd: createSignal(''),\n },\n }\" />\n\n @if (edge.edgeLabels?.start) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n },\n }\" />\n }\n\n @if (edge.edgeLabels?.center) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n label: edge.edgeLabels?.center,\n },\n }\" />\n }\n\n @if (edge.edgeLabels?.end) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n label: edge.edgeLabels?.end,\n },\n }\" />\n }\n }\n }\n\n @if (connection.type === 'template') {\n <ng-component\n [ngTemplateOutlet]=\"connectionTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n path: createSignal(''),\n marker: createSignal(''),\n },\n }\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class VflowMockComponent implements AsInterface<VflowComponent>, OnInit {\n @Input({ required: true })\n public readonly nodes!: Node[] | DynamicNode[];\n\n @Input()\n public readonly edges!: Edge[];\n\n @Input()\n public readonly view: [number, number] | 'auto' = [400, 400];\n\n @Input()\n public readonly minZoom = 0.5;\n\n @Input()\n public readonly maxZoom = 3;\n\n @Input()\n public readonly background: Background | string = '#fff';\n\n @Input()\n public readonly optimization = DEFAULT_OPTIMIZATION;\n\n @Input()\n public readonly entitiesSelectable = true;\n\n @Input()\n public readonly keyboardShortcuts: KeyboardShortcuts = {\n multiSelection: null,\n };\n\n @Input({\n transform: (settings: ConnectionSettings) => new ConnectionModel(settings),\n })\n public readonly connection: ConnectionModel = new ConnectionModel({});\n\n @Input()\n public readonly snapGrid!: [number, number];\n\n @Input()\n public elevateNodesOnSelect!: boolean;\n\n @Input()\n public elevateEdgesOnSelect!: boolean;\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onComponentNodeEvent = output<any>();\n\n protected nodeTemplateDirective = contentChild(NodeHtmlTemplateMockDirective);\n\n protected groupNodeTemplateDirective = contentChild(GroupNodeTemplateMockDirective);\n\n protected edgeTemplateDirective = contentChild(EdgeTemplateMockDirective);\n\n protected edgeLabelHtmlDirective = contentChild(EdgeLabelHtmlTemplateMockDirective);\n\n protected connectionTemplateDirective = contentChild(ConnectionTemplateMockDirective);\n\n public viewport = signal<ViewportState>({\n x: 0,\n y: 0,\n zoom: 1,\n });\n\n public nodesChange = signal<NodeChange[]>([]);\n public edgesChange = signal<EdgeChange[]>([]);\n\n public viewportChange$ = toObservable(this.viewport);\n\n public nodesChange$ = toObservable(this.nodesChange);\n public edgesChange$ = toObservable(this.edgesChange);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n public viewportTo(viewport: ViewportState): void {\n this.viewport.set(viewport);\n }\n\n public zoomTo(zoom: number): void {\n this.viewport.update((prev) => ({ ...prev, zoom }));\n }\n\n public panTo(point: Point): void {\n this.viewport.update((prev) => ({ ...prev, x: point.x, y: point.y }));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public fitView(options?: FitViewOptions): void {}\n\n public documentPointToFlowPoint(point: Point, options?: { spaces: false }): Point;\n public documentPointToFlowPoint(point: Point, options: { spaces: true }): SpacePoint[];\n public documentPointToFlowPoint(point: Point, options?: { spaces: boolean }): unknown {\n if (options?.spaces) {\n return [\n {\n nodeId: null,\n x: point.x,\n y: point.y,\n },\n ];\n }\n\n return point;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getIntesectingNodes(nodeId: string, options?: IntersectingNodesOptions): Node[] | DynamicNode[] {\n return [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public toNodeSpace(nodeId: string, spaceNodeId: string): Point {\n return { x: 0, y: 0 };\n }\n\n public getNode<T = unknown>(id: string): Node<T> | DynamicNode<T> | undefined {\n return this.nodes.find((node) => node.id === id);\n }\n\n public getDetachedEdges(): Edge[] {\n return [];\n }\n\n protected createSignal<T>(value: T): WritableSignal<T> {\n return signal(value);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, TemplateRef, OnInit } from '@angular/core';\nimport type { HandleComponent, Position } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'handle',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class HandleMockComponent implements AsInterface<HandleComponent>, OnInit {\n public position = input.required<Position>();\n public type = input.required<'source' | 'target'>();\n public id = input<string>();\n public template = input<TemplateRef<any>>();\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit(): void {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit, AfterViewInit } from '@angular/core';\nimport type { ResizableComponent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: '[resizable]',\n template: '<ng-content />',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResizableMockComponent implements AsInterface<ResizableComponent>, OnInit, AfterViewInit {\n public resizable = input<boolean | ''>();\n public resizerColor = input('#2e414c');\n public gap = input(1.5);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngAfterViewInit() {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit } from '@angular/core';\nimport type { MiniMapComponent, MiniMapPosition } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'mini-map',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MiniMapMockComponent implements AsInterface<MiniMapComponent>, OnInit {\n public maskColor = input(`rgba(215, 215, 215, 0.6)`);\n\n public strokeColor = input(`rgb(200, 200, 200)`);\n\n public position = input<MiniMapPosition>('bottom-right');\n\n public scaleOnHover = input(false);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit, OnDestroy } from '@angular/core';\nimport type { Position, NodeToolbarComponent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'node-toolbar',\n template: '<ng-content />',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeToolbarMockComponent implements AsInterface<NodeToolbarComponent>, OnInit, OnDestroy {\n public position = input<Position>('top');\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnDestroy() {}\n}\n","import { Directive, output } from '@angular/core';\nimport { Connection, ReconnectionEvent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\nimport type { ConnectionControllerDirective, ɵHandleModel as HandleModel } from 'ngx-vflow';\n\n@Directive({ selector: '[onConnect]', standalone: true })\nexport class ConnectionControllerMockDirective implements AsInterface<ConnectionControllerDirective> {\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onConnect = output<Connection>();\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onReconnect = output<ReconnectionEvent>();\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public startConnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public startReconnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public validateConnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public resetValidateConnection(targetHandle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public endConnection(): void {}\n}\n","import { Directive } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { DragHandleDirective } from 'ngx-vflow';\n\n@Directive({ selector: '[dragHandle]', standalone: true })\nexport class DragHandleMockDirective implements AsInterface<DragHandleDirective> {}\n","import { Directive } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { SelectableDirective } from 'ngx-vflow';\n\n@Directive({\n selector: '[selectable]',\n standalone: true,\n})\nexport class SelectableMockDirective implements AsInterface<SelectableDirective> {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { CustomTemplateEdgeComponent } from 'ngx-vflow';\n\n@Component({\n selector: 'g[customTemplateEdge]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class CustomTemplateEdgeMockComponent implements AsInterface<CustomTemplateEdgeComponent> {}\n","import { CustomTemplateEdgeMockComponent } from './component-mocks/custom-template-edge-mock.component';\nimport { HandleMockComponent } from './component-mocks/handle-mock.component';\nimport { MiniMapMockComponent } from './component-mocks/minimap-mock.component';\nimport { NodeToolbarMockComponent } from './component-mocks/node-toolbar-mock.component';\nimport { ResizableMockComponent } from './component-mocks/resizable-mock.component';\nimport { VflowMockComponent } from './component-mocks/vflow-mock.component';\nimport { ConnectionControllerMockDirective } from './directive-mocks/connection-controller-mock.directive';\nimport { DragHandleMockDirective } from './directive-mocks/drag-handle-mock.directive';\nimport { SelectableMockDirective } from './directive-mocks/selectable-mock.directive';\nimport {\n ConnectionTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n HandleTemplateMockDirective,\n NodeHtmlTemplateMockDirective,\n} from './directive-mocks/template-mock.directive';\n\nexport const VflowMocks = [\n VflowMockComponent,\n HandleMockComponent,\n ResizableMockComponent,\n SelectableMockDirective,\n MiniMapMockComponent,\n NodeToolbarMockComponent,\n DragHandleMockDirective,\n ConnectionControllerMockDirective,\n CustomTemplateEdgeMockComponent,\n\n NodeHtmlTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n ConnectionTemplateMockDirective,\n HandleTemplateMockDirective,\n] as const;\n","// Testing\nexport * from './provide-custom-node-mocks';\nexport * from './component-mocks/vflow-mock.component';\nexport * from './component-mocks/handle-mock.component';\nexport * from './component-mocks/resizable-mock.component';\nexport * from './component-mocks/minimap-mock.component';\nexport * from './component-mocks/node-toolbar-mock.component';\nexport * from './directive-mocks/connection-controller-mock.directive';\nexport * from './directive-mocks/drag-handle-mock.directive';\nexport * from './directive-mocks/selectable-mock.directive';\nexport * from './directive-mocks/template-mock.directive';\nexport * from './vflow-mocks';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NodeModel","ComponentEventBusService","NodeAccessorService","FlowEntitiesService","HandleService","RootPointerDirective","SpacePointContextDirective","SelectionService","FlowSettingsService","ViewportService","ConnectionModel"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-vflow-testing.mjs","sources":["../../../projects/ngx-vflow-lib/testing/src/provide-custom-node-mocks.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/template-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/vflow-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/handle-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/resizable-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/minimap-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/node-toolbar-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/connection-controller-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/drag-handle-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/directive-mocks/selectable-mock.directive.ts","../../../projects/ngx-vflow-lib/testing/src/component-mocks/custom-template-edge-mock.component.ts","../../../projects/ngx-vflow-lib/testing/src/vflow-mocks.ts","../../../projects/ngx-vflow-lib/testing/src/public-api.ts","../../../projects/ngx-vflow-lib/testing/src/ngx-vflow-testing.ts"],"sourcesContent":["import { Provider, signal } from '@angular/core';\nimport {\n ɵNodeModel as NodeModel,\n ɵComponentEventBusService as ComponentEventBusService,\n ɵHandleService as HandleService,\n ɵFlowSettingsService as FlowSettingsService,\n ɵFlowEntitiesService as FlowEntitiesService,\n ɵNodeAccessorService as NodeAccessorService,\n ɵRootPointerDirective as RootPointerDirective,\n ɵSpacePointContextDirective as SpacePointContextDirective,\n ɵViewportService as ViewportService,\n ɵSelectionService as SelectionService,\n Point,\n} from 'ngx-vflow';\nimport { of } from 'rxjs';\n\nconst mockModel = () => new NodeModel({ id: 'mock', type: 'default', point: { x: 0, y: 0 } });\n\nexport function provideCustomNodeMocks(): Provider[] {\n return [\n {\n provide: ComponentEventBusService,\n useValue: {\n pushEvent: () => {},\n },\n },\n {\n provide: NodeAccessorService,\n useFactory: () => ({\n model: signal(mockModel()),\n }),\n },\n FlowEntitiesService,\n\n // TODO: mocks below should be removed after the major release\n {\n provide: HandleService,\n useFactory: () => ({\n node: signal(mockModel()),\n createHandle: () => {},\n destroyHandle: () => {},\n }),\n },\n {\n provide: RootPointerDirective,\n useValue: {\n pointerMovement$: of({\n x: 0,\n y: 0,\n movementX: 0,\n movementY: 0,\n target: null,\n originalEvent: null,\n }),\n documentPointerEnd$: of(null),\n },\n },\n {\n provide: SpacePointContextDirective,\n useValue: {\n documentPointToFlowPoint: (point: Point) => point,\n },\n },\n {\n provide: SelectionService,\n useValue: {\n select: () => {},\n },\n },\n FlowSettingsService,\n ViewportService,\n ];\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type {\n ConnectionTemplateDirective,\n EdgeLabelHtmlTemplateDirective,\n EdgeTemplateDirective,\n GroupNodeTemplateDirective,\n HandleTemplateDirective,\n NodeHtmlTemplateDirective,\n} from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Directive({\n standalone: true,\n selector: 'ng-template[edge]',\n})\nexport class EdgeTemplateMockDirective implements AsInterface<EdgeTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[connection]',\n})\nexport class ConnectionTemplateMockDirective implements AsInterface<ConnectionTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[edgeLabelHtml]',\n})\nexport class EdgeLabelHtmlTemplateMockDirective implements AsInterface<EdgeLabelHtmlTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[nodeHtml]',\n})\nexport class NodeHtmlTemplateMockDirective implements AsInterface<NodeHtmlTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[nodeSvg]',\n})\nexport class NodeSvgTemplateMockDirective implements AsInterface<NodeSvgTemplateMockDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[groupNode]',\n})\nexport class GroupNodeTemplateMockDirective implements AsInterface<GroupNodeTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n\n@Directive({\n standalone: true,\n selector: 'ng-template[handle]',\n})\nexport class HandleTemplateMockDirective implements AsInterface<HandleTemplateDirective> {\n public templateRef = inject(TemplateRef);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Input,\n output,\n signal,\n WritableSignal,\n OnInit,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n Node,\n DynamicNode,\n Edge,\n SpacePoint,\n Point,\n Background,\n KeyboardShortcuts,\n ConnectionSettings,\n ViewportState,\n NodeChange,\n EdgeChange,\n FitViewOptions,\n VflowComponent,\n IntersectingNodesOptions,\n ɵConnectionModel as ConnectionModel,\n DEFAULT_OPTIMIZATION,\n} from 'ngx-vflow';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n ConnectionTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n NodeHtmlTemplateMockDirective,\n} from '../directive-mocks/template-mock.directive';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'vflow',\n template: `\n <ng-content />\n\n @for (node of nodes; track $index) {\n @if (node.type === 'html-template') {\n <ng-component\n [ngTemplateOutlet]=\"nodeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n node: node,\n selected: createSignal(false),\n },\n }\" />\n }\n\n @if (node.type === 'template-group') {\n <ng-component\n [ngTemplateOutlet]=\"groupNodeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n node: node,\n selected: createSignal(false),\n width: createSignal(node.width),\n height: createSignal(node.height),\n },\n }\" />\n }\n }\n\n @for (edge of edges; track $index) {\n @if (edge.type === 'template') {\n <ng-component\n [ngTemplateOutlet]=\"edgeTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n selected: createSignal(false),\n path: createSignal(''),\n markerStart: createSignal(''),\n markerEnd: createSignal(''),\n },\n }\" />\n\n @if (edge.edgeLabels?.start) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n },\n }\" />\n }\n\n @if (edge.edgeLabels?.center) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n label: edge.edgeLabels?.center,\n },\n }\" />\n }\n\n @if (edge.edgeLabels?.end) {\n <ng-component\n [ngTemplateOutlet]=\"edgeLabelHtmlDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n edge: edge,\n label: edge.edgeLabels?.end,\n },\n }\" />\n }\n }\n }\n\n @if (connection.type === 'template') {\n <ng-component\n [ngTemplateOutlet]=\"connectionTemplateDirective()?.templateRef ?? null\"\n [ngTemplateOutletContext]=\"{\n $implicit: {\n path: createSignal(''),\n marker: createSignal(''),\n },\n }\" />\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class VflowMockComponent implements AsInterface<VflowComponent>, OnInit {\n @Input({ required: true })\n public readonly nodes!: Node[] | DynamicNode[];\n\n @Input()\n public readonly edges!: Edge[];\n\n @Input()\n public readonly view: [number, number] | 'auto' = [400, 400];\n\n @Input()\n public readonly minZoom = 0.5;\n\n @Input()\n public readonly maxZoom = 3;\n\n @Input()\n public readonly background: Background | string = '#fff';\n\n @Input()\n public readonly optimization = DEFAULT_OPTIMIZATION;\n\n @Input()\n public readonly entitiesSelectable = true;\n\n @Input()\n public readonly keyboardShortcuts: KeyboardShortcuts = {\n multiSelection: null,\n };\n\n @Input({\n transform: (settings: ConnectionSettings) => new ConnectionModel(settings),\n })\n public readonly connection: ConnectionModel = new ConnectionModel({});\n\n @Input()\n public readonly snapGrid!: [number, number];\n\n @Input()\n public elevateNodesOnSelect!: boolean;\n\n @Input()\n public elevateEdgesOnSelect!: boolean;\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onComponentNodeEvent = output<any>();\n\n protected nodeTemplateDirective = contentChild(NodeHtmlTemplateMockDirective);\n\n protected groupNodeTemplateDirective = contentChild(GroupNodeTemplateMockDirective);\n\n protected edgeTemplateDirective = contentChild(EdgeTemplateMockDirective);\n\n protected edgeLabelHtmlDirective = contentChild(EdgeLabelHtmlTemplateMockDirective);\n\n protected connectionTemplateDirective = contentChild(ConnectionTemplateMockDirective);\n\n public viewport = signal<ViewportState>({\n x: 0,\n y: 0,\n zoom: 1,\n });\n\n public nodesChange = signal<NodeChange[]>([]);\n public edgesChange = signal<EdgeChange[]>([]);\n\n public viewportChange$ = toObservable(this.viewport);\n\n public nodesChange$ = toObservable(this.nodesChange);\n public edgesChange$ = toObservable(this.edgesChange);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n public viewportTo(viewport: ViewportState): void {\n this.viewport.set(viewport);\n }\n\n public zoomTo(zoom: number): void {\n this.viewport.update((prev) => ({ ...prev, zoom }));\n }\n\n public panTo(point: Point): void {\n this.viewport.update((prev) => ({ ...prev, x: point.x, y: point.y }));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public fitView(options?: FitViewOptions): void {}\n\n public documentPointToFlowPoint(point: Point, options?: { spaces: false }): Point;\n public documentPointToFlowPoint(point: Point, options: { spaces: true }): SpacePoint[];\n public documentPointToFlowPoint(point: Point, options?: { spaces: boolean }): unknown {\n if (options?.spaces) {\n return [\n {\n nodeId: null,\n x: point.x,\n y: point.y,\n },\n ];\n }\n\n return point;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getIntesectingNodes(nodeId: string, options?: IntersectingNodesOptions): Node[] | DynamicNode[] {\n return [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public toNodeSpace(nodeId: string, spaceNodeId: string): Point {\n return { x: 0, y: 0 };\n }\n\n public getNode<T = unknown>(id: string): Node<T> | DynamicNode<T> | undefined {\n return this.nodes.find((node) => node.id === id);\n }\n\n public getDetachedEdges(): Edge[] {\n return [];\n }\n\n protected createSignal<T>(value: T): WritableSignal<T> {\n return signal(value);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, TemplateRef, OnInit } from '@angular/core';\nimport type { HandleComponent, Position } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'handle',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class HandleMockComponent implements AsInterface<HandleComponent>, OnInit {\n public position = input.required<Position>();\n public type = input.required<'source' | 'target'>();\n public id = input<string>();\n public template = input<TemplateRef<any> | null>();\n public offsetX = input<number>(0);\n public offsetY = input<number>(0);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit(): void {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit, AfterViewInit } from '@angular/core';\nimport type { ResizableComponent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: '[resizable]',\n template: '<ng-content />',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResizableMockComponent implements AsInterface<ResizableComponent>, OnInit, AfterViewInit {\n public resizable = input<boolean | ''>();\n public resizerColor = input('#2e414c');\n public gap = input(1.5);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngAfterViewInit() {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit } from '@angular/core';\nimport type { MiniMapComponent, MiniMapPosition } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'mini-map',\n template: '',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MiniMapMockComponent implements AsInterface<MiniMapComponent>, OnInit {\n public maskColor = input(`rgba(215, 215, 215, 0.6)`);\n\n public strokeColor = input(`rgb(200, 200, 200)`);\n\n public position = input<MiniMapPosition>('bottom-right');\n\n public scaleOnHover = input(false);\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n}\n","import { ChangeDetectionStrategy, Component, input, OnInit, OnDestroy } from '@angular/core';\nimport type { Position, NodeToolbarComponent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\n\n@Component({\n selector: 'node-toolbar',\n template: '<ng-content />',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NodeToolbarMockComponent implements AsInterface<NodeToolbarComponent>, OnInit, OnDestroy {\n public position = input<Position>('top');\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnInit() {}\n\n // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method\n public ngOnDestroy() {}\n}\n","import { Directive, output } from '@angular/core';\nimport { Connection, ReconnectionEvent } from 'ngx-vflow';\nimport { AsInterface } from '../types';\nimport type { ConnectionControllerDirective, ɵHandleModel as HandleModel } from 'ngx-vflow';\n\n@Directive({ selector: '[onConnect]', standalone: true })\nexport class ConnectionControllerMockDirective implements AsInterface<ConnectionControllerDirective> {\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onConnect = output<Connection>();\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n public readonly onReconnect = output<ReconnectionEvent>();\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public startConnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public startReconnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public validateConnection(handle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public resetValidateConnection(targetHandle: HandleModel): void {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public endConnection(): void {}\n}\n","import { Directive } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { DragHandleDirective } from 'ngx-vflow';\n\n@Directive({ selector: '[dragHandle]', standalone: true })\nexport class DragHandleMockDirective implements AsInterface<DragHandleDirective> {}\n","import { Directive } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { SelectableDirective } from 'ngx-vflow';\n\n@Directive({\n selector: '[selectable]',\n standalone: true,\n})\nexport class SelectableMockDirective implements AsInterface<SelectableDirective> {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { AsInterface } from '../types';\nimport type { CustomTemplateEdgeComponent } from 'ngx-vflow';\n\n@Component({\n selector: 'g[customTemplateEdge]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class CustomTemplateEdgeMockComponent implements AsInterface<CustomTemplateEdgeComponent> {}\n","import { CustomTemplateEdgeMockComponent } from './component-mocks/custom-template-edge-mock.component';\nimport { HandleMockComponent } from './component-mocks/handle-mock.component';\nimport { MiniMapMockComponent } from './component-mocks/minimap-mock.component';\nimport { NodeToolbarMockComponent } from './component-mocks/node-toolbar-mock.component';\nimport { ResizableMockComponent } from './component-mocks/resizable-mock.component';\nimport { VflowMockComponent } from './component-mocks/vflow-mock.component';\nimport { ConnectionControllerMockDirective } from './directive-mocks/connection-controller-mock.directive';\nimport { DragHandleMockDirective } from './directive-mocks/drag-handle-mock.directive';\nimport { SelectableMockDirective } from './directive-mocks/selectable-mock.directive';\nimport {\n ConnectionTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n HandleTemplateMockDirective,\n NodeHtmlTemplateMockDirective,\n} from './directive-mocks/template-mock.directive';\n\nexport const VflowMocks = [\n VflowMockComponent,\n HandleMockComponent,\n ResizableMockComponent,\n SelectableMockDirective,\n MiniMapMockComponent,\n NodeToolbarMockComponent,\n DragHandleMockDirective,\n ConnectionControllerMockDirective,\n CustomTemplateEdgeMockComponent,\n\n NodeHtmlTemplateMockDirective,\n GroupNodeTemplateMockDirective,\n EdgeLabelHtmlTemplateMockDirective,\n EdgeTemplateMockDirective,\n ConnectionTemplateMockDirective,\n HandleTemplateMockDirective,\n] as const;\n","// Testing\nexport * from './provide-custom-node-mocks';\nexport * from './component-mocks/vflow-mock.component';\nexport * from './component-mocks/handle-mock.component';\nexport * from './component-mocks/resizable-mock.component';\nexport * from './component-mocks/minimap-mock.component';\nexport * from './component-mocks/node-toolbar-mock.component';\nexport * from './directive-mocks/connection-controller-mock.directive';\nexport * from './directive-mocks/drag-handle-mock.directive';\nexport * from './directive-mocks/selectable-mock.directive';\nexport * from './directive-mocks/template-mock.directive';\nexport * from './vflow-mocks';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["NodeModel","ComponentEventBusService","NodeAccessorService","FlowEntitiesService","HandleService","RootPointerDirective","SpacePointContextDirective","SelectionService","FlowSettingsService","ViewportService","ConnectionModel"],"mappings":"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"}