summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation')
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.bower.json90
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.github/CODEOWNERS2
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.github/ISSUE_TEMPLATE.md33
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.travis.yml30
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/CONTRIBUTING.md77
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/README.md299
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/cascaded-animation.d.ts36
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/cascaded-animation.html94
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-in-animation.d.ts32
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-in-animation.html48
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-out-animation.d.ts32
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-out-animation.html48
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/hero-animation.d.ts41
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/hero-animation.html82
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/opaque-animation.d.ts25
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/opaque-animation.html45
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/reverse-ripple-animation.d.ts42
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/reverse-ripple-animation.html86
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/ripple-animation.d.ts44
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/ripple-animation.html92
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-down-animation.d.ts35
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-down-animation.html64
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-up-animation.d.ts35
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-up-animation.html64
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-down-animation.d.ts34
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-down-animation.html58
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-bottom-animation.d.ts34
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-bottom-animation.html58
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-left-animation.d.ts35
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-left-animation.html59
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-right-animation.d.ts35
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-right-animation.html59
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-top-animation.d.ts34
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-top-animation.html58
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-left-animation.d.ts34
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-left-animation.html58
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-right-animation.d.ts34
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-right-animation.html58
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-up-animation.d.ts34
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-up-animation.html58
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/transform-animation.d.ts36
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/transform-animation.html69
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/bower.json80
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/index.html174
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/x-card.html100
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/x-cards-list.html81
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/declarative/index.html150
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/index.html76
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/my-animatable.html68
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/my-dialog.html94
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/dropdown/animated-dropdown.html90
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/dropdown/index.html61
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/animated-grid.html160
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/fullsize-page-with-card.html125
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/index.html74
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/index.html46
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/full-view.html123
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/index.html38
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/list-demo.html101
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/list-view.html131
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/animated-grid.html145
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/full-page.html82
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/index.html51
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/shared-styles.html47
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/circles-page.html115
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/index.html80
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/squares-page.html102
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/gen-tsd.json5
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/guides/neon-animation.md314
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/index.html30
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable-behavior.d.ts53
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable-behavior.html150
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable.d.ts32
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable.html54
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animated-pages.d.ts38
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animated-pages.html219
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-behavior.d.ts50
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-behavior.html92
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-runner-behavior.d.ts36
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-runner-behavior.html155
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation.d.ts19
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation.html18
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animations.d.ts30
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animations.html29
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animatable-behavior.d.ts29
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animatable-behavior.html43
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animation-behavior.d.ts33
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animation-behavior.html72
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/package-lock.json974
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/package.json17
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/web-animations.d.ts10
-rw-r--r--chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/web-animations.html11
92 files changed, 7228 insertions, 0 deletions
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.bower.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.bower.json
new file mode 100644
index 00000000000..b353dd13762
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.bower.json
@@ -0,0 +1,90 @@
+{
+ "name": "neon-animation",
+ "description": "A system for animating Polymer-based web components",
+ "authors": [
+ "The Polymer Authors"
+ ],
+ "keywords": [
+ "web-components",
+ "web-component",
+ "polymer",
+ "web-animations"
+ ],
+ "main": [
+ "neon-animated-pages.html",
+ "neon-animatable-behavior.html",
+ "neon-animation-behavior.html",
+ "neon-animation-runner-behavior.html",
+ "neon-shared-element-animatable-behavior.html",
+ "neon-shared-element-animation-behavior.html",
+ "neon-animatable.html",
+ "neon-animations.html"
+ ],
+ "private": true,
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/PolymerElements/neon-animation"
+ },
+ "license": "http://polymer.github.io/LICENSE.txt",
+ "homepage": "https://github.com/PolymerElements/neon-animation",
+ "ignore": [],
+ "demos": {
+ "Demo": "demo/index.html"
+ },
+ "dependencies": {
+ "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#1 - 2",
+ "iron-selector": "PolymerElements/iron-selector#1 - 2",
+ "polymer": "Polymer/polymer#1.9 - 2"
+ },
+ "devDependencies": {
+ "app-layout": "PolymerElements/app-layout#1 - 2",
+ "iron-component-page": "PolymerElements/iron-component-page#1 - 2",
+ "iron-flex-layout": "PolymerElements/iron-flex-layout#1 - 2",
+ "iron-icon": "PolymerElements/iron-icon#1 - 2",
+ "iron-icons": "PolymerElements/iron-icons#1 - 2",
+ "paper-icon-button": "PolymerElements/paper-icon-button#1 - 2",
+ "paper-item": "PolymerElements/paper-item#1 - 2",
+ "paper-styles": "PolymerElements/paper-styles#1 - 2",
+ "web-animations-js": "web-animations/web-animations-js#^2.2.0",
+ "web-component-tester": "^6.0.0",
+ "webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0"
+ },
+ "variants": {
+ "1.x": {
+ "dependencies": {
+ "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#^1.0.0",
+ "iron-selector": "PolymerElements/iron-selector#^1.0.0",
+ "polymer": "Polymer/polymer#^1.9",
+ "web-animations-js": "web-animations/web-animations-js#^2.2.0"
+ },
+ "devDependencies": {
+ "app-layout": "PolymerElements/app-layout#^0.10.0",
+ "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
+ "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0",
+ "iron-icon": "PolymerElements/iron-icon#^1.0.0",
+ "iron-icons": "PolymerElements/iron-icons#^1.0.0",
+ "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0",
+ "paper-item": "PolymerElements/paper-item#^1.0.0",
+ "paper-styles": "PolymerElements/paper-styles#^1.0.0",
+ "web-component-tester": "^4.0.0",
+ "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
+ },
+ "resolutions": {
+ "webcomponentsjs": "^0.7"
+ }
+ }
+ },
+ "resolutions": {
+ "webcomponentsjs": "^1.0.0"
+ },
+ "version": "2.2.1",
+ "_release": "2.2.1",
+ "_resolution": {
+ "type": "version",
+ "tag": "v2.2.1",
+ "commit": "e7508084d0a99cc9fedad1964efb4e69c8527629"
+ },
+ "_source": "https://github.com/PolymerElements/neon-animation.git",
+ "_target": "1 - 2",
+ "_originalSource": "PolymerElements/neon-animation"
+} \ No newline at end of file
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.github/CODEOWNERS b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.github/CODEOWNERS
new file mode 100644
index 00000000000..9ef9eb64211
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.github/CODEOWNERS
@@ -0,0 +1,2 @@
+* @e111077
+/.travis.yml @azakus
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.github/ISSUE_TEMPLATE.md b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 00000000000..08943a1e152
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,33 @@
+<!-- Instructions: https://github.com/PolymerElements/neon-animation/CONTRIBUTING.md#filing-issues -->
+### Description
+<!-- Example: The `paper-foo` element causes the page to turn pink when clicked. -->
+
+### Expected outcome
+
+<!-- Example: The page stays the same color. -->
+
+### Actual outcome
+
+<!-- Example: The page turns pink. -->
+
+### Live Demo
+<!-- Example: https://jsbin.com/cagaye/edit?html,output -->
+
+### Steps to reproduce
+
+<!-- Example
+1. Put a `paper-foo` element in the page.
+2. Open the page in a web browser.
+3. Click the `paper-foo` element.
+-->
+
+### Browsers Affected
+<!-- Check all that apply -->
+- [ ] Chrome
+- [ ] Firefox
+- [ ] Safari 9
+- [ ] Safari 8
+- [ ] Safari 7
+- [ ] Edge
+- [ ] IE 11
+- [ ] IE 10
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.travis.yml b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.travis.yml
new file mode 100644
index 00000000000..dfdc7d99adc
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/.travis.yml
@@ -0,0 +1,30 @@
+language: node_js
+sudo: required
+node_js: stable
+addons:
+ firefox: latest
+ apt:
+ sources:
+ - google-chrome
+ packages:
+ - google-chrome-stable
+ sauce_connect: true
+before_script:
+ - npm install -g polymer-cli
+ - polymer install --variants
+ - >-
+ npm run update-types && git diff --exit-code || (echo -e
+ '\n\033[31mERROR:\033[0m Typings are stale. Please run "npm run
+ update-types".' && false)
+script:
+ - xvfb-run polymer test
+ - >-
+ if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then polymer test -s 'default';
+ fi
+env:
+ global:
+ - secure: >-
+ coZBjQTrTsejOS2utVzo0hhyYRF40H2KoN30G44tRxVKV/0orSm1HJbvG2YDb/tmAFtEObJmNlYonu1I3G9RVncn9y69nRf8BjLHrpOIhNvesug7kPUuprj5KRoLo9O0UyIYmUh6i4YGt1aAeR/Wq/XVifSNIXnAVguzntbSmqvWJdqj8+FHmNzyo5269+tnOzTruXByrUcSZnvNgHjCYFZOY00a29cyK6fTdd0Qbzi9cvhEDfx1j6uXzYah7bdA8caunW1HvxwI+jiV8yEVySB7eku+SHA+8JJUIIZEL1iCASAqqVbTUoOxtfgbTXQRJdVAuDNj1J+AqFVtuJpJl4xvX97dF9FVQvgyLW9fpeb7rojdU0TSazBpVi7LLvocQjofp8bbAtbJ8Z0BN+/3DgM33uDTF8DeBGj2WmR+49F2oPnYh7FwjhbiOVqkOKyolqrRpK0PYczVdHusR6+cONkGcLzO9G5nakWzE9diJSW+nw9qD3bVL99ZzHK+6U7+R75KJdxj0V7VA1lkvWRlchxXrpsEoM0AQEUf97LsvkTpXPQ4Wf9XkCxFRAicSTeDijLCPy3ti0L6D6x9sBZwV5d3ODnkdxCAy2aY7g2YEWuuBDZC+W1ggQ3Xe705GwbBNk22HikA6XOVX9lb3xm7SnenfDGkFhNDzRijoGg96jU=
+ - secure: >-
+ hJ6VMaJqDh5HPdeERIqoOcdWZJTAOTeS/Lr6FLCWEOOvYPxwRi/L1pKbVuYf2ugeS2Z0TEvAS7RdfjRuC+NGFhsmpnpBlxAyJhVKcXrhHKVtoFK04xaCD2wDMkPaZiDZQRGF/H6/PyuoB4Tqss3aN/DC9eSMwY9HFfoeYRIwiJeb8Kq09pBtvoxU151VQt+jlmyCVw7rhNDTAazaCGKicgvbAtxSJ6xNswNfqOrtCYB+WW5CpUE+qqTjjbistSQJu3hjk2UwFMLJZXtJWdkcD88vNdHy3mtNZQNtE8x+ckNVqgJ98DyAN7HLUU0GvzTOiOGFfwr+bpl6Td8klR2YoQOW4ypluAetcDN9X7tKOxDQaaI8AyPLXPWi9JcESEGAeLzpfkWZ6clrQmqfLdVDsqYKPldF9m7Ozjdhq40r3qFdQAdEI29dBOKOalaZXgWnvU2wu5FBtWnBMSk89zOYC5wGR0E+wOMMMRu90LuMQY40Myhqso5iUFL5qhrn41I8ZfFi0EyOgEeKzYH3zrdo7/msEkCXxI0SKfG1CGSQSOT2luO6Xu6xIuf7qoWYKJiJQ40ObsRKn0cA4GQpNZe/dgKMRH2zzfKW6d2BSAsZGTDJG14XcDi9d/zz7djgboMjc/A6sH8L3c8BkbUa4wuyJRNu7VBZQHq5yrnHpxC6SbA=
+dist: trusty
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/CONTRIBUTING.md b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/CONTRIBUTING.md
new file mode 100644
index 00000000000..093090d4354
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/CONTRIBUTING.md
@@ -0,0 +1,77 @@
+<!--
+This file is autogenerated based on
+https://github.com/PolymerElements/ContributionGuide/blob/master/CONTRIBUTING.md
+
+If you edit that file, it will get updated everywhere else.
+If you edit this file, your changes will get overridden :)
+
+You can however override the jsbin link with one that's customized to this
+specific element:
+
+jsbin=https://jsbin.com/cagaye/edit?html,output
+-->
+
+# 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/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/README.md b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/README.md
new file mode 100644
index 00000000000..a8d1a4166fa
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/README.md
@@ -0,0 +1,299 @@
+## Changes in 2.0
+* ⚠️ This Element is now deprecated ⚠️
+ * Please use the web animations api or CSS animations
+* Web animations polyfill is now a dev dependency
+
+# neon-animation
+
+`neon-animation` is a suite of elements and behaviors to implement pluggable animated transitions for Polymer Elements using [Web Animations](https://w3c.github.io/web-animations/).
+
+*Warning: The API may change.*
+
+* [A basic animatable element](#basic)
+* [Animation configuration](#configuration)
+ * [Animation types](#configuration-types)
+ * [Configuration properties](#configuration-properties)
+ * [Using multiple animations](#configuration-multiple)
+ * [Running animations encapsulated in children nodes](#configuration-encapsulation)
+* [Page transitions](#page-transitions)
+ * [Shared element animations](#shared-element)
+ * [Declarative page transitions](#declarative-page)
+* [Included animations](#animations)
+
+<a name="basic"></a>
+## A basic animatable element
+
+Elements that can be animated should implement the `Polymer.NeonAnimatableBehavior` behavior, or `Polymer.NeonAnimationRunnerBehavior` if they're also responsible for running an animation.
+
+```js
+Polymer({
+ is: 'my-animatable',
+ behaviors: [
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+ properties: {
+ animationConfig: {
+ value: function() {
+ return {
+ // provided by neon-animation/animations/scale-down-animation.html
+ name: 'scale-down-animation',
+ node: this
+ }
+ }
+ }
+ },
+ listeners: {
+ // this event is fired when the animation finishes
+ 'neon-animation-finish': '_onNeonAnimationFinish'
+ },
+ animate: function() {
+ // run scale-down-animation
+ this.playAnimation();
+ },
+ _onNeonAnimationFinish: function() {
+ console.log('animation done!');
+ }
+});
+```
+
+
+<a name="configuration"></a>
+## Animation configuration
+
+<a name="configuration-types"></a>
+### Animation types
+
+An element might run different animations, for example it might do something different when it enters the view and when it exits from view. You can set the `animationConfig` property to a map from an animation type to configuration.
+
+```js
+Polymer({
+ is: 'my-dialog',
+ behaviors: [
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+ properties: {
+ opened: {
+ type: Boolean
+ },
+ animationConfig: {
+ value: function() {
+ return {
+ 'entry': {
+ // provided by neon-animation/animations/scale-up-animation.html
+ name: 'scale-up-animation',
+ node: this
+ },
+ 'exit': {
+ // provided by neon-animation/animations/fade-out-animation.html
+ name: 'fade-out-animation',
+ node: this
+ }
+ }
+ }
+ }
+ },
+ listeners: {
+ 'neon-animation-finish': '_onNeonAnimationFinish'
+ },
+ show: function() {
+ this.opened = true;
+ this.style.display = 'inline-block';
+ // run scale-up-animation
+ this.playAnimation('entry');
+ },
+ hide: function() {
+ this.opened = false;
+ // run fade-out-animation
+ this.playAnimation('exit');
+ },
+ _onNeonAnimationFinish: function() {
+ if (!this.opened) {
+ this.style.display = 'none';
+ }
+ }
+});
+```
+
+
+You can also use the convenience properties `entryAnimation` and `exitAnimation` to set `entry` and `exit` animations:
+
+```js
+properties: {
+ entryAnimation: {
+ value: 'scale-up-animation'
+ },
+ exitAnimation: {
+ value: 'fade-out-animation'
+ }
+}
+```
+
+<a name="configuration-properties"></a>
+### Configuration properties
+
+You can pass additional parameters to configure an animation in the animation configuration object.
+All animations should accept the following properties:
+
+ * `name`: The name of an animation, ie. an element implementing `Polymer.NeonAnimationBehavior`.
+ * `node`: The target node to apply the animation to. Defaults to `this`.
+ * `timing`: Timing properties to use in this animation. They match the [Web Animations Animation Effect Timing interface](https://w3c.github.io/web-animations/#the-animationeffecttiming-interface). The
+ properties include the following:
+ * `duration`: The duration of the animation in milliseconds.
+ * `delay`: The delay before the start of the animation in milliseconds.
+ * `easing`: A timing function for the animation. Matches the CSS timing function values.
+
+Animations may define additional configuration properties and they are listed in their documentation.
+
+<a name="configuration-multiple"></a>
+### Using multiple animations
+
+Set the animation configuration to an array to combine animations, like this:
+
+```js
+animationConfig: {
+ value: function() {
+ return {
+ // fade-in-animation is run with a 50ms delay from slide-down-animation
+ 'entry': [{
+ name: 'slide-down-animation',
+ node: this
+ }, {
+ name: 'fade-in-animation',
+ node: this,
+ timing: {delay: 50}
+ }]
+ }
+ }
+}
+```
+
+<a name="configuration-encapsulation"></a>
+### Running animations encapsulated in children nodes
+
+You can include animations in the configuration that are encapsulated in a child element that implement `Polymer.NeonAnimatableBehavior` with the `animatable` property.
+
+```js
+animationConfig: {
+ value: function() {
+ return {
+ // run fade-in-animation on this, and the entry animation on this.$.myAnimatable
+ 'entry': [
+ {name: 'fade-in-animation', node: this},
+ {animatable: this.$.myAnimatable, type: 'entry'}
+ ]
+ }
+ }
+}
+```
+
+<a name="page-transitions"></a>
+## Page transitions
+
+*The artist formerly known as `<core-animated-pages>`*
+
+The `neon-animated-pages` element manages a set of pages to switch between, and runs animations between the page transitions. It implements the `Polymer.IronSelectableBehavior` behavior. Each child node should implement `Polymer.NeonAnimatableBehavior` and define the `entry` and `exit` animations. During a page transition, the `entry` animation is run on the new page and the `exit` animation is run on the old page.
+
+<a name="shared-element"></a>
+### Shared element animations
+
+Shared element animations work on multiple nodes. For example, a "hero" animation is used during a page transition to make two elements from separate pages appear to animate as a single element. Shared element animation configurations have an `id` property that identify they belong in the same animation. Elements containing shared elements also have a `sharedElements` property defines a map from `id` to element, the element involved with the animation.
+
+In the incoming page:
+
+```js
+properties: {
+ animationConfig: {
+ value: function() {
+ return {
+ // the incoming page defines the 'entry' animation
+ 'entry': {
+ name: 'hero-animation',
+ id: 'hero',
+ toPage: this
+ }
+ }
+ }
+ },
+ sharedElements: {
+ value: function() {
+ return {
+ 'hero': this.$.hero
+ }
+ }
+ }
+}
+```
+
+In the outgoing page:
+
+```js
+properties: {
+ animationConfig: {
+ value: function() {
+ return {
+ // the outgoing page defines the 'exit' animation
+ 'exit': {
+ name: 'hero-animation',
+ id: 'hero',
+ fromPage: this
+ }
+ }
+ }
+ },
+ sharedElements: {
+ value: function() {
+ return {
+ 'hero': this.$.otherHero
+ }
+ }
+ }
+}
+```
+
+<a name="declarative-page"></a>
+### Declarative page transitions
+
+For convenience, if you define the `entry-animation` and `exit-animation` attributes on `<neon-animated-pages>`, those animations will apply for all page transitions.
+
+For example:
+
+```js
+<neon-animated-pages id="pages" class="flex" selected="[[selected]]" entry-animation="slide-from-right-animation" exit-animation="slide-left-animation">
+ <neon-animatable>1</neon-animatable>
+ <neon-animatable>2</neon-animatable>
+ <neon-animatable>3</neon-animatable>
+ <neon-animatable>4</neon-animatable>
+ <neon-animatable>5</neon-animatable>
+</neon-animated-pages>
+```
+
+The new page will slide in from the right, and the old page slide away to the left.
+
+<a name="animations"></a>
+## Included animations
+
+Single element animations:
+
+ * `fade-in-animation` Animates opacity from `0` to `1`;
+ * `fade-out-animation` Animates opacity from `1` to `0`;
+ * `scale-down-animation` Animates transform from `scale(1)` to `scale(0)`;
+ * `scale-up-animation` Animates transform from `scale(0)` to `scale(1)`;
+ * `slide-down-animation` Animates transform from `none` to `translateY(100%)`;
+ * `slide-up-animation` Animates transform from `none` to `translateY(-100%)`;
+ * `slide-from-top-animation` Animates transform from `translateY(-100%)` to `none`;
+ * `slide-from-bottom-animation` Animates transform from `translateY(100%)` to `none`;
+ * `slide-left-animation` Animates transform from `none` to `translateX(-100%)`;
+ * `slide-right-animation` Animates transform from `none` to `translateX(100%)`;
+ * `slide-from-left-animation` Animates transform from `translateX(-100%)` to `none`;
+ * `slide-from-right-animation` Animates transform from `translateX(100%)` to `none`;
+ * `transform-animation` Animates a custom transform.
+
+Note that there is a restriction that only one transform animation can be applied on the same element at a time. Use the custom `transform-animation` to combine transform properties.
+
+Shared element animations
+
+ * `hero-animation` Animates an element such that it looks like it scales and transforms from another element.
+ * `ripple-animation` Animates an element to full screen such that it looks like it ripples from another element.
+
+Group animations
+ * `cascaded-animation` Applys an animation to an array of elements with a delay between each.
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/cascaded-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/cascaded-animation.d.ts
new file mode 100644
index 00000000000..5bcd3a01f93
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/cascaded-animation.d.ts
@@ -0,0 +1,36 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/cascaded-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<cascaded-animation>` applies an animation on an array of elements with a delay between each.
+ * the delay defaults to 50ms.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'cascaded-animation',
+ * animation: <animation-name>,
+ * nodes: <array-of-nodes>,
+ * nodeDelay: <node-delay-in-ms>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface CascadedAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ complete(): void;
+ configure(config: {animation: string, nodes: Element[], nodeDelay?: number, timing?: object|null}): any;
+}
+
+interface HTMLElementTagNameMap {
+ "cascaded-animation": CascadedAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/cascaded-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/cascaded-animation.html
new file mode 100644
index 00000000000..39c8713a6a1
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/cascaded-animation.html
@@ -0,0 +1,94 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<cascaded-animation>` applies an animation on an array of elements with a delay between each.
+the delay defaults to 50ms.
+
+Configuration:
+```
+{
+ name: 'cascaded-animation',
+ animation: <animation-name>,
+ nodes: <array-of-nodes>,
+ nodeDelay: <node-delay-in-ms>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'cascaded-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ /**
+ * @param {{
+ * animation: string,
+ * nodes: !Array<!Element>,
+ * nodeDelay: (number|undefined),
+ * timing: (Object|undefined)
+ * }} config
+ */
+ configure: function(config) {
+ this._animations = [];
+ var nodes = config.nodes;
+ var effects = [];
+ var nodeDelay = config.nodeDelay || 50;
+
+ config.timing = config.timing || {};
+ config.timing.delay = config.timing.delay || 0;
+
+ var oldDelay = config.timing.delay;
+ var abortedConfigure;
+ for (var node, index = 0; node = nodes[index]; index++) {
+ config.timing.delay += nodeDelay;
+ config.node = node;
+
+ var animation = document.createElement(config.animation);
+ if (animation.isNeonAnimation) {
+ var effect = animation.configure(config);
+
+ this._animations.push(animation);
+ effects.push(effect);
+ } else {
+ console.warn(this.is + ':', config.animation, 'not found!');
+ abortedConfigure = true;
+ break;
+ }
+ }
+ config.timing.delay = oldDelay;
+ config.node = null;
+ // if a bad animation was configured, abort config.
+ if (abortedConfigure) {
+ return;
+ }
+
+ this._effect = new GroupEffect(effects);
+ return this._effect;
+ },
+
+ complete: function() {
+ for (var animation, index = 0; animation = this._animations[index]; index++) {
+ animation.complete(animation.config);
+ }
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-in-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-in-animation.d.ts
new file mode 100644
index 00000000000..b261d804df0
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-in-animation.d.ts
@@ -0,0 +1,32 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/fade-in-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<fade-in-animation>` animates the opacity of an element from 0 to 1.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'fade-in-animation',
+ * node: <node>
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface FadeInAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "fade-in-animation": FadeInAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-in-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-in-animation.html
new file mode 100644
index 00000000000..c18849ec909
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-in-animation.html
@@ -0,0 +1,48 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<fade-in-animation>` animates the opacity of an element from 0 to 1.
+
+Configuration:
+```
+{
+ name: 'fade-in-animation',
+ node: <node>
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'fade-in-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+ this._effect = new KeyframeEffect(node, [
+ {'opacity': '0'},
+ {'opacity': '1'}
+ ], this.timingFromConfig(config));
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-out-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-out-animation.d.ts
new file mode 100644
index 00000000000..1e2f371e968
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-out-animation.d.ts
@@ -0,0 +1,32 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/fade-out-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<fade-out-animation>` animates the opacity of an element from 1 to 0.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'fade-out-animation',
+ * node: <node>
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface FadeOutAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "fade-out-animation": FadeOutAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-out-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-out-animation.html
new file mode 100644
index 00000000000..abd20b181b9
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/fade-out-animation.html
@@ -0,0 +1,48 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<fade-out-animation>` animates the opacity of an element from 1 to 0.
+
+Configuration:
+```
+{
+ name: 'fade-out-animation',
+ node: <node>
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'fade-out-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+ this._effect = new KeyframeEffect(node, [
+ {'opacity': '1'},
+ {'opacity': '0'}
+ ], this.timingFromConfig(config));
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/hero-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/hero-animation.d.ts
new file mode 100644
index 00000000000..fa29c92805b
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/hero-animation.d.ts
@@ -0,0 +1,41 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/hero-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-shared-element-animation-behavior.d.ts" />
+
+/**
+ * `<hero-animation>` is a shared element animation that scales and transform an element such that it
+ * appears to be shared between two pages. Use this in `<neon-animated-pages>`. The source page
+ * should use this animation in an 'exit' animation and set the `fromPage` configuration property to
+ * itself, and the destination page should use this animation in an `entry` animation and set the
+ * `toPage` configuration property to itself. They should also define the hero elements in the
+ * `sharedElements` property (not a configuration property, see
+ * `Polymer.NeonSharedElementAnimatableBehavior`).
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'hero-animation',
+ * id: <shared-element-id>,
+ * timing: <animation-timing>,
+ * toPage: <node>, /* define for the destination page *\/
+ * fromPage: <node>, /* define for the source page *\/
+ * }
+ * ```
+ */
+interface HeroAnimationElement extends Polymer.Element, Polymer.NeonSharedElementAnimationBehavior {
+ complete(config: any): any;
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "hero-animation": HeroAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/hero-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/hero-animation.html
new file mode 100644
index 00000000000..71488832dd8
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/hero-animation.html
@@ -0,0 +1,82 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-shared-element-animation-behavior.html">
+
+<!--
+`<hero-animation>` is a shared element animation that scales and transform an element such that it
+appears to be shared between two pages. Use this in `<neon-animated-pages>`. The source page
+should use this animation in an 'exit' animation and set the `fromPage` configuration property to
+itself, and the destination page should use this animation in an `entry` animation and set the
+`toPage` configuration property to itself. They should also define the hero elements in the
+`sharedElements` property (not a configuration property, see
+`Polymer.NeonSharedElementAnimatableBehavior`).
+
+Configuration:
+```
+{
+ name: 'hero-animation',
+ id: <shared-element-id>,
+ timing: <animation-timing>,
+ toPage: <node>, /* define for the destination page */
+ fromPage: <node>, /* define for the source page */
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'hero-animation',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var shared = this.findSharedElements(config);
+ if (!shared) {
+ return;
+ }
+
+ var fromRect = shared.from.getBoundingClientRect();
+ var toRect = shared.to.getBoundingClientRect();
+
+ var deltaLeft = fromRect.left - toRect.left;
+ var deltaTop = fromRect.top - toRect.top;
+ var deltaWidth = fromRect.width / toRect.width;
+ var deltaHeight = fromRect.height / toRect.height;
+
+ this._effect = new KeyframeEffect(shared.to, [
+ {'transform': 'translate(' + deltaLeft + 'px,' + deltaTop + 'px) scale(' + deltaWidth + ',' + deltaHeight + ')'},
+ {'transform': 'none'}
+ ], this.timingFromConfig(config));
+
+ this.setPrefixedProperty(shared.to, 'transformOrigin', '0 0');
+ shared.to.style.zIndex = 10000;
+ shared.from.style.visibility = 'hidden';
+
+ return this._effect;
+ },
+
+ complete: function(config) {
+ var shared = this.findSharedElements(config);
+ if (!shared) {
+ return null;
+ }
+ shared.to.style.zIndex = '';
+ shared.from.style.visibility = '';
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/opaque-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/opaque-animation.d.ts
new file mode 100644
index 00000000000..96c48ecee3c
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/opaque-animation.d.ts
@@ -0,0 +1,25 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/opaque-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<opaque-animation>` makes an element `opacity:1` for the duration of the animation. Used to prevent
+ * webkit/safari from drawing a frame before an animation for elements that animate from display:none.
+ */
+interface OpaqueAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ complete(config: any): void;
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "opaque-animation": OpaqueAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/opaque-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/opaque-animation.html
new file mode 100644
index 00000000000..bfe7d6461b8
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/opaque-animation.html
@@ -0,0 +1,45 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<opaque-animation>` makes an element `opacity:1` for the duration of the animation. Used to prevent
+webkit/safari from drawing a frame before an animation for elements that animate from display:none.
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'opaque-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+ this._effect = new KeyframeEffect(node, [
+ {'opacity': '1'},
+ {'opacity': '1'}
+ ], this.timingFromConfig(config));
+ node.style.opacity = '0';
+ return this._effect;
+ },
+
+ complete: function(config) {
+ config.node.style.opacity = '';
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/reverse-ripple-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/reverse-ripple-animation.d.ts
new file mode 100644
index 00000000000..2e2c2e9910c
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/reverse-ripple-animation.d.ts
@@ -0,0 +1,42 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/reverse-ripple-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-shared-element-animation-behavior.d.ts" />
+
+/**
+ * `<reverse-ripple-animation>` scales and transform an element such that it appears to ripple down from this element, to either
+ * a shared element, or a screen position.
+ *
+ * If using as a shared element animation in `<neon-animated-pages>`, use this animation in an `exit`
+ * animation in the source page and in an `entry` animation in the destination page. Also, define the
+ * reverse-ripple elements in the `sharedElements` property (not a configuration property, see
+ * `Polymer.NeonSharedElementAnimatableBehavior`).
+ * If using a screen position, define the `gesture` property.
+ * Configuration:
+ * ```
+ * {
+ * name: 'reverse-ripple-animation`.
+ * id: <shared-element-id>, /* set this or gesture *\/
+ * gesture: {x: <page-x>, y: <page-y>}, /* set this or id *\/
+ * timing: <animation-timing>,
+ * toPage: <node>, /* define for the destination page *\/
+ * fromPage: <node>, /* define for the source page *\/
+ * }
+ * ```
+ */
+interface ReverseRippleAnimationElement extends Polymer.Element, Polymer.NeonSharedElementAnimationBehavior {
+ complete(): void;
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "reverse-ripple-animation": ReverseRippleAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/reverse-ripple-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/reverse-ripple-animation.html
new file mode 100644
index 00000000000..c20044a7616
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/reverse-ripple-animation.html
@@ -0,0 +1,86 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-shared-element-animation-behavior.html">
+
+<!--
+`<reverse-ripple-animation>` scales and transform an element such that it appears to ripple down from this element, to either
+a shared element, or a screen position.
+
+If using as a shared element animation in `<neon-animated-pages>`, use this animation in an `exit`
+animation in the source page and in an `entry` animation in the destination page. Also, define the
+reverse-ripple elements in the `sharedElements` property (not a configuration property, see
+`Polymer.NeonSharedElementAnimatableBehavior`).
+If using a screen position, define the `gesture` property.
+Configuration:
+```
+{
+ name: 'reverse-ripple-animation`.
+ id: <shared-element-id>, /* set this or gesture */
+ gesture: {x: <page-x>, y: <page-y>}, /* set this or id */
+ timing: <animation-timing>,
+ toPage: <node>, /* define for the destination page */
+ fromPage: <node>, /* define for the source page */
+}
+```
+-->
+
+<script>
+ Polymer({
+ is: 'reverse-ripple-animation',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var shared = this.findSharedElements(config);
+ if (!shared) {
+ return null;
+ }
+
+ var translateX, translateY;
+ var fromRect = shared.from.getBoundingClientRect();
+ if (config.gesture) {
+ translateX = config.gesture.x - (fromRect.left + (fromRect.width / 2));
+ translateY = config.gesture.y - (fromRect.top + (fromRect.height / 2));
+ } else {
+ var toRect = shared.to.getBoundingClientRect();
+ translateX = (toRect.left + (toRect.width / 2)) - (fromRect.left + (fromRect.width / 2));
+ translateY = (toRect.top + (toRect.height / 2)) - (fromRect.top + (fromRect.height / 2));
+ }
+ var translate = 'translate(' + translateX + 'px,' + translateY + 'px)';
+
+ var size = Math.max(fromRect.width + Math.abs(translateX) * 2, fromRect.height + Math.abs(translateY) * 2);
+ var diameter = Math.sqrt(2 * size * size);
+ var scaleX = diameter / fromRect.width;
+ var scaleY = diameter / fromRect.height;
+ var scale = 'scale(' + scaleX + ',' + scaleY + ')';
+
+ this._effect = new KeyframeEffect(shared.from, [
+ {'transform': translate + ' ' + scale},
+ {'transform': translate + ' scale(0)'}
+ ], this.timingFromConfig(config));
+
+ this.setPrefixedProperty(shared.from, 'transformOrigin', '50% 50%');
+ shared.from.style.borderRadius = '50%';
+
+ return this._effect;
+ },
+
+ complete: function() {
+ if (this.sharedElements) {
+ this.setPrefixedProperty(this.sharedElements.from, 'transformOrigin', '');
+ this.sharedElements.from.style.borderRadius = '';
+ }
+ }
+ });
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/ripple-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/ripple-animation.d.ts
new file mode 100644
index 00000000000..6b8cf5986b1
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/ripple-animation.d.ts
@@ -0,0 +1,44 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/ripple-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-shared-element-animation-behavior.d.ts" />
+
+/**
+ * `<ripple-animation>` scales and transform an element such that it appears to ripple from either
+ * a shared element, or from a screen position, to full screen.
+ *
+ * If using as a shared element animation in `<neon-animated-pages>`, use this animation in an `exit`
+ * animation in the source page and in an `entry` animation in the destination page. Also, define the
+ * hero elements in the `sharedElements` property (not a configuration property, see
+ * `Polymer.NeonSharedElementAnimatableBehavior`).
+ *
+ * If using a screen position, define the `gesture` property.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'ripple-animation`.
+ * id: <shared-element-id>, /* set this or gesture *\/
+ * gesture: {x: <page-x>, y: <page-y>}, /* set this or id *\/
+ * timing: <animation-timing>,
+ * toPage: <node>, /* define for the destination page *\/
+ * fromPage: <node>, /* define for the source page *\/
+ * }
+ * ```
+ */
+interface RippleAnimationElement extends Polymer.Element, Polymer.NeonSharedElementAnimationBehavior {
+ complete(): void;
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "ripple-animation": RippleAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/ripple-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/ripple-animation.html
new file mode 100644
index 00000000000..dd8d2a8e45a
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/ripple-animation.html
@@ -0,0 +1,92 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-shared-element-animation-behavior.html">
+
+<!--
+`<ripple-animation>` scales and transform an element such that it appears to ripple from either
+a shared element, or from a screen position, to full screen.
+
+If using as a shared element animation in `<neon-animated-pages>`, use this animation in an `exit`
+animation in the source page and in an `entry` animation in the destination page. Also, define the
+hero elements in the `sharedElements` property (not a configuration property, see
+`Polymer.NeonSharedElementAnimatableBehavior`).
+
+If using a screen position, define the `gesture` property.
+
+Configuration:
+```
+{
+ name: 'ripple-animation`.
+ id: <shared-element-id>, /* set this or gesture */
+ gesture: {x: <page-x>, y: <page-y>}, /* set this or id */
+ timing: <animation-timing>,
+ toPage: <node>, /* define for the destination page */
+ fromPage: <node>, /* define for the source page */
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'ripple-animation',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var shared = this.findSharedElements(config);
+ if (!shared) {
+ return null;
+ }
+
+ var translateX, translateY;
+ var toRect = shared.to.getBoundingClientRect();
+ if (config.gesture) {
+ translateX = config.gesture.x - (toRect.left + (toRect.width / 2));
+ translateY = config.gesture.y - (toRect.top + (toRect.height / 2));
+ } else {
+ var fromRect = shared.from.getBoundingClientRect();
+ translateX = (fromRect.left + (fromRect.width / 2)) - (toRect.left + (toRect.width / 2));
+ translateY = (fromRect.top + (fromRect.height / 2)) - (toRect.top + (toRect.height / 2));
+ }
+ var translate = 'translate(' + translateX + 'px,' + translateY + 'px)';
+
+ var size = Math.max(toRect.width + Math.abs(translateX) * 2, toRect.height + Math.abs(translateY) * 2);
+ var diameter = Math.sqrt(2 * size * size);
+ var scaleX = diameter / toRect.width;
+ var scaleY = diameter / toRect.height;
+ var scale = 'scale(' + scaleX + ',' + scaleY + ')';
+
+ this._effect = new KeyframeEffect(shared.to, [
+ {'transform': translate + ' scale(0)'},
+ {'transform': translate + ' ' + scale}
+ ], this.timingFromConfig(config));
+
+ this.setPrefixedProperty(shared.to, 'transformOrigin', '50% 50%');
+ shared.to.style.borderRadius = '50%';
+
+ return this._effect;
+ },
+
+ complete: function() {
+ if (this.sharedElements) {
+ this.setPrefixedProperty(this.sharedElements.to, 'transformOrigin', '');
+ this.sharedElements.to.style.borderRadius = '';
+ }
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-down-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-down-animation.d.ts
new file mode 100644
index 00000000000..fd68fff3734
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-down-animation.d.ts
@@ -0,0 +1,35 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/scale-down-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<scale-down-animation>` animates the scale transform of an element from 1 to 0. By default it
+ * scales in both the x and y axes.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'scale-down-animation',
+ * node: <node>,
+ * axis: 'x' | 'y' | '',
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface ScaleDownAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "scale-down-animation": ScaleDownAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-down-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-down-animation.html
new file mode 100644
index 00000000000..91e40840939
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-down-animation.html
@@ -0,0 +1,64 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<scale-down-animation>` animates the scale transform of an element from 1 to 0. By default it
+scales in both the x and y axes.
+
+Configuration:
+```
+{
+ name: 'scale-down-animation',
+ node: <node>,
+ axis: 'x' | 'y' | '',
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'scale-down-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ var scaleProperty = 'scale(0, 0)';
+ if (config.axis === 'x') {
+ scaleProperty = 'scale(0, 1)';
+ } else if (config.axis === 'y') {
+ scaleProperty = 'scale(1, 0)';
+ }
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'scale(1,1)'},
+ {'transform': scaleProperty}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-up-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-up-animation.d.ts
new file mode 100644
index 00000000000..23cec443eb9
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-up-animation.d.ts
@@ -0,0 +1,35 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/scale-up-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<scale-up-animation>` animates the scale transform of an element from 0 to 1. By default it
+ * scales in both the x and y axes.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'scale-up-animation',
+ * node: <node>,
+ * axis: 'x' | 'y' | '',
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface ScaleUpAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "scale-up-animation": ScaleUpAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-up-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-up-animation.html
new file mode 100644
index 00000000000..a6c92202bb7
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/scale-up-animation.html
@@ -0,0 +1,64 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<scale-up-animation>` animates the scale transform of an element from 0 to 1. By default it
+scales in both the x and y axes.
+
+Configuration:
+```
+{
+ name: 'scale-up-animation',
+ node: <node>,
+ axis: 'x' | 'y' | '',
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'scale-up-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ var scaleProperty = 'scale(0)';
+ if (config.axis === 'x') {
+ scaleProperty = 'scale(0, 1)';
+ } else if (config.axis === 'y') {
+ scaleProperty = 'scale(1, 0)';
+ }
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': scaleProperty},
+ {'transform': 'scale(1, 1)'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-down-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-down-animation.d.ts
new file mode 100644
index 00000000000..e03b9877558
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-down-animation.d.ts
@@ -0,0 +1,34 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/slide-down-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<slide-down-animation>` animates the transform of an element from `none` `translateY(100%)`.
+ * The `transformOrigin` defaults to `50% 0`.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'slide-down-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface SlideDownAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "slide-down-animation": SlideDownAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-down-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-down-animation.html
new file mode 100644
index 00000000000..cf56ae5937d
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-down-animation.html
@@ -0,0 +1,58 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<slide-down-animation>` animates the transform of an element from `none` `translateY(100%)`.
+The `transformOrigin` defaults to `50% 0`.
+
+Configuration:
+```
+{
+ name: 'slide-down-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'slide-down-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'translateY(0%)'},
+ {'transform': 'translateY(100%)'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ } else {
+ this.setPrefixedProperty(node, 'transformOrigin', '50% 0');
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-bottom-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-bottom-animation.d.ts
new file mode 100644
index 00000000000..c1fe22039a5
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-bottom-animation.d.ts
@@ -0,0 +1,34 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/slide-from-bottom-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<slide-from-bottom-animation>` animates the transform of an element from `none` to `translateY(100%)`.
+ * The `transformOrigin` defaults to `50% 0`.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'slide-from-bottom-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface SlideFromBottomAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "slide-from-bottom-animation": SlideFromBottomAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-bottom-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-bottom-animation.html
new file mode 100644
index 00000000000..8e7ba7635b5
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-bottom-animation.html
@@ -0,0 +1,58 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<slide-from-bottom-animation>` animates the transform of an element from `none` to `translateY(100%)`.
+The `transformOrigin` defaults to `50% 0`.
+
+Configuration:
+```
+{
+ name: 'slide-from-bottom-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'slide-from-bottom-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'translateY(100%)'},
+ {'transform': 'translateY(0)'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ } else {
+ this.setPrefixedProperty(node, 'transformOrigin', '50% 0');
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-left-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-left-animation.d.ts
new file mode 100644
index 00000000000..b3f0b2e2b70
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-left-animation.d.ts
@@ -0,0 +1,35 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/slide-from-left-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<slide-from-left-animation>` animates the transform of an element from
+ * `translateX(-100%)` to `none`.
+ * The `transformOrigin` defaults to `0 50%`.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'slide-from-left-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface SlideFromLeftAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "slide-from-left-animation": SlideFromLeftAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-left-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-left-animation.html
new file mode 100644
index 00000000000..14d63bddede
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-left-animation.html
@@ -0,0 +1,59 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<slide-from-left-animation>` animates the transform of an element from
+`translateX(-100%)` to `none`.
+The `transformOrigin` defaults to `0 50%`.
+
+Configuration:
+```
+{
+ name: 'slide-from-left-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'slide-from-left-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'translateX(-100%)'},
+ {'transform': 'none'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ } else {
+ this.setPrefixedProperty(node, 'transformOrigin', '0 50%');
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-right-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-right-animation.d.ts
new file mode 100644
index 00000000000..2dea2e6a3f8
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-right-animation.d.ts
@@ -0,0 +1,35 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/slide-from-right-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<slide-from-right-animation>` animates the transform of an element from
+ * `translateX(100%)` to `none`.
+ * The `transformOrigin` defaults to `0 50%`.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'slide-from-right-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface SlideFromRightAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "slide-from-right-animation": SlideFromRightAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-right-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-right-animation.html
new file mode 100644
index 00000000000..f6190bac9a4
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-right-animation.html
@@ -0,0 +1,59 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<slide-from-right-animation>` animates the transform of an element from
+`translateX(100%)` to `none`.
+The `transformOrigin` defaults to `0 50%`.
+
+Configuration:
+```
+{
+ name: 'slide-from-right-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'slide-from-right-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'translateX(100%)'},
+ {'transform': 'none'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ } else {
+ this.setPrefixedProperty(node, 'transformOrigin', '0 50%');
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-top-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-top-animation.d.ts
new file mode 100644
index 00000000000..7e5d47142e5
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-top-animation.d.ts
@@ -0,0 +1,34 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/slide-from-top-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<slide-from-top-animation>` animates the transform of an element from `translateY(-100%)` to
+ * `none`. The `transformOrigin` defaults to `50% 0`.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'slide-from-top-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface SlideFromTopAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "slide-from-top-animation": SlideFromTopAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-top-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-top-animation.html
new file mode 100644
index 00000000000..cf69eaaebe5
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-from-top-animation.html
@@ -0,0 +1,58 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<slide-from-top-animation>` animates the transform of an element from `translateY(-100%)` to
+`none`. The `transformOrigin` defaults to `50% 0`.
+
+Configuration:
+```
+{
+ name: 'slide-from-top-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'slide-from-top-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'translateY(-100%)'},
+ {'transform': 'translateY(0%)'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ } else {
+ this.setPrefixedProperty(node, 'transformOrigin', '50% 0');
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-left-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-left-animation.d.ts
new file mode 100644
index 00000000000..d34e84798b4
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-left-animation.d.ts
@@ -0,0 +1,34 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/slide-left-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<slide-left-animation>` animates the transform of an element from `none` to `translateX(-100%)`.
+ * The `transformOrigin` defaults to `0 50%`.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'slide-left-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface SlideLeftAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "slide-left-animation": SlideLeftAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-left-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-left-animation.html
new file mode 100644
index 00000000000..040cfee0744
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-left-animation.html
@@ -0,0 +1,58 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<slide-left-animation>` animates the transform of an element from `none` to `translateX(-100%)`.
+The `transformOrigin` defaults to `0 50%`.
+
+Configuration:
+```
+{
+ name: 'slide-left-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'slide-left-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'none'},
+ {'transform': 'translateX(-100%)'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ } else {
+ this.setPrefixedProperty(node, 'transformOrigin', '0 50%');
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-right-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-right-animation.d.ts
new file mode 100644
index 00000000000..769d4c170fa
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-right-animation.d.ts
@@ -0,0 +1,34 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/slide-right-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<slide-right-animation>` animates the transform of an element from `none` to `translateX(100%)`.
+ * The `transformOrigin` defaults to `0 50%`.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'slide-right-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface SlideRightAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "slide-right-animation": SlideRightAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-right-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-right-animation.html
new file mode 100644
index 00000000000..7a9342b11b4
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-right-animation.html
@@ -0,0 +1,58 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<slide-right-animation>` animates the transform of an element from `none` to `translateX(100%)`.
+The `transformOrigin` defaults to `0 50%`.
+
+Configuration:
+```
+{
+ name: 'slide-right-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'slide-right-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'none'},
+ {'transform': 'translateX(100%)'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ } else {
+ this.setPrefixedProperty(node, 'transformOrigin', '0 50%');
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-up-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-up-animation.d.ts
new file mode 100644
index 00000000000..4231f8a950f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-up-animation.d.ts
@@ -0,0 +1,34 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/slide-up-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<slide-up-animation>` animates the transform of an element from `translateY(0)` to
+ * `translateY(-100%)`. The `transformOrigin` defaults to `50% 0`.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'slide-up-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface SlideUpAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: any): any;
+}
+
+interface HTMLElementTagNameMap {
+ "slide-up-animation": SlideUpAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-up-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-up-animation.html
new file mode 100644
index 00000000000..eac7a377c4f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/slide-up-animation.html
@@ -0,0 +1,58 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<slide-up-animation>` animates the transform of an element from `translateY(0)` to
+`translateY(-100%)`. The `transformOrigin` defaults to `50% 0`.
+
+Configuration:
+```
+{
+ name: 'slide-up-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'slide-up-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ configure: function(config) {
+ var node = config.node;
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': 'translate(0)'},
+ {'transform': 'translateY(-100%)'}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ } else {
+ this.setPrefixedProperty(node, 'transformOrigin', '50% 0');
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/transform-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/transform-animation.d.ts
new file mode 100644
index 00000000000..03ec4bd501e
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/transform-animation.d.ts
@@ -0,0 +1,36 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * animations/transform-animation.html
+ */
+
+/// <reference path="../../polymer/types/polymer.d.ts" />
+/// <reference path="../neon-animation-behavior.d.ts" />
+
+/**
+ * `<transform-animation>` animates a custom transform on an element. Use this to animate multiple
+ * transform properties, or to apply a custom transform value.
+ *
+ * Configuration:
+ * ```
+ * {
+ * name: 'transform-animation',
+ * node: <node>,
+ * transformOrigin: <transform-origin>,
+ * transformFrom: <transform-from-string>,
+ * transformTo: <transform-to-string>,
+ * timing: <animation-timing>
+ * }
+ * ```
+ */
+interface TransformAnimationElement extends Polymer.Element, Polymer.NeonAnimationBehavior {
+ configure(config: {node: Element, transformOrigin?: string, transformFrom?: string, transformTo?: string, timing?: object|null}): any;
+}
+
+interface HTMLElementTagNameMap {
+ "transform-animation": TransformAnimationElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/transform-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/transform-animation.html
new file mode 100644
index 00000000000..84927271ad7
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/animations/transform-animation.html
@@ -0,0 +1,69 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../polymer/polymer.html">
+<link rel="import" href="../neon-animation-behavior.html">
+
+<!--
+`<transform-animation>` animates a custom transform on an element. Use this to animate multiple
+transform properties, or to apply a custom transform value.
+
+Configuration:
+```
+{
+ name: 'transform-animation',
+ node: <node>,
+ transformOrigin: <transform-origin>,
+ transformFrom: <transform-from-string>,
+ transformTo: <transform-to-string>,
+ timing: <animation-timing>
+}
+```
+-->
+
+<script>
+
+ Polymer({
+
+ is: 'transform-animation',
+
+ behaviors: [
+ Polymer.NeonAnimationBehavior
+ ],
+
+ /**
+ * @param {{
+ * node: !Element,
+ * transformOrigin: (string|undefined),
+ * transformFrom: (string|undefined),
+ * transformTo: (string|undefined),
+ * timing: (Object|undefined)
+ * }} config
+ */
+ configure: function(config) {
+ var node = config.node;
+ var transformFrom = config.transformFrom || 'none';
+ var transformTo = config.transformTo || 'none';
+
+ this._effect = new KeyframeEffect(node, [
+ {'transform': transformFrom},
+ {'transform': transformTo}
+ ], this.timingFromConfig(config));
+
+ if (config.transformOrigin) {
+ this.setPrefixedProperty(node, 'transformOrigin', config.transformOrigin);
+ }
+
+ return this._effect;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/bower.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/bower.json
new file mode 100644
index 00000000000..2dd5c0f5e39
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/bower.json
@@ -0,0 +1,80 @@
+{
+ "name": "neon-animation",
+ "description": "A system for animating Polymer-based web components",
+ "authors": [
+ "The Polymer Authors"
+ ],
+ "keywords": [
+ "web-components",
+ "web-component",
+ "polymer",
+ "web-animations"
+ ],
+ "main": [
+ "neon-animated-pages.html",
+ "neon-animatable-behavior.html",
+ "neon-animation-behavior.html",
+ "neon-animation-runner-behavior.html",
+ "neon-shared-element-animatable-behavior.html",
+ "neon-shared-element-animation-behavior.html",
+ "neon-animatable.html",
+ "neon-animations.html"
+ ],
+ "private": true,
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/PolymerElements/neon-animation"
+ },
+ "license": "http://polymer.github.io/LICENSE.txt",
+ "homepage": "https://github.com/PolymerElements/neon-animation",
+ "ignore": [],
+ "demos": {
+ "Demo": "demo/index.html"
+ },
+ "dependencies": {
+ "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#1 - 2",
+ "iron-selector": "PolymerElements/iron-selector#1 - 2",
+ "polymer": "Polymer/polymer#1.9 - 2"
+ },
+ "devDependencies": {
+ "app-layout": "PolymerElements/app-layout#1 - 2",
+ "iron-component-page": "PolymerElements/iron-component-page#1 - 2",
+ "iron-flex-layout": "PolymerElements/iron-flex-layout#1 - 2",
+ "iron-icon": "PolymerElements/iron-icon#1 - 2",
+ "iron-icons": "PolymerElements/iron-icons#1 - 2",
+ "paper-icon-button": "PolymerElements/paper-icon-button#1 - 2",
+ "paper-item": "PolymerElements/paper-item#1 - 2",
+ "paper-styles": "PolymerElements/paper-styles#1 - 2",
+ "web-animations-js": "web-animations/web-animations-js#^2.2.0",
+ "web-component-tester": "^6.0.0",
+ "webcomponentsjs": "webcomponents/webcomponentsjs#^1.0.0"
+ },
+ "variants": {
+ "1.x": {
+ "dependencies": {
+ "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#^1.0.0",
+ "iron-selector": "PolymerElements/iron-selector#^1.0.0",
+ "polymer": "Polymer/polymer#^1.9",
+ "web-animations-js": "web-animations/web-animations-js#^2.2.0"
+ },
+ "devDependencies": {
+ "app-layout": "PolymerElements/app-layout#^0.10.0",
+ "iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
+ "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0",
+ "iron-icon": "PolymerElements/iron-icon#^1.0.0",
+ "iron-icons": "PolymerElements/iron-icons#^1.0.0",
+ "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0",
+ "paper-item": "PolymerElements/paper-item#^1.0.0",
+ "paper-styles": "PolymerElements/paper-styles#^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/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/index.html
new file mode 100644
index 00000000000..ec246dbc77a
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/index.html
@@ -0,0 +1,174 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+ <head>
+ <title>neon-animated-pages demo: card</title>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+
+ <script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
+
+ <link rel="import" href="../../web-animations.html">
+ <link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+ <link rel="import" href="../../neon-animated-pages.html">
+ <link rel="import" href="../../neon-animations.html">
+ <link rel="import" href="../../../paper-styles/typography.html">
+ <link rel="import" href="x-card.html">
+ <link rel="import" href="x-cards-list.html">
+
+ <custom-style>
+ <style is="custom-style">
+
+ body {
+ padding: 15px;
+ @apply --layout-fullbleed;
+ @apply --paper-font-common-base;
+ }
+
+ neon-animated-pages {
+ height: 100%;
+ }
+
+ .large {
+ width: 100%
+ }
+
+ .button {
+ text-align: center;
+ width: 120px;
+ height: 32px;
+ line-height: 32px;
+ border-radius: 2px;
+ font-size: 0.9em;
+ background-color: #fff;
+ color: #646464;
+ }
+
+ .button.blue {
+ background-color: #4285f4;
+ color: #fff;
+ }
+
+ .button.raised {
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26);
+ }
+
+ .button.back {
+ position: fixed;
+ top: 30px;
+ left: 30px;
+ }
+
+ .card-contents {
+ @apply --layout-vertical;
+ @apply --layout-center-center;
+ @apply --layout-fit;
+ }
+
+ .button-container {
+ @apply --layout-flex;
+ @apply --layout-horizontal;
+ @apply --layout-around-justified;
+ }
+ </style>
+ </custom-style>
+
+ </head>
+ <body>
+ <dom-bind>
+ <template is="dom-bind">
+ <neon-animated-pages id="pages" selected="0">
+ <x-cards-list id="list">
+ <div slot="div" class="card-contents">
+ <h2>Choose a subject</h2>
+ <div class="button-container large">
+ <div class="blue raised button" on-click="_onPolymerClick">
+ POLYMER
+ </div>
+ <div class="blue raised button" on-click="_onAngularClick">
+ ANGULAR
+ </div>
+ </div>
+ </div>
+ </x-cards-list>
+
+ <x-card>
+ <div slot="div" class="card-contents">
+ <div class="raised back button" on-click="_onBackClick">
+ BACK
+ </div>
+ <h2>Polymer</h2>
+ <p>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+ quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+ cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+ proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ </p>
+ </div>
+ </x-card>
+
+ <x-card>
+ <div slot="div" class="card-contents">
+ <div class="raised back button" on-click="_onBackClick">
+ BACK
+ </div>
+ <h2>Angular</h2>
+ <p>
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
+ quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
+ cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
+ proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ </p>
+ </div>
+ </x-card>
+
+ </neon-animated-pages>
+ </template>
+ </dom-bind>
+
+ <script>
+ var polymer2DomBind = document.querySelector('dom-bind');
+ var polymer1DomBindScope = document.querySelector('template[is="dom-bind"]');
+
+ polymer2DomBind._onPolymerClick = function(event) {
+ this.$.list.sharedElements = {
+ 'ripple': event.target,
+ 'reverse-ripple': event.target
+ };
+ this.$.pages.selected = 1;
+ };
+
+ polymer2DomBind._onAngularClick = function(event) {
+ this.$.list.sharedElements = {
+ 'ripple': event.target,
+ 'reverse-ripple': event.target
+ };
+ this.$.pages.selected = 2;
+ };
+
+ polymer2DomBind._onBackClick = function(event) {
+ this.$.pages.selected = 0;
+ };
+
+ polymer1DomBindScope._onPolymerClick = polymer2DomBind._onPolymerClick;
+ polymer1DomBindScope._onAngularClick = polymer2DomBind._onAngularClick;
+ polymer1DomBindScope._onBackClick = polymer2DomBind._onBackClick;
+
+ </script>
+
+ </body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/x-card.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/x-card.html
new file mode 100644
index 00000000000..12979bb1a70
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/x-card.html
@@ -0,0 +1,100 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+<link rel="import" href="../../neon-shared-element-animatable-behavior.html">
+
+<dom-module id="x-card">
+ <template>
+ <style>
+ :host {
+ display: block;
+ overflow: hidden;
+ }
+ #placeholder {
+ opacity: 0;
+ background-color: grey;
+ @apply --layout-fit;
+ }
+ </style>
+
+ <div id="placeholder"></div>
+ <div id="container">
+ <slot name="div"></slot>
+ </div>
+
+ </template>
+</dom-module>
+
+<script>
+(function() {
+ Polymer({
+ is: 'x-card',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimatableBehavior
+ ],
+
+ properties: {
+ animationConfig: {
+ type: Object
+ },
+
+ sharedElements: {
+ type: Object
+ }
+ },
+
+ attached: function() {
+ if (this.animationConfig) {
+ return;
+ }
+
+ this.animationConfig = {
+ 'entry': [{
+ name: 'ripple-animation',
+ id: 'ripple',
+ toPage: this
+ }, {
+ name: 'fade-out-animation',
+ node: this.$.placeholder,
+ timing: {
+ delay: 250
+ }
+ }, {
+ name: 'fade-in-animation',
+ node: this.$.container,
+ timing: {
+ delay: 50
+ }
+ }],
+
+ 'exit': [{
+ name: 'fade-out-animation',
+ node: this.$.container,
+ timing: {
+ duration: 0
+ }
+ }, {
+ name: 'reverse-ripple-animation',
+ id: 'reverse-ripple',
+ fromPage: this
+ }]
+ };
+
+ this.sharedElements = {
+ 'ripple': this.$.placeholder,
+ 'reverse-ripple': this.$.placeholder
+ };
+ }
+ });
+})();
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/x-cards-list.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/x-cards-list.html
new file mode 100644
index 00000000000..a3ba2ca695e
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/card/x-cards-list.html
@@ -0,0 +1,81 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+<link rel="import" href="../../neon-shared-element-animatable-behavior.html">
+
+<dom-module id="x-cards-list">
+ <template>
+ <style>
+ :host {
+ display: block;
+ overflow: hidden;
+ }
+
+ #placeholder {
+ opacity: 0;
+ background-color: grey;
+ @apply --layout-fit;
+ }
+ </style>
+
+ <div id="placeholder"></div>
+ <div id="container">
+ <slot name="div"></slot>
+ </div>
+
+ </template>
+</dom-module>
+
+<script>
+(function() {
+ Polymer({
+ is: 'x-cards-list',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimatableBehavior
+ ],
+
+ properties: {
+ animationConfig: {
+ type: Object
+ }
+ },
+
+ attached: function() {
+ if (this.animationConfig) {
+ return;
+ }
+
+ this.animationConfig = {
+ 'entry': [{
+ name: 'reverse-ripple-animation',
+ id: 'reverse-ripple',
+ toPage: this
+ }],
+
+ 'exit': [{
+ name: 'fade-out-animation',
+ node: this.$.container,
+ timing: {
+ delay: 150,
+ duration: 0
+ }
+ }, {
+ name: 'ripple-animation',
+ id: 'ripple',
+ fromPage: this
+ }]
+ };
+ }
+ });
+})();
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/declarative/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/declarative/index.html
new file mode 100644
index 00000000000..3bac789d1b2
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/declarative/index.html
@@ -0,0 +1,150 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+ <head>
+ <title>neon-animated-pages demo: declarative</title>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+
+ <script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
+
+ <link rel="import" href="../../web-animations.html">
+ <link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+ <link rel="import" href="../../../paper-styles/typography.html">
+ <link rel="import" href="../../../paper-styles/color.html">
+ <link rel="import" href="../../neon-animated-pages.html">
+ <link rel="import" href="../../neon-animatable.html">
+ <link rel="import" href="../../neon-animations.html">
+
+ <custom-style>
+ <style is="custom-style">
+ body {
+ overflow: hidden;
+ height: 100vh;
+ margin: 0px;
+ }
+
+ dom-bind {
+ height: 100%;
+ }
+
+ .toolbar {
+ position: relative;
+
+ padding: 8px;
+
+ background-color: white;
+
+ z-index: 12;
+ }
+
+ neon-animated-pages {
+ height: 100%;
+ @apply --layout-flex;
+ }
+
+ neon-animatable {
+ color: white;
+ @apply --layout-horizontal;
+ @apply --layout-center-center;
+ @apply --paper-font-display4;
+ }
+
+ /* in shady polymer1 slot element is first child */
+ neon-animatable:nth-child(1),
+ neon-animatable:nth-child(6) {
+ background: var(--paper-red-500);
+ }
+
+ neon-animatable:nth-child(2) {
+ background: var(--paper-blue-500);
+ }
+
+ neon-animatable:nth-child(3) {
+ background: var(--paper-orange-500);
+ }
+
+ neon-animatable:nth-child(4) {
+ background: var(--paper-green-500);
+ }
+
+ neon-animatable:nth-child(5) {
+ background: var(--paper-purple-500);
+ }
+
+ </style>
+ </custom-style>
+
+ </head>
+ <body>
+ <dom-bind>
+ <template is="dom-bind">
+ <div class="toolbar">
+ <button on-click="_onPrevClick">&#8678;</button>
+ <button on-click="_onNextClick">&#8680;</button>
+ <button on-click="_onUpClick">&#8679;</button>
+ <button on-click="_onDownClick">&#8681;</button>
+ </div>
+
+ <neon-animated-pages id="pages" selected="[[selected]]" entry-animation="[[entryAnimation]]" exit-animation="[[exitAnimation]]">
+ <neon-animatable>1</neon-animatable>
+ <neon-animatable>2</neon-animatable>
+ <neon-animatable>3</neon-animatable>
+ <neon-animatable>4</neon-animatable>
+ <neon-animatable>5</neon-animatable>
+ </neon-animated-pages>
+
+ </template>
+ </dom-bind>
+
+ <script>
+
+ var scope1 = document.querySelector('template[is="dom-bind"]');
+ var scope2 = document.querySelector('dom-bind');
+
+ scope1.selected = 0;
+ scope2.selected = 0;
+
+ scope1._onPrevClick = function() {
+ this.entryAnimation = 'slide-from-left-animation';
+ this.exitAnimation = 'slide-right-animation';
+ this.selected = this.selected === 0 ? 4 : (this.selected - 1);
+ }
+
+ scope1._onNextClick = function() {
+ this.entryAnimation = 'slide-from-right-animation';
+ this.exitAnimation = 'slide-left-animation';
+ this.selected = this.selected === 4 ? 0 : (this.selected + 1);
+ }
+
+ scope1._onUpClick = function() {
+ this.entryAnimation = 'slide-from-top-animation';
+ this.exitAnimation = 'slide-down-animation';
+ this.selected = this.selected === 4 ? 0 : (this.selected + 1);
+ }
+
+ scope1._onDownClick = function() {
+ this.entryAnimation = 'slide-from-bottom-animation';
+ this.exitAnimation = 'slide-up-animation';
+ this.selected = this.selected === 0 ? 4 : (this.selected - 1);
+ }
+
+ scope2._onPrevClick = scope1._onPrevClick;
+ scope2._onNextClick = scope1._onNextClick;
+ scope2._onUpClick = scope1._onUpClick;
+ scope2._onDownClick = scope1._onDownClick;
+
+ </script>
+
+ </body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/index.html
new file mode 100644
index 00000000000..a15bfa585ae
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/index.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+ <head>
+ <title>neon-animation demo: basic</title>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+
+ <script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
+
+ <link rel="import" href="../../web-animations.html">
+ <link rel="import" href="my-animatable.html">
+ <link rel="import" href="my-dialog.html">
+
+ </head>
+ <style>
+ my-animatable {
+ margin-top: 50px;
+ }
+ </style>
+ <body>
+ <dom-bind>
+ <template is="dom-bind">
+
+ <button on-click="_onCircleButtonClick">toggle circle</button>
+ <button on-click="_onDialogButtonClick">toggle dialog</button>
+
+ <div style="text-align: center">
+ <my-dialog>Hello World!</my-dialog>
+ </div>
+
+ <my-animatable></my-animatable>
+
+ </template>
+ </dom-bind>
+
+ <script>
+
+ var scope1 = document.querySelector('template[is="dom-bind"]');
+ var scope2 = document.querySelector('dom-bind');
+
+ scope1._onCircleButtonClick = function(event) {
+ var node = document.querySelector('my-animatable');
+ if (node) {
+ node.animate();
+ }
+ };
+
+ scope1._onDialogButtonClick = function(event) {
+ var node = document.querySelector('my-dialog');
+ if (node) {
+ if (node.opened) {
+ node.hide();
+ } else {
+ node.show();
+ }
+ }
+ };
+
+ scope2._onCircleButtonClick = scope1._onCircleButtonClick;
+ scope2._onDialogButtonClick = scope1._onDialogButtonClick;
+
+ </script>
+
+ </body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/my-animatable.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/my-animatable.html
new file mode 100644
index 00000000000..86dcb19ea5c
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/my-animatable.html
@@ -0,0 +1,68 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../neon-animation-runner-behavior.html">
+<link rel="import" href="../../animations/scale-down-animation.html">
+
+<dom-module id="my-animatable">
+ <template>
+ <style>
+ :host {
+ display: inline-block;
+ border-radius: 50%;
+ width: 300px;
+ height: 300px;
+ background: orange;
+ }
+ </style>
+ <slot></slot>
+
+ </template>
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'my-animatable',
+
+ behaviors: [
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+
+ properties: {
+
+ animationConfig: {
+ type: Object,
+ value: function() {
+ return {
+ name: 'scale-down-animation',
+ node: this
+ }
+ }
+ }
+
+ },
+
+ listeners: {
+ 'neon-animation-finish': '_onNeonAnimationFinish'
+ },
+
+ animate: function() {
+ this.playAnimation();
+ },
+
+ _onNeonAnimationFinish: function() {
+ console.log('animation finish!');
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/my-dialog.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/my-dialog.html
new file mode 100644
index 00000000000..5ccdff82c76
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/doc/my-dialog.html
@@ -0,0 +1,94 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../paper-styles/shadow.html">
+<link rel="import" href="../../neon-animation-runner-behavior.html">
+<link rel="import" href="../../animations/scale-up-animation.html">
+<link rel="import" href="../../animations/fade-out-animation.html">
+
+
+<dom-module id="my-dialog">
+ <template>
+ <style>
+ :host {
+ display: none;
+ padding: 16px;
+ background: white;
+ color: black;
+ margin: 0 auto;
+ z-index: 100;
+ position: absolute;
+ @apply --shadow-elevation-2dp;
+ }
+ </style>
+ <slot></slot>
+
+ </template>
+
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'my-dialog',
+
+ behaviors: [
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+
+ properties: {
+
+ opened: {
+ type: Boolean
+ },
+
+ animationConfig: {
+ type: Object,
+ value: function() {
+ return {
+ 'entry': [{
+ name: 'scale-up-animation',
+ node: this
+ }],
+ 'exit': [{
+ name: 'fade-out-animation',
+ node: this
+ }]
+ }
+ }
+ }
+
+ },
+
+ listeners: {
+ 'neon-animation-finish': '_onAnimationFinish'
+ },
+
+ _onAnimationFinish: function() {
+ if (!this.opened) {
+ this.style.display = '';
+ }
+ },
+
+ show: function() {
+ this.opened = true;
+ this.style.display = 'inline-block';
+ this.playAnimation('entry');
+ },
+
+ hide: function() {
+ this.opened = false;
+ this.playAnimation('exit');
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/dropdown/animated-dropdown.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/dropdown/animated-dropdown.html
new file mode 100644
index 00000000000..8c09f37a46e
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/dropdown/animated-dropdown.html
@@ -0,0 +1,90 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../paper-styles/shadow.html">
+<link rel="import" href="../../neon-animation-runner-behavior.html">
+
+<dom-module id="animated-dropdown">
+ <template>
+ <style>
+ :host {
+ display: none;
+ padding: 16px;
+ background: white;
+ color: black;
+
+ @apply --shadow-elevation-2dp;
+ }
+ </style>
+ <slot></slot>
+ </template>
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'animated-dropdown',
+
+ behaviors: [
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+
+ properties: {
+
+ animationConfig: {
+ type: Object,
+ value: function() {
+ return {
+ 'entry': [{
+ name: 'scale-up-animation',
+ node: this,
+ transformOrigin: '0 0'
+ }],
+ 'exit': [{
+ name: 'fade-out-animation',
+ node: this
+ }]
+ }
+ }
+ },
+
+ _showing: {
+ type: Boolean,
+ value: false
+ }
+
+ },
+
+ listeners: {
+ 'neon-animation-finish': '_onAnimationFinish'
+ },
+
+ _onAnimationFinish: function() {
+ if (this._showing) {
+ } else {
+ this.style.display = '';
+ }
+ },
+
+ show: function() {
+ this.style.display = 'inline-block';
+ this._showing = true;
+ this.playAnimation('entry');
+ },
+
+ hide: function() {
+ this._showing = false;
+ this.playAnimation('exit');
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/dropdown/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/dropdown/index.html
new file mode 100644
index 00000000000..de81a322a33
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/dropdown/index.html
@@ -0,0 +1,61 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+ <head>
+ <title>neon-animated-pages demo: dropdown</title>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+
+ <script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
+
+ <link rel="import" href="../../web-animations.html">
+ <link rel="import" href="../../neon-animated-pages.html">
+ <link rel="import" href="../../neon-animations.html">
+ <link rel="import" href="animated-dropdown.html">
+
+ </head>
+ <body>
+
+ <dom-bind>
+ <template is="dom-bind">
+
+ <button dropdown-id="dropdown" on-click="_onButtonClick">dropdown</button>
+ <br>
+ <animated-dropdown id="dropdown" on-click="_onDropdownClick">Hello world!</animated-dropdown>
+
+ </template>
+ </dom-bind>
+
+ <script>
+
+ var scope1 = document.querySelector('template[is="dom-bind"]');
+ var scope2 = document.querySelector('dom-bind');
+
+ scope1._onButtonClick = function(event) {
+ var dropdown = document.querySelector('#' + event.target.getAttribute('dropdown-id'));
+ if (dropdown) {
+ dropdown.show();
+ }
+ };
+
+ scope1._onDropdownClick = function(event) {
+ event.target.hide();
+ };
+
+ scope2._onButtonClick = scope1._onButtonClick;
+ scope2._onDropdownClick = scope1._onDropdownClick;
+
+ </script>
+
+ </body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/animated-grid.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/animated-grid.html
new file mode 100644
index 00000000000..3688ace6b21
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/animated-grid.html
@@ -0,0 +1,160 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../paper-styles/typography.html">
+<link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+<link rel="import" href="../../neon-shared-element-animatable-behavior.html">
+<link rel="import" href="../shared-styles.html">
+
+<dom-module id="animated-grid">
+ <template>
+ <style include="shared-styles">
+
+ :host {
+ display: block;
+ background: #000;
+ }
+
+ .tile {
+ display: inline-block;
+ float: left;
+ vertical-align: top;
+ width: calc(100% / 6);
+ height: calc(100% / 3);
+
+ @apply --paper-font-title;
+ @apply --layout-vertical;
+ @apply --layout-center-center;
+ }
+
+ .tile:nth-of-type(1) {
+ width: calc(100% / 3);
+ height: calc(100% / 3 * 2);
+ }
+
+ .tile:nth-of-type(4) {
+ width: calc(100% / 3);
+ }
+
+ .tile:nth-of-type(5) {
+ width: calc(100% / 3);
+ height: calc(100% / 3 * 2);
+ }
+
+ .tile:nth-of-type(8) {
+ width: calc(100% / 3);
+ height: calc(100% / 3);
+ }
+
+ .tile:nth-of-type(9) {
+ position: absolute;
+ top: calc(100% / 3 * 2);
+ left: 0;
+ width: calc(100% / 6);
+ height: calc(100% / 3);
+ }
+
+ .tile:nth-of-type(10) {
+ position: absolute;
+ top: calc(100% / 3 * 2);
+ left: calc(100% / 6);;
+ width: calc(100% / 6);
+ height: calc(100% / 3);
+ }
+ </style>
+
+ <template is="dom-repeat" items="[[config]]">
+ <div item="[[item]]" class$="[[_computeTileClass(item.color)]]" on-click="_onClick">
+ <span>[[item.value]]</span>
+ </div>
+ </template>
+
+ </template>
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'animated-grid',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimatableBehavior
+ ],
+
+ properties: {
+
+ config: {
+ type: Array,
+ value: function() {
+ return [
+ {value: 1, color: 'blue'},
+ {value: 2, color: 'red'},
+ {value: 3, color: 'blue'},
+ {value: 4, color: 'green'},
+ {value: 5, color: 'yellow'},
+ {value: 6, color: 'blue'},
+ {value: 7, color: 'red'},
+ {value: 8, color: 'green'},
+ {value: 9, color: 'yellow'},
+ {value: 10, color: 'red'}
+ ]
+ }
+ },
+
+ animationConfig: {
+ type: Object,
+ value: function() {
+ return {
+ 'exit': [{
+ name: 'ripple-animation',
+ id: 'ripple',
+ fromPage: this
+ }, {
+ name: 'hero-animation',
+ id: 'hero',
+ fromPage: this
+ }]
+ }
+ }
+ }
+
+ },
+
+ _computeTileClass: function(color) {
+ return 'tile ' + color + '-300';
+ },
+
+ _onClick: function(event) {
+ var target = Polymer.dom(event).rootTarget;
+
+ if (!target.item) {
+ target = Polymer.dom(target).parentNode;
+ }
+
+ // configure the page animation
+ this.sharedElements = {
+ 'hero': target,
+ 'ripple': target
+ };
+ this.animationConfig['exit'][0].gesture = {
+ x: event.x || event.pageX,
+ y: event.y || event.pageY
+ };
+
+ this.fire('tile-click', {
+ tile: target,
+ data: target.item
+ });
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/fullsize-page-with-card.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/fullsize-page-with-card.html
new file mode 100644
index 00000000000..8f334ec44ac
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/fullsize-page-with-card.html
@@ -0,0 +1,125 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../neon-shared-element-animatable-behavior.html">
+<link rel="import" href="../../../paper-styles/color.html">
+<link rel="import" href="../shared-styles.html">
+
+<dom-module id="fullsize-page-with-card">
+ <template>
+ <style include="shared-styles"></style>
+ <style>
+
+ :host {
+ display: block;
+ }
+
+ .fixed {
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 100vh;
+ width: 100vw;
+ }
+
+ .card {
+ position: relative;
+ margin: 200px 100px 0;
+ height: 700px;
+ }
+
+ </style>
+
+ <div id="fixed" class$="[[_computeFixedBackgroundClass(color)]]"></div>
+ <div id="card" class$="[[_computeCardClass(color)]]"></div>
+
+ </template>
+
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'fullsize-page-with-card',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimatableBehavior
+ ],
+
+ properties: {
+
+ color: {
+ type: String
+ },
+
+ sharedElements: {
+ type: Object
+ },
+
+ animationConfig: {
+ type: Object
+ }
+ },
+
+ attached: function() {
+ if (this.animationConfig) {
+ return;
+ }
+
+ this.sharedElements = {
+ 'hero': this.$.card,
+ 'ripple': this.$.fixed
+ };
+
+ this.animationConfig = {
+ 'entry': [{
+ name: 'ripple-animation',
+ id: 'ripple',
+ toPage: this,
+ }, {
+ name: 'hero-animation',
+ id: 'hero',
+ toPage: this,
+ timing: {
+ delay: 150
+ }
+ }],
+ 'exit': [{
+ name: 'fade-out-animation',
+ node: this.$.fixed
+ }, {
+ name: 'transform-animation',
+ transformFrom: 'none',
+ transformTo: 'translate(0px,-200vh) scale(0.9,1)',
+ node: this.$.card
+ }]
+ };
+ },
+
+ _computeCardClass: function(color) {
+ var cls = 'card';
+ if (color) {
+ cls += ' ' + color + '-300';
+ }
+ return cls;
+ },
+
+ _computeFixedBackgroundClass: function(color) {
+ var cls = 'fixed';
+ if (color) {
+ cls += ' ' + color + '-100';
+ }
+ return cls;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/index.html
new file mode 100644
index 00000000000..d88ec2d7979
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/grid/index.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+ <head>
+ <title>neon-animated-pages demo: grid</title>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+
+ <script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
+
+ <link rel="import" href="../../web-animations.html">
+ <link rel="import" href="../../neon-animated-pages.html">
+ <link rel="import" href="../../neon-animations.html">
+ <link rel="import" href="animated-grid.html">
+ <link rel="import" href="fullsize-page-with-card.html">
+
+ <custom-style>
+ <style is="custom-style">
+ body {
+ overflow: hidden;
+ @apply --layout-fullbleed;
+ }
+
+ neon-animated-pages {
+ height: 100%;
+ }
+ </style>
+ </custom-style>
+
+ </head>
+ <body>
+ <dom-bind>
+ <template is="dom-bind">
+ <neon-animated-pages id="pages" selected="0">
+ <animated-grid on-tile-click="_onTileClick"></animated-grid>
+ <fullsize-page-with-card id="fullsize-card" on-click="_onFullsizeClick">
+ </fullsize-page-with-card>
+ </neon-animated-pages>
+ </template>
+ </dom-bind>
+
+ <script>
+
+ var scope1 = document.querySelector('template[is="dom-bind"]');
+ var scope2 = document.querySelector('dom-bind');
+
+ var _onTileClick = function(event) {
+ this.$['fullsize-card'].color = event.detail.data.color;
+ this.$.pages.selected = 1;
+ };
+
+ var _onFullsizeClick = function(event) {
+ this.$.pages.selected = 0;
+ };
+
+ scope1._onTileClick = _onTileClick;
+ scope1._onFullsizeClick = _onFullsizeClick;
+ scope2._onTileClick = _onTileClick;
+ scope2._onFullsizeClick = _onFullsizeClick;
+
+ </script>
+
+ </body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/index.html
new file mode 100644
index 00000000000..1ca9f2d50ce
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/index.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html lang="en">
+<head>
+ <title>neon-animated pages demo</title>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+
+ <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
+
+ <link rel="import" href="../../paper-styles/demo-pages.html">
+ <link rel="import" href="../web-animations.html">
+</head>
+<style>
+ a {
+ display: block;
+ margin-bottom: 10px;
+ }
+</style>
+<body unresolved>
+ <div class="horizontal-section-container">
+ <div>
+ <h4>Sample demos</h4>
+ <div class="horizontal-section">
+ <a href="doc/index.html">basic</a>
+ <a href="declarative/index.html">declarative</a>
+ <a href="dropdown/index.html">dropdown</a>
+ <a href="grid/index.html">grid</a>
+ <a href="list/index.html">list</a>
+ <a href="load/index.html">load</a>
+ <a href="tiles/index.html">tiles</a>
+ <a href="card/index.html">card</a>
+ </div>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/full-view.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/full-view.html
new file mode 100644
index 00000000000..da52eb318ba
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/full-view.html
@@ -0,0 +1,123 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+<link rel="import" href="../../../paper-styles/shadow.html">
+<link rel="import" href="../../../app-layout/app-toolbar/app-toolbar.html">
+<link rel="import" href="../../neon-animatable-behavior.html">
+
+<dom-module id="full-view">
+ <template>
+ <style>
+ :host {
+ @apply --layout-vertical;
+ }
+
+ .main {
+ background: white;
+ @apply --layout-flex;
+ @apply --layout-scroll;
+ @apply --shadow-elevation-8dp;
+ }
+
+ .image-container {
+ position: relative;
+ width: 100%;
+ padding-bottom: 100%;
+ }
+
+ .image {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background: repeating-linear-gradient(
+ 45deg,
+ #f5f5f5,
+ #f5f5f5 8px,
+ #e0e0e0 8px,
+ #e0e0e0 16px
+ );
+ }
+
+ app-toolbar {
+ color: white;
+ background-color: var(--google-blue-500);
+ }
+ </style>
+ <app-toolbar>
+ <paper-icon-button id="button" icon="clear" on-click="_onClearButtonClick"></paper-icon-button>
+ </app-toolbar>
+
+ <div id="main" class="main">
+ <div class="image-container">
+ <div class="image">
+ </div>
+ </div>
+ </div>
+
+ </template>
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'full-view',
+
+ behaviors: [
+ Polymer.NeonAnimatableBehavior
+ ],
+
+ properties: {
+
+ sharedElements: {
+ type: Object
+ },
+
+ animationConfig: {
+ type: Object
+ }
+ },
+
+ attached: function() {
+ if (this.animationConfig) {
+ return;
+ }
+
+ this.sharedElements = { 'hero': this.$.main };
+ this.animationConfig = {
+ 'entry': [{
+ name: 'fade-in-animation',
+ node: this.$.button
+ }, {
+ name: 'hero-animation',
+ id: 'hero',
+ toPage: this
+ }],
+
+ 'exit': [{
+ name: 'fade-out-animation',
+ node: this.$.button
+ }, {
+ name: 'scale-down-animation',
+ node: this.$.main,
+ transformOrigin: '50% 50%',
+ axis: 'y'
+ }]
+ }
+ },
+
+ _onClearButtonClick: function() {
+ this.fire('close');
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/index.html
new file mode 100644
index 00000000000..6e100bd21f3
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+ <head>
+ <title>neon-animated-pages demo: list</title>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+ <script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
+ <link rel="import" href="../../web-animations.html">
+ <link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+ <link rel="import" href="list-demo.html">
+
+ </head>
+ <custom-style>
+ <style is="custom-style">
+ body {
+ @apply --layout-fullbleed;
+ }
+
+ list-demo {
+ @apply --layout-fit;
+ }
+ </style>
+ </custom-style>
+ <body>
+ <list-demo></list-demo>
+ </body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/list-demo.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/list-demo.html
new file mode 100644
index 00000000000..21897e4c357
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/list-demo.html
@@ -0,0 +1,101 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../neon-animated-pages.html">
+<link rel="import" href="../../neon-animations.html">
+<link rel="import" href="list-view.html">
+<link rel="import" href="full-view.html">
+
+<dom-module id="list-demo">
+ <template>
+ <style>
+ :host {
+ display: block;
+ }
+ neon-animated-pages {
+ height: 100%;
+ }
+ </style>
+ <neon-animated-pages id="pages" selected="0">
+ <list-view data="[[fileData]]" on-item-click="_onItemClick"></list-view>
+ <full-view on-close="_onClose"></full-view>
+ </neon-animated-pages>
+ </template>
+
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'list-demo',
+
+ properties: {
+
+ fileData: {
+ type: Array,
+ value: function() {
+ return [
+ {fileName: 'IMG_4130.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4131.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4132.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4133.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4134.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4135.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4136.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4137.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4138.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4139.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4140.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4141.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4142.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4143.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4144.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4145.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4146.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4147.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4148.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4149.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4150.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4151.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4152.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4153.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4154.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4155.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4156.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4157.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4158.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4159.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4160.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4161.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4162.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4163.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4164.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4165.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4166.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4167.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4168.jpg', modifiedDate: 'May 12 2015'},
+ {fileName: 'IMG_4169.jpg', modifiedDate: 'May 12 2015'}
+ ]
+ }
+ }
+ },
+
+ _onItemClick: function() {
+ this.$.pages.selected = 1;
+ },
+
+ _onClose: function() {
+ this.$.pages.selected = 0;
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/list-view.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/list-view.html
new file mode 100644
index 00000000000..2620a35599b
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/list/list-view.html
@@ -0,0 +1,131 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../iron-icons/iron-icons.html">
+<link rel="import" href="../../../iron-icon/iron-icon.html">
+<link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+<link rel="import" href="../../../paper-icon-button/paper-icon-button.html">
+<link rel="import" href="../../../paper-item/paper-item.html">
+<link rel="import" href="../../../paper-item/paper-item-body.html">
+<link rel="import" href="../../../app-layout/app-toolbar/app-toolbar.html">
+<link rel="import" href="../../../paper-styles/color.html">
+<link rel="import" href="../../neon-animatable-behavior.html">
+
+<dom-module id="list-view">
+ <template>
+ <style>
+ :host {
+ @apply --layout-vertical;
+ }
+
+ .main {
+ @apply --layout-flex;
+ @apply --layout-scroll;
+ }
+
+ iron-icon {
+ color: var(--google-grey-500);
+ }
+
+ app-toolbar {
+ color: white;
+ background-color: var(--google-blue-500);
+ }
+ </style>
+ <app-toolbar>
+ <paper-icon-button id="button" icon="arrow-back"></paper-icon-button>
+ </app-toolbar>
+
+ <div class="main">
+
+ <template is="dom-repeat" items="[[data]]">
+
+ <paper-item>
+ <paper-item-body two-line>
+ <div>[[item.fileName]]</div>
+ <div secondary>[[item.modifiedDate]]</div>
+ </paper-item-body>
+ <iron-icon icon="info"></iron-icon>
+ </paper-item>
+
+ </template>
+
+ </div>
+
+ </template>
+
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'list-view',
+
+ behaviors: [
+ Polymer.NeonAnimatableBehavior
+ ],
+
+ listeners: {
+ 'click': '_onClick'
+ },
+
+ properties: {
+
+ data: {
+ type: Array,
+ value: function() {
+ return [];
+ }
+ },
+
+ animationConfig: {
+ type: Object
+ }
+ },
+
+ attached: function() {
+ if (this.animationConfig) {
+ return;
+ }
+
+ this.animationConfig = {
+ 'entry': [{
+ name: 'fade-in-animation',
+ node: this.$.button
+ }],
+
+ 'exit': [{
+ name: 'fade-out-animation',
+ node: this.$.button
+ }, {
+ name: 'hero-animation',
+ id: 'hero',
+ fromPage: this
+ }]
+ };
+ },
+
+ _onClick: function(event) {
+ var target = Polymer.dom(event).rootTarget;
+
+ // configure the page animation
+ this.sharedElements = {
+ 'hero': target,
+ };
+
+ this.fire('item-click', {
+ item: target,
+ });
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/animated-grid.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/animated-grid.html
new file mode 100644
index 00000000000..260a4395e72
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/animated-grid.html
@@ -0,0 +1,145 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+<link rel="import" href="../../neon-shared-element-animatable-behavior.html">
+<link rel="import" href="../../../paper-styles/typography.html">
+<link rel="import" href="../../../paper-styles/color.html">
+<link rel="import" href="../shared-styles.html">
+
+<dom-module id="animated-grid">
+ <template>
+ <style include="shared-styles">
+ :host {
+ display: block;
+ background: #000;
+ }
+
+ .tile {
+ display: inline-block;
+ float: left;
+ vertical-align: top;
+ width: calc(100% / 6);
+ height: calc(100% / 3);
+
+ @apply --paper-font-title;
+ @apply --layout-vertical;
+ @apply --layout-center-center;
+ }
+
+ .tile:nth-of-type(1) {
+ width: calc(100% / 3);
+ height: calc(100% / 3 * 2);
+ }
+
+ .tile:nth-of-type(4) {
+ width: calc(100% / 3);
+ }
+
+ .tile:nth-of-type(5) {
+ width: calc(100% / 3);
+ height: calc(100% / 3 * 2);
+ }
+
+ .tile:nth-of-type(8) {
+ width: calc(100% / 3);
+ height: calc(100% / 3);
+ }
+
+ .tile:nth-of-type(9) {
+ position: absolute;
+ top: calc(100% / 3 * 2);
+ left: 0;
+ width: calc(100% / 6);
+ height: calc(100% / 3);
+ }
+
+ .tile:nth-of-type(10) {
+ position: absolute;
+ top: calc(100% / 3 * 2);
+ left: calc(100% / 6);;
+ width: calc(100% / 6);
+ height: calc(100% / 3);
+ }
+ </style>
+
+ <template is="dom-repeat" items="[[config]]">
+ <div class$="[[_computeTileClass(item.color)]]">
+ <span>[[item.value]]</span>
+ </div>
+ </template>
+
+ </template>
+
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'animated-grid',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimatableBehavior
+ ],
+
+ properties: {
+
+ config: {
+ type: Array,
+ value: function() {
+ return [
+ {value: 1, color: 'blue'},
+ {value: 2, color: 'red'},
+ {value: 3, color: 'blue'},
+ {value: 4, color: 'green'},
+ {value: 5, color: 'yellow'},
+ {value: 6, color: 'blue'},
+ {value: 7, color: 'red'},
+ {value: 8, color: 'green'},
+ {value: 9, color: 'yellow'},
+ {value: 10, color: 'red'}
+ ]
+ }
+ },
+
+ animationConfig: {
+ type: Object,
+ value: function() {
+ return {
+ 'entry': [{
+ name: 'cascaded-animation',
+ animation: 'transform-animation',
+ transformFrom: 'translateY(100%)',
+ transformTo: 'none',
+ timing: {
+ delay: 50
+ }
+ }]
+ }
+ }
+ }
+
+ },
+
+ ready: function() {
+ this.async(function() {
+ var nodeList = Polymer.dom(this.root).querySelectorAll('.tile');
+ this.animationConfig['entry'][0].nodes = Array.prototype.slice.call(nodeList);
+ });
+ },
+
+ _computeTileClass: function(color) {
+ return 'tile ' + color + '-300';
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/full-page.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/full-page.html
new file mode 100644
index 00000000000..d7a789a6067
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/full-page.html
@@ -0,0 +1,82 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+<link rel="import" href="../../neon-animatable-behavior.html">
+<link rel="import" href="../../neon-animation-runner-behavior.html">
+<link rel="import" href="../../../paper-styles/shadow.html">
+<link rel="import" href="animated-grid.html">
+
+<dom-module id="full-page">
+ <template>
+ <style>
+ :host {
+ background: black;
+ visibility: hidden;
+ @apply --layout-vertical;
+ }
+
+ .toolbar {
+ background: #9c27b0;
+ height: 72px;
+ z-index: 1;
+ @apply --shadow-elevation-2dp;
+ }
+
+ animated-grid {
+ height: calc(100% - 72px);
+ @apply --layout-flex;
+ }
+ </style>
+
+ <div id="toolbar" class="toolbar"></div>
+ <animated-grid id="grid"></animated-grid>
+
+ </template>
+</dom-module>
+
+<script>
+
+Polymer({
+
+ is: 'full-page',
+
+ behaviors: [
+ Polymer.NeonAnimatableBehavior,
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+
+ properties: {
+
+ animationConfig: {
+ type: Object
+ }
+ },
+
+ attached: function() {
+ this.animationConfig = this.animationConfig || {
+ 'entry': [{
+ name: 'slide-from-top-animation',
+ node: this.$.toolbar
+ }, {
+ animatable: this.$.grid,
+ type: 'entry'
+ }]
+ };
+ },
+
+ show: function() {
+ this.style.visibility = 'visible';
+ this.playAnimation('entry');
+ }
+
+});
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/index.html
new file mode 100644
index 00000000000..1e1f1317b52
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/load/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+ <head>
+ <title>neon-animated-pages demo: load</title>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+
+ <script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
+ <link rel="import" href="../../web-animations.html">
+ <link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+ <link rel="import" href="../../neon-animated-pages.html">
+ <link rel="import" href="../../neon-animations.html">
+ <link rel="import" href="full-page.html">
+
+ <custom-style>
+ <style is="custom-style">
+ body {
+ overflow: hidden;
+ @apply --layout-fullbleed;
+ }
+ full-page {
+ @apply --layout-fit;
+ }
+ </style>
+ </custom-style>
+ </head>
+ <body>
+
+ <full-page></full-page>
+
+ <script>
+
+ window.addEventListener('WebComponentsReady', function() {
+ document.querySelector('full-page').show();
+ });
+
+ </script>
+
+ </body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/shared-styles.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/shared-styles.html
new file mode 100644
index 00000000000..4e48c8c4065
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/shared-styles.html
@@ -0,0 +1,47 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<dom-module id="shared-styles">
+ <template>
+ <style>
+ .red-100 {
+ background: var(--google-red-100);
+ }
+
+ .yellow-100 {
+ background: var(--google-yellow-100);
+ }
+
+ .blue-100 {
+ background: var(--google-blue-100);
+ }
+
+ .green-100 {
+ background: var(--google-green-100);
+ }
+
+ .red-300 {
+ background: var(--google-red-300);
+ }
+
+ .yellow-300 {
+ background: var(--google-yellow-300);
+ }
+
+ .blue-300 {
+ background: var(--google-blue-300);
+ }
+
+ .green-300 {
+ background: var(--google-green-300);
+ }
+ </style>
+ </template>
+</dom-module>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/circles-page.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/circles-page.html
new file mode 100644
index 00000000000..3d7fdddca2f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/circles-page.html
@@ -0,0 +1,115 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+<link rel="import" href="../../neon-shared-element-animatable-behavior.html">
+
+<dom-module id="circles-page">
+ <template>
+ <style>
+ :host {
+ @apply --layout-horizontal;
+ @apply --layout-center-center;
+ }
+
+ .circle {
+ display: inline-block;
+ box-sizing: border-box;
+ width: 100px;
+ height: 100px;
+ margin: 16px;
+ border-radius: 50%;
+ background: var(--color-one);
+ }
+ </style>
+
+ <div>
+ <div class="circle"></div>
+ <div class="circle"></div>
+ <div class="circle"></div>
+ <div class="circle"></div>
+ </div>
+
+ </template>
+
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'circles-page',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimatableBehavior
+ ],
+
+ properties: {
+
+ animationConfig: {
+ type: Object
+ }
+ },
+
+ listeners: {
+ 'click': '_onClick'
+ },
+
+ attached: function() {
+ if (this.animationConfig) {
+ return;
+ }
+
+ var circles = Polymer.dom(this.root).querySelectorAll('.circle');
+ var circlesArray = Array.prototype.slice.call(circles);
+ this.animationConfig = {
+ 'entry': [{
+ name: 'cascaded-animation',
+ animation: 'scale-up-animation',
+ nodes: circlesArray
+ }],
+
+ 'exit': [{
+ name: 'hero-animation',
+ id: 'hero',
+ fromPage: this
+ }, {
+ name: 'cascaded-animation',
+ animation: 'scale-down-animation'
+ }]
+ };
+ },
+
+ _onClick: function(event) {
+ var target = Polymer.dom(event).rootTarget;
+
+ if (target.classList.contains('circle')) {
+ // configure the page animation
+ this.sharedElements = {
+ 'hero': target
+ };
+
+ var nodesToScale = [];
+ var circles = Polymer.dom(this.root).querySelectorAll('.circle');
+
+ for (var node, index = 0; node = circles[index]; index++) {
+ if (node !== event.target) {
+ nodesToScale.push(node);
+ }
+ }
+
+ this.animationConfig['exit'][1].nodes = nodesToScale;
+ this.fire('circle-click');
+ }
+ }
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/index.html
new file mode 100644
index 00000000000..3a46ab08cf4
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/index.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+ <head>
+ <title>neon-animated-pages demo: tiles</title>
+
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
+
+ <script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
+
+ <link rel="import" href="../../web-animations.html">
+ <link rel="import" href="../../../iron-flex-layout/iron-flex-layout.html">
+ <link rel="import" href="../../neon-animated-pages.html">
+ <link rel="import" href="../../neon-animations.html">
+ <link rel="import" href="../../../paper-styles/color.html">
+ <link rel="import" href="circles-page.html">
+ <link rel="import" href="squares-page.html">
+
+ <custom-style>
+ <style is="custom-style">
+ body {
+ overflow: hidden;
+ @apply --layout-fullbleed;
+ }
+ neon-animated-pages {
+ height: 100%;
+ }
+
+ :root {
+ --color-one: var(--paper-cyan-300);
+ --color-two: var(--paper-orange-500);
+ }
+ </style>
+ </custom-style>
+
+ </head>
+ <body>
+ <dom-bind>
+ <template is="dom-bind">
+
+ <neon-animated-pages id="pages" selected="0">
+ <circles-page on-circle-click="_onCircleClick"></circles-page>
+ <squares-page on-click="_onSquaresClick"></squares-page>
+ </neon-animated-pages>
+
+ </template>
+ </dom-bind>
+
+ <script>
+
+ var scope1 = document.querySelector('template[is="dom-bind"]');
+ var scope2 = document.querySelector('dom-bind');
+
+ var _onCircleClick = function(event) {
+ this.$.pages.selected = 1;
+ };
+
+ var _onSquaresClick = function(event) {
+ this.$.pages.selected = 0;
+ };
+
+ scope1._onCircleClick = _onCircleClick;
+ scope1._onSquaresClick = _onSquaresClick;
+ scope2._onCircleClick = _onCircleClick;
+ scope2._onSquaresClick = _onSquaresClick;
+
+ </script>
+
+ </body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/squares-page.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/squares-page.html
new file mode 100644
index 00000000000..5382fb1eed3
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/demo/tiles/squares-page.html
@@ -0,0 +1,102 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../../../polymer/polymer.html">
+<link rel="import" href="../../neon-shared-element-animatable-behavior.html">
+
+<dom-module id="squares-page">
+ <template>
+ <style>
+ .header {
+ height: 40%;
+ background: var(--color-one);
+ }
+
+ .body {
+ text-align: center;
+ padding: 8px;
+ }
+
+ .square {
+ display: inline-block;
+ width: 150px;
+ height: 150px;
+ margin: 8px;
+ background: var(--color-two);
+ }
+ </style>
+
+ <div id="header" class="header"></div>
+
+ <div class="body">
+ <div class="square"></div>
+ <div class="square"></div>
+ <div class="square"></div>
+ <div class="square"></div>
+ </div>
+
+ </template>
+
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'squares-page',
+
+ behaviors: [
+ Polymer.NeonSharedElementAnimatableBehavior
+ ],
+
+ properties: {
+
+ sharedElements: {
+ type: Object
+ },
+
+ animationConfig: {
+ type: Object
+ }
+ },
+
+ attached: function() {
+ if (this.animationConfig) {
+ return;
+ }
+
+ this.sharedElements = { 'hero': this.$.header };
+ var squares = Polymer.dom(this.root).querySelectorAll('.square');
+ var squaresArray = Array.prototype.slice.call(squares);
+ this.animationConfig = {
+ 'entry': [{
+ name: 'hero-animation',
+ id: 'hero',
+ toPage: this
+ }, {
+ name: 'cascaded-animation',
+ animation: 'transform-animation',
+ transformFrom: 'translateY(100%)',
+ nodes: squaresArray
+ }],
+
+ 'exit': [{
+ name: 'slide-up-animation',
+ node: this.$.header
+ }, {
+ name: 'cascaded-animation',
+ animation: 'transform-animation',
+ transformTo: 'translateY(60vh)',
+ nodes: squaresArray
+ }]
+ };
+ }
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/gen-tsd.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/gen-tsd.json
new file mode 100644
index 00000000000..c2e13678514
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/gen-tsd.json
@@ -0,0 +1,5 @@
+{
+ "removeReferences": [
+ "../web-animations-js/web-animations-next-lite.min.d.ts"
+ ]
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/guides/neon-animation.md b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/guides/neon-animation.md
new file mode 100644
index 00000000000..69727b864ff
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/guides/neon-animation.md
@@ -0,0 +1,314 @@
+---
+title: neon-animation
+summary: "A short guide to neon-animation and neon-animated-pages"
+tags: ['animation','core-animated-pages']
+elements: ['neon-animation','neon-animated-pages']
+updated: 2015-05-26
+---
+
+# neon-animation
+
+`neon-animation` is a suite of elements and behaviors to implement pluggable animated transitions for Polymer Elements using [Web Animations](https://w3c.github.io/web-animations/).
+
+*Warning: The API may change.*
+
+* [A basic animatable element](#basic)
+* [Animation configuration](#configuration)
+ * [Animation types](#configuration-types)
+ * [Configuration properties](#configuration-properties)
+ * [Using multiple animations](#configuration-multiple)
+ * [Running animations encapsulated in children nodes](#configuration-encapsulation)
+* [Page transitions](#page-transitions)
+ * [Shared element animations](#shared-element)
+ * [Declarative page transitions](#declarative-page)
+* [Included animations](#animations)
+* [Demos](#demos)
+
+<a name="basic"></a>
+## A basic animatable element
+
+Elements that can be animated should implement the `Polymer.NeonAnimatableBehavior` behavior, or `Polymer.NeonAnimationRunnerBehavior` if they're also responsible for running an animation.
+
+```js
+Polymer({
+ is: 'my-animatable',
+ behaviors: [
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+ properties: {
+ animationConfig: {
+ value: function() {
+ return {
+ // provided by neon-animation/animations/scale-down-animation.html
+ name: 'scale-down-animation',
+ node: this
+ }
+ }
+ }
+ },
+ listeners: {
+ // this event is fired when the animation finishes
+ 'neon-animation-finish': '_onNeonAnimationFinish'
+ },
+ animate: function() {
+ // run scale-down-animation
+ this.playAnimation();
+ },
+ _onNeonAnimationFinish: function() {
+ console.log('animation done!');
+ }
+});
+```
+
+[Live demo](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/doc/basic.html)
+
+<a name="configuration"></a>
+## Animation configuration
+
+<a name="configuration-types"></a>
+### Animation types
+
+An element might run different animations, for example it might do something different when it enters the view and when it exits from view. You can set the `animationConfig` property to a map from an animation type to configuration.
+
+```js
+Polymer({
+ is: 'my-dialog',
+ behaviors: [
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+ properties: {
+ opened: {
+ type: Boolean
+ },
+ animationConfig: {
+ value: function() {
+ return {
+ 'entry': {
+ // provided by neon-animation/animations/scale-up-animation.html
+ name: 'scale-up-animation',
+ node: this
+ },
+ 'exit': {
+ // provided by neon-animation-animations/fade-out-animation.html
+ name: 'fade-out-animation',
+ node: this
+ }
+ }
+ }
+ }
+ },
+ listeners: {
+ 'neon-animation-finish': '_onNeonAnimationFinish'
+ },
+ show: function() {
+ this.opened = true;
+ this.style.display = 'inline-block';
+ // run scale-up-animation
+ this.playAnimation('entry');
+ },
+ hide: function() {
+ this.opened = false;
+ // run fade-out-animation
+ this.playAnimation('exit');
+ },
+ _onNeonAnimationFinish: function() {
+ if (!this.opened) {
+ this.style.display = 'none';
+ }
+ }
+});
+```
+
+[Live demo](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/doc/types.html)
+
+You can also use the convenience properties `entryAnimation` and `exitAnimation` to set `entry` and `exit` animations:
+
+```js
+properties: {
+ entryAnimation: {
+ value: 'scale-up-animation'
+ },
+ exitAnimation: {
+ value: 'fade-out-animation'
+ }
+}
+```
+
+<a name="configuration-properties"></a>
+### Configuration properties
+
+You can pass additional parameters to configure an animation in the animation configuration object.
+All animations should accept the following properties:
+
+ * `name`: The name of an animation, ie. an element implementing `Polymer.NeonAnimationBehavior`.
+ * `node`: The target node to apply the animation to. Defaults to `this`.
+ * `timing`: Timing properties to use in this animation. They match the [Web Animations Animation Effect Timing interface](https://w3c.github.io/web-animations/#the-animationeffecttiming-interface). The
+ properties include the following:
+ * `duration`: The duration of the animation in milliseconds.
+ * `delay`: The delay before the start of the animation in milliseconds.
+ * `easing`: A timing function for the animation. Matches the CSS timing function values.
+
+Animations may define additional configuration properties and they are listed in their documentation.
+
+<a name="configuration-multiple"></a>
+### Using multiple animations
+
+Set the animation configuration to an array to combine animations, like this:
+
+```js
+animationConfig: {
+ value: function() {
+ return {
+ // fade-in-animation is run with a 50ms delay from slide-down-animation
+ 'entry': [{
+ name: 'slide-down-animation',
+ node: this
+ }, {
+ name: 'fade-in-animation',
+ node: this,
+ timing: {delay: 50}
+ }]
+ }
+ }
+}
+```
+
+<a name="configuration-encapsulation"></a>
+### Running animations encapsulated in children nodes
+
+You can include animations in the configuration that are encapsulated in a child element that implement `Polymer.NeonAnimatableBehavior` with the `animatable` property.
+
+```js
+animationConfig: {
+ value: function() {
+ return {
+ // run fade-in-animation on this, and the entry animation on this.$.myAnimatable
+ 'entry': [
+ {name: 'fade-in-animation', node: this},
+ {animatable: this.$.myAnimatable, type: 'entry'}
+ ]
+ }
+ }
+}
+```
+
+<a name="page-transitions"></a>
+## Page transitions
+
+*The artist formerly known as `<core-animated-pages>`*
+
+The `neon-animated-pages` element manages a set of pages to switch between, and runs animations between the page transitions. It implements the `Polymer.IronSelectableBehavior` behavior. Each child node should implement `Polymer.NeonAnimatableBehavior` and define the `entry` and `exit` animations. During a page transition, the `entry` animation is run on the new page and the `exit` animation is run on the old page.
+
+<a name="shared-element"></a>
+### Shared element animations
+
+Shared element animations work on multiple nodes. For example, a "hero" animation is used during a page transition to make two elements from separate pages appear to animate as a single element. Shared element animation configurations have an `id` property that identify they belong in the same animation. Elements containing shared elements also have a `sharedElements` property defines a map from `id` to element, the element involved with the animation.
+
+In the incoming page:
+
+```js
+properties: {
+ animationConfig: {
+ value: function() {
+ return {
+ // the incoming page defines the 'entry' animation
+ 'entry': {
+ name: 'hero-animation',
+ id: 'hero',
+ toPage: this
+ }
+ }
+ }
+ },
+ sharedElements: {
+ value: function() {
+ return {
+ 'hero': this.$.hero
+ }
+ }
+ }
+}
+```
+
+In the outgoing page:
+
+```js
+properties: {
+ animationConfig: {
+ value: function() {
+ return {
+ // the outgoing page defines the 'exit' animation
+ 'exit': {
+ name: 'hero-animation',
+ id: 'hero',
+ fromPage: this
+ }
+ }
+ }
+ },
+ sharedElements: {
+ value: function() {
+ return {
+ 'hero': this.$.otherHero
+ }
+ }
+ }
+}
+```
+
+<a name="declarative-page"></a>
+### Declarative page transitions
+
+For convenience, if you define the `entry-animation` and `exit-animation` attributes on `<neon-animated-pages>`, those animations will apply for all page transitions.
+
+For example:
+
+```js
+<neon-animated-pages id="pages" class="flex" selected="[[selected]]" entry-animation="slide-from-right-animation" exit-animation="slide-left-animation">
+ <neon-animatable>1</neon-animatable>
+ <neon-animatable>2</neon-animatable>
+ <neon-animatable>3</neon-animatable>
+ <neon-animatable>4</neon-animatable>
+ <neon-animatable>5</neon-animatable>
+</neon-animated-pages>
+```
+
+The new page will slide in from the right, and the old page slide away to the left.
+
+<a name="animations"></a>
+## Included animations
+
+Single element animations:
+
+ * `fade-in-animation` Animates opacity from `0` to `1`;
+ * `fade-out-animation` Animates opacity from `1` to `0`;
+ * `scale-down-animation` Animates transform from `scale(1)` to `scale(0)`;
+ * `scale-up-animation` Animates transform from `scale(0)` to `scale(1)`;
+ * `slide-down-animation` Animates transform from `none` to `translateY(100%)`;
+ * `slide-up-animation` Animates transform from `none` to `translateY(-100%)`;
+ * `slide-from-top-animation` Animates transform from `translateY(-100%)` to `none`;
+ * `slide-from-bottom-animation` Animates transform from `translateY(100%)` to `none`;
+ * `slide-left-animation` Animates transform from `none` to `translateX(-100%)`;
+ * `slide-right-animation` Animates transform from `none` to `translateX(100%)`;
+ * `slide-from-left-animation` Animates transform from `translateX(-100%)` to `none`;
+ * `slide-from-right-animation` Animates transform from `translateX(100%)` to `none`;
+ * `transform-animation` Animates a custom transform.
+
+Note that there is a restriction that only one transform animation can be applied on the same element at a time. Use the custom `transform-animation` to combine transform properties.
+
+Shared element animations
+
+ * `hero-animation` Animates an element such that it looks like it scales and transforms from another element.
+ * `ripple-animation` Animates an element to full screen such that it looks like it ripples from another element.
+
+Group animations
+ * `cascaded-animation` Applys an animation to an array of elements with a delay between each.
+
+<a name="demos"></a>
+## Demos
+
+ * [Grid to full screen](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/grid/index.html)
+ * [Animation on load](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/load/index.html)
+ * [List item to detail](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/list/index.html) (For narrow width)
+ * [Dots to squares](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/tiles/index.html)
+ * [Declarative](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/declarative/index.html)
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/index.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/index.html
new file mode 100644
index 00000000000..6f5feedf455
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<html>
+<head>
+
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
+
+ <title>neon-animation</title>
+
+ <script src="../webcomponentsjs/webcomponents-lite.js"></script>
+
+ <link rel="import" href="../polymer/polymer.html">
+ <link rel="import" href="../iron-component-page/iron-component-page.html">
+
+</head>
+<body>
+
+ <iron-component-page></iron-component-page>
+
+</body>
+</html>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable-behavior.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable-behavior.d.ts
new file mode 100644
index 00000000000..c59411a0588
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable-behavior.d.ts
@@ -0,0 +1,53 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-animatable-behavior.html
+ */
+
+/// <reference path="../polymer/types/polymer.d.ts" />
+
+declare namespace Polymer {
+
+ /**
+ * `Polymer.NeonAnimatableBehavior` is implemented by elements containing animations for use with
+ * elements implementing `Polymer.NeonAnimationRunnerBehavior`.
+ */
+ interface NeonAnimatableBehavior {
+
+ /**
+ * Animation configuration. See README for more info.
+ */
+ animationConfig: object|null|undefined;
+
+ /**
+ * Convenience property for setting an 'entry' animation. Do not set `animationConfig.entry`
+ * manually if using this. The animated node is set to `this` if using this property.
+ */
+ entryAnimation: string|null|undefined;
+
+ /**
+ * Convenience property for setting an 'exit' animation. Do not set `animationConfig.exit`
+ * manually if using this. The animated node is set to `this` if using this property.
+ */
+ exitAnimation: string|null|undefined;
+ _entryAnimationChanged(): void;
+ _exitAnimationChanged(): void;
+ _copyProperties(config1: any, config2: any): void;
+ _cloneConfig(config: any): any;
+ _getAnimationConfigRecursive(type: any, map: any, allConfigs: any): void;
+
+ /**
+ * An element implementing `Polymer.NeonAnimationRunnerBehavior` calls this method to configure
+ * an animation with an optional type. Elements implementing `Polymer.NeonAnimatableBehavior`
+ * should define the property `animationConfig`, which is either a configuration object
+ * or a map of animation type to array of configuration objects.
+ */
+ getAnimationConfig(type: any): any;
+ }
+
+ const NeonAnimatableBehavior: object;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable-behavior.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable-behavior.html
new file mode 100644
index 00000000000..f07d9c3e1f3
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable-behavior.html
@@ -0,0 +1,150 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../polymer/polymer.html">
+
+<script>
+
+ /**
+ * `Polymer.NeonAnimatableBehavior` is implemented by elements containing animations for use with
+ * elements implementing `Polymer.NeonAnimationRunnerBehavior`.
+ * @polymerBehavior
+ */
+ Polymer.NeonAnimatableBehavior = {
+
+ properties: {
+
+ /**
+ * Animation configuration. See README for more info.
+ */
+ animationConfig: {
+ type: Object
+ },
+
+ /**
+ * Convenience property for setting an 'entry' animation. Do not set `animationConfig.entry`
+ * manually if using this. The animated node is set to `this` if using this property.
+ */
+ entryAnimation: {
+ observer: '_entryAnimationChanged',
+ type: String
+ },
+
+ /**
+ * Convenience property for setting an 'exit' animation. Do not set `animationConfig.exit`
+ * manually if using this. The animated node is set to `this` if using this property.
+ */
+ exitAnimation: {
+ observer: '_exitAnimationChanged',
+ type: String
+ }
+
+ },
+
+ _entryAnimationChanged: function() {
+ this.animationConfig = this.animationConfig || {};
+ this.animationConfig['entry'] = [{
+ name: this.entryAnimation,
+ node: this
+ }];
+ },
+
+ _exitAnimationChanged: function() {
+ this.animationConfig = this.animationConfig || {};
+ this.animationConfig['exit'] = [{
+ name: this.exitAnimation,
+ node: this
+ }];
+ },
+
+ _copyProperties: function(config1, config2) {
+ // shallowly copy properties from config2 to config1
+ for (var property in config2) {
+ config1[property] = config2[property];
+ }
+ },
+
+ _cloneConfig: function(config) {
+ var clone = {
+ isClone: true
+ };
+ this._copyProperties(clone, config);
+ return clone;
+ },
+
+ _getAnimationConfigRecursive: function(type, map, allConfigs) {
+ if (!this.animationConfig) {
+ return;
+ }
+
+ if(this.animationConfig.value && typeof this.animationConfig.value === 'function') {
+ this._warn(this._logf('playAnimation', "Please put 'animationConfig' inside of your components 'properties' object instead of outside of it."));
+ return;
+ }
+
+ // type is optional
+ var thisConfig;
+ if (type) {
+ thisConfig = this.animationConfig[type];
+ } else {
+ thisConfig = this.animationConfig;
+ }
+
+ if (!Array.isArray(thisConfig)) {
+ thisConfig = [thisConfig];
+ }
+
+ // iterate animations and recurse to process configurations from child nodes
+ if (thisConfig) {
+ for (var config, index = 0; config = thisConfig[index]; index++) {
+ if (config.animatable) {
+ config.animatable._getAnimationConfigRecursive(config.type || type, map, allConfigs);
+ } else {
+ if (config.id) {
+ var cachedConfig = map[config.id];
+ if (cachedConfig) {
+ // merge configurations with the same id, making a clone lazily
+ if (!cachedConfig.isClone) {
+ map[config.id] = this._cloneConfig(cachedConfig);
+ cachedConfig = map[config.id];
+ }
+ this._copyProperties(cachedConfig, config);
+ } else {
+ // put any configs with an id into a map
+ map[config.id] = config;
+ }
+ } else {
+ allConfigs.push(config);
+ }
+ }
+ }
+ }
+ },
+
+ /**
+ * An element implementing `Polymer.NeonAnimationRunnerBehavior` calls this method to configure
+ * an animation with an optional type. Elements implementing `Polymer.NeonAnimatableBehavior`
+ * should define the property `animationConfig`, which is either a configuration object
+ * or a map of animation type to array of configuration objects.
+ */
+ getAnimationConfig: function(type) {
+ var map = {};
+ var allConfigs = [];
+ this._getAnimationConfigRecursive(type, map, allConfigs);
+ // append the configurations saved in the map to the array
+ for (var key in map) {
+ allConfigs.push(map[key]);
+ }
+ return allConfigs;
+ }
+
+ };
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable.d.ts
new file mode 100644
index 00000000000..2cc07034719
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable.d.ts
@@ -0,0 +1,32 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-animatable.html
+ */
+
+/// <reference path="../polymer/types/polymer.d.ts" />
+/// <reference path="../iron-resizable-behavior/iron-resizable-behavior.d.ts" />
+/// <reference path="neon-animatable-behavior.d.ts" />
+
+/**
+ * `<neon-animatable>` is a simple container element implementing `Polymer.NeonAnimatableBehavior`. This is a convenience element for use with `<neon-animated-pages>`.
+ *
+ * ```
+ * <neon-animated-pages selected="0"
+ * entry-animation="slide-from-right-animation"
+ * exit-animation="slide-left-animation">
+ * <neon-animatable>1</neon-animatable>
+ * <neon-animatable>2</neon-animatable>
+ * </neon-animated-pages>
+ * ```
+ */
+interface NeonAnimatableElement extends Polymer.Element, Polymer.NeonAnimatableBehavior, Polymer.IronResizableBehavior {
+}
+
+interface HTMLElementTagNameMap {
+ "neon-animatable": NeonAnimatableElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable.html
new file mode 100644
index 00000000000..26566fc9325
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animatable.html
@@ -0,0 +1,54 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="../iron-resizable-behavior/iron-resizable-behavior.html">
+<link rel="import" href="neon-animatable-behavior.html">
+
+<!--
+`<neon-animatable>` is a simple container element implementing `Polymer.NeonAnimatableBehavior`. This is a convenience element for use with `<neon-animated-pages>`.
+
+```
+<neon-animated-pages selected="0"
+ entry-animation="slide-from-right-animation"
+ exit-animation="slide-left-animation">
+ <neon-animatable>1</neon-animatable>
+ <neon-animatable>2</neon-animatable>
+</neon-animated-pages>
+```
+-->
+
+<dom-module id="neon-animatable">
+ <template>
+ <style>
+ :host {
+ display: block;
+ }
+ </style>
+
+ <slot></slot>
+ </template>
+
+</dom-module>
+
+<script>
+
+ Polymer({
+
+ is: 'neon-animatable',
+
+ behaviors: [
+ Polymer.NeonAnimatableBehavior,
+ Polymer.IronResizableBehavior
+ ]
+
+ });
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animated-pages.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animated-pages.d.ts
new file mode 100644
index 00000000000..e164ee90306
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animated-pages.d.ts
@@ -0,0 +1,38 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-animated-pages.html
+ */
+
+/// <reference path="../polymer/types/polymer.d.ts" />
+/// <reference path="../iron-resizable-behavior/iron-resizable-behavior.d.ts" />
+/// <reference path="../iron-selector/iron-selectable.d.ts" />
+/// <reference path="neon-animation-runner-behavior.d.ts" />
+
+/**
+ * Material design: [Meaningful transitions](https://www.google.com/design/spec/animation/meaningful-transitions.html)
+ *
+ * `neon-animated-pages` manages a set of pages and runs an animation when switching between them. Its
+ * children pages should implement `Polymer.NeonAnimatableBehavior` and define `entry` and `exit`
+ * animations to be run when switching to or switching out of the page.
+ */
+interface NeonAnimatedPagesElement extends Polymer.Element, Polymer.IronResizableBehavior, Polymer.IronSelectableBehavior, Polymer.NeonAnimationRunnerBehavior {
+ activateEvent: string|null|undefined;
+
+ /**
+ * if true, the initial page selection will also be animated according to its animation config.
+ */
+ animateInitialSelection: boolean|null|undefined;
+ _onIronSelect(event: any): void;
+ _completeSelectedChanged(oldPage?: object|null, selectedPage?: object|null): void;
+ _onNeonAnimationFinish(event: any): void;
+ _notifyPageResize(): void;
+}
+
+interface HTMLElementTagNameMap {
+ "neon-animated-pages": NeonAnimatedPagesElement;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animated-pages.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animated-pages.html
new file mode 100644
index 00000000000..ddb4d707456
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animated-pages.html
@@ -0,0 +1,219 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="../iron-resizable-behavior/iron-resizable-behavior.html">
+<link rel="import" href="../iron-selector/iron-selectable.html">
+<link rel="import" href="neon-animation-runner-behavior.html">
+
+<!--
+Material design: [Meaningful transitions](https://www.google.com/design/spec/animation/meaningful-transitions.html)
+
+`neon-animated-pages` manages a set of pages and runs an animation when switching between them. Its
+children pages should implement `Polymer.NeonAnimatableBehavior` and define `entry` and `exit`
+animations to be run when switching to or switching out of the page.
+
+@group Neon Elements
+@element neon-animated-pages
+-->
+
+<dom-module id="neon-animated-pages">
+ <template>
+ <style>
+ :host {
+ display: block;
+ position: relative;
+ }
+
+ :host > ::slotted(*) {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ }
+
+ :host > ::slotted(:not(.iron-selected):not(.neon-animating))
+ {
+ display: none !important;
+ }
+
+ :host > ::slotted(.neon-animating) {
+ pointer-events: none;
+ }
+ </style>
+
+ <slot id="content"></slot>
+ </template>
+
+</dom-module>
+
+<script>
+(function() {
+
+ Polymer({
+
+ is: 'neon-animated-pages',
+
+ behaviors: [
+ Polymer.IronResizableBehavior,
+ Polymer.IronSelectableBehavior,
+ Polymer.NeonAnimationRunnerBehavior
+ ],
+
+ properties: {
+
+ activateEvent: {
+ type: String,
+ value: ''
+ },
+
+ // if true, the initial page selection will also be animated according to its animation config.
+ animateInitialSelection: {
+ type: Boolean,
+ value: false
+ }
+
+ },
+
+ listeners: {
+ 'iron-select': '_onIronSelect',
+ 'neon-animation-finish': '_onNeonAnimationFinish'
+ },
+
+ _onIronSelect: function(event) {
+ var selectedPage = event.detail.item;
+
+ // Only consider child elements.
+ if (this.items.indexOf(selectedPage) < 0) {
+ return;
+ }
+
+ var oldPage = this._valueToItem(this._prevSelected) || false;
+ this._prevSelected = this.selected;
+
+ // on initial load and if animateInitialSelection is negated, simply display selectedPage.
+ if (!oldPage && !this.animateInitialSelection) {
+ this._completeSelectedChanged();
+ return;
+ }
+
+ this.animationConfig = [];
+
+ // configure selectedPage animations.
+ if (this.entryAnimation) {
+ this.animationConfig.push({
+ name: this.entryAnimation,
+ node: selectedPage
+ });
+ } else {
+ if (selectedPage.getAnimationConfig) {
+ this.animationConfig.push({
+ animatable: selectedPage,
+ type: 'entry'
+ });
+ }
+ }
+
+ // configure oldPage animations iff exists.
+ if (oldPage) {
+
+ // cancel the currently running animation if one is ongoing.
+ if (oldPage.classList.contains('neon-animating')) {
+ this._squelchNextFinishEvent = true;
+ this.cancelAnimation();
+ this._completeSelectedChanged();
+ this._squelchNextFinishEvent = false;
+ }
+
+ // configure the animation.
+ if (this.exitAnimation) {
+ this.animationConfig.push({
+ name: this.exitAnimation,
+ node: oldPage
+ });
+ } else {
+ if (oldPage.getAnimationConfig) {
+ this.animationConfig.push({
+ animatable: oldPage,
+ type: 'exit'
+ });
+ }
+ }
+
+ // display the oldPage during the transition.
+ oldPage.classList.add('neon-animating');
+ }
+
+ // display the selectedPage during the transition.
+ selectedPage.classList.add('neon-animating');
+
+ // actually run the animations.
+ if (this.animationConfig.length >= 1) {
+
+ // on first load, ensure we run animations only after element is attached.
+ if (!this.isAttached) {
+ this.async(function () {
+ this.playAnimation(undefined, {
+ fromPage: null,
+ toPage: selectedPage
+ });
+ });
+
+ } else {
+ this.playAnimation(undefined, {
+ fromPage: oldPage,
+ toPage: selectedPage
+ });
+ }
+
+ } else {
+ this._completeSelectedChanged(oldPage, selectedPage);
+ }
+ },
+
+ /**
+ * @param {Object=} oldPage
+ * @param {Object=} selectedPage
+ */
+ _completeSelectedChanged: function(oldPage, selectedPage) {
+ if (selectedPage) {
+ selectedPage.classList.remove('neon-animating');
+ }
+ if (oldPage) {
+ oldPage.classList.remove('neon-animating');
+ }
+ if (!selectedPage || !oldPage) {
+ var nodes = Polymer.dom(this.$.content).getDistributedNodes();
+ for (var node, index = 0; node = nodes[index]; index++) {
+ node.classList && node.classList.remove('neon-animating');
+ }
+ }
+ this.async(this._notifyPageResize);
+ },
+
+ _onNeonAnimationFinish: function(event) {
+ if (this._squelchNextFinishEvent) {
+ this._squelchNextFinishEvent = false;
+ return;
+ }
+ this._completeSelectedChanged(event.detail.fromPage, event.detail.toPage);
+ },
+
+ _notifyPageResize: function() {
+ var selectedPage = this.selectedItem || this._valueToItem(this.selected);
+ this.resizerShouldNotify = function(element) {
+ return element == selectedPage;
+ };
+ this.notifyResize();
+ }
+ })
+
+})();
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-behavior.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-behavior.d.ts
new file mode 100644
index 00000000000..153f3145842
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-behavior.d.ts
@@ -0,0 +1,50 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-animation-behavior.html
+ */
+
+/// <reference path="../polymer/types/polymer.d.ts" />
+
+declare namespace Polymer {
+
+ /**
+ * Use `Polymer.NeonAnimationBehavior` to implement an animation.
+ */
+ interface NeonAnimationBehavior {
+
+ /**
+ * Defines the animation timing.
+ */
+ animationTiming: object|null|undefined;
+
+ /**
+ * Can be used to determine that elements implement this behavior.
+ *
+ */
+ isNeonAnimation: boolean;
+ created(): void;
+
+ /**
+ * Returns the animation timing by mixing in properties from `config` to the defaults defined
+ * by the animation.
+ */
+ timingFromConfig(config: any): any;
+
+ /**
+ * Sets `transform` and `transformOrigin` properties along with the prefixed versions.
+ */
+ setPrefixedProperty(node: any, property: any, value: any): void;
+
+ /**
+ * Called when the animation finishes.
+ */
+ complete(config: any): void;
+ }
+
+ const NeonAnimationBehavior: object;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-behavior.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-behavior.html
new file mode 100644
index 00000000000..e51727e5d5b
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-behavior.html
@@ -0,0 +1,92 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../polymer/polymer.html">
+
+<script>
+
+ /**
+ * Use `Polymer.NeonAnimationBehavior` to implement an animation.
+ * @polymerBehavior
+ */
+ Polymer.NeonAnimationBehavior = {
+
+ properties: {
+
+ /**
+ * Defines the animation timing.
+ */
+ animationTiming: {
+ type: Object,
+ value: function() {
+ return {
+ duration: 500,
+ easing: 'cubic-bezier(0.4, 0, 0.2, 1)',
+ fill: 'both'
+ }
+ }
+ }
+
+ },
+
+ /**
+ * Can be used to determine that elements implement this behavior.
+ */
+ isNeonAnimation: true,
+
+ /**
+ * Do any animation configuration here.
+ */
+ // configure: function(config) {
+ // },
+
+ created: function() {
+ if (!document.body.animate) {
+ console.warn('No web animations detected. This element will not' +
+ ' function without a web animations polyfill.');
+ }
+ },
+
+ /**
+ * Returns the animation timing by mixing in properties from `config` to the defaults defined
+ * by the animation.
+ */
+ timingFromConfig: function(config) {
+ if (config.timing) {
+ for (var property in config.timing) {
+ this.animationTiming[property] = config.timing[property];
+ }
+ }
+ return this.animationTiming;
+ },
+
+ /**
+ * Sets `transform` and `transformOrigin` properties along with the prefixed versions.
+ */
+ setPrefixedProperty: function(node, property, value) {
+ var map = {
+ 'transform': ['webkitTransform'],
+ 'transformOrigin': ['mozTransformOrigin', 'webkitTransformOrigin']
+ };
+ var prefixes = map[property];
+ for (var prefix, index = 0; prefix = prefixes[index]; index++) {
+ node.style[prefix] = value;
+ }
+ node.style[property] = value;
+ },
+
+ /**
+ * Called when the animation finishes.
+ */
+ complete: function(config) {}
+
+ };
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-runner-behavior.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-runner-behavior.d.ts
new file mode 100644
index 00000000000..162b649c780
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-runner-behavior.d.ts
@@ -0,0 +1,36 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-animation-runner-behavior.html
+ */
+
+/// <reference path="../polymer/types/polymer.d.ts" />
+/// <reference path="neon-animatable-behavior.d.ts" />
+
+declare namespace Polymer {
+
+ /**
+ * `Polymer.NeonAnimationRunnerBehavior` adds a method to run animations.
+ */
+ interface NeonAnimationRunnerBehavior extends Polymer.NeonAnimatableBehavior {
+ _configureAnimations(configs: any): any;
+ _shouldComplete(activeEntries: any): any;
+ _complete(activeEntries: any): void;
+
+ /**
+ * Plays an animation with an optional `type`.
+ */
+ playAnimation(type?: string, cookie?: object): void;
+
+ /**
+ * Cancels the currently running animations.
+ */
+ cancelAnimation(): void;
+ }
+
+ const NeonAnimationRunnerBehavior: object;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-runner-behavior.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-runner-behavior.html
new file mode 100644
index 00000000000..425f8b13ad4
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation-runner-behavior.html
@@ -0,0 +1,155 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="neon-animatable-behavior.html">
+
+<script>
+
+ /**
+ * `Polymer.NeonAnimationRunnerBehavior` adds a method to run animations.
+ *
+ * @polymerBehavior Polymer.NeonAnimationRunnerBehavior
+ */
+ Polymer.NeonAnimationRunnerBehaviorImpl = {
+
+ _configureAnimations: function(configs) {
+ var results = [];
+ var resultsToPlay = [];
+
+ if (configs.length > 0) {
+ for (var config, index = 0; config = configs[index]; index++) {
+ var neonAnimation = document.createElement(config.name);
+ // is this element actually a neon animation?
+ if (neonAnimation.isNeonAnimation) {
+ var result = null;
+ // Closure compiler does not work well with a try / catch here. .configure needs to be
+ // explicitly defined
+ if (!neonAnimation.configure) {
+ /**
+ * @param {Object} config
+ * @return {AnimationEffectReadOnly}
+ */
+ neonAnimation.configure = function(config) {
+ return null;
+ }
+ }
+
+ result = neonAnimation.configure(config);
+ resultsToPlay.push({ result: result, config: config });
+ } else {
+ console.warn(this.is + ':', config.name, 'not found!');
+ }
+ }
+ }
+
+ for (var i = 0; i < resultsToPlay.length; i++) {
+ var result = resultsToPlay[i].result;
+ var config = resultsToPlay[i].config;
+ // configuration or play could fail if polyfills aren't loaded
+ try {
+ // Check if we have an Effect rather than an Animation
+ if (typeof result.cancel != 'function') {
+ result = document.timeline.play(result);
+ }
+ } catch (e) {
+ result = null;
+ console.warn('Couldnt play', '(', config.name, ').', e);
+ }
+
+ if (result) {
+ results.push({
+ neonAnimation: neonAnimation,
+ config: config,
+ animation: result,
+ });
+ }
+ }
+
+ return results;
+ },
+
+ _shouldComplete: function(activeEntries) {
+ var finished = true;
+ for (var i = 0; i < activeEntries.length; i++) {
+ if (activeEntries[i].animation.playState != 'finished') {
+ finished = false;
+ break;
+ }
+ }
+ return finished;
+ },
+
+ _complete: function(activeEntries) {
+ for (var i = 0; i < activeEntries.length; i++) {
+ activeEntries[i].neonAnimation.complete(activeEntries[i].config);
+ }
+ for (var i = 0; i < activeEntries.length; i++) {
+ activeEntries[i].animation.cancel();
+ }
+ },
+
+ /**
+ * Plays an animation with an optional `type`.
+ * @param {string=} type
+ * @param {!Object=} cookie
+ */
+ playAnimation: function(type, cookie) {
+ var configs = this.getAnimationConfig(type);
+ if (!configs) {
+ return;
+ }
+ this._active = this._active || {};
+ if (this._active[type]) {
+ this._complete(this._active[type]);
+ delete this._active[type];
+ }
+
+ var activeEntries = this._configureAnimations(configs);
+
+ if (activeEntries.length == 0) {
+ this.fire('neon-animation-finish', cookie, {bubbles: false});
+ return;
+ }
+
+ this._active[type] = activeEntries;
+
+ for (var i = 0; i < activeEntries.length; i++) {
+ activeEntries[i].animation.onfinish = function() {
+ if (this._shouldComplete(activeEntries)) {
+ this._complete(activeEntries);
+ delete this._active[type];
+ this.fire('neon-animation-finish', cookie, {bubbles: false});
+ }
+ }.bind(this);
+ }
+ },
+
+ /**
+ * Cancels the currently running animations.
+ */
+ cancelAnimation: function() {
+ for (var k in this._active) {
+ var entries = this._active[k]
+
+ for (var j in entries) {
+ entries[j].animation.cancel();
+ }
+ }
+
+ this._active = {};
+ }
+ };
+
+ /** @polymerBehavior Polymer.NeonAnimationRunnerBehavior */
+ Polymer.NeonAnimationRunnerBehavior = [
+ Polymer.NeonAnimatableBehavior,
+ Polymer.NeonAnimationRunnerBehaviorImpl
+ ];
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation.d.ts
new file mode 100644
index 00000000000..7b02b1dac01
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation.d.ts
@@ -0,0 +1,19 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-animation.html
+ */
+
+/// <reference path="neon-animatable-behavior.d.ts" />
+/// <reference path="neon-animated-pages.d.ts" />
+/// <reference path="neon-animatable.d.ts" />
+/// <reference path="neon-animation-behavior.d.ts" />
+/// <reference path="neon-animation-runner-behavior.d.ts" />
+/// <reference path="neon-animations.d.ts" />
+/// <reference path="neon-shared-element-animatable-behavior.d.ts" />
+/// <reference path="neon-shared-element-animation-behavior.d.ts" />
+
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation.html
new file mode 100644
index 00000000000..da645048597
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animation.html
@@ -0,0 +1,18 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="neon-animatable-behavior.html">
+<link rel="import" href="neon-animated-pages.html">
+<link rel="import" href="neon-animatable.html">
+<link rel="import" href="neon-animation-behavior.html">
+<link rel="import" href="neon-animation-runner-behavior.html">
+<link rel="import" href="neon-animations.html">
+<link rel="import" href="neon-shared-element-animatable-behavior.html">
+<link rel="import" href="neon-shared-element-animation-behavior.html">
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animations.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animations.d.ts
new file mode 100644
index 00000000000..0bc3ec3c56f
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animations.d.ts
@@ -0,0 +1,30 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-animations.html
+ */
+
+/// <reference path="../polymer/types/polymer.d.ts" />
+/// <reference path="animations/cascaded-animation.d.ts" />
+/// <reference path="animations/fade-in-animation.d.ts" />
+/// <reference path="animations/fade-out-animation.d.ts" />
+/// <reference path="animations/hero-animation.d.ts" />
+/// <reference path="animations/opaque-animation.d.ts" />
+/// <reference path="animations/ripple-animation.d.ts" />
+/// <reference path="animations/reverse-ripple-animation.d.ts" />
+/// <reference path="animations/scale-down-animation.d.ts" />
+/// <reference path="animations/scale-up-animation.d.ts" />
+/// <reference path="animations/slide-from-left-animation.d.ts" />
+/// <reference path="animations/slide-from-right-animation.d.ts" />
+/// <reference path="animations/slide-from-top-animation.d.ts" />
+/// <reference path="animations/slide-from-bottom-animation.d.ts" />
+/// <reference path="animations/slide-left-animation.d.ts" />
+/// <reference path="animations/slide-right-animation.d.ts" />
+/// <reference path="animations/slide-up-animation.d.ts" />
+/// <reference path="animations/slide-down-animation.d.ts" />
+/// <reference path="animations/transform-animation.d.ts" />
+
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animations.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animations.html
new file mode 100644
index 00000000000..67c4df4c76a
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-animations.html
@@ -0,0 +1,29 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="animations/cascaded-animation.html">
+<link rel="import" href="animations/fade-in-animation.html">
+<link rel="import" href="animations/fade-out-animation.html">
+<link rel="import" href="animations/hero-animation.html">
+<link rel="import" href="animations/opaque-animation.html">
+<link rel="import" href="animations/ripple-animation.html">
+<link rel="import" href="animations/reverse-ripple-animation.html">
+<link rel="import" href="animations/scale-down-animation.html">
+<link rel="import" href="animations/scale-up-animation.html">
+<link rel="import" href="animations/slide-from-left-animation.html">
+<link rel="import" href="animations/slide-from-right-animation.html">
+<link rel="import" href="animations/slide-from-top-animation.html">
+<link rel="import" href="animations/slide-from-bottom-animation.html">
+<link rel="import" href="animations/slide-left-animation.html">
+<link rel="import" href="animations/slide-right-animation.html">
+<link rel="import" href="animations/slide-up-animation.html">
+<link rel="import" href="animations/slide-down-animation.html">
+<link rel="import" href="animations/transform-animation.html">
+
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animatable-behavior.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animatable-behavior.d.ts
new file mode 100644
index 00000000000..5f9ca6ed391
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animatable-behavior.d.ts
@@ -0,0 +1,29 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-shared-element-animatable-behavior.html
+ */
+
+/// <reference path="../polymer/types/polymer.d.ts" />
+/// <reference path="neon-animatable-behavior.d.ts" />
+
+declare namespace Polymer {
+
+ /**
+ * Use `Polymer.NeonSharedElementAnimatableBehavior` to implement elements containing shared element
+ * animations.
+ */
+ interface NeonSharedElementAnimatableBehavior extends Polymer.NeonAnimatableBehavior {
+
+ /**
+ * A map of shared element id to node.
+ */
+ sharedElements: object|null|undefined;
+ }
+
+ const NeonSharedElementAnimatableBehavior: object;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animatable-behavior.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animatable-behavior.html
new file mode 100644
index 00000000000..e63173d368d
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animatable-behavior.html
@@ -0,0 +1,43 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="neon-animatable-behavior.html">
+
+<script>
+
+ /**
+ * Use `Polymer.NeonSharedElementAnimatableBehavior` to implement elements containing shared element
+ * animations.
+ * @polymerBehavior Polymer.NeonSharedElementAnimatableBehavior
+ */
+ Polymer.NeonSharedElementAnimatableBehaviorImpl = {
+
+ properties: {
+
+ /**
+ * A map of shared element id to node.
+ */
+ sharedElements: {
+ type: Object,
+ value: {}
+ }
+
+ }
+
+ };
+
+ /** @polymerBehavior Polymer.NeonSharedElementAnimatableBehavior */
+ Polymer.NeonSharedElementAnimatableBehavior = [
+ Polymer.NeonAnimatableBehavior,
+ Polymer.NeonSharedElementAnimatableBehaviorImpl
+ ];
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animation-behavior.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animation-behavior.d.ts
new file mode 100644
index 00000000000..607ab8e280b
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animation-behavior.d.ts
@@ -0,0 +1,33 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * neon-shared-element-animation-behavior.html
+ */
+
+/// <reference path="../polymer/types/polymer.d.ts" />
+/// <reference path="neon-animation-behavior.d.ts" />
+
+declare namespace Polymer {
+
+ /**
+ * Use `Polymer.NeonSharedElementAnimationBehavior` to implement shared element animations.
+ */
+ interface NeonSharedElementAnimationBehavior extends Polymer.NeonAnimationBehavior {
+
+ /**
+ * Cached copy of shared elements.
+ */
+ sharedElements: object|null|undefined;
+
+ /**
+ * Finds shared elements based on `config`.
+ */
+ findSharedElements(config: any): any;
+ }
+
+ const NeonSharedElementAnimationBehavior: object;
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animation-behavior.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animation-behavior.html
new file mode 100644
index 00000000000..d8f2bdd7193
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/neon-shared-element-animation-behavior.html
@@ -0,0 +1,72 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<link rel="import" href="../polymer/polymer.html">
+<link rel="import" href="neon-animation-behavior.html">
+
+<script>
+
+ /**
+ * Use `Polymer.NeonSharedElementAnimationBehavior` to implement shared element animations.
+ * @polymerBehavior Polymer.NeonSharedElementAnimationBehavior
+ */
+ Polymer.NeonSharedElementAnimationBehaviorImpl = {
+
+ properties: {
+
+ /**
+ * Cached copy of shared elements.
+ */
+ sharedElements: {
+ type: Object
+ }
+
+ },
+
+ /**
+ * Finds shared elements based on `config`.
+ */
+ findSharedElements: function(config) {
+ var fromPage = config.fromPage;
+ var toPage = config.toPage;
+ if (!fromPage || !toPage) {
+ console.warn(this.is + ':', !fromPage ? 'fromPage' : 'toPage', 'is undefined!');
+ return null;
+ };
+
+ if (!fromPage.sharedElements || !toPage.sharedElements) {
+ console.warn(this.is + ':', 'sharedElements are undefined for', !fromPage.sharedElements ? fromPage : toPage);
+ return null;
+ };
+
+ var from = fromPage.sharedElements[config.id];
+ var to = toPage.sharedElements[config.id];
+
+ if (!from || !to) {
+ console.warn(this.is + ':', 'sharedElement with id', config.id, 'not found in', !from ? fromPage : toPage);
+ return null;
+ }
+
+ this.sharedElements = {
+ from: from,
+ to: to
+ };
+ return this.sharedElements;
+ }
+
+ };
+
+ /** @polymerBehavior Polymer.NeonSharedElementAnimationBehavior */
+ Polymer.NeonSharedElementAnimationBehavior = [
+ Polymer.NeonAnimationBehavior,
+ Polymer.NeonSharedElementAnimationBehaviorImpl
+ ];
+
+</script>
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/package-lock.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/package-lock.json
new file mode 100644
index 00000000000..77dd6c5ef50
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/package-lock.json
@@ -0,0 +1,974 @@
+{
+ "name": "@polymer/neon-animation",
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "@polymer/gen-typescript-declarations": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@polymer/gen-typescript-declarations/-/gen-typescript-declarations-1.2.0.tgz",
+ "integrity": "sha512-a5DFXI3TdZSVOMH4608LVaBLmcr+mwM2+B8OSBiB9WFNCtdqzUXwtB5We6vBzrThXlO4uRo7d2pEqjNXMAlEkA==",
+ "dev": true,
+ "requires": {
+ "@types/doctrine": "0.0.3",
+ "@types/fs-extra": "5.0.0",
+ "@types/glob": "5.0.35",
+ "command-line-args": "5.0.2",
+ "command-line-usage": "4.1.0",
+ "doctrine": "2.1.0",
+ "escodegen": "1.9.0",
+ "fs-extra": "5.0.0",
+ "glob": "7.1.2",
+ "minimatch": "3.0.4",
+ "polymer-analyzer": "3.0.0-pre.12"
+ }
+ },
+ "@types/babel-generator": {
+ "version": "6.25.1",
+ "resolved": "https://registry.npmjs.org/@types/babel-generator/-/babel-generator-6.25.1.tgz",
+ "integrity": "sha512-nKNz9Ch4WP2TFZjQROhxqqS2SCk0OoDzGazJI6S+2sGgW9P7N4o3vluZAXFuPEnRqtz2A0vrrkK3tjQktxIlRw==",
+ "dev": true,
+ "requires": {
+ "@types/babel-types": "6.25.2"
+ }
+ },
+ "@types/babel-traverse": {
+ "version": "6.25.3",
+ "resolved": "https://registry.npmjs.org/@types/babel-traverse/-/babel-traverse-6.25.3.tgz",
+ "integrity": "sha512-4FaulWyA7nrXPkzoukL2VmSpxCnBZwc+MgwZqO30gtHCrtaUXnoxymdYfxzf3CZN80zjtrVzKfLlZ7FPYvrhQQ==",
+ "dev": true,
+ "requires": {
+ "@types/babel-types": "6.25.2"
+ }
+ },
+ "@types/babel-types": {
+ "version": "6.25.2",
+ "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-6.25.2.tgz",
+ "integrity": "sha512-+3bMuktcY4a70a0KZc8aPJlEOArPuAKQYHU5ErjkOqGJdx8xuEEVK6nWogqigBOJ8nKPxRpyCUDTCPmZ3bUxGA==",
+ "dev": true
+ },
+ "@types/babylon": {
+ "version": "6.16.2",
+ "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz",
+ "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==",
+ "dev": true,
+ "requires": {
+ "@types/babel-types": "6.25.2"
+ }
+ },
+ "@types/chai": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.1.2.tgz",
+ "integrity": "sha512-D8uQwKYUw2KESkorZ27ykzXgvkDJYXVEihGklgfp5I4HUP8D6IxtcdLTMB1emjQiWzV7WZ5ihm1cxIzVwjoleQ==",
+ "dev": true
+ },
+ "@types/chai-subset": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.1.tgz",
+ "integrity": "sha512-Aof+FLfWzBPzDgJ2uuBuPNOBHVx9Siyw4vmOcsMgsuxX1nfUWSlzpq4pdvQiaBgGjGS7vP/Oft5dpJbX4krT1A==",
+ "dev": true,
+ "requires": {
+ "@types/chai": "4.1.2"
+ }
+ },
+ "@types/chalk": {
+ "version": "0.4.31",
+ "resolved": "https://registry.npmjs.org/@types/chalk/-/chalk-0.4.31.tgz",
+ "integrity": "sha1-ox10JBprHtu5c8822XooloNKUfk=",
+ "dev": true
+ },
+ "@types/clone": {
+ "version": "0.1.30",
+ "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz",
+ "integrity": "sha1-5zZWSMG0ITalnH1QQGN7O1yDthQ=",
+ "dev": true
+ },
+ "@types/cssbeautify": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@types/cssbeautify/-/cssbeautify-0.3.1.tgz",
+ "integrity": "sha1-jgvuj33suVIlDaDK6+BeMFkcF+8=",
+ "dev": true
+ },
+ "@types/doctrine": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz",
+ "integrity": "sha1-6JLSk8ksnB0/mvcsFaVU+8fgiVo=",
+ "dev": true
+ },
+ "@types/events": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz",
+ "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==",
+ "dev": true
+ },
+ "@types/fs-extra": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.0.tgz",
+ "integrity": "sha512-qtxDULQKUenuaDLW003CgC+0T0eiAfH3BrH+vSt87GLzbz5EZ6Ox6mv9rMttvhDOatbb9nYh0E1m7ydoYwUrAg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "9.4.6"
+ }
+ },
+ "@types/glob": {
+ "version": "5.0.35",
+ "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.35.tgz",
+ "integrity": "sha512-wc+VveszMLyMWFvXLkloixT4n0harUIVZjnpzztaZ0nKLuul7Z32iMt2fUFGAaZ4y1XWjFRMtCI5ewvyh4aIeg==",
+ "dev": true,
+ "requires": {
+ "@types/events": "1.1.0",
+ "@types/minimatch": "3.0.3",
+ "@types/node": "9.4.6"
+ }
+ },
+ "@types/minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "9.4.6",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-9.4.6.tgz",
+ "integrity": "sha512-CTUtLb6WqCCgp6P59QintjHWqzf4VL1uPA27bipLAPxFqrtK1gEYllePzTICGqQ8rYsCbpnsNypXjjDzGAAjEQ==",
+ "dev": true
+ },
+ "@types/parse5": {
+ "version": "2.2.34",
+ "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-2.2.34.tgz",
+ "integrity": "sha1-44cKEOgnNacg9i1x3NGDunjvOp0=",
+ "dev": true,
+ "requires": {
+ "@types/node": "9.4.6"
+ }
+ },
+ "@types/winston": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@types/winston/-/winston-2.3.8.tgz",
+ "integrity": "sha512-QqR0j08RCS1AQYPMRPHikEpcmK+2aEEbcSzWLwOqyJ4FhLmHUx/WjRrnn7tTQg/y4IKnMhzskh/o7qvGIZZ7iA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "9.4.6"
+ }
+ },
+ "ansi-escape-sequences": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.0.0.tgz",
+ "integrity": "sha512-v+0wW9Wezwsyb0uF4aBVCjmSqit3Ru7PZFziGF0o2KwTvN2zWfTi3BRLq9EkJFdg3eBbyERXGTntVpBxH1J68Q==",
+ "dev": true,
+ "requires": {
+ "array-back": "2.0.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "argv-tools": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/argv-tools/-/argv-tools-0.1.1.tgz",
+ "integrity": "sha512-Cc0dBvx4dvrjjKpyDA6w8RlNAw8Su30NvZbWl/Tv9ZALEVlLVkWQiHMi84Q0xNfpVuSaiQbYkdmWK8g1PLGhKw==",
+ "dev": true,
+ "requires": {
+ "array-back": "2.0.0",
+ "find-replace": "2.0.1"
+ }
+ },
+ "array-back": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
+ "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
+ "dev": true,
+ "requires": {
+ "typical": "2.6.1"
+ }
+ },
+ "async": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
+ "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=",
+ "dev": true
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ }
+ },
+ "babel-generator": {
+ "version": "6.26.1",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
+ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
+ "dev": true,
+ "requires": {
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "detect-indent": "4.0.0",
+ "jsesc": "1.3.0",
+ "lodash": "4.17.5",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "2.5.3",
+ "regenerator-runtime": "0.11.1"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "debug": "2.6.9",
+ "globals": "9.18.0",
+ "invariant": "2.2.2",
+ "lodash": "4.17.5"
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "esutils": "2.0.2",
+ "lodash": "4.17.5",
+ "to-fast-properties": "1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "bower": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/bower/-/bower-1.8.2.tgz",
+ "integrity": "sha1-rfU1KcjUrwLvJPuNU0HBQZ0z4vc=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "clone": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
+ "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
+ "dev": true
+ },
+ "command-line-args": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.0.2.tgz",
+ "integrity": "sha512-/qPcbL8zpqg53x4rAaqMFlRV4opN3pbla7I7k9x8kyOBMQoGT6WltjN6sXZuxOXw6DgdK7Ad+ijYS5gjcr7vlA==",
+ "dev": true,
+ "requires": {
+ "argv-tools": "0.1.1",
+ "array-back": "2.0.0",
+ "find-replace": "2.0.1",
+ "lodash.camelcase": "4.3.0",
+ "typical": "2.6.1"
+ }
+ },
+ "command-line-usage": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz",
+ "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==",
+ "dev": true,
+ "requires": {
+ "ansi-escape-sequences": "4.0.0",
+ "array-back": "2.0.0",
+ "table-layout": "0.4.2",
+ "typical": "2.6.1"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "core-js": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz",
+ "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=",
+ "dev": true
+ },
+ "cssbeautify": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cssbeautify/-/cssbeautify-0.3.1.tgz",
+ "integrity": "sha1-Et0fc0A1wub6ymfcvc73TkKBE5c=",
+ "dev": true
+ },
+ "cycle": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
+ "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.0.tgz",
+ "integrity": "sha1-bvSgmwX5iw41jW2T1Mo8rsZnKAM=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2"
+ }
+ },
+ "dom5": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dom5/-/dom5-3.0.0.tgz",
+ "integrity": "sha512-PbE+7C4Sh1dHDTLNuSDaMUGD1ivDiSZw0L+a9xVUzUKeQ8w3vdzfKHRA07CxcrFZZOa1SGl2nIJ9T49j63q+bg==",
+ "dev": true,
+ "requires": {
+ "@types/parse5": "2.2.34",
+ "clone": "2.1.1",
+ "parse5": "4.0.0"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz",
+ "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==",
+ "dev": true,
+ "requires": {
+ "esprima": "3.1.3",
+ "estraverse": "4.2.0",
+ "esutils": "2.0.2",
+ "optionator": "0.8.2",
+ "source-map": "0.5.7"
+ }
+ },
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+ "dev": true
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "eyes": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+ "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "find-replace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-2.0.1.tgz",
+ "integrity": "sha512-LzDo3Fpa30FLIBsh6DCDnMN1KW2g4QKkqKmejlImgWY67dDFPX/x9Kh/op/GK522DchQXEvDi/wD48HKW49XOQ==",
+ "dev": true,
+ "requires": {
+ "array-back": "2.0.0",
+ "test-value": "3.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
+ "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "jsonfile": "4.0.0",
+ "universalify": "0.1.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
+ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "dev": true
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "indent": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/indent/-/indent-0.0.2.tgz",
+ "integrity": "sha1-jHnwgBkFWbaHA0uEx676l9WpEdk=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "invariant": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz",
+ "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=",
+ "dev": true,
+ "requires": {
+ "loose-envify": "1.3.1"
+ }
+ },
+ "is-finite": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ },
+ "jsesc": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
+ "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11"
+ }
+ },
+ "jsonschema": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.2.tgz",
+ "integrity": "sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
+ }
+ },
+ "lodash": {
+ "version": "4.17.5",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
+ "dev": true
+ },
+ "lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
+ "dev": true
+ },
+ "lodash.padend": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
+ "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=",
+ "dev": true
+ },
+ "loose-envify": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
+ "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "dev": true,
+ "requires": {
+ "js-tokens": "3.0.2"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.11"
+ }
+ },
+ "minimatch-all": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch-all/-/minimatch-all-1.1.0.tgz",
+ "integrity": "sha1-QMSWonouEo0Zv3WOdrsBoMcUV4c=",
+ "dev": true,
+ "requires": {
+ "minimatch": "3.0.4"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "wordwrap": "1.0.0"
+ }
+ },
+ "parse5": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz",
+ "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "plylog": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/plylog/-/plylog-0.5.0.tgz",
+ "integrity": "sha1-yXbrodgNLdmRAF18EQ2vh0FUeI8=",
+ "dev": true,
+ "requires": {
+ "@types/node": "4.2.23",
+ "@types/winston": "2.3.8",
+ "winston": "2.4.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "4.2.23",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-4.2.23.tgz",
+ "integrity": "sha512-U6IchCNLRyswc9p6G6lxWlbE+KwAhZp6mGo6MD2yWpmFomhYmetK+c98OpKyvphNn04CU3aXeJrXdOqbXVTS/w==",
+ "dev": true
+ }
+ }
+ },
+ "polymer-analyzer": {
+ "version": "3.0.0-pre.12",
+ "resolved": "https://registry.npmjs.org/polymer-analyzer/-/polymer-analyzer-3.0.0-pre.12.tgz",
+ "integrity": "sha512-QQL70IC85hI6q9uQeresEMcT1Qf8YR/zDe1qG8WWeeFAZk8z0lmzUpsfcAWz+bM4wpDdXrtd4HitIs4p0CHl/w==",
+ "dev": true,
+ "requires": {
+ "@types/babel-generator": "6.25.1",
+ "@types/babel-traverse": "6.25.3",
+ "@types/babel-types": "6.25.2",
+ "@types/babylon": "6.16.2",
+ "@types/chai-subset": "1.3.1",
+ "@types/chalk": "0.4.31",
+ "@types/clone": "0.1.30",
+ "@types/cssbeautify": "0.3.1",
+ "@types/doctrine": "0.0.1",
+ "@types/minimatch": "3.0.3",
+ "@types/node": "6.0.101",
+ "@types/parse5": "2.2.34",
+ "babel-generator": "6.26.1",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "chalk": "1.1.3",
+ "clone": "2.1.1",
+ "cssbeautify": "0.3.1",
+ "doctrine": "2.1.0",
+ "dom5": "3.0.0",
+ "indent": "0.0.2",
+ "jsonschema": "1.2.2",
+ "minimatch": "3.0.4",
+ "parse5": "4.0.0",
+ "polymer-project-config": "3.8.1",
+ "shady-css-parser": "0.1.0",
+ "stable": "0.1.6",
+ "strip-indent": "2.0.0",
+ "vscode-uri": "1.0.1"
+ },
+ "dependencies": {
+ "@types/doctrine": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.1.tgz",
+ "integrity": "sha1-uZny2fe0PKvgoaLzm8IDvH3K2p0=",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "6.0.101",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.101.tgz",
+ "integrity": "sha512-IQ7V3D6+kK1DArTqTBrnl3M+YgJZLw8ta8w3Q9xjR79HaJzMAoTbZ8TNzUTztrkCKPTqIstE2exdbs1FzsYLUw==",
+ "dev": true
+ }
+ }
+ },
+ "polymer-project-config": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/polymer-project-config/-/polymer-project-config-3.8.1.tgz",
+ "integrity": "sha512-MLvnM9gexFWg7nynY24eHZG6NLXocmk718sVds/sx2CAJ6iihhC0JMhhOIa6jnad9KQrHyGl/cs3mMRaaub5Fg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "6.0.101",
+ "jsonschema": "1.2.2",
+ "minimatch-all": "1.1.0",
+ "plylog": "0.5.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "6.0.101",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.101.tgz",
+ "integrity": "sha512-IQ7V3D6+kK1DArTqTBrnl3M+YgJZLw8ta8w3Q9xjR79HaJzMAoTbZ8TNzUTztrkCKPTqIstE2exdbs1FzsYLUw==",
+ "dev": true
+ }
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "reduce-flatten": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
+ "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=",
+ "dev": true
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "1.0.2"
+ }
+ },
+ "shady-css-parser": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/shady-css-parser/-/shady-css-parser-0.1.0.tgz",
+ "integrity": "sha512-irfJUUkEuDlNHKZNAp2r7zOyMlmbfVJ+kWSfjlCYYUx/7dJnANLCyTzQZsuxy5NJkvtNwSxY5Gj8MOlqXUQPyA==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "stable": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz",
+ "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=",
+ "dev": true
+ },
+ "stack-trace": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+ "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "table-layout": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.2.tgz",
+ "integrity": "sha512-tygyl5+eSHj4chpq5Zfy6cpc7MOUBClAW9ozghFH7hg9bAUzShOYn+/vUzTRkKOSLJWKfgYtP2tAU2c0oAD8eg==",
+ "dev": true,
+ "requires": {
+ "array-back": "2.0.0",
+ "deep-extend": "0.5.0",
+ "lodash.padend": "4.6.1",
+ "typical": "2.6.1",
+ "wordwrapjs": "3.0.0"
+ }
+ },
+ "test-value": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
+ "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
+ "dev": true,
+ "requires": {
+ "array-back": "2.0.0",
+ "typical": "2.6.1"
+ }
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2"
+ }
+ },
+ "typical": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz",
+ "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=",
+ "dev": true
+ },
+ "universalify": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
+ "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+ "dev": true
+ },
+ "vscode-uri": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.1.tgz",
+ "integrity": "sha1-Eahr7+rDxKo+wIYjZRo8gabQu8g=",
+ "dev": true
+ },
+ "winston": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz",
+ "integrity": "sha1-gIBQuT1SZh7Z+2wms/DIJnCLCu4=",
+ "dev": true,
+ "requires": {
+ "async": "1.0.0",
+ "colors": "1.0.3",
+ "cycle": "1.0.3",
+ "eyes": "0.1.8",
+ "isstream": "0.1.2",
+ "stack-trace": "0.0.10"
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
+ "wordwrapjs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz",
+ "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==",
+ "dev": true,
+ "requires": {
+ "reduce-flatten": "1.0.1",
+ "typical": "2.6.1"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/package.json b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/package.json
new file mode 100644
index 00000000000..2dd963b3e8d
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "@polymer/neon-animation",
+ "private": true,
+ "description": "A system for animating Polymer-based web components",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/PolymerElements/neon-animation"
+ },
+ "license": "BSD-3-Clause",
+ "devDependencies": {
+ "@polymer/gen-typescript-declarations": "^1.2.0",
+ "bower": "^1.8.0"
+ },
+ "scripts": {
+ "update-types": "bower install && gen-typescript-declarations --deleteExisting --outDir ."
+ }
+}
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/web-animations.d.ts b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/web-animations.d.ts
new file mode 100644
index 00000000000..c2f6397e0fc
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/web-animations.d.ts
@@ -0,0 +1,10 @@
+/**
+ * DO NOT EDIT
+ *
+ * This file was automatically generated by
+ * https://github.com/Polymer/gen-typescript-declarations
+ *
+ * To modify these typings, edit the source file(s):
+ * web-animations.html
+ */
+
diff --git a/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/web-animations.html b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/web-animations.html
new file mode 100644
index 00000000000..c871854017a
--- /dev/null
+++ b/chromium/third_party/catapult/third_party/polymer2/bower_components/neon-animation/web-animations.html
@@ -0,0 +1,11 @@
+<!--
+@license
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<script src="../web-animations-js/web-animations-next-lite.min.js"></script>