Skip to main content

Module dom_bridge

Module dom_bridge 

Source
Expand description

JS ⇄ レンダラの DOM ブリッジ。

dom::parse_html の結果を ドキュメント順 にフラット化した軽量アリーナを持ち、 JS から document.getElementById 等で参照されるノードと、textContent / style / classList の変更、addEventListener('click') で登録されたリスナを保持する。

レンダラは毎レイアウトで last_html を再パースするため、ブリッジは 「同一 HTML を同一ドキュメント順で歩けばインデックスが一致する」性質を使い、 apply_overrides で再パース木へ JS の変更を焼き戻してから CSS カスケードに渡す。 これにより既存のレンダリング経路をそのまま再利用できる(HTML 再シリアライズ不要)。

Structs§

DomBridge
DOM ブリッジ本体。JsRuntime が Rc<RefCell<>> で保持し、レンダラと共有する。
DomNode
ブリッジ上の 1 ノード。要素またはテキスト。
IntersectionObserverReg
IntersectionObserver の登録エントリ
Listener
click 等のイベントリスナ登録。
MutObsReg
MutationObserver の登録エントリ。
MutRec
MutationObserver に届けるレコード(Rust 側内部表現)。
ObservedResizeTarget
ResizeObserver の監視対象要素
ObservedTarget
IntersectionObserver の監視対象要素
ResizeObserverReg
ResizeObserver の登録エントリ
ValidityFlags
ValidityState(HTML5 制約検証)の個別フラグ。以前は element.validity が valid/valueMissing/customError の3つしか公開せず、input.validity. patternMismatch/.typeMismatch/.rangeOverflow 等、特定の制約だけを狙い撃ちして カスタムエラーメッセージを出し分ける定番パターンが常に undefined(falsy)に なっていた。

Enums§

CeEvent
カスタム要素の反応の契機。

Functions§

css_prop_from_camel 🔒
backgroundColor → background-color。既にケバブならそのまま。
html_escape_attr 🔒
outerHTML 直列化用の最小限の HTML エスケープ(属性値。" も escape する)。
html_escape_text 🔒
outerHTML 直列化用の最小限の HTML エスケープ(テキストノード本文)。
is_listener_aborted 🔒
is_signal_aborted
AbortSignal オブジェクトの .aborted が true か。
parse_inline_style 🔒
color: red; font-size: 12px → マップ。
serialize_inline_style 🔒
strip_style_priority 🔒
生の宣言値末尾の !important(大小文字・空白ゆれ許容)を切り離す。 (値本体, important か) を返す。CSS カスケード側(css.rs)の !important パーサとは別実装だが、element.style.getPropertyValue/ .getPropertyPriority(丸ごと未対応だった。2026-07-16 発見)専用の 軽量版。