|  |  |  | @ -756,7 +756,8 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 				name === 'aria-activedescendant' && | 
			
		
	
		
			
				
					|  |  |  |  | 				!is_dynamic_element && | 
			
		
	
		
			
				
					|  |  |  |  | 				!is_interactive_element(node.name, attribute_map) && | 
			
		
	
		
			
				
					|  |  |  |  | 				!attribute_map.has('tabindex') | 
			
		
	
		
			
				
					|  |  |  |  | 				!attribute_map.has('tabindex') && | 
			
		
	
		
			
				
					|  |  |  |  | 				!has_spread | 
			
		
	
		
			
				
					|  |  |  |  | 			) { | 
			
		
	
		
			
				
					|  |  |  |  | 				w.a11y_aria_activedescendant_has_tabindex(attribute); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
	
		
			
				
					|  |  |  | @ -810,9 +811,9 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 						const role = roles_map.get(current_role); | 
			
		
	
		
			
				
					|  |  |  |  | 						if (role) { | 
			
		
	
		
			
				
					|  |  |  |  | 							const required_role_props = Object.keys(role.requiredProps); | 
			
		
	
		
			
				
					|  |  |  |  | 							const has_missing_props = required_role_props.some( | 
			
		
	
		
			
				
					|  |  |  |  | 								(prop) => !attributes.find((a) => a.name === prop) | 
			
		
	
		
			
				
					|  |  |  |  | 							); | 
			
		
	
		
			
				
					|  |  |  |  | 							const has_missing_props = | 
			
		
	
		
			
				
					|  |  |  |  | 								!has_spread && | 
			
		
	
		
			
				
					|  |  |  |  | 								required_role_props.some((prop) => !attributes.find((a) => a.name === prop)); | 
			
		
	
		
			
				
					|  |  |  |  | 							if (has_missing_props) { | 
			
		
	
		
			
				
					|  |  |  |  | 								w.a11y_role_has_required_aria_props( | 
			
		
	
		
			
				
					|  |  |  |  | 									attribute, | 
			
		
	
	
		
			
				
					|  |  |  | @ -828,6 +829,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 					// interactive-supports-focus
 | 
			
		
	
		
			
				
					|  |  |  |  | 					if ( | 
			
		
	
		
			
				
					|  |  |  |  | 						!has_spread && | 
			
		
	
		
			
				
					|  |  |  |  | 						!has_disabled_attribute(attribute_map) && | 
			
		
	
		
			
				
					|  |  |  |  | 						!is_hidden_from_screen_reader(node.name, attribute_map) && | 
			
		
	
		
			
				
					|  |  |  |  | 						!is_presentation_role(current_role) && | 
			
		
	
	
		
			
				
					|  |  |  | @ -845,6 +847,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 					// no-interactive-element-to-noninteractive-role
 | 
			
		
	
		
			
				
					|  |  |  |  | 					if ( | 
			
		
	
		
			
				
					|  |  |  |  | 						!has_spread && | 
			
		
	
		
			
				
					|  |  |  |  | 						is_interactive_element(node.name, attribute_map) && | 
			
		
	
		
			
				
					|  |  |  |  | 						(is_non_interactive_roles(current_role) || is_presentation_role(current_role)) | 
			
		
	
		
			
				
					|  |  |  |  | 					) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -853,6 +856,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 					// no-noninteractive-element-to-interactive-role
 | 
			
		
	
		
			
				
					|  |  |  |  | 					if ( | 
			
		
	
		
			
				
					|  |  |  |  | 						!has_spread && | 
			
		
	
		
			
				
					|  |  |  |  | 						is_non_interactive_element(node.name, attribute_map) && | 
			
		
	
		
			
				
					|  |  |  |  | 						is_interactive_roles(current_role) && | 
			
		
	
		
			
				
					|  |  |  |  | 						!a11y_non_interactive_element_to_interactive_role_exceptions[node.name]?.includes( | 
			
		
	
	
		
			
				
					|  |  |  | @ -947,6 +951,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	// no-noninteractive-element-interactions
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if ( | 
			
		
	
		
			
				
					|  |  |  |  | 		!has_spread && | 
			
		
	
		
			
				
					|  |  |  |  | 		!has_contenteditable_attr && | 
			
		
	
		
			
				
					|  |  |  |  | 		!is_hidden_from_screen_reader(node.name, attribute_map) && | 
			
		
	
		
			
				
					|  |  |  |  | 		!is_presentation_role(role_static_value) && | 
			
		
	
	
		
			
				
					|  |  |  | @ -964,6 +969,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	// no-static-element-interactions
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if ( | 
			
		
	
		
			
				
					|  |  |  |  | 		!has_spread && | 
			
		
	
		
			
				
					|  |  |  |  | 		(!role || role_static_value !== null) && | 
			
		
	
		
			
				
					|  |  |  |  | 		!is_hidden_from_screen_reader(node.name, attribute_map) && | 
			
		
	
		
			
				
					|  |  |  |  | 		!is_presentation_role(role_static_value) && | 
			
		
	
	
		
			
				
					|  |  |  | @ -981,11 +987,11 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (handlers.has('mouseover') && !handlers.has('focus')) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (!has_spread && handlers.has('mouseover') && !handlers.has('focus')) { | 
			
		
	
		
			
				
					|  |  |  |  | 		w.a11y_mouse_events_have_key_events(node, 'mouseover', 'focus'); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if (handlers.has('mouseout') && !handlers.has('blur')) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (!has_spread && handlers.has('mouseout') && !handlers.has('blur')) { | 
			
		
	
		
			
				
					|  |  |  |  | 		w.a11y_mouse_events_have_key_events(node, 'mouseout', 'blur'); | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -995,7 +1001,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (node.name === 'a' || node.name === 'button') { | 
			
		
	
		
			
				
					|  |  |  |  | 		const is_hidden = get_static_value(attribute_map.get('aria-hidden')) === 'true'; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 		if (!is_hidden && !is_labelled && !has_content(node)) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (!has_spread && !is_hidden && !is_labelled && !has_content(node)) { | 
			
		
	
		
			
				
					|  |  |  |  | 			w.a11y_consider_explicit_label(node); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
	
		
			
				
					|  |  |  | @ -1054,7 +1060,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (node.name === 'img') { | 
			
		
	
		
			
				
					|  |  |  |  | 		const alt_attribute = get_static_text_value(attribute_map.get('alt')); | 
			
		
	
		
			
				
					|  |  |  |  | 		const aria_hidden = get_static_value(attribute_map.get('aria-hidden')); | 
			
		
	
		
			
				
					|  |  |  |  | 		if (alt_attribute && !aria_hidden) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (alt_attribute && !aria_hidden && !has_spread) { | 
			
		
	
		
			
				
					|  |  |  |  | 			if (/\b(image|picture|photo)\b/i.test(alt_attribute)) { | 
			
		
	
		
			
				
					|  |  |  |  | 				w.a11y_img_redundant_alt(node); | 
			
		
	
		
			
				
					|  |  |  |  | 			} | 
			
		
	
	
		
			
				
					|  |  |  | @ -1087,7 +1093,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 			); | 
			
		
	
		
			
				
					|  |  |  |  | 			return has; | 
			
		
	
		
			
				
					|  |  |  |  | 		}; | 
			
		
	
		
			
				
					|  |  |  |  | 		if (!attribute_map.has('for') && !has_input_child(node)) { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (!has_spread && !attribute_map.has('for') && !has_input_child(node)) { | 
			
		
	
		
			
				
					|  |  |  |  | 			w.a11y_label_has_associated_control(node); | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 	} | 
			
		
	
	
		
			
				
					|  |  |  | @ -1095,7 +1101,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 	if (node.name === 'video') { | 
			
		
	
		
			
				
					|  |  |  |  | 		const aria_hidden_attribute = attribute_map.get('aria-hidden'); | 
			
		
	
		
			
				
					|  |  |  |  | 		const aria_hidden_exist = aria_hidden_attribute && get_static_value(aria_hidden_attribute); | 
			
		
	
		
			
				
					|  |  |  |  | 		if (attribute_map.has('muted') || aria_hidden_exist === 'true') { | 
			
		
	
		
			
				
					|  |  |  |  | 		if (attribute_map.has('muted') || aria_hidden_exist === 'true' || has_spread) { | 
			
		
	
		
			
				
					|  |  |  |  | 			return; | 
			
		
	
		
			
				
					|  |  |  |  | 		} | 
			
		
	
		
			
				
					|  |  |  |  | 		let has_caption = false; | 
			
		
	
	
		
			
				
					|  |  |  | @ -1141,6 +1147,7 @@ export function check_element(node, context) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 	// Check content
 | 
			
		
	
		
			
				
					|  |  |  |  | 	if ( | 
			
		
	
		
			
				
					|  |  |  |  | 		!has_spread && | 
			
		
	
		
			
				
					|  |  |  |  | 		!is_labelled && | 
			
		
	
		
			
				
					|  |  |  |  | 		!has_contenteditable_binding && | 
			
		
	
		
			
				
					|  |  |  |  | 		a11y_required_content.includes(node.name) && | 
			
		
	
	
		
			
				
					|  |  |  | 
 |