From efbc2ffe6a1ee5ec38a4396305561d6515d0943e Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Fri, 30 Aug 2024 17:21:18 +0800 Subject: node fixes, updates --- node_modules/swup/src/modules/renderPage.ts | 51 +++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 node_modules/swup/src/modules/renderPage.ts (limited to 'node_modules/swup/src/modules/renderPage.ts') diff --git a/node_modules/swup/src/modules/renderPage.ts b/node_modules/swup/src/modules/renderPage.ts new file mode 100755 index 00000000..9dc1f9f5 --- /dev/null +++ b/node_modules/swup/src/modules/renderPage.ts @@ -0,0 +1,51 @@ +import { updateHistoryRecord, getCurrentUrl, classify, Location } from '../helpers.js'; +import type Swup from '../Swup.js'; +import type { PageData } from './fetchPage.js'; +import { VisitState, type Visit } from './Visit.js'; + +/** + * Render the next page: replace the content and update scroll position. + */ +export const renderPage = async function (this: Swup, visit: Visit, page: PageData): Promise { + // Check if failed/aborted in the meantime + if (visit.done) return; + + visit.advance(VisitState.ENTERING); + + const { url } = page; + + // update state if the url was redirected + if (!this.isSameResolvedUrl(getCurrentUrl(), url)) { + updateHistoryRecord(url); + this.location = Location.fromUrl(url); + visit.to.url = this.location.url; + visit.to.hash = this.location.hash; + } + + // replace content: allow handlers and plugins to overwrite paga data and containers + await this.hooks.call('content:replace', visit, { page }, (visit, { page }) => { + this.classes.remove('is-leaving'); + // only add for animated page loads + if (visit.animation.animate) { + this.classes.add('is-rendering'); + } + const success = this.replaceContent(visit); + if (!success) { + throw new Error('[swup] Container mismatch, aborting'); + } + if (visit.animation.animate) { + // Make sure to add these classes to new containers as well + this.classes.add('is-changing', 'is-animating', 'is-rendering'); + if (visit.animation.name) { + this.classes.add(`to-${classify(visit.animation.name)}`); + } + } + }); + + // scroll into view: either anchor or top of page + await this.hooks.call('content:scroll', visit, undefined, () => { + return this.scrollToContent(visit); + }); + + await this.hooks.call('page:view', visit, { url: this.location.url, title: document.title }); +}; -- cgit v1.2.3