UNPKG

@ribajs/router

Version:

Routing extension for Riba.js inspired by Barba.js

92 lines 7.08 kB
class Dom { static getPrefetchLinkElements(content) { return content.querySelectorAll('link[href][rel="dns-prefetch"], link[href][rel="preconnect"], link[href][rel="prefetch"], link[href][rel="subresource"], link[href][rel="preload"], link[href][rel="router-preload"]'); } static parseTitle(content) { let title = ""; const titleElement = content.querySelector("title"); if (titleElement && titleElement.innerText) { title = titleElement.innerText; } return title; } static parseResponse(responseText, parseTitle, containerSelector, prefetchLinks = true) { let title = ""; let prefetchLinkElements = []; const template = document.createElement("template"); template.innerHTML = responseText; if (parseTitle) { title = this.parseTitle(template.content); } if (prefetchLinks) { prefetchLinkElements = this.getPrefetchLinkElements(template.content); } const container = this.getContainer(template, containerSelector); return { container, title, prefetchLinks: prefetchLinkElements, }; } static parseInitial(parseTitle, containerSelector, prefetchLinks = true) { let title = ""; let prefetchLinkElements = []; const container = this.getContainer(document, containerSelector); if (parseTitle) { title = this.parseTitle(document); } if (prefetchLinks) { prefetchLinkElements = this.getPrefetchLinkElements(document); } return { container: container, title, prefetchLinks: prefetchLinkElements, }; } static getContainer(element, containerSelector) { if (!element) { throw new Error("Barba.js: [getContainer] No element to get container from, maybe the DOM is not ready!"); } const container = this.parseContainer(element, containerSelector); if (!container) { throw new Error("[DOM] No container found"); } return container; } static getNamespace(element) { if (element && element.dataset && element.dataset.namespace) { return element.dataset.namespace; } else { return null; } } static putContainer(element, wrapper) { element = element; element.style.visibility = "hidden"; wrapper.appendChild(element); } static parseContainer(newPage, containerSelector) { if (!newPage) { const error = new Error("New page not loaded!"); console.error(error, newPage); throw error; } let result; if (newPage.content) { result = newPage.content.querySelector(containerSelector); } else { result = newPage.querySelector(containerSelector); } if (!result) { const error = new Error(`No container with selector "${containerSelector}" found!`); console.error(error, newPage); throw error; } return result; } } export { Dom }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1BqYXgvRG9tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sR0FBRztJQUNBLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxPQUFvQztRQUV4RSxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDN0Isc0xBQXNMLENBQ3hKLENBQUM7SUFDbkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBb0M7UUFDM0QsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWYsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0MsS0FBSyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQU1NLE1BQU0sQ0FBQyxhQUFhLENBQ3pCLFlBQW9CLEVBQ3BCLFVBQW1CLEVBQ25CLGlCQUF5QixFQUN6QixhQUFhLEdBQUcsSUFBSTtRQUVwQixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLG9CQUFvQixHQUVLLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBd0IsQ0FBQztRQUMzRSxRQUFRLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUVsQyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLG9CQUFvQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEUsQ0FBQztR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