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

moorage

v1.1.1

Published

### React HOC for generating masonry-like grid layout that would work with server side rendering.

Downloads

10

Readme

moorage

React HOC for generating masonry-like grid layout that would work with server side rendering.

Live demo

I was building a website for my wife and she asked me to create for her a grid of images that looks like Pinterest website. This is of course not that simple, especially when you want to serve your website with SSR and you don't want any flickering on loading of the page.

I made some shortcuts to make this idea more doable. First, you need to know what's the ratio (width / height) of each of your grid tiles in advance. If your tiles are just pictures it basically mean that you need to keep in your DB width and height of every image.

Secondly, you should inspect incoming UserAgent on your server to figure out roughly with what kind of device you're dealing with (phone, tablet or desktop) using library like mobile-detect and then serve the layout with a fixed nr of columns for your grid.

Obvoisly making such grid with SSR is hard because you can't be fully sure what will be the exact size of your user's screen so you can't position your tiles to exact xy coordinates. What you can do though is to shape your grid in ratios and percentages of the outer container. That's what I did here.

There is this cool trick in CSS with padding-bottom: x% aka Aspect Ratio Boxes that lets you create elements that will always keep the ratio no matter what width of the element is gonna be. It's like making your <div /> behave like <img />.

Using such ratio divs inside ratio divs I created a math hell component that will render a nice layout for a given tiles.

Please take a look and use it if you want. If you have some ideas for improvement let me know or just create a PR.


To install run:

npm i moorage

Example of how to use this component package here.


Name of this package comes from Polish word murarz (mason/brickmaker).


This repository was built using react-component-lib biolerplate: https://github.com/michal-wrzosek/react-component-lib