gplink
Version:
This is a Angular Library which provide pipe to convert the url, email and mobile number to link format by using linkifyjs.
71 lines • 7.85 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { Pipe } from '@angular/core';
import linkifyStr from 'linkifyjs/string';
export class GplinkPipe {
/**
* @param {?} value
* @param {?=} args
* @return {?}
*/
transform(value, args) {
value = value ? linkifyStr(value, { target: '_system' }) : value;
// this is the default indian number validation regex if user not provide
/** @type {?} */
const indianNumber = '^[\\+]?[(]?[0-9]{3}[)]?[-\\s\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$';
/** @type {?} */
let userRegex = new RegExp(args ? args : indianNumber, 'igm');
if (value.includes("+")) {
//splitting string on + sign to find mobile numbers from that
/** @type {?} */
let inputStringArray = value ? value.split("+") : [];
if (inputStringArray.length > 0) {
/** @type {?} */
let line = "";
for (let i = 0; i < inputStringArray.length; i++) {
line += this.getAnchoredNumber(inputStringArray[i], userRegex, true);
}
value = line;
}
}
else if (value.includes(" ")) {
value = this.getAnchoredNumber(value, userRegex, false);
}
else if (value.match(userRegex)) {
value = "<a href=tel:+" + value + " target='_top'>" + value + "</a>";
}
return value;
}
/**
* @param {?} value
* @param {?} userRegex
* @param {?} isContainPlusSign
* @return {?}
*/
getAnchoredNumber(value, userRegex, isContainPlusSign) {
/** @type {?} */
let inputStringArray = value ? value.split(" ") : [];
if (inputStringArray.length > 0) {
for (let i = 0; i < inputStringArray.length; i++) {
if (inputStringArray[i].match(userRegex)) {
if (isContainPlusSign) {
inputStringArray[i] = "<a href=tel:+" + inputStringArray[i] + " target='_top'>+" + inputStringArray[i] + "</a>";
}
else {
inputStringArray[i] = "<a href=tel:" + inputStringArray[i] + " target='_top'>" + inputStringArray[i] + "</a>";
}
}
}
value = inputStringArray.join(" ");
}
return value;
}
}
GplinkPipe.decorators = [
{ type: Pipe, args: [{
name: 'gplink'
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3BsaW5rLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9ncGxpbmsvIiwic291cmNlcyI6WyJsaWIvZ3BsaW5rLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFDO0FBSzFDLE1BQU0sT0FBTyxVQUFVOzs7Ozs7SUFFckIsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFVO1FBQzlCLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDOzs7Y0FFekQsWUFBWSxHQUFHLCtEQUErRDs7WUFDaEYsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUMsS0FBSyxDQUFDO1FBQzVELElBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQzs7O2dCQUVqQixnQkFBZ0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEQsSUFBRyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDOztvQkFDekIsSUFBSSxHQUFHLEVBQUU7Z0JBQ2IsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztvQkFDM0MsSUFBSSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3RFO2dCQUNELEtBQUssR0FBRyxJQUFJLENBQUM7YUFDZDtTQUNGO2FBRUksSUFBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQzFCLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztTQUN4RDthQUVJLElBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBQztZQUM3QixLQUFLLEdBQUcsZUFBZSxHQUFDLEtBQUssR0FBQyxpQkFBaUIsR0FBQyxLQUFLLEdBQUMsTUFBTSxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7Ozs7O0lBRUQsaUJBQWlCLENBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQyxpQkFBaUI7O1lBQzdDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNwRCxJQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDN0IsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDM0MsSUFBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUM7b0JBQ3RDLElBQUcsaUJBQWlCLEVBQUM7d0JBQ25CLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsR0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBQyxrQkFBa0IsR0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBQyxNQUFNLENBQUM7cUJBQ3pHO3lCQUNHO3dCQUNGLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsR0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBQyxpQkFBaUIsR0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBQyxNQUFNLENBQUM7cUJBQ3ZHO2lCQUNGO2FBQ0Y7WUFDRCxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzs7WUFoREYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxRQUFRO2FBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgbGlua2lmeVN0ciBmcm9tICdsaW5raWZ5anMvc3RyaW5nJztcblxuQFBpcGUoe1xuICBuYW1lOiAnZ3BsaW5rJ1xufSlcbmV4cG9ydCBjbGFzcyBHcGxpbmtQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGFyZ3M/OiBhbnkpOiBhbnkge1xuICAgIHZhbHVlID0gdmFsdWUgPyBsaW5raWZ5U3RyKHZhbHVlLCB7dGFyZ2V0OiAnX3N5c3RlbSd9KSA6IHZhbHVlO1xuICAgIC8vIHRoaXMgaXMgdGhlIGRlZmF1bHQgaW5kaWFuIG51bWJlciB2YWxpZGF0aW9uIHJlZ2V4IGlmIHVzZXIgbm90IHByb3ZpZGVcbiAgICBjb25zdCBpbmRpYW5OdW1iZXIgPSAnXltcXFxcK10/WyhdP1swLTldezN9WyldP1stXFxcXHNcXC5dP1swLTldezN9Wy1cXFxcc1xcXFwuXT9bMC05XXs0LDZ9JCc7IFxuICAgIGxldCB1c2VyUmVnZXggPSBuZXcgUmVnRXhwKGFyZ3MgPyBhcmdzIDogaW5kaWFuTnVtYmVyLCdpZ20nKTtcbiAgICBpZih2YWx1ZS5pbmNsdWRlcyhcIitcIikpe1xuICAgICAgLy9zcGxpdHRpbmcgc3RyaW5nIG9uICsgc2lnbiB0byBmaW5kIG1vYmlsZSBudW1iZXJzIGZyb20gdGhhdFxuICAgICAgbGV0IGlucHV0U3RyaW5nQXJyYXkgPSB2YWx1ZSA/IHZhbHVlLnNwbGl0KFwiK1wiKSA6IFtdO1xuICAgICAgaWYoaW5wdXRTdHJpbmdBcnJheS5sZW5ndGggPiAwKXtcbiAgICAgICAgbGV0IGxpbmUgPSBcIlwiO1xuICAgICAgICBmb3IobGV0IGk9MDtpIDwgaW5wdXRTdHJpbmdBcnJheS5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgbGluZSArPSB0aGlzLmdldEFuY2hvcmVkTnVtYmVyKGlucHV0U3RyaW5nQXJyYXlbaV0sIHVzZXJSZWdleCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSBsaW5lO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsc2UgaWYodmFsdWUuaW5jbHVkZXMoXCIgXCIpKXtcbiAgICAgIHZhbHVlID0gdGhpcy5nZXRBbmNob3JlZE51bWJlcih2YWx1ZSwgdXNlclJlZ2V4LGZhbHNlKTtcbiAgICB9XG5cbiAgICBlbHNlIGlmKHZhbHVlLm1hdGNoKHVzZXJSZWdleCkpe1xuICAgICAgdmFsdWUgPSBcIjxhIGhyZWY9dGVsOitcIit2YWx1ZStcIiB0YXJnZXQ9J190b3AnPlwiK3ZhbHVlK1wiPC9hPlwiO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBnZXRBbmNob3JlZE51bWJlcih2YWx1ZSx1c2VyUmVnZXgsaXNDb250YWluUGx1c1NpZ24pIHtcbiAgICBsZXQgaW5wdXRTdHJpbmdBcnJheSA9IHZhbHVlID8gdmFsdWUuc3BsaXQoXCIgXCIpIDogW107XG4gICAgaWYoaW5wdXRTdHJpbmdBcnJheS5sZW5ndGggPiAwKXtcbiAgICAgIGZvcihsZXQgaT0wO2kgPCBpbnB1dFN0cmluZ0FycmF5Lmxlbmd0aDsgaSsrKXtcbiAgICAgICAgaWYoaW5wdXRTdHJpbmdBcnJheVtpXS5tYXRjaCh1c2VyUmVnZXgpKXtcbiAgICAgICAgICBpZihpc0NvbnRhaW5QbHVzU2lnbil7XG4gICAgICAgICAgICBpbnB1dFN0cmluZ0FycmF5W2ldID0gXCI8YSBocmVmPXRlbDorXCIraW5wdXRTdHJpbmdBcnJheVtpXStcIiB0YXJnZXQ9J190b3AnPitcIitpbnB1dFN0cmluZ0FycmF5W2ldK1wiPC9hPlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgaW5wdXRTdHJpbmdBcnJheVtpXSA9IFwiPGEgaHJlZj10ZWw6XCIraW5wdXRTdHJpbmdBcnJheVtpXStcIiB0YXJnZXQ9J190b3AnPlwiK2lucHV0U3RyaW5nQXJyYXlbaV0rXCI8L2E+XCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IGlucHV0U3RyaW5nQXJyYXkuam9pbihcIiBcIik7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl19