From 771cf7f0b7ca80112936b4c4b91fe2b3db772c8d Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Tue, 10 Jun 2025 13:08:16 -0400 Subject: [PATCH] refactor --- .../docs/assets/scripts/view-transitions.js | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/packages/webawesome/docs/assets/scripts/view-transitions.js b/packages/webawesome/docs/assets/scripts/view-transitions.js index d676ad0ce..927b9f696 100644 --- a/packages/webawesome/docs/assets/scripts/view-transitions.js +++ b/packages/webawesome/docs/assets/scripts/view-transitions.js @@ -7,27 +7,21 @@ if (!initialPageLoadComplete) { } /** - * A wrapper around `document.startViewTransition()` that falls back to no transitions in unsupportive browsers. + * A wrapper around `document.startViewTransition()` that fails gracefully in unsupportive browsers. */ -export function doViewTransition(callback, { behavior = 'smooth', ignoreInitialLoad = true } = {}) { +export async function doViewTransition(callback, { ignoreInitialLoad = true } = {}) { + // Skip transitions on initial page load + if (!initialPageLoadComplete && ignoreInitialLoad) { + callback(); + return; + } + const canUseViewTransitions = document.startViewTransition && !window.matchMedia('(prefers-reduced-motion: reduce)').matches; - // Skip transitions on initial page load - if (!initialPageLoadComplete && ignoreInitialLoad) { - callback(false); - return null; - } - - if (canUseViewTransitions && behavior === 'smooth') { - const transition = document.startViewTransition(() => { - callback(true); - // Wait a brief delay before finishing the transition to prevent jumpiness - return new Promise(resolve => setTimeout(resolve, 200)); - }); - return transition; + if (canUseViewTransitions) { + await document.startViewTransition(callback).finished; } else { - callback(false); - return null; + callback(); } }