|
9 | 9 |
|
10 | 10 | const { children, key, id, transition }: { children: Snippet; id: string; key: any | any[]; transition: TransitionProps } = $props(); |
11 | 11 |
|
12 | | - let firstRender = true; |
13 | | - const skipFirst = $derived<TransitionProps['skipFirst']>(transition?.skipFirst ?? false); |
14 | | - const skipTransition = (skip = skipFirst) => { |
| 12 | + let firstRender = $state(true); |
| 13 | + const first = $derived<TransitionProps['first']>(transition?.first ?? true); |
| 14 | + const skipTransition = () => { |
15 | 15 | if (!firstRender) return false; |
16 | 16 | firstRender = false; |
17 | | - return skip === true; |
| 17 | + return first === false; |
18 | 18 | }; |
19 | 19 |
|
20 | | - const isTransitionFunction = (skip?: TransitionProps['skipFirst']): skip is TransitionFunction => typeof skip === 'function' && !!skip; |
21 | | - const isTransitionObject = (skip?: TransitionProps['skipFirst']): skip is TransitionWithProps => typeof skip === 'object' && !!skip?.use; |
| 20 | + const isTransitionFunction = (skip?: TransitionProps['first']): skip is TransitionFunction => typeof skip === 'function' && !!skip; |
| 21 | + const isTransitionObject = (skip?: TransitionProps['first']): skip is TransitionWithProps => typeof skip === 'object' && !!skip?.use; |
22 | 22 |
|
23 | 23 | const _in = $derived<TransitionFunction>(((node, props, options) => { |
24 | 24 | if (skipTransition()) return; |
25 | | - if (firstRender && isTransitionFunction(skipFirst)) return skipFirst; |
26 | | - if (firstRender && isTransitionObject(skipFirst)) return skipFirst.use; |
| 25 | + if (firstRender && isTransitionFunction(first)) return first; |
| 26 | + if (firstRender && isTransitionObject(first)) return first.use; |
27 | 27 | return transition?.in?.(node, props, options); |
28 | 28 | }) as TransitionFunction); |
29 | 29 | const _out = $derived<TransitionFunction>(((node, props, options) => { |
30 | | - if (firstRender && skipFirst) return; |
| 30 | + if (firstRender && first) return; |
31 | 31 | return transition?.out?.(node, props, options); |
32 | 32 | }) as TransitionFunction); |
33 | 33 |
|
34 | 34 | const _inParams = $derived.by(() => { |
35 | | - if (firstRender && isTransitionObject(skipFirst) && skipFirst.props) return skipFirst.props; |
| 35 | + if (firstRender && isTransitionObject(first) && first.props) return first.props; |
36 | 36 | return transition?.params?.in ?? {}; |
37 | 37 | }); |
38 | 38 | const _outParams = $derived(transition?.params?.out ?? {}); |
|
0 commit comments