File: /home/prospack/public_html/wp-content/themes/astra/assets/js/unminified/extend-customizer.js
/**
 * Extend Customizer Panel
 *
 * @package Astra
 */
( function( $ ) {
  var api = wp.customize;
  api.bind( 'pane-contents-reflowed', function() {
    // Reflow sections
    var sections = [];
    api.section.each( function( section ) {
      if (
        'ast_section' !== section.params.type ||
        'undefined' === typeof section.params.section
      ) {
        return;
      }
      sections.push( section );
    });
    sections.sort( api.utils.prioritySort ).reverse();
    $.each( sections, function( i, section ) {
      var parentContainer = $( '#sub-accordion-section-' + section.params.section );
      parentContainer.children( '.section-meta' ).after( section.headContainer );
    });
    // Reflow panels
    var panels = [];
    api.panel.each( function( panel ) {
      if (
        'ast_panel' !== panel.params.type ||
        'undefined' === typeof panel.params.panel
      ) {
        return;
      }
      panels.push( panel );
    });
    panels.sort( api.utils.prioritySort ).reverse();
    $.each( panels, function( i, panel ) {
      var parentContainer = $( '#sub-accordion-panel-' + panel.params.panel );
      parentContainer.children( '.panel-meta' ).after( panel.headContainer );
    });
  });
  // Extend Panel
  var _panelEmbed = wp.customize.Panel.prototype.embed;
  var _panelIsContextuallyActive = wp.customize.Panel.prototype.isContextuallyActive;
  var _panelAttachEvents = wp.customize.Panel.prototype.attachEvents;
  wp.customize.Panel = wp.customize.Panel.extend({
    attachEvents: function() {
      if (
        'ast_panel' !== this.params.type ||
        'undefined' === typeof this.params.panel
      ) {
        _panelAttachEvents.call( this );
        return;
      }
      _panelAttachEvents.call( this );
      var panel = this;
      panel.expanded.bind( function( expanded ) {
        var parent = api.panel( panel.params.panel );
        if ( expanded ) {
          parent.contentContainer.addClass( 'current-panel-parent' );
        } else {
          parent.contentContainer.removeClass( 'current-panel-parent' );
        }
      });
      panel.container.find( '.customize-panel-back' )
        .off( 'click keydown' )
        .on( 'click keydown', function( event ) {
          if ( api.utils.isKeydownButNotEnterEvent( event ) ) {
            return;
          }
          event.preventDefault(); // Keep this AFTER the key filter above
          if ( panel.expanded() ) {
            api.panel( panel.params.panel ).expand();
          }
        });
    },
    embed: function() {
      if (
        'ast_panel' !== this.params.type ||
        'undefined' === typeof this.params.panel
      ) {
        _panelEmbed.call( this );
        return;
      }
      _panelEmbed.call( this );
      var panel = this;
      var parentContainer = $( '#sub-accordion-panel-' + this.params.panel );
      parentContainer.append( panel.headContainer );
    },
    isContextuallyActive: function() {
      if (
        'ast_panel' !== this.params.type
      ) {
        return _panelIsContextuallyActive.call( this );
      }
      var panel = this;
      var children = this._children( 'panel', 'section' );
      api.panel.each( function( child ) {
        if ( ! child.params.panel ) {
          return;
        }
        if ( child.params.panel !== panel.id ) {
          return;
        }
        children.push( child );
      });
      children.sort( api.utils.prioritySort );
      var activeCount = 0;
      _( children ).each( function ( child ) {
        if ( child.active() && child.isContextuallyActive() ) {
          activeCount += 1;
        }
      });
      return ( activeCount !== 0 );
    }
  });
  // Extend Section
  var _sectionEmbed = wp.customize.Section.prototype.embed;
  var _sectionIsContextuallyActive = wp.customize.Section.prototype.isContextuallyActive;
  var _sectionAttachEvents = wp.customize.Section.prototype.attachEvents;
  wp.customize.Section = wp.customize.Section.extend({
    attachEvents: function() {
      if (
        'ast_section' !== this.params.type ||
        'undefined' === typeof this.params.section
      ) {
        _sectionAttachEvents.call( this );
        return;
      }
      _sectionAttachEvents.call( this );
      var section = this;
      section.expanded.bind( function( expanded ) {
        var parent = api.section( section.params.section );
        if ( expanded ) {
          parent.contentContainer.addClass( 'current-section-parent' );
        } else {
          parent.contentContainer.removeClass( 'current-section-parent' );
        }
      });
      section.container.find( '.customize-section-back' )
        .off( 'click keydown' )
        .on( 'click keydown', function( event ) {
          if ( api.utils.isKeydownButNotEnterEvent( event ) ) {
            return;
          }
          event.preventDefault(); // Keep this AFTER the key filter above
          if ( section.expanded() ) {
            api.section( section.params.section ).expand();
          }
        });
    },
    embed: function() {
      if (
        'ast_section' !== this.params.type ||
        'undefined' === typeof this.params.section
      ) {
        _sectionEmbed.call( this );
        return;
      }
      _sectionEmbed.call( this );
      var section = this;
      var parentContainer = $( '#sub-accordion-section-' + this.params.section );
      parentContainer.append( section.headContainer );
    },
    isContextuallyActive: function() {
      if (
        'ast_section' !== this.params.type
      ) {
        return _sectionIsContextuallyActive.call( this );
      }
      var section = this;
      var children = this._children( 'section', 'control' );
      api.section.each( function( child ) {
        if ( ! child.params.section ) {
          return;
        }
        if ( child.params.section !== section.id ) {
          return;
        }
        children.push( child );
      });
      children.sort( api.utils.prioritySort );
      var activeCount = 0;
      _( children ).each( function ( child ) {
        if ( 'undefined' !== typeof child.isContextuallyActive ) {
          if ( child.active() && child.isContextuallyActive() ) {
            activeCount += 1;
          }
        } else {
          if ( child.active() ) {
            activeCount += 1;
          }
        }
      });
      return ( activeCount !== 0 );
    }
  });
})( jQuery );