hswidget
Version:
Helpful Scripts UI widgets
50 lines • 3.83 kB
JavaScript
;
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==