diff --git a/README.md b/README.md index 19f93b14..cdd60a57 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# polymer-cdn v2.0.1 +# polymer-cdn v2.0.2 **A mirror of Polymer's components so that they can be used directly from CDN** ![Polymer CDN is powered by MaxCDN](http://i.imgur.com/9obTXpk.png) @@ -10,7 +10,7 @@ ## How to use In general, given an element named `my-cool-element`, the CDN url for it will be: ``` -https://cdn.rawgit.com/download/polymer-cdn/2.0.1/lib/my-cool-element/my-cool-element.html +https://cdn.rawgit.com/download/polymer-cdn/2.0.2/lib/my-cool-element/my-cool-element.html ``` To be sure, browse this repo and copy-paste the url to the raw version into [RawGit](https://rawgit.com). @@ -49,7 +49,9 @@ which explains it in more detail. ## Contents -All the libraries available in polymer-cdn can be found side-by-side in the [lib](https://github.com/Download/polymer-cdn/tree/2.0.1/lib) subfolder. +All the libraries available in polymer-cdn can be found side-by-side in the [lib](https://github.com/Download/polymer-cdn/tree/2.0.2/lib) subfolder. Contained therein are all elements [listed as compatible with Polymer 2](https://www.polymer-project.org/2.0/docs/about_20#elements). + +> It looks like `gold-zip-input` wasn't actually ported to Polymer 2 yet at the time of writing this, despite being listed as compatible, as witnessed by incompatibility warnings concerning this element in the Bower output at the bottom of this page. Your mileage with this element may vary. Some of the libraries depend on other libraries. We call those other libraries the dependencies of the library. These dependencies will also be pulled into your page when you include such a library. @@ -62,1601 +64,393 @@ These dependencies are themselves also listed at the top-level, so you can work tree for a library by carefully examining this diagram. ```sh -polymer-cdn#2.0.1 -├─┬ app-elements#1.0.0 -│ ├─┬ app-layout#1.0.1 (latest is 2.0.0) -│ │ ├─┬ iron-flex-layout#1.3.7 (latest is 2.0.0) -│ │ │ └── polymer#1.9.2 (latest is 2.0.1) -│ │ ├─┬ iron-media-query#1.0.8 (latest is 2.0.0) -│ │ │ └─┬ polymer#1.9.2 (latest is 2.0.1) -│ │ │ └── webcomponentsjs#1.0.1 incompatible with ^0.7.24 (0.7.24 available, latest is 1.0.1) -│ │ ├─┬ iron-resizable-behavior#1.0.6 (latest is 2.0.1) -│ │ │ └── polymer#1.9.2 -│ │ ├── iron-scroll-target-behavior#1.1.1 (latest is 2.0.0) -│ │ └── polymer#1.9.2 (latest is 2.0.1) -│ ├─┬ app-localize-behavior#1.0.2 (latest is 2.0.0) -│ │ ├── intl-messageformat#1.3.0 -│ │ ├─┬ iron-ajax#1.4.4 (latest is 2.0.2) -│ │ │ ├── polymer#1.9.2 (latest is 2.0.1) -│ │ │ └─┬ promise-polyfill#1.0.1 (latest is 2.0.0) -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 (latest is 2.0.1) -│ ├─┬ app-pouchdb#1.0.0 (latest is 2.1.1) -│ │ ├─┬ app-storage#2.0.2 incompatible with ~1.0.0 (1.0.1 available, latest is 2.0.2) -│ │ │ └── polymer#1.9.2 (2.0.1 available) -│ │ ├── polymer#1.9.2 (latest is 2.0.1) -│ │ ├── pouchdb#6.2.0 -│ │ ├── pouchdb-find#0.10.5 -│ │ └─┬ promise-polyfill#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ app-route#1.0.1 (latest is 2.0.0) -│ │ ├── iron-location#0.8.11 (latest is 2.0.1) -│ │ └── polymer#1.9.2 (latest is 2.0.1) -│ └── app-storage#2.0.2 incompatible with ^1.0.0 (1.0.1 available, latest is 2.0.2) -├── firebase-sdk extraneous -├─┬ gold-elements#1.0.1 -│ ├─┬ gold-cc-cvc-input#1.0.10 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-form-element-behavior#1.0.7 (latest is 2.0.0) -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-icon#1.0.13 (latest is 2.0.0) -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 (latest is 2.0.0) -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-input#1.1.24 (latest is 2.0.1) -│ │ ├─┬ paper-styles#1.3.1 (latest is 2.0.0) -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ gold-cc-expiration-input#1.1.3 -│ │ ├── iron-a11y-keys-behavior#1.1.9 (latest is 2.0.0) -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-validatable-behavior#1.1.2 (latest is 2.0.0) -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-validator-behavior#1.0.2 (latest is 2.0.0) -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├── paper-input#1.1.24 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ gold-cc-input#1.0.7 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-validator-behavior#1.0.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├── paper-input#1.1.24 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ gold-email-input#1.0.9 -│ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-input#1.1.24 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ gold-phone-input#1.1.0 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-input#1.0.11 (latest is 2.0.0) -│ │ │ ├─┬ iron-a11y-announcer#1.0.6 (latest is 2.0.0) -│ │ │ │ └── polymer#1.9.2 (latest is 2.0.1) -│ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├── paper-input#1.1.24 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 (latest is 2.0.1) -│ └─┬ gold-zip-input#1.0.6 -│ ├─┬ iron-form-element-behavior#1.0.7 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-icon#1.0.13 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-meta#1.1.3 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-validator-behavior#1.0.2 -│ │ ├─┬ iron-meta#1.1.3 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├── paper-input#1.1.24 -│ ├─┬ paper-styles#1.3.1 -│ │ ├── font-roboto#1.0.2 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ └── polymer#1.9.2 -├─┬ google-web-components#1.1.1 -│ ├─┬ firebase-element#1.0.16 -│ │ ├── firebase#4.1.2 incompatible with ^2.3.1 (2.4.2 available, latest is 4.1.2) -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-analytics#1.2.3 -│ │ ├── ga-api-utils#0.2.0 (latest is 0.7.0) -│ │ ├─┬ google-chart#1.1.2 -│ │ │ ├─┬ google-apis#1.1.7 -│ │ │ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ iron-ajax#1.4.4 -│ │ │ │ ├── polymer#1.9.2 -│ │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ google-signin#1.3.7 +polymer-cdn#2.0.2 +├─┬ app-layout#2.0.1 +│ ├─┬ iron-flex-layout#2.0.0 +│ │ └─┬ polymer#2.0.2 +│ │ ├── shadycss#1.0.3 +│ │ └── webcomponentsjs#1.0.5 +│ ├─┬ iron-media-query#2.0.0 +│ │ └── polymer#2.0.2 +│ ├─┬ iron-resizable-behavior#2.0.1 +│ │ └── polymer#2.0.2 +│ ├─┬ iron-scroll-target-behavior#2.0.0 +│ │ └── polymer#2.0.2 +│ └── polymer#2.0.2 +├─┬ app-localize-behavior#2.0.0 +│ ├── intl-messageformat#1.3.0 (latest is 2.0.0) +│ ├─┬ iron-ajax#2.0.4 +│ │ └── polymer#2.0.2 +│ └── polymer#2.0.2 +├─┬ app-pouchdb#2.1.1 +│ ├─┬ app-storage#2.0.2 +│ │ └── polymer#2.0.2 +│ ├── polymer#2.0.2 +│ ├── pouchdb#6.3.4 +│ └── pouchdb-find#0.10.5 +├─┬ app-route#2.0.1 +│ ├─┬ iron-location#2.0.1 +│ │ └── polymer#2.0.2 +│ └── polymer#2.0.2 +├── app-storage#2.0.2 +├─┬ gold-zip-input#1.0.6 +│ ├─┬ iron-form-element-behavior#2.0.0 incompatible with ^1.0.0 (1.0.7 available, latest is 2.0.0) +│ │ └── polymer#2.0.2 +│ ├─┬ iron-icon#2.0.1 incompatible with ^1.0.0 (1.0.13 available, latest is 2.0.1) +│ │ ├── iron-flex-layout#2.0.0 +│ │ ├── iron-meta#2.0.2 +│ │ └── polymer#2.0.2 +│ ├─┬ iron-validator-behavior#2.0.0 incompatible with ^1.0.0 (1.0.2 available, latest is 2.0.0) +│ │ ├─┬ iron-meta#2.0.2 +│ │ │ └── polymer#2.0.2 +│ │ └── polymer#2.0.2 +│ ├─┬ paper-input#2.0.1 incompatible with ^1.0.0 (1.1.24 available, latest is 2.0.1) +│ │ ├── iron-a11y-keys-behavior#2.0.1 +│ │ ├─┬ iron-autogrow-textarea#2.1.0 +│ │ │ ├─┬ iron-behaviors#2.0.0 +│ │ │ │ ├─┬ iron-a11y-keys-behavior#2.0.1 +│ │ │ │ │ └── polymer#2.0.2 +│ │ │ │ └── polymer#2.0.2 +│ │ │ ├── iron-flex-layout#2.0.0 +│ │ │ ├─┬ iron-validatable-behavior#2.0.0 +│ │ │ │ ├── iron-meta#2.0.2 +│ │ │ │ └── polymer#2.0.2 +│ │ │ └── polymer#2.0.2 +│ │ ├── iron-behaviors#2.0.0 +│ │ ├── iron-form-element-behavior#2.0.0 +│ │ ├─┬ iron-input#2.0.0 +│ │ │ ├─┬ iron-a11y-announcer#2.0.0 +│ │ │ │ └── polymer#2.0.2 +│ │ │ ├── iron-validatable-behavior#2.0.0 +│ │ │ └── polymer#2.0.2 +│ │ ├─┬ paper-styles#2.0.0 │ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ google-apis#1.1.7 -│ │ │ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├── iron-flex-layout#1.3.7 -│ │ │ ├─┬ iron-icon#1.0.13 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-iconset-svg#1.1.1 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ paper-material#1.0.7 -│ │ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ promise-polyfill#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-apis#1.1.7 -│ │ ├─┬ iron-jsonp-library#1.0.5 (latest is 2.0.0) -│ │ │ └── polymer#1.9.2 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-calendar#1.0.3 -│ │ ├── google-apis#1.1.7 -│ │ ├── google-signin#1.3.7 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-castable-video#1.0.3 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-chart#1.1.2 -│ │ ├─┬ google-apis#1.1.7 -│ │ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-ajax#1.4.4 -│ │ │ ├── polymer#1.9.2 -│ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ promise-polyfill#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-feeds#1.0.2 -│ │ ├── google-apis#1.1.7 -│ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ └── polymer#1.9.2 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-hangout-button#1.0.2 -│ │ ├─┬ google-apis#1.1.7 -│ │ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-map#1.2.0 -│ │ ├── google-apis#1.1.7 -│ │ ├── iron-resizable-behavior#1.0.6 (latest is 2.0.1) -│ │ ├── iron-selector#1.5.3 (latest is 2.0.0) -│ │ └── polymer#1.9.2 (latest is 2.0.1) -│ ├─┬ google-sheets#1.0.6 -│ │ ├── google-apis#1.1.7 -│ │ ├── google-signin#1.3.7 -│ │ ├─┬ iron-ajax#1.4.4 -│ │ │ ├── polymer#1.9.2 -│ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 (latest is 2.0.1) -│ ├─┬ google-signin#1.3.7 -│ │ ├── font-roboto#1.0.2 -│ │ ├─┬ google-apis#1.1.7 -│ │ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├── iron-flex-layout#1.3.7 (latest is 2.0.0) -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-iconset-svg#1.1.1 (latest is 2.0.0) -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ paper-material#1.0.7 (latest is 2.0.0) -│ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-ripple#1.0.10 (latest is 2.0.0) -│ │ │ ├── iron-a11y-keys-behavior#1.1.9 (latest is 2.0.0) -│ │ │ └── polymer#1.9.2 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-streetview-pano#1.0.4 -│ │ ├── google-apis#1.1.7 -│ │ ├── iron-resizable-behavior#1.0.6 (latest is 2.0.1) -│ │ └── polymer#1.9.2 (latest is 2.0.1) -│ ├─┬ google-url-shortener#1.0.2 -│ │ ├─┬ google-apis#1.1.7 -│ │ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-youtube#1.3.0 -│ │ ├─┬ google-apis#1.1.7 -│ │ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-localstorage#1.0.6 (latest is 2.0.0) -│ │ │ └── polymer#1.9.2 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ google-youtube-upload#1.1.2 (latest is 2.0.0) -│ │ ├── cors-upload-sample#37c97848a2 -│ │ ├─┬ google-signin#1.3.7 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ google-apis#1.1.7 -│ │ │ │ ├─┬ iron-jsonp-library#1.0.5 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├── iron-flex-layout#1.3.7 -│ │ │ ├─┬ iron-icon#1.0.13 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-iconset-svg#1.1.1 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ paper-material#1.0.7 -│ │ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ └─┬ polymerfire#0.9.7 (latest is 2.1.0) -│ ├── app-storage#2.0.2 incompatible with ^0.9.0 (0.9.8 available, latest is 2.0.2) -│ ├── firebase#4.1.2 incompatible with ^3.0 (3.9.0 available, latest is 4.1.2) -│ └── polymer#1.9.2 (latest is 2.0.1) -├─┬ iron-elements#1.0.10 -│ ├─┬ iron-a11y-announcer#1.0.6 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-a11y-keys#1.0.9 (latest is 2.0.0) -│ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-a11y-keys-behavior#1.1.9 (latest is 2.0.0) -│ │ └── polymer#1.9.2 -│ ├─┬ iron-ajax#1.4.4 -│ │ ├── polymer#1.9.2 -│ │ └─┬ promise-polyfill#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-autogrow-textarea#1.0.15 (latest is 2.0.0) -│ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-behaviors#1.0.18 (latest is 2.0.0) -│ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-checked-element-behavior#1.0.6 (latest is 2.0.0) -│ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-collapse#1.3.0 (latest is 2.0.0) -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-component-page#1.1.9 (latest is 3.0.0-rc.4) -│ │ ├── hydrolysis#1.24.1 (latest is 2.1.0) -│ │ ├─┬ iron-ajax#1.4.4 -│ │ │ ├── polymer#1.9.2 -│ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-doc-viewer#1.1.0 (latest is 3.0.0-rc.4) -│ │ │ ├─┬ marked-element#1.4.2 (latest is 2.1.1) -│ │ │ │ ├── marked#0.3.6 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-button#1.0.15 (latest is 2.0.0) -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ paper-behaviors#1.0.13 (latest is 2.0.0) -│ │ │ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ └── polymer#1.9.2 (latest is 2.0.1) -│ │ │ │ ├─┬ paper-material#1.0.7 -│ │ │ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├── polymer#1.9.2 -│ │ │ └─┬ prism-element#1.2.0 (latest is 2.0.0) -│ │ │ ├── polymer#1.9.2 -│ │ │ └── prism#1.6.0 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-icons#1.2.1 -│ │ │ ├─┬ iron-icon#1.0.13 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-iconset-svg#1.1.1 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-selector#1.5.3 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-header-panel#1.1.7 (latest is 2.0.0) -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ paper-toolbar#1.1.7 (latest is 2.0.0) -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├── paper-styles#1.3.1 (latest is 2.0.0) -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-demo-helpers#1.2.6 (latest is 2.0.0) -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-icons#1.2.1 -│ │ │ ├─┬ iron-icon#1.0.13 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-iconset-svg#1.1.1 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-location#0.8.11 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ marked-element#1.4.2 +│ │ │ ├── iron-flex-layout#2.0.0 +│ │ │ └── polymer#2.0.2 +│ │ └── polymer#2.0.2 +│ ├── paper-styles#2.0.0 incompatible with ^1.0.0 (1.3.1 available, latest is 2.0.0) +│ └── polymer#2.0.2 incompatible with ^1.1.0 (1.9.3 available, latest is 2.0.2) +├── iron-a11y-announcer#2.0.0 +├─┬ iron-a11y-keys#2.0.0 +│ ├── iron-a11y-keys-behavior#2.0.1 +│ └── polymer#2.0.2 +├── iron-a11y-keys-behavior#2.0.1 +├── iron-ajax#2.0.4 +├── iron-autogrow-textarea#2.1.0 +├── iron-behaviors#2.0.0 +├─┬ iron-checked-element-behavior#2.0.0 +│ ├── iron-form-element-behavior#2.0.0 +│ ├── iron-validatable-behavior#2.0.0 +│ └── polymer#2.0.2 +├─┬ iron-collapse#2.0.0 +│ ├── iron-resizable-behavior#2.0.1 +│ └── polymer#2.0.2 +├─┬ iron-component-page#3.0.1 +│ ├── app-layout#2.0.1 +│ ├── iron-ajax#2.0.4 +│ ├─┬ iron-doc-viewer#3.0.3 +│ │ ├── iron-location#2.0.1 +│ │ ├─┬ marked-element#2.2.0 │ │ │ ├── marked#0.3.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-icon-button#1.1.6 (latest is 2.0.0) -│ │ │ ├─┬ iron-icon#1.0.13 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├── polymer#1.9.2 -│ │ └── prism-element#1.2.0 (latest is 2.0.0) -│ ├── iron-doc-viewer#1.1.0 (latest is 3.0.0-rc.4) -│ ├─┬ iron-dropdown#1.5.6 (latest is 2.0.0) -│ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├── iron-overlay-behavior#1.10.4 (latest is 2.0.0) -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ neon-animation#1.2.5 (latest is 2.0.1) -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-selector#1.5.3 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├── polymer#1.9.2 -│ │ │ └── web-animations-js#2.2.5 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-fit-behavior#1.2.6 (latest is 2.0.0) -│ │ └── polymer#1.9.2 -│ ├─┬ iron-flex-layout#1.3.7 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-form#1.1.5 -│ │ ├─┬ iron-ajax#1.4.4 -│ │ │ ├── polymer#1.9.2 -│ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-form-element-behavior#1.0.7 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-icon#1.0.13 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-meta#1.1.3 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-icons#1.2.1 (latest is 2.0.1) -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-iconset-svg#1.1.1 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-iconset#1.0.6 (latest is 2.0.0) -│ │ ├─┬ iron-meta#1.1.3 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-iconset-svg#1.1.1 -│ │ ├─┬ iron-meta#1.1.3 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├── iron-image#1.2.6 (latest is 2.1.1) -│ ├─┬ iron-input#1.0.11 -│ │ ├─┬ iron-a11y-announcer#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-jsonp-library#1.0.5 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-label#1.0.2 (latest is 2.0.0) -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-list#1.4.6 (latest is 2.0.1) -│ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-scroll-target-behavior#1.1.1 (latest is 2.0.0) -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-localstorage#1.0.6 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-location#0.8.11 (latest is 2.0.1) -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-media-query#1.0.8 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-menu-behavior#1.3.1 (latest is 2.0.0) -│ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-selector#1.5.3 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 (latest is 2.0.1) -│ ├─┬ iron-meta#1.1.3 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-overlay-behavior#1.10.4 (latest is 2.0.0) -│ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-fit-behavior#1.2.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-pages#1.0.9 (latest is 2.0.0) -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-selector#1.5.3 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-range-behavior#1.0.7 (latest is 2.0.0) -│ │ └── polymer#1.9.2 -│ ├─┬ iron-resizable-behavior#1.0.6 -│ │ └── polymer#1.9.2 -│ ├── iron-scroll-target-behavior#1.1.1 -│ ├─┬ iron-scroll-threshold#1.0.3 (latest is 2.0.0) -│ │ ├── iron-scroll-target-behavior#1.1.1 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-selector#1.5.3 (latest is 2.0.0) -│ │ └── polymer#1.9.2 -│ ├─┬ iron-signals#1.0.3 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-swipeable-container#1.0.3 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-test-helpers#1.4.1 (latest is 2.0.0) -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-validatable-behavior#1.1.2 -│ │ ├─┬ iron-meta#1.1.3 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ └─┬ iron-validator-behavior#1.0.2 -│ ├─┬ iron-meta#1.1.3 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ └─┬ polymer#1.9.2 -│ └── webcomponentsjs#1.0.1 -├─┬ iron-page-url#0.7.3 extraneous (latest is 2.0.1) -│ └─┬ polymer#1.9.2 -│ └── webcomponentsjs#1.0.1 -├─┬ molecules#1.0.0 -│ └─┬ marked-element#1.4.2 -│ ├── marked#0.3.6 -│ └── polymer#1.9.2 -├─┬ neon-elements#1.0.0 -│ └─┬ neon-animation#1.2.5 -│ ├─┬ iron-meta#1.1.3 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ iron-resizable-behavior#1.0.6 -│ │ └── polymer#1.9.2 -│ ├─┬ iron-selector#1.5.3 -│ │ └── polymer#1.9.2 -│ ├── polymer#1.9.2 -│ └── web-animations-js#2.2.5 -├─┬ paper-elements#1.0.7 -│ ├─┬ paper-badge#1.1.4 (latest is 2.0.0) -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-behaviors#1.0.13 -│ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-ripple#1.0.10 -│ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-button#1.0.15 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-material#1.0.7 -│ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-card#1.1.6 (latest is 2.0.0) -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-image#1.2.6 (latest is 2.1.1) -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-material#1.0.7 -│ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-styles#1.3.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-checkbox#1.4.2 (latest is 2.0.0) -│ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-ripple#1.0.10 -│ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-styles#1.3.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-dialog#1.1.0 (latest is 2.0.0) -│ │ ├── iron-overlay-behavior#1.10.4 (latest is 2.0.0) -│ │ ├─┬ neon-animation#1.2.5 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-selector#1.5.3 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├── polymer#1.9.2 -│ │ │ └── web-animations-js#2.2.5 -│ │ ├─┬ paper-dialog-behavior#1.2.8 -│ │ │ ├─┬ iron-overlay-behavior#1.10.4 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-fit-behavior#1.2.6 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├── paper-styles#1.3.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-dialog-behavior#1.2.8 (latest is 2.0.0) -│ │ ├─┬ iron-overlay-behavior#1.10.4 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-fit-behavior#1.2.6 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-styles#1.3.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-dialog-scrollable#1.1.5 (latest is 2.1.0) -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-dialog-behavior#1.2.8 -│ │ │ ├─┬ iron-overlay-behavior#1.10.4 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-fit-behavior#1.2.6 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├── paper-styles#1.3.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ paper-drawer-panel#1.0.11 (latest is 2.0.0) -│ │ ├─┬ iron-media-query#1.0.8 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-selector#1.5.3 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-dropdown-menu#1.5.1 (latest is 2.0.0) -│ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-iconset-svg#1.1.1 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-input#1.1.24 (latest is 2.0.1) -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-autogrow-textarea#1.0.15 -│ │ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ iron-input#1.0.11 -│ │ │ │ ├─┬ iron-a11y-announcer#1.0.6 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├── paper-styles#1.3.1 (latest is 2.0.0) -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-menu-button#1.5.2 (latest is 2.0.0) -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-dropdown#1.5.6 -│ │ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├── iron-overlay-behavior#1.10.4 -│ │ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ neon-animation#1.2.5 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ ├─┬ iron-selector#1.5.3 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ ├── polymer#1.9.2 -│ │ │ │ │ └── web-animations-js#2.2.5 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├── iron-fit-behavior#1.2.6 (latest is 2.0.0) -│ │ │ ├─┬ neon-animation#1.2.5 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-selector#1.5.3 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├── polymer#1.9.2 -│ │ │ │ └── web-animations-js#2.2.5 -│ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-ripple#1.0.10 -│ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-fab#1.2.2 (latest is 2.0.0) -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-material#1.0.7 (latest is 2.0.0) -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ paper-header-panel#1.1.7 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-icon-button#1.1.6 -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├── paper-input#1.1.24 -│ ├─┬ paper-item#1.2.2 (latest is 2.0.0) -│ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-listbox#1.1.3 (latest is 2.0.0) -│ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-collapse#1.3.0 -│ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-menu-behavior#1.3.1 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-selector#1.5.3 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-material#1.0.7 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-menu#1.3.0 -│ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-collapse#1.3.0 -│ │ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-menu-behavior#1.3.1 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-selector#1.5.3 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├── paper-menu-button#1.5.2 (latest is 2.0.0) -│ ├─┬ paper-progress#1.0.12 (latest is 2.0.1) -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-range-behavior#1.0.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-radio-button#1.4.0 (latest is 2.0.0) -│ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├── iron-flex-layout#1.3.7 (latest is 2.0.0) -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-styles#1.3.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-radio-group#1.2.2 (latest is 2.0.0) -│ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ ├── iron-menu-behavior#1.3.1 (latest is 2.0.0) -│ │ ├─┬ paper-radio-button#1.4.0 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├── iron-flex-layout#1.3.7 -│ │ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├── paper-styles#1.3.1 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-ripple#1.0.10 -│ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-scroll-header-panel#1.0.16 (latest is 2.0.0) -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-slider#1.0.15 (latest is 2.0.1) -│ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-input#1.1.24 -│ │ ├─┬ paper-progress#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-range-behavior#1.0.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-spinner#1.2.1 (latest is 2.0.0) -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-styles#1.3.1 -│ │ ├── font-roboto#1.0.2 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ paper-tabs#1.8.0 (latest is 2.0.0) -│ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-icon#1.0.13 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-iconset-svg#1.1.1 -│ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├── iron-menu-behavior#1.3.1 (latest is 2.0.0) -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-icon-button#1.1.6 -│ │ │ ├─┬ iron-icon#1.0.13 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-styles#1.3.1 -│ │ │ │ ├── font-roboto#1.0.2 -│ │ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-styles#1.3.1 -│ │ │ ├── font-roboto#1.0.2 -│ │ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-toast#1.3.1 (latest is 2.0.0) -│ │ ├─┬ iron-a11y-announcer#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├── iron-fit-behavior#1.2.6 (latest is 2.0.0) -│ │ ├── iron-overlay-behavior#1.10.4 (latest is 2.0.0) -│ │ └── polymer#1.9.2 -│ ├─┬ paper-toggle-button#1.3.0 (latest is 2.0.0) -│ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ paper-behaviors#1.0.13 -│ │ │ ├─┬ iron-behaviors#1.0.18 -│ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.9.2 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ iron-checked-element-behavior#1.0.6 -│ │ │ │ ├─┬ iron-form-element-behavior#1.0.7 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ ├─┬ iron-validatable-behavior#1.1.2 -│ │ │ │ │ ├─┬ iron-meta#1.1.3 -│ │ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ │ └─┬ polymer#1.9.2 -│ │ │ │ │ └── webcomponentsjs#1.0.1 -│ │ │ │ └── polymer#1.9.2 -│ │ │ ├─┬ paper-ripple#1.0.10 -│ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.9.2 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-styles#1.3.1 -│ │ └── polymer#1.9.2 -│ ├─┬ paper-toolbar#1.1.7 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ ├── paper-styles#1.3.1 -│ │ └── polymer#1.9.2 -│ └─┬ paper-tooltip#1.1.4 (latest is 2.0.0) -│ ├─┬ neon-animation#1.2.5 -│ │ ├─┬ iron-meta#1.1.3 -│ │ │ └─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ ├─┬ iron-resizable-behavior#1.0.6 -│ │ │ └── polymer#1.9.2 -│ │ ├─┬ iron-selector#1.5.3 -│ │ │ └── polymer#1.9.2 -│ │ ├── polymer#1.9.2 -│ │ └── web-animations-js#2.2.5 -│ ├─┬ paper-styles#1.3.1 -│ │ ├── font-roboto#1.0.2 -│ │ ├─┬ iron-flex-layout#1.3.7 -│ │ │ └── polymer#1.9.2 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ └── polymer#1.9.2 -├─┬ platinum-elements#2.0.0 -│ ├─┬ platinum-bluetooth#2.1.2 -│ │ ├─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ promise-polyfill#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ ├─┬ platinum-https-redirect#1.0.2 -│ │ └── polymer#1.9.2 -│ ├─┬ platinum-push-messaging#1.0.5 -│ │ ├─┬ polymer#1.9.2 -│ │ │ └── webcomponentsjs#1.0.1 -│ │ └─┬ promise-polyfill#1.0.1 -│ │ └─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ └─┬ platinum-sw#1.3.0 -│ ├─┬ polymer#1.9.2 -│ │ └── webcomponentsjs#1.0.1 -│ └── sw-toolbox#3.6.1 -├─┬ polymer#1.9.2 (2.0.1 available) -│ └── webcomponentsjs#1.0.1 -├── polymerfire#0.9.7 (2.1.0 available) -└── shadycss#1.0.1 extraneous +│ │ │ └── polymer#2.0.2 +│ │ ├── paper-styles#2.0.0 +│ │ ├── polymer#2.0.2 +│ │ └─┬ prism-element#2.0.1 +│ │ ├── polymer#2.0.2 +│ │ └── prism#1.6.0 +│ ├─┬ iron-icons#2.0.1 +│ │ ├── iron-icon#2.0.1 +│ │ ├─┬ iron-iconset-svg#2.0.1 +│ │ │ ├── iron-meta#2.0.2 +│ │ │ └── polymer#2.0.2 +│ │ └── polymer#2.0.2 +│ ├─┬ paper-icon-button#2.0.0 +│ │ ├── iron-icon#2.0.1 +│ │ ├─┬ paper-behaviors#2.0.0 +│ │ │ ├── iron-behaviors#2.0.0 +│ │ │ ├── iron-checked-element-behavior#2.0.0 +│ │ │ ├─┬ paper-ripple#2.0.1 +│ │ │ │ ├── iron-a11y-keys-behavior#2.0.1 +│ │ │ │ └── polymer#2.0.2 +│ │ │ └── polymer#2.0.2 +│ │ ├── paper-styles#2.0.0 +│ │ └── polymer#2.0.2 +│ ├── paper-styles#2.0.0 +│ ├─┬ paper-toast#2.0.0 +│ │ ├── iron-a11y-announcer#2.0.0 +│ │ ├── iron-fit-behavior#2.0.1 +│ │ ├─┬ iron-overlay-behavior#2.0.0 +│ │ │ ├── iron-a11y-keys-behavior#2.0.1 +│ │ │ ├─┬ iron-fit-behavior#2.0.1 +│ │ │ │ └── polymer#2.0.2 +│ │ │ ├── iron-resizable-behavior#2.0.1 +│ │ │ └── polymer#2.0.2 +│ │ └── polymer#2.0.2 +│ └── polymer#2.0.2 +├─┬ iron-demo-helpers#2.0.0 +│ ├── font-roboto#1.0.2 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-location#2.0.1 +│ ├── marked-element#2.2.0 +│ ├── polymer#2.0.2 +│ └── prism-element#2.0.1 +├─┬ iron-doc-viewer#3.0.3 +│ ├── iron-location#2.0.1 +│ ├─┬ marked-element#2.2.0 +│ │ ├── marked#0.3.6 +│ │ └── polymer#2.0.2 +│ ├── paper-styles#2.0.0 +│ ├── polymer#2.0.2 +│ └─┬ prism-element#2.0.1 +│ ├── polymer#2.0.2 +│ └── prism#1.6.0 +├─┬ iron-dropdown#2.0.0 +│ ├── iron-behaviors#2.0.0 +│ ├── iron-overlay-behavior#2.0.0 +│ ├─┬ neon-animation#2.0.1 +│ │ ├── iron-meta#2.0.2 +│ │ ├── iron-resizable-behavior#2.0.1 +│ │ ├─┬ iron-selector#2.0.0 +│ │ │ └── polymer#2.0.2 +│ │ └── polymer#2.0.2 +│ └── polymer#2.0.2 +├── iron-fit-behavior#2.0.1 +├── iron-flex-layout#2.0.0 +├── iron-form-element-behavior#2.0.0 +├── iron-icon#2.0.1 +├── iron-icons#2.0.1 +├─┬ iron-iconset#2.0.0 +│ ├── iron-meta#2.0.2 +│ └── polymer#2.0.2 +├── iron-iconset-svg#2.0.1 +├─┬ iron-image#2.1.2 +│ └── polymer#2.0.2 +├── iron-input#2.0.0 +├─┬ iron-jsonp-library#2.0.0 +│ └── polymer#2.0.2 +├─┬ iron-label#2.0.0 +│ └── polymer#2.0.2 +├─┬ iron-list#2.0.8 +│ ├── iron-a11y-keys-behavior#2.0.1 +│ ├── iron-resizable-behavior#2.0.1 +│ ├── iron-scroll-target-behavior#2.0.0 +│ └── polymer#2.0.2 +├─┬ iron-localstorage#2.0.0 +│ └── polymer#2.0.2 +├── iron-location#2.0.1 +├── iron-media-query#2.0.0 +├─┬ iron-menu-behavior#2.0.1 +│ ├── iron-a11y-keys-behavior#2.0.1 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-selector#2.0.0 +│ └── polymer#2.0.2 +├── iron-meta#2.0.2 +├── iron-overlay-behavior#2.0.0 +├─┬ iron-pages#2.0.0 +│ ├── iron-resizable-behavior#2.0.1 +│ ├── iron-selector#2.0.0 +│ └── polymer#2.0.2 +├─┬ iron-range-behavior#2.0.0 +│ └── polymer#2.0.2 +├── iron-resizable-behavior#2.0.1 +├── iron-scroll-target-behavior#2.0.0 +├─┬ iron-scroll-threshold#2.0.0 +│ ├── iron-scroll-target-behavior#2.0.0 +│ └── polymer#2.0.2 +├── iron-selector#2.0.0 +├─┬ iron-test-helpers#2.0.0 +│ └── polymer#2.0.2 +├── iron-validatable-behavior#2.0.0 +├── iron-validator-behavior#2.0.0 +├── marked-element#2.2.0 +├── neon-animation#2.0.1 +├─┬ note-app-elements#2.1.2 +│ ├── app-storage#2.0.2 +│ ├── font-roboto#1.0.2 +│ ├── iron-autogrow-textarea#2.1.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-icon#2.0.1 +│ ├── iron-icons#2.0.1 +│ ├── iron-input#2.0.0 +│ ├─┬ paper-button#2.0.0 +│ │ ├── iron-flex-layout#2.0.0 +│ │ ├── paper-behaviors#2.0.0 +│ │ ├── paper-styles#2.0.0 +│ │ └── polymer#2.0.2 +│ ├─┬ paper-fab#2.0.0 +│ │ ├── iron-flex-layout#2.0.0 +│ │ ├── iron-icon#2.0.1 +│ │ ├── paper-behaviors#2.0.0 +│ │ ├── paper-styles#2.0.0 +│ │ └── polymer#2.0.2 +│ ├── paper-icon-button#2.0.0 +│ ├── paper-styles#2.0.0 +│ ├── polymer#2.0.2 +│ └── web-animations-js#2.3.1 +├─┬ paper-badge#2.0.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-icon#2.0.1 +│ ├── iron-resizable-behavior#2.0.1 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├── paper-behaviors#2.0.0 +├── paper-button#2.0.0 +├─┬ paper-card#2.0.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-image#2.1.2 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-checkbox#2.0.1 +│ ├── iron-a11y-keys-behavior#2.0.1 +│ ├── iron-checked-element-behavior#2.0.0 +│ ├── paper-behaviors#2.0.0 +│ ├── paper-ripple#2.0.1 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-dialog#2.0.0 +│ ├── iron-overlay-behavior#2.0.0 +│ ├── neon-animation#2.0.1 +│ ├─┬ paper-dialog-behavior#2.0.1 +│ │ ├── iron-overlay-behavior#2.0.0 +│ │ ├── paper-styles#2.0.0 +│ │ └── polymer#2.0.2 +│ └── polymer#2.0.2 +├── paper-dialog-behavior#2.0.1 +├─┬ paper-dialog-scrollable#2.1.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── paper-dialog-behavior#2.0.1 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-drawer-panel#2.0.0 +│ ├── iron-media-query#2.0.0 +│ ├── iron-resizable-behavior#2.0.1 +│ ├── iron-selector#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-dropdown-menu#2.0.0 +│ ├── iron-a11y-keys-behavior#2.0.1 +│ ├── iron-form-element-behavior#2.0.0 +│ ├── iron-icon#2.0.1 +│ ├── iron-iconset-svg#2.0.1 +│ ├── iron-validatable-behavior#2.0.0 +│ ├── paper-behaviors#2.0.0 +│ ├── paper-input#2.0.1 +│ ├─┬ paper-menu-button#2.0.0 +│ │ ├── iron-a11y-keys-behavior#2.0.1 +│ │ ├── iron-behaviors#2.0.0 +│ │ ├── iron-dropdown#2.0.0 +│ │ ├── iron-fit-behavior#2.0.1 +│ │ ├── neon-animation#2.0.1 +│ │ ├── paper-styles#2.0.0 +│ │ └── polymer#2.0.2 +│ ├── paper-ripple#2.0.1 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├── paper-fab#2.0.0 +├─┬ paper-header-panel#2.0.0 +│ ├── iron-flex-layout#2.0.0 +│ └── polymer#2.0.2 +├── paper-icon-button#2.0.0 +├── paper-input#2.0.1 +├─┬ paper-item#2.0.0 +│ ├── iron-behaviors#2.0.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-listbox#2.0.0 +│ ├── iron-behaviors#2.0.0 +│ ├── iron-menu-behavior#2.0.1 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-material#2.0.0 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├── paper-menu-button#2.0.0 +├─┬ paper-progress#2.0.1 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-range-behavior#2.0.0 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-radio-button#2.0.0 +│ ├── iron-checked-element-behavior#2.0.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── paper-behaviors#2.0.0 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-radio-group#2.0.0 +│ ├── iron-a11y-keys-behavior#2.0.1 +│ ├── iron-menu-behavior#2.0.1 +│ ├── paper-radio-button#2.0.0 +│ └── polymer#2.0.2 +├── paper-ripple#2.0.1 +├─┬ paper-scroll-header-panel#2.0.0 +│ ├── iron-resizable-behavior#2.0.1 +│ └── polymer#2.0.2 +├─┬ paper-slider#2.0.2 +│ ├── iron-a11y-keys-behavior#2.0.1 +│ ├── iron-behaviors#2.0.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-form-element-behavior#2.0.0 +│ ├── paper-behaviors#2.0.0 +│ ├── paper-input#2.0.1 +│ ├── paper-progress#2.0.1 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-spinner#2.0.0 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├── paper-styles#2.0.0 +├─┬ paper-swatch-picker#2.0.1 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-iconset-svg#2.0.1 +│ ├── paper-icon-button#2.0.0 +│ ├── paper-item#2.0.0 +│ ├── paper-listbox#2.0.0 +│ ├── paper-menu-button#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-tabs#2.0.0 +│ ├── iron-behaviors#2.0.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── iron-icon#2.0.1 +│ ├── iron-iconset-svg#2.0.1 +│ ├── iron-menu-behavior#2.0.1 +│ ├── iron-resizable-behavior#2.0.1 +│ ├── paper-behaviors#2.0.0 +│ ├── paper-icon-button#2.0.0 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├── paper-toast#2.0.0 +├─┬ paper-toggle-button#2.0.0 +│ ├── iron-checked-element-behavior#2.0.0 +│ ├── paper-behaviors#2.0.0 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-toolbar#2.0.0 +│ ├── iron-flex-layout#2.0.0 +│ ├── paper-styles#2.0.0 +│ └── polymer#2.0.2 +├─┬ paper-tooltip#2.0.0 +│ ├── neon-animation#2.0.1 +│ ├── paper-styles#2.0.0 +│ ├── polymer#2.0.2 +│ └── web-animations-js#2.3.1 +├─┬ platinum-sw#2.0.0 +│ ├── polymer#2.0.2 +│ └── sw-toolbox#3.6.1 +├── polymer#2.0.2 +├─┬ polymerfire#2.1.0 +│ ├── app-storage#2.0.2 +│ ├── firebase#4.2.0 +│ └── polymer#2.0.2 +├── prism-element#2.0.1 +├─┬ web-component-tester#6.0.0 +│ ├── accessibility-developer-tools#2.12.0 +│ ├── async#1.5.2 (latest is 2.5.0) +│ ├── chai#3.5.0 (latest is 4.1.0) +│ ├── lodash#3.10.1 (3.11.0-npm-packages available, latest is 4.17.4) +│ ├── mocha#3.5.0 +│ ├── sinon-chai#2.12.0 +│ ├── sinonjs#1.17.1 +│ ├── stacky#1.3.2 +│ └── test-fixture#3.0.0-rc.1 +└── webcomponentsjs#1.0.5 ``` diff --git a/bower.json b/bower.json index 840db3e9..d0db9213 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "polymer-cdn", - "version": "2.0.1", + "version": "2.0.2", "main": "polymer.js", "homepage": "https://github.com/Download/polymer-cdn", "authors": [ @@ -21,20 +21,108 @@ "tests" ], "dependencies": { - "polymer": "Polymer/polymer#latest", - "paper-elements": "polymerelements/paper-elements#latest", - "iron-elements": "polymerelements/iron-elements#latest", - "neon-elements": "polymerelements/neon-elements#latest", - "gold-elements": "polymerelements/gold-elements#latest", - "platinum-elements": "polymerelements/platinum-elements#latest", - "app-elements": "polymerelements/app-elements#latest", - "google-web-components": "GoogleWebComponents/google-web-components#latest", - "molecules": "polymerelements/molecules#latest", - "polymerfire": "firebase/polymerfire#latest" + "app-layout": "PolymerElements/app-layout#^2.0.0", + "app-localize-behavior": "PolymerElements/app-localize-behavior#^2.0.0", + "app-pouchdb": "PolymerElements/app-pouchdb#^2.0.0", + "app-route": "PolymerElements/app-route#^2.0.0", + "app-storage": "PolymerElements/app-storage#^2.0.0", + "gold-zip-input": "PolymerElements/gold-zip-input#^1.0.0", + "iron-a11y-announcer": "PolymerElements/iron-a11y-announcer#^2.0.0", + "iron-a11y-keys": "PolymerElements/iron-a11y-keys#^2.0.0", + "iron-a11y-keys-behavior": "PolymerElements/iron-a11y-keys-behavior#^2.0.0", + "iron-ajax": "PolymerElements/iron-ajax#^2.0.0", + "iron-autogrow-textarea": "PolymerElements/iron-autogrow-textarea#^2.0.0", + "iron-behaviors": "PolymerElements/iron-behaviors#^2.0.0", + "iron-checked-element-behavior": "PolymerElements/iron-checked-element-behavior#^2.0.0", + "iron-collapse": "PolymerElements/iron-collapse#^2.0.0", + "iron-component-page": "PolymerElements/iron-component-page#^3.0.0", + "iron-demo-helpers": "PolymerElements/iron-demo-helpers#^2.0.0", + "iron-doc-viewer": "PolymerElements/iron-doc-viewer#^3.0.0", + "iron-dropdown": "PolymerElements/iron-dropdown#^2.0.0", + "iron-fit-behavior": "PolymerElements/iron-fit-behavior#^2.0.0", + "iron-flex-layout": "PolymerElements/iron-flex-layout#^2.0.0", + "iron-form-element-behavior": "PolymerElements/iron-form-element-behavior#^2.0.0", + "iron-icon": "PolymerElements/iron-icon#^2.0.0", + "iron-icons": "PolymerElements/iron-icons#^2.0.0", + "iron-iconset": "PolymerElements/iron-iconset#^2.0.0", + "iron-iconset-svg": "PolymerElements/iron-iconset-svg#^2.0.0", + "iron-image": "PolymerElements/iron-image#^2.0.0", + "iron-input": "PolymerElements/iron-input#^2.0.0", + "iron-jsonp-library": "PolymerElements/iron-jsonp-library#^2.0.0", + "iron-label": "PolymerElements/iron-label#^2.0.0", + "iron-list": "PolymerElements/iron-list#^2.0.0", + "iron-localstorage": "PolymerElements/iron-localstorage#^2.0.0", + "iron-location": "PolymerElements/iron-location#^2.0.0", + "iron-media-query": "PolymerElements/iron-media-query#^2.0.0", + "iron-menu-behavior": "PolymerElements/iron-menu-behavior#^2.0.0", + "iron-meta": "PolymerElements/iron-meta#^2.0.0", + "iron-overlay-behavior": "PolymerElements/iron-overlay-behavior#^2.0.0", + "iron-pages": "PolymerElements/iron-pages#^2.0.0", + "iron-range-behavior": "PolymerElements/iron-range-behavior#^2.0.0", + "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#^2.0.0", + "iron-scroll-target-behavior": "PolymerElements/iron-scroll-target-behavior#^2.0.0", + "iron-scroll-threshold": "PolymerElements/iron-scroll-threshold#^2.0.0", + "iron-selector": "PolymerElements/iron-selector#^2.0.0", + "iron-test-helpers": "PolymerElements/iron-test-helpers#^2.0.0", + "iron-validatable-behavior": "PolymerElements/iron-validatable-behavior#^2.0.0", + "iron-validator-behavior": "PolymerElements/iron-validator-behavior#^2.0.0", + "marked-element": "PolymerElements/marked-element#^2.0.0", + "neon-animation": "PolymerElements/neon-animation#^2.0.0", + "note-app-elements": "PolymerLabs/note-app-elements#^2.0.0", + "paper-badge": "PolymerElements/paper-badge#^2.0.0", + "paper-behaviors": "PolymerElements/paper-behaviors#^2.0.0", + "paper-button": "PolymerElements/paper-button#^2.0.0", + "paper-card": "PolymerElements/paper-card#^2.0.0", + "paper-checkbox": "PolymerElements/paper-checkbox#^2.0.0", + "paper-dialog": "PolymerElements/paper-dialog#^2.0.0", + "paper-dialog-behavior": "PolymerElements/paper-dialog-behavior#^2.0.0", + "paper-dialog-scrollable": "PolymerElements/paper-dialog-scrollable#^2.0.0", + "paper-drawer-panel": "PolymerElements/paper-drawer-panel#^2.0.0", + "paper-dropdown-menu": "PolymerElements/paper-dropdown-menu#^2.0.0", + "paper-fab": "PolymerElements/paper-fab#^2.0.0", + "paper-header-panel": "PolymerElements/paper-header-panel#^2.0.0", + "paper-icon-button": "PolymerElements/paper-icon-button#^2.0.0", + "paper-input": "PolymerElements/paper-input#^2.0.0", + "paper-item": "PolymerElements/paper-item#^2.0.0", + "paper-listbox": "PolymerElements/paper-listbox#^2.0.0", + "paper-material": "PolymerElements/paper-material#^2.0.0", + "paper-menu-button": "PolymerElements/paper-menu-button#^2.0.0", + "paper-progress": "PolymerElements/paper-progress#^2.0.0", + "paper-radio-button": "PolymerElements/paper-radio-button#^2.0.0", + "paper-radio-group": "PolymerElements/paper-radio-group#^2.0.0", + "paper-ripple": "PolymerElements/paper-ripple#^2.0.0", + "paper-scroll-header-panel": "PolymerElements/paper-scroll-header-panel#^2.0.0", + "paper-slider": "PolymerElements/paper-slider#^2.0.0", + "paper-spinner": "PolymerElements/paper-spinner#^2.0.0", + "paper-styles": "PolymerElements/paper-styles#^2.0.0", + "paper-swatch-picker": "PolymerElements/paper-swatch-picker#^2.0.0", + "paper-tabs": "PolymerElements/paper-tabs#^2.0.0", + "paper-toast": "PolymerElements/paper-toast#^2.0.0", + "paper-toggle-button": "PolymerElements/paper-toggle-button#^2.0.0", + "paper-toolbar": "PolymerElements/paper-toolbar#^2.0.0", + "paper-tooltip": "PolymerElements/paper-tooltip#^2.0.0", + "platinum-sw": "PolymerElements/platinum-sw#^2.0.0", + "polymer": "Polymer/polymer#^2.0.0", + "polymerfire": "firebase/polymerfire#^2.0.0", + "prism-element": "PolymerElements/prism-element#^2.0.0", + "webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0", + "web-component-tester": "^6.0.0" }, "resolutions": { - "app-storage": "1 - 2", - "firebase": "^4.1.1", - "webcomponentsjs": "^v1.0.0" + "webcomponentsjs": "^v1.0.2", + "iron-a11y-announcer": "^2.0.0", + "iron-a11y-keys-behavior": "^2.0.0", + "iron-autogrow-textarea": "^2.0.0", + "iron-behaviors": "^2.0.0", + "iron-form-element-behavior": "^2.0.0", + "iron-flex-layout": "^2.0.0", + "iron-icon": "^2.0.0", + "iron-input": "^2.0.0", + "iron-meta": "^2.0.0", + "iron-validatable-behavior": "^2.0.0", + "iron-validator-behavior": "^2.0.0", + "paper-input": "^2.0.0", + "paper-styles": "^2.0.0", + "polymer": "^2.0.0" } } diff --git a/lib/accessibility-developer-tools/.bower.json b/lib/accessibility-developer-tools/.bower.json new file mode 100644 index 00000000..9b7493c3 --- /dev/null +++ b/lib/accessibility-developer-tools/.bower.json @@ -0,0 +1,40 @@ +{ + "name": "accessibility-developer-tools", + "version": "2.12.0", + "homepage": "https://github.com/GoogleChrome/accessibility-developer-tools", + "authors": [ + "Google" + ], + "description": "This is a library of accessibility-related testing and utility code.", + "main": "dist/js/axs_testing.js", + "moduleType": [ + "amd", + "globals" + ], + "keywords": [ + "accessibility", + "testing", + "WCAG", + "module" + ], + "license": "Apache-2.0", + "ignore": [ + "**/.*", + "lib", + "scripts", + "src", + "test", + "tools", + "Gruntfile.js", + "package.json" + ], + "_release": "2.12.0", + "_resolution": { + "type": "version", + "tag": "v2.12.0", + "commit": "3616c094e090174f70b53ca4cea25529522abffb" + }, + "_source": "https://github.com/GoogleChrome/accessibility-developer-tools.git", + "_target": "^2.10.0", + "_originalSource": "accessibility-developer-tools" +} \ No newline at end of file diff --git a/lib/accessibility-developer-tools/Changelog.md b/lib/accessibility-developer-tools/Changelog.md new file mode 100644 index 00000000..e587f7ea --- /dev/null +++ b/lib/accessibility-developer-tools/Changelog.md @@ -0,0 +1,154 @@ +## 2.11.0 - 2016-09-14 + +### Enhancements + +* Performance enhancements (#263) + +## 2.10.1-rc.0 - 2016-01-13 + +### Bug fixes: + +* Escape special characters to be used in a query selector string (PR #267) +* Fix exception thrown by RoleTooltipRequiresDescribedBy.js (#269) + +## 2.10.0 - 2015-11-13 + +## 2.10.0-rc.1 - 2015-10-19 + +### Bug fixes: + +* `linkWithUnclearPurpose` should only look at links, not `` without `href`. (#245) + +## 2.10.0-rc.0 - 2015-10-09 + +### New rules +* A tabpanel should be related to a tab via aria-controls or aria-labelledby (`src/audits/UncontrolledTabpanel.js`) +* A data table must identify row and column headers (`src/audits/TableHasAppropriateHeaders.js`) +* A tooltip element should have an aria-describedby referring to it (`src/audits/RoleTooltipRequiresDescribedBy.js`). + +### Enhancements + +* Pull DOM-related functionality out into `DOMUtils.js` + +### Bug fixes: + +* Fix `findTextAlternatives` not always correctly ignoring hidden elements (#217). +* `findTextAlternatives` now honors `alt` attribute of input type image +* Revert #150 which was causing the extension not to work. +* AX_HTML_02 (duplicate IDs) now only audits elements that are referenced by an IDREF (#141); +* Fix #171 by being smarter about finding the composed parent node. +* Tweak in canScrollTo to handle the (common) case where the container is `document.body` (#243). + +## 2.9.0 - 2015-09-04 + +## 2.9.0-rc.0 - 2015-08-21 + +### New rules + +* A label element may not have labelable descendants other than its labeled control (`src/audits/MultipleLabelableElementsPerLabel.js`) + +### Enhancements + +* Implement support for specifying audit configuration options through an object when initializing audits (#165). +* Implement support for AMD loaders. + +### Bug fixes: + +* Fix `badAriaAttributeValue` not correctly handling decimal values (#182). +* Work around null pointer exception caused by closure compiler issue (#183). +* Add a special case to handle color `"transparent"` to fix (#180). +* Fix `matchSelector` not working properly in browser environments without vendor prefixes (#189). +* Fix false positives on elements with no role for Unsupported ARIA Attribute rule (#178 and #199). +* Fix ARIA `tablist` and ARIA `tab` scope (#204) +* Fix link with clear purpose with text alternative (#156); +* Handle edge cases in number parser, e.g. "+1", ".1", "01" +* HTML button containing img with alt attribute now passes controlsWithoutLabel (#202) +* Disabled elements should be ignored by low contrast audit (#205) +* Fix input of type "text" did not find correct implied role (#225) +* Hidden links are no longer relevant for meaningful link text rule. + +## 2.8.0 - 2015-07-24 + +## 2.8.0-rc.0 - 2015-07-10 + +### Enhancements: +* Pull color code into separate file. +* Improve color suggestion algorithm. +* Descend into iframes when collecting matching elements. + +## 2.7.1 - 2015-06-30 + +## 2.7.1-rc.1 - 2015-06-23 + +### Bug fixes: + +* Check for null `textAlternatives` in `FocusableElementNotVisibleAndNotAriaHidden`'s `relevantElementMatcher` method. + +## 2.7.1-rc.0 - 2015-06-15 + +### Enhancements: +* Rework findTextAlternatives not to return non-exposed text alternatives. +* Add Bower config (#157) + +### Bug fixes: +* Check for any text alternatives when assessing unlabeled images (#154). + +## 2.7.0 - 2015-05-15 + +### New rules +* This element does not support ARIA roles, states and properties (`src/audits/AriaOnReservedElement.js`) +* aria-owns should not be used if ownership is implicit in the DOM (`src/audits/AriaOwnsDescendant.js`) +* Elements with ARIA roles must be in the correct scope (`src/audits/AriaRoleNotScoped.js`) +* An element's ID must be unique in the DOM (`src/audits/DuplicateId.js`) +* The web page should have the content's human language indicated in the markup (`src/audits/HumanLangMissing.js`) +* An element's ID must not be present in more that one aria-owns attribute at any time (`src/audits/MultipleAriaOwners.js`) +* ARIA attributes which refer to other elements by ID should refer to elements which exist in the DOM (`src/audits/NonExistentAriaRelatedElement.js` - previously `src/audits/NonExistentAriaLabeledBy.js`) +* Elements with ARIA roles must ensure required owned elements are present (`src/audits/RequiredOwnedAriaRoleMissing.js`) +* Avoid positive integer values for tabIndex (`src/audits/TabIndexGreaterThanZero.js`) +* This element has an unsupported ARIA attribute (`src/audits/UnsupportedAriaAttribute.js`) + +### Enhancements: +* Add configurable blacklist phrases and stop words to LinkWithUnclearPurpose (#99) +* Detect and warn if we reuse the same code for more than one rule. (#133) +* Force focus before testing visibility on focusable elements. (#65) +* Use getDistributedNodes to get nodes distributed into shadowRoots (#128) +* Add section to Audit Rules page for HumanLangMissing and link to it from rule (#119) +* Reference "applied role" in axs.utils.getRoles enhancement (#130) +* Add warning that AX_FOCUS_02 is not available from axs.Audit.run() (#85) + +### Bug fixes: +* Incorrect use of nth-of-type against className in utils.getQuerySelectorText (#87) +* AX_TEXT_01 Accessibility Audit test should probably ignore role=presentation elements (#97) +* Fix path to audit rules in phantomjs runner (#108) +* Label audit should fail if form fields lack a label, even with placeholder text (#81) +* False positives for controls without labels with role=presentation (#23) +* Fix "valid" flag on return value of axs.utils.getRoles (#131) + +Note: this version number is somewhat arbitrary - just bringing it vaguely in line with [the extension](https://github.com/GoogleChrome/accessibility-developer-tools-extension) since that's where the library originated - but will use semver for version bumps going forward from here. + +## 0.0.5 - 2014-02-04 + +### Enhancements: +* overlapping elements detection code made more sophisticated +* axs.properties.getFocusProperties() returns more information about visibility +* new axs.properties.hasDirectTextDescendant() method with more sophisticated detection of text content + +### Bug fixes: +* FocusableElementNotVisibleAndNotAriaHidden audit passes on elements which are brought onscreen on focus +* UnfocusableElementsWithOnclick checks for element.disabled +* Fix infinite loop when getting descendant text content of a label containing an input +* Detect elements which are out of scroll area of any parent element, not just the document scroll area +* findTextAlternatives doesn't throw TypeError if used on a HTMLSelectElement + +## 0.0.4 - 2013-10-03 + +### Enhancements: + +* axs.AuditRule.run() has a new signature: it now takes an options object. Please see method documentation for details. +* Audit Rule severity can be overridden (per Audit Rule) in AuditConfig. + +### Bug fixes: + +* axs.utils.isLowContrast() now rounds to the nearest 0.1 before checking (so `#777` is now a passing value) +* MainRoleOnInappropriateElement was always failing due to accessible name calculation taking the main role into account and not descending into content (now just gets descendant content directly) +* UnfocusableElementsWithOnClick had a dangling if-statement causing very noisy false positives diff --git a/lib/web-animations-js/COPYING b/lib/accessibility-developer-tools/LICENSE similarity index 100% rename from lib/web-animations-js/COPYING rename to lib/accessibility-developer-tools/LICENSE diff --git a/lib/accessibility-developer-tools/README.md b/lib/accessibility-developer-tools/README.md new file mode 100644 index 00000000..3bc1a106 --- /dev/null +++ b/lib/accessibility-developer-tools/README.md @@ -0,0 +1,222 @@ +[![Build Status](https://travis-ci.org/GoogleChrome/accessibility-developer-tools.svg?branch=master)](https://travis-ci.org/GoogleChrome/accessibility-developer-tools) +[![npm version](https://img.shields.io/npm/v/accessibility-developer-tools.svg)](https://www.npmjs.com/package/accessibility-developer-tools) +[![npm downloads](https://img.shields.io/npm/dm/accessibility-developer-tools.svg)](https://www.npmjs.com/package/accessibility-developer-tools) + +# Accessibility Developer Tools + +This is a library of accessibility-related testing and utility code. + +Its main component is the accessibility audit: a collection of audit rules checking for common accessibility problems, and an API for running these rules in an HTML page. + +There is also a collection of accessibility-related utility code, including but not limited to: +* contrast ratio calculation and color suggestions +* retrieving and validating ARIA attributes and states +* accessible name calculation using the algorithm at [http://www.w3.org/TR/wai-aria/roles#textalternativecomputation](http://www.w3.org/TR/wai-aria/roles#textalternativecomputation) + +# Getting the code + +To include just the javascript rules, require the following file: + + https://raw.github.com/GoogleChrome/accessibility-developer-tools/stable/dist/js/axs_testing.js + + `git 1.6.5` or later: + + % git clone --recursive https://github.com/GoogleChrome/accessibility-developer-tools.git + + Before `git 1.6.5`: + + % git clone https://github.com/GoogleChrome/accessibility-developer-tools.git + % cd accessibility-developer-tools + % git submodule init; git submodule update + +# Building + +You will need `node` and `grunt-cli` to build. + +1. (Once only) Install [Node.js](http://nodejs.org/) and `npm` - useful instructions here: [https://gist.github.com/isaacs/579814](https://gist.github.com/isaacs/579814) + + Make sure you have Node.js v 0.8 or higher. + +2. (Once only) Use `npm` to install `grunt-cli` + + % npm install -g grunt-cli # May need to be run as root + +3. (Every time you make a fresh checkout) Install dependencies (including `grunt`) for this project (run from project root) + + % npm install + +4. (Rebuild if you make changes) Build using `grunt` (run from project root) + + % grunt + + +## Troubleshooting + +This project uses [Closure Compiler](https://github.com/google/closure-compiler) to build our releases. You may need to install a recent version of [JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html) in order for builds to successfully complete. + +# Using the Audit API + +## Including the library + +The simplest option is to include the generated `axs_testing.js` library on your page. After you build, you will have two versions of `axs_testings.js`: +* Distribution Build: project-root/dist/js/axs_testing.js +* Local Build (use if you make changes): project-root/tmp/build/axs_testing.js + +Work is underway to include the library in WebDriver and other automated testing frameworks. + +## The `axs.Audit.run()` method + +Once you have included `axs_testing.js`, you can call `axs.Audit.run()`. This returns an object in the following form: + + { + /** @type {axs.constants.AuditResult} */ + result, // one of PASS, FAIL or NA + + /** @type {Array.} */ + elements, // The elements which the rule fails on, if result == axs.constants.AuditResult.FAIL + + /** @type {axs.AuditRule} */ + rule // The rule which this result is for. + } + +### Command Line Runner + +The Accessibility Developer Tools project includes a command line runner for the audit. To use the runner, [install phantomjs](http://phantomjs.org/download.html) then run the following command from the project root directory. + + $ phantomjs tools/runner/audit.js + +The runner will load the specified file or URL in a headless browser, inject axs_testing.js, run the audit and output the report text. + +### Run audit from Selenium WebDriver (Scala): + val driver = org.openqa.selenium.firefox.FirefoxDriver //use driver of your choice + val jse = driver.asInstanceOf[JavascriptExecutor] + jse.executeScript(scala.io.Source.fromURL("https://raw.githubusercontent.com/GoogleChrome/" + + "accessibility-developer-tools/stable/dist/js/axs_testing.js").mkString) + val report = jse.executeScript("var results = axs.Audit.run();return axs.Audit.createReport(results);") + println(report) + +### Run audit from Selenium WebDriver (Scala)(with caching): + val cache = collection.mutable.Map[String, String]() + val driver = org.openqa.selenium.firefox.FirefoxDriver //use driver of your choice + val jse = driver.asInstanceOf[JavascriptExecutor] + def getUrlSource(arg: String): String = cache get arg match { + case Some(result) => result + case None => + val result: String = scala.io.Source.fromURL(arg).mkString + cache(arg) = result + result + } + jse.executeScript(getUrlSource("https://raw.githubusercontent.com/GoogleChrome/" + + "accessibility-developer-tools/stable/dist/js/axs_testing.js")) + val report = js.executeScript("var results = axs.Audit.run();return axs.Audit.createReport(results);") + println(report) + +If println() outputs nothing, check if you need to set DesiredCapabilities for your WebDriver (such as loggingPrefs): +https://code.google.com/p/selenium/wiki/DesiredCapabilities + +## Using the results + +### Interpreting the result + +The result may be one of three constants: +* `axs.constants.AuditResult.PASS` - This implies that there were elements on the page that may potentially have failed this audit rule, but they passed. Congratulations! +* `axs.constants.AuditResult.NA` - This implies that there were no elements on the page that may potentially have failed this audit rule. For example, an audit rule that checks video elements for subtitles would return this result if there were no video elements on the page. +* `axs.constants.AuditResult.FAIL` - This implies that there were elements on the page that did not pass this audit rule. This is the only result you will probably be interested in. + +### Creating a useful error message + +The static, global `axs.Audit.createReport(results, opt_url)` may be used to create an error message using the return value of axs.Audit.run(). This will look like the following: + + *** Begin accessibility audit results *** + An accessibility audit found 4 errors and 4 warnings on this page. + For more information, please see https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules + + Error: badAriaAttributeValue (AX_ARIA_04) failed on the following elements (1 - 3 of 3): + DIV:nth-of-type(3) > INPUT + DIV:nth-of-type(5) > INPUT + #aria-invalid + + Error: badAriaRole (AX_ARIA_01) failed on the following element: + DIV:nth-of-type(11) > SPAN + + Error: controlsWithoutLabel (AX_TEXT_01) failed on the following elements (1 - 3 of 3): + DIV > INPUT + DIV:nth-of-type(12) > DIV:nth-of-type(3) > INPUT + LABEL > INPUT + + Error: requiredAriaAttributeMissing (AX_ARIA_03) failed on the following element: + DIV:nth-of-type(13) > DIV:nth-of-type(11) > DIV + + Warning: focusableElementNotVisibleAndNotAriaHidden (AX_FOCUS_01) failed on the following element: + #notariahidden + + Warning: imagesWithoutAltText (AX_TEXT_02) failed on the following elements (1 - 2 of 2): + #deceptive-img + DIV:nth-of-type(13) > IMG + + Warning: lowContrastElements (AX_COLOR_01) failed on the following elements (1 - 2 of 2): + DIV:nth-of-type(13) > DIV + DIV:nth-of-type(13) > DIV:nth-of-type(3) + + Warning: nonExistentAriaLabelledbyElement (AX_ARIA_02) failed on the following elements (1 - 2 of 2): + DIV:nth-of-type(3) > INPUT + DIV:nth-of-type(5) > INPUT + *** End accessibility audit results *** + +Each rule will have at most five elements listed as failures, in the form of a unique query selector for each element. + +### Configuring the Audit + +If you wish to fine-tune the audit, you can create an `axs.AuditConfiguration` object, with the following options: + +#### Ignore parts of the page for a particular audit rule + +For example, say you have a separate high-contrast version of your page, and there is a CSS rule which causes certain elements (with class `pretty`) on the page to be low-contrast for stylistic reasons. Running the audit unmodified produces results something like + + Warning: lowContrastElements (AX_COLOR_01) failed on the following elements (1 - 5 of 15): + ... + +You can modify the audit to ignore the elements which are known and intended to have low contrast like this: + + var configuration = new axs.AuditConfiguration(); + configuration.ignoreSelectors('lowContrastElements', '.pretty'); + axs.Audit.run(configuration); + +The `AuditConfiguration.ignoreSelectors()` method takes a rule name, which you can find in the audit report, and a query selector string representing the parts of the page to be ignored for that audit rule. Multiple calls to `ignoreSelectors()` can be made for each audit rule, if multiple selectors need to be ignored. + +#### Restrict the scope of the entire audit to a subsection of the page + +You may have a part of the page which varies while other parts of the page stay constant, like a content area vs. a toolbar. In this case, running the audit on the entire page may give you spurious results in the part of the page which doesn't vary, which may drown out regressions in the main part of the page. + +You can set a `scope` on the `AuditConfiguration` object like this: + + var configuration = new axs.AuditConfiguration(); + configuration.scope = document.querySelector('main'); // or however you wish to choose your scope element + axs.Audit.run(configuration); + +You may also specify a configuration payload while instantiating the `axs.AuditConfiguration`, +which allows you to provide multiple configuration options at once. + + var configuration = new axs.AuditConfiguration({ + auditRulesToRun: ['badAriaRole'], + scope: document.querySelector('main'), + maxResults: 5 + }); + + axs.Audit.run(configuration); + +## License + +Copyright 2013 Google Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/lib/accessibility-developer-tools/bower.json b/lib/accessibility-developer-tools/bower.json new file mode 100644 index 00000000..ab386021 --- /dev/null +++ b/lib/accessibility-developer-tools/bower.json @@ -0,0 +1,31 @@ +{ + "name": "accessibility-developer-tools", + "version": "2.11.0", + "homepage": "https://github.com/GoogleChrome/accessibility-developer-tools", + "authors": [ + "Google" + ], + "description": "This is a library of accessibility-related testing and utility code.", + "main": "dist/js/axs_testing.js", + "moduleType": [ + "amd", + "globals" + ], + "keywords": [ + "accessibility", + "testing", + "WCAG", + "module" + ], + "license": "Apache-2.0", + "ignore": [ + "**/.*", + "lib", + "scripts", + "src", + "test", + "tools", + "Gruntfile.js", + "package.json" + ] +} diff --git a/lib/accessibility-developer-tools/dist/js/axs_testing.js b/lib/accessibility-developer-tools/dist/js/axs_testing.js new file mode 100644 index 00000000..1f83c95a --- /dev/null +++ b/lib/accessibility-developer-tools/dist/js/axs_testing.js @@ -0,0 +1,2402 @@ +/* + * Copyright 2017 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Generated from http://github.com/GoogleChrome/accessibility-developer-tools/tree/9acd1c6e3e72a39a0ec14506d68203a4e8cfafb4 + * + * See project README for build steps. + */ + +// AUTO-GENERATED CONTENT BELOW: DO NOT EDIT! See above for details. + +var fn = (function() { + var COMPILED = !0, goog = goog || {}; +goog.global = this; +goog.isDef = function(a) { + return void 0 !== a; +}; +goog.exportPath_ = function(a, b, c) { + a = a.split("."); + c = c || goog.global; + a[0] in c || !c.execScript || c.execScript("var " + a[0]); + for (var d;a.length && (d = a.shift());) { + !a.length && goog.isDef(b) ? c[d] = b : c = c[d] ? c[d] : c[d] = {}; + } +}; +goog.define = function(a, b) { + var c = b; + COMPILED || (goog.global.CLOSURE_UNCOMPILED_DEFINES && Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_UNCOMPILED_DEFINES, a) ? c = goog.global.CLOSURE_UNCOMPILED_DEFINES[a] : goog.global.CLOSURE_DEFINES && Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES, a) && (c = goog.global.CLOSURE_DEFINES[a])); + goog.exportPath_(a, c); +}; +goog.DEBUG = !0; +goog.LOCALE = "en"; +goog.TRUSTED_SITE = !0; +goog.STRICT_MODE_COMPATIBLE = !1; +goog.DISALLOW_TEST_ONLY_CODE = COMPILED && !goog.DEBUG; +goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1; +goog.provide = function(a) { + if (goog.isInModuleLoader_()) { + throw Error("goog.provide can not be used within a goog.module."); + } + if (!COMPILED && goog.isProvided_(a)) { + throw Error('Namespace "' + a + '" already declared.'); + } + goog.constructNamespace_(a); +}; +goog.constructNamespace_ = function(a, b) { + if (!COMPILED) { + delete goog.implicitNamespaces_[a]; + for (var c = a;(c = c.substring(0, c.lastIndexOf("."))) && !goog.getObjectByName(c);) { + goog.implicitNamespaces_[c] = !0; + } + } + goog.exportPath_(a, b); +}; +goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/; +goog.module = function(a) { + if (!goog.isString(a) || !a || -1 == a.search(goog.VALID_MODULE_RE_)) { + throw Error("Invalid module identifier"); + } + if (!goog.isInModuleLoader_()) { + throw Error("Module " + a + " has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide."); + } + if (goog.moduleLoaderState_.moduleName) { + throw Error("goog.module may only be called once per module."); + } + goog.moduleLoaderState_.moduleName = a; + if (!COMPILED) { + if (goog.isProvided_(a)) { + throw Error('Namespace "' + a + '" already declared.'); + } + delete goog.implicitNamespaces_[a]; + } +}; +goog.module.get = function(a) { + return goog.module.getInternal_(a); +}; +goog.module.getInternal_ = function(a) { + if (!COMPILED) { + if (a in goog.loadedModules_) { + return goog.loadedModules_[a]; + } + if (!goog.implicitNamespaces_[a]) { + return a = goog.getObjectByName(a), null != a ? a : null; + } + } + return null; +}; +goog.moduleLoaderState_ = null; +goog.isInModuleLoader_ = function() { + return null != goog.moduleLoaderState_; +}; +goog.module.declareLegacyNamespace = function() { + if (!COMPILED && !goog.isInModuleLoader_()) { + throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module"); + } + if (!COMPILED && !goog.moduleLoaderState_.moduleName) { + throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace."); + } + goog.moduleLoaderState_.declareLegacyNamespace = !0; +}; +goog.setTestOnly = function(a) { + if (goog.DISALLOW_TEST_ONLY_CODE) { + throw a = a || "", Error("Importing test-only code into non-debug environment" + (a ? ": " + a : ".")); + } +}; +goog.forwardDeclare = function(a) { +}; +COMPILED || (goog.isProvided_ = function(a) { + return a in goog.loadedModules_ || !goog.implicitNamespaces_[a] && goog.isDefAndNotNull(goog.getObjectByName(a)); +}, goog.implicitNamespaces_ = {"goog.module":!0}); +goog.getObjectByName = function(a, b) { + for (var c = a.split("."), d = b || goog.global, e;e = c.shift();) { + if (goog.isDefAndNotNull(d[e])) { + d = d[e]; + } else { + return null; + } + } + return d; +}; +goog.globalize = function(a, b) { + var c = b || goog.global, d; + for (d in a) { + c[d] = a[d]; + } +}; +goog.addDependency = function(a, b, c, d) { + if (goog.DEPENDENCIES_ENABLED) { + var e; + a = a.replace(/\\/g, "/"); + var f = goog.dependencies_; + d && "boolean" !== typeof d || (d = d ? {module:"goog"} : {}); + for (var g = 0;e = b[g];g++) { + f.nameToPath[e] = a, f.loadFlags[a] = d; + } + for (d = 0;b = c[d];d++) { + a in f.requires || (f.requires[a] = {}), f.requires[a][b] = !0; + } + } +}; +goog.ENABLE_DEBUG_LOADER = !0; +goog.logToConsole_ = function(a) { + goog.global.console && goog.global.console.error(a); +}; +goog.require = function(a) { + if (!COMPILED) { + goog.ENABLE_DEBUG_LOADER && goog.IS_OLD_IE_ && goog.maybeProcessDeferredDep_(a); + if (goog.isProvided_(a)) { + if (goog.isInModuleLoader_()) { + return goog.module.getInternal_(a); + } + } else { + if (goog.ENABLE_DEBUG_LOADER) { + var b = goog.getPathFromDeps_(a); + if (b) { + goog.writeScripts_(b); + } else { + throw a = "goog.require could not find: " + a, goog.logToConsole_(a), Error(a); + } + } + } + return null; + } +}; +goog.basePath = ""; +goog.nullFunction = function() { +}; +goog.abstractMethod = function() { + throw Error("unimplemented abstract method"); +}; +goog.addSingletonGetter = function(a) { + a.getInstance = function() { + if (a.instance_) { + return a.instance_; + } + goog.DEBUG && (goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = a); + return a.instance_ = new a; + }; +}; +goog.instantiatedSingletons_ = []; +goog.LOAD_MODULE_USING_EVAL = !0; +goog.SEAL_MODULE_EXPORTS = goog.DEBUG; +goog.loadedModules_ = {}; +goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER; +goog.TRANSPILE = "detect"; +goog.TRANSPILER = "transpile.js"; +goog.DEPENDENCIES_ENABLED && (goog.dependencies_ = {loadFlags:{}, nameToPath:{}, requires:{}, visited:{}, written:{}, deferred:{}}, goog.inHtmlDocument_ = function() { + var a = goog.global.document; + return null != a && "write" in a; +}, goog.findBasePath_ = function() { + if (goog.isDef(goog.global.CLOSURE_BASE_PATH)) { + goog.basePath = goog.global.CLOSURE_BASE_PATH; + } else { + if (goog.inHtmlDocument_()) { + for (var a = goog.global.document.getElementsByTagName("SCRIPT"), b = a.length - 1;0 <= b;--b) { + var c = a[b].src, d = c.lastIndexOf("?"), d = -1 == d ? c.length : d; + if ("base.js" == c.substr(d - 7, 7)) { + goog.basePath = c.substr(0, d - 7); + break; + } + } + } + } +}, goog.importScript_ = function(a, b) { + (goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_)(a, b) && (goog.dependencies_.written[a] = !0); +}, goog.IS_OLD_IE_ = !(goog.global.atob || !goog.global.document || !goog.global.document.all), goog.importProcessedScript_ = function(a, b, c) { + goog.importScript_("", 'goog.retrieveAndExec_("' + a + '", ' + b + ", " + c + ");"); +}, goog.queuedModules_ = [], goog.wrapModule_ = function(a, b) { + return goog.LOAD_MODULE_USING_EVAL && goog.isDef(goog.global.JSON) ? "goog.loadModule(" + goog.global.JSON.stringify(b + "\n//# sourceURL=" + a + "\n") + ");" : 'goog.loadModule(function(exports) {"use strict";' + b + "\n;return exports});\n//# sourceURL=" + a + "\n"; +}, goog.loadQueuedModules_ = function() { + var a = goog.queuedModules_.length; + if (0 < a) { + var b = goog.queuedModules_; + goog.queuedModules_ = []; + for (var c = 0;c < a;c++) { + goog.maybeProcessDeferredPath_(b[c]); + } + } +}, goog.maybeProcessDeferredDep_ = function(a) { + goog.isDeferredModule_(a) && goog.allDepsAreAvailable_(a) && (a = goog.getPathFromDeps_(a), goog.maybeProcessDeferredPath_(goog.basePath + a)); +}, goog.isDeferredModule_ = function(a) { + var b = (a = goog.getPathFromDeps_(a)) && goog.dependencies_.loadFlags[a] || {}, c = b.lang || "es3"; + return a && ("goog" == b.module || goog.needsTranspile_(c)) ? goog.basePath + a in goog.dependencies_.deferred : !1; +}, goog.allDepsAreAvailable_ = function(a) { + if ((a = goog.getPathFromDeps_(a)) && a in goog.dependencies_.requires) { + for (var b in goog.dependencies_.requires[a]) { + if (!goog.isProvided_(b) && !goog.isDeferredModule_(b)) { + return !1; + } + } + } + return !0; +}, goog.maybeProcessDeferredPath_ = function(a) { + if (a in goog.dependencies_.deferred) { + var b = goog.dependencies_.deferred[a]; + delete goog.dependencies_.deferred[a]; + goog.globalEval(b); + } +}, goog.loadModuleFromUrl = function(a) { + goog.retrieveAndExec_(a, !0, !1); +}, goog.writeScriptSrcNode_ = function(a) { + goog.global.document.write(' + + - + app-toolbar { + background-color: #4285f4; + color: #fff; + } + + paper-icon-button { + --paper-icon-button-ink-color: white; + } + + paper-icon-button + [main-title] { + margin-left: 24px; + } + paper-progress { + display: block; + width: 100%; + --paper-progress-active-color: rgba(255, 255, 255, 0.5); + --paper-progress-container-color: transparent; + } + app-header { + @apply --layout-fixed-top; + color: #fff; + --app-header-background-rear-layer: { + background-color: #ef6c00; + }; + } + app-drawer { + --app-drawer-scrim-background: rgba(0, 0, 100, 0.8); + --app-drawer-content-container: { + background-color: #B0BEC5; + } + } + sample-content { + padding-top: 64px; + } + + @@ -105,8 +108,6 @@ $ bower install PolymerElements/app-layout --save - [app-header-layout](/app-header-layout) - A wrapper element that positions an app-header and other content. -- [app-scrollpos-control](/app-scrollpos-control) - A manager for saving and restoring the scroll position when multiple pages are sharing the same document scroller. - - [app-toolbar](/app-toolbar) - A horizontal toolbar containing items that can be used for label, navigation, search and actions. ### Templates @@ -137,22 +138,102 @@ Sample code for various UI patterns: - **Transform navigation:** As more screen space is available, side navigation can transform into tabs. -([Demo](https://polymerelements.github.io/app-layout/patterns/transform-navigation/index.html) - [Source](/patterns/transform-navigation/x-app.html)) +([Demo](https://www.webcomponents.org/element/PolymerElements/app-layout/demo/patterns/transform-navigation/index.html) - [Source](/patterns/transform-navigation/x-app.html)) - **Expand Card:** Content cards may expand to take up more horizontal space. -([Demo](https://polymerelements.github.io/app-layout/patterns/expand-card/index.html) - [Source](/patterns/expand-card/index.html)) +([Demo](https://www.webcomponents.org/element/PolymerElements/app-layout/demo/patterns/expand-card/index.html) - [Source](/patterns/expand-card/index.html)) + +- **Material Design Responsive Toolbar:** +Toolbar changes its height and padding to adapt mobile screen size. +([Demo](https://www.webcomponents.org/element/PolymerElements/app-layout/demo/patterns/md-responsive-toolbar/index.html) - [Source](/patterns/md-responsive-toolbar/index.html)) ## Users Here are some web apps built with App Layout: +- [Youtube Web](https://www.youtube.com/new) - [Google I/O 2016](https://events.google.com/io2016/) +- [Polymer project site](https://www.polymer-project.org/summit) - [Polymer summit](https://www.polymer-project.org/summit) -- [Pica](https://frankiefu.github.io/pica/) +- [Shop](https://shop.polymer-project.org) +- [News](https://news.polymer-project.org) +- [webcomponents.org](https://www.webcomponents.org/) +- [Chrome Status](https://www.chromestatus.com/) +- [Project Fi](https://fi.google.com/about/) +- [NASA Open Source Software](https://code.nasa.gov/) ## Tools and References -- [Responsive App Layout](https://www.polymer-project.org/1.0/toolbox/app-layout) -- [Polymer App Toolbox](https://www.polymer-project.org/1.0/toolbox/) +- [Polymer App Toolbox](https://www.polymer-project.org/2.0/toolbox/) - [Material Design Adaptive UI Pattern](https://www.google.com/design/spec/layout/adaptive-ui.html#adaptive-ui-patterns) + +## Changes in App Layout 2.0 + +- Distribution is now done with slots, so things have changed because of that, + + ##### app-drawer-layout + **1.x** + ``` + + ... +
content
+
+ ``` + **2.0** + ``` + + ... +
content
+
+ ``` + + ##### app-header-layout + **1.x** + ``` + + ... +
content
+
+ ``` + **2.0** + ``` + + ... +
content
+
+ ``` + + ##### app-box + **1.x** + ``` + + + + ``` + **2.0** + ``` + + + + ``` + +- In `app-drawer-layout`, the `drawer-toggle` element will not be automatically hidden +when `app-drawer-layout` is not in narrow layout. To add this, add the following CSS rule where +`app-drawer-layout` is used: + + ```css + app-drawer-layout:not([narrow]) [drawer-toggle] { + display: none; + } + ``` +- In `app-drawer-layout`, if you specify a value for `--app-drawer-width`, that value must be +accessible by both `app-drawer` and `app-drawer-layout`. This can be done by defining the value +on the `:host` that contains (or `html` if outside a shadow root): + + ```css + :host { + --app-drawer-width: 300px; + } + ``` +- `app-scrollpos-control` has been removed from App Layout in favor of using multiple scrolling regions to preserve the scroll position. In terms of UX, [`document.rootScroller`](https://github.com/bokand/NonDocumentRootScroller) is a new web platform API that will allow non-document scroll to hide the address bar on mobile. diff --git a/lib/app-layout/app-box/README.md b/lib/app-layout/app-box/README.md index 6c9efb9f..f7692580 100644 --- a/lib/app-layout/app-box/README.md +++ b/lib/app-layout/app-box/README.md @@ -1,4 +1,4 @@ -##<app-box> +## <app-box> app-box is a container element that can have scroll effects - visual effects based on scroll position. For example, the parallax effect can be used to move an image at a slower @@ -6,7 +6,7 @@ rate than the foreground. ```html - + ``` diff --git a/lib/app-layout/app-box/app-box.html b/lib/app-layout/app-box/app-box.html index 961270ce..01de7055 100644 --- a/lib/app-layout/app-box/app-box.html +++ b/lib/app-layout/app-box/app-box.html @@ -20,7 +20,7 @@ ```html - + ``` @@ -97,7 +97,7 @@

Sub title

} #background { - @apply(--layout-fit); + @apply --layout-fit; overflow: hidden; height: 100%; } @@ -106,7 +106,7 @@

Sub title

min-height: 100%; pointer-events: none; background-size: cover; - @apply(--app-box-background-front-layer); + @apply --app-box-background-front-layer; } #contentContainer { @@ -123,11 +123,11 @@

Sub title

- +
- +
@@ -155,13 +155,24 @@

Sub title

this.resetLayout(); }, + _debounceRaf: function(fn) { + var self = this; + if (this._raf) { + window.cancelAnimationFrame(this._raf); + } + this._raf = window.requestAnimationFrame(function() { + self._raf = null; + fn.call(self); + }); + }, + /** * Resets the layout. This method is automatically called when the element is attached to the DOM. * * @method resetLayout */ resetLayout: function() { - this.debounce('_resetLayout', function() { + this._debounceRaf(function() { // noop if the box isn't in the rendered tree if (this.offsetWidth === 0 && this.offsetHeight === 0) { return; @@ -177,7 +188,7 @@

Sub title

this._setUpEffect(); this._updateScrollState(scrollTop); this.disabled = savedDisabled; - }, 1); + }); }, _getElementTop: function() { diff --git a/lib/app-layout/app-box/demo/document-scroll.html b/lib/app-layout/app-box/demo/document-scroll.html index ddcc4897..4a67bf86 100644 --- a/lib/app-layout/app-box/demo/document-scroll.html +++ b/lib/app-layout/app-box/demo/document-scroll.html @@ -24,129 +24,131 @@ - + + + @@ -177,7 +179,7 @@

Built for Speed

In this case, we create a custom background by adding the attribute `background` to the `img` in the light DOM. --> - + diff --git a/lib/app-layout/app-box/demo/index.html b/lib/app-layout/app-box/demo/index.html deleted file mode 100644 index 991839bc..00000000 --- a/lib/app-layout/app-box/demo/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - app-box demos - - - - - - - - - - -
-
-

app-box demos

-
-
-
- - diff --git a/lib/app-layout/app-box/demo/scrolling-region.html b/lib/app-layout/app-box/demo/scrolling-region.html index 1269d7e5..604e0808 100644 --- a/lib/app-layout/app-box/demo/scrolling-region.html +++ b/lib/app-layout/app-box/demo/scrolling-region.html @@ -24,140 +24,142 @@ - + + + @@ -190,7 +192,7 @@

Built for Speed

In this case, we create a custom background by adding the attribute `background` to the `img` in the light DOM. --> - + diff --git a/lib/app-layout/app-drawer-layout/README.md b/lib/app-layout/app-drawer-layout/README.md index d5ddb861..e5211b6d 100644 --- a/lib/app-layout/app-drawer-layout/README.md +++ b/lib/app-layout/app-drawer-layout/README.md @@ -1,4 +1,4 @@ -##<app-drawer-layout> +## <app-drawer-layout> app-drawer-layout is a wrapper element that positions an app-drawer and other content. When the viewport width is smaller than `responsiveWidth`, this element changes to narrow layout. @@ -10,7 +10,7 @@ By default the drawer is aligned to the start, which is left in LTR layouts: ```html - + drawer content
@@ -23,7 +23,7 @@ Align the drawer at the end: ```html - + drawer content
@@ -36,11 +36,11 @@ With an app-header-layout: ```html - + drawer-content - +
App name
@@ -52,15 +52,15 @@ With an app-header-layout:
``` -Add the `drawer-toggle` attribute to elements inside `app-drawer-layout` that toggle the drawer on tap events: +Add the `drawer-toggle` attribute to elements inside `app-drawer-layout` that toggle the drawer on click events: ```html - + drawer-content - +
App name
@@ -73,11 +73,21 @@ Add the `drawer-toggle` attribute to elements inside `app-drawer-layout` that to
``` +**NOTE:** With app-layout 2.0, the `drawer-toggle` element will not be automatically hidden +when app-drawer-layout is not in narrow layout. To add this, add the following CSS rule where +app-drawer-layout is used: + +```css +app-drawer-layout:not([narrow]) [drawer-toggle] { + display: none; +} +``` + Add the `fullbleed` attribute to app-drawer-layout to make it fit the size of its container: ```html - + drawer content
@@ -90,4 +100,16 @@ Add the `fullbleed` attribute to app-drawer-layout to make it fit the size of it Custom property | Description | Default -----------------------------------------|--------------------------------------|--------- +`--app-drawer-width` | Width of the drawer | 256px `--app-drawer-layout-content-transition` | Transition for the content container | none + +**NOTE:** If you use with and specify a value for +`--app-drawer-width`, that value must be accessible by both elements. This can be done by +defining the value on the `:host` that contains (or `html` if outside +a shadow root): + +```css +:host { + --app-drawer-width: 300px; +} +``` diff --git a/lib/app-layout/app-drawer-layout/app-drawer-layout.html b/lib/app-layout/app-drawer-layout/app-drawer-layout.html index 6754b060..1f1a02f8 100644 --- a/lib/app-layout/app-drawer-layout/app-drawer-layout.html +++ b/lib/app-layout/app-drawer-layout/app-drawer-layout.html @@ -10,8 +10,7 @@ - - + @@ -116,30 +136,44 @@ -
- -
+ - +
+ +
- app-drawer-layout demos - - + + + app-drawer-layout demo - + + + + + + + + + + + + - - -
-
-

