github.com/manicqin/nomad@v0.9.5/ui/app/mixins/with-component-visibility-detection.js (about)

     1  import Ember from 'ember';
     2  import Mixin from '@ember/object/mixin';
     3  import { assert } from '@ember/debug';
     4  import { on } from '@ember/object/evented';
     5  
     6  export default Mixin.create({
     7    visibilityHandler() {
     8      assert('visibilityHandler needs to be overridden in the Component', false);
     9    },
    10  
    11    setupDocumentVisibility: on('init', function() {
    12      if (!Ember.testing) {
    13        this.set('_visibilityHandler', this.visibilityHandler.bind(this));
    14        document.addEventListener('visibilitychange', this._visibilityHandler);
    15      }
    16    }),
    17  
    18    removeDocumentVisibility: on('init', function() {
    19      if (!Ember.testing) {
    20        document.removeEventListener('visibilitychange', this._visibilityHandler);
    21      }
    22    }),
    23  });