discourse/app/assets/javascripts/discourse/mixins/docking.js.es6
2016-06-03 17:57:52 -04:00

38 lines
921 B
JavaScript

const helper = {
offset() {
const mainOffset = $('#main').offset();
const offsetTop = mainOffset ? mainOffset.top : 0;
return (window.pageYOffset || $('html').scrollTop()) - offsetTop;
}
};
export default Ember.Mixin.create({
queueDockCheck: null,
init() {
this._super();
this.queueDockCheck = () => {
Ember.run.debounce(this, this.safeDockCheck, 5);
};
},
safeDockCheck() {
if (this.isDestroyed || this.isDestroying) { return; }
this.dockCheck(helper);
},
didInsertElement() {
this._super();
$(window).bind('scroll.discourse-dock', this.queueDockCheck);
$(document).bind('touchmove.discourse-dock', this.queueDockCheck);
this.dockCheck(helper);
},
willDestroyElement() {
this._super();
$(window).unbind('scroll.discourse-dock', this.queueDockCheck);
$(document).unbind('touchmove.discourse-dock', this.queueDockCheck);
}
});