diff --git a/src/html/comrak_adapters.rs b/src/html/comrak_adapters.rs index b6a7301a..b6b479a6 100644 --- a/src/html/comrak_adapters.rs +++ b/src/html/comrak_adapters.rs @@ -315,14 +315,17 @@ impl HeadingToCAdapter { let mut toc_content = vec!["".to_string()); + } + toc_content.push(String::from("")); Some(toc_content.join("")) diff --git a/src/html/mod.rs b/src/html/mod.rs index 842edd77..99bcc663 100644 --- a/src/html/mod.rs +++ b/src/html/mod.rs @@ -775,6 +775,7 @@ pub fn generate( } } + // Category pages if ctx.file_mode == FileMode::SingleDts { let categories = partition::partition_nodes_by_category(&all_doc_nodes, true); diff --git a/src/html/pages.rs b/src/html/pages.rs index bd26ac00..c736d9d9 100644 --- a/src/html/pages.rs +++ b/src/html/pages.rs @@ -23,6 +23,7 @@ use super::STYLESHEET_FILENAME; use crate::html::usage::UsagesCtx; use crate::js_doc::JsDocTag; +use crate::node::DocNodeDef; use crate::DocNode; use crate::DocNodeKind; use indexmap::IndexMap; @@ -505,11 +506,9 @@ pub fn generate_symbol_pages_for_module( .iter() .any(|node| node.kind() == DocNodeKind::Class); for doc_node in doc_nodes { - match doc_node.kind() { - DocNodeKind::Class => { - let class = doc_node.class_def().unwrap(); - - let method_nodes = class + match &doc_node.def { + DocNodeDef::Class { class_def } => { + let method_nodes = class_def .methods .iter() .map(|method| { @@ -530,7 +529,7 @@ pub fn generate_symbol_pages_for_module( drilldown_partitions .extend(partition::partition_nodes_by_name(&method_nodes, false)); - let property_nodes = class + let property_nodes = class_def .properties .iter() .map(|property| { @@ -545,9 +544,8 @@ pub fn generate_symbol_pages_for_module( super::partition::partition_nodes_by_name(&property_nodes, false), ); } - DocNodeKind::Interface => { - let interface = doc_node.interface_def().unwrap(); - let method_nodes = interface + DocNodeDef::Interface { interface_def } => { + let method_nodes = interface_def .methods .iter() .filter_map(|method| { @@ -566,7 +564,7 @@ pub fn generate_symbol_pages_for_module( .extend(partition::partition_nodes_by_name(&method_nodes, false)); let property_nodes = - interface + interface_def .properties .iter() .filter_map(|property| { @@ -584,11 +582,9 @@ pub fn generate_symbol_pages_for_module( drilldown_partitions .extend(partition::partition_nodes_by_name(&property_nodes, false)); } - DocNodeKind::TypeAlias => { - let type_alias = doc_node.type_alias_def().unwrap(); - + DocNodeDef::TypeAlias { type_alias_def } => { if let Some(ts_type_literal) = - type_alias.ts_type.type_literal.as_ref() + type_alias_def.ts_type.type_literal.as_ref() { let method_nodes = ts_type_literal .methods @@ -629,10 +625,8 @@ pub fn generate_symbol_pages_for_module( )); } } - DocNodeKind::Variable => { - let variable = doc_node.variable_def().unwrap(); - - if let Some(ts_type_literal) = variable + DocNodeDef::Variable { variable_def } => { + if let Some(ts_type_literal) = variable_def .ts_type .as_ref() .and_then(|ts_type| ts_type.type_literal.as_ref()) diff --git a/src/html/render_context.rs b/src/html/render_context.rs index ab17e48d..714d759c 100644 --- a/src/html/render_context.rs +++ b/src/html/render_context.rs @@ -4,7 +4,7 @@ use crate::html::util::NamespacedSymbols; use crate::html::DocNodeWithContext; use crate::html::GenerateCtx; use crate::html::UrlResolveKind; -use crate::DocNodeKind; +use crate::node::DocNodeDef; use deno_graph::ModuleSpecifier; use std::collections::HashMap; use std::collections::HashSet; @@ -340,8 +340,7 @@ fn get_current_imports( let mut imports = HashMap::new(); for doc_node in doc_nodes { - if doc_node.kind() == DocNodeKind::Import { - let import_def = doc_node.import_def().unwrap(); + if let DocNodeDef::Import { import_def } = &doc_node.def { // TODO: handle import aliasing if import_def.imported.as_deref() == Some(doc_node.get_name()) { imports.insert(doc_node.get_name().to_string(), import_def.src.clone()); diff --git a/src/html/symbols/mod.rs b/src/html/symbols/mod.rs index 8cdfc36e..84814760 100644 --- a/src/html/symbols/mod.rs +++ b/src/html/symbols/mod.rs @@ -7,6 +7,7 @@ use crate::html::DocNodeKindWithDrilldown; use crate::html::DocNodeWithContext; use crate::html::RenderContext; use crate::js_doc::JsDocTag; +use crate::node::DocNodeDef; use crate::DocNodeKind; use indexmap::IndexMap; use indexmap::IndexSet; @@ -189,10 +190,8 @@ impl DocBlockSubtitleCtx { pub const TEMPLATE_INTERFACE: &'static str = "doc_block_subtitle_interface"; fn new(ctx: &RenderContext, doc_node: &DocNodeWithContext) -> Option { - match doc_node.kind() { - DocNodeKind::Class => { - let class_def = doc_node.class_def().unwrap(); - + match &doc_node.def { + DocNodeDef::Class { class_def } => { let current_type_params = class_def .type_params .iter() @@ -230,9 +229,7 @@ impl DocBlockSubtitleCtx { extends: class_extends, }) } - DocNodeKind::Interface => { - let interface_def = doc_node.interface_def().unwrap(); - + DocNodeDef::Interface { interface_def } => { if interface_def.extends.is_empty() { return None; } diff --git a/src/html/symbols/namespace.rs b/src/html/symbols/namespace.rs index 18e78099..748984c0 100644 --- a/src/html/symbols/namespace.rs +++ b/src/html/symbols/namespace.rs @@ -1,9 +1,12 @@ use crate::html::render_context::RenderContext; use crate::html::util::*; use crate::html::DocNodeWithContext; +use crate::node::DocNodeDef; +use deno_ast::swc::ast::MethodKind; use indexmap::IndexMap; use indexmap::IndexSet; use serde::Serialize; +use std::cmp::Ordering; pub fn render_namespace( ctx: &RenderContext, @@ -50,6 +53,38 @@ fn get_namespace_section_render_ctx( section } +#[derive(Debug, Serialize, Clone)] +pub struct NamespaceNodeSubItemCtx { + title: String, + href: String, +} + +impl std::hash::Hash for NamespaceNodeSubItemCtx { + fn hash(&self, state: &mut H) { + self.title.hash(state) + } +} + +impl PartialOrd for NamespaceNodeSubItemCtx { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.title.cmp(&other.title)) + } +} + +impl Ord for NamespaceNodeSubItemCtx { + fn cmp(&self, other: &Self) -> Ordering { + self.title.cmp(&other.title) + } +} + +impl PartialEq for NamespaceNodeSubItemCtx { + fn eq(&self, other: &Self) -> bool { + self.title.eq(&other.title) + } +} + +impl Eq for NamespaceNodeSubItemCtx {} + #[derive(Debug, Serialize, Clone)] pub struct NamespaceNodeCtx { pub id: String, @@ -60,6 +95,7 @@ pub struct NamespaceNodeCtx { pub name: String, pub docs: Option, pub deprecated: bool, + pub subitems: IndexSet, } impl NamespaceNodeCtx { @@ -75,6 +111,192 @@ impl NamespaceNodeCtx { let tags = Tag::from_js_doc(&nodes[0].js_doc); + let mut subitems = IndexSet::new(); + + let href = ctx.ctx.resolve_path( + ctx.get_current_resolve(), + UrlResolveKind::Symbol { + file: &nodes[0].origin, + symbol: &name, + }, + ); + + for node in &nodes { + match &node.def { + DocNodeDef::Class { class_def } => { + subitems.extend( + class_def + .methods + .iter() + .filter(|method| !method.name.starts_with('[')) + .map(|method| NamespaceNodeSubItemCtx { + title: method.name.to_string(), + href: format!( + "{href}#{}", + if matches!( + method.kind, + MethodKind::Getter | MethodKind::Setter + ) { + name_to_id("accessor", &method.name.to_lowercase()) + } else { + name_to_id( + "method", + &format!("{}_0", method.name.to_lowercase()), + ) + } + ), + }), + ); + subitems.extend( + class_def + .properties + .iter() + .filter(|property| !property.name.starts_with('[')) + .map(|property| NamespaceNodeSubItemCtx { + title: property.name.to_string(), + href: format!( + "{href}#{}", + name_to_id("property", &property.name.to_lowercase()) + ), + }), + ); + } + DocNodeDef::Interface { interface_def } => { + subitems.extend( + interface_def + .methods + .iter() + .filter(|method| !method.name.starts_with('[')) + .map(|method| NamespaceNodeSubItemCtx { + title: method.name.to_string(), + href: format!( + "{href}#{}", + if matches!( + method.kind, + MethodKind::Getter | MethodKind::Setter + ) { + name_to_id("accessor", &method.name.to_lowercase()) + } else { + name_to_id( + "method", + &format!("{}_0", method.name.to_lowercase()), + ) + } + ), + }), + ); + subitems.extend( + interface_def + .properties + .iter() + .filter(|property| !property.name.starts_with('[')) + .map(|property| NamespaceNodeSubItemCtx { + title: property.name.to_string(), + href: format!( + "{href}#{}", + name_to_id("property", &property.name.to_lowercase()) + ), + }), + ); + } + DocNodeDef::Variable { variable_def } => { + if let Some(type_literal) = variable_def + .ts_type + .as_ref() + .and_then(|ts_type| ts_type.type_literal.as_ref()) + { + subitems.extend( + type_literal + .methods + .iter() + .filter(|method| !method.name.starts_with('[')) + .map(|method| NamespaceNodeSubItemCtx { + title: method.name.to_string(), + href: format!( + "{href}#{}", + if matches!( + method.kind, + MethodKind::Getter | MethodKind::Setter + ) { + name_to_id("accessor", &method.name.to_lowercase()) + } else { + name_to_id( + "method", + &format!("{}_0", method.name.to_lowercase()), + ) + } + ), + }), + ); + + subitems.extend( + type_literal + .properties + .iter() + .filter(|property| !property.name.starts_with('[')) + .map(|property| NamespaceNodeSubItemCtx { + title: property.name.to_string(), + href: format!( + "{href}#{}", + name_to_id("property", &property.name.to_lowercase()) + ), + }), + ); + } + } + DocNodeDef::TypeAlias { type_alias_def } => { + if let Some(type_literal) = + type_alias_def.ts_type.type_literal.as_ref() + { + subitems.extend( + type_literal + .methods + .iter() + .filter(|method| !method.name.starts_with('[')) + .map(|method| NamespaceNodeSubItemCtx { + title: method.name.to_string(), + href: format!( + "{href}#{}", + if matches!( + method.kind, + MethodKind::Getter | MethodKind::Setter + ) { + name_to_id("accessor", &method.name.to_lowercase()) + } else { + name_to_id( + "method", + &format!("{}_0", method.name.to_lowercase()), + ) + } + ), + }), + ); + + subitems.extend( + type_literal + .properties + .iter() + .filter(|property| !property.name.starts_with('[')) + .map(|property| NamespaceNodeSubItemCtx { + title: property.name.to_string(), + href: format!( + "{href}#{}", + name_to_id("property", &property.name.to_lowercase()) + ), + }), + ); + } + } + DocNodeDef::Function { .. } => {} + DocNodeDef::Enum { .. } => {} + DocNodeDef::Namespace { .. } => {} + DocNodeDef::Import { .. } => {} + DocNodeDef::ModuleDoc => {} + }; + } + + subitems.sort(); + NamespaceNodeCtx { id: id.clone(), anchor: AnchorCtx { id }, @@ -83,16 +305,11 @@ impl NamespaceNodeCtx { .iter() .map(|node| node.kind_with_drilldown.into()) .collect(), - href: ctx.ctx.resolve_path( - ctx.get_current_resolve(), - UrlResolveKind::Symbol { - file: &nodes[0].origin, - symbol: &name, - }, - ), + href, name, docs, deprecated: all_deprecated(&nodes.iter().collect::>()), + subitems, } } } diff --git a/src/html/templates/namespace_section.hbs b/src/html/templates/namespace_section.hbs index 274a736e..7ad10b52 100644 --- a/src/html/templates/namespace_section.hbs +++ b/src/html/templates/namespace_section.hbs @@ -8,13 +8,21 @@ {{~this.name~}} -
+
{{~#if this.docs~}} {{{~this.docs~}}} {{! markdown rendering }} {{~else~}} No documentation available {{~/if~}}
+ + {{~#if this.subitems~}} + + {{~/if~}}
{{~/each~}} diff --git a/src/html/templates/pages/page.css b/src/html/templates/pages/page.css index 99747a84..48a64965 100644 --- a/src/html/templates/pages/page.css +++ b/src/html/templates/pages/page.css @@ -19,7 +19,7 @@ &:not(:has(#categoryPanel)), &:has(#categoryPanel) > div:not(#categoryPanel) { - @apply pt-1; + @apply pt-1 px-6; } & > div:not(#categoryPanel) { diff --git a/src/html/templates/pages/page.gen.css b/src/html/templates/pages/page.gen.css index daa6046e..f4ac13e5 100644 --- a/src/html/templates/pages/page.gen.css +++ b/src/html/templates/pages/page.gen.css @@ -1 +1 @@ -.sticky{position:sticky}.top-0{top:0}.z-50{z-index:50}.block{display:block}.flex{display:flex}.h-14{height:3.5rem}.h-full{height:100%}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-transparent{background-color:#0000}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.italic{font-style:italic}.leading-none{line-height:1}.text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.blur{--tw-blur:blur(8px);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.ddoc{align-items:flex-start;gap:1.5rem;min-height:fit-content;padding:1rem;display:flex}@media (min-width:1024px){.ddoc:has(#categoryPanel){padding:.5rem}}@media (min-width:1024px){.ddoc:has(#categoryPanel)>div:not(#categoryPanel){padding-top:1rem}.ddoc:has(#categoryPanel) #topnav{margin-left:-1.5rem!important;padding-left:1.5rem!important}}.ddoc:not(:has(#categoryPanel)),.ddoc:has(#categoryPanel)>div:not(#categoryPanel){padding-top:.25rem}.ddoc>div:not(#categoryPanel){flex-direction:column;flex-grow:1;display:flex}#categoryPanel{box-sizing:border-box;flex-shrink:0;width:250px;height:100vh;margin-top:0;padding-top:0;position:sticky;top:0}@media not all and (min-width:1024px){#categoryPanel{display:none}}#categoryPanel>ul{max-height:100%;overflow-y:auto}#content{margin-top:1rem}#content>main{flex-direction:column;flex-grow:1;grid-column:1/-1;gap:.75rem;min-width:0;padding-bottom:0;display:flex}@media (min-width:768px){#content>main{padding-bottom:2rem}}@media (min-width:1024px){#content>main{padding-bottom:3rem}#content:has(.toc)>main{grid-column:span 3/span 3;grid-row-start:1}}#topnav{margin-left:-1rem;padding-left:1rem}#content,#topnav>div{flex-direction:row;justify-content:space-between;gap:2rem;display:flex}@media (min-width:1024px){#content,#topnav>div{gap:3rem}}.toc,#searchbar{flex-shrink:0;min-width:250px;max-width:300px}.toc{box-sizing:border-box;row-gap:1rem;height:fit-content;max-height:100vh;margin-top:-3.5rem;padding-top:3.5rem;position:sticky;top:0}@media not all and (min-width:1024px){.toc{grid-row-start:1}}@media not all and (min-width:640px){.toc{display:none}}@media (min-width:640px){.toc{flex-direction:column;display:flex}}@media (min-width:1024px){.toc{grid-column:span 1/-1}}.toc>div{max-height:100%}@media (min-width:1024px){.toc>div{overflow-y:auto}}.toc>div>:last-child{padding-bottom:1rem}#searchResults{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:none;position:absolute;inset:0}.hover\:bg-stone-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))} \ No newline at end of file +.sticky{position:sticky}.top-0{top:0}.z-50{z-index:50}.block{display:block}.flex{display:flex}.h-14{height:3.5rem}.h-full{height:100%}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-4{gap:1rem}.overflow-hidden{overflow:hidden}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-transparent{background-color:#0000}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.italic{font-style:italic}.leading-none{line-height:1}.text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity))}.blur{--tw-blur:blur(8px);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.ddoc{align-items:flex-start;gap:1.5rem;min-height:fit-content;padding:1rem;display:flex}@media (min-width:1024px){.ddoc:has(#categoryPanel){padding:.5rem}}@media (min-width:1024px){.ddoc:has(#categoryPanel)>div:not(#categoryPanel){padding-top:1rem}.ddoc:has(#categoryPanel) #topnav{margin-left:-1.5rem!important;padding-left:1.5rem!important}}.ddoc:not(:has(#categoryPanel)),.ddoc:has(#categoryPanel)>div:not(#categoryPanel){padding-top:.25rem;padding-left:1.5rem;padding-right:1.5rem}.ddoc>div:not(#categoryPanel){flex-direction:column;flex-grow:1;display:flex}#categoryPanel{box-sizing:border-box;flex-shrink:0;width:250px;height:100vh;margin-top:0;padding-top:0;position:sticky;top:0}@media not all and (min-width:1024px){#categoryPanel{display:none}}#categoryPanel>ul{max-height:100%;overflow-y:auto}#content{margin-top:1rem}#content>main{flex-direction:column;flex-grow:1;grid-column:1/-1;gap:.75rem;min-width:0;padding-bottom:0;display:flex}@media (min-width:768px){#content>main{padding-bottom:2rem}}@media (min-width:1024px){#content>main{padding-bottom:3rem}#content:has(.toc)>main{grid-column:span 3/span 3;grid-row-start:1}}#topnav{margin-left:-1rem;padding-left:1rem}#content,#topnav>div{flex-direction:row;justify-content:space-between;gap:2rem;display:flex}@media (min-width:1024px){#content,#topnav>div{gap:3rem}}.toc,#searchbar{flex-shrink:0;min-width:250px;max-width:300px}.toc{box-sizing:border-box;row-gap:1rem;height:fit-content;max-height:100vh;margin-top:-3.5rem;padding-top:3.5rem;position:sticky;top:0}@media not all and (min-width:1024px){.toc{grid-row-start:1}}@media not all and (min-width:640px){.toc{display:none}}@media (min-width:640px){.toc{flex-direction:column;display:flex}}@media (min-width:1024px){.toc{grid-column:span 1/-1}}.toc>div{max-height:100%}@media (min-width:1024px){.toc>div{overflow-y:auto}}.toc>div>:last-child{padding-bottom:1rem}#searchResults{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:none;position:absolute;inset:0}.hover\:bg-stone-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))} \ No newline at end of file diff --git a/src/html/templates/styles.css b/src/html/templates/styles.css index e575ab47..587aebcd 100644 --- a/src/html/templates/styles.css +++ b/src/html/templates/styles.css @@ -73,13 +73,13 @@ a { } .section { - @apply space-y-2 mb-2 scroll-mt-16; + @apply space-y-2 mb-2 scroll-mt-16 max-w-prose; > div:first-child { @apply space-y-2; > h2 { - @apply text-xl leading-6 font-semibold py-1; + @apply text-xl leading-6 font-semibold py-1 mb-0; } > .markdown_summary { @@ -89,11 +89,10 @@ a { } .namespaceSection { - @apply grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-y-6 gap-x-10 - md:gap-x-8 md:gap-y-8; + @apply space-y-4 mt-4 max-w-prose; .namespaceItem { - @apply flex gap-x-2.5 md:min-h-[4rem] lg:pr-4; + @apply flex gap-x-2.5 md:min-h-[4rem] lg:pr-4 min-h-0; .docNodeKindIcon { @apply w-auto flex-col justify-start; @@ -111,14 +110,29 @@ a { } .namespaceItemContent { - @apply space-y-1.5; + a { + @apply underline decoration-stone-300; + + &:hover { + @apply no-underline; + } + } > a { @apply block leading-tight break-all font-medium; } - > div { - @apply text-sm leading-5 text-stone-600; + .namespaceItemContentDoc { + @apply mt-2 text-sm leading-5 text-stone-600; + } + + .namespaceItemContentSubItems { + @apply mt-1.5 flex flex-wrap gap-y-1 text-sm; + + > li:not(:last-child):after { + content: "|"; + @apply mx-2 text-gray-300 select-none; + } } } } diff --git a/src/html/templates/styles.gen.css b/src/html/templates/styles.gen.css index 86a7e9b9..4fbb79b7 100644 --- a/src/html/templates/styles.gen.css +++ b/src/html/templates/styles.gen.css @@ -1 +1 @@ -.ddoc .container{width:100%}@media (min-width:640px){.ddoc .container{max-width:640px}}@media (min-width:768px){.ddoc .container{max-width:768px}}@media (min-width:1024px){.ddoc .container{max-width:1024px}}@media (min-width:1280px){.ddoc .container{max-width:1280px}}@media (min-width:1536px){.ddoc .container{max-width:1536px}}.ddoc .static{position:static}.ddoc .relative{position:relative}.ddoc .\!mb-0{margin-bottom:0!important}.ddoc .\!mt-2{margin-top:.5rem!important}.ddoc .mb-1{margin-bottom:.25rem}.ddoc .ml-4{margin-left:1rem}.ddoc .ml-indent{margin-left:2ch}.ddoc .mr-2{margin-right:.5rem}.ddoc .mt-3{margin-top:.75rem}.ddoc .block{display:block}.ddoc .inline{display:inline}.ddoc .\!flex{display:flex!important}.ddoc .flex{display:flex}.ddoc .inline-flex{display:inline-flex}.ddoc .table{display:table}.ddoc .contents{display:contents}.ddoc .hidden{display:none}.ddoc .h-4{height:1rem}.ddoc .h-5{height:1.25rem}.ddoc .min-w-0{min-width:0}.ddoc .max-w-\[75ch\]{max-width:75ch}.ddoc .flex-1{flex:1}.ddoc .flex-none{flex:none}.ddoc .grow{flex-grow:1}.ddoc .rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.ddoc .scroll-mt-16{scroll-margin-top:4rem}.ddoc .items-center{align-items:center}.ddoc .gap-0{gap:0}.ddoc .gap-0\.5{gap:.125rem}.ddoc .gap-1{gap:.25rem}.ddoc .gap-2{gap:.5rem}.ddoc .space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*calc(1 - var(--tw-space-x-reverse)))}.ddoc .space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}.ddoc .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem*var(--tw-space-y-reverse))}.ddoc .space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.ddoc .overflow-x-auto{overflow-x:auto}.ddoc .break-words{overflow-wrap:break-word}.ddoc .break-all{word-break:break-all}.ddoc .rounded{border-radius:.25rem}.ddoc .rounded-md{border-radius:.375rem}.ddoc .border{border-width:1px}.ddoc .border-b{border-bottom-width:1px}.ddoc .border-l-2{border-left-width:2px}.ddoc .border-Class\/50{border-color:#20b44b80}.ddoc .border-Enum\/50{border-color:#22abb080}.ddoc .border-Function\/50{border-color:#056cf080}.ddoc .border-Interface\/50{border-color:#d2a06480}.ddoc .border-Method\/50{border-color:#056cf080}.ddoc .border-Namespace\/50{border-color:#d2564680}.ddoc .border-Property\/50{border-color:#7e57c080}.ddoc .border-TypeAlias\/50{border-color:#a4478c80}.ddoc .border-Variable\/50{border-color:#7e57c080}.ddoc .border-abstract\/50{border-color:#0cafc680}.ddoc .border-deprecated\/50{border-color:#dc262680}.ddoc .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.ddoc .border-new\/50{border-color:#7b61ff80}.ddoc .border-optional\/50{border-color:#0cafc680}.ddoc .border-other\/50{border-color:#57534e80}.ddoc .border-permissions\/50,.ddoc .border-private\/50{border-color:#0cafc680}.ddoc .border-protected\/50,.ddoc .border-readonly\/50{border-color:#7b61ff80}.ddoc .border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.ddoc .border-unstable\/50,.ddoc .border-writeonly\/50{border-color:#7b61ff80}.ddoc .bg-Class\/15{background-color:#20b44b26}.ddoc .bg-Class\/5{background-color:#20b44b0d}.ddoc .bg-Enum\/15{background-color:#22abb026}.ddoc .bg-Enum\/5{background-color:#22abb00d}.ddoc .bg-Function\/15{background-color:#056cf026}.ddoc .bg-Function\/5{background-color:#056cf00d}.ddoc .bg-Interface\/15{background-color:#d2a06426}.ddoc .bg-Interface\/5{background-color:#d2a0640d}.ddoc .bg-Method\/15{background-color:#056cf026}.ddoc .bg-Method\/5{background-color:#056cf00d}.ddoc .bg-Namespace\/15{background-color:#d2564626}.ddoc .bg-Namespace\/5{background-color:#d256460d}.ddoc .bg-Property\/15{background-color:#7e57c026}.ddoc .bg-Property\/5{background-color:#7e57c00d}.ddoc .bg-TypeAlias\/15{background-color:#a4478c26}.ddoc .bg-TypeAlias\/5{background-color:#a4478c0d}.ddoc .bg-Variable\/15{background-color:#7e57c026}.ddoc .bg-Variable\/5{background-color:#7e57c00d}.ddoc .bg-abstract\/15{background-color:#0cafc626}.ddoc .bg-abstract\/5{background-color:#0cafc60d}.ddoc .bg-deprecated\/15{background-color:#dc262626}.ddoc .bg-deprecated\/5{background-color:#dc26260d}.ddoc .bg-new\/15{background-color:#7b61ff26}.ddoc .bg-new\/5{background-color:#7b61ff0d}.ddoc .bg-optional\/15{background-color:#0cafc626}.ddoc .bg-optional\/5{background-color:#0cafc60d}.ddoc .bg-other\/15{background-color:#57534e26}.ddoc .bg-other\/5{background-color:#57534e0d}.ddoc .bg-permissions\/15{background-color:#0cafc626}.ddoc .bg-permissions\/5{background-color:#0cafc60d}.ddoc .bg-private\/15{background-color:#0cafc626}.ddoc .bg-private\/5{background-color:#0cafc60d}.ddoc .bg-protected\/15{background-color:#7b61ff26}.ddoc .bg-protected\/5{background-color:#7b61ff0d}.ddoc .bg-readonly\/15{background-color:#7b61ff26}.ddoc .bg-readonly\/5{background-color:#7b61ff0d}.ddoc .bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.ddoc .bg-unstable\/15{background-color:#7b61ff26}.ddoc .bg-unstable\/5{background-color:#7b61ff0d}.ddoc .bg-writeonly\/15{background-color:#7b61ff26}.ddoc .bg-writeonly\/5{background-color:#7b61ff0d}.ddoc .px-2{padding-left:.5rem;padding-right:.5rem}.ddoc .px-3{padding-left:.75rem;padding-right:.75rem}.ddoc .px-4{padding-left:1rem;padding-right:1rem}.ddoc .py-1{padding-top:.25rem;padding-bottom:.25rem}.ddoc .py-2{padding-top:.5rem;padding-bottom:.5rem}.ddoc .pb-5{padding-bottom:1.25rem}.ddoc .pt-4{padding-top:1rem}.ddoc .text-2xl{font-size:1.5rem;line-height:2rem}.ddoc .text-base{font-size:1rem;line-height:1.5rem}.ddoc .text-sm{font-size:.875rem;line-height:1.25rem}.ddoc .font-bold{font-weight:700}.ddoc .font-medium{font-weight:500}.ddoc .font-normal{font-weight:400}.ddoc .italic{font-style:italic}.ddoc .leading-none{line-height:1}.ddoc .text-Class{--tw-text-opacity:1;color:rgb(32 180 75/var(--tw-text-opacity))}.ddoc .text-Enum{--tw-text-opacity:1;color:rgb(34 171 176/var(--tw-text-opacity))}.ddoc .text-Function{--tw-text-opacity:1;color:rgb(5 108 240/var(--tw-text-opacity))}.ddoc .text-Interface{--tw-text-opacity:1;color:rgb(210 160 100/var(--tw-text-opacity))}.ddoc .text-Method{--tw-text-opacity:1;color:rgb(5 108 240/var(--tw-text-opacity))}.ddoc .text-Namespace{--tw-text-opacity:1;color:rgb(210 86 70/var(--tw-text-opacity))}.ddoc .text-Property{--tw-text-opacity:1;color:rgb(126 87 192/var(--tw-text-opacity))}.ddoc .text-TypeAlias{--tw-text-opacity:1;color:rgb(164 71 140/var(--tw-text-opacity))}.ddoc .text-Variable{--tw-text-opacity:1;color:rgb(126 87 192/var(--tw-text-opacity))}.ddoc .text-\[\#0F172A\]{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.ddoc .text-abstract{--tw-text-opacity:1;color:rgb(12 175 198/var(--tw-text-opacity))}.ddoc .text-deprecated{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.ddoc .text-new{--tw-text-opacity:1;color:rgb(123 97 255/var(--tw-text-opacity))}.ddoc .text-optional{--tw-text-opacity:1;color:rgb(12 175 198/var(--tw-text-opacity))}.ddoc .text-other{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.ddoc .text-permissions,.ddoc .text-private{--tw-text-opacity:1;color:rgb(12 175 198/var(--tw-text-opacity))}.ddoc .text-protected,.ddoc .text-readonly{--tw-text-opacity:1;color:rgb(123 97 255/var(--tw-text-opacity))}.ddoc .text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.ddoc .text-unstable,.ddoc .text-writeonly{--tw-text-opacity:1;color:rgb(123 97 255/var(--tw-text-opacity))}.ddoc .filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.ddoc summary::-webkit-details-marker{display:none}.ddoc a{word-wrap:break-word}.ddoc{--ddoc-selection-border-width:2px;--ddoc-selection-border-color-default:#d6d3d1;--ddoc-selection-selected-border-color:#2564eb;--ddoc-selection-selected-bg:#056cf00c;--ddoc-selection-padding:9px 15px}.ddoc .link{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ddoc .link:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.ddoc .anchor{float:left;--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity));margin-left:-24px;padding:.25rem;line-height:1;display:none;top:0;bottom:0}.ddoc .anchorable{scroll-margin-top:4rem;position:relative}.ddoc .anchorable:hover .anchor{display:block}.ddoc .deprecated>div:first-child{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity));align-items:center;gap:.25rem;padding-top:.25rem;padding-bottom:.25rem;display:flex}.ddoc .deprecated>div:first-child>span{font-weight:600;line-height:1.5rem}.ddoc .deprecated>div:nth-child(2){--tw-border-opacity:1;border-left-width:4px;border-color:rgb(252 165 165/var(--tw-border-opacity));margin-left:.25rem;padding-left:.5rem}.ddoc .symbolSubtitle>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.ddoc .symbolSubtitle{font-size:.875rem;line-height:1rem}.ddoc .symbolSubtitle .type{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity));font-style:italic}.ddoc .docEntry{margin-bottom:1rem}.ddoc .docEntry>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .docEntry .docEntryHeader{justify-content:space-between;align-items:flex-start;display:flex}@media (min-width:768px){.ddoc .docEntry .docEntryHeader{font-size:1rem;line-height:1.5rem}}.ddoc .docEntry .docEntryHeader>div{overflow-wrap:break-word}.ddoc .section{margin-bottom:.5rem;scroll-margin-top:4rem}.ddoc .section>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .section>div:first-child>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .section>div:first-child>h2{padding-top:.25rem;padding-bottom:.25rem;font-size:1.25rem;font-weight:600;line-height:1.5rem}.ddoc .section>div:first-child>.markdown_summary{max-width:75ch;font-size:1rem;line-height:1.5rem}.ddoc .namespaceSection{-moz-column-gap:2.5rem;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem 2.5rem;display:grid}@media (min-width:768px){.ddoc .namespaceSection{-moz-column-gap:2rem;grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem}}@media (min-width:1024px){.ddoc .namespaceSection{grid-template-columns:repeat(3,minmax(0,1fr))}}.ddoc .namespaceSection .namespaceItem{-moz-column-gap:.625rem;column-gap:.625rem;display:flex}@media (min-width:768px){.ddoc .namespaceSection .namespaceItem{min-height:4rem}}@media (min-width:1024px){.ddoc .namespaceSection .namespaceItem{padding-right:1rem}}.ddoc .namespaceSection .namespaceItem .docNodeKindIcon{flex-direction:column;justify-content:flex-start;width:auto}.ddoc .namespaceSection .namespaceItem .docNodeKindIcon>*+*{margin-top:-.125rem;margin-left:0}.ddoc .namespaceSection .namespaceItem[aria-label=deprecated]{opacity:.6}.ddoc .namespaceSection .namespaceItem[aria-label=deprecated] .namespaceItemContent>a{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity));text-decoration-line:line-through;text-decoration-color:#78716cb3;text-decoration-thickness:2px}.ddoc .namespaceSection .namespaceItem .namespaceItemContent>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.ddoc .namespaceSection .namespaceItem .namespaceItemContent>a{word-break:break-all;font-weight:500;line-height:1.25;display:block}.ddoc .namespaceSection .namespaceItem .namespaceItemContent>div{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem}.ddoc .symbolGroup>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(3rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem*var(--tw-space-y-reverse))}.ddoc .symbolGroup article>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.ddoc .symbolGroup article>div:first-child{justify-content:space-between;align-items:flex-start;display:flex}.ddoc .symbolGroup article>div:first-child>div:first-child>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.ddoc .symbolGroup article>div:first-child>div:first-child{font-weight:500}.ddoc .docNodeKindIcon{flex-shrink:0;justify-content:flex-end;display:inline-flex}.ddoc .docNodeKindIcon div{-webkit-user-select:none;user-select:none;text-align:center;vertical-align:middle;border-radius:9999px;flex-shrink:0;width:1.25rem;height:1.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.75rem;font-weight:500;line-height:1.25rem}.ddoc .docNodeKindIcon>*+*{margin-left:-.375rem}.ddoc .example details summary{cursor:pointer;border-radius:.5rem;align-items:center;gap:.5rem;width:100%;padding-top:.5rem;padding-bottom:.5rem;line-height:1.5rem;list-style-type:none;display:flex}.ddoc .example details summary>div:first-child{-webkit-user-select:none;user-select:none;--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.ddoc .example details[open] summary>div:first-child{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.ddoc .toc h3{margin-bottom:.75rem;font-size:1.125rem;font-weight:700;line-height:1.75rem}.ddoc .toc>div>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.ddoc .toc .topSymbols>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.ddoc .toc .topSymbols{font-size:.875rem;line-height:1.25rem}.ddoc .toc .topSymbols ul{list-style-type:none}.ddoc .toc .topSymbols ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.ddoc .toc .topSymbols ul li{display:block}.ddoc .toc .topSymbols ul li a{align-items:center;gap:.5rem;display:flex}.ddoc .toc .topSymbols ul li a>span{text-overflow:ellipsis;white-space:nowrap;border-radius:.25rem;width:100%;margin-top:-.125rem;margin-bottom:-.125rem;margin-left:-.25rem;padding-top:.125rem;padding-bottom:.125rem;padding-left:.25rem;display:block;overflow:hidden}.ddoc .toc .topSymbols>a:hover{text-decoration-line:underline}.ddoc .toc .documentNavigation>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.ddoc .toc .documentNavigation{font-size:.875rem;line-height:1.25rem}@media not all and (min-width:640px){.ddoc .toc .documentNavigation{display:none}}.ddoc .toc .documentNavigation>ul{flex-grow:1;display:block}.ddoc .toc .documentNavigation>ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .toc .documentNavigation>ul{overflow-y:auto}.ddoc .toc .documentNavigation>ul>li{margin-top:.125rem;margin-left:.75rem;margin-right:.75rem}.ddoc .toc .documentNavigation>ul li:has(>ul){margin-top:0!important}.ddoc .toc .documentNavigation>ul li:has(>a){padding-bottom:0!important}.ddoc .toc .documentNavigation>ul ul{margin-left:.875rem}.ddoc .toc .documentNavigation>ul ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .toc .documentNavigation>ul ul{--tw-text-opacity:1;color:rgb(134 135 137/var(--tw-text-opacity));font-size:.8rem;line-height:1}.ddoc .toc .documentNavigation>ul ul li{margin-top:.25rem!important}.ddoc .toc .documentNavigation>ul ul li a{padding:.25rem}.ddoc .toc .documentNavigation>ul ul li a:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.ddoc .toc .documentNavigation a{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.ddoc .toc .documentNavigation a:hover{text-decoration-line:underline}.ddoc .usages nav{flex-direction:row;align-items:center;gap:.5rem;margin-bottom:.75rem;font-weight:600;display:flex}.ddoc .usages nav details>summary{cursor:pointer;-webkit-user-select:none;user-select:none;--tw-border-opacity:1;border-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity));border-radius:.25rem;gap:.25rem;padding:.5rem .75rem;display:flex}@media (min-width:768px){.ddoc .usages nav details>div{position:relative}}.ddoc .usages nav details>div>div{z-index:30;--tw-border-opacity:1;border-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));margin-top:.375rem;padding:.5rem;display:block;position:absolute}@media not all and (min-width:768px){.ddoc .usages nav details>div>div{border-left-width:0;border-right-width:0;left:0;right:0}}@media (min-width:768px){.ddoc .usages nav details>div>div{border-radius:.25rem;width:12rem}}.ddoc .usages nav details>div>div label{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:.125rem;align-items:center;gap:.5rem;padding:.25rem .5rem;line-height:1.5;display:flex}.ddoc .usages nav details>div>div label:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ddoc .usageContent :not(.markdown) h3{margin-bottom:.75rem;font-size:1.125rem;font-weight:700;line-height:1.75rem}.ddoc .usageContent .markdown{--tw-text-opacity:1;color:rgb(104 104 104/var(--tw-text-opacity));font-size:.75rem;line-height:1rem}.ddoc .usageContent .markdown p{margin:0}.ddoc .usageContent pre.highlight{--tw-border-opacity:1;border-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}@media not all and (min-width:768px){.ddoc .usageContent pre.highlight{border-left-width:0;border-right-width:0}}.ddoc .usageContent pre.highlight{margin-top:.25rem!important}.ddoc .usageContent pre.highlight>code:first-child{scrollbar-width:thin;padding:.5rem .75rem}.ddoc .usageContent pre.highlight .context_button{border-width:0;display:none;top:.25rem;right:.5rem}.ddoc .usageContent pre.highlight .context_button svg rect{fill:#fff}.ddoc .usageContent pre.highlight:hover .context_button{opacity:1;display:block}.ddoc #categoryPanel{padding-top:.75rem;font-size:.875rem;line-height:1.25rem}.ddoc #categoryPanel ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc #categoryPanel ul{overflow-y:auto}.ddoc #categoryPanel ul li{margin-left:.25rem;margin-right:.75rem}.ddoc #categoryPanel ul li a{text-overflow:ellipsis;white-space:nowrap;padding:.375rem .875rem;display:block;overflow:hidden}.ddoc #categoryPanel ul li a:hover{text-decoration-line:underline}.ddoc .contextLink{color:#0e6590cc;text-underline-offset:.15em;text-decoration-line:underline;text-decoration-color:#0e659080;text-decoration-thickness:1.5px}.ddoc .contextLink:hover{--tw-text-opacity:1;color:rgb(14 101 144/var(--tw-text-opacity));text-decoration-color:#0e6590}.ddoc .contextLink{-webkit-text-decoration-skip:ink;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto}.ddoc .breadcrumbs{word-break:break-all;flex-wrap:wrap;align-items:center;gap:.25rem;display:inline-flex}.ddoc .breadcrumbs>li:first-child{font-size:1.5rem;font-weight:700;line-height:1}.ddoc .breadcrumbs li{font-size:1.125rem;line-height:.9em;display:inline}@media (min-width:1024px){.ddoc .breadcrumbs li{font-size:1.25rem;line-height:1.75rem}}.ddoc .context_button{z-index:10;cursor:pointer;background-color:inherit;border-width:1px;border-radius:.25rem;padding:.375rem;line-height:0}.ddoc .context_button:hover{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.ddoc .see{list-style-type:disc;list-style-position:inside}.ddoc .see>li *{display:inline-block}.ddoc .markdown_border{border-color:#d6d3d166;border-left-width:2px;margin-left:.25rem;padding-left:.625rem}.ddoc .markdown_summary{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity));display:inline}.ddoc .markdown_summary p{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:inline-block;overflow:hidden}.ddoc .markdown_summary :not(pre)>code{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity));border-radius:.25rem;padding:.125rem .375rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}.ddoc .markdown{flex-shrink:1;min-width:0;max-width:40ch}.ddoc .markdown>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}@media (min-width:640px){.ddoc .markdown{max-width:640px}}@media (min-width:768px){.ddoc .markdown{max-width:768px}}@media (min-width:1024px){.ddoc .markdown{max-width:75ch}}.ddoc .markdown a:not(.no_color){--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ddoc .markdown a:not(.no_color):hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.ddoc .markdown h1{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(214 211 209/var(--tw-border-opacity));padding-bottom:.25rem;font-size:1.25rem;line-height:1.75rem}@media (min-width:768px){.ddoc .markdown h1{font-size:1.5rem;line-height:2rem}}@media (min-width:1024px){.ddoc .markdown h1{font-size:1.875rem;line-height:2.25rem}}.ddoc .markdown h2{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(214 211 209/var(--tw-border-opacity));padding-bottom:.25rem;font-size:1.125rem;line-height:1.75rem}@media (min-width:768px){.ddoc .markdown h2{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.ddoc .markdown h2{font-size:1.5rem;line-height:2rem}}.ddoc .markdown h3{font-weight:700}@media (min-width:768px){.ddoc .markdown h3{font-size:1.125rem;font-weight:400;line-height:1.75rem}}@media (min-width:1024px){.ddoc .markdown h3{font-size:1.25rem;font-weight:400;line-height:1.75rem}}.ddoc .markdown h4{font-weight:600}@media (min-width:768px){.ddoc .markdown h4{font-weight:700}}@media (min-width:1024px){.ddoc .markdown h4{font-size:1.125rem;font-weight:400;line-height:1.75rem}}.ddoc .markdown h5{font-style:italic}@media (min-width:768px){.ddoc .markdown h5{font-weight:600}}@media (min-width:1024px){.ddoc .markdown h5{font-weight:700}}@media (min-width:768px){.ddoc .markdown h6{font-style:italic}}@media (min-width:1024px){.ddoc .markdown h6{font-weight:600}}.ddoc .markdown hr{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity));margin:.5rem}.ddoc .markdown ol,.ddoc .markdown ul{margin-left:1rem;list-style-position:outside}.ddoc .markdown ol{list-style-type:decimal}.ddoc .markdown ul{list-style-type:disc}.ddoc .markdown :not(pre)>code{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity));border-radius:.375rem;padding:.125rem .375rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}:is(.ddoc .markdown h1,.ddoc .markdown h2,.ddoc .markdown h3,.ddoc .markdown h4,.ddoc .markdown h5,.ddoc .markdown h6)>code{font-size:inherit!important}.ddoc .markdown pre{--tw-border-opacity:1;border-top-width:1.5px;border-bottom-width:1.5px;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity));border-radius:0;margin-left:-1rem;margin-right:-1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}@media (min-width:768px){.ddoc .markdown pre{border-width:1.5px;border-radius:.375rem;margin-left:0;margin-right:0}}.ddoc .markdown pre>code:first-child{padding:1rem 1.5rem;display:block;overflow-x:auto}.ddoc .markdown p{margin:.25rem 0}.ddoc .markdown table{table-layout:auto;width:max-content;max-width:100%;display:block;overflow:auto}.ddoc .markdown td{padding:.5rem}.ddoc .markdown th{text-align:center;padding-top:.375rem;padding-bottom:.375rem;font-weight:700}.ddoc .markdown th,.ddoc .markdown td{--tw-border-opacity:1;border-width:1.5px;border-color:rgb(203 213 225/var(--tw-border-opacity))}.ddoc .markdown tr:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.ddoc .markdown img{display:inline-block}.ddoc .markdown .alert>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .markdown .alert{border-width:2px;border-radius:.5rem;padding:1rem 1.5rem}.ddoc .markdown .alert div:first-child{align-items:center;gap:.375rem;font-weight:500;display:flex}.ddoc .markdown .alert div:first-child svg{width:1.25rem;height:1.25rem}.ddoc .markdown .alert-note{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity));background-color:#2563eb0d}.ddoc .markdown .alert-note div:first-child{stroke:#2563eb;--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.ddoc .markdown .alert-tip{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity));background-color:#16a34a0d}.ddoc .markdown .alert-tip div:first-child{stroke:#16a34a;--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.ddoc .markdown .alert-important{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity));background-color:#9333ea0d}.ddoc .markdown .alert-important div:first-child{stroke:#9333ea;--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.ddoc .markdown .alert-warning{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity));background-color:#ca8a040d}.ddoc .markdown .alert-warning div:first-child{stroke:#ca8a04;--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.ddoc .markdown .alert-caution{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity));background-color:#dc26260d}.ddoc .markdown .alert-caution div:first-child{stroke:#dc2626;--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.ddoc .markdown .highlight{position:relative}.ddoc .markdown .highlight .lineNumbers{--tw-border-opacity:1;border-right-width:2px;border-color:rgb(214 211 209/var(--tw-border-opacity));text-align:right;flex:none;padding-right:.25rem}.ddoc .markdown .highlight .context_button{opacity:.6;position:absolute;top:.75rem;right:1rem}.ddoc .markdown .highlight .context_button:hover{opacity:1}.ddoc .markdown .highlight .pl-c{color:#6a737d}.ddoc .markdown .highlight .pl-c1,.ddoc .markdown .highlight .pl-s .pl-v{color:#005cc5}.ddoc .markdown .highlight .pl-e,.ddoc .markdown .highlight .pl-en{color:#6f42c1}.ddoc .markdown .highlight .pl-smi,.ddoc .markdown .highlight .pl-s .pl-s1{color:#24292e}.ddoc .markdown .highlight .pl-ent{color:#22863a}.ddoc .markdown .highlight .pl-k{color:#d73a49}.ddoc .markdown .highlight .pl-s,.ddoc .markdown .highlight .pl-pds,.ddoc .markdown .highlight .pl-s .pl-pse .pl-s1,.ddoc .markdown .highlight .pl-sr,.ddoc .markdown .highlight .pl-sr .pl-cce,.ddoc .markdown .highlight .pl-sr .pl-sre,.ddoc .markdown .highlight .pl-sr .pl-sra{color:#032f62}.ddoc .markdown .highlight .pl-v,.ddoc .markdown .highlight .pl-smw{color:#e36209}.ddoc .markdown .highlight .pl-bu{color:#b31d28}.ddoc .markdown .highlight .pl-ii{color:#fafbfc;background-color:#b31d28}.ddoc .markdown .highlight .pl-c2{color:#fafbfc;background-color:#d73a49}.ddoc .markdown .highlight .pl-c2:before{content:"^M"}.ddoc .markdown .highlight .pl-sr .pl-cce{color:#22863a;font-weight:700}.ddoc .markdown .highlight .pl-ml{color:#735c0f}.ddoc .markdown .highlight .pl-mh,.ddoc .markdown .highlight .pl-mh .pl-en,.ddoc .markdown .highlight .pl-ms{color:#005cc5;font-weight:700}.ddoc .markdown .highlight .pl-mi{color:#24292e;font-style:italic}.ddoc .markdown .highlight .pl-mb{color:#24292e;font-weight:700}.ddoc .markdown .highlight .pl-md{color:#b31d28;background-color:#ffeef0}.ddoc .markdown .highlight .pl-mi1{color:#22863a;background-color:#f0fff4}.ddoc .markdown .highlight .pl-mc{color:#e36209;background-color:#ffebda}.ddoc .markdown .highlight .pl-mi2{color:#f6f8fa;background-color:#005cc5}.ddoc .\*\:h-4>*{height:1rem}.ddoc .\*\:h-5>*{height:1.25rem}.ddoc .\*\:w-auto>*{width:auto}.ddoc .\*\:flex-none>*{flex:none}.ddoc .target\:bg-yellow-200:target{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.ddoc .hover\:bg-Class\/15:hover{background-color:#20b44b26}.ddoc .hover\:bg-Class\/5:hover{background-color:#20b44b0d}.ddoc .hover\:bg-Enum\/15:hover{background-color:#22abb026}.ddoc .hover\:bg-Enum\/5:hover{background-color:#22abb00d}.ddoc .hover\:bg-Function\/15:hover{background-color:#056cf026}.ddoc .hover\:bg-Function\/5:hover{background-color:#056cf00d}.ddoc .hover\:bg-Interface\/15:hover{background-color:#d2a06426}.ddoc .hover\:bg-Interface\/5:hover{background-color:#d2a0640d}.ddoc .hover\:bg-Method\/15:hover{background-color:#056cf026}.ddoc .hover\:bg-Method\/5:hover{background-color:#056cf00d}.ddoc .hover\:bg-Namespace\/15:hover{background-color:#d2564626}.ddoc .hover\:bg-Namespace\/5:hover{background-color:#d256460d}.ddoc .hover\:bg-Property\/15:hover{background-color:#7e57c026}.ddoc .hover\:bg-Property\/5:hover{background-color:#7e57c00d}.ddoc .hover\:bg-TypeAlias\/15:hover{background-color:#a4478c26}.ddoc .hover\:bg-TypeAlias\/5:hover{background-color:#a4478c0d}.ddoc .hover\:bg-Variable\/15:hover{background-color:#7e57c026}.ddoc .hover\:bg-Variable\/5:hover{background-color:#7e57c00d}.ddoc .hover\:bg-abstract\/15:hover{background-color:#0cafc626}.ddoc .hover\:bg-abstract\/5:hover{background-color:#0cafc60d}.ddoc .hover\:bg-deprecated\/15:hover{background-color:#dc262626}.ddoc .hover\:bg-deprecated\/5:hover{background-color:#dc26260d}.ddoc .hover\:bg-new\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-new\/5:hover{background-color:#7b61ff0d}.ddoc .hover\:bg-optional\/15:hover{background-color:#0cafc626}.ddoc .hover\:bg-optional\/5:hover{background-color:#0cafc60d}.ddoc .hover\:bg-other\/15:hover{background-color:#57534e26}.ddoc .hover\:bg-other\/5:hover{background-color:#57534e0d}.ddoc .hover\:bg-permissions\/15:hover{background-color:#0cafc626}.ddoc .hover\:bg-permissions\/5:hover{background-color:#0cafc60d}.ddoc .hover\:bg-private\/15:hover{background-color:#0cafc626}.ddoc .hover\:bg-private\/5:hover{background-color:#0cafc60d}.ddoc .hover\:bg-protected\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-protected\/5:hover{background-color:#7b61ff0d}.ddoc .hover\:bg-readonly\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-readonly\/5:hover{background-color:#7b61ff0d}.ddoc .hover\:bg-unstable\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-unstable\/5:hover{background-color:#7b61ff0d}.ddoc .hover\:bg-writeonly\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-writeonly\/5:hover{background-color:#7b61ff0d} \ No newline at end of file +.ddoc .container{width:100%}@media (min-width:640px){.ddoc .container{max-width:640px}}@media (min-width:768px){.ddoc .container{max-width:768px}}@media (min-width:1024px){.ddoc .container{max-width:1024px}}@media (min-width:1280px){.ddoc .container{max-width:1280px}}@media (min-width:1536px){.ddoc .container{max-width:1536px}}.ddoc .static{position:static}.ddoc .relative{position:relative}.ddoc .\!mb-0{margin-bottom:0!important}.ddoc .\!mt-2{margin-top:.5rem!important}.ddoc .mb-1{margin-bottom:.25rem}.ddoc .ml-4{margin-left:1rem}.ddoc .ml-indent{margin-left:2ch}.ddoc .mr-2{margin-right:.5rem}.ddoc .mt-3{margin-top:.75rem}.ddoc .block{display:block}.ddoc .inline{display:inline}.ddoc .\!flex{display:flex!important}.ddoc .flex{display:flex}.ddoc .inline-flex{display:inline-flex}.ddoc .table{display:table}.ddoc .contents{display:contents}.ddoc .hidden{display:none}.ddoc .h-4{height:1rem}.ddoc .h-5{height:1.25rem}.ddoc .min-w-0{min-width:0}.ddoc .max-w-\[75ch\]{max-width:75ch}.ddoc .flex-1{flex:1}.ddoc .flex-none{flex:none}.ddoc .grow{flex-grow:1}.ddoc .rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.ddoc .scroll-mt-16{scroll-margin-top:4rem}.ddoc .items-center{align-items:center}.ddoc .gap-0{gap:0}.ddoc .gap-0\.5{gap:.125rem}.ddoc .gap-1{gap:.25rem}.ddoc .gap-2{gap:.5rem}.ddoc .space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*calc(1 - var(--tw-space-x-reverse)))}.ddoc .space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}.ddoc .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .space-y-7>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.75rem*var(--tw-space-y-reverse))}.ddoc .space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.ddoc .overflow-x-auto{overflow-x:auto}.ddoc .break-words{overflow-wrap:break-word}.ddoc .break-all{word-break:break-all}.ddoc .rounded{border-radius:.25rem}.ddoc .rounded-md{border-radius:.375rem}.ddoc .border{border-width:1px}.ddoc .border-b{border-bottom-width:1px}.ddoc .border-l-2{border-left-width:2px}.ddoc .border-Class\/50{border-color:#20b44b80}.ddoc .border-Enum\/50{border-color:#22abb080}.ddoc .border-Function\/50{border-color:#056cf080}.ddoc .border-Interface\/50{border-color:#d2a06480}.ddoc .border-Method\/50{border-color:#056cf080}.ddoc .border-Namespace\/50{border-color:#d2564680}.ddoc .border-Property\/50{border-color:#7e57c080}.ddoc .border-TypeAlias\/50{border-color:#a4478c80}.ddoc .border-Variable\/50{border-color:#7e57c080}.ddoc .border-abstract\/50{border-color:#0cafc680}.ddoc .border-deprecated\/50{border-color:#dc262680}.ddoc .border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.ddoc .border-new\/50{border-color:#7b61ff80}.ddoc .border-optional\/50{border-color:#0cafc680}.ddoc .border-other\/50{border-color:#57534e80}.ddoc .border-permissions\/50,.ddoc .border-private\/50{border-color:#0cafc680}.ddoc .border-protected\/50,.ddoc .border-readonly\/50{border-color:#7b61ff80}.ddoc .border-stone-300{--tw-border-opacity:1;border-color:rgb(214 211 209/var(--tw-border-opacity))}.ddoc .border-unstable\/50,.ddoc .border-writeonly\/50{border-color:#7b61ff80}.ddoc .bg-Class\/15{background-color:#20b44b26}.ddoc .bg-Class\/5{background-color:#20b44b0d}.ddoc .bg-Enum\/15{background-color:#22abb026}.ddoc .bg-Enum\/5{background-color:#22abb00d}.ddoc .bg-Function\/15{background-color:#056cf026}.ddoc .bg-Function\/5{background-color:#056cf00d}.ddoc .bg-Interface\/15{background-color:#d2a06426}.ddoc .bg-Interface\/5{background-color:#d2a0640d}.ddoc .bg-Method\/15{background-color:#056cf026}.ddoc .bg-Method\/5{background-color:#056cf00d}.ddoc .bg-Namespace\/15{background-color:#d2564626}.ddoc .bg-Namespace\/5{background-color:#d256460d}.ddoc .bg-Property\/15{background-color:#7e57c026}.ddoc .bg-Property\/5{background-color:#7e57c00d}.ddoc .bg-TypeAlias\/15{background-color:#a4478c26}.ddoc .bg-TypeAlias\/5{background-color:#a4478c0d}.ddoc .bg-Variable\/15{background-color:#7e57c026}.ddoc .bg-Variable\/5{background-color:#7e57c00d}.ddoc .bg-abstract\/15{background-color:#0cafc626}.ddoc .bg-abstract\/5{background-color:#0cafc60d}.ddoc .bg-deprecated\/15{background-color:#dc262626}.ddoc .bg-deprecated\/5{background-color:#dc26260d}.ddoc .bg-new\/15{background-color:#7b61ff26}.ddoc .bg-new\/5{background-color:#7b61ff0d}.ddoc .bg-optional\/15{background-color:#0cafc626}.ddoc .bg-optional\/5{background-color:#0cafc60d}.ddoc .bg-other\/15{background-color:#57534e26}.ddoc .bg-other\/5{background-color:#57534e0d}.ddoc .bg-permissions\/15{background-color:#0cafc626}.ddoc .bg-permissions\/5{background-color:#0cafc60d}.ddoc .bg-private\/15{background-color:#0cafc626}.ddoc .bg-private\/5{background-color:#0cafc60d}.ddoc .bg-protected\/15{background-color:#7b61ff26}.ddoc .bg-protected\/5{background-color:#7b61ff0d}.ddoc .bg-readonly\/15{background-color:#7b61ff26}.ddoc .bg-readonly\/5{background-color:#7b61ff0d}.ddoc .bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity))}.ddoc .bg-unstable\/15{background-color:#7b61ff26}.ddoc .bg-unstable\/5{background-color:#7b61ff0d}.ddoc .bg-writeonly\/15{background-color:#7b61ff26}.ddoc .bg-writeonly\/5{background-color:#7b61ff0d}.ddoc .px-2{padding-left:.5rem;padding-right:.5rem}.ddoc .px-3{padding-left:.75rem;padding-right:.75rem}.ddoc .px-4{padding-left:1rem;padding-right:1rem}.ddoc .py-1{padding-top:.25rem;padding-bottom:.25rem}.ddoc .py-2{padding-top:.5rem;padding-bottom:.5rem}.ddoc .pb-5{padding-bottom:1.25rem}.ddoc .pt-4{padding-top:1rem}.ddoc .text-2xl{font-size:1.5rem;line-height:2rem}.ddoc .text-base{font-size:1rem;line-height:1.5rem}.ddoc .text-sm{font-size:.875rem;line-height:1.25rem}.ddoc .font-bold{font-weight:700}.ddoc .font-medium{font-weight:500}.ddoc .font-normal{font-weight:400}.ddoc .italic{font-style:italic}.ddoc .leading-none{line-height:1}.ddoc .text-Class{--tw-text-opacity:1;color:rgb(32 180 75/var(--tw-text-opacity))}.ddoc .text-Enum{--tw-text-opacity:1;color:rgb(34 171 176/var(--tw-text-opacity))}.ddoc .text-Function{--tw-text-opacity:1;color:rgb(5 108 240/var(--tw-text-opacity))}.ddoc .text-Interface{--tw-text-opacity:1;color:rgb(210 160 100/var(--tw-text-opacity))}.ddoc .text-Method{--tw-text-opacity:1;color:rgb(5 108 240/var(--tw-text-opacity))}.ddoc .text-Namespace{--tw-text-opacity:1;color:rgb(210 86 70/var(--tw-text-opacity))}.ddoc .text-Property{--tw-text-opacity:1;color:rgb(126 87 192/var(--tw-text-opacity))}.ddoc .text-TypeAlias{--tw-text-opacity:1;color:rgb(164 71 140/var(--tw-text-opacity))}.ddoc .text-Variable{--tw-text-opacity:1;color:rgb(126 87 192/var(--tw-text-opacity))}.ddoc .text-\[\#0F172A\]{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.ddoc .text-abstract{--tw-text-opacity:1;color:rgb(12 175 198/var(--tw-text-opacity))}.ddoc .text-deprecated{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.ddoc .text-new{--tw-text-opacity:1;color:rgb(123 97 255/var(--tw-text-opacity))}.ddoc .text-optional{--tw-text-opacity:1;color:rgb(12 175 198/var(--tw-text-opacity))}.ddoc .text-other{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.ddoc .text-permissions,.ddoc .text-private{--tw-text-opacity:1;color:rgb(12 175 198/var(--tw-text-opacity))}.ddoc .text-protected,.ddoc .text-readonly{--tw-text-opacity:1;color:rgb(123 97 255/var(--tw-text-opacity))}.ddoc .text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity))}.ddoc .text-unstable,.ddoc .text-writeonly{--tw-text-opacity:1;color:rgb(123 97 255/var(--tw-text-opacity))}.ddoc .filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.ddoc summary::-webkit-details-marker{display:none}.ddoc a{word-wrap:break-word}.ddoc{--ddoc-selection-border-width:2px;--ddoc-selection-border-color-default:#d6d3d1;--ddoc-selection-selected-border-color:#2564eb;--ddoc-selection-selected-bg:#056cf00c;--ddoc-selection-padding:9px 15px}.ddoc .link{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ddoc .link:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.ddoc .anchor{float:left;--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity));margin-left:-24px;padding:.25rem;line-height:1;display:none;top:0;bottom:0}.ddoc .anchorable{scroll-margin-top:4rem;position:relative}.ddoc .anchorable:hover .anchor{display:block}.ddoc .deprecated>div:first-child{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity));align-items:center;gap:.25rem;padding-top:.25rem;padding-bottom:.25rem;display:flex}.ddoc .deprecated>div:first-child>span{font-weight:600;line-height:1.5rem}.ddoc .deprecated>div:nth-child(2){--tw-border-opacity:1;border-left-width:4px;border-color:rgb(252 165 165/var(--tw-border-opacity));margin-left:.25rem;padding-left:.5rem}.ddoc .symbolSubtitle>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.ddoc .symbolSubtitle{font-size:.875rem;line-height:1rem}.ddoc .symbolSubtitle .type{--tw-text-opacity:1;color:rgb(168 162 158/var(--tw-text-opacity));font-style:italic}.ddoc .docEntry{margin-bottom:1rem}.ddoc .docEntry>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .docEntry .docEntryHeader{justify-content:space-between;align-items:flex-start;display:flex}@media (min-width:768px){.ddoc .docEntry .docEntryHeader{font-size:1rem;line-height:1.5rem}}.ddoc .docEntry .docEntryHeader>div{overflow-wrap:break-word}.ddoc .section{max-width:75ch;margin-bottom:.5rem;scroll-margin-top:4rem}.ddoc .section>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .section>div:first-child>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .section>div:first-child>h2{margin-bottom:0;padding-top:.25rem;padding-bottom:.25rem;font-size:1.25rem;font-weight:600;line-height:1.5rem}.ddoc .section>div:first-child>.markdown_summary{max-width:75ch;font-size:1rem;line-height:1.5rem}.ddoc .namespaceSection{max-width:75ch;margin-top:1rem}.ddoc .namespaceSection>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.ddoc .namespaceSection .namespaceItem{-moz-column-gap:.625rem;column-gap:.625rem;min-height:0;display:flex}@media (min-width:768px){.ddoc .namespaceSection .namespaceItem{min-height:4rem}}@media (min-width:1024px){.ddoc .namespaceSection .namespaceItem{padding-right:1rem}}.ddoc .namespaceSection .namespaceItem .docNodeKindIcon{flex-direction:column;justify-content:flex-start;width:auto}.ddoc .namespaceSection .namespaceItem .docNodeKindIcon>*+*{margin-top:-.125rem;margin-left:0}.ddoc .namespaceSection .namespaceItem[aria-label=deprecated]{opacity:.6}.ddoc .namespaceSection .namespaceItem[aria-label=deprecated] .namespaceItemContent>a{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity));text-decoration-line:line-through;text-decoration-color:#78716cb3;text-decoration-thickness:2px}.ddoc .namespaceSection .namespaceItem .namespaceItemContent a{text-decoration-line:underline;text-decoration-color:#d6d3d1}.ddoc .namespaceSection .namespaceItem .namespaceItemContent a:hover{text-decoration-line:none}.ddoc .namespaceSection .namespaceItem .namespaceItemContent>a{word-break:break-all;font-weight:500;line-height:1.25;display:block}.ddoc .namespaceSection .namespaceItem .namespaceItemContent .namespaceItemContentDoc{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity));margin-top:.5rem;font-size:.875rem;line-height:1.25rem}.ddoc .namespaceSection .namespaceItem .namespaceItemContent .namespaceItemContentSubItems{flex-wrap:wrap;row-gap:.25rem;margin-top:.375rem;font-size:.875rem;line-height:1.25rem;display:flex}.ddoc .namespaceSection .namespaceItem .namespaceItemContent .namespaceItemContentSubItems>li:not(:last-child):after{content:"|";-webkit-user-select:none;user-select:none;--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity));margin-left:.5rem;margin-right:.5rem}.ddoc .symbolGroup>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(3rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem*var(--tw-space-y-reverse))}.ddoc .symbolGroup article>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.ddoc .symbolGroup article>div:first-child{justify-content:space-between;align-items:flex-start;display:flex}.ddoc .symbolGroup article>div:first-child>div:first-child>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.ddoc .symbolGroup article>div:first-child>div:first-child{font-weight:500}.ddoc .docNodeKindIcon{flex-shrink:0;justify-content:flex-end;display:inline-flex}.ddoc .docNodeKindIcon div{-webkit-user-select:none;user-select:none;text-align:center;vertical-align:middle;border-radius:9999px;flex-shrink:0;width:1.25rem;height:1.25rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.75rem;font-weight:500;line-height:1.25rem}.ddoc .docNodeKindIcon>*+*{margin-left:-.375rem}.ddoc .example details summary{cursor:pointer;border-radius:.5rem;align-items:center;gap:.5rem;width:100%;padding-top:.5rem;padding-bottom:.5rem;line-height:1.5rem;list-style-type:none;display:flex}.ddoc .example details summary>div:first-child{-webkit-user-select:none;user-select:none;--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity))}.ddoc .example details[open] summary>div:first-child{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.ddoc .toc h3{margin-bottom:.75rem;font-size:1.125rem;font-weight:700;line-height:1.75rem}.ddoc .toc>div>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.ddoc .toc .topSymbols>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.ddoc .toc .topSymbols{font-size:.875rem;line-height:1.25rem}.ddoc .toc .topSymbols ul{list-style-type:none}.ddoc .toc .topSymbols ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.ddoc .toc .topSymbols ul li{display:block}.ddoc .toc .topSymbols ul li a{align-items:center;gap:.5rem;display:flex}.ddoc .toc .topSymbols ul li a>span{text-overflow:ellipsis;white-space:nowrap;border-radius:.25rem;width:100%;margin-top:-.125rem;margin-bottom:-.125rem;margin-left:-.25rem;padding-top:.125rem;padding-bottom:.125rem;padding-left:.25rem;display:block;overflow:hidden}.ddoc .toc .topSymbols>a:hover{text-decoration-line:underline}.ddoc .toc .documentNavigation>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.ddoc .toc .documentNavigation{font-size:.875rem;line-height:1.25rem}@media not all and (min-width:640px){.ddoc .toc .documentNavigation{display:none}}.ddoc .toc .documentNavigation>ul{flex-grow:1;display:block}.ddoc .toc .documentNavigation>ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .toc .documentNavigation>ul{overflow-y:auto}.ddoc .toc .documentNavigation>ul>li{margin-top:.125rem;margin-left:.75rem;margin-right:.75rem}.ddoc .toc .documentNavigation>ul li:has(>ul){margin-top:0!important}.ddoc .toc .documentNavigation>ul li:has(>a){padding-bottom:0!important}.ddoc .toc .documentNavigation>ul ul{margin-left:.875rem}.ddoc .toc .documentNavigation>ul ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .toc .documentNavigation>ul ul{--tw-text-opacity:1;color:rgb(134 135 137/var(--tw-text-opacity));font-size:.8rem;line-height:1}.ddoc .toc .documentNavigation>ul ul li{margin-top:.25rem!important}.ddoc .toc .documentNavigation>ul ul li a{padding:.25rem}.ddoc .toc .documentNavigation>ul ul li a:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.ddoc .toc .documentNavigation a{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.ddoc .toc .documentNavigation a:hover{text-decoration-line:underline}.ddoc .usages nav{flex-direction:row;align-items:center;gap:.5rem;margin-bottom:.75rem;font-weight:600;display:flex}.ddoc .usages nav details>summary{cursor:pointer;-webkit-user-select:none;user-select:none;--tw-border-opacity:1;border-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity));border-radius:.25rem;gap:.25rem;padding:.5rem .75rem;display:flex}@media (min-width:768px){.ddoc .usages nav details>div{position:relative}}.ddoc .usages nav details>div>div{z-index:30;--tw-border-opacity:1;border-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));margin-top:.375rem;padding:.5rem;display:block;position:absolute}@media not all and (min-width:768px){.ddoc .usages nav details>div>div{border-left-width:0;border-right-width:0;left:0;right:0}}@media (min-width:768px){.ddoc .usages nav details>div>div{border-radius:.25rem;width:12rem}}.ddoc .usages nav details>div>div label{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:.125rem;align-items:center;gap:.5rem;padding:.25rem .5rem;line-height:1.5;display:flex}.ddoc .usages nav details>div>div label:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.ddoc .usageContent :not(.markdown) h3{margin-bottom:.75rem;font-size:1.125rem;font-weight:700;line-height:1.75rem}.ddoc .usageContent .markdown{--tw-text-opacity:1;color:rgb(104 104 104/var(--tw-text-opacity));font-size:.75rem;line-height:1rem}.ddoc .usageContent .markdown p{margin:0}.ddoc .usageContent pre.highlight{--tw-border-opacity:1;border-width:1px;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}@media not all and (min-width:768px){.ddoc .usageContent pre.highlight{border-left-width:0;border-right-width:0}}.ddoc .usageContent pre.highlight{margin-top:.25rem!important}.ddoc .usageContent pre.highlight>code:first-child{scrollbar-width:thin;padding:.5rem .75rem}.ddoc .usageContent pre.highlight .context_button{border-width:0;display:none;top:.25rem;right:.5rem}.ddoc .usageContent pre.highlight .context_button svg rect{fill:#fff}.ddoc .usageContent pre.highlight:hover .context_button{opacity:1;display:block}.ddoc #categoryPanel{padding-top:.75rem;font-size:.875rem;line-height:1.25rem}.ddoc #categoryPanel ul>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc #categoryPanel ul{overflow-y:auto}.ddoc #categoryPanel ul li{margin-left:.25rem;margin-right:.75rem}.ddoc #categoryPanel ul li a{text-overflow:ellipsis;white-space:nowrap;padding:.375rem .875rem;display:block;overflow:hidden}.ddoc #categoryPanel ul li a:hover{text-decoration-line:underline}.ddoc .contextLink{color:#0e6590cc;text-underline-offset:.15em;text-decoration-line:underline;text-decoration-color:#0e659080;text-decoration-thickness:1.5px}.ddoc .contextLink:hover{--tw-text-opacity:1;color:rgb(14 101 144/var(--tw-text-opacity));text-decoration-color:#0e6590}.ddoc .contextLink{-webkit-text-decoration-skip:ink;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto}.ddoc .breadcrumbs{word-break:break-all;flex-wrap:wrap;align-items:center;gap:.25rem;display:inline-flex}.ddoc .breadcrumbs>li:first-child{font-size:1.5rem;font-weight:700;line-height:1}.ddoc .breadcrumbs li{font-size:1.125rem;line-height:.9em;display:inline}@media (min-width:1024px){.ddoc .breadcrumbs li{font-size:1.25rem;line-height:1.75rem}}.ddoc .context_button{z-index:10;cursor:pointer;background-color:inherit;border-width:1px;border-radius:.25rem;padding:.375rem;line-height:0}.ddoc .context_button:hover{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity))}.ddoc .see{list-style-type:disc;list-style-position:inside}.ddoc .see>li *{display:inline-block}.ddoc .markdown_border{border-color:#d6d3d166;border-left-width:2px;margin-left:.25rem;padding-left:.625rem}.ddoc .markdown_summary{--tw-text-opacity:1;color:rgb(87 83 78/var(--tw-text-opacity));display:inline}.ddoc .markdown_summary p{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:inline-block;overflow:hidden}.ddoc .markdown_summary :not(pre)>code{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity));border-radius:.25rem;padding:.125rem .375rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}.ddoc .markdown{flex-shrink:1;min-width:0;max-width:40ch}.ddoc .markdown>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}@media (min-width:640px){.ddoc .markdown{max-width:640px}}@media (min-width:768px){.ddoc .markdown{max-width:768px}}@media (min-width:1024px){.ddoc .markdown{max-width:75ch}}.ddoc .markdown a:not(.no_color){--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:75ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ddoc .markdown a:not(.no_color):hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity))}.ddoc .markdown h1{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(214 211 209/var(--tw-border-opacity));padding-bottom:.25rem;font-size:1.25rem;line-height:1.75rem}@media (min-width:768px){.ddoc .markdown h1{font-size:1.5rem;line-height:2rem}}@media (min-width:1024px){.ddoc .markdown h1{font-size:1.875rem;line-height:2.25rem}}.ddoc .markdown h2{--tw-border-opacity:1;border-bottom-width:1px;border-color:rgb(214 211 209/var(--tw-border-opacity));padding-bottom:.25rem;font-size:1.125rem;line-height:1.75rem}@media (min-width:768px){.ddoc .markdown h2{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.ddoc .markdown h2{font-size:1.5rem;line-height:2rem}}.ddoc .markdown h3{font-weight:700}@media (min-width:768px){.ddoc .markdown h3{font-size:1.125rem;font-weight:400;line-height:1.75rem}}@media (min-width:1024px){.ddoc .markdown h3{font-size:1.25rem;font-weight:400;line-height:1.75rem}}.ddoc .markdown h4{font-weight:600}@media (min-width:768px){.ddoc .markdown h4{font-weight:700}}@media (min-width:1024px){.ddoc .markdown h4{font-size:1.125rem;font-weight:400;line-height:1.75rem}}.ddoc .markdown h5{font-style:italic}@media (min-width:768px){.ddoc .markdown h5{font-weight:600}}@media (min-width:1024px){.ddoc .markdown h5{font-weight:700}}@media (min-width:768px){.ddoc .markdown h6{font-style:italic}}@media (min-width:1024px){.ddoc .markdown h6{font-weight:600}}.ddoc .markdown hr{--tw-border-opacity:1;border-color:rgb(120 113 108/var(--tw-border-opacity));margin:.5rem}.ddoc .markdown ol,.ddoc .markdown ul{margin-left:1rem;list-style-position:outside}.ddoc .markdown ol{list-style-type:decimal}.ddoc .markdown ul{list-style-type:disc}.ddoc .markdown :not(pre)>code{--tw-bg-opacity:1;background-color:rgb(231 229 228/var(--tw-bg-opacity));border-radius:.375rem;padding:.125rem .375rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}:is(.ddoc .markdown h1,.ddoc .markdown h2,.ddoc .markdown h3,.ddoc .markdown h4,.ddoc .markdown h5,.ddoc .markdown h6)>code{font-size:inherit!important}.ddoc .markdown pre{--tw-border-opacity:1;border-top-width:1.5px;border-bottom-width:1.5px;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity));border-radius:0;margin-left:-1rem;margin-right:-1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.875rem;line-height:1.25rem}@media (min-width:768px){.ddoc .markdown pre{border-width:1.5px;border-radius:.375rem;margin-left:0;margin-right:0}}.ddoc .markdown pre>code:first-child{padding:1rem 1.5rem;display:block;overflow-x:auto}.ddoc .markdown p{margin:.25rem 0}.ddoc .markdown table{table-layout:auto;width:max-content;max-width:100%;display:block;overflow:auto}.ddoc .markdown td{padding:.5rem}.ddoc .markdown th{text-align:center;padding-top:.375rem;padding-bottom:.375rem;font-weight:700}.ddoc .markdown th,.ddoc .markdown td{--tw-border-opacity:1;border-width:1.5px;border-color:rgb(203 213 225/var(--tw-border-opacity))}.ddoc .markdown tr:nth-child(2n){--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.ddoc .markdown img{display:inline-block}.ddoc .markdown .alert>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.ddoc .markdown .alert{border-width:2px;border-radius:.5rem;padding:1rem 1.5rem}.ddoc .markdown .alert div:first-child{align-items:center;gap:.375rem;font-weight:500;display:flex}.ddoc .markdown .alert div:first-child svg{width:1.25rem;height:1.25rem}.ddoc .markdown .alert-note{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity));background-color:#2563eb0d}.ddoc .markdown .alert-note div:first-child{stroke:#2563eb;--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity))}.ddoc .markdown .alert-tip{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity));background-color:#16a34a0d}.ddoc .markdown .alert-tip div:first-child{stroke:#16a34a;--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity))}.ddoc .markdown .alert-important{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity));background-color:#9333ea0d}.ddoc .markdown .alert-important div:first-child{stroke:#9333ea;--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity))}.ddoc .markdown .alert-warning{--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity));background-color:#ca8a040d}.ddoc .markdown .alert-warning div:first-child{stroke:#ca8a04;--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity))}.ddoc .markdown .alert-caution{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity));background-color:#dc26260d}.ddoc .markdown .alert-caution div:first-child{stroke:#dc2626;--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.ddoc .markdown .highlight{position:relative}.ddoc .markdown .highlight .lineNumbers{--tw-border-opacity:1;border-right-width:2px;border-color:rgb(214 211 209/var(--tw-border-opacity));text-align:right;flex:none;padding-right:.25rem}.ddoc .markdown .highlight .context_button{opacity:.6;position:absolute;top:.75rem;right:1rem}.ddoc .markdown .highlight .context_button:hover{opacity:1}.ddoc .markdown .highlight .pl-c{color:#6a737d}.ddoc .markdown .highlight .pl-c1,.ddoc .markdown .highlight .pl-s .pl-v{color:#005cc5}.ddoc .markdown .highlight .pl-e,.ddoc .markdown .highlight .pl-en{color:#6f42c1}.ddoc .markdown .highlight .pl-smi,.ddoc .markdown .highlight .pl-s .pl-s1{color:#24292e}.ddoc .markdown .highlight .pl-ent{color:#22863a}.ddoc .markdown .highlight .pl-k{color:#d73a49}.ddoc .markdown .highlight .pl-s,.ddoc .markdown .highlight .pl-pds,.ddoc .markdown .highlight .pl-s .pl-pse .pl-s1,.ddoc .markdown .highlight .pl-sr,.ddoc .markdown .highlight .pl-sr .pl-cce,.ddoc .markdown .highlight .pl-sr .pl-sre,.ddoc .markdown .highlight .pl-sr .pl-sra{color:#032f62}.ddoc .markdown .highlight .pl-v,.ddoc .markdown .highlight .pl-smw{color:#e36209}.ddoc .markdown .highlight .pl-bu{color:#b31d28}.ddoc .markdown .highlight .pl-ii{color:#fafbfc;background-color:#b31d28}.ddoc .markdown .highlight .pl-c2{color:#fafbfc;background-color:#d73a49}.ddoc .markdown .highlight .pl-c2:before{content:"^M"}.ddoc .markdown .highlight .pl-sr .pl-cce{color:#22863a;font-weight:700}.ddoc .markdown .highlight .pl-ml{color:#735c0f}.ddoc .markdown .highlight .pl-mh,.ddoc .markdown .highlight .pl-mh .pl-en,.ddoc .markdown .highlight .pl-ms{color:#005cc5;font-weight:700}.ddoc .markdown .highlight .pl-mi{color:#24292e;font-style:italic}.ddoc .markdown .highlight .pl-mb{color:#24292e;font-weight:700}.ddoc .markdown .highlight .pl-md{color:#b31d28;background-color:#ffeef0}.ddoc .markdown .highlight .pl-mi1{color:#22863a;background-color:#f0fff4}.ddoc .markdown .highlight .pl-mc{color:#e36209;background-color:#ffebda}.ddoc .markdown .highlight .pl-mi2{color:#f6f8fa;background-color:#005cc5}.ddoc .\*\:h-4>*{height:1rem}.ddoc .\*\:h-5>*{height:1.25rem}.ddoc .\*\:w-auto>*{width:auto}.ddoc .\*\:flex-none>*{flex:none}.ddoc .target\:bg-yellow-200:target{--tw-bg-opacity:1;background-color:rgb(254 240 138/var(--tw-bg-opacity))}.ddoc .hover\:bg-Class\/15:hover{background-color:#20b44b26}.ddoc .hover\:bg-Class\/5:hover{background-color:#20b44b0d}.ddoc .hover\:bg-Enum\/15:hover{background-color:#22abb026}.ddoc .hover\:bg-Enum\/5:hover{background-color:#22abb00d}.ddoc .hover\:bg-Function\/15:hover{background-color:#056cf026}.ddoc .hover\:bg-Function\/5:hover{background-color:#056cf00d}.ddoc .hover\:bg-Interface\/15:hover{background-color:#d2a06426}.ddoc .hover\:bg-Interface\/5:hover{background-color:#d2a0640d}.ddoc .hover\:bg-Method\/15:hover{background-color:#056cf026}.ddoc .hover\:bg-Method\/5:hover{background-color:#056cf00d}.ddoc .hover\:bg-Namespace\/15:hover{background-color:#d2564626}.ddoc .hover\:bg-Namespace\/5:hover{background-color:#d256460d}.ddoc .hover\:bg-Property\/15:hover{background-color:#7e57c026}.ddoc .hover\:bg-Property\/5:hover{background-color:#7e57c00d}.ddoc .hover\:bg-TypeAlias\/15:hover{background-color:#a4478c26}.ddoc .hover\:bg-TypeAlias\/5:hover{background-color:#a4478c0d}.ddoc .hover\:bg-Variable\/15:hover{background-color:#7e57c026}.ddoc .hover\:bg-Variable\/5:hover{background-color:#7e57c00d}.ddoc .hover\:bg-abstract\/15:hover{background-color:#0cafc626}.ddoc .hover\:bg-abstract\/5:hover{background-color:#0cafc60d}.ddoc .hover\:bg-deprecated\/15:hover{background-color:#dc262626}.ddoc .hover\:bg-deprecated\/5:hover{background-color:#dc26260d}.ddoc .hover\:bg-new\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-new\/5:hover{background-color:#7b61ff0d}.ddoc .hover\:bg-optional\/15:hover{background-color:#0cafc626}.ddoc .hover\:bg-optional\/5:hover{background-color:#0cafc60d}.ddoc .hover\:bg-other\/15:hover{background-color:#57534e26}.ddoc .hover\:bg-other\/5:hover{background-color:#57534e0d}.ddoc .hover\:bg-permissions\/15:hover{background-color:#0cafc626}.ddoc .hover\:bg-permissions\/5:hover{background-color:#0cafc60d}.ddoc .hover\:bg-private\/15:hover{background-color:#0cafc626}.ddoc .hover\:bg-private\/5:hover{background-color:#0cafc60d}.ddoc .hover\:bg-protected\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-protected\/5:hover{background-color:#7b61ff0d}.ddoc .hover\:bg-readonly\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-readonly\/5:hover{background-color:#7b61ff0d}.ddoc .hover\:bg-unstable\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-unstable\/5:hover{background-color:#7b61ff0d}.ddoc .hover\:bg-writeonly\/15:hover{background-color:#7b61ff26}.ddoc .hover\:bg-writeonly\/5:hover{background-color:#7b61ff0d} \ No newline at end of file diff --git a/src/html/util.rs b/src/html/util.rs index 791ea0f8..56515b2e 100644 --- a/src/html/util.rs +++ b/src/html/util.rs @@ -8,6 +8,7 @@ use crate::html::RenderContext; use crate::html::ShortPath; use crate::js_doc::JsDoc; use crate::js_doc::JsDocTag; +use crate::node::DocNodeDef; use crate::DocNodeKind; use deno_ast::swc::ast::Accessibility; use deno_ast::swc::atoms::once_cell::sync::Lazy; @@ -66,10 +67,8 @@ pub fn compute_namespaced_symbols( let name_path: Rc<[String]> = doc_node.sub_qualifier().into(); - match doc_node.kind() { - DocNodeKind::Class => { - let class_def = doc_node.class_def().unwrap(); - + match &doc_node.def { + DocNodeDef::Class { class_def } => { namespaced_symbols.extend(class_def.methods.iter().map(|method| { let mut method_path = doc_node.ns_qualifiers.to_vec(); method_path.extend( @@ -100,9 +99,7 @@ pub fn compute_namespaced_symbols( }, )); } - DocNodeKind::Interface => { - let interface_def = doc_node.interface_def().unwrap(); - + DocNodeDef::Interface { interface_def } => { namespaced_symbols.extend(interface_def.methods.iter().map(|method| { let mut method_path = doc_node.ns_qualifiers.to_vec(); method_path.extend( @@ -125,9 +122,7 @@ pub fn compute_namespaced_symbols( }, )); } - DocNodeKind::TypeAlias => { - let type_alias_def = doc_node.type_alias_def().unwrap(); - + DocNodeDef::TypeAlias { type_alias_def } => { if let Some(type_literal) = type_alias_def.ts_type.type_literal.as_ref() { namespaced_symbols.extend(type_literal.methods.iter().map( @@ -159,10 +154,8 @@ pub fn compute_namespaced_symbols( )); } } - DocNodeKind::Variable => { - let variable = doc_node.variable_def().unwrap(); - - if let Some(type_literal) = variable + DocNodeDef::Variable { variable_def } => { + if let Some(type_literal) = variable_def .ts_type .as_ref() .and_then(|ts_type| ts_type.type_literal.as_ref()) @@ -201,8 +194,7 @@ pub fn compute_namespaced_symbols( namespaced_symbols.insert(name_path.to_vec()); - if doc_node.kind() == DocNodeKind::Namespace { - let namespace_def = doc_node.namespace_def().unwrap(); + if let DocNodeDef::Namespace { namespace_def } = &doc_node.def { namespaced_symbols.extend(compute_namespaced_symbols( &namespace_def .elements diff --git a/tailwind.config.ts b/tailwind.config.ts index e2795aca..10ec29af 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -63,6 +63,9 @@ export default { margin: { "indent": "2ch", }, + maxWidth: { + "prose": "75ch", + }, }, }, darkMode: "class", diff --git a/tests/snapshots/html_test__html_doc_files.snap b/tests/snapshots/html_test__html_doc_files.snap index dd3b0906..46e17ea8 100644 --- a/tests/snapshots/html_test__html_doc_files.snap +++ b/tests/snapshots/html_test__html_doc_files.snap @@ -69,20 +69,17 @@ expression: "files.get(\"./all_symbols.html\").unwrap()"
Bar -
No documentation available
-
+
No documentation available
c
Foo -
No documentation available
-
+
No documentation available
c
Foobar -
No documentation available
-
+
No documentation available
diff --git a/tests/snapshots/html_test__html_doc_files_rewrite-14.snap b/tests/snapshots/html_test__html_doc_files_rewrite-14.snap index 88723f4e..d70547d9 100644 --- a/tests/snapshots/html_test__html_doc_files_rewrite-14.snap +++ b/tests/snapshots/html_test__html_doc_files_rewrite-14.snap @@ -112,7 +112,7 @@ Properties
+

Document Navigation

diff --git a/tests/snapshots/html_test__html_doc_files_rewrite-16.snap b/tests/snapshots/html_test__html_doc_files_rewrite-16.snap index fce617ce..e69a2fde 100644 --- a/tests/snapshots/html_test__html_doc_files_rewrite-16.snap +++ b/tests/snapshots/html_test__html_doc_files_rewrite-16.snap @@ -70,8 +70,7 @@ Functions
x -
No documentation available
-
+
No documentation available
@@ -102,9 +101,8 @@ Variables
default -

The default export item.

-
-
+

The default export item.

+
@@ -152,7 +150,7 @@ Variables
+

Document Navigation

diff --git a/tests/snapshots/html_test__html_doc_files_rewrite-5.snap b/tests/snapshots/html_test__html_doc_files_rewrite-5.snap index a114fbf0..cd234416 100644 --- a/tests/snapshots/html_test__html_doc_files_rewrite-5.snap +++ b/tests/snapshots/html_test__html_doc_files_rewrite-5.snap @@ -112,7 +112,7 @@ Properties
+

Document Navigation

diff --git a/tests/snapshots/html_test__html_doc_files_rewrite-7.snap b/tests/snapshots/html_test__html_doc_files_rewrite-7.snap index 6639f598..55f5cad0 100644 --- a/tests/snapshots/html_test__html_doc_files_rewrite-7.snap +++ b/tests/snapshots/html_test__html_doc_files_rewrite-7.snap @@ -194,7 +194,7 @@ Static Properties
diff --git a/tests/snapshots/html_test__html_doc_files_rewrite.snap b/tests/snapshots/html_test__html_doc_files_rewrite.snap index 9e7efeba..3ae04dd3 100644 --- a/tests/snapshots/html_test__html_doc_files_rewrite.snap +++ b/tests/snapshots/html_test__html_doc_files_rewrite.snap @@ -70,53 +70,45 @@ expression: "files.get(\"./all_symbols.html\").unwrap()"
Bar -

Bar docs

-
-
+

Bar docs

+
T
Baz -
No documentation available
-
+
No documentation available
f
c -
No documentation available
-
+
No documentation available
f
d -
No documentation available
-
+
No documentation available
c
Foo -

some Foo docs

-
-
+

some Foo docs

+
c
Foobar -

Foobar docs

-
-
+

Foobar docs

+
I
Hello -
No documentation available
-
+
No documentation available
f
qaz -
No documentation available
-
+
No documentation available
@@ -147,15 +139,13 @@ expression: "files.get(\"./all_symbols.html\").unwrap()"
default -

The default export item.

-
-
+

The default export item.

+
f
x -
No documentation available
-
+
No documentation available
diff --git a/tests/snapshots/html_test__module_doc.snap b/tests/snapshots/html_test__module_doc.snap index 7a8cfad4..61c5aa88 100644 --- a/tests/snapshots/html_test__module_doc.snap +++ b/tests/snapshots/html_test__module_doc.snap @@ -47,7 +47,8 @@ expression: module_docs "href": ".././foo/~/x.html", "name": "x", "docs": null, - "deprecated": false + "deprecated": false, + "subitems": [] } ] } @@ -82,7 +83,8 @@ expression: module_docs "href": ".././foo/~/default.html", "name": "default", "docs": "

The default export item.

\n
", - "deprecated": false + "deprecated": false, + "subitems": [] } ] } diff --git a/tests/snapshots/html_test__symbol_group.snap b/tests/snapshots/html_test__symbol_group.snap index b56ad01d..caec4fb9 100644 --- a/tests/snapshots/html_test__symbol_group.snap +++ b/tests/snapshots/html_test__symbol_group.snap @@ -363,7 +363,7 @@ expression: files "composed": false }, "top_symbols": null, - "document_navigation": "