/// Italic text (deprecated - use `Dom::create_em()` for emphasis or `Dom::create_cite()` for citations).
impl_option!(NodeType, OptionNodeType, copy = false, [Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash]);
// +spec:display-property:844893 - block-level box establishing a new formatting context (BFC) modeled here
impl_vec!(IdOrClass, IdOrClassVec, IdOrClassVecDestructor, IdOrClassVecDestructorType, IdOrClassVecSlice, OptionIdOrClass);
impl_vec!(AttributeType, AttributeTypeVec, AttributeTypeVecDestructor, AttributeTypeVecDestructorType, AttributeTypeVecSlice, OptionAttributeType);
impl_vec!(NodeData, NodeDataVec, NodeDataVecDestructor, NodeDataVecDestructorType, NodeDataVecSlice, OptionNodeData);
// SAFETY: All fields in NodeData are either Send (NodeType, NodeFlags, CssPropertyWithConditionsVec),
// Function pointers (callbacks) are inherently Send. The RefAny uses atomic reference counting.
/// Sidenote: See https://www.w3.org/TR/html5/editing.html#sequential-focus-navigation-and-the-tabindex-attribute
// NOTE: Getters are used here in order to allow changing the memory allocator for the NodeData
/// Legacy accessor for raster clip mask. Returns `Some` only for `SvgNodeData::ImageClipMask`.
if !matches!(attr, AttributeType::ContentEditable(_) | AttributeType::Id(_) | AttributeType::Class(_)) {
impl_vec!(DomId, DomIdVec, DomIdVecDestructor, DomIdVecDestructorType, DomIdVecSlice, OptionDomId);
/// The document model, similar to HTML. This is a create-only structure, you don't actually read
impl_vec!(CssWithNodeId, CssWithNodeIdVec, CssWithNodeIdVecDestructor, CssWithNodeIdVecDestructorType, CssWithNodeIdVecSlice, OptionCssWithNodeId);
impl_option!(CssWithNodeId, OptionCssWithNodeId, copy = false, [Debug, Clone, PartialEq, PartialOrd]);
/// **Accessibility**: Represents the dominant content. There should be only ONE main per page.
/// Use with `<figcaption>` to provide a caption. Screen readers associate caption with figure.
/// The icon name should match names from the icon provider (e.g., "home", "settings", "search").
/// **Accessibility**: Use `h1` for the main page title. There should typically be only one `h1`
/// **Accessibility**: Use `h1` for the main page title. There should typically be only one `h1`
/// **Accessibility**: Provide fallback content as children. Use aria-label to describe content.
/// **Accessibility**: Provide alternative content or link. Use aria-label to describe embedded
/// **Accessibility**: Use for charset, viewport, description. Crucial for proper text display.