@taiga-ui/kit
Version:
Taiga UI Angular main components kit
70 lines • 9.29 kB
JavaScript
import { __decorate, __param } from "tslib";
import { Directive, ElementRef, HostListener, Inject, OnDestroy, Output, } from '@angular/core';
import { USER_AGENT } from '@ng-web-apis/common';
import { isCurrentTarget, isFirefox, TuiDirectiveStylesService } from '@taiga-ui/cdk';
import { Subject } from 'rxjs';
import { distinctUntilChanged, skip, startWith } from 'rxjs/operators';
var STYLE = "\n@keyframes tuiPresent {\n from {\n content: '1';\n }\n\n to {\n content: '2';\n }\n}\n\n.tui-present {\n animation: tuiPresent 1000s infinite;\n}";
var TuiPresentDirective = /** @class */ (function () {
function TuiPresentDirective(_a, directiveStyles, userAgent) {
var _this = this;
var nativeElement = _a.nativeElement;
this.visibility$ = new Subject();
directiveStyles.addStyle(STYLE, 'TuiPresentDirective');
this.tuiPresentChange = this.visibility$.pipe(startWith(false), distinctUntilChanged(), skip(1));
if (isFirefox(userAgent)) {
return;
}
this.observer = new MutationObserver(function () {
if (!nativeElement.offsetParent &&
nativeElement.offsetWidth === 0 &&
nativeElement.offsetHeight === 0) {
_this.visibility$.next(false);
}
});
this.observer.observe(nativeElement, {
attributes: true,
attributeFilter: ['style', 'class'],
});
}
/**
* Someday animationcancel would work and mutation observer would not be needed:
* https://drafts.csswg.org/css-animations/#eventdef-animationevent-animationcancel
* It would also trigger on CSS like display: none on parent nodes which is awesome
* but currently only works in Firefox
*/
TuiPresentDirective.prototype.onAnimation = function (event, visibility) {
if (isCurrentTarget(event)) {
this.visibility$.next(visibility);
}
};
TuiPresentDirective.prototype.ngOnDestroy = function () {
this.visibility$.next(false);
};
TuiPresentDirective.ctorParameters = function () { return [
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
{ type: TuiDirectiveStylesService, decorators: [{ type: Inject, args: [TuiDirectiveStylesService,] }] },
{ type: String, decorators: [{ type: Inject, args: [USER_AGENT,] }] }
]; };
__decorate([
Output()
], TuiPresentDirective.prototype, "tuiPresentChange", void 0);
__decorate([
HostListener('animationcancel', ['$event', 'false']),
HostListener('animationstart', ['$event', 'true'])
], TuiPresentDirective.prototype, "onAnimation", null);
TuiPresentDirective = __decorate([
Directive({
selector: '[tuiPresentChange]',
host: {
class: 'tui-present',
},
}),
__param(0, Inject(ElementRef)),
__param(1, Inject(TuiDirectiveStylesService)),
__param(2, Inject(USER_AGENT))
], TuiPresentDirective);
return TuiPresentDirective;
}());
export { TuiPresentDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2RpcmVjdGl2ZXMvcHJlc2VudC8iLCJzb3VyY2VzIjpbInByZXNlbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLHlCQUF5QixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBYSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFDLG9CQUFvQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxJQUFNLEtBQUssR0FBRyxrTEFhWixDQUFDO0FBUUg7SUFRSSw2QkFDd0IsRUFBd0MsRUFDekIsZUFBMEMsRUFDekQsU0FBaUI7UUFIekMsaUJBK0JDO1lBOUJ3QixnQ0FBYTtRQUxyQixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFTbEQsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3pDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFDaEIsb0JBQW9CLEVBQUUsRUFDdEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNWLENBQUM7UUFFRixJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUM7WUFDakMsSUFDSSxDQUFDLGFBQWEsQ0FBQyxZQUFZO2dCQUMzQixhQUFhLENBQUMsV0FBVyxLQUFLLENBQUM7Z0JBQy9CLGFBQWEsQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUNsQztnQkFDRSxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNoQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ2pDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGVBQWUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7U0FDdEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBR0gseUNBQVcsR0FBWCxVQUFZLEtBQVksRUFBRSxVQUFtQjtRQUN6QyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFRCx5Q0FBVyxHQUFYO1FBQ0ksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7Z0JBaER3QyxVQUFVLHVCQUE5QyxNQUFNLFNBQUMsVUFBVTtnQkFDa0MseUJBQXlCLHVCQUE1RSxNQUFNLFNBQUMseUJBQXlCOzZDQUNoQyxNQUFNLFNBQUMsVUFBVTs7SUFUdEI7UUFEQyxNQUFNLEVBQUU7aUVBQ3NDO0lBK0MvQztRQUZDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7MERBS2xEO0lBckRRLG1CQUFtQjtRQU4vQixTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLElBQUksRUFBRTtnQkFDRixLQUFLLEVBQUUsYUFBYTthQUN2QjtTQUNKLENBQUM7UUFVTyxXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNsQixXQUFBLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQ2pDLFdBQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO09BWGQsbUJBQW1CLENBMEQvQjtJQUFELDBCQUFDO0NBQUEsQUExREQsSUEwREM7U0ExRFksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtVU0VSX0FHRU5UfSBmcm9tICdAbmctd2ViLWFwaXMvY29tbW9uJztcbmltcG9ydCB7aXNDdXJyZW50VGFyZ2V0LCBpc0ZpcmVmb3gsIFR1aURpcmVjdGl2ZVN0eWxlc1NlcnZpY2V9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIHNraXAsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBTVFlMRSA9IGBcbkBrZXlmcmFtZXMgdHVpUHJlc2VudCB7XG4gICAgZnJvbSB7XG4gICAgICAgIGNvbnRlbnQ6ICcxJztcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIGNvbnRlbnQ6ICcyJztcbiAgICB9XG59XG5cbi50dWktcHJlc2VudCB7XG4gICAgYW5pbWF0aW9uOiB0dWlQcmVzZW50IDEwMDBzIGluZmluaXRlO1xufWA7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3R1aVByZXNlbnRDaGFuZ2VdJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndHVpLXByZXNlbnQnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVByZXNlbnREaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHR1aVByZXNlbnRDaGFuZ2U6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpc2liaWxpdHkkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JzZXJ2ZXI/OiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikge25hdGl2ZUVsZW1lbnR9OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgQEluamVjdChUdWlEaXJlY3RpdmVTdHlsZXNTZXJ2aWNlKSBkaXJlY3RpdmVTdHlsZXM6IFR1aURpcmVjdGl2ZVN0eWxlc1NlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoVVNFUl9BR0VOVCkgdXNlckFnZW50OiBzdHJpbmcsXG4gICAgKSB7XG4gICAgICAgIGRpcmVjdGl2ZVN0eWxlcy5hZGRTdHlsZShTVFlMRSwgJ1R1aVByZXNlbnREaXJlY3RpdmUnKTtcblxuICAgICAgICB0aGlzLnR1aVByZXNlbnRDaGFuZ2UgPSB0aGlzLnZpc2liaWxpdHkkLnBpcGUoXG4gICAgICAgICAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzRmlyZWZveCh1c2VyQWdlbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFuYXRpdmVFbGVtZW50Lm9mZnNldFBhcmVudCAmJlxuICAgICAgICAgICAgICAgIG5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA9PT0gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKG5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsnc3R5bGUnLCAnY2xhc3MnXSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU29tZWRheSBhbmltYXRpb25jYW5jZWwgd291bGQgd29yayBhbmQgbXV0YXRpb24gb2JzZXJ2ZXIgd291bGQgbm90IGJlIG5lZWRlZDpcbiAgICAgKiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWFuaW1hdGlvbnMvI2V2ZW50ZGVmLWFuaW1hdGlvbmV2ZW50LWFuaW1hdGlvbmNhbmNlbFxuICAgICAqIEl0IHdvdWxkIGFsc28gdHJpZ2dlciBvbiBDU1MgbGlrZSBkaXNwbGF5OiBub25lIG9uIHBhcmVudCBub2RlcyB3aGljaCBpcyBhd2Vzb21lXG4gICAgICogYnV0IGN1cnJlbnRseSBvbmx5IHdvcmtzIGluIEZpcmVmb3hcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBbJyRldmVudCcsICdmYWxzZSddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2FuaW1hdGlvbnN0YXJ0JywgWyckZXZlbnQnLCAndHJ1ZSddKVxuICAgIG9uQW5pbWF0aW9uKGV2ZW50OiBFdmVudCwgdmlzaWJpbGl0eTogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNDdXJyZW50VGFyZ2V0KGV2ZW50KSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5JC5uZXh0KHZpc2liaWxpdHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudmlzaWJpbGl0eSQubmV4dChmYWxzZSk7XG4gICAgfVxufVxuIl19