/* =======================================
   SWITCHERS
   ======================================= */

import Switchery from 'switchery-npm/index';

interface SwitcherOptions {
	className?: string;
	color?: string;
	disabled?: boolean;
	disabledOpacity?: number;
	jackColor?: string;
	jackSecondaryColor?: string;
	secondaryColor?: string;
	size?: string;
	speed?: string;
}

export let Switcher = {
	
	/**
	 * Add the switchery to the specified selectors
	 *
	 * @param string selectorClass
	 * @param Object options
	 * @param JQuery $wrapper
	 */
	doSwitchers(selectorClass: string = '.js-switch', options?: SwitcherOptions, $wrapper?: JQuery) {
		
		options = Object.assign( {
			size               : 'small',
			color              : '#d5f5ba',
			secondaryColor     : '#e9ecef',
			jackColor          : '#69c61d',
			jackSecondaryColor : '#adb5bd'
		}, options || {});
		
		const $selector : JQuery = $wrapper ? $wrapper.find(selectorClass) : $(selectorClass);
		
		$selector.each( (index: number, elem: Element) => {
			const switchery: any = new Switchery(elem, options);
			$(elem).removeClass( selectorClass.replace('.', '') ).data('switchery-instance', switchery);
		} );
		
	}
	
}
