UNPKG

@js-sugar/angular

Version:

JS-Sugar core package (Angular)

70 lines 10.2 kB
import { CommonModule } from '@angular/common'; import { Inject, NgModule } from '@angular/core'; import { RouterUtilsConfigurationToken } from './types'; import * as i0 from "@angular/core"; import * as i1 from "./router-service"; import * as i2 from "@angular/platform-browser"; export class RouterUtilsModule { constructor(configs, routerService, titleService, metaService) { this.configs = configs; this.routerService = routerService; this.titleService = titleService; this.metaService = metaService; const doc = configs.document; this.setTitle = doc?.setTitle || true; this.setDescription = doc?.setDescription || true; this.setKeywords = doc?.setKeywords || true; if (this.setTitle || this.setDescription || this.setKeywords) { routerService.navigation.subscribe(e => this.onNavigation(e)); } } static forRoot(configuration) { return { ngModule: RouterUtilsModule, providers: [ { provide: RouterUtilsConfigurationToken, useValue: configuration } ] }; } onNavigation(e) { const path = e.pathFromRoot; const last = path[path.length - 1]; if (this.setTitle) { const title = typeof this.setTitle === 'function' ? this.setTitle(e) : last.data.resolvedTitle; this.titleService.setTitle(title || ''); } if (this.setDescription) { const description = typeof this.setDescription === 'function' ? this.setDescription(e) : last.data.resolvedDescription; if (description) { this.metaService.updateTag({ name: 'description', content: description }); } else { this.metaService.removeTag('name=description'); } } if (this.setDescription) { const keywords = typeof this.setDescription === 'function' ? this.setDescription(e) : last.data.resolvedKeywords; if (keywords) { this.metaService.updateTag({ name: 'keywords', content: keywords }); } else { this.metaService.removeTag('name=keywords'); } } } } RouterUtilsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: RouterUtilsModule, deps: [{ token: RouterUtilsConfigurationToken }, { token: i1.RouterService }, { token: i2.Title }, { token: i2.Meta }], target: i0.ɵɵFactoryTarget.NgModule }); RouterUtilsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.1", ngImport: i0, type: RouterUtilsModule, imports: [CommonModule] }); RouterUtilsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: RouterUtilsModule, imports: [CommonModule] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: RouterUtilsModule, decorators: [{ type: NgModule, args: [{ imports: [ CommonModule, ], }] }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Inject, args: [RouterUtilsConfigurationToken] }] }, { type: i1.RouterService }, { type: i2.Title }, { type: i2.Meta }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLXV0aWxzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9yb3V0aW5nL3JvdXRlci11dGlscy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd0RSxPQUFPLEVBQW1ELDZCQUE2QixFQUFFLE1BQU0sU0FBUyxDQUFDOzs7O0FBT3pHLE1BQU0sT0FBTyxpQkFBaUI7SUFjNUIsWUFDaUQsT0FBaUMsRUFDeEUsYUFBNEIsRUFDNUIsWUFBbUIsRUFDbkIsV0FBaUI7UUFIc0IsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDeEUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQU87UUFDbkIsZ0JBQVcsR0FBWCxXQUFXLENBQU07UUFFekIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQztRQUU1QyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQzVELGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQXZCRCxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQXVDO1FBQ3BELE9BQU87WUFDTCxRQUFRLEVBQUUsaUJBQWlCO1lBQzNCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO2FBQ3BFO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFrQk8sWUFBWSxDQUFDLENBQXdCO1FBQzNDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbkMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE1BQU0sS0FBSyxHQUFHLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQy9GLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6QztRQUVELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixNQUFNLFdBQVcsR0FBRyxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQ3ZILElBQUksV0FBVyxFQUFFO2dCQUNmLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQzthQUMzRTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ2hEO1NBQ0Y7UUFFRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsTUFBTSxRQUFRLEdBQUcsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNqSCxJQUFJLFFBQVEsRUFBRTtnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDckU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDN0M7U0FDRjtJQUNILENBQUM7OzhHQXhEVSxpQkFBaUIsa0JBZWxCLDZCQUE2QjsrR0FmNUIsaUJBQWlCLFlBSDFCLFlBQVk7K0dBR0gsaUJBQWlCLFlBSDFCLFlBQVk7MkZBR0gsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3FCQUNiO2lCQUNGOzswQkFnQkksTUFBTTsyQkFBQyw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3QsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1ldGEsIFRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFJvdXRlclNlcnZpY2UgfSBmcm9tICcuL3JvdXRlci1zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyTmF2aWdhdGlvbkV2ZW50LCBSb3V0ZXJVdGlsc0NvbmZpZ3VyYXRpb24sIFJvdXRlclV0aWxzQ29uZmlndXJhdGlvblRva2VuIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUm91dGVyVXRpbHNNb2R1bGUge1xyXG4gIHNldFRpdGxlOiBib29sZWFuIHwgKChlOiBSb3V0ZXJOYXZpZ2F0aW9uRXZlbnQpID0+IHN0cmluZyk7XHJcbiAgc2V0RGVzY3JpcHRpb246IGJvb2xlYW4gfCAoKGU6IFJvdXRlck5hdmlnYXRpb25FdmVudCkgPT4gc3RyaW5nKTtcclxuICBzZXRLZXl3b3JkczogYm9vbGVhbiB8ICgoZTogUm91dGVyTmF2aWdhdGlvbkV2ZW50KSA9PiBzdHJpbmcpO1xyXG5cclxuICBzdGF0aWMgZm9yUm9vdChjb25maWd1cmF0aW9uOiBSb3V0ZXJVdGlsc0NvbmZpZ3VyYXRpb24pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJvdXRlclV0aWxzTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogUm91dGVyVXRpbHNNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogUm91dGVyVXRpbHNDb25maWd1cmF0aW9uVG9rZW4sIHVzZVZhbHVlOiBjb25maWd1cmF0aW9uIH1cclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChSb3V0ZXJVdGlsc0NvbmZpZ3VyYXRpb25Ub2tlbikgcHJpdmF0ZSBjb25maWdzOiBSb3V0ZXJVdGlsc0NvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogVGl0bGUsXHJcbiAgICBwcml2YXRlIG1ldGFTZXJ2aWNlOiBNZXRhKSB7XHJcblxyXG4gICAgY29uc3QgZG9jID0gY29uZmlncy5kb2N1bWVudDtcclxuICAgIHRoaXMuc2V0VGl0bGUgPSBkb2M/LnNldFRpdGxlIHx8IHRydWU7XHJcbiAgICB0aGlzLnNldERlc2NyaXB0aW9uID0gZG9jPy5zZXREZXNjcmlwdGlvbiB8fCB0cnVlO1xyXG4gICAgdGhpcy5zZXRLZXl3b3JkcyA9IGRvYz8uc2V0S2V5d29yZHMgfHwgdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5zZXRUaXRsZSB8fCB0aGlzLnNldERlc2NyaXB0aW9uIHx8IHRoaXMuc2V0S2V5d29yZHMpIHtcclxuICAgICAgcm91dGVyU2VydmljZS5uYXZpZ2F0aW9uLnN1YnNjcmliZShlID0+IHRoaXMub25OYXZpZ2F0aW9uKGUpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25OYXZpZ2F0aW9uKGU6IFJvdXRlck5hdmlnYXRpb25FdmVudCkge1xyXG4gICAgY29uc3QgcGF0aCA9IGUucGF0aEZyb21Sb290O1xyXG4gICAgY29uc3QgbGFzdCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuXHJcbiAgICBpZiAodGhpcy5zZXRUaXRsZSkge1xyXG4gICAgICBjb25zdCB0aXRsZSA9IHR5cGVvZiB0aGlzLnNldFRpdGxlID09PSAnZnVuY3Rpb24nID8gdGhpcy5zZXRUaXRsZShlKSA6IGxhc3QuZGF0YS5yZXNvbHZlZFRpdGxlO1xyXG4gICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZSh0aXRsZSB8fCAnJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2V0RGVzY3JpcHRpb24pIHtcclxuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSB0eXBlb2YgdGhpcy5zZXREZXNjcmlwdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuc2V0RGVzY3JpcHRpb24oZSkgOiBsYXN0LmRhdGEucmVzb2x2ZWREZXNjcmlwdGlvbjtcclxuICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBuYW1lOiAnZGVzY3JpcHRpb24nLCBjb250ZW50OiBkZXNjcmlwdGlvbiB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnJlbW92ZVRhZygnbmFtZT1kZXNjcmlwdGlvbicpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2V0RGVzY3JpcHRpb24pIHtcclxuICAgICAgY29uc3Qga2V5d29yZHMgPSB0eXBlb2YgdGhpcy5zZXREZXNjcmlwdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuc2V0RGVzY3JpcHRpb24oZSkgOiBsYXN0LmRhdGEucmVzb2x2ZWRLZXl3b3JkcztcclxuICAgICAgaWYgKGtleXdvcmRzKSB7XHJcbiAgICAgICAgdGhpcy5tZXRhU2VydmljZS51cGRhdGVUYWcoeyBuYW1lOiAna2V5d29yZHMnLCBjb250ZW50OiBrZXl3b3JkcyB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1ldGFTZXJ2aWNlLnJlbW92ZVRhZygnbmFtZT1rZXl3b3JkcycpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==