pub enum MultiThemeStrategy {
Split,
CssVars,
}Expand description
How multi-theme pretty-code output is laid out in the DOM.
CssVars(default, fast): single<pre><code>tree. Each styled token carriesstyle="--dmc-light:#XXX;--dmc-dark:#YYY", the<pre>carries defaultcolor/background-colorfrom the primary mode. Consumer CSS swaps themes by overridingcolorto the matching--dmc-*variable inside whichever class / media-query controls the theme. ~25% faster thanSplit.Split(velite parity): one full<pre data-theme="<mode>"><code>...</code></pre>subtree per theme, each with solidcolor:#XXXper token. Matches velite + rehype-pretty-code byte-for-byte; consumer CSS shows/hides whole panes by[data-theme].
Variants§
Split
One <pre data-theme="<mode>">...</pre> subtree per theme. Each
subtree carries solid color:#XXX styles, no CSS custom
properties. Default because the per-token style strings stay
shorter (no --dmc-{mode} pairs), the consumer flips themes by
toggling a single [data-theme] CSS rule, and it matches the
velite + rehype-pretty-code byte shape that consumers were
already styled for. The phase-6 flamegraph confirms PrettyCode
dominates compile time, so cutting the per-token work - even
at the cost of duplicated pre subtrees - is the right default.
CssVars
One <pre> subtree carrying --dmc-{mode} / --dmc-{mode}-bg
custom properties per token, plus solid fallbacks for the
default_mode. Consumer CSS toggles via var(--dmc-active).
Slightly larger per-token style strings, but only one DOM
subtree regardless of theme count - pick this when you have
>2 themes or need media-query / class-toggle theme switching
without re-rendering the code surface.
Trait Implementations§
Source§impl Clone for MultiThemeStrategy
impl Clone for MultiThemeStrategy
Source§fn clone(&self) -> MultiThemeStrategy
fn clone(&self) -> MultiThemeStrategy
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for MultiThemeStrategy
Source§impl Debug for MultiThemeStrategy
impl Debug for MultiThemeStrategy
Source§impl Default for MultiThemeStrategy
impl Default for MultiThemeStrategy
Source§fn default() -> MultiThemeStrategy
fn default() -> MultiThemeStrategy
Source§impl<'de> Deserialize<'de> for MultiThemeStrategy
impl<'de> Deserialize<'de> for MultiThemeStrategy
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for MultiThemeStrategy
Source§impl PartialEq for MultiThemeStrategy
impl PartialEq for MultiThemeStrategy
Source§fn eq(&self, other: &MultiThemeStrategy) -> bool
fn eq(&self, other: &MultiThemeStrategy) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for MultiThemeStrategy
impl Serialize for MultiThemeStrategy
impl StructuralPartialEq for MultiThemeStrategy
Auto Trait Implementations§
impl Freeze for MultiThemeStrategy
impl RefUnwindSafe for MultiThemeStrategy
impl Send for MultiThemeStrategy
impl Sync for MultiThemeStrategy
impl Unpin for MultiThemeStrategy
impl UnsafeUnpin for MultiThemeStrategy
impl UnwindSafe for MultiThemeStrategy
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more