{ "version": 3, "sources": ["apps/shop/src/app/core/services/metadata/metadata.service.ts", "apps/shop/src/app/core/services/page/page.service.ts"], "sourcesContent": ["/* eslint-disable */\nimport { Inject, Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\n\nimport { GlobalMetadata } from './metadata.models';\nimport { filter } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable()\nexport class MetadataService {\n // @ts-ignore\n private globalMetadata: GlobalMetadata;\n private isMetadataSet: any;\n\n constructor(\n private router: Router,\n @Inject(DOCUMENT) private document: any,\n private titleService: Title,\n private activatedRoute: ActivatedRoute,\n ) {\n this.isMetadataSet = {};\n\n // Applies the Metadata of the Route and otherwise applies the Global one.\n // The 'setTag' function will always override the current Tags.\n this.router.events\n .pipe(filter((event) => event instanceof NavigationEnd)) // TODO: Change to NavigationEnd when Initialization is finished.\n .subscribe((routeData: any) => {\n let route = this.activatedRoute;\n let hasMetadata = false;\n\n while (route.children.length > 0) {\n // @ts-ignore\n route = route.firstChild;\n\n // @ts-ignore\n if (route.snapshot.routeConfig.data) {\n // @ts-ignore\n const metadata = route.snapshot.routeConfig.data['metadata'];\n\n if (metadata) {\n hasMetadata = true;\n this.updateMetadata(metadata, routeData.url);\n }\n }\n }\n\n if (!hasMetadata) {\n this.updateMetadata(this.globalMetadata.defaults, routeData.url);\n }\n });\n }\n\n /**\n * Set Global Meta Metadata.\n *\n * @param {Metadata} metadata\n *\n * @memberOf MetadataService\n */\n setGlobalMetadata(metadata: GlobalMetadata) {\n this.globalMetadata = metadata;\n }\n\n /**\n * Set Tag.\n * Overwrites the 'Global one'.\n *\n * @param {string} tag\n * @param {string} value\n *\n * @memberOf MetadataService\n */\n setTag(tag: string, value: string): void {\n if (tag === 'title') {\n this.setTitle(value);\n } else {\n value = value\n ? value\n : this.globalMetadata.defaults\n ? this.globalMetadata.defaults[tag]\n : '';\n\n const tagElement = this.getOrCreateMetaTag(tag);\n\n tagElement.setAttribute(\n 'content',\n tag === 'og:locale' ? value.replace(/-/g, '_') : value,\n );\n this.isMetadataSet[tag] = true;\n\n if (tag === 'description') {\n const ogDescriptionElement = this.getOrCreateMetaTag('og:description');\n ogDescriptionElement.setAttribute('content', value);\n } else if (tag === 'author') {\n const ogAuthorElement = this.getOrCreateMetaTag('og:author');\n ogAuthorElement.setAttribute('content', value);\n } else if (tag === 'publisher') {\n const ogPublisherElement = this.getOrCreateMetaTag('og:publisher');\n ogPublisherElement.setAttribute('content', value);\n } else if (tag === 'og:locale') {\n const availableLocales = this.globalMetadata.defaults\n ? this.globalMetadata.defaults['og:locale:alternate']\n : '';\n\n this.updateLocales(value, availableLocales);\n this.isMetadataSet['og:locale:alternate'] = true;\n } else if (tag === 'og:locale:alternate') {\n const ogLocaleElement = this.getOrCreateMetaTag('og:locale');\n const currentLocale = ogLocaleElement.getAttribute('content');\n\n this.updateLocales(currentLocale, value);\n this.isMetadataSet['og:locale'] = true;\n }\n }\n }\n\n // @ts-ignore\n private setTitle(title): void {\n const ogTitleElement = this.getOrCreateMetaTag('og:title');\n\n title =\n title !== undefined\n ? title +\n this.globalMetadata.pageTitleSeparator +\n this.globalMetadata.applicationName\n : this.globalMetadata.applicationName;\n\n if (!title) {\n console.warn('WARNING: No \"page title\" specified.');\n }\n\n ogTitleElement.setAttribute('content', title);\n this.titleService.setTitle(title);\n }\n\n /**\n * Create Meta Tag.\n *\n * @private\n * @param {string} name\n * @returns {*}\n *\n * @memberOf MetadataService\n */\n private createMetaTag(name: string): any {\n const el = this.document.createElement('meta');\n el.setAttribute(\n name.lastIndexOf('og:', 0) === 0 ? 'property' : 'name',\n name,\n );\n this.document.head.appendChild(el);\n\n return el;\n }\n\n /**\n * Get or Create Meta Tag.\n *\n * @private\n * @param {string} name\n * @returns {*}\n *\n * @memberOf MetadataService\n */\n private getOrCreateMetaTag(name: string): any {\n let selector = `meta[name=\"${name}\"]`;\n\n if (name.lastIndexOf('og:', 0) === 0) {\n selector = `meta[property=\"${name}\"]`;\n }\n\n let el = this.document.querySelector(selector);\n\n if (!el) {\n el = this.createMetaTag(name);\n }\n\n return el;\n }\n\n /**\n * Update Locales.\n *\n * @private\n * @param {string} currentLocale\n * @param {*} availableLocales\n *\n * @memberOf MetadataService\n */\n private updateLocales(currentLocale: string, availableLocales: any): void {\n if (!currentLocale) {\n currentLocale = this.globalMetadata.defaults\n ? this.globalMetadata.defaults['og:locale']\n : '';\n }\n\n const html = this.document.querySelector('html');\n html.setAttribute('lang', currentLocale);\n\n const selector = `meta[property=\"og:locale:alternate\"]`;\n let elements = this.document.querySelectorAll(selector);\n\n // fixes \"TypeError: Object doesn't support property or method 'forEach'\" issue on IE11\n elements = Array.prototype.slice.call(elements);\n\n elements.forEach((el: any) => {\n this.document.head.removeChild(el);\n });\n\n if (!!currentLocale && !!availableLocales) {\n availableLocales.split(',').forEach((locale: string) => {\n if (currentLocale !== locale) {\n const el = this.createMetaTag('og:locale:alternate');\n el.setAttribute('content', locale.replace(/-/g, '_'));\n }\n });\n }\n }\n\n /**\n * Update all Metadata with defaults.\n *\n * @private\n * @param {*} metadata\n * @param {string} currentUrl\n * @returns {void}\n *\n * @memberOf MetadataService\n */\n private updateMetadata(metadata: any, currentUrl: string): void {\n if (metadata.disabled) {\n return;\n }\n\n this.setTitle(metadata.title);\n\n Object.keys(metadata).forEach((key) => {\n let value = metadata[key];\n\n if (key === 'title' || key === 'override') {\n return;\n } else if (key === 'og:locale') {\n value = value.replace(/-/g, '_');\n } else if (key === 'og:locale:alternate') {\n const currentLocale = metadata['og:locale'];\n this.updateLocales(currentLocale, metadata[key]);\n\n return;\n }\n\n this.setTag(key, value);\n });\n\n if (this.globalMetadata.defaults) {\n Object.keys(this.globalMetadata.defaults).forEach((key) => {\n // @ts-ignore\n let value = this.globalMetadata.defaults[key];\n\n if (\n key in this.isMetadataSet ||\n key in metadata ||\n key === 'title' ||\n key === 'override'\n ) {\n return;\n } else if (key === 'og:locale') {\n value = value.replace(/-/g, '_');\n } else if (key === 'og:locale:alternate') {\n const currentLocale = metadata['og:locale'];\n // @ts-ignore\n this.updateLocales(currentLocale, this.globalMetadata.defaults[key]);\n\n return;\n }\n\n this.setTag(key, value);\n });\n }\n\n this.setTag(\n 'og:url',\n (this.globalMetadata.applicationUrl || '/') +\n currentUrl.replace(/\\/$/g, ''),\n );\n }\n}\n", "import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { tap } from 'rxjs/operators';\n\nimport { MetadataService } from './../metadata/metadata.service';\n\n@Injectable()\nexport class PageService {\n constructor(\n private http: HttpClient,\n private metadataService: MetadataService,\n ) {}\n\n /**\n * Get the page and set Meta Metadata.\n *\n * @param {string} id\n * @returns\n *\n * @memberOf PageService\n */\n // eslint-disable-next-line\n get(id: string) {\n // eslint-disable-next-line\n return this.http.get('page/' + id).pipe(\n tap((res) => {\n // Set Metadata.\n this.metadataService.setTag('title', res.title);\n // TODO: Description.\n // TODO: Keywords.\n }),\n );\n }\n}\n"], "mappings": "6GAUA,IAAaA,GAAe,IAAA,CAAtB,IAAOA,EAAP,MAAOA,CAAe,CAK1BC,YACUC,EACkBC,EAClBC,EACAC,EAA8B,CAH9B,KAAAH,OAAAA,EACkB,KAAAC,SAAAA,EAClB,KAAAC,aAAAA,EACA,KAAAC,eAAAA,EAER,KAAKC,cAAgB,CAAA,EAIrB,KAAKJ,OAAOK,OACTC,KAAKC,EAAQC,GAAUA,aAAiBC,CAAa,CAAC,EACtDC,UAAWC,GAAkB,CAC5B,IAAIC,EAAQ,KAAKT,eACbU,EAAc,GAElB,KAAOD,EAAME,SAASC,OAAS,GAK7B,GAHAH,EAAQA,EAAMI,WAGVJ,EAAMK,SAASC,YAAYC,KAAM,CAEnC,IAAMC,EAAWR,EAAMK,SAASC,YAAYC,KAAK,SAE7CC,IACFP,EAAc,GACd,KAAKQ,eAAeD,EAAUT,EAAUW,GAAG,GAK5CT,GACH,KAAKQ,eAAe,KAAKE,eAAeC,SAAUb,EAAUW,GAAG,CAEnE,CAAC,CACL,CASAG,kBAAkBL,EAAwB,CACxC,KAAKG,eAAiBH,CACxB,CAWAM,OAAOC,EAAaC,EAAa,CAC/B,GAAID,IAAQ,QACV,KAAKE,SAASD,CAAK,UAEnBA,EAAQA,IAEJ,KAAKL,eAAeC,SAClB,KAAKD,eAAeC,SAASG,CAAG,EAChC,IAEa,KAAKG,mBAAmBH,CAAG,EAEnCI,aACT,UACAJ,IAAQ,YAAcC,EAAMI,QAAQ,KAAM,GAAG,EAAIJ,CAAK,EAExD,KAAKxB,cAAcuB,CAAG,EAAI,GAEtBA,IAAQ,cACmB,KAAKG,mBAAmB,gBAAgB,EAChDC,aAAa,UAAWH,CAAK,UACzCD,IAAQ,SACO,KAAKG,mBAAmB,WAAW,EAC3CC,aAAa,UAAWH,CAAK,UACpCD,IAAQ,YACU,KAAKG,mBAAmB,cAAc,EAC9CC,aAAa,UAAWH,CAAK,UACvCD,IAAQ,YAAa,CAC9B,IAAMM,EAAmB,KAAKV,eAAeC,SACzC,KAAKD,eAAeC,SAAS,qBAAqB,EAClD,GAEJ,KAAKU,cAAcN,EAAOK,CAAgB,EAC1C,KAAK7B,cAAc,qBAAqB,EAAI,WACnCuB,IAAQ,sBAAuB,CAExC,IAAMQ,EADkB,KAAKL,mBAAmB,WAAW,EACrBM,aAAa,SAAS,EAE5D,KAAKF,cAAcC,EAAeP,CAAK,EACvC,KAAKxB,cAAc,WAAW,EAAI,GAGxC,CAGQyB,SAASQ,EAAK,CACpB,IAAMC,EAAiB,KAAKR,mBAAmB,UAAU,EAEzDO,EACEA,IAAUE,OACNF,EACA,KAAKd,eAAeiB,mBACpB,KAAKjB,eAAekB,gBACpB,KAAKlB,eAAekB,gBAErBJ,GACHK,QAAQC,KAAK,qCAAqC,EAGpDL,EAAeP,aAAa,UAAWM,CAAK,EAC5C,KAAKnC,aAAa2B,SAASQ,CAAK,CAClC,CAWQO,cAAcC,EAAY,CAChC,IAAMC,EAAK,KAAK7C,SAAS8C,cAAc,MAAM,EAC7CD,OAAAA,EAAGf,aACDc,EAAKG,YAAY,MAAO,CAAC,IAAM,EAAI,WAAa,OAChDH,CAAI,EAEN,KAAK5C,SAASgD,KAAKC,YAAYJ,CAAE,EAE1BA,CACT,CAWQhB,mBAAmBe,EAAY,CACrC,IAAIM,EAAW,cAAcN,CAAI,KAE7BA,EAAKG,YAAY,MAAO,CAAC,IAAM,IACjCG,EAAW,kBAAkBN,CAAI,MAGnC,IAAIC,EAAK,KAAK7C,SAASmD,cAAcD,CAAQ,EAE7C,OAAKL,IACHA,EAAK,KAAKF,cAAcC,CAAI,GAGvBC,CACT,CAWQZ,cAAcC,EAAuBF,EAAqB,CAC3DE,IACHA,EAAgB,KAAKZ,eAAeC,SAChC,KAAKD,eAAeC,SAAS,WAAW,EACxC,IAGO,KAAKvB,SAASmD,cAAc,MAAM,EAC1CrB,aAAa,OAAQI,CAAa,EAEvC,IAAMgB,EAAW,uCACbE,EAAW,KAAKpD,SAASqD,iBAAiBH,CAAQ,EAGtDE,EAAWE,MAAMC,UAAUC,MAAMC,KAAKL,CAAQ,EAE9CA,EAASM,QAASb,GAAW,CAC3B,KAAK7C,SAASgD,KAAKW,YAAYd,CAAE,CACnC,CAAC,EAEKX,GAAmBF,GACvBA,EAAiB4B,MAAM,GAAG,EAAEF,QAASG,GAAkB,CACjD3B,IAAkB2B,GACT,KAAKlB,cAAc,qBAAqB,EAChDb,aAAa,UAAW+B,EAAO9B,QAAQ,KAAM,GAAG,CAAC,CAExD,CAAC,CAEL,CAYQX,eAAeD,EAAe2C,EAAkB,CAClD3C,EAAS4C,WAIb,KAAKnC,SAAST,EAASiB,KAAK,EAE5B4B,OAAOC,KAAK9C,CAAQ,EAAEuC,QAASQ,GAAO,CACpC,IAAIvC,EAAQR,EAAS+C,CAAG,EAExB,GAAIA,EAAAA,IAAQ,SAAWA,IAAQ,YAExB,IAAIA,IAAQ,YACjBvC,EAAQA,EAAMI,QAAQ,KAAM,GAAG,UACtBmC,IAAQ,sBAAuB,CACxC,IAAMhC,EAAgBf,EAAS,WAAW,EAC1C,KAAKc,cAAcC,EAAef,EAAS+C,CAAG,CAAC,EAE/C,OAGF,KAAKzC,OAAOyC,EAAKvC,CAAK,EACxB,CAAC,EAEG,KAAKL,eAAeC,UACtByC,OAAOC,KAAK,KAAK3C,eAAeC,QAAQ,EAAEmC,QAASQ,GAAO,CAExD,IAAIvC,EAAQ,KAAKL,eAAeC,SAAS2C,CAAG,EAE5C,GACEA,EAAAA,KAAO,KAAK/D,eACZ+D,KAAO/C,GACP+C,IAAQ,SACRA,IAAQ,YAGH,IAAIA,IAAQ,YACjBvC,EAAQA,EAAMI,QAAQ,KAAM,GAAG,UACtBmC,IAAQ,sBAAuB,CACxC,IAAMhC,EAAgBf,EAAS,WAAW,EAE1C,KAAKc,cAAcC,EAAe,KAAKZ,eAAeC,SAAS2C,CAAG,CAAC,EAEnE,OAGF,KAAKzC,OAAOyC,EAAKvC,CAAK,EACxB,CAAC,EAGH,KAAKF,OACH,UACC,KAAKH,eAAe6C,gBAAkB,KACrCL,EAAW/B,QAAQ,OAAQ,EAAE,CAAC,EAEpC,yCAnRWlC,GAAeuE,EAAAC,CAAA,EAAAD,EAOhBE,CAAQ,EAAAF,EAAAG,CAAA,EAAAH,EAAAI,CAAA,CAAA,CAAA,wBAPP3E,EAAe4E,QAAf5E,EAAe6E,SAAA,CAAA,EAAtB,IAAO7E,EAAP8E,SAAO9E,CAAe,GAAA,ECH5B,IAAa+E,GAAW,IAAA,CAAlB,IAAOA,EAAP,MAAOA,CAAW,CACtBC,YACUC,EACAC,EAAgC,CADhC,KAAAD,KAAAA,EACA,KAAAC,gBAAAA,CACP,CAWHC,IAAIC,EAAU,CAEZ,OAAO,KAAKH,KAAKE,IAAS,QAAUC,CAAE,EAAEC,KACtCC,EAAKC,GAAO,CAEV,KAAKL,gBAAgBM,OAAO,QAASD,EAAIE,KAAK,CAGhD,CAAC,CAAC,CAEN,yCAzBWV,GAAWW,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,wBAAXb,EAAWc,QAAXd,EAAWe,SAAA,CAAA,EAAlB,IAAOf,EAAPgB,SAAOhB,CAAW,GAAA", "names": ["MetadataService", "constructor", "router", "document", "titleService", "activatedRoute", "isMetadataSet", "events", "pipe", "filter", "event", "NavigationEnd", "subscribe", "routeData", "route", "hasMetadata", "children", "length", "firstChild", "snapshot", "routeConfig", "data", "metadata", "updateMetadata", "url", "globalMetadata", "defaults", "setGlobalMetadata", "setTag", "tag", "value", "setTitle", "getOrCreateMetaTag", "setAttribute", "replace", "availableLocales", "updateLocales", "currentLocale", "getAttribute", "title", "ogTitleElement", "undefined", "pageTitleSeparator", "applicationName", "console", "warn", "createMetaTag", "name", "el", "createElement", "lastIndexOf", "head", "appendChild", "selector", "querySelector", "elements", "querySelectorAll", "Array", "prototype", "slice", "call", "forEach", "removeChild", "split", "locale", "currentUrl", "disabled", "Object", "keys", "key", "applicationUrl", "\u0275\u0275inject", "Router", "DOCUMENT", "Title", "ActivatedRoute", "factory", "\u0275fac", "_MetadataService", "PageService", "constructor", "http", "metadataService", "get", "id", "pipe", "tap", "res", "setTag", "title", "\u0275\u0275inject", "HttpClient", "MetadataService", "factory", "\u0275fac", "_PageService"] }