diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2024-10-13 10:37:19 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2024-10-13 10:37:19 +0800 |
| commit | e29b244aeab08ea36fb385c7beb2ad0560217039 (patch) | |
| tree | c66b744dc29573f1acc871862937a23f1b80e6bf /node_modules/swup/src/Swup.ts | |
| parent | 62c2881629e6413a8fec6d3dd092e4568e2a81dc (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.ts | 13 |
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 }); |
