1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! `StyleDeclaration` + `StyleDeclarationMut` — CSSOM IDL wrappers
//! around an element's inline `TuiStyle`.
//!
//! Reads/writes route through
//! [`rdom_style::property_dispatch`],
//! the single source of truth for the name→(setter, serializer)
//! mapping shared with the block parser.
//!
//! ## Attribute coherence
//!
//! Write methods on [`StyleDeclarationMut`] update **both**:
//!
//! 1. `TuiExt::inline_style` — the cascade input.
//! 2. The `style="…"` attribute — what `outerHTML` round-trips
//! and what the future external-write observer (step 28)
//! listens for.
//!
//! Both writes happen in one method body; from the caller's
//! perspective the two are atomic.
//!
//! ## Layout
//!
//! - `error` — [`SetPropertyError`], the `try_*` failure channel.
//! - `read` — [`StyleDeclaration`], the read-only snapshot.
//! - `write` — [`StyleDeclarationMut`], the dual-write setter handle.
//! - `serialize` — `cssText` serialization + shorthand suppression.
use NodeRef;
use crateTuiExt;
use crateTuiNodeExt;
pub use SetPropertyError;
pub use StyleDeclaration;
pub use StyleDeclarationMut;
pub use css_text_of;
/// Helper for [`crate::TuiAccessors::style`] — constructs a
/// snapshot declaration view of `node`'s inline style. Returns
/// `None` for non-element nodes (those without a `TuiExt`).
pub