![Screenshot 2023-12-27 at 6 08 51 PM](https://private-user-images.githubusercontent.com/66571940/293113848-21f015ac-cab1-404a-9a23-c4c0b28e25a0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE4NTk2NjQsIm5iZiI6MTcyMTg1OTM2NCwicGF0aCI6Ii82NjU3MTk0MC8yOTMxMTM4NDgtMjFmMDE1YWMtY2FiMS00MDRhLTlhMjMtYzRjMGIyOGUyNWEwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI0VDIyMTYwNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJhZTE0ZjgxMjYzYmNhNDI0MDYyNTdkMDRhMmI2NDNlZmE0Yjg1YjMwYWZhM2VmYzZjOTRjYjc0ZTg1ZmI0YTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.P7_k77e_lsQG7JUr-Quvn3E9mVhQ7JxKa0i6ZcGjrXY)
![Screenshot 2023-12-27 at 6 08 51 PM](https://private-user-images.githubusercontent.com/66571940/293113848-21f015ac-cab1-404a-9a23-c4c0b28e25a0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE4NTk2NjQsIm5iZiI6MTcyMTg1OTM2NCwicGF0aCI6Ii82NjU3MTk0MC8yOTMxMTM4NDgtMjFmMDE1YWMtY2FiMS00MDRhLTlhMjMtYzRjMGIyOGUyNWEwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzI0VDIyMTYwNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJhZTE0ZjgxMjYzYmNhNDI0MDYyNTdkMDRhMmI2NDNlZmE0Yjg1YjMwYWZhM2VmYzZjOTRjYjc0ZTg1ZmI0YTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.P7_k77e_lsQG7JUr-Quvn3E9mVhQ7JxKa0i6ZcGjrXY)
#![allow(non_snake_case)] | |
use dioxus::prelude::*; | |
use std::cell::{Ref, RefCell, RefMut}; | |
use std::collections::HashSet; | |
use std::fmt::Display; | |
use std::rc::Rc; | |
#[derive(Clone)] | |
struct SplitSubscriptions { | |
a: LocalSubscription<i32>, |
window.addEventListener('scroll', () => { | |
let scrollTop = window.scrollY; | |
let winHeight = window.document.documentElement.scrollHeight - window.document.documentElement.clientHeight; | |
let new_scroll = Math.min(Math.max(scrollTop, 0) / Math.max(winHeight, 1), 1); | |
document.body.style.setProperty('--scroll', new_scroll); | |
}, false); |
#![allow(non_snake_case)] | |
use dioxus_signals::use_signal; | |
use dioxus::prelude::*; | |
use dioxus_fullstack::prelude::*; | |
fn main() { | |
LaunchBuilder::new(App).launch(); | |
} | |
fn App(cx: Scope) -> Element { |
use kalosm::language::*; | |
#[tokio::main] | |
async fn main() { | |
let local_source = LlamaSource::new( | |
FileSource::Local("path/to/llama/model".into()), | |
FileSource::Local("path/to/llama/tokenizer.json".into()), | |
) | |
.with_group_query_attention( | |
// 1 for llama, 8 for mistral |
use criterion::*; | |
criterion_group!(benches, leptos_ssr_bench, dioxus_ssr_bench); | |
criterion_main!(benches); | |
fn leptos_ssr_bench(c: &mut Criterion) { | |
use leptos::*; | |
let r = create_runtime(); | |
c.bench_function("leptos ssr", |b| { | |
b.iter(|| { |
Here is an overview of the state management system in dioxus. This doesn't cover all the internals, but it should serve as a pretty good reference:
Signal is like a fancy version of RefCell for UIs. Just like RefCell, it checks borrows at runtime. It has a bunch of helper methods to make it easier to use. Calling it like a function will clone the inner value. You can also call a few traits like AddAssign on it directly without writing to it manually.
// create a signal
let signal = use_signal(|| 0);