UNPKG

@hmcts/media-viewer

Version:
47 lines 6.36 kB
import { Directive, Input } from '@angular/core'; import * as i0 from "@angular/core"; export class TextHighlightDirective { constructor(element) { this.element = element; } ngAfterViewChecked() { if (this.textToHighlight) { this.highlightInputText(this.textToHighlight); } } highlightInputText(textToHighlight) { this.resetHighlight(); this.textToHighlight = textToHighlight; const searchPattern = new RegExp(textToHighlight, 'gi'); const hostElement = this.element.nativeElement; if (hostElement.innerHTML.match(searchPattern)) { hostElement.innerHTML = hostElement.innerHTML .replace(searchPattern, this.highlightPattern('$&')); } this.textToHighlight = undefined; } resetHighlight() { const hostElement = this.element.nativeElement; const searchPattern = new RegExp(this.highlightPattern('(.*?)'), 'gi'); while (hostElement.innerHTML.match(searchPattern)) { const matchGroups = searchPattern.exec(hostElement.innerHTML); if (matchGroups) { hostElement.innerHTML = hostElement.innerHTML.replace(matchGroups[0], matchGroups[1]); } } } highlightPattern(dynamicText) { return '<span class="mvTextHighlight">' + dynamicText + '</span>'; } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextHighlightDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); } /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TextHighlightDirective, selector: "[mvTextHighlight]", inputs: { textToHighlight: "textToHighlight" }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TextHighlightDirective, decorators: [{ type: Directive, args: [{ selector: '[mvTextHighlight]' }] }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { textToHighlight: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1oaWdobGlnaHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWEtdmlld2VyL3NyYy9saWIvYW5ub3RhdGlvbnMvY29tbWVudC1zZXQvY29tbWVudC90ZXh0LWhpZ2hsaWdodC90ZXh0LWhpZ2hsaWdodC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUsvRSxNQUFNLE9BQU8sc0JBQXNCO0lBSWpDLFlBQW9CLE9BQWdDO1FBQWhDLFlBQU8sR0FBUCxPQUFPLENBQXlCO0lBQUcsQ0FBQztJQUV4RCxrQkFBa0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLGVBQXVCO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDL0MsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQy9DLFdBQVcsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVM7aUJBQzFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDL0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5RCxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixXQUFXLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxXQUFtQjtRQUMxQyxPQUFPLGdDQUFnQyxHQUFHLFdBQVcsR0FBRyxTQUFTLENBQUM7SUFDcEUsQ0FBQztrSUFyQ1Usc0JBQXNCO3NIQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBSGxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7K0VBR1UsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0NoZWNrZWQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW212VGV4dEhpZ2hsaWdodF0nXG59KVxuZXhwb3J0IGNsYXNzIFRleHRIaWdobGlnaHREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdDaGVja2VkIHtcblxuICBASW5wdXQoKSB0ZXh0VG9IaWdobGlnaHQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZXh0VG9IaWdobGlnaHQpIHtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0SW5wdXRUZXh0KHRoaXMudGV4dFRvSGlnaGxpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBoaWdobGlnaHRJbnB1dFRleHQodGV4dFRvSGlnaGxpZ2h0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJlc2V0SGlnaGxpZ2h0KCk7XG4gICAgdGhpcy50ZXh0VG9IaWdobGlnaHQgPSB0ZXh0VG9IaWdobGlnaHQ7XG4gICAgY29uc3Qgc2VhcmNoUGF0dGVybiA9IG5ldyBSZWdFeHAodGV4dFRvSGlnaGxpZ2h0LCAnZ2knKTtcbiAgICBjb25zdCBob3N0RWxlbWVudCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChob3N0RWxlbWVudC5pbm5lckhUTUwubWF0Y2goc2VhcmNoUGF0dGVybikpIHtcbiAgICAgIGhvc3RFbGVtZW50LmlubmVySFRNTCA9IGhvc3RFbGVtZW50LmlubmVySFRNTFxuICAgICAgICAucmVwbGFjZShzZWFyY2hQYXR0ZXJuLCB0aGlzLmhpZ2hsaWdodFBhdHRlcm4oJyQmJykpO1xuICAgIH1cbiAgICB0aGlzLnRleHRUb0hpZ2hsaWdodCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlc2V0SGlnaGxpZ2h0KCkge1xuICAgIGNvbnN0IGhvc3RFbGVtZW50ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc2VhcmNoUGF0dGVybiA9IG5ldyBSZWdFeHAodGhpcy5oaWdobGlnaHRQYXR0ZXJuKCcoLio/KScpLCAnZ2knKTtcbiAgICB3aGlsZSAoaG9zdEVsZW1lbnQuaW5uZXJIVE1MLm1hdGNoKHNlYXJjaFBhdHRlcm4pKSB7XG4gICAgICBjb25zdCBtYXRjaEdyb3VwcyA9IHNlYXJjaFBhdHRlcm4uZXhlYyhob3N0RWxlbWVudC5pbm5lckhUTUwpO1xuICAgICAgaWYgKG1hdGNoR3JvdXBzKSB7XG4gICAgICAgIGhvc3RFbGVtZW50LmlubmVySFRNTCA9IGhvc3RFbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKG1hdGNoR3JvdXBzWzBdLCBtYXRjaEdyb3Vwc1sxXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHRQYXR0ZXJuKGR5bmFtaWNUZXh0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwibXZUZXh0SGlnaGxpZ2h0XCI+JyArIGR5bmFtaWNUZXh0ICsgJzwvc3Bhbj4nO1xuICB9XG59XG4iXX0=