UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

45 lines 5.29 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; export class PageMetaLinkService { constructor(winRef, rendererFactory) { this.winRef = winRef; this.rendererFactory = rendererFactory; } /** * Adds a canonical link element to the document head. * * If an id is provided, the link will be updated. * If no url is provided, the link element will be deleted. */ setCanonicalLink(url) { let link = this.winRef.document.querySelector('link[rel="canonical"]'); if (!url) { // Removing the link is an edge case, but useful if the canonical url // is created in CSR while developing/testing. link === null || link === void 0 ? void 0 : link.remove(); return; } if (!link) { link = this.renderer.createElement('link'); link.rel = 'canonical'; link.href = url; this.renderer.appendChild(this.winRef.document.head, link); } else { link === null || link === void 0 ? void 0 : link.setAttribute('href', url); } } get renderer() { return this.rendererFactory.createRenderer(null, null); } } PageMetaLinkService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: PageMetaLinkService, deps: [{ token: i1.WindowRef }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); PageMetaLinkService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: PageMetaLinkService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: PageMetaLinkService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.WindowRef }, { type: i0.RendererFactory2 }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1tZXRhLWxpbmsuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvY21zLXN0cnVjdHVyZS9zZW8vcGFnZS1tZXRhLWxpbmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUErQixNQUFNLGVBQWUsQ0FBQzs7O0FBTXhFLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFDWSxNQUFpQixFQUNqQixlQUFpQztRQURqQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtJQUMxQyxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBQyxHQUF1QjtRQUN0QyxJQUFJLElBQUksR0FBb0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUM1RCx1QkFBdUIsQ0FDTCxDQUFDO1FBRXJCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixxRUFBcUU7WUFDckUsOENBQThDO1lBQzlDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUM7WUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFRCxJQUFjLFFBQVE7UUFDcEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7Z0hBcENVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VNZXRhTGlua1NlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgd2luUmVmOiBXaW5kb3dSZWYsXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MlxuICApIHt9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjYW5vbmljYWwgbGluayBlbGVtZW50IHRvIHRoZSBkb2N1bWVudCBoZWFkLlxuICAgKlxuICAgKiBJZiBhbiBpZCBpcyBwcm92aWRlZCwgdGhlIGxpbmsgd2lsbCBiZSB1cGRhdGVkLlxuICAgKiBJZiBubyB1cmwgaXMgcHJvdmlkZWQsIHRoZSBsaW5rIGVsZW1lbnQgd2lsbCBiZSBkZWxldGVkLlxuICAgKi9cbiAgc2V0Q2Fub25pY2FsTGluayh1cmw6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGxldCBsaW5rOiBIVE1MTGlua0VsZW1lbnQgPSB0aGlzLndpblJlZi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ2xpbmtbcmVsPVwiY2Fub25pY2FsXCJdJ1xuICAgICkgYXMgSFRNTExpbmtFbGVtZW50O1xuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIC8vIFJlbW92aW5nIHRoZSBsaW5rIGlzIGFuIGVkZ2UgY2FzZSwgYnV0IHVzZWZ1bCBpZiB0aGUgY2Fub25pY2FsIHVybFxuICAgICAgLy8gaXMgY3JlYXRlZCBpbiBDU1Igd2hpbGUgZGV2ZWxvcGluZy90ZXN0aW5nLlxuICAgICAgbGluaz8ucmVtb3ZlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFsaW5rKSB7XG4gICAgICBsaW5rID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XG4gICAgICBsaW5rLnJlbCA9ICdjYW5vbmljYWwnO1xuICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLndpblJlZi5kb2N1bWVudC5oZWFkLCBsaW5rKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGluaz8uc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHJlbmRlcmVyKCk6IFJlbmRlcmVyMiB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICB9XG59XG4iXX0=