github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/ui/app/mixins/window-resizable.js (about) 1 import Mixin from '@ember/object/mixin'; 2 import { scheduleOnce } from '@ember/runloop'; 3 import { assert } from '@ember/debug'; 4 import { on } from '@ember/object/evented'; 5 6 // eslint-disable-next-line ember/no-new-mixins 7 export default Mixin.create({ 8 windowResizeHandler() { 9 assert( 10 'windowResizeHandler needs to be overridden in the Component', 11 false 12 ); 13 }, 14 15 setupWindowResize: on('didInsertElement', function () { 16 scheduleOnce('afterRender', this, this.addResizeListener); 17 }), 18 19 addResizeListener() { 20 this.set('_windowResizeHandler', this.windowResizeHandler.bind(this)); 21 window.addEventListener('resize', this._windowResizeHandler); 22 }, 23 24 removeWindowResize: on('willDestroyElement', function () { 25 window.removeEventListener('resize', this._windowResizeHandler); 26 }), 27 });