wp.customize.controlConstructor['kirki-slider'] = wp.customize.Control.extend({ // When we're finished loading continue processing ready: function() { 'use strict'; var control = this; // Init the control. if ( ! _.isUndefined( window.kirkiControlLoader ) && _.isFunction( kirkiControlLoader ) ) { kirkiControlLoader( control ); } else { control.initKirkiControl(); } }, initKirkiControl: function() { 'use strict'; var control = this, value, thisInput, inputDefault, changeAction; control.container.find( '.kirki-controls-loading-spinner' ).hide(); // Update the text value jQuery( 'input[type=range]' ).on( 'mousedown', function() { value = jQuery( this ).attr( 'value' ); jQuery( this ).mousemove( function() { value = jQuery( this ).attr( 'value' ); jQuery( this ).closest( 'label' ).find( '.kirki_range_value .value' ).text( value ); }); }); // Handle the reset button jQuery( '.kirki-slider-reset' ).click( function() { thisInput = jQuery( this ).closest( 'label' ).find( 'input' ); inputDefault = thisInput.data( 'reset_value' ); thisInput.val( inputDefault ); thisInput.change(); jQuery( this ).closest( 'label' ).find( '.kirki_range_value .value' ).text( inputDefault ); }); changeAction = ( 'postMessage' === control.setting.transport ) ? 'mousemove change' : 'change'; // Save changes. this.container.on( changeAction, 'input', function() { control.setting.set( jQuery( this ).val() ); }); } });