html-react-parser 5.2.14 → 5.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/html-react-parser.js +42 -22
- package/dist/html-react-parser.js.map +1 -1
- package/dist/html-react-parser.min.js +1 -1
- package/dist/html-react-parser.min.js.map +1 -1
- package/esm/utilities.d.mts +1 -1
- package/lib/attributes-to-props.d.ts.map +1 -1
- package/lib/attributes-to-props.js +1 -1
- package/lib/attributes-to-props.js.map +1 -1
- package/lib/dom-to-react.d.ts.map +1 -1
- package/lib/dom-to-react.js +9 -5
- package/lib/dom-to-react.js.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/utilities.d.ts +1 -1
- package/lib/utilities.d.ts.map +1 -1
- package/lib/utilities.js +1 -1
- package/lib/utilities.js.map +1 -1
- package/package.json +24 -13
- package/src/attributes-to-props.ts +5 -3
- package/src/dom-to-react.ts +20 -9
- package/src/index.ts +1 -1
- package/src/types.ts +2 -0
- package/src/utilities.ts +1 -1
package/esm/utilities.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '../lib/utilities';
|
|
1
|
+
export * from '../lib/utilities.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes-to-props.d.ts","sourceRoot":"","sources":["../src/attributes-to-props.ts"],"names":[],"mappings":"AAoBA,QAAA,MAAM,eAAe;;;CAGX,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,eAAe,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IAC1D,uBAAuB,CAAC,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,UAAU,GAAE,UAAe,EAC3B,QAAQ,CAAC,EAAE,MAAM,GAChB,KAAK,
|
|
1
|
+
{"version":3,"file":"attributes-to-props.d.ts","sourceRoot":"","sources":["../src/attributes-to-props.ts"],"names":[],"mappings":"AAoBA,QAAA,MAAM,eAAe;;;CAGX,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,eAAe,CAAC;AAE/D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAErD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IAC1D,uBAAuB,CAAC,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,UAAU,GAAE,UAAe,EAC3B,QAAQ,CAAC,EAAE,MAAM,GAChB,KAAK,CA+DP"}
|
|
@@ -41,7 +41,7 @@ function attributesToProps(attributes, nodeName) {
|
|
|
41
41
|
propName = getPropName('default' + attributeNameLowerCased);
|
|
42
42
|
}
|
|
43
43
|
props[propName] = attributeValue;
|
|
44
|
-
switch (propertyInfo
|
|
44
|
+
switch (propertyInfo === null || propertyInfo === void 0 ? void 0 : propertyInfo.type) {
|
|
45
45
|
case react_property_1.BOOLEAN:
|
|
46
46
|
props[propName] = true;
|
|
47
47
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attributes-to-props.js","sourceRoot":"","sources":["../src/attributes-to-props.ts"],"names":[],"mappings":";;AA4CA,
|
|
1
|
+
{"version":3,"file":"attributes-to-props.js","sourceRoot":"","sources":["../src/attributes-to-props.ts"],"names":[],"mappings":";;AA4CA,oCAkEC;AA9GD,iDAMwB;AAExB,yCAAuE;AAEvE,kGAAkG;AAClG,yDAAyD;AACzD,IAAM,iCAAiC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAU,CAAC;AACxE,IAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAO9E,IAAM,eAAe,GAAG;IACtB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;CACJ,CAAC;AAcX;;;;;;GAMG;AACH,SAAwB,iBAAiB,CACvC,UAA2B,EAC3B,QAAiB;IADjB,2BAAA,EAAA,eAA2B;IAG3B,IAAM,KAAK,GAAU,EAAE,CAAC;IAExB,IAAM,gBAAgB,GAAG,OAAO,CAC9B,UAAU,CAAC,IAAI,IAAI,eAAe,CAAC,UAAU,CAAC,IAA2B,CAAC,CAC3E,CAAC;IAEF,KAAK,IAAM,aAAa,IAAI,UAAU,EAAE,CAAC;QACvC,IAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QAEjD,kDAAkD;QAClD,IAAI,IAAA,kCAAiB,EAAC,aAAa,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC;YACtC,SAAS;QACX,CAAC;QAED,2CAA2C;QAC3C,IAAM,uBAAuB,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QAC5D,IAAI,QAAQ,GAAG,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAEpD,IAAI,QAAQ,EAAE,CAAC;YACb,IAAM,YAAY,GAAG,IAAA,gCAAe,EAAC,QAAQ,CAEhC,CAAC;YAEd,qFAAqF;YACrF,IACE,iCAAiC,CAAC,QAAQ,CACxC,QAA2C,CAC5C;gBACD,4BAA4B,CAAC,QAAQ,CACnC,QAAsC,CACvC;gBACD,CAAC,gBAAgB,EACjB,CAAC;gBACD,QAAQ,GAAG,WAAW,CAAC,SAAS,GAAG,uBAAuB,CAAC,CAAC;YAC9D,CAAC;YAED,KAAK,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC;YAEjC,QAAQ,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,IAAI,EAAE,CAAC;gBAC3B,KAAK,wBAAO;oBACV,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBACvB,MAAM;gBACR,KAAK,mCAAkB;oBACrB,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;wBAC1B,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;oBACzB,CAAC;oBACD,MAAM;YACV,CAAC;YACD,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,IAAI,sCAA0B,EAAE,CAAC;YAC/B,KAAK,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC;QACxC,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAA,wBAAY,EAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,aAAqB;IACxC,OAAO,sCAAqB,CAAC,aAAa,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-to-react.d.ts","sourceRoot":"","sources":["../src/dom-to-react.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dom-to-react.d.ts","sourceRoot":"","sources":["../src/dom-to-react.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAetD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,GAAE,sBAA2B,GACnC,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAqHtC"}
|
package/lib/dom-to-react.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */
|
|
2
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
5
|
};
|
|
@@ -20,23 +21,24 @@ var React = {
|
|
|
20
21
|
* @returns - String or JSX element(s).
|
|
21
22
|
*/
|
|
22
23
|
function domToReact(nodes, options) {
|
|
24
|
+
var _a, _b, _c, _d, _e;
|
|
23
25
|
if (options === void 0) { options = {}; }
|
|
24
26
|
var reactElements = [];
|
|
25
27
|
var hasReplace = typeof options.replace === 'function';
|
|
26
|
-
var transform = options.transform
|
|
27
|
-
var
|
|
28
|
+
var transform = (_a = options.transform) !== null && _a !== void 0 ? _a : utilities_1.returnFirstArg;
|
|
29
|
+
var _f = (_b = options.library) !== null && _b !== void 0 ? _b : React, cloneElement = _f.cloneElement, createElement = _f.createElement, isValidElement = _f.isValidElement;
|
|
28
30
|
var nodesLength = nodes.length;
|
|
29
31
|
for (var index = 0; index < nodesLength; index++) {
|
|
30
32
|
var node = nodes[index];
|
|
31
33
|
// replace with custom React element (if present)
|
|
32
34
|
if (hasReplace) {
|
|
33
|
-
var replaceElement = options.replace(node, index);
|
|
35
|
+
var replaceElement = (_c = options.replace) === null || _c === void 0 ? void 0 : _c.call(options, node, index);
|
|
34
36
|
if (isValidElement(replaceElement)) {
|
|
35
37
|
// set "key" prop for sibling elements
|
|
36
38
|
// https://react.dev/learn/rendering-lists#rules-of-keys
|
|
37
39
|
if (nodesLength > 1) {
|
|
38
40
|
replaceElement = cloneElement(replaceElement, {
|
|
39
|
-
key: replaceElement.key
|
|
41
|
+
key: (_d = replaceElement.key) !== null && _d !== void 0 ? _d : index,
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
44
|
reactElements.push(transform(replaceElement, node, index));
|
|
@@ -67,6 +69,7 @@ function domToReact(nodes, options) {
|
|
|
67
69
|
if (skipAttributesToProps(element)) {
|
|
68
70
|
(0, utilities_1.setStyleProp)(element.attribs.style, element.attribs);
|
|
69
71
|
props = element.attribs;
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
70
73
|
}
|
|
71
74
|
else if (element.attribs) {
|
|
72
75
|
props = (0, attributes_to_props_1.default)(element.attribs, element.name);
|
|
@@ -88,8 +91,9 @@ function domToReact(nodes, options) {
|
|
|
88
91
|
// https://react.dev/reference/react-dom/components/textarea#caveats
|
|
89
92
|
if (node.name === 'textarea' && node.children[0]) {
|
|
90
93
|
props.defaultValue = node.children[0].data;
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
91
95
|
}
|
|
92
|
-
else if (node.children
|
|
96
|
+
else if ((_e = node.children) === null || _e === void 0 ? void 0 : _e.length) {
|
|
93
97
|
// continue recursion of creating React elements (if applicable)
|
|
94
98
|
children = domToReact(node.children, options);
|
|
95
99
|
}
|
package/lib/dom-to-react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-to-react.js","sourceRoot":"","sources":["../src/dom-to-react.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"dom-to-react.js","sourceRoot":"","sources":["../src/dom-to-react.ts"],"names":[],"mappings":";AAAA,iEAAiE;;;;;AA8BjE,6BAwHC;AAlJD,+BAAoE;AAGpE,8EAAsD;AAEtD,yCAMqB;AAErB,IAAM,KAAK,GAAG;IACZ,YAAY,sBAAA;IACZ,aAAa,uBAAA;IACb,cAAc,wBAAA;CACN,CAAC;AAEX;;;;;;GAMG;AACH,SAAwB,UAAU,CAChC,KAAgB,EAChB,OAAoC;;IAApC,wBAAA,EAAA,YAAoC;IAEpC,IAAM,aAAa,GAAkB,EAAE,CAAC;IAExC,IAAM,UAAU,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,CAAC;IACzD,IAAM,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,0BAAc,CAAC;IAChD,IAAA,KACJ,MAAA,OAAO,CAAC,OAAO,mCAAI,KAAK,EADlB,YAAY,kBAAA,EAAE,aAAa,mBAAA,EAAE,cAAc,oBACzB,CAAC;IAE3B,IAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IAEjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1B,iDAAiD;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,cAAc,GAAG,MAAA,OAAO,CAAC,OAAO,wDAAG,IAAI,EAAE,KAAK,CAAgB,CAAC;YAEnE,IAAI,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnC,sCAAsC;gBACtC,wDAAwD;gBACxD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE;wBAC5C,GAAG,EAAE,MAAA,cAAc,CAAC,GAAG,mCAAI,KAAK;qBACjC,CAAC,CAAC;gBACL,CAAC;gBAED,aAAa,CAAC,IAAI,CAChB,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAgB,CACtD,CAAC;gBAEF,SAAS;YACX,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,IAAM,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;YAE9C,+DAA+D;YAC/D,aAAa;YACb,IACE,YAAY;gBACZ,IAAI,CAAC,MAAM;gBACX,CAAC,IAAA,gCAAoB,EAAC,IAAI,CAAC,MAAiB,CAAC,EAC7C,CAAC;gBACD,SAAS;YACX,CAAC;YAED,gDAAgD;YAChD,aAAa;YACb,IAAI,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YAED,iEAAiE;YACjE,yCAAyC;YACzC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAgB,CAAC,CAAC;YACrE,SAAS;QACX,CAAC;QAED,IAAM,OAAO,GAAG,IAAe,CAAC;QAChC,IAAI,KAAK,GAAU,EAAE,CAAC;QAEtB,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,IAAA,wBAAY,EAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACrD,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;YACxB,uEAAuE;QACzE,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3B,KAAK,GAAG,IAAA,6BAAiB,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,QAAQ,SAA2C,CAAC;QAExD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO;gBACV,yDAAyD;gBACzD,6FAA6F;gBAC7F,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrB,KAAK,CAAC,uBAAuB,GAAG;wBAC9B,MAAM,EAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAU,CAAC,IAAI;qBACxC,CAAC;gBACJ,CAAC;gBACD,MAAM;YAER,KAAK,KAAK;gBACR,gEAAgE;gBAChE,oEAAoE;gBACpE,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjD,KAAK,CAAC,YAAY,GAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAU,CAAC,IAAI,CAAC;oBACrD,uEAAuE;gBACzE,CAAC;qBAAM,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,EAAE,CAAC;oBACjC,gEAAgE;oBAChE,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAkB,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM;YAER,uCAAuC;YACvC;gBACE,SAAS;QACb,CAAC;QAED,sCAAsC;QACtC,wDAAwD;QACxD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,aAAa,CAAC,IAAI,CAChB,SAAS,CACP,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,EACzC,IAAI,EACJ,KAAK,CACS,CACjB,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;AACvE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,IAAa;IAC1C,OAAO,CACL,sCAA0B;QAC1B,IAAI,CAAC,IAAI,KAAK,KAAK;QACnB,IAAA,6BAAiB,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAC3C,CAAC;AACJ,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -25,12 +25,13 @@ var domParserOptions = { lowerCaseAttributeNames: false };
|
|
|
25
25
|
* @returns - React element(s), empty array, or string.
|
|
26
26
|
*/
|
|
27
27
|
function HTMLReactParser(html, options) {
|
|
28
|
+
var _a;
|
|
28
29
|
if (typeof html !== 'string') {
|
|
29
30
|
throw new TypeError('First argument must be a string');
|
|
30
31
|
}
|
|
31
32
|
if (!html) {
|
|
32
33
|
return [];
|
|
33
34
|
}
|
|
34
|
-
return (0, dom_to_react_1.default)((0, html_dom_parser_1.default)(html, (options === null || options === void 0 ? void 0 : options.htmlparser2)
|
|
35
|
+
return (0, dom_to_react_1.default)((0, html_dom_parser_1.default)(html, (_a = options === null || options === void 0 ? void 0 : options.htmlparser2) !== null && _a !== void 0 ? _a : domParserOptions), options);
|
|
35
36
|
}
|
|
36
37
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAqBA,kCAgBC;AArCD,oEAAwC;AAUA,oBAVjC,yBAAS,CAUiC;AARjD,8EAAsD;AAQ7C,4BARF,6BAAiB,CAQE;AAP1B,gEAAwC;AAOZ,qBAPrB,sBAAU,CAOqB;AAJtC,yCAA2E;AAAlE,qGAAA,OAAO,OAAA;AAAE,qGAAA,OAAO,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAAE,kGAAA,IAAI,OAAA;AAMtD,IAAM,gBAAgB,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAW,CAAC;AAErE;;;;;;GAMG;AACH,SAAwB,eAAe,CACrC,IAAY,EACZ,OAAgC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAqBA,kCAgBC;AArCD,oEAAwC;AAUA,oBAVjC,yBAAS,CAUiC;AARjD,8EAAsD;AAQ7C,4BARF,6BAAiB,CAQE;AAP1B,gEAAwC;AAOZ,qBAPrB,sBAAU,CAOqB;AAJtC,yCAA2E;AAAlE,qGAAA,OAAO,OAAA;AAAE,qGAAA,OAAO,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAAE,kGAAA,IAAI,OAAA;AAMtD,IAAM,gBAAgB,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAW,CAAC;AAErE;;;;;;GAMG;AACH,SAAwB,eAAe,CACrC,IAAY,EACZ,OAAgC;;IAEhC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,IAAA,sBAAU,EACf,IAAA,yBAAS,EAAC,IAAI,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,gBAAgB,CAAC,EACzD,OAAO,CACR,CAAC;AACJ,CAAC"}
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC;IAEhD,OAAO,CAAC,EAAE;QAER,YAAY,EAAE,CACZ,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,GAAG,QAAQ,EAAE,GAAG,EAAE,KACf,GAAG,CAAC,OAAO,CAAC;QAEjB,aAAa,EAAE,CACb,IAAI,EAAE,GAAG,EACT,KAAK,CAAC,EAAE,MAAM,EACd,GAAG,QAAQ,EAAE,GAAG,EAAE,KACf,GAAG,CAAC,OAAO,CAAC;QAEjB,cAAc,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC;QAE1C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAEpB,CAAC;IAEF,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC;IAEhD,OAAO,CAAC,EAAE;QAER,YAAY,EAAE,CACZ,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,GAAG,QAAQ,EAAE,GAAG,EAAE,KACf,GAAG,CAAC,OAAO,CAAC;QAEjB,aAAa,EAAE,CACb,IAAI,EAAE,GAAG,EACT,KAAK,CAAC,EAAE,MAAM,EACd,GAAG,QAAQ,EAAE,GAAG,EAAE,KACf,GAAG,CAAC,OAAO,CAAC;QAEjB,cAAc,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC;QAE1C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KAEpB,CAAC;IAEF,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,KAEV,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IAE3D,SAAS,CAAC,EAAE,CACV,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,KAEV,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAExC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB"}
|
package/lib/utilities.d.ts
CHANGED
|
@@ -38,5 +38,5 @@ export declare const canTextBeChildOfNode: (node: Element) => boolean;
|
|
|
38
38
|
* @param arg - The argument to be returned.
|
|
39
39
|
* @returns - The input argument `arg`.
|
|
40
40
|
*/
|
|
41
|
-
export declare const returnFirstArg: (arg:
|
|
41
|
+
export declare const returnFirstArg: <T>(arg: T) => T;
|
|
42
42
|
//# sourceMappingURL=utilities.d.ts.map
|
package/lib/utilities.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAgBnD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAClC,OAAO,CAcT;AAMD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAgB9D;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,SAAsC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,8BAA8B,+FAUhC,CAAC;AAKZ;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,OAAO,YAC4B,CAAC;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAgBnD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAClC,OAAO,CAcT;AAMD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAgB9D;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,SAAsC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,8BAA8B,+FAUhC,CAAC;AAKZ;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,OAAO,YAC4B,CAAC;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,KAAK,CAAC,KAAG,CAAQ,CAAC"}
|
package/lib/utilities.js
CHANGED
|
@@ -99,6 +99,6 @@ exports.canTextBeChildOfNode = canTextBeChildOfNode;
|
|
|
99
99
|
* @param arg - The argument to be returned.
|
|
100
100
|
* @returns - The input argument `arg`.
|
|
101
101
|
*/
|
|
102
|
-
var returnFirstArg = function (arg) { return arg; };
|
|
102
|
+
var returnFirstArg = function (arg) { return arg; };
|
|
103
103
|
exports.returnFirstArg = returnFirstArg;
|
|
104
104
|
//# sourceMappingURL=utilities.js.map
|
package/lib/utilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":";;;;;;AA6BA,8CAiBC;AAYD,oCAgBC;AAzED,+BAAgC;AAChC,4DAAoC;AAIpC,IAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;CACP,CAAC,CAAC;AAKZ;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAC/B,OAAe,EACf,KAAmC;IAEnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,8CAA8C;IAC9C,4EAA4E;IAC5E,iFAAiF;IACjF,iFAAiF;IACjF,IAAI,4BAA4B,CAAC,GAAG,CAAC,OAAoC,CAAC,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAM,YAAY,GAAG;IACnB,WAAW,EAAE,IAAI;CACT,CAAC;AAEX;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAa,EAAE,KAAY;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,KAAK,CAAC,KAAK,GAAG,IAAA,qBAAS,EAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC7C,6DAA6D;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,0BAA0B,GAAG,MAAM,CAAC,eAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAE9E;;GAEG;AACU,QAAA,8BAA8B,GAAG,IAAI,GAAG,CAAC;IACpD,IAAI;IACJ,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,OAAO;IACP,MAAM;IACN,MAAM;IACN,UAAU;CACF,CAAC,CAAC;AAKZ;;;;;GAKG;AACI,IAAM,oBAAoB,GAAG,UAAC,IAAa;IAChD,OAAA,CAAC,sCAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAkC,CAAC;AAA5E,CAA4E,CAAC;AADlE,QAAA,oBAAoB,wBAC8C;AAE/E;;;;;GAKG;AACI,IAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":";;;;;;AA6BA,8CAiBC;AAYD,oCAgBC;AAzED,+BAAgC;AAChC,4DAAoC;AAIpC,IAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;CACP,CAAC,CAAC;AAKZ;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAC/B,OAAe,EACf,KAAmC;IAEnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,8CAA8C;IAC9C,4EAA4E;IAC5E,iFAAiF;IACjF,iFAAiF;IACjF,IAAI,4BAA4B,CAAC,GAAG,CAAC,OAAoC,CAAC,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,IAAM,YAAY,GAAG;IACnB,WAAW,EAAE,IAAI;CACT,CAAC;AAEX;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAa,EAAE,KAAY;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,KAAK,CAAC,KAAK,GAAG,IAAA,qBAAS,EAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC7C,6DAA6D;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,0BAA0B,GAAG,MAAM,CAAC,eAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAE9E;;GAEG;AACU,QAAA,8BAA8B,GAAG,IAAI,GAAG,CAAC;IACpD,IAAI;IACJ,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,OAAO;IACP,MAAM;IACN,MAAM;IACN,UAAU;CACF,CAAC,CAAC;AAKZ;;;;;GAKG;AACI,IAAM,oBAAoB,GAAG,UAAC,IAAa;IAChD,OAAA,CAAC,sCAA8B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAkC,CAAC;AAA5E,CAA4E,CAAC;AADlE,QAAA,oBAAoB,wBAC8C;AAE/E;;;;;GAKG;AACI,IAAM,cAAc,GAAG,UAAI,GAAM,IAAQ,OAAA,GAAG,EAAH,CAAG,CAAC;AAAvC,QAAA,cAAc,kBAAyB"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "html-react-parser",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.16",
|
|
4
4
|
"description": "HTML to React parser.",
|
|
5
|
-
"author": "Mark <mark@remarkablemark.org> (https://
|
|
5
|
+
"author": "Mark <mark@remarkablemark.org> (https://remarkabl.org)",
|
|
6
|
+
"funding": [
|
|
7
|
+
{
|
|
8
|
+
"type": "github",
|
|
9
|
+
"url": "https://github.com/sponsors/remarkablemark"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"type": "opencollective",
|
|
13
|
+
"url": "https://opencollective.com/html-react-parser"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
6
16
|
"main": "./lib/index.js",
|
|
7
17
|
"module": "./esm/index.mjs",
|
|
8
18
|
"exports": {
|
|
@@ -16,7 +26,7 @@
|
|
|
16
26
|
}
|
|
17
27
|
},
|
|
18
28
|
"scripts": {
|
|
19
|
-
"benchmark": "ts-node benchmark",
|
|
29
|
+
"benchmark": "ts-node --project tsconfig.test.json benchmark",
|
|
20
30
|
"build": "npm run build:cjs && npm run build:umd",
|
|
21
31
|
"build:cjs": "tsc --project tsconfig.build.json",
|
|
22
32
|
"build:umd": "rollup --config --failAfterWarnings",
|
|
@@ -24,9 +34,9 @@
|
|
|
24
34
|
"lint": "eslint .",
|
|
25
35
|
"lint:fix": "npm run lint -- --fix",
|
|
26
36
|
"lint:package": "publint",
|
|
27
|
-
"lint:tsc": "tsc --
|
|
37
|
+
"lint:tsc": "tsc --project tsconfig.test.json",
|
|
28
38
|
"prepare": "husky",
|
|
29
|
-
"prepublishOnly": "npm run
|
|
39
|
+
"prepublishOnly": "npm run build && npm run lint && npm run lint:tsc && npm run lint:package && npm run test:ci",
|
|
30
40
|
"size-limit": "size-limit",
|
|
31
41
|
"test": "jest --testPathIgnorePatterns __tests__/integration",
|
|
32
42
|
"test:ci": "CI=true npm test -- --ci --colors",
|
|
@@ -50,14 +60,14 @@
|
|
|
50
60
|
],
|
|
51
61
|
"dependencies": {
|
|
52
62
|
"domhandler": "5.0.3",
|
|
53
|
-
"html-dom-parser": "5.1.
|
|
63
|
+
"html-dom-parser": "5.1.7",
|
|
54
64
|
"react-property": "2.0.2",
|
|
55
65
|
"style-to-js": "1.1.21"
|
|
56
66
|
},
|
|
57
67
|
"devDependencies": {
|
|
58
|
-
"@commitlint/cli": "20.
|
|
59
|
-
"@commitlint/config-conventional": "20.
|
|
60
|
-
"@eslint/compat": "2.0.
|
|
68
|
+
"@commitlint/cli": "20.4.1",
|
|
69
|
+
"@commitlint/config-conventional": "20.4.1",
|
|
70
|
+
"@eslint/compat": "2.0.2",
|
|
61
71
|
"@eslint/eslintrc": "3.3.3",
|
|
62
72
|
"@eslint/js": "9.39.2",
|
|
63
73
|
"@rollup/plugin-commonjs": "29.0.0",
|
|
@@ -67,24 +77,25 @@
|
|
|
67
77
|
"@size-limit/preset-big-lib": "12.0.0",
|
|
68
78
|
"@types/benchmark": "2.1.5",
|
|
69
79
|
"@types/jest": "30.0.0",
|
|
70
|
-
"@types/node": "25.0
|
|
80
|
+
"@types/node": "25.2.0",
|
|
71
81
|
"@types/react": "19.2.10",
|
|
72
82
|
"@types/react-dom": "19.2.3",
|
|
73
83
|
"benchmark": "2.1.4",
|
|
74
84
|
"eslint": "9.39.2",
|
|
75
85
|
"eslint-plugin-prettier": "5.5.5",
|
|
76
86
|
"eslint-plugin-simple-import-sort": "12.1.1",
|
|
77
|
-
"
|
|
87
|
+
"eslint-plugin-tsdoc": "0.5.0",
|
|
88
|
+
"globals": "17.3.0",
|
|
78
89
|
"husky": "9.1.7",
|
|
79
90
|
"jest": "30.2.0",
|
|
80
91
|
"jest-environment-jsdom": "30.2.0",
|
|
81
92
|
"jest-watch-typeahead": "3.0.1",
|
|
82
93
|
"lint-staged": "16.2.7",
|
|
83
|
-
"preact": "10.28.
|
|
94
|
+
"preact": "10.28.3",
|
|
84
95
|
"publint": "0.3.17",
|
|
85
96
|
"react": "19.2.4",
|
|
86
97
|
"react-dom": "19.2.4",
|
|
87
|
-
"rollup": "4.57.
|
|
98
|
+
"rollup": "4.57.1",
|
|
88
99
|
"size-limit": "12.0.0",
|
|
89
100
|
"ts-jest": "29.4.6",
|
|
90
101
|
"ts-node": "10.9.2",
|
|
@@ -66,7 +66,9 @@ export default function attributesToProps(
|
|
|
66
66
|
let propName = getPropName(attributeNameLowerCased);
|
|
67
67
|
|
|
68
68
|
if (propName) {
|
|
69
|
-
const propertyInfo = getPropertyInfo(propName)
|
|
69
|
+
const propertyInfo = getPropertyInfo(propName) as
|
|
70
|
+
| { type: number }
|
|
71
|
+
| undefined;
|
|
70
72
|
|
|
71
73
|
// convert attribute to uncontrolled component prop (e.g., `value` to `defaultValue`)
|
|
72
74
|
if (
|
|
@@ -74,7 +76,7 @@ export default function attributesToProps(
|
|
|
74
76
|
propName as UncontrolledComponentAttributes,
|
|
75
77
|
) &&
|
|
76
78
|
UNCONTROLLED_COMPONENT_NAMES.includes(
|
|
77
|
-
nodeName
|
|
79
|
+
nodeName as UncontrolledComponentNames,
|
|
78
80
|
) &&
|
|
79
81
|
!isInputValueOnly
|
|
80
82
|
) {
|
|
@@ -83,7 +85,7 @@ export default function attributesToProps(
|
|
|
83
85
|
|
|
84
86
|
props[propName] = attributeValue;
|
|
85
87
|
|
|
86
|
-
switch (propertyInfo
|
|
88
|
+
switch (propertyInfo?.type) {
|
|
87
89
|
case BOOLEAN:
|
|
88
90
|
props[propName] = true;
|
|
89
91
|
break;
|
package/src/dom-to-react.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-enum-comparison */
|
|
2
|
+
|
|
1
3
|
import type { DOMNode, Element, Text } from 'html-dom-parser';
|
|
2
4
|
import type { JSX } from 'react';
|
|
3
5
|
import { cloneElement, createElement, isValidElement } from 'react';
|
|
@@ -30,12 +32,12 @@ export default function domToReact(
|
|
|
30
32
|
nodes: DOMNode[],
|
|
31
33
|
options: HTMLReactParserOptions = {},
|
|
32
34
|
): string | JSX.Element | JSX.Element[] {
|
|
33
|
-
const reactElements = [];
|
|
35
|
+
const reactElements: JSX.Element[] = [];
|
|
34
36
|
|
|
35
37
|
const hasReplace = typeof options.replace === 'function';
|
|
36
|
-
const transform = options.transform
|
|
38
|
+
const transform = options.transform ?? returnFirstArg;
|
|
37
39
|
const { cloneElement, createElement, isValidElement } =
|
|
38
|
-
options.library
|
|
40
|
+
options.library ?? React;
|
|
39
41
|
|
|
40
42
|
const nodesLength = nodes.length;
|
|
41
43
|
|
|
@@ -44,18 +46,21 @@ export default function domToReact(
|
|
|
44
46
|
|
|
45
47
|
// replace with custom React element (if present)
|
|
46
48
|
if (hasReplace) {
|
|
47
|
-
let replaceElement = options.replace
|
|
49
|
+
let replaceElement = options.replace?.(node, index) as JSX.Element;
|
|
48
50
|
|
|
49
51
|
if (isValidElement(replaceElement)) {
|
|
50
52
|
// set "key" prop for sibling elements
|
|
51
53
|
// https://react.dev/learn/rendering-lists#rules-of-keys
|
|
52
54
|
if (nodesLength > 1) {
|
|
53
55
|
replaceElement = cloneElement(replaceElement, {
|
|
54
|
-
key: replaceElement.key
|
|
56
|
+
key: replaceElement.key ?? index,
|
|
55
57
|
});
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
reactElements.push(
|
|
60
|
+
reactElements.push(
|
|
61
|
+
transform(replaceElement, node, index) as JSX.Element,
|
|
62
|
+
);
|
|
63
|
+
|
|
59
64
|
continue;
|
|
60
65
|
}
|
|
61
66
|
}
|
|
@@ -81,7 +86,7 @@ export default function domToReact(
|
|
|
81
86
|
|
|
82
87
|
// We have a text node that's not whitespace and it can be nested
|
|
83
88
|
// in its parent so add it to the results
|
|
84
|
-
reactElements.push(transform(node.data, node, index));
|
|
89
|
+
reactElements.push(transform(node.data, node, index) as JSX.Element);
|
|
85
90
|
continue;
|
|
86
91
|
}
|
|
87
92
|
|
|
@@ -91,6 +96,7 @@ export default function domToReact(
|
|
|
91
96
|
if (skipAttributesToProps(element)) {
|
|
92
97
|
setStyleProp(element.attribs.style, element.attribs);
|
|
93
98
|
props = element.attribs;
|
|
99
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
94
100
|
} else if (element.attribs) {
|
|
95
101
|
props = attributesToProps(element.attribs, element.name);
|
|
96
102
|
}
|
|
@@ -114,7 +120,8 @@ export default function domToReact(
|
|
|
114
120
|
// https://react.dev/reference/react-dom/components/textarea#caveats
|
|
115
121
|
if (node.name === 'textarea' && node.children[0]) {
|
|
116
122
|
props.defaultValue = (node.children[0] as Text).data;
|
|
117
|
-
|
|
123
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
124
|
+
} else if (node.children?.length) {
|
|
118
125
|
// continue recursion of creating React elements (if applicable)
|
|
119
126
|
children = domToReact(node.children as Text[], options);
|
|
120
127
|
}
|
|
@@ -132,7 +139,11 @@ export default function domToReact(
|
|
|
132
139
|
}
|
|
133
140
|
|
|
134
141
|
reactElements.push(
|
|
135
|
-
transform(
|
|
142
|
+
transform(
|
|
143
|
+
createElement(node.name, props, children),
|
|
144
|
+
node,
|
|
145
|
+
index,
|
|
146
|
+
) as JSX.Element,
|
|
136
147
|
);
|
|
137
148
|
}
|
|
138
149
|
|
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -29,12 +29,14 @@ export interface HTMLReactParserOptions {
|
|
|
29
29
|
replace?: (
|
|
30
30
|
domNode: DOMNode,
|
|
31
31
|
index: number,
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
|
|
32
33
|
) => JSX.Element | string | null | boolean | object | void;
|
|
33
34
|
|
|
34
35
|
transform?: (
|
|
35
36
|
reactNode: ReactNode,
|
|
36
37
|
domNode: DOMNode,
|
|
37
38
|
index: number,
|
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
|
|
38
40
|
) => JSX.Element | string | null | void;
|
|
39
41
|
|
|
40
42
|
trim?: boolean;
|
package/src/utilities.ts
CHANGED
|
@@ -112,4 +112,4 @@ export const canTextBeChildOfNode = (node: Element) =>
|
|
|
112
112
|
* @param arg - The argument to be returned.
|
|
113
113
|
* @returns - The input argument `arg`.
|
|
114
114
|
*/
|
|
115
|
-
export const returnFirstArg = (arg:
|
|
115
|
+
export const returnFirstArg = <T>(arg: T): T => arg;
|