UNPKG

gplink

Version:

This is a Angular Library which provide pipe to convert the url, email and mobile number to link format by using linkifyjs.

99 lines (93 loc) 8.88 kB
import { Pipe, NgModule } from '@angular/core'; import linkifyStr from 'linkifyjs/string'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ 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' },] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ class GplinkModule { } GplinkModule.decorators = [ { type: NgModule, args: [{ declarations: [GplinkPipe], imports: [], exports: [GplinkPipe] },] } ]; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ export { GplinkModule, GplinkPipe as ɵa }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3BsaW5rLmpzLm1hcCIsInNvdXJjZXMiOlsibmc6Ly9ncGxpbmsvbGliL2dwbGluay5waXBlLnRzIiwibmc6Ly9ncGxpbmsvbGliL2dwbGluay5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGxpbmtpZnlTdHIgZnJvbSAnbGlua2lmeWpzL3N0cmluZyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2dwbGluaydcbn0pXG5leHBvcnQgY2xhc3MgR3BsaW5rUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBhcmdzPzogYW55KTogYW55IHtcbiAgICB2YWx1ZSA9IHZhbHVlID8gbGlua2lmeVN0cih2YWx1ZSwge3RhcmdldDogJ19zeXN0ZW0nfSkgOiB2YWx1ZTtcbiAgICAvLyB0aGlzIGlzIHRoZSBkZWZhdWx0IGluZGlhbiBudW1iZXIgdmFsaWRhdGlvbiByZWdleCBpZiB1c2VyIG5vdCBwcm92aWRlXG4gICAgY29uc3QgaW5kaWFuTnVtYmVyID0gJ15bXFxcXCtdP1soXT9bMC05XXszfVspXT9bLVxcXFxzXFwuXT9bMC05XXszfVstXFxcXHNcXFxcLl0/WzAtOV17NCw2fSQnOyBcbiAgICBsZXQgdXNlclJlZ2V4ID0gbmV3IFJlZ0V4cChhcmdzID8gYXJncyA6IGluZGlhbk51bWJlciwnaWdtJyk7XG4gICAgaWYodmFsdWUuaW5jbHVkZXMoXCIrXCIpKXtcbiAgICAgIC8vc3BsaXR0aW5nIHN0cmluZyBvbiArIHNpZ24gdG8gZmluZCBtb2JpbGUgbnVtYmVycyBmcm9tIHRoYXRcbiAgICAgIGxldCBpbnB1dFN0cmluZ0FycmF5ID0gdmFsdWUgPyB2YWx1ZS5zcGxpdChcIitcIikgOiBbXTtcbiAgICAgIGlmKGlucHV0U3RyaW5nQXJyYXkubGVuZ3RoID4gMCl7XG4gICAgICAgIGxldCBsaW5lID0gXCJcIjtcbiAgICAgICAgZm9yKGxldCBpPTA7aSA8IGlucHV0U3RyaW5nQXJyYXkubGVuZ3RoOyBpKyspe1xuICAgICAgICAgIGxpbmUgKz0gdGhpcy5nZXRBbmNob3JlZE51bWJlcihpbnB1dFN0cmluZ0FycmF5W2ldLCB1c2VyUmVnZXgsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlID0gbGluZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbHNlIGlmKHZhbHVlLmluY2x1ZGVzKFwiIFwiKSl7XG4gICAgICB2YWx1ZSA9IHRoaXMuZ2V0QW5jaG9yZWROdW1iZXIodmFsdWUsIHVzZXJSZWdleCxmYWxzZSk7XG4gICAgfVxuXG4gICAgZWxzZSBpZih2YWx1ZS5tYXRjaCh1c2VyUmVnZXgpKXtcbiAgICAgIHZhbHVlID0gXCI8YSBocmVmPXRlbDorXCIrdmFsdWUrXCIgdGFyZ2V0PSdfdG9wJz5cIit2YWx1ZStcIjwvYT5cIjtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZ2V0QW5jaG9yZWROdW1iZXIodmFsdWUsdXNlclJlZ2V4LGlzQ29udGFpblBsdXNTaWduKSB7XG4gICAgbGV0IGlucHV0U3RyaW5nQXJyYXkgPSB2YWx1ZSA/IHZhbHVlLnNwbGl0KFwiIFwiKSA6IFtdO1xuICAgIGlmKGlucHV0U3RyaW5nQXJyYXkubGVuZ3RoID4gMCl7XG4gICAgICBmb3IobGV0IGk9MDtpIDwgaW5wdXRTdHJpbmdBcnJheS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGlmKGlucHV0U3RyaW5nQXJyYXlbaV0ubWF0Y2godXNlclJlZ2V4KSl7XG4gICAgICAgICAgaWYoaXNDb250YWluUGx1c1NpZ24pe1xuICAgICAgICAgICAgaW5wdXRTdHJpbmdBcnJheVtpXSA9IFwiPGEgaHJlZj10ZWw6K1wiK2lucHV0U3RyaW5nQXJyYXlbaV0rXCIgdGFyZ2V0PSdfdG9wJz4rXCIraW5wdXRTdHJpbmdBcnJheVtpXStcIjwvYT5cIjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIGlucHV0U3RyaW5nQXJyYXlbaV0gPSBcIjxhIGhyZWY9dGVsOlwiK2lucHV0U3RyaW5nQXJyYXlbaV0rXCIgdGFyZ2V0PSdfdG9wJz5cIitpbnB1dFN0cmluZ0FycmF5W2ldK1wiPC9hPlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFsdWUgPSBpbnB1dFN0cmluZ0FycmF5LmpvaW4oXCIgXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vLyBpbXBvcnQgeyBHcGxpbmtDb21wb25lbnQgfSBmcm9tICcuL2dwbGluay5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3BsaW5rUGlwZSB9IGZyb20gJy4vZ3BsaW5rLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFsgR3BsaW5rUGlwZV0sXG4gIGltcG9ydHM6IFtcbiAgXSxcbiAgZXhwb3J0czogW0dwbGlua1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIEdwbGlua01vZHVsZSB7IH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsTUFNYSxVQUFVOzs7Ozs7SUFFckIsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFVO1FBQzlCLEtBQUssR0FBRyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQzs7O2NBRXpELFlBQVksR0FBRywrREFBK0Q7O1lBQ2hGLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLFlBQVksRUFBQyxLQUFLLENBQUM7UUFDNUQsSUFBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDOzs7Z0JBRWpCLGdCQUFnQixHQUFHLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDcEQsSUFBRyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDOztvQkFDekIsSUFBSSxHQUFHLEVBQUU7Z0JBQ2IsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztvQkFDM0MsSUFBSSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3RFO2dCQUNELEtBQUssR0FBRyxJQUFJLENBQUM7YUFDZDtTQUNGO2FBRUksSUFBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQzFCLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQztTQUN4RDthQUVJLElBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBQztZQUM3QixLQUFLLEdBQUcsZUFBZSxHQUFDLEtBQUssR0FBQyxpQkFBaUIsR0FBQyxLQUFLLEdBQUMsTUFBTSxDQUFDO1NBQzlEO1FBQ0QsT0FBTyxLQUFLLENBQUM7S0FDZDs7Ozs7OztJQUVELGlCQUFpQixDQUFDLEtBQUssRUFBQyxTQUFTLEVBQUMsaUJBQWlCOztZQUM3QyxnQkFBZ0IsR0FBRyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ3BELElBQUcsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUM3QixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO2dCQUMzQyxJQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBQztvQkFDdEMsSUFBRyxpQkFBaUIsRUFBQzt3QkFDbkIsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsZUFBZSxHQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFDLGtCQUFrQixHQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFDLE1BQU0sQ0FBQztxQkFDekc7eUJBQ0c7d0JBQ0YsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEdBQUcsY0FBYyxHQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFDLGlCQUFpQixHQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFDLE1BQU0sQ0FBQztxQkFDdkc7aUJBQ0Y7YUFDRjtZQUNELEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEM7UUFDRCxPQUFPLEtBQUssQ0FBQztLQUNkOzs7WUFoREYsSUFBSSxTQUFDO2dCQUNKLElBQUksRUFBRSxRQUFRO2FBQ2Y7Ozs7Ozs7QUNMRCxNQVVhLFlBQVk7OztZQU54QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUUsVUFBVSxDQUFDO2dCQUMzQixPQUFPLEVBQUUsRUFDUjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDdEI7Ozs7Ozs7Ozs7Ozs7OzsifQ==