docs/_vendor/popper.js/dist/popper.js
function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement, padding = 0) {
  if (placement.indexOf('auto') === -1) {
    return placement;
  }

  const boundaries = getBoundaries(popper, reference, padding, boundariesElement);

  const rects = {
    top: {
      width: boundaries.width,
      height: refRect.top - boundaries.top
    },
    right: {
      width: boundaries.right - refRect.right,
      height: boundaries.height
    },
    bottom: {
      width: boundaries.width,
      height: boundaries.bottom - refRect.bottom
    },
    left: {
      width: refRect.left - boundaries.left,
      height: boundaries.height
    }
  };

  const sortedAreas = Object.keys(rects).map(key => _extends({
    key
  }, rects[key], {
    area: getArea(rects[key])
  })).sort((a, b) => b.area - a.area);

  const filteredAreas = sortedAreas.filter(({ width, height }) => width >= popper.clientWidth && height >= popper.clientHeight);

  const computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;

  const variation = placement.split('-')[1];

  return computedPlacement + (variation ? `-${variation}` : '');
}
function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement, padding = 0) {
  if (placement.indexOf('auto') === -1) {
    return placement;
  }

  const boundaries = getBoundaries(popper, reference, padding, boundariesElement);

  const rects = {
    top: {
      width: boundaries.width,
      height: refRect.top - boundaries.top
    },
    right: {
      width: boundaries.right - refRect.right,
      height: boundaries.height
    },
    bottom: {
      width: boundaries.width,
      height: boundaries.bottom - refRect.bottom
    },
    left: {
      width: refRect.left - boundaries.left,
      height: boundaries.height
    }
  };

  const sortedAreas = Object.keys(rects).map(key => _extends({
    key
  }, rects[key], {
    area: getArea(rects[key])
  })).sort((a, b) => b.area - a.area);

  const filteredAreas = sortedAreas.filter(({ width, height }) => width >= popper.clientWidth && height >= popper.clientHeight);

  const computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;

  const variation = placement.split('-')[1];

  return computedPlacement + (variation ? `-${variation}` : '');
}
function computeAutoPlacement ( placement , refRect , popper , reference , boundariesElement , padding = 0 ) { if ( placement . indexOf ( 'auto' ) === - 1 ) { return placement ; } const boundaries = getBoundaries ( popper , reference , padding , boundariesElement ) ; const rects = { top : { width : boundaries . width , height : refRect . top - boundaries . top } , right : { width : boundaries . right - refRect . right , height : boundaries . height } , bottom : { width : boundaries . width , height : boundaries . bottom - refRect . bottom } , left : { width : refRect . left - boundaries . left , height : boundaries . height } } ; const sortedAreas = Object . keys ( rects ) . map ( key => _extends ( { key } , rects [ key ] , { area : getArea ( rects [ key ] ) } ) ) . sort ( ( a , b ) => b . area - a . area ) ; const filteredAreas = sortedAreas . filter ( ( { width , height } ) => width >= popper . clientWidth && height >= popper . clientHeight ) ; const computedPlacement = filteredAreas . length > 0 ? filteredAreas [ 0 ] . key : sortedAreas [ 0 ] . key ; const variation = placement . split ( '-' ) [ 1 ] ; return computedPlacement + ( variation ? ` ${ variation } ` : '' ) ; }
Utility used to transform the `auto` placement to the placement with more
available space.
@method
@memberof Popper.Utils
@argument {Object} data - The data object generated by update method
@argument {Object} options - Modifiers configuration and options
@returns {Object} The data object, properly modified
Utility used to transform the auto placement to the placement with more available space .