text: /* eslint no-extend-native: "off" */
  if (!String.prototype.includes) {
    String.prototype.includes = function(search, start) {
      'use strict';
      if (typeof start !== 'number') {
        start = 0;
      }
  
      if (start + search.length > this.length) {
        return false;
      }
      return this.indexOf(search, start) !== -1;
    };
  }
  
  export function getPrefix() {
    const ua = window.navigator.userAgent;
    let prefix = '';
    if (/MSIE/g.test(ua)) {
      prefix = '-ms-';
    } else if (/Firefox/g.test(ua)) {
      prefix = '-moz-';
    } else if (/(WebKit)/i.test(ua)) {
      prefix = '-webkit-';
    } else if (/Opera/g.test(ua)) {
      prefix = '-o-';
    }
    return prefix;
  }
  
  export function flip(o) {
    const flipped = {};
    for (const i in o) {
      if (o.hasOwnProperty(i)) {
        flipped[o[i]] = i;
      }
    }
    return flipped;
  }
  
  export function reverseDirection(direction) {
    const mapping = {
      'top': 'bottom',
      'right': 'left',
      'bottom': 'top',
      'left': 'right',
      'right top': 'left bottom',
      'top right': 'bottom left',
      'bottom right': 'top left',
      'right bottom': 'left top',
      'left bottom': 'right top',
      'bottom left': 'top right',
      'top left': 'bottom right',
      'left top': 'right bottom'
    };
    return mapping.hasOwnProperty(direction) ? mapping[direction] : direction;
  }
  
  export function isDirection(n) {
    const reg = /^(top|left|right|bottom)$/i;
    return reg.test(n);
  }
  