diff options
| author | Fuwn <[email protected]> | 2024-10-28 15:32:46 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-10-28 15:32:46 -0700 |
| commit | 39b677404558ae3b7eb34e818d7ca308f62f9cb0 (patch) | |
| tree | 7f19fca39ecd4237e3c0d1aef2d8e9fa3cec7845 /src/lib/Layout/TextTransition.svelte | |
| parent | feat(graphql): paged badges query (diff) | |
| download | due.moe-svelte-5.tar.xz due.moe-svelte-5.zip | |
feat: update to svelte 5svelte-5
Diffstat (limited to 'src/lib/Layout/TextTransition.svelte')
| -rw-r--r-- | src/lib/Layout/TextTransition.svelte | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/lib/Layout/TextTransition.svelte b/src/lib/Layout/TextTransition.svelte index 35cfe1ea..5f5bd036 100644 --- a/src/lib/Layout/TextTransition.svelte +++ b/src/lib/Layout/TextTransition.svelte @@ -1,24 +1,37 @@ <script> + import { run } from 'svelte/legacy'; + import { tweened } from 'svelte/motion'; import { cubicOut } from 'svelte/easing'; - export let text = ''; - export let opacityTransitionDuration = 50; - export let blurTransitionDuration = opacityTransitionDuration; - export let easing = cubicOut; + /** + * @typedef {Object} Props + * @property {string} [text] + * @property {number} [opacityTransitionDuration] + * @property {any} [blurTransitionDuration] + * @property {any} [easing] + */ + + /** @type {Props} */ + let { + text = '', + opacityTransitionDuration = 50, + blurTransitionDuration = opacityTransitionDuration, + easing = cubicOut + } = $props(); - let previousValue = ''; + let previousValue = $state(''); let opacity = tweened(1, { duration: opacityTransitionDuration, easing }); let blur = tweened(0, { duration: blurTransitionDuration, easing }); - $: { + run(() => { if (text !== previousValue) Promise.all([opacity.set(0), blur.set(10)]).then(() => { previousValue = text; Promise.all([opacity.set(1), blur.set(0)]); }); - } + }); </script> <span |