fixed breakpoints' current() method

This commit is contained in:
Maccesch 2023-09-27 17:01:05 +01:00
parent 6995c684f8
commit 19da9bf784

View file

@ -251,15 +251,27 @@ impl<K: Eq + Hash + Debug + Clone> UseBreakpointsReturn<K> {
/// Reactive Vec of all breakpoints that fulfill `[screen size]` >= `key` /// Reactive Vec of all breakpoints that fulfill `[screen size]` >= `key`
pub fn current(&self) -> Signal<Vec<K>> { pub fn current(&self) -> Signal<Vec<K>> {
let this = self.clone(); let breakpoints = self.breakpoints.clone();
let keys: Vec<_> = breakpoints.keys().cloned().collect();
Signal::derive(move || { let ge = move |key: &K| {
this.breakpoints let value = breakpoints
.keys() .get(key)
.filter(|k| this.ge((**k).clone()).get()) .expect("only used with keys() from the HashMap");
use_media_query(format_media_query!("min", =, value))
};
let signals: Vec<_> = keys.iter().map(ge.clone()).collect();
create_memo(move |_| {
keys.iter()
.cloned() .cloned()
.zip(signals.iter().cloned())
.filter_map(|(key, signal)| signal.get().then_some(key))
.collect::<Vec<_>>() .collect::<Vec<_>>()
}) })
.into()
} }
} }