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

@squarespace/layout-base

v1.0.3

Published

A base module class for building Squarespace layouts

Downloads

16

Readme

Squarespace Template Layout Base Module

A base module class for building Squarespace layouts.

  • Performs basic module configuration and bootstrapping
  • Options passed to layout() are merged with config automatically
  • Provides hooks into the layout render pipeline
  • Provides interface for before/after resize handlers

NOTICE: This code is licensed to you pursuant to Squarespace’s Developer Terms of Use. See license section below.

Usage

Install

npm install --save @squarespace/layout-base

Implementation

import LayoutBase from '@squarespace/layout-base';

class NewLayout extends LayoutBase {
  constructor(rootNode, config) {
    super(rootNode, config);

    // layout construction
  }

  layout(config) {
    // module handles config update before layout cycle
    this.beforeLayout(config);

    // options can always be explicity set without passing to beforeLayout
    // this.config = config;

    // layout work

    this.afterLayout();
  }

  destroy(config) {
    this.beforeDestroy();

    // destroy layout

    this.afterDestroy();
  }
}

Using ES6

If you prefer to handle transpiling and polyfilling on your own, you can import ES6 from Layout Base:

import LayoutBase from '@squarespace/layout-base/src';

Alternately, Layout Base specifies a module property in package.json that points to the uncompiled src/index.js, so you may be able to simply import @squarespace/layout-base if you're using one of the following bundlers:

Reference

API

rootNode

node passed as first argument

document

reference to rootNode.ownerDocument

window

reference to rootNode.ownerDocument.defaultView

config

configuration object

childNodes

array of nodes matching config.childSelector

hasRunInitialLayout

set to true after first layout cycle

Config

Defaults

  resizeHandler: true
  resizeDebounceTime: 250
  resizeMaxWait: 2500

Resize Handlers

LayoutBase includes 2 built-in resize hooks by default:

config.beforeResize()

called immediately on first resize event in a sequence

config.afterResize()

debounced event is called config.resizeDebounceTimems after the final resize event in a sequence; force fires after config.resizeMaxWaitms

You can choose to manually handle resizing in your module by setting resizeHandler: false in your config

Hooks

Layout

config.beforeLayout(config)

called before each layout cycle

config.beforeInitialLayout()

called before the first layout cycle only

config.afterLayout()

called after each layout cycle

config.afterInitialLayout()

called after the first layout cycle only

Lifecycle

config.beforeDestroy()

called before tearing down the layout

config.afterDestroy()

called after tearing down the layout

Altering Hooks

class NewLayout extends LayoutBase {
...
  beforeLayout() {
    // do some module-specific layout stuff

    // optionally, to still fire config beforeLayout callback
    super.beforeLayout();
  }
...
}

Tests

npm run test: run tests npm run cover: generate JSON coverage report npm run report: generate HTML coverage report

License

Portions Copyright © 2016 Squarespace, Inc. This code is licensed to you pursuant to Squarespace’s Developer Terms of Use, available at http://developers.squarespace.com/developer-terms-of-use (the “Developer Terms”). You may only use this code on websites hosted by Squarespace, and in compliance with the Developer Terms. TO THE FULLEST EXTENT PERMITTED BY LAW, SQUARESPACE PROVIDES ITS CODE TO YOU ON AN “AS IS” BASIS WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED.