use std::{collections::HashMap, hash::RandomState, sync::LazyLock};
use ordered_hash_map::OrderedHashMap;
use crate::types::{
AriaAbstractRole, AriaNameFromSource, AriaProperty, AriaRole, AriaRoleDefinition,
AriaRoleDefinitionKey, AriaRoleDefinitionSuperClass, AriaRoleRelation, AriaRoleRelationConcept,
};
pub static ARIA_ABSTRACT_ROLES: LazyLock<
OrderedHashMap<AriaRoleDefinitionKey, AriaRoleDefinition, RandomState>,
> = LazyLock::new(|| {
OrderedHashMap::from_iter([
(
AriaRoleDefinitionKey::Command,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![AriaNameFromSource::Author],
prohibited_props: vec![],
props: HashMap::new(),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Widget),
]],
},
),
(
AriaRoleDefinitionKey::Composite,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![AriaNameFromSource::Author],
prohibited_props: vec![],
props: HashMap::from([
(AriaProperty::AriaActivedescendant, None),
(AriaProperty::AriaDisabled, None),
]),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Widget),
]],
},
),
(
AriaRoleDefinitionKey::Input,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![AriaNameFromSource::Author],
prohibited_props: vec![],
props: HashMap::from([(AriaProperty::AriaDisabled, None)]),
related_concepts: vec![AriaRoleRelation {
concept: Some(AriaRoleRelationConcept {
name: "input".into(),
attributes: None,
constraints: None,
}),
module: Some("XForms".into()),
}],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Widget),
]],
},
),
(
AriaRoleDefinitionKey::Landmark,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![AriaNameFromSource::Author],
prohibited_props: vec![],
props: HashMap::new(),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Structure),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Section),
]],
},
),
(
AriaRoleDefinitionKey::Range,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![AriaNameFromSource::Author],
prohibited_props: vec![],
props: HashMap::from([
(AriaProperty::AriaValuemax, None),
(AriaProperty::AriaValuemin, None),
(AriaProperty::AriaValuenow, None),
]),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Structure),
]],
},
),
(
AriaRoleDefinitionKey::Roletype,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![],
prohibited_props: vec![],
props: HashMap::from([
(AriaProperty::AriaAtomic, None),
(AriaProperty::AriaBusy, None),
(AriaProperty::AriaControls, None),
(AriaProperty::AriaCurrent, None),
(AriaProperty::AriaDescribedby, None),
(AriaProperty::AriaDetails, None),
(AriaProperty::AriaDropeffect, None),
(AriaProperty::AriaFlowto, None),
(AriaProperty::AriaGrabbed, None),
(AriaProperty::AriaHidden, None),
(AriaProperty::AriaKeyshortcuts, None),
(AriaProperty::AriaLabel, None),
(AriaProperty::AriaLabelledby, None),
(AriaProperty::AriaLive, None),
(AriaProperty::AriaOwns, None),
(AriaProperty::AriaRelevant, None),
(AriaProperty::AriaRoledescription, None),
]),
related_concepts: vec![
AriaRoleRelation {
concept: Some(AriaRoleRelationConcept {
name: "role".into(),
attributes: None,
constraints: None,
}),
module: Some("XHTML".into()),
},
AriaRoleRelation {
concept: Some(AriaRoleRelationConcept {
name: "type".into(),
attributes: None,
constraints: None,
}),
module: Some("Dublin Core".into()),
},
],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![],
},
),
(
AriaRoleDefinitionKey::Sectionhead,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![AriaNameFromSource::Author, AriaNameFromSource::Contents],
prohibited_props: vec![],
props: HashMap::new(),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Structure),
]],
},
),
(
AriaRoleDefinitionKey::Section,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![],
prohibited_props: vec![],
props: HashMap::new(),
related_concepts: vec![
AriaRoleRelation {
concept: Some(AriaRoleRelationConcept {
name: "frontmatter".into(),
attributes: None,
constraints: None,
}),
module: Some("DTB".into()),
},
AriaRoleRelation {
concept: Some(AriaRoleRelationConcept {
name: "level".into(),
attributes: None,
constraints: None,
}),
module: Some("DTB".into()),
},
AriaRoleRelation {
concept: Some(AriaRoleRelationConcept {
name: "level".into(),
attributes: None,
constraints: None,
}),
module: Some("SMIL".into()),
},
],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Structure),
]],
},
),
(
AriaRoleDefinitionKey::Select,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![AriaNameFromSource::Author],
prohibited_props: vec![],
props: HashMap::from([(AriaProperty::AriaOrientation, None)]),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![
vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Widget),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Composite),
],
vec![
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Roletype),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Structure),
AriaRoleDefinitionSuperClass::AbstractRole(AriaAbstractRole::Section),
AriaRoleDefinitionSuperClass::Role(AriaRole::Group),
],
],
},
),
(
AriaRoleDefinitionKey::Structure,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![],
prohibited_props: vec![],
props: HashMap::new(),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![AriaRoleDefinitionSuperClass::AbstractRole(
AriaAbstractRole::Roletype,
)]],
},
),
(
AriaRoleDefinitionKey::Widget,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![],
prohibited_props: vec![],
props: HashMap::new(),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![AriaRoleDefinitionSuperClass::AbstractRole(
AriaAbstractRole::Roletype,
)]],
},
),
(
AriaRoleDefinitionKey::Window,
AriaRoleDefinition {
r#abstract: true,
accessible_name_required: false,
base_concepts: vec![],
children_presentational: false,
name_from: vec![AriaNameFromSource::Author],
prohibited_props: vec![],
props: HashMap::from([(AriaProperty::AriaModal, None)]),
related_concepts: vec![],
require_context_role: vec![],
required_context_role: vec![],
required_owned_elements: vec![],
required_props: HashMap::new(),
super_class: vec![vec![AriaRoleDefinitionSuperClass::AbstractRole(
AriaAbstractRole::Roletype,
)]],
},
),
])
});