UNPKG

svelte

Version:

Cybernetically enhanced web apps

129 lines (118 loc) 3.22 kB
/** @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'; /** * Substitute for the `trusted` event modifier * @deprecated * @param {(event: Event, ...args: Array<unknown>) => void} fn * @returns {(event: Event, ...args: unknown[]) => void} */ export function trusted(fn) { return function (...args) { var event = /** @type {Event} */ (args[0]); if (event.isTrusted) { // @ts-ignore fn?.apply(this, args); } }; } /** * Substitute for the `self` event modifier * @deprecated * @param {(event: Event, ...args: Array<unknown>) => void} fn * @returns {(event: Event, ...args: unknown[]) => void} */ export function self(fn) { return function (...args) { var event = /** @type {Event} */ (args[0]); // @ts-ignore if (event.target === this) { // @ts-ignore fn?.apply(this, args); } }; } /** * Substitute for the `stopPropagation` event modifier * @deprecated * @param {(event: Event, ...args: Array<unknown>) => void} fn * @returns {(event: Event, ...args: unknown[]) => void} */ export function stopPropagation(fn) { return function (...args) { var event = /** @type {Event} */ (args[0]); event.stopPropagation(); // @ts-ignore return fn?.apply(this, args); }; } /** * Substitute for the `once` event modifier * @deprecated * @param {(event: Event, ...args: Array<unknown>) => void} fn * @returns {(event: Event, ...args: unknown[]) => void} */ export function once(fn) { var ran = false; return function (...args) { if (ran) return; ran = true; // @ts-ignore return fn?.apply(this, args); }; } /** * Substitute for the `stopImmediatePropagation` event modifier * @deprecated * @param {(event: Event, ...args: Array<unknown>) => void} fn * @returns {(event: Event, ...args: unknown[]) => void} */ export function stopImmediatePropagation(fn) { return function (...args) { var event = /** @type {Event} */ (args[0]); event.stopImmediatePropagation(); // @ts-ignore return fn?.apply(this, args); }; } /** * Substitute for the `preventDefault` event modifier * @deprecated * @param {(event: Event, ...args: Array<unknown>) => void} fn * @returns {(event: Event, ...args: unknown[]) => void} */ export function preventDefault(fn) { return function (...args) { var event = /** @type {Event} */ (args[0]); event.preventDefault(); // @ts-ignore return fn?.apply(this, args); }; } /** * Substitute for the `passive` event modifier, implemented as an action * @deprecated * @param {HTMLElement} node * @param {[event: string, handler: () => EventListener]} options */ export function passive(node, [event, handler]) { user_pre_effect(() => { return on(node, event, handler() ?? noop, { passive: true }); }); } /** * Substitute for the `nonpassive` event modifier, implemented as an action * @deprecated * @param {HTMLElement} node * @param {[event: string, handler: () => EventListener]} options */ export function nonpassive(node, [event, handler]) { user_pre_effect(() => { return on(node, event, handler() ?? noop, { passive: false }); }); }