import { Pipe, PipeTransform } from '@angular/core'; import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; import { HighlightText } from '../models/highlight-text.model'; // models @Pipe({ name: 'caHighlight', standalone: true, }) export class HighlightSearchPipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) {} transform(text: any, chips: HighlightText[]): SafeHtml { if (text && chips && chips.length) { text = text.toString(); chips = chips.sort((a, b) => { return b.text.length - a.text.length; }); chips.forEach((item) => { if (item.text && text && text !== 'No Results') { let pattern = item.text .toString() .replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); const regex = new RegExp( '(' + pattern + ')(?!([^<]+)?>)', 'gi' ); text = text.replace( regex, (match: any) => `${match}` ); } else return text; }); return this.sanitizer.bypassSecurityTrustHtml(text); } return text; } }