use serde::{Deserialize, Serialize};
use crate::node::{Common, IntoNode, Node};
use crate::text::Line;
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Spinner {
#[serde(flatten)]
pub common: Common,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub label: Option<Line>,
}
impl Spinner {
#[must_use]
pub fn new(label: impl Into<Line>) -> Self {
Self {
common: Common::new(),
label: Some(label.into()),
}
}
#[must_use]
pub fn label(mut self, label: impl Into<Line>) -> Self {
self.label = Some(label.into());
self
}
}
impl IntoNode for Spinner {}
impl From<Spinner> for Node {
fn from(s: Spinner) -> Self {
Node::Spinner(s)
}
}