refactor: extract drop indicator target helpers
This commit is contained in:
@@ -139,6 +139,32 @@ pub(crate) fn hovered_block_from_target(
|
||||
block_state_from_index(index)
|
||||
}
|
||||
|
||||
pub(crate) fn drop_indicator_from_target(
|
||||
target: EventTarget,
|
||||
client_y: i32,
|
||||
handle_selector: &str,
|
||||
) -> Option<DropIndicatorState> {
|
||||
let root = editor_root_element()?;
|
||||
let hovered = hovered_block_from_target(target, &root, handle_selector)?;
|
||||
let block = root.children().item(hovered.index as u32)?;
|
||||
let stage = editor_stage_element()?;
|
||||
Some(drop_indicator_from_block_rects(
|
||||
hovered.index,
|
||||
&block,
|
||||
&stage,
|
||||
client_y,
|
||||
))
|
||||
}
|
||||
|
||||
pub(crate) fn drop_indicator_from_point(
|
||||
client_x: i32,
|
||||
client_y: i32,
|
||||
handle_selector: &str,
|
||||
) -> Option<DropIndicatorState> {
|
||||
let target = event_target_from_point(client_x, client_y)?;
|
||||
drop_indicator_from_target(target, client_y, handle_selector)
|
||||
}
|
||||
|
||||
pub(crate) fn block_state_from_index(index: usize) -> Option<HoveredBlockState> {
|
||||
let root = editor_root_element()?;
|
||||
let stage = editor_stage_element()?;
|
||||
|
||||
@@ -23,8 +23,10 @@ use web_sys::{
|
||||
use editor_runtime::attachment_upload::dispatch_editor_upload_request;
|
||||
use editor_runtime::block_dnd::{
|
||||
block_state_from_index as block_state_from_index_runtime, direct_block_from_element,
|
||||
drop_indicator_from_block_rects, element_within_handle_shell, event_target_from_point,
|
||||
hovered_block_from_target as hovered_block_from_target_runtime, top_level_block_index,
|
||||
drop_indicator_from_point as drop_indicator_from_point_runtime,
|
||||
drop_indicator_from_target as drop_indicator_from_target_runtime,
|
||||
element_within_handle_shell, hovered_block_from_target as hovered_block_from_target_runtime,
|
||||
top_level_block_index,
|
||||
};
|
||||
use editor_runtime::block_menu_overlay;
|
||||
use editor_runtime::block_menu_document::{
|
||||
@@ -5031,21 +5033,11 @@ fn drop_indicator_from_target(
|
||||
target: web_sys::EventTarget,
|
||||
client_y: i32,
|
||||
) -> Option<DropIndicatorState> {
|
||||
let hovered = hovered_block_from_target(target)?;
|
||||
let root = editor_root_element()?;
|
||||
let block = root.children().item(hovered.index as u32)?;
|
||||
let stage = editor_stage_element()?;
|
||||
Some(drop_indicator_from_block_rects(
|
||||
hovered.index,
|
||||
&block,
|
||||
&stage,
|
||||
client_y,
|
||||
))
|
||||
drop_indicator_from_target_runtime(target, client_y, HANDLE_SHELL_SELECTOR)
|
||||
}
|
||||
|
||||
fn drop_indicator_from_point(client_x: i32, client_y: i32) -> Option<DropIndicatorState> {
|
||||
let target = event_target_from_point(client_x, client_y)?;
|
||||
drop_indicator_from_target(target, client_y)
|
||||
drop_indicator_from_point_runtime(client_x, client_y, HANDLE_SHELL_SELECTOR)
|
||||
}
|
||||
|
||||
fn document_content_mut(document: &mut Value) -> Result<&mut Vec<Value>, String> {
|
||||
|
||||
Reference in New Issue
Block a user