module.exports = function() { var editor, editedModel, replyToControl; var setReplyToControl = function() { replyToControl = editor.collection.findWhere( { name: 'email_reply_to' } ); }; var getReplyToView = function() { return editor.children.findByModelCid( replyToControl.cid ); }; var refreshReplyToElement = function() { var replyToView = getReplyToView(); if ( replyToView ) { replyToView.render(); } }; var updateReplyToOptions = function() { var settingsModel = editedModel.get( 'settings' ), emailModels = settingsModel.get( 'form_fields' ).where( { field_type: 'email' } ), emailFields; emailModels = _.reject( emailModels, { field_label: '' } ); emailFields = _.map( emailModels, function( model ) { return { id: model.get( 'custom_id' ), label: sprintf( '%s Field', model.get( 'field_label' ) ), }; } ); replyToControl.set( 'options', { '': replyToControl.get( 'options' )[ '' ] } ); _.each( emailFields, function( emailField ) { replyToControl.get( 'options' )[ emailField.id ] = emailField.label; } ); refreshReplyToElement(); }; var updateDefaultReplyTo = function( settingsModel ) { replyToControl.get( 'options' )[ '' ] = settingsModel.get( 'email_from' ); refreshReplyToElement(); }; var onFormFieldsChange = function( changedModel ) { // If it's repeater field if ( changedModel.get( 'custom_id' ) ) { if ( 'email' === changedModel.get( 'field_type' ) ) { updateReplyToOptions(); } } if ( changedModel.changed.email_from ) { updateDefaultReplyTo( changedModel ); } }; var onPanelShow = function( panel, model ) { editor = panel.getCurrentPageView(); editedModel = model; setReplyToControl(); var settingsModel = editedModel.get( 'settings' ); settingsModel.on( 'change', onFormFieldsChange ); updateDefaultReplyTo( settingsModel ); updateReplyToOptions(); }; var init = function() { elementor.hooks.addAction( 'panel/open_editor/widget/form-lite', onPanelShow ); }; init(); };