1
- 'use strict'
2
-
3
- var has = require ( 'hast-util-has-property' )
4
-
5
- module . exports = interactive
1
+ import { hasProperty } from 'hast-util-has-property'
6
2
7
3
// Always interactive nodes.
8
- var alwaysInteractive = [
4
+ var alwaysInteractive = new Set ( [
9
5
'button' ,
10
6
'details' ,
11
7
'embed' ,
@@ -14,9 +10,9 @@ var alwaysInteractive = [
14
10
'label' ,
15
11
'select' ,
16
12
'textarea'
17
- ]
13
+ ] )
18
14
19
- function interactive ( node ) {
15
+ export function interactive ( node ) {
20
16
var name
21
17
22
18
if ( ! node || typeof node !== 'object' || node . type !== 'element' ) {
@@ -26,13 +22,13 @@ function interactive(node) {
26
22
name = node . tagName
27
23
28
24
return (
29
- ( name === 'a' && has ( node , 'href' ) ) ||
30
- ( name === 'audio' && has ( node , 'controls' ) ) ||
31
- ( name === 'video' && has ( node , 'controls' ) ) ||
32
- ( name === 'object' && has ( node , 'useMap' ) ) ||
33
- ( name === 'img' && has ( node , 'useMap' ) ) ||
25
+ ( name === 'a' && hasProperty ( node , 'href' ) ) ||
26
+ ( name === 'audio' && hasProperty ( node , 'controls' ) ) ||
27
+ ( name === 'video' && hasProperty ( node , 'controls' ) ) ||
28
+ ( name === 'object' && hasProperty ( node , 'useMap' ) ) ||
29
+ ( name === 'img' && hasProperty ( node , 'useMap' ) ) ||
34
30
( name === 'input' && ( node . properties || { } ) . type !== 'hidden' ) ||
35
- has ( node , 'tabIndex' ) ||
36
- alwaysInteractive . indexOf ( name ) !== - 1
31
+ hasProperty ( node , 'tabIndex' ) ||
32
+ alwaysInteractive . has ( name )
37
33
)
38
34
}
0 commit comments