/**
 * Check to see if browser is not supported by Grafana
 * This function is copied to index-template.html but is here so we can write tests
 *  */
export function checkBrowserCompatibility() {
  const isIE = navigator.userAgent.indexOf('MSIE') > -1;
  const isEdge = navigator.userAgent.indexOf('Edge/') > -1 || navigator.userAgent.indexOf('Edg/') > -1;
  const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
  const isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);

  /* Check for
     <= IE11 (Trident 7)
     Edge <= 16
     Firefox <= 64
     Chrome <= 54
    */
  const isEdgeVersion = /Edge\/([0-9.]+)/.exec(navigator.userAgent);

  if (isIE && parseFloat(/Trident\/([0-9.]+)/.exec(navigator.userAgent)![1]) <= 7) {
    return false;
  } else if (
    isEdge &&
    ((isEdgeVersion && parseFloat(isEdgeVersion[1]) <= 16) ||
      parseFloat(/Edg\/([0-9.]+)/.exec(navigator.userAgent)![1]) <= 16)
  ) {
    return false;
  } else if (isFirefox && parseFloat(/Firefox\/([0-9.]+)/.exec(navigator.userAgent)![1]) <= 64) {
    return false;
  } else if (isChrome && parseFloat(/Chrome\/([0-9.]+)/.exec(navigator.userAgent)![1]) <= 54) {
    return false;
  }

  return true;
}

export function userAgentIsApple() {
  const appleRe = /(iPhone|iPad|Mac)/;
  return appleRe.test(navigator.platform);
}

export function getModKey() {
  return userAgentIsApple() ? 'cmd' : 'ctrl';
}
