?
Current File : /home/cideo/sainchargny/wp-content/plugins/elementor-pro/assets/js/admin.js
/*! elementor-pro - v1.15.3 - 07-03-2018 */
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var modules = {
	widget_template_edit_button: require( 'modules/library/assets/js/admin' ),
	forms_integrations: require( 'modules/forms/assets/js/admin' ),
	AssetsManager: require( 'modules/assets-manager/assets/js/admin' )
};

window.elementorProAdmin = {
	widget_template_edit_button: new modules.widget_template_edit_button(),
	forms_integrations: new modules.forms_integrations(),
	assetsManager: new modules.AssetsManager()
};

jQuery( function() {
	elementorProAdmin.assetsManager.fontManager.init();
});
},{"modules/assets-manager/assets/js/admin":2,"modules/forms/assets/js/admin":7,"modules/library/assets/js/admin":9}],2:[function(require,module,exports){
module.exports = function() {
	var fontManager = require( './admin/elementor-font-manager' ),
		typekitAdmin = require( './admin/typekit' );
	this.fontManager = new fontManager();
	this.typekit = new typekitAdmin();
};

},{"./admin/elementor-font-manager":3,"./admin/typekit":6}],3:[function(require,module,exports){
module.exports = function() {
	var self = this;

	self.fields = {
		upload: require( './fields/elementor-pro-upload' ),
		repeater: require( './fields/elementor-pro-repeater' )
	};

	self.selectors = {
		editPageClass: 'post-type-elementor_font',
		title: '#title',
		repeaterBlock: '.repeater-block',
		repeaterTitle: '.repeater-title',
		removeRowBtn: '.remove-repeater-row',
		editRowBtn: '.toggle-repeater-row',
		closeRowBtn: '.close-repeater-row',
		styleInput: '.font_style',
		weightInput: '.font_weight',
		customFontsMetaBox: '#elementor-font-custommetabox',
		closeHandle: 'button.handlediv',
		toolbar: '.elementor-field-toolbar',
		inlinePreview: '.inline-preview',
		fileUrlInput: '.elementor-field-file input[type="text"]'
	};

	self.fontLabelTemplate = '<ul class="row-font-label"><li class="row-font-weight">{{weight}}</li><li class="row-font-style">{{style}}</li><li class="row-font-preview">{{preview}}</li>{{toolbar}}</ul>';

	self.renderTemplate = function( tpl, data ) {
		var re = /{{([^}}]+)?}}/g, match;
		while ( match = re.exec( tpl ) ) {
			tpl = tpl.replace( match[ 0 ], data[ match[ 1 ] ] );
		}
		return tpl;
	};

	self.ucFirst = function ( string ) {
		return string.charAt( 0 ).toUpperCase() + string.slice( 1 );
	};

	self.getPreviewStyle = function( $table ) {
		var self = elementorProAdmin.assetsManager.fontManager,
			fontFamily = jQuery( self.selectors.title ).val(),
			style = $table.find( 'select' + self.selectors.styleInput ).first().val(),
			weight = $table.find( 'select' + self.selectors.weightInput ).first().val();

		return {
			style: self.ucFirst( style ),
			weight: self.ucFirst( weight ),
			styleAttribute: 'font-family: ' + fontFamily + ' ;font-style: ' + style + '; font-weight: ' + weight + ';'
		};
	};

	self.updateRowLabel = function( event, $table, $label, value ) {
		var self = elementorProAdmin.assetsManager.fontManager,
			$block = $table.closest( self.selectors.repeaterBlock ),
			$deleteBtn = $block.find( self.selectors.removeRowBtn ).first(),
			$editBtn = $block.find( self.selectors.editRowBtn ).first(),
			$closeBtn = $block.find( self.selectors.closeRowBtn ).first(),
			$toolbar = $table.find( self.selectors.toolbar ).last().clone(),
			previewStyle = self.getPreviewStyle( $table ),
			toolbarHtml;

		if ( $editBtn.length > 0) {
			$editBtn.not( self.selectors.toolbar + ' ' + self.selectors.editRowBtn ).remove();
		}

		if ( $closeBtn.length > 0) {
			$closeBtn.not( self.selectors.toolbar + ' ' + self.selectors.closeRowBtn ).remove();
		}

		if ( $deleteBtn.length > 0) {
			$deleteBtn.not( self.selectors.toolbar + ' ' + self.selectors.removeRowBtn ).remove();
		}

		toolbarHtml =  jQuery( '<li class="row-font-actions">' ).append( $toolbar )[0].outerHTML;

		return self.renderTemplate( self.fontLabelTemplate, {
			weight: '<span class="label">Weight:</span>' + previewStyle.weight,
			style: '<span class="label">Style:</span>' + previewStyle.style,
			preview: '<span style="' + previewStyle.styleAttribute + '">Elementor is making the web beautiful</span>',
			toolbar: toolbarHtml
		});
	};

	self.onRepeaterToggleVisible = function( event, $btn, $table, $toggleLabel ) {
		var self = elementorProAdmin.assetsManager.fontManager,
			$previewElement = $table.find( self.selectors.inlinePreview ),
			previewStyle = self.getPreviewStyle( $table );

		$previewElement.attr( 'style', previewStyle.styleAttribute );
	};

	self.onRepeaterNewRow = function( event, $btn, $block ) {
		var self = elementorProAdmin.assetsManager.fontManager;
		$block.find( self.selectors.removeRowBtn ).first().remove();
		$block.find( self.selectors.editRowBtn ).first().remove();
		$block.find( self.selectors.closeRowBtn ).first().remove();
	};

	self.maybeToggle = function( event ) {
		var self = elementorProAdmin.assetsManager.fontManager;
		event.preventDefault();

		if ( jQuery( this ).is( ':visible' ) && ! jQuery( event.target ).hasClass( self.selectors.editRowBtn ) ) {
			jQuery( this ).find( self.selectors.editRowBtn ).click();
		}
	};

	self.onInputChange = function( event ) {
		var self = this,
			$el = jQuery( event.target ).next();

		self.fields.upload.setFields( $el );
		self.fields.upload.setLabels( $el );
		self.fields.upload.replaceButtonClass( $el );
	};

	self.bind = function() {
		jQuery( document ).on( 'repeaterComputedLabel', this.updateRowLabel )
			.on( 'onRepeaterToggleVisible', this.onRepeaterToggleVisible )
			.on( 'onRepeaterNewRow', this.onRepeaterNewRow )
			.on( 'click', this.selectors.repeaterTitle, this.maybeToggle )
			.on( 'input', this.selectors.fileUrlInput, this.onInputChange.bind( this ) );
	};

	self.removeCloseHandle = function() {
		jQuery( this.selectors.closeHandle ).remove();
		jQuery( this.selectors.customFontsMetaBox ).removeClass( 'closed' ).removeClass( 'postbox' );
	};

	self.titleRequired = function() {
		jQuery( self.selectors.title ).prop( 'required', true );
	};

	self.init = function() {
		if ( ! jQuery( 'body' ).hasClass( self.selectors.editPageClass ) ) {
			return;
		}

		this.removeCloseHandle();
		this.titleRequired();
		this.bind();
		this.fields.upload.init();
		this.fields.repeater.init();
	};
};

},{"./fields/elementor-pro-repeater":4,"./fields/elementor-pro-upload":5}],4:[function(require,module,exports){
module.exports =  {
	selectors: {
		add: '.add-repeater-row',
		remove: '.remove-repeater-row',
		toggle: '.toggle-repeater-row',
		close: '.close-repeater-row',
		sort: '.sort-repeater-row',
		table: '.form-table',
		block: '.repeater-block',
		repeaterLabel: '.repeater-title',
		repeaterField: '.elementor-field-repeater'
	},

	counters: [],

	trigger: function( eventName , params ) {
		jQuery( document ).trigger( eventName, params );
	},

	triggerHandler: function( eventName, params ) {
		return jQuery( document ).triggerHandler( eventName, params );
	},

	countBlocks: function( $btn ) {
		return $btn.closest( this.selectors.repeaterField ).find( this.selectors.block ).length || 0;
	},

	add: function( btn, event ) {
		var self = this,
			$btn = jQuery( btn ),
			id = $btn.data( 'template-id' ),
			repeaterBlock;
		if ( ! self.counters.hasOwnProperty( id ) ) {
			self.counters[ id ] = self.countBlocks( $btn );
		}
		self.counters[ id ] += 1;
		repeaterBlock = jQuery( '#' + id ).html();
		repeaterBlock = self.replaceAll( '__counter__', self.counters[ id ], repeaterBlock );
		$btn.before( repeaterBlock );
		self.trigger( 'onRepeaterNewRow', [ $btn, $btn.prev() ] );
	},

	remove: function( btn, event ) {
		var self = this;
		jQuery( btn ).closest( self.selectors.block ).remove();
	},

	toggle: function( btn, event ) {
		var self = this,
			$btn = jQuery( btn ),
			$table = $btn.closest( self.selectors.block ).find( self.selectors.table ),
			$toggleLabel = $btn.closest( self.selectors.block ).find( self.selectors.repeaterLabel );

		$table.toggle( 0, 'none', function() {
			if ( $table.is( ':visible' ) ) {
				$table.closest( self.selectors.block ).addClass( 'block-visible' );
				self.trigger( 'onRepeaterToggleVisible', [ $btn, $table, $toggleLabel ] );
			} else {
				$table.closest( self.selectors.block ).removeClass( 'block-visible' );
				self.trigger( 'onRepeaterToggleHidden', [ $btn, $table, $toggleLabel ] );
			}
		} );

		$toggleLabel.toggle();

		// Update row label
		self.updateRowLabel( btn );
	},

	close: function( btn, event ) {
		var self = this,
			$btn = jQuery( btn ),
			$table = $btn.closest( self.selectors.block ).find( self.selectors.table ),
			$toggleLabel = $btn.closest( self.selectors.block ).find( self.selectors.repeaterLabel );

		$table.closest( self.selectors.block ).removeClass( 'block-visible' );
		$table.hide();
		self.trigger( 'onRepeaterToggleHidden', [ $btn, $table, $toggleLabel ] );
		$toggleLabel.show();
		self.updateRowLabel( btn );
	},

	updateRowLabel: function( btn ) {
		var self = this,
			$btn = jQuery( btn ),
			$table = $btn.closest( self.selectors.block ).find( self.selectors.table ),
			$toggleLabel = $btn.closest( self.selectors.block ).find( self.selectors.repeaterLabel );

		var selector = $toggleLabel.data( 'selector' );
		// For some browsers, `attr` is undefined; for others,  `attr` is false.  Check for both.
		if ( typeof selector !== typeof undefined && false !== selector ) {
			var value = false,
				std = $toggleLabel.data( 'default' );

			if ( $table.find( selector ).length ) {
				value = $table.find( selector ).val();
			}

			//filter hook
			var computedLabel = false;
			computedLabel = self.triggerHandler( 'repeaterComputedLabel', [ $table, $toggleLabel, value ] );

			// For some browsers, `attr` is undefined; for others,  `attr` is false.  Check for both.
			if (typeof computedLabel !== typeof undefined && false !== computedLabel ) {
				value = computedLabel;
			}

			// Fallback to default row label
			if ( typeof value === typeof undefined || false === value ) {
				value = std;
			}

			$toggleLabel.html( value );
		}
	},

	replaceAll: function( search, replace, string) {
		return string.replace( new RegExp( search, 'g' ), replace );
	},

	init: function() {
		var self = this;
		jQuery( document )
			.on( 'click', this.selectors.add, function( event ) {
				event.preventDefault();
				self.add( jQuery( this ), event );
			} )
			.on( 'click', this.selectors.remove, function( event ) {
				event.preventDefault();
				var result = confirm( jQuery( this ).data( 'confirm' ).toString() );
				if ( ! result ) {
					return;
				}
				self.remove( jQuery( this ), event );
			} )
			.on( 'click', this.selectors.toggle, function( event ) {
				event.preventDefault();
				event.stopPropagation();
				self.toggle( jQuery( this ), event );
			} )
			.on( 'click', this.selectors.close, function( event ) {
				event.preventDefault();
				event.stopPropagation();
				self.close( jQuery( this ), event );
			} );

		jQuery( this.selectors.toggle ).each( function() {
			self.updateRowLabel( jQuery( this ) );
		} );

		this.trigger( 'onRepeaterLoaded', [ this ] );
	}
};

},{}],5:[function(require,module,exports){
module.exports = {
	$btn: null,
	fileId: null,
	fileUrl: null,
	fileFrame: [],

	selectors: {
		uploadBtnClass: 'elementor-upload-btn',
		clearBtnClass: 'elementor-upload-clear-btn',
		uploadBtn: '.elementor-upload-btn',
		clearBtn: '.elementor-upload-clear-btn'
	},

	hasValue: function() {
		return ( '' !== jQuery( this.fileUrl ).val() );
	},

	setLabels: function( $el ) {
		if ( ! this.hasValue() ) {
			$el.val( $el.data( 'upload_text' ) );
		} else {
			$el.val( $el.data( 'remove_text' ) );
		}
	},

	setFields: function( el ) {
		var self = this;
		self.fileUrl = jQuery( el ).prev();
		self.fileId = jQuery( self.fileUrl ).prev();
		jQuerybtn = jQuery( el );
	},

	setUploadParams: function( ext, name ) {
		var self = this;
		self.fileFrame[ name ].uploader.uploader.param( 'uploadeType', ext );
		self.fileFrame[ name ].uploader.uploader.param( 'uploadeTypecaller', 'elementor-admin-upload' );
	},

	replaceButtonClass: function( el ) {
		if ( this.hasValue() ) {
			jQuery( el ).removeClass( this.selectors.uploadBtnClass ).addClass( this.selectors.clearBtnClass );
		} else {
			jQuery( el ).removeClass( this.selectors.clearBtnClass ).addClass( this.selectors.uploadBtnClass );
		}
		this.setLabels( el );
	},

	uploadFile: function( el ) {
		var self = this,
			$el = jQuery( el ),
			mime = $el.attr( 'data-mime_type' ) || '',
			ext = $el.attr( 'data-ext' ) || false,
			name = $el.attr( 'id' );
		// If the media frame already exists, reopen it.
		if ( 'undefined' !== typeof self.fileFrame[ name ] ) {
			if ( ext ) {
				self.setUploadParams( ext, name );
			}

			self.fileFrame[ name ].open();

			return;
		}

		// Create the media frame.
		self.fileFrame[ name ] = wp.media( {
			library: {
				type: mime.split( ',' )
			},
			title: $el.data( 'box_title' ),
			button: {
				text: $el.data( 'box_action' )
			},
			multiple: false
		} );


		// When an file is selected, run a callback.
		self.fileFrame[ name ].on( 'select', function() {
			// We set multiple to false so only get one image from the uploader
			var attachment = self.fileFrame[ name ].state().get( 'selection' ).first().toJSON();
			// Do something with attachment.id and/or attachment.url here
			jQuery( self.fileId ).val( attachment.id );
			jQuery( self.fileUrl ).val( attachment.url );
			self.replaceButtonClass( el );
			self.updatePreview( el );
		});

		// Finally, open the modal
		self.fileFrame[ name ].open();
		if ( ext ) {
			self.setUploadParams( ext, name );
		}
	},

	updatePreview: function( el ) {
		var self = this,
			$ul = jQuery( el ).parent().find( 'ul' ),
			$li = jQuery( '<li>' ),
			showUrlType = jQuery( el ).data( 'preview_anchor' ) || 'full';

		$ul.html( '' );

		if ( self.hasValue() && 'none' !== showUrlType ) {
			var anchor = jQuery( self.fileUrl ).val();
			if ( 'full' !== showUrlType ) {
				anchor = anchor.substring( anchor.lastIndexOf( '/' ) + 1 );
			}

			$li.html( '<a href="' + jQuery( self.fileUrl ).val() + '" download>' + anchor + '</a>' );
			$ul.append( $li );
		}
	},

	setup: function() {
		var self = this;
		jQuery( self.selectors.uploadBtn + ', ' + self.selectors.clearBtn ).each( function() {
			self.setFields( jQuery( this ) );
			self.updatePreview( jQuery( this ) );
			self.setLabels( jQuery( this ) );
			self.replaceButtonClass( jQuery( this ) );
		});
	},

	init: function() {
		var self = this;

		jQuery( document ).on( 'click', self.selectors.uploadBtn, function( event ) {
			event.preventDefault();
			self.setFields( jQuery( this ) );
			self.uploadFile( jQuery( this ) );
		} );

		jQuery( document ).on( 'click', self.selectors.clearBtn, function( event ) {
			event.preventDefault();
			self.setFields( jQuery( this ) );
			jQuery( self.fileUrl ).val( '' );
			jQuery( self.fileId ).val( '' );

			self.updatePreview( jQuery( this ) );
			self.replaceButtonClass( jQuery( this ) );
		} );

		this.setup();

		jQuery( document ).on( 'onRepeaterNewRow', function() {
			self.setup();
		} );
	}
};

},{}],6:[function(require,module,exports){
module.exports = function() {
	var self = this;
	self.cacheElements = function() {
		this.cache = {
			$button: jQuery( '#elementor_pro_typekit_validate_button' ),
			$kitIdField: jQuery( '#elementor_typekit-kit-id' ),
			$dataLabelSpan: jQuery( '.elementor-pro-typekit-data')
		};
	};
	self.bindEvents = function() {
		var self = this;
		this.cache.$button.on( 'click', function( event ) {
			event.preventDefault();
			self.fetchFonts();
		});

		this.cache.$kitIdField.on( 'change', function( event ) {
			self.setState( 'clear' );
		} );
	};
	self.fetchFonts = function() {
		this.setState( 'loading' );
		this.cache.$dataLabelSpan.addClass( 'hidden' );

		var self = this,
			kitID = this.cache.$kitIdField.val();

		if ( '' === kitID ) {
			this.setState( 'clear' );
			return;
		}

		jQuery.post( ajaxurl, {
			action: 'elementor_pro_admin_fetch_fonts',
			kit_id: kitID,
			_nonce: self.cache.$button.data( 'nonce' )
		} ).done( function( data ) {
			if ( data.success ) {
				var template = self.cache.$button.data( 'found' );
				template = template.replace( '{{count}}', data.data.count );
				self.cache.$dataLabelSpan.html( template ).removeClass( 'hidden' );
				self.setState( 'success' );
			} else {
				self.setState( 'error' );
			}
		} ).fail( function() {
			self.setState();
		} );
	};
	self.setState = function( type ){
		var classes = [ 'loading', 'success', 'error' ],
			currentClass, classIndex;

		for ( classIndex in classes ) {
			currentClass = classes[ classIndex ];
			if ( type === currentClass ) {
				this.cache.$button.addClass( currentClass );
			} else {
				this.cache.$button.removeClass( currentClass );
			}
		}
	};
	self.init = function() {
		this.cacheElements();
		this.bindEvents();
	};
	self.init();
};

},{}],7:[function(require,module,exports){
module.exports = function(){
	var apiValidations = require( './admin/api-validations' );
	this.dripButton = new apiValidations( 'drip_api_token' );
	this.getResponse = new apiValidations( 'getresponse_api_key' );
	this.convertKit = new apiValidations( 'convertkit_api_key' );
	this.mailChimp = new apiValidations( 'mailchimp_api_key' );
	this.activeCcampaign = new apiValidations( 'activecampaign_api_key', 'activecampaign_api_url' );
};
},{"./admin/api-validations":8}],8:[function(require,module,exports){
module.exports = function( key, fieldID ) {
	var self = this;
	self.cacheElements = function() {
		this.cache = {
			$button: jQuery( '#elementor_pro_' + key + '_button' ),
			$apiKeyField: jQuery( '#elementor_pro_' + key ),
			$apiUrlField: jQuery( '#elementor_pro_' + fieldID )
		};
	};
	self.bindEvents = function() {
		var self = this;
		this.cache.$button.on( 'click', function( event ) {
			event.preventDefault();
			self.validateApi();
		});

		this.cache.$apiKeyField.on( 'change', function( event ) {
			self.setState( 'clear' );
		} );
	};
	self.validateApi = function() {
		this.setState( 'loading' );
		var apiKey = this.cache.$apiKeyField.val(),
		self = this;

		if ( '' === apiKey ) {
			this.setState( 'clear' );
			return;
		}

		if ( this.cache.$apiUrlField.length && '' === this.cache.$apiUrlField.val() ) {
			this.setState( 'clear' );
			return;
		}

		jQuery.post( ajaxurl, {
			action: self.cache.$button.data( 'action' ),
			api_key: apiKey,
			api_url: this.cache.$apiUrlField.val(),
			_nonce: self.cache.$button.data( 'nonce' )
		} ).done( function( data ) {
			if ( data.success ) {
				self.setState( 'success' );
			} else {
				self.setState( 'error' );
			}
		} ).fail( function() {
			self.setState();
		} );
	};
	self.setState = function( type ){
		var classes = [ 'loading', 'success', 'error' ],
			currentClass, classIndex;

		for ( classIndex in classes ) {
			currentClass = classes[ classIndex ];
			if ( type === currentClass ) {
				this.cache.$button.addClass( currentClass );
			} else {
				this.cache.$button.removeClass( currentClass );
			}
		}
	};
	self.init = function() {
		this.cacheElements();
		this.bindEvents();
	};
	self.init();
};

},{}],9:[function(require,module,exports){
module.exports = function(){
	var EditButton = require( './admin/edit-button' );
	this.editButton = new EditButton();
};
},{"./admin/edit-button":10}],10:[function(require,module,exports){
module.exports = function() {
	var self = this;

	self.init = function() {
		jQuery( document ).on( 'change', '.elementor-widget-template-select', function() {
			var $this = jQuery( this ),
				templateID = $this.val(),
				$editButton = $this.parents( 'p' ).find( '.elementor-edit-template' ),
				type = $this.find( '[value="' + templateID + '"]' ).data( 'type' );

			if ( 'page' !== type ) { // 'widget' is editable only from Elementor page
				$editButton.hide();

				return;
			}

			var editUrl = ElementorProConfig.i18n.home_url + '?p=' + templateID + '&elementor';

			$editButton
				.prop( 'href', editUrl )
				.show();

		} );
	};

	self.init();
};

},{}]},{},[1])
//# sourceMappingURL=admin.js.map