addNode static method

CanvasSceneDocument addNode(
  1. CanvasSceneDocument doc,
  2. Node node, {
  3. NodeId? parentId,
  4. int? index,
})

Implementation

static CanvasSceneDocument addNode(
  CanvasSceneDocument doc,
  Node node, {
  NodeId? parentId,
  int? index,
}) {
  if (parentId == null) {
    final out = [...doc.children];
    final i = _clampInsertIndex(index ?? out.length, out.length);
    out.insert(i, node);
    return doc.copyWith(children: out);
  }

  final parent = findById(doc, parentId);
  if (parent == null || !parent.isGroup) return doc;

  final outKids = [...parent.childrenOrEmpty];
  final i = _clampInsertIndex(index ?? outKids.length, outKids.length);
  outKids.insert(i, node);

  return _replaceChildren(doc, parent, outKids);
}