UNPKG

@swimlane/ngx-charts

Version:

Declarative Charting Framework for Angular2 and beyond!

51 lines 1.72 kB
import { Output, EventEmitter } from '@angular/core'; /** * Visibility Observer */ var VisibilityObserver = (function () { function VisibilityObserver(element, zone) { this.element = element; this.zone = zone; this.visible = new EventEmitter(); this.isVisible = false; this.runCheck(); } VisibilityObserver.prototype.destroy = function () { clearTimeout(this.timeout); }; VisibilityObserver.prototype.onVisibilityChange = function () { var _this = this; // trigger zone recalc for columns this.zone.run(function () { _this.isVisible = true; _this.visible.emit(true); }); }; VisibilityObserver.prototype.runCheck = function () { var _this = this; var check = function () { if (!_this.element) { return; } // https://davidwalsh.name/offsetheight-visibility var _a = _this.element.nativeElement, offsetHeight = _a.offsetHeight, offsetWidth = _a.offsetWidth; if (offsetHeight && offsetWidth) { clearTimeout(_this.timeout); _this.onVisibilityChange(); } else { clearTimeout(_this.timeout); _this.zone.runOutsideAngular(function () { _this.timeout = setTimeout(function () { return check(); }, 50); }); } }; setTimeout(function () { return check(); }); }; return VisibilityObserver; }()); export { VisibilityObserver }; VisibilityObserver.propDecorators = { 'visible': [{ type: Output },], }; //# sourceMappingURL=visibility-observer.js.map