Browse Source

Merge branch 'master' of github.com:desandro/isotope

pull/96/head
David DeSandro 14 years ago
parent
commit
398ea37658
  1. 19
      _posts/tests/2011-03-27-destroy01.html
  2. 4
      _posts/tests/2011-03-27-no-items01.html
  3. 40
      _posts/tests/2011-04-26-item-position-data01.html
  4. 392
      jquery.isotope.js
  5. 4
      jquery.isotope.min.js

19
_posts/tests/2011-03-27-destroy01.html

@ -12,7 +12,12 @@ category: tests
</style> </style>
<section id="copy"> <section id="copy">
<p>After <code>destroy</code>-ing Isotope, original CSS gets re-applied</p> <p>Click <em>init</em> button the <em>destroy</em>. Original CSS, pre-init, should be re-applied, all items back to visibility.</p>
</section>
<section id="options">
<button id="init">Init Isotope instance</button>
<button id="destroy">Destroy Isotope instance</button>
</section> </section>
<div id="container" style="height: 600px"> <div id="container" style="height: 600px">
@ -28,9 +33,15 @@ category: tests
var $container = $('#container'); var $container = $('#container');
$container.isotope({ $('#init').click(function(){
itemSelector: '.element', $container.isotope({
filter: '.metal' itemSelector: '.element',
filter: '.metal'
});
});
$('#destroy').click(function(){
$container.isotope('destroy');
}); });
}); });

4
_posts/tests/2011-03-27-no-items01.html

@ -5,7 +5,7 @@ category: tests
--- ---
<section id="copy"> <section id="copy">
<p>What happens when there are no items for Isotope/</p> <p>What happens when there are no items for Isotope? If no items match `itemSelector`, container collapses. Plugin still <code>return this</code>.</p>
</section> </section>
<div id="container"> <div id="container">
@ -23,7 +23,7 @@ category: tests
$container.isotope({ $container.isotope({
itemSelector: '.foo' itemSelector: '.foo'
}); }).css('border', '10px solid');
}); });
</script> </script>

40
_posts/tests/2011-04-26-item-position-data01.html

