From 8b3300be36ff60cef3bae345b1aea6596ee1a605 Mon Sep 17 00:00:00 2001 From: Scott Bedard Date: Fri, 14 Apr 2023 12:21:32 -0500 Subject: [PATCH] fix(useTransition): fix regression with non-linear transition functions (#2973) --- packages/core/useTransition/index.test.ts | 20 ++++++++++++++++++++ packages/core/useTransition/index.ts | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/core/useTransition/index.test.ts b/packages/core/useTransition/index.test.ts index 6ee4d905ac8..b9fe73661dc 100644 --- a/packages/core/useTransition/index.test.ts +++ b/packages/core/useTransition/index.test.ts @@ -158,6 +158,26 @@ describe('useTransition', () => { expect(transition.value).toBe(1) }) + it('supports non-linear custom easing functions', async () => { + const source = ref(0) + const easeInQuad = vi.fn(n => n * n) + const transition = useTransition(source, { + duration: 100, + transition: easeInQuad, + }) + + expect(easeInQuad).not.toBeCalled() + + source.value = 1 + + await promiseTimeout(50) + expect(easeInQuad).toBeCalled() + expectBetween(transition.value, 0, 1) + + await promiseTimeout(100) + expect(transition.value).toBe(1) + }) + it('supports delayed transitions', async () => { const source = ref(0) diff --git a/packages/core/useTransition/index.ts b/packages/core/useTransition/index.ts index b78ee30db3c..d7edd235865 100644 --- a/packages/core/useTransition/index.ts +++ b/packages/core/useTransition/index.ts @@ -148,7 +148,9 @@ export function executeTransition( const duration = toValue(options.duration) ?? 1000 const startedAt = Date.now() const endAt = Date.now() + duration - const trans = toValue(options.transition) ?? linear + const trans = typeof options.transition === 'function' + ? options.transition + : (toValue(options.transition) ?? linear) const ease = typeof trans === 'function' ? trans