/** * Provide a function for composing components. * * @author Naotoshi Fujita * @copyright Naotoshi Fujita. All rights reserved. */ import { each } from '../utils/object'; import { Slide, Fade } from '../transitions'; import { FADE } from '../constants/types'; /** * Compose components. * * @param {Splide} Splide - Splide instance. * @param {Object} Components - Additional components. * @param {function} Transition - Change component for transition. * * @return {Object} - An object containing all components. */ export default function compose( Splide, Components, Transition ) { const components = {}; each( Components, ( Component, name ) => { components[ name ] = Component( Splide, components, name.toLowerCase() ); } ); Transition = Transition || Splide.is( FADE ) ? Fade : Slide; components.Transition = Transition( Splide, components ); return components; }