@@ -3,53 +3,54 @@ import parse, {
33 domToReact ,
44 htmlToDOM
55} from 'html-react-parser' ;
6+ import { Element } from 'domhandler' ;
67import * as React from 'react' ;
78
89// $ExpectError
910parse ( ) ;
1011
11- // $ExpectType Element | Element[]
12+ // $ExpectType string | Element | Element[]
1213parse ( '' ) ;
1314
14- // $ExpectType Element | Element[]
15+ // $ExpectType string | Element | Element[]
1516parse ( 'string' ) ;
1617
17- // $ExpectType Element | Element[]
18+ // $ExpectType string | Element | Element[]
1819parse ( '<p>text</p>' ) ;
1920
20- // $ExpectType Element | Element[]
21+ // $ExpectType string | Element | Element[]
2122parse ( '<li>1</li><li>2</li>' ) ;
2223
23- // $ExpectType Element | Element[]
24+ // $ExpectType string | Element | Element[]
2425parse ( '<br id="replace">' , {
2526 replace : domNode => {
26- if ( domNode . attribs && domNode . attribs . id === 'replace' ) {
27+ if ( domNode instanceof Element && domNode . attribs . id === 'replace' ) {
2728 return < span > replaced</ span > ;
2829 }
2930 }
3031} ) ;
3132
32- // $ExpectType Element | Element[]
33+ // $ExpectType string | Element | Element[]
3334parse ( '<br id="remove">' , {
34- replace ( { attribs } ) {
35- return attribs && attribs . id === 'remove' && < > </ > ;
35+ replace : domNode => {
36+ if ( domNode instanceof Element && domNode . attribs . id === 'remove' ) {
37+ return < > </ > ;
38+ }
3639 }
3740} ) ;
3841
39- let options : HTMLReactParserOptions ;
40-
41- options = {
42- replace : node => {
43- if ( node . attribs && node . attribs . id === 'header' ) {
42+ const options : HTMLReactParserOptions = {
43+ replace : domNode => {
44+ if ( domNode instanceof Element && domNode . attribs . id === 'header' ) {
4445 return ;
4546 }
4647 }
4748} ;
4849
49- // $ExpectType Element | Element[]
50+ // $ExpectType string | Element | Element[]
5051parse ( '<a id="header" href="#">Heading</a>' , options ) ;
5152
52- // $ExpectType Element | Element[]
53+ // $ExpectType string | Element | Element[]
5354parse ( '<hr>' , {
5455 library : {
5556 cloneElement : ( element , props , children ) =>
@@ -60,7 +61,7 @@ parse('<hr>', {
6061 }
6162} ) ;
6263
63- // $ExpectType Element | Element[]
64+ // $ExpectType string | Element | Element[]
6465parse ( '<p/><p/>' , {
6566 htmlparser2 : {
6667 xmlMode : true ,
@@ -72,11 +73,11 @@ parse('<p/><p/>', {
7273 }
7374} ) ;
7475
75- // $ExpectType Element | Element[]
76+ // $ExpectType string | Element | Element[]
7677parse ( '\t<p>text \r</p>\n' , { trim : true } ) ;
7778
78- // $ExpectType DomElement []
79+ // $ExpectType DOMNode []
7980const domNodes = htmlToDOM ( '<div>text</div>' ) ;
8081
81- // $ExpectType Element | Element[]
82+ // $ExpectType string | Element | Element[]
8283domToReact ( domNodes ) ;
0 commit comments