( function( window ) { 'use strict'; function fitRowsDefinition( LayoutMode ) { var FitRows = LayoutMode.create('fitRows'); FitRows.prototype._resetLayout = function() { this.x = 0; this.y = 0; this.maxY = 0; this._getMeasurement( 'gutter', 'outerWidth' ); }; FitRows.prototype._getItemLayoutPosition = function( item ) { item.getSize(); var itemWidth = item.size.outerWidth + this.gutter; // if this element cannot fit in the current row var containerWidth = this.isotope.size.innerWidth + this.gutter; if ( this.x !== 0 && itemWidth + this.x > containerWidth ) { this.x = 0; this.y = this.maxY; } var position = { x: this.x, y: this.y }; this.maxY = Math.max( this.maxY, this.y + item.size.outerHeight ); this.x += itemWidth; return position; }; FitRows.prototype._getContainerSize = function() { return { height: this.maxY }; }; return FitRows; } if ( typeof define === 'function' && define.amd ) { // AMD define( [ '../layout-mode' ], fitRowsDefinition ); } else { // browser global fitRowsDefinition( window.Isotope.LayoutMode ); } })( window );