{"version":3,"file":"cloudideaas-ngx-breadcrumb.mjs","sources":["../../src/lib/breadcrumb/breadcrumbService.ts","../../src/lib/breadcrumb/breadcrumb.ts","../../src/lib/breadcrumb/breadcrumb.module.ts","../../src/cloudideaas-ngx-breadcrumb.ts"],"sourcesContent":["import {Injectable} from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class BreadcrumbService {\r\n\r\n    private routesFriendlyNames: Map<string, string> = new Map<string, string>();\r\n    private routesFriendlyNamesRegex: Map<string, string> = new Map<string, string>();\r\n    private routesWithCallback: Map<string, (string:string) => string> = new Map<string, (string:string) => string>();\r\n    private routesWithCallbackRegex: Map<string, (string:string) => string> = new Map<string, (string:string) => string>();\r\n    private hideRoutes: any = new Array<string>();\r\n    private hideRoutesRegex: any = new Array<string>();\r\n\r\n    /**\r\n     * Specify a friendly name for the corresponding route.\r\n     *\r\n     * @param route\r\n     * @param name\r\n     */\r\n    addFriendlyNameForRoute(route: string, name: string): void {\r\n        this.routesFriendlyNames.set(route, name);\r\n    }\r\n    \r\n    /**\r\n     * Specify a friendly name for the corresponding route matching a regular expression.\r\n     *\r\n     * @param route\r\n     * @param name\r\n     */\r\n    addFriendlyNameForRouteRegex(routeRegex: string, name: string): void {\r\n        this.routesFriendlyNamesRegex.set(routeRegex, name);\r\n    }\r\n    \r\n    /**\r\n     * Specify a callback for the corresponding route.\r\n     * When a mathing url is navigatedd to, the callback function is invoked to get the name to be displayed in the breadcrumb.\r\n     */\r\n    addCallbackForRoute(route: string, callback: (id: string) => string): void {\r\n        this.routesWithCallback.set(route, callback);\r\n    }\r\n    \r\n    /**\r\n     * Specify a callback for the corresponding route matching a regular expression.\r\n     * When a mathing url is navigatedd to, the callback function is invoked to get the name to be displayed in the breadcrumb.\r\n     */\r\n    addCallbackForRouteRegex(routeRegex: string, callback: (id: string) => string): void {\r\n        this.routesWithCallbackRegex.set(routeRegex, callback);\r\n    }\r\n\r\n    /**\r\n     * Show the friendly name for a given route (url). If no match is found the url (without the leading '/') is shown.\r\n     *\r\n     * @param route\r\n     * @returns {*}\r\n     */\r\n    getFriendlyNameForRoute(route: string): string {\r\n        let name: string = \"\";\r\n        let routeEnd = route.substr(route.lastIndexOf('/')+1, route.length);\r\n        \r\n        this.routesFriendlyNames.forEach((value, key, map) => {\r\n            if (key === route) {\r\n                name = value;\r\n            }\r\n        });\r\n        \r\n        this.routesFriendlyNamesRegex.forEach((value, key, map) => {\r\n            if (new RegExp(key).exec(route)) {\r\n                name = value;\r\n            }\r\n        });\r\n        \r\n        this.routesWithCallback.forEach((value, key, map) => {\r\n            if (key === route) {\r\n                name = value(routeEnd);\r\n            }\r\n        });\r\n        \r\n        this.routesWithCallbackRegex.forEach((value, key, map) => {\r\n            if (new RegExp(key).exec(route)) {\r\n                name = value(routeEnd);\r\n            }\r\n        });\r\n\r\n        return name ? name : routeEnd;\r\n    }\r\n    \r\n    /**\r\n     * Specify a route (url) that should not be shown in the breadcrumb.\r\n     */\r\n    hideRoute(route: string): void {\r\n        if (this.hideRoutes.indexOf(route) === -1) {\r\n            this.hideRoutes.push(route);\r\n        }\r\n    }\r\n    \r\n    /**\r\n     * Specify a route (url) regular expression that should not be shown in the breadcrumb.\r\n     */\r\n    hideRouteRegex(routeRegex: string): void {\r\n        if (this.hideRoutesRegex.indexOf(routeRegex) === -1) {\r\n            this.hideRoutesRegex.push(routeRegex);\r\n        }\r\n    }\r\n    \r\n    /**\r\n     * Returns true if a route should be hidden.\r\n     */\r\n    isRouteHidden(route: string): boolean {\r\n        let hide = this.hideRoutes.indexOf(route) > -1;\r\n        \r\n        this.hideRoutesRegex.forEach((value:any) => {\r\n            if (new RegExp(value).exec(route)) {\r\n                hide = true;\r\n            }\r\n        });\r\n        \r\n        return hide;\r\n    }\r\n}\r\n","import {Component, Input, OnInit, OnChanges} from '@angular/core';\r\nimport {Router, NavigationEnd} from '@angular/router';\r\nimport {BreadcrumbService} from './breadcrumbService';\r\nimport { filter } from 'rxjs/operators';\r\n\r\n/**\r\n * This component shows a breadcrumb trail for available routes the router can navigate to.\r\n * It subscribes to the router in order to update the breadcrumb trail as you navigate to a component.\r\n */\r\n@Component({\r\n    selector: 'breadcrumb',\r\n    template: `\r\n        <ul [class.breadcrumb]=\"useBootstrap\">\r\n            <li *ngFor=\"let url of _urls; let last = last\" class=\"{'breadcrumb-item': useBootstrap, 'active': last}\"> <!-- disable link of last item -->\r\n                <a role=\"button\" *ngIf=\"!last && url == prefix\" (click)=\"navigateTo('/')\">{{url}}</a>\r\n                <a role=\"button\" *ngIf=\"!last && url != prefix\" (click)=\"navigateTo(url)\">{{friendlyName(url)}}</a>\r\n                <span *ngIf=\"last\">{{friendlyName(url)}}</span>\r\n                <span *ngIf=\"last && url == prefix\">{{friendlyName('/')}}</span>\r\n            </li>\r\n        </ul>\r\n    `,\r\n    exportAs: \"BreadcrumbComponent\"\r\n})\r\nexport class BreadcrumbComponent implements OnInit, OnChanges {\r\n    @Input() useBootstrap: boolean = true;\r\n    @Input() prefix:       string  = '';\r\n\r\n    public _urls: string[] = [];\r\n    public _routerSubscription: any;\r\n\r\n    constructor(\r\n        private router: Router,\r\n        private breadcrumbService: BreadcrumbService\r\n    ) {}\r\n\r\n    ngOnInit(): void {\r\n        this._urls = new Array();\r\n\r\n        if (this.prefix.length > 0) {\r\n            this._urls.unshift(this.prefix);\r\n        }\r\n\r\n        this._routerSubscription = this.router.events\r\n            .pipe(filter((event) => event instanceof NavigationEnd)) \r\n            .subscribe((navigationEnd: any) => {\r\n\r\n            if (navigationEnd instanceof NavigationEnd) {\r\n                this._urls.length = 0; //Fastest way to clear out array\r\n                this.generateBreadcrumbTrail(navigationEnd.urlAfterRedirects ? navigationEnd.urlAfterRedirects : navigationEnd.url);\r\n            }\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: any): void {\r\n        if (!this._urls) {\r\n            return;\r\n        }\r\n\r\n        this._urls.length = 0;\r\n        this.generateBreadcrumbTrail(this.router.url);\r\n    }\r\n\r\n    generateBreadcrumbTrail(url: string): void {\r\n        if (!this.breadcrumbService.isRouteHidden(url)) {\r\n            //Add url to beginning of array (since the url is being recursively broken down from full url to its parent)\r\n            this._urls.unshift(url);\r\n        }\r\n\r\n        if (url.lastIndexOf('/') > 0) {\r\n            this.generateBreadcrumbTrail(url.substr(0, url.lastIndexOf('/'))); //Find last '/' and add everything before it as a parent route\r\n        } else if (this.prefix.length > 0) {\r\n            this._urls.unshift(this.prefix);\r\n        }\r\n    }\r\n\r\n    navigateTo(url: string): void {\r\n        this.router.navigateByUrl(url);\r\n    }\r\n\r\n    friendlyName(url: string): string {\r\n        return !url ? '' : this.breadcrumbService.getFriendlyNameForRoute(url);\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this._routerSubscription.unsubscribe();\r\n    }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { BreadcrumbService } from \"./breadcrumbService\";\r\nimport { BreadcrumbComponent } from \"./breadcrumb\";\r\n\r\n@NgModule({\r\n  declarations: [\r\n    BreadcrumbComponent\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  providers: [\r\n    BreadcrumbService\r\n  ],\r\n  exports: [\r\n    BreadcrumbComponent\r\n  ]\r\n})\r\nexport class BreadcrumbModule\r\n{\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.BreadcrumbService"],"mappings":"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"}