app-drawer-layout demos

- -
-
+ + + + + + + + + + + + + + diff --git a/lib/app-layout/app-drawer-layout/demo/simple-drawer.html b/lib/app-layout/app-drawer-layout/demo/simple-drawer.html deleted file mode 100644 index eaf4b788..00000000 --- a/lib/app-layout/app-drawer-layout/demo/simple-drawer.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - app-drawer-layout demo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/app-layout/app-drawer-layout/demo/two-drawers.html b/lib/app-layout/app-drawer-layout/demo/two-drawers.html deleted file mode 100644 index 52dd87df..00000000 --- a/lib/app-layout/app-drawer-layout/demo/two-drawers.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - app-drawer-layout demo - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
- - - diff --git a/lib/app-layout/app-drawer-layout/test/app-drawer-layout.html b/lib/app-layout/app-drawer-layout/test/app-drawer-layout.html index 381750ed..51064483 100644 --- a/lib/app-layout/app-drawer-layout/test/app-drawer-layout.html +++ b/lib/app-layout/app-drawer-layout/test/app-drawer-layout.html @@ -19,37 +19,25 @@ + - + + + + @@ -57,7 +45,7 @@ @@ -271,11 +279,7 @@ _lastTabStop: null, attached: function() { - // Only transition the drawer after its first render (e.g. app-drawer-layout - // may need to set the initial opened state which should not be transitioned). - this._styleTransitionDuration(0); Polymer.RenderStatus.afterNextRender(this, function() { - this._styleTransitionDuration(this.transitionDuration); this._boundEscKeydownHandler = this._escKeydownHandler.bind(this); this.addEventListener('keydown', this._tabKeydownHandler.bind(this)) @@ -284,7 +288,7 @@ this.setScrollDirection('y'); }); - this.fire('app-drawer-attached'); + this.fire('app-reset-layout'); }, detached: function() { @@ -318,17 +322,7 @@ * @return {number} The width of the drawer in pixels. */ getWidth: function() { - return this.$.contentContainer.offsetWidth; - }, - - /** - * Resets the layout. The event fired is used by app-drawer-layout to position the - * content. - * - * @method resetLayout - */ - resetLayout: function() { - this.fire('app-drawer-reset-layout'); + return this._savedWidth || this.$.contentContainer.offsetWidth; }, _isRTL: function() { @@ -380,11 +374,8 @@ _trackStart: function(event) { this._drawerState = this._DRAWER_STATE.TRACKING; - // Disable transitions since style attributes will reflect user track events. - this._styleTransitionDuration(0); - this.style.visibility = 'visible'; - var rect = this.$.contentContainer.getBoundingClientRect(); + this._savedWidth = rect.width; if (this.position === 'left') { this._translateOffset = rect.left; } else { @@ -392,6 +383,10 @@ } this._trackDetails = []; + + // Disable transitions since style attributes will reflect user track events. + this._styleTransitionDuration(0); + this.style.visibility = 'visible'; }, _trackMove: function(event) { @@ -555,6 +550,8 @@ this.style.visibility = ''; } + this._savedWidth = null; + if (this.opened) { this._drawerState = this.persistent ? this._DRAWER_STATE.OPENED_PERSISTENT : this._DRAWER_STATE.OPENED; @@ -579,6 +576,15 @@ } }, + /** + * Resets the layout. + * + * @method resetLayout + */ + resetLayout: function() { + this.fire('app-reset-layout'); + }, + _setKeyboardFocusTrap: function() { if (this.noFocusTrap) { return; @@ -640,7 +646,9 @@ } }, - _openedPersistentChanged: function() { + _openedPersistentChanged: function(opened, persistent) { + this.toggleClass('visible', opened && !persistent, this.$.scrim); + // Use a debounce timer instead of transitionend since transitionend won't fire when // app-drawer is display: none. this.debounce('_resetDrawerState', this._resetDrawerState, this.transitionDuration); @@ -663,16 +671,10 @@ FLINGING: 5 } - /** - * Fired when the layout of app-drawer is attached. - * - * @event app-drawer-attached - */ - /** * Fired when the layout of app-drawer has changed. * - * @event app-drawer-reset-layout + * @event app-reset-layout */ /** diff --git a/lib/app-layout/app-drawer/demo/index.html b/lib/app-layout/app-drawer/demo/index.html deleted file mode 100644 index dc3bd0ac..00000000 --- a/lib/app-layout/app-drawer/demo/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - app-drawer demos - - - - - - - - - - -
-
-

app-drawer demos

- -
-
- - diff --git a/lib/app-layout/app-drawer/demo/left-drawer.html b/lib/app-layout/app-drawer/demo/left-drawer.html index 30d80c9e..3c80524d 100644 --- a/lib/app-layout/app-drawer/demo/left-drawer.html +++ b/lib/app-layout/app-drawer/demo/left-drawer.html @@ -25,28 +25,30 @@ - + + @@ -61,7 +63,7 @@ diff --git a/lib/app-layout/app-drawer/demo/right-drawer.html b/lib/app-layout/app-drawer/demo/right-drawer.html index 1872e210..0eca3c71 100644 --- a/lib/app-layout/app-drawer/demo/right-drawer.html +++ b/lib/app-layout/app-drawer/demo/right-drawer.html @@ -26,69 +26,80 @@ - + + - - - + +
+ +
+ + + + +
+ + + inbox + + + + favorite + + + + polymer + + + + question-answer + + + + send + + + + archive + + + + backup + + + + dashboard + +
+
diff --git a/lib/app-layout/app-drawer/test/app-drawer.html b/lib/app-layout/app-drawer/test/app-drawer.html index 48cdab4b..29c7b4ab 100644 --- a/lib/app-layout/app-drawer/test/app-drawer.html +++ b/lib/app-layout/app-drawer/test/app-drawer.html @@ -30,7 +30,11 @@ @@ -40,27 +44,6 @@
- - - - - - - - - diff --git a/lib/app-layout/app-grid/README.md b/lib/app-layout/app-grid/README.md index 39ef7b84..2e9bf9a1 100644 --- a/lib/app-layout/app-grid/README.md +++ b/lib/app-layout/app-grid/README.md @@ -1,4 +1,4 @@ -##<app-grid> +## <app-grid> app-grid is a helper class useful for creating responsive, fluid grid layouts using custom properties. Because custom properties can be defined inside a `@media` rule, you can customize the grid layout @@ -68,7 +68,7 @@ you can specify the number of columns the item should expand to by setting the c /* Only the first item should expand */ .item:first-child { - @apply(--app-grid-expandible-item); + @apply --app-grid-expandible-item; } @@ -122,3 +122,7 @@ Custom property | Description `--app-grid-gutter` | The space between two items. | 0px `--app-grid-item-height` | The height of the items. | auto `--app-grid-expandible-item-columns` | The number of columns an expandible item should expand to. | 1 + +### CSS grid layout + +[CSS grid layout](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout) is a new layout system for CSS that lets you create complex grids. It's richer than app-grid in many cases, but it's only supported in a [few browsers](http://caniuse.com/#search=css%20grid%20layout). diff --git a/lib/app-layout/app-grid/app-grid-style.html b/lib/app-layout/app-grid/app-grid-style.html index 7c6460d4..090e3678 100644 --- a/lib/app-layout/app-grid/app-grid-style.html +++ b/lib/app-layout/app-grid/app-grid-style.html @@ -64,7 +64,7 @@ /* Only the first item should expand */ .item:first-child { - @apply(--app-grid-expandible-item); + @apply --app-grid-expandible-item; } </style> </template> @@ -120,9 +120,7 @@ diff --git a/lib/app-layout/app-grid/demo/aspect-ratio.html b/lib/app-layout/app-grid/demo/aspect-ratio.html index aa55b2b0..4b044f0d 100644 --- a/lib/app-layout/app-grid/demo/aspect-ratio.html +++ b/lib/app-layout/app-grid/demo/aspect-ratio.html @@ -72,7 +72,7 @@

Aspect ratio: items have an aspect ratio of 1:1 on large screens and 2:1 on small ones.

    - - - - - diff --git a/lib/app-layout/templates/shrine/src/shrine-item.html b/lib/app-layout/templates/shrine/src/shrine-item.html index 47cfa95b..80be85cd 100644 --- a/lib/app-layout/templates/shrine/src/shrine-item.html +++ b/lib/app-layout/templates/shrine/src/shrine-item.html @@ -19,8 +19,8 @@ - - - - - - - - diff --git a/lib/app-layout/templates/test-drive/test-app.html b/lib/app-layout/templates/test-drive/test-app.html index 5adbfbea..1a964c6e 100644 --- a/lib/app-layout/templates/test-drive/test-app.html +++ b/lib/app-layout/templates/test-drive/test-app.html @@ -36,6 +36,10 @@ diff --git a/lib/app-localize-behavior/demo/index.html b/lib/app-localize-behavior/demo/index.html deleted file mode 100644 index 2448d0e6..00000000 --- a/lib/app-localize-behavior/demo/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - app-localize-behavior demo - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/app-localize-behavior/demo/locales.json b/lib/app-localize-behavior/demo/locales.json deleted file mode 100644 index f434899a..00000000 --- a/lib/app-localize-behavior/demo/locales.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "en": { - "header_1": "Translation and localization", - "header_2": "Plurals and genders", - "greeting": "Hello!", - "intro": "My name is {name}", - "cats": "I have {numCats, number} cats. Almost {pctBlack, number, percent} of them are black.", - "sale": "Sale begins {start, date, medium}, at {time, time, short}. Everything is {price, number, USD}.", - "fruit": "{num, plural, =0 {no apples} =1 {one apple} other {# apples}}", - "bananas": "{name} ate {num, plural, =0 {no bananas} =1 {a banana} other {# bananas}} {gender, select, male {at his house.} female {at her house.} other {at their house.}}" - }, - "fr": { - "header_1": "Traduction et localisation", - "header_2": "Pluriels et les sexes", - "greeting": "Bonjour!", - "intro": "Je m'appelle {name}", - "cats": "J'ai {numCats, number} chats. Près de {pctBlack, number, percent} d'entre eux sont noirs.", - "sale": "La vente commence le {start, date, medium} à {time, time, short}. Tout est à {price, number, USD}.", - "fruit": "{num, plural, =0 {pas de pommes} =1 {une pomme} other {# pommes}}", - "bananas": "{name} {num, plural, =0 {ne} =1 {} other {}} mange {num, plural, =0 {pas de bananes} =1 {une banane} other {# bananes}} {gender, select, male {chez lui.} female {chez elle.} other {chez eux.}}" - } -} diff --git a/lib/app-localize-behavior/demo/x-local-translate.html b/lib/app-localize-behavior/demo/x-local-translate.html index afd2014c..5b8fccef 100644 --- a/lib/app-localize-behavior/demo/x-local-translate.html +++ b/lib/app-localize-behavior/demo/x-local-translate.html @@ -29,7 +29,7 @@

    This demo's resources are loaded statically, not from an external file.

    {{localize('greeting')}}
    -
    +
    localize('greeting')
    diff --git a/lib/app-localize-behavior/demo/x-translate.html b/lib/app-localize-behavior/demo/x-translate.html index 0be07c16..175477c3 100644 --- a/lib/app-localize-behavior/demo/x-translate.html +++ b/lib/app-localize-behavior/demo/x-translate.html @@ -32,7 +32,7 @@

    {{localize('header_1')}}

    {{localize('cats', 'numCats', 10000, 'pctBlack', 0.42)}}
    {{localize('sale', 'start', 150, 'time', 15, 'price', 10)}}
