{"version":3,"file":"src_app_shared_content-helper_content-helper_module_ts-_37410.js","mappings":"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","sources":["./src/app/shared/content-helper/content-helper.module.ts","./src/app/shared/content-helper/content-linkify.directive.ts","./src/app/shared/helpers/link.helper.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ContentLinkifyDirective } from './content-linkify.directive';\r\n\r\nconst components = [ContentLinkifyDirective];\r\n\r\n@NgModule({\r\n declarations: components,\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n ...components\r\n ]\r\n})\r\nexport class ContentHelperModule { }\r\n","import { Directive, ElementRef, HostListener, Input, HostBinding, Renderer2, SecurityContext } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UrlType } from 'src/app/shared/enum/url-type';\r\nimport { LinkHelper } from '../helpers/link.helper';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nconst isMediaRegexp = /(\\.(pdf|png|jpg|jpeg|svg))$/i;\r\n\r\n@Directive({\r\n selector: '[contentLinkify]'\r\n})\r\nexport class ContentLinkifyDirective {\r\n @Input('contentLinkify') set content(content: string) {\r\n const contentSanitized = this._domSanitizer.sanitize(SecurityContext.HTML, content);\r\n this.renderer.setProperty(this.el.nativeElement, 'innerHTML', contentSanitized);\r\n\r\n this.setCorrectTypes(this.el.nativeElement);\r\n }\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private router: Router,\r\n private renderer: Renderer2,\r\n private _domSanitizer: DomSanitizer) {\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(event) {\r\n if (event.target.tagName !== 'A') return;\r\n\r\n const urlType = this.getType(event.target);\r\n if (urlType === UrlType.Node) {\r\n const route = LinkHelper.normalizeUrl(event.target.getAttribute('href'));\r\n this.router.navigate([route]);\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n private setCorrectTypes(nativeElement) {\r\n const links = nativeElement.querySelectorAll('a');\r\n\r\n if (links && links.length) {\r\n Array.from(links)\r\n .forEach((link : HTMLAnchorElement) => {\r\n this.setType(link);\r\n })\r\n }\r\n }\r\n\r\n private getType(element: HTMLElement): UrlType {\r\n const type = element.getAttribute('type');\r\n return type ? parseInt(type) : null;\r\n }\r\n\r\n private setType(link: HTMLAnchorElement){\r\n if(this.isExternal(link)){\r\n link.setAttribute('type', UrlType.External.toString());\r\n link.classList.add('link--external');\r\n }else if(this.isMedia(link)){\r\n link.setAttribute('type', UrlType.Media.toString());\r\n }\r\n else{\r\n link.setAttribute('type', UrlType.Node.toString());\r\n }\r\n }\r\n\r\n private isExternal(link: HTMLAnchorElement){\r\n return link.hostname != location.hostname;\r\n }\r\n\r\n private isMedia(link: HTMLAnchorElement){\r\n\r\n return link.href.match(isMediaRegexp)\r\n }\r\n\r\n}\r\n","import { IUProperty } from '../interface/umbraco-property';\r\nimport { IButtonData } from '../components/button/button.component';\r\n\r\ninterface LinkProperty{\r\n name: string,\r\n url: string,\r\n target?: string;\r\n}\r\n\r\nexport class LinkHelper {\r\n static mapLink(link: IUProperty): IButtonData {\r\n if (!(link && link.value)) return;\r\n\r\n let linkData = Object.assign({}, link.value);\r\n\r\n if (linkData.name === linkData.url) {\r\n linkData.name = '';\r\n }\r\n\r\n return linkData;\r\n }\r\n\r\n static normalizeUrl(url?: string): string {\r\n if (!url) return url;\r\n let newUrl = url.replace('/?', '?');\r\n if (newUrl.lastIndexOf('/') === newUrl.length - 1) {\r\n newUrl = newUrl.slice(0, -1);\r\n }\r\n return newUrl;\r\n }\r\n}\r\n"],"names":["CommonModule","ContentLinkifyDirective","components","ContentHelperModule","_","_2","_3","declarations","imports","exports","SecurityContext","UrlType","LinkHelper","isMediaRegexp","content","contentSanitized","_domSanitizer","sanitize","HTML","renderer","setProperty","el","nativeElement","setCorrectTypes","constructor","router","onClick","event","target","tagName","urlType","getType","Node","route","normalizeUrl","getAttribute","navigate","preventDefault","links","querySelectorAll","length","Array","from","forEach","link","setType","element","type","parseInt","isExternal","setAttribute","External","toString","classList","add","isMedia","Media","hostname","location","href","match","i0","ɵɵdirectiveInject","ElementRef","i1","Router","Renderer2","i2","DomSanitizer","selectors","hostBindings","ContentLinkifyDirective_HostBindings","rf","ctx","ɵɵlistener","ContentLinkifyDirective_click_HostBindingHandler","$event","mapLink","value","linkData","Object","assign","name","url","newUrl","replace","lastIndexOf","slice"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}