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