1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // 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;
- }));
|