diff --git a/src/runtime/motion/tweened.ts b/src/runtime/motion/tweened.ts index e33f0f79f9..abbb3b1aa2 100644 --- a/src/runtime/motion/tweened.ts +++ b/src/runtime/motion/tweened.ts @@ -93,6 +93,11 @@ export function tweened(value?: T, defaults: Options = {}): Tweened { interpolate = get_interpolator } = assign(assign({}, defaults), opts); + if (duration === 0) { + store.set(target_value); + return Promise.resolve(); + } + const start = now() + delay; let fn; diff --git a/test/motion/index.js b/test/motion/index.js index 33489b18e1..ec58c6df36 100644 --- a/test/motion/index.js +++ b/test/motion/index.js @@ -19,5 +19,12 @@ describe('motion', () => { size.set(100); assert.equal(get(size), 100); }); + + it('sets immediately when duration is 0', () => { + const size = tweened(0); + + size.set(100, { duration : 0 }); + assert.equal(get(size), 100); + }); }); });