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

pixel-grid

v1.0.2

Published

render a grid of little squares

Downloads

515

Readme

pixel-grid

Latest Version Build Status

render a grid of little squares

Small module for rendering a grid of squares. Handles a wide variety of inputs, and supports custom sizing and spacing. Use it for data visualization, for art, or just for fun! Built with webgl and regl so it's pretty fast.

gif

install

Add to your project with

npm install pixel-grid

example

Run this

var grid = require('pixel-grid')

var data = [
  [0, 1, 1, 0], 
  [1, 0, 0, 1], 
  [0, 1, 0, 0]
]

var pixels = grid(data, {
  root: document.body,
  size: 25
})

To see

png

usage

var pixels = require('pixel-grid')(data, opts)

The data are the values to render in each square, and can be passed in two ways

  • flat array [a, b, c, d]
  • nested array [[a, b], [c, d]]

Each value a, b, ... can be specified in several ways

  • an rgb color [0, 1, 1]
  • a single number 0.5 which will be interpreted as [0.5, 0.5, 0.5]
  • a color string like rgb(0, 255, 255) or #ffa500

All the options in opts are optional, and include

  • rows columns number of rows and columns in the grid
  • root a root element to which to append the created canvas
  • size size of each square in pixels, default 10
  • padding space between each square in pixels, default 2
  • background color of the background as rgb or string, default [0.25, 0.25, 0.25]
  • formatted set to true if data is already in canonical form (flat array of rgb colors)

Grid dimensions are determined as follows

  • If a nested array is passed, its shape is used to get the number of rows and columns
  • If a flat array is passed, its shape is based on opts.rows and opts.columns
  • If those are unspecified, we use the largest square grid that contains all values

properties

pixels.canvas

The created canvas element for appending to the DOM yourself as in

var grid = require('pixel-grid')
var pixels = grid([[0, 1], [1, 0]])
document.body.appendChild(pixels.canvas)

methods

pixels.update(data)

Update the pixel grid with new data

var grid = require('pixel-grid')
var pixels = grid([[0, 1], [1, 0]], {root: document.body})
pixels.update([[1, 0], [0, 1]])

pixels.frame(cb)

Provide a callback for each frame refresh (via raf). Allows you to sync updates with monitor refreshes

var grid = require('pixel-grid')
var pixels = grid([[0, 1], [1, 0]], {root: document.body})
pixels.frame(function () {
  pixels.update([[Math.random(), Math.random()], [Math.random(), Math.random()]])
})