@eliseubatista99/react-scaffold-core 1.2.9 → 1.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -112,7 +112,7 @@ React keys must be passed directly to JSX without using spread:
112
112
  box-sizing: border-box;
113
113
  display: flex;
114
114
  }
115
- `,ui=({styles:e,content:t,settings:i,gap:o=15})=>{const[a,l]=I.useState(1),v=I.useRef(null),f=I.useRef(null);var h={dots:!1,speed:500,slidesToScroll:1,infinite:!1,variableWidth:!0,arrows:!1,rows:1,...i};const k=t.map((M,F)=>B.jsx(li,{ref:F===0?f:void 0,styles:{paddingRight:`${o}px`,overflow:"visible",...M.styles},"data-testid":"carousel-slide-item",children:M.content})),_=()=>{if(h.slidesToShow){l(h.slidesToShow);return}const M=(v.current?.offsetWidth||o+1)-o,F=f.current?.offsetWidth||1;let V=Math.floor(M/F);V<1?V=1:V>t.length&&(V=t.length),console.debug("Slides to show > ",{container:M,slide:F,res:V}),l(V)};return I.useEffect(()=>{_()},[v,f]),B.jsx(si,{ref:v,styles:{...e},children:k.length>0&&B.jsx(cn,{...h,slidesToShow:a,children:k})})},ci=({name:e,checked:t,onToggle:i,styles:o,label:a,checkboxStyles:l,customCheckedRender:v,customUncheckedRender:f})=>B.jsxs("div",{style:{width:"fit-content",height:"fit-content",position:"relative",display:"flex",flexDirection:"row",gap:"10px",alignItems:"center",...o},children:[B.jsxs("div",{style:{width:"fit-content",height:"fit-content",position:"relative",display:"flex"},children:[B.jsx("input",{type:"checkbox",name:e,checked:t,onChange:h=>{},onClick:h=>{h.stopPropagation(),i?.(!t)},style:{position:"absolute",opacity:0,width:"100%",height:"100%",cursor:"pointer"}}),B.jsxs("div",{style:{width:"25px",height:"25px",borderRadius:"4px",border:"1px solid #969696ff",background:t?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",...l},children:[t&&v,!t&&f]})]}),a]}),gr=e=>I.useEffect(e,[]),yr=()=>{const[e,t]=I.useState({}),[i,o]=I.useState(!1);return I.useEffect(()=>{const a=f=>{t({x:f.clientX,y:f.clientY})},l=f=>{o(!0)},v=f=>{o(!1)};return window.addEventListener("pointermove",a),window.addEventListener("pointerdown",l),window.addEventListener("pointerup",v),()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerdown",l),window.removeEventListener("pointerup",v)}},[]),{pointerPosition:e,isPointerDown:i}},mr=({ref:e,onDrag:t,onDragStart:i,onDragEnd:o})=>{const a=I.useRef(!1),l=I.useRef(!1),{pointerPosition:v,isPointerDown:f}=yr(),h=I.useRef({isDragging:!1}),k=I.useCallback(A=>{if(!e||!e.current||!h.current)return;const y={...h.current};return y.posY=A.y,y.posX=A.x,h.current.startPosX&&h.current.posX&&(y.distanceX=h.current.startPosX-h.current.posX),h.current.startPosY&&h.current.posY&&(y.distanceY=-(h.current.startPosY-h.current.posY)),y},[]),_=I.useCallback(A=>{A.preventDefault(),A.stopPropagation(),h.current.isDragging=!0,h.current.startPosY=A.clientY,h.current.startPosX=A.clientX;const y=k({x:A.clientX,y:A.clientY});y&&(h.current=y,i?.(y))},[k]),M=I.useCallback(A=>{h.current.isDragging=!1;const y=k(v);y&&(o?.(y),y.startPosX=void 0,y.startPosY=void 0,h.current=y)},[k,v]),F=I.useCallback(A=>{if(console.debug("useDrag > onPointerMove > Is Dragging >",h.current.isDragging),!h.current.isDragging)return;const y=k(v);console.debug("useDrag > onPointerMove > Drag Result >",y),y&&(t?.(y),h.current=y)},[k,v]),V=I.useCallback(async()=>{if(!a.current){for(;!e?.current;)await new Promise(A=>setTimeout(A,300));a.current=!0,e.current.onpointerdown=_,e.current.style.touchAction="none"}},[e?.current,_]);I.useEffect(()=>{V()},[V]),I.useEffect(()=>{F()},[v]),I.useEffect(()=>{f!==l.current&&(l.current=f,f||M())},[f,l.current])},fi=()=>{const e=(h,k)=>{if(!k)return h;const _=new URLSearchParams;for(const F in k){const V=k[F];Array.isArray(V)?V.forEach(A=>_.append(F,String(A))):V!=null&&_.append(F,String(V))}const M=_.toString();return M?`${h}?${M}`:h},t=async h=>{try{return{result:await h.json(),statusCode:h.status}}catch(k){return{result:void 0,statusCode:h.status,error:k}}},i=async(h,k,_,M)=>{const F=await fetch(h,{method:k,headers:_,body:M});return t(F)};return{get:async(h,k,_)=>{const M=e(h,k);return i(M,"GET",{..._})},post:async(h,k,_)=>i(h,"POST",{"Content-Type":"application/json",..._},JSON.stringify(k)),put:async(h,k,_)=>i(h,"PUT",{"Content-Type":"application/json",..._},JSON.stringify(k)),patch:async(h,k,_)=>i(h,"PATCH",{"Content-Type":"application/json",..._},JSON.stringify(k)),delete:async(h,k,_)=>{const M=e(h,k);return i(M,"DELETE",{..._})}}};function di(e){const[t,i]=I.useState(!1),o=I.useMemo(()=>new IntersectionObserver(([a])=>i(a.isIntersecting)),[]);return I.useEffect(()=>(e?.current&&o.observe(e?.current),()=>o.disconnect()),[e,o.disconnect,o.observe]),t}const br={xs:0,sm:420,md:768,lg:991,xl:1200,xxl:1440},hi=e=>{const t={...br,...e?.breakpointConfiguration},[i,o]=I.useState(Gt(t)),a=()=>{o(Gt(t))};return I.useEffect(()=>(window.addEventListener("resize",a),()=>{window.removeEventListener("resize",a)}),[]),I.useMemo(()=>i,[i])},pi=(e,t)=>e<t.sm?"xs":e<t.md?"sm":e<t.lg?"md":e<t.xl?"lg":e<t.xxl?"xl":"xxl",vi=(e,t)=>e<=t.sm?"mobile":e<=t.md?"tablet":"desktop",Gt=e=>{const t=window.innerWidth,i=window.innerHeight,o=pi(t,e),a=vi(t,e);return{currentWidth:t,currentHeight:i,currentBreakpoint:o,currentSize:a}},gi=e=>{const t=e.translations,i=e.language,o=(l,v)=>{if(!l)return;let f=l[i];if(f)return v&&Object.keys(v).forEach(h=>{const k=v[h];f=f.replaceAll(`{{${h}}}`,`${k}`)}),f};return{t:(l,v)=>{if(t[l]){const f=o(t[l],v);return f??l}return l},getTranslation:o}},Sr=I.createContext(null),Kt=(e,t,i)=>{if(i!=null){if(!Array.isArray(i)){e.set(t,String(i));return}e.delete(t),i.forEach(o=>{o!=null&&e.append(t,String(o))})}},yi=()=>{const[e,t]=ge.useSearchParams(),{search:i}=ge.useLocation(),o=I.useRef(new URLSearchParams(i)),a=I.useRef(i);a.current!==i&&(a.current=i,o.current=new URLSearchParams(i));const l=I.useMemo(()=>Object.fromEntries(e.entries()),[e]),v=I.useCallback(()=>l,[l]),f=I.useCallback(T=>Object.fromEntries(T.map(j=>[j,e.get(j)])),[e]),h=I.useCallback(T=>e.get(T),[e]),k=I.useCallback(T=>e.getAll(T),[e]),_=I.useCallback(T=>{const j=T(new URLSearchParams(o.current));o.current=new URLSearchParams(j),t(j)},[t]),M=I.useCallback(T=>{_(j=>(j.delete(T),j))},[_]),F=I.useCallback(T=>{_(j=>(T.forEach(N=>{j.delete(N)}),j))},[_]),V=I.useCallback(()=>_(()=>new URLSearchParams),[_]),A=I.useCallback((T,j)=>{_(N=>(j==null?N.delete(T):Kt(N,T,j),N))},[_]),y=I.useCallback(T=>{_(j=>(Object.entries(T).forEach(([N,q])=>{q==null?j.delete(N):Kt(j,N,q)}),j))},[_]);return{getAll:v,getAllValues:k,get:h,getMany:f,set:A,setMany:y,remove:M,removeMany:F,removeAll:V}},mi=e=>{if(!e.params)return e.path;const t=ge.parsePath(e.path),i=new URLSearchParams(t.search);Object.entries(e.params).forEach(([a,l])=>{l!=null&&(Array.isArray(l)?(i.delete(a),l.forEach(v=>{v!=null&&i.append(a,String(v))})):i.set(a,String(l)))});const o=i.toString();return{...t,search:o?`?${o}`:""}},bi=()=>{const e=ge.useNavigate(),t=ge.useLocation(),i=I.useContext(Sr),o=yi(),a=I.useCallback(v=>{const f=mi(v);e(f,{replace:v.addToHistory===!1})},[e]),l=I.useCallback((v={})=>{const f=v.steps??1;if(!Number.isSafeInteger(f)||f<1)throw new RangeError("goBack steps must be a positive safe integer.");if(i&&i.index<f&&v.defaultBackPath!==void 0){e(v.defaultBackPath,{replace:!0});return}e(-f)},[i,e]);return{currentPath:t.pathname,history:i?.entries.map(v=>v.path)??[`${t.pathname}${t.search}${t.hash}`],searchParams:o,goBack:l,goTo:a}},wr=({isReady:e=!0,routes:t,children:i})=>{const o=ge.useLocation(),a=ge.useNavigationType(),[l,v]=I.useState(()=>({entries:[{key:o.key,path:`${o.pathname}${o.search}${o.hash}`}],index:0})),f=I.useRef(o.key);I.useEffect(()=>{f.current!==o.key&&(f.current=o.key,v(k=>{const _={key:o.key,path:`${o.pathname}${o.search}${o.hash}`};if(a==="PUSH"){const F=k.entries.slice(0,k.index+1);return F.push(_),{entries:F,index:F.length-1}}if(a==="REPLACE"){const F=[...k.entries];return F[k.index]=_,{entries:F,index:k.index}}const M=k.entries.findIndex(F=>F.key===o.key);return M>=0?{...k,index:M}:{entries:[_],index:0}}))},[o.hash,o.key,o.pathname,o.search,a]);const h=t.map((k,_)=>B.jsx(ge.Route,{path:k.path,element:k.render},`${k.path}-${_}`));return B.jsxs(Sr.Provider,{value:l,children:[e&&B.jsx(ge.Routes,{children:h}),i]})},Si=e=>B.jsx(ge.BrowserRouter,{children:B.jsx(wr,{...e})}),xr=I.createContext({visibleItems:[],isItemVisible:()=>!1,showItem:()=>{},hideItem:()=>{}}),wi=({children:e})=>{const t=I.useRef([]),[i,o]=I.useState([]),a=I.useCallback(h=>{t.current=h,o(h)},[]),l=I.useCallback(h=>t.current.some(k=>k===h),[]),v=I.useCallback(h=>{l(h)||a([...t.current,h])},[l,a]),f=I.useCallback(h=>{l(h)&&a(t.current.filter(_=>_!==h))},[l,a]);return B.jsx(xr.Provider,{value:{visibleItems:i,isItemVisible:l,showItem:v,hideItem:f},children:e})},Ne=()=>{const e=I.useContext(xr),t=a=>e.visibleItems.some(l=>l===a),i=a=>{e.showItem(a)},o=a=>{e.hideItem(a)};return{visibleItems:e.visibleItems,isItemVisible:t,showItem:i,hideItem:o}},xi=({id:e,onCloseDrawer:t,drawerCloseOffset:i=15})=>{const{isItemVisible:o}=Ne(),[a,l]=I.useState({isDragging:!1}),v=I.useRef(null),f=I.useRef(null),h=I.useRef(null),[k,_]=I.useState(0),M=A=>{l(A)},F=A=>{l(A),_(0)};return mr({ref:h,onDrag:A=>{l(A);const y=f.current?.clientHeight||0;A.distanceY&&(_(A.distanceY<0?0:-A.distanceY),A.distanceY>=y-i&&(t?.(),F(A)))},onDragEnd:F,onDragStart:M}),{isVisible:o(e),drawerParentRef:v,drawerRef:f,drawerBottomDistance:k,handleRef:h}},Oi=e=>{const{children:t,backgroundStyles:i,contentStyles:o,handle:a}=e,{isVisible:l,drawerParentRef:v,drawerRef:f,handleRef:h,drawerBottomDistance:k}=xi(e);return B.jsx(B.Fragment,{children:l&&B.jsx("div",{ref:v,style:{width:"100%",height:"100%",minHeight:"100vh",left:0,top:0,background:"#00000068",position:"fixed",zIndex:1e3,display:"flex",flexDirection:"column",touchAction:"none",...i},children:B.jsxs("div",{ref:f,style:{width:"100%",height:"fit-content",minHeight:"80px",maxHeight:"90%",background:"#ffffff",borderTopLeftRadius:"16px",borderTopRightRadius:"16px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"24px",zIndex:1001,position:"absolute",bottom:`${k}px`,...o},onClick:_=>{_.stopPropagation()},children:[B.jsx("div",{ref:h,style:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0px",height:"24px",width:"100%",cursor:"pointer",...a?.styles},children:a?.render}),t]})})})},ki=({onPreSubmit:e,onSubmit:t,onChange:i,onMount:o,configurations:a})=>{const l=I.useRef(null),v=I.useRef(!1),f=T=>({name:T.name,value:T.value?.trim()}),h=()=>{if(!l.current?.elements)return[];const T=Array.from(l.current?.elements).filter(N=>!!N.getAttribute("name")),j=[];for(const N of T)j.push(f(N));return j},k=(T,j,N)=>T==="change"&&j||T==="mount"&&N||T==="submit",_=async(T,j)=>{try{const W=(a||[]).find(d=>d.name===T.name);if(!W)return T;var N=T.value,q=T.value;if(W.emptyValidation&&W.emptyValidation.allow===!1&&!N&&k(j,W.emptyValidation.validateOnChange,W.emptyValidation.validateOnMount))return T.error=W.emptyValidation.errorMessage,T;if(W.minLengthValidation&&N.length<W.minLengthValidation.value&&k(j,W.minLengthValidation.validateOnChange,W.minLengthValidation.validateOnMount))return T.error=W.minLengthValidation.errorMessage,T;if(W.maxLengthValidation&&N.length>W.maxLengthValidation.value&&k(j,W.maxLengthValidation.validateOnChange,W.maxLengthValidation.validateOnMount))return T.error=W.maxLengthValidation.errorMessage,T;if(!isNaN(q)){if(W.minValueValidation&&q<W.minValueValidation.value&&k(j,W.minValueValidation.validateOnChange,W.minValueValidation.validateOnMount))return T.error=W.minValueValidation.errorMessage,T;if(W.maxValueValidation&&q>W.maxValueValidation.value&&k(j,W.maxValueValidation.validateOnChange,W.maxValueValidation.validateOnMount))return T.error=W.maxValueValidation.errorMessage,T}if(W.exactValueValidation&&W.exactValueValidation.value!==T.value&&k(j,W.exactValueValidation.validateOnChange,W.exactValueValidation.validateOnMount))return T.error=W.exactValueValidation.errorMessage,T;for(let d=0;d<(W.validations||[]).length;d++){const p=W.validations?.[d];if(!k(j,p?.validateOnChange,p?.validateOnMount))continue;const m=await W.validations?.[d].validate?.(T.value);if(m)return T.error=m,T}}catch(W){console.error(`Form > Failed To Validate Field ${T.name}: `,W)}return T},M=I.useCallback(async T=>{let j=h();j=await Promise.all(j.map(async q=>await _(q,T)));const N=j.find(q=>q.error!==void 0);return{fields:j,hasErrors:N!==void 0}},[]),F=I.useCallback(async T=>{try{if(v.current)return;v.current=!0,e?.(),T.preventDefault(),T.stopPropagation();const j=await M("submit");v.current=!1,t?.(j.fields,j.hasErrors)}catch(j){v.current=!1,console.error("Form > OnSubmit > Error submitting: ",j)}},[t,e]),V=I.useCallback(async T=>{try{const N=T.target;var j=await M("change");let q=f(N);q=await _(q,"change"),console.debug("Form > On Change > ",{result:q,allFieldsValidation:j}),i?.(q,j.fields,j.hasErrors)}catch(N){console.error("Form > onChange > Error changing: ",N)}},[t,e]),A=I.useCallback(async()=>{try{const T=await M("mount");o?.(T.fields,T.hasErrors)}catch(T){console.error("Form > onChange > Error changing: ",T)}},[t,e]),y=T=>{l.current&&l.current.requestSubmit()};return gr(()=>{A()}),{ref:l,submitForm:y,handleFormSubmission:F,handleFormChange:V}},Ci=Se.div`
115
+ `,ui=({styles:e,content:t,settings:i,gap:o=15})=>{const[a,l]=I.useState(1),v=I.useRef(null),f=I.useRef(null);var h={dots:!1,speed:500,slidesToScroll:1,infinite:!1,variableWidth:!0,arrows:!1,rows:1,...i};const k=t.map((M,F)=>B.jsx(li,{ref:F===0?f:void 0,styles:{paddingRight:`${o}px`,overflow:"visible",...M.styles},"data-testid":"carousel-slide-item",children:M.content})),_=()=>{if(h.slidesToShow){l(h.slidesToShow);return}const M=(v.current?.offsetWidth||o+1)-o,F=f.current?.offsetWidth||1;let V=Math.floor(M/F);V<1?V=1:V>t.length&&(V=t.length),console.debug("Slides to show > ",{container:M,slide:F,res:V}),l(V)};return I.useEffect(()=>{_()},[v,f]),B.jsx(si,{ref:v,styles:{...e},children:k.length>0&&B.jsx(cn,{...h,slidesToShow:a,children:k})})},ci=({name:e,checked:t,onToggle:i,styles:o,label:a,checkboxStyles:l,customCheckedRender:v,customUncheckedRender:f})=>B.jsxs("div",{style:{width:"fit-content",height:"fit-content",position:"relative",display:"flex",flexDirection:"row",gap:"10px",alignItems:"center",...o},children:[B.jsxs("div",{style:{width:"fit-content",height:"fit-content",position:"relative",display:"flex"},children:[B.jsx("input",{type:"checkbox",name:e,checked:t,onChange:h=>{},onClick:h=>{h.stopPropagation(),i?.(!t)},style:{position:"absolute",opacity:0,width:"100%",height:"100%",cursor:"pointer"}}),B.jsxs("div",{style:{width:"25px",height:"25px",borderRadius:"4px",border:"1px solid #969696ff",background:t?"#000":"#fff",display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"none",...l},children:[t&&v,!t&&f]})]}),a]}),gr=e=>I.useEffect(e,[]),yr=()=>{const[e,t]=I.useState({}),[i,o]=I.useState(!1);return I.useEffect(()=>{const a=f=>{t({x:f.clientX,y:f.clientY})},l=f=>{o(!0)},v=f=>{o(!1)};return window.addEventListener("pointermove",a),window.addEventListener("pointerdown",l),window.addEventListener("pointerup",v),()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerdown",l),window.removeEventListener("pointerup",v)}},[]),{pointerPosition:e,isPointerDown:i}},mr=({ref:e,onDrag:t,onDragStart:i,onDragEnd:o})=>{const a=I.useRef(!1),l=I.useRef(!1),{pointerPosition:v,isPointerDown:f}=yr(),h=I.useRef({isDragging:!1}),k=I.useCallback(A=>{if(!e||!e.current||!h.current)return;const y={...h.current};return y.posY=A.y,y.posX=A.x,h.current.startPosX&&h.current.posX&&(y.distanceX=h.current.startPosX-h.current.posX),h.current.startPosY&&h.current.posY&&(y.distanceY=-(h.current.startPosY-h.current.posY)),y},[]),_=I.useCallback(A=>{A.preventDefault(),A.stopPropagation(),h.current.isDragging=!0,h.current.startPosY=A.clientY,h.current.startPosX=A.clientX;const y=k({x:A.clientX,y:A.clientY});y&&(h.current=y,i?.(y))},[k]),M=I.useCallback(A=>{h.current.isDragging=!1;const y=k(v);y&&(o?.(y),y.startPosX=void 0,y.startPosY=void 0,h.current=y)},[k,v]),F=I.useCallback(A=>{if(console.debug("useDrag > onPointerMove > Is Dragging >",h.current.isDragging),!h.current.isDragging)return;const y=k(v);console.debug("useDrag > onPointerMove > Drag Result >",y),y&&(t?.(y),h.current=y)},[k,v]),V=I.useCallback(async()=>{if(!a.current){for(;!e?.current;)await new Promise(A=>setTimeout(A,300));a.current=!0,e.current.onpointerdown=_,e.current.style.touchAction="none"}},[e?.current,_]);I.useEffect(()=>{V()},[V]),I.useEffect(()=>{F()},[v]),I.useEffect(()=>{f!==l.current&&(l.current=f,f||M())},[f,l.current])},fi=()=>{const e=(h,k)=>{if(!k)return h;const _=new URLSearchParams;for(const F in k){const V=k[F];Array.isArray(V)?V.forEach(A=>_.append(F,String(A))):V!=null&&_.append(F,String(V))}const M=_.toString();return M?`${h}?${M}`:h},t=async h=>{try{return{result:await h.json(),statusCode:h.status}}catch(k){return{result:void 0,statusCode:h.status,error:k}}},i=async(h,k,_,M)=>{const F=await fetch(h,{method:k,headers:_,body:M});return t(F)};return{get:async(h,k,_)=>{const M=e(h,k);return i(M,"GET",{..._})},post:async(h,k,_)=>i(h,"POST",{"Content-Type":"application/json",..._},JSON.stringify(k)),put:async(h,k,_)=>i(h,"PUT",{"Content-Type":"application/json",..._},JSON.stringify(k)),patch:async(h,k,_)=>i(h,"PATCH",{"Content-Type":"application/json",..._},JSON.stringify(k)),delete:async(h,k,_)=>{const M=e(h,k);return i(M,"DELETE",{..._})}}};function di(e){const[t,i]=I.useState(!1),o=I.useMemo(()=>new IntersectionObserver(([a])=>i(a.isIntersecting)),[]);return I.useEffect(()=>(e?.current&&o.observe(e?.current),()=>o.disconnect()),[e,o.disconnect,o.observe]),t}const br={xs:0,sm:420,md:768,lg:991,xl:1200,xxl:1440},hi=e=>{const t={...br,...e?.breakpointConfiguration},[i,o]=I.useState(Gt(t)),a=()=>{o(Gt(t))};return I.useEffect(()=>(window.addEventListener("resize",a),()=>{window.removeEventListener("resize",a)}),[]),I.useMemo(()=>i,[i])},pi=(e,t)=>e<t.sm?"xs":e<t.md?"sm":e<t.lg?"md":e<t.xl?"lg":e<t.xxl?"xl":"xxl",vi=(e,t)=>e<=t.sm?"mobile":e<=t.md?"tablet":"desktop",Gt=e=>{const t=window.innerWidth,i=window.innerHeight,o=pi(t,e),a=vi(t,e);return{currentWidth:t,currentHeight:i,currentBreakpoint:o,currentSize:a}},gi=e=>{const t=e.translations,i=e.language,o=(l,v)=>{if(!l)return;let f=l[i];if(f)return v&&Object.keys(v).forEach(h=>{const k=v[h];f=f.replaceAll(`{{${h}}}`,`${k}`)}),f};return{t:(l,v)=>{if(t[l]){const f=o(t[l],v);return f??l}return l},getTranslation:o}},Sr=I.createContext(null),Kt=(e,t,i)=>{if(i!=null){if(!Array.isArray(i)){e.set(t,String(i));return}e.delete(t),i.forEach(o=>{o!=null&&e.append(t,String(o))})}},yi=()=>{const[e,t]=ge.useSearchParams(),{search:i}=ge.useLocation(),o=I.useRef(new URLSearchParams(i)),a=I.useRef(i);a.current!==i&&(a.current=i,o.current=new URLSearchParams(i));const l=I.useMemo(()=>Object.fromEntries(e.entries()),[e]),v=I.useCallback(()=>l,[l]),f=I.useCallback(T=>Object.fromEntries(T.map(j=>[j,e.get(j)])),[e]),h=I.useCallback(T=>e.get(T),[e]),k=I.useCallback(T=>e.getAll(T),[e]),_=I.useCallback(T=>{const j=T(new URLSearchParams(o.current));o.current=new URLSearchParams(j),t(j)},[t]),M=I.useCallback(T=>{_(j=>(j.delete(T),j))},[_]),F=I.useCallback(T=>{_(j=>(T.forEach(N=>{j.delete(N)}),j))},[_]),V=I.useCallback(()=>_(()=>new URLSearchParams),[_]),A=I.useCallback((T,j)=>{_(N=>(j==null?N.delete(T):Kt(N,T,j),N))},[_]),y=I.useCallback(T=>{_(j=>(Object.entries(T).forEach(([N,q])=>{q==null?j.delete(N):Kt(j,N,q)}),j))},[_]);return{getAll:v,getAllValues:k,get:h,getMany:f,set:A,setMany:y,remove:M,removeMany:F,removeAll:V}},mi=e=>{if(!e.params)return e.path;const t=ge.parsePath(e.path),i=new URLSearchParams(t.search);Object.entries(e.params).forEach(([a,l])=>{l!=null&&(Array.isArray(l)?(i.delete(a),l.forEach(v=>{v!=null&&i.append(a,String(v))})):i.set(a,String(l)))});const o=i.toString();return{...t,search:o?`?${o}`:""}},bi=()=>{const e=ge.useNavigate(),t=ge.useLocation(),i=I.useContext(Sr),o=yi(),a=I.useCallback(v=>{const f=mi(v);e(f,{replace:v.addToHistory===!1})},[e]),l=I.useCallback((v={})=>{const f=v.steps??1;if(!Number.isSafeInteger(f)||f<1)throw new RangeError("goBack steps must be a positive safe integer.");if(i){const h=i.index;if(h<f){if(v.defaultBackPath!==void 0){e(v.defaultBackPath,{replace:!0});return}if(h===0)return;e(-h);return}}e(-f)},[i,e]);return{currentPath:t.pathname,history:i?.entries.map(v=>v.path)??[`${t.pathname}${t.search}${t.hash}`],searchParams:o,goBack:l,goTo:a}},wr=({isReady:e=!0,routes:t,children:i})=>{const o=ge.useLocation(),a=ge.useNavigationType(),[l,v]=I.useState(()=>({entries:[{key:o.key,path:`${o.pathname}${o.search}${o.hash}`}],index:0})),f=I.useRef(o.key);I.useEffect(()=>{f.current!==o.key&&(f.current=o.key,v(k=>{const _={key:o.key,path:`${o.pathname}${o.search}${o.hash}`};if(a==="PUSH"){const F=k.entries.slice(0,k.index+1);return F.push(_),{entries:F,index:F.length-1}}if(a==="REPLACE"){const F=[...k.entries];return F[k.index]=_,{entries:F,index:k.index}}const M=k.entries.findIndex(F=>F.key===o.key);return M>=0?{...k,index:M}:{entries:[_],index:0}}))},[o.hash,o.key,o.pathname,o.search,a]);const h=t.map((k,_)=>B.jsx(ge.Route,{path:k.path,element:k.render},`${k.path}-${_}`));return B.jsxs(Sr.Provider,{value:l,children:[e&&B.jsx(ge.Routes,{children:h}),i]})},Si=e=>B.jsx(ge.BrowserRouter,{children:B.jsx(wr,{...e})}),xr=I.createContext({visibleItems:[],isItemVisible:()=>!1,showItem:()=>{},hideItem:()=>{}}),wi=({children:e})=>{const t=I.useRef([]),[i,o]=I.useState([]),a=I.useCallback(h=>{t.current=h,o(h)},[]),l=I.useCallback(h=>t.current.some(k=>k===h),[]),v=I.useCallback(h=>{l(h)||a([...t.current,h])},[l,a]),f=I.useCallback(h=>{l(h)&&a(t.current.filter(_=>_!==h))},[l,a]);return B.jsx(xr.Provider,{value:{visibleItems:i,isItemVisible:l,showItem:v,hideItem:f},children:e})},Ne=()=>{const e=I.useContext(xr),t=a=>e.visibleItems.some(l=>l===a),i=a=>{e.showItem(a)},o=a=>{e.hideItem(a)};return{visibleItems:e.visibleItems,isItemVisible:t,showItem:i,hideItem:o}},xi=({id:e,onCloseDrawer:t,drawerCloseOffset:i=15})=>{const{isItemVisible:o}=Ne(),[a,l]=I.useState({isDragging:!1}),v=I.useRef(null),f=I.useRef(null),h=I.useRef(null),[k,_]=I.useState(0),M=A=>{l(A)},F=A=>{l(A),_(0)};return mr({ref:h,onDrag:A=>{l(A);const y=f.current?.clientHeight||0;A.distanceY&&(_(A.distanceY<0?0:-A.distanceY),A.distanceY>=y-i&&(t?.(),F(A)))},onDragEnd:F,onDragStart:M}),{isVisible:o(e),drawerParentRef:v,drawerRef:f,drawerBottomDistance:k,handleRef:h}},Oi=e=>{const{children:t,backgroundStyles:i,contentStyles:o,handle:a}=e,{isVisible:l,drawerParentRef:v,drawerRef:f,handleRef:h,drawerBottomDistance:k}=xi(e);return B.jsx(B.Fragment,{children:l&&B.jsx("div",{ref:v,style:{width:"100%",height:"100%",minHeight:"100vh",left:0,top:0,background:"#00000068",position:"fixed",zIndex:1e3,display:"flex",flexDirection:"column",touchAction:"none",...i},children:B.jsxs("div",{ref:f,style:{width:"100%",height:"fit-content",minHeight:"80px",maxHeight:"90%",background:"#ffffff",borderTopLeftRadius:"16px",borderTopRightRadius:"16px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"24px",zIndex:1001,position:"absolute",bottom:`${k}px`,...o},onClick:_=>{_.stopPropagation()},children:[B.jsx("div",{ref:h,style:{display:"flex",alignItems:"center",justifyContent:"center",position:"absolute",top:"0px",height:"24px",width:"100%",cursor:"pointer",...a?.styles},children:a?.render}),t]})})})},ki=({onPreSubmit:e,onSubmit:t,onChange:i,onMount:o,configurations:a})=>{const l=I.useRef(null),v=I.useRef(!1),f=T=>({name:T.name,value:T.value?.trim()}),h=()=>{if(!l.current?.elements)return[];const T=Array.from(l.current?.elements).filter(N=>!!N.getAttribute("name")),j=[];for(const N of T)j.push(f(N));return j},k=(T,j,N)=>T==="change"&&j||T==="mount"&&N||T==="submit",_=async(T,j)=>{try{const W=(a||[]).find(d=>d.name===T.name);if(!W)return T;var N=T.value,q=T.value;if(W.emptyValidation&&W.emptyValidation.allow===!1&&!N&&k(j,W.emptyValidation.validateOnChange,W.emptyValidation.validateOnMount))return T.error=W.emptyValidation.errorMessage,T;if(W.minLengthValidation&&N.length<W.minLengthValidation.value&&k(j,W.minLengthValidation.validateOnChange,W.minLengthValidation.validateOnMount))return T.error=W.minLengthValidation.errorMessage,T;if(W.maxLengthValidation&&N.length>W.maxLengthValidation.value&&k(j,W.maxLengthValidation.validateOnChange,W.maxLengthValidation.validateOnMount))return T.error=W.maxLengthValidation.errorMessage,T;if(!isNaN(q)){if(W.minValueValidation&&q<W.minValueValidation.value&&k(j,W.minValueValidation.validateOnChange,W.minValueValidation.validateOnMount))return T.error=W.minValueValidation.errorMessage,T;if(W.maxValueValidation&&q>W.maxValueValidation.value&&k(j,W.maxValueValidation.validateOnChange,W.maxValueValidation.validateOnMount))return T.error=W.maxValueValidation.errorMessage,T}if(W.exactValueValidation&&W.exactValueValidation.value!==T.value&&k(j,W.exactValueValidation.validateOnChange,W.exactValueValidation.validateOnMount))return T.error=W.exactValueValidation.errorMessage,T;for(let d=0;d<(W.validations||[]).length;d++){const p=W.validations?.[d];if(!k(j,p?.validateOnChange,p?.validateOnMount))continue;const m=await W.validations?.[d].validate?.(T.value);if(m)return T.error=m,T}}catch(W){console.error(`Form > Failed To Validate Field ${T.name}: `,W)}return T},M=I.useCallback(async T=>{let j=h();j=await Promise.all(j.map(async q=>await _(q,T)));const N=j.find(q=>q.error!==void 0);return{fields:j,hasErrors:N!==void 0}},[]),F=I.useCallback(async T=>{try{if(v.current)return;v.current=!0,e?.(),T.preventDefault(),T.stopPropagation();const j=await M("submit");v.current=!1,t?.(j.fields,j.hasErrors)}catch(j){v.current=!1,console.error("Form > OnSubmit > Error submitting: ",j)}},[t,e]),V=I.useCallback(async T=>{try{const N=T.target;var j=await M("change");let q=f(N);q=await _(q,"change"),console.debug("Form > On Change > ",{result:q,allFieldsValidation:j}),i?.(q,j.fields,j.hasErrors)}catch(N){console.error("Form > onChange > Error changing: ",N)}},[t,e]),A=I.useCallback(async()=>{try{const T=await M("mount");o?.(T.fields,T.hasErrors)}catch(T){console.error("Form > onChange > Error changing: ",T)}},[t,e]),y=T=>{l.current&&l.current.requestSubmit()};return gr(()=>{A()}),{ref:l,submitForm:y,handleFormSubmission:F,handleFormChange:V}},Ci=Se.div`
116
116
  display: flex;
