diff --git a/.github/workflows/prod-ci.yml b/.github/workflows/prod-ci.yml index c1e3d1f..e0a8170 100644 --- a/.github/workflows/prod-ci.yml +++ b/.github/workflows/prod-ci.yml @@ -62,7 +62,6 @@ jobs: echo "BACKEND_IMAGE_TAG=${{ github.sha }}" > .env echo "FRONTEND_IMAGE_TAG=${{ github.sha }}" >> .env echo "REGISTRY_USER=${{ github.repository_owner }}" >> .env - echo "BACK_API_URL=${{ secrets.BACK_API_URL }}" >> .env docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --remove-orphans --build docker image prune -af diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 0fb3419..b73b2d4 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -10,8 +10,6 @@ services: frontend: image: ghcr.io/${REGISTRY_USER}/frontend:${FRONTEND_IMAGE_TAG} - environment: - - VITE_API_URL=${BACK_API_URL} ports: - "8081:80" restart: always diff --git a/frontend/dist/assets/index-BugyCYCc.js b/frontend/dist/assets/index-BugyCYCc.js deleted file mode 100644 index a67af59..0000000 --- a/frontend/dist/assets/index-BugyCYCc.js +++ /dev/null @@ -1,153 +0,0 @@ -var J9=Object.defineProperty;var h_=e=>{throw TypeError(e)};var eB=(e,t,r)=>t in e?J9(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var bg=(e,t,r)=>eB(e,typeof t!="symbol"?t+"":t,r),Ag=(e,t,r)=>t.has(e)||h_("Cannot "+r);var V=(e,t,r)=>(Ag(e,t,"read from private field"),r?r.call(e):t.get(e)),Be=(e,t,r)=>t.has(e)?h_("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Ee=(e,t,r,n)=>(Ag(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),Ge=(e,t,r)=>(Ag(e,t,"access private method"),r);var od=(e,t,r,n)=>({set _(i){Ee(e,t,i,r)},get _(){return V(e,t,n)}});function tB(e,t){for(var r=0;rn[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const u of o.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function r(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=r(i);fetch(i.href,o)}})();var Sg=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Pa(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function rB(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if(typeof t=="function"){var r=function n(){return this instanceof n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach(function(n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}),r}var wg={exports:{}},bc={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var v_;function nB(){if(v_)return bc;v_=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(n,i,o){var u=null;if(o!==void 0&&(u=""+o),i.key!==void 0&&(u=""+i.key),"key"in i){o={};for(var c in i)c!=="key"&&(o[c]=i[c])}else o=i;return i=o.ref,{$$typeof:e,type:n,key:u,ref:i!==void 0?i:null,props:o}}return bc.Fragment=t,bc.jsx=r,bc.jsxs=r,bc}var m_;function aB(){return m_||(m_=1,wg.exports=nB()),wg.exports}var x=aB(),Eg={exports:{}},Ac={},_g={exports:{}},Cg={};/** - * @license React - * scheduler.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var p_;function iB(){return p_||(p_=1,function(e){function t(U,te){var oe=U.length;U.push(te);e:for(;0>>1,I=U[de];if(0>>1;dei(Q,oe))Ji(ge,Q)?(U[de]=ge,U[J]=oe,de=J):(U[de]=Q,U[H]=oe,de=H);else if(Ji(ge,oe))U[de]=ge,U[J]=oe,de=J;else break e}}return te}function i(U,te){var oe=U.sortIndex-te.sortIndex;return oe!==0?oe:U.id-te.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var u=Date,c=u.now();e.unstable_now=function(){return u.now()-c}}var h=[],f=[],v=1,m=null,p=3,y=!1,b=!1,w=!1,A=!1,C=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,E=typeof setImmediate<"u"?setImmediate:null;function j(U){for(var te=r(f);te!==null;){if(te.callback===null)n(f);else if(te.startTime<=U)n(f),te.sortIndex=te.expirationTime,t(h,te);else break;te=r(f)}}function D(U){if(w=!1,j(U),!b)if(r(h)!==null)b=!0,T||(T=!0,z());else{var te=r(f);te!==null&&ne(D,te.startTime-U)}}var T=!1,P=-1,B=5,F=-1;function R(){return A?!0:!(e.unstable_now()-FU&&R());){var de=m.callback;if(typeof de=="function"){m.callback=null,p=m.priorityLevel;var I=de(m.expirationTime<=U);if(U=e.unstable_now(),typeof I=="function"){m.callback=I,j(U),te=!0;break t}m===r(h)&&n(h),j(U)}else n(h);m=r(h)}if(m!==null)te=!0;else{var q=r(f);q!==null&&ne(D,q.startTime-U),te=!1}}break e}finally{m=null,p=oe,y=!1}te=void 0}}finally{te?z():T=!1}}}var z;if(typeof E=="function")z=function(){E(M)};else if(typeof MessageChannel<"u"){var G=new MessageChannel,Z=G.port2;G.port1.onmessage=M,z=function(){Z.postMessage(null)}}else z=function(){C(M,0)};function ne(U,te){P=C(function(){U(e.unstable_now())},te)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(U){U.callback=null},e.unstable_forceFrameRate=function(U){0>U||125de?(U.sortIndex=oe,t(f,U),r(h)===null&&U===r(f)&&(w?(_(P),P=-1):w=!0,ne(D,oe-de))):(U.sortIndex=I,t(h,U),b||y||(b=!0,T||(T=!0,z()))),U},e.unstable_shouldYield=R,e.unstable_wrapCallback=function(U){var te=p;return function(){var oe=p;p=te;try{return U.apply(this,arguments)}finally{p=oe}}}}(Cg)),Cg}var g_;function sB(){return g_||(g_=1,_g.exports=iB()),_g.exports}var Og={exports:{}},Ve={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var y_;function oB(){if(y_)return Ve;y_=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),u=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),m=Symbol.iterator;function p(I){return I===null||typeof I!="object"?null:(I=m&&I[m]||I["@@iterator"],typeof I=="function"?I:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,w={};function A(I,q,H){this.props=I,this.context=q,this.refs=w,this.updater=H||y}A.prototype.isReactComponent={},A.prototype.setState=function(I,q){if(typeof I!="object"&&typeof I!="function"&&I!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,I,q,"setState")},A.prototype.forceUpdate=function(I){this.updater.enqueueForceUpdate(this,I,"forceUpdate")};function C(){}C.prototype=A.prototype;function _(I,q,H){this.props=I,this.context=q,this.refs=w,this.updater=H||y}var E=_.prototype=new C;E.constructor=_,b(E,A.prototype),E.isPureReactComponent=!0;var j=Array.isArray,D={H:null,A:null,T:null,S:null,V:null},T=Object.prototype.hasOwnProperty;function P(I,q,H,Q,J,ge){return H=ge.ref,{$$typeof:e,type:I,key:q,ref:H!==void 0?H:null,props:ge}}function B(I,q){return P(I.type,q,void 0,void 0,void 0,I.props)}function F(I){return typeof I=="object"&&I!==null&&I.$$typeof===e}function R(I){var q={"=":"=0",":":"=2"};return"$"+I.replace(/[=:]/g,function(H){return q[H]})}var M=/\/+/g;function z(I,q){return typeof I=="object"&&I!==null&&I.key!=null?R(""+I.key):q.toString(36)}function G(){}function Z(I){switch(I.status){case"fulfilled":return I.value;case"rejected":throw I.reason;default:switch(typeof I.status=="string"?I.then(G,G):(I.status="pending",I.then(function(q){I.status==="pending"&&(I.status="fulfilled",I.value=q)},function(q){I.status==="pending"&&(I.status="rejected",I.reason=q)})),I.status){case"fulfilled":return I.value;case"rejected":throw I.reason}}throw I}function ne(I,q,H,Q,J){var ge=typeof I;(ge==="undefined"||ge==="boolean")&&(I=null);var xe=!1;if(I===null)xe=!0;else switch(ge){case"bigint":case"string":case"number":xe=!0;break;case"object":switch(I.$$typeof){case e:case t:xe=!0;break;case v:return xe=I._init,ne(xe(I._payload),q,H,Q,J)}}if(xe)return J=J(I),xe=Q===""?"."+z(I,0):Q,j(J)?(H="",xe!=null&&(H=xe.replace(M,"$&/")+"/"),ne(J,q,H,"",function(ve){return ve})):J!=null&&(F(J)&&(J=B(J,H+(J.key==null||I&&I.key===J.key?"":(""+J.key).replace(M,"$&/")+"/")+xe)),q.push(J)),1;xe=0;var qe=Q===""?".":Q+":";if(j(I))for(var Se=0;Se"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),jg.exports=lB(),jg.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var S_;function uB(){if(S_)return Ac;S_=1;var e=sB(),t=lu(),r=Nj();function n(a){var s="https://react.dev/errors/"+a;if(1I||(a.current=de[I],de[I]=null,I--)}function Q(a,s){I++,de[I]=a.current,a.current=s}var J=q(null),ge=q(null),xe=q(null),qe=q(null);function Se(a,s){switch(Q(xe,s),Q(ge,a),Q(J,null),s.nodeType){case 9:case 11:a=(a=s.documentElement)&&(a=a.namespaceURI)?LE(a):0;break;default:if(a=s.tagName,s=s.namespaceURI)s=LE(s),a=qE(s,a);else switch(a){case"svg":a=1;break;case"math":a=2;break;default:a=0}}H(J),Q(J,a)}function ve(){H(J),H(ge),H(xe)}function Pe(a){a.memoizedState!==null&&Q(qe,a);var s=J.current,l=qE(s,a.type);s!==l&&(Q(ge,a),Q(J,l))}function $e(a){ge.current===a&&(H(J),H(ge)),qe.current===a&&(H(qe),mc._currentValue=oe)}var fe=Object.prototype.hasOwnProperty,st=e.unstable_scheduleCallback,ze=e.unstable_cancelCallback,Bt=e.unstable_shouldYield,Mt=e.unstable_requestPaint,jt=e.unstable_now,Qn=e.unstable_getCurrentPriorityLevel,Ba=e.unstable_ImmediatePriority,$=e.unstable_UserBlockingPriority,X=e.unstable_NormalPriority,se=e.unstable_LowPriority,be=e.unstable_IdlePriority,ye=e.log,me=e.unstable_setDisableYieldValue,Ce=null,Fe=null;function Xe(a){if(typeof ye=="function"&&me(a),Fe&&typeof Fe.setStrictMode=="function")try{Fe.setStrictMode(Ce,a)}catch{}}var mt=Math.clz32?Math.clz32:Ra,Ma=Math.log,br=Math.LN2;function Ra(a){return a>>>=0,a===0?32:31-(Ma(a)/br|0)|0}var ma=256,Zn=4194304;function Cn(a){var s=a&42;if(s!==0)return s;switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function Fa(a,s,l){var d=a.pendingLanes;if(d===0)return 0;var g=0,S=a.suspendedLanes,N=a.pingedLanes;a=a.warmLanes;var k=d&134217727;return k!==0?(d=k&~S,d!==0?g=Cn(d):(N&=k,N!==0?g=Cn(N):l||(l=k&~a,l!==0&&(g=Cn(l))))):(k=d&~S,k!==0?g=Cn(k):N!==0?g=Cn(N):l||(l=d&~a,l!==0&&(g=Cn(l)))),g===0?0:s!==0&&s!==g&&(s&S)===0&&(S=g&-g,l=s&-s,S>=l||S===32&&(l&4194048)!==0)?s:g}function Ia(a,s){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&s)===0}function Ts(a,s){switch(a){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return s+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Kf(){var a=ma;return ma<<=1,(ma&4194048)===0&&(ma=256),a}function wu(){var a=Zn;return Zn<<=1,(Zn&62914560)===0&&(Zn=4194304),a}function Eu(a){for(var s=[],l=0;31>l;l++)s.push(a);return s}function Ei(a,s){a.pendingLanes|=s,s!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function fm(a,s,l,d,g,S){var N=a.pendingLanes;a.pendingLanes=l,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=l,a.entangledLanes&=l,a.errorRecoveryDisabledLanes&=l,a.shellSuspendCounter=0;var k=a.entanglements,L=a.expirationTimes,ee=a.hiddenUpdates;for(l=N&~l;0)":-1g||L[d]!==ee[g]){var le=` -`+L[d].replace(" at new "," at ");return a.displayName&&le.includes("")&&(le=le.replace("",a.displayName)),le}while(1<=d&&0<=g);break}}}finally{mm=!1,Error.prepareStackTrace=l}return(l=a?a.displayName||a.name:"")?Lo(l):""}function Gk(a){switch(a.tag){case 26:case 27:case 5:return Lo(a.type);case 16:return Lo("Lazy");case 13:return Lo("Suspense");case 19:return Lo("SuspenseList");case 0:case 15:return pm(a.type,!1);case 11:return pm(a.type.render,!1);case 1:return pm(a.type,!0);case 31:return Lo("Activity");default:return""}}function MA(a){try{var s="";do s+=Gk(a),a=a.return;while(a);return s}catch(l){return` -Error generating stack: `+l.message+` -`+l.stack}}function On(a){switch(typeof a){case"bigint":case"boolean":case"number":case"string":case"undefined":return a;case"object":return a;default:return""}}function RA(a){var s=a.type;return(a=a.nodeName)&&a.toLowerCase()==="input"&&(s==="checkbox"||s==="radio")}function Yk(a){var s=RA(a)?"checked":"value",l=Object.getOwnPropertyDescriptor(a.constructor.prototype,s),d=""+a[s];if(!a.hasOwnProperty(s)&&typeof l<"u"&&typeof l.get=="function"&&typeof l.set=="function"){var g=l.get,S=l.set;return Object.defineProperty(a,s,{configurable:!0,get:function(){return g.call(this)},set:function(N){d=""+N,S.call(this,N)}}),Object.defineProperty(a,s,{enumerable:l.enumerable}),{getValue:function(){return d},setValue:function(N){d=""+N},stopTracking:function(){a._valueTracker=null,delete a[s]}}}}function Jf(a){a._valueTracker||(a._valueTracker=Yk(a))}function FA(a){if(!a)return!1;var s=a._valueTracker;if(!s)return!0;var l=s.getValue(),d="";return a&&(d=RA(a)?a.checked?"true":"false":a.value),a=d,a!==l?(s.setValue(a),!0):!1}function e0(a){if(a=a||(typeof document<"u"?document:void 0),typeof a>"u")return null;try{return a.activeElement||a.body}catch{return a.body}}var Qk=/[\n"\\]/g;function jn(a){return a.replace(Qk,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function gm(a,s,l,d,g,S,N,k){a.name="",N!=null&&typeof N!="function"&&typeof N!="symbol"&&typeof N!="boolean"?a.type=N:a.removeAttribute("type"),s!=null?N==="number"?(s===0&&a.value===""||a.value!=s)&&(a.value=""+On(s)):a.value!==""+On(s)&&(a.value=""+On(s)):N!=="submit"&&N!=="reset"||a.removeAttribute("value"),s!=null?ym(a,N,On(s)):l!=null?ym(a,N,On(l)):d!=null&&a.removeAttribute("value"),g==null&&S!=null&&(a.defaultChecked=!!S),g!=null&&(a.checked=g&&typeof g!="function"&&typeof g!="symbol"),k!=null&&typeof k!="function"&&typeof k!="symbol"&&typeof k!="boolean"?a.name=""+On(k):a.removeAttribute("name")}function IA(a,s,l,d,g,S,N,k){if(S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"&&(a.type=S),s!=null||l!=null){if(!(S!=="submit"&&S!=="reset"||s!=null))return;l=l!=null?""+On(l):"",s=s!=null?""+On(s):l,k||s===a.value||(a.value=s),a.defaultValue=s}d=d??g,d=typeof d!="function"&&typeof d!="symbol"&&!!d,a.checked=k?a.checked:!!d,a.defaultChecked=!!d,N!=null&&typeof N!="function"&&typeof N!="symbol"&&typeof N!="boolean"&&(a.name=N)}function ym(a,s,l){s==="number"&&e0(a.ownerDocument)===a||a.defaultValue===""+l||(a.defaultValue=""+l)}function qo(a,s,l,d){if(a=a.options,s){s={};for(var g=0;g"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),wm=!1;if(Ua)try{var Du={};Object.defineProperty(Du,"passive",{get:function(){wm=!0}}),window.addEventListener("test",Du,Du),window.removeEventListener("test",Du,Du)}catch{wm=!1}var _i=null,Em=null,r0=null;function VA(){if(r0)return r0;var a,s=Em,l=s.length,d,g="value"in _i?_i.value:_i.textContent,S=g.length;for(a=0;a=ku),XA=" ",WA=!1;function JA(a,s){switch(a){case"keyup":return wP.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function eS(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var Ko=!1;function _P(a,s){switch(a){case"compositionend":return eS(s);case"keypress":return s.which!==32?null:(WA=!0,XA);case"textInput":return a=s.data,a===XA&&WA?null:a;default:return null}}function CP(a,s){if(Ko)return a==="compositionend"||!Dm&&JA(a,s)?(a=VA(),r0=Em=_i=null,Ko=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:l,offset:s-a};a=d}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=lS(l)}}function cS(a,s){return a&&s?a===s?!0:a&&a.nodeType===3?!1:s&&s.nodeType===3?cS(a,s.parentNode):"contains"in a?a.contains(s):a.compareDocumentPosition?!!(a.compareDocumentPosition(s)&16):!1:!1}function fS(a){a=a!=null&&a.ownerDocument!=null&&a.ownerDocument.defaultView!=null?a.ownerDocument.defaultView:window;for(var s=e0(a.document);s instanceof a.HTMLIFrameElement;){try{var l=typeof s.contentWindow.location.href=="string"}catch{l=!1}if(l)a=s.contentWindow;else break;s=e0(a.document)}return s}function km(a){var s=a&&a.nodeName&&a.nodeName.toLowerCase();return s&&(s==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||s==="textarea"||a.contentEditable==="true")}var BP=Ua&&"documentMode"in document&&11>=document.documentMode,Go=null,Pm=null,Ru=null,Bm=!1;function dS(a,s,l){var d=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Bm||Go==null||Go!==e0(d)||(d=Go,"selectionStart"in d&&km(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Ru&&Mu(Ru,d)||(Ru=d,d=K0(Pm,"onSelect"),0>=N,g-=N,qa=1<<32-mt(s)+g|l<S?S:8;var N=U.T,k={};U.T=k,xp(a,!1,s,l);try{var L=g(),ee=U.S;if(ee!==null&&ee(k,L),L!==null&&typeof L=="object"&&typeof L.then=="function"){var le=$P(L,d);Xu(a,s,le,fn(a))}else Xu(a,s,d,fn(a))}catch(ce){Xu(a,s,{then:function(){},status:"rejected",reason:ce},fn())}finally{te.p=S,U.T=N}}function YP(){}function gp(a,s,l,d){if(a.tag!==5)throw Error(n(476));var g=hw(a).queue;dw(a,g,s,oe,l===null?YP:function(){return vw(a),l(d)})}function hw(a){var s=a.memoizedState;if(s!==null)return s;s={memoizedState:oe,baseState:oe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ka,lastRenderedState:oe},next:null};var l={};return s.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ka,lastRenderedState:l},next:null},a.memoizedState=s,a=a.alternate,a!==null&&(a.memoizedState=s),s}function vw(a){var s=hw(a).next.queue;Xu(a,s,{},fn())}function yp(){return Nr(mc)}function mw(){return Qt().memoizedState}function pw(){return Qt().memoizedState}function QP(a){for(var s=a.return;s!==null;){switch(s.tag){case 24:case 3:var l=fn();a=ji(l);var d=Di(s,a,l);d!==null&&(dn(d,s,l),Vu(d,s,l)),s={cache:Ym()},a.payload=s;return}s=s.return}}function ZP(a,s,l){var d=fn();l={lane:d,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null},C0(a)?yw(s,l):(l=Im(a,s,l,d),l!==null&&(dn(l,a,d),xw(l,s,d)))}function gw(a,s,l){var d=fn();Xu(a,s,l,d)}function Xu(a,s,l,d){var g={lane:d,revertLane:0,action:l,hasEagerState:!1,eagerState:null,next:null};if(C0(a))yw(s,g);else{var S=a.alternate;if(a.lanes===0&&(S===null||S.lanes===0)&&(S=s.lastRenderedReducer,S!==null))try{var N=s.lastRenderedState,k=S(N,l);if(g.hasEagerState=!0,g.eagerState=k,sn(k,N))return u0(a,s,g,0),Ct===null&&l0(),!1}catch{}finally{}if(l=Im(a,s,g,d),l!==null)return dn(l,a,d),xw(l,s,d),!0}return!1}function xp(a,s,l,d){if(d={lane:2,revertLane:Xp(),action:d,hasEagerState:!1,eagerState:null,next:null},C0(a)){if(s)throw Error(n(479))}else s=Im(a,l,d,2),s!==null&&dn(s,a,2)}function C0(a){var s=a.alternate;return a===Ye||s!==null&&s===Ye}function yw(a,s){nl=b0=!0;var l=a.pending;l===null?s.next=s:(s.next=l.next,l.next=s),a.pending=s}function xw(a,s,l){if((l&4194048)!==0){var d=s.lanes;d&=a.pendingLanes,l|=d,s.lanes=l,Yf(a,l)}}var O0={readContext:Nr,use:S0,useCallback:$t,useContext:$t,useEffect:$t,useImperativeHandle:$t,useLayoutEffect:$t,useInsertionEffect:$t,useMemo:$t,useReducer:$t,useRef:$t,useState:$t,useDebugValue:$t,useDeferredValue:$t,useTransition:$t,useSyncExternalStore:$t,useId:$t,useHostTransitionStatus:$t,useFormState:$t,useActionState:$t,useOptimistic:$t,useMemoCache:$t,useCacheRefresh:$t},bw={readContext:Nr,use:S0,useCallback:function(a,s){return Yr().memoizedState=[a,s===void 0?null:s],a},useContext:Nr,useEffect:nw,useImperativeHandle:function(a,s,l){l=l!=null?l.concat([a]):null,_0(4194308,4,ow.bind(null,s,a),l)},useLayoutEffect:function(a,s){return _0(4194308,4,a,s)},useInsertionEffect:function(a,s){_0(4,2,a,s)},useMemo:function(a,s){var l=Yr();s=s===void 0?null:s;var d=a();if(Hs){Xe(!0);try{a()}finally{Xe(!1)}}return l.memoizedState=[d,s],d},useReducer:function(a,s,l){var d=Yr();if(l!==void 0){var g=l(s);if(Hs){Xe(!0);try{l(s)}finally{Xe(!1)}}}else g=s;return d.memoizedState=d.baseState=g,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:g},d.queue=a,a=a.dispatch=ZP.bind(null,Ye,a),[d.memoizedState,a]},useRef:function(a){var s=Yr();return a={current:a},s.memoizedState=a},useState:function(a){a=hp(a);var s=a.queue,l=gw.bind(null,Ye,s);return s.dispatch=l,[a.memoizedState,l]},useDebugValue:mp,useDeferredValue:function(a,s){var l=Yr();return pp(l,a,s)},useTransition:function(){var a=hp(!1);return a=dw.bind(null,Ye,a.queue,!0,!1),Yr().memoizedState=a,[!1,a]},useSyncExternalStore:function(a,s,l){var d=Ye,g=Yr();if(ft){if(l===void 0)throw Error(n(407));l=l()}else{if(l=s(),Ct===null)throw Error(n(349));(at&124)!==0||LS(d,s,l)}g.memoizedState=l;var S={value:l,getSnapshot:s};return g.queue=S,nw($S.bind(null,d,S,a),[a]),d.flags|=2048,il(9,E0(),qS.bind(null,d,S,l,s),null),l},useId:function(){var a=Yr(),s=Ct.identifierPrefix;if(ft){var l=$a,d=qa;l=(d&~(1<<32-mt(d)-1)).toString(32)+l,s="«"+s+"R"+l,l=A0++,0Re?(mr=ke,ke=null):mr=ke.sibling;var ot=re(Y,ke,W[Re],ue);if(ot===null){ke===null&&(ke=mr);break}a&&ke&&ot.alternate===null&&s(Y,ke),K=S(ot,K,Re),Qe===null?je=ot:Qe.sibling=ot,Qe=ot,ke=mr}if(Re===W.length)return l(Y,ke),ft&&Is(Y,Re),je;if(ke===null){for(;ReRe?(mr=ke,ke=null):mr=ke.sibling;var Ki=re(Y,ke,ot.value,ue);if(Ki===null){ke===null&&(ke=mr);break}a&&ke&&Ki.alternate===null&&s(Y,ke),K=S(Ki,K,Re),Qe===null?je=Ki:Qe.sibling=Ki,Qe=Ki,ke=mr}if(ot.done)return l(Y,ke),ft&&Is(Y,Re),je;if(ke===null){for(;!ot.done;Re++,ot=W.next())ot=ce(Y,ot.value,ue),ot!==null&&(K=S(ot,K,Re),Qe===null?je=ot:Qe.sibling=ot,Qe=ot);return ft&&Is(Y,Re),je}for(ke=d(ke);!ot.done;Re++,ot=W.next())ot=ae(ke,Y,Re,ot.value,ue),ot!==null&&(a&&ot.alternate!==null&&ke.delete(ot.key===null?Re:ot.key),K=S(ot,K,Re),Qe===null?je=ot:Qe.sibling=ot,Qe=ot);return a&&ke.forEach(function(W9){return s(Y,W9)}),ft&&Is(Y,Re),je}function St(Y,K,W,ue){if(typeof W=="object"&&W!==null&&W.type===b&&W.key===null&&(W=W.props.children),typeof W=="object"&&W!==null){switch(W.$$typeof){case p:e:{for(var je=W.key;K!==null;){if(K.key===je){if(je=W.type,je===b){if(K.tag===7){l(Y,K.sibling),ue=g(K,W.props.children),ue.return=Y,Y=ue;break e}}else if(K.elementType===je||typeof je=="object"&&je!==null&&je.$$typeof===B&&Sw(je)===K.type){l(Y,K.sibling),ue=g(K,W.props),Ju(ue,W),ue.return=Y,Y=ue;break e}l(Y,K);break}else s(Y,K);K=K.sibling}W.type===b?(ue=Rs(W.props.children,Y.mode,ue,W.key),ue.return=Y,Y=ue):(ue=f0(W.type,W.key,W.props,null,Y.mode,ue),Ju(ue,W),ue.return=Y,Y=ue)}return N(Y);case y:e:{for(je=W.key;K!==null;){if(K.key===je)if(K.tag===4&&K.stateNode.containerInfo===W.containerInfo&&K.stateNode.implementation===W.implementation){l(Y,K.sibling),ue=g(K,W.children||[]),ue.return=Y,Y=ue;break e}else{l(Y,K);break}else s(Y,K);K=K.sibling}ue=Lm(W,Y.mode,ue),ue.return=Y,Y=ue}return N(Y);case B:return je=W._init,W=je(W._payload),St(Y,K,W,ue)}if(ne(W))return Ie(Y,K,W,ue);if(z(W)){if(je=z(W),typeof je!="function")throw Error(n(150));return W=je.call(W),Me(Y,K,W,ue)}if(typeof W.then=="function")return St(Y,K,j0(W),ue);if(W.$$typeof===E)return St(Y,K,m0(Y,W),ue);D0(Y,W)}return typeof W=="string"&&W!==""||typeof W=="number"||typeof W=="bigint"?(W=""+W,K!==null&&K.tag===6?(l(Y,K.sibling),ue=g(K,W),ue.return=Y,Y=ue):(l(Y,K),ue=Um(W,Y.mode,ue),ue.return=Y,Y=ue),N(Y)):l(Y,K)}return function(Y,K,W,ue){try{Wu=0;var je=St(Y,K,W,ue);return sl=null,je}catch(ke){if(ke===$u||ke===g0)throw ke;var Qe=on(29,ke,null,Y.mode);return Qe.lanes=ue,Qe.return=Y,Qe}finally{}}}var ol=ww(!0),Ew=ww(!1),Pn=q(null),ya=null;function Ti(a){var s=a.alternate;Q(nr,nr.current&1),Q(Pn,a),ya===null&&(s===null||rl.current!==null||s.memoizedState!==null)&&(ya=a)}function _w(a){if(a.tag===22){if(Q(nr,nr.current),Q(Pn,a),ya===null){var s=a.alternate;s!==null&&s.memoizedState!==null&&(ya=a)}}else ki()}function ki(){Q(nr,nr.current),Q(Pn,Pn.current)}function Ga(a){H(Pn),ya===a&&(ya=null),H(nr)}var nr=q(0);function N0(a){for(var s=a;s!==null;){if(s.tag===13){var l=s.memoizedState;if(l!==null&&(l=l.dehydrated,l===null||l.data==="$?"||ug(l)))return s}else if(s.tag===19&&s.memoizedProps.revealOrder!==void 0){if((s.flags&128)!==0)return s}else if(s.child!==null){s.child.return=s,s=s.child;continue}if(s===a)break;for(;s.sibling===null;){if(s.return===null||s.return===a)return null;s=s.return}s.sibling.return=s.return,s=s.sibling}return null}function bp(a,s,l,d){s=a.memoizedState,l=l(d,s),l=l==null?s:v({},s,l),a.memoizedState=l,a.lanes===0&&(a.updateQueue.baseState=l)}var Ap={enqueueSetState:function(a,s,l){a=a._reactInternals;var d=fn(),g=ji(d);g.payload=s,l!=null&&(g.callback=l),s=Di(a,g,d),s!==null&&(dn(s,a,d),Vu(s,a,d))},enqueueReplaceState:function(a,s,l){a=a._reactInternals;var d=fn(),g=ji(d);g.tag=1,g.payload=s,l!=null&&(g.callback=l),s=Di(a,g,d),s!==null&&(dn(s,a,d),Vu(s,a,d))},enqueueForceUpdate:function(a,s){a=a._reactInternals;var l=fn(),d=ji(l);d.tag=2,s!=null&&(d.callback=s),s=Di(a,d,l),s!==null&&(dn(s,a,l),Vu(s,a,l))}};function Cw(a,s,l,d,g,S,N){return a=a.stateNode,typeof a.shouldComponentUpdate=="function"?a.shouldComponentUpdate(d,S,N):s.prototype&&s.prototype.isPureReactComponent?!Mu(l,d)||!Mu(g,S):!0}function Ow(a,s,l,d){a=s.state,typeof s.componentWillReceiveProps=="function"&&s.componentWillReceiveProps(l,d),typeof s.UNSAFE_componentWillReceiveProps=="function"&&s.UNSAFE_componentWillReceiveProps(l,d),s.state!==a&&Ap.enqueueReplaceState(s,s.state,null)}function Vs(a,s){var l=s;if("ref"in s){l={};for(var d in s)d!=="ref"&&(l[d]=s[d])}if(a=a.defaultProps){l===s&&(l=v({},l));for(var g in a)l[g]===void 0&&(l[g]=a[g])}return l}var T0=typeof reportError=="function"?reportError:function(a){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var s=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof a=="object"&&a!==null&&typeof a.message=="string"?String(a.message):String(a),error:a});if(!window.dispatchEvent(s))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",a);return}console.error(a)};function jw(a){T0(a)}function Dw(a){console.error(a)}function Nw(a){T0(a)}function k0(a,s){try{var l=a.onUncaughtError;l(s.value,{componentStack:s.stack})}catch(d){setTimeout(function(){throw d})}}function Tw(a,s,l){try{var d=a.onCaughtError;d(l.value,{componentStack:l.stack,errorBoundary:s.tag===1?s.stateNode:null})}catch(g){setTimeout(function(){throw g})}}function Sp(a,s,l){return l=ji(l),l.tag=3,l.payload={element:null},l.callback=function(){k0(a,s)},l}function kw(a){return a=ji(a),a.tag=3,a}function Pw(a,s,l,d){var g=l.type.getDerivedStateFromError;if(typeof g=="function"){var S=d.value;a.payload=function(){return g(S)},a.callback=function(){Tw(s,l,d)}}var N=l.stateNode;N!==null&&typeof N.componentDidCatch=="function"&&(a.callback=function(){Tw(s,l,d),typeof g!="function"&&(Ii===null?Ii=new Set([this]):Ii.add(this));var k=d.stack;this.componentDidCatch(d.value,{componentStack:k!==null?k:""})})}function WP(a,s,l,d,g){if(l.flags|=32768,d!==null&&typeof d=="object"&&typeof d.then=="function"){if(s=l.alternate,s!==null&&Uu(s,l,g,!0),l=Pn.current,l!==null){switch(l.tag){case 13:return ya===null?Kp():l.alternate===null&&zt===0&&(zt=3),l.flags&=-257,l.flags|=65536,l.lanes=g,d===Xm?l.flags|=16384:(s=l.updateQueue,s===null?l.updateQueue=new Set([d]):s.add(d),Yp(a,d,g)),!1;case 22:return l.flags|=65536,d===Xm?l.flags|=16384:(s=l.updateQueue,s===null?(s={transitions:null,markerInstances:null,retryQueue:new Set([d])},l.updateQueue=s):(l=s.retryQueue,l===null?s.retryQueue=new Set([d]):l.add(d)),Yp(a,d,g)),!1}throw Error(n(435,l.tag))}return Yp(a,d,g),Kp(),!1}if(ft)return s=Pn.current,s!==null?((s.flags&65536)===0&&(s.flags|=256),s.flags|=65536,s.lanes=g,d!==Hm&&(a=Error(n(422),{cause:d}),zu(Dn(a,l)))):(d!==Hm&&(s=Error(n(423),{cause:d}),zu(Dn(s,l))),a=a.current.alternate,a.flags|=65536,g&=-g,a.lanes|=g,d=Dn(d,l),g=Sp(a.stateNode,d,g),ep(a,g),zt!==4&&(zt=2)),!1;var S=Error(n(520),{cause:d});if(S=Dn(S,l),sc===null?sc=[S]:sc.push(S),zt!==4&&(zt=2),s===null)return!0;d=Dn(d,l),l=s;do{switch(l.tag){case 3:return l.flags|=65536,a=g&-g,l.lanes|=a,a=Sp(l.stateNode,d,a),ep(l,a),!1;case 1:if(s=l.type,S=l.stateNode,(l.flags&128)===0&&(typeof s.getDerivedStateFromError=="function"||S!==null&&typeof S.componentDidCatch=="function"&&(Ii===null||!Ii.has(S))))return l.flags|=65536,g&=-g,l.lanes|=g,g=kw(g),Pw(g,a,l,d),ep(l,g),!1}l=l.return}while(l!==null);return!1}var Bw=Error(n(461)),hr=!1;function Ar(a,s,l,d){s.child=a===null?Ew(s,null,l,d):ol(s,a.child,l,d)}function Mw(a,s,l,d,g){l=l.render;var S=s.ref;if("ref"in d){var N={};for(var k in d)k!=="ref"&&(N[k]=d[k])}else N=d;return qs(s),d=ip(a,s,l,N,S,g),k=sp(),a!==null&&!hr?(op(a,s,g),Ya(a,s,g)):(ft&&k&&qm(s),s.flags|=1,Ar(a,s,d,g),s.child)}function Rw(a,s,l,d,g){if(a===null){var S=l.type;return typeof S=="function"&&!zm(S)&&S.defaultProps===void 0&&l.compare===null?(s.tag=15,s.type=S,Fw(a,s,S,d,g)):(a=f0(l.type,null,d,s,s.mode,g),a.ref=s.ref,a.return=s,s.child=a)}if(S=a.child,!Np(a,g)){var N=S.memoizedProps;if(l=l.compare,l=l!==null?l:Mu,l(N,d)&&a.ref===s.ref)return Ya(a,s,g)}return s.flags|=1,a=La(S,d),a.ref=s.ref,a.return=s,s.child=a}function Fw(a,s,l,d,g){if(a!==null){var S=a.memoizedProps;if(Mu(S,d)&&a.ref===s.ref)if(hr=!1,s.pendingProps=d=S,Np(a,g))(a.flags&131072)!==0&&(hr=!0);else return s.lanes=a.lanes,Ya(a,s,g)}return wp(a,s,l,d,g)}function Iw(a,s,l){var d=s.pendingProps,g=d.children,S=a!==null?a.memoizedState:null;if(d.mode==="hidden"){if((s.flags&128)!==0){if(d=S!==null?S.baseLanes|l:l,a!==null){for(g=s.child=a.child,S=0;g!==null;)S=S|g.lanes|g.childLanes,g=g.sibling;s.childLanes=S&~d}else s.childLanes=0,s.child=null;return zw(a,s,d,l)}if((l&536870912)!==0)s.memoizedState={baseLanes:0,cachePool:null},a!==null&&p0(s,S!==null?S.cachePool:null),S!==null?FS(s,S):rp(),_w(s);else return s.lanes=s.childLanes=536870912,zw(a,s,S!==null?S.baseLanes|l:l,l)}else S!==null?(p0(s,S.cachePool),FS(s,S),ki(),s.memoizedState=null):(a!==null&&p0(s,null),rp(),ki());return Ar(a,s,g,l),s.child}function zw(a,s,l,d){var g=Zm();return g=g===null?null:{parent:rr._currentValue,pool:g},s.memoizedState={baseLanes:l,cachePool:g},a!==null&&p0(s,null),rp(),_w(s),a!==null&&Uu(a,s,d,!0),null}function P0(a,s){var l=s.ref;if(l===null)a!==null&&a.ref!==null&&(s.flags|=4194816);else{if(typeof l!="function"&&typeof l!="object")throw Error(n(284));(a===null||a.ref!==l)&&(s.flags|=4194816)}}function wp(a,s,l,d,g){return qs(s),l=ip(a,s,l,d,void 0,g),d=sp(),a!==null&&!hr?(op(a,s,g),Ya(a,s,g)):(ft&&d&&qm(s),s.flags|=1,Ar(a,s,l,g),s.child)}function Uw(a,s,l,d,g,S){return qs(s),s.updateQueue=null,l=zS(s,d,l,g),IS(a),d=sp(),a!==null&&!hr?(op(a,s,S),Ya(a,s,S)):(ft&&d&&qm(s),s.flags|=1,Ar(a,s,l,S),s.child)}function Lw(a,s,l,d,g){if(qs(s),s.stateNode===null){var S=Xo,N=l.contextType;typeof N=="object"&&N!==null&&(S=Nr(N)),S=new l(d,S),s.memoizedState=S.state!==null&&S.state!==void 0?S.state:null,S.updater=Ap,s.stateNode=S,S._reactInternals=s,S=s.stateNode,S.props=d,S.state=s.memoizedState,S.refs={},Wm(s),N=l.contextType,S.context=typeof N=="object"&&N!==null?Nr(N):Xo,S.state=s.memoizedState,N=l.getDerivedStateFromProps,typeof N=="function"&&(bp(s,l,N,d),S.state=s.memoizedState),typeof l.getDerivedStateFromProps=="function"||typeof S.getSnapshotBeforeUpdate=="function"||typeof S.UNSAFE_componentWillMount!="function"&&typeof S.componentWillMount!="function"||(N=S.state,typeof S.componentWillMount=="function"&&S.componentWillMount(),typeof S.UNSAFE_componentWillMount=="function"&&S.UNSAFE_componentWillMount(),N!==S.state&&Ap.enqueueReplaceState(S,S.state,null),Gu(s,d,S,g),Ku(),S.state=s.memoizedState),typeof S.componentDidMount=="function"&&(s.flags|=4194308),d=!0}else if(a===null){S=s.stateNode;var k=s.memoizedProps,L=Vs(l,k);S.props=L;var ee=S.context,le=l.contextType;N=Xo,typeof le=="object"&&le!==null&&(N=Nr(le));var ce=l.getDerivedStateFromProps;le=typeof ce=="function"||typeof S.getSnapshotBeforeUpdate=="function",k=s.pendingProps!==k,le||typeof S.UNSAFE_componentWillReceiveProps!="function"&&typeof S.componentWillReceiveProps!="function"||(k||ee!==N)&&Ow(s,S,d,N),Oi=!1;var re=s.memoizedState;S.state=re,Gu(s,d,S,g),Ku(),ee=s.memoizedState,k||re!==ee||Oi?(typeof ce=="function"&&(bp(s,l,ce,d),ee=s.memoizedState),(L=Oi||Cw(s,l,L,d,re,ee,N))?(le||typeof S.UNSAFE_componentWillMount!="function"&&typeof S.componentWillMount!="function"||(typeof S.componentWillMount=="function"&&S.componentWillMount(),typeof S.UNSAFE_componentWillMount=="function"&&S.UNSAFE_componentWillMount()),typeof S.componentDidMount=="function"&&(s.flags|=4194308)):(typeof S.componentDidMount=="function"&&(s.flags|=4194308),s.memoizedProps=d,s.memoizedState=ee),S.props=d,S.state=ee,S.context=N,d=L):(typeof S.componentDidMount=="function"&&(s.flags|=4194308),d=!1)}else{S=s.stateNode,Jm(a,s),N=s.memoizedProps,le=Vs(l,N),S.props=le,ce=s.pendingProps,re=S.context,ee=l.contextType,L=Xo,typeof ee=="object"&&ee!==null&&(L=Nr(ee)),k=l.getDerivedStateFromProps,(ee=typeof k=="function"||typeof S.getSnapshotBeforeUpdate=="function")||typeof S.UNSAFE_componentWillReceiveProps!="function"&&typeof S.componentWillReceiveProps!="function"||(N!==ce||re!==L)&&Ow(s,S,d,L),Oi=!1,re=s.memoizedState,S.state=re,Gu(s,d,S,g),Ku();var ae=s.memoizedState;N!==ce||re!==ae||Oi||a!==null&&a.dependencies!==null&&v0(a.dependencies)?(typeof k=="function"&&(bp(s,l,k,d),ae=s.memoizedState),(le=Oi||Cw(s,l,le,d,re,ae,L)||a!==null&&a.dependencies!==null&&v0(a.dependencies))?(ee||typeof S.UNSAFE_componentWillUpdate!="function"&&typeof S.componentWillUpdate!="function"||(typeof S.componentWillUpdate=="function"&&S.componentWillUpdate(d,ae,L),typeof S.UNSAFE_componentWillUpdate=="function"&&S.UNSAFE_componentWillUpdate(d,ae,L)),typeof S.componentDidUpdate=="function"&&(s.flags|=4),typeof S.getSnapshotBeforeUpdate=="function"&&(s.flags|=1024)):(typeof S.componentDidUpdate!="function"||N===a.memoizedProps&&re===a.memoizedState||(s.flags|=4),typeof S.getSnapshotBeforeUpdate!="function"||N===a.memoizedProps&&re===a.memoizedState||(s.flags|=1024),s.memoizedProps=d,s.memoizedState=ae),S.props=d,S.state=ae,S.context=L,d=le):(typeof S.componentDidUpdate!="function"||N===a.memoizedProps&&re===a.memoizedState||(s.flags|=4),typeof S.getSnapshotBeforeUpdate!="function"||N===a.memoizedProps&&re===a.memoizedState||(s.flags|=1024),d=!1)}return S=d,P0(a,s),d=(s.flags&128)!==0,S||d?(S=s.stateNode,l=d&&typeof l.getDerivedStateFromError!="function"?null:S.render(),s.flags|=1,a!==null&&d?(s.child=ol(s,a.child,null,g),s.child=ol(s,null,l,g)):Ar(a,s,l,g),s.memoizedState=S.state,a=s.child):a=Ya(a,s,g),a}function qw(a,s,l,d){return Iu(),s.flags|=256,Ar(a,s,l,d),s.child}var Ep={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function _p(a){return{baseLanes:a,cachePool:DS()}}function Cp(a,s,l){return a=a!==null?a.childLanes&~l:0,s&&(a|=Bn),a}function $w(a,s,l){var d=s.pendingProps,g=!1,S=(s.flags&128)!==0,N;if((N=S)||(N=a!==null&&a.memoizedState===null?!1:(nr.current&2)!==0),N&&(g=!0,s.flags&=-129),N=(s.flags&32)!==0,s.flags&=-33,a===null){if(ft){if(g?Ti(s):ki(),ft){var k=It,L;if(L=k){e:{for(L=k,k=ga;L.nodeType!==8;){if(!k){k=null;break e}if(L=Jn(L.nextSibling),L===null){k=null;break e}}k=L}k!==null?(s.memoizedState={dehydrated:k,treeContext:Fs!==null?{id:qa,overflow:$a}:null,retryLane:536870912,hydrationErrors:null},L=on(18,null,null,0),L.stateNode=k,L.return=s,s.child=L,zr=s,It=null,L=!0):L=!1}L||Us(s)}if(k=s.memoizedState,k!==null&&(k=k.dehydrated,k!==null))return ug(k)?s.lanes=32:s.lanes=536870912,null;Ga(s)}return k=d.children,d=d.fallback,g?(ki(),g=s.mode,k=B0({mode:"hidden",children:k},g),d=Rs(d,g,l,null),k.return=s,d.return=s,k.sibling=d,s.child=k,g=s.child,g.memoizedState=_p(l),g.childLanes=Cp(a,N,l),s.memoizedState=Ep,d):(Ti(s),Op(s,k))}if(L=a.memoizedState,L!==null&&(k=L.dehydrated,k!==null)){if(S)s.flags&256?(Ti(s),s.flags&=-257,s=jp(a,s,l)):s.memoizedState!==null?(ki(),s.child=a.child,s.flags|=128,s=null):(ki(),g=d.fallback,k=s.mode,d=B0({mode:"visible",children:d.children},k),g=Rs(g,k,l,null),g.flags|=2,d.return=s,g.return=s,d.sibling=g,s.child=d,ol(s,a.child,null,l),d=s.child,d.memoizedState=_p(l),d.childLanes=Cp(a,N,l),s.memoizedState=Ep,s=g);else if(Ti(s),ug(k)){if(N=k.nextSibling&&k.nextSibling.dataset,N)var ee=N.dgst;N=ee,d=Error(n(419)),d.stack="",d.digest=N,zu({value:d,source:null,stack:null}),s=jp(a,s,l)}else if(hr||Uu(a,s,l,!1),N=(l&a.childLanes)!==0,hr||N){if(N=Ct,N!==null&&(d=l&-l,d=(d&42)!==0?1:Mo(d),d=(d&(N.suspendedLanes|l))!==0?0:d,d!==0&&d!==L.retryLane))throw L.retryLane=d,Zo(a,d),dn(N,a,d),Bw;k.data==="$?"||Kp(),s=jp(a,s,l)}else k.data==="$?"?(s.flags|=192,s.child=a.child,s=null):(a=L.treeContext,It=Jn(k.nextSibling),zr=s,ft=!0,zs=null,ga=!1,a!==null&&(Tn[kn++]=qa,Tn[kn++]=$a,Tn[kn++]=Fs,qa=a.id,$a=a.overflow,Fs=s),s=Op(s,d.children),s.flags|=4096);return s}return g?(ki(),g=d.fallback,k=s.mode,L=a.child,ee=L.sibling,d=La(L,{mode:"hidden",children:d.children}),d.subtreeFlags=L.subtreeFlags&65011712,ee!==null?g=La(ee,g):(g=Rs(g,k,l,null),g.flags|=2),g.return=s,d.return=s,d.sibling=g,s.child=d,d=g,g=s.child,k=a.child.memoizedState,k===null?k=_p(l):(L=k.cachePool,L!==null?(ee=rr._currentValue,L=L.parent!==ee?{parent:ee,pool:ee}:L):L=DS(),k={baseLanes:k.baseLanes|l,cachePool:L}),g.memoizedState=k,g.childLanes=Cp(a,N,l),s.memoizedState=Ep,d):(Ti(s),l=a.child,a=l.sibling,l=La(l,{mode:"visible",children:d.children}),l.return=s,l.sibling=null,a!==null&&(N=s.deletions,N===null?(s.deletions=[a],s.flags|=16):N.push(a)),s.child=l,s.memoizedState=null,l)}function Op(a,s){return s=B0({mode:"visible",children:s},a.mode),s.return=a,a.child=s}function B0(a,s){return a=on(22,a,null,s),a.lanes=0,a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},a}function jp(a,s,l){return ol(s,a.child,null,l),a=Op(s,s.pendingProps.children),a.flags|=2,s.memoizedState=null,a}function Hw(a,s,l){a.lanes|=s;var d=a.alternate;d!==null&&(d.lanes|=s),Km(a.return,s,l)}function Dp(a,s,l,d,g){var S=a.memoizedState;S===null?a.memoizedState={isBackwards:s,rendering:null,renderingStartTime:0,last:d,tail:l,tailMode:g}:(S.isBackwards=s,S.rendering=null,S.renderingStartTime=0,S.last=d,S.tail=l,S.tailMode=g)}function Vw(a,s,l){var d=s.pendingProps,g=d.revealOrder,S=d.tail;if(Ar(a,s,d.children,l),d=nr.current,(d&2)!==0)d=d&1|2,s.flags|=128;else{if(a!==null&&(a.flags&128)!==0)e:for(a=s.child;a!==null;){if(a.tag===13)a.memoizedState!==null&&Hw(a,l,s);else if(a.tag===19)Hw(a,l,s);else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===s)break e;for(;a.sibling===null;){if(a.return===null||a.return===s)break e;a=a.return}a.sibling.return=a.return,a=a.sibling}d&=1}switch(Q(nr,d),g){case"forwards":for(l=s.child,g=null;l!==null;)a=l.alternate,a!==null&&N0(a)===null&&(g=l),l=l.sibling;l=g,l===null?(g=s.child,s.child=null):(g=l.sibling,l.sibling=null),Dp(s,!1,g,l,S);break;case"backwards":for(l=null,g=s.child,s.child=null;g!==null;){if(a=g.alternate,a!==null&&N0(a)===null){s.child=g;break}a=g.sibling,g.sibling=l,l=g,g=a}Dp(s,!0,l,null,S);break;case"together":Dp(s,!1,null,null,void 0);break;default:s.memoizedState=null}return s.child}function Ya(a,s,l){if(a!==null&&(s.dependencies=a.dependencies),Fi|=s.lanes,(l&s.childLanes)===0)if(a!==null){if(Uu(a,s,l,!1),(l&s.childLanes)===0)return null}else return null;if(a!==null&&s.child!==a.child)throw Error(n(153));if(s.child!==null){for(a=s.child,l=La(a,a.pendingProps),s.child=l,l.return=s;a.sibling!==null;)a=a.sibling,l=l.sibling=La(a,a.pendingProps),l.return=s;l.sibling=null}return s.child}function Np(a,s){return(a.lanes&s)!==0?!0:(a=a.dependencies,!!(a!==null&&v0(a)))}function JP(a,s,l){switch(s.tag){case 3:Se(s,s.stateNode.containerInfo),Ci(s,rr,a.memoizedState.cache),Iu();break;case 27:case 5:Pe(s);break;case 4:Se(s,s.stateNode.containerInfo);break;case 10:Ci(s,s.type,s.memoizedProps.value);break;case 13:var d=s.memoizedState;if(d!==null)return d.dehydrated!==null?(Ti(s),s.flags|=128,null):(l&s.child.childLanes)!==0?$w(a,s,l):(Ti(s),a=Ya(a,s,l),a!==null?a.sibling:null);Ti(s);break;case 19:var g=(a.flags&128)!==0;if(d=(l&s.childLanes)!==0,d||(Uu(a,s,l,!1),d=(l&s.childLanes)!==0),g){if(d)return Vw(a,s,l);s.flags|=128}if(g=s.memoizedState,g!==null&&(g.rendering=null,g.tail=null,g.lastEffect=null),Q(nr,nr.current),d)break;return null;case 22:case 23:return s.lanes=0,Iw(a,s,l);case 24:Ci(s,rr,a.memoizedState.cache)}return Ya(a,s,l)}function Kw(a,s,l){if(a!==null)if(a.memoizedProps!==s.pendingProps)hr=!0;else{if(!Np(a,l)&&(s.flags&128)===0)return hr=!1,JP(a,s,l);hr=(a.flags&131072)!==0}else hr=!1,ft&&(s.flags&1048576)!==0&&SS(s,h0,s.index);switch(s.lanes=0,s.tag){case 16:e:{a=s.pendingProps;var d=s.elementType,g=d._init;if(d=g(d._payload),s.type=d,typeof d=="function")zm(d)?(a=Vs(d,a),s.tag=1,s=Lw(null,s,d,a,l)):(s.tag=0,s=wp(null,s,d,a,l));else{if(d!=null){if(g=d.$$typeof,g===j){s.tag=11,s=Mw(null,s,d,a,l);break e}else if(g===P){s.tag=14,s=Rw(null,s,d,a,l);break e}}throw s=Z(d)||d,Error(n(306,s,""))}}return s;case 0:return wp(a,s,s.type,s.pendingProps,l);case 1:return d=s.type,g=Vs(d,s.pendingProps),Lw(a,s,d,g,l);case 3:e:{if(Se(s,s.stateNode.containerInfo),a===null)throw Error(n(387));d=s.pendingProps;var S=s.memoizedState;g=S.element,Jm(a,s),Gu(s,d,null,l);var N=s.memoizedState;if(d=N.cache,Ci(s,rr,d),d!==S.cache&&Gm(s,[rr],l,!0),Ku(),d=N.element,S.isDehydrated)if(S={element:d,isDehydrated:!1,cache:N.cache},s.updateQueue.baseState=S,s.memoizedState=S,s.flags&256){s=qw(a,s,d,l);break e}else if(d!==g){g=Dn(Error(n(424)),s),zu(g),s=qw(a,s,d,l);break e}else{switch(a=s.stateNode.containerInfo,a.nodeType){case 9:a=a.body;break;default:a=a.nodeName==="HTML"?a.ownerDocument.body:a}for(It=Jn(a.firstChild),zr=s,ft=!0,zs=null,ga=!0,l=Ew(s,null,d,l),s.child=l;l;)l.flags=l.flags&-3|4096,l=l.sibling}else{if(Iu(),d===g){s=Ya(a,s,l);break e}Ar(a,s,d,l)}s=s.child}return s;case 26:return P0(a,s),a===null?(l=ZE(s.type,null,s.pendingProps,null))?s.memoizedState=l:ft||(l=s.type,a=s.pendingProps,d=Y0(xe.current).createElement(l),d[tr]=s,d[xt]=a,wr(d,l,a),dr(d),s.stateNode=d):s.memoizedState=ZE(s.type,a.memoizedProps,s.pendingProps,a.memoizedState),null;case 27:return Pe(s),a===null&&ft&&(d=s.stateNode=GE(s.type,s.pendingProps,xe.current),zr=s,ga=!0,g=It,Li(s.type)?(cg=g,It=Jn(d.firstChild)):It=g),Ar(a,s,s.pendingProps.children,l),P0(a,s),a===null&&(s.flags|=4194304),s.child;case 5:return a===null&&ft&&((g=d=It)&&(d=O9(d,s.type,s.pendingProps,ga),d!==null?(s.stateNode=d,zr=s,It=Jn(d.firstChild),ga=!1,g=!0):g=!1),g||Us(s)),Pe(s),g=s.type,S=s.pendingProps,N=a!==null?a.memoizedProps:null,d=S.children,sg(g,S)?d=null:N!==null&&sg(g,N)&&(s.flags|=32),s.memoizedState!==null&&(g=ip(a,s,VP,null,null,l),mc._currentValue=g),P0(a,s),Ar(a,s,d,l),s.child;case 6:return a===null&&ft&&((a=l=It)&&(l=j9(l,s.pendingProps,ga),l!==null?(s.stateNode=l,zr=s,It=null,a=!0):a=!1),a||Us(s)),null;case 13:return $w(a,s,l);case 4:return Se(s,s.stateNode.containerInfo),d=s.pendingProps,a===null?s.child=ol(s,null,d,l):Ar(a,s,d,l),s.child;case 11:return Mw(a,s,s.type,s.pendingProps,l);case 7:return Ar(a,s,s.pendingProps,l),s.child;case 8:return Ar(a,s,s.pendingProps.children,l),s.child;case 12:return Ar(a,s,s.pendingProps.children,l),s.child;case 10:return d=s.pendingProps,Ci(s,s.type,d.value),Ar(a,s,d.children,l),s.child;case 9:return g=s.type._context,d=s.pendingProps.children,qs(s),g=Nr(g),d=d(g),s.flags|=1,Ar(a,s,d,l),s.child;case 14:return Rw(a,s,s.type,s.pendingProps,l);case 15:return Fw(a,s,s.type,s.pendingProps,l);case 19:return Vw(a,s,l);case 31:return d=s.pendingProps,l=s.mode,d={mode:d.mode,children:d.children},a===null?(l=B0(d,l),l.ref=s.ref,s.child=l,l.return=s,s=l):(l=La(a.child,d),l.ref=s.ref,s.child=l,l.return=s,s=l),s;case 22:return Iw(a,s,l);case 24:return qs(s),d=Nr(rr),a===null?(g=Zm(),g===null&&(g=Ct,S=Ym(),g.pooledCache=S,S.refCount++,S!==null&&(g.pooledCacheLanes|=l),g=S),s.memoizedState={parent:d,cache:g},Wm(s),Ci(s,rr,g)):((a.lanes&l)!==0&&(Jm(a,s),Gu(s,null,null,l),Ku()),g=a.memoizedState,S=s.memoizedState,g.parent!==d?(g={parent:d,cache:d},s.memoizedState=g,s.lanes===0&&(s.memoizedState=s.updateQueue.baseState=g),Ci(s,rr,d)):(d=S.cache,Ci(s,rr,d),d!==g.cache&&Gm(s,[rr],l,!0))),Ar(a,s,s.pendingProps.children,l),s.child;case 29:throw s.pendingProps}throw Error(n(156,s.tag))}function Qa(a){a.flags|=4}function Gw(a,s){if(s.type!=="stylesheet"||(s.state.loading&4)!==0)a.flags&=-16777217;else if(a.flags|=16777216,!t_(s)){if(s=Pn.current,s!==null&&((at&4194048)===at?ya!==null:(at&62914560)!==at&&(at&536870912)===0||s!==ya))throw Hu=Xm,NS;a.flags|=8192}}function M0(a,s){s!==null&&(a.flags|=4),a.flags&16384&&(s=a.tag!==22?wu():536870912,a.lanes|=s,fl|=s)}function ec(a,s){if(!ft)switch(a.tailMode){case"hidden":s=a.tail;for(var l=null;s!==null;)s.alternate!==null&&(l=s),s=s.sibling;l===null?a.tail=null:l.sibling=null;break;case"collapsed":l=a.tail;for(var d=null;l!==null;)l.alternate!==null&&(d=l),l=l.sibling;d===null?s||a.tail===null?a.tail=null:a.tail.sibling=null:d.sibling=null}}function Rt(a){var s=a.alternate!==null&&a.alternate.child===a.child,l=0,d=0;if(s)for(var g=a.child;g!==null;)l|=g.lanes|g.childLanes,d|=g.subtreeFlags&65011712,d|=g.flags&65011712,g.return=a,g=g.sibling;else for(g=a.child;g!==null;)l|=g.lanes|g.childLanes,d|=g.subtreeFlags,d|=g.flags,g.return=a,g=g.sibling;return a.subtreeFlags|=d,a.childLanes=l,s}function e9(a,s,l){var d=s.pendingProps;switch($m(s),s.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Rt(s),null;case 1:return Rt(s),null;case 3:return l=s.stateNode,d=null,a!==null&&(d=a.memoizedState.cache),s.memoizedState.cache!==d&&(s.flags|=2048),Va(rr),ve(),l.pendingContext&&(l.context=l.pendingContext,l.pendingContext=null),(a===null||a.child===null)&&(Fu(s)?Qa(s):a===null||a.memoizedState.isDehydrated&&(s.flags&256)===0||(s.flags|=1024,_S())),Rt(s),null;case 26:return l=s.memoizedState,a===null?(Qa(s),l!==null?(Rt(s),Gw(s,l)):(Rt(s),s.flags&=-16777217)):l?l!==a.memoizedState?(Qa(s),Rt(s),Gw(s,l)):(Rt(s),s.flags&=-16777217):(a.memoizedProps!==d&&Qa(s),Rt(s),s.flags&=-16777217),null;case 27:$e(s),l=xe.current;var g=s.type;if(a!==null&&s.stateNode!=null)a.memoizedProps!==d&&Qa(s);else{if(!d){if(s.stateNode===null)throw Error(n(166));return Rt(s),null}a=J.current,Fu(s)?wS(s):(a=GE(g,d,l),s.stateNode=a,Qa(s))}return Rt(s),null;case 5:if($e(s),l=s.type,a!==null&&s.stateNode!=null)a.memoizedProps!==d&&Qa(s);else{if(!d){if(s.stateNode===null)throw Error(n(166));return Rt(s),null}if(a=J.current,Fu(s))wS(s);else{switch(g=Y0(xe.current),a){case 1:a=g.createElementNS("http://www.w3.org/2000/svg",l);break;case 2:a=g.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;default:switch(l){case"svg":a=g.createElementNS("http://www.w3.org/2000/svg",l);break;case"math":a=g.createElementNS("http://www.w3.org/1998/Math/MathML",l);break;case"script":a=g.createElement("div"),a.innerHTML=" - - - -
- - diff --git a/frontend/package-lock.json b/frontend/package-lock.json index abea752..9432544 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -15,6 +15,7 @@ "axios": "^1.9.0", "crypto-js": "^4.2.0", "crypto.js": "^3.3.4", + "daisyui": "^5.0.54", "react": "^19.1.0", "react-dom": "^19.1.0", "react-hook-form": "^7.57.0", @@ -2819,6 +2820,15 @@ "node": ">=12" } }, + "node_modules/daisyui": { + "version": "5.0.54", + "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-5.0.54.tgz", + "integrity": "sha512-03iuq06+lLq/VczY/+YpADgLXVC1HYO63PNiH6A9hn/+f6IkVoONVc+Jh08xizkLQQCVVMMUBp+KeIdcWSBLcg==", + "license": "MIT", + "funding": { + "url": "https://github.com/saadeghi/daisyui?sponsor=1" + } + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", diff --git a/frontend/package.json b/frontend/package.json index 4d4bfe0..c2ce2d7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,6 +22,7 @@ "axios": "^1.9.0", "crypto-js": "^4.2.0", "crypto.js": "^3.3.4", + "daisyui": "^5.0.54", "react": "^19.1.0", "react-dom": "^19.1.0", "react-hook-form": "^7.57.0", diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 65c16bd..a6108d7 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,15 +1,11 @@ import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import { QueryClientProvider, QueryClient } from '@tanstack/react-query'; import { Suspense } from 'react'; -import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; -import { QueryClientProvider, QueryClient } from '@tanstack/react-query'; -import { Suspense } from 'react'; import Home from './pages/Home'; import NotFound from './pages/NotFound'; import CadastroUsuario from './pages/CadastroUsuario'; import CadastroEvento from './pages/CadastroEvento'; import ValidacaoPeriodico from './pages/ValidacaoPeriodico'; -import GerenciadorCadastros from './pages/GerenciadorCadastros'; import RegistrosPendentes from './pages/RegistrosPendentes'; import RevisaoCadastroEvento from './pages/RevisaoCadastroEvento'; import CadastroPeriodico from './pages/CadastroPeriodico'; @@ -18,7 +14,6 @@ import ConsultaEventosPeriodicos from './pages/ConsultaEventosPeriodicos'; import VisualizarPeriodico from './pages/VisualizarPeriodico'; import VisualizarEvento from './pages/VisualizarEvento'; import Login from './pages/Login'; -import HeaderSistema from './components/HeaderSistema'; import VisualizarGraficos from './pages/VisualizarGraficos'; import AuditoriaLogs from './pages/AuditoriaLogs'; @@ -41,7 +36,7 @@ const App = () => { return ( -
+
}> @@ -65,10 +60,6 @@ const App = () => { path="/validacao-cadastro" element={} /> - } - /> } diff --git a/frontend/src/assets/close.svg b/frontend/src/assets/close.svg index 9b235b8..1f22487 100644 --- a/frontend/src/assets/close.svg +++ b/frontend/src/assets/close.svg @@ -1,4 +1,4 @@ -
-

- Adequação para Defesa -

+
+

Adequação para Defesa

{formatarAdequacao(adequacaoDefesa)}

diff --git a/frontend/src/components/ErrorPopup.jsx b/frontend/src/components/ErrorPopup.jsx index 9ee52e5..9195367 100644 --- a/frontend/src/components/ErrorPopup.jsx +++ b/frontend/src/components/ErrorPopup.jsx @@ -56,127 +56,60 @@ function ErrorPopup({ isOpen, onClose, title, message, type = 'error' }) { } }, [isOpen]); - const getIconColor = itemType => { + const getAlertClass = itemType => { switch (itemType) { case 'error': - return 'text-red-600'; + return 'alert-error'; case 'warning': - return 'text-red-600'; + return 'alert-warning'; case 'info': - return 'text-red-600'; + return 'alert-info'; default: - return 'text-red-600'; - } - }; - - const getBorderColor = itemType => { - switch (itemType) { - case 'error': - return 'border-l-red-600'; - case 'warning': - return 'border-l-red-600'; - case 'info': - return 'border-l-red-600'; - default: - return 'border-l-red-600'; + return 'alert-error'; } }; return ( -
+
{transitions((style, item) => (
ref && refMap.set(item, ref)} > -
ref && refMap.set(item, ref)} className="p-3 py-2"> -
-
-
- {item.type === 'error' && ( - - - - )} - {item.type === 'warning' && ( - - - - )} - {item.type === 'info' && ( - - - - )} -
-
-

- {item.title} -

-

- {item.message} -

-
-
- -
+ + +
))} diff --git a/frontend/src/components/EventPeriodDropdown.jsx b/frontend/src/components/EventPeriodDropdown.jsx index 5f7d724..8f08b15 100644 --- a/frontend/src/components/EventPeriodDropdown.jsx +++ b/frontend/src/components/EventPeriodDropdown.jsx @@ -25,7 +25,7 @@ export default function EventPeriodDropdown() { return (
setOpen(prev => !prev)} role="button" tabIndex={0} @@ -42,10 +42,10 @@ export default function EventPeriodDropdown() {
{open && ( -
+
setOpen(false)} aria-current="page" > @@ -53,7 +53,7 @@ export default function EventPeriodDropdown() { setOpen(false)} aria-current="page" > diff --git a/frontend/src/components/FiltroEventosPeriodicos.jsx b/frontend/src/components/FiltroEventosPeriodicos.jsx index 54ad8af..444045a 100644 --- a/frontend/src/components/FiltroEventosPeriodicos.jsx +++ b/frontend/src/components/FiltroEventosPeriodicos.jsx @@ -23,7 +23,11 @@ const normalizeToNull = obj => { return normalized; }; -function FiltroEventosPeriodicos({ onResultados, onFiltrosChange }) { +function FiltroEventosPeriodicos({ + onResultados, + onFiltrosChange, + onFiltrosAtivosChange, +}) { const [open, setOpen] = useState(false); const [showErrorPopup, setShowErrorPopup] = useState(false); const [errorInfo, setErrorInfo] = useState({ @@ -31,6 +35,10 @@ function FiltroEventosPeriodicos({ onResultados, onFiltrosChange }) { message: '', type: 'error', }); + const [allEventos, setAllEventos] = useState([]); + const [allPeriodicos, setAllPeriodicos] = useState([]); + const [isLoading, setIsLoading] = useState(false); + const [filtrosAtivos, setFiltrosAtivos] = useState([]); const areas = useAreas(); const { control, register, handleSubmit, watch, setValue, reset } = useForm(); const minimalClassification = [ @@ -44,6 +52,33 @@ function FiltroEventosPeriodicos({ onResultados, onFiltrosChange }) { { value: 'A8', label: 'A8' }, ]; + const filtrosDisponiveis = [ + { value: 'tipoVeiculo', label: 'Tipo de Veículo' }, + { value: 'areasPesquisa', label: 'Área de Conhecimento' }, + { value: 'vinculoSBC', label: 'Vínculo com SBC' }, + { value: 'adequacaoDefesas', label: 'Adequação para Defesas' }, + { value: 'h5Minimo', label: 'H5 Mínimo' }, + { value: 'classificacaoMinima', label: 'Classificação Mínima' }, + ]; + + const adequacaoDefesasOpcoes = [ + { value: 'qualquer', label: 'Qualquer' }, + { value: 'mestradoEDoutorado', label: 'Mestrado e Doutorado' }, + { value: 'mestradoOuAcima', label: 'Mestrado ou Acima' }, + { value: 'apenasMestrado', label: 'Apenas Mestrado' }, + { value: 'nenhum', label: 'Nenhum' }, + ]; + + const vinculoSbcOpcoes = [ + { value: 'ambos', label: 'Ambos' }, + { value: 'semVinculo', label: 'Sem Vínculo' }, + { value: 'comVinculo', label: 'Com Vínculo (inclui Comum, Top10 e Top20)' }, + { value: 'top20OuTop10', label: 'Top20 ou Top10 (inclui Top10 e Top20)' }, + { value: 'somenteTop20', label: 'Somente Top20' }, + { value: 'somenteTop10', label: 'Somente Top10' }, + { value: 'somenteComum', label: 'Somente Comum' }, + ]; + const watchedValues = watch(); const previousValues = useRef(); @@ -58,120 +93,466 @@ function FiltroEventosPeriodicos({ onResultados, onFiltrosChange }) { } }, [watchedValues, onFiltrosChange]); - const onSubmit = async data => { - const normalizedData = normalizeToNull(data); + // Carrega todos os dados uma única vez no início + useEffect(() => { + const loadAllData = async () => { + setIsLoading(true); + const eventosUrl = `${API_URL}/api/eventos/listar`; + const periodicosUrl = `${API_URL}/api/periodicos/listar`; + + try { + const [eventosRes, periodicosRes] = await Promise.all([ + fetch(eventosUrl, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({}), + }), + fetch(periodicosUrl, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({}), + }), + ]); + + if (eventosRes.ok) { + const eventosData = await eventosRes.json(); + setAllEventos(Array.isArray(eventosData) ? eventosData : []); + } + if (periodicosRes.ok) { + const periodicosData = await periodicosRes.json(); + setAllPeriodicos(Array.isArray(periodicosData) ? periodicosData : []); + } + } catch (err) { + setErrorInfo({ + title: 'Erro no Servidor', + message: 'Não foi possível carregar os dados iniciais.', + type: 'error', + }); + setShowErrorPopup(true); + Logger.logError(`Erro ao carregar dados iniciais: ${err.message}`); + } finally { + setIsLoading(false); + } + }; + + loadAllData(); + }, []); + + // Função para filtrar dados no frontend + const filterData = (data, normalizedData) => { + return data.filter(item => { + // Verifica se correspondência exata está ativada + const correspondenciaExata = + Array.isArray(normalizedData.modoCombinacao) && + normalizedData.modoCombinacao.includes('correspondenciaExata'); + + // Filtro por nome (sempre ativo) - usa correspondência exata apenas para o nome + if (normalizedData.nome) { + const nomeMatch = correspondenciaExata + ? item.nome.toLowerCase() === normalizedData.nome.toLowerCase() + : item.nome.toLowerCase().includes(normalizedData.nome.toLowerCase()); + if (!nomeMatch) return false; + } - const body = {}; + // Se não há filtros ativos além do nome, retorna true + const filtrosAtivosAplicaveis = filtrosAtivos.filter( + filtro => filtro !== 'tipoVeiculo' + ); + if (filtrosAtivosAplicaveis.length === 0) return true; + + // Array para armazenar resultados dos filtros individuais + const resultadosFiltros = []; + + // Filtro por área de pesquisa (apenas se ativo) + if ( + filtrosAtivos.includes('areasPesquisa') && + normalizedData.areasPesquisaIds && + normalizedData.areasPesquisaIds.length > 0 && + Array.isArray(areas) + ) { + const areasPesquisaNomes = normalizedData.areasPesquisaIds + .map(id => { + const area = areas.find(a => a.value === id); + return area ? area.label : null; + }) + .filter(Boolean); + + const itemAreas = Array.isArray(item.areaPesquisa) + ? item.areaPesquisa + : [item.areaPesquisa]; + const hasMatchingArea = areasPesquisaNomes.some(filterArea => + itemAreas.some( + itemArea => + itemArea && + itemArea.toLowerCase().includes(filterArea.toLowerCase()) + ) + ); + resultadosFiltros.push(hasMatchingArea); + } - if (normalizedData.nome) body.nome = normalizedData.nome; + // Filtro por vínculo SBC (apenas se ativo) + if ( + filtrosAtivos.includes('vinculoSBC') && + normalizedData.vinculoSbc && + normalizedData.vinculoSbc !== 'ambos' + ) { + const itemVinculo = item.vinculoSBC; + const filtroVinculo = normalizedData.vinculoSbc; + let vinculoMatch = false; + + switch (filtroVinculo) { + case 'semVinculo': + vinculoMatch = + itemVinculo === 'sem_vinculo' || + itemVinculo === null || + itemVinculo === undefined || + itemVinculo === ''; + break; + case 'comVinculo': + vinculoMatch = + itemVinculo === 'vinculo_comum' || + itemVinculo === 'vinculo_top_10' || + itemVinculo === 'vinculo_top_20'; + break; + case 'top20OuTop10': + vinculoMatch = + itemVinculo === 'vinculo_top_10' || + itemVinculo === 'vinculo_top_20'; + break; + case 'somenteTop20': + vinculoMatch = itemVinculo === 'vinculo_top_20'; + break; + case 'somenteTop10': + vinculoMatch = itemVinculo === 'vinculo_top_10'; + break; + case 'somenteComum': + vinculoMatch = + itemVinculo === 'vinculo_comum' || + itemVinculo === 'vinculo_top_10' || + itemVinculo === 'vinculo_top_20' || + itemVinculo === null || + itemVinculo === undefined || + itemVinculo === '' || + itemVinculo === 'comum' || + itemVinculo === 'COMUM' || + itemVinculo === 'Comum'; + break; + default: + vinculoMatch = true; + break; + } + resultadosFiltros.push(vinculoMatch); + } + + // Filtro por adequação para defesas (apenas se ativo) + if ( + filtrosAtivos.includes('adequacaoDefesas') && + normalizedData.adequacaoDefesa && + normalizedData.adequacaoDefesa !== 'qualquer' + ) { + const itemAdequacao = item.adequacaoDefesa; + const filtroAdequacao = normalizedData.adequacaoDefesa; + let adequacaoMatch = false; + + switch (filtroAdequacao) { + case 'mestradoEDoutorado': + adequacaoMatch = + itemAdequacao === 'mestrado_doutorado' || + itemAdequacao === 'doutorado'; + break; + case 'mestradoOuAcima': + adequacaoMatch = + itemAdequacao === 'mestrado' || + itemAdequacao === 'doutorado' || + itemAdequacao === 'mestrado_doutorado'; + break; + case 'apenasMestrado': + adequacaoMatch = itemAdequacao === 'mestrado'; + break; + case 'nenhum': + adequacaoMatch = !( + itemAdequacao === 'mestrado' || + itemAdequacao === 'doutorado' || + itemAdequacao === 'mestrado_doutorado' + ); + break; + default: + adequacaoMatch = true; + break; + } + resultadosFiltros.push(adequacaoMatch); + } + + // Filtro por H5 mínimo (apenas se ativo) + if ( + filtrosAtivos.includes('h5Minimo') && + normalizedData.h5Minimo !== undefined && + normalizedData.h5Minimo !== null && + normalizedData.h5Minimo !== '' && + normalizedData.h5Minimo > 0 + ) { + const itemH5 = + item.h5 || + Math.max(item.percentilJcr || 0, item.percentilScopus || 0); + const h5Match = itemH5 >= normalizedData.h5Minimo; + resultadosFiltros.push(h5Match); + } + // Filtro por classificação mínima (apenas se ativo) + if ( + filtrosAtivos.includes('classificacaoMinima') && + normalizedData.classificacaoMinima + ) { + const classificacaoOrdem = { + a1: 8, + a2: 7, + a3: 6, + a4: 5, + a5: 4, + a6: 3, + a7: 2, + a8: 1, + }; + const minima = + classificacaoOrdem[normalizedData.classificacaoMinima.toLowerCase()]; + const itemClassificacao = + classificacaoOrdem[item.classificacao?.toLowerCase()]; + const classificacaoMatch = + itemClassificacao && itemClassificacao >= minima; + resultadosFiltros.push(classificacaoMatch); + } + + // Se não há filtros para avaliar, retorna true + if (resultadosFiltros.length === 0) return true; + + // Aplica lógica AND ou OR baseada na correspondência exata + return correspondenciaExata + ? resultadosFiltros.every(resultado => resultado) // AND - todos devem ser verdadeiros + : resultadosFiltros.some(resultado => resultado); // OR - pelo menos um deve ser verdadeiro + }); + }; + + // Função específica para filtrar periódicos (excluir quando filtros Top10/Top20) + const filterPeriodicos = (data, normalizedData) => { + // Se o filtro de vínculo for Top10, Top20 ou Top20OuTop10, não mostra periódicos if ( + filtrosAtivos.includes('vinculoSBC') && + normalizedData.vinculoSbc && + (normalizedData.vinculoSbc === 'somenteTop10' || + normalizedData.vinculoSbc === 'somenteTop20' || + normalizedData.vinculoSbc === 'top20OuTop10') + ) { + return []; // Retorna lista vazia - periódicos não têm vínculos Top10/Top20 + } + + // Para "somenteComum", filtra de forma mais inclusiva para periódicos + if ( + filtrosAtivos.includes('vinculoSBC') && + normalizedData.vinculoSbc === 'somenteComum' + ) { + console.log('=== DEBUG FILTRO SOMENTE COMUM PARA PERIÓDICOS ==='); + console.log('Total de periódicos antes do filtro:', data.length); + + const resultado = data.filter(item => { + // Debug: informações do item + const itemVinculo = item.vinculoSBC; + const passouVinculo = + itemVinculo === 'vinculo_comum' || + itemVinculo === 'vinculo_top_10' || + itemVinculo === 'vinculo_top_20' || + itemVinculo === null || + itemVinculo === undefined || + itemVinculo === ''; + + // Aplica outros filtros primeiro (nome, área, etc.) + const passouOutrosFiltros = filterDataSingle(item, normalizedData); + + const passou = passouOutrosFiltros && passouVinculo; + + // Log todos os itens para debug completo + console.log('Item:', { + nome: item.nome, + vinculo: itemVinculo, + passouVinculo, + passouOutrosFiltros, + passou, + // Detalhes dos outros filtros + nomeFilter: normalizedData.nome, + areasFilter: normalizedData.areasPesquisaIds, + adequacaoFilter: normalizedData.adequacaoDefesa, + h5Filter: normalizedData.h5Minimo, + classificacaoFilter: normalizedData.classificacaoMinima, + }); + + return passou; + }); + + console.log('Total de periódicos após filtro:', resultado.length); + console.log('=== FIM DEBUG ==='); + + return resultado; + } + + // Para outros filtros, usa a lógica normal + return filterData(data, normalizedData); + }; + + // Função auxiliar extraída para reutilização (SEM filtro de vínculo SBC) + const filterDataSingle = (item, normalizedData) => { + // Verifica se correspondência exata está ativada + const correspondenciaExata = + Array.isArray(normalizedData.modoCombinacao) && + normalizedData.modoCombinacao.includes('correspondenciaExata'); + + // Filtro por nome (sempre ativo) - usa correspondência exata apenas para o nome + if (normalizedData.nome) { + const nomeMatch = correspondenciaExata + ? item.nome.toLowerCase() === normalizedData.nome.toLowerCase() + : item.nome.toLowerCase().includes(normalizedData.nome.toLowerCase()); + if (!nomeMatch) return false; + } + + // Se não há filtros ativos além do nome (excluindo tipoVeiculo e vinculoSBC), retorna true + const filtrosAtivosAplicaveis = filtrosAtivos.filter( + filtro => filtro !== 'tipoVeiculo' && filtro !== 'vinculoSBC' + ); + if (filtrosAtivosAplicaveis.length === 0) return true; + + // Array para armazenar resultados dos filtros individuais + const resultadosFiltros = []; + + // Filtro por área de pesquisa (apenas se ativo) + if ( + filtrosAtivos.includes('areasPesquisa') && normalizedData.areasPesquisaIds && normalizedData.areasPesquisaIds.length > 0 && Array.isArray(areas) ) { - body.areasPesquisaNomes = normalizedData.areasPesquisaIds + const areasPesquisaNomes = normalizedData.areasPesquisaIds .map(id => { const area = areas.find(a => a.value === id); return area ? area.label : null; }) .filter(Boolean); - } - if (typeof normalizedData.vinculoSbcCheckbox === 'boolean') { - body.vinculoSbc = normalizedData.vinculoSbcCheckbox; + const itemAreas = Array.isArray(item.areaPesquisa) + ? item.areaPesquisa + : [item.areaPesquisa]; + const hasMatchingArea = areasPesquisaNomes.some(filterArea => + itemAreas.some( + itemArea => + itemArea && + itemArea.toLowerCase().includes(filterArea.toLowerCase()) + ) + ); + resultadosFiltros.push(hasMatchingArea); } + // Filtro por adequação para defesas (apenas se ativo) if ( - Array.isArray(normalizedData.adequacaoDefesas) && - normalizedData.adequacaoDefesas.length > 0 + filtrosAtivos.includes('adequacaoDefesas') && + normalizedData.adequacaoDefesa && + normalizedData.adequacaoDefesa !== 'qualquer' ) { - body.adequacaoDefesa = normalizedData.adequacaoDefesas.map(str => - str.toUpperCase() - ); + const itemAdequacao = item.adequacaoDefesa; + const filtroAdequacao = normalizedData.adequacaoDefesa; + let adequacaoMatch = false; + + switch (filtroAdequacao) { + case 'mestradoEDoutorado': + adequacaoMatch = + itemAdequacao === 'mestrado_doutorado' || + itemAdequacao === 'doutorado'; + break; + case 'mestradoOuAcima': + adequacaoMatch = + itemAdequacao === 'mestrado' || + itemAdequacao === 'doutorado' || + itemAdequacao === 'mestrado_doutorado'; + break; + case 'apenasMestrado': + adequacaoMatch = itemAdequacao === 'mestrado'; + break; + case 'nenhum': + adequacaoMatch = !( + itemAdequacao === 'mestrado' || + itemAdequacao === 'doutorado' || + itemAdequacao === 'mestrado_doutorado' + ); + break; + default: + adequacaoMatch = true; + break; + } + resultadosFiltros.push(adequacaoMatch); } + // Filtro por H5 mínimo (apenas se ativo) if ( + filtrosAtivos.includes('h5Minimo') && normalizedData.h5Minimo !== undefined && normalizedData.h5Minimo !== null && - normalizedData.h5Minimo !== '' + normalizedData.h5Minimo !== '' && + normalizedData.h5Minimo > 0 ) { - body.h5Minimo = normalizedData.h5Minimo; - } - - if (normalizedData.classificacaoMinima) { - body.classificacaoMinima = - normalizedData.classificacaoMinima.toLowerCase(); + const itemH5 = + item.h5 || Math.max(item.percentilJcr || 0, item.percentilScopus || 0); + const h5Match = itemH5 >= normalizedData.h5Minimo; + resultadosFiltros.push(h5Match); } + // Filtro por classificação mínima (apenas se ativo) if ( - Array.isArray(normalizedData.modoCombinacao) && - normalizedData.modoCombinacao.includes('correspondenciaExata') + filtrosAtivos.includes('classificacaoMinima') && + normalizedData.classificacaoMinima ) { - body.correspondenciaExata = true; - } else { - body.correspondenciaExata = false; + const classificacaoOrdem = { + a1: 8, + a2: 7, + a3: 6, + a4: 5, + a5: 4, + a6: 3, + a7: 2, + a8: 1, + }; + const minima = + classificacaoOrdem[normalizedData.classificacaoMinima.toLowerCase()]; + const itemClassificacao = + classificacaoOrdem[item.classificacao?.toLowerCase()]; + const classificacaoMatch = + itemClassificacao && itemClassificacao >= minima; + resultadosFiltros.push(classificacaoMatch); } - const eventosUrl = `${API_URL}/api/eventos/listar`; - const periodicosUrl = `${API_URL}/api/periodicos/listar`; + // Se não há filtros para avaliar, retorna true + if (resultadosFiltros.length === 0) return true; - let eventosData = []; - let periodicosData = []; + // Aplica lógica AND ou OR baseada na correspondência exata + return correspondenciaExata + ? resultadosFiltros.every(resultado => resultado) // AND - todos devem ser verdadeiros + : resultadosFiltros.some(resultado => resultado); // OR - pelo menos um deve ser verdadeiro + }; - // Considera o filtro de tipo de veículo - const tipoVeiculo = normalizedData.tipoVeiculo || 'ambos'; + const onSubmit = data => { + const normalizedData = normalizeToNull(data); - try { - const requests = []; + // Considera o filtro de tipo de veículo (apenas se ativo) + const tipoVeiculo = filtrosAtivos.includes('tipoVeiculo') + ? normalizedData.tipoVeiculo || 'ambos' + : 'ambos'; - // Adiciona requisição para eventos se necessário - if (tipoVeiculo === 'ambos' || tipoVeiculo === 'eventos') { - requests.push( - fetch(eventosUrl, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(body), - }) - ); - } else { - requests.push(Promise.resolve({ ok: false })); - } - // Adiciona requisição para periódicos se necessário - if (tipoVeiculo === 'ambos' || tipoVeiculo === 'periodicos') { - requests.push( - fetch(periodicosUrl, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(body), - }) - ); - } else { - requests.push(Promise.resolve({ ok: false })); - } + let eventosData = []; + let periodicosData = []; - const [eventosRes, periodicosRes] = await Promise.all(requests); + // Filtra eventos se necessário (usa filtro normal) + if (tipoVeiculo === 'ambos' || tipoVeiculo === 'eventos') { + eventosData = filterData(allEventos, normalizedData); + } - if (eventosRes.ok) { - const json = await eventosRes.json(); - eventosData = Array.isArray(json) ? json : []; - } - if (periodicosRes.ok) { - const json = await periodicosRes.json(); - periodicosData = Array.isArray(json) ? json : []; - } - } catch (err) { - setErrorInfo({ - title: 'Erro no Servidor', - message: - 'Os dados detalhados deste veículo de publicação não estão disponíveis no momento.', - type: 'error', - }); - setShowErrorPopup(true); - eventosData = []; - periodicosData = []; - console.error('Erro ao buscar eventos e periódicos:', err); - Logger.logError(`Erro ao buscar eventos e periódicos: ${err.message}`); + // Filtra periódicos se necessário (usa filtro específico) + if (tipoVeiculo === 'ambos' || tipoVeiculo === 'periodicos') { + periodicosData = filterPeriodicos(allPeriodicos, normalizedData); } if (onResultados) { @@ -215,152 +596,146 @@ function FiltroEventosPeriodicos({ onResultados, onFiltrosChange }) {
- -
-
- ( { + setFiltrosAtivos(selected); + field.onChange(selected); + if (onFiltrosAtivosChange) { + onFiltrosAtivosChange(selected); + } + }} + placeholder="Selecione os filtros que deseja utilizar" /> )} />
-
- - VÍNCULO COM A SBC - -