let width;
let height;
const listeners = [];

function update() {
  width = window.innerWidth;
  height = window.innerHeight;

  for (let i = 0; i < listeners.length; i++) {
    listeners[i](width, height);
  }
}

let resizeRAF;

function resize() {
  if (resizeRAF) {
    window.cancelAnimationFrame(resizeRAF);
  }
  resizeRAF = window.requestAnimationFrame(update);
}

update();
window.addEventListener('resize', resize);

export function windowWidth() {
  return width;
}

export function windowHeight() {
  return height;
}

export function addResizeListener(f, init) {
  listeners.push(f);
  if (init) {
    f(width, height);
  }
}

export function removeResizeListener(f) {
  const i = listeners.indexOf(f);
  if (i > -1) {
    listeners.splice(i, 1);
  }
}