123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- // Flickity.Cell
- ( function( window, factory ) {
- // universal module definition
- /* jshint strict: false */
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( [
- 'get-size/get-size'
- ], function( getSize ) {
- return factory( window, getSize );
- });
- } else if ( typeof module == 'object' && module.exports ) {
- // CommonJS
- module.exports = factory(
- window,
- require('get-size')
- );
- } else {
- // browser global
- window.Flickity = window.Flickity || {};
- window.Flickity.Cell = factory(
- window,
- window.getSize
- );
- }
- }( window, function factory( window, getSize ) {
- 'use strict';
- function Cell( elem, parent ) {
- this.element = elem;
- this.parent = parent;
- this.create();
- }
- var proto = Cell.prototype;
- proto.create = function() {
- this.element.style.position = 'absolute';
- this.element.setAttribute( 'aria-hidden', 'true' );
- this.x = 0;
- this.shift = 0;
- };
- proto.destroy = function() {
- // reset style
- this.unselect();
- this.element.style.position = '';
- var side = this.parent.originSide;
- this.element.style[ side ] = '';
- };
- proto.getSize = function() {
- this.size = getSize( this.element );
- };
- proto.setPosition = function( x ) {
- this.x = x;
- this.updateTarget();
- this.renderPosition( x );
- };
- // setDefaultTarget v1 method, backwards compatibility, remove in v3
- proto.updateTarget = proto.setDefaultTarget = function() {
- var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';
- this.target = this.x + this.size[ marginProperty ] +
- this.size.width * this.parent.cellAlign;
- };
- proto.renderPosition = function( x ) {
- // render position of cell with in slider
- var side = this.parent.originSide;
- this.element.style[ side ] = this.parent.getPositionValue( x );
- };
- proto.select = function() {
- this.element.classList.add('is-selected');
- this.element.removeAttribute('aria-hidden');
- };
- proto.unselect = function() {
- this.element.classList.remove('is-selected');
- this.element.setAttribute( 'aria-hidden', 'true' );
- };
- /**
- * @param {Integer} factor - 0, 1, or -1
- **/
- proto.wrapShift = function( shift ) {
- this.shift = shift;
- this.renderPosition( this.x + this.parent.slideableWidth * shift );
- };
- proto.remove = function() {
- this.element.parentNode.removeChild( this.element );
- };
- return Cell;
- }));
|