UNPKG

@hsaadawy/ngx-chat

Version:
45 lines 6.33 kB
import { PlatformLocation } from '@angular/common'; import { Component, Inject, InjectionToken, Optional } from '@angular/core'; import { Router } from '@angular/router'; /** * You can provide your own implementation for {@link LinkOpener} to override link opening e.g. when using Cordova. */ export const LINK_OPENER_TOKEN = new InjectionToken('ngxChatLinkOpener'); export class ChatMessageLinkComponent { constructor(router, platformLocation, linkOpener) { this.router = router; this.platformLocation = platformLocation; this.linkOpener = linkOpener; } onClick($event) { if (this.linkOpener) { $event.preventDefault(); this.linkOpener.openLink(this.link); } else if (this.isInApp()) { $event.preventDefault(); const linkParser = document.createElement('a'); linkParser.href = this.link; this.router.navigateByUrl(linkParser.pathname); } } isInApp() { return this.link.startsWith(this.appUrl()); } appUrl() { return window.location.protocol + '//' + window.location.host + this.platformLocation.getBaseHrefFromDOM(); } } ChatMessageLinkComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-chat-message-link', template: "<a *ngIf=\"link && !link.includes('mp3') &&\r\n !link.includes('svg') &&\r\n !link.includes('mp4') &&\r\n !link.includes('ogg') &&\r\n !link.includes('png') &&\r\n !link.includes('MOV') &&\r\n !link.includes('WMV') &&\r\n !link.includes('AVI') &&\r\n !link.includes('AVCHD') &&\r\n !link.includes('FLV') &&\r\n !link.includes('F4V') &&\r\n !link.includes('SWF') &&\r\n !link.includes('MKV') &&\r\n !link.includes('jpg')\" href=\"{{link}}\" target=\"_blank\" rel=\"noopener\" (click)=\"onClick($event)\">{{text}}</a>\r\n", styles: ["a{color:#198cff;cursor:pointer}a:visited{color:#9a46e8}\n"] },] } ]; ChatMessageLinkComponent.ctorParameters = () => [ { type: Router }, { type: PlatformLocation }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [LINK_OPENER_TOKEN,] }] } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1tZXNzYWdlLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcGF6em5ldHdvcmsvbmd4LWNoYXQvc3JjL2xpYi9jb21wb25lbnRzL2NoYXQtbWVzc2FnZS1saW5rL2NoYXQtbWVzc2FnZS1saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU16Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFhLG1CQUFtQixDQUFDLENBQUM7QUFPckYsTUFBTSxPQUFPLHdCQUF3QjtJQUtqQyxZQUFvQixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ0ssVUFBc0I7UUFGN0QsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDSyxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUksQ0FBQztJQUV0RixPQUFPLENBQUMsTUFBYTtRQUNqQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9DLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEQ7SUFDTCxDQUFDO0lBRU8sT0FBTztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLE1BQU07UUFDVixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUMvRyxDQUFDOzs7WUFoQ0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSx1QkFBdUI7Z0JBQ2pDLG1oQkFBaUQ7O2FBRXBEOzs7WUFmUSxNQUFNO1lBRk4sZ0JBQWdCOzRDQXlCUixRQUFRLFlBQUksTUFBTSxTQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExpbmtPcGVuZXIge1xyXG4gICAgb3BlbkxpbmsodXJsOiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcblxyXG4vKipcclxuICogWW91IGNhbiBwcm92aWRlIHlvdXIgb3duIGltcGxlbWVudGF0aW9uIGZvciB7QGxpbmsgTGlua09wZW5lcn0gdG8gb3ZlcnJpZGUgbGluayBvcGVuaW5nIGUuZy4gd2hlbiB1c2luZyBDb3Jkb3ZhLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IExJTktfT1BFTkVSX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPExpbmtPcGVuZXI+KCduZ3hDaGF0TGlua09wZW5lcicpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25neC1jaGF0LW1lc3NhZ2UtbGluaycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hhdC1tZXNzYWdlLWxpbmsuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY2hhdC1tZXNzYWdlLWxpbmsuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhdE1lc3NhZ2VMaW5rQ29tcG9uZW50IHtcclxuXHJcbiAgICBsaW5rOiBzdHJpbmc7XHJcbiAgICB0ZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbixcclxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTElOS19PUEVORVJfVE9LRU4pIHByaXZhdGUgbGlua09wZW5lcjogTGlua09wZW5lcikgeyB9XHJcblxyXG4gICAgb25DbGljaygkZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubGlua09wZW5lcikge1xyXG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgdGhpcy5saW5rT3BlbmVyLm9wZW5MaW5rKHRoaXMubGluayk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSW5BcHAoKSkge1xyXG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgbGlua1BhcnNlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgbGlua1BhcnNlci5ocmVmID0gdGhpcy5saW5rO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGxpbmtQYXJzZXIucGF0aG5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzSW5BcHAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGluay5zdGFydHNXaXRoKHRoaXMuYXBwVXJsKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXBwVXJsKCkge1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB0aGlzLnBsYXRmb3JtTG9jYXRpb24uZ2V0QmFzZUhyZWZGcm9tRE9NKCk7XHJcbiAgICB9XHJcbn1cclxuIl19