/** * CellsByRow example */ ( function( window, factory ) { /* jshint strict: false */ /* globals define, module, require */ if ( typeof define == 'function' && define.amd ) { // AMD define( [ '../outlayer' ], factory ); } else if ( typeof module == 'object' && module.exports ) { module.exports = factory( require('../outlayer') ); } else { // browser global window.CellsByRow = factory( window.Outlayer ); } }( window, function factory( Outlayer) { 'use strict'; var CellsByRow = Outlayer.create( 'cellsByRow', { columnWidth: 100, rowHeight: 100 }); CellsByRow.prototype._resetLayout = function() { this.getSize(); this._getMeasurement( 'columnWidth', 'outerWidth' ); this._getMeasurement( 'rowHeight', 'outerHeight' ); var isHorizontal = this._getOption('horizontal'); if ( isHorizontal ) { this.rows = Math.floor( this.size.innerHeight / this.rowHeight ); this.rows = Math.max( this.rows, 1 ); } else { this.cols = Math.floor( this.size.innerWidth / this.columnWidth ); this.cols = Math.max( this.cols, 1 ); } this.itemIndex = 0; }; CellsByRow.prototype._getItemLayoutPosition = function( item ) { item.getSize(); var column, row; var isHorizontal = this._getOption('horizontal'); if ( isHorizontal ) { row = this.itemIndex % this.rows; column = Math.floor( this.itemIndex / this.rows ); } else { column = this.itemIndex % this.cols; row = Math.floor( this.itemIndex / this.cols ); } var x = column * this.columnWidth; var y = row * this.rowHeight; this.itemIndex++; return { x: x, y: y }; }; CellsByRow.prototype._getContainerSize = function() { var isHorizontal = this._getOption('horizontal'); if ( isHorizontal ) { return { width: Math.ceil( this.itemIndex / this.rows ) * this.columnWidth }; } else { return { height: Math.ceil( this.itemIndex / this.cols ) * this.rowHeight }; } }; return CellsByRow; }));