use std::sync::Arc;
use default_struct_builder::DefaultBuilder;
use leptos::prelude::*;
use leptos_use::core::IntoElementMaybeSignal;
use crate::{item_state::ItemState, InternalLoader};
pub fn use_windowing<T: Send + Sync + 'static, El, ElM, LoaderM>(
loader: impl InternalLoader<LoaderM, Item = T>,
scroll_element: impl IntoElementMaybeSignal<web_sys::Element, ElM>,
estimate_item_size: impl Fn(usize) -> f32 + Send + Sync + 'static,
options: UseWindowingOptions,
) -> UseWindowingReturn<T> {
todo!()
}
pub struct UseWindowingReturn<T: Send + Sync + 'static> {
pub item_count_before: Signal<usize>,
pub item_count_after: Signal<usize>,
pub items: Vec<Signal<ItemState<T>>>,
pub window_size: Signal<usize>,
}
#[derive(DefaultBuilder)]
pub struct UseWindowingOptions {
measure_item: Arc<dyn Fn(usize) -> f64 + Send + Sync>,
}