npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

view-graph

v0.6.0

Published

Directed graphs render

Downloads

39

Readme

view-graph

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


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: | Name | Description | Interface | |---------------|--------------------------------------|-----------------------------------------------------------| | toggleTooltip | Can be used for showing or hiding nodes' tooltips| (isVisible: boolean, nodeKey: string) => void |

Callbacks:

| Name | Description | Interface | | ------------- | ------------------------------------ | --------------------------------------------------------- | | onClickByNode | Invokes by click on a Node | (nodeId: string) => ((event: MouseEvent) => void) | void | | onClickByEdge | Invokes by click on an Edge | (edgeId: string) => ((event: MouseEvent) => void) | void | | onEnterEdge | Invokes when a cursor enters an Edge | (edgeId: string) => ((event: MouseEvent) => void) | void | | onLeaveEdge | Invokes when a cursor leaves an Edge | (edgeId: string) => ((event: MouseEvent) => void) | void | | onEnterNode | Invokes when a cursor enters an Node | (nodeId: string) => ((event: MouseEvent) => void) | void | | onLeaveNode | Invokes 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.