New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

view-graph

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

view-graph

Directed graphs render

latest
Source
npmnpm
Version
0.6.0
Version published
Maintainers
1
Created
Source

view-graph

Last npm Registry Version

This project allows automatically render graphs for visualization and analysis. Enjoy exploring graphs directly in the web browser.

The view-graph takes descriptions of graphs in a simple JSON format, and makes diagrams in automatic mode.

Installation

npm install view-graph lit-html --save

Or use a content delivery network:

unpkg.com CDN:

<script src="https://unpkg.com/view-graph"></script>

Usage

Without bundling

Demo

With ReactJS

Demo

Options

PropertyAttributeTypeDefaultDescription
data - GraphData - Nodes and edges for creating a graph
edgeStyle - EdgeStyle polyline polyline - straight lines
curve - smooth curved lines
nodeStyle - NodeStyle | NodeStyle[] An SVG rectangle This SVG will be using as nodes image
css - String - Overwrite the default styles
callback - Callback - The optional parameter for subscribing and reacting on some events inside the graph
layoutConfig - LayoutConfig
{
  ranker: 'tight-tree',
  rankdir: 'LR',
  ranksep: "the longest label" + 50
}
A layout can be configured by setting the properties in layoutConfig object

It uses dagre under the hood for lay out directed graphs.

API

ViewGraphElementType shows methods that can be used for interact with the main element:

NameDescriptionInterface
toggleTooltipCan be used for showing or hiding nodes' tooltips(isVisible: boolean, nodeKey: string) => void

Callbacks:

NameDescriptionInterface
onClickByNodeInvokes by click on a Node(nodeId: string) => ((event: MouseEvent) => void) | void
onClickByEdgeInvokes by click on an Edge(edgeId: string) => ((event: MouseEvent) => void) | void
onEnterEdgeInvokes when a cursor enters an Edge(edgeId: string) => ((event: MouseEvent) => void) | void
onLeaveEdgeInvokes when a cursor leaves an Edge(edgeId: string) => ((event: MouseEvent) => void) | void
onEnterNodeInvokes when a cursor enters an Node(nodeId: string) => ((event: MouseEvent) => void) | void
onLeaveNodeInvokes when a cursor leaves an Node(nodeId: string) => ((event: MouseEvent) => void) | void

Set the callback property to add a reaction by click on a node or an edge.

For example, you can change styles by click:

  const onClickByNode = (event: MouseEvent) => {
    const target = event.target as SVGElement;

    if (target instanceof SVGTextElement) {
      target.style.fill = 'red';
      target.style.fontWeight = 'bold';
    }

    const id = target.parentElement!.id;

    const nodes = graphData.nodes.map((n) => ({
      ...n,
      styleId: n.id === id ? 'selectedNode' : undefined,
    }));

    data = {
      ...data,
      nodes,
    };

    this.next();
  };

  const onClickByEdge = (event: MouseEvent) => {
    const target = event.target as SVGElement;
    const parent = target.parentElement!;

    parent.childNodes.forEach((it) => {
      if (it instanceof SVGElement) {
        it.style.stroke = 'red';
      }
    });
  };

...

<ViewGraphElement
  data={data}
  callback={{ onClickByNode, onClickByEdge }}
></ViewGraphElement>


License

view-graph is licensed under the terms of the MIT License. See LICENSE for details.

Keywords

web component

FAQs

Package last updated on 17 Nov 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts