addNode method

MindMap addNode({
  1. required String parentId,
  2. required NodeMeta nodeMeta,
})

Implementation

MindMap addNode({required String parentId, required NodeMeta nodeMeta}) {
  assertValidId(parentId);

  final newNode = Node(id: nodeMeta.id ?? uuid.v4(), parentId: parentId);
  final newNodeMeta = nodeMeta.copyWith(id: newNode.id);

  Map<String, Node> newNodes = Map.of(nodes);
  newNodes[newNode.id] = newNode;

  if (parentId != rootNodeId) {
    final parentNode = nodes[parentId]!.copyWith(
      children: [...nodes[parentId]!.children, newNode],
    );
    newNodes = _updateWithAncestors(newNodes, parentNode);
  }

  return _copyWith(
    nodes: newNodes,
    nodeMetas: Map.of(nodeMetas)..[newNode.id] = newNodeMeta,
  );
}