@taiga-ui/kit
Version:
Taiga UI Angular main components kit
96 lines • 12.7 kB
JavaScript
import { __decorate, __param } from "tslib";
import { DOCUMENT } from '@angular/common';
import { Directive, ElementRef, Inject, Input, OnChanges, Renderer2 } from '@angular/core';
import { px, svgNodeFilter, tuiDefaultProp, TuiDestroyService, TuiResizeService, } from '@taiga-ui/cdk';
import { Observable } from 'rxjs';
// @dynamic
var TuiHighlightDirective = /** @class */ (function () {
function TuiHighlightDirective(documentRef, elementRef, renderer, resize$) {
var _this = this;
this.documentRef = documentRef;
this.elementRef = elementRef;
this.renderer = renderer;
this.tuiHighlight = '';
this.highlight = this.setUpHighlight();
this.treeWalker = this.documentRef.createTreeWalker(this.elementRef.nativeElement, NodeFilter.SHOW_TEXT, svgNodeFilter, false);
resize$.subscribe(function () {
_this.updateStyles();
});
}
Object.defineProperty(TuiHighlightDirective.prototype, "match", {
get: function () {
return this.indexOf(this.elementRef.nativeElement.textContent) !== -1;
},
enumerable: true,
configurable: true
});
TuiHighlightDirective.prototype.ngOnChanges = function () {
this.updateStyles();
};
TuiHighlightDirective.prototype.updateStyles = function () {
this.highlight.style.display = 'none';
if (!this.match) {
return;
}
this.treeWalker.currentNode = this.elementRef.nativeElement;
do {
var index = this.indexOf(this.treeWalker.currentNode.nodeValue);
if (index === -1) {
continue;
}
var range = this.documentRef.createRange();
range.setStart(this.treeWalker.currentNode, index);
range.setEnd(this.treeWalker.currentNode, index + this.tuiHighlight.length);
var hostRect = this.elementRef.nativeElement.getBoundingClientRect();
var _a = range.getBoundingClientRect(), left = _a.left, top_1 = _a.top, width = _a.width, height = _a.height;
var style = this.highlight.style;
style.left = px(left - hostRect.left);
style.top = px(top_1 - hostRect.top);
style.width = px(width);
style.height = px(height);
style.display = 'block';
return;
} while (this.treeWalker.nextNode());
};
TuiHighlightDirective.prototype.indexOf = function (source) {
return !source || !this.tuiHighlight
? -1
: source.toLowerCase().indexOf(this.tuiHighlight.toLowerCase());
};
TuiHighlightDirective.prototype.setUpHighlight = function () {
var highlight = this.renderer.createElement('div');
var style = highlight.style;
style.background = 'var(--tui-selection)';
style.zIndex = '-1';
style.position = 'absolute';
this.renderer.appendChild(this.elementRef.nativeElement, highlight);
return highlight;
};
TuiHighlightDirective.ctorParameters = function () { return [
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
{ type: Renderer2, decorators: [{ type: Inject, args: [Renderer2,] }] },
{ type: Observable, decorators: [{ type: Inject, args: [TuiResizeService,] }] }
]; };
__decorate([
Input(),
tuiDefaultProp()
], TuiHighlightDirective.prototype, "tuiHighlight", void 0);
TuiHighlightDirective = __decorate([
Directive({
selector: '[tuiHighlight]',
host: {
'[style.position]': '"relative"',
'[style.zIndex]': '0',
},
providers: [TuiDestroyService, TuiResizeService],
}),
__param(0, Inject(DOCUMENT)),
__param(1, Inject(ElementRef)),
__param(2, Inject(Renderer2)),
__param(3, Inject(TuiResizeService))
], TuiHighlightDirective);
return TuiHighlightDirective;
}());
export { TuiHighlightDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlnaGxpZ2h0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvZGlyZWN0aXZlcy9oaWdobGlnaHQvIiwic291cmNlcyI6WyJoaWdobGlnaHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFDSCxFQUFFLEVBQ0YsYUFBYSxFQUNiLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFaEMsV0FBVztBQVNYO0lBY0ksK0JBQ3VDLFdBQXFCLEVBQ25CLFVBQW1DLEVBQ3BDLFFBQW1CLEVBQzdCLE9BQTRCO1FBSjFELGlCQVNDO1FBUnNDLGdCQUFXLEdBQVgsV0FBVyxDQUFVO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQ3BDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFkM0QsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFRCxjQUFTLEdBQWdCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUUvQyxlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQzdCLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLGFBQWEsRUFDYixLQUFLLENBQ1IsQ0FBQztRQVFFLE9BQU8sQ0FBQyxTQUFTLENBQUM7WUFDZCxLQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsc0JBQUksd0NBQUs7YUFBVDtZQUNJLE9BQU8sSUFB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MUQsTUFBTSxTQUFDLFVBQVU7Z0JBQzRCLFNBQVMsdUJBQXRELE1BQU0sU0FBQyxTQUFTO2dCQUNrQixVQUFVLHVCQUE1QyxNQUFNLFNBQUMsZ0JBQWdCOztJQWY1QjtRQUZDLEtBQUssRUFBRTtRQUNQLGNBQWMsRUFBRTsrREFDQztJQUhULHFCQUFxQjtRQVJqQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLElBQUksRUFBRTtnQkFDRixrQkFBa0IsRUFBRSxZQUFZO2dCQUNoQyxnQkFBZ0IsRUFBRSxHQUFHO2FBQ3hCO1lBQ0QsU0FBUyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUM7U0FDbkQsQ0FBQztRQWdCTyxXQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNoQixXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNsQixXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqQixXQUFBLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO09BbEJwQixxQkFBcUIsQ0FxRmpDO0lBQUQsNEJBQUM7Q0FBQSxBQXJGRCxJQXFGQztTQXJGWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgcHgsXG4gICAgc3ZnTm9kZUZpbHRlcixcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlEZXN0cm95U2VydmljZSxcbiAgICBUdWlSZXNpemVTZXJ2aWNlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t0dWlIaWdobGlnaHRdJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbc3R5bGUucG9zaXRpb25dJzogJ1wicmVsYXRpdmVcIicsXG4gICAgICAgICdbc3R5bGUuekluZGV4XSc6ICcwJyxcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1R1aURlc3Ryb3lTZXJ2aWNlLCBUdWlSZXNpemVTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSGlnaGxpZ2h0RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgdHVpSGlnaGxpZ2h0ID0gJyc7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hsaWdodDogSFRNTEVsZW1lbnQgPSB0aGlzLnNldFVwSGlnaGxpZ2h0KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyZWVXYWxrZXIgPSB0aGlzLmRvY3VtZW50UmVmLmNyZWF0ZVRyZWVXYWxrZXIoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICBOb2RlRmlsdGVyLlNIT1dfVEVYVCxcbiAgICAgICAgc3ZnTm9kZUZpbHRlcixcbiAgICAgICAgZmFsc2UsXG4gICAgKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50UmVmOiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFJlbmRlcmVyMikgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBASW5qZWN0KFR1aVJlc2l6ZVNlcnZpY2UpIHJlc2l6ZSQ6IE9ic2VydmFibGU8dW5rbm93bj4sXG4gICAgKSB7XG4gICAgICAgIHJlc2l6ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3R5bGVzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBtYXRjaCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5kZXhPZih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCkgIT09IC0xO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU3R5bGVzKCkge1xuICAgICAgICB0aGlzLmhpZ2hsaWdodC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgICAgIGlmICghdGhpcy5tYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50cmVlV2Fsa2VyLmN1cnJlbnROb2RlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4T2YodGhpcy50cmVlV2Fsa2VyLmN1cnJlbnROb2RlLm5vZGVWYWx1ZSk7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLmRvY3VtZW50UmVmLmNyZWF0ZVJhbmdlKCk7XG5cbiAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMudHJlZVdhbGtlci5jdXJyZW50Tm9kZSwgaW5kZXgpO1xuICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKHRoaXMudHJlZVdhbGtlci5jdXJyZW50Tm9kZSwgaW5kZXggKyB0aGlzLnR1aUhpZ2hsaWdodC5sZW5ndGgpO1xuXG4gICAgICAgICAgICBjb25zdCBob3N0UmVjdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3Qge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH0gPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGNvbnN0IHtzdHlsZX0gPSB0aGlzLmhpZ2hsaWdodDtcblxuICAgICAgICAgICAgc3R5bGUubGVmdCA9IHB4KGxlZnQgLSBob3N0UmVjdC5sZWZ0KTtcbiAgICAgICAgICAgIHN0eWxlLnRvcCA9IHB4KHRvcCAtIGhvc3RSZWN0LnRvcCk7XG4gICAgICAgICAgICBzdHlsZS53aWR0aCA9IHB4KHdpZHRoKTtcbiAgICAgICAgICAgIHN0eWxlLmhlaWdodCA9IHB4KGhlaWdodCk7XG4gICAgICAgICAgICBzdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IHdoaWxlICh0aGlzLnRyZWVXYWxrZXIubmV4dE5vZGUoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbmRleE9mKHNvdXJjZTogc3RyaW5nIHwgbnVsbCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAhc291cmNlIHx8ICF0aGlzLnR1aUhpZ2hsaWdodFxuICAgICAgICAgICAgPyAtMVxuICAgICAgICAgICAgOiBzb3VyY2UudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMudHVpSGlnaGxpZ2h0LnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VXBIaWdobGlnaHQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICBjb25zdCBoaWdobGlnaHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBjb25zdCB7c3R5bGV9ID0gaGlnaGxpZ2h0O1xuXG4gICAgICAgIHN0eWxlLmJhY2tncm91bmQgPSAndmFyKC0tdHVpLXNlbGVjdGlvbiknO1xuICAgICAgICBzdHlsZS56SW5kZXggPSAnLTEnO1xuICAgICAgICBzdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGhpZ2hsaWdodCk7XG5cbiAgICAgICAgcmV0dXJuIGhpZ2hsaWdodDtcbiAgICB9XG59XG4iXX0=