-
+
localize('greeting') localize('intro', 'name', 'Batman') localize('cats', 'numCats', 10000, 'pctBlack', 0.42) @@ -50,7 +50,7 @@

{{localize('header_2')}}

{{localize('bananas', 'name', 'Robin', 'gender', 'female', 'num', 0)}}
{{localize('bananas', 'name', 'Robin', 'gender', 'other', 'num', 4)}}
-
+
localize('fruit', 'num', 0) / localize('fruit', 'num', 1) / localize('fruit', 'num', 3) localize('bananas', 'name', 'Robin', 'gender', 'male', 'num', 1) localize('bananas', 'name', 'Robin', 'gender', 'female', 'num', 0) diff --git a/lib/app-localize-behavior/index.html b/lib/app-localize-behavior/index.html deleted file mode 100644 index 0b14f7c9..00000000 --- a/lib/app-localize-behavior/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - app-localize-behavior - - - - - - - - - - - - - diff --git a/lib/app-localize-behavior/test/basic.html b/lib/app-localize-behavior/test/basic.html index 669d8711..7fcb06f3 100644 --- a/lib/app-localize-behavior/test/basic.html +++ b/lib/app-localize-behavior/test/basic.html @@ -130,8 +130,13 @@ // behave differently - in not-edge, the result is "10 $US", in Edge // it's just 10$. This isn't something we control, so check the string // is mostly right. - assert.equal(app.$.output.innerHTML.indexOf('Tout est à 10,00 $'), 0); - + + // It gets better: on IE11 Win8.1, format.js returns a " " in between + // the 10,00 and the $. On every other browser, including IE11 on Win10, + // it returns an  . Yes, this took an hour to find. + var translation = app.$.output.textContent.replace('\u00a0', ' '); + assert.equal(translation.indexOf('Tout est à 10,00 $'), 0); + app.language = 'en'; assert.equal(app.$.output.innerHTML, 'Everything is $10.00'); diff --git a/lib/app-localize-behavior/test/index.html b/lib/app-localize-behavior/test/index.html index b8845af5..6f455038 100644 --- a/lib/app-localize-behavior/test/index.html +++ b/lib/app-localize-behavior/test/index.html @@ -17,7 +17,7 @@ diff --git a/lib/app-localize-behavior/test/locales.json b/lib/app-localize-behavior/test/locales.json deleted file mode 100644 index 30671875..00000000 --- a/lib/app-localize-behavior/test/locales.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "en": { - "greeting": "hello", - "intro": "my name is {name}. i have {numCats, number} cats." - }, - "fr": { - "greeting": "bonjour", - "intro": "je m'apelle {name}. j'ai {numCats, number} chats." - } -} diff --git a/lib/app-localize-behavior/test/locales2.json b/lib/app-localize-behavior/test/locales2.json deleted file mode 100644 index 8d8b33f4..00000000 --- a/lib/app-localize-behavior/test/locales2.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "en": { - "greeting": "hello!", - "intro": "my name is {name}! i have {numCats, number} cats!" - }, - "fr": { - "greeting": "bonjour!", - "intro": "je m'apelle {name}! j'ai {numCats, number} chats!" - } -} diff --git a/lib/app-localize-behavior/test/x-translate-l10n.html b/lib/app-localize-behavior/test/x-translate-l10n.html index efd609df..0e908525 100644 --- a/lib/app-localize-behavior/test/x-translate-l10n.html +++ b/lib/app-localize-behavior/test/x-translate-l10n.html @@ -45,7 +45,7 @@ 'intro': 'Everything is {price, number, USD}' }, 'fr' : { - 'intro': 'Tout est à {price, number, USD}' + 'intro': 'Tout est à {price, number, USD}.' } }; } diff --git a/lib/app-localize-behavior/test/x-translate-only-imperative.html b/lib/app-localize-behavior/test/x-translate-only-imperative.html deleted file mode 100644 index 1c5e3f14..00000000 --- a/lib/app-localize-behavior/test/x-translate-only-imperative.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - diff --git a/lib/app-localize-behavior/test/x-translate.html b/lib/app-localize-behavior/test/x-translate.html deleted file mode 100644 index c88e9520..00000000 --- a/lib/app-localize-behavior/test/x-translate.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - diff --git a/lib/app-localize-behavior/test/x-translate2.html b/lib/app-localize-behavior/test/x-translate2.html deleted file mode 100644 index 7983a203..00000000 --- a/lib/app-localize-behavior/test/x-translate2.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - diff --git a/lib/app-pouchdb/.bower.json b/lib/app-pouchdb/.bower.json index 552caa9a..eef79de4 100644 --- a/lib/app-pouchdb/.bower.json +++ b/lib/app-pouchdb/.bower.json @@ -1,6 +1,6 @@ { "name": "app-pouchdb", - "version": "1.0.0", + "version": "2.1.1", "authors": [ "The Polymer Authors" ], @@ -17,33 +17,64 @@ "private": true, "ignore": [], "dependencies": { - "polymer": "polymer/polymer#^v1.2.0", "pouchdb": "^6.1.1", + "polymer": "Polymer/polymer#1.9 - 2", "pouchdb-find": "^0.10.0", - "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0", - "app-storage": "polymerelements/app-storage#~1.0.0" + "app-storage": "polymerelements/app-storage#1 - 2" }, "devDependencies": { - "web-component-tester": "^4.0.0", - "iron-component-page": "polymerelements/iron-component-page#^1.0.0", - "paper-input": "polymerelements/paper-input#^1.0.0", - "paper-styles": "polymerelements/paper-styles#^1.0.0", + "iron-component-page": "polymerelements/iron-component-page#1 - 2", + "paper-input": "polymerelements/paper-input#1 - 2", + "paper-styles": "polymerelements/paper-styles#1 - 2", "font-roboto": "polymerelements/font-roboto#^1.0.0", - "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", - "iron-icon": "polymerelements/iron-icon#^1.0.0", - "paper-fab": "polymerelements/paper-fab#^1.0.0", - "iron-icons": "polymerelements/iron-icons#^1.0.0", - "paper-button": "polymerelements/paper-button#^1.0.0", - "platinum-sw": "polymerelements/platinum-sw#^1.3.0", - "note-app-elements": "polymerlabs/note-app-elements" + "iron-flex-layout": "polymerelements/iron-flex-layout#1 - 2", + "iron-icon": "polymerelements/iron-icon#1 - 2", + "note-app-elements": "polymerlabs/note-app-elements#1 - 2", + "paper-fab": "polymerelements/paper-fab#1 - 2", + "iron-icons": "polymerelements/iron-icons#1 - 2", + "paper-button": "polymerelements/paper-button#1 - 2", + "promise-polyfill": "polymerlabs/promise-polyfill#1 - 2", + "webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0", + "web-component-tester": "^6.0.0" }, - "_release": "1.0.0", + "variants": { + "1.x": { + "dependencies": { + "pouchdb": "^6.1.1", + "polymer": "Polymer/polymer#^1.9", + "pouchdb-find": "^0.10.0", + "app-storage": "polymerelements/app-storage#^1.0.0" + }, + "devDependencies": { + "iron-component-page": "polymerelements/iron-component-page#^1.0.0", + "paper-input": "polymerelements/paper-input#^1.0.0", + "paper-styles": "polymerelements/paper-styles#^1.0.0", + "font-roboto": "polymerelements/font-roboto#^1.0.0", + "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", + "iron-icon": "polymerelements/iron-icon#^1.0.0", + "paper-fab": "polymerelements/paper-fab#^1.0.0", + "iron-icons": "polymerelements/iron-icons#^1.0.0", + "paper-button": "polymerelements/paper-button#^1.0.0", + "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0", + "note-app-elements": "polymerlabs/note-app-elements#1.x", + "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", + "web-component-tester": "^4.0.0" + }, + "resolutions": { + "webcomponentsjs": "^0.7" + } + } + }, + "resolutions": { + "webcomponentsjs": "^1.0.0" + }, + "_release": "2.1.1", "_resolution": { "type": "version", - "tag": "v1.0.0", - "commit": "4d345603aa7ffc54acd6422fdecbb98567dc88d9" + "tag": "v2.1.1", + "commit": "bdcfb530a31eb8807bfb8eade45b1e2baee78af9" }, - "_source": "git://github.com/PolymerElements/app-pouchdb.git", - "_target": "^1.0.0", + "_source": "https://github.com/PolymerElements/app-pouchdb.git", + "_target": "^2.0.0", "_originalSource": "PolymerElements/app-pouchdb" } \ No newline at end of file diff --git a/lib/app-pouchdb/.github/ISSUE_TEMPLATE.md b/lib/app-pouchdb/.github/ISSUE_TEMPLATE.md index 791646bb..0a660375 100644 --- a/lib/app-pouchdb/.github/ISSUE_TEMPLATE.md +++ b/lib/app-pouchdb/.github/ISSUE_TEMPLATE.md @@ -17,8 +17,8 @@ ### Browsers Affected diff --git a/lib/app-pouchdb/.gitignore b/lib/app-pouchdb/.gitignore index 7bf6eb18..912b1b4a 100644 --- a/lib/app-pouchdb/.gitignore +++ b/lib/app-pouchdb/.gitignore @@ -1,2 +1,3 @@ -bower_components +bower_components* node_modules +bower-*.json diff --git a/lib/app-pouchdb/.travis.yml b/lib/app-pouchdb/.travis.yml new file mode 100644 index 00000000..a9592588 --- /dev/null +++ b/lib/app-pouchdb/.travis.yml @@ -0,0 +1,25 @@ +dist: trusty +language: node_js +sudo: required +node_js: stable +addons: + firefox: latest + apt: + sources: + - google-chrome + packages: + - google-chrome-stable +before_script: + - npm install -g polymer-cli + - polymer install --variants +script: + - xvfb-run polymer test + - >- + if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then polymer test -s 'default'; + fi +env: + global: + - secure: >- + ZUQ4Bja9PE7kHMXM/flMA37tC57X5+jKTlPe6TqA0TubkPFEybpaG2hU57yA06xikHNh6j4mYJ9qpnN3yObYx1q5xzd7doRSdN5PYoDz9oynjz38nvMpeVY9xkE7TTI6zLuC/rRzW3vzI2pc5wxe/Gt1WNAvKbzjLOCs9N+cgrN8rMHO1j3OeOr5FEW1RdIWwoYV/4KtIauGy1l79lR/qesoR3oE2EW3iKK2Une8LboCGN+MpU9fMyauAaPCNEwGqLP61kphn5GP9haJoPgk7EncSoeFV0e5Lsx2paXC7fIeumv67Ct4ryuOD9t12/soZvr/WnYkzSMJd4k0sWzIWZyGCDKqBz6FZ7rM8k4kaJbLYabyDnzSHBD6jPWUXkQaRjWqAJypyFh5dboJjl9u3ol1GcuQvkR8RaQplH4x1K8QapeXlbsjxqUBap6tbSFFhSUI6qhphtzSV3qv2s6NlVAZHMQjUckJb327m4nB5lu6TAYLeQaZmAPmDd+3xN1ARLlI2F1kxIOjdT5Bt76Rz6ImhtaynC0yN7J6j+mHAttHWScbQeN0yyIAPLsqzKxHcdYiHLQwGTHb3+C7kHg3B6Gv8MaeN3BULfPYQRjJ0lesDDxWGOAePqxLTVxmLowpzMPfOBOZEOggsP6plbjJwn++Y//FCMd3hSl4mlVnA8g= + - secure: >- + Bik/GRtc4ph6sXFrLtiQqR0JU6GMrpQrjcbbgHhvVknS2kF2XrbT9SbVuzUp8Z4CDE5QbFM4c27/bcUbhDj7/3ejjT/v6bqgGhXFuxMNkh70cf/IoMq5IRxlFRH7NsbeIuWqAm4cOImGzuRcnM4Q2KkJCMBsdOHer7rfEUPa4RQL6Hd2gteSg4E9PwLdYcygnAKGtU/r9j6Tir7aaLxLIVFuFeLHZP1hm31cTsXwiUNE8QFwaWLTD44nHho5IvgKUyF05bkwKpisQ2kbSeGS24RDN6vSWx+BT2Ql6NCk8pBdmUEyucYEPnvKh9vJWwZ4KNCt5iqMlkZ37Xhu2wkjb6EyDsb4hjs7pw0n1HV/3bW/xKCM82nq3EgBPNPrbbe99k4M1aNKJiNdGXLUEHeU/JJbq40rkpw5HbdyZBrY1syXs3VqO1vKvwet3gTtN91t9TSvU15nm7EGjJoriSWCS241rM6v5Rg756lUzey4HHv+ow3BeEekqKD7ZsC5bQVEVEXqZZgT7Eetu6itzrPGCGP5utVltDLEHZSQiQFJ2RzJU0f4ZthvYLXOCrzd46eBCr9jvtXSUVCG/FWniSmHzy481rDJb8J6WMlL54hyQTI5d/5zse0n/jko/HXfD22zJQR4mYOyG4LIInAIGNbzksHaj8URHk+u2bpL5vl81lI= diff --git a/lib/app-pouchdb/CONTRIBUTING.md b/lib/app-pouchdb/CONTRIBUTING.md deleted file mode 100644 index 093090d4..00000000 --- a/lib/app-pouchdb/CONTRIBUTING.md +++ /dev/null @@ -1,77 +0,0 @@ - - -# Polymer Elements -## Guide for Contributors - -Polymer Elements are built in the open, and the Polymer authors eagerly encourage any and all forms of community contribution. When contributing, please follow these guidelines: - -### Filing Issues - -**If you are filing an issue to request a feature**, please provide a clear description of the feature. It can be helpful to describe answers to the following questions: - - 1. **Who will use the feature?** _“As someone filling out a form…”_ - 2. **When will they use the feature?** _“When I enter an invalid value…”_ - 3. **What is the user’s goal?** _“I want to be visually notified that the value needs to be corrected…”_ - -**If you are filing an issue to report a bug**, please provide: - - 1. **A clear description of the bug and related expectations.** Consider using the following example template for reporting a bug: - - ```markdown - The `paper-foo` element causes the page to turn pink when clicked. - - ## Expected outcome - - The page stays the same color. - - ## Actual outcome - - The page turns pink. - - ## Steps to reproduce - - 1. Put a `paper-foo` element in the page. - 2. Open the page in a web browser. - 3. Click the `paper-foo` element. - ``` - - 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [https://jsbin.com/cagaye/edit?html,output](https://jsbin.com/cagaye/edit?html,output). - - 3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers. - -### Submitting Pull Requests - -**Before creating a pull request**, please ensure that an issue exists for the corresponding change in the pull request that you intend to make. **If an issue does not exist, please create one per the guidelines above**. The goal is to discuss the design and necessity of the proposed change with Polymer authors and community before diving into a pull request. - -When submitting pull requests, please provide: - - 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues in the pull request description using the following syntax: - - ```markdown - (For a single issue) - Fixes #20 - - (For multiple issues) - Fixes #32, fixes #40 - ``` - - 2. **A succinct description of the design** used to fix any related issues. For example: - - ```markdown - This fixes #20 by removing styles that leaked which would cause the page to turn pink whenever `paper-foo` is clicked. - ``` - - 3. **At least one test for each bug fixed or feature added** as part of the pull request. Pull requests that fix bugs or add features without accompanying tests will not be considered. - -If a proposed change contains multiple commits, please [squash commits](https://www.google.com/url?q=http://blog.steveklabnik.com/posts/2012-11-08-how-to-squash-commits-in-a-github-pull-request) to as few as is necessary to succinctly express the change. A Polymer author can help you squash commits, so don’t be afraid to ask us if you need help with that! diff --git a/lib/app-pouchdb/README.md b/lib/app-pouchdb/README.md index 78d44b64..0ed132a6 100644 --- a/lib/app-pouchdb/README.md +++ b/lib/app-pouchdb/README.md @@ -13,7 +13,7 @@ thing! https://github.com/PolymerLabs/tedium/issues --> -##<app-pouchdb-conflict-resolution> +## <app-pouchdb-conflict-resolution> `app-pouchdb-conflict-resolution` enables declarative configuration of conflict resolution strategies ordered by logical relationships in the DOM. Currently @@ -41,7 +41,7 @@ configured strategy. -##<app-pouchdb-document> +## <app-pouchdb-document> `app-pouchdb-document` is an implementation of `Polymer.AppStorageBehavior` for reading and writing to individual PouchDB documents. @@ -82,7 +82,7 @@ PouchDB document: -##<app-pouchdb-index> +## <app-pouchdb-index> `app-pouchdb-index` enables declarative, idempotent configuration of database indexes. The semantics map to those of the pouchdb-find plugin. For more @@ -95,7 +95,7 @@ work. -##<app-pouchdb-query> +## <app-pouchdb-query> `app-pouchdb-query` allows for declarative, read-only querying into a PouchDB database. The semantics for querying match those of the @@ -153,7 +153,7 @@ documentation on pouchdb-find selectors, please check out the docs -##<app-pouchdb-sync> +## <app-pouchdb-sync> `app-pouchdb-sync` arranges for one-directional or bi-directional synchronization between two PouchDB databases. For one-directional @@ -176,7 +176,7 @@ documentation [here](https://pouchdb.com/guides/replication.html). -##Polymer.AppPouchDBDatabaseBehavior +## Polymer.AppPouchDBDatabaseBehavior `Polymer.AppPouchDBDatabaseBehavior` is an abstract implementation that is intended to be shared by any element that refers to and operates on a diff --git a/lib/app-pouchdb/app-pouchdb-conflict-resolution.html b/lib/app-pouchdb/app-pouchdb-conflict-resolution.html deleted file mode 100644 index 3a7928d7..00000000 --- a/lib/app-pouchdb/app-pouchdb-conflict-resolution.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - diff --git a/lib/app-pouchdb/app-pouchdb-database-behavior.html b/lib/app-pouchdb/app-pouchdb-database-behavior.html index b0911054..5de1ce66 100644 --- a/lib/app-pouchdb/app-pouchdb-database-behavior.html +++ b/lib/app-pouchdb/app-pouchdb-database-behavior.html @@ -21,7 +21,7 @@ * operations that might be performed on the database, including "upsert" * and conflict-aware "put" and "post" operations. * - * @polymerBehavior + * @polymerBehavior Polymer.AppPouchDBDatabaseBehavior */ Polymer.AppPouchDBDatabaseBehavior = { properties: { diff --git a/lib/app-pouchdb/app-pouchdb-document.html b/lib/app-pouchdb/app-pouchdb-document.html index 458c4069..6ab88372 100644 --- a/lib/app-pouchdb/app-pouchdb-document.html +++ b/lib/app-pouchdb/app-pouchdb-document.html @@ -108,7 +108,7 @@ }, /** @override */ - save: function() { + saveValue: function() { if (!this.db) { return Promise.reject('No PouchDB instance available!'); } @@ -181,7 +181,7 @@ __computeChanges: function(db, docId) { if (this.changes) { - this.changes.removeAllListeners(); + this.changes.cancel(); } if (db == null || docId == null) { diff --git a/lib/app-pouchdb/app-pouchdb-index.html b/lib/app-pouchdb/app-pouchdb-index.html deleted file mode 100644 index fd7f906d..00000000 --- a/lib/app-pouchdb/app-pouchdb-index.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - diff --git a/lib/app-pouchdb/app-pouchdb-query.html b/lib/app-pouchdb/app-pouchdb-query.html deleted file mode 100644 index d8abf9fe..00000000 --- a/lib/app-pouchdb/app-pouchdb-query.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - - diff --git a/lib/app-pouchdb/app-pouchdb-sync.html b/lib/app-pouchdb/app-pouchdb-sync.html deleted file mode 100644 index 53e405a6..00000000 --- a/lib/app-pouchdb/app-pouchdb-sync.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - diff --git a/lib/app-pouchdb/bower.json b/lib/app-pouchdb/bower.json index 6d19a2c7..b1f3bb8b 100644 --- a/lib/app-pouchdb/bower.json +++ b/lib/app-pouchdb/bower.json @@ -1,6 +1,6 @@ { "name": "app-pouchdb", - "version": "1.0.0", + "version": "2.1.1", "authors": [ "The Polymer Authors" ], @@ -17,24 +17,55 @@ "private": true, "ignore": [], "dependencies": { - "polymer": "polymer/polymer#^v1.2.0", "pouchdb": "^6.1.1", + "polymer": "Polymer/polymer#1.9 - 2", "pouchdb-find": "^0.10.0", - "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0", - "app-storage": "polymerelements/app-storage#~1.0.0" + "app-storage": "polymerelements/app-storage#1 - 2" }, "devDependencies": { - "web-component-tester": "^4.0.0", - "iron-component-page": "polymerelements/iron-component-page#^1.0.0", - "paper-input": "polymerelements/paper-input#^1.0.0", - "paper-styles": "polymerelements/paper-styles#^1.0.0", + "iron-component-page": "polymerelements/iron-component-page#1 - 2", + "paper-input": "polymerelements/paper-input#1 - 2", + "paper-styles": "polymerelements/paper-styles#1 - 2", "font-roboto": "polymerelements/font-roboto#^1.0.0", - "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", - "iron-icon": "polymerelements/iron-icon#^1.0.0", - "paper-fab": "polymerelements/paper-fab#^1.0.0", - "iron-icons": "polymerelements/iron-icons#^1.0.0", - "paper-button": "polymerelements/paper-button#^1.0.0", - "platinum-sw": "polymerelements/platinum-sw#^1.3.0", - "note-app-elements": "polymerlabs/note-app-elements" + "iron-flex-layout": "polymerelements/iron-flex-layout#1 - 2", + "iron-icon": "polymerelements/iron-icon#1 - 2", + "note-app-elements": "polymerlabs/note-app-elements#1 - 2", + "paper-fab": "polymerelements/paper-fab#1 - 2", + "iron-icons": "polymerelements/iron-icons#1 - 2", + "paper-button": "polymerelements/paper-button#1 - 2", + "promise-polyfill": "polymerlabs/promise-polyfill#1 - 2", + "webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0", + "web-component-tester": "^6.0.0" + }, + "variants": { + "1.x": { + "dependencies": { + "pouchdb": "^6.1.1", + "polymer": "Polymer/polymer#^1.9", + "pouchdb-find": "^0.10.0", + "app-storage": "polymerelements/app-storage#^1.0.0" + }, + "devDependencies": { + "iron-component-page": "polymerelements/iron-component-page#^1.0.0", + "paper-input": "polymerelements/paper-input#^1.0.0", + "paper-styles": "polymerelements/paper-styles#^1.0.0", + "font-roboto": "polymerelements/font-roboto#^1.0.0", + "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", + "iron-icon": "polymerelements/iron-icon#^1.0.0", + "paper-fab": "polymerelements/paper-fab#^1.0.0", + "iron-icons": "polymerelements/iron-icons#^1.0.0", + "paper-button": "polymerelements/paper-button#^1.0.0", + "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0", + "note-app-elements": "polymerlabs/note-app-elements#1.x", + "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", + "web-component-tester": "^4.0.0" + }, + "resolutions": { + "webcomponentsjs": "^0.7" + } + } + }, + "resolutions": { + "webcomponentsjs": "^1.0.0" } } diff --git a/lib/app-pouchdb/demo/index.html b/lib/app-pouchdb/demo/index.html index 298dd717..beb8a462 100644 --- a/lib/app-pouchdb/demo/index.html +++ b/lib/app-pouchdb/demo/index.html @@ -39,7 +39,7 @@ - + + - - - - - - - - - app-pouchdb - - - - - - - - - - - - - diff --git a/lib/app-pouchdb/pouchdb.find.html b/lib/app-pouchdb/pouchdb.find.html deleted file mode 100644 index 6420991d..00000000 --- a/lib/app-pouchdb/pouchdb.find.html +++ /dev/null @@ -1,10 +0,0 @@ - - diff --git a/lib/app-pouchdb/pouchdb.html b/lib/app-pouchdb/pouchdb.html deleted file mode 100644 index b1b956e8..00000000 --- a/lib/app-pouchdb/pouchdb.html +++ /dev/null @@ -1,10 +0,0 @@ - - diff --git a/lib/app-pouchdb/test/app-pouchdb-document.html b/lib/app-pouchdb/test/app-pouchdb-document.html index c8905b27..6d819770 100644 --- a/lib/app-pouchdb/test/app-pouchdb-document.html +++ b/lib/app-pouchdb/test/app-pouchdb-document.html @@ -14,9 +14,56 @@ app-pouchdb-document tests + + + + @@ -51,33 +98,5 @@ - diff --git a/lib/app-pouchdb/test/index.html b/lib/app-pouchdb/test/index.html index 0f45595d..e70cc873 100644 --- a/lib/app-pouchdb/test/index.html +++ b/lib/app-pouchdb/test/index.html @@ -18,7 +18,8 @@ diff --git a/lib/app-route/.bower.json b/lib/app-route/.bower.json index ccb56feb..54006145 100644 --- a/lib/app-route/.bower.json +++ b/lib/app-route/.bower.json @@ -1,6 +1,6 @@ { "name": "app-route", - "version": "1.0.1", + "version": "2.0.1", "authors": [ "The Polymer Authors" ], @@ -14,31 +14,62 @@ "homepage": "https://github.com/PolymerElements/app-route", "private": true, "ignore": [], + "dependencies": { + "iron-location": "PolymerElements/iron-location#1 - 2", + "polymer": "Polymer/polymer#1.9 - 2" + }, "devDependencies": { - "paper-styles": "polymerelements/paper-styles#^1.0.13", - "paper-input": "polymerelements/paper-input#^1.1.2", + "google-youtube": "GoogleWebComponents/google-youtube#1 - 2", + "iron-component-page": "polymerelements/iron-component-page#1 - 2", + "iron-demo-helpers": "PolymerElements/iron-demo-helpers#1 - 2", + "iron-pages": "PolymerElements/iron-pages#1 - 2", + "iron-test-helpers": "polymerelements/iron-test-helpers#1 - 2", + "paper-card": "PolymerElements/paper-card#1 - 2", + "paper-icon-button": "polymerelements/paper-icon-button#1 - 2", + "paper-input": "polymerelements/paper-input#1 - 2", + "paper-spinner": "PolymerElements/paper-spinner#1 - 2", + "paper-styles": "PolymerElements/paper-styles#1 - 2", + "paper-toggle-button": "polymerelements/paper-toggle-button#1 - 2", + "url": "webcomponents/URL#^0.5.7", "web-component-tester": "^4.0.0", - "iron-component-page": "polymerelements/iron-component-page#^1.0.0", - "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0", - "iron-pages": "PolymerElements/iron-pages#^1.0.7", - "paper-card": "PolymerElements/paper-card#^1.1.1", - "paper-icon-button": "polymerelements/paper-icon-button#^v1.0.0", - "paper-toggle-button": "polymerelements/paper-toggle-button#^v1.0.0", - "google-youtube": "GoogleWebComponents/google-youtube#^1.2.1", - "iron-demo-helpers": "PolymerElements/iron-demo-helpers#^1.2.0", - "paper-spinner": "PolymerElements/paper-spinner#^1.1.1" + "webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0" }, - "dependencies": { - "polymer": "Polymer/polymer#^1.3.1", - "iron-location": "PolymerElements/iron-location#^0.8.1" + "variants": { + "1.x": { + "dependencies": { + "iron-location": "polymerelements/iron-location#^0.8.1", + "polymer": "Polymer/polymer#^1.9" + }, + "devDependencies": { + "google-youtube": "GoogleWebComponents/google-youtube#^1.2.1", + "iron-component-page": "polymerelements/iron-component-page#^1.0.0", + "iron-demo-helpers": "PolymerElements/iron-demo-helpers#^1.2.0", + "iron-pages": "PolymerElements/iron-pages#^1.0.7", + "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0", + "paper-card": "PolymerElements/paper-card#^1.1.1", + "paper-icon-button": "polymerelements/paper-icon-button#^v1.0.0", + "paper-input": "polymerelements/paper-input#^1.1.2", + "paper-spinner": "PolymerElements/paper-spinner#^1.1.1", + "paper-styles": "polymerelements/paper-styles#^1.0.13", + "paper-toggle-button": "polymerelements/paper-toggle-button#^1.0.0", + "web-component-tester": "^4.0.0", + "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" + }, + "resolutions": { + "webcomponentsjs": "^0.7" + } + } + }, + "resolutions": { + "webcomponentsjs": "^1.0.0" }, - "_release": "1.0.1", + "_release": "2.0.1", "_resolution": { "type": "version", - "tag": "v1.0.1", - "commit": "4993cfbc114de494ee9df6890da0509221c38587" + "tag": "v2.0.1", + "commit": "da2d1c251202bf0c76542a4cfdedec028ee3f33c" }, - "_source": "git://github.com/PolymerElements/app-route.git", - "_target": "^1.0.0", + "_source": "https://github.com/PolymerElements/app-route.git", + "_target": "^2.0.0", "_originalSource": "PolymerElements/app-route" } \ No newline at end of file diff --git a/lib/app-route/.github/ISSUE_TEMPLATE.md b/lib/app-route/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 0c018d64..00000000 --- a/lib/app-route/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,33 +0,0 @@ - -### Description - - -### Expected outcome - - - -### Actual outcome - - - -### Live Demo - - -### Steps to reproduce - - - -### Browsers Affected - -- [ ] Chrome -- [ ] Firefox -- [ ] Safari 9 -- [ ] Safari 8 -- [ ] Safari 7 -- [ ] Edge -- [ ] IE 11 -- [ ] IE 10 diff --git a/lib/app-route/.gitignore b/lib/app-route/.gitignore index 8d4ae253..1b3dfde0 100644 --- a/lib/app-route/.gitignore +++ b/lib/app-route/.gitignore @@ -1 +1,2 @@ -bower_components +bower_components* +bower-*.json \ No newline at end of file diff --git a/lib/app-route/.travis.yml b/lib/app-route/.travis.yml index 4cdcd1ec..fd8adc67 100644 --- a/lib/app-route/.travis.yml +++ b/lib/app-route/.travis.yml @@ -1,5 +1,5 @@ language: node_js -node_js: '6' +node_js: stable addons: firefox: latest apt: @@ -8,12 +8,13 @@ addons: packages: - google-chrome-stable before_script: - - npm install -g bower polylint web-component-tester - - bower install - - polylint + - npm install -g polymer-cli + - polymer install --variants script: - - xvfb-run wct - - 'if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s ''default''; fi' + - xvfb-run polymer test + - >- + if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then polymer test -s 'default'; + fi env: global: - secure: >- diff --git a/lib/app-route/CONTRIBUTING.md b/lib/app-route/CONTRIBUTING.md deleted file mode 100644 index 34d61544..00000000 --- a/lib/app-route/CONTRIBUTING.md +++ /dev/null @@ -1,77 +0,0 @@ - - -# Polymer Elements -## Guide for Contributors - -Polymer Elements are built in the open, and the Polymer authors eagerly encourage any and all forms of community contribution. When contributing, please follow these guidelines: - -### Filing Issues - -**If you are filing an issue to request a feature**, please provide a clear description of the feature. It can be helpful to describe answers to the following questions: - - 1. **Who will use the feature?** _“As someone filling out a form…”_ - 2. **When will they use the feature?** _“When I enter an invalid value…”_ - 3. **What is the user’s goal?** _“I want to be visually notified that the value needs to be corrected…”_ - -**If you are filing an issue to report a bug**, please provide: - - 1. **A clear description of the bug and related expectations.** Consider using the following example template for reporting a bug: - - ```markdown - The `paper-foo` element causes the page to turn pink when clicked. - - ## Expected outcome - - The page stays the same color. - - ## Actual outcome - - The page turns pink. - - ## Steps to reproduce - - 1. Put a `paper-foo` element in the page. - 2. Open the page in a web browser. - 3. Click the `paper-foo` element. - ``` - - 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [https://jsbin.com/hirore/edit?html,output](https://jsbin.com/hirore/edit?html,output). - - 3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers. - -### Submitting Pull Requests - -**Before creating a pull request**, please ensure that an issue exists for the corresponding change in the pull request that you intend to make. **If an issue does not exist, please create one per the guidelines above**. The goal is to discuss the design and necessity of the proposed change with Polymer authors and community before diving into a pull request. - -When submitting pull requests, please provide: - - 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues in the pull request description using the following syntax: - - ```markdown - (For a single issue) - Fixes #20 - - (For multiple issues) - Fixes #32, fixes #40 - ``` - - 2. **A succinct description of the design** used to fix any related issues. For example: - - ```markdown - This fixes #20 by removing styles that leaked which would cause the page to turn pink whenever `paper-foo` is clicked. - ``` - - 3. **At least one test for each bug fixed or feature added** as part of the pull request. Pull requests that fix bugs or add features without accompanying tests will not be considered. - -If a proposed change contains multiple commits, please [squash commits](https://www.google.com/url?q=http://blog.steveklabnik.com/posts/2012-11-08-how-to-squash-commits-in-a-github-pull-request) to as few as is necessary to succinctly express the change. A Polymer author can help you squash commits, so don’t be afraid to ask us if you need help with that! diff --git a/lib/app-route/README.md b/lib/app-route/README.md deleted file mode 100644 index ee6bdd1d..00000000 --- a/lib/app-route/README.md +++ /dev/null @@ -1,217 +0,0 @@ - - - -[![Build status](https://travis-ci.org/PolymerElements/app-route.svg?branch=master)](https://travis-ci.org/PolymerElements/app-route) - - -## <app-route> - -`app-route` is an element that enables declarative, self-describing routing -for a web app. - -> *n.b. app-route is still in beta. We expect it will need some changes. We're counting on your feedback!* - -In its typical usage, a `app-route` element consumes an object that describes -some state about the current route, via the `route` property. It then parses -that state using the `pattern` property, and produces two artifacts: some `data` -related to the `route`, and a `tail` that contains the rest of the `route` that -did not match. - -Here is a basic example, when used with `app-location`: - -```html - - - -``` - -In the above example, the `app-location` produces a `route` value. Then, the -`route.path` property is matched by comparing it to the `pattern` property. If -the `pattern` property matches `route.path`, the `app-route` will set or update -its `data` property with an object whose properties correspond to the parameters -in `pattern`. So, in the above example, if `route.path` was `'/about'`, the value -of `data` would be `{"page": "about"}`. - -The `tail` property represents the remaining part of the route state after the -`pattern` has been applied to a matching `route`. - -Here is another example, where `tail` is used: - -```html - - - - - -``` - -In the above example, there are two `app-route` elements. The first -`app-route` consumes a `route`. When the `route` is matched, the first -`app-route` also produces `routeData` from its `data`, and `subroute` from -its `tail`. The second `app-route` consumes the `subroute`, and when it -matches, it produces an object called `subrouteData` from its `data`. - -So, when `route.path` is `'/about'`, the `routeData` object will look like -this: `{ page: 'about' }` - -And `subrouteData` will be null. However, if `route.path` changes to -`'/article/123'`, the `routeData` object will look like this: -`{ page: 'article' }` - -And the `subrouteData` will look like this: `{ id: '123' }` - -`app-route` is responsive to bi-directional changes to the `data` objects -they produce. So, if `routeData.page` changed from `'article'` to `'about'`, -the `app-route` will update `route.path`. This in-turn will update the -`app-location`, and cause the global location bar to change its value. - - - -## <app-location> - -`app-location` is an element that provides synchronization between the -browser location bar and the state of an app. When created, `app-location` -elements will automatically watch the global location for changes. As changes -occur, `app-location` produces and updates an object called `route`. This -`route` object is suitable for passing into a `app-route`, and other similar -elements. - -An example of the public API of a route object that describes the URL -`https://elements.polymer-project.org/elements/app-location`: - -```css -{ - prefix: '', - path: '/elements/app-location' -} -``` - -Example Usage: - -```html - - -``` - -As you can see above, the `app-location` element produces a `route` and that -property is then bound into the `app-route` element. The bindings are two- -directional, so when changes to the `route` object occur within `app-route`, -they automatically reflect back to the global location. - -### Hashes vs Paths - -By default `app-location` routes using the pathname portion of the URL. This has -broad browser support but it does require cooperation of the backend server. An -`app-location` can be configured to use the hash part of a URL instead using -the `use-hash-as-path` attribute, like so: - -```html - -``` - -### Integrating with other routing code - -There is no standard event that is fired when window.location is modified. -`app-location` fires a `location-changed` event on `window` when it updates the -location. It also listens for that same event, and re-reads the URL when it's -fired. This makes it very easy to interop with other routing code. - -So for example if you want to navigate to `/new_path` imperatively you could -call `window.location.pushState` or `window.location.replaceState` followed by -firing a `location-changed` event on `window`. i.e. - -```javascript -window.history.pushState({}, null, '/new_path'); -window.dispatchEvent(new CustomEvent('location-changed')); -``` - - - -## <app-route-converter> - -`app-route-converter` provides a means to convert a path and query -parameters into a route object and vice versa. This produced route object -is to be fed into route-consuming elements such as `app-route`. - -> n.b. This element is intended to be a primitive of the routing system and for -creating bespoke routing solutions from scratch. To simply include routing in -an app, please refer to [app-location](https://github.com/PolymerElements/app-route/blob/master/app-location.html) -and [app-route](https://github.com/PolymerElements/app-route/blob/master/app-route.html). - -An example of a route object that describes -`https://elements.polymer-project.org/elements/app-route-converter?foo=bar&baz=qux` -and should be passed to other `app-route` elements: - -```css -{ - prefix: '', - path: '/elements/app-route-converter', - __queryParams: { - foo: 'bar', - baz: 'qux' - } -} -``` - -`__queryParams` is private to discourage directly data-binding to it. This is so -that routing elements like `app-route` can intermediate changes to the query -params and choose whether to propagate them upstream or not. `app-route` for -example will not propagate changes to its `queryParams` property if it is not -currently active. A public queryParams object will also be produced in which you -should perform data-binding operations. - -Example Usage: - -```html - - - - - - - -``` - -This is a simplified implementation of the `app-location` element. Here the -`iron-location` produces a path and a query, the `iron-query-params` consumes -the query and produces a queryParams object, and the `app-route-converter` -consumes the path and the query params and converts it into a route which is in -turn is consumed by the `app-route`. - - - -## Polymer.AppRouteConverterBehavior - -Provides bidirectional mapping between `path` and `queryParams` and a -app-route compatible `route` object. - -For more information, see the docs for `app-route-converter`. - - diff --git a/lib/app-route/app-location.html b/lib/app-route/app-location.html index 3e001ae1..48a9b60d 100644 --- a/lib/app-route/app-location.html +++ b/lib/app-route/app-location.html @@ -164,6 +164,13 @@ path: { type: String, observer: '__onPathChanged' + }, + + /** + * Whether or not the ready function has been called. + */ + _isReady: { + type: Boolean } }, @@ -173,12 +180,16 @@ '__computeRoutePath(useHashAsPath, __hash, __path)' ], + ready: function() { + this._isReady = true; + }, + __computeRoutePath: function() { this.path = this.useHashAsPath ? this.__hash : this.__path; }, __onPathChanged: function() { - if (!this._readied) { + if (!this._isReady) { return; } diff --git a/lib/app-route/app-route-converter-behavior.html b/lib/app-route/app-route-converter-behavior.html deleted file mode 100644 index 23cc9dc7..00000000 --- a/lib/app-route/app-route-converter-behavior.html +++ /dev/null @@ -1,112 +0,0 @@ - - diff --git a/lib/app-route/app-route-converter.html b/lib/app-route/app-route-converter.html deleted file mode 100644 index e16b653f..00000000 --- a/lib/app-route/app-route-converter.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - diff --git a/lib/app-route/app-route.html b/lib/app-route/app-route.html index 7ed66b46..2165f848 100644 --- a/lib/app-route/app-route.html +++ b/lib/app-route/app-route.html @@ -142,7 +142,7 @@ }, /** - * Whether the current route is active. True if `route.path` matches the + * Whether the current route is active. True if `route.path` matches the * `pattern`, false otherwise. */ active: { @@ -180,11 +180,12 @@ /** * Deal with the query params object being assigned to wholesale. - * @export */ __routeQueryParamsChanged: function(queryParams) { if (queryParams && this.tail) { - this.set('tail.__queryParams', queryParams); + if (this.tail.__queryParams !== queryParams) { + this.set('tail.__queryParams', queryParams); + } if (!this.active || this._queryParamsUpdating) { return; @@ -219,18 +220,12 @@ } }, - /** - * @export - */ __tailQueryParamsChanged: function(queryParams) { - if (queryParams && this.route) { + if (queryParams && this.route && this.route.__queryParams != queryParams) { this.set('route.__queryParams', queryParams); } }, - /** - * @export - */ __queryParamsChanged: function(changes) { if (!this.active || this._queryParamsUpdating) { return; @@ -242,19 +237,16 @@ __resetProperties: function() { this._setActive(false); this._matched = null; - //this.tail = { path: null, prefix: null, queryParams: null }; - //this.data = {}; }, - /** - * @export - */ __tryToMatch: function() { if (!this.route) { return; } + var path = this.route.path; var pattern = this.pattern; + if (!pattern) { return; } @@ -325,12 +317,17 @@ this._dataInUrl[key] = namedMatches[key]; } - this.__setMulti(propertyUpdates); + if (this.setProperties) { + if (!this.active) { + this._setActive(true); + } + // atomic update + this.setProperties(propertyUpdates); + } else { + this.__setMulti(propertyUpdates); + } }, - /** - * @export - */ __tailPathChanged: function(path) { if (!this.active) { return; @@ -346,9 +343,6 @@ this.set('route.path', newPath); }, - /** - * @export - */ __updatePathOnDataChange: function() { if (!this.route || !this.active) { return; @@ -414,7 +408,6 @@ this._pathEffector('tail', this.tail); this._notifyChange('tail'); } - } }); })(); diff --git a/lib/app-route/bower.json b/lib/app-route/bower.json index 29023ae6..2513e4c5 100644 --- a/lib/app-route/bower.json +++ b/lib/app-route/bower.json @@ -1,6 +1,6 @@ { "name": "app-route", - "version": "1.0.1", + "version": "2.0.1", "authors": [ "The Polymer Authors" ], @@ -14,22 +14,53 @@ "homepage": "https://github.com/PolymerElements/app-route", "private": true, "ignore": [], + "dependencies": { + "iron-location": "PolymerElements/iron-location#1 - 2", + "polymer": "Polymer/polymer#1.9 - 2" + }, "devDependencies": { - "paper-styles": "polymerelements/paper-styles#^1.0.13", - "paper-input": "polymerelements/paper-input#^1.1.2", + "google-youtube": "GoogleWebComponents/google-youtube#1 - 2", + "iron-component-page": "polymerelements/iron-component-page#1 - 2", + "iron-demo-helpers": "PolymerElements/iron-demo-helpers#1 - 2", + "iron-pages": "PolymerElements/iron-pages#1 - 2", + "iron-test-helpers": "polymerelements/iron-test-helpers#1 - 2", + "paper-card": "PolymerElements/paper-card#1 - 2", + "paper-icon-button": "polymerelements/paper-icon-button#1 - 2", + "paper-input": "polymerelements/paper-input#1 - 2", + "paper-spinner": "PolymerElements/paper-spinner#1 - 2", + "paper-styles": "PolymerElements/paper-styles#1 - 2", + "paper-toggle-button": "polymerelements/paper-toggle-button#1 - 2", + "url": "webcomponents/URL#^0.5.7", "web-component-tester": "^4.0.0", - "iron-component-page": "polymerelements/iron-component-page#^1.0.0", - "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0", - "iron-pages": "PolymerElements/iron-pages#^1.0.7", - "paper-card": "PolymerElements/paper-card#^1.1.1", - "paper-icon-button": "polymerelements/paper-icon-button#^v1.0.0", - "paper-toggle-button": "polymerelements/paper-toggle-button#^v1.0.0", - "google-youtube": "GoogleWebComponents/google-youtube#^1.2.1", - "iron-demo-helpers": "PolymerElements/iron-demo-helpers#^1.2.0", - "paper-spinner": "PolymerElements/paper-spinner#^1.1.1" + "webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0" }, - "dependencies": { - "polymer": "Polymer/polymer#^1.3.1", - "iron-location": "PolymerElements/iron-location#^0.8.1" + "variants": { + "1.x": { + "dependencies": { + "iron-location": "polymerelements/iron-location#^0.8.1", + "polymer": "Polymer/polymer#^1.9" + }, + "devDependencies": { + "google-youtube": "GoogleWebComponents/google-youtube#^1.2.1", + "iron-component-page": "polymerelements/iron-component-page#^1.0.0", + "iron-demo-helpers": "PolymerElements/iron-demo-helpers#^1.2.0", + "iron-pages": "PolymerElements/iron-pages#^1.0.7", + "iron-test-helpers": "polymerelements/iron-test-helpers#^1.0.0", + "paper-card": "PolymerElements/paper-card#^1.1.1", + "paper-icon-button": "polymerelements/paper-icon-button#^v1.0.0", + "paper-input": "polymerelements/paper-input#^1.1.2", + "paper-spinner": "PolymerElements/paper-spinner#^1.1.1", + "paper-styles": "polymerelements/paper-styles#^1.0.13", + "paper-toggle-button": "polymerelements/paper-toggle-button#^1.0.0", + "web-component-tester": "^4.0.0", + "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" + }, + "resolutions": { + "webcomponentsjs": "^0.7" + } + } + }, + "resolutions": { + "webcomponentsjs": "^1.0.0" } } diff --git a/lib/app-route/demo/data-loading-demo.html b/lib/app-route/demo/data-loading-demo.html deleted file mode 100644 index 20797f7f..00000000 --- a/lib/app-route/demo/data-loading-demo.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - carbon-route data loading example - - - - - - - - - - - - - - - - - diff --git a/lib/app-route/demo/data-loading-demo/flickr-image-page.html b/lib/app-route/demo/data-loading-demo/flickr-image-page.html index eeb3a1e2..637c5cfc 100644 --- a/lib/app-route/demo/data-loading-demo/flickr-image-page.html +++ b/lib/app-route/demo/data-loading-demo/flickr-image-page.html @@ -73,8 +73,11 @@

