aria-query 0.0.6

Rust port of ARIA Query.
Documentation
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,
                )]],
            },
        ),
    ])
});