;(function ($) { "use strict"; wp.customize.controlConstructor['blogsy-sortable'] = wp.customize.Control.extend( { ready: function () { 'use strict'; var control = this; // Setup sortable. if ( control.params.sortable ) { control.container.find( 'ul' ).sortable( { items: '> .blogsy-sortable-item', intersect: 'pointer', axis: 'y', update: function () { control.update(); } } ); } // Set visibility. control.container.on( 'click', '.dashicons-visibility', function () { $( this ).closest( '.blogsy-sortable-item' ).toggleClass( 'invisible' ); control.update(); } ); }, update: function () { var items = this.container.find( '.blogsy-sortable-item' ), new_val = {}, $item; if ( ! _.isEmpty( items ) ) { _.each( items, function ( item ) { $item = $( item ); new_val[ $item.data( 'value' ) ] = ! $item.hasClass( 'invisible' ); } ); } this.setting.set( {} ); this.setting.set( new_val ); } } ); })( jQuery );