use vize_l0::{Box, Vec};
pub mod bind;
pub mod control;
pub mod element;
pub mod handler;
pub mod model;
pub mod slot;
pub mod text;
pub mod vue;
pub use bind::{BindOp, OnOp};
pub use control::{ForBinding, ForOp, IfBranch, IfOp};
mod original_for;
pub use element::{Attribute, ComponentOp, ElementOp, Namespace};
pub use handler::{HandlerId, OnHandlerRef};
pub use model::{BindingContract, ModelOp};
pub use original_for::{OriginalForId, OriginalForOp};
pub use slot::{DynamicName, SlotContentOp, SlotOp, SlotsObjectOp};
pub use text::{CommentOp, InterpolationOp, TextOp};
pub use vue::{
VueCloakOp, VueCssBindOp, VueDirectiveOp, VueHtmlOp, VueMemoOp, VueOnceOp, VueShowOp,
VueSlotScopeOp, VueSyncOp, VueTextOp,
};
#[derive(Debug)]
pub enum Op<'a> {
Element(Box<'a, ElementOp<'a>>),
Component(Box<'a, ComponentOp<'a>>),
Text(Box<'a, TextOp<'a>>),
Interpolation(Box<'a, InterpolationOp<'a>>),
Comment(Box<'a, CommentOp<'a>>),
If(Box<'a, IfOp<'a>>),
For(Box<'a, ForOp<'a>>),
OriginalFor(Box<'a, OriginalForOp<'a>>),
Slot(Box<'a, SlotOp<'a>>),
}
impl Op<'_> {
#[must_use]
pub const fn mnemonic(&self) -> &'static str {
match self {
Self::Element(_) => "ui.element",
Self::Component(_) => "ui.component",
Self::Text(_) => "ui.text",
Self::Interpolation(_) => "ui.interpolation",
Self::Comment(_) => "ui.comment",
Self::If(_) => "ui.if",
Self::For(_) => "ui.for",
Self::OriginalFor(_) => "ui.for",
Self::Slot(_) => "ui.slot",
}
}
}
#[derive(Debug)]
pub enum BindingOp<'a> {
Bind(Box<'a, BindOp<'a>>),
On(Box<'a, OnOp<'a>>),
Model(Box<'a, ModelOp<'a>>),
SlotContent(Box<'a, SlotContentOp<'a>>),
SlotsObject(Box<'a, SlotsObjectOp<'a>>),
VueDirective(Box<'a, VueDirectiveOp<'a>>),
VueCssBind(Box<'a, VueCssBindOp<'a>>),
VueSync(Box<'a, VueSyncOp<'a>>),
VueSlotScope(Box<'a, VueSlotScopeOp<'a>>),
VueOnce(Box<'a, VueOnceOp>),
VueMemo(Box<'a, VueMemoOp<'a>>),
VueShow(Box<'a, VueShowOp<'a>>),
VueHtml(Box<'a, VueHtmlOp<'a>>),
VueText(Box<'a, VueTextOp<'a>>),
VueCloak(Box<'a, VueCloakOp>),
}
impl BindingOp<'_> {
#[must_use]
pub const fn mnemonic(&self) -> &'static str {
match self {
Self::Bind(_) => "ui.bind",
Self::On(_) => "ui.on",
Self::Model(_) => "ui.model",
Self::SlotContent(_) => "ui.slot-content",
Self::SlotsObject(_) => "ui.slots-object",
Self::VueDirective(_) => "vue.directive",
Self::VueCssBind(_) => "vue.css-bind",
Self::VueSync(_) => "vue.sync",
Self::VueSlotScope(_) => "vue.slot-scope",
Self::VueOnce(_) => "vue.once",
Self::VueMemo(_) => "vue.memo",
Self::VueShow(_) => "vue.show",
Self::VueHtml(_) => "vue.html",
Self::VueText(_) => "vue.text",
Self::VueCloak(_) => "vue.cloak",
}
}
}
#[derive(Debug)]
pub struct Region<'a> {
pub ops: Vec<'a, Op<'a>>,
}
const _: () = assert!(!core::mem::needs_drop::<Op<'static>>());
const _: () = assert!(!core::mem::needs_drop::<BindingOp<'static>>());
const _: () = assert!(!core::mem::needs_drop::<Region<'static>>());
#[cfg(target_pointer_width = "64")]
const _: () = {
assert!(core::mem::size_of::<Op<'_>>() == 16);
assert!(core::mem::size_of::<BindingOp<'_>>() == 16);
assert!(core::mem::size_of::<Region<'_>>() == 24);
};