refactor: extract current block info helper

This commit is contained in:
lix-2026
2026-05-25 09:21:58 +08:00
parent e8e59dc473
commit 2c32c4f656
2 changed files with 25 additions and 1 deletions
@@ -19,6 +19,12 @@ pub(crate) struct SelectionPayload {
pub(crate) current_block_id: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub(crate) struct CurrentBlockInfo {
pub(crate) index: Option<usize>,
pub(crate) block_id: Option<String>,
}
pub(crate) fn node_is_within_root(node: Node, root: &Element) -> bool {
let mut current = Some(node);
while let Some(node) = current {
@@ -187,3 +193,15 @@ pub(crate) fn selection_payload(
current_block_id: current_block_index.and_then(runtime_block_id_from_index),
}
}
pub(crate) fn current_block_info_from_index(index: Option<usize>) -> CurrentBlockInfo {
index
.map(|value| CurrentBlockInfo {
index: Some(value),
block_id: runtime_block_id_from_index(value),
})
.unwrap_or(CurrentBlockInfo {
index: None,
block_id: None,
})
}