@ribajs/router
Version:
Routing extension for Riba.js inspired by Barba.js
40 lines • 3.94 kB
JavaScript
import { Binder, View, handleizeFormatter } from "@ribajs/core";
import { isObject } from "@ribajs/utils/src/type.js";
import { Pjax, HideShowTransition } from "../services/index.js";
const handleize = handleizeFormatter.read;
export class ViewStaticBinder extends Binder {
static key = "view-static";
static block = true;
nested = null;
async routine(el, options) {
const wrapper = el;
options = options || {};
options.listenAllLinks = false;
options.listenPopstate = false;
options.parseTitle = false;
options.transition = options.transition || new HideShowTransition();
options.viewId =
options.viewId || el.getAttribute("id") || handleize(options.url);
options.containerSelector = options.containerSelector || "[data-namespace]";
options.changeBrowserUrl = false;
const pjax = new Pjax(options);
const { responsePromise } = await pjax.loadResponseCached(options.url, false, false);
const response = await responsePromise;
wrapper.replaceWith(response.container);
response.container.style.visibility = "visible";
if (!isObject(this.view.models)) {
this.view.models = {};
}
if (this.nested) {
this.nested.unbind();
}
this.nested = new View(response.container, this.view.models, this.view.options);
this.nested.bind();
}
unbind() {
if (this.nested) {
this.nested.unbind();
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1zdGF0aWMuYmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpbmRlcnMvdmlldy1zdGF0aWMuYmluZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFlLE1BQU0sY0FBYyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFaEUsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsSUFBbUIsQ0FBQztBQUt6RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsTUFBaUM7SUFDckUsTUFBTSxDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUM7SUFDM0IsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFFWixNQUFNLEdBQWdCLElBQUksQ0FBQztJQUVuQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQWUsRUFBRSxPQUFZO1FBQ3pDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUduQixPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4QixPQUFPLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUMvQixPQUFPLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUMvQixPQUFPLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMzQixPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BFLE9BQU8sQ0FBQyxNQUFNO1lBQ1osT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEUsT0FBTyxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxrQkFBa0IsQ0FBQztRQUM1RSxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRWpDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9CLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FDdkQsT0FBTyxDQUFDLEdBQUcsRUFDWCxLQUFLLEVBQ0wsS0FBSyxDQUNOLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQztRQUV2QyxPQUFPLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4QyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBR2hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FDcEIsUUFBUSxDQUFDLFNBQVMsRUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUNsQixDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUMifQ==