mirror of
https://github.com/DanielnetoDotCom/YouPHPTube
synced 2025-10-05 02:39:46 +02:00
This commit is contained in:
parent
37e90e3dfe
commit
214f5d9fc3
4949 changed files with 1393320 additions and 29 deletions
138
node_modules/flickity/js/add-remove-cell.js
generated
vendored
Normal file
138
node_modules/flickity/js/add-remove-cell.js
generated
vendored
Normal file
|
@ -0,0 +1,138 @@
|
|||
// add, remove cell
|
||||
( function( window, factory ) {
|
||||
// universal module definition
|
||||
if ( typeof module == 'object' && module.exports ) {
|
||||
// CommonJS
|
||||
module.exports = factory(
|
||||
require('./core'),
|
||||
require('fizzy-ui-utils'),
|
||||
);
|
||||
} else {
|
||||
// browser global
|
||||
factory(
|
||||
window.Flickity,
|
||||
window.fizzyUIUtils,
|
||||
);
|
||||
}
|
||||
|
||||
}( typeof window != 'undefined' ? window : this, function factory( Flickity, utils ) {
|
||||
|
||||
// append cells to a document fragment
|
||||
function getCellsFragment( cells ) {
|
||||
let fragment = document.createDocumentFragment();
|
||||
cells.forEach( ( cell ) => fragment.appendChild( cell.element ) );
|
||||
return fragment;
|
||||
}
|
||||
|
||||
// -------------------------- add/remove cell prototype -------------------------- //
|
||||
|
||||
let proto = Flickity.prototype;
|
||||
|
||||
/**
|
||||
* Insert, prepend, or append cells
|
||||
* @param {[Element, Array, NodeList]} elems - Elements to insert
|
||||
* @param {Integer} index - Zero-based number to insert
|
||||
*/
|
||||
proto.insert = function( elems, index ) {
|
||||
let cells = this._makeCells( elems );
|
||||
if ( !cells || !cells.length ) return;
|
||||
|
||||
let len = this.cells.length;
|
||||
// default to append
|
||||
index = index === undefined ? len : index;
|
||||
// add cells with document fragment
|
||||
let fragment = getCellsFragment( cells );
|
||||
// append to slider
|
||||
let isAppend = index === len;
|
||||
if ( isAppend ) {
|
||||
this.slider.appendChild( fragment );
|
||||
} else {
|
||||
let insertCellElement = this.cells[ index ].element;
|
||||
this.slider.insertBefore( fragment, insertCellElement );
|
||||
}
|
||||
// add to this.cells
|
||||
if ( index === 0 ) {
|
||||
// prepend, add to start
|
||||
this.cells = cells.concat( this.cells );
|
||||
} else if ( isAppend ) {
|
||||
// append, add to end
|
||||
this.cells = this.cells.concat( cells );
|
||||
} else {
|
||||
// insert in this.cells
|
||||
let endCells = this.cells.splice( index, len - index );
|
||||
this.cells = this.cells.concat( cells ).concat( endCells );
|
||||
}
|
||||
|
||||
this._sizeCells( cells );
|
||||
this.cellChange( index );
|
||||
this.positionSliderAtSelected();
|
||||
};
|
||||
|
||||
proto.append = function( elems ) {
|
||||
this.insert( elems, this.cells.length );
|
||||
};
|
||||
|
||||
proto.prepend = function( elems ) {
|
||||
this.insert( elems, 0 );
|
||||
};
|
||||
|
||||
/**
|
||||
* Remove cells
|
||||
* @param {[Element, Array, NodeList]} elems - ELements to remove
|
||||
*/
|
||||
proto.remove = function( elems ) {
|
||||
let cells = this.getCells( elems );
|
||||
if ( !cells || !cells.length ) return;
|
||||
|
||||
let minCellIndex = this.cells.length - 1;
|
||||
// remove cells from collection & DOM
|
||||
cells.forEach( ( cell ) => {
|
||||
cell.remove();
|
||||
let index = this.cells.indexOf( cell );
|
||||
minCellIndex = Math.min( index, minCellIndex );
|
||||
utils.removeFrom( this.cells, cell );
|
||||
} );
|
||||
|
||||
this.cellChange( minCellIndex );
|
||||
this.positionSliderAtSelected();
|
||||
};
|
||||
|
||||
/**
|
||||
* logic to be run after a cell's size changes
|
||||
* @param {Element} elem - cell's element
|
||||
*/
|
||||
proto.cellSizeChange = function( elem ) {
|
||||
let cell = this.getCell( elem );
|
||||
if ( !cell ) return;
|
||||
|
||||
cell.getSize();
|
||||
|
||||
let index = this.cells.indexOf( cell );
|
||||
this.cellChange( index );
|
||||
// do not position slider after lazy load
|
||||
};
|
||||
|
||||
/**
|
||||
* logic any time a cell is changed: added, removed, or size changed
|
||||
* @param {Integer} changedCellIndex - index of the changed cell, optional
|
||||
*/
|
||||
proto.cellChange = function( changedCellIndex ) {
|
||||
let prevSelectedElem = this.selectedElement;
|
||||
this._positionCells( changedCellIndex );
|
||||
this._updateWrapShiftCells();
|
||||
this.setGallerySize();
|
||||
// update selectedIndex, try to maintain position & select previous selected element
|
||||
let cell = this.getCell( prevSelectedElem );
|
||||
if ( cell ) this.selectedIndex = this.getCellSlideIndex( cell );
|
||||
this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );
|
||||
|
||||
this.emitEvent( 'cellChange', [ changedCellIndex ] );
|
||||
// position slider
|
||||
this.select( this.selectedIndex );
|
||||
};
|
||||
|
||||
// ----- ----- //
|
||||
|
||||
return Flickity;
|
||||
|
||||
} ) );
|
Loading…
Add table
Add a link
Reference in a new issue