78 lines
1.7 KiB
JavaScript
78 lines
1.7 KiB
JavaScript
/**
|
|
* Isotope Item
|
|
**/
|
|
|
|
( function( window, factory ) {
|
|
// universal module definition
|
|
/* jshint strict: false */ /*globals define, module, require */
|
|
if ( typeof define == 'function' && define.amd ) {
|
|
// AMD
|
|
define( [
|
|
'outlayer/outlayer'
|
|
],
|
|
factory );
|
|
} else if ( typeof module == 'object' && module.exports ) {
|
|
// CommonJS
|
|
module.exports = factory(
|
|
require('outlayer')
|
|
);
|
|
} else {
|
|
// browser global
|
|
window.Isotope = window.Isotope || {};
|
|
window.Isotope.Item = factory(
|
|
window.Outlayer
|
|
);
|
|
}
|
|
|
|
}( window, function factory( Outlayer ) {
|
|
'use strict';
|
|
|
|
// -------------------------- Item -------------------------- //
|
|
|
|
// sub-class Outlayer Item
|
|
function Item() {
|
|
Outlayer.Item.apply( this, arguments );
|
|
}
|
|
|
|
var proto = Item.prototype = Object.create( Outlayer.Item.prototype );
|
|
|
|
var _create = proto._create;
|
|
proto._create = function() {
|
|
// assign id, used for original-order sorting
|
|
this.id = this.layout.itemGUID++;
|
|
_create.call( this );
|
|
this.sortData = {};
|
|
};
|
|
|
|
proto.updateSortData = function() {
|
|
if ( this.isIgnored ) {
|
|
return;
|
|
}
|
|
// default sorters
|
|
this.sortData.id = this.id;
|
|
// for backward compatibility
|
|
this.sortData['original-order'] = this.id;
|
|
this.sortData.random = Math.random();
|
|
// go thru getSortData obj and apply the sorters
|
|
var getSortData = this.layout.options.getSortData;
|
|
var sorters = this.layout._sorters;
|
|
for ( var key in getSortData ) {
|
|
var sorter = sorters[ key ];
|
|
this.sortData[ key ] = sorter( this.element, this );
|
|
}
|
|
};
|
|
|
|
var _destroy = proto.destroy;
|
|
proto.destroy = function() {
|
|
// call super
|
|
_destroy.apply( this, arguments );
|
|
// reset display, #741
|
|
this.css({
|
|
display: ''
|
|
});
|
|
};
|
|
|
|
return Item;
|
|
|
|
}));
|