UNPKG

@ordojs/accessibility

Version:

Comprehensive accessibility system for OrdoJS with ARIA generation, automated testing, and screen reader support

1 lines 26.3 kB
{"version":3,"sources":["../../src/aria/index.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @fileoverview OrdoJS Accessibility - ARIA Module\n *\n * Automatic ARIA attribute generation and management.\n */\n\nimport { EventEmitter } from 'events';\nimport type {\n ARIAAttribute,\n ARIARole,\n AccessibilityConfig\n} from '../types/index.js';\n\n/**\n * ARIA manager for handling ARIA attribute generation and management\n */\nexport class ARIAManager extends EventEmitter {\n private config: AccessibilityConfig;\n private roles: Map<string, ARIARole>;\n private attributes: Map<string, ARIAAttribute>;\n private isInitialized: boolean;\n\n /**\n * Create a new ARIAManager instance\n *\n * @param config - Accessibility configuration\n */\n constructor(config: AccessibilityConfig) {\n super();\n\n this.config = config;\n this.roles = new Map();\n this.attributes = new Map();\n this.isInitialized = false;\n }\n\n /**\n * Initialize the ARIA manager\n */\n async initialize(): Promise<void> {\n if (this.isInitialized) {\n console.warn('ARIA manager is already initialized');\n return;\n }\n\n try {\n // Load ARIA roles and attributes\n await this.loadARIARoles();\n await this.loadARIAAttributes();\n\n this.isInitialized = true;\n console.log('ARIA manager initialized successfully');\n\n this.emit('initialized');\n } catch (error) {\n console.error('Failed to initialize ARIA manager:', error);\n this.emit('error', error);\n throw error;\n }\n }\n\n /**\n * Generate ARIA attributes for an element\n *\n * @param element - Element information\n * @param context - Element context\n * @returns Generated ARIA attributes\n */\n generateARIA(\n element: {\n tag: string;\n content: string;\n attributes: Record<string, string>;\n },\n context: {\n role?: string;\n label?: string;\n description?: string;\n state?: Record<string, any>;\n properties?: Record<string, any>;\n interactive?: boolean;\n landmark?: boolean;\n } = {}\n ): Record<string, string> {\n const ariaAttributes: Record<string, string> = {};\n\n // Add role if provided or infer from element\n if (context.role) {\n ariaAttributes['role'] = context.role;\n } else {\n const inferredRole = this.inferRole(element.tag, element.content, element.attributes);\n if (inferredRole) {\n ariaAttributes['role'] = inferredRole;\n }\n }\n\n // Add label\n if (context.label) {\n ariaAttributes['aria-label'] = context.label;\n } else {\n const inferredLabel = this.inferLabel(element.content, element.attributes);\n if (inferredLabel) {\n ariaAttributes['aria-label'] = inferredLabel;\n }\n }\n\n // Add description\n if (context.description) {\n ariaAttributes['aria-describedby'] = context.description;\n }\n\n // Add states\n if (context.state) {\n for (const [key, value] of Object.entries(context.state)) {\n ariaAttributes[`aria-${key}`] = String(value);\n }\n }\n\n // Add properties\n if (context.properties) {\n for (const [key, value] of Object.entries(context.properties)) {\n ariaAttributes[`aria-${key}`] = String(value);\n }\n }\n\n // Add landmark attributes\n if (context.landmark) {\n ariaAttributes['aria-label'] = ariaAttributes['aria-label'] || this.generateLandmarkLabel(element.tag);\n }\n\n // Add interactive attributes\n if (context.interactive) {\n ariaAttributes['tabindex'] = '0';\n if (!ariaAttributes['role']) {\n ariaAttributes['role'] = 'button';\n }\n }\n\n return ariaAttributes;\n }\n\n /**\n * Validate ARIA attributes\n *\n * @param attributes - ARIA attributes to validate\n * @returns Validation result\n */\n validateARIA(attributes: Record<string, string>): {\n isValid: boolean;\n errors: string[];\n warnings: string[];\n suggestions: string[];\n } {\n const errors: string[] = [];\n const warnings: string[] = [];\n const suggestions: string[] = [];\n\n for (const [key, value] of Object.entries(attributes)) {\n if (key.startsWith('aria-')) {\n const attributeName = key.replace('aria-', '');\n const attribute = this.attributes.get(attributeName);\n\n if (attribute) {\n // Check if value is valid for this attribute\n if (attribute.allowedValues && !attribute.allowedValues.includes(value)) {\n errors.push(`Invalid value '${value}' for attribute '${key}'`);\n }\n\n // Check if attribute is required\n if (attribute.required && !value) {\n errors.push(`Required attribute '${key}' is missing`);\n }\n } else {\n warnings.push(`Unknown ARIA attribute '${key}'`);\n }\n }\n }\n\n // Check role-attribute compatibility\n const role = attributes['role'];\n if (role) {\n const roleInfo = this.roles.get(role);\n if (roleInfo) {\n // Check if all required attributes are present\n for (const requiredAttr of roleInfo.requiredAttributes) {\n const attrKey = `aria-${requiredAttr}`;\n if (!attributes[attrKey]) {\n errors.push(`Required attribute '${attrKey}' for role '${role}' is missing`);\n }\n }\n\n // Check for prohibited attributes\n for (const prohibitedAttr of roleInfo.prohibitedAttributes) {\n const attrKey = `aria-${prohibitedAttr}`;\n if (attributes[attrKey]) {\n warnings.push(`Prohibited attribute '${attrKey}' for role '${role}'`);\n }\n }\n }\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n warnings,\n suggestions\n };\n }\n\n /**\n * Get ARIA role information\n *\n * @param role - Role name\n * @returns Role information or undefined\n */\n getRoleInfo(role: string): ARIARole | undefined {\n return this.roles.get(role);\n }\n\n /**\n * Get ARIA attribute information\n *\n * @param attribute - Attribute name\n * @returns Attribute information or undefined\n */\n getAttributeInfo(attribute: string): ARIAAttribute | undefined {\n return this.attributes.get(attribute);\n }\n\n /**\n * Get all available roles\n *\n * @returns Array of role names\n */\n getAvailableRoles(): string[] {\n return Array.from(this.roles.keys());\n }\n\n /**\n * Get all available attributes\n *\n * @returns Array of attribute names\n */\n getAvailableAttributes(): string[] {\n return Array.from(this.attributes.keys());\n }\n\n /**\n * Get roles by type\n *\n * @param type - Role type\n * @returns Array of roles\n */\n getRolesByType(type: 'abstract' | 'widget' | 'document' | 'landmark' | 'window'): ARIARole[] {\n return Array.from(this.roles.values()).filter(role => role.type === type);\n }\n\n /**\n * Get ARIA manager statistics\n *\n * @returns Statistics\n */\n getStats(): {\n totalRoles: number;\n totalAttributes: number;\n rolesByType: Record<string, number>;\n } {\n const rolesByType: Record<string, number> = {};\n for (const role of this.roles.values()) {\n rolesByType[role.type] = (rolesByType[role.type] || 0) + 1;\n }\n\n return {\n totalRoles: this.roles.size,\n totalAttributes: this.attributes.size,\n rolesByType\n };\n }\n\n /**\n * Infer role from element\n *\n * @param tag - Element tag\n * @param content - Element content\n * @param attributes - Element attributes\n * @returns Inferred role or undefined\n */\n private inferRole(tag: string, content: string, attributes: Record<string, string>): string | undefined {\n // Check if role is explicitly set\n if (attributes.role) {\n return attributes.role;\n }\n\n // Infer role based on tag and content\n switch (tag.toLowerCase()) {\n case 'button':\n return 'button';\n case 'a':\n return 'link';\n case 'input':\n const type = attributes.type || 'text';\n switch (type) {\n case 'checkbox':\n return 'checkbox';\n case 'radio':\n return 'radio';\n case 'search':\n return 'searchbox';\n default:\n return 'textbox';\n }\n case 'select':\n return 'combobox';\n case 'textarea':\n return 'textbox';\n case 'nav':\n return 'navigation';\n case 'main':\n return 'main';\n case 'aside':\n return 'complementary';\n case 'header':\n return 'banner';\n case 'footer':\n return 'contentinfo';\n case 'article':\n return 'article';\n case 'section':\n return 'region';\n case 'form':\n return 'form';\n case 'table':\n return 'table';\n case 'ul':\n case 'ol':\n return 'list';\n case 'li':\n return 'listitem';\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return 'heading';\n case 'img':\n return 'img';\n case 'progress':\n return 'progressbar';\n case 'meter':\n return 'meter';\n default:\n return undefined;\n }\n }\n\n /**\n * Infer label from content and attributes\n *\n * @param content - Element content\n * @param attributes - Element attributes\n * @returns Inferred label or undefined\n */\n private inferLabel(content: string, attributes: Record<string, string>): string | undefined {\n // Check for explicit label\n if (attributes['aria-label']) {\n return attributes['aria-label'];\n }\n\n // Check for title attribute\n if (attributes.title) {\n return attributes.title;\n }\n\n // Check for alt attribute (for images)\n if (attributes.alt) {\n return attributes.alt;\n }\n\n // Check for placeholder attribute\n if (attributes.placeholder) {\n return attributes.placeholder;\n }\n\n // Use content if it's meaningful\n const trimmedContent = content.trim();\n if (trimmedContent && trimmedContent.length > 0 && trimmedContent.length < 100) {\n return trimmedContent;\n }\n\n return undefined;\n }\n\n /**\n * Generate landmark label\n *\n * @param tag - Element tag\n * @returns Landmark label\n */\n private generateLandmarkLabel(tag: string): string {\n switch (tag.toLowerCase()) {\n case 'nav':\n return 'Navigation';\n case 'main':\n return 'Main content';\n case 'aside':\n return 'Complementary content';\n case 'header':\n return 'Header';\n case 'footer':\n return 'Footer';\n case 'article':\n return 'Article';\n case 'section':\n return 'Section';\n case 'form':\n return 'Form';\n default:\n return 'Landmark';\n }\n }\n\n /**\n * Load ARIA roles\n */\n private async loadARIARoles(): Promise<void> {\n // Load common ARIA roles\n const commonRoles: Record<string, ARIARole> = {\n 'button': {\n name: 'button',\n type: 'widget',\n requiredAttributes: [],\n supportedAttributes: ['aria-expanded', 'aria-pressed', 'aria-haspopup'],\n requiredOwnedElements: [],\n requiredContextRoles: [],\n prohibitedAttributes: [],\n description: 'An input that allows for user-triggered actions',\n examples: ['<button>Click me</button>', '<div role=\"button\">Click me</div>']\n },\n 'link': {\n name: 'link',\n type: 'widget',\n requiredAttributes: [],\n supportedAttributes: ['aria-expanded', 'aria-haspopup'],\n requiredOwnedElements: [],\n requiredContextRoles: [],\n prohibitedAttributes: [],\n description: 'An interactive reference to an internal or external resource',\n examples: ['<a href=\"/\">Home</a>', '<div role=\"link\">Home</div>']\n },\n 'navigation': {\n name: 'navigation',\n type: 'landmark',\n requiredAttributes: [],\n supportedAttributes: ['aria-label', 'aria-labelledby'],\n requiredOwnedElements: [],\n requiredContextRoles: [],\n prohibitedAttributes: [],\n description: 'A landmark containing navigation links',\n examples: ['<nav>Navigation</nav>', '<div role=\"navigation\">Navigation</div>']\n },\n 'main': {\n name: 'main',\n type: 'landmark',\n requiredAttributes: [],\n supportedAttributes: ['aria-label', 'aria-labelledby'],\n requiredOwnedElements: [],\n requiredContextRoles: [],\n prohibitedAttributes: [],\n description: 'The main content of a document',\n examples: ['<main>Main content</main>', '<div role=\"main\">Main content</div>']\n },\n 'banner': {\n name: 'banner',\n type: 'landmark',\n requiredAttributes: [],\n supportedAttributes: ['aria-label', 'aria-labelledby'],\n requiredOwnedElements: [],\n requiredContextRoles: [],\n prohibitedAttributes: [],\n description: 'A landmark that contains site-oriented content',\n examples: ['<header>Header</header>', '<div role=\"banner\">Header</div>']\n },\n 'contentinfo': {\n name: 'contentinfo',\n type: 'landmark',\n requiredAttributes: [],\n supportedAttributes: ['aria-label', 'aria-labelledby'],\n requiredOwnedElements: [],\n requiredContextRoles: [],\n prohibitedAttributes: [],\n description: 'A landmark containing information about the parent document',\n examples: ['<footer>Footer</footer>', '<div role=\"contentinfo\">Footer</div>']\n }\n };\n\n for (const [name, role] of Object.entries(commonRoles)) {\n this.roles.set(name, role);\n }\n }\n\n /**\n * Load ARIA attributes\n */\n private async loadARIAAttributes(): Promise<void> {\n // Load common ARIA attributes\n const commonAttributes: Record<string, ARIAAttribute> = {\n 'label': {\n name: 'label',\n value: '',\n type: 'string',\n required: false,\n description: 'Defines a string value that labels the current element'\n },\n 'describedby': {\n name: 'describedby',\n value: '',\n type: 'idrefs',\n required: false,\n description: 'Identifies the element that describes the current element'\n },\n 'expanded': {\n name: 'expanded',\n value: '',\n type: 'boolean',\n required: false,\n allowedValues: ['true', 'false', 'undefined'],\n description: 'Indicates whether the element is expanded or collapsed'\n },\n 'pressed': {\n name: 'pressed',\n value: '',\n type: 'boolean',\n required: false,\n allowedValues: ['true', 'false', 'mixed', 'undefined'],\n description: 'Indicates the current pressed state of toggle buttons'\n },\n 'haspopup': {\n name: 'haspopup',\n value: '',\n type: 'boolean',\n required: false,\n allowedValues: ['true', 'false', 'menu', 'listbox', 'tree', 'grid', 'dialog'],\n description: 'Indicates that the element has a popup context menu or sub-level menu'\n }\n };\n\n for (const [name, attribute] of Object.entries(commonAttributes)) {\n this.attributes.set(name, attribute);\n }\n }\n}\n"]}