function findOrGenerateResponsiveLayout(orgLayout
/*: Layout*/
, layouts
/*: ResponsiveLayout*/
, breakpoints
/*: Breakpoints*/
, breakpoint
/*: Breakpoint*/
, lastBreakpoint
/*: Breakpoint*/
, cols
/*: number*/
, verticalCompact
/*: boolean*/
, forceAbsolute
/*: boolean*/
)
/*: Layout*/
{
  // If it already exists, just return it.
  if (layouts[breakpoint]) return Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* cloneLayout */ "b"])(layouts[breakpoint]); // Find or generate the next layout

  var layout = orgLayout;
  var breakpointsSorted = sortBreakpoints(breakpoints);
  var breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint));

  for (var i = 0, len = breakpointsAbove.length; i < len; i++) {
    var b = breakpointsAbove[i];

    if (layouts[b]) {
      layout = layouts[b];
      break;
    }
  }

  layout = Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* cloneLayout */ "b"])(layout || []); // clone layout so we don't modify existing items

  return Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* compact */ "c"])(Object(_utils__WEBPACK_IMPORTED_MODULE_3__[/* correctBounds */ "d"])(layout, {
    cols: cols
  }), verticalCompact, forceAbsolute);
}
Given existing layouts and a new breakpoint, find or generate a new layout.

This finds the layout above the new one and generates from it, if it exists.

@param  {Array} orgLayout     Original layout.
@param  {Object} layouts     Existing layouts.
@param  {Array} breakpoints All breakpoints.
@param  {String} breakpoint New breakpoint.
@param  {String} breakpoint Last breakpoint (for fallback).
@param  {Number} cols       Column count at new breakpoint.
@param  {Boolean} verticalCompact Whether or not to compact the layout
  vertically.
@return {Array}             New layout.