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 🙏

© 2025 – Pkg Stats / Ryan Hefner

polymer-selective-global-variables

v1.0.2

Published

Polymer hack to share variables in every polymer element instance that requires global variables in your project

Readme

Polymer Global Variables

Share variables across all the polymer elements in your Polymer 1.x application.

The Polymer 1.x data system have great and powerful tools (Data bindings, observers,...) but sometimes it feels very repetitive to passing the same data to almost every element you declare (e.g., localization, authentication flags,...).

This hack tries to solve this issue setting a global object in every Polymer component instance that requires global variables of your project.

Use it instead repetitive declarations of components, binding the same data in every child element or using the same behaviour in every component you make.

Differences between this hack and the one by ivanrod

This hack is based on the one made by ivanrod, the main difference is that the one from ivanrod target all the Polymer elements in your app, while this hack is more selective and target only the one interested in global variables.

Install

With bower do:

$ bower install --save maury91/polymer-global-variables

Import the polymer-global-variables.js or polymer-global-variables.min.js file in your project main file:

index.html

<script src="bower_components/polymer-global-variables/dist/polymer-global-variables.js" charset="utf-8"></script>

Usage

Now you have access to Polymer.globalsManager, use set() method to make changes in the globals object.

Polymer.globalsManager.set('myGlobalVariable', {foo: 'bar'});
Polymer.globalsManager.set('anotherGlobalVariable', 'foo');

This changes will be reflected in every component instance on your project that subscribe to that change:

component-with-specific-target.html

...

<template>
  <div>
    <div>1</div>
    <h1>[[globals.myGlobalVariable.foo]]</h1>
    <p>[[globals.anotherGlobalVariable]]</p>
  </div>
</template>
<script>
Polymer({
    is: "component-with-specific-target",
    globalsProperties: [
      'myGlobalVariable',
      'anotherGlobalVariable'
    ],
    ...
</script>
...

component-with-any-target.html

...

<template>
  <div>
    <div>2</div>
    <h1>[[globals.myGlobalVariable.foo]]</h1>
    <p>[[globals.anotherGlobalVariable]]</p>
  </div>
</template>
<script>
Polymer({
    is: "component-with-any-target",
    globalsProperties: true,
    ...
</script>
...

As seen in the example you need to add the property globalsProperties in your Polymer element to subscribe to them. If you pass an array the element will subscribe only to the properties you have specified, if you pass anything else the element will subscribe to all the global properties.

Polymer.globalsManager API

set(variableToSet:string, value:any)

Sets a global variable in every element in the app.

Example:

Polymer.globalsManager.set('myGlobalVariable', {foo: 'bar'});

License

MIT © maury91, ivanrod.