UNPKG

ngx-metafrenzy

Version:

Angular 13 module for setting head tags such as title, meta, and link.

81 lines 11.9 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "./metafrenzy.service"; export class MetafrenzyGuard { constructor(metafrenzyService) { this.metafrenzyService = metafrenzyService; } canActivate(next, state) { const metaTags = (next && next.data && next.data.metafrenzy) ? next.data.metafrenzy : null; if (metaTags) { for (const key in metaTags) { if (!metaTags.hasOwnProperty(key)) { continue; } const value = metaTags[key]; if (key === 'title') { this.metafrenzyService.setTitle(value); } else if (key === 'tags') { value.forEach((tag) => { if ('name' in tag && 'content' in tag) { this.metafrenzyService.setMetaTag(tag.name, tag.content); } }); } else if (key === 'links') { value.forEach((link) => { this.metafrenzyService.setLinkTag(link); }); } } } return true; } canActivateChild(next, state) { return this.canActivate(next, state); } canDeactivate(compontent, current) { const metaTags = (current && current.data && current.data.metafrenzy) ? current.data.metafrenzy : null; if (metaTags) { for (const key in metaTags) { if (!metaTags.hasOwnProperty(key)) { continue; } const value = metaTags[key]; if (key === 'title') { this.metafrenzyService.setTitle(''); } else if (key === 'tags') { value.forEach((tag) => { if ('name' in tag && 'content' in tag) { this.metafrenzyService.removeMetaTag(`name="${tag.name}"`); } }); } else if (key === 'links') { value.forEach((link) => { this.metafrenzyService.removeLinkTags(el => { if ((el.getAttribute('name') !== null && el.getAttribute('name') === link.name) || (el.getAttribute('rel') !== null && el.getAttribute('rel') === link.rel && link.rel !== 'stylesheet' && link.rel !== 'alternate')) { return true; } return false; }); }); } } } return true; } } MetafrenzyGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: MetafrenzyGuard, deps: [{ token: i1.MetafrenzyService }], target: i0.ɵɵFactoryTarget.Injectable }); MetafrenzyGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: MetafrenzyGuard }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: MetafrenzyGuard, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.MetafrenzyService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWZyZW56eS5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbWV0YWZyZW56eS9tZXRhZnJlbnp5Lmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8zQyxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUE2QixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFckUsV0FBVyxDQUNQLElBQTRCLEVBQzVCLEtBQTBCO1FBRTFCLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUzRixJQUFJLFFBQVEsRUFBRTtZQUNWLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFO2dCQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDL0IsU0FBUztpQkFDWjtnQkFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRTVCLElBQUksR0FBRyxLQUFLLE9BQU8sRUFBRTtvQkFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDMUM7cUJBQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO29CQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ3ZCLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxTQUFTLElBQUksR0FBRyxFQUFFOzRCQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUM1RDtvQkFDTCxDQUFDLENBQUMsQ0FBQztpQkFDTjtxQkFBTSxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7b0JBQ3hCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUU7d0JBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVDLENBQUMsQ0FBQyxDQUFDO2lCQUNOO2FBQ0o7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxnQkFBZ0IsQ0FDWixJQUE0QixFQUM1QixLQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxhQUFhLENBQ1QsVUFBYSxFQUNiLE9BQStCO1FBRS9CLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV2RyxJQUFJLFFBQVEsRUFBRTtZQUNWLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFO2dCQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDL0IsU0FBUztpQkFDWjtnQkFFRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRTVCLElBQUksR0FBRyxLQUFLLE9BQU8sRUFBRTtvQkFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDdkM7cUJBQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFO29CQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7d0JBQ3ZCLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxTQUFTLElBQUksR0FBRyxFQUFFOzRCQUNuQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7eUJBQzlEO29CQUNMLENBQUMsQ0FBQyxDQUFDO2lCQUNOO3FCQUFNLElBQUksR0FBRyxLQUFLLE9BQU8sRUFBRTtvQkFDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQW9CLEVBQUUsRUFBRTt3QkFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTs0QkFDdkMsSUFDSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSTtnQ0FDN0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO2dDQUMxQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSTtvQ0FDNUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRztvQ0FDbkMsSUFBSSxDQUFDLEdBQUcsS0FBSyxZQUFZO29DQUN6QixJQUFJLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxFQUMvQjtnQ0FDQSxPQUFPLElBQUksQ0FBQzs2QkFDYjs0QkFFRCxPQUFPLEtBQUssQ0FBQzt3QkFDakIsQ0FBQyxDQUFDLENBQUM7b0JBQ1AsQ0FBQyxDQUFDLENBQUM7aUJBQ047YUFDSjtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7NEdBdkZRLGVBQWU7Z0hBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUsIENhbkFjdGl2YXRlQ2hpbGQsIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBNZXRhZnJlbnp5U2VydmljZSwgTGlua0RlZmluaXRpb24gfSBmcm9tICcuL21ldGFmcmVuenkuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZXRhZnJlbnp5R3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSwgQ2FuQWN0aXZhdGVDaGlsZCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtZXRhZnJlbnp5U2VydmljZTogTWV0YWZyZW56eVNlcnZpY2UpIHt9XG5cbiAgICBjYW5BY3RpdmF0ZShcbiAgICAgICAgbmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xuXG4gICAgICAgIGNvbnN0IG1ldGFUYWdzID0gKG5leHQgJiYgbmV4dC5kYXRhICYmIG5leHQuZGF0YS5tZXRhZnJlbnp5KSA/IG5leHQuZGF0YS5tZXRhZnJlbnp5IDogbnVsbDtcblxuICAgICAgICBpZiAobWV0YVRhZ3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1ldGFUYWdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtZXRhVGFncy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbWV0YVRhZ3Nba2V5XTtcblxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICd0aXRsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXRhZnJlbnp5U2VydmljZS5zZXRUaXRsZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICd0YWdzJykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCduYW1lJyBpbiB0YWcgJiYgJ2NvbnRlbnQnIGluIHRhZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWV0YWZyZW56eVNlcnZpY2Uuc2V0TWV0YVRhZyh0YWcubmFtZSwgdGFnLmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2xpbmtzJykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChsaW5rOiBMaW5rRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXRhZnJlbnp5U2VydmljZS5zZXRMaW5rVGFnKGxpbmspO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjYW5BY3RpdmF0ZUNoaWxkKFxuICAgICAgICBuZXh0OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgICAgICBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUobmV4dCwgc3RhdGUpO1xuICAgIH1cblxuICAgIGNhbkRlYWN0aXZhdGU8VD4oXG4gICAgICAgIGNvbXBvbnRlbnQ6IFQsXG4gICAgICAgIGN1cnJlbnQ6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuPiB8IGJvb2xlYW4ge1xuXG4gICAgICAgIGNvbnN0IG1ldGFUYWdzID0gKGN1cnJlbnQgJiYgY3VycmVudC5kYXRhICYmIGN1cnJlbnQuZGF0YS5tZXRhZnJlbnp5KSA/IGN1cnJlbnQuZGF0YS5tZXRhZnJlbnp5IDogbnVsbDtcblxuICAgICAgICBpZiAobWV0YVRhZ3MpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1ldGFUYWdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtZXRhVGFncy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbWV0YVRhZ3Nba2V5XTtcblxuICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICd0aXRsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tZXRhZnJlbnp5U2VydmljZS5zZXRUaXRsZSgnJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICd0YWdzJykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCduYW1lJyBpbiB0YWcgJiYgJ2NvbnRlbnQnIGluIHRhZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWV0YWZyZW56eVNlcnZpY2UucmVtb3ZlTWV0YVRhZyhgbmFtZT1cIiR7dGFnLm5hbWV9XCJgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdsaW5rcycpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUuZm9yRWFjaCgobGluazogTGlua0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWV0YWZyZW56eVNlcnZpY2UucmVtb3ZlTGlua1RhZ3MoZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVsLmdldEF0dHJpYnV0ZSgnbmFtZScpICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSA9PT0gbGluay5uYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWwuZ2V0QXR0cmlidXRlKCdyZWwnKSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuZ2V0QXR0cmlidXRlKCdyZWwnKSA9PT0gbGluay5yZWwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsucmVsICE9PSAnc3R5bGVzaGVldCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsucmVsICE9PSAnYWx0ZXJuYXRlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iXX0=