@ -5,30 +5,11 @@ category: tests
--- ---
<section id="copy"> <section id="copy">
<p></p> <p><code>itemPositionDataEnabled</code> option is enabled. </p>
</section> </section>
<section id="options" class="clearfix"> <section id="options" class="clearfix">
<h3>Filters</h3>
<ul id="filters" class="option-set floated clearfix">
<li><a href="#show-all" class="selected">show all</a></li>
<li><a href="#metalloid">metalloid</a></li>
<li><a href="#metal">metal</a></li>
<li><a href="#alkali">alkali</a></li>
<li><a href="#alkaline-earth">alkaline-earth</a></li>
<li><a href="#inner-transition">inner-transition</a></li>
<li><a href="#lanthanoid">lanthanoid</a></li>
<li><a href="#actinoid">actinoid</a></li>
<li><a href="#transition">transition</a></li>
<li><a href="#post-transition">post-transition</a></li>
<li><a href="#nonmetal">nonmetal</a></li>
<li><a href="#other">other</a></li>
<li><a href="#halogen">halogen</a></li>
<li><a href="#noble-gas">noble-gas</a></li>
</ul>
{% include sort-buttons.html %} {% include sort-buttons.html %}
<h3>Etc</h3> <h3>Etc</h3>
@ -39,7 +20,7 @@ category: tests
</ul> </ul>
</section> <!-- #options --> </section> <!-- #options -->
<div id="container"> <div id="container" class="clickable clearfix">
{% for element in site.elements limit:40 %} {% for element in site.elements limit:40 %}
{% include element-partial.html %} {% include element-partial.html %}
{% endfor %} {% endfor %}
@ -48,16 +29,25 @@ category: tests
<script src="../{{ site.jquery_js }}"></script> <script src="../{{ site.jquery_js }}"></script>
<script src="../{{ site.isotope_js }}"></script> <script src="../{{ site.isotope_js }}"></script>
<script> <script>
$(function(){ $(function(){
var $container = $('#container'); var $container = $('#container');
{% include sort-buttons.js %} {% include sort-buttons.js %}
// change size of clicked element // toggle variable sizes of all elements
$container.find('.element').live('click', function(){ $('#toggle-sizes').find('a').click(function(){
$(this).toggleClass('large'); $container
$container.isotope('reLayout'); .toggleClass('variable-sizes')
.isotope('reLayout');
return false;
});
// log item position
$container.find('.element').click(function(){
var position = $(this).data('isotope-item-position');
console.log( position.x + ', ' + position.y );
}); });
$container.isotope({ $container.isotope({

392
jquery.isotope.js

@ -1,5 +1,5 @@
/** /**
* Isotope v1.2.110520 * Isotope v1.3.110523
* An exquisite jQuery plugin for magical layouts * An exquisite jQuery plugin for magical layouts
* http://isotope.metafizzy.co * http://isotope.metafizzy.co
* *
@ -402,7 +402,7 @@
// bind resize method // bind resize method
if ( this.options.resizable ) { if ( this.options.resizable ) {
$(window).bind( 'smartresize.isotope', function() { $(window).bind( 'smartresize.isotope', function() {
instance.element.isotope('resize'); instance.resize();
}); });
} }
@ -441,10 +441,7 @@
}, },
option: function( key, value ){ option: function( key, value ){
// get/change options AFTER initialization: // get/change options AFTER initialization:
// you don't have to support all these cases,
// but here's how:
// signature: $('#foo').bar({ cool:false }); // signature: $('#foo').bar({ cool:false });
if ( $.isPlainObject( key ) ){ if ( $.isPlainObject( key ) ){
@ -454,17 +451,11 @@
this._updateOption( optionName ); this._updateOption( optionName );
} }
// signature: $('#foo').option('cool'); - getter
} else if ( key && typeof value === "undefined" ){
return this.options[ key ];
// signature: $('#foo').bar('option', 'baz', false); // signature: $('#foo').bar('option', 'baz', false);
} else { } else {
this.options[ key ] = value; this.options[ key ] = value;
this._updateOption( key ); this._updateOption( key );
} }
return this; // make sure to return the instance!
}, },
// ====================== updaters ====================== // // ====================== updaters ====================== //
@ -578,16 +569,13 @@
}; };
this.$filteredAtoms.sort( sortFn ); this.$filteredAtoms.sort( sortFn );
return this;
}, },
_getSorter : function( elem, sortBy ) { _getSorter : function( elem, sortBy ) {
return $(elem).data('isotope-sort-data')[ sortBy ]; return $(elem).data('isotope-sort-data')[ sortBy ];
}, },
// ====================== Layout ====================== // ====================== Layout Helpers ======================
_translate : function( x, y ) { _translate : function( x, y ) {
return { translate : [ x, y ] }; return { translate : [ x, y ] };
@ -644,20 +632,20 @@
} }
this.isLaidOut = true; this.isLaidOut = true;
return this;
}, },
resize : function() { resize : function() {
return this[ '_' + this.options.layoutMode + 'Resize' ](); if ( this[ '_' + this.options.layoutMode + 'ResizeChanged' ]() ) {
this.reLayout();
}
}, },
reLayout : function( callback ) { reLayout : function( callback ) {
return this[ '_' + this.options.layoutMode + 'Reset' ]() this[ '_' + this.options.layoutMode + 'Reset' ]();
.layout( this.$filteredAtoms, callback ); this.layout( this.$filteredAtoms, callback );
}, },
@ -685,7 +673,8 @@
instance.$filteredAtoms = instance.$filteredAtoms.add( $filteredAtoms ); instance.$filteredAtoms = instance.$filteredAtoms.add( $filteredAtoms );
}); });
this._sort().reLayout( callback ); this._sort();
this.reLayout( callback );
}, },
@ -734,7 +723,7 @@
this.$allAtoms = this._shuffleArray( this.$allAtoms ); this.$allAtoms = this._shuffleArray( this.$allAtoms );
this.$filteredAtoms = this._filter( this.$allAtoms ); this.$filteredAtoms = this._filter( this.$allAtoms );
return this.reLayout( callback ); this.reLayout( callback );
}, },
// destroys widget, returns elements and container back (close) to original style // destroys widget, returns elements and container back (close) to original style
@ -770,11 +759,15 @@
}, },
// ====================== LAYOUTS ======================
// calculates number of rows or columns // calculates number of rows or columns
// requires columnWidth or rowHeight to be set on namespaced object // requires columnWidth or rowHeight to be set on namespaced object
// i.e. this.masonry.columnWidth = 200 // i.e. this.masonry.columnWidth = 200
_getSegments : function( namespace, isRows ) { _getSegments : function( isRows ) {
var measure = isRows ? 'rowHeight' : 'columnWidth', var namespace = this.options.layoutMode,
measure = isRows ? 'rowHeight' : 'columnWidth',
size = isRows ? 'height' : 'width', size = isRows ? 'height' : 'width',
UCSize = isRows ? 'Height' : 'Width', UCSize = isRows ? 'Height' : 'Width',
segmentsName = isRows ? 'rows' : 'cols', segmentsName = isRows ? 'rows' : 'cols',
@ -798,44 +791,32 @@
// i.e. this.masonry.columnWidth = ... // i.e. this.masonry.columnWidth = ...
this[ namespace ][ measure ] = segmentSize; this[ namespace ][ measure ] = segmentSize;
return this;
}, },
// ====================== LAYOUTS ====================== _checkIfSegmentsChanged : function( isRows ) {
var namespace = this.options.layoutMode,
segmentsName = isRows ? 'rows' : 'cols',
prevSegments = this[ namespace ][ segmentsName ];
// update cols/rows
this._getSegments( isRows );
// return if updated cols/rows is not equal to previous
return ( this[ namespace ][ segmentsName ] !== prevSegments );
},
// ====================== Masonry ====================== // ====================== Masonry ======================
_masonryPlaceBrick : function( $brick, setCount, setY ) { _masonryReset : function() {
// here, `this` refers to a child element or "brick" // layout-specific props
// get the minimum Y value from the columns this.masonry = {};
var minimumY = Math.min.apply( Math, setY ), // FIXME shouldn't have to call this again
setHeight = minimumY + $brick.outerHeight(true), this._getSegments();
i = setY.length, var i = this.masonry.cols;
shortCol = i, this.masonry.colYs = [];
setSpan = this.masonry.cols + 1 - i,
x, y ;
// Which column has the minY value, closest to the left
while (i--) { while (i--) {
if ( setY[i] === minimumY ) { this.masonry.colYs.push( this.posTop );
shortCol = i;
}
}
// position the brick
x = this.masonry.columnWidth * shortCol + this.posLeft;
y = minimumY;
this._pushPosition( $brick, x, y );
// apply setHeight to necessary columns
for ( i=0; i < setSpan; i++ ) {
this.masonry.colYs[ shortCol + i ] = setHeight;
} }
}, },
_masonryLayout : function( $elems ) { _masonryLayout : function( $elems ) {
var instance = this; var instance = this;
$elems.each(function(){ $elems.each(function(){
@ -846,7 +827,7 @@
if ( colSpan === 1 ) { if ( colSpan === 1 ) {
// if brick spans only one column, just like singleMode // if brick spans only one column, just like singleMode
instance._masonryPlaceBrick( $this, instance.masonry.cols, instance.masonry.colYs ); instance._masonryPlaceBrick( $this, instance.masonry.colYs );
} else { } else {
// brick spans more than one column // brick spans more than one column
// how many different places could this brick fit horizontally // how many different places could this brick fit horizontally
@ -863,36 +844,38 @@
groupY[i] = Math.max.apply( Math, groupColY ); groupY[i] = Math.max.apply( Math, groupColY );
} }
instance._masonryPlaceBrick( $this, groupCount, groupY ); instance._masonryPlaceBrick( $this, groupY );
} }
}); });
return this;
}, },
// reset // worker method that places brick in the columnSet
_masonryReset : function() { // with the the minY
// layout-specific props _masonryPlaceBrick : function( $brick, setY ) {
this.masonry = {}; // get the minimum Y value from the columns
// FIXME shouldn't have to call this again var minimumY = Math.min.apply( Math, setY ),
this._getSegments('masonry'); setHeight = minimumY + $brick.outerHeight(true),
var i = this.masonry.cols; i = setY.length,
this.masonry.colYs = []; shortCol = i,
setSpan = this.masonry.cols + 1 - i,
x, y ;
// Which column has the minY value, closest to the left
while (i--) { while (i--) {
this.masonry.colYs.push( this.posTop ); if ( setY[i] === minimumY ) {
shortCol = i;
}
} }
return this;
},
_masonryResize : function() { // position the brick
var prevColCount = this.masonry.cols; x = this.masonry.columnWidth * shortCol + this.posLeft;
// get updated colCount y = minimumY;
this._getSegments('masonry'); this._pushPosition( $brick, x, y );
if ( this.masonry.cols !== prevColCount ) {
// if column count has changed, do a new column cound // apply setHeight to necessary columns
this.reLayout(); for ( i=0; i < setSpan; i++ ) {
this.masonry.colYs[ shortCol + i ] = setHeight;
} }
return this;
}, },
_masonryGetContainerSize : function() { _masonryGetContainerSize : function() {
@ -900,8 +883,19 @@
return { height: containerHeight }; return { height: containerHeight };
}, },
_masonryResizeChanged : function() {
return this._checkIfSegmentsChanged();
},
// ====================== fitRows ====================== // ====================== fitRows ======================
_fitRowsReset : function() {
this.fitRows = {
x : 0,
y : 0,
height : 0
};
},
_fitRowsLayout : function( $elems ) { _fitRowsLayout : function( $elems ) {
this.width = this.element.width(); this.width = this.element.width();
@ -928,74 +922,60 @@
instance.fitRows.x += atomW; instance.fitRows.x += atomW;
}); });
return this;
},
_fitRowsReset : function() {
this.fitRows = {
x : 0,
y : 0,
height : 0
};
return this;
}, },
_fitRowsGetContainerSize : function () { _fitRowsGetContainerSize : function () {
return { height : this.fitRows.height }; return { height : this.fitRows.height };
}, },
_fitRowsResize : function() { _fitRowsResizeChanged : function() {
return this.reLayout(); return true;
}, },
// ====================== cellsByRow ====================== // ====================== cellsByRow ======================
_cellsByRowReset : function() { _cellsByRowReset : function() {
this.cellsByRow = {}; this.cellsByRow = {
this._getSegments('cellsByRow'); index : 0
this.cellsByRow.rowHeight = this.options.cellsByRow.rowHeight || this.$allAtoms.outerHeight(true); };
return this; // get this.cellsByRow.columnWidth
this._getSegments();
// get this.cellsByRow.rowHeight
this._getSegments(true);
}, },
_cellsByRowLayout : function( $elems ) { _cellsByRowLayout : function( $elems ) {
var instance = this, var instance = this,
cols = this.cellsByRow.cols; props = this.cellsByRow;
this.cellsByRow.atomsLen = $elems.length; $elems.each( function(){
$elems.each( function( i ){
var $this = $(this), var $this = $(this),
x = ( i % cols + 0.5 ) * instance.cellsByRow.columnWidth - col = props.index % props.cols,
row = ~~( props.index / props.cols ),
x = ( col + 0.5 ) * props.columnWidth -
$this.outerWidth(true) / 2 + instance.posLeft, $this.outerWidth(true) / 2 + instance.posLeft,
y = ( ~~( i / cols ) + 0.5 ) * instance.cellsByRow.rowHeight - y = ( row + 0.5 ) * props.rowHeight -
$this.outerHeight(true) / 2 + instance.posTop; $this.outerHeight(true) / 2 + instance.posTop;
instance._pushPosition( $this, x, y ); instance._pushPosition( $this, x, y );
props.index ++;
}); });
return this;
}, },
_cellsByRowGetContainerSize : function() { _cellsByRowGetContainerSize : function() {
return { height : Math.ceil( this.cellsByRow.atomsLen / this.cellsByRow.cols ) * this.cellsByRow.rowHeight + this.posTop }; return { height : Math.ceil( this.$filteredAtoms.length / this.cellsByRow.cols ) * this.cellsByRow.rowHeight + this.posTop };
}, },
_cellsByRowResize : function() { _cellsByRowResizeChanged : function() {
var prevCols = this.cellsByRow.cols; return this._checkIfSegmentsChanged();
this._getSegments('cellsByRow');
// if column count has changed, do a new column cound
if ( this.cellsByRow.cols !== prevCols ) {
this.reLayout();
}
return this;
}, },
// ====================== straightDown ====================== // ====================== straightDown ======================
_straightDownReset : function() { _straightDownReset : function() {
this.straightDown = { this.straightDown = {
y : 0 y : 0
}; };
return this;
}, },
_straightDownLayout : function( $elems ) { _straightDownLayout : function( $elems ) {
@ -1006,47 +986,29 @@
instance._pushPosition( $this, instance.posLeft, y ); instance._pushPosition( $this, instance.posLeft, y );
instance.straightDown.y += $this.outerHeight(true); instance.straightDown.y += $this.outerHeight(true);
}); });
return this;
}, },
_straightDownGetContainerSize : function() { _straightDownGetContainerSize : function() {
return { height : this.straightDown.y + this.posTop }; return { height : this.straightDown.y + this.posTop };
}, },
_straightDownResize : function() { _straightDownResizeChanged : function() {
this.reLayout(); return true;
return this;
}, },
// ====================== masonryHorizontal ====================== // ====================== masonryHorizontal ======================
_masonryHorizontalPlaceBrick : function( $brick, setCount, setX ) { _masonryHorizontalReset : function() {
// here, `this` refers to a child element or "brick" // layout-specific props
// get the minimum Y value from the columns this.masonryHorizontal = {};
var minimumX = Math.min.apply( Math, setX ), // FIXME shouldn't have to call this again
setWidth = minimumX + $brick.outerWidth(true), this._getSegments( true );
i = setX.length, var i = this.masonryHorizontal.rows;
smallRow = i, this.masonryHorizontal.rowXs = [];
setSpan = this.masonryHorizontal.rows + 1 - i,
x, y ;
// Which column has the minY value, closest to the left
while (i--) { while (i--) {
if ( setX[i] === minimumX ) { this.masonryHorizontal.rowXs.push( this.posLeft );
smallRow = i;
}
}
// position the brick
x = minimumX;
y = this.masonryHorizontal.rowHeight * smallRow + this.posTop;
this._pushPosition( $brick, x, y );
// apply setHeight to necessary columns
for ( i=0; i < setSpan; i++ ) {
this.masonryHorizontal.rowXs[ smallRow + i ] = setWidth;
} }
}, },
_masonryHorizontalLayout : function( $elems ) { _masonryHorizontalLayout : function( $elems ) {
@ -1059,7 +1021,7 @@
if ( rowSpan === 1 ) { if ( rowSpan === 1 ) {
// if brick spans only one column, just like singleMode // if brick spans only one column, just like singleMode
instance._masonryHorizontalPlaceBrick( $this, instance.masonryHorizontal.rows, instance.masonryHorizontal.rowXs ); instance._masonryHorizontalPlaceBrick( $this, instance.masonryHorizontal.rowXs );
} else { } else {
// brick spans more than one row // brick spans more than one row
// how many different places could this brick fit horizontally // how many different places could this brick fit horizontally
@ -1075,35 +1037,37 @@
groupX[i] = Math.max.apply( Math, groupRowX ); groupX[i] = Math.max.apply( Math, groupRowX );
} }
instance._masonryHorizontalPlaceBrick( $this, groupCount, groupX ); instance._masonryHorizontalPlaceBrick( $this, groupX );
} }
}); });
return this;
}, },
_masonryHorizontalReset : function() { _masonryHorizontalPlaceBrick : function( $brick, setX ) {
// layout-specific props // here, `this` refers to a child element or "brick"
this.masonryHorizontal = {}; // get the minimum Y value from the columns
// FIXME shouldn't have to call this again var minimumX = Math.min.apply( Math, setX ),
this._getSegments( 'masonryHorizontal', true ); setWidth = minimumX + $brick.outerWidth(true),
var i = this.masonryHorizontal.rows; i = setX.length,
this.masonryHorizontal.rowXs = []; smallRow = i,
setSpan = this.masonryHorizontal.rows + 1 - i,
x, y ;
// Which column has the minY value, closest to the left
while (i--) { while (i--) {
this.masonryHorizontal.rowXs.push( this.posLeft ); if ( setX[i] === minimumX ) {
smallRow = i;
}
} }
return this;
},
_masonryHorizontalResize : function() { // position the brick
var prevRows = this.masonryHorizontal.rows; x = minimumX;
// get updated colCount y = this.masonryHorizontal.rowHeight * smallRow + this.posTop;
this._getSegments( 'masonryHorizontal', true ); this._pushPosition( $brick, x, y );
if ( this.masonryHorizontal.rows !== prevRows ) {
// if column count has changed, do a new column cound // apply setHeight to necessary columns
this.reLayout(); for ( i=0; i < setSpan; i++ ) {
this.masonryHorizontal.rowXs[ smallRow + i ] = setWidth;
} }
return this;
}, },
_masonryHorizontalGetContainerSize : function() { _masonryHorizontalGetContainerSize : function() {
@ -1111,8 +1075,12 @@
return { width: containerWidth }; return { width: containerWidth };
}, },
_masonryHorizontalResizeChanged : function() {
return this._checkIfSegmentsChanged(true);
},
// ====================== fitColumns ======================
// ====================== fitColumns ======================
_fitColumnsReset : function() { _fitColumnsReset : function() {
this.fitColumns = { this.fitColumns = {
@ -1120,7 +1088,6 @@
y : 0, y : 0,
width : 0 width : 0
}; };
return this;
}, },
_fitColumnsLayout : function( $elems ) { _fitColumnsLayout : function( $elems ) {
@ -1147,86 +1114,79 @@
instance.fitColumns.y += atomH; instance.fitColumns.y += atomH;
}); });
return this;
}, },
_fitColumnsGetContainerSize : function () { _fitColumnsGetContainerSize : function () {
return { width : this.fitColumns.width }; return { width : this.fitColumns.width };
}, },
_fitColumnsResize : function() { _fitColumnsResizeChanged : function() {
return this.reLayout(); return true;
}, },
// ====================== cellsByColumn ====================== // ====================== cellsByColumn ======================
_cellsByColumnReset : function() { _cellsByColumnReset : function() {
this.cellsByColumn = {}; this.cellsByColumn = {
this._getSegments( 'cellsByColumn', true ); index : 0
this.cellsByColumn.columnWidth = this.options.cellsByColumn.columnWidth || this.$allAtoms.outerHeight(true); };
return this; // get this.cellsByColumn.columnWidth
this._getSegments();
// get this.cellsByColumn.rowHeight
this._getSegments(true);
}, },
_cellsByColumnLayout : function( $elems ) { _cellsByColumnLayout : function( $elems ) {
var instance = this, var instance = this,
rows = this.cellsByColumn.rows; props = this.cellsByColumn;
this.cellsByColumn.atomsLen = $elems.length; $elems.each( function(){
$elems.each( function( i ){
var $this = $(this), var $this = $(this),
x = ( ~~( i / rows ) + 0.5 ) * instance.cellsByColumn.columnWidth - col = ~~( props.index / props.rows ),
row = props.index % props.rows,
x = ( col + 0.5 ) * props.columnWidth -
$this.outerWidth(true) / 2 + instance.posLeft, $this.outerWidth(true) / 2 + instance.posLeft,
y = ( i % rows + 0.5 ) * instance.cellsByColumn.rowHeight - y = ( row + 0.5 ) * props.rowHeight -
$this.outerHeight(true) / 2 + instance.posTop; $this.outerHeight(true) / 2 + instance.posTop;
instance._pushPosition( $this, x, y ); instance._pushPosition( $this, x, y );
props.index ++;
}); });
return this;
}, },
_cellsByColumnGetContainerSize : function() { _cellsByColumnGetContainerSize : function() {
return { width : Math.ceil( this.cellsByColumn.atomsLen / this.cellsByColumn.rows ) * this.cellsByColumn.columnWidth + this.posLeft }; return { width : Math.ceil( this.$filteredAtoms.length / this.cellsByColumn.rows ) * this.cellsByColumn.columnWidth + this.posLeft };
}, },
_cellsByColumnResize : function() { _cellsByColumnResizeChanged : function() {
var prevRows = this.cellsByColumn.rows; return this._checkIfSegmentsChanged(true);
this._getSegments( 'cellsByColumn', true );
// if column count has changed, do a new column cound
if ( this.cellsByColumn.rows !== prevRows ) {
this.reLayout();
}
return this;
}, },
// ====================== straightAcross ====================== // ====================== straightAcross ======================
_straightAcrossReset : function() { _straightAcrossReset : function() {
this.straightAcross = { this.straightAcross = {
x : 0 x : 0
}; };
return this; },
},
_straightAcrossLayout : function( $elems ) { _straightAcrossLayout : function( $elems ) {
var instance = this; var instance = this;
$elems.each( function( i ){ $elems.each( function( i ){
var $this = $(this), var $this = $(this),
x = instance.straightAcross.x + instance.posLeft; x = instance.straightAcross.x + instance.posLeft;
instance._pushPosition( $this, x, instance.posTop ); instance._pushPosition( $this, x, instance.posTop );
instance.straightAcross.x += $this.outerWidth(true); instance.straightAcross.x += $this.outerWidth(true);
}); });
return this; },
},
_straightAcrossGetContainerSize : function() { _straightAcrossGetContainerSize : function() {
return { width : this.straightAcross.x + this.posLeft }; return { width : this.straightAcross.x + this.posLeft };
}, },
_straightAcrossResize : function() { _straightAcrossResizeChanged : function() {
this.reLayout(); return true;
return this; }
}
}; };
@ -1278,7 +1238,7 @@
// call method // call method
var args = Array.prototype.slice.call( arguments, 1 ); var args = Array.prototype.slice.call( arguments, 1 );
return this.each(function(){ this.each(function(){
var instance = $.data( this, 'isotope' ); var instance = $.data( this, 'isotope' );
if ( !instance ) { if ( !instance ) {
return $.error( "cannot call methods on isotope prior to initialization; " + return $.error( "cannot call methods on isotope prior to initialization; " +
@ -1291,17 +1251,21 @@
instance[ options ].apply( instance, args ); instance[ options ].apply( instance, args );
}); });
} else { } else {
return this.each(function() { this.each(function() {
var instance = $.data( this, 'isotope' ); var instance = $.data( this, 'isotope' );
if ( instance ) { if ( instance ) {
// apply options & init // apply options & init
instance.option( options || {} )._init(); instance.option( options || {} );
instance._init();
} else { } else {
// initialize new instance // initialize new instance
$.data( this, 'isotope', new $.Isotope( options, this ) ); $.data( this, 'isotope', new $.Isotope( options, this ) );
} }
}); });
} }
// return jQuery object
// so plugin methods do not have to
return this;
}; };
})( window, jQuery ); })( window, jQuery );

4
jquery.isotope.min.js vendored

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save