diff --git a/.vscode/settings.json b/.vscode/settings.json index 70fb0235..70811cda 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,6 +20,7 @@ "tinyvec", "txns", "unbold", + "unmark", "yspan" ], "rust-analyzer.runnableEnv": { diff --git a/crates/loro-internal/benches/text_r.rs b/crates/loro-internal/benches/text_r.rs index 7684525e..24920305 100644 --- a/crates/loro-internal/benches/text_r.rs +++ b/crates/loro-internal/benches/text_r.rs @@ -63,7 +63,7 @@ mod run { b.iter(|| { let loro = LoroDoc::default(); let text = loro.get_text("text"); - loro.subscribe_deep(Arc::new(move |event| { + loro.subscribe_root(Arc::new(move |event| { black_box(event); })); let mut txn = loro.txn().unwrap(); @@ -220,7 +220,7 @@ mod run { b.iter(|| { let loro = LoroDoc::default(); let text = loro.get_text("text"); - loro.subscribe_deep(Arc::new(move |event| { + loro.subscribe_root(Arc::new(move |event| { black_box(event); })); { diff --git a/crates/loro-internal/deno.lock b/crates/loro-internal/deno.lock index 138ebc45..9aa6158e 100644 --- a/crates/loro-internal/deno.lock +++ b/crates/loro-internal/deno.lock @@ -1,6 +1,9 @@ { "version": "3", "redirects": { + "https://deno.land/std/fmt/printf.ts": "https://deno.land/std@0.105.0/fmt/printf.ts", + "https://deno.land/std/path/mod.ts": "https://deno.land/std@0.105.0/path/mod.ts", + "https://deno.land/std/testing/asserts.ts": "https://deno.land/std@0.105.0/testing/asserts.ts", "https://x.nest.land/std@0.73.0/path/mod.ts": "https://lra6z45nakk5lnu3yjchp7tftsdnwwikwr65ocha5eojfnlgu4sa.arweave.net/XEHs860CldW2m8JEd_5lnIbbWQq0fdcI4OkckrVmpyQ/path/mod.ts" }, "remote": { diff --git a/crates/loro-internal/src/container/richtext.rs b/crates/loro-internal/src/container/richtext.rs index fba10a3f..b8181ef7 100644 --- a/crates/loro-internal/src/container/richtext.rs +++ b/crates/loro-internal/src/container/richtext.rs @@ -16,13 +16,15 @@ pub(crate) mod richtext_state; mod style_range_map; mod tracker; -use crate::{change::Lamport, utils::string_slice::StringSlice, InternalString}; +use crate::{change::Lamport, delta::StyleMeta, utils::string_slice::StringSlice, InternalString}; use fugue_span::*; -use loro_common::{Counter, LoroValue, PeerID}; +use loro_common::{Counter, LoroValue, PeerID, ID}; +use serde::{Deserialize, Serialize}; use std::fmt::Debug; pub(crate) use fugue_span::{RichtextChunk, RichtextChunkValue}; pub(crate) use richtext_state::RichtextState; +pub(crate) use style_range_map::Styles; pub(crate) use tracker::{CrdtRopeDelta, Tracker as RichtextTracker}; /// This is the data structure that represents a span of rich text. @@ -30,7 +32,7 @@ pub(crate) use tracker::{CrdtRopeDelta, Tracker as RichtextTracker}; #[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)] pub struct RichtextSpan { pub text: StringSlice, - pub styles: Vec