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

big-grid

v0.0.1

Published

Render a really big grid with an infinite number of columns and rows

Readme

big-grid

big-grid is a table-rendering library that helps you create a grid with an infinite number of columns and rows. It only paints the cells that are in view, helping you keep your DOM light and efficient.

It is:

  • Fast - Renders only what is required
  • Dependency Free - Pure vanllia javascript
  • Customizable - Supports custom rendering
  • Small - less than 10KB

Demo

Checkout a demo here.

Installation

Install this libray, using your favorite package manager:

npm install big-grid

Utilize npm run prod to generate a bundled version, or run npm run dev to regenerate the library.

There are three JS files thats are outputed:

  • node_modules/big-grid/dist/big-grid.umd.js a UMD bundle (suitable to use as a script tag)
  • node_modules/big-grid/dist/big-grid.cjs.js a CommonJS bundle (suitable to use as in Node)
  • node_modules/big-grid/dist/big-grid.esm.js a ES module bundle (suitable to use as an import)

There is one CSS files that is outputed:

  • node_modules/big-grid/dist/big-grid.css(suitable to load as a link tag).

It is necessary to load the css in with your project, but certain styles (text-color, background-color, border-color, etc) can be modified or overwritten to fit your desired look and feel.

Usage

To use the library, either Import the module or load it as a script.

You will need to create a new instance of the module and pass in a few parameters:


var table = new BigGrid({
    mount: '', //DOM element or queryselector string that tells us where to draw the table - required
    data: [[]], //Array of arrays containing the information that will be rendered - required
    rows:[{ // Array containing the row information
        height: // height of the row in px
    }], 
    columns:[{ // Array containing the column information
        width: // width of the column in px
    }], 
    renderer: function(rowId, columnId, value){ // Function that is called to allow custom painting of the cell
        {
            class: '', // custom class applied to this cell value
            style: {}, // custom style applied to this cell value. This may get overwritten by mandatory positioning styles
            title: '', // custom title applied to this cell value
            content: '' //custom HTML to render
        }
    },
    scroll: function(){} // Function that is called after the view is scrolled,
    resized: function(){} // Function that is called after the view is resized
})

Note: Only mount and data are required.

Backlog

  • [ ] New Features
    • [x] Keyboard Tab Navigation
    • [x] Scroll callback
    • [x] Resize callback
    • [ ] Highlight Cell Capability
    • [ ] Copy Data to Keyboard
    • [ ] Cell Custom Events
    • [ ] Header Custom Events
    • [ ] Header Highlight
    • [ ] Row Custom Events
    • [ ] Row Highlight
  • [ ] Tests

License

MIT