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

wpr-zoomable-svg-group

v0.1.2

Published

A zoomable SVG group component for React. With changing level of detail based on zoom level.

Downloads

4

Readme

Installation

npm i --save wpr-zoomable-svg-group

import ZoomableGroup from 'wpr-zoomable-svg-group';

...
render() {
  return (
    <ZoomableGroup width="500" height="250" maxZoom="20">
      <g minScale="4" maxScale="8">
        <circle cx="247" cy="122" r="4" stroke="red" fill="none" strokeWidth="0.9" />
      </g>
    </ZoomableGroup>
  )
}
...

Use

A ZoomableGroup can show different children based on the zoom level. It resolves into a svg with the specified children. Pan and zoom work as expected in the world of D3.js.
Parameters:

  • width: width of the resulting svg
  • height: height of the resulting svg
  • maxZoom: maximum zoom to be applied as a transform on the children of the resulting svg. Defaults to 200.

Each immediate child of a ZoomableGroup should be a SVG group ( g ) or something that resolves to an SVG group. Children can specify a minScale and maxScale property. When rendering children, the ZoomableGroup filters out any whose minScale and maxScale do not contain the current scale. To be precise, it includes children if minScale <= scale < maxScale. minScale defaults to zero. maxScale defaults to infinity.

This allows a ZoomableGroup to show a different level of detail as the user zooms in. For an example with a map, see colleges.scrylr.com. As you zoom in the states give way to counties.

The minScale, maxScale and current scale are passed as props to each surviving child. They are free to ignore them or use them to do useful things, like thin out lines as the scale goes up.

Samples

Take it for a spin at https://woundedpixels.github.io/wpr-components

Credits

Loosely based on https://github.com/markusenglund/react-npm-component-starter