diff --git a/bower.json b/bower.json
index 40506e9dd0..c4f36f6c16 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
{
"name": "polymer",
- "version": "1.7.1",
+ "version": "1.8.0",
"main": [
"polymer.html",
"polymer-mini.html",
@@ -25,7 +25,7 @@
"url": "https://github.com/Polymer/polymer.git"
},
"dependencies": {
- "webcomponentsjs": "^0.7.20"
+ "webcomponentsjs": "^0.7.24"
},
"devDependencies": {
"web-component-tester": "*",
diff --git a/build.log b/build.log
index 8149e7db8b..5fd6529f69 100644
--- a/build.log
+++ b/build.log
@@ -1,79 +1,79 @@
BUILD LOG
---------
-Build Time: 2016-12-14T10:43:12-0800
+Build Time: 2017-02-06T16:13:42-0800
NODEJS INFORMATION
==================
-nodejs: v6.9.2
+nodejs: v6.9.3
abbrev: 1.0.9
-accepts: 1.3.3
accessibility-developer-tools: 2.11.0
acorn: 4.0.3
acorn-jsx: 3.0.1
adm-zip: 0.4.7
+accepts: 1.3.3
after: 0.8.2
-agent-base: 2.0.1
ajv: 4.10.0
ajv-keywords: 1.2.0
-align-text: 0.1.4
+agent-base: 2.0.1
amdefine: 1.0.1
ansi-cyan: 0.1.1
ansi-escapes: 1.4.0
ansi-red: 0.1.1
ansi-regex: 2.0.0
-ansi-wrap: 0.1.0
ansi-styles: 2.2.1
+align-text: 0.1.4
+ansi-wrap: 0.1.0
append-field: 0.1.0
-archiver: 0.14.4
archy: 1.0.0
-argparse: 1.0.9
+archiver: 0.14.4
arr-diff: 2.0.0
+argparse: 1.0.9
arr-flatten: 1.0.1
arr-union: 2.1.0
-array-find-index: 1.0.2
array-differ: 1.0.0
-array-slice: 0.2.3
+array-find-index: 1.0.2
array-flatten: 1.1.1
-array-unique: 0.2.1
+array-slice: 0.2.3
array-union: 1.0.2
array-uniq: 1.0.3
+array-unique: 0.2.1
arraybuffer.slice: 0.0.6
arrify: 1.0.1
asap: 2.0.5
asn1: 0.1.11
-assertion-error: 1.0.2
assert-plus: 0.1.5
-asynckit: 0.4.0
+assertion-error: 1.0.2
async: 0.9.2
aws-sign2: 0.5.0
+asynckit: 0.4.0
aws4: 1.5.0
-babel-code-frame: 6.20.0
babel-polyfill: 6.20.0
-backo2: 1.0.2
babel-runtime: 6.20.0
+backo2: 1.0.2
backoff: 2.5.0
+babel-code-frame: 6.20.0
balanced-match: 0.4.2
base64-arraybuffer: 0.1.5
-base64-js: 1.1.2
base64id: 1.0.0
+base64-js: 1.1.2
bcrypt-pbkdf: 1.0.0
beeper: 1.1.1
better-assert: 1.0.2
binaryextensions: 1.0.1
-bl: 0.9.5
-blob: 0.0.4
bluebird: 2.11.0
+blob: 0.0.4
body-parser: 1.15.2
+bl: 0.9.5
boom: 0.4.2
-boxen: 0.3.1
brace-expansion: 1.1.6
+boxen: 0.3.1
braces: 1.8.5
-browserstack: 1.5.0
buffer-crc32: 0.2.13
-buffer-shims: 1.0.0
+browserstack: 1.5.0
bufferstreams: 1.1.1
-builtin-modules: 1.1.1
+buffer-shims: 1.0.0
bunyan: 1.8.5
+builtin-modules: 1.1.1
busboy: 0.2.13
bytes: 2.4.0
callsite: 1.0.0
@@ -82,27 +82,27 @@ callsites: 0.2.0
camelcase: 2.1.1
camelcase-keys: 2.1.0
capture-stack-trace: 1.0.0
-caseless: 0.8.0
center-align: 0.1.3
chai: 3.5.0
chalk: 1.1.3
-cleankill: 1.0.3
+caseless: 0.8.0
circular-json: 0.3.1
+cleankill: 1.0.3
cli-cursor: 1.0.2
-cli-width: 2.1.0
-cliui: 2.1.0
clone: 1.0.2
clone-stats: 0.0.1
co: 4.6.0
code-point-at: 1.1.0
-commander: 2.3.0
+cliui: 2.1.0
+cli-width: 2.1.0
combined-stream: 0.0.7
-component-bind: 1.0.0
+commander: 2.3.0
component-emitter: 1.1.2
-compress-commons: 0.2.9
component-inherit: 0.0.3
+component-bind: 1.0.0
concat-map: 0.0.1
concat-stream: 1.5.2
+compress-commons: 0.2.9
configstore: 2.1.0
content-disposition: 0.5.1
content-type: 1.0.2
@@ -110,25 +110,24 @@ cookie: 0.3.1
cookie-signature: 1.0.6
core-js: 2.4.1
core-util-is: 1.0.2
-crc32-stream: 0.3.4
crc: 3.2.1
-cryptiles: 0.2.2
+crc32-stream: 0.3.4
create-error-class: 3.0.2
+cryptiles: 0.2.2
csv: 0.4.6
csv-generate: 0.0.6
-csv-parse: 1.1.7
csv-stringify: 0.0.8
ctype: 0.5.3
currently-unhandled: 0.4.1
d: 0.1.1
dashdash: 1.14.1
-debug: 2.4.1
dateformat: 1.0.12
+debug: 2.4.1
debuglog: 1.0.1
-decamelize: 1.2.0
+csv-parse: 1.1.7
deep-eql: 0.1.3
deep-extend: 0.4.1
-deep-is: 0.1.3
+decamelize: 1.2.0
defaults: 1.0.3
del: 2.2.2
delayed-stream: 0.0.5
@@ -139,107 +138,108 @@ detect-file: 0.1.0
dezalgo: 1.0.3
dicer: 0.2.5
diff: 1.4.0
+deep-is: 0.1.3
doctrine: 1.5.0
-dom-serializer: 0.1.0
dom5: 1.3.6
domelementtype: 1.3.0
domhandler: 2.3.0
+dom-serializer: 0.1.0
domutils: 1.5.1
-dot-prop: 3.0.0
dtrace-provider: 0.6.0
-duplexer2: 0.0.2
duplexer: 0.1.1
-ecc-jsbn: 0.1.1
+duplexer2: 0.0.2
+dot-prop: 3.0.0
ee-first: 1.1.1
+ecc-jsbn: 0.1.1
encodeurl: 1.0.1
end-of-stream: 0.1.5
engine.io: 1.8.2
engine.io-parser: 1.3.2
-engine.io-client: 1.8.2
entities: 1.1.1
-error-ex: 1.3.0
+engine.io-client: 1.8.2
es5-ext: 0.10.12
-es6-iterator: 2.0.0
+error-ex: 1.3.0
es6-map: 0.1.4
es6-promise: 2.3.0
-es6-set: 0.1.4
+es6-iterator: 2.0.0
es6-symbol: 3.1.0
es6-weak-map: 2.0.1
escape-html: 1.0.3
escape-regexp-component: 1.0.2
escape-string-regexp: 1.0.5
escodegen: 1.8.1
+es6-set: 0.1.4
escope: 3.6.0
eslint: 3.12.1
eslint-plugin-html: 1.7.0
espree: 3.3.2
-esprima: 2.7.3
-esrecurse: 4.1.0
estraverse: 4.2.0
+esrecurse: 4.1.0
esutils: 2.0.2
etag: 1.7.0
event-emitter: 0.3.4
exit-hook: 1.1.1
+esprima: 2.7.3
expand-brackets: 0.1.5
expand-range: 1.8.2
expand-tilde: 1.2.2
-express: 4.14.0
extend: 3.0.0
extend-shallow: 1.1.4
extglob: 0.3.2
extsprintf: 1.2.0
+express: 4.14.0
fancy-log: 1.2.0
-fast-levenshtein: 2.0.5
fd-slicer: 1.0.1
+fast-levenshtein: 2.0.5
figures: 1.7.0
file-entry-cache: 2.0.0
filename-regex: 2.0.0
fill-range: 2.2.3
filled-array: 1.1.0
finalhandler: 0.5.0
-find-index: 0.1.1
find-up: 1.1.2
+find-index: 0.1.1
findup-sync: 0.4.3
-fined: 1.0.2
first-chunk-stream: 1.0.0
-flagged-respawn: 0.3.2
-flat-cache: 1.2.1
+fined: 1.0.2
for-in: 0.1.6
+flat-cache: 1.2.1
+flagged-respawn: 0.3.2
for-own: 0.1.4
forever-agent: 0.5.2
-form-data: 0.2.0
formatio: 1.1.1
formidable: 1.0.17
forwarded: 0.1.0
freeport: 1.0.5
fresh: 0.3.0
fs-exists-sync: 0.1.0
-gaze: 0.5.2
fs.realpath: 1.0.0
+gaze: 0.5.2
generate-function: 2.0.0
-get-stdin: 4.0.1
generate-object-property: 1.2.0
+get-stdin: 4.0.1
getpass: 0.1.6
github-url-from-git: 1.5.0
github-url-from-username-repo: 1.0.2
-glob: 7.1.1
glob-base: 0.3.0
+glob: 7.1.1
glob-parent: 2.0.0
+form-data: 0.2.0
glob-stream: 3.1.18
glob2base: 0.0.12
glob-watcher: 0.0.6
global-modules: 0.2.3
-global-prefix: 0.1.5
globals: 9.14.0
+global-prefix: 0.1.5
globby: 5.0.0
-globule: 0.1.0
glogg: 1.0.0
+globule: 0.1.0
got: 5.7.1
-graceful-readlink: 1.0.1
graceful-fs: 4.1.11
+graceful-readlink: 1.0.1
growl: 1.9.2
-gulp-audit: 1.0.0
gulp: 3.9.1
+gulp-audit: 1.0.0
gulp-eslint: 3.0.1
gulp-rename: 1.2.2
gulp-replace: 0.5.4
@@ -249,71 +249,71 @@ gulplog: 1.0.0
handle-thing: 1.2.5
har-validator: 2.0.6
has-ansi: 2.0.0
-has-color: 0.1.7
has-binary: 0.1.7
+has-color: 0.1.7
has-cors: 1.1.0
has-gulplog: 0.1.0
+hawk: 1.1.1
hoek: 0.9.1
homedir-polyfill: 1.0.1
-hawk: 1.1.1
hosted-git-info: 2.1.5
hpack.js: 2.1.6
htmlparser2: 3.9.2
http-deceiver: 1.2.7
-http-errors: 1.5.1
http-signature: 0.11.0
https-proxy-agent: 1.0.0
hydrolysis: 1.24.1
iconv-lite: 0.4.13
ignore: 3.2.0
-indent-string: 2.1.0
imurmurhash: 0.1.4
+indent-string: 2.1.0
indexof: 0.0.1
inflight: 1.0.6
inherits: 2.0.3
ini: 1.3.4
inquirer: 0.12.0
+http-errors: 1.5.1
interpret: 1.0.1
ipaddr.js: 1.1.1
-is-absolute: 0.2.6
is-arrayish: 0.2.1
is-buffer: 1.1.4
is-builtin-module: 1.0.0
-is-dotfile: 1.0.2
+is-absolute: 0.2.6
is-equal-shallow: 0.1.3
is-extendable: 0.1.1
+is-dotfile: 1.0.2
is-extglob: 1.0.0
-is-finite: 1.0.2
is-fullwidth-code-point: 1.0.0
+is-finite: 1.0.2
is-glob: 2.0.1
is-my-json-valid: 2.15.0
-is-number: 2.1.0
is-npm: 1.0.0
is-obj: 1.0.1
-is-path-in-cwd: 1.0.0
is-path-cwd: 1.0.0
+is-path-in-cwd: 1.0.0
is-path-inside: 1.0.0
is-posix-bracket: 0.1.1
is-primitive: 2.0.0
-is-redirect: 1.0.0
is-property: 1.0.2
+is-number: 2.1.0
+is-redirect: 1.0.0
is-relative: 0.2.1
is-resolvable: 1.0.0
-is-retry-allowed: 1.1.0
is-stream: 1.1.0
is-typedarray: 1.0.0
-is-utf8: 0.2.1
is-unc-path: 0.1.2
-isarray: 1.0.0
+is-utf8: 0.2.1
+is-retry-allowed: 1.1.0
is-windows: 0.2.0
-isobject: 2.1.0
+isarray: 1.0.0
isexe: 1.1.2
+isobject: 2.1.0
isstream: 0.1.2
istextorbinary: 1.0.2
jade: 0.26.3
jju: 1.3.0
-jodid25519: 1.0.2
js-tokens: 2.0.0
+jodid25519: 1.0.2
js-yaml: 3.7.0
jsbn: 0.1.0
json-parse-helpfulerror: 1.0.3
@@ -325,31 +325,31 @@ jsonify: 0.0.0
jsprim: 1.3.1
jsonpointer: 4.0.0
keep-alive-agent: 0.0.1
-latest-version: 2.0.0
kind-of: 3.1.0
-launchpad: 0.5.4
+latest-version: 2.0.0
lazy-cache: 1.0.4
lazypipe: 1.0.1
-lazystream: 0.1.0
levn: 0.3.0
liftoff: 2.3.0
load-json-file: 1.1.0
+lazystream: 0.1.0
lodash: 1.0.2
lodash._basecopy: 3.0.1
lodash._basetostring: 3.0.1
lodash._basevalues: 3.0.0
-lodash._isiterateecall: 3.0.9
lodash._getnative: 3.9.1
+launchpad: 0.5.4
+lodash._isiterateecall: 3.0.9
lodash._reescape: 3.0.0
lodash._reevaluate: 3.0.0
-lodash._root: 3.0.1
-lodash._reinterpolate: 3.0.0
lodash.assignwith: 4.2.0
+lodash._root: 3.0.1
lodash.escape: 3.2.0
lodash.isarguments: 3.1.0
-lodash.isempty: 4.4.0
lodash.isarray: 3.0.4
+lodash.isempty: 4.4.0
lodash.isplainobject: 4.0.6
+lodash._reinterpolate: 3.0.0
lodash.isstring: 4.0.1
lodash.keys: 3.1.2
lodash.mapvalues: 4.6.0
@@ -359,14 +359,14 @@ lodash.template: 3.6.2
lodash.templatesettings: 3.1.1
lolex: 1.3.2
longest: 1.0.1
-loud-rejection: 1.6.0
-lru-cache: 2.7.3
lowercase-keys: 1.0.0
+lru-cache: 2.7.3
map-cache: 0.2.2
map-obj: 1.0.1
-media-typer: 0.3.0
+loud-rejection: 1.6.0
meow: 3.7.0
merge-descriptors: 1.0.1
+media-typer: 0.3.0
methods: 1.1.2
micromatch: 2.3.11
mime: 1.3.4
@@ -376,52 +376,52 @@ minimalistic-assert: 1.0.0
minimatch: 3.0.3
minimist: 1.2.0
mkdirp: 0.5.1
-mocha: 2.5.3
moment: 2.17.1
ms: 0.7.2
-multer: 1.2.1
-mute-stream: 0.0.5
+mocha: 2.5.3
multipipe: 0.1.2
+multer: 1.2.1
mv: 2.1.1
-nan: 2.4.0
+mute-stream: 0.0.5
natives: 1.1.0
natural-compare: 1.4.0
-ncp: 2.0.0
+nan: 2.4.0
negotiator: 0.6.1
-node-int64: 0.3.3
-node-status-codes: 1.0.0
+ncp: 2.0.0
node-uuid: 1.4.7
+node-status-codes: 1.0.0
+node-int64: 0.3.3
nodegit-promise: 4.0.0
nomnom: 1.8.1
nopt: 3.0.6
normalize-path: 2.0.1
-normalize-package-data: 2.3.5
number-is-nan: 1.0.1
oauth-sign: 0.5.0
+normalize-package-data: 2.3.5
object-assign: 4.1.0
object-component: 0.0.3
object.omit: 2.0.1
obuf: 1.1.1
-on-finished: 2.3.0
once: 1.4.0
onetime: 1.1.0
-optionator: 0.8.2
+on-finished: 2.3.0
options: 0.0.6
-orchestrator: 0.3.8
+optionator: 0.8.2
ordered-read-streams: 0.1.0
+orchestrator: 0.3.8
os-homedir: 1.0.2
-os-tmpdir: 1.0.2
-osenv: 0.1.4
package-json: 2.4.0
-parse-glob: 3.0.4
+osenv: 0.1.4
parse-filepath: 1.0.1
+parse-glob: 3.0.4
parse-json: 2.2.0
+parse5: 1.5.1
parse-passwd: 1.0.0
+os-tmpdir: 1.0.2
parsejson: 0.0.3
-parse5: 1.5.1
parseqs: 0.0.5
-parseuri: 0.0.5
parseurl: 1.3.1
+parseuri: 0.0.5
path-exists: 2.1.0
path-is-absolute: 1.0.1
path-is-inside: 1.0.2
@@ -430,106 +430,106 @@ path-posix: 1.0.0
path-root-regex: 0.1.2
path-to-regexp: 0.1.7
path-type: 1.1.0
-pend: 1.2.0
pify: 2.3.0
+pend: 1.2.0
pinkie: 2.0.4
pinkie-promise: 2.0.1
plist: 2.0.1
-plugin-error: 0.1.2
pluralize: 1.2.1
+plugin-error: 0.1.2
polyclean: 1.3.1
precond: 0.2.3
prelude-ls: 1.1.2
-prepend-http: 1.0.4
-preserve: 0.2.0
pretty-hrtime: 1.0.3
+prepend-http: 1.0.4
process-nextick-args: 1.0.7
-promisify-node: 0.4.0
+preserve: 0.2.0
progress: 1.1.8
proxy-addr: 1.1.2
+promisify-node: 0.4.0
pseudomap: 1.0.2
punycode: 1.4.1
q: 1.4.1
-qs: 6.2.0
randomatic: 1.1.6
+qs: 6.2.0
range-parser: 1.2.0
-rc: 1.1.6
raw-body: 2.1.7
-read-installed: 3.1.5
+rc: 1.1.6
read-all-stream: 3.1.0
+read-installed: 3.1.5
read-package-json: 1.3.3
read-pkg: 1.1.0
read-pkg-up: 1.0.1
readdir-scoped-modules: 1.0.2
readable-stream: 2.2.2
readline2: 1.0.1
-rechoir: 0.6.2
redent: 1.0.0
-regex-cache: 0.4.3
+rechoir: 0.6.2
regenerator-runtime: 0.10.1
+regex-cache: 0.4.3
registry-auth-token: 3.1.0
registry-url: 3.1.0
-repeating: 2.0.1
repeat-element: 1.1.2
repeat-string: 1.6.1
+repeating: 2.0.1
replace-ext: 0.0.1
replacestream: 4.0.2
-request: 2.51.0
-resolve: 1.2.0
require-uncached: 1.0.3
-resolve-from: 1.0.1
+resolve: 1.2.0
resolve-dir: 0.1.1
-restify: 4.3.0
+resolve-from: 1.0.1
restore-cursor: 1.0.1
+restify: 4.3.0
right-align: 0.1.3
-run-async: 0.1.0
rimraf: 2.5.4
run-sequence: 1.2.2
-safe-json-stringify: 1.0.3
+run-async: 0.1.0
+request: 2.51.0
rx-lite: 3.1.2
+safe-json-stringify: 1.0.3
samsam: 1.1.2
sauce-connect-launcher: 1.1.1
selenium-standalone: 5.9.0
-semver-diff: 2.1.0
+select-hose: 2.0.0
semver: 4.3.6
send: 0.11.1
-select-hose: 2.0.0
sequencify: 0.0.7
+semver-diff: 2.1.0
serve-static: 1.11.1
serve-waterfall: 1.1.1
-server-destroy: 1.0.1
setprototypeof: 1.0.2
shelljs: 0.7.5
sigmund: 1.0.1
+server-destroy: 1.0.1
signal-exit: 3.0.2
sinon-chai: 2.8.0
-sinon: 1.17.6
slice-ansi: 0.0.4
slide: 1.1.6
+sinon: 1.17.6
sntp: 0.2.4
-socket.io: 1.7.2
socket.io-adapter: 0.5.0
+socket.io: 1.7.2
socket.io-client: 1.7.2
socket.io-parser: 2.3.1
source-map: 0.2.0
-spdx-correct: 1.0.2
sparkles: 1.0.0
-spdx-expression-parse: 1.0.4
+spdx-correct: 1.0.2
spdx-license-ids: 1.2.2
-spdy: 3.4.4
-sprintf-js: 1.0.3
+spdx-expression-parse: 1.0.4
spdy-transport: 2.0.18
+sprintf-js: 1.0.3
sshpk: 1.10.1
stacky: 1.3.1
statuses: 1.3.1
-stream-consume: 0.1.0
stream-combiner: 0.2.2
-stream-transform: 0.1.1
+stream-consume: 0.1.0
+spdy: 3.4.4
streamsearch: 0.1.2
+stream-transform: 0.1.1
string-width: 1.0.2
-strip-ansi: 3.0.1
string_decoder: 0.10.31
stringstream: 0.0.5
+strip-ansi: 3.0.1
strip-bom: 2.0.0
strip-indent: 1.0.1
strip-json-comments: 1.0.4
@@ -540,32 +540,31 @@ temp: 0.8.3
test-fixture: 1.1.1
text-table: 0.2.0
textextensions: 1.0.2
+through: 2.3.8
through2: 2.0.3
tildify: 1.2.0
-through: 2.3.8
time-stamp: 1.0.1
-to-array: 0.1.4
timed-out: 3.1.0
+to-array: 0.1.4
to-iso-string: 0.0.2
tough-cookie: 2.3.2
+trim-newlines: 1.0.0
tryit: 1.0.3
tunnel-agent: 0.4.3
-trim-newlines: 1.0.0
tweetnacl: 0.14.5
+type-check: 0.3.2
type-detect: 1.0.0
type-is: 1.6.14
-type-check: 0.3.2
typedarray: 0.0.6
-uglify-to-browserify: 1.0.2
uglify-js: 2.7.5
-unc-path-regex: 0.1.2
+uglify-to-browserify: 1.0.2
ultron: 1.0.2
+unc-path-regex: 0.1.2
underscore: 1.6.0
-underscore.string: 3.0.3
unique-stream: 1.0.0
-unzip-response: 1.0.2
+underscore.string: 3.0.3
unpipe: 1.0.0
-update-notifier: 0.6.3
+unzip-response: 1.0.2
urijs: 1.16.1
url-parse-lax: 1.0.0
user-home: 1.1.1
@@ -573,16 +572,17 @@ util: 0.10.3
util-deprecate: 1.0.2
util-extend: 1.0.3
utils-merge: 1.0.0
-uuid: 2.0.3
+update-notifier: 0.6.3
v8flags: 2.0.11
-validate-npm-package-license: 3.0.1
-vary: 1.1.0
vargs: 0.1.0
+vary: 1.1.0
vasync: 1.6.3
verror: 1.9.0
vinyl: 0.5.3
+validate-npm-package-license: 3.0.1
vinyl-fs: 0.3.14
vulcanize: 1.15.1
+uuid: 2.0.3
wbuf: 1.7.2
wct-local: 2.0.13
wct-sauce: 1.8.6
@@ -593,9 +593,9 @@ widest-line: 1.0.0
window-size: 0.1.0
wordwrap: 1.0.0
wrappy: 1.0.2
-write-file-atomic: 1.2.0
write: 0.2.1
ws: 1.1.1
+write-file-atomic: 1.2.0
wtf-8: 1.0.0
xdg-basedir: 2.0.0
xmlbuilder: 8.2.2
@@ -609,21 +609,21 @@ yeast: 0.1.2
zip-stream: 0.5.2
@types/chalk: 0.4.31
@types/clone: 0.1.30
-@types/express-serve-static-core: 4.0.39
@types/express: 4.0.34
-@types/freeport: 1.0.20
@types/mime: 0.0.29
-@types/parse5: 0.0.31
+@types/express-serve-static-core: 4.0.39
+@types/freeport: 1.0.20
@types/node: 4.0.30
-@types/serve-static: 1.7.31
+@types/parse5: 0.0.31
@types/which: 1.0.28
+@types/serve-static: 1.7.31
REPO REVISIONS
==============
-polymer-1.x: 04414234f233d699b9fa39d8296148818032f472
+polymer-1.x: ef0174703a1cf850ca4e6f205a8cec108687e85e
BUILD HASHES
============
-polymer-mini.html: 1c79cb9f25b964f6e57ac9a464cfc531908fb559
-polymer-micro.html: 0cfafa5441a1298e0a99965aa90bd740a5bbfb79
-polymer.html: c521c3703ff30ec00a7ce83050c40129ff82bb59
\ No newline at end of file
+polymer-mini.html: 37df26412c1452ef3f58a0e4a8720eeab15fd4b2
+polymer-micro.html: 775957d2c4f66b26fe057854ef1d364897906dfc
+polymer.html: 4fd2941c2a1a94aa59325a88de5067c3600fd21d
\ No newline at end of file
diff --git a/polymer-micro.html b/polymer-micro.html
index 9aa9120dc1..263b5aa654 100644
--- a/polymer-micro.html
+++ b/polymer-micro.html
@@ -52,15 +52,15 @@
if (!prototype) {
prototype = {};
}
-var factory = desugar(prototype);
-prototype = factory.prototype;
+prototype = desugar(prototype);
+var customCtor = prototype === prototype.constructor.prototype ? prototype.constructor : null;
var options = { prototype: prototype };
if (prototype.extends) {
options.extends = prototype.extends;
}
Polymer.telemetry._registrate(prototype);
-document.registerElement(prototype.is, options);
-return factory;
+var ctor = document.registerElement(prototype.is, options);
+return customCtor || ctor;
};
var desugar = function (prototype) {
var base = Polymer.Base;
@@ -69,14 +69,20 @@
}
prototype = Polymer.Base.chainObject(prototype, base);
prototype.registerCallback();
-return prototype.constructor;
+return prototype;
};
if (userPolymer) {
for (var i in userPolymer) {
Polymer[i] = userPolymer[i];
}
}
-Polymer.Class = desugar;
+Polymer.Class = function (prototype) {
+if (!prototype.factoryImpl) {
+prototype.factoryImpl = function () {
+};
+}
+return desugar(prototype).constructor;
+};
}());
Polymer.telemetry = {
registrations: [],
@@ -173,7 +179,7 @@
Polymer.Base = {
__isPolymerInstance__: true,
_addFeature: function (feature) {
-this.extend(this, feature);
+this.mixin(this, feature);
},
registerCallback: function () {
if (settings.lazyRegister === 'max') {
@@ -182,7 +188,15 @@
}
} else {
this._desugarBehaviors();
-this._doBehavior('beforeRegister');
+for (var i = 0, b; i < this.behaviors.length; i++) {
+b = this.behaviors[i];
+if (b.beforeRegister) {
+b.beforeRegister.call(this);
+}
+}
+if (this.beforeRegister) {
+this.beforeRegister();
+}
}
this._registerFeatures();
if (!settings.lazyRegister) {
@@ -190,12 +204,32 @@
}
},
createdCallback: function () {
+if (settings.disableUpgradeEnabled) {
+if (this.hasAttribute('disable-upgrade')) {
+this._propertySetter = disableUpgradePropertySetter;
+this.__data__ = {};
+return;
+} else {
+this.__hasInitialized = true;
+}
+}
+this.__initialize();
+},
+__initialize: function () {
if (!this.__hasRegisterFinished) {
this._ensureRegisterFinished(this.__proto__);
}
Polymer.telemetry.instanceCount++;
this.root = this;
-this._doBehavior('created');
+for (var i = 0, b; i < this.behaviors.length; i++) {
+b = this.behaviors[i];
+if (b.created) {
+b.created.call(this);
+}
+}
+if (this.created) {
+this.created();
+}
this._initFeatures();
},
ensureRegisterFinished: function () {
@@ -205,13 +239,26 @@
if (proto.__hasRegisterFinished !== proto.is || !proto.is) {
if (settings.lazyRegister === 'max') {
proto._desugarBehaviors();
-proto._doBehaviorOnly('beforeRegister');
+for (var i = 0, b; i < proto.behaviors.length; i++) {
+b = proto.behaviors[i];
+if (b.beforeRegister) {
+b.beforeRegister.call(proto);
+}
+}
}
proto.__hasRegisterFinished = proto.is;
if (proto._finishRegisterFeatures) {
proto._finishRegisterFeatures();
}
-proto._doBehavior('registered');
+for (var j = 0, pb; j < proto.behaviors.length; j++) {
+pb = proto.behaviors[j];
+if (pb.registered) {
+pb.registered.call(proto);
+}
+}
+if (proto.registered) {
+proto.registered();
+}
if (settings.usePolyfillProto && proto !== this) {
proto.extend(this, proto);
}
@@ -221,23 +268,43 @@
var self = this;
Polymer.RenderStatus.whenReady(function () {
self.isAttached = true;
-self._doBehavior('attached');
+for (var i = 0, b; i < self.behaviors.length; i++) {
+b = self.behaviors[i];
+if (b.attached) {
+b.attached.call(self);
+}
+}
+if (self.attached) {
+self.attached();
+}
});
},
detachedCallback: function () {
var self = this;
Polymer.RenderStatus.whenReady(function () {
self.isAttached = false;
-self._doBehavior('detached');
+for (var i = 0, b; i < self.behaviors.length; i++) {
+b = self.behaviors[i];
+if (b.detached) {
+b.detached.call(self);
+}
+}
+if (self.detached) {
+self.detached();
+}
});
},
attributeChangedCallback: function (name, oldValue, newValue) {
this._attributeChangedImpl(name);
-this._doBehavior('attributeChanged', [
-name,
-oldValue,
-newValue
-]);
+for (var i = 0, b; i < this.behaviors.length; i++) {
+b = this.behaviors[i];
+if (b.attributeChanged) {
+b.attributeChanged.call(this, name, oldValue, newValue);
+}
+}
+if (this.attributeChanged) {
+this.attributeChanged(name, oldValue, newValue);
+}
},
_attributeChangedImpl: function (name) {
this._setAttributeToProperty(this, name);
@@ -308,6 +375,22 @@
return object;
};
Polymer.Base = Polymer.Base.chainObject(Polymer.Base, HTMLElement.prototype);
+Polymer.BaseDescriptors = {};
+var disableUpgradePropertySetter;
+if (settings.disableUpgradeEnabled) {
+disableUpgradePropertySetter = function (property, value) {
+this.__data__[property] = value;
+};
+var origAttributeChangedCallback = Polymer.Base.attributeChangedCallback;
+Polymer.Base.attributeChangedCallback = function (name, oldValue, newValue) {
+if (!this.__hasInitialized && name === 'disable-upgrade') {
+this.__hasInitialized = true;
+this._propertySetter = Polymer.Bind._modelApi._propertySetter;
+this.__initialize();
+}
+origAttributeChangedCallback.call(this, name, oldValue, newValue);
+};
+}
if (window.CustomElements) {
Polymer.instanceof = CustomElements.instanceof;
} else {
@@ -329,8 +412,7 @@
return document.createElement('dom-module');
};
DomModule.prototype = Object.create(HTMLElement.prototype);
-Polymer.Base.extend(DomModule.prototype, {
-constructor: DomModule,
+Polymer.Base.mixin(DomModule.prototype, {
createdCallback: function () {
this.register();
},
@@ -356,6 +438,11 @@
}
}
});
+Object.defineProperty(DomModule.prototype, 'constructor', {
+value: DomModule,
+configurable: true,
+writable: true
+});
var cePolyfill = window.CustomElements && !CustomElements.useNative;
document.registerElement('dom-module', DomModule);
function forceDomModulesUpgrade() {
@@ -420,11 +507,16 @@
},
_mixinBehavior: function (b) {
var n$ = Object.getOwnPropertyNames(b);
+var useAssignment = b._noAccessors;
for (var i = 0, n; i < n$.length && (n = n$[i]); i++) {
if (!Polymer.Base._behaviorProperties[n] && !this.hasOwnProperty(n)) {
+if (useAssignment) {
+this[n] = b[n];
+} else {
this.copyOwnProperty(n, b, this);
}
}
+}
},
_prepBehaviors: function () {
this._prepFlattenedBehaviors(this.behaviors);
@@ -435,23 +527,6 @@
}
this._prepBehavior(this);
},
-_doBehavior: function (name, args) {
-for (var i = 0; i < this.behaviors.length; i++) {
-this._invokeBehavior(this.behaviors[i], name, args);
-}
-this._invokeBehavior(this, name, args);
-},
-_doBehaviorOnly: function (name, args) {
-for (var i = 0; i < this.behaviors.length; i++) {
-this._invokeBehavior(this.behaviors[i], name, args);
-}
-},
-_invokeBehavior: function (b, name, args) {
-var fn = b[name];
-if (fn) {
-fn.apply(this, args || Polymer.nar);
-}
-},
_marshalBehaviors: function () {
for (var i = 0; i < this.behaviors.length; i++) {
this._marshalBehavior(this.behaviors[i]);
@@ -470,7 +545,8 @@
attached: true,
detached: true,
attributeChanged: true,
-ready: true
+ready: true,
+_noAccessors: true
};Polymer.Base._addFeature({
_getExtendedPrototype: function (tag) {
return this._getExtendedNativePrototype(tag);
@@ -479,8 +555,14 @@
_getExtendedNativePrototype: function (tag) {
var p = this._nativePrototypes[tag];
if (!p) {
-var np = this.getNativePrototype(tag);
-p = this.extend(Object.create(np), Polymer.Base);
+p = Object.create(this.getNativePrototype(tag));
+var p$ = Object.getOwnPropertyNames(Polymer.Base);
+for (var i = 0, n; i < p$.length && (n = p$[i]); i++) {
+if (!Polymer.BaseDescriptors[n]) {
+p[n] = Polymer.Base[n];
+}
+}
+Object.defineProperties(p, Polymer.BaseDescriptors);
this._nativePrototypes[tag] = p;
}
return p;
@@ -516,7 +598,6 @@
}
});Polymer.nob = Object.create(null);
Polymer.Base._addFeature({
-properties: {},
getPropertyInfo: function (property) {
var info = this._getPropertyInfo(property, this.properties);
if (!info) {
@@ -573,7 +654,17 @@
}
}
}
-});Polymer.CaseMap = {
+});
+(function () {
+var propertiesDesc = {
+configurable: true,
+writable: true,
+enumerable: true,
+value: {}
+};
+Polymer.BaseDescriptors.properties = propertiesDesc;
+Object.defineProperty(Polymer.Base, 'properties', propertiesDesc);
+}());Polymer.CaseMap = {
_caseMap: {},
_rx: {
dashToCamel: /-[a-z]/g,
@@ -697,7 +788,7 @@
return value != null ? value : undefined;
}
}
-});Polymer.version = "1.7.1";Polymer.Base._addFeature({
+});Polymer.version = "1.8.0";Polymer.Base._addFeature({
_registerFeatures: function () {
this._prepIs();
this._prepBehaviors();
diff --git a/polymer-mini.html b/polymer-mini.html
index 34dbe81471..d711ed09c2 100644
--- a/polymer-mini.html
+++ b/polymer-mini.html
@@ -81,7 +81,15 @@
this._finishDistribute();
},
_readySelf: function () {
-this._doBehavior('ready');
+for (var i = 0, b; i < this.behaviors.length; i++) {
+b = this.behaviors[i];
+if (b.ready) {
+b.ready.call(this);
+}
+}
+if (this.ready) {
+this.ready();
+}
this._readied = true;
if (this._attachedPending) {
this._attachedPending = false;
@@ -694,7 +702,7 @@
}
var nativeCloneNode = Element.prototype.cloneNode;
var nativeImportNode = Document.prototype.importNode;
-Polymer.Base.extend(DomApi.prototype, {
+Polymer.Base.mixin(DomApi.prototype, {
_lazyDistribute: function (host) {
if (host.shadyRoot && host.shadyRoot._distributionClean) {
host.shadyRoot._distributionClean = false;
@@ -1158,7 +1166,7 @@
if (!Settings.useShadow) {
return;
}
-Polymer.Base.extend(DomApi.prototype, {
+Polymer.Base.mixin(DomApi.prototype, {
querySelectorAll: function (selector) {
return TreeApi.arrayCopy(this.node.querySelectorAll(selector));
},
@@ -1268,7 +1276,7 @@
'nextElementSibling',
'previousElementSibling'
]);
-}());Polymer.Base.extend(Polymer.dom, {
+}());Polymer.Base.mixin(Polymer.dom, {
_flushGuard: 0,
_FLUSH_MAX: 100,
_needsTakeRecords: !Polymer.Settings.useNativeCustomElements,
@@ -1569,7 +1577,7 @@
if (Settings.useShadow) {
var baseSetup = DomApi.EffectiveNodesObserver.prototype._setup;
var baseCleanup = DomApi.EffectiveNodesObserver.prototype._cleanup;
-Polymer.Base.extend(DomApi.EffectiveNodesObserver.prototype, {
+Polymer.Base.mixin(DomApi.EffectiveNodesObserver.prototype, {
_setup: function () {
if (!this._observer) {
var self = this;
@@ -1631,7 +1639,7 @@
DomApi.EffectiveNodesObserver.call(this, domApi);
};
DomApi.DistributedNodesObserver.prototype = Object.create(DomApi.EffectiveNodesObserver.prototype);
-Polymer.Base.extend(DomApi.DistributedNodesObserver.prototype, {
+Polymer.Base.mixin(DomApi.DistributedNodesObserver.prototype, {
_setup: function () {
},
_cleanup: function () {
@@ -1643,7 +1651,7 @@
}
});
if (Settings.useShadow) {
-Polymer.Base.extend(DomApi.DistributedNodesObserver.prototype, {
+Polymer.Base.mixin(DomApi.DistributedNodesObserver.prototype, {
_setup: function () {
if (!this._observer) {
var root = this.domApi.getOwnerRoot();
@@ -1721,10 +1729,6 @@
}
this.shadyRoot.host = this;
},
-get domHost() {
-var root = Polymer.dom(this).getOwnerRoot();
-return root && root.host;
-},
distributeContent: function (updateInsertionPoints) {
if (this.shadyRoot) {
this.shadyRoot._invalidInsertionPoints = this.shadyRoot._invalidInsertionPoints || updateInsertionPoints;
@@ -1911,6 +1915,15 @@
_elementRemove: function () {
}
});
+var domHostDesc = {
+get: function () {
+var root = Polymer.dom(this).getOwnerRoot();
+return root && root.host;
+},
+configurable: true
+};
+Object.defineProperty(Polymer.Base, 'domHost', domHostDesc);
+Polymer.BaseDescriptors.domHost = domHostDesc;
function distributeNodeInto(child, insertionPoint) {
insertionPoint._distributedNodes.push(child);
var points = child._destinationInsertionPoints;
diff --git a/polymer.html b/polymer.html
index 21eb8012ca..e8cfcc42ce 100644
--- a/polymer.html
+++ b/polymer.html
@@ -14,12 +14,14 @@
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
--->