text: (function ( $ ) {
  	vc.ttaSectionActivateOnClone = false;
  	window.InlineShortcodeView_vc_tta_section = window.InlineShortcodeViewContainerWithParent.extend( {
  		events: {
  			'click > .vc_controls [data-vc-control="destroy"]': 'destroy',
  			'click > .vc_controls [data-vc-control="edit"]': 'edit',
  			'click > .vc_controls [data-vc-control="clone"]': 'clone',
  			'click > .vc_controls [data-vc-control="prepend"]': 'prependElement',
  			'click > .vc_controls [data-vc-control="append"]': 'appendElement',
  			'click > .vc_controls [data-vc-control="parent.destroy"]': 'destroyParent',
  			'click > .vc_controls [data-vc-control="parent.edit"]': 'editParent',
  			'click > .vc_controls [data-vc-control="parent.clone"]': 'cloneParent',
  			'click > .vc_controls [data-vc-control="parent.append"]': 'addSibling',
  			'click .vc_tta-panel-body > [data-js-panel-body].vc_empty-element': 'appendElement',
  			'click > .vc_controls .vc_control-btn-switcher': 'switchControls',
  			'mouseenter': 'resetActive',
  			'mouseleave': 'holdActive'
  		},
  
  		controls_selector: '#vc_controls-template-vc_tta_section',
  		previousClasses: false,
  		activeClass: 'vc_active',
  		render: function () {
  			var model = this.model;
  			window.InlineShortcodeView_vc_tta_section.__super__.render.call( this );
  			_.bindAll( this, 'bindAccordionEvents' );
  			this.refreshContent();
  			this.moveClasses();
  			_.defer( this.bindAccordionEvents );
  			if ( this.isAsActiveSection() ) {
  				window.vc.frame_window.vc_iframe.addActivity( function () {
  					var $accordion = window.vc.frame_window.jQuery(
  						'[data-vc-accordion][data-vc-target="[data-model-id=' + model.get( 'id' ) + ']"]' );
  					$accordion.trigger( 'click' );
  				} );
  			}
  			return this;
  		},
  		allowAddControl: function () {
  			return vc_user_access().shortcodeAll( 'vc_tta_section' );
  		},
  		clone: function ( e ) {
  			vc.ttaSectionActivateOnClone = true;
  			window.InlineShortcodeView_vc_tta_section.__super__.clone.call( this, e );
  		},
  		addSibling: function ( e ) {
  			window.InlineShortcodeView_vc_tta_section.__super__.addSibling.call( this, e );
  		},
  		parentChanged: function () {
  			window.InlineShortcodeView_vc_tta_section.__super__.parentChanged.call( this );
  			this.refreshContent( true );
  			return this;
  		},
  		changed: function () {
  			if ( this.allowAddControlOnEmpty() && 0 === this.$el.find( '.vc_element[data-tag]' ).length ) {
  				this.$el.addClass( 'vc_empty' ).find( '.vc_tta-panel-body > [data-js-panel-body]' ).addClass(
  					'vc_empty-element' );
  			} else {
  				this.$el.removeClass( 'vc_empty' ).find( '.vc_tta-panel-body > [data-js-panel-body].vc_empty-element' ).removeClass(
  					'vc_empty-element' );
  			}
  		},
  		moveClasses: function () {
  			var panelClassName;
  			if ( this.previousClasses ) {
  				this.$el.get( 0 ).className = this.$el.get( 0 ).className.replace( this.previousClasses, "" );
  			}
  			panelClassName = this.$el.find( '.vc_tta-panel' ).get( 0 ).className;
  			this.$el.attr( 'data-vc-content', this.$el.find( '.vc_tta-panel' ).data( 'vcContent' ) );
  			this.previousClasses = panelClassName;
  			this.$el.find( '.vc_tta-panel' ).get( 0 ).className = "";
  			this.$el.get( 0 ).className = this.$el.get( 0 ).className + " " + this.previousClasses;
  			// Fix data-vc-target for accordions:
  			this.$el.find( '.vc_tta-panel-title [data-vc-target]' ).attr( 'data-vc-target',
  				'[data-model-id=' + this.model.get( 'id' ) + ']' );
  		},
  		refreshContent: function ( noSectionUpdate ) {
  			var $controlsIcon, $controlsIconsPositionEl, parentModel, parentParams, paramsMap, parentLayout;
  
  			parentModel = vc.shortcodes.get( this.model.get( 'parent_id' ) );
  			if ( _.isObject( parentModel ) ) {
  				paramsMap = vc.getDefaultsAndDependencyMap( parentModel.get( 'shortcode' ) );
  				parentParams = _.extend( {}, paramsMap.defaults, parentModel.get( 'params' ) );
  				$controlsIcon = this.$el.find( '.vc_tta-controls-icon' );
  				if ( parentParams && ! _.isUndefined( parentParams.c_icon ) && 0 < parentParams.c_icon.length ) {
  					if ( $controlsIcon.length ) {
  						$controlsIcon.attr( 'data-vc-tta-controls-icon', parentParams.c_icon );
  					} else {
  						this.$el.find( '[data-vc-tta-controls-icon-wrapper]' ).append(
  							$( '<i class="vc_tta-controls-icon" data-vc-tta-controls-icon="' + parentParams.c_icon + '"></i>' )
  						);
  					}
  					if ( ! _.isUndefined( parentParams.c_position ) && 0 < parentParams.c_position.length ) {
  						$controlsIconsPositionEl = this.$el.find( '[data-vc-tta-controls-icon-position]' );
  						if ( $controlsIconsPositionEl.length ) {
  							$controlsIconsPositionEl.attr( 'data-vc-tta-controls-icon-position',
  								parentParams.c_position );
  						}
  					}
  				} else {
  					$controlsIcon.remove();
  					this.$el.find( '[data-vc-tta-controls-icon-position]' ).attr( 'data-vc-tta-controls-icon-position',
  						'' );
  				}
  				if ( true !== noSectionUpdate && parentModel.view && parentModel.view.sectionUpdated ) {
  					parentModel.view.sectionUpdated( this.model );
  				}
  			}
  		},
  		setAsActiveSection: function ( isActive ) {
  			this.model.set( 'isActiveSection', ! ! isActive );
  		},
  		isAsActiveSection: function () {
  			return ! ! this.model.get( 'isActiveSection' );
  		},
  		bindAccordionEvents: function () {
  			var that = this;
  			window.vc.frame_window.jQuery( '[data-vc-target="[data-model-id=' + this.model.get( 'id' ) + ']"]' )
  				.on( 'show.vc.accordion hide.vc.accordion',
  					function ( e ) {
  						that.setAsActiveSection( 'show' === e.type );
  					} );
  
  		},
  		destroy: function ( e ) {
  			var parentModel, parentId;
  			parentId = this.model.get( 'parent_id' );
  			window.InlineShortcodeView_vc_tta_section.__super__.destroy.call( this, e );
  			parentModel = vc.shortcodes.get( parentId );
  			if ( ! vc.shortcodes.where( { parent_id: parentId } ).length ) {
  				parentModel.destroy();
  			} else {
  				parentModel.view && parentModel.view.removeSection && parentModel.view.removeSection( this.model.get(
  					'id' ) );
  			}
  		}
  	} );
  })( window.jQuery );