UNPKG

@botonic/core

Version:
72 lines 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Inspector = exports.LogRouteInspector = exports.FocusRouteInspector = exports.RouteInspector = void 0; class RouteInspector { routeMatched(_route, _routeKey, _routeValue, _input) { } routeNotMatched(_route, _routeKey, _routeValue, _input) { } } exports.RouteInspector = RouteInspector; class FocusRouteInspector extends RouteInspector { constructor() { super(); this.focusRoutePaths = null; this.focusOnMatches = false; } focusOnlyOnRoutes(focusRoutePaths) { this.focusRoutePaths = focusRoutePaths; return this; } focusOnlyOnMatches() { this.focusOnMatches = true; return this; } _isOnFocus(route) { if (this.focusRoutePaths === null) { return true; } // @ts-ignore return this.focusRoutePaths.includes(route.path); } } exports.FocusRouteInspector = FocusRouteInspector; class LogRouteInspector extends FocusRouteInspector { routeMatched(route, routeKey, routeValue, inputValue) { if (!this._isOnFocus(route)) { return; } this._log(`Route ${this._routeName(route)} selected ` + `because Input.${routeKey} (${inputValue}) matched '${routeValue}'`); } // @ts-ignore routeNotMatched(route, routeKey, routeValue, inputValue) { if (!this._isOnFocus(route) || this.focusOnMatches) { return; } this._log(`Route ${this._routeName(route)} not selected ` + `because Input.${routeKey} (${inputValue}) did not match '${routeValue}'`); } _routeName(obj) { let name = obj.path || '<<no path defined>>'; if (obj.action) { name = `'${name}' (to action '${obj.action.name}')`; } if (obj.redirect) { name = `'${name}' (with redirect to '${obj.redirect}')`; } return name; } _log(message, ...optionalParams) { console.log(message, ...optionalParams); } } exports.LogRouteInspector = LogRouteInspector; class Inspector { constructor(routeInspector = undefined) { this.routeInspector = routeInspector || new RouteInspector(); } getRouteInspector() { return this.routeInspector; } } exports.Inspector = Inspector; //# sourceMappingURL=inspector.js.map