summaryrefslogtreecommitdiff
path: root/node_modules/swup/src/Swup.ts
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2024-10-13 10:37:19 +0800
committerlittleblack111 <littleblack11111@gmail.com>2024-10-13 10:37:19 +0800
commite29b244aeab08ea36fb385c7beb2ad0560217039 (patch)
treec66b744dc29573f1acc871862937a23f1b80e6bf /node_modules/swup/src/Swup.ts
parent62c2881629e6413a8fec6d3dd092e4568e2a81dc (diff)
bump: @babel/cli 7.25.6 → 7.25.7, @babel/core 7.25.2 → 7.25.8, @babel/preset-env 7.25.4 → 7.25.8, postcss 8.4.41 → 8.4.47, swup 4.7.0 → 4.8.1
Diffstat (limited to 'node_modules/swup/src/Swup.ts')
-rw-r--r--node_modules/swup/src/Swup.ts13
1 files changed, 12 insertions, 1 deletions
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<HookInitOptions>;
/** 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 });