code: def computeNodeLinks(cls, element, graph):
          
          index = element.nodes.kdims[-1]
          node_map = {}
          if element.nodes.vdims:
              values = zip(*(element.nodes.dimension_values(d)
                             for d in element.nodes.vdims))
          else:
              values = cycle([tuple()])
          for index, vals in zip(element.nodes.dimension_values(index), values):
              node = {'index': index, 'sourceLinks': [], 'targetLinks': [], 'values': vals}
              graph['nodes'].append(node)
              node_map[index] = node
  
          links = [element.dimension_values(d) for d in element.dimensions()[:3]]
          for i, (src, tgt, value) in enumerate(zip(*links)):
              source, target = node_map[src], node_map[tgt]
              link = dict(index=i, source=source, target=target, value=value)
              graph['links'].append(link)
              source['sourceLinks'].append(link)
              target['targetLinks'].append(link)
docs: Populate the sourceLinks and targetLinks for each node.
          Also, if the source and target are not objects, assume they are indices.