UNPKG

hswidget

Version:
50 lines 3.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Router = void 0; const mithril_1 = __importDefault(require("mithril")); const hsutil_1 = require("hsutil"); const log = new hsutil_1.Log('Router'); class Router { constructor(viewComponent, routePattern, defaults) { this.routePattern = routePattern; this.defaults = defaults; this.lastAttrs = {}; this.setParts({}); setTimeout(() => this.route(viewComponent, routePattern)); } setRoute(attrs) { attrs = this.setParts(attrs); mithril_1.default.route.set(this.routePattern, attrs); } redraw() { mithril_1.default.redraw(); } setParts(attrs) { Object.entries(this.defaults).map(([attr, def]) => { if (attrs[attr] === undefined) { attrs[attr] = this.lastAttrs[attr]; } this.lastAttrs[attr] = attrs[attr] || this.lastAttrs[attr] || def; }); return this.lastAttrs; } getParts() { return this.lastAttrs; } route(viewComponent, routePattern) { const parts = routePattern.split(':'); const routes = {}; let path = ''; for (const part of parts) { path += (path === '' ? '' : ':') + part; routes[path] = viewComponent; log.info(`added route '${path}'`); } mithril_1.default.route(document.body, '/', routes); } } exports.Router = Router; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N1cHBvcnQvUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQWtCQSxzREFBbUM7QUFDbkMsbUNBQWtDO0FBQUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxZQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFZbEUsTUFBYSxNQUFNO0lBU2YsWUFBWSxhQUEwQixFQUFZLFlBQW1CLEVBQVksUUFBVTtRQUF6QyxpQkFBWSxHQUFaLFlBQVksQ0FBTztRQUFZLGFBQVEsR0FBUixRQUFRLENBQUU7UUFScEYsY0FBUyxHQUFNLEVBQUUsQ0FBQztRQVNyQixJQUFJLENBQUMsUUFBUSxDQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFNTSxRQUFRLENBQUMsS0FBTztRQUNuQixLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixpQkFBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sTUFBTTtRQUNULGlCQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDZixDQUFDO0lBT00sUUFBUSxDQUFDLEtBQU87UUFDbkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsR0FBRyxDQUFlLEVBQUUsRUFBRTtZQUMzRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBRyxTQUFTLEVBQThCO2dCQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQUU7WUFDaEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVNLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVPLEtBQUssQ0FBQyxhQUEwQixFQUFFLFlBQW1CO1FBQ3pELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksS0FBRyxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUM7WUFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNyQztRQUNELGlCQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7Q0FDSjtBQXZERCx3QkF1REMifQ==