@dataunlocker/defender-react
Version:
DataUnlocker Defender for React applications.
4 lines (2 loc) • 1.7 kB
JavaScript
'use client';
import{useState as n,useRef as r,useEffect as e}from"react";import{onLoad as t,onError as o}from"@dataunlocker/defender";import{jsx as u}from"react/jsx-runtime";function a(){return a=Object.assign?Object.assign.bind():function(n){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var t in e)({}).hasOwnProperty.call(e,t)&&(n[t]=e[t])}return n},a.apply(null,arguments)}var l="current",i=function(n){return n[l]},c=function(n,r){return n[l]=r},f=function(){return d()},d=function(u,a){var l=n(!0),f=l[0],d=l[1],v=n(0),h=v[0],p=v[1],m=n(void 0),g=m[0],s=m[1],y=r(u),O=r(a);e(function(){c(y,u)},[u]),e(function(){c(O,a)},[a]);var b=r(!1);return e(function(){i(b)||(c(b,!0),d(!0),t(function(n){var r;d(!1),s(n),null==(r=i(y))||r(n)}),o(function(n){var r;return p(n),null==(r=i(O))?void 0:r(n)}))},[]),[f,h,g]},v=["children","onLoad","onError"],h=/(\starget=['"]_blank['"])/g,p=/(\shref=['"])[^'"]+/g,m="__html",g="innerHTML",s=function(t){var o=t.children,l=t.onLoad,c=t.onError,f=function(n,r){if(null==n)return{};var e={};for(var t in n)if({}.hasOwnProperty.call(n,t)){if(r.indexOf(t)>=0)continue;e[t]=n[t]}return e}(t,v),s=d(l,c),y=s[0],O=s[1],b=n(null),E=b[0],L=b[1],j=r(null),w=null!==E&&(y||!!O);return e(function(){var n={};try{var r;n[m]=(null==(r=i(j))?void 0:r[g].replace(h,"").replace(p,"$1#"))||""}catch(r){n[m]=""}L(n)},[]),e(function(){try{n=document.createElement("div"),r=document.createElement("a"),e=Date.now()+"",n.appendChild(r),r.href="#"+e,n[g].replace(p,"$1#").length!==n[g].length-e.length&&L({})}catch(n){L({})}var n,r,e},[y]),w&&(f.dangerouslySetInnerHTML=E),/*#__PURE__*/u("div",a({ref:j},f,{children:w?null:o}))};export{s as Defender,f as useDefender};