function handleResize() {
  update();
  if (Array.isArray(listeners['change'])) {
    listeners['change'].forEach((handler) => handler(dimensions));
  }
}
We are multiplying by scale because height and width from visual viewport
also react to pinch zoom, and become smaller when zoomed. But it is not desired
behaviour, since originally documentElement client height and width were used,
and they do not react to pinch zoom.