diff --git a/.changeset/transition-direction-return.md b/.changeset/transition-direction-return.md new file mode 100644 index 000000000..170517a07 --- /dev/null +++ b/.changeset/transition-direction-return.md @@ -0,0 +1,6 @@ +--- +'svelte-check': patch +'svelte2tsx': patch +--- + +fix: allow transitions to return a function taking a `direction` argument diff --git a/packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/transition-options/input.svelte b/packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/transition-options/input.svelte index b54423ea7..8c51e33ab 100644 --- a/packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/transition-options/input.svelte +++ b/packages/language-server/test/plugins/typescript/features/diagnostics/fixtures/transition-options/input.svelte @@ -6,6 +6,15 @@ ) { return {}; } + + function deferredTransition( + _node: HTMLElement, + _params: { delay: number }, + _context: { direction: 'in' | 'out' | 'both' } + ) { + return (_options: { direction: 'in' | 'out' }) => ({ delay: 100 }); + }
+ diff --git a/packages/svelte2tsx/svelte-shims-v4.d.ts b/packages/svelte2tsx/svelte-shims-v4.d.ts index 29d84a2d9..0be208945 100644 --- a/packages/svelte2tsx/svelte-shims-v4.d.ts +++ b/packages/svelte2tsx/svelte-shims-v4.d.ts @@ -22,7 +22,7 @@ type SvelteTransitionConfig = { } /** @internal PRIVATE API, DO NOT USE */ -type SvelteTransitionReturnType = SvelteTransitionConfig | (() => SvelteTransitionConfig) +type SvelteTransitionReturnType = SvelteTransitionConfig | ((options: { direction: 'in' | 'out' }) => SvelteTransitionConfig) /** @internal PRIVATE API, DO NOT USE */ type SvelteAnimationReturnType = { @@ -173,7 +173,7 @@ type __sveltets_2_SvelteTransitionConfig = { tick?: (t: number, u: number) => void } /** @internal PRIVATE API, DO NOT USE */ -type __sveltets_2_SvelteTransitionReturnType = __sveltets_2_SvelteTransitionConfig | (() => __sveltets_2_SvelteTransitionConfig) +type __sveltets_2_SvelteTransitionReturnType = __sveltets_2_SvelteTransitionConfig | ((options: { direction: 'in' | 'out' }) => __sveltets_2_SvelteTransitionConfig) declare function __sveltets_2_ensureTransition(transitionCall: __sveltets_2_SvelteTransitionReturnType): {}; // Includes undefined and null for all types as all usages also allow these diff --git a/packages/svelte2tsx/svelte-shims.d.ts b/packages/svelte2tsx/svelte-shims.d.ts index b7be2cbcc..f8bbc01ca 100644 --- a/packages/svelte2tsx/svelte-shims.d.ts +++ b/packages/svelte2tsx/svelte-shims.d.ts @@ -103,7 +103,7 @@ type SvelteTransitionConfig = { } /** @internal PRIVATE API, DO NOT USE */ -type SvelteTransitionReturnType = SvelteTransitionConfig | (() => SvelteTransitionConfig) +type SvelteTransitionReturnType = SvelteTransitionConfig | ((options: { direction: 'in' | 'out' }) => SvelteTransitionConfig) /** @internal PRIVATE API, DO NOT USE */ type SvelteAnimationReturnType = { @@ -253,7 +253,7 @@ type __sveltets_2_SvelteTransitionConfig = { tick?: (t: number, u: number) => void } /** @internal PRIVATE API, DO NOT USE */ -type __sveltets_2_SvelteTransitionReturnType = __sveltets_2_SvelteTransitionConfig | (() => __sveltets_2_SvelteTransitionConfig) +type __sveltets_2_SvelteTransitionReturnType = __sveltets_2_SvelteTransitionConfig | ((options: { direction: 'in' | 'out' }) => __sveltets_2_SvelteTransitionConfig) declare function __sveltets_2_ensureTransition(transitionCall: __sveltets_2_SvelteTransitionReturnType): {}; // Includes undefined and null for all types as all usages also allow these