protected function sanitize_field_input($value, $instance)
 {
     /* @var $field_factory SiteOrigin_Widget_Field_Factory */
     $field_factory = SiteOrigin_Widget_Field_Factory::single();
     foreach ($this->fields as $sub_field_name => $sub_field_options) {
         /* @var $sub_field SiteOrigin_Widget_Field_Base */
         if (!empty($this->sub_fields) && !empty($this->sub_fields[$sub_field_name])) {
             $sub_field = $this->sub_fields[$sub_field_name];
         } else {
             $sub_field = $field_factory->create_field($this->base_name . '][' . $sub_field_name, $sub_field_options, $this->for_widget, $this->parent_container);
         }
         $value[$sub_field_name] = $sub_field->sanitize(isset($value[$sub_field_name]) ? $value[$sub_field_name] : null, $value);
         $value = $sub_field->sanitize_instance($value);
     }
     return $value;
 }
 /**
  * Update the widget instance.
  *
  * @param array $new_instance
  * @param array $old_instance
  * @param string $form_type The type of form we're using.
  * @return array|void
  */
 public function update($new_instance, $old_instance, $form_type = 'widget')
 {
     if (!class_exists('SiteOrigin_Widgets_Color_Object')) {
         require plugin_dir_path(__FILE__) . 'inc/color.php';
     }
     if ($form_type == 'widget') {
         if (empty($this->form_options)) {
             $this->form_options = $this->form_options();
         }
         $form_options = $this->form_options;
     } else {
         $form_options = $this->get_form($form_type);
     }
     if (!empty($form_options)) {
         /* @var $field_factory SiteOrigin_Widget_Field_Factory */
         $field_factory = SiteOrigin_Widget_Field_Factory::single();
         foreach ($form_options as $field_name => $field_options) {
             /* @var $field SiteOrigin_Widget_Field_Base */
             if (!empty($this->fields) && !empty($this->fields[$field_name])) {
                 $field = $this->fields[$field_name];
             } else {
                 $field = $field_factory->create_field($field_name, $field_options, $this);
                 $this->fields[$field_name] = $field;
             }
             $new_instance[$field_name] = $field->sanitize(isset($new_instance[$field_name]) ? $new_instance[$field_name] : null, $new_instance, isset($old_instance[$field_name]) ? $old_instance[$field_name] : null);
             $new_instance = $field->sanitize_instance($new_instance);
         }
         // Let other plugins also sanitize the instance
         $new_instance = apply_filters('siteorigin_widgets_sanitize_instance', $new_instance, $form_options, $this);
         $new_instance = apply_filters('siteorigin_widgets_sanitize_instance_' . $this->id_base, $new_instance, $form_options, $this);
     }
     // Remove the old CSS, it'll be regenerated on page load.
     $this->delete_css($this->modify_instance($new_instance));
     return $new_instance;
 }