From d80a0b35224d251b9730818cc16e7a8fe6b20d01 Mon Sep 17 00:00:00 2001 From: David DeSandro Date: Mon, 14 Oct 2013 23:14:31 -0400 Subject: [PATCH] surface LayoutMode constructor --- isotope.js | 16 +++++------ layout-mode.js | 44 ++++++++++++++++-------------- layout-modes/cells-by-column.js | 6 ++-- layout-modes/cells-by-row.js | 6 ++-- layout-modes/fit-columns.js | 6 ++-- layout-modes/fit-rows.js | 6 ++-- layout-modes/horizontal.js | 6 ++-- layout-modes/masonry-horizontal.js | 4 +-- layout-modes/masonry.js | 6 ++-- layout-modes/vertical.js | 6 ++-- 10 files changed, 55 insertions(+), 51 deletions(-) diff --git a/isotope.js b/isotope.js index ab1912f..6d3856f 100644 --- a/isotope.js +++ b/isotope.js @@ -39,14 +39,14 @@ var getText = docElem.textContent ? // -------------------------- isotopeDefinition -------------------------- // // used for AMD definition and requires -function isotopeDefinition( Outlayer, getSize, matchesSelector, Item, layoutMode ) { +function isotopeDefinition( Outlayer, getSize, matchesSelector, Item, LayoutMode ) { // create an Outlayer layout class var Isotope = Outlayer.create( 'isotope', { sortAscending: true }); Isotope.Item = Isotope.prototype.settings.item = Item; - Isotope.layoutMode = layoutMode; + Isotope.LayoutMode = LayoutMode; Isotope.prototype._create = function() { this.itemGUID = 0; @@ -56,7 +56,7 @@ function isotopeDefinition( Outlayer, getSize, matchesSelector, Item, layoutMode // create layout modes this.modes = {}; // create from registered layout modes - for ( var name in layoutMode.modes ) { + for ( var name in LayoutMode.modes ) { this._initLayoutMode( name ); } // functions that sort items @@ -86,14 +86,14 @@ function isotopeDefinition( Outlayer, getSize, matchesSelector, Item, layoutMode // -------------------------- layout -------------------------- // Isotope.prototype._initLayoutMode = function( name ) { - var LayoutMode = layoutMode.modes[ name ]; + var Mode = LayoutMode.modes[ name ]; // set mode options // HACK extend initial options, back-fill in default options var initialOpts = this.options[ name ] || {}; - this.options[ name ] = LayoutMode.options ? - extend( LayoutMode.options, initialOpts ) : initialOpts; + this.options[ name ] = Mode.options ? + extend( Mode.options, initialOpts ) : initialOpts; // init layout mode instance - this.modes[ name ] = new LayoutMode( this ); + this.modes[ name ] = new Mode( this ); }; Isotope.prototype.layout = function( opts ) { @@ -385,7 +385,7 @@ if ( typeof define === 'function' && define.amd ) { window.getSize, window.matchesSelector, window.Isotope.Item, - window.Isotope.layoutMode + window.Isotope.LayoutMode ); } diff --git a/layout-mode.js b/layout-mode.js index 3f76ed3..9765612 100644 --- a/layout-mode.js +++ b/layout-mode.js @@ -6,11 +6,6 @@ function layoutModeDefinition( getSize, Outlayer ) { -var layoutMode = {}; - -layoutMode.modes = {}; - -layoutMode.create = function( namespace, options ) { // layout mode class function LayoutMode( isotope ) { this.isotope = isotope; @@ -24,16 +19,6 @@ layoutMode.create = function( namespace, options ) { } } - // default options - if ( options ) { - LayoutMode.options = options; - } - - LayoutMode.prototype.namespace = namespace; - // register in Isotope - layoutMode.modes[ namespace ] = LayoutMode; - - /** * some methods should just defer to default Outlayer method * and reference the Isotope instance as `this` @@ -117,13 +102,32 @@ layoutMode.create = function( namespace, options ) { this.size = this.isotope.size; }; - // ----- ----- // + // -------------------------- create -------------------------- // - return LayoutMode; -}; + LayoutMode.modes = {}; + + LayoutMode.create = function( namespace, options ) { + function Mode() { + LayoutMode.apply( this, arguments ); + } + + Mode.prototype = new LayoutMode(); + + // default options + if ( options ) { + Mode.options = options; + } + + Mode.prototype.namespace = namespace; + // register in Isotope + LayoutMode.modes[ namespace ] = Mode; -return layoutMode; + return Mode; + }; + + + return LayoutMode; } @@ -137,7 +141,7 @@ if ( typeof define === 'function' && define.amd ) { } else { // browser global window.Isotope = window.Isotope || {}; - window.Isotope.layoutMode = layoutModeDefinition( + window.Isotope.LayoutMode = layoutModeDefinition( window.getSize, window.Outlayer ); diff --git a/layout-modes/cells-by-column.js b/layout-modes/cells-by-column.js index d5f5fe8..2cf34c9 100644 --- a/layout-modes/cells-by-column.js +++ b/layout-modes/cells-by-column.js @@ -2,9 +2,9 @@ 'use strict'; -function cellsByColumnDefinition( layoutMode ) { +function cellsByColumnDefinition( LayoutMode ) { - var CellsByColumn = layoutMode.create( 'cellsByColumn' ); + var CellsByColumn = LayoutMode.create( 'cellsByColumn' ); CellsByColumn.prototype._resetLayout = function() { // reset properties @@ -51,7 +51,7 @@ if ( typeof define === 'function' && define.amd ) { } else { // browser global cellsByColumnDefinition( - window.Isotope.layoutMode + window.Isotope.LayoutMode ); } diff --git a/layout-modes/cells-by-row.js b/layout-modes/cells-by-row.js index 889b68f..eb2d9e6 100644 --- a/layout-modes/cells-by-row.js +++ b/layout-modes/cells-by-row.js @@ -2,9 +2,9 @@ 'use strict'; -function cellsByRowDefinition( layoutMode ) { +function cellsByRowDefinition( LayoutMode ) { - var CellsByRow = layoutMode.create( 'cellsByRow' ); + var CellsByRow = LayoutMode.create( 'cellsByRow' ); CellsByRow.prototype._resetLayout = function() { // reset properties @@ -48,7 +48,7 @@ if ( typeof define === 'function' && define.amd ) { } else { // browser global cellsByRowDefinition( - window.Isotope.layoutMode, + window.Isotope.LayoutMode, window.getSize ); } diff --git a/layout-modes/fit-columns.js b/layout-modes/fit-columns.js index 455ff8a..2460db8 100644 --- a/layout-modes/fit-columns.js +++ b/layout-modes/fit-columns.js @@ -2,9 +2,9 @@ 'use strict'; -function fitColumnsDefinition( layoutMode ) { +function fitColumnsDefinition( LayoutMode ) { - var FitColumns = layoutMode.create('fitColumns'); + var FitColumns = LayoutMode.create('fitColumns'); FitColumns.prototype._resetLayout = function() { this.x = 0; @@ -53,7 +53,7 @@ if ( typeof define === 'function' && define.amd ) { } else { // browser global fitColumnsDefinition( - window.Isotope.layoutMode + window.Isotope.LayoutMode ); } diff --git a/layout-modes/fit-rows.js b/layout-modes/fit-rows.js index f36fa31..55f7ef1 100644 --- a/layout-modes/fit-rows.js +++ b/layout-modes/fit-rows.js @@ -2,9 +2,9 @@ 'use strict'; -function fitRowsDefinition( layoutMode ) { +function fitRowsDefinition( LayoutMode ) { -var FitRows = layoutMode.create( 'fitRows', { +var FitRows = LayoutMode.create( 'fitRows', { foo: 'bar' }); @@ -51,7 +51,7 @@ if ( typeof define === 'function' && define.amd ) { } else { // browser global fitRowsDefinition( - window.Isotope.layoutMode + window.Isotope.LayoutMode ); } diff --git a/layout-modes/horizontal.js b/layout-modes/horizontal.js index 9b9f1f1..1833933 100644 --- a/layout-modes/horizontal.js +++ b/layout-modes/horizontal.js @@ -2,9 +2,9 @@ 'use strict'; -function horizontalDefinition( layoutMode ) { +function horizontalDefinition( LayoutMode ) { - var Horizontal = layoutMode.create( 'horizontal', { + var Horizontal = LayoutMode.create( 'horizontal', { verticalAlignment: 0 }); @@ -42,7 +42,7 @@ if ( typeof define === 'function' && define.amd ) { } else { // browser global horizontalDefinition( - window.Isotope.layoutMode + window.Isotope.LayoutMode ); } diff --git a/layout-modes/masonry-horizontal.js b/layout-modes/masonry-horizontal.js index 13a6e68..85c84db 100644 --- a/layout-modes/masonry-horizontal.js +++ b/layout-modes/masonry-horizontal.js @@ -22,7 +22,7 @@ var indexOf = Array.prototype.indexOf ? function masonryHorizontalDefinition( getSize, layoutMode ) { // create an Outlayer layout class - var MasonryHorizontal = layoutMode.create('masonryHorizontal'); + var MasonryHorizontal = LayoutMode.create('masonryHorizontal'); MasonryHorizontal.prototype._resetLayout = function() { this.getRowHeight(); @@ -138,7 +138,7 @@ if ( typeof define === 'function' && define.amd ) { // browser global masonryHorizontalDefinition( window.getSize, - window.Isotope.layoutMode + window.Isotope.LayoutMode ); } diff --git a/layout-modes/masonry.js b/layout-modes/masonry.js index ef0d9d2..fed4eb2 100644 --- a/layout-modes/masonry.js +++ b/layout-modes/masonry.js @@ -21,9 +21,9 @@ function extend( a, b ) { // -------------------------- masonryDefinition -------------------------- // // used for AMD definition and requires -function masonryDefinition( layoutMode, Masonry ) { +function masonryDefinition( LayoutMode, Masonry ) { // create an Outlayer layout class - var MasonryMode = layoutMode.create('masonry'); + var MasonryMode = LayoutMode.create('masonry'); // save on to these methods var _getElementOffset = MasonryMode.prototype._getElementOffset; @@ -51,7 +51,7 @@ if ( typeof define === 'function' && define.amd ) { } else { // browser global masonryDefinition( - window.Isotope.layoutMode, + window.Isotope.LayoutMode, window.Masonry ); } diff --git a/layout-modes/vertical.js b/layout-modes/vertical.js index c5c91df..841e291 100644 --- a/layout-modes/vertical.js +++ b/layout-modes/vertical.js @@ -2,9 +2,9 @@ 'use strict'; -function verticalDefinition( layoutMode ) { +function verticalDefinition( LayoutMode ) { -var Vertical = layoutMode.create( 'vertical', { +var Vertical = LayoutMode.create( 'vertical', { horizontalAlignment: 0 }); @@ -38,7 +38,7 @@ if ( typeof define === 'function' && define.amd ) { } else { // browser global verticalDefinition( - window.Isotope.layoutMode + window.Isotope.LayoutMode ); }