code: function Viewport() {
        classCallCheck(this, Viewport);
  
        this.addId = null;
        this.hasActiveHandlers = false;
        this.items = new Map();
  
        // Assume there is no horizontal scrollbar. documentElement.clientHeight
        // is incorrect on iOS 8 because it includes toolbars.
        this.viewportHeight = window.innerHeight;
        this.viewportWidth = document.documentElement.clientWidth;
        this.viewportTop = 0;
  
        // What's nice here is that rAF won't execute until the user is on this tab,
        // so if they open the page in a new tab which they aren't looking at,
        // this will execute when they come back to that tab.
        requestAnimationFrame(this.handleScroll.bind(this));
      }
docs: Viewport singleton.
  @constructor