use crate::comments::CssComments;
use biome_css_syntax::CssLanguage;
use biome_formatter::FormatResult;
use biome_formatter::{write, CstFormatContext};
use crate::prelude::*;
use crate::CssFormatter;
use biome_rowan::{AstNode, AstNodeList};
pub(crate) fn write_component_value_list<N, I>(node: &N, f: &mut CssFormatter) -> FormatResult<()>
where
N: AstNodeList<Language = CssLanguage, Node = I> + AstNode<Language = CssLanguage>,
I: AstNode<Language = CssLanguage> + IntoFormat<CssFormatContext>,
{
let layout = get_value_list_layout(node, f.context().comments());
match layout {
ValueListLayout::Fill => {
let values = format_with(|f: &mut Formatter<'_, CssFormatContext>| {
f.fill()
.entries(&soft_line_break_or_space(), node.iter().formatted())
.finish()
});
write!(f, [group(&indent(&values))])
}
ValueListLayout::OnePerLine => write!(f, [format_verbatim_node(node.syntax())]),
}
}
#[derive(Copy, Clone, Debug)]
pub(crate) enum ValueListLayout {
Fill,
#[allow(unused)]
OnePerLine,
}
pub(crate) fn get_value_list_layout<N, I>(_list: &N, _: &CssComments) -> ValueListLayout
where
N: AstNodeList<Language = CssLanguage, Node = I> + AstNode<Language = CssLanguage>,
I: AstNode<Language = CssLanguage> + IntoFormat<CssFormatContext>,
{
ValueListLayout::Fill
}