/**
  * The class constructor.
  *
  * @var 	string		the setting ID.
  * @var 	string		theme_mod / option
  * @var 	array 		an array of arrays of the output arguments.
  * @var 	mixed		a callable function.
  */
 public static function css($field)
 {
     /**
      * Make sure the field is sanitized before proceeding any further.
      */
     $field_sanitized = Kirki_Field_Sanitize::sanitize_field($field);
     /**
      * Set class vars
      */
     self::$settings = $field_sanitized['settings'];
     self::$callback = $field_sanitized['sanitize_callback'];
     self::$field_type = $field_sanitized['type'];
     self::$output = $field_sanitized['output'];
     if (!is_array(self::$output)) {
         self::$output = array(array('element' => self::$output, 'sanitize_callback' => null));
     }
     /**
      * Get the value of this field
      */
     self::$value = Kirki_Values::get_sanitized_field_value($field_sanitized);
     /**
      * Returns the styles
      */
     return self::styles();
 }
 /**
  * loop through all fields and create an array of style definitions
  */
 public static function loop_controls()
 {
     // Get an instance of the Kirki_Styles_Output_CSS class.
     // This will make sure google fonts and backup fonts are loaded.
     Kirki_Styles_Output_CSS::get_instance();
     $fields = Kirki::$fields;
     $css = array();
     // Early exit if no fields are found.
     if (empty($fields)) {
         return;
     }
     foreach ($fields as $field) {
         // Only continue if $field['output'] is set
         if (isset($field['output']) && !empty($field['output']) && 'background' != $field['type']) {
             if (function_exists('array_replace_recursive')) {
                 $css = array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field));
             } else {
                 $css = Kirki_Helper::array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field));
             }
         }
     }
     if (is_array($css)) {
         return Kirki_Styles_Output_CSS::styles_parse(Kirki_Styles_Output_CSS::add_prefixes($css));
     }
     return;
 }
 /**
  * loop through all fields and create an array of style definitions
  */
 public static function loop_controls()
 {
     $fields = Kirki::$fields;
     $css = array();
     // Early exit if no fields are found.
     if (empty($fields)) {
         return;
     }
     foreach ($fields as $field) {
         // Only continue if $field['output'] is set
         if (isset($field['output']) && !empty($field['output']) && 'background' != $field['type']) {
             if (function_exists('array_replace_recursive')) {
                 $css = array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field));
             } else {
                 $css = Kirki_Helper::array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field));
             }
         }
     }
     if (is_array($css)) {
         return Kirki_Styles_Output_CSS::styles_parse(Kirki_Styles_Output_CSS::add_prefixes($css));
     }
     return;
 }
 /**
  * Get the CSS for a field.
  *
  * @static
  * @access public
  * @param array $field The field.
  * @return array
  */
 public static function css($field)
 {
     // Set class vars.
     self::$settings = $field['settings'];
     self::$callback = $field['sanitize_callback'];
     self::$field_type = $field['type'];
     self::$output = $field['output'];
     if (!is_array(self::$output)) {
         self::$output = array(array('element' => self::$output, 'sanitize_callback' => null));
     }
     // Get the value of this field.
     self::$value = Kirki_Values::get_sanitized_field_value($field);
     // Find the class that will handle the outpout for this field.
     $classname = 'Kirki_Output';
     $field_output_classes = apply_filters('kirki/' . $field['kirki_config'] . '/output/control-classnames', array('kirki-spacing' => 'Kirki_Output_Field_Spacing', 'kirki-typography' => 'Kirki_Output_Field_Typography', 'kirki-multicolor' => 'Kirki_Output_Field_Multicolor'));
     if (array_key_exists(self::$field_type, $field_output_classes)) {
         $classname = $field_output_classes[self::$field_type];
     }
     $obj = new $classname($field['kirki_config'], self::$output, self::$value);
     return $obj->get_styles();
 }
 /**
  * Loop through all fields and create an array of style definitions.
  *
  * @static
  * @access public
  * @param string $config_id The configuration ID.
  */
 public static function loop_controls($config_id)
 {
     // Get an instance of the Kirki_Styles_Output_CSS class.
     // This will make sure google fonts and backup fonts are loaded.
     Kirki_Styles_Output_CSS::get_instance();
     $fields = Kirki::$fields;
     $css = array();
     // Early exit if no fields are found.
     if (empty($fields)) {
         return;
     }
     foreach ($fields as $field) {
         // Only process fields that belong to $config_id.
         if ($config_id != $field['kirki_config']) {
             continue;
         }
         // Only continue if field dependencies are met.
         if (!empty($field['required'])) {
             $valid = true;
             foreach ($field['required'] as $requirement) {
                 if (isset($requirement['setting']) && isset($requirement['value']) && isset($requirement['operator'])) {
                     $controller_value = Kirki_Values::get_value($config_id, $requirement['setting']);
                     if (!Kirki_Active_Callback::compare($controller_value, $requirement['value'], $requirement['operator'])) {
                         $valid = false;
                     }
                 }
             }
             if (!$valid) {
                 continue;
             }
         }
         // Only continue if $field['output'] is set.
         if (isset($field['output']) && !empty($field['output']) && 'background' != $field['type']) {
             $css = Kirki_Helper::array_replace_recursive($css, Kirki_Styles_Output_CSS::css($field));
             // Add the globals.
             if (isset(self::$css_array[$config_id]) && !empty(self::$css_array[$config_id])) {
                 Kirki_Helper::array_replace_recursive($css, self::$css_array[$config_id]);
             }
         }
     }
     $css = apply_filters('kirki/' . $config_id . '/styles', $css);
     if (is_array($css)) {
         return Kirki_Styles_Output_CSS::styles_parse(Kirki_Styles_Output_CSS::add_prefixes($css));
     }
     return;
 }