import { getUniversalZoomLevel } from '@/utils/util'
import MyEvent from '@/utils/myEvent'

let flexible = (designWidth, maxWidth, minWidth) => {
  var doc = document,
    win = window,
    docEl = doc.documentElement,
    remStyle = document.createElement('style'),
    tid
  designWidth = designWidth || 1920
  maxWidth = maxWidth || 2560
  minWidth = minWidth || 1024
  let oldDesignWidth = designWidth

  // minWidth = minWidth || 1024;
  function refreshRem() {
    var width = docEl.getBoundingClientRect().width
    var height = docEl.getBoundingClientRect().height
    width = getUniversalZoomLevel() * width
    height = getUniversalZoomLevel() * height
    maxWidth = maxWidth || 1920
    if (width < 1100) {
      document.body.classList.add('ipad')
    } else {
      document.body.classList.remove('ipad')
    }
    if (width > 768) {
      if (width / height > 1.98) width = height * 1.98
      width > maxWidth && (width = maxWidth)
      width < minWidth && (width = minWidth)
      designWidth = oldDesignWidth
    } else {
      designWidth = 393
    }
    console.log(width, designWidth)

    // var rem = width * 10 / designWidth;
    var rem = Math.round((width * 10) / designWidth)
    docEl.style.fontSize = rem + 'px'
    remStyle.innerHTML = 'html{font-size:' + rem + 'px;}'
    MyEvent.emit('remChange', rem)
  }
  // if (docEl.firstElementChild) {
  //     docEl.firstElementChild.appendChild(remStyle);
  // } else {
  //     var wrap = doc.createElement("div");
  //     wrap.appendChild(remStyle);
  //     doc.write(wrap.innerHTML);
  //     wrap = null;
  // }
  //要等 wiewport 设置好后才能执行 refreshRem，不然 refreshRem 会执行2次；
  refreshRem()
  win.addEventListener(
    'resize',
    function () {
      clearTimeout(tid) //防止执行两次
      tid = setTimeout(refreshRem, 300)
    },
    false
  )

  win.addEventListener(
    'pageshow',
    function (e) {
      if (e.persisted) {
        // 浏览器后退的时候重新计算
        clearTimeout(tid)
        tid = setTimeout(refreshRem, 300)
      }
    },
    false
  )

  if (doc.readyState === 'complete') {
    doc.body.style.fontSize = '16px'
  } else {
    doc.addEventListener(
      'DOMContentLoaded',
      function (e) {
        doc.body.style.fontSize = '16px'
      },
      false
    )
  }
}

export default flexible
