angular-admin-lte-teliqo
Version:
npm# angular-admin-lte
184 lines (183 loc) • 16.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Injectable } from '@angular/core';
import { NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
import { BehaviorSubject } from 'rxjs';
/**
* @record
*/
export function Path() { }
function Path_tsickle_Closure_declarations() {
/** @type {?} */
Path.prototype.data;
/** @type {?} */
Path.prototype.params;
/** @type {?} */
Path.prototype.url;
}
/**
* @record
*/
export function Paths() { }
function Paths_tsickle_Closure_declarations() {
}
var RoutingService = /** @class */ (function () {
/**
* @method constructor
* @param router [description]
*/
function RoutingService(router) {
this.router = router;
this.onChange = new BehaviorSubject(undefined);
this.events = new BehaviorSubject(undefined);
this.init();
}
/**
* [createUrl description]
* \@method createUrl
* @param {?} route [description]
* @return {?} [description]
*/
RoutingService.createUrl = /**
* [createUrl description]
* \@method createUrl
* @param {?} route [description]
* @return {?} [description]
*/
function (route) {
var /** @type {?} */ url = route.url.map(function (urlSegment) { return urlSegment.toString(); }).join('/');
return url;
};
/**
* [isChildrenSelfRoute description]
* \@method isChildrenSelfRoute
* @param {?} route [description]
* @return {?} [description]
*/
RoutingService.isChildrenSelfRoute = /**
* [isChildrenSelfRoute description]
* \@method isChildrenSelfRoute
* @param {?} route [description]
* @return {?} [description]
*/
function (route) {
route.routeConfig.children.forEach(function (child) {
if (child.path === '' && (child.component || child.loadChildren)) {
return true;
}
});
return false;
};
/**
* [createBreadcrumb description]
* \@method createBreadcrumb
* @param {?} route [description]
* @param {?} url [description]
* @return {?} [description]
*/
RoutingService.createBreadcrumb = /**
* [createBreadcrumb description]
* \@method createBreadcrumb
* @param {?} route [description]
* @param {?} url [description]
* @return {?} [description]
*/
function (route, url) {
var /** @type {?} */ isUrl = true;
if (route.children.length !== 0 && route.firstChild.routeConfig.path) {
if (url !== '/' && !route.routeConfig.loadChildren && !route.routeConfig.component && !RoutingService.isChildrenSelfRoute(route)) {
isUrl = false;
}
}
return {
data: route.data,
params: route.params,
url: isUrl ? url : null
};
};
/**
* [init description]
* \@method init
* @return {?}
*/
RoutingService.prototype.init = /**
* [init description]
* \@method init
* @return {?}
*/
function () {
var _this = this;
this.router.events.subscribe(function (routeEvent) {
// https://github.com/angular/angular/issues/17473: event not fired anymore on load for routed component.
// https://github.com/angular/angular/issues/17473: event not fired anymore on load for routed component.
_this.events.next(routeEvent);
if (routeEvent instanceof NavigationEnd) {
var /** @type {?} */ route = _this.router.routerState.root.snapshot, /** @type {?} */
tmpUrl = '', /** @type {?} */
url = '', /** @type {?} */
rootRoot = true;
var /** @type {?} */ paths = [];
while (route.children.length) {
route = route.firstChild;
tmpUrl = "/" + RoutingService.createUrl(route);
if (route.outlet !== PRIMARY_OUTLET || (!route.routeConfig.path && !rootRoot)) {
continue;
}
rootRoot = false;
if (route.params || route.data) {
for (var /** @type {?} */ key in route.params) {
if (!key) {
continue;
}
if (route.data['title']) {
route.data['title'] = route.data['title'].replace(":" + key, route.params[key]);
route.data['title'] = route.data['title'].replace(":" + key, route.params[key]);
}
if (route.data['breadcrumbs']) {
route.data['breadcrumbs'] = route.data['breadcrumbs'].replace(":" + key, route.params[key]);
}
if (route.data['description']) {
route.data['description'] = route.data['description'].replace(":" + key, route.params[key]);
}
}
}
if (tmpUrl === '/') {
paths.push(RoutingService.createBreadcrumb(route, tmpUrl));
}
else {
url += tmpUrl;
paths.push(RoutingService.createBreadcrumb(route, url));
}
}
_this.onChange.next(paths);
}
});
};
RoutingService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
RoutingService.ctorParameters = function () { return [
{ type: Router, },
]; };
return RoutingService;
}());
export { RoutingService };
function RoutingService_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
RoutingService.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
RoutingService.ctorParameters;
/** @type {?} */
RoutingService.prototype.onChange;
/** @type {?} */
RoutingService.prototype.events;
/** @type {?} */
RoutingService.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1hZG1pbi1sdGUtdGVsaXFvLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWdELGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF5QnJDOzs7T0FHRztJQUNILHdCQUNVO1FBQUEsV0FBTSxHQUFOLE1BQU07d0JBUjBCLElBQUksZUFBZSxDQUFDLFNBQVMsQ0FBQztzQkFDMUIsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDO1FBUzFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUNiOzs7Ozs7O0lBUWMsd0JBQVM7Ozs7OztjQUFDLEtBQTZCO1FBQ3BELHFCQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFBLFVBQVUsSUFBSSxPQUFBLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBckIsQ0FBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsR0FBRyxDQUFDOzs7Ozs7OztJQVNFLGtDQUFtQjs7Ozs7O2NBQUMsS0FBNkI7UUFDOUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUEsS0FBSztZQUN0QyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDakUsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNi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dGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIEV2ZW50IGFzIFJvdXRlckV2ZW50LCBOYXZpZ2F0aW9uRW5kLCBQUklNQVJZX09VVExFVCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qXG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdGgge1xuICBkYXRhOiBPYmplY3Q7XG4gIHBhcmFtczogT2JqZWN0O1xuICB1cmw6IHN0cmluZztcbn1cblxuLypcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0aHMgZXh0ZW5kcyBBcnJheTxQYXRoPiB7fVxuXG5cbi8qXG4gKlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUm91dGluZ1NlcnZpY2Uge1xuICBwdWJsaWMgb25DaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxQYXRocz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBldmVudHM6IEJlaGF2aW9yU3ViamVjdDxSb3V0ZXJFdmVudD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHJvdXRlciBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMuaW5pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtjcmVhdGVVcmwgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2QgY3JlYXRlVXJsXG4gICAqIEBwYXJhbSByb3V0ZSBbZGVzY3JpcHRpb25dXG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlVXJsKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSByb3V0ZS51cmwubWFwKHVybFNlZ21lbnQgPT4gdXJsU2VnbWVudC50b1N0cmluZygpKS5qb2luKCcvJyk7XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBbaXNDaGlsZHJlblNlbGZSb3V0ZSBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBpc0NoaWxkcmVuU2VsZlJvdXRlXG4gICAqIEBwYXJhbSByb3V0ZSBbZGVzY3JpcHRpb25dXG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgaXNDaGlsZHJlblNlbGZSb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJvdXRlLnJvdXRlQ29uZmlnLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xuICAgICAgaWYgKGNoaWxkLnBhdGggPT09ICcnICYmIChjaGlsZC5jb21wb25lbnQgfHwgY2hpbGQubG9hZENoaWxkcmVuKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbY3JlYXRlQnJlYWRjcnVtYiBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBjcmVhdGVCcmVhZGNydW1iXG4gICAqIEBwYXJhbSByb3V0ZSBbZGVzY3JpcHRpb25dXG4gICAqIEBwYXJhbSB1cmwgICBbZGVzY3JpcHRpb25dXG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlQnJlYWRjcnVtYihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgdXJsOiBzdHJpbmcpOiBQYXRoIHtcbiAgICBsZXQgaXNVcmwgPSB0cnVlO1xuXG4gICAgaWYgKHJvdXRlLmNoaWxkcmVuLmxlbmd0aCAhPT0gMCAmJiByb3V0ZS5maXJzdENoaWxkLnJvdXRlQ29uZmlnLnBhdGgpIHtcbiAgICAgIGlmICh1cmwgIT09ICcvJyAmJiAhcm91dGUucm91dGVDb25maWcubG9hZENoaWxkcmVuICYmICFyb3V0ZS5yb3V0ZUNvbmZpZy5jb21wb25lbnQgJiYgIVJvdXRpbmdTZXJ2aWNlLmlzQ2hpbGRyZW5TZWxmUm91dGUocm91dGUpKSB7XG4gICAgICAgIGlzVXJsID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHJvdXRlLmRhdGEsXG4gICAgICBwYXJhbXMgOiByb3V0ZS5wYXJhbXMsXG4gICAgICB1cmw6IGlzVXJsID8gdXJsIDogbnVsbFxuICAgIH07XG4gIH1cblxuXG4gIC8qKlxuICAgKiBbaW5pdCBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBpbml0XG4gICAqL1xuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShyb3V0ZUV2ZW50ID0+IHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE3NDczOiBldmVudCBub3QgZmlyZWQgYW55bW9yZSBvbiBsb2FkIGZvciByb3V0ZWQgY29tcG9uZW50LlxuICAgICAgdGhpcy5ldmVudHMubmV4dChyb3V0ZUV2ZW50KTtcbiAgICAgIGlmIChyb3V0ZUV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICBsZXQgcm91dGUgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290LnNuYXBzaG90LFxuICAgICAgICAgIHRtcFVybCA9ICcnLFxuICAgICAgICAgIHVybCA9ICcnLFxuICAgICAgICAgIHJvb3RSb290ID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBwYXRoczogUGF0aHMgPSBbXTtcblxuICAgICAgICB3aGlsZSAocm91dGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgcm91dGUgPSByb3V0ZS5maXJzdENoaWxkO1xuICAgICAgICAgIHRtcFVybCA9IGAvJHtSb3V0aW5nU2VydmljZS5jcmVhdGVVcmwocm91dGUpfWA7XG5cbiAgICAgICAgICBpZiAocm91dGUub3V0bGV0ICE9PSBQUklNQVJZX09VVExFVCB8fCAoIXJvdXRlLnJvdXRlQ29uZmlnLnBhdGggJiYgIXJvb3RSb290KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcm9vdFJvb3QgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChyb3V0ZS5wYXJhbXMgfHwgcm91dGUuZGF0YSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcm91dGUucGFyYW1zKSB7XG4gICAgICAgICAgICAgIGlmICgha2V5KSB7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgIGlmIChyb3V0ZS5kYXRhWyd0aXRsZSddKSB7XG4gICAgICAgICAgICAgICAgcm91dGUuZGF0YVsndGl0bGUnXSA9IHJvdXRlLmRhdGFbJ3RpdGxlJ10ucmVwbGFjZShgOiR7a2V5fWAsIHJvdXRlLnBhcmFtc1trZXldKTtcbiAgICAgICAgICAgICAgICByb3V0ZS5kYXRhWyd0aXRsZSddID0gcm91dGUuZGF0YVsndGl0bGUnXS5yZXBsYWNlKGA6JHtrZXl9YCwgcm91dGUucGFyYW1zW2tleV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyb3V0ZS5kYXRhWydicmVhZGNydW1icyddKSB7XG4gICAgICAgICAgICAgICAgcm91dGUuZGF0YVsnYnJlYWRjcnVtYnMnXSA9IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWJzJ10ucmVwbGFjZShgOiR7a2V5fWAsIHJvdXRlLnBhcmFtc1trZXldKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocm91dGUuZGF0YVsnZGVzY3JpcHRpb24nXSkge1xuICAgICAgICAgICAgICAgIHJvdXRlLmRhdGFbJ2Rlc2NyaXB0aW9uJ10gPSByb3V0ZS5kYXRhWydkZXNjcmlwdGlvbiddLnJlcGxhY2UoYDoke2tleX1gLCByb3V0ZS5wYXJhbXNba2V5XSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodG1wVXJsID09PSAnLycpIHtcbiAgICAgICAgICAgIHBhdGhzLnB1c2goUm91dGluZ1NlcnZpY2UuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZSwgdG1wVXJsKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybCArPSB0bXBVcmw7XG4gICAgICAgICAgICBwYXRocy5wdXNoKFJvdXRpbmdTZXJ2aWNlLmNyZWF0ZUJyZWFkY3J1bWIocm91dGUsIHVybCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UubmV4dChwYXRocyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==