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

ez-projector

v0.2.0

Published

A tiny library for projecting selected members of ezFlux state into a mutable object. The object will automatically update with the state.

Downloads

3

Readme

ez-projector

This ezFlux plugin creates a mutable projection of selected state values.
The projection has a one-way binding with the ezFlux state.
It will update whenever ezFlux will update.
However, mutations on the projection will have no influence on the ezFlux state.

Install

NPM:

$ npm install ez-projector --save

Yarn:

$ yarn add ez-projector

Usage

import Vue from 'vue';
import EZFlux from 'ez-flux';
import ezProjector form 'ez-project';

// First, add the plugin to an ezFlux. Either on construction or through ezFlux.plug.

const ezFlux = new EZFlux({
  weather: {
    values: { rain: false },
    actions: { setRain: rain => ({ rain }) },
  },
}, {
  plugins: [ezProjector],
});

// In order to project state, a map of stateScopes to value keys has to be passed.

const weather = ezFlux.plugins.project({ weather: ['rain'] });

// lets assume a [Vue](https://vuejs.org/) Component:

Vue.component('weather', {
  data: () => weather,
  template: '<div>It's {{ weather.rain ? 'raining' : 'nice' }} outside</div>'
});

// Your output will be "It's nice outside"
// now lets make it rain:

ezFlux.actions.weather.setRain(true);

// Your output will now automatically become "It's raining outside"


// Once you are sure that you won't need the projection to watch ezFlux state, disconnect it.

weather.disconnectEZProjection();

Please note that deeply nested state values are not impacted by this behaviour at all.
In contrast to state primitives, they will always be a two way binding through default JavaScript referencing!

Contributing

Contributions of any kind are always welcome!

To run Linter, Flow, Bable and Mocha and have them watch src and test folders respectively:

$ npm start

To run Babel once:

$ npm run build