@lifeintelligencegroup/ngx-lig-ari
Version:
Life Intelligence Group Artificial Intelligence
62 lines • 7.62 kB
JavaScript
import { Pipe } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
export class LinkifyPipe {
constructor(domSanitizer) {
this.domSanitizer = domSanitizer;
this.urlsRegex = /(\b(https?|http|ftp|ftps|Https|rtsp|Rtsp):\/\/[A-Z0-9+&@#\/%?=~_|!:,.;-]*[-A-Z0-9+&@#\/%=~_|])/gim;
// tslint:disable-next-line:only-arrow-functions
document.onclick = function (e) {
e = e || window.event;
const element = e.target || e.srcElement;
// making sure there's an URL
if (element.tagName === 'A' &&
element.href &&
element.dataset.id === 'ari-link') {
// opening in a new window
window.open(element.href, '_blank', 'location=yes noopener noreferrer');
return false;
}
};
}
transform(value, args) {
return this.domSanitizer.bypassSecurityTrustHtml(this.stylize(value));
}
stylize(text) {
if (text && text.length > 0) {
if (text.match(this.urlsRegex)) {
text = text.replace(this.urlsRegex, function replacer($1, $2, $3) {
const url = $1;
const urlClean = url.replace('' + $3 + '://', '');
// const value =
// '<a href="javascript: void(0);" onclick="window.open(' +
// `'${url}'` +
// '),"_blank", "location=yes");return false;">' +
// urlClean +
// '</a>';
const value = '<a href="' + url + '" data-id="ari-link">' + urlClean + '</a>';
return value;
});
return text;
}
else {
return text;
}
}
else {
return text;
}
}
openLink(link) {
window.open(link, '_blank', 'noopener noreferrer');
}
}
LinkifyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: LinkifyPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
LinkifyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: LinkifyPipe, name: "linkify" });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.4", ngImport: i0, type: LinkifyPipe, decorators: [{
type: Pipe,
args: [{
name: 'linkify',
}]
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2lmeS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpZy1hcmkvc3JjL2xpYi9waXBlcy9saW5raWZ5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQVVwRCxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWtCOUMsY0FBUyxHQUFRLG1HQUFtRyxDQUFDO1FBakJuSCxnREFBZ0Q7UUFDaEQsUUFBUSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7WUFDNUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ3RCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQztZQUN6Qyw2QkFBNkI7WUFDN0IsSUFDRSxPQUFPLENBQUMsT0FBTyxLQUFLLEdBQUc7Z0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJO2dCQUNaLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFDakM7Z0JBQ0EsMEJBQTBCO2dCQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxDQUFDLENBQUM7Z0JBQ3hFLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0lBR0QsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFVO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLE9BQU8sQ0FBQyxJQUFZO1FBQzFCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQzlCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO29CQUM5RCxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sUUFBUSxHQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3ZELGdCQUFnQjtvQkFDaEIsNkRBQTZEO29CQUM3RCxpQkFBaUI7b0JBQ2pCLG9EQUFvRDtvQkFDcEQsZUFBZTtvQkFDZixZQUFZO29CQUNaLE1BQU0sS0FBSyxHQUNULFdBQVcsR0FBRyxHQUFHLEdBQUcsdUJBQXVCLEdBQUcsUUFBUSxHQUFHLE1BQU0sQ0FBQztvQkFDbEUsT0FBTyxLQUFLLENBQUM7Z0JBQ2YsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQUk7UUFDWCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUNyRCxDQUFDOzt3R0FuRFUsV0FBVztzR0FBWCxXQUFXOzJGQUFYLFdBQVc7a0JBSHZCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFNBQVM7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IGFueTtcbmRlY2xhcmUgY29uc3QgZG9jdW1lbnQ6IGFueTtcblxuQFBpcGUoe1xuICBuYW1lOiAnbGlua2lmeScsXG59KVxuZXhwb3J0IGNsYXNzIExpbmtpZnlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9tU2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6b25seS1hcnJvdy1mdW5jdGlvbnNcbiAgICBkb2N1bWVudC5vbmNsaWNrID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQ7XG4gICAgICAvLyBtYWtpbmcgc3VyZSB0aGVyZSdzIGFuIFVSTFxuICAgICAgaWYgKFxuICAgICAgICBlbGVtZW50LnRhZ05hbWUgPT09ICdBJyAmJlxuICAgICAgICBlbGVtZW50LmhyZWYgJiZcbiAgICAgICAgZWxlbWVudC5kYXRhc2V0LmlkID09PSAnYXJpLWxpbmsnXG4gICAgICApIHtcbiAgICAgICAgLy8gb3BlbmluZyBpbiBhIG5ldyB3aW5kb3dcbiAgICAgICAgd2luZG93Lm9wZW4oZWxlbWVudC5ocmVmLCAnX2JsYW5rJywgJ2xvY2F0aW9uPXllcyBub29wZW5lciBub3JlZmVycmVyJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdXJsc1JlZ2V4OiBhbnkgPSAvKFxcYihodHRwcz98aHR0cHxmdHB8ZnRwc3xIdHRwc3xydHNwfFJ0c3ApOlxcL1xcL1tBLVowLTkrJkAjXFwvJT89fl98ITosLjstXSpbLUEtWjAtOSsmQCNcXC8lPX5ffF0pL2dpbTtcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZ3M/OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLnN0eWxpemUodmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3R5bGl6ZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0ZXh0ICYmIHRleHQubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRleHQubWF0Y2godGhpcy51cmxzUmVnZXgpKSB7XG4gICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UodGhpcy51cmxzUmVnZXgsIGZ1bmN0aW9uIHJlcGxhY2VyKCQxLCAkMiwgJDMpIHtcbiAgICAgICAgICBjb25zdCB1cmw6IGFueSA9ICQxO1xuICAgICAgICAgIGNvbnN0IHVybENsZWFuOiBhbnkgPSB1cmwucmVwbGFjZSgnJyArICQzICsgJzovLycsICcnKTtcbiAgICAgICAgICAvLyBjb25zdCB2YWx1ZSA9XG4gICAgICAgICAgLy8gICAnPGEgaHJlZj1cImphdmFzY3JpcHQ6IHZvaWQoMCk7XCIgb25jbGljaz1cIndpbmRvdy5vcGVuKCcgK1xuICAgICAgICAgIC8vICAgYCcke3VybH0nYCArXG4gICAgICAgICAgLy8gICAnKSxcIl9ibGFua1wiLCBcImxvY2F0aW9uPXllc1wiKTtyZXR1cm4gZmFsc2U7XCI+JyArXG4gICAgICAgICAgLy8gICB1cmxDbGVhbiArXG4gICAgICAgICAgLy8gICAnPC9hPic7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPVxuICAgICAgICAgICAgJzxhIGhyZWY9XCInICsgdXJsICsgJ1wiIGRhdGEtaWQ9XCJhcmktbGlua1wiPicgKyB1cmxDbGVhbiArICc8L2E+JztcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gIH1cblxuICBvcGVuTGluayhsaW5rKSB7XG4gICAgd2luZG93Lm9wZW4obGluaywgJ19ibGFuaycsICdub29wZW5lciBub3JlZmVycmVyJyk7XG4gIH1cbn1cbiJdfQ==