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

svg-coordinate-map

v1.1.2

Published

Map coordinate from viewport to viewBox

Downloads

19

Readme

svg-coordinate-map CircleCI Coverage Status

Map coordinate values in viewpoint to viewBox (and vice versa)

Purpose

As aspect ratios of the viewpoint (derived from width and height property) and the viewBox (derived from width and height parameters of viewbox property) can be different, this library helps mapping coordinate values from viewpoint (or viewBox) to those of the other system.

This library tries to solve a problem of correctly rendering changes in an SVG made by a user on any device screens regardless of their aspect ratios. An example of an application utilizing this functionality is image annotation, with known fixed viewBox parameters. Since a set of coordination obtained from an user interaction will have to be relative to viewpoint (as a screen size and aspect ratio of the user's device are unknown), the coordination has to be stored relative to viewBox to ensure proper rendering on devices with different screen sizes and aspect ratios.

Currently support only SVG with viewBox having parameters min-width and min-height of zero (e.g. viewBox="0 0 width height").

Installation

Using package manager:

# NPM
$ npm install --save svg-coordinate-map

# Yarn
$ yarn add svg-coordinate-map

Browser-friendly version is planned, but not available yet.

Usage

const Mapper = require('svg-coordinate-map')

/**
 * Convert properties in <svg> to JSON as shown below
 * The original SVG here is: <svg width="50" height="90" viewBox="0 0 100 300">
 * 
 * Support for automatically parsing SVG element planned
 */
const viewpoint = { width: 50, height: 90 }
const viewBox = { width: 100, height: 300 }

// Create mapper with default mapping direction of 'boxToPoint'
const map = Mapper(viewpoint, viewBox)
// Create mapper with specified mapping direction of {'boxToPoint', 'pointToBox'}
const map = Mapper(viewpoint, viewBox, 'boxToPoint')

map({ x: 17.5, y: 54 }) // returns { x: 25, y: 180 } 

License

This library is under an MIT License.