ngx-vflow 2.0.0 → 2.1.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.
@@ -759,7 +759,7 @@ class DraggableService {
759
759
  moveNode(model, point) {
760
760
  const parent = model.parent();
761
761
  // keep node in bounds of parent
762
- if (parent) {
762
+ if (model.extent() === 'parent' && parent) {
763
763
  point.x = Math.min(parent.width() - model.width(), point.x);
764
764
  point.x = Math.max(0, point.x);
765
765
  point.y = Math.min(parent.height() - model.height(), point.y);
@@ -1059,6 +1059,7 @@ const NODE_DEFAULTS = {
1059
1059
  height: 50,
1060
1060
  draggable: true,
1061
1061
  parentId: null,
1062
+ extent: 'parent',
1062
1063
  preview: { style: {} },
1063
1064
  selected: false,
1064
1065
  color: '#1b262c',
@@ -1093,10 +1094,11 @@ function createBaseNode(node, useDefaults) {
1093
1094
  return {
1094
1095
  id: node.id,
1095
1096
  point: signal(node.point),
1096
- draggable: signal(node.draggable ?? NODE_DEFAULTS.draggable),
1097
- parentId: signal(node.parentId ?? NODE_DEFAULTS.parentId),
1098
- preview: signal(node.preview ?? NODE_DEFAULTS.preview),
1099
- selected: signal(node.selected ?? NODE_DEFAULTS.selected),
1097
+ draggable: signal(isDefined(node.draggable) ? node.draggable : NODE_DEFAULTS.draggable),
1098
+ parentId: signal(isDefined(node.parentId) ? node.parentId : NODE_DEFAULTS.parentId),
1099
+ extent: signal(isDefined(node.extent) ? node.extent : NODE_DEFAULTS.extent),
1100
+ preview: signal(isDefined(node.preview) ? node.preview : NODE_DEFAULTS.preview),
1101
+ selected: signal(isDefined(node.selected) ? node.selected : NODE_DEFAULTS.selected),
1100
1102
  };
1101
1103
  }
1102
1104
  else {
@@ -1105,6 +1107,7 @@ function createBaseNode(node, useDefaults) {
1105
1107
  point: signal(node.point),
1106
1108
  draggable: isDefined(node.draggable) ? signal(node.draggable) : undefined,
1107
1109
  parentId: isDefined(node.parentId) ? signal(node.parentId) : undefined,
1110
+ extent: isDefined(node.extent) ? signal(node.extent) : undefined,
1108
1111
  preview: isDefined(node.preview) ? signal(node.preview) : undefined,
1109
1112
  selected: isDefined(node.selected) ? signal(node.selected) : undefined,
1110
1113
  };
@@ -1413,6 +1416,7 @@ class NodeModel {
1413
1416
  this.renderOrder = signal(0);
1414
1417
  this.selected = signal(false);
1415
1418
  this.preview = signal({ style: {} });
1419
+ this.extent = signal(NODE_DEFAULTS.extent);
1416
1420
  this.globalPoint = computed(() => {
1417
1421
  let parent = this.parent();
1418
1422
  let x = this.point().x;
@@ -1499,6 +1503,9 @@ class NodeModel {
1499
1503
  if (rawNode.selected) {
1500
1504
  this.selected = rawNode.selected;
1501
1505
  }
1506
+ if (rawNode.extent) {
1507
+ this.extent = rawNode.extent;
1508
+ }
1502
1509
  if (rawNode.type === 'default-group' && rawNode.color) {
1503
1510
  this.color = rawNode.color;
1504
1511
  }
@@ -1569,18 +1576,18 @@ function createEdge(edge, options = { useDefaults: true }) {
1569
1576
  if (options.useDefaults) {
1570
1577
  return {
1571
1578
  id: edge.id,
1572
- type: edge.type ?? EDGE_DEFAULTS.type,
1573
1579
  source: edge.source,
1574
1580
  target: edge.target,
1575
- sourceHandle: edge.sourceHandle ?? '',
1576
- targetHandle: edge.targetHandle ?? '',
1577
- curve: signal(edge.curve ?? EDGE_DEFAULTS.curve),
1578
- data: signal(edge.data ?? EDGE_DEFAULTS.data),
1579
- edgeLabels: signal(edge.edgeLabels ?? EDGE_DEFAULTS.edgeLabels),
1580
- markers: signal(edge.markers ?? EDGE_DEFAULTS.markers),
1581
- reconnectable: signal(edge.reconnectable ?? EDGE_DEFAULTS.reconnectable),
1582
- floating: signal(edge.floating ?? EDGE_DEFAULTS.floating),
1583
- selected: signal(edge.selected ?? EDGE_DEFAULTS.selected),
1581
+ type: isDefined(edge.type) ? edge.type : EDGE_DEFAULTS.type,
1582
+ sourceHandle: isDefined(edge.sourceHandle) ? edge.sourceHandle : '',
1583
+ targetHandle: isDefined(edge.targetHandle) ? edge.targetHandle : '',
1584
+ curve: signal(isDefined(edge.curve) ? edge.curve : EDGE_DEFAULTS.curve),
1585
+ data: signal(isDefined(edge.data) ? edge.data : EDGE_DEFAULTS.data),
1586
+ edgeLabels: signal(isDefined(edge.edgeLabels) ? edge.edgeLabels : EDGE_DEFAULTS.edgeLabels),
1587
+ markers: signal(isDefined(edge.markers) ? edge.markers : EDGE_DEFAULTS.markers),
1588
+ reconnectable: signal(isDefined(edge.reconnectable) ? edge.reconnectable : EDGE_DEFAULTS.reconnectable),
1589
+ floating: signal(isDefined(edge.floating) ? edge.floating : EDGE_DEFAULTS.floating),
1590
+ selected: signal(isDefined(edge.selected) ? edge.selected : EDGE_DEFAULTS.selected),
1584
1591
  };
1585
1592
  }
1586
1593
  else {
@@ -4263,8 +4270,16 @@ class AlignmentHelperComponent {
4263
4270
  .pipe(filter(isNodeDragEndStatus), map((status) => status.payload.node), map((node) => [node, this.intersections()]), tap(([node, intersections]) => {
4264
4271
  if (intersections) {
4265
4272
  const snapped = { x: intersections.snappedX, y: intersections.snappedY };
4266
- const parentIfExists = node.parent() ? [node.parent()] : [];
4267
- node.setPoint(getSpacePoints(snapped, parentIfExists)[0]);
4273
+ const parent = node.parent();
4274
+ if (parent) {
4275
+ node.setPoint({
4276
+ x: snapped.x - parent.globalPoint().x,
4277
+ y: snapped.y - parent.globalPoint().y,
4278
+ });
4279
+ }
4280
+ else {
4281
+ node.setPoint(snapped);
4282
+ }
4268
4283
  }
4269
4284
  }), takeUntilDestroyed())
4270
4285
  .subscribe();