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

easyscroller

v1.0.1

Published

Mobile-friendly accelerated panning and zooming for DOM and Canvas based on Zynga Scroller.

Downloads

91

Readme

📜 EasyScroller

So easy, your cat can do it! 🙀

Mobile-friendly accelerated panning and zooming for DOM and Canvas based on Zynga Scroller.

Usage

npm i easyscroller --save

import { EasyScroller } from 'easyscroller'

const element = document.querySelector('#scroll-content');

new EasyScroller(element, {
  scrollingX: true,
  scrollingY: true,
  zooming: true,
  minZoom: 1,
  maxZoom: 3.0,
  zoomLevel: 1.4
});

...
// Don't forget to clean up later!
scroller.destroy();
<head>
  <style>
    #container {
      background-color: #fff;
      border: 5px solid #000;
      height: 320px;
      margin: 10% auto 0 auto;
      overflow: hidden;
      width: 80%;
      position: relative;
    }
  </style>
</head>

<body>
  <div id="container">
    <div id="scroll-content">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ut eros sodales, pulvinar magna sed, lacinia enim.
      Nullam gravida mauris id condimentum mattis. Vestibulum a volutpat justo. Nullam elementum enim a dui pharetra
      ullamcorper. Phasellus eget massa ac eros fermentum porttitor. Praesent pulvinar eget lorem at euismod. Sed
      pulvinar justo vel sapien aliquam, vel finibus leo luctus. Etiam ac lorem id odio accumsan auctor. Pellentesque
      sem odio, viverra nec ex et, vehicula pulvinar tellus. Ut id blandit quam. Morbi maximus congue sagittis.
    </div>
  </div>
</body>

Options

/** Enable scrolling on x-axis */
scrollingX?: boolean;

/** Enable scrolling on y-axis */
scrollingY?: boolean;

/** Enable animations for deceleration, snap back, zooming and scrolling */
animating?: boolean;

/** duration for animations triggered by scrollTo/zoomTo */
animationDuration?: number;

/** Enable bouncing (content can be slowly moved outside and jumps back after releasing) */
bouncing?: boolean;

/** Enable locking to the main axis if user moves only slightly on one of them at start */
locking?: boolean;

/** Enable pagination mode (switching between full page content panes) */
paging?: boolean;

/** Enable snapping of content to a configured pixel grid */
snapping?: boolean;

/** Enable zooming of content via API, fingers and mouse wheel */
zooming?: boolean;

/** Initial zoom level, must be >= minZoom and <= maxZoom */
zoomLevel?: number;

/** Minimum zoom level */
minZoom?: number;

/** Maximum zoom level */
maxZoom?: number;

/** Multiply or decrease scrolling speed **/
speedMultiplier?: number;

/** Callback that is fired on the later of touch end or deceleration end,
  provided that another scrolling action has not begun. Used to know
  when to fade out a scrollbar. */
scrollingComplete?: () => void;

/** This configures the amount of change applied to deceleration when reaching boundaries  **/
penetrationDeceleration?: number;

/** This configures the amount of change applied to acceleration when reaching boundaries  **/
penetrationAcceleration?: number;