@alauda-fe/common
Version:
Alauda frontend team common codes.
78 lines • 8.93 kB
JavaScript
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==