@nu-art/thunder
Version:
Thunder - React & Typescript based frontend framework
86 lines • 4.27 kB
JavaScript
;
/*
* 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