Parsed: 129730

  protected static function get_property_value( $styles, $path, $theme_json = null ) {
    $value = _wp_array_get( $styles, $path, '' );

    if ( '' === $value || null === $value ) {
      // No need to process the value further.
      return '';
    }

    /*
		 * This converts references to a path to the value at that path
		 * where the values is an array with a "ref" key, pointing to a path.
		 * For example: { "ref": "style.color.background" } => "#fff".
		 */
    if ( is_array( $value ) && isset( $value['ref'] ) ) {
      $value_path = explode( '.', $value['ref'] );
      $ref_value  = _wp_array_get( $theme_json, $value_path );
      // Only use the ref value if we find anything.
      if ( ! empty( $ref_value ) && is_string( $ref_value ) ) {
        $value = $ref_value;
      }

      if ( is_array( $ref_value ) && isset( $ref_value['ref'] ) ) {
        $path_string      = json_encode( $path );
        $ref_value_string = json_encode( $ref_value );
        _doing_it_wrong(
          'get_property_value',
          sprintf(
            /* translators: 1: theme.json, 2: Value name, 3: Value path, 4: Another value name. */
            __( 'Your %1$s file uses a dynamic value (%2$s) for the path at %3$s. However, the value at %3$s is also a dynamic value (pointing to %4$s) and pointing to another dynamic value is not supported. Please update %3$s to point directly to %4$s.' ),
            'theme.json',
            $ref_value_string,
            $path_string,
            $ref_value['ref']
          ),
          '6.1.0'
        );
      }
    }

    if ( is_array( $value ) ) {
      return $value;
    }

    // Convert custom CSS properties.
    $prefix     = 'var:';
    $prefix_len = strlen( $prefix );
    $token_in   = '|';
    $token_out  = '--';
    if ( 0 === strncmp( $value, $prefix, $prefix_len ) ) {
      $unwrapped_name = str_replace(
        $token_in,
        $token_out,
        substr( $value, $prefix_len )
      );
      $value          = "var(--wp--$unwrapped_name)";
    }

    return $value;
  }