{{metadata.photo.title._content}}

params: { type: Object, computed: '_computeParams(apiKey, data.id, data.secret)' - } + }, + route: { + type: Object + } }, observers: [ '_clearOldMetadata(route.path)' diff --git a/lib/app-route/demo/data-loading-demo/flickr-search-demo.html b/lib/app-route/demo/data-loading-demo/flickr-search-demo.html deleted file mode 100644 index b13fc7bf..00000000 --- a/lib/app-route/demo/data-loading-demo/flickr-search-demo.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - - - - - - - diff --git a/lib/app-route/demo/data-loading-demo/flickr-search-page.html b/lib/app-route/demo/data-loading-demo/flickr-search-page.html index dedb3eba..2bf69689 100644 --- a/lib/app-route/demo/data-loading-demo/flickr-search-page.html +++ b/lib/app-route/demo/data-loading-demo/flickr-search-page.html @@ -62,6 +62,10 @@ type: Object, computed: '_computeParams(apiKey, queryParams.search)' }, + + route: { + type: Object + } }, observers: [ diff --git a/lib/app-route/demo/index.html b/lib/app-route/demo/index.html index 4a80ad08..0b770230 100644 --- a/lib/app-route/demo/index.html +++ b/lib/app-route/demo/index.html @@ -54,7 +54,7 @@ display: block; position: relative; height: 100vh; - @apply(--paper-font-common-base); + @apply --paper-font-common-base; } :host([video-page-active]) { @@ -156,13 +156,9 @@ } }, - observers: [ - '_onRoutePathChanged(route.path)' - ], - - _onRoutePathChanged: function(path) { + attached: function() { // If we do not have an initial URL, we redirect to /search - if (!path) { + if (!this.route || !this.route.path) { this.set('route.path', '/search/'); } }, diff --git a/lib/app-route/demo/simple-demo.html b/lib/app-route/demo/simple-demo.html index 83f50141..74362ba4 100644 --- a/lib/app-route/demo/simple-demo.html +++ b/lib/app-route/demo/simple-demo.html @@ -47,71 +47,73 @@ - + diff --git a/lib/app-route/demo/youtube-demo/route-info.html b/lib/app-route/demo/youtube-demo/route-info.html index 26e79094..86bfd873 100644 --- a/lib/app-route/demo/youtube-demo/route-info.html +++ b/lib/app-route/demo/youtube-demo/route-info.html @@ -22,7 +22,7 @@ color: #fff; } - Route prefix: {{route.prefix}} · Route path: {{route.path}} · Query params: {{_stringifyQueryParams(route.queryParams.*)}} + Route prefix: {{route.prefix}} · Route path: {{route.path}} · Query params: {{_stringifyQueryParams(route.__queryParams.*)}} - diff --git a/lib/app-route/demo/youtube-demo/youtube-search.html b/lib/app-route/demo/youtube-demo/youtube-search.html index 845c8655..0f275ab4 100644 --- a/lib/app-route/demo/youtube-demo/youtube-search.html +++ b/lib/app-route/demo/youtube-demo/youtube-search.html @@ -64,8 +64,7 @@ category: { type: String, - notify: true, - observer: '_categoryChanged' + notify: true }, params: { diff --git a/lib/app-route/demo/youtube-demo/youtube-toolbar.html b/lib/app-route/demo/youtube-demo/youtube-toolbar.html index 7adc0b76..e016e9f9 100644 --- a/lib/app-route/demo/youtube-demo/youtube-toolbar.html +++ b/lib/app-route/demo/youtube-demo/youtube-toolbar.html @@ -43,7 +43,7 @@ #background { height: 230px; background-image: linear-gradient(#E7291A, #C21616); - @apply(--shadow-elevation-2dp); + @apply --shadow-elevation-2dp; transform-origin: 0 0; transition: transform 0.3s; transform: scaleY(1); @@ -169,7 +169,7 @@
- +
diff --git a/lib/app-route/index.html b/lib/app-route/index.html deleted file mode 100644 index 5b354f51..00000000 --- a/lib/app-route/index.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - app-router - - - - - - - - - - - - - diff --git a/lib/app-route/test/app-example-1.html b/lib/app-route/test/app-example-1.html deleted file mode 100644 index e86a7038..00000000 --- a/lib/app-route/test/app-example-1.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - diff --git a/lib/app-route/test/app-location.html b/lib/app-route/test/app-location.html index cdb71237..5731b511 100644 --- a/lib/app-route/test/app-location.html +++ b/lib/app-route/test/app-location.html @@ -14,6 +14,7 @@ + diff --git a/lib/app-route/test/app-route-converter.html b/lib/app-route/test/app-route-converter.html deleted file mode 100644 index b5b8c559..00000000 --- a/lib/app-route/test/app-route-converter.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - app-route-converter - - - - - - - - - - - - - - diff --git a/lib/app-route/test/app-route.html b/lib/app-route/test/app-route.html index da4af2ca..de44b701 100644 --- a/lib/app-route/test/app-route.html +++ b/lib/app-route/test/app-route.html @@ -14,12 +14,24 @@ + + - -