mirror of https://github.com/metafizzy/isotope
Filter & sort magical layouts
http://isotope.metafizzy.co
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.3 KiB
59 lines
1.3 KiB
( function( window ) { |
|
|
|
'use strict'; |
|
|
|
function cellsByRowDefinition( LayoutMode ) { |
|
|
|
var CellsByRow = LayoutMode.create( 'cellsByRow' ); |
|
|
|
CellsByRow.prototype._resetLayout = function() { |
|
// reset properties |
|
this.itemIndex = 0; |
|
// measurements |
|
this.getColumnWidth(); |
|
this.getRowHeight(); |
|
// set cols |
|
this.cols = Math.floor( this.isotope.size.innerWidth / this.columnWidth ); |
|
this.cols = Math.max( this.cols, 1 ); |
|
}; |
|
|
|
CellsByRow.prototype._getItemLayoutPosition = function( item ) { |
|
item.getSize(); |
|
var col = this.itemIndex % this.cols; |
|
var row = Math.floor( this.itemIndex / this.cols ); |
|
// center item within cell |
|
var x = ( col + 0.5 ) * this.columnWidth - item.size.outerWidth / 2; |
|
var y = ( row + 0.5 ) * this.rowHeight - item.size.outerHeight / 2; |
|
this.itemIndex++; |
|
return { x: x, y: y }; |
|
}; |
|
|
|
CellsByRow.prototype._getContainerSize = function() { |
|
return { |
|
height: Math.ceil( this.itemIndex / this.cols ) * this.rowHeight |
|
}; |
|
}; |
|
|
|
return CellsByRow; |
|
|
|
} |
|
|
|
if ( typeof define === 'function' && define.amd ) { |
|
// AMD |
|
define( [ |
|
'../js/layout-mode', |
|
'get-size/get-size' |
|
], |
|
cellsByRowDefinition ); |
|
} else { |
|
// browser global |
|
cellsByRowDefinition( |
|
window.Isotope.LayoutMode, |
|
window.getSize |
|
); |
|
} |
|
|
|
|
|
})( window ); |
|
|
|
|
|
|