swup 4.4.4 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Swup.cjs +1 -1
- package/dist/Swup.cjs.map +1 -1
- package/dist/Swup.modern.js +1 -1
- package/dist/Swup.modern.js.map +1 -1
- package/dist/Swup.module.js +1 -1
- package/dist/Swup.module.js.map +1 -1
- package/dist/Swup.umd.js +1 -1
- package/dist/Swup.umd.js.map +1 -1
- package/dist/types/Swup.d.ts +8 -4
- package/dist/types/Swup.d.ts.map +1 -1
- package/dist/types/helpers/Location.d.ts.map +1 -1
- package/dist/types/helpers/history.d.ts +14 -0
- package/dist/types/helpers/history.d.ts.map +1 -0
- package/dist/types/helpers.d.ts +1 -2
- package/dist/types/helpers.d.ts.map +1 -1
- package/dist/types/modules/Classes.d.ts.map +1 -1
- package/dist/types/modules/Hooks.d.ts +16 -8
- package/dist/types/modules/Hooks.d.ts.map +1 -1
- package/dist/types/modules/Visit.d.ts +28 -22
- package/dist/types/modules/Visit.d.ts.map +1 -1
- package/dist/types/modules/animatePageIn.d.ts +2 -1
- package/dist/types/modules/animatePageIn.d.ts.map +1 -1
- package/dist/types/modules/animatePageOut.d.ts +2 -1
- package/dist/types/modules/animatePageOut.d.ts.map +1 -1
- package/dist/types/modules/fetchPage.d.ts.map +1 -1
- package/dist/types/modules/navigate.d.ts +2 -2
- package/dist/types/modules/navigate.d.ts.map +1 -1
- package/dist/types/modules/renderPage.d.ts +2 -1
- package/dist/types/modules/renderPage.d.ts.map +1 -1
- package/dist/types/modules/replaceContent.d.ts.map +1 -1
- package/dist/types/modules/scrollToContent.d.ts +2 -1
- package/dist/types/modules/scrollToContent.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/Swup.ts +40 -37
- package/src/helpers/Location.ts +1 -0
- package/src/helpers/history.ts +37 -0
- package/src/helpers.ts +1 -2
- package/src/modules/Cache.ts +2 -2
- package/src/modules/Classes.ts +8 -1
- package/src/modules/Hooks.ts +77 -29
- package/src/modules/Visit.ts +86 -47
- package/src/modules/animatePageIn.ts +9 -8
- package/src/modules/animatePageOut.ts +7 -18
- package/src/modules/fetchPage.ts +9 -11
- package/src/modules/navigate.ts +78 -34
- package/src/modules/renderPage.ts +15 -13
- package/src/modules/replaceContent.ts +1 -0
- package/src/modules/scrollToContent.ts +6 -4
- package/dist/types/helpers/createHistoryRecord.d.ts +0 -10
- package/dist/types/helpers/createHistoryRecord.d.ts.map +0 -1
- package/dist/types/helpers/updateHistoryRecord.d.ts +0 -3
- package/dist/types/helpers/updateHistoryRecord.d.ts.map +0 -1
- package/src/helpers/createHistoryRecord.ts +0 -24
- package/src/helpers/updateHistoryRecord.ts +0 -19
package/dist/types/Swup.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export type Options = {
|
|
|
30
30
|
linkSelector: string;
|
|
31
31
|
/** How swup handles links to the same page. Default: `scroll` */
|
|
32
32
|
linkToSelf: NavigationToSelfAction;
|
|
33
|
+
/** Enable native animations using the View Transitions API. */
|
|
34
|
+
native: boolean;
|
|
33
35
|
/** Plugins to register on startup. */
|
|
34
36
|
plugins: Plugin[];
|
|
35
37
|
/** Custom headers sent along with fetch requests. */
|
|
@@ -67,6 +69,8 @@ export default class Swup {
|
|
|
67
69
|
protected clickDelegate?: DelegateEventUnsubscribe;
|
|
68
70
|
/** Navigation status */
|
|
69
71
|
protected navigating: boolean;
|
|
72
|
+
/** Run anytime a visit ends */
|
|
73
|
+
protected onVisitEnd?: () => Promise<unknown>;
|
|
70
74
|
/** Install a plugin */
|
|
71
75
|
use: (this: Swup, plugin: unknown) => Plugin[] | undefined;
|
|
72
76
|
/** Uninstall a plugin */
|
|
@@ -87,14 +91,14 @@ export default class Swup {
|
|
|
87
91
|
fetchPage: typeof fetchPage;
|
|
88
92
|
/** Resolve when animations on the page finish */
|
|
89
93
|
awaitAnimations: typeof awaitAnimations;
|
|
90
|
-
protected renderPage: (this: Swup, page: import("./modules/fetchPage.js").PageData) => Promise<void>;
|
|
94
|
+
protected renderPage: (this: Swup, visit: Visit, page: import("./modules/fetchPage.js").PageData) => Promise<void>;
|
|
91
95
|
/** Replace the content after page load */
|
|
92
96
|
replaceContent: (this: Swup, { html }: import("./modules/fetchPage.js").PageData, { containers }?: {
|
|
93
97
|
containers: string[];
|
|
94
98
|
}) => boolean;
|
|
95
|
-
protected animatePageIn: (this: Swup) => Promise<void>;
|
|
96
|
-
protected animatePageOut: (this: Swup) => Promise<void>;
|
|
97
|
-
protected scrollToContent: (this: Swup) => boolean;
|
|
99
|
+
protected animatePageIn: (this: Swup, visit: Visit) => Promise<void>;
|
|
100
|
+
protected animatePageOut: (this: Swup, visit: Visit) => Promise<void>;
|
|
101
|
+
protected scrollToContent: (this: Swup, visit: Visit) => boolean;
|
|
98
102
|
/** Find the anchor element for a given hash */
|
|
99
103
|
getAnchorElement: (hash?: string | undefined) => Element | null;
|
|
100
104
|
/** Get the current page URL */
|
package/dist/types/Swup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Swup.d.ts","sourceRoot":"","sources":["../../src/Swup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,KAAK,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMnD,OAAO,EAAO,KAAK,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIxE,+CAA+C;AAC/C,MAAM,MAAM,OAAO,GAAG;IACrB,4DAA4D;IAC5D,sBAAsB,EAAE,OAAO,CAAC;IAChC,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,0EAA0E;IAC1E,cAAc,EAAE,MAAM,GAAG,YAAY,CAAC;IACtC,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,6FAA6F;IAC7F,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,KAAK,OAAO,CAAC;IACtF,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,UAAU,EAAE,sBAAsB,CAAC;IACnC,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,wCAAwC;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACpC,oEAAoE;IACpE,oBAAoB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC;IACxD,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"Swup.d.ts","sourceRoot":"","sources":["../../src/Swup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Location.d.ts","sourceRoot":"","sources":["../../../src/helpers/Location.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,GAAG;gBACpB,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,IAAI,GAAE,MAAyB;
|
|
1
|
+
{"version":3,"file":"Location.d.ts","sourceRoot":"","sources":["../../../src/helpers/Location.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,GAAG;gBACpB,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,IAAI,GAAE,MAAyB;IAM9D;;OAEG;IACH,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ;IAKzC;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,QAAQ;CAG3C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface HistoryState {
|
|
2
|
+
url: string;
|
|
3
|
+
source: 'swup';
|
|
4
|
+
random: number;
|
|
5
|
+
index?: number;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
type HistoryData = Record<string, unknown>;
|
|
9
|
+
/** Create a new history record with a custom swup identifier. */
|
|
10
|
+
export declare const createHistoryRecord: (url: string, data?: HistoryData) => void;
|
|
11
|
+
/** Update the current history record with a custom swup identifier. */
|
|
12
|
+
export declare const updateHistoryRecord: (url?: string | null, data?: HistoryData) => void;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../../src/helpers/history.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,KAAK,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3C,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,QAAS,MAAM,SAAQ,WAAW,KAAQ,IASzE,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,SAAS,MAAM,GAAG,IAAI,SAAe,WAAW,KAAQ,IAWvF,CAAC"}
|
package/dist/types/helpers.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { classify } from './helpers/classify.js';
|
|
2
|
-
export { createHistoryRecord } from './helpers/
|
|
3
|
-
export { updateHistoryRecord } from './helpers/updateHistoryRecord.js';
|
|
2
|
+
export { createHistoryRecord, updateHistoryRecord } from './helpers/history.js';
|
|
4
3
|
export { delegateEvent } from './helpers/delegateEvent.js';
|
|
5
4
|
export { getCurrentUrl } from './helpers/getCurrentUrl.js';
|
|
6
5
|
export { Location } from './helpers/Location.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Classes.d.ts","sourceRoot":"","sources":["../../../src/modules/Classes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAGnC,qBAAa,OAAO;IACnB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IACrB,SAAS,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"Classes.d.ts","sourceRoot":"","sources":["../../../src/modules/Classes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAGnC,qBAAa,OAAO;IACnB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IACrB,SAAS,CAAC,WAAW,WAOnB;gBAEU,IAAI,EAAE,IAAI;IAItB,SAAS,KAAK,SAAS,IAAI,MAAM,EAAE,CAMlC;IAED,SAAS,KAAK,QAAQ,IAAI,MAAM,CAE/B;IAED,SAAS,KAAK,OAAO,IAAI,WAAW,EAAE,CAGrC;IAED,GAAG,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAI/B,MAAM,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlC,KAAK,IAAI,IAAI;IAOb,SAAS,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAGjD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { DelegateEvent } from 'delegate-it';
|
|
2
2
|
import type Swup from '../Swup.js';
|
|
3
|
-
import
|
|
3
|
+
import { Visit } from './Visit.js';
|
|
4
4
|
import type { FetchOptions, PageData } from './fetchPage.js';
|
|
5
5
|
export interface HookDefinitions {
|
|
6
6
|
'animation:out:start': undefined;
|
|
@@ -68,15 +68,15 @@ export interface HookDefinitions {
|
|
|
68
68
|
};
|
|
69
69
|
'visit:start': undefined;
|
|
70
70
|
'visit:transition': undefined;
|
|
71
|
+
'visit:abort': undefined;
|
|
71
72
|
'visit:end': undefined;
|
|
72
73
|
}
|
|
73
74
|
export interface HookReturnValues {
|
|
74
|
-
'content:scroll': Promise<boolean
|
|
75
|
+
'content:scroll': Promise<boolean> | boolean;
|
|
75
76
|
'fetch:request': Promise<Response>;
|
|
76
77
|
'page:load': Promise<PageData>;
|
|
77
78
|
'scroll:top': boolean;
|
|
78
79
|
'scroll:anchor': boolean;
|
|
79
|
-
'visit:transition': Promise<boolean>;
|
|
80
80
|
}
|
|
81
81
|
export type HookArguments<T extends HookName> = HookDefinitions[T];
|
|
82
82
|
export type HookName = keyof HookDefinitions;
|
|
@@ -221,34 +221,42 @@ export declare class Hooks {
|
|
|
221
221
|
* Trigger a hook asynchronously, executing its default handler and all registered handlers.
|
|
222
222
|
* Will execute all handlers in order and `await` any `Promise`s they return.
|
|
223
223
|
* @param hook Name of the hook to trigger
|
|
224
|
+
* @param visit The visit object this hook belongs to
|
|
224
225
|
* @param args Arguments to pass to the handler
|
|
225
226
|
* @param defaultHandler A default implementation of this hook to execute
|
|
226
227
|
* @returns The resolved return value of the executed default handler
|
|
227
228
|
*/
|
|
229
|
+
call<T extends HookName>(hook: T, visit: Visit | undefined, args: HookArguments<T>, defaultHandler?: HookDefaultHandler<T>): Promise<Awaited<ReturnType<HookDefaultHandler<T>>>>;
|
|
228
230
|
call<T extends HookName>(hook: T, args: HookArguments<T>, defaultHandler?: HookDefaultHandler<T>): Promise<Awaited<ReturnType<HookDefaultHandler<T>>>>;
|
|
229
231
|
/**
|
|
230
232
|
* Trigger a hook synchronously, executing its default handler and all registered handlers.
|
|
231
233
|
* Will execute all handlers in order, but will **not** `await` any `Promise`s they return.
|
|
232
234
|
* @param hook Name of the hook to trigger
|
|
235
|
+
* @param visit The visit object this hook belongs to
|
|
233
236
|
* @param args Arguments to pass to the handler
|
|
234
237
|
* @param defaultHandler A default implementation of this hook to execute
|
|
235
238
|
* @returns The (possibly unresolved) return value of the executed default handler
|
|
236
239
|
*/
|
|
240
|
+
callSync<T extends HookName>(hook: T, visit: Visit | undefined, args: HookArguments<T>, defaultHandler?: HookDefaultHandler<T>): ReturnType<HookDefaultHandler<T>>;
|
|
237
241
|
callSync<T extends HookName>(hook: T, args: HookArguments<T>, defaultHandler?: HookDefaultHandler<T>): ReturnType<HookDefaultHandler<T>>;
|
|
242
|
+
/**
|
|
243
|
+
* Parse the call arguments for call() and callSync() to allow legacy argument order.
|
|
244
|
+
*/
|
|
245
|
+
protected parseCallArgs<T extends HookName>(hook: T, arg1: Visit | HookArguments<T> | undefined, arg2: HookArguments<T> | HookDefaultHandler<T>, arg3?: HookDefaultHandler<T>): [Visit | undefined, HookArguments<T>, HookDefaultHandler<T> | undefined];
|
|
238
246
|
/**
|
|
239
247
|
* Execute the handlers for a hook, in order, as `Promise`s that will be `await`ed.
|
|
240
248
|
* @param registrations The registrations (handler + options) to execute
|
|
241
249
|
* @param args Arguments to pass to the handler
|
|
242
250
|
*/
|
|
243
|
-
protected run<T extends HookName>(registrations: HookRegistration<T, HookDefaultHandler<T>>[], args: HookArguments<T>): Promise<Awaited<ReturnType<HookDefaultHandler<T>>>[]>;
|
|
244
|
-
protected run<T extends HookName>(registrations: HookRegistration<T>[], args: HookArguments<T>): Promise<unknown[]>;
|
|
251
|
+
protected run<T extends HookName>(registrations: HookRegistration<T, HookDefaultHandler<T>>[], visit: Visit | undefined, args: HookArguments<T>): Promise<Awaited<ReturnType<HookDefaultHandler<T>>>[]>;
|
|
252
|
+
protected run<T extends HookName>(registrations: HookRegistration<T>[], visit: Visit | undefined, args: HookArguments<T>): Promise<unknown[]>;
|
|
245
253
|
/**
|
|
246
254
|
* Execute the handlers for a hook, in order, without `await`ing any returned `Promise`s.
|
|
247
255
|
* @param registrations The registrations (handler + options) to execute
|
|
248
256
|
* @param args Arguments to pass to the handler
|
|
249
257
|
*/
|
|
250
|
-
protected runSync<T extends HookName>(registrations: HookRegistration<T, HookDefaultHandler<T>>[], args: HookArguments<T>): ReturnType<HookDefaultHandler<T>>[];
|
|
251
|
-
protected runSync<T extends HookName>(registrations: HookRegistration<T>[], args: HookArguments<T>): unknown[];
|
|
258
|
+
protected runSync<T extends HookName>(registrations: HookRegistration<T, HookDefaultHandler<T>>[], visit: Visit | undefined, args: HookArguments<T>): ReturnType<HookDefaultHandler<T>>[];
|
|
259
|
+
protected runSync<T extends HookName>(registrations: HookRegistration<T>[], visit: Visit | undefined, args: HookArguments<T>): unknown[];
|
|
252
260
|
/**
|
|
253
261
|
* Get all registered handlers for a hook, sorted by priority and registration order.
|
|
254
262
|
* @param hook Name of the hook
|
|
@@ -274,7 +282,7 @@ export declare class Hooks {
|
|
|
274
282
|
* Dispatch a custom event on the `document` for a hook. Prefixed with `swup:`
|
|
275
283
|
* @param hook Name of the hook.
|
|
276
284
|
*/
|
|
277
|
-
protected dispatchDomEvent<T extends HookName>(hook: T, args?: HookArguments<T>): void;
|
|
285
|
+
protected dispatchDomEvent<T extends HookName>(hook: T, visit: Visit | undefined, args?: HookArguments<T>): void;
|
|
278
286
|
}
|
|
279
287
|
export {};
|
|
280
288
|
//# sourceMappingURL=Hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/Hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,
|
|
1
|
+
{"version":3,"file":"Hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/Hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,7 @@
|
|
|
1
1
|
import type Swup from '../Swup.js';
|
|
2
2
|
import type { Options } from '../Swup.js';
|
|
3
3
|
import type { HistoryAction, HistoryDirection } from './navigate.js';
|
|
4
|
-
/**
|
|
5
|
-
export interface Visit {
|
|
6
|
-
/** A unique ID to identify this visit */
|
|
7
|
-
id: number;
|
|
8
|
-
/** The previous page, about to leave */
|
|
9
|
-
from: VisitFrom;
|
|
10
|
-
/** The next page, about to enter */
|
|
11
|
-
to: VisitTo;
|
|
12
|
-
/** The content containers, about to be replaced */
|
|
13
|
-
containers: Options['containers'];
|
|
14
|
-
/** Information about animated page transitions */
|
|
15
|
-
animation: VisitAnimation;
|
|
16
|
-
/** What triggered this visit */
|
|
17
|
-
trigger: VisitTrigger;
|
|
18
|
-
/** Cache behavior for this visit */
|
|
19
|
-
cache: VisitCache;
|
|
20
|
-
/** Browser history behavior on this visit */
|
|
21
|
-
history: VisitHistory;
|
|
22
|
-
/** Scroll behavior on this visit */
|
|
23
|
-
scroll: VisitScroll;
|
|
24
|
-
}
|
|
4
|
+
/** See below for the class Visit {} definition */
|
|
25
5
|
export interface VisitFrom {
|
|
26
6
|
/** The URL of the previous page */
|
|
27
7
|
url: string;
|
|
@@ -41,6 +21,8 @@ export interface VisitAnimation {
|
|
|
41
21
|
wait: boolean;
|
|
42
22
|
/** Name of a custom animation to run. */
|
|
43
23
|
name?: string;
|
|
24
|
+
/** Whether this animation uses the native browser ViewTransition API. Default: `false` */
|
|
25
|
+
native: boolean;
|
|
44
26
|
/** Elements on which to add animation classes. Default: `html` element */
|
|
45
27
|
scope: 'html' | 'containers' | string[];
|
|
46
28
|
/** Selector for detecting animation timing. Default: `[class*="transition-"]` */
|
|
@@ -79,6 +61,30 @@ export interface VisitInitOptions {
|
|
|
79
61
|
el?: Element;
|
|
80
62
|
event?: Event;
|
|
81
63
|
}
|
|
64
|
+
/** An object holding details about the current visit. */
|
|
65
|
+
export declare class Visit {
|
|
66
|
+
/** A unique ID to identify this visit */
|
|
67
|
+
id: number;
|
|
68
|
+
/** The previous page, about to leave */
|
|
69
|
+
from: VisitFrom;
|
|
70
|
+
/** The next page, about to enter */
|
|
71
|
+
to: VisitTo;
|
|
72
|
+
/** The content containers, about to be replaced */
|
|
73
|
+
containers: Options['containers'];
|
|
74
|
+
/** Information about animated page transitions */
|
|
75
|
+
animation: VisitAnimation;
|
|
76
|
+
/** What triggered this visit */
|
|
77
|
+
trigger: VisitTrigger;
|
|
78
|
+
/** Cache behavior for this visit */
|
|
79
|
+
cache: VisitCache;
|
|
80
|
+
/** Browser history behavior on this visit */
|
|
81
|
+
history: VisitHistory;
|
|
82
|
+
/** Scroll behavior on this visit */
|
|
83
|
+
scroll: VisitScroll;
|
|
84
|
+
constructor(swup: Swup, options: VisitInitOptions);
|
|
85
|
+
/** Is this visit done, i.e. completed, failed, or aborted? */
|
|
86
|
+
get done(): boolean;
|
|
87
|
+
}
|
|
82
88
|
/** Create a new visit object. */
|
|
83
|
-
export declare function createVisit(this: Swup,
|
|
89
|
+
export declare function createVisit(this: Swup, options: VisitInitOptions): Visit;
|
|
84
90
|
//# sourceMappingURL=Visit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Visit.d.ts","sourceRoot":"","sources":["../../../src/modules/Visit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAErE,
|
|
1
|
+
{"version":3,"file":"Visit.d.ts","sourceRoot":"","sources":["../../../src/modules/Visit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAErE,kDAAkD;AAGlD,MAAM,WAAW,SAAS;IACzB,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,OAAO;IACvB,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC9B,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,gGAAgG;IAChG,IAAI,EAAE,OAAO,CAAC;IACd,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0FAA0F;IAC1F,MAAM,EAAE,OAAO,CAAC;IAChB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,MAAM,EAAE,CAAC;IACxC,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC3B,4EAA4E;IAC5E,KAAK,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC5B,6CAA6C;IAC7C,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,2CAA2C;IAC3C,KAAK,CAAC,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IAC1B,yEAAyE;IACzE,IAAI,EAAE,OAAO,CAAC;IACd,6DAA6D;IAC7D,KAAK,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC5B,qIAAqI;IACrI,MAAM,EAAE,aAAa,CAAC;IACtB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;IAClB,4FAA4F;IAC5F,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;CACd;AAkBD,yDAAyD;AACzD,qBAAa,KAAK;IACjB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IAGX,wCAAwC;IACxC,IAAI,EAAE,SAAS,CAAC;IAChB,oCAAoC;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,mDAAmD;IACnD,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,kDAAkD;IAClD,SAAS,EAAE,cAAc,CAAC;IAC1B,gCAAgC;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,oCAAoC;IACpC,KAAK,EAAE,UAAU,CAAC;IAClB,6CAA6C;IAC7C,OAAO,EAAE,YAAY,CAAC;IACtB,oCAAoC;IACpC,MAAM,EAAE,WAAW,CAAC;gBAER,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB;IA2CjD,8DAA8D;IAC9D,IAAI,IAAI,IAAI,OAAO,CAElB;CACD;AAED,iCAAiC;AACjC,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,GAAG,KAAK,CAExE"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type Swup from '../Swup.js';
|
|
2
|
+
import type { Visit } from './Visit.js';
|
|
2
3
|
/**
|
|
3
4
|
* Perform the in/enter animation of the next page.
|
|
4
5
|
* @returns Promise<void>
|
|
5
6
|
*/
|
|
6
|
-
export declare const animatePageIn: (this: Swup) => Promise<void>;
|
|
7
|
+
export declare const animatePageIn: (this: Swup, visit: Visit) => Promise<void>;
|
|
7
8
|
//# sourceMappingURL=animatePageIn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animatePageIn.d.ts","sourceRoot":"","sources":["../../../src/modules/animatePageIn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"animatePageIn.d.ts","sourceRoot":"","sources":["../../../src/modules/animatePageIn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,aAAa,SAAyB,IAAI,SAAS,KAAK,kBAuBpE,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type Swup from '../Swup.js';
|
|
2
|
+
import type { Visit } from './Visit.js';
|
|
2
3
|
/**
|
|
3
4
|
* Perform the out/leave animation of the current page.
|
|
4
5
|
* @returns Promise<void>
|
|
5
6
|
*/
|
|
6
|
-
export declare const animatePageOut: (this: Swup) => Promise<void>;
|
|
7
|
+
export declare const animatePageOut: (this: Swup, visit: Visit) => Promise<void>;
|
|
7
8
|
//# sourceMappingURL=animatePageOut.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animatePageOut.d.ts","sourceRoot":"","sources":["../../../src/modules/animatePageOut.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"animatePageOut.d.ts","sourceRoot":"","sources":["../../../src/modules/animatePageOut.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,cAAc,SAAyB,IAAI,SAAS,KAAK,kBAWrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/modules/fetchPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchPage.d.ts","sourceRoot":"","sources":["../../../src/modules/fetchPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAInC,mDAAmD;AACnD,MAAM,WAAW,QAAQ;IACxB,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;CACb;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;IAC/D,0BAA0B;IAC1B,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,eAAe,CAAC;IAC3C,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAGjB;AAED,qBAAa,UAAW,SAAQ,KAAK;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;gBAEjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE;CASjF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC9B,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,GAAE,YAAiB,GACxB,OAAO,CAAC,QAAQ,CAAC,CAgEnB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type Swup from '../Swup.js';
|
|
2
2
|
import { type FetchOptions } from './fetchPage.js';
|
|
3
|
-
import type
|
|
3
|
+
import { type VisitInitOptions, type Visit } from './Visit.js';
|
|
4
4
|
export type HistoryAction = 'push' | 'replace';
|
|
5
5
|
export type HistoryDirection = 'forwards' | 'backwards';
|
|
6
6
|
export type NavigationToSelfAction = 'scroll' | 'navigate';
|
|
@@ -37,6 +37,6 @@ export declare function navigate(this: Swup, url: string, options?: NavigationOp
|
|
|
37
37
|
* @param options Options for how to perform this visit.
|
|
38
38
|
* @returns Promise<void>
|
|
39
39
|
*/
|
|
40
|
-
export declare function performNavigation(this: Swup, options?: NavigationOptions & FetchOptions): Promise<void>;
|
|
40
|
+
export declare function performNavigation(this: Swup, visit: Visit, options?: NavigationOptions & FetchOptions): Promise<void>;
|
|
41
41
|
export {};
|
|
42
42
|
//# sourceMappingURL=navigate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../../src/modules/navigate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../../src/modules/navigate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,EAAc,KAAK,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,KAAK,EAAc,MAAM,YAAY,CAAC;AAS3E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AAC/C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,WAAW,CAAC;AACxD,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAEtE,wCAAwC;AACxC,KAAK,iBAAiB,GAAG;IACxB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qIAAqI;IACrI,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iEAAiE;IACjE,KAAK,CAAC,EAAE,YAAY,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CACvB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,iBAAiB,GAAG,YAAiB,EAC9C,IAAI,GAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAM,QAgBvC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,iBAAiB,GAAG,YAAiB,GAC5C,OAAO,CAAC,IAAI,CAAC,CAiKf"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type Swup from '../Swup.js';
|
|
2
2
|
import type { PageData } from './fetchPage.js';
|
|
3
|
+
import { type Visit } from './Visit.js';
|
|
3
4
|
/**
|
|
4
5
|
* Render the next page: replace the content and update scroll position.
|
|
5
6
|
*/
|
|
6
|
-
export declare const renderPage: (this: Swup, page: PageData) => Promise<void>;
|
|
7
|
+
export declare const renderPage: (this: Swup, visit: Visit, page: PageData) => Promise<void>;
|
|
7
8
|
//# sourceMappingURL=renderPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderPage.d.ts","sourceRoot":"","sources":["../../../src/modules/renderPage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"renderPage.d.ts","sourceRoot":"","sources":["../../../src/modules/renderPage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAc,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,UAAU,SAAyB,IAAI,SAAS,KAAK,QAAQ,QAAQ,KAAG,QAAQ,IAAI,CA2ChG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replaceContent.d.ts","sourceRoot":"","sources":["../../../src/modules/replaceContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,SACpB,IAAI,YACA,QAAQ;gBACY,OAAO,CAAC,YAAY,CAAC;MACjD,
|
|
1
|
+
{"version":3,"file":"replaceContent.d.ts","sourceRoot":"","sources":["../../../src/modules/replaceContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,SACpB,IAAI,YACA,QAAQ;gBACY,OAAO,CAAC,YAAY,CAAC;MACjD,OAwCF,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type Swup from '../Swup.js';
|
|
2
|
+
import type { Visit } from './Visit.js';
|
|
2
3
|
/**
|
|
3
4
|
* Update the scroll position after page render.
|
|
4
5
|
* @returns Promise<boolean>
|
|
5
6
|
*/
|
|
6
|
-
export declare const scrollToContent: (this: Swup) => boolean;
|
|
7
|
+
export declare const scrollToContent: (this: Swup, visit: Visit) => boolean;
|
|
7
8
|
//# sourceMappingURL=scrollToContent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollToContent.d.ts","sourceRoot":"","sources":["../../../src/modules/scrollToContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scrollToContent.d.ts","sourceRoot":"","sources":["../../../src/modules/scrollToContent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,eAAe,SAAmB,IAAI,SAAS,KAAK,KAAG,OA8BnE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swup",
|
|
3
3
|
"amdName": "Swup",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.5.0",
|
|
5
5
|
"description": "Versatile and extensible page transition library for server-rendered websites",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"source": "./src/Swup.ts",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"@playwright/test": "^1.37.1",
|
|
68
68
|
"@swup/browserslist-config": "^1.0.0",
|
|
69
69
|
"@swup/prettier-config": "^1.0.0",
|
|
70
|
+
"@types/dom-view-transitions": "^1.0.2",
|
|
70
71
|
"@types/jsdom": "^21.1.1",
|
|
71
72
|
"@typescript-eslint/eslint-plugin": "^6.3.0",
|
|
72
73
|
"@typescript-eslint/parser": "^6.3.0",
|
package/src/Swup.ts
CHANGED
|
@@ -21,7 +21,7 @@ import { renderPage } from './modules/renderPage.js';
|
|
|
21
21
|
import { use, unuse, findPlugin, type Plugin } from './modules/plugins.js';
|
|
22
22
|
import { isSameResolvedUrl, resolveUrl } from './modules/resolveUrl.js';
|
|
23
23
|
import { nextTick } from './utils.js';
|
|
24
|
-
import { type HistoryState } from './helpers/
|
|
24
|
+
import { type HistoryState } from './helpers/history.js';
|
|
25
25
|
|
|
26
26
|
/** Options for customizing swup's behavior. */
|
|
27
27
|
export type Options = {
|
|
@@ -41,6 +41,8 @@ export type Options = {
|
|
|
41
41
|
linkSelector: string;
|
|
42
42
|
/** How swup handles links to the same page. Default: `scroll` */
|
|
43
43
|
linkToSelf: NavigationToSelfAction;
|
|
44
|
+
/** Enable native animations using the View Transitions API. */
|
|
45
|
+
native: boolean;
|
|
44
46
|
/** Plugins to register on startup. */
|
|
45
47
|
plugins: Plugin[];
|
|
46
48
|
/** Custom headers sent along with fetch requests. */
|
|
@@ -62,6 +64,7 @@ const defaults: Options = {
|
|
|
62
64
|
ignoreVisit: (url, { el } = {}) => !!el?.closest('[data-no-swup]'),
|
|
63
65
|
linkSelector: 'a[href]',
|
|
64
66
|
linkToSelf: 'scroll',
|
|
67
|
+
native: false,
|
|
65
68
|
plugins: [],
|
|
66
69
|
resolveUrl: (url) => url,
|
|
67
70
|
requestHeaders: {
|
|
@@ -98,6 +101,8 @@ export default class Swup {
|
|
|
98
101
|
protected clickDelegate?: DelegateEventUnsubscribe;
|
|
99
102
|
/** Navigation status */
|
|
100
103
|
protected navigating: boolean = false;
|
|
104
|
+
/** Run anytime a visit ends */
|
|
105
|
+
protected onVisitEnd?: () => Promise<unknown>;
|
|
101
106
|
|
|
102
107
|
/** Install a plugin */
|
|
103
108
|
use = use;
|
|
@@ -185,6 +190,9 @@ export default class Swup {
|
|
|
185
190
|
// https://github.com/swup/swup/issues/475
|
|
186
191
|
}
|
|
187
192
|
|
|
193
|
+
// Sanitize/check native option
|
|
194
|
+
this.options.native = this.options.native && !!document.startViewTransition;
|
|
195
|
+
|
|
188
196
|
// Mount plugins
|
|
189
197
|
this.options.plugins.forEach((plugin) => this.use(plugin));
|
|
190
198
|
|
|
@@ -197,9 +205,10 @@ export default class Swup {
|
|
|
197
205
|
await nextTick();
|
|
198
206
|
|
|
199
207
|
// Trigger enable hook
|
|
200
|
-
await this.hooks.call('enable', undefined, () => {
|
|
201
|
-
|
|
202
|
-
|
|
208
|
+
await this.hooks.call('enable', undefined, undefined, () => {
|
|
209
|
+
const html = document.documentElement;
|
|
210
|
+
html.classList.add('swup-enabled');
|
|
211
|
+
html.classList.toggle('swup-native', this.options.native);
|
|
203
212
|
});
|
|
204
213
|
}
|
|
205
214
|
|
|
@@ -218,9 +227,10 @@ export default class Swup {
|
|
|
218
227
|
this.options.plugins.forEach((plugin) => this.unuse(plugin));
|
|
219
228
|
|
|
220
229
|
// trigger disable hook
|
|
221
|
-
await this.hooks.call('disable', undefined, () => {
|
|
222
|
-
|
|
223
|
-
|
|
230
|
+
await this.hooks.call('disable', undefined, undefined, () => {
|
|
231
|
+
const html = document.documentElement;
|
|
232
|
+
html.classList.remove('swup-enabled');
|
|
233
|
+
html.classList.remove('swup-native');
|
|
224
234
|
});
|
|
225
235
|
|
|
226
236
|
// remove handlers
|
|
@@ -265,11 +275,11 @@ export default class Swup {
|
|
|
265
275
|
return;
|
|
266
276
|
}
|
|
267
277
|
|
|
268
|
-
|
|
278
|
+
const visit = this.createVisit({ to: url, hash, el, event });
|
|
269
279
|
|
|
270
280
|
// Exit early if control key pressed
|
|
271
281
|
if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
|
|
272
|
-
this.hooks.
|
|
282
|
+
this.hooks.callSync('link:newtab', visit, { href });
|
|
273
283
|
return;
|
|
274
284
|
}
|
|
275
285
|
|
|
@@ -278,8 +288,8 @@ export default class Swup {
|
|
|
278
288
|
return;
|
|
279
289
|
}
|
|
280
290
|
|
|
281
|
-
this.hooks.callSync('link:click', { el, event }, () => {
|
|
282
|
-
const from =
|
|
291
|
+
this.hooks.callSync('link:click', visit, { el, event }, () => {
|
|
292
|
+
const from = visit.from.url ?? '';
|
|
283
293
|
|
|
284
294
|
event.preventDefault();
|
|
285
295
|
|
|
@@ -287,20 +297,18 @@ export default class Swup {
|
|
|
287
297
|
if (!url || url === from) {
|
|
288
298
|
if (hash) {
|
|
289
299
|
// With hash: scroll to anchor
|
|
290
|
-
this.hooks.callSync('link:anchor', { hash }, () => {
|
|
300
|
+
this.hooks.callSync('link:anchor', visit, { hash }, () => {
|
|
291
301
|
updateHistoryRecord(url + hash);
|
|
292
|
-
this.scrollToContent();
|
|
302
|
+
this.scrollToContent(visit);
|
|
293
303
|
});
|
|
294
304
|
} else {
|
|
295
305
|
// Without hash: scroll to top or load/reload page
|
|
296
|
-
this.hooks.callSync('link:self', undefined, () => {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
updateHistoryRecord(url);
|
|
303
|
-
return this.scrollToContent();
|
|
306
|
+
this.hooks.callSync('link:self', visit, undefined, () => {
|
|
307
|
+
if (this.options.linkToSelf === 'navigate') {
|
|
308
|
+
this.performNavigation(visit);
|
|
309
|
+
} else {
|
|
310
|
+
updateHistoryRecord(url);
|
|
311
|
+
this.scrollToContent(visit);
|
|
304
312
|
}
|
|
305
313
|
});
|
|
306
314
|
}
|
|
@@ -313,7 +321,7 @@ export default class Swup {
|
|
|
313
321
|
}
|
|
314
322
|
|
|
315
323
|
// Finally, proceed with loading the page
|
|
316
|
-
this.performNavigation();
|
|
324
|
+
this.performNavigation(visit);
|
|
317
325
|
});
|
|
318
326
|
}
|
|
319
327
|
|
|
@@ -332,37 +340,32 @@ export default class Swup {
|
|
|
332
340
|
|
|
333
341
|
const { url, hash } = Location.fromUrl(href);
|
|
334
342
|
|
|
335
|
-
|
|
343
|
+
const visit = this.createVisit({ to: url, hash, event });
|
|
336
344
|
|
|
337
345
|
// Mark as history visit
|
|
338
|
-
|
|
346
|
+
visit.history.popstate = true;
|
|
339
347
|
|
|
340
348
|
// Determine direction of history visit
|
|
341
349
|
const index = (event.state as HistoryState)?.index ?? 0;
|
|
342
350
|
if (index && index !== this.currentHistoryIndex) {
|
|
343
351
|
const direction = index - this.currentHistoryIndex > 0 ? 'forwards' : 'backwards';
|
|
344
|
-
|
|
352
|
+
visit.history.direction = direction;
|
|
345
353
|
this.currentHistoryIndex = index;
|
|
346
354
|
}
|
|
347
355
|
|
|
348
356
|
// Disable animation & scrolling for history visits
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
357
|
+
visit.animation.animate = false;
|
|
358
|
+
visit.scroll.reset = false;
|
|
359
|
+
visit.scroll.target = false;
|
|
352
360
|
|
|
353
361
|
// Animated history visit: re-enable animation & scroll reset
|
|
354
362
|
if (this.options.animateHistoryBrowsing) {
|
|
355
|
-
|
|
356
|
-
|
|
363
|
+
visit.animation.animate = true;
|
|
364
|
+
visit.scroll.reset = true;
|
|
357
365
|
}
|
|
358
366
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
// event.preventDefault();
|
|
362
|
-
// }
|
|
363
|
-
|
|
364
|
-
this.hooks.callSync('history:popstate', { event }, () => {
|
|
365
|
-
this.performNavigation();
|
|
367
|
+
this.hooks.callSync('history:popstate', visit, { event }, () => {
|
|
368
|
+
this.performNavigation(visit);
|
|
366
369
|
});
|
|
367
370
|
}
|
|
368
371
|
|
package/src/helpers/Location.ts
CHANGED