Home Manual Reference Source Repository

src/glider/types.js

/**
 * Type definitions for Paraglider callbacks.
 *
 * @file types.js
 * @module types
 * @author Gregor Adams <greg@pixelass.com>
 */

/**
 * Callback while the Glider is moving
 * @typedef onSlide
 * @memberof Glider
 * @type {function}
 * @param {number} progress Timeline of scroll progress `[0, 1]`
 * @param {callbackData} data Data about the slider activity
 * @param {Array.<Element>} slides Array of all slides
 * @param {callbackOptions} options Subset of options
 * @example
 * new Glider({
 *  onSlide(progress, {next, previous, current, rest}, slides, options) {
 *    if (previous !== null) {
 *      slides[previous].style.transform = `translate3d(${-100 + (progress * 100)}%,0,0)`
 *      slides[current].style.transform = `translate3d(${(progress * 100)}%,0,0)`
 *    } else if (next !== null) {
 *      slides[next].style.transform = `translate3d(${100 - (progress * 100)}%,0,0)`
 *      slides[current].style.transform = `translate3d(${(progress * -100)}%,0,0)`
 *    }
 *  }
 *})
 */

/**
 * Callback when the Glider stopped moving
 * @typedef onEnd
 * @memberof Glider
 * @type {function}
 * @param {callbackData} data Data about the slider activity
 * @param {Array.<Element>} slides Array of all slides
 * @param {callbackOptions} options Subset of options
 * @example
 * new Glider({
 *  onEnd({next, previous, current, rest}, slides, options) {
 *    rest.forEach(slide => {
 *      slides[slide].style.transform = ''
 *    })
 *    slides[current].style.transform = ''
 *    slides[previous].style.transform = 'translate3d(-100%,0,0)'
 *    slides[next].style.transform = 'translate3d(100%,0,0)'
 *  }
 *})
 */

/**
 * Callback when the Glider has been created
 * @typedef onInit
 * @memberof Glider
 * @type {function}
 * @param {callbackData} data Data about the slider activity
 * @param {Array.<Element>} slides Array of all slides
 * @param {PLUGIN_DEFAULTS|PRESET_DEFAULTS} options
 * @example
 * new Glider({
 *  onInit({next, previous, current, rest}, slides, options) {
 *    slides[current].style.background = 'red'
 *  }
 *})
 */

/**
 * Callback when the Glider has been destroyed
 * @typedef onDestroy
 * @memberof Glider
 * @type {function}
 * @param {PLUGIN_DEFAULTS|PRESET_DEFAULTS} options
 * @example
 * new Glider({
 *  onDestroy(options) {
 *    // Slider has been destroyed
 *  }
 *})
 */

/**
 * @typedef callbackData
 * @property {?(number|Array.<number>)} previous
 *   Could be an Array, a number or null.
 *   * `null`: no items available
 *   * `number`: one item available
 *   * `array`: multiple items available
 * @property {?(number|Array.<number>)} current
 *   Could be an Array, a number or null.
 * * `null`: no items available
 * * `number`: one item available
 * * `array`: multiple items available
 * @property {?(number|Array.<number>)} next
 *   Could be an Array, a number or null.
 * * `null`: no items available
 * * `number`: one item available
 * * `array`: multiple items available
 * @property {Array.<number>} rest
 *   Array of all remaining slide indexes.
 *   If none are left the array is just empty
 */