UNPKG

ad-custom-lib

Version:

This is an UI custom library based on Adminlte library with purpose for personal use, if you need a full template of Primeng please visit https://github.com/mledour/angular-admin-lte

176 lines 17.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { BehaviorSubject } from 'rxjs'; import { Injectable } from '@angular/core'; import { NavigationEnd, PRIMARY_OUTLET, Router } from '@angular/router'; /** * @record */ export function Path() { } if (false) { /** @type {?} */ Path.prototype.data; /** @type {?} */ Path.prototype.params; /** @type {?} */ Path.prototype.url; } /** * @record */ export function Paths() { } /* * */ export class RoutingService { /** * \@method constructor * @param {?} router [description] */ constructor(router) { this.router = router; this.onChange = new BehaviorSubject(undefined); this.events = new BehaviorSubject(undefined); this.init(); } /** * [createUrl description] * \@method createUrl * @private * @param {?} route [description] * @return {?} [description] */ static createUrl(route) { /** @type {?} */ const url = route.url.map((/** * @param {?} urlSegment * @return {?} */ urlSegment => urlSegment.toString())).join('/'); return url; } /** * [isChildrenSelfRoute description] * \@method isChildrenSelfRoute * @private * @param {?} route [description] * @return {?} [description] */ static isChildrenSelfRoute(route) { route.routeConfig.children.forEach((/** * @param {?} child * @return {?} */ child => { if (child.path === '' && (child.component || child.loadChildren)) { return true; } })); return false; } /** * [createBreadcrumb description] * \@method createBreadcrumb * @private * @param {?} route [description] * @param {?} url [description] * @return {?} [description] */ static createBreadcrumb(route, url) { /** @type {?} */ let 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 * @private * @return {?} */ init() { this.router.events.subscribe((/** * @param {?} routeEvent * @return {?} */ routeEvent => { // console.log(routeEvent) // https://github.com/angular/angular/issues/17473: event not fired anymore on load for routed component. if (routeEvent instanceof NavigationEnd) { this.events.next(routeEvent); /** @type {?} */ let route = this.router.routerState.root.snapshot; /** @type {?} */ let tmpUrl = ''; /** @type {?} */ let url = ''; /** @type {?} */ let rootRoot = true; /** @type {?} */ const 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 (const 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 = () => [ { type: Router } ]; if (false) { /** @type {?} */ RoutingService.prototype.onChange; /** @type {?} */ RoutingService.prototype.events; /** * @type {?} * @private */ RoutingService.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWQtY3VzdG9tLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9yb3V0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQzJDLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUN0RixNQUFNLGlCQUFpQixDQUFDOzs7O0FBS3pCLDBCQUlDOzs7SUFIRyxvQkFBYTs7SUFDYixzQkFBZTs7SUFDZixtQkFBWTs7Ozs7QUFNaEIsMkJBQThDOzs7O0FBTzlDLE1BQU0sT0FBTyxjQUFjOzs7OztJQVF2QixZQUNZLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBUm5CLGFBQVEsR0FBMkIsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsV0FBTSxHQUFpQyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQVN6RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQzs7Ozs7Ozs7SUFRTyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQTZCOztjQUM1QyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHOzs7O1FBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3hFLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzs7Ozs7Ozs7SUFRTyxNQUFNLENBQUMsbUJBQW1CLENBQUMsS0FBNkI7UUFDNUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTzs7OztRQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3ZDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFLElB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S0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzs2QkFDL0Y7NEJBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dDQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzZCQUMvRjt5QkFDSjtxQkFDSjtvQkFFRCxJQUFJLE1BQU0sS0FBSyxHQUFHLEVBQUU7d0JBQ2hCLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUM5RDt5QkFBTTt3QkFDSCxHQUFHLElBQUksTUFBTSxDQUFDO3dCQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUMzRDtpQkFDSjtnQkFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM3QjtRQUNMLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBeEhKLFVBQVU7Ozs7WUFyQnNFLE1BQU07Ozs7SUF1Qm5GLGtDQUF5RTs7SUFDekUsZ0NBQTZFOzs7OztJQU96RSxnQ0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIEV2ZW50IGFzIFJvdXRlckV2ZW50LCBOYXZpZ2F0aW9uRW5kLCBQUklNQVJZX09VVExFVCwgUm91dGVyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbi8qXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBhdGgge1xyXG4gICAgZGF0YTogT2JqZWN0O1xyXG4gICAgcGFyYW1zOiBPYmplY3Q7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuLypcclxuICpcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF0aHMgZXh0ZW5kcyBBcnJheTxQYXRoPiB7IH1cclxuXHJcblxyXG4vKlxyXG4gKlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUm91dGluZ1NlcnZpY2Uge1xyXG4gICAgcHVibGljIG9uQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8UGF0aHM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xyXG4gICAgcHVibGljIGV2ZW50czogQmVoYXZpb3JTdWJqZWN0PFJvdXRlckV2ZW50PiA9IG5ldyBCZWhhdmlvclN1YmplY3QodW5kZWZpbmVkKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBtZXRob2QgY29uc3RydWN0b3JcclxuICAgICAqIEBwYXJhbSByb3V0ZXIgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtjcmVhdGVVcmwgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIGNyZWF0ZVVybFxyXG4gICAgICogQHBhcmFtIHJvdXRlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBjcmVhdGVVcmwocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHJvdXRlLnVybC5tYXAodXJsU2VnbWVudCA9PiB1cmxTZWdtZW50LnRvU3RyaW5nKCkpLmpvaW4oJy8nKTtcclxuICAgICAgICByZXR1cm4gdXJsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2lzQ2hpbGRyZW5TZWxmUm91dGUgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIGlzQ2hpbGRyZW5TZWxmUm91dGVcclxuICAgICAqIEBwYXJhbSByb3V0ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNDaGlsZHJlblNlbGZSb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJvdXRlLnJvdXRlQ29uZmlnLmNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQucGF0aCA9PT0gJycgJiYgKGNoaWxkLmNvbXBvbmVudCB8fCBjaGlsZC5sb2FkQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbY3JlYXRlQnJlYWRjcnVtYiBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgY3JlYXRlQnJlYWRjcnVtYlxyXG4gICAgICogQHBhcmFtIHJvdXRlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqIEBwYXJhbSB1cmwgICBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlQnJlYWRjcnVtYihyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgdXJsOiBzdHJpbmcpOiBQYXRoIHtcclxuICAgICAgICBsZXQgaXNVcmwgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAocm91dGUuY2hpbGRyZW4ubGVuZ3RoICE9PSAwICYmIHJvdXRlLmZpcnN0Q2hpbGQucm91dGVDb25maWcucGF0aCkge1xyXG4gICAgICAgICAgICBpZiAodXJsICE9PSAnLycgJiYgIXJvdXRlLnJvdXRlQ29uZmlnLmxvYWRDaGlsZHJlbiAmJiAhcm91dGUucm91dGVDb25maWcuY29tcG9uZW50ICYmICFSb3V0aW5nU2VydmljZS5pc0NoaWxkcmVuU2VsZlJvdXRlKHJvdXRlKSkge1xyXG4gICAgICAgICAgICAgICAgaXNVcmwgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZGF0YTogcm91dGUuZGF0YSxcclxuICAgICAgICAgICAgcGFyYW1zOiByb3V0ZS5wYXJhbXMsXHJcbiAgICAgICAgICAgIHVybDogaXNVcmwgPyB1cmwgOiBudWxsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaW5pdCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgaW5pdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShyb3V0ZUV2ZW50ID0+IHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2cocm91dGVFdmVudClcclxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTc0NzM6IGV2ZW50IG5vdCBmaXJlZCBhbnltb3JlIG9uIGxvYWQgZm9yIHJvdXRlZCBjb21wb25lbnQuXHJcbiAgICAgICAgICAgIGlmIChyb3V0ZUV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudHMubmV4dChyb3V0ZUV2ZW50KTtcclxuICAgICAgICAgICAgICAgIGxldCByb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnJvb3Quc25hcHNob3QsXHJcbiAgICAgICAgICAgICAgICAgICAgdG1wVXJsID0gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgdXJsID0gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdFJvb3QgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhzOiBQYXRocyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgIHdoaWxlIChyb3V0ZS5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICByb3V0ZSA9IHJvdXRlLmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdG1wVXJsID0gYC8ke1JvdXRpbmdTZXJ2aWNlLmNyZWF0ZVVybChyb3V0ZSl9YDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlLm91dGxldCAhPT0gUFJJTUFSWV9PVVRMRVQgfHwgKCFyb3V0ZS5yb3V0ZUNvbmZpZy5wYXRoICYmICFyb290Um9vdCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByb290Um9vdCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAocm91dGUucGFyYW1zIHx8IHJvdXRlLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcm91dGUucGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWtleSkgeyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlLmRhdGFbJ3RpdGxlJ10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZS5kYXRhWyd0aXRsZSddID0gcm91dGUuZGF0YVsndGl0bGUnXS5yZXBsYWNlKGA6JHtrZXl9YCwgcm91dGUucGFyYW1zW2tleV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlLmRhdGFbJ3RpdGxlJ10gPSByb3V0ZS5kYXRhWyd0aXRsZSddLnJlcGxhY2UoYDoke2tleX1gLCByb3V0ZS5wYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm91dGUuZGF0YVsnYnJlYWRjcnVtYnMnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWJzJ10gPSByb3V0ZS5kYXRhWydicmVhZGNydW1icyddLnJlcGxhY2UoYDoke2tleX1gLCByb3V0ZS5wYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm91dGUuZGF0YVsnZGVzY3JpcHRpb24nXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlLmRhdGFbJ2Rlc2NyaXB0aW9uJ10gPSByb3V0ZS5kYXRhWydkZXNjcmlwdGlvbiddLnJlcGxhY2UoYDoke2tleX1gLCByb3V0ZS5wYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0bXBVcmwgPT09ICcvJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXNoKFJvdXRpbmdTZXJ2aWNlLmNyZWF0ZUJyZWFkY3J1bWIocm91dGUsIHRtcFVybCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCArPSB0bXBVcmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLnB1c2goUm91dGluZ1NlcnZpY2UuY3JlYXRlQnJlYWRjcnVtYihyb3V0ZSwgdXJsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UubmV4dChwYXRocyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=