fix(animations): make sure reuseable animation subtitutions work without default params (#16875)

This commit is contained in:
Matias Niemelä
2017-05-18 12:59:54 -07:00
committed by Jason Aden
parent 86b7bd9c8e
commit 7d9f96abf0
2 changed files with 35 additions and 13 deletions

View File

@ -454,27 +454,28 @@ export class AnimationTimelineContext {
updateOptions(options: AnimationOptions|null, skipIfExists?: boolean) {
if (!options) return;
// NOTE: this will get patched up when other animation methods support duration overrides
const newOptions = options as any;
let optionsToUpdate = this.options;
// NOTE: this will get patched up when other animation methods support duration overrides
if (newOptions.duration != null) {
(this.options as any).duration = resolveTimingValue(newOptions.duration);
(optionsToUpdate as any).duration = resolveTimingValue(newOptions.duration);
}
if (newOptions.delay != null) {
this.options.delay = resolveTimingValue(newOptions.delay);
optionsToUpdate.delay = resolveTimingValue(newOptions.delay);
}
const newParams = newOptions.params;
if (newParams) {
let params: {[name: string]: any} = this.options && this.options.params !;
if (!params) {
params = this.options.params = {};
let paramsToUpdate: {[name: string]: any} = optionsToUpdate.params !;
if (!paramsToUpdate) {
paramsToUpdate = this.options.params = {};
}
Object.keys(params).forEach(name => {
const value = params[name];
if (!skipIfExists || !newOptions.hasOwnProperty(name)) {
params[name] = value;
Object.keys(newParams).forEach(name => {
if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {
paramsToUpdate[name] = newParams[name];
}
});
}