2.1.2 • Published 6 months ago

egraph-visualizer v2.1.2

Weekly downloads
-
License
-
Repository
github
Last release
6 months ago

EGraph Visualizer

This packages aims to help with debugging and teaching e-graphs through an interactive visualization.

It supports any e-graph serialized in the JSON format

Packaging

Currently, this visualizer is packaged as an AnyWidget JS ESM file with all dependencies included. On every Git tag, a new verison is bundled and published as a Github release.

It is also published as an NPM package, which can be imported and used in the browser like this:

<div id="egraph-visualizer"></div>
<link rel="stylesheet" href="https://esm.sh/egraph-visualizer/dist/style.css" />
<script type="module">
  import { mount } from "https://esm.sh/egraph-visualizer";
  const egraph = {
    nodes: {
      "//": {
        op: "/",
        children: ["*", "2"],
        eclass: "top",
      },
      "**": {
        op: "*",
        eclass: "top",
        children: ["a", "/"],
      },
      "*": {
        op: "*",
        eclass: "middle",
        children: ["a", "2"],
      },
      "<<": {
        op: "<<",
        eclass: "middle",
        children: ["a", "1"],
      },
      a: {
        op: "a",
        eclass: "top",
      },
      2: {
        op: "2",
        eclass: "bottom",
      },
      1: {
        op: "1",
        eclass: "right",
      },
      "/": {
        op: "/",
        eclass: "right",
        children: ["2", "2"],
      },
    },
  };
  const mounted = mount(document.getElementById("egraph-visualizer"));
  mounted.render([JSON.stringify(egraph)]);
  // later can call mounted.unmount() to remove the visualizer
</script>

There is also a demo site published on Github Pages, which allows you to upload and edit a serialized e-graph and see the visualization.

If other ways of packaging would be helpful, please open an issue.

Development

First install Yarn, then run:

yarn install
yarn run [build|start|lint]

Releasing

Releasing is totally automated. Just update the version in package.json and push a new tag to the repository.

You can purge the cache for jsDelivr so that egglog will pull in the new version, by entering these two URLs here.

https://cdn.jsdelivr.net/npm/egraph-visualizer@2/dist/style.css
https://cdn.jsdelivr.net/npm/egraph-visualizer@2/+esm

Contributing

This package is open to external contributors. Feel free to open a pull request or an issue for bugs or desired features. It is developed as part of the EGRAPHS community and can also be discussed in the EGRAPHS zulip.

@saulshanabrook is the current maintainor of this package, but others can be added after contributing.

2.1.2

6 months ago

2.1.1

8 months ago

2.0.4

8 months ago

2.0.3

8 months ago

2.0.2

8 months ago

2.0.1

8 months ago

2.0.0

8 months ago

1.4.2

8 months ago

1.3.0

8 months ago

1.2.0

9 months ago

1.1.1

9 months ago

1.1.0

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago

0.1.10

9 months ago

0.1.9

9 months ago

0.1.8

9 months ago

0.1.7

9 months ago

0.1.6

9 months ago

0.1.5

9 months ago

0.1.0

9 months ago