@swimlane/ngx-charts
Version:
Declarative Charting Framework for Angular2 and beyond!
51 lines • 1.72 kB
JavaScript
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