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

virtual-scroll-core

v0.1.2

Published

height cacheable virtual scroll - core only

Downloads

8

Readme

virtual-scroll-core

height cacheable virtual scroll - core only

Install

Install with npm:

npm install virtual-scroll-core

Usage

WIP

API

CoreOptions

Properties

  • items Array<Any> original list items
  • bufferSize number number of outer items to be sliced
  • assumedHeight number default height for height-unknown items
  • itemToCacheKey Function use this if you like one-to-many correspondence between items and cached heights.
  • heightCache MapLike key-value cache

VirtualScrollCore

constructor

Parameters

  • viewportEl ViewportElement scrolling container element (that is window in basic case)
  • contentEl ContentBoxElement items container element
  • props CoreOptions other properties

updateCache

Parameters

  • item Any value which is present in props.items
  • val number new value for cache

Returns boolean successfully updated or not

update

Returns CoreState next visible items

reset

clearCache

getOffsetByIndex

Parameters

Returns number offset - offsetY for specified item

getHeightByIndex

Parameters

Returns number height - offsetHeight for specified item

getIndexByOffset

Parameters

Returns number index - index of first item which has offset larger than given one

getContentHeight

Returns number contentHeight - height of all items

getOffsetTop

Returns number offsetTop - offset of items container

getVisibleFirstIndex

Returns number visibleFirstIdx - index of visible first sliced item

getVisibleLastIndex

Returns number visibleLastIdx - index of visible last sliced item

getFirstIndex

Returns number firstIdx - index of first sliced item

getLastIndex

Returns number lastIdx - index of last sliced item

getItems

Returns Array<Any> items

getItemsLength

Returns number length of items

getItemsLastIndex

Returns number last index of items

getVisibleHeight

Parameters

  • absTopOffset [number] absolute top offset in items container element

Returns number visibleHeight - clientHeight in container element

getScrollTop

Returns number offsetTop - offset of items container

CoreState

Properties

  • items Array<Any> sliced items (to be rendered)
  • contentHeight number assumed height of all items
  • offsetTop number first item should have this offsetTop
  • firstIdx number first sliced index
  • lastIdx number last sliced index
  • visibleFirstIdx number first visible index
  • visibleLastIdx number last visible index

Running tests

Install devDependencies and Run npm test. or simply:

npm -d it

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Special Thanks

Basic idea is derived from mir3z/react-virtual-list (MIT License).

License

Copyright © 2016-present berlysia. Licensed under the MIT license.