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.
 
 
 

89 lines
2.1 KiB

( function( window ) {
'use strict';
// -------------------------- -------------------------- //
function layoutModeDefinition( Outlayer ) {
var layoutMode = {};
layoutMode.modes = {};
layoutMode.create = function( namespace, options ) {
// layout mode class
function LayoutMode( isotope ) {
this.isotope = isotope;
// link properties
if ( isotope ) {
this.options = isotope.options[ this.namespace ];
this._getMeasurement = isotope._getMeasurement;
this.element = isotope.element;
this.items = isotope.items;
this.size = isotope.size;
// this.getSize = isotope.getSize;
// this._getElementOffset = isotope._getElementOffset;
}
}
// default options
if ( options ) {
LayoutMode.options = options;
}
LayoutMode.prototype.namespace = namespace;
// register in Isotope
layoutMode.modes[ namespace ] = LayoutMode;
// -------------------------- methods -------------------------- //
// default method handler
// trigger Outlayer method with Isotope as this
LayoutMode.prototype._outlayerMethod = function( methodName, args ) {
return Outlayer.prototype[ methodName ].apply( this.isotope, args );
};
LayoutMode.prototype._resetLayout = function() {
this._outlayerMethod( '_resetLayout', arguments );
};
LayoutMode.prototype._getItemLayoutPosition = function( /* item */) {
return this._outlayerMethod( '_getItemLayoutPosition', arguments );
};
LayoutMode.prototype._manageStamp = function(/* stamp */) {
this._outlayerMethod( '_manageStamp', arguments );
};
LayoutMode.prototype._getContainerSize = function() {
return this._outlayerMethod( '_getContainerSize', arguments );
};
LayoutMode.prototype.resize = function() {
this._outlayerMethod( 'resize', arguments );
};
return LayoutMode;
};
return layoutMode;
}
if ( typeof define === 'function' && define.amd ) {
// AMD
define( [
'outlayer/outlayer'
],
layoutModeDefinition );
} else {
// browser global
window.Isotope = window.Isotope || {};
window.Isotope.layoutMode = layoutModeDefinition(
window.Outlayer
);
}
})( window );