117
117
  flex: 1;
118
118
  align-items: center;
package/dist/index.es.js CHANGED
@@ -4242,9 +4242,18 @@ const mi = {
4242
4242
  const f = v.steps ?? 1;
4243
4243
  if (!Number.isSafeInteger(f) || f < 1)
4244
4244
  throw new RangeError("goBack steps must be a positive safe integer.");
4245
- if (i && i.index < f && v.defaultBackPath !== void 0) {
4246
- e(v.defaultBackPath, { replace: !0 });
4247
- return;
4245
+ if (i) {
4246
+ const h = i.index;
4247
+ if (h < f) {
4248
+ if (v.defaultBackPath !== void 0) {
4249
+ e(v.defaultBackPath, { replace: !0 });
4250
+ return;
4251
+ }
4252
+ if (h === 0)
4253
+ return;
4254
+ e(-h);
4255
+ return;
4256
+ }
4248
4257
  }
4249
4258
  e(-f);
4250
4259
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eliseubatista99/react-scaffold-core",
3
- "version": "1.2.9",
3
+ "version": "1.2.10",
4
4
  "private": false,
5
5
  "description": "A library which provides basic components, hooks, helpers and providers to easily build a React application and avoid repeating the usual code.",
6
6
  "main": "dist/index.cjs.js",