@spartacus/core
Version:
Spartacus - the core framework
35 lines • 4.88 kB
JavaScript
import { Injectable } from '@angular/core';
import { NavigationEnd } from '@angular/router';
import { filter, map, shareReplay, startWith } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
/**
* Helper service to expose all activated routes
*/
export class ActivatedRoutesService {
constructor(router) {
this.router = router;
/**
* Array of currently activated routes (from the root route to the leaf route).
*/
this.routes$ = this.router.events.pipe(filter((event) => event instanceof NavigationEnd),
// eslint-disable-next-line import/no-deprecated
startWith(undefined), // emit value for consumer who subscribed lately after NavigationEnd event
map(() => {
let route = this.router.routerState.snapshot.root;
const routes = [route];
// traverse to the leaf route:
while ((route = route.firstChild)) {
routes.push(route);
}
return routes;
}), shareReplay({ bufferSize: 1, refCount: true }));
}
}
ActivatedRoutesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ActivatedRoutesService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
ActivatedRoutesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ActivatedRoutesService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ActivatedRoutesService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZhdGVkLXJvdXRlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvcm91dGluZy9zZXJ2aWNlcy9hY3RpdmF0ZWQtcm91dGVzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQTBCLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBRXJFOztHQUVHO0FBRUgsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFzQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVwQzs7V0FFRztRQUNNLFlBQU8sR0FDZCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3JCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQztRQUNqRCxnREFBZ0Q7UUFDaEQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLDBFQUEwRTtRQUNoRyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNsRCxNQUFNLE1BQU0sR0FBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVqRCw4QkFBOEI7WUFDOUIsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEI7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO0lBdEJtQyxDQUFDOzttSEFEN0Isc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FEVCxNQUFNOzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIEhlbHBlciBzZXJ2aWNlIHRvIGV4cG9zZSBhbGwgYWN0aXZhdGVkIHJvdXRlc1xuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFjdGl2YXRlZFJvdXRlc1NlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIpIHt9XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIGN1cnJlbnRseSBhY3RpdmF0ZWQgcm91dGVzIChmcm9tIHRoZSByb290IHJvdXRlIHRvIHRoZSBsZWFmIHJvdXRlKS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlcyQ6IE9ic2VydmFibGU8QWN0aXZhdGVkUm91dGVTbmFwc2hvdFtdPiA9XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1kZXByZWNhdGVkXG4gICAgICBzdGFydFdpdGgodW5kZWZpbmVkKSwgLy8gZW1pdCB2YWx1ZSBmb3IgY29uc3VtZXIgd2hvIHN1YnNjcmliZWQgbGF0ZWx5IGFmdGVyIE5hdmlnYXRpb25FbmQgZXZlbnRcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIGxldCByb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgICAgIGNvbnN0IHJvdXRlczogQWN0aXZhdGVkUm91dGVTbmFwc2hvdFtdID0gW3JvdXRlXTtcblxuICAgICAgICAvLyB0cmF2ZXJzZSB0byB0aGUgbGVhZiByb3V0ZTpcbiAgICAgICAgd2hpbGUgKChyb3V0ZSA9IHJvdXRlLmZpcnN0Q2hpbGQpKSB7XG4gICAgICAgICAgcm91dGVzLnB1c2gocm91dGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJvdXRlcztcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICk7XG59XG4iXX0=