UNPKG

@nu-art/thunder

Version:

Thunder - React & Typescript based frontend framework

86 lines 4.27 kB
"use strict"; /* * Thunder is a typescript & react frontend foundation that natively * runs on firebase function and is a part of the Thunderstorm larger project * * Copyright (C) 2018 Adam van der Kruk aka TacB0sS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var ts_common_1 = require("@nu-art/ts-common"); var React = require("react"); var route_1 = require("./route"); var react_router_dom_1 = require("react-router-dom"); var __1 = require("../.."); var RoutingModule_Class = /** @class */ (function (_super) { __extends(RoutingModule_Class, _super); function RoutingModule_Class() { var _this = _super.call(this) || this; _this.routes = {}; _this.ordinalRoutes = []; _this.getMyRouteKey = function () { return Object.keys(_this.routes).find(function (key) { return _this.routes[key].path === __1.BaseComponent.getUrl(); }); }; _this.createNavLinkNode = route_1.defaultNavLinkNode; _this.createRouteNode = route_1.defaultRouteNode; return _this; } RoutingModule_Class.prototype.init = function () { }; RoutingModule_Class.prototype.clearRoutes = function () { for (var i in this.ordinalRoutes) { delete this.routes[this.ordinalRoutes[i]]; delete this.ordinalRoutes[i]; } }; RoutingModule_Class.prototype.addRoute = function (key, route, component) { var previousRoute = this.routes[key]; if (previousRoute) throw new ts_common_1.BadImplementationException("Route key '" + key + "' MUST be unique!!\n Found two routes with matching key: '" + route + "' && '" + previousRoute.path + "'"); ts_common_1.addItemToArray(this.ordinalRoutes, key); return this.routes[key] = new route_1.RoutePath(key, route, component); }; RoutingModule_Class.prototype.getRoute = function (key) { if (!this.routes[key]) throw new ts_common_1.BadImplementationException("No Route for key '" + key + "'... Did you forget to add it??"); return this.routes[key]; }; RoutingModule_Class.prototype.redirect = function (key) { return React.createElement(react_router_dom_1.Redirect, { to: exports.RoutingModule.getRoute(key).path }); }; // need to figure out how to create parameterized urls from this call !! RoutingModule_Class.prototype.getNavLinks = function (keys) { var _this = this; return keys.map(function (key) { return _this.getRoute(key); }).filter(function (route) { return route.visible && route.visible(); }).map(function (route) { return _this.createNavLinkNode(route); }); }; RoutingModule_Class.prototype.getRoutesMap = function () { var _this = this; var keys = this.ordinalRoutes; return React.createElement(react_router_dom_1.Switch, null, keys.map(function (key) { return _this.getRoute(key); }).map(function (route) { return _this.createRouteNode(route); })); }; return RoutingModule_Class; }(ts_common_1.Module)); exports.RoutingModule = new RoutingModule_Class(); //# sourceMappingURL=routing-module.js.map