UNPKG

angular-admin-lte-teliqo

Version:
184 lines (183 loc) 16.6 kB
/** * @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==