html-react-parser
Advanced tools
Comparing version 0.7.1 to 0.8.0
@@ -1,5 +0,34 @@ | ||
# Change Log | ||
# Changelog | ||
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. | ||
## [0.8.0](https://github.com/remarkablemark/html-react-parser/compare/v0.7.1...v0.8.0) (2019-06-24) | ||
### Bug Fixes | ||
* **attributes-to-props:** fix lint error `no-prototype-builtins` ([fa66dfc](https://github.com/remarkablemark/html-react-parser/commit/fa66dfc)) | ||
### Build System | ||
* **package:** refactor webpack config and generate sourcemap ([5dd4f07](https://github.com/remarkablemark/html-react-parser/commit/5dd4f07)) | ||
* **package:** rename npm script `cover` to `test:cover` ([7d806c8](https://github.com/remarkablemark/html-react-parser/commit/7d806c8)) | ||
* **package:** update `html-dom-parser@0.2.2` and devDependencies ([b39ac53](https://github.com/remarkablemark/html-react-parser/commit/b39ac53)) | ||
* **package:** update dependencies and devDependencies ([8765ea9](https://github.com/remarkablemark/html-react-parser/commit/8765ea9)) | ||
* **package:** update dependency `style-to-object` to 0.2.3 ([c2cc2ec](https://github.com/remarkablemark/html-react-parser/commit/c2cc2ec)), closes [remarkablemark/style-to-object#5](https://github.com/remarkablemark/html-react-parser/issues/5) | ||
### Features | ||
* **dom-to-react:** skip and do not parse <script> content ([1fb5ee2](https://github.com/remarkablemark/html-react-parser/commit/1fb5ee2)) | ||
### Tests | ||
* **html-to-react:** add test that verifies `domToReact` is exported ([320c364](https://github.com/remarkablemark/html-react-parser/commit/320c364)) | ||
* verify invalid style for `attributesToProps` throws an error ([b97f2e1](https://github.com/remarkablemark/html-react-parser/commit/b97f2e1)) | ||
<a name="0.7.1"></a> | ||
@@ -6,0 +35,0 @@ ## [0.7.1](https://github.com/remarkablemark/html-react-parser/compare/v0.7.0...v0.7.1) (2019-05-27) |
@@ -1,1 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.HTMLReactParser=t(require("react")):e.HTMLReactParser=t(e.React)}(window,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}([function(e,t,r){var n=r(1),i=/-([a-z])/g,o=/^--[a-zA-Z0-9-]+$|^[^-]+$/;var a=n.version.split(".")[0]>=16;e.exports={PRESERVE_CUSTOM_ATTRIBUTES:a,camelCase:function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string");return o.test(e)?e:e.toLowerCase().replace(i,function(e,t){return t.toUpperCase()})},invertObject:function(e,t){if(!e||"object"!=typeof e)throw new TypeError("First argument must be an object");var r,n,i="function"==typeof t,o={},a={};for(r in e)n=e[r],i&&(o=t(r,n))&&2===o.length?a[o[0]]=o[1]:"string"==typeof n&&(a[n]=r);return a},isCustomComponent:function(e,t){if(-1===e.indexOf("-"))return t&&"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}}},function(t,r){t.exports=e},function(e,t,r){"use strict";var n=r(7);r(8);function i(e,t){return(e&t)===t}var o={MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(e){var t=o,r=e.Properties||{},a=e.DOMAttributeNamespaces||{},u=e.DOMAttributeNames||{},l=e.DOMPropertyNames||{},c=e.DOMMutationMethods||{};for(var p in e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute),r){s.properties.hasOwnProperty(p)&&n("48",p);var f=p.toLowerCase(),m=r[p],d={attributeName:f,attributeNamespace:null,propertyName:p,mutationMethod:null,mustUseProperty:i(m,t.MUST_USE_PROPERTY),hasBooleanValue:i(m,t.HAS_BOOLEAN_VALUE),hasNumericValue:i(m,t.HAS_NUMERIC_VALUE),hasPositiveNumericValue:i(m,t.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:i(m,t.HAS_OVERLOADED_BOOLEAN_VALUE)};if(d.hasBooleanValue+d.hasNumericValue+d.hasOverloadedBooleanValue<=1||n("50",p),u.hasOwnProperty(p)){var h=u[p];d.attributeName=h}a.hasOwnProperty(p)&&(d.attributeNamespace=a[p]),l.hasOwnProperty(p)&&(d.propertyName=l[p]),c.hasOwnProperty(p)&&(d.mutationMethod=c[p]),s.properties[p]=d}}},a=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:a,ATTRIBUTE_NAME_CHAR:a+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t<s._isCustomAttributeFunctions.length;t++){if((0,s._isCustomAttributeFunctions[t])(e))return!0}return!1},injection:o};e.exports=s},function(e,t,r){"use strict";function n(e){for(var t,r={},n=0,i=e.length;n<i;n++)r[(t=e[n]).name]=t.value;return r}e.exports={formatAttributes:n,formatDOM:function e(t,r,i){r=r||null;for(var o,a,s,u=[],l=0,c=t.length;l<c;l++){switch(o=t[l],s={next:null,prev:u[l-1]||null,parent:r},(a=u[l-1])&&(a.next=s),0!==o.nodeName.indexOf("#")&&(s.name=o.nodeName.toLowerCase(),s.attribs={},o.attributes&&o.attributes.length&&(s.attribs=n(o.attributes))),o.nodeType){case 1:"script"===s.name||"style"===s.name?s.type=s.name:s.type="tag",s.children=e(o.childNodes,s);break;case 3:s.type="text",s.data=o.nodeValue;break;case 8:s.type="comment",s.data=o.nodeValue}u.push(s)}return i&&(u.unshift({name:i.substring(0,i.indexOf(" ")).toLowerCase(),data:i,type:"directive",next:u[0]?u[0]:null,prev:null,parent:r}),u[1]&&(u[1].prev=u[0])),u},isIE:function(e){return e?document.documentMode===e:/(MSIE |Trident\/|Edge\/)/.test(navigator.userAgent)}}},function(e,t,r){var n=r(5),i=r(14),o={decodeEntities:!0,lowerCaseAttributeNames:!1};e.exports=function(e,t){if("string"!=typeof e)throw new TypeError("First argument must be a string");return n(i(e,o),t)},e.exports.domToReact=n,e.exports.htmlToDOM=i},function(e,t,r){var n=r(1),i=r(6),o=r(0);function a(e){return o.PRESERVE_CUSTOM_ATTRIBUTES&&"tag"===e.type&&o.isCustomComponent(e.name,e.attribs)}e.exports=function e(t,r){for(var o,s,u,l,c=[],p="function"==typeof(r=r||{}).replace,f=0,m=t.length;f<m;f++)if(o=t[f],p&&(s=r.replace(o),n.isValidElement(s)))m>1&&(s=n.cloneElement(s,{key:s.key||f})),c.push(s);else if("text"!==o.type){if(u=o.attribs,a(o)||(u=i(o.attribs)),l=null,"script"===o.type||"style"===o.type)o.children[0]&&(u.dangerouslySetInnerHTML={__html:o.children[0].data});else{if("tag"!==o.type)continue;"textarea"===o.name&&o.children[0]?u.defaultValue=o.children[0].data:o.children&&o.children.length&&(l=e(o.children,r))}m>1&&(u.key=f),c.push(n.createElement(o.name,u,l))}else c.push(o.data);return 1===c.length?c[0]:c}},function(e,t,r){var n=r(2),i=r(9),o=r(12),a=r(0),s=i.config,u=i.HTMLDOMPropertyConfig.isCustomAttribute;n.injection.injectDOMPropertyConfig(i.HTMLDOMPropertyConfig),e.exports=function(e){e=e||{};var t,r,i,l={};for(t in e)r=e[t],u(t)?l[t]=r:(i=s.html[t.toLowerCase()])?n.properties.hasOwnProperty(i)&&n.properties[i].hasBooleanValue?l[i]=!0:l[i]=r:(i=s.svg[t])?l[i]=r:a.PRESERVE_CUSTOM_ATTRIBUTES&&(l[t]=r);return null!=e.style&&(l.style=function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string.");var t={};return o(e,function(e,r){e&&r&&(t[a.camelCase(e)]=r)}),t}(e.style)),l}},function(e,t,r){"use strict";e.exports=function(e){for(var t=arguments.length-1,r="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,n=0;n<t;n++)r+="&args[]="+encodeURIComponent(arguments[n+1]);r+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var i=new Error(r);throw i.name="Invariant Violation",i.framesToPop=1,i}},function(e,t,r){"use strict";var n=function(e){if(void 0===e)throw new Error("invariant(...): Second argument must be a string.")};e.exports=function(e,t){for(var r=arguments.length,i=new Array(r>2?r-2:0),o=2;o<r;o++)i[o-2]=arguments[o];if(n(t),!e){var a;if(void 0===t)a=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=0;(a=new Error(t.replace(/%s/g,function(){return String(i[s++])}))).name="Invariant Violation"}throw a.framesToPop=1,a}}},function(e,t,r){var n,i=r(10),o=r(11),a=r(0),s={html:{},svg:{}};for(n in s.html=a.invertObject(i.DOMAttributeNames),i.Properties)s.html[n.toLowerCase()]=n;for(n in s.svg=a.invertObject(o.DOMAttributeNames),o.Properties)s.html[n]=n;e.exports={config:s,HTMLDOMPropertyConfig:i,SVGDOMPropertyConfig:o}},function(e,t,r){"use strict";var n=r(2),i=n.injection.MUST_USE_PROPERTY,o=n.injection.HAS_BOOLEAN_VALUE,a=n.injection.HAS_NUMERIC_VALUE,s=n.injection.HAS_POSITIVE_NUMERIC_VALUE,u=n.injection.HAS_OVERLOADED_BOOLEAN_VALUE,l={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+n.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:o,allowTransparency:0,alt:0,as:0,async:o,autoComplete:0,autoPlay:o,capture:o,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:i|o,cite:0,classID:0,className:0,cols:s,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:o,controlsList:0,coords:0,crossOrigin:0,data:0,dateTime:0,default:o,defer:o,dir:0,disabled:o,download:u,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:o,formTarget:0,frameBorder:0,headers:0,height:0,hidden:o,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:o,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:i|o,muted:i|o,name:0,nonce:0,noValidate:o,open:o,optimum:0,pattern:0,placeholder:0,playsInline:o,poster:0,preload:0,profile:0,radioGroup:0,readOnly:o,referrerPolicy:0,rel:0,required:o,reversed:o,role:0,rows:s,rowSpan:a,sandbox:0,scope:0,scoped:o,scrolling:0,seamless:o,selected:i|o,shape:0,size:s,sizes:0,span:s,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:o,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{},DOMMutationMethods:{value:function(e,t){if(null==t)return e.removeAttribute("value");"number"!==e.type||!1===e.hasAttribute("value")?e.setAttribute("value",""+t):e.validity&&!e.validity.badInput&&e.ownerDocument.activeElement!==e&&e.setAttribute("value",""+t)}}};e.exports=l},function(e,t,r){"use strict";var n="http://www.w3.org/1999/xlink",i="http://www.w3.org/XML/1998/namespace",o={accentHeight:"accent-height",accumulate:0,additive:0,alignmentBaseline:"alignment-baseline",allowReorder:"allowReorder",alphabetic:0,amplitude:0,arabicForm:"arabic-form",ascent:0,attributeName:"attributeName",attributeType:"attributeType",autoReverse:"autoReverse",azimuth:0,baseFrequency:"baseFrequency",baseProfile:"baseProfile",baselineShift:"baseline-shift",bbox:0,begin:0,bias:0,by:0,calcMode:"calcMode",capHeight:"cap-height",clip:0,clipPath:"clip-path",clipRule:"clip-rule",clipPathUnits:"clipPathUnits",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cursor:0,cx:0,cy:0,d:0,decelerate:0,descent:0,diffuseConstant:"diffuseConstant",direction:0,display:0,divisor:0,dominantBaseline:"dominant-baseline",dur:0,dx:0,dy:0,edgeMode:"edgeMode",elevation:0,enableBackground:"enable-background",end:0,exponent:0,externalResourcesRequired:"externalResourcesRequired",fill:0,fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:0,filterRes:"filterRes",filterUnits:"filterUnits",floodColor:"flood-color",floodOpacity:"flood-opacity",focusable:0,fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",format:0,from:0,fx:0,fy:0,g1:0,g2:0,glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:0,horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",ideographic:0,imageRendering:"image-rendering",in:0,in2:0,intercept:0,k:0,k1:0,k2:0,k3:0,k4:0,kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",kerning:0,keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lengthAdjust:"lengthAdjust",letterSpacing:"letter-spacing",lightingColor:"lighting-color",limitingConeAngle:"limitingConeAngle",local:0,markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",mask:0,maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:0,mode:0,numOctaves:"numOctaves",offset:0,opacity:0,operator:0,order:0,orient:0,orientation:0,origin:0,overflow:0,overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",pointerEvents:"pointer-events",points:0,pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:0,radius:0,refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:0,result:0,rotate:0,rx:0,ry:0,scale:0,seed:0,shapeRendering:"shape-rendering",slope:0,spacing:0,specularConstant:"specularConstant",specularExponent:"specularExponent",speed:0,spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:0,stemv:0,stitchTiles:"stitchTiles",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:0,stroke:0,strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",targetX:"targetX",targetY:"targetY",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",textLength:"textLength",to:0,transform:0,u1:0,u2:0,underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:0,unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:0,vectorEffect:"vector-effect",version:0,vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",visibility:0,widths:0,wordSpacing:"word-spacing",writingMode:"writing-mode",x:0,xHeight:"x-height",x1:0,x2:0,xChannelSelector:"xChannelSelector",xlinkActuate:"xlink:actuate",xlinkArcrole:"xlink:arcrole",xlinkHref:"xlink:href",xlinkRole:"xlink:role",xlinkShow:"xlink:show",xlinkTitle:"xlink:title",xlinkType:"xlink:type",xmlBase:"xml:base",xmlns:0,xmlnsXlink:"xmlns:xlink",xmlLang:"xml:lang",xmlSpace:"xml:space",y:0,y1:0,y2:0,yChannelSelector:"yChannelSelector",z:0,zoomAndPan:"zoomAndPan"},a={Properties:{},DOMAttributeNamespaces:{xlinkActuate:n,xlinkArcrole:n,xlinkHref:n,xlinkRole:n,xlinkShow:n,xlinkTitle:n,xlinkType:n,xmlBase:i,xmlLang:i,xmlSpace:i},DOMAttributeNames:{}};Object.keys(o).forEach(function(e){a.Properties[e]=0,o[e]&&(a.DOMAttributeNames[e]=o[e])}),e.exports=a},function(e,t,r){var n=r(13);e.exports=function(e,t){if(!e||"string"!=typeof e)return null;for(var r,i,o,a=n("p{"+e+"}").stylesheet.rules[0].declarations,s=null,u="function"==typeof t,l=0,c=a.length;l<c;l++)i=(r=a[l]).property,o=r.value,u?t(i,o,r):o&&(s||(s={}),s[i]=o);return s}},function(e,t){var r=/\/\*[^*]*\*+([^\/*][^*]*\*+)*\//g;function n(e){return e?e.replace(/^\s+|\s+$/g,""):""}e.exports=function(e,t){t=t||{};var i=1,o=1;function a(e){var t=e.match(/\n/g);t&&(i+=t.length);var r=e.lastIndexOf("\n");o=~r?e.length-r:o+e.length}function s(){var e={line:i,column:o};return function(t){return t.position=new u(e),h(),t}}function u(e){this.start=e,this.end={line:i,column:o},this.source=t.source}u.prototype.content=e;var l=[];function c(r){var n=new Error(t.source+":"+i+":"+o+": "+r);if(n.reason=r,n.filename=t.source,n.line=i,n.column=o,n.source=e,!t.silent)throw n;l.push(n)}function p(){return d(/^{\s*/)}function f(){return d(/^}/)}function m(){var t,r=[];for(h(),g(r);e.length&&"}"!=e.charAt(0)&&(t=M()||S());)!1!==t&&(r.push(t),g(r));return r}function d(t){var r=t.exec(e);if(r){var n=r[0];return a(n),e=e.slice(n.length),r}}function h(){d(/^\s*/)}function g(e){var t;for(e=e||[];t=y();)!1!==t&&e.push(t);return e}function y(){var t=s();if("/"==e.charAt(0)&&"*"==e.charAt(1)){for(var r=2;""!=e.charAt(r)&&("*"!=e.charAt(r)||"/"!=e.charAt(r+1));)++r;if(r+=2,""===e.charAt(r-1))return c("End of comment missing");var n=e.slice(2,r-2);return o+=2,a(n),e=e.slice(r),o+=2,t({type:"comment",comment:n})}}function v(){var e=d(/^([^{]+)/);if(e)return n(e[0]).replace(/\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*\/+/g,"").replace(/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'/g,function(e){return e.replace(/,/g,"")}).split(/\s*(?![^(]*\)),\s*/).map(function(e){return e.replace(/\u200C/g,",")})}function b(){var e=s(),t=d(/^(\*?[-#\/\*\\\w]+(\[[0-9a-z_-]+\])?)\s*/);if(t){if(t=n(t[0]),!d(/^:\s*/))return c("property missing ':'");var i=d(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/),o=e({type:"declaration",property:t.replace(r,""),value:i?n(i[0]).replace(r,""):""});return d(/^[;\s]*/),o}}function x(){var e,t=[];if(!p())return c("missing '{'");for(g(t);e=b();)!1!==e&&(t.push(e),g(t));return f()?t:c("missing '}'")}function A(){for(var e,t=[],r=s();e=d(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/);)t.push(e[1]),d(/^,\s*/);if(t.length)return r({type:"keyframe",values:t,declarations:x()})}var E,k=w("import"),T=w("charset"),O=w("namespace");function w(e){var t=new RegExp("^@"+e+"\\s*([^;]+);");return function(){var r=s(),n=d(t);if(n){var i={type:e};return i[e]=n[1].trim(),r(i)}}}function M(){if("@"==e[0])return function(){var e=s();if(t=d(/^@([-\w]+)?keyframes\s*/)){var t,r=t[1];if(!(t=d(/^([-\w]+)\s*/)))return c("@keyframes missing name");var n,i=t[1];if(!p())return c("@keyframes missing '{'");for(var o=g();n=A();)o.push(n),o=o.concat(g());return f()?e({type:"keyframes",name:i,vendor:r,keyframes:o}):c("@keyframes missing '}'")}}()||function(){var e=s(),t=d(/^@media *([^{]+)/);if(t){var r=n(t[1]);if(!p())return c("@media missing '{'");var i=g().concat(m());return f()?e({type:"media",media:r,rules:i}):c("@media missing '}'")}}()||function(){var e=s(),t=d(/^@custom-media\s+(--[^\s]+)\s*([^{;]+);/);if(t)return e({type:"custom-media",name:n(t[1]),media:n(t[2])})}()||function(){var e=s(),t=d(/^@supports *([^{]+)/);if(t){var r=n(t[1]);if(!p())return c("@supports missing '{'");var i=g().concat(m());return f()?e({type:"supports",supports:r,rules:i}):c("@supports missing '}'")}}()||k()||T()||O()||function(){var e=s(),t=d(/^@([-\w]+)?document *([^{]+)/);if(t){var r=n(t[1]),i=n(t[2]);if(!p())return c("@document missing '{'");var o=g().concat(m());return f()?e({type:"document",document:i,vendor:r,rules:o}):c("@document missing '}'")}}()||function(){var e=s();if(d(/^@page */)){var t=v()||[];if(!p())return c("@page missing '{'");for(var r,n=g();r=b();)n.push(r),n=n.concat(g());return f()?e({type:"page",selectors:t,declarations:n}):c("@page missing '}'")}}()||function(){var e=s();if(d(/^@host\s*/)){if(!p())return c("@host missing '{'");var t=g().concat(m());return f()?e({type:"host",rules:t}):c("@host missing '}'")}}()||function(){var e=s();if(d(/^@font-face\s*/)){if(!p())return c("@font-face missing '{'");for(var t,r=g();t=b();)r.push(t),r=r.concat(g());return f()?e({type:"font-face",declarations:r}):c("@font-face missing '}'")}}()}function S(){var e=s(),t=v();return t?(g(),e({type:"rule",selectors:t,declarations:x()})):c("selector missing")}return function e(t,r){var n=t&&"string"==typeof t.type;var i=n?t:r;for(var o in t){var a=t[o];Array.isArray(a)?a.forEach(function(t){e(t,i)}):a&&"object"==typeof a&&e(a,i)}n&&Object.defineProperty(t,"parent",{configurable:!0,writable:!0,enumerable:!1,value:r||null});return t}((E=m(),{type:"stylesheet",stylesheet:{source:t.source,rules:E,parsingErrors:l}}))}},function(e,t,r){"use strict";var n=r(15),i=r(3),o=i.formatDOM,a=i.isIE(9),s=/<(![a-zA-Z\s]+)>/;e.exports=function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string.");if(!e)return[];var t,r=e.match(s);return r&&r[1]&&(t=r[1],a&&(e=e.replace(r[0],""))),o(n(e),null,t)}},function(e,t,r){"use strict";var n,i,o,a=r(3).isIE,s=/<([a-zA-Z]+[0-9]?)/,u=/<\/head>/i,l=/<\/body>/i,c=/<(area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)(.*?)\/?>/gi,p=a(),f=a(9);if("function"==typeof window.DOMParser){var m=new window.DOMParser,d=f?"text/xml":"text/html";n=function(e,t){return t&&(e=["<",t,">",e,"</",t,">"].join("")),f&&(e=e.replace(c,"<$1$2$3/>")),m.parseFromString(e,d)}}if("object"==typeof document.implementation){var h=document.implementation.createHTMLDocument(p?"HTML_DOM_PARSER_TITLE":void 0);i=function(e,t){if(t)return h.documentElement.getElementsByTagName(t)[0].innerHTML=e,h;try{return h.documentElement.innerHTML=e,h}catch(t){if(n)return n(e)}}}var g=document.createElement("template");g.content&&(o=function(e){return g.innerHTML=e,g.content.childNodes});var y=i||n;e.exports=function(e){var t,r,i,a,c=e.match(s);switch(c&&c[1]&&(t=c[1].toLowerCase()),t){case"html":if(n)return r=n(e),u.test(e)||(i=r.getElementsByTagName("head")[0])&&i.parentNode.removeChild(i),l.test(e)||(i=r.getElementsByTagName("body")[0])&&i.parentNode.removeChild(i),r.getElementsByTagName("html");break;case"head":if(y)return a=y(e).getElementsByTagName("head"),l.test(e)?a[0].parentNode.childNodes:a;break;case"body":if(y)return a=y(e).getElementsByTagName("body"),u.test(e)?a[0].parentNode.childNodes:a;break;default:if(o)return o(e);if(y)return y(e,"body").getElementsByTagName("body")[0].childNodes}return[]}}])}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.HTMLReactParser=t(require("react")):e.HTMLReactParser=t(e.React)}(window,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}([function(e,t,r){var n=r(1),i=/-([a-z])/g,o=/^--[a-zA-Z0-9-]+$|^[^-]+$/;var a=n.version.split(".")[0]>=16;e.exports={PRESERVE_CUSTOM_ATTRIBUTES:a,camelCase:function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string");return o.test(e)?e:e.toLowerCase().replace(i,function(e,t){return t.toUpperCase()})},invertObject:function(e,t){if(!e||"object"!=typeof e)throw new TypeError("First argument must be an object");var r,n,i="function"==typeof t,o={},a={};for(r in e)n=e[r],i&&(o=t(r,n))&&2===o.length?a[o[0]]=o[1]:"string"==typeof n&&(a[n]=r);return a},isCustomComponent:function(e,t){if(-1===e.indexOf("-"))return t&&"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}}},function(t,r){t.exports=e},function(e,t,r){"use strict";var n=r(7);r(8);function i(e,t){return(e&t)===t}var o={MUST_USE_PROPERTY:1,HAS_BOOLEAN_VALUE:4,HAS_NUMERIC_VALUE:8,HAS_POSITIVE_NUMERIC_VALUE:24,HAS_OVERLOADED_BOOLEAN_VALUE:32,injectDOMPropertyConfig:function(e){var t=o,r=e.Properties||{},a=e.DOMAttributeNamespaces||{},l=e.DOMAttributeNames||{},c=e.DOMPropertyNames||{},u=e.DOMMutationMethods||{};for(var p in e.isCustomAttribute&&s._isCustomAttributeFunctions.push(e.isCustomAttribute),r){s.properties.hasOwnProperty(p)&&n("48",p);var f=p.toLowerCase(),m=r[p],d={attributeName:f,attributeNamespace:null,propertyName:p,mutationMethod:null,mustUseProperty:i(m,t.MUST_USE_PROPERTY),hasBooleanValue:i(m,t.HAS_BOOLEAN_VALUE),hasNumericValue:i(m,t.HAS_NUMERIC_VALUE),hasPositiveNumericValue:i(m,t.HAS_POSITIVE_NUMERIC_VALUE),hasOverloadedBooleanValue:i(m,t.HAS_OVERLOADED_BOOLEAN_VALUE)};if(d.hasBooleanValue+d.hasNumericValue+d.hasOverloadedBooleanValue<=1||n("50",p),l.hasOwnProperty(p)){var h=l[p];d.attributeName=h}a.hasOwnProperty(p)&&(d.attributeNamespace=a[p]),c.hasOwnProperty(p)&&(d.propertyName=c[p]),u.hasOwnProperty(p)&&(d.mutationMethod=u[p]),s.properties[p]=d}}},a=":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s={ID_ATTRIBUTE_NAME:"data-reactid",ROOT_ATTRIBUTE_NAME:"data-reactroot",ATTRIBUTE_NAME_START_CHAR:a,ATTRIBUTE_NAME_CHAR:a+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",properties:{},getPossibleStandardName:null,_isCustomAttributeFunctions:[],isCustomAttribute:function(e){for(var t=0;t<s._isCustomAttributeFunctions.length;t++){if((0,s._isCustomAttributeFunctions[t])(e))return!0}return!1},injection:o};e.exports=s},function(e,t,r){"use strict";for(var n,i=r(16).CASE_SENSITIVE_TAG_NAMES,o={},a=0,s=i.length;a<s;a++)n=i[a],o[n.toLowerCase()]=n;function l(e){for(var t,r={},n=0,i=e.length;n<i;n++)r[(t=e[n]).name]=t.value;return r}function c(e){var t=function(e){return o[e]}(e=e.toLowerCase());return t||e}e.exports={formatAttributes:l,formatDOM:function e(t,r,n){r=r||null;for(var i,o,a,s=[],u=0,p=t.length;u<p;u++){switch(i=t[u],a={next:null,prev:s[u-1]||null,parent:r},(o=s[u-1])&&(o.next=a),"#"!==i.nodeName[0]&&(a.name=c(i.nodeName),a.attribs={},i.attributes&&i.attributes.length&&(a.attribs=l(i.attributes))),i.nodeType){case 1:"script"===a.name||"style"===a.name?a.type=a.name:a.type="tag",a.children=e(i.childNodes,a);break;case 3:a.type="text",a.data=i.nodeValue;break;case 8:a.type="comment",a.data=i.nodeValue}s.push(a)}return n&&(s.unshift({name:n.substring(0,n.indexOf(" ")).toLowerCase(),data:n,type:"directive",next:s[0]?s[0]:null,prev:null,parent:r}),s[1]&&(s[1].prev=s[0])),s},isIE:function(e){return e?document.documentMode===e:/(MSIE |Trident\/|Edge\/)/.test(navigator.userAgent)}}},function(e,t,r){var n=r(5),i=r(14),o={decodeEntities:!0,lowerCaseAttributeNames:!1};e.exports=function(e,t){if("string"!=typeof e)throw new TypeError("First argument must be a string");return n(i(e,o),t)},e.exports.domToReact=n,e.exports.htmlToDOM=i},function(e,t,r){var n=r(1),i=r(6),o=r(0),a=n.cloneElement,s=n.createElement,l=n.isValidElement;function c(e){return o.PRESERVE_CUSTOM_ATTRIBUTES&&"tag"===e.type&&o.isCustomComponent(e.name,e.attribs)}e.exports=function e(t,r){for(var n,o,u,p,f=[],m="function"==typeof(r=r||{}).replace,d=0,h=t.length;d<h;d++)if(n=t[d],m&&(o=r.replace(n),l(o)))h>1&&(o=a(o,{key:o.key||d})),f.push(o);else if("text"!==n.type){if(u=n.attribs,c(n)||(u=i(n.attribs)),p=null,"style"===n.type)n.children[0]&&(u.dangerouslySetInnerHTML={__html:n.children[0].data});else{if("tag"!==n.type)continue;"textarea"===n.name&&n.children[0]?u.defaultValue=n.children[0].data:n.children&&n.children.length&&(p=e(n.children,r))}h>1&&(u.key=d),f.push(s(n.name,u,p))}else f.push(n.data);return 1===f.length?f[0]:f}},function(e,t,r){var n=r(2),i=r(9),o=r(12),a=r(0),s=i.config,l=i.HTMLDOMPropertyConfig.isCustomAttribute;n.injection.injectDOMPropertyConfig(i.HTMLDOMPropertyConfig),e.exports=function(e){e=e||{};var t,r,i,c={};for(t in e)r=e[t],l(t)?c[t]=r:(i=s.html[t.toLowerCase()])?Object.prototype.hasOwnProperty.call(n.properties,i)&&n.properties[i].hasBooleanValue?c[i]=!0:c[i]=r:(i=s.svg[t])?c[i]=r:a.PRESERVE_CUSTOM_ATTRIBUTES&&(c[t]=r);return null!=e.style&&(c.style=function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string.");var t={};return o(e,function(e,r){e&&r&&(t[a.camelCase(e)]=r)}),t}(e.style)),c}},function(e,t,r){"use strict";e.exports=function(e){for(var t=arguments.length-1,r="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,n=0;n<t;n++)r+="&args[]="+encodeURIComponent(arguments[n+1]);r+=" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.";var i=new Error(r);throw i.name="Invariant Violation",i.framesToPop=1,i}},function(e,t,r){"use strict";var n=function(e){if(void 0===e)throw new Error("invariant(...): Second argument must be a string.")};e.exports=function(e,t){for(var r=arguments.length,i=new Array(r>2?r-2:0),o=2;o<r;o++)i[o-2]=arguments[o];if(n(t),!e){var a;if(void 0===t)a=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=0;(a=new Error(t.replace(/%s/g,function(){return String(i[s++])}))).name="Invariant Violation"}throw a.framesToPop=1,a}}},function(e,t,r){var n,i=r(10),o=r(11),a=r(0),s={html:{},svg:{}};for(n in s.html=a.invertObject(i.DOMAttributeNames),i.Properties)s.html[n.toLowerCase()]=n;for(n in s.svg=a.invertObject(o.DOMAttributeNames),o.Properties)s.html[n]=n;e.exports={config:s,HTMLDOMPropertyConfig:i,SVGDOMPropertyConfig:o}},function(e,t,r){"use strict";var n=r(2),i=n.injection.MUST_USE_PROPERTY,o=n.injection.HAS_BOOLEAN_VALUE,a=n.injection.HAS_NUMERIC_VALUE,s=n.injection.HAS_POSITIVE_NUMERIC_VALUE,l=n.injection.HAS_OVERLOADED_BOOLEAN_VALUE,c={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+n.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:o,allowTransparency:0,alt:0,as:0,async:o,autoComplete:0,autoPlay:o,capture:o,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:i|o,cite:0,classID:0,className:0,cols:s,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:o,controlsList:0,coords:0,crossOrigin:0,data:0,dateTime:0,default:o,defer:o,dir:0,disabled:o,download:l,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:o,formTarget:0,frameBorder:0,headers:0,height:0,hidden:o,high:0,href:0,hrefLang:0,htmlFor:0,httpEquiv:0,icon:0,id:0,inputMode:0,integrity:0,is:0,keyParams:0,keyType:0,kind:0,label:0,lang:0,list:0,loop:o,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:i|o,muted:i|o,name:0,nonce:0,noValidate:o,open:o,optimum:0,pattern:0,placeholder:0,playsInline:o,poster:0,preload:0,profile:0,radioGroup:0,readOnly:o,referrerPolicy:0,rel:0,required:o,reversed:o,role:0,rows:s,rowSpan:a,sandbox:0,scope:0,scoped:o,scrolling:0,seamless:o,selected:i|o,shape:0,size:s,sizes:0,span:s,spellCheck:0,src:0,srcDoc:0,srcLang:0,srcSet:0,start:a,step:0,style:0,summary:0,tabIndex:0,target:0,title:0,type:0,useMap:0,value:0,width:0,wmode:0,wrap:0,about:0,datatype:0,inlist:0,prefix:0,property:0,resource:0,typeof:0,vocab:0,autoCapitalize:0,autoCorrect:0,autoSave:0,color:0,itemProp:0,itemScope:o,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{},DOMMutationMethods:{value:function(e,t){if(null==t)return e.removeAttribute("value");"number"!==e.type||!1===e.hasAttribute("value")?e.setAttribute("value",""+t):e.validity&&!e.validity.badInput&&e.ownerDocument.activeElement!==e&&e.setAttribute("value",""+t)}}};e.exports=c},function(e,t,r){"use strict";var n="http://www.w3.org/1999/xlink",i="http://www.w3.org/XML/1998/namespace",o={accentHeight:"accent-height",accumulate:0,additive:0,alignmentBaseline:"alignment-baseline",allowReorder:"allowReorder",alphabetic:0,amplitude:0,arabicForm:"arabic-form",ascent:0,attributeName:"attributeName",attributeType:"attributeType",autoReverse:"autoReverse",azimuth:0,baseFrequency:"baseFrequency",baseProfile:"baseProfile",baselineShift:"baseline-shift",bbox:0,begin:0,bias:0,by:0,calcMode:"calcMode",capHeight:"cap-height",clip:0,clipPath:"clip-path",clipRule:"clip-rule",clipPathUnits:"clipPathUnits",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",contentScriptType:"contentScriptType",contentStyleType:"contentStyleType",cursor:0,cx:0,cy:0,d:0,decelerate:0,descent:0,diffuseConstant:"diffuseConstant",direction:0,display:0,divisor:0,dominantBaseline:"dominant-baseline",dur:0,dx:0,dy:0,edgeMode:"edgeMode",elevation:0,enableBackground:"enable-background",end:0,exponent:0,externalResourcesRequired:"externalResourcesRequired",fill:0,fillOpacity:"fill-opacity",fillRule:"fill-rule",filter:0,filterRes:"filterRes",filterUnits:"filterUnits",floodColor:"flood-color",floodOpacity:"flood-opacity",focusable:0,fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",format:0,from:0,fx:0,fy:0,g1:0,g2:0,glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",glyphRef:"glyphRef",gradientTransform:"gradientTransform",gradientUnits:"gradientUnits",hanging:0,horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",ideographic:0,imageRendering:"image-rendering",in:0,in2:0,intercept:0,k:0,k1:0,k2:0,k3:0,k4:0,kernelMatrix:"kernelMatrix",kernelUnitLength:"kernelUnitLength",kerning:0,keyPoints:"keyPoints",keySplines:"keySplines",keyTimes:"keyTimes",lengthAdjust:"lengthAdjust",letterSpacing:"letter-spacing",lightingColor:"lighting-color",limitingConeAngle:"limitingConeAngle",local:0,markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",markerHeight:"markerHeight",markerUnits:"markerUnits",markerWidth:"markerWidth",mask:0,maskContentUnits:"maskContentUnits",maskUnits:"maskUnits",mathematical:0,mode:0,numOctaves:"numOctaves",offset:0,opacity:0,operator:0,order:0,orient:0,orientation:0,origin:0,overflow:0,overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pathLength:"pathLength",patternContentUnits:"patternContentUnits",patternTransform:"patternTransform",patternUnits:"patternUnits",pointerEvents:"pointer-events",points:0,pointsAtX:"pointsAtX",pointsAtY:"pointsAtY",pointsAtZ:"pointsAtZ",preserveAlpha:"preserveAlpha",preserveAspectRatio:"preserveAspectRatio",primitiveUnits:"primitiveUnits",r:0,radius:0,refX:"refX",refY:"refY",renderingIntent:"rendering-intent",repeatCount:"repeatCount",repeatDur:"repeatDur",requiredExtensions:"requiredExtensions",requiredFeatures:"requiredFeatures",restart:0,result:0,rotate:0,rx:0,ry:0,scale:0,seed:0,shapeRendering:"shape-rendering",slope:0,spacing:0,specularConstant:"specularConstant",specularExponent:"specularExponent",speed:0,spreadMethod:"spreadMethod",startOffset:"startOffset",stdDeviation:"stdDeviation",stemh:0,stemv:0,stitchTiles:"stitchTiles",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",string:0,stroke:0,strokeDasharray:"stroke-dasharray",strokeDashoffset:"stroke-dashoffset",strokeLinecap:"stroke-linecap",strokeLinejoin:"stroke-linejoin",strokeMiterlimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",surfaceScale:"surfaceScale",systemLanguage:"systemLanguage",tableValues:"tableValues",targetX:"targetX",targetY:"targetY",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",textLength:"textLength",to:0,transform:0,u1:0,u2:0,underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicode:0,unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",values:0,vectorEffect:"vector-effect",version:0,vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",viewBox:"viewBox",viewTarget:"viewTarget",visibility:0,widths:0,wordSpacing:"word-spacing",writingMode:"writing-mode",x:0,xHeight:"x-height",x1:0,x2:0,xChannelSelector:"xChannelSelector",xlinkActuate:"xlink:actuate",xlinkArcrole:"xlink:arcrole",xlinkHref:"xlink:href",xlinkRole:"xlink:role",xlinkShow:"xlink:show",xlinkTitle:"xlink:title",xlinkType:"xlink:type",xmlBase:"xml:base",xmlns:0,xmlnsXlink:"xmlns:xlink",xmlLang:"xml:lang",xmlSpace:"xml:space",y:0,y1:0,y2:0,yChannelSelector:"yChannelSelector",z:0,zoomAndPan:"zoomAndPan"},a={Properties:{},DOMAttributeNamespaces:{xlinkActuate:n,xlinkArcrole:n,xlinkHref:n,xlinkRole:n,xlinkShow:n,xlinkTitle:n,xlinkType:n,xmlBase:i,xmlLang:i,xmlSpace:i},DOMAttributeNames:{}};Object.keys(o).forEach(function(e){a.Properties[e]=0,o[e]&&(a.DOMAttributeNames[e]=o[e])}),e.exports=a},function(e,t,r){var n=r(13);e.exports=function(e,t){var r,i=null;if(!e||"string"!=typeof e)return i;for(var o,a,s=n(e),l="function"==typeof t,c=0,u=s.length;c<u;c++)o=(r=s[c]).property,a=r.value,l?t(o,a,r):a&&(i||(i={}),i[o]=a);return i}},function(e,t){var r=/\/\*[^*]*\*+([^\/*][^*]*\*+)*\//g,n=/\n/g,i=/^\s*/,o=/^(\*?[-#\/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,l=/^[;\s]*/,c=/^\s+|\s+$/g,u="\n",p="/",f="*",m="",d="comment",h="declaration";function g(e){return e?e.replace(c,m):m}e.exports=function(e,t){if("string"!=typeof e)throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var c=1,y=1;function v(e){var t=e.match(n);t&&(c+=t.length);var r=e.lastIndexOf(u);y=~r?e.length-r:y+e.length}function b(){var e={line:c,column:y};return function(t){return t.position=new x(e),k(),t}}function x(e){this.start=e,this.end={line:c,column:y},this.source=t.source}x.prototype.content=e;var A=[];function E(r){var n=new Error(t.source+":"+c+":"+y+": "+r);if(n.reason=r,n.filename=t.source,n.line=c,n.column=y,n.source=e,!t.silent)throw n;A.push(n)}function T(t){var r=t.exec(e);if(r){var n=r[0];return v(n),e=e.slice(n.length),r}}function k(){T(i)}function O(e){var t;for(e=e||[];t=M();)!1!==t&&e.push(t);return e}function M(){var t=b();if(p==e.charAt(0)&&f==e.charAt(1)){for(var r=2;m!=e.charAt(r)&&(f!=e.charAt(r)||p!=e.charAt(r+1));)++r;if(r+=2,m===e.charAt(r-1))return E("End of comment missing");var n=e.slice(2,r-2);return y+=2,v(n),e=e.slice(r),y+=2,t({type:d,comment:n})}}function w(){var e=b(),t=T(o);if(t){if(M(),!T(a))return E("property missing ':'");var n=T(s),i=e({type:h,property:g(t[0].replace(r,m)),value:n?g(n[0].replace(r,m)):m});return T(l),i}}return k(),function(){var e,t=[];for(O(t);e=w();)!1!==e&&(t.push(e),O(t));return t}()}},function(e,t,r){"use strict";var n=r(15),i=r(3),o=i.formatDOM,a=i.isIE(9),s=/<(![a-zA-Z\s]+)>/;e.exports=function(e){if("string"!=typeof e)throw new TypeError("First argument must be a string.");if(!e)return[];var t,r=e.match(s);return r&&r[1]&&(t=r[1],a&&(e=e.replace(r[0],""))),o(n(e),null,t)}},function(e,t,r){"use strict";var n,i,o,a=r(3).isIE,s=/<([a-zA-Z]+[0-9]?)/,l=/<\/head>/i,c=/<\/body>/i,u=/<(area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)(.*?)\/?>/gi,p=a(),f=a(9);if("function"==typeof window.DOMParser){var m=new window.DOMParser,d=f?"text/xml":"text/html";n=function(e,t){return t&&(e=["<",t,">",e,"</",t,">"].join("")),f&&(e=e.replace(u,"<$1$2$3/>")),m.parseFromString(e,d)}}if("object"==typeof document.implementation){var h=document.implementation.createHTMLDocument(p?"HTML_DOM_PARSER_TITLE":void 0);i=function(e,t){if(t)return h.documentElement.getElementsByTagName(t)[0].innerHTML=e,h;try{return h.documentElement.innerHTML=e,h}catch(t){if(n)return n(e)}}}var g=document.createElement("template");g.content&&(o=function(e){return g.innerHTML=e,g.content.childNodes});var y=i||n;e.exports=function(e){var t,r,i,a,u=e.match(s);switch(u&&u[1]&&(t=u[1].toLowerCase()),t){case"html":if(n)return r=n(e),l.test(e)||(i=r.getElementsByTagName("head")[0])&&i.parentNode.removeChild(i),c.test(e)||(i=r.getElementsByTagName("body")[0])&&i.parentNode.removeChild(i),r.getElementsByTagName("html");break;case"head":if(y)return a=y(e).getElementsByTagName("head"),c.test(e)?a[0].parentNode.childNodes:a;break;case"body":if(y)return a=y(e).getElementsByTagName("body"),l.test(e)?a[0].parentNode.childNodes:a;break;default:if(o)return o(e);if(y)return y(e,"body").getElementsByTagName("body")[0].childNodes}return[]}},function(e,t,r){"use strict";e.exports={CASE_SENSITIVE_TAG_NAMES:["animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussainBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","linearGradient","radialGradient","textPath"]}}])}); | ||
//# sourceMappingURL=html-react-parser.min.js.map |
@@ -38,3 +38,6 @@ var DOMProperty = require('react-dom-core/lib/DOMProperty'); | ||
if ( | ||
DOMProperty.properties.hasOwnProperty(reactProperty) && | ||
Object.prototype.hasOwnProperty.call( | ||
DOMProperty.properties, | ||
reactProperty | ||
) && | ||
DOMProperty.properties[reactProperty].hasBooleanValue | ||
@@ -41,0 +44,0 @@ ) { |
@@ -5,2 +5,6 @@ var React = require('react'); | ||
var cloneElement = React.cloneElement; | ||
var createElement = React.createElement; | ||
var isValidElement = React.isValidElement; | ||
/** | ||
@@ -18,4 +22,4 @@ * Converts DOM nodes to React elements. | ||
var node; | ||
var isReplacePresent = typeof options.replace === 'function'; | ||
var replacement; | ||
var hasReplace = typeof options.replace === 'function'; | ||
var replaceElement; | ||
var props; | ||
@@ -27,15 +31,15 @@ var children; | ||
// replace with custom React element (if applicable) | ||
if (isReplacePresent) { | ||
replacement = options.replace(node); | ||
// replace with custom React element (if present) | ||
if (hasReplace) { | ||
replaceElement = options.replace(node); | ||
if (React.isValidElement(replacement)) { | ||
if (isValidElement(replaceElement)) { | ||
// specify a "key" prop if element has siblings | ||
// https://fb.me/react-warning-keys | ||
if (len > 1) { | ||
replacement = React.cloneElement(replacement, { | ||
key: replacement.key || i | ||
replaceElement = cloneElement(replaceElement, { | ||
key: replaceElement.key || i | ||
}); | ||
} | ||
result.push(replacement); | ||
result.push(replaceElement); | ||
continue; | ||
@@ -58,7 +62,7 @@ } | ||
// node type for <script> is "script" | ||
// node type for <style> is "style" | ||
if (node.type === 'script' || node.type === 'style') { | ||
// prevent text in <script> or <style> from being escaped | ||
// https://facebook.github.io/react/tips/dangerously-set-inner-html.html | ||
// skip node type "script" as react-dom does not render the contents | ||
if (node.type === 'style') { | ||
// prevent text in <style> from being escaped | ||
// https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml | ||
if (node.children[0]) { | ||
@@ -91,3 +95,3 @@ props.dangerouslySetInnerHTML = { | ||
result.push(React.createElement(node.name, props, children)); | ||
result.push(createElement(node.name, props, children)); | ||
} | ||
@@ -94,0 +98,0 @@ |
{ | ||
"name": "html-react-parser", | ||
"version": "0.7.1", | ||
"version": "0.8.0", | ||
"description": "An HTML to React parser.", | ||
@@ -10,7 +10,6 @@ "author": "Mark <mark@remarkablemark.org>", | ||
"build": "npm run clean && npm run build:min && npm run build:unmin", | ||
"build:min": "cross-env NODE_ENV=production webpack -o dist/html-react-parser.min.js", | ||
"build:unmin": "cross-env NODE_ENV=development webpack -o dist/html-react-parser.js", | ||
"build:min": "cross-env NODE_ENV=production webpack --output-filename html-react-parser.min.js", | ||
"build:unmin": "cross-env NODE_ENV=development webpack --output-filename html-react-parser.js", | ||
"clean": "rimraf dist", | ||
"cover": "istanbul cover _mocha -- -R spec \"test/**/*\"", | ||
"coveralls": "cat coverage/lcov.info | coveralls", | ||
"coveralls": "nyc report --reporter=text-lcov | coveralls", | ||
"lint": "eslint --ignore-path .gitignore .", | ||
@@ -21,3 +20,5 @@ "lint:fix": "npm run lint -- --fix", | ||
"release": "standard-version --no-verify", | ||
"test": "mocha" | ||
"test": "mocha", | ||
"test:coverage": "nyc npm test", | ||
"test:coverage:report": "nyc report --reporter=html" | ||
}, | ||
@@ -32,35 +33,35 @@ "repository": { | ||
"keywords": [ | ||
"html-react-parser", | ||
"html", | ||
"dom", | ||
"react", | ||
"parser", | ||
"converter" | ||
"dom" | ||
], | ||
"dependencies": { | ||
"@types/domhandler": "2.4.1", | ||
"html-dom-parser": "0.2.1", | ||
"html-dom-parser": "0.2.2", | ||
"react-dom-core": "0.1.1", | ||
"style-to-object": "0.2.2" | ||
"style-to-object": "0.2.3" | ||
}, | ||
"devDependencies": { | ||
"@commitlint/cli": "^7.2.1", | ||
"@commitlint/config-conventional": "^7.1.2", | ||
"@types/react": "16.8.8", | ||
"benchmark": "2.1.4", | ||
"coveralls": "^3.0.2", | ||
"cross-env": "5.2.0", | ||
"dtslint": "0.5.5", | ||
"eslint": "^5.10.0", | ||
"eslint-plugin-prettier": "^3.0.0", | ||
"husky": "^1.3.0", | ||
"istanbul": "^0.4.5", | ||
"lint-staged": "^8.1.0", | ||
"mocha": "^5.2.0", | ||
"prettier": "^1.15.3", | ||
"@commitlint/cli": "^8.0.0", | ||
"@commitlint/config-conventional": "^8.0.0", | ||
"@types/react": "^16.8.22", | ||
"benchmark": "^2.1.4", | ||
"coveralls": "^3.0.4", | ||
"cross-env": "^5.2.0", | ||
"dtslint": "^0.8.0", | ||
"eslint": "^6.0.0", | ||
"eslint-plugin-prettier": "^3.1.0", | ||
"husky": "^2.4.1", | ||
"lint-staged": "^8.2.1", | ||
"mocha": "^6.1.4", | ||
"nyc": "^14.1.1", | ||
"prettier": "^1.18.2", | ||
"react": "^16", | ||
"react-dom": "^16", | ||
"rimraf": "2.6.3", | ||
"standard-version": "^4.4.0", | ||
"webpack": "^4.27.1", | ||
"webpack-cli": "^3.1.2" | ||
"rimraf": "^2.6.3", | ||
"standard-version": "^6.0.1", | ||
"webpack": "^4.35.0", | ||
"webpack-cli": "^3.3.5" | ||
}, | ||
@@ -71,4 +72,4 @@ "peerDependencies": { | ||
"files": [ | ||
"dist", | ||
"lib", | ||
"/dist", | ||
"/lib", | ||
"index.d.ts" | ||
@@ -75,0 +76,0 @@ ], |
104
README.md
@@ -11,3 +11,3 @@ # html-react-parser | ||
An HTML to React parser that works on both the server and the browser: | ||
HTML to React parser that works on both the server (Node.js) and the client (browser): | ||
@@ -18,5 +18,5 @@ ``` | ||
The parser converts an HTML string to [React element(s)](https://reactjs.org/docs/react-api.html#creating-react-elements). If you want to [replace an element](#replacedomnode) with your own custom element, there's an [option](#options) to do that. | ||
It converts an HTML string to one or more [React elements](https://reactjs.org/docs/react-api.html#creating-react-elements). There's also an option to [replace an element](#replacedomnode) with your own. | ||
Example: | ||
#### Example: | ||
@@ -28,6 +28,4 @@ ```js | ||
[CodeSandbox](https://codesandbox.io/s/940pov1l4w) | [JSFiddle](https://jsfiddle.net/remarkablemark/7v86d800/) | [repl.it](https://repl.it/@remarkablemark/html-react-parser) | ||
[CodeSandbox](https://codesandbox.io/s/940pov1l4w) | [JSFiddle](https://jsfiddle.net/remarkablemark/7v86d800/) | [Repl.it](https://repl.it/@remarkablemark/html-react-parser) | [Examples](https://github.com/remarkablemark/html-react-parser/tree/master/examples) | ||
See [usage](#usage) and [examples](https://github.com/remarkablemark/html-react-parser/tree/master/examples). | ||
## Installation | ||
@@ -47,3 +45,3 @@ | ||
[unpkg](https://unpkg.com/html-react-parser/) (CDN): | ||
[CDN](https://unpkg.com/html-react-parser/): | ||
@@ -61,5 +59,8 @@ ```html | ||
Given `html-react-parser` is imported: | ||
Import the module: | ||
```js | ||
// CommonJS | ||
const parse = require('html-react-parser'); | ||
// ES Modules | ||
@@ -78,16 +79,14 @@ import parse from 'html-react-parser'; | ||
```js | ||
parse('<p>sibling 1</p><p>sibling 2</p>'); | ||
parse('<li>Item 1</li><li>Item 2</li>'); | ||
``` | ||
Because the parser returns an array for adjacent elements, make sure it's nested under a parent element when rendered: | ||
Since adjacent elements are parsed as an array, make sure to render them under a parent node: | ||
```jsx | ||
import React, { Component } from 'react'; | ||
import parse from 'html-react-parser'; | ||
class App extends Component { | ||
render() { | ||
return <div>{parse('<p>sibling 1</p><p>sibling 2</p>')}</div>; | ||
} | ||
} | ||
<ul> | ||
{parse(` | ||
<li>Item 1</li> | ||
<li>Item 2</li> | ||
`)} | ||
</ul> | ||
``` | ||
@@ -98,3 +97,3 @@ | ||
```js | ||
parse('<ul><li>item</li></ul>'); | ||
parse('<body><p>Lorem ipsum</p></body>'); | ||
``` | ||
@@ -114,11 +113,31 @@ | ||
The `replace` method allows you to swap an element with your own React element. | ||
The `replace` callback allows you to swap an element with another React element. | ||
The first argument is `domNode`―an object with the same output as [htmlparser2](https://github.com/fb55/htmlparser2)'s [domhandler](https://github.com/fb55/domhandler#example). | ||
The first argument is an object with the same output as [htmlparser2](https://github.com/fb55/htmlparser2)'s [domhandler](https://github.com/fb55/domhandler#example): | ||
The element is replaced only if a valid React element is returned. | ||
```js | ||
parse('<br>', { | ||
replace: function(domNode) { | ||
console.dir(domNode, { depth: null }); | ||
} | ||
}); | ||
``` | ||
Console output: | ||
```js | ||
{ type: 'tag', | ||
name: 'br', | ||
attribs: {}, | ||
children: [], | ||
next: null, | ||
prev: null, | ||
parent: null } | ||
``` | ||
The element is replaced only if a _valid_ React element is returned: | ||
```js | ||
parse('<p id="replace">text</p>', { | ||
replace: function(domNode) { | ||
replace: domNode => { | ||
if (domNode.attribs && domNode.attribs.id === 'replace') { | ||
@@ -131,3 +150,3 @@ return React.createElement('span', {}, 'replaced'); | ||
The following [example](https://repl.it/@remarkablemark/html-react-parser-replace-example) uses `replace` to modify the children: | ||
Here's an [example](https://repl.it/@remarkablemark/html-react-parser-replace-example) that modifies an element but keeps the children: | ||
@@ -155,3 +174,5 @@ ```jsx | ||
); | ||
} else if (attribs.class === 'prettify') { | ||
} | ||
if (attribs.class === 'prettify') { | ||
return ( | ||
@@ -166,7 +187,6 @@ <span style={{ color: 'hotpink' }}> | ||
const reactElement = parse(html, options); | ||
console.log(renderToStaticMarkup(reactElement)); | ||
console.log(renderToStaticMarkup(parse(html, options))); | ||
``` | ||
The output: | ||
Output: | ||
@@ -181,8 +201,7 @@ ```html | ||
The following [example](https://repl.it/@remarkablemark/html-react-parser-issue-56) uses `replace` to exclude an element: | ||
Here's an [example](https://repl.it/@remarkablemark/html-react-parser-56) that excludes an element: | ||
```jsx | ||
parse('<p><br id="remove"></p>', { | ||
replace: ({ attribs }) => | ||
attribs && attribs.id === 'remove' && <React.Fragment /> | ||
replace: ({ attribs }) => attribs && attribs.id === 'remove' && <Fragment /> | ||
}); | ||
@@ -199,3 +218,3 @@ ``` | ||
Although `<script>` tags are parsed, [react-dom](https://reactjs.org/docs/react-dom.html) does not render the contents. See [#98](https://github.com/remarkablemark/html-react-parser/issues/98). | ||
No, `<script>` tags are skipped because [react-dom](https://reactjs.org/docs/react-dom.html) does not render the contents. See [#98](https://github.com/remarkablemark/html-react-parser/issues/98). | ||
@@ -208,7 +227,26 @@ #### My HTML attributes aren't getting called. | ||
Run tests: | ||
```sh | ||
$ npm test | ||
$ npm run lint # npm run lint:fix | ||
``` | ||
Run tests with coverage: | ||
```sh | ||
$ npm run test:coverage | ||
``` | ||
Lint files: | ||
```sh | ||
$ npm run lint | ||
``` | ||
Fix lint errors: | ||
```sh | ||
$ npm run lint:fix | ||
``` | ||
## Benchmarks | ||
@@ -215,0 +253,0 @@ |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
208516
14
867
271
17
+ Addedhtml-dom-parser@0.2.2(transitive)
+ Addedinline-style-parser@0.1.1(transitive)
+ Addedstyle-to-object@0.2.3(transitive)
- Removedatob@2.1.2(transitive)
- Removedcss@2.2.4(transitive)
- Removeddecode-uri-component@0.2.2(transitive)
- Removedhtml-dom-parser@0.2.1(transitive)
- Removedresolve-url@0.2.1(transitive)
- Removedsource-map@0.6.1(transitive)
- Removedsource-map-resolve@0.5.3(transitive)
- Removedsource-map-url@0.4.1(transitive)
- Removedstyle-to-object@0.2.2(transitive)
- Removedurix@0.1.0(transitive)
Updatedhtml-dom-parser@0.2.2
Updatedstyle-to-object@0.2.3