use super::*;
use day_toolkit_arkui::{AHandle, ArkUi, piece};
use day_spec::NodeId;
fn make(_backend: &mut ArkUi, p: &WebProps, id: NodeId) -> AHandle {
let props = if p.inline_root.is_empty() {
p.url.clone()
} else {
format!(
"day-inline{SEP}{}{SEP}{}",
p.inline_root,
p.inline_start,
SEP = super::SEP
)
};
let props = if p.transparent {
format!("day-transparent{}{props}", super::SEP)
} else {
props
};
let props = if p.resources.is_some() {
format!("day-resource{SEP}{props}", SEP = super::SEP)
} else {
props
};
let props = if p.profile.private {
format!("day-private{}{props}", super::SEP)
} else {
props
};
let props = if let Some(labels) = &p.tabs {
format!(
"day-tabs{SEP}{}{SEP}{}{SEP}{props}",
labels.foreground,
labels.background,
SEP = super::SEP
)
} else {
props
};
piece::make(KIND, id, &props)
}
fn update(_backend: &mut ArkUi, h: &AHandle, patch: &WebPatch) {
if let WebPatch::Eval { req, script } = patch {
piece::update(h, "eval", &format!("{req}{}{script}", super::SEP));
return;
}
let (cmd, arg) = match patch {
WebPatch::Load(u) => ("load", u.as_str()),
WebPatch::Back => ("back", ""),
WebPatch::Forward => ("forward", ""),
WebPatch::Stop => ("stop", ""),
WebPatch::Reload => ("reload", ""),
WebPatch::ForceReload => ("forceReload", ""),
WebPatch::Eval { .. } => return, };
piece::update(h, cmd, arg);
}
day_pieces::renderer!(day_toolkit_arkui::RENDERERS, ArkUi,
kind: KIND, props: WebProps, patch: WebPatch,
make: make, update: update, measure: day_pieces::fill_measure);