From e29b244aeab08ea36fb385c7beb2ad0560217039 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sun, 13 Oct 2024 10:37:19 +0800 Subject: =?UTF-8?q?bump:=20@babel/cli=207.25.6=20=E2=86=92=207.25.7,=20@ba?= =?UTF-8?q?bel/core=207.25.2=20=E2=86=92=207.25.8,=20@babel/preset-env=207?= =?UTF-8?q?.25.4=20=E2=86=92=207.25.8,=20postcss=208.4.41=20=E2=86=92=208.?= =?UTF-8?q?4.47,=20swup=204.7.0=20=E2=86=92=204.8.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- node_modules/swup/src/Swup.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'node_modules/swup/src/Swup.ts') diff --git a/node_modules/swup/src/Swup.ts b/node_modules/swup/src/Swup.ts index 8d5d769e..7fb76f06 100644 --- a/node_modules/swup/src/Swup.ts +++ b/node_modules/swup/src/Swup.ts @@ -8,7 +8,7 @@ import { type DelegateEventUnsubscribe } from './helpers/delegateEvent.js'; import { Cache } from './modules/Cache.js'; import { Classes } from './modules/Classes.js'; import { type Visit, createVisit } from './modules/Visit.js'; -import { Hooks } from './modules/Hooks.js'; +import { Hooks, type HookName, type HookInitOptions } from './modules/Hooks.js'; import { getAnchorElement } from './modules/getAnchorElement.js'; import { awaitAnimations } from './modules/awaitAnimations.js'; import { navigate, performNavigation, type NavigationToSelfAction } from './modules/navigate.js'; @@ -43,6 +43,8 @@ export type Options = { linkToSelf: NavigationToSelfAction; /** Enable native animations using the View Transitions API. */ native: boolean; + /** Hook handlers to register. */ + hooks: Partial; /** Plugins to register on startup. */ plugins: Plugin[]; /** Custom headers sent along with fetch requests. */ @@ -61,6 +63,7 @@ const defaults: Options = { animationScope: 'html', cache: true, containers: ['#swup'], + hooks: {}, ignoreVisit: (url, { el } = {}) => !!el?.closest('[data-no-swup]'), linkSelector: 'a[href]', linkToSelf: 'scroll', @@ -188,6 +191,14 @@ export default class Swup { // Mount plugins this.options.plugins.forEach((plugin) => this.use(plugin)); + // Install user hooks + for (const [key, handler] of Object.entries(this.options.hooks)) { + // Build hook options from modifier suffix: 'content:replace.before' => { before: true } + const [hook, modifiers] = this.hooks.parseName(key as HookName); + // @ts-expect-error: object.entries() does not preserve key/value types + this.hooks.on(hook, handler, modifiers); + } + // Create initial history record if ((window.history.state as HistoryState)?.source !== 'swup') { updateHistoryRecord(null, { index: this.currentHistoryIndex }); -- cgit v1.2.3