diff --git a/packages/svelte/src/compiler/migrate/index.js b/packages/svelte/src/compiler/migrate/index.js index a9e3e3d1e4..df440a8857 100644 --- a/packages/svelte/src/compiler/migrate/index.js +++ b/packages/svelte/src/compiler/migrate/index.js @@ -776,7 +776,7 @@ function handle_events(element, state) { state.legacy_imports.add('nonpassive'); } explicit_passive_handlers.push({ - handler: `use:${has_nonpassive ? state.legacy_imports_names.nonpassive : state.legacy_imports_names.passive}={{ handler: () => ${body}, event: '${node.name}' }}`, + handler: `use:${has_nonpassive ? state.legacy_imports_names.nonpassive : state.legacy_imports_names.passive}={['${node.name}', () => ${body}]}`, indent, needs_line_delete }); diff --git a/packages/svelte/src/internal/client/dom/legacy/event-modifiers.js b/packages/svelte/src/internal/client/dom/legacy/event-modifiers.js index 37c4e68909..918832dfa5 100644 --- a/packages/svelte/src/internal/client/dom/legacy/event-modifiers.js +++ b/packages/svelte/src/internal/client/dom/legacy/event-modifiers.js @@ -1,3 +1,4 @@ +/** @import { ActionReturn } from 'svelte/action' */ import { noop } from '../../../shared/utils.js'; import { user_pre_effect } from '../../reactivity/effects.js'; import { on } from '../elements/events.js'; @@ -99,11 +100,12 @@ export function preventDefault(fn) { } /** - * Substitute for the `passive` event modifier. It's an action. + * Substitute for the `passive` event modifier, implemented as an action * @deprecated - * @type {import("svelte/action").Action EventListener, event: string }>} + * @param {HTMLElement} node + * @param {[event: string, handler: () => EventListener]} options */ -export function passive(node, { handler, event }) { +export function passive(node, [event, handler]) { user_pre_effect(() => { return on(node, event, handler() ?? noop, { passive: true @@ -112,11 +114,12 @@ export function passive(node, { handler, event }) { } /** - * Substitute for the `nonpassive` event modifier. It's an action. + * Substitute for the `nonpassive` event modifier, implemented as an action * @deprecated - * @type {import("svelte/action").Action EventListener, event: string }>} + * @param {HTMLElement} node + * @param {[event: string, handler: () => EventListener]} options */ -export function nonpassive(node, { handler, event }) { +export function nonpassive(node, [event, handler]) { user_pre_effect(() => { return on(node, event, handler() ?? noop, { passive: false diff --git a/packages/svelte/tests/migrate/samples/event-handlers-with-alias/output.svelte b/packages/svelte/tests/migrate/samples/event-handlers-with-alias/output.svelte index f6b17e8ce3..f4658db448 100644 --- a/packages/svelte/tests/migrate/samples/event-handlers-with-alias/output.svelte +++ b/packages/svelte/tests/migrate/samples/event-handlers-with-alias/output.svelte @@ -54,27 +54,27 @@ - - - - - - - - + + + + + + + + @@ -106,4 +106,4 @@ })}>click me - \ No newline at end of file + diff --git a/packages/svelte/tests/migrate/samples/event-handlers/input.svelte b/packages/svelte/tests/migrate/samples/event-handlers/input.svelte index d253176c00..0f58c83899 100644 --- a/packages/svelte/tests/migrate/samples/event-handlers/input.svelte +++ b/packages/svelte/tests/migrate/samples/event-handlers/input.svelte @@ -36,13 +36,13 @@ - - - - - - - - - - + + + + + + + + - - @@ -95,4 +95,4 @@ })}>click me - \ No newline at end of file + diff --git a/packages/svelte/types/index.d.ts b/packages/svelte/types/index.d.ts index 3eb1bbd920..c33e5bfea2 100644 --- a/packages/svelte/types/index.d.ts +++ b/packages/svelte/types/index.d.ts @@ -1672,20 +1672,16 @@ declare module 'svelte/legacy' { * @deprecated * */ export function preventDefault(fn: (event: Event, ...args: Array) => void): (event: Event, ...args: unknown[]) => void; - export function passive(node: Node, parameter: { - handler: () => EventListener; - event: string; - }): void | import("svelte/action").ActionReturn<{ - handler: () => EventListener; - event: string; - }, any>; - export function nonpassive(node: Node, parameter: { - handler: () => EventListener; - event: string; - }): void | import("svelte/action").ActionReturn<{ - handler: () => EventListener; - event: string; - }, any>; + /** + * Substitute for the `passive` event modifier, implemented as an action + * @deprecated + * */ + export function passive(node: HTMLElement, [event, handler]: [event: string, handler: () => EventListener]): void; + /** + * Substitute for the `nonpassive` event modifier, implemented as an action + * @deprecated + * */ + export function nonpassive(node: HTMLElement, [event, handler]: [event: string, handler: () => EventListener]): void; export {}; }