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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sigma/export-image

v4.0.0

Published

An helper to capture snapshots of sigma.js instances as images

Readme

Sigma.js - Export image

This package provides various functions to capture snapshots of a sigma.js instance as images, allowing easy export of your graph visualizations in different formats.

Available Options

The following options can be used to customize the image export:

  • width (null | number, default: null): Set the width of the output image. If null, the canvas will use the sigma container's width.
  • height (null | number, default: null): Set the height of the output image. If null, the canvas will use the sigma container's height.
  • fileName (string, default: "graph"): The name of the file to download.
  • format ("png" | "jpeg", default: "png"): The image format, either PNG or JPEG.
  • sigmaOverrides (Partial<{ primitives, styles, settings }>, default: {}): Alter the primitives, styles, and/or settings of the temporary sigma instance used for rendering. Each entry takes either an object, whose top-level sections replace the source ones, or a function receiving the source declaration and returning the one to use (see Overriding declarations).
  • cameraState (null | CameraState, default: null): The camera state to use for the rendering. If null, the current camera state is used.
  • backgroundColor (string, default: "transparent"): The background color of the image.
  • withTempRenderer (null | ((tmpRenderer: Sigma) => void) | ((tmpRenderer: Sigma) => Promise<void>), default: null): A callback function for custom operations using the temporary sigma renderer before rendering the image.

Available Functions

drawOnCanvas

This function creates a new temporary sigma instance, renders it with the given options, and draws the stage canvas on a new HTML canvas element. It then returns it as a Promise<HTMLCanvasElement>. This function is the core function, used by all other ones.

The primitives, styles and settings declarations, as well as the node, edge and graph states, are automatically copied from the source sigma instance to the temporary renderer, so the exported image reflects what is on screen (custom shapes, style rules, hover, highlight, etc.). Use sigmaOverrides to render the export differently.

Overriding declarations

Each sigmaOverrides entry accepts two forms. An object replaces the top-level sections it declares, and inherits the others from the source renderer:

// Export with the source renderer's primitives and styles, but no stage padding:
downloadAsPNG(renderer, { sigmaOverrides: { settings: { stagePadding: 0 } } });

A function receives the source declaration and takes full control: whatever it returns is used as-is. This is the form to use when adding to what the renderer already declares, since the source cannot be forgotten:

// Export with an extra style rule, forcing all labels to be drawn:
downloadAsPNG(renderer, {
  sigmaOverrides: {
    styles: (styles) => ({
      ...styles,
      nodes: [...(Array.isArray(styles.nodes) ? styles.nodes : [styles.nodes!]), { labelVisibility: "visible" }],
    }),
  },
});

toBlob

This function returns a Promise<Blob> that contains the image data, which can be further processed or stored, useful for integration with file storage services.

toFile

This function returns a Promise<File> that contains the image data as a file, ideal for direct file manipulation or uploads.

downloadAsImage

This function downloads a snapshot of the sigma instance as an image file.

downloadAsPNG / downloadAsJPEG

These functions are simple sugar around downloadAsImage, without having to specify the "format" option.

Please check the website examples for more advanced examples.