@taiga-ui/kit
Version:
Taiga UI Angular main components kit
92 lines • 13.4 kB
JavaScript
import { DOCUMENT } from '@angular/common';
import { Directive, inject, Input, Renderer2 } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { ResizeObserverService } from '@ng-web-apis/resize-observer';
import { svgNodeFilter } from '@taiga-ui/cdk/constants';
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
import { tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
import * as i0 from "@angular/core";
export const [TUI_HIGHLIGHT_OPTIONS, tuiHighlightOptionsProvider] = tuiCreateOptions({
highlightColor: 'var(--tui-service-selection-background)',
});
class TuiHighlight {
constructor() {
this.el = tuiInjectElement();
this.renderer = inject(Renderer2);
this.doc = inject(DOCUMENT);
this.highlight = this.setUpHighlight();
this.treeWalker = this.doc.createTreeWalker(this.el, NodeFilter.SHOW_TEXT, svgNodeFilter);
this.tuiHighlight = '';
this.tuiHighlightColor = inject(TUI_HIGHLIGHT_OPTIONS).highlightColor;
inject(ResizeObserverService, { self: true })
.pipe(takeUntilDestroyed())
.subscribe(() => this.updateStyles());
}
ngOnChanges() {
this.updateStyles();
}
get match() {
return this.indexOf(this.el.textContent) !== -1;
}
updateStyles() {
this.highlight.style.display = 'none';
if (!this.match) {
return;
}
this.treeWalker.currentNode = this.el;
do {
const index = this.indexOf(this.treeWalker.currentNode.nodeValue);
if (index === -1) {
continue;
}
const range = this.doc.createRange();
range.setStart(this.treeWalker.currentNode, index);
range.setEnd(this.treeWalker.currentNode, index + this.tuiHighlight.length);
const hostRect = this.el.getBoundingClientRect();
const { left, top, width, height } = range.getBoundingClientRect();
const { style } = this.highlight;
style.background = this.tuiHighlightColor;
style.left = tuiPx(left - hostRect.left);
style.top = tuiPx(top - hostRect.top);
style.width = tuiPx(width);
style.height = tuiPx(height);
style.display = 'block';
return;
} while (this.treeWalker.nextNode());
}
indexOf(source) {
return !source || !this.tuiHighlight
? -1
: source.toLowerCase().indexOf(this.tuiHighlight.toLowerCase());
}
setUpHighlight() {
const highlight = this.renderer.createElement('div');
const { style } = highlight;
style.background = this.tuiHighlightColor;
style.zIndex = '-1';
style.position = 'absolute';
this.renderer.appendChild(this.el, highlight);
return highlight;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHighlight, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiHighlight, isStandalone: true, selector: "[tuiHighlight]", inputs: { tuiHighlight: "tuiHighlight", tuiHighlightColor: "tuiHighlightColor" }, host: { properties: { "style.position": "\"relative\"", "style.zIndex": "0" } }, providers: [ResizeObserverService], usesOnChanges: true, ngImport: i0 }); }
}
export { TuiHighlight };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHighlight, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[tuiHighlight]',
providers: [ResizeObserverService],
host: {
'[style.position]': '"relative"',
'[style.zIndex]': '0',
},
}]
}], ctorParameters: function () { return []; }, propDecorators: { tuiHighlight: [{
type: Input
}], tuiHighlightColor: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9kaXJlY3RpdmVzL2hpZ2hsaWdodC9oaWdobGlnaHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7O0FBRXhELE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsMkJBQTJCLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztJQUNqRixjQUFjLEVBQUUseUNBQXlDO0NBQzVELENBQUMsQ0FBQztBQUVILE1BU2EsWUFBWTtJQWtCckI7UUFqQmlCLE9BQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsUUFBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV2QixjQUFTLEdBQWdCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQyxlQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FDbkQsSUFBSSxDQUFDLEVBQUUs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UyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxTQUFTLENBQUM7UUFFMUIsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDMUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDcEIsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU5QyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOytHQXBGUSxZQUFZO21HQUFaLFlBQVksZ09BTlYsQ0FBQyxxQkFBcUIsQ0FBQzs7U0FNekIsWUFBWTs0RkFBWixZQUFZO2tCQVR4QixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDbEMsSUFBSSxFQUFFO3dCQUNGLGtCQUFrQixFQUFFLFlBQVk7d0JBQ2hDLGdCQUFnQixFQUFFLEdBQUc7cUJBQ3hCO2lCQUNKOzBFQWNVLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsaUJBQWlCO3NCQUR2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtPbkNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtSZXNpemVPYnNlcnZlclNlcnZpY2V9IGZyb20gJ0BuZy13ZWItYXBpcy9yZXNpemUtb2JzZXJ2ZXInO1xuaW1wb3J0IHtzdmdOb2RlRmlsdGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aUNyZWF0ZU9wdGlvbnN9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZGknO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aVB4fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuXG5leHBvcnQgY29uc3QgW1RVSV9ISUdITElHSFRfT1BUSU9OUywgdHVpSGlnaGxpZ2h0T3B0aW9uc1Byb3ZpZGVyXSA9IHR1aUNyZWF0ZU9wdGlvbnMoe1xuICAgIGhpZ2hsaWdodENvbG9yOiAndmFyKC0tdHVpLXNlcnZpY2Utc2VsZWN0aW9uLWJhY2tncm91bmQpJyxcbn0pO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3R1aUhpZ2hsaWdodF0nLFxuICAgIHByb3ZpZGVyczogW1Jlc2l6ZU9ic2VydmVyU2VydmljZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW3N0eWxlLnBvc2l0aW9uXSc6ICdcInJlbGF0aXZlXCInLFxuICAgICAgICAnW3N0eWxlLnpJbmRleF0nOiAnMCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSGlnaGxpZ2h0IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvYyA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hsaWdodDogSFRNTEVsZW1lbnQgPSB0aGlzLnNldFVwSGlnaGxpZ2h0KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmVlV2Fsa2VyID0gdGhpcy5kb2MuY3JlYXRlVHJlZVdhbGtlcihcbiAgICAgICAgdGhpcy5lbCxcbiAgICAgICAgTm9kZUZpbHRlci5TSE9XX1RFWFQsXG4gICAgICAgIHN2Z05vZGVGaWx0ZXIsXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR1aUhpZ2hsaWdodCA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHVpSGlnaGxpZ2h0Q29sb3IgPSBpbmplY3QoVFVJX0hJR0hMSUdIVF9PUFRJT05TKS5oaWdobGlnaHRDb2xvcjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpbmplY3QoUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLCB7c2VsZjogdHJ1ZX0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVTdHlsZXMoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgbWF0Y2goKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluZGV4T2YodGhpcy5lbC50ZXh0Q29udGVudCkgIT09IC0xO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgICAgIGlmICghdGhpcy5tYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmVlV2Fsa2VyLmN1cnJlbnROb2RlID0gdGhpcy5lbDtcblxuICAgICAgICBkbyB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuaW5kZXhPZih0aGlzLnRyZWVXYWxrZXIuY3VycmVudE5vZGUubm9kZVZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMuZG9jLmNyZWF0ZVJhbmdlKCk7XG5cbiAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMudHJlZVdhbGtlci5jdXJyZW50Tm9kZSwgaW5kZXgpO1xuICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKHRoaXMudHJlZVdhbGtlci5jdXJyZW50Tm9kZSwgaW5kZXggKyB0aGlzLnR1aUhpZ2hsaWdodC5sZW5ndGgpO1xuXG4gICAgICAgICAgICBjb25zdCBob3N0UmVjdCA9IHRoaXMuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCB7bGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0fSA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3Qge3N0eWxlfSA9IHRoaXMuaGlnaGxpZ2h0O1xuXG4gICAgICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gdGhpcy50dWlIaWdobGlnaHRDb2xvcjtcbiAgICAgICAgICAgIHN0eWxlLmxlZnQgPSB0dWlQeChsZWZ0IC0gaG9zdFJlY3QubGVmdCk7XG4gICAgICAgICAgICBzdHlsZS50b3AgPSB0dWlQeCh0b3AgLSBob3N0UmVjdC50b3ApO1xuICAgICAgICAgICAgc3R5bGUud2lkdGggPSB0dWlQeCh3aWR0aCk7XG4gICAgICAgICAgICBzdHlsZS5oZWlnaHQgPSB0dWlQeChoZWlnaHQpO1xuICAgICAgICAgICAgc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSB3aGlsZSAodGhpcy50cmVlV2Fsa2VyLm5leHROb2RlKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5kZXhPZihzb3VyY2U6IHN0cmluZyB8IG51bGwpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gIXNvdXJjZSB8fCAhdGhpcy50dWlIaWdobGlnaHRcbiAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgIDogc291cmNlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLnR1aUhpZ2hsaWdodC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFVwSGlnaGxpZ2h0KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY29uc3Qge3N0eWxlfSA9IGhpZ2hsaWdodDtcblxuICAgICAgICBzdHlsZS5iYWNrZ3JvdW5kID0gdGhpcy50dWlIaWdobGlnaHRDb2xvcjtcbiAgICAgICAgc3R5bGUuekluZGV4ID0gJy0xJztcbiAgICAgICAgc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWwsIGhpZ2hsaWdodCk7XG5cbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodDtcbiAgICB9XG59XG4iXX0=