@bgscore/react-core 0.0.39 → 0.0.41

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 CHANGED
@@ -1 +1 @@
1
- 'use strict';var z=require('moment'),te=require('react'),jsxRuntime=require('react/jsx-runtime'),ce=require('crypto-js/aes'),ue=require('crypto-js/pbkdf2'),Se=require('crypto-js/enc-utf8'),W=require('crypto-js/enc-base64'),pe=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),Me=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var z__default=/*#__PURE__*/_interopDefault(z);var te__default=/*#__PURE__*/_interopDefault(te);var ce__default=/*#__PURE__*/_interopDefault(ce);var ue__default=/*#__PURE__*/_interopDefault(ue);var Se__default=/*#__PURE__*/_interopDefault(Se);var W__default=/*#__PURE__*/_interopDefault(W);var pe__default=/*#__PURE__*/_interopDefault(pe);var Me__default=/*#__PURE__*/_interopDefault(Me);function Ge(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function Xe(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var Ye=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ze(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function K(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var se={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=se.snackCase(se.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function Qe(e,t){return typeof e=="function"?e(t):e}var N=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},et={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(o,t)?N(n,t):"";return s<a?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(o,t)?N(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},tt=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?N(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function nt(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function Te(e){let t=new WeakSet;return JSON.stringify(e,function(n,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function ae(e,t){return Te([t??"undefined",e??"undefined"])}function ie(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function rt(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}var le=te.createContext(void 0);function F(){let e=te.useContext(le);return e||{}}var De=({children:e,value:t})=>{let n={...t};return jsxRuntime.jsx(le.Provider,{value:n,children:e})};function _(e,t){let n=pe__default.default.random(16),o=pe__default.default.random(16),s=ue__default.default(t,n,{keySize:256/32,iterations:1e3}),a=ce__default.default.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(W__default.default),iv:o.toString(W__default.default),encrypted:a}}function G(e,t){let{salt:n,iv:o,encrypted:s}=e,a=ue__default.default(t,W__default.default.parse(n),{keySize:256/32,iterations:1e3}),r=ce__default.default.decrypt(s,a,{iv:W__default.default.parse(o)}).toString(Se__default.default);return JSON.parse(r)}function fe(e,t){return JSON.stringify(_(e,t))}function de(e,t){return G(JSON.parse(e),t)}function j(){let{passphrase:e}=F();return {passphrase:e,encrypt(t,n){return _(t,n||e)},decrypt(t,n){return G(t,n||e)},encryptString(t,n){return fe(t,n||e)},decryptString(t,n){return de(t,n||e)}}}var me=()=>{let{encrypt:e,decrypt:t}=j(),n=te.useCallback((c,r)=>{try{let p=e(r);localStorage.setItem(c,JSON.stringify(p));}catch(p){console.error("Failed to save to storage:",p);}},[e]),o=te.useCallback(c=>{try{let r=localStorage.getItem(c);return r?t(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[t]),s=c=>{let[r,p]=te.useState(()=>{try{let l=localStorage.getItem(c);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return te.useEffect(()=>{let l=y=>{if(y.key===c)if(y.newValue)try{p(t(JSON.parse(y.newValue)));}catch(q){console.error("Decrypt error from storage event",q);}else p(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[c,t]),r},a=te.useCallback(c=>{c?localStorage.removeItem(c):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};var V={loading:false,response:void 0,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{},data:void 0},B=zustand.create(e=>({states:{},updateState:(t,n)=>e(o=>({states:{...o.states,[t]:{...o.states[t]||V,...n}}})),resetState:t=>e(n=>({states:{...n.states,[t]:V}}))}));var Y=new Map,ye=(e,t)=>{Y.set(e,t);},ge=e=>{Y.delete(e);},Re=e=>Y.get(e);function Ue(...e){let[t,n,o]=e,s=t.__isVoid,a=t.__path||t.name,c=s?void 0:n,r=s?n:o,p=r?.storeName||a,{updateState:l}=B(),y=B(({states:u})=>u[p]?.isCancel??false),q=B(({states:u})=>u[p]?.loading??false),D=B(({states:u})=>u[p]?.response??void 0),{storageKey:O,cache:h,clearPreviousData:C,refetchOnWindowFocus:P}=F(),I=me(),w=te.useRef(void 0),k=te.useRef(null),{cacheName:H,cacheKey:E,timeout:ne,timeoutUnit:re,persistence:J,cacheEnabled:m}=te.useMemo(()=>{let u=O?I.get(O):void 0,g=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=ae({...c,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),d=false;typeof h?.enabled=="boolean"&&(d=h.enabled);let S=false;typeof h?.persistence=="boolean"&&(S=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(S=r?.cache?.persistence??false);let T=60*5,v="s";return K(h?.timeout)&&(typeof h?.timeout=="number"?(T=h.timeout,v="s"):typeof h?.timeout=="object"&&(T=h?.timeout.value,v=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?d=r.cache.enabled:d=true,typeof r.cache.timeout=="number"?(T=r.cache.timeout,v="s"):typeof r.cache.timeout=="object"&&(T=r.cache.timeout.value,v=r.cache.timeout.unit)):d=r.cache),{cacheName:g,cacheKey:x,timeout:T,timeoutUnit:v,persistence:S,cacheEnabled:d}},[r?.cache,c,O,h,a]);te.useEffect(()=>{let u=JSON.stringify(K(w.current)?w.current:""),g=JSON.stringify(K(c)?c:""),x=w.current===void 0;(u!==g||x)&&!r?.hold&&((r?.clearPreviousData??C)&&l(p,{response:null}),f(),w.current=c),r?.onChange&&r?.onChange(c,M);},[c,r?.clearPreviousData,C,r?.hold,...r?.trigger||[]]),te.useEffect(()=>{let u=async()=>{!J&&H&&E&&(await caches.open(H)).delete(E);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),k.current?.abort();}},[J,H,E,p,k]);let f=te.useCallback(async u=>{let g=c;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(g=r?.beforeRequest(c)),m&&!u&&!y){l(p,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(c);let x=await caches.open(H),S=await(await x.match(E))?.json();if(S){let{data:T,expired:v}=S;if(z__default.default().isAfter(v))await x.delete(E);else {r?.afterResponse&&T?.data&&(T.data=r?.afterResponse(T.data)),r?.logging&&console.log("After request: Using Cache",T),r?.onAfterResponse&&r?.onAfterResponse(T),l(p,{loading:false,...T,response:T});return}}}if(typeof t=="function"){k.current?.abort();let x=new AbortController;k.current=x,l(p,{loading:true}),r?.logging&&console.log("Before request",c),r?.onBeforeRequest&&r?.onBeforeRequest(c);let d=s?await t(void 0,{...r,signal:x.signal}):await t(g,void 0,{...r,signal:x.signal});if(r?.afterResponse&&d?.data&&(d.data=r?.afterResponse(d.data)),r?.logging&&console.log("After request",d),r?.onAfterResponse&&r?.onAfterResponse(d),l(p,{loading:false,...d,response:d,isCancel:false}),m&&d.status){let S=z__default.default().add(ne,re).toISOString(),T={data:d,expired:S},v=await caches.open(H),oe=new Response(JSON.stringify(T));await v.put(E,oe);}}},[c,t,r,y]);te.useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,g=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},z__default.default.duration(u,g).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=te.useRef(null),{enabledRefetch:b,timeoutRefetch:A,timeoutUnitRefetch:U}=te.useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??P?.enabled??false,g=r?.refetchOnWindowFocus?.timeout??P?.timeout,x=typeof g=="number"?g:g?.value??60*5,d=typeof g=="object"?g.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:d}},[r?.refetchOnWindowFocus,P]);te.useEffect(()=>{if(!b)return;let u=z__default.default.duration(A,U).asMilliseconds(),g=()=>{let d=Date.now(),S=i.current;S!==null&&d-S>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",g),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",g),window.removeEventListener("blur",x);}},[b,A,U,f]);let R=te.useCallback(()=>{k.current?.abort(),k.current=null,l(p,{loading:false,isCancel:true});},[p,k]),L=te.useCallback(()=>{l(p,{loading:false,response:null});},[p]),M={...D,loading:q,refresh:f,abort:R,clear:L,response:D,isCancel:y,clone:(u,g)=>Ue(t,u,g)};return te.useEffect(()=>(ye(p,M),()=>{ge(p);}),[M,p]),[D?.data,M]}async function Et(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var ve=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(ve||{}),Ne=(i=>(i.number="number",i.currency="currency",i.percent="percent",i.date="date",i.dateTime="dateTime",i.month="month",i.year="year",i.time="time",i.timestamp="timestamp",i.string="string",i.textarea="textarea",i.code="code",i.password="password",i.boolean="boolean",i.toggle="toggle",i.email="email",i.phone="phone",i.url="url",i.json="json",i.file="file",i.image="image",i.array="array",i.object="object",i.enum="enum",i.user="user",i.department="department",i.status="status",i))(Ne||{});var Lt=(e,t,n)=>{let{format:o}=F();return t==="number"?Fe(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Be(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?Ee(e,n):t==="string"?Ke(e,n):e?.toString()??""};function Ee(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function Ke(e,t){if(!K(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=ie(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function Fe(e,{thouSep:t,decSep:n,decDigits:o,method:s}){if(e==null||isNaN(Number(e)))return "";let a=typeof e=="string"?parseFloat(e):e;if(s)if(typeof o=="number"){let l=Math.pow(10,o);a=Math[s](a*l)/l;}else a=Math[s](a);else if(typeof o=="number"){let l=Math.pow(10,o);a=Math.floor(a*l)/l;}let c=0;if(o==="auto"){let l=a.toString(),y=l.indexOf(".");y!==-1&&(c=l.length-y-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?c:o||0,maximumFractionDigits:o==="auto"?c:o||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",r).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Be(e,{display:t,value:n}){if(!K(e))return e;let o=z__default.default(e,n);return o.isValid()?o.format(t):e}function Wt(e,{interval:t,lead:n}){let o=te.useRef(null);te.useEffect(()=>{o.current=e;},[e]),te.useEffect(()=>{let s=()=>o.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function zt(e,t,n){let[o,s]=te.useState(false),a=(l,y)=>typeof e=="string"&&l===e||typeof e=="number"&&y===e,c=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:y,keyCode:q}=l,D=l.ctrlKey,O=l.altKey,h=l.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")a(y,q)&&(t==="ctrl"&&D||t==="alt"&&O||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let C=t.every(P=>P==="ctrl"?D:P==="alt"?O:P==="shift"?h:false);a(y,q)&&C&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(y,q)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},p=({key:l,keyCode:y})=>{a(l,y)&&s(false);};return te.useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",p),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",p);}),[]),o}var Qt=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:c,handleAuthorization:r,disabledToastWhenCancel:p,withCredentials:l,encryptRequest:y,encryptResponse:q,passphrase:D})=>{let{encrypt:O,decrypt:h,passphrase:C}=j(),P=(m,f,i,b)=>{let A=b?.code==="ERR_CANCELED",U=m?.status===401,R=m?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:q)&&R){let d=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?C:i.passphrase:D;try{R=h(R,d);}catch{try{R=h(R,C);}catch{}}}let u={...o({...m,data:R,isCancel:A,isUnauthorization:U},b),isCancel:A,isUnauthorization:U,httpCode:m.status},g=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:p,x=r?r(u,i):!U;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&c&&(!A||!g)&&c(u),!x&&(!A||!i?.disabledHandleUnauthorized)){let d=i?.onUnauthorized||a;d&&d(u);}if(f)f(u);else return u},I=(m,f=()=>{})=>Me__default.default.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:l})(m).then(f).catch(b=>f(b.response,b)),w=(m,f,i,b,A)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...A},L={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&(L.Authorization=`Bearer ${t}`):R.token&&(L.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:y)&&i){let u=A?.passphrase?typeof A.passphrase=="boolean"&&A.passphrase?C:A.passphrase:D;i=O(i,u);}return I({url:f,method:m,data:i,headers:L,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,g)=>P(u,b,R,g))};return {client:I,post:(m,f,i,b)=>w("POST",`${m}`,f,i,b),put:(m,f,i,b)=>w("PUT",`${m}`,f,i,b),patch:(m,f,i,b)=>w("PATCH",`${m}`,f,i,b),delete:(m,f,i)=>w("DELETE",`${m}`,null,f,i),get:(m,f,i)=>w("GET",`${m}`,null,f,i),upload:(m,f,i,b)=>{let A=new FormData;return Object.keys(f).forEach(U=>A.append(U,f[U])),w("POST",`${m}`,A,i,{infoSuccess:false,...b,headers:{"Content-Type":"multipart/form-data",...b?.headers}})}}};function nn(e,t){let[n,o]=te.useState(false),[s,a]=te.useState(),[c,r]=te.useState(0),p=te.useRef(null);return te.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{p.current?.abort();}},[]),[async D=>{p.current?.abort();let O=new AbortController;p.current=O,o(true),t?.beforeRequest&&(D=t?.beforeRequest(D)),t?.logging&&console.log("Before request",D);let h={...t,signal:O.signal,onUploadProgress:P=>{let I=Math.round(P.loaded*100/(P.total||1));r(I);}},C=e.__isVoid?await e(void 0,h):await e(D,void 0,h);t?.logging&&console.log("After response",C),a(C),o(false),r(0),C.status&&t?.onSuccess&&t?.onSuccess(C),!C.status&&t?.onError&&t?.onError(C),t?.afterResponse&&t?.afterResponse(C);},{...s,loading:n,abort:()=>{p.current?.abort(),p.current=null,o(false),r(0);},progress:c,reset:()=>{o(false),r(0),a(null);}}]}function je(e,t){let{disableHysteresis:n=false,threshold:o=100,target:s}=t,a=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!n&&a!==void 0&&e.current<a?false:(e.current||0)>o}var Ve=typeof window<"u"?window:null;function sn(e={}){let{getTrigger:t=je,target:n=Ve,disableHysteresis:o=false,threshold:s=100}=e,a=te__default.default.useRef(0),[c,r]=te__default.default.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return te__default.default.useEffect(()=>{let p=()=>{r(t(a,{disableHysteresis:o,threshold:s,target:n}));};if(p(),n)return n.addEventListener("scroll",p,{passive:true}),()=>{n.removeEventListener("scroll",p);}},[n,t,o,s]),c}var cn=(e,t)=>{let n=t||e.__path||e.name,o=B(({states:p})=>p[n]??V),{refresh:s,abort:a,clear:c,clone:r}=Re(n)||{};return [o?.data,{...o,refresh:s,abort:a,clear:c,clone:r}]};var dn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},mn=(e,t)=>{let n={};n.others=[];let o=s=>{te__default.default.Children.forEach(s,a=>{if(te__default.default.isValidElement(a)){let c=a.type.displayName;if(t.includes(c))n[c]=a;else {let r=a;r.props?.children?o(r.props.children):n.others.push(a);}}else n.others.push(a);});};return o(e),n};function Rn(e){let t=e,n=new Set;function o(){return t}function s(r){return n.add(r),()=>n.delete(r)}function a(r){typeof r=="function"?t=r(t):t=r,n.forEach(p=>p());}function c(r){let p=te.useRef(r?r(t):t);return te.useSyncExternalStore(s,()=>{let l=r?r(t):t,y=p.current;return Object.is(y,l)||(p.current=l),p.current},()=>r?r(t):t)}return {getSnapshot:o,subscribe:s,setState:a,useStore:c}}function _e(e,t=[]){let n={};for(let o in e){let s=e[o];if(typeof s=="function"){let a=s.bind(null);a.__path=[...t,o].join("."),a.__isVoid=s.length===2,n[o]=a;}else typeof s=="object"&&s!==null?n[o]=_e(s,[...t,o]):n[o]=s;}return n}exports.BgsCoreProvider=De;exports.DataTypeEnum=Ne;exports.HttpMethod=ve;exports.capitalizeWords=ie;exports.createApiHelper=Qt;exports.createElement=dn;exports.createStore=Rn;exports.debounce=rt;exports.decrypt=G;exports.decryptString=de;exports.diffJson=Xe;exports.encrypt=_;exports.encryptString=fe;exports.generateCacheKey=ae;exports.generateUUID=Ge;exports.getFieldValue=N;exports.isArray=Ze;exports.isNotEmpty=K;exports.jsonCopy=nt;exports.labelFormatter=se;exports.mappingUndefinedtoNull=Ye;exports.renderChildren=Qe;exports.sorting=et;exports.splitElement=mn;exports.stableStringify=Te;exports.summary=tt;exports.useApiLoad=Ue;exports.useApiSend=nn;exports.useApiStore=cn;exports.useBgsCore=F;exports.useCrypto=j;exports.useDelay=Et;exports.useFormatted=Lt;exports.useInterval=Wt;exports.useKeyPress=zt;exports.useScrollTrigger=sn;exports.useStorage=me;exports.wrapApi=_e;
1
+ 'use strict';var z=require('moment'),te=require('react'),jsxRuntime=require('react/jsx-runtime'),ce=require('crypto-js/aes'),ue=require('crypto-js/pbkdf2'),Se=require('crypto-js/enc-utf8'),V=require('crypto-js/enc-base64'),pe=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),Le=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var z__default=/*#__PURE__*/_interopDefault(z);var te__default=/*#__PURE__*/_interopDefault(te);var ce__default=/*#__PURE__*/_interopDefault(ce);var ue__default=/*#__PURE__*/_interopDefault(ue);var Se__default=/*#__PURE__*/_interopDefault(Se);var V__default=/*#__PURE__*/_interopDefault(V);var pe__default=/*#__PURE__*/_interopDefault(pe);var Le__default=/*#__PURE__*/_interopDefault(Le);function Ge(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function Xe(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var Ye=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ze(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function K(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var se={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=se.snackCase(se.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function Qe(e,t){return typeof e=="function"?e(t):e}var N=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},et={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(o,t)?N(n,t):"";return s<a?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(o,t)?N(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},tt=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?N(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function nt(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function Te(e){let t=new WeakSet;return JSON.stringify(e,function(n,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function ae(e,t){return Te([t??"undefined",e??"undefined"])}function ie(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function rt(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}var le=te.createContext(void 0);function F(){let e=te.useContext(le);return e||{}}var De=({children:e,value:t})=>{let n={...t};return jsxRuntime.jsx(le.Provider,{value:n,children:e})};function _(e,t){let n=pe__default.default.random(16),o=pe__default.default.random(16),s=ue__default.default(t,n,{keySize:256/32,iterations:1e3}),a=ce__default.default.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(V__default.default),iv:o.toString(V__default.default),encrypted:a}}function G(e,t){let{salt:n,iv:o,encrypted:s}=e,a=ue__default.default(t,V__default.default.parse(n),{keySize:256/32,iterations:1e3}),r=ce__default.default.decrypt(s,a,{iv:V__default.default.parse(o)}).toString(Se__default.default);return JSON.parse(r)}function fe(e,t){return JSON.stringify(_(e,t))}function de(e,t){return G(JSON.parse(e),t)}function W(){let{passphrase:e}=F();return {passphrase:e,encrypt(t,n){return _(t,n||e)},decrypt(t,n){return G(t,n||e)},encryptString(t,n){return fe(t,n||e)},decryptString(t,n){return de(t,n||e)}}}var me=()=>{let{encrypt:e,decrypt:t}=W(),n=te.useCallback((c,r)=>{try{let p=e(r);localStorage.setItem(c,JSON.stringify(p));}catch(p){console.error("Failed to save to storage:",p);}},[e]),o=te.useCallback(c=>{try{let r=localStorage.getItem(c);return r?t(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[t]),s=c=>{let[r,p]=te.useState(()=>{try{let l=localStorage.getItem(c);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return te.useEffect(()=>{let l=y=>{if(y.key===c)if(y.newValue)try{p(t(JSON.parse(y.newValue)));}catch(q){console.error("Decrypt error from storage event",q);}else p(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[c,t]),r},a=te.useCallback(c=>{c?localStorage.removeItem(c):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};var j={loading:false,response:void 0,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{},data:void 0},M=zustand.create(e=>({states:{},updateState:(t,n)=>e(o=>({states:{...o.states,[t]:{...o.states[t]||j,...n}}})),resetState:t=>e(n=>({states:{...n.states,[t]:j}}))}));var Y=new Map,ye=(e,t)=>{Y.set(e,t);},ge=e=>{Y.delete(e);},Re=e=>Y.get(e);function Ue(...e){let[t,n,o]=e,s=t.__isVoid,a=t.__path||t.name,c=s?void 0:n,r=s?n:o,p=r?.storeName||a,{updateState:l}=M(),y=M(({states:u})=>u[p]?.isCancel??false),q=M(({states:u})=>u[p]?.loading??false),D=M(({states:u})=>u[p]?.response??void 0),{storageKey:O,cache:h,clearPreviousData:C,refetchOnWindowFocus:P}=F(),B=me(),w=te.useRef(void 0),k=te.useRef(null),{cacheName:I,cacheKey:E,timeout:ne,timeoutUnit:re,persistence:J,cacheEnabled:m}=te.useMemo(()=>{let u=O?B.get(O):void 0,g=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=ae({...c,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),d=false;typeof h?.enabled=="boolean"&&(d=h.enabled);let S=false;typeof h?.persistence=="boolean"&&(S=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(S=r?.cache?.persistence??false);let T=60*5,v="s";return K(h?.timeout)&&(typeof h?.timeout=="number"?(T=h.timeout,v="s"):typeof h?.timeout=="object"&&(T=h?.timeout.value,v=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?d=r.cache.enabled:d=true,typeof r.cache.timeout=="number"?(T=r.cache.timeout,v="s"):typeof r.cache.timeout=="object"&&(T=r.cache.timeout.value,v=r.cache.timeout.unit)):d=r.cache),{cacheName:g,cacheKey:x,timeout:T,timeoutUnit:v,persistence:S,cacheEnabled:d}},[r?.cache,c,O,h,a]);te.useEffect(()=>{let u=JSON.stringify(K(w.current)?w.current:""),g=JSON.stringify(K(c)?c:""),x=w.current===void 0;(u!==g||x)&&!r?.hold&&((r?.clearPreviousData??C)&&l(p,{response:null}),f(),w.current=c),r?.onChange&&r?.onChange(c,L);},[c,r?.clearPreviousData,C,r?.hold,...r?.trigger||[]]),te.useEffect(()=>{let u=async()=>{!J&&I&&E&&(await caches.open(I)).delete(E);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),k.current?.abort();}},[J,I,E,p,k]);let f=te.useCallback(async u=>{let g=c;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(g=r?.beforeRequest(c)),m&&!u&&!y){l(p,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(c);let x=await caches.open(I),S=await(await x.match(E))?.json();if(S){let{data:T,expired:v}=S;if(z__default.default().isAfter(v))await x.delete(E);else {r?.afterResponse&&T?.data&&(T.data=r?.afterResponse(T.data)),r?.logging&&console.log("After request: Using Cache",T),r?.onAfterResponse&&r?.onAfterResponse(T),l(p,{loading:false,...T,response:T});return}}}if(typeof t=="function"){k.current?.abort();let x=new AbortController;k.current=x,l(p,{loading:true}),r?.logging&&console.log("Before request",c),r?.onBeforeRequest&&r?.onBeforeRequest(c);let d=s?await t(void 0,{...r,signal:x.signal}):await t(g,void 0,{...r,signal:x.signal});if(r?.afterResponse&&d?.data&&(d.data=r?.afterResponse(d.data)),r?.logging&&console.log("After request",d),r?.onAfterResponse&&r?.onAfterResponse(d),l(p,{loading:false,...d,response:d,isCancel:false}),m&&d.status){let S=z__default.default().add(ne,re).toISOString(),T={data:d,expired:S},v=await caches.open(I),oe=new Response(JSON.stringify(T));await v.put(E,oe);}}},[c,t,r,y]);te.useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,g=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},z__default.default.duration(u,g).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=te.useRef(null),{enabledRefetch:b,timeoutRefetch:A,timeoutUnitRefetch:U}=te.useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??P?.enabled??false,g=r?.refetchOnWindowFocus?.timeout??P?.timeout,x=typeof g=="number"?g:g?.value??60*5,d=typeof g=="object"?g.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:d}},[r?.refetchOnWindowFocus,P]);te.useEffect(()=>{if(!b)return;let u=z__default.default.duration(A,U).asMilliseconds(),g=()=>{let d=Date.now(),S=i.current;S!==null&&d-S>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",g),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",g),window.removeEventListener("blur",x);}},[b,A,U,f]);let R=te.useCallback(()=>{k.current?.abort(),k.current=null,l(p,{loading:false,isCancel:true});},[p,k]),H=te.useCallback(()=>{l(p,{loading:false,response:null});},[p]),L={...D,loading:q,refresh:f,abort:R,clear:H,response:D,isCancel:y,clone:(u,g)=>Ue(t,u,g)};return te.useEffect(()=>(ye(p,L),()=>{ge(p);}),[L,p]),[D?.data,L]}async function Et(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var ve=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(ve||{}),Ne=(i=>(i.number="number",i.currency="currency",i.percent="percent",i.date="date",i.dateTime="dateTime",i.month="month",i.year="year",i.time="time",i.timestamp="timestamp",i.string="string",i.textarea="textarea",i.code="code",i.password="password",i.boolean="boolean",i.toggle="toggle",i.email="email",i.phone="phone",i.url="url",i.json="json",i.file="file",i.image="image",i.array="array",i.object="object",i.enum="enum",i.user="user",i.department="department",i.status="status",i))(Ne||{});var Ht=(e,t,n)=>{let{format:o}=F();return t==="number"?Fe(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Me(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?Ee(e,n):t==="string"?Ke(e,n):e?.toString()??""};function Ee(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function Ke(e,t){if(!K(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=ie(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function Fe(e,{thouSep:t,decSep:n,decDigits:o,method:s}){if(e==null||isNaN(Number(e)))return "";let a=typeof e=="string"?parseFloat(e):e;if(s)if(typeof o=="number"){let l=Math.pow(10,o);a=Math[s](a*l)/l;}else a=Math[s](a);else if(typeof o=="number"){let l=Math.pow(10,o);a=Math.floor(a*l)/l;}let c=0;if(o==="auto"){let l=a.toString(),y=l.indexOf(".");y!==-1&&(c=l.length-y-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?c:o||0,maximumFractionDigits:o==="auto"?c:o||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",r).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Me(e,{display:t,value:n}){if(!K(e))return e;let o=z__default.default(e,n);return o.isValid()?o.format(t):e}function Vt(e,{interval:t,lead:n}){let o=te.useRef(null);te.useEffect(()=>{o.current=e;},[e]),te.useEffect(()=>{let s=()=>o.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function zt(e,t,n){let[o,s]=te.useState(false),a=(l,y)=>typeof e=="string"&&l===e||typeof e=="number"&&y===e,c=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:y,keyCode:q}=l,D=l.ctrlKey,O=l.altKey,h=l.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")a(y,q)&&(t==="ctrl"&&D||t==="alt"&&O||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let C=t.every(P=>P==="ctrl"?D:P==="alt"?O:P==="shift"?h:false);a(y,q)&&C&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(y,q)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},p=({key:l,keyCode:y})=>{a(l,y)&&s(false);};return te.useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",p),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",p);}),[]),o}var Qt=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:c,handleAuthorization:r,disabledToastWhenCancel:p,withCredentials:l,encryptRequest:y,encryptResponse:q,passphrase:D})=>{let{encrypt:O,decrypt:h,passphrase:C}=W(),P=(m,f,i,b)=>{let A=b?.code==="ERR_CANCELED",U=m?.status===401,R=m?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:q)&&R){let d=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?C:i.passphrase:D;try{R=h(R,d);}catch{try{R=h(R,C);}catch{}}}let u={...o({...m,data:R,isCancel:A,isUnauthorization:U},b),isCancel:A,isUnauthorization:U,httpCode:m.status},g=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:p,x=r?r(u,i):!U;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&c&&(!A||!g)&&c(u),!x&&(!A||!i?.disabledHandleUnauthorized)){let d=i?.onUnauthorized||a;d&&d(u);}if(f)f(u);else return u},B=(m,f=()=>{})=>Le__default.default.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:l})(m).then(f).catch(b=>f(b.response,b)),w=(m,f,i,b,A)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...A},H={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&(H.Authorization=`Bearer ${t}`):R.token&&(H.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:y)&&i){let u=A?.passphrase?typeof A.passphrase=="boolean"&&A.passphrase?C:A.passphrase:D;i=O(i,u);}return B({url:f,method:m,data:i,headers:H,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,g)=>P(u,b,R,g))};return {client:B,post:(m,f,i,b)=>w("POST",`${m}`,f,i,b),put:(m,f,i,b)=>w("PUT",`${m}`,f,i,b),patch:(m,f,i,b)=>w("PATCH",`${m}`,f,i,b),delete:(m,f,i)=>w("DELETE",`${m}`,null,f,i),get:(m,f,i)=>w("GET",`${m}`,null,f,i),upload:(m,f,i,b)=>{let A=new FormData;return Object.keys(f).forEach(U=>A.append(U,f[U])),w("POST",`${m}`,A,i,{infoSuccess:false,...b,headers:{"Content-Type":"multipart/form-data",...b?.headers}})}}};function nn(e,t){let[n,o]=te.useState(false),[s,a]=te.useState(),[c,r]=te.useState(0),p=te.useRef(null);return te.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{p.current?.abort();}},[]),[async D=>{p.current?.abort();let O=new AbortController;p.current=O,o(true),t?.beforeRequest&&(D=t?.beforeRequest(D)),t?.logging&&console.log("Before request",D);let h={...t,signal:O.signal,onUploadProgress:P=>{let B=Math.round(P.loaded*100/(P.total||1));r(B);}},C=e.__isVoid?await e(void 0,h):await e(D,void 0,h);t?.logging&&console.log("After response",C),a(C),o(false),r(0),C.status&&t?.onSuccess&&t?.onSuccess(C),!C.status&&t?.onError&&t?.onError(C),t?.afterResponse&&t?.afterResponse(C);},{...s,loading:n,abort:()=>{p.current?.abort(),p.current=null,o(false),r(0);},progress:c,reset:()=>{o(false),r(0),a(null);}}]}function We(e,t){let{disableHysteresis:n=false,threshold:o=100,target:s}=t,a=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!n&&a!==void 0&&e.current<a?false:(e.current||0)>o}var je=typeof window<"u"?window:null;function sn(e={}){let{getTrigger:t=We,target:n=je,disableHysteresis:o=false,threshold:s=100}=e,a=te__default.default.useRef(0),[c,r]=te__default.default.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return te__default.default.useEffect(()=>{let p=()=>{r(t(a,{disableHysteresis:o,threshold:s,target:n}));};if(p(),n)return n.addEventListener("scroll",p,{passive:true}),()=>{n.removeEventListener("scroll",p);}},[n,t,o,s]),c}var cn=(e,t)=>{let n=t||e.__path||e.name,o=M(({states:p})=>p[n]??j),{refresh:s,abort:a,clear:c,clone:r}=Re(n)||{};return [o?.data,{...o,refresh:s,abort:a,clear:c,clone:r}]};var dn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},mn=(e,t)=>{let n={};n.others=[];let o=s=>{te__default.default.Children.forEach(s,a=>{if(te__default.default.isValidElement(a)){let c=a.type.displayName;if(t.includes(c))n[c]=a;else {let r=a;r.props?.children?o(r.props.children):n.others.push(a);}}else n.others.push(a);});};return o(e),n};function Rn(e){let t=e,n=new Set;function o(){return t}function s(r){return n.add(r),()=>n.delete(r)}function a(r){typeof r=="function"?t=r(t):t=r,n.forEach(p=>p());}function c(r){let p=te.useRef(r?r(t):t);return te.useSyncExternalStore(s,()=>{let l=r?r(t):t,y=p.current;return Object.is(y,l)||(p.current=l),p.current},()=>r?r(t):t)}return {getSnapshot:o,subscribe:s,setState:a,useStore:c}}function _e(e,t=[]){let n={};for(let o in e){let s=e[o];if(typeof s=="function"){let a=s.bind(null);a.__path=[...t,o].join("."),a.__isVoid=s.length===2,n[o]=a;}else typeof s=="object"&&s!==null?n[o]=_e(s,[...t,o]):n[o]=s;}return n}exports.BgsCoreProvider=De;exports.DataTypeEnum=Ne;exports.HttpMethod=ve;exports.capitalizeWords=ie;exports.createApiHelper=Qt;exports.createElement=dn;exports.createStore=Rn;exports.debounce=rt;exports.decrypt=G;exports.decryptString=de;exports.defaultState=j;exports.diffJson=Xe;exports.encrypt=_;exports.encryptString=fe;exports.generateCacheKey=ae;exports.generateUUID=Ge;exports.getApiActions=Re;exports.getFieldValue=N;exports.isArray=Ze;exports.isNotEmpty=K;exports.jsonCopy=nt;exports.labelFormatter=se;exports.mappingUndefinedtoNull=Ye;exports.registerApi=ye;exports.renderChildren=Qe;exports.sorting=et;exports.splitElement=mn;exports.stableStringify=Te;exports.summary=tt;exports.unregisterApi=ge;exports.useApiLoad=Ue;exports.useApiLoadStore=M;exports.useApiSend=nn;exports.useApiStore=cn;exports.useBgsCore=F;exports.useCrypto=W;exports.useDelay=Et;exports.useFormatted=Ht;exports.useInterval=Vt;exports.useKeyPress=zt;exports.useScrollTrigger=sn;exports.useStorage=me;exports.wrapApi=_e;
package/dist/index.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  import moment from 'moment';
2
2
  import { GenericAbortSignal, AxiosProgressEvent, AxiosResponse, AxiosRequestConfig } from 'axios';
3
3
  import React$1, { PropsWithChildren } from 'react';
4
+ import * as zustand from 'zustand';
4
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
6
 
6
7
  type Children<T = unknown> = ChildFunction<T> | React.ReactNode;
@@ -451,8 +452,9 @@ declare function useCrypto(): {
451
452
  decryptString(data: string, passphraseProps?: string | null): string;
452
453
  };
453
454
 
454
- type InferApiRequest<T> = T extends ApiMethod<infer Req, any> ? Req : never;
455
- type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : never;
455
+ type AnyApiMethod = ApiMethod<any, any> | ApiMethodVoid<any>;
456
+ type InferApiRequest<T> = T extends ApiMethod<infer Req, any> ? Req : T extends ApiMethodVoid<any> ? never : never;
457
+ type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : T extends ApiMethodVoid<infer Res> ? Res : never;
456
458
  /**
457
459
  * Hook untuk menggunakan API store yang sesuai dengan method.
458
460
  *
@@ -465,7 +467,7 @@ type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : never;
465
467
  * const store = useApiStore(api.absence.save, 'absence.save'); // pakai key manual
466
468
  * ```
467
469
  */
468
- declare const useApiStore: <T extends ApiMethod<any, any>>(api: T, key?: string) => UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>;
470
+ declare const useApiStore: <T extends AnyApiMethod>(api: T, key?: string) => UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>;
469
471
 
470
472
  type CreateElementProps<P = unknown> = {
471
473
  (element: (props: P) => React$1.JSX.Element, elementName: string): React$1.FC<P>;
@@ -520,6 +522,18 @@ type TWithName<T> = {
520
522
  };
521
523
  declare function wrapApi<T extends object>(obj: T, path?: string[]): T;
522
524
 
525
+ declare const registerApi: (key: string, actions: Partial<OptionsCallReturn<any, any>>) => void;
526
+ declare const unregisterApi: (key: string) => void;
527
+ declare const getApiActions: (key: string) => Partial<OptionsCallReturn<any, any>> | undefined;
528
+
529
+ interface ApiLoadState {
530
+ states: Record<string, OptionsCallReturn>;
531
+ updateState: (storeName: string, state: Partial<OptionsCallReturn>) => void;
532
+ resetState: (storeName: string) => void;
533
+ }
534
+ declare const defaultState: OptionsCallReturn;
535
+ declare const useApiLoadStore: zustand.UseBoundStore<zustand.StoreApi<ApiLoadState>>;
536
+
523
537
  type FormatType = {
524
538
  display: string;
525
539
  value: string;
@@ -546,4 +560,4 @@ interface BgsCoreProviderProps {
546
560
  }
547
561
  declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
548
562
 
549
- export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, renderChildren, sorting, splitElement, stableStringify, summary, useApiLoad, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
563
+ export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, defaultState, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getApiActions, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, registerApi, renderChildren, sorting, splitElement, stableStringify, summary, unregisterApi, useApiLoad, useApiLoadStore, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import moment from 'moment';
2
2
  import { GenericAbortSignal, AxiosProgressEvent, AxiosResponse, AxiosRequestConfig } from 'axios';
3
3
  import React$1, { PropsWithChildren } from 'react';
4
+ import * as zustand from 'zustand';
4
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
6
 
6
7
  type Children<T = unknown> = ChildFunction<T> | React.ReactNode;
@@ -451,8 +452,9 @@ declare function useCrypto(): {
451
452
  decryptString(data: string, passphraseProps?: string | null): string;
452
453
  };
453
454
 
454
- type InferApiRequest<T> = T extends ApiMethod<infer Req, any> ? Req : never;
455
- type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : never;
455
+ type AnyApiMethod = ApiMethod<any, any> | ApiMethodVoid<any>;
456
+ type InferApiRequest<T> = T extends ApiMethod<infer Req, any> ? Req : T extends ApiMethodVoid<any> ? never : never;
457
+ type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : T extends ApiMethodVoid<infer Res> ? Res : never;
456
458
  /**
457
459
  * Hook untuk menggunakan API store yang sesuai dengan method.
458
460
  *
@@ -465,7 +467,7 @@ type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : never;
465
467
  * const store = useApiStore(api.absence.save, 'absence.save'); // pakai key manual
466
468
  * ```
467
469
  */
468
- declare const useApiStore: <T extends ApiMethod<any, any>>(api: T, key?: string) => UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>;
470
+ declare const useApiStore: <T extends AnyApiMethod>(api: T, key?: string) => UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>;
469
471
 
470
472
  type CreateElementProps<P = unknown> = {
471
473
  (element: (props: P) => React$1.JSX.Element, elementName: string): React$1.FC<P>;
@@ -520,6 +522,18 @@ type TWithName<T> = {
520
522
  };
521
523
  declare function wrapApi<T extends object>(obj: T, path?: string[]): T;
522
524
 
525
+ declare const registerApi: (key: string, actions: Partial<OptionsCallReturn<any, any>>) => void;
526
+ declare const unregisterApi: (key: string) => void;
527
+ declare const getApiActions: (key: string) => Partial<OptionsCallReturn<any, any>> | undefined;
528
+
529
+ interface ApiLoadState {
530
+ states: Record<string, OptionsCallReturn>;
531
+ updateState: (storeName: string, state: Partial<OptionsCallReturn>) => void;
532
+ resetState: (storeName: string) => void;
533
+ }
534
+ declare const defaultState: OptionsCallReturn;
535
+ declare const useApiLoadStore: zustand.UseBoundStore<zustand.StoreApi<ApiLoadState>>;
536
+
523
537
  type FormatType = {
524
538
  display: string;
525
539
  value: string;
@@ -546,4 +560,4 @@ interface BgsCoreProviderProps {
546
560
  }
547
561
  declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
548
562
 
549
- export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, renderChildren, sorting, splitElement, stableStringify, summary, useApiLoad, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
563
+ export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, defaultState, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getApiActions, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, registerApi, renderChildren, sorting, splitElement, stableStringify, summary, unregisterApi, useApiLoad, useApiLoadStore, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import z from'moment';import te,{createContext,useContext,useCallback,useRef,useMemo,useEffect,useState,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import ce from'crypto-js/aes';import ue from'crypto-js/pbkdf2';import Se from'crypto-js/enc-utf8';import W from'crypto-js/enc-base64';import pe from'crypto-js/lib-typedarrays';import {create}from'zustand';import Me from'axios';function Ge(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function Xe(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var Ye=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ze(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function K(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var se={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=se.snackCase(se.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function Qe(e,t){return typeof e=="function"?e(t):e}var N=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},et={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(o,t)?N(n,t):"";return s<a?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(o,t)?N(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},tt=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?N(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function nt(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function Te(e){let t=new WeakSet;return JSON.stringify(e,function(n,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function ae(e,t){return Te([t??"undefined",e??"undefined"])}function ie(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function rt(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}var le=createContext(void 0);function F(){let e=useContext(le);return e||{}}var De=({children:e,value:t})=>{let n={...t};return jsx(le.Provider,{value:n,children:e})};function _(e,t){let n=pe.random(16),o=pe.random(16),s=ue(t,n,{keySize:256/32,iterations:1e3}),a=ce.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(W),iv:o.toString(W),encrypted:a}}function G(e,t){let{salt:n,iv:o,encrypted:s}=e,a=ue(t,W.parse(n),{keySize:256/32,iterations:1e3}),r=ce.decrypt(s,a,{iv:W.parse(o)}).toString(Se);return JSON.parse(r)}function fe(e,t){return JSON.stringify(_(e,t))}function de(e,t){return G(JSON.parse(e),t)}function j(){let{passphrase:e}=F();return {passphrase:e,encrypt(t,n){return _(t,n||e)},decrypt(t,n){return G(t,n||e)},encryptString(t,n){return fe(t,n||e)},decryptString(t,n){return de(t,n||e)}}}var me=()=>{let{encrypt:e,decrypt:t}=j(),n=useCallback((c,r)=>{try{let p=e(r);localStorage.setItem(c,JSON.stringify(p));}catch(p){console.error("Failed to save to storage:",p);}},[e]),o=useCallback(c=>{try{let r=localStorage.getItem(c);return r?t(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[t]),s=c=>{let[r,p]=useState(()=>{try{let l=localStorage.getItem(c);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return useEffect(()=>{let l=y=>{if(y.key===c)if(y.newValue)try{p(t(JSON.parse(y.newValue)));}catch(q){console.error("Decrypt error from storage event",q);}else p(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[c,t]),r},a=useCallback(c=>{c?localStorage.removeItem(c):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};var V={loading:false,response:void 0,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{},data:void 0},B=create(e=>({states:{},updateState:(t,n)=>e(o=>({states:{...o.states,[t]:{...o.states[t]||V,...n}}})),resetState:t=>e(n=>({states:{...n.states,[t]:V}}))}));var Y=new Map,ye=(e,t)=>{Y.set(e,t);},ge=e=>{Y.delete(e);},Re=e=>Y.get(e);function Ue(...e){let[t,n,o]=e,s=t.__isVoid,a=t.__path||t.name,c=s?void 0:n,r=s?n:o,p=r?.storeName||a,{updateState:l}=B(),y=B(({states:u})=>u[p]?.isCancel??false),q=B(({states:u})=>u[p]?.loading??false),D=B(({states:u})=>u[p]?.response??void 0),{storageKey:O,cache:h,clearPreviousData:C,refetchOnWindowFocus:P}=F(),I=me(),w=useRef(void 0),k=useRef(null),{cacheName:H,cacheKey:E,timeout:ne,timeoutUnit:re,persistence:J,cacheEnabled:m}=useMemo(()=>{let u=O?I.get(O):void 0,g=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=ae({...c,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),d=false;typeof h?.enabled=="boolean"&&(d=h.enabled);let S=false;typeof h?.persistence=="boolean"&&(S=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(S=r?.cache?.persistence??false);let T=60*5,v="s";return K(h?.timeout)&&(typeof h?.timeout=="number"?(T=h.timeout,v="s"):typeof h?.timeout=="object"&&(T=h?.timeout.value,v=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?d=r.cache.enabled:d=true,typeof r.cache.timeout=="number"?(T=r.cache.timeout,v="s"):typeof r.cache.timeout=="object"&&(T=r.cache.timeout.value,v=r.cache.timeout.unit)):d=r.cache),{cacheName:g,cacheKey:x,timeout:T,timeoutUnit:v,persistence:S,cacheEnabled:d}},[r?.cache,c,O,h,a]);useEffect(()=>{let u=JSON.stringify(K(w.current)?w.current:""),g=JSON.stringify(K(c)?c:""),x=w.current===void 0;(u!==g||x)&&!r?.hold&&((r?.clearPreviousData??C)&&l(p,{response:null}),f(),w.current=c),r?.onChange&&r?.onChange(c,M);},[c,r?.clearPreviousData,C,r?.hold,...r?.trigger||[]]),useEffect(()=>{let u=async()=>{!J&&H&&E&&(await caches.open(H)).delete(E);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),k.current?.abort();}},[J,H,E,p,k]);let f=useCallback(async u=>{let g=c;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(g=r?.beforeRequest(c)),m&&!u&&!y){l(p,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(c);let x=await caches.open(H),S=await(await x.match(E))?.json();if(S){let{data:T,expired:v}=S;if(z().isAfter(v))await x.delete(E);else {r?.afterResponse&&T?.data&&(T.data=r?.afterResponse(T.data)),r?.logging&&console.log("After request: Using Cache",T),r?.onAfterResponse&&r?.onAfterResponse(T),l(p,{loading:false,...T,response:T});return}}}if(typeof t=="function"){k.current?.abort();let x=new AbortController;k.current=x,l(p,{loading:true}),r?.logging&&console.log("Before request",c),r?.onBeforeRequest&&r?.onBeforeRequest(c);let d=s?await t(void 0,{...r,signal:x.signal}):await t(g,void 0,{...r,signal:x.signal});if(r?.afterResponse&&d?.data&&(d.data=r?.afterResponse(d.data)),r?.logging&&console.log("After request",d),r?.onAfterResponse&&r?.onAfterResponse(d),l(p,{loading:false,...d,response:d,isCancel:false}),m&&d.status){let S=z().add(ne,re).toISOString(),T={data:d,expired:S},v=await caches.open(H),oe=new Response(JSON.stringify(T));await v.put(E,oe);}}},[c,t,r,y]);useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,g=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},z.duration(u,g).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=useRef(null),{enabledRefetch:b,timeoutRefetch:A,timeoutUnitRefetch:U}=useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??P?.enabled??false,g=r?.refetchOnWindowFocus?.timeout??P?.timeout,x=typeof g=="number"?g:g?.value??60*5,d=typeof g=="object"?g.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:d}},[r?.refetchOnWindowFocus,P]);useEffect(()=>{if(!b)return;let u=z.duration(A,U).asMilliseconds(),g=()=>{let d=Date.now(),S=i.current;S!==null&&d-S>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",g),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",g),window.removeEventListener("blur",x);}},[b,A,U,f]);let R=useCallback(()=>{k.current?.abort(),k.current=null,l(p,{loading:false,isCancel:true});},[p,k]),L=useCallback(()=>{l(p,{loading:false,response:null});},[p]),M={...D,loading:q,refresh:f,abort:R,clear:L,response:D,isCancel:y,clone:(u,g)=>Ue(t,u,g)};return useEffect(()=>(ye(p,M),()=>{ge(p);}),[M,p]),[D?.data,M]}async function Et(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var ve=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(ve||{}),Ne=(i=>(i.number="number",i.currency="currency",i.percent="percent",i.date="date",i.dateTime="dateTime",i.month="month",i.year="year",i.time="time",i.timestamp="timestamp",i.string="string",i.textarea="textarea",i.code="code",i.password="password",i.boolean="boolean",i.toggle="toggle",i.email="email",i.phone="phone",i.url="url",i.json="json",i.file="file",i.image="image",i.array="array",i.object="object",i.enum="enum",i.user="user",i.department="department",i.status="status",i))(Ne||{});var Lt=(e,t,n)=>{let{format:o}=F();return t==="number"?Fe(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Be(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?Ee(e,n):t==="string"?Ke(e,n):e?.toString()??""};function Ee(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function Ke(e,t){if(!K(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=ie(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function Fe(e,{thouSep:t,decSep:n,decDigits:o,method:s}){if(e==null||isNaN(Number(e)))return "";let a=typeof e=="string"?parseFloat(e):e;if(s)if(typeof o=="number"){let l=Math.pow(10,o);a=Math[s](a*l)/l;}else a=Math[s](a);else if(typeof o=="number"){let l=Math.pow(10,o);a=Math.floor(a*l)/l;}let c=0;if(o==="auto"){let l=a.toString(),y=l.indexOf(".");y!==-1&&(c=l.length-y-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?c:o||0,maximumFractionDigits:o==="auto"?c:o||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",r).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Be(e,{display:t,value:n}){if(!K(e))return e;let o=z(e,n);return o.isValid()?o.format(t):e}function Wt(e,{interval:t,lead:n}){let o=useRef(null);useEffect(()=>{o.current=e;},[e]),useEffect(()=>{let s=()=>o.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function zt(e,t,n){let[o,s]=useState(false),a=(l,y)=>typeof e=="string"&&l===e||typeof e=="number"&&y===e,c=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:y,keyCode:q}=l,D=l.ctrlKey,O=l.altKey,h=l.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")a(y,q)&&(t==="ctrl"&&D||t==="alt"&&O||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let C=t.every(P=>P==="ctrl"?D:P==="alt"?O:P==="shift"?h:false);a(y,q)&&C&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(y,q)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},p=({key:l,keyCode:y})=>{a(l,y)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",p),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",p);}),[]),o}var Qt=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:c,handleAuthorization:r,disabledToastWhenCancel:p,withCredentials:l,encryptRequest:y,encryptResponse:q,passphrase:D})=>{let{encrypt:O,decrypt:h,passphrase:C}=j(),P=(m,f,i,b)=>{let A=b?.code==="ERR_CANCELED",U=m?.status===401,R=m?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:q)&&R){let d=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?C:i.passphrase:D;try{R=h(R,d);}catch{try{R=h(R,C);}catch{}}}let u={...o({...m,data:R,isCancel:A,isUnauthorization:U},b),isCancel:A,isUnauthorization:U,httpCode:m.status},g=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:p,x=r?r(u,i):!U;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&c&&(!A||!g)&&c(u),!x&&(!A||!i?.disabledHandleUnauthorized)){let d=i?.onUnauthorized||a;d&&d(u);}if(f)f(u);else return u},I=(m,f=()=>{})=>Me.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:l})(m).then(f).catch(b=>f(b.response,b)),w=(m,f,i,b,A)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...A},L={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&(L.Authorization=`Bearer ${t}`):R.token&&(L.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:y)&&i){let u=A?.passphrase?typeof A.passphrase=="boolean"&&A.passphrase?C:A.passphrase:D;i=O(i,u);}return I({url:f,method:m,data:i,headers:L,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,g)=>P(u,b,R,g))};return {client:I,post:(m,f,i,b)=>w("POST",`${m}`,f,i,b),put:(m,f,i,b)=>w("PUT",`${m}`,f,i,b),patch:(m,f,i,b)=>w("PATCH",`${m}`,f,i,b),delete:(m,f,i)=>w("DELETE",`${m}`,null,f,i),get:(m,f,i)=>w("GET",`${m}`,null,f,i),upload:(m,f,i,b)=>{let A=new FormData;return Object.keys(f).forEach(U=>A.append(U,f[U])),w("POST",`${m}`,A,i,{infoSuccess:false,...b,headers:{"Content-Type":"multipart/form-data",...b?.headers}})}}};function nn(e,t){let[n,o]=useState(false),[s,a]=useState(),[c,r]=useState(0),p=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{p.current?.abort();}},[]),[async D=>{p.current?.abort();let O=new AbortController;p.current=O,o(true),t?.beforeRequest&&(D=t?.beforeRequest(D)),t?.logging&&console.log("Before request",D);let h={...t,signal:O.signal,onUploadProgress:P=>{let I=Math.round(P.loaded*100/(P.total||1));r(I);}},C=e.__isVoid?await e(void 0,h):await e(D,void 0,h);t?.logging&&console.log("After response",C),a(C),o(false),r(0),C.status&&t?.onSuccess&&t?.onSuccess(C),!C.status&&t?.onError&&t?.onError(C),t?.afterResponse&&t?.afterResponse(C);},{...s,loading:n,abort:()=>{p.current?.abort(),p.current=null,o(false),r(0);},progress:c,reset:()=>{o(false),r(0),a(null);}}]}function je(e,t){let{disableHysteresis:n=false,threshold:o=100,target:s}=t,a=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!n&&a!==void 0&&e.current<a?false:(e.current||0)>o}var Ve=typeof window<"u"?window:null;function sn(e={}){let{getTrigger:t=je,target:n=Ve,disableHysteresis:o=false,threshold:s=100}=e,a=te.useRef(0),[c,r]=te.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return te.useEffect(()=>{let p=()=>{r(t(a,{disableHysteresis:o,threshold:s,target:n}));};if(p(),n)return n.addEventListener("scroll",p,{passive:true}),()=>{n.removeEventListener("scroll",p);}},[n,t,o,s]),c}var cn=(e,t)=>{let n=t||e.__path||e.name,o=B(({states:p})=>p[n]??V),{refresh:s,abort:a,clear:c,clone:r}=Re(n)||{};return [o?.data,{...o,refresh:s,abort:a,clear:c,clone:r}]};var dn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},mn=(e,t)=>{let n={};n.others=[];let o=s=>{te.Children.forEach(s,a=>{if(te.isValidElement(a)){let c=a.type.displayName;if(t.includes(c))n[c]=a;else {let r=a;r.props?.children?o(r.props.children):n.others.push(a);}}else n.others.push(a);});};return o(e),n};function Rn(e){let t=e,n=new Set;function o(){return t}function s(r){return n.add(r),()=>n.delete(r)}function a(r){typeof r=="function"?t=r(t):t=r,n.forEach(p=>p());}function c(r){let p=useRef(r?r(t):t);return useSyncExternalStore(s,()=>{let l=r?r(t):t,y=p.current;return Object.is(y,l)||(p.current=l),p.current},()=>r?r(t):t)}return {getSnapshot:o,subscribe:s,setState:a,useStore:c}}function _e(e,t=[]){let n={};for(let o in e){let s=e[o];if(typeof s=="function"){let a=s.bind(null);a.__path=[...t,o].join("."),a.__isVoid=s.length===2,n[o]=a;}else typeof s=="object"&&s!==null?n[o]=_e(s,[...t,o]):n[o]=s;}return n}export{De as BgsCoreProvider,Ne as DataTypeEnum,ve as HttpMethod,ie as capitalizeWords,Qt as createApiHelper,dn as createElement,Rn as createStore,rt as debounce,G as decrypt,de as decryptString,Xe as diffJson,_ as encrypt,fe as encryptString,ae as generateCacheKey,Ge as generateUUID,N as getFieldValue,Ze as isArray,K as isNotEmpty,nt as jsonCopy,se as labelFormatter,Ye as mappingUndefinedtoNull,Qe as renderChildren,et as sorting,mn as splitElement,Te as stableStringify,tt as summary,Ue as useApiLoad,nn as useApiSend,cn as useApiStore,F as useBgsCore,j as useCrypto,Et as useDelay,Lt as useFormatted,Wt as useInterval,zt as useKeyPress,sn as useScrollTrigger,me as useStorage,_e as wrapApi};
1
+ import z from'moment';import te,{createContext,useContext,useCallback,useRef,useMemo,useEffect,useState,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import ce from'crypto-js/aes';import ue from'crypto-js/pbkdf2';import Se from'crypto-js/enc-utf8';import V from'crypto-js/enc-base64';import pe from'crypto-js/lib-typedarrays';import {create}from'zustand';import Le from'axios';function Ge(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function Xe(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var Ye=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ze(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function K(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var se={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=se.snackCase(se.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function Qe(e,t){return typeof e=="function"?e(t):e}var N=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},et={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(o,t)?N(n,t):"";return s<a?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(o,t)?N(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},tt=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?N(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function nt(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function Te(e){let t=new WeakSet;return JSON.stringify(e,function(n,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function ae(e,t){return Te([t??"undefined",e??"undefined"])}function ie(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function rt(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}var le=createContext(void 0);function F(){let e=useContext(le);return e||{}}var De=({children:e,value:t})=>{let n={...t};return jsx(le.Provider,{value:n,children:e})};function _(e,t){let n=pe.random(16),o=pe.random(16),s=ue(t,n,{keySize:256/32,iterations:1e3}),a=ce.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(V),iv:o.toString(V),encrypted:a}}function G(e,t){let{salt:n,iv:o,encrypted:s}=e,a=ue(t,V.parse(n),{keySize:256/32,iterations:1e3}),r=ce.decrypt(s,a,{iv:V.parse(o)}).toString(Se);return JSON.parse(r)}function fe(e,t){return JSON.stringify(_(e,t))}function de(e,t){return G(JSON.parse(e),t)}function W(){let{passphrase:e}=F();return {passphrase:e,encrypt(t,n){return _(t,n||e)},decrypt(t,n){return G(t,n||e)},encryptString(t,n){return fe(t,n||e)},decryptString(t,n){return de(t,n||e)}}}var me=()=>{let{encrypt:e,decrypt:t}=W(),n=useCallback((c,r)=>{try{let p=e(r);localStorage.setItem(c,JSON.stringify(p));}catch(p){console.error("Failed to save to storage:",p);}},[e]),o=useCallback(c=>{try{let r=localStorage.getItem(c);return r?t(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[t]),s=c=>{let[r,p]=useState(()=>{try{let l=localStorage.getItem(c);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return useEffect(()=>{let l=y=>{if(y.key===c)if(y.newValue)try{p(t(JSON.parse(y.newValue)));}catch(q){console.error("Decrypt error from storage event",q);}else p(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[c,t]),r},a=useCallback(c=>{c?localStorage.removeItem(c):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};var j={loading:false,response:void 0,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{},data:void 0},M=create(e=>({states:{},updateState:(t,n)=>e(o=>({states:{...o.states,[t]:{...o.states[t]||j,...n}}})),resetState:t=>e(n=>({states:{...n.states,[t]:j}}))}));var Y=new Map,ye=(e,t)=>{Y.set(e,t);},ge=e=>{Y.delete(e);},Re=e=>Y.get(e);function Ue(...e){let[t,n,o]=e,s=t.__isVoid,a=t.__path||t.name,c=s?void 0:n,r=s?n:o,p=r?.storeName||a,{updateState:l}=M(),y=M(({states:u})=>u[p]?.isCancel??false),q=M(({states:u})=>u[p]?.loading??false),D=M(({states:u})=>u[p]?.response??void 0),{storageKey:O,cache:h,clearPreviousData:C,refetchOnWindowFocus:P}=F(),B=me(),w=useRef(void 0),k=useRef(null),{cacheName:I,cacheKey:E,timeout:ne,timeoutUnit:re,persistence:J,cacheEnabled:m}=useMemo(()=>{let u=O?B.get(O):void 0,g=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=ae({...c,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),d=false;typeof h?.enabled=="boolean"&&(d=h.enabled);let S=false;typeof h?.persistence=="boolean"&&(S=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(S=r?.cache?.persistence??false);let T=60*5,v="s";return K(h?.timeout)&&(typeof h?.timeout=="number"?(T=h.timeout,v="s"):typeof h?.timeout=="object"&&(T=h?.timeout.value,v=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?d=r.cache.enabled:d=true,typeof r.cache.timeout=="number"?(T=r.cache.timeout,v="s"):typeof r.cache.timeout=="object"&&(T=r.cache.timeout.value,v=r.cache.timeout.unit)):d=r.cache),{cacheName:g,cacheKey:x,timeout:T,timeoutUnit:v,persistence:S,cacheEnabled:d}},[r?.cache,c,O,h,a]);useEffect(()=>{let u=JSON.stringify(K(w.current)?w.current:""),g=JSON.stringify(K(c)?c:""),x=w.current===void 0;(u!==g||x)&&!r?.hold&&((r?.clearPreviousData??C)&&l(p,{response:null}),f(),w.current=c),r?.onChange&&r?.onChange(c,L);},[c,r?.clearPreviousData,C,r?.hold,...r?.trigger||[]]),useEffect(()=>{let u=async()=>{!J&&I&&E&&(await caches.open(I)).delete(E);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),k.current?.abort();}},[J,I,E,p,k]);let f=useCallback(async u=>{let g=c;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(g=r?.beforeRequest(c)),m&&!u&&!y){l(p,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(c);let x=await caches.open(I),S=await(await x.match(E))?.json();if(S){let{data:T,expired:v}=S;if(z().isAfter(v))await x.delete(E);else {r?.afterResponse&&T?.data&&(T.data=r?.afterResponse(T.data)),r?.logging&&console.log("After request: Using Cache",T),r?.onAfterResponse&&r?.onAfterResponse(T),l(p,{loading:false,...T,response:T});return}}}if(typeof t=="function"){k.current?.abort();let x=new AbortController;k.current=x,l(p,{loading:true}),r?.logging&&console.log("Before request",c),r?.onBeforeRequest&&r?.onBeforeRequest(c);let d=s?await t(void 0,{...r,signal:x.signal}):await t(g,void 0,{...r,signal:x.signal});if(r?.afterResponse&&d?.data&&(d.data=r?.afterResponse(d.data)),r?.logging&&console.log("After request",d),r?.onAfterResponse&&r?.onAfterResponse(d),l(p,{loading:false,...d,response:d,isCancel:false}),m&&d.status){let S=z().add(ne,re).toISOString(),T={data:d,expired:S},v=await caches.open(I),oe=new Response(JSON.stringify(T));await v.put(E,oe);}}},[c,t,r,y]);useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,g=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},z.duration(u,g).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=useRef(null),{enabledRefetch:b,timeoutRefetch:A,timeoutUnitRefetch:U}=useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??P?.enabled??false,g=r?.refetchOnWindowFocus?.timeout??P?.timeout,x=typeof g=="number"?g:g?.value??60*5,d=typeof g=="object"?g.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:d}},[r?.refetchOnWindowFocus,P]);useEffect(()=>{if(!b)return;let u=z.duration(A,U).asMilliseconds(),g=()=>{let d=Date.now(),S=i.current;S!==null&&d-S>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",g),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",g),window.removeEventListener("blur",x);}},[b,A,U,f]);let R=useCallback(()=>{k.current?.abort(),k.current=null,l(p,{loading:false,isCancel:true});},[p,k]),H=useCallback(()=>{l(p,{loading:false,response:null});},[p]),L={...D,loading:q,refresh:f,abort:R,clear:H,response:D,isCancel:y,clone:(u,g)=>Ue(t,u,g)};return useEffect(()=>(ye(p,L),()=>{ge(p);}),[L,p]),[D?.data,L]}async function Et(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var ve=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(ve||{}),Ne=(i=>(i.number="number",i.currency="currency",i.percent="percent",i.date="date",i.dateTime="dateTime",i.month="month",i.year="year",i.time="time",i.timestamp="timestamp",i.string="string",i.textarea="textarea",i.code="code",i.password="password",i.boolean="boolean",i.toggle="toggle",i.email="email",i.phone="phone",i.url="url",i.json="json",i.file="file",i.image="image",i.array="array",i.object="object",i.enum="enum",i.user="user",i.department="department",i.status="status",i))(Ne||{});var Ht=(e,t,n)=>{let{format:o}=F();return t==="number"?Fe(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Me(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?Ee(e,n):t==="string"?Ke(e,n):e?.toString()??""};function Ee(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function Ke(e,t){if(!K(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=ie(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function Fe(e,{thouSep:t,decSep:n,decDigits:o,method:s}){if(e==null||isNaN(Number(e)))return "";let a=typeof e=="string"?parseFloat(e):e;if(s)if(typeof o=="number"){let l=Math.pow(10,o);a=Math[s](a*l)/l;}else a=Math[s](a);else if(typeof o=="number"){let l=Math.pow(10,o);a=Math.floor(a*l)/l;}let c=0;if(o==="auto"){let l=a.toString(),y=l.indexOf(".");y!==-1&&(c=l.length-y-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?c:o||0,maximumFractionDigits:o==="auto"?c:o||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",r).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Me(e,{display:t,value:n}){if(!K(e))return e;let o=z(e,n);return o.isValid()?o.format(t):e}function Vt(e,{interval:t,lead:n}){let o=useRef(null);useEffect(()=>{o.current=e;},[e]),useEffect(()=>{let s=()=>o.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function zt(e,t,n){let[o,s]=useState(false),a=(l,y)=>typeof e=="string"&&l===e||typeof e=="number"&&y===e,c=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:y,keyCode:q}=l,D=l.ctrlKey,O=l.altKey,h=l.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")a(y,q)&&(t==="ctrl"&&D||t==="alt"&&O||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let C=t.every(P=>P==="ctrl"?D:P==="alt"?O:P==="shift"?h:false);a(y,q)&&C&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(y,q)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},p=({key:l,keyCode:y})=>{a(l,y)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",p),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",p);}),[]),o}var Qt=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:c,handleAuthorization:r,disabledToastWhenCancel:p,withCredentials:l,encryptRequest:y,encryptResponse:q,passphrase:D})=>{let{encrypt:O,decrypt:h,passphrase:C}=W(),P=(m,f,i,b)=>{let A=b?.code==="ERR_CANCELED",U=m?.status===401,R=m?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:q)&&R){let d=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?C:i.passphrase:D;try{R=h(R,d);}catch{try{R=h(R,C);}catch{}}}let u={...o({...m,data:R,isCancel:A,isUnauthorization:U},b),isCancel:A,isUnauthorization:U,httpCode:m.status},g=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:p,x=r?r(u,i):!U;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&c&&(!A||!g)&&c(u),!x&&(!A||!i?.disabledHandleUnauthorized)){let d=i?.onUnauthorized||a;d&&d(u);}if(f)f(u);else return u},B=(m,f=()=>{})=>Le.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:l})(m).then(f).catch(b=>f(b.response,b)),w=(m,f,i,b,A)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...A},H={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&(H.Authorization=`Bearer ${t}`):R.token&&(H.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:y)&&i){let u=A?.passphrase?typeof A.passphrase=="boolean"&&A.passphrase?C:A.passphrase:D;i=O(i,u);}return B({url:f,method:m,data:i,headers:H,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,g)=>P(u,b,R,g))};return {client:B,post:(m,f,i,b)=>w("POST",`${m}`,f,i,b),put:(m,f,i,b)=>w("PUT",`${m}`,f,i,b),patch:(m,f,i,b)=>w("PATCH",`${m}`,f,i,b),delete:(m,f,i)=>w("DELETE",`${m}`,null,f,i),get:(m,f,i)=>w("GET",`${m}`,null,f,i),upload:(m,f,i,b)=>{let A=new FormData;return Object.keys(f).forEach(U=>A.append(U,f[U])),w("POST",`${m}`,A,i,{infoSuccess:false,...b,headers:{"Content-Type":"multipart/form-data",...b?.headers}})}}};function nn(e,t){let[n,o]=useState(false),[s,a]=useState(),[c,r]=useState(0),p=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{p.current?.abort();}},[]),[async D=>{p.current?.abort();let O=new AbortController;p.current=O,o(true),t?.beforeRequest&&(D=t?.beforeRequest(D)),t?.logging&&console.log("Before request",D);let h={...t,signal:O.signal,onUploadProgress:P=>{let B=Math.round(P.loaded*100/(P.total||1));r(B);}},C=e.__isVoid?await e(void 0,h):await e(D,void 0,h);t?.logging&&console.log("After response",C),a(C),o(false),r(0),C.status&&t?.onSuccess&&t?.onSuccess(C),!C.status&&t?.onError&&t?.onError(C),t?.afterResponse&&t?.afterResponse(C);},{...s,loading:n,abort:()=>{p.current?.abort(),p.current=null,o(false),r(0);},progress:c,reset:()=>{o(false),r(0),a(null);}}]}function We(e,t){let{disableHysteresis:n=false,threshold:o=100,target:s}=t,a=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!n&&a!==void 0&&e.current<a?false:(e.current||0)>o}var je=typeof window<"u"?window:null;function sn(e={}){let{getTrigger:t=We,target:n=je,disableHysteresis:o=false,threshold:s=100}=e,a=te.useRef(0),[c,r]=te.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return te.useEffect(()=>{let p=()=>{r(t(a,{disableHysteresis:o,threshold:s,target:n}));};if(p(),n)return n.addEventListener("scroll",p,{passive:true}),()=>{n.removeEventListener("scroll",p);}},[n,t,o,s]),c}var cn=(e,t)=>{let n=t||e.__path||e.name,o=M(({states:p})=>p[n]??j),{refresh:s,abort:a,clear:c,clone:r}=Re(n)||{};return [o?.data,{...o,refresh:s,abort:a,clear:c,clone:r}]};var dn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},mn=(e,t)=>{let n={};n.others=[];let o=s=>{te.Children.forEach(s,a=>{if(te.isValidElement(a)){let c=a.type.displayName;if(t.includes(c))n[c]=a;else {let r=a;r.props?.children?o(r.props.children):n.others.push(a);}}else n.others.push(a);});};return o(e),n};function Rn(e){let t=e,n=new Set;function o(){return t}function s(r){return n.add(r),()=>n.delete(r)}function a(r){typeof r=="function"?t=r(t):t=r,n.forEach(p=>p());}function c(r){let p=useRef(r?r(t):t);return useSyncExternalStore(s,()=>{let l=r?r(t):t,y=p.current;return Object.is(y,l)||(p.current=l),p.current},()=>r?r(t):t)}return {getSnapshot:o,subscribe:s,setState:a,useStore:c}}function _e(e,t=[]){let n={};for(let o in e){let s=e[o];if(typeof s=="function"){let a=s.bind(null);a.__path=[...t,o].join("."),a.__isVoid=s.length===2,n[o]=a;}else typeof s=="object"&&s!==null?n[o]=_e(s,[...t,o]):n[o]=s;}return n}export{De as BgsCoreProvider,Ne as DataTypeEnum,ve as HttpMethod,ie as capitalizeWords,Qt as createApiHelper,dn as createElement,Rn as createStore,rt as debounce,G as decrypt,de as decryptString,j as defaultState,Xe as diffJson,_ as encrypt,fe as encryptString,ae as generateCacheKey,Ge as generateUUID,Re as getApiActions,N as getFieldValue,Ze as isArray,K as isNotEmpty,nt as jsonCopy,se as labelFormatter,Ye as mappingUndefinedtoNull,ye as registerApi,Qe as renderChildren,et as sorting,mn as splitElement,Te as stableStringify,tt as summary,ge as unregisterApi,Ue as useApiLoad,M as useApiLoadStore,nn as useApiSend,cn as useApiStore,F as useBgsCore,W as useCrypto,Et as useDelay,Ht as useFormatted,Vt as useInterval,zt as useKeyPress,sn as useScrollTrigger,me as useStorage,_e as wrapApi};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgscore/react-core",
3
- "version": "0.0.39",
3
+ "version": "0.0.41",
4
4
  "description": "A React utility library that provides advanced API hooks (fetch, mutation, caching). Built for scalable and flexible data handling in modern React applications.",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",