75 lines
1.8 KiB
JavaScript
75 lines
1.8 KiB
JavaScript
|
// slide
|
||
|
( function( window, factory ) {
|
||
|
// universal module definition
|
||
|
/* jshint strict: false */
|
||
|
if ( typeof define == 'function' && define.amd ) {
|
||
|
// AMD
|
||
|
define( factory );
|
||
|
} else if ( typeof module == 'object' && module.exports ) {
|
||
|
// CommonJS
|
||
|
module.exports = factory();
|
||
|
} else {
|
||
|
// browser global
|
||
|
window.Flickity = window.Flickity || {};
|
||
|
window.Flickity.Slide = factory();
|
||
|
}
|
||
|
|
||
|
}( window, function factory() {
|
||
|
'use strict';
|
||
|
|
||
|
function Slide( parent ) {
|
||
|
this.parent = parent;
|
||
|
this.isOriginLeft = parent.originSide == 'left';
|
||
|
this.cells = [];
|
||
|
this.outerWidth = 0;
|
||
|
this.height = 0;
|
||
|
}
|
||
|
|
||
|
var proto = Slide.prototype;
|
||
|
|
||
|
proto.addCell = function( cell ) {
|
||
|
this.cells.push( cell );
|
||
|
this.outerWidth += cell.size.outerWidth;
|
||
|
this.height = Math.max( cell.size.outerHeight, this.height );
|
||
|
// first cell stuff
|
||
|
if ( this.cells.length == 1 ) {
|
||
|
this.x = cell.x; // x comes from first cell
|
||
|
var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';
|
||
|
this.firstMargin = cell.size[ beginMargin ];
|
||
|
}
|
||
|
};
|
||
|
|
||
|
proto.updateTarget = function() {
|
||
|
var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';
|
||
|
var lastCell = this.getLastCell();
|
||
|
var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;
|
||
|
var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );
|
||
|
this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;
|
||
|
};
|
||
|
|
||
|
proto.getLastCell = function() {
|
||
|
return this.cells[ this.cells.length - 1 ];
|
||
|
};
|
||
|
|
||
|
proto.select = function() {
|
||
|
this.cells.forEach( function( cell ) {
|
||
|
cell.select();
|
||
|
});
|
||
|
};
|
||
|
|
||
|
proto.unselect = function() {
|
||
|
this.cells.forEach( function( cell ) {
|
||
|
cell.unselect();
|
||
|
});
|
||
|
};
|
||
|
|
||
|
proto.getCellElements = function() {
|
||
|
return this.cells.map( function( cell ) {
|
||
|
return cell.element;
|
||
|
});
|
||
|
};
|
||
|
|
||
|
return Slide;
|
||
|
|
||
|
}));
|