summaryrefslogtreecommitdiffstats
path: root/js/vendor/outlayer
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2016-03-25 20:19:57 +0100
committerBernhard Posselt <dev@bernhard-posselt.com>2016-03-25 20:19:57 +0100
commitf2a65b0a4aa1cd6448ec5236190dcdf1f0eb12c4 (patch)
tree5be26b5c74561b59d5662046fe8ee82c08c120cd /js/vendor/outlayer
parent8a58b145cf7d05d6c73043700b27813125d9a88f (diff)
remove compiled js and 3rdparty deps from the repo
Diffstat (limited to 'js/vendor/outlayer')
-rw-r--r--js/vendor/outlayer/.bower.json53
-rw-r--r--js/vendor/outlayer/README.md125
-rw-r--r--js/vendor/outlayer/bower.json43
-rw-r--r--js/vendor/outlayer/item.js540
-rw-r--r--js/vendor/outlayer/outlayer.js897
5 files changed, 0 insertions, 1658 deletions
diff --git a/js/vendor/outlayer/.bower.json b/js/vendor/outlayer/.bower.json
deleted file mode 100644
index d4729ec9f..000000000
--- a/js/vendor/outlayer/.bower.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "outlayer",
- "description": "the brains and guts of a layout library",
- "main": "outlayer.js",
- "dependencies": {
- "ev-emitter": "~1.0.0",
- "get-size": "~2.0.2",
- "fizzy-ui-utils": "~2.0.0"
- },
- "devDependencies": {
- "jquery-bridget": "2.x",
- "jquery": ">=1.4.3 <4",
- "qunit": "^1.17.0"
- },
- "ignore": [
- "test/",
- "docs/",
- "sandbox/",
- ".*",
- "notes.md",
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests",
- "package.json"
- ],
- "homepage": "https://github.com/metafizzy/outlayer",
- "authors": [
- "Metafizzy"
- ],
- "moduleType": [
- "amd",
- "globals",
- "node"
- ],
- "keywords": [
- "layout",
- "masonry",
- "isotope"
- ],
- "license": "MIT",
- "version": "2.0.1",
- "_release": "2.0.1",
- "_resolution": {
- "type": "version",
- "tag": "v2.0.1",
- "commit": "d18225dc48f760c6f009095c596ce68bb6c267d7"
- },
- "_source": "git://github.com/metafizzy/outlayer.git",
- "_target": "~2.0.0",
- "_originalSource": "outlayer"
-} \ No newline at end of file
diff --git a/js/vendor/outlayer/README.md b/js/vendor/outlayer/README.md
deleted file mode 100644
index 2891c811b..000000000
--- a/js/vendor/outlayer/README.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# Outlayer
-
-_Brains and guts of a layout library_
-
-Outlayer is a base layout class for layout libraries like [Isotope](http://isotope.metafizzy.co), [Packery](http://packery.metafizzy.co), and [Masonry](http://masonry.desandro.com)
-
-Outlayer layouts work with a container element and children item elements.
-
-``` html
-<div class="grid">
- <div class="item"></div>
- <div class="item"></div>
- <div class="item"></div>
- ...
-</div>
-```
-
-## Install
-
-Install with [Bower](http://bower.io): `bower install outlayer`
-
-[Install with npm](http://npmjs.org/package/outlayer): `npm install outlayer`
-
-## Outlayer.create()
-
-Create a layout class with `Outlayer.create()`
-
-``` js
-var Layout = Outlayer.create( namespace );
-// for example
-var Masonry = Outlayer.create('masonry');
-```
-
-+ `namespace` _{String}_ should be camelCased
-+ returns `LayoutClass` _{Function}_
-
-Create a new layout class. `namespace` is used for jQuery plugin, and for declarative initialization.
-
-The `Layout` inherits from [`Outlayer.prototype`](docs/outlayer.md).
-
-```
-var elem = document.querySelector('.selector');
-var msnry = new Masonry( elem, {
- // set options...
- columnWidth: 200
-});
-```
-
-## Item
-
-Layouts work with Items, accessible as `Layout.Item`. See [Item API](docs/item.md).
-
-## Declarative
-
-An Outlayer layout class can be initialized via HTML, by setting an attribute of `data-namespace` on the element. Options are set in JSON. For example:
-
-``` html
-<!-- var Masonry = Outlayer.create('masonry') -->
-<div class="grid" data-masonry='{ "itemSelector": ".item", "columnWidth": 200 }'>
- ...
-</div>
-```
-
-The declarative attributes and class will be dashed. i.e. `Outlayer.create('myNiceLayout')` will use `data-my-nice-layout` as the attribute.
-
-## .data()
-
-Get a layout instance from an element.
-
-```
-var myMasonry = Masonry.data( document.querySelector('.grid') );
-```
-
-## jQuery plugin
-
-The layout class also works as jQuery plugin.
-
-``` js
-// create Masonry layout class, namespace will be the jQuery method
-var Masonry = Outlayer.create('masonry');
-// rock some jQuery
-$( function() {
- // .masonry() to initialize
- var $grid = $('.grid').masonry({
- // options...
- });
- // methods are available by passing a string as first parameter
- $grid.masonry( 'reveal', elems );
-});
-```
-
-## RequireJS
-
-To use Outlayer with [RequireJS](http://requirejs.org/), you'll need to set some config.
-
-Set [baseUrl](http://requirejs.org/docs/api.html#config-baseUrl) to bower_components and set a [path config](http://requirejs.org/docs/api.html#config-paths) for all your application code.
-
-``` js
-requirejs.config({
- baseUrl: 'bower_components',
- paths: {
- app: '../'
- }
-});
-
-requirejs( [ 'outlayer/outlayer', 'app/my-component.js' ], function( Outlayer, myComp ) {
- new Outlayer( /*...*/ )
-});
-```
-
-Or set a path config for all Outlayer dependencies.
-
-``` js
-requirejs.config({
- paths: {
- 'ev-emitter': 'bower_components/ev-emitter',
- 'get-size': 'bower_components/get-size',
- 'matches-selector': 'bower_components/matches-selector'
- }
-});
-```
-
-## MIT license
-
-Outlayer is released under the [MIT license](http://desandro.mit-license.org).
diff --git a/js/vendor/outlayer/bower.json b/js/vendor/outlayer/bower.json
deleted file mode 100644
index e910861d7..000000000
--- a/js/vendor/outlayer/bower.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "outlayer",
- "description": "the brains and guts of a layout library",
- "main": "outlayer.js",
- "dependencies": {
- "ev-emitter": "~1.0.0",
- "get-size": "~2.0.2",
- "fizzy-ui-utils": "~2.0.0"
- },
- "devDependencies": {
- "jquery-bridget": "2.x",
- "jquery": ">=1.4.3 <4",
- "qunit": "^1.17.0"
- },
- "ignore": [
- "test/",
- "docs/",
- "sandbox/",
- ".*",
- "notes.md",
- "**/.*",
- "node_modules",
- "bower_components",
- "test",
- "tests",
- "package.json"
- ],
- "homepage": "https://github.com/metafizzy/outlayer",
- "authors": [
- "Metafizzy"
- ],
- "moduleType": [
- "amd",
- "globals",
- "node"
- ],
- "keywords": [
- "layout",
- "masonry",
- "isotope"
- ],
- "license": "MIT"
-}
diff --git a/js/vendor/outlayer/item.js b/js/vendor/outlayer/item.js
deleted file mode 100644
index 1aa792cf9..000000000
--- a/js/vendor/outlayer/item.js
+++ /dev/null
@@ -1,540 +0,0 @@
-/**
- * Outlayer Item
- */
-
-( function( window, factory ) {
- // universal module definition
- /* jshint strict: false */ /* globals define, module, require */
- if ( typeof define == 'function' && define.amd ) {
- // AMD - RequireJS
- define( [
- 'ev-emitter/ev-emitter',
- 'get-size/get-size'
- ],
- factory
- );
- } else if ( typeof module == 'object' && module.exports ) {
- // CommonJS - Browserify, Webpack
- module.exports = factory(
- require('ev-emitter'),
- require('get-size')
- );
- } else {
- // browser global
- window.Outlayer = {};
- window.Outlayer.Item = factory(
- window.EvEmitter,
- window.getSize
- );
- }
-
-}( window, function factory( EvEmitter, getSize ) {
-'use strict';
-
-// ----- helpers ----- //
-
-function isEmptyObj( obj ) {
- for ( var prop in obj ) {
- return false;
- }
- prop = null;
- return true;
-}
-
-// -------------------------- CSS3 support -------------------------- //
-
-
-var docElemStyle = document.documentElement.style;
-
-var transitionProperty = typeof docElemStyle.transition == 'string' ?
- 'transition' : 'WebkitTransition';
-var transformProperty = typeof docElemStyle.transform == 'string' ?
- 'transform' : 'WebkitTransform';
-
-var transitionEndEvent = {
- WebkitTransition: 'webkitTransitionEnd',
- transition: 'transitionend'
-}[ transitionProperty ];
-
-// cache all vendor properties that could have vendor prefix
-var vendorProperties = {
- transform: transformProperty,
- transition: transitionProperty,
- transitionDuration: transitionProperty + 'Duration',
- transitionProperty: transitionProperty + 'Property'
-};
-
-// -------------------------- Item -------------------------- //
-
-function Item( element, layout ) {
- if ( !element ) {
- return;
- }
-
- this.element = element;
- // parent layout class, i.e. Masonry, Isotope, or Packery
- this.layout = layout;
- this.position = {
- x: 0,
- y: 0
- };
-
- this._create();
-}
-
-// inherit EvEmitter
-var proto = Item.prototype = Object.create( EvEmitter.prototype );
-proto.constructor = Item;
-
-proto._create = function() {
- // transition objects
- this._transn = {
- ingProperties: {},
- clean: {},
- onEnd: {}
- };
-
- this.css({
- position: 'absolute'
- });
-};
-
-// trigger specified handler for event type
-proto.handleEvent = function( event ) {
- var method = 'on' + event.type;
- if ( this[ method ] ) {
- this[ method ]( event );
- }
-};
-
-proto.getSize = function() {
- this.size = getSize( this.element );
-};
-
-/**
- * apply CSS styles to element
- * @param {Object} style
- */
-proto.css = function( style ) {
- var elemStyle = this.element.style;
-
- for ( var prop in style ) {
- // use vendor property if available
- var supportedProp = vendorProperties[ prop ] || prop;
- elemStyle[ supportedProp ] = style[ prop ];
- }
-};
-
- // measure position, and sets it
-proto.getPosition = function() {
- var style = getComputedStyle( this.element );
- var isOriginLeft = this.layout._getOption('originLeft');
- var isOriginTop = this.layout._getOption('originTop');
- var xValue = style[ isOriginLeft ? 'left' : 'right' ];
- var yValue = style[ isOriginTop ? 'top' : 'bottom' ];
- // convert percent to pixels
- var layoutSize = this.layout.size;
- var x = xValue.indexOf('%') != -1 ?
- ( parseFloat( xValue ) / 100 ) * layoutSize.width : parseInt( xValue, 10 );
- var y = yValue.indexOf('%') != -1 ?
- ( parseFloat( yValue ) / 100 ) * layoutSize.height : parseInt( yValue, 10 );
-
- // clean up 'auto' or other non-integer values
- x = isNaN( x ) ? 0 : x;
- y = isNaN( y ) ? 0 : y;
- // remove padding from measurement
- x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;
- y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;
-
- this.position.x = x;
- this.position.y = y;
-};
-
-// set settled position, apply padding
-proto.layoutPosition = function() {
- var layoutSize = this.layout.size;
- var style = {};
- var isOriginLeft = this.layout._getOption('originLeft');
- var isOriginTop = this.layout._getOption('originTop');
-
- // x
- var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';
- var xProperty = isOriginLeft ? 'left' : 'right';
- var xResetProperty = isOriginLeft ? 'right' : 'left';
-
- var x = this.position.x + layoutSize[ xPadding ];
- // set in percentage or pixels
- style[ xProperty ] = this.getXValue( x );
- // reset other property
- style[ xResetProperty ] = '';
-
- // y
- var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';
- var yProperty = isOriginTop ? 'top' : 'bottom';
- var yResetProperty = isOriginTop ? 'bottom' : 'top';
-
- var y = this.position.y + layoutSize[ yPadding ];
- // set in percentage or pixels
- style[ yProperty ] = this.getYValue( y );
- // reset other property
- style[ yResetProperty ] = '';
-
- this.css( style );
- this.emitEvent( 'layout', [ this ] );
-};
-
-proto.getXValue = function( x ) {
- var isHorizontal = this.layout._getOption('horizontal');
- return this.layout.options.percentPosition && !isHorizontal ?
- ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';
-};
-
-proto.getYValue = function( y ) {
- var isHorizontal = this.layout._getOption('horizontal');
- return this.layout.options.percentPosition && isHorizontal ?
- ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';
-};
-
-proto._transitionTo = function( x, y ) {
- this.getPosition();
- // get current x & y from top/left
- var curX = this.position.x;
- var curY = this.position.y;
-
- var compareX = parseInt( x, 10 );
- var compareY = parseInt( y, 10 );
- var didNotMove = compareX === this.position.x && compareY === this.position.y;
-
- // save end position
- this.setPosition( x, y );
-
- // if did not move and not transitioning, just go to layout
- if ( didNotMove && !this.isTransitioning ) {
- this.layoutPosition();
- return;
- }
-
- var transX = x - curX;
- var transY = y - curY;
- var transitionStyle = {};
- transitionStyle.transform = this.getTranslate( transX, transY );
-
- this.transition({
- to: transitionStyle,
- onTransitionEnd: {
- transform: this.layoutPosition
- },
- isCleaning: true
- });
-};
-
-proto.getTranslate = function( x, y ) {
- // flip cooridinates if origin on right or bottom
- var isOriginLeft = this.layout._getOption('originLeft');
- var isOriginTop = this.layout._getOption('originTop');
- x = isOriginLeft ? x : -x;
- y = isOriginTop ? y : -y;
- return 'translate3d(' + x + 'px, ' + y + 'px, 0)';
-};
-
-// non transition + transform support
-proto.goTo = function( x, y ) {
- this.setPosition( x, y );
- this.layoutPosition();
-};
-
-proto.moveTo = proto._transitionTo;
-
-proto.setPosition = function( x, y ) {
- this.position.x = parseInt( x, 10 );
- this.position.y = parseInt( y, 10 );
-};
-
-// ----- transition ----- //
-
-/**
- * @param {Object} style - CSS
- * @param {Function} onTransitionEnd
- */
-
-// non transition, just trigger callback
-proto._nonTransition = function( args ) {
- this.css( args.to );
- if ( args.isCleaning ) {
- this._removeStyles( args.to );
- }
- for ( var prop in args.onTransitionEnd ) {
- args.onTransitionEnd[ prop ].call( this );
- }
-};
-
-/**
- * proper transition
- * @param {Object} args - arguments
- * @param {Object} to - style to transition to
- * @param {Object} from - style to start transition from
- * @param {Boolean} isCleaning - removes transition styles after transition
- * @param {Function} onTransitionEnd - callback
- */
-proto.transition = function( args ) {
- // redirect to nonTransition if no transition duration
- if ( !parseFloat( this.layout.options.transitionDuration ) ) {
- this._nonTransition( args );
- return;
- }
-
- var _transition = this._transn;
- // keep track of onTransitionEnd callback by css property
- for ( var prop in args.onTransitionEnd ) {
- _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];
- }
- // keep track of properties that are transitioning
- for ( prop in args.to ) {
- _transition.ingProperties[ prop ] = true;
- // keep track of properties to clean up when transition is done
- if ( args.isCleaning ) {
- _transition.clean[ prop ] = true;
- }
- }
-
- // set from styles
- if ( args.from ) {
- this.css( args.from );
- // force redraw. http://blog.alexmaccaw.com/css-transitions
- var h = this.element.offsetHeight;
- // hack for JSHint to hush about unused var
- h = null;
- }
- // enable transition
- this.enableTransition( args.to );
- // set styles that are transitioning
- this.css( args.to );
-
- this.isTransitioning = true;
-
-};
-
-// dash before all cap letters, including first for
-// WebkitTransform => -webkit-transform
-function toDashedAll( str ) {
- return str.replace( /([A-Z])/g, function( $1 ) {
- return '-' + $1.toLowerCase();
- });
-}
-
-var transitionProps = 'opacity,' + toDashedAll( transformProperty );
-
-proto.enableTransition = function(/* style */) {
- // HACK changing transitionProperty during a transition
- // will cause transition to jump
- if ( this.isTransitioning ) {
- return;
- }
-
- // make `transition: foo, bar, baz` from style object
- // HACK un-comment this when enableTransition can work
- // while a transition is happening
- // var transitionValues = [];
- // for ( var prop in style ) {
- // // dash-ify camelCased properties like WebkitTransition
- // prop = vendorProperties[ prop ] || prop;
- // transitionValues.push( toDashedAll( prop ) );
- // }
- // enable transition styles
- this.css({
- transitionProperty: transitionProps,
- transitionDuration: this.layout.options.transitionDuration
- });
- // listen for transition end event
- this.element.addEventListener( transitionEndEvent, this, false );
-};
-
-// ----- events ----- //
-
-proto.onwebkitTransitionEnd = function( event ) {
- this.ontransitionend( event );
-};
-
-proto.onotransitionend = function( event ) {
- this.ontransitionend( event );
-};
-
-// properties that I munge to make my life easier
-var dashedVendorProperties = {
- '-webkit-transform': 'transform'
-};
-
-proto.ontransitionend = function( event ) {
- // disregard bubbled events from children
- if ( event.target !== this.element ) {
- return;
- }
- var _transition = this._transn;
- // get property name of transitioned property, convert to prefix-free
- var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;
-
- // remove property that has completed transitioning
- delete _transition.ingProperties[ propertyName ];
- // check if any properties are still transitioning
- if ( isEmptyObj( _transition.ingProperties ) ) {
- // all properties have completed transitioning
- this.disableTransition();
- }
- // clean style
- if ( propertyName in _transition.clean ) {
- // clean up style
- this.element.style[ event.propertyName ] = '';
- delete _transition.clean[ propertyName ];
- }
- // trigger onTransitionEnd callback
- if ( propertyName in _transition.onEnd ) {
- var onTransitionEnd = _transition.onEnd[ propertyName ];
- onTransitionEnd.call( this );
- delete _transition.onEnd[ propertyName ];
- }
-
- this.emitEvent( 'transitionEnd', [ this ] );
-};
-
-proto.disableTransition = function() {
- this.removeTransitionStyles();
- this.element.removeEventListener( transitionEndEvent, this, false );
- this.isTransitioning = false;
-};
-
-/**
- * removes style property from element
- * @param {Object} style
-**/
-proto._removeStyles = function( style ) {
- // clean up transition styles
- var cleanStyle = {};
- for ( var prop in style ) {
- cleanStyle[ prop ] = '';
- }
- this.css( cleanStyle );
-};
-
-var cleanTransitionStyle = {
- transitionProperty: '',
- transitionDuration: ''
-};
-
-proto.removeTransitionStyles = function() {
- // remove transition
- this.css( cleanTransitionStyle );
-};
-
-// ----- show/hide/remove ----- //
-
-// remove element from DOM
-proto.removeElem = function() {
- this.element.parentNode.removeChild( this.element );
- // remove display: none
- this.css({ display: '' });
- this.emitEvent( 'remove', [ this ] );
-};
-
-proto.remove = function() {
- // just remove element if no transition support or no transition
- if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {
- this.removeElem();
- return;
- }
-
- // start transition
- this.once( 'transitionEnd', function() {
- this.removeElem();
- });
- this.hide();
-};
-
-proto.reveal = function() {
- delete this.isHidden;
- // remove display: none
- this.css({ display: '' });
-
- var options = this.layout.options;
-
- var onTransitionEnd = {};
- var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');
- onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;
-
- this.transition({
- from: options.hiddenStyle,
- to: options.visibleStyle,
- isCleaning: true,
- onTransitionEnd: onTransitionEnd
- });
-};
-
-proto.onRevealTransitionEnd = function() {
- // check if still visible
- // during transition, item may have been hidden
- if ( !this.isHidden ) {
- this.emitEvent('reveal');
- }
-};
-
-/**
- * get style property use for hide/reveal transition end
- * @param {String} styleProperty - hiddenStyle/visibleStyle
- * @returns {String}
- */
-proto.getHideRevealTransitionEndProperty = function( styleProperty ) {
- var optionStyle = this.layout.options[ styleProperty ];
- // use opacity
- if ( optionStyle.opacity ) {
- return 'opacity';
- }
- // get first property
- for ( var prop in optionStyle ) {
- return prop;
- }
-};
-
-proto.hide = function() {
- // set flag
- this.isHidden = true;
- // remove display: none
- this.css({ display: '' });
-
- var options = this.layout.options;
-
- var onTransitionEnd = {};
- var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');
- onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;
-
- this.transition({
- from: options.visibleStyle,
- to: options.hiddenStyle,
- // keep hidden stuff hidden
- isCleaning: true,
- onTransitionEnd: onTransitionEnd
- });
-};
-
-proto.onHideTransitionEnd = function() {
- // check if still hidden
- // during transition, item may have been un-hidden
- if ( this.isHidden ) {
- this.css({ display: 'none' });
- this.emitEvent('hide');
- }
-};
-
-proto.destroy = function() {
- this.css({
- position: '',
- left: '',
- right: '',
- top: '',
- bottom: '',
- transition: '',
- transform: ''
- });
-};
-
-return Item;
-
-}));
diff --git a/js/vendor/outlayer/outlayer.js b/js/vendor/outlayer/outlayer.js
deleted file mode 100644
index 84efce9da..000000000
--- a/js/vendor/outlayer/outlayer.js
+++ /dev/null
@@ -1,897 +0,0 @@
-/*!
- * Outlayer v2.0.1
- * the brains and guts of a layout library
- * MIT license
- */
-
-( function( window, factory ) {
- 'use strict';
- // universal module definition
- /* jshint strict: false */ /* globals define, module, require */
- if ( typeof define == 'function' && define.amd ) {
- // AMD - RequireJS
- define( [
- 'ev-emitter/ev-emitter',
- 'get-size/get-size',
- 'fizzy-ui-utils/utils',
- './item'
- ],
- function( EvEmitter, getSize, utils, Item ) {
- return factory( window, EvEmitter, getSize, utils, Item);
- }
- );
- } else if ( typeof module == 'object' && module.exports ) {
- // CommonJS - Browserify, Webpack
- module.exports = factory(
- window,
- require('ev-emitter'),
- require('get-size'),
- require('fizzy-ui-utils'),
- require('./item')
- );
- } else {
- // browser global
- window.Outlayer = factory(
- window,
- window.EvEmitter,
- window.getSize,
- window.fizzyUIUtils,
- window.Outlayer.Item
- );
- }
-
-}( window, function factory( window, EvEmitter, getSize, utils, Item ) {
-'use strict';
-
-// ----- vars ----- //
-
-var console = window.console;
-var jQuery = window.jQuery;
-var noop = function() {};
-
-// -------------------------- Outlayer -------------------------- //
-
-// globally unique identifiers
-var GUID = 0;
-// internal store of all Outlayer intances
-var instances = {};
-
-
-/**
- * @param {Element, String} element
- * @param {Object} options
- * @constructor
- */
-function Outlayer( element, options ) {
- var queryElement = utils.getQueryElement( element );
- if ( !queryElement ) {
- if ( console ) {
- console.error( 'Bad element for ' + this.constructor.namespace +
- ': ' + ( queryElement || element ) );
- }
- return;
- }
- this.element = queryElement;
- // add jQuery
- if ( jQuery ) {
- this.$element = jQuery( this.element );
- }
-
- // options
- this.options = utils.extend( {}, this.constructor.defaults );
- this.option( options );
-
- // add id for Outlayer.getFromElement
- var id = ++GUID;
- this.element.outlayerGUID = id; // expando
- instances[ id ] = this; // associate via id
-
- // kick it off
- this._create();
-
- var isInitLayout = this._getOption('initLayout');
- if ( isInitLayout ) {
- this.layout();
- }
-}
-
-// settings are for internal use only
-Outlayer.namespace = 'outlayer';
-Outlayer.Item = Item;
-
-// default options
-Outlayer.defaults = {
- containerStyle: {
- position: 'relative'
- },
- initLayout: true,
- originLeft: true,
- originTop: true,
- resize: true,
- resizeContainer: true,
- // item options
- transitionDuration: '0.4s',
- hiddenStyle: {
- opacity: 0,
- transform: 'scale(0.001)'
- },
- visibleStyle: {
- opacity: 1,
- transform: 'scale(1)'
- }
-};
-
-var proto = Outlayer.prototype;
-// inherit EvEmitter
-utils.extend( proto, EvEmitter.prototype );
-
-/**
- * set options
- * @param {Object} opts
- */
-proto.option = function( opts ) {
- utils.extend( this.options, opts );
-};
-
-/**
- * get backwards compatible option value, check old name
- */
-proto._getOption = function( option ) {
- var oldOption = this.constructor.compatOptions[ option ];
- return oldOption && this.options[ oldOption ] !== undefined ?
- this.options[ oldOption ] : this.options[ option ];
-};
-
-Outlayer.compatOptions = {
- // currentName: oldName
- initLayout: 'isInitLayout',
- horizontal: 'isHorizontal',
- layoutInstant: 'isLayoutInstant',
- originLeft: 'isOriginLeft',
- originTop: 'isOriginTop',
- resize: 'isResizeBound',
- resizeContainer: 'isResizingContainer'
-};
-
-proto._create = function() {
- // get items from children
- this.reloadItems();
- // elements that affect layout, but are not laid out
- this.stamps = [];
- this.stamp( this.options.stamp );
- // set container style
- utils.extend( this.element.style, this.options.containerStyle );
-
- // bind resize method
- var canBindResize = this._getOption('resize');
- if ( canBindResize ) {
- this.bindResize();
- }
-};
-
-// goes through all children again and gets bricks in proper order
-proto.reloadItems = function() {
- // collection of item elements
- this.items = this._itemize( this.element.children );
-};
-
-
-/**
- * turn elements into Outlayer.Items to be used in layout
- * @param {Array or NodeList or HTMLElement} elems
- * @returns {Array} items - collection of new Outlayer Items
- */
-proto._itemize = function( elems ) {
-
- var itemElems = this._filterFindItemElements( elems );
- var Item = this.constructor.Item;
-
- // create new Outlayer Items for collection
- var items = [];
- for ( var i=0; i < itemElems.length; i++ ) {
- var elem = itemElems[i];
- var item = new Item( elem, this );
- items.push( item );
- }
-
- return items;
-};
-
-/**
- * get item elements to be used in layout
- * @param {Array or NodeList or HTMLElement} elems
- * @returns {Array} items - item elements
- */
-proto._filterFindItemElements = function( elems ) {
- return utils.filterFindElements( elems, this.options.itemSelector );
-};
-
-/**
- * getter method for getting item elements
- * @returns {Array} elems - collection of item elements
- */
-proto.getItemElements = function() {
- return this.items.map( function( item ) {
- return item.element;
- });
-};
-
-// ----- init & layout ----- //
-
-/**
- * lays out all items
- */
-proto.layout = function() {
- this._resetLayout();
- this._manageStamps();
-
- // don't animate first layout
- var layoutInstant = this._getOption('layoutInstant');
- var isInstant = layoutInstant !== undefined ?
- layoutInstant : !this._isLayoutInited;
- this.layoutItems( this.items, isInstant );
-
- // flag for initalized
- this._isLayoutInited = true;
-};
-