UNPKG

@universis/common

Version:

Universis - common directives and services

68 lines 8.77 kB
import { Injectable } from '@angular/core'; import { DefaultUrlSerializer, NavigationEnd, NavigationStart, PRIMARY_OUTLET, Router } from '@angular/router'; import { BehaviorSubject } from 'rxjs'; import { filter, first, map } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; /** * * Displays Loading Spinner * @export * @class LoadingService */ export class ReferrerRouteService { constructor(router) { this.router = router; this.referrer$ = new BehaviorSubject(null); this._referrer = null; router.events .pipe(filter(event => event instanceof NavigationEnd || event instanceof NavigationStart)) .subscribe((event) => { if (event instanceof NavigationStart) { if (router.routerState.snapshot && router.routerState.snapshot.url.length) { this._referrer = router.routerState.snapshot.url; } else { this._referrer = null; } } else if (event instanceof NavigationEnd) { if (this._referrer != null && this._referrer !== event.urlAfterRedirects) { this.referrer$.next(this._referrer); this._referrer = null; } } }); } get first$() { return this.referrer$.pipe(first()); } get routeParams$() { return this.referrer$.pipe(first()).pipe(map((url) => { if (url) { const urlSerializer = new DefaultUrlSerializer(); const tree = urlSerializer.parse(url); const queryParams = tree.queryParams; tree.queryParams = {}; const fragment = tree.fragment; tree.fragment = null; tree.queryParams = {}; const g = tree.root.children[PRIMARY_OUTLET]; const commands = g.segments.map((segment) => segment.path); commands.splice(0, 0, '/'); return { commands, queryParams, fragment }; } return; })); } } ReferrerRouteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ReferrerRouteService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); ReferrerRouteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ReferrerRouteService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ReferrerRouteService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.Router }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJyZXItcm91dGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvcmVmZXJyZXItcm91dGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQW1CLE1BQU0saUJBQWlCLENBQUM7QUFDaEksT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBUXBEOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUgzQixjQUFTLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3BELGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBR3RDLE1BQU0sQ0FBQyxNQUFNO2FBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLElBQUksS0FBSyxZQUFZLGVBQWUsQ0FBQyxDQUFDO2FBQ3pGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pCLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtnQkFDcEMsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO29CQUN6RSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztpQkFDbEQ7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQ3ZCO2FBQ0Y7aUJBQU0sSUFBSSxLQUFLLFlBQVksYUFBYSxFQUFFO2dCQUN6QyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLGlCQUFpQixFQUFFO29CQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN2QjthQUNGO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFrQixFQUFFLEVBQUU7WUFDbEUsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsTUFBTSxhQUFhLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO2dCQUNqRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixNQUFNLENBQUMsR0FBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzlELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNELFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDM0IsT0FBTztvQkFDTCxRQUFRO29CQUNSLFdBQVc7b0JBQ1gsUUFBUTtpQkFDYyxDQUFDO2FBQzFCO1lBQ0QsT0FBTztRQUNULENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDOztrSEFqRFUsb0JBQW9CO3NIQUFwQixvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0VXJsU2VyaWFsaXplciwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBQUklNQVJZX09VVExFVCwgUm91dGVyLCBVcmxTZWdtZW50R3JvdXAgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIGZpcnN0LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmZXJyZXJSb3V0ZVBhcmFtcyB7XG4gIGNvbW1hbmRzOiBzdHJpbmdbXTtcbiAgcXVlcnlQYXJhbXM/OiBhbnk7XG4gIGZyYWdtZW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqXG4gKiBEaXNwbGF5cyBMb2FkaW5nIFNwaW5uZXJcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBMb2FkaW5nU2VydmljZVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVmZXJyZXJSb3V0ZVNlcnZpY2Uge1xuXG4gIHB1YmxpYyByZWZlcnJlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIF9yZWZlcnJlcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgIHJvdXRlci5ldmVudHNcbiAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSlcbiAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICBpZiAocm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90ICYmIHJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZlcnJlciA9IHJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3JlZmVycmVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3JlZmVycmVyICE9IG51bGwgJiYgdGhpcy5fcmVmZXJyZXIgIT09IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSB7XG4gICAgICAgICAgICB0aGlzLnJlZmVycmVyJC5uZXh0KHRoaXMuX3JlZmVycmVyKTtcbiAgICAgICAgICAgIHRoaXMuX3JlZmVycmVyID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmlyc3QkKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnJlZmVycmVyJC5waXBlKGZpcnN0KCkpO1xuICB9XG5cbiAgcHVibGljIGdldCByb3V0ZVBhcmFtcyQoKTogT2JzZXJ2YWJsZTxSZWZlcnJlclJvdXRlUGFyYW1zIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJyZXIkLnBpcGUoZmlyc3QoKSkucGlwZShtYXAoKHVybDogc3RyaW5nIHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKHVybCkge1xuICAgICAgICBjb25zdCB1cmxTZXJpYWxpemVyID0gbmV3IERlZmF1bHRVcmxTZXJpYWxpemVyKCk7XG4gICAgICAgIGNvbnN0IHRyZWUgPSB1cmxTZXJpYWxpemVyLnBhcnNlKHVybCk7XG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdHJlZS5xdWVyeVBhcmFtcztcbiAgICAgICAgdHJlZS5xdWVyeVBhcmFtcyA9IHt9O1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IHRyZWUuZnJhZ21lbnQ7XG4gICAgICAgIHRyZWUuZnJhZ21lbnQgPSBudWxsO1xuICAgICAgICB0cmVlLnF1ZXJ5UGFyYW1zID0ge307XG4gICAgICAgIGNvbnN0IGc6IFVybFNlZ21lbnRHcm91cCA9IHRyZWUucm9vdC5jaGlsZHJlbltQUklNQVJZX09VVExFVF07XG4gICAgICAgIGNvbnN0IGNvbW1hbmRzID0gZy5zZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IHNlZ21lbnQucGF0aCk7XG4gICAgICAgIGNvbW1hbmRzLnNwbGljZSgwLCAwLCAnLycpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbW1hbmRzLFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgICAgIGZyYWdtZW50XG4gICAgICAgIH0gYXMgUmVmZXJyZXJSb3V0ZVBhcmFtcztcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9KSk7XG4gIH1cblxufVxuIl19