UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

78 lines 8.93 kB
import { NgFor, NgIf } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { PurePipe } from '../../core/public-api'; import * as i0 from "@angular/core"; function TextWithUrlComponent_ng_container_0_span_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "span"); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { const item_r1 = i0.ɵɵnextContext().$implicit; i0.ɵɵadvance(); i0.ɵɵtextInterpolate(item_r1.value); } } function TextWithUrlComponent_ng_container_0_a_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "a", 3); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { const item_r1 = i0.ɵɵnextContext().$implicit; i0.ɵɵproperty("href", item_r1.value, i0.ɵɵsanitizeUrl); i0.ɵɵadvance(); i0.ɵɵtextInterpolate(item_r1.value); } } function TextWithUrlComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, TextWithUrlComponent_ng_container_0_span_1_Template, 2, 1, "span", 1)(2, TextWithUrlComponent_ng_container_0_a_2_Template, 2, 2, "a", 2); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const item_r1 = ctx.$implicit; i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", item_r1.type === "plain"); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", item_r1.type === "url"); } } export class TextWithUrlComponent { constructor() { this.parseUrlInText = parseUrlInText; } static { this.ɵfac = function TextWithUrlComponent_Factory(t) { return new (t || TextWithUrlComponent)(); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextWithUrlComponent, selectors: [["acl-text-with-url"]], inputs: { text: "text" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 2, vars: 4, consts: [[4, "ngFor", "ngForOf"], [4, "ngIf"], ["target", "_blank", 3, "href", 4, "ngIf"], ["target", "_blank", 3, "href"]], template: function TextWithUrlComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, TextWithUrlComponent_ng_container_0_Template, 3, 2, "ng-container", 0); i0.ɵɵpipe(1, "pure"); } if (rf & 2) { i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind2(1, 1, ctx.text, ctx.parseUrlInText)); } }, dependencies: [NgFor, NgIf, PurePipe], encapsulation: 2, changeDetection: 0 }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TextWithUrlComponent, [{ type: Component, args: [{ selector: 'acl-text-with-url', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgFor, NgIf, PurePipe], template: "<ng-container *ngFor=\"let item of text | pure: parseUrlInText\">\n <span *ngIf=\"item.type === 'plain'\">{{ item.value }}</span>\n <a\n *ngIf=\"item.type === 'url'\"\n [href]=\"item.value\"\n target=\"_blank\"\n >{{ item.value }}</a\n >\n</ng-container>\n" }] }], null, { text: [{ type: Input }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextWithUrlComponent, { className: "TextWithUrlComponent" }); })(); export function parseUrlInText(text) { const urlRegex = // eslint-disable-next-line regexp/no-useless-quantifier /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[\w$&+,:;=-]+@)?[\d.A-Za-z-]+|(?:www.|[\w$&+,:;=-]+@)[\d.A-Za-z-]+)((?:\/[\w%+./~-]*)?\??[\w%&+.;=@-]*#?\w*)?)/g; const urlMatches = text.match(urlRegex); if (!urlMatches) { return [{ value: text, type: 'plain' }]; } const result = []; let i = 0; while (text?.length) { const url = urlMatches[i++]; if (url) { const index = text.indexOf(url); result.push({ value: text.slice(0, Math.max(0, index)), type: 'plain' }, { value: url, type: 'url' }); text = text.slice(Math.max(0, index + url.length)); } else { result.push({ value: text, type: 'plain' }); break; } } return result; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3dpZGdldC90ZXh0LXdpdGgtdXJsL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy93aWRnZXQvdGV4dC13aXRoLXVybC90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7SUNGL0MsNEJBQW9DO0lBQUEsWUFBZ0I7SUFBQSxpQkFBTzs7O0lBQXZCLGNBQWdCO0lBQWhCLG1DQUFnQjs7O0lBQ3BELDRCQUlHO0lBQUEsWUFBZ0I7SUFBQSxpQkFDbEI7OztJQUhDLHNEQUFtQjtJQUVsQixjQUFnQjtJQUFoQixtQ0FBZ0I7OztJQU5yQiw2QkFBK0Q7SUFFN0QsQUFEQSxzRkFBb0MsbUVBS2pDOzs7O0lBTEksY0FBMkI7SUFBM0IsK0NBQTJCO0lBRS9CLGNBQXlCO0lBQXpCLDZDQUF5Qjs7QURTOUIsTUFBTSxPQUFPLG9CQUFvQjtJQVBqQztRQVVFLG1CQUFjLEdBQUcsY0FBYyxDQUFDO0tBQ2pDO3FGQUpZLG9CQUFvQjtvRUFBcEIsb0JBQW9CO1lDWmpDLHVGQUErRDs7O1lBQWhDLDRFQUE4Qjs0QkRVakQsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFROztpRkFFcEIsb0JBQW9CO2NBUGhDLFNBQVM7MkJBQ0UsbUJBQW1CLG1CQUVaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUM7Z0JBR3ZCLElBQUk7a0JBQVosS0FBSzs7a0ZBREssb0JBQW9CO0FBTWpDLE1BQU0sVUFBVSxjQUFjLENBQUMsSUFBWTtJQUN6QyxNQUFNLFFBQVE7SUFDWix3REFBd0Q7SUFDeEQsK0lBQStJLENBQUM7SUFDbEosTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV4QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQVcsRUFBRSxDQUFDO0lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQzNELEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQzVCLENBQUM7WUFDRixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM1QyxNQUFNO1FBQ1IsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUHVyZVBpcGUgfSBmcm9tICcuLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtdGV4dC13aXRoLXVybCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0ZvciwgTmdJZiwgUHVyZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0V2l0aFVybENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZztcblxuICBwYXJzZVVybEluVGV4dCA9IHBhcnNlVXJsSW5UZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVcmxJblRleHQodGV4dDogc3RyaW5nKTogVGV4dFtdIHtcbiAgY29uc3QgdXJsUmVnZXggPVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvbm8tdXNlbGVzcy1xdWFudGlmaWVyXG4gICAgLygoKFtBLVphLXpdezMsOX06KD86XFwvXFwvKT8pKD86W1xcdyQmKyw6Oz0tXStAKT9bXFxkLkEtWmEtei1dK3woPzp3d3cufFtcXHckJissOjs9LV0rQClbXFxkLkEtWmEtei1dKykoKD86XFwvW1xcdyUrLi9+LV0qKT9cXD8/W1xcdyUmKy47PUAtXSojP1xcdyopPykvZztcbiAgY29uc3QgdXJsTWF0Y2hlcyA9IHRleHQubWF0Y2godXJsUmVnZXgpO1xuXG4gIGlmICghdXJsTWF0Y2hlcykge1xuICAgIHJldHVybiBbeyB2YWx1ZTogdGV4dCwgdHlwZTogJ3BsYWluJyB9XTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogVGV4dFtdID0gW107XG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKHRleHQ/Lmxlbmd0aCkge1xuICAgIGNvbnN0IHVybCA9IHVybE1hdGNoZXNbaSsrXTtcbiAgICBpZiAodXJsKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRleHQuaW5kZXhPZih1cmwpO1xuICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgIHsgdmFsdWU6IHRleHQuc2xpY2UoMCwgTWF0aC5tYXgoMCwgaW5kZXgpKSwgdHlwZTogJ3BsYWluJyB9LFxuICAgICAgICB7IHZhbHVlOiB1cmwsIHR5cGU6ICd1cmwnIH0sXG4gICAgICApO1xuICAgICAgdGV4dCA9IHRleHQuc2xpY2UoTWF0aC5tYXgoMCwgaW5kZXggKyB1cmwubGVuZ3RoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKHsgdmFsdWU6IHRleHQsIHR5cGU6ICdwbGFpbicgfSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0IHtcbiAgdmFsdWU6IHN0cmluZztcbiAgdHlwZTogJ3BsYWluJyB8ICd1cmwnO1xufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0ZXh0IHwgcHVyZTogcGFyc2VVcmxJblRleHRcIj5cbiAgPHNwYW4gKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdwbGFpbidcIj57eyBpdGVtLnZhbHVlIH19PC9zcGFuPlxuICA8YVxuICAgICpuZ0lmPVwiaXRlbS50eXBlID09PSAndXJsJ1wiXG4gICAgW2hyZWZdPVwiaXRlbS52YWx1ZVwiXG4gICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICA+e3sgaXRlbS52YWx1ZSB9fTwvYVxuICA+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==