@lotto24-angular/imports-orchestrator
Version:
Orchestrate dynamically imported components in Angular applications
33 lines • 5.77 kB
JavaScript
import { importsOrchestratorFeature, ImportsOrchestratorFeatureKind, } from './internal';
import { IMPORTS_ORCHESTRATOR_FEATURE_ROUTING } from '../internal';
import { NavigationEnd, NavigationStart, Router } from '@angular/router';
import { asyncScheduler, filter, map, observeOn, of, shareReplay, startWith, } from 'rxjs';
export function withSuspendWhileRouting(suspendForInitialNavigation = true) {
const providers = [
{
provide: IMPORTS_ORCHESTRATOR_FEATURE_ROUTING,
useFactory: (router) => isRoutingActive$(router, suspendForInitialNavigation),
deps: [Router],
},
];
return importsOrchestratorFeature(ImportsOrchestratorFeatureKind.Routing, providers);
}
export function withoutRouting() {
const providers = [
{
provide: IMPORTS_ORCHESTRATOR_FEATURE_ROUTING,
useValue: of(false).pipe(shareReplay(1)),
},
];
return importsOrchestratorFeature(ImportsOrchestratorFeatureKind.Routing, providers);
}
function isRoutingActive$(router, suspendForInitialNavigation) {
const navigationActive$ = router.events.pipe(filter((event) => event instanceof NavigationStart || event instanceof NavigationEnd), map((event) => {
if (event instanceof NavigationStart) {
return true;
}
return false;
}), observeOn(asyncScheduler), startWith(suspendForInitialNavigation));
return navigationActive$.pipe(shareReplay(1));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvaW1wb3J0cy1vcmNoZXN0cmF0b3Ivc3JjL2xpYi9mZWF0dXJlcy9yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsOEJBQThCLEdBRS9CLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsY0FBYyxFQUNkLE1BQU0sRUFDTixHQUFHLEVBRUgsU0FBUyxFQUNULEVBQUUsRUFDRixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQywyQkFBMkIsR0FBRyxJQUFJO0lBRWxDLE1BQU0sU0FBUyxHQUFlO1FBQzVCO1lBQ0UsT0FBTyxFQUFFLG9DQUFvQztZQUM3QyxVQUFVLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUM3QixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsMkJBQTJCLENBQUM7WUFDdkQsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDO1NBQ2Y7S0FDRixDQUFDO0lBQ0YsT0FBTywwQkFBMEIsQ0FDL0IsOEJBQThCLENBQUMsT0FBTyxFQUN0QyxTQUFTLENBQ1YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYztJQUM1QixNQUFNLFNBQVMsR0FBZTtRQUM1QjtZQUNFLE9BQU8sRUFBRSxvQ0FBb0M7WUFDN0MsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDO0tBQ0YsQ0FBQztJQUNGLE9BQU8sMEJBQTBCLENBQy9CLDhCQUE4QixDQUFDLE9BQU8sRUFDdEMsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FDdkIsTUFBYyxFQUNkLDJCQUFvQztJQUVwQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMxQyxNQUFNLENBQ0osQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUssWUFBWSxlQUFlLElBQUksS0FBSyxZQUFZLGFBQWEsQ0FDckUsRUFDRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNaLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUN6QixTQUFTLENBQUMsMkJBQTJCLENBQUMsQ0FDdkMsQ0FBQztJQUVGLE9BQU8saUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgaW1wb3J0c09yY2hlc3RyYXRvckZlYXR1cmUsXG4gIEltcG9ydHNPcmNoZXN0cmF0b3JGZWF0dXJlS2luZCxcbiAgSW1wb3J0c09yY2hlc3RyYXRvclJvdXRpbmcsXG59IGZyb20gJy4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgSU1QT1JUU19PUkNIRVNUUkFUT1JfRkVBVFVSRV9ST1VUSU5HIH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgYXN5bmNTY2hlZHVsZXIsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvYnNlcnZlT24sXG4gIG9mLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxufSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdXNwZW5kV2hpbGVSb3V0aW5nKFxuICBzdXNwZW5kRm9ySW5pdGlhbE5hdmlnYXRpb24gPSB0cnVlXG4pOiBJbXBvcnRzT3JjaGVzdHJhdG9yUm91dGluZyB7XG4gIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBJTVBPUlRTX09SQ0hFU1RSQVRPUl9GRUFUVVJFX1JPVVRJTkcsXG4gICAgICB1c2VGYWN0b3J5OiAocm91dGVyOiBSb3V0ZXIpID0+XG4gICAgICAgIGlzUm91dGluZ0FjdGl2ZSQocm91dGVyLCBzdXNwZW5kRm9ySW5pdGlhbE5hdmlnYXRpb24pLFxuICAgICAgZGVwczogW1JvdXRlcl0sXG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIGltcG9ydHNPcmNoZXN0cmF0b3JGZWF0dXJlKFxuICAgIEltcG9ydHNPcmNoZXN0cmF0b3JGZWF0dXJlS2luZC5Sb3V0aW5nLFxuICAgIHByb3ZpZGVyc1xuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aG91dFJvdXRpbmcoKTogSW1wb3J0c09yY2hlc3RyYXRvclJvdXRpbmcge1xuICBjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSU1QT1JUU19PUkNIRVNUUkFUT1JfRkVBVFVSRV9ST1VUSU5HLFxuICAgICAgdXNlVmFsdWU6IG9mKGZhbHNlKS5waXBlKHNoYXJlUmVwbGF5KDEpKSxcbiAgICB9LFxuICBdO1xuICByZXR1cm4gaW1wb3J0c09yY2hlc3RyYXRvckZlYXR1cmUoXG4gICAgSW1wb3J0c09yY2hlc3RyYXRvckZlYXR1cmVLaW5kLlJvdXRpbmcsXG4gICAgcHJvdmlkZXJzXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzUm91dGluZ0FjdGl2ZSQoXG4gIHJvdXRlcjogUm91dGVyLFxuICBzdXNwZW5kRm9ySW5pdGlhbE5hdmlnYXRpb246IGJvb2xlYW5cbik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICBjb25zdCBuYXZpZ2F0aW9uQWN0aXZlJCA9IHJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoXG4gICAgICAoZXZlbnQpID0+XG4gICAgICAgIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZFxuICAgICksXG4gICAgbWFwKChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSksXG4gICAgb2JzZXJ2ZU9uKGFzeW5jU2NoZWR1bGVyKSxcbiAgICBzdGFydFdpdGgoc3VzcGVuZEZvckluaXRpYWxOYXZpZ2F0aW9uKVxuICApO1xuXG4gIHJldHVybiBuYXZpZ2F0aW9uQWN0aXZlJC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbn1cbiJdfQ==