@bgscore/react-core 0.0.41 → 0.0.43

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'),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;
1
+ 'use strict';var ne=require('react'),q=require('dayjs'),De=require('dayjs/plugin/utc'),Ae=require('dayjs/plugin/timezone'),Pe=require('dayjs/plugin/duration'),Se=require('dayjs/plugin/advancedFormat'),Oe=require('dayjs/plugin/localizedFormat'),we=require('dayjs/plugin/relativeTime'),qe=require('dayjs/plugin/isSameOrBefore'),Ue=require('dayjs/plugin/isSameOrAfter'),ve=require('dayjs/plugin/weekOfYear'),Ne=require('dayjs/plugin/customParseFormat'),jsxRuntime=require('react/jsx-runtime'),ue=require('crypto-js/aes'),fe=require('crypto-js/pbkdf2'),Me=require('crypto-js/enc-utf8'),W=require('crypto-js/enc-base64'),ce=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),Ze=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ne__default=/*#__PURE__*/_interopDefault(ne);var q__default=/*#__PURE__*/_interopDefault(q);var De__default=/*#__PURE__*/_interopDefault(De);var Ae__default=/*#__PURE__*/_interopDefault(Ae);var Pe__default=/*#__PURE__*/_interopDefault(Pe);var Se__default=/*#__PURE__*/_interopDefault(Se);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var we__default=/*#__PURE__*/_interopDefault(we);var qe__default=/*#__PURE__*/_interopDefault(qe);var Ue__default=/*#__PURE__*/_interopDefault(Ue);var ve__default=/*#__PURE__*/_interopDefault(ve);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var ue__default=/*#__PURE__*/_interopDefault(ue);var fe__default=/*#__PURE__*/_interopDefault(fe);var Me__default=/*#__PURE__*/_interopDefault(Me);var W__default=/*#__PURE__*/_interopDefault(W);var ce__default=/*#__PURE__*/_interopDefault(ce);var Ze__default=/*#__PURE__*/_interopDefault(Ze);function at(){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 it(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var lt=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function pt(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 L(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 ae={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=ae.snackCase(ae.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function ct(e,t){return typeof e=="function"?e(t):e}var k=(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},ut={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(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=k(n,t)?k(n,t):"",a=k(o,t)?k(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},ft=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?k(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function dt(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function Ce(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 ie(e,t){return Ce([t??"undefined",e??"undefined"])}function le(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function mt(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}q__default.default.extend(De__default.default);q__default.default.extend(Ae__default.default);q__default.default.extend(Pe__default.default);q__default.default.extend(Se__default.default);q__default.default.extend(Oe__default.default);q__default.default.extend(we__default.default);q__default.default.extend(qe__default.default);q__default.default.extend(Ue__default.default);q__default.default.extend(ve__default.default);q__default.default.extend(Ne__default.default);var E=q__default.default;var pe=ne.createContext(void 0);function M(){let e=ne.useContext(pe);return e||{}}var Fe=({children:e,value:t})=>{let n={...t};return ne.useEffect(()=>{(async()=>{if(!(typeof window>"u")&&t.localeConfig){let{preset:s,object:a,isLocal:c}=t.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&E.locale(s,a??{},c);}})();},[t.localeConfig]),jsxRuntime.jsx(pe.Provider,{value:n,children:e})};function G(e,t){let n=ce__default.default.random(16),o=ce__default.default.random(16),s=fe__default.default(t,n,{keySize:256/32,iterations:1e3}),a=ue__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 Y(e,t){let{salt:n,iv:o,encrypted:s}=e,a=fe__default.default(t,W__default.default.parse(n),{keySize:256/32,iterations:1e3}),r=ue__default.default.decrypt(s,a,{iv:W__default.default.parse(o)}).toString(Me__default.default);return JSON.parse(r)}function de(e,t){return JSON.stringify(G(e,t))}function me(e,t){return Y(JSON.parse(e),t)}function z(){let{passphrase:e}=M();return {passphrase:e,encrypt(t,n){return G(t,n||e)},decrypt(t,n){return Y(t,n||e)},encryptString(t,n){return de(t,n||e)},decryptString(t,n){return me(t,n||e)}}}var ye=()=>{let{encrypt:e,decrypt:t}=z(),n=ne.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=ne.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]=ne.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 ne.useEffect(()=>{let l=y=>{if(y.key===c)if(y.newValue)try{p(t(JSON.parse(y.newValue)));}catch(U){console.error("Decrypt error from storage event",U);}else p(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[c,t]),r},a=ne.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},B=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 Z=new Map,ge=(e,t)=>{Z.set(e,t);},Re=e=>{Z.delete(e);},he=e=>Z.get(e);function $e(...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),U=B(({states:u})=>u[p]?.loading??false),A=B(({states:u})=>u[p]?.response??void 0),{storageKey:O,cache:h,clearPreviousData:C,refetchOnWindowFocus:P}=M(),H=ye(),w=ne.useRef(void 0),K=ne.useRef(null),{cacheName:I,cacheKey:F,timeout:re,timeoutUnit:oe,persistence:_,cacheEnabled:m}=ne.useMemo(()=>{let u=O?H.get(O):void 0,g=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=ie({...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,N="s";return L(h?.timeout)&&(typeof h?.timeout=="number"?(T=h.timeout,N="s"):typeof h?.timeout=="object"&&(T=h?.timeout.value,N=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,N="s"):typeof r.cache.timeout=="object"&&(T=r.cache.timeout.value,N=r.cache.timeout.unit)):d=r.cache),{cacheName:g,cacheKey:x,timeout:T,timeoutUnit:N,persistence:S,cacheEnabled:d}},[r?.cache,c,O,h,a]);ne.useEffect(()=>{let u=JSON.stringify(L(w.current)?w.current:""),g=JSON.stringify(L(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,j);},[c,r?.clearPreviousData,C,r?.hold,...r?.trigger||[]]),ne.useEffect(()=>{let u=async()=>{!_&&I&&F&&(await caches.open(I)).delete(F);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),K.current?.abort();}},[_,I,F,p,K]);let f=ne.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(F))?.json();if(S){let{data:T,expired:N}=S;if(E().isAfter(N))await x.delete(F);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=E().add(re,oe).toISOString(),T={data:d,expired:S},N=await caches.open(I),se=new Response(JSON.stringify(T));await N.put(F,se);}}},[c,t,r,y]);ne.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();},E.duration(u,g).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=ne.useRef(null),{enabledRefetch:b,timeoutRefetch:D,timeoutUnitRefetch:v}=ne.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]);ne.useEffect(()=>{if(!b)return;let u=E.duration(D,v).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,D,v,f]);let R=ne.useCallback(()=>{K.current?.abort(),K.current=null,l(p,{loading:false,isCancel:true});},[p,K]),$=ne.useCallback(()=>{l(p,{loading:false,response:null});},[p]),j={...A,loading:U,refresh:f,abort:R,clear:$,response:A,isCancel:y,clone:(u,g)=>$e(t,u,g)};return ne.useEffect(()=>(ge(p,j),()=>{Re(p);}),[j,p]),[A?.data,j]}async function rn(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var je=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(je||{}),Ve=(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))(Ve||{});var cn=(e,t,n)=>{let{format:o}=M();return t==="number"?Je(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?_e(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?We(e,n):t==="string"?ze(e,n):e?.toString()??""};function We(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function ze(e,t){if(!L(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=le(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 Je(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 _e(e,{display:t,value:n}){if(!L(e))return e;let o=E(e,n);return o.isValid()?o.format(t):e}function dn(e,{interval:t,lead:n}){let o=ne.useRef(null);ne.useEffect(()=>{o.current=e;},[e]),ne.useEffect(()=>{let s=()=>o.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function gn(e,t,n){let[o,s]=ne.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:U}=l,A=l.ctrlKey,O=l.altKey,h=l.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")a(y,U)&&(t==="ctrl"&&A||t==="alt"&&O||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let C=t.every(P=>P==="ctrl"?A:P==="alt"?O:P==="shift"?h:false);a(y,U)&&C&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(y,U)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},p=({key:l,keyCode:y})=>{a(l,y)&&s(false);};return ne.useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",p),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",p);}),[]),o}var Dn=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:c,handleAuthorization:r,disabledToastWhenCancel:p,withCredentials:l,encryptRequest:y,encryptResponse:U,passphrase:A})=>{let{encrypt:O,decrypt:h,passphrase:C}=z(),P=(m,f,i,b)=>{let D=b?.code==="ERR_CANCELED",v=m?.status===401,R=m?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:U)&&R){let d=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?C:i.passphrase:A;try{R=h(R,d);}catch{try{R=h(R,C);}catch{}}}let u={...o({...m,data:R,isCancel:D,isUnauthorization:v},b),isCancel:D,isUnauthorization:v,httpCode:m.status},g=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:p,x=r?r(u,i):!v;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&c&&(!D||!g)&&c(u),!x&&(!D||!i?.disabledHandleUnauthorized)){let d=i?.onUnauthorized||a;d&&d(u);}if(f)f(u);else return u},H=(m,f=()=>{})=>Ze__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,D)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...D},$={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&($.Authorization=`Bearer ${t}`):R.token&&($.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:y)&&i){let u=D?.passphrase?typeof D.passphrase=="boolean"&&D.passphrase?C:D.passphrase:A;i=O(i,u);}return H({url:f,method:m,data:i,headers:$,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:H,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 D=new FormData;return Object.keys(f).forEach(v=>D.append(v,f[v])),w("POST",`${m}`,D,i,{infoSuccess:false,...b,headers:{"Content-Type":"multipart/form-data",...b?.headers}})}}};function Sn(e,t){let[n,o]=ne.useState(false),[s,a]=ne.useState(),[c,r]=ne.useState(0),p=ne.useRef(null);return ne.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{p.current?.abort();}},[]),[async A=>{p.current?.abort();let O=new AbortController;p.current=O,o(true),t?.beforeRequest&&(A=t?.beforeRequest(A)),t?.logging&&console.log("Before request",A);let h={...t,signal:O.signal,onUploadProgress:P=>{let H=Math.round(P.loaded*100/(P.total||1));r(H);}},C=e.__isVoid?await e(void 0,h):await e(A,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 tt(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 nt=typeof window<"u"?window:null;function qn(e={}){let{getTrigger:t=tt,target:n=nt,disableHysteresis:o=false,threshold:s=100}=e,a=ne__default.default.useRef(0),[c,r]=ne__default.default.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return ne__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 kn=(e,t)=>{let n=t||e.__path||e.name,o=B(({states:p})=>p[n]??J),{refresh:s,abort:a,clear:c,clone:r}=he(n)||{};return [o?.data,{...o,refresh:s,abort:a,clear:c,clone:r}]};var Fn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},Ln=(e,t)=>{let n={};n.others=[];let o=s=>{ne__default.default.Children.forEach(s,a=>{if(ne__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 Hn(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=ne.useRef(r?r(t):t);return ne.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 st(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]=st(s,[...t,o]):n[o]=s;}return n}exports.BgsCoreProvider=Fe;exports.DataTypeEnum=Ve;exports.HttpMethod=je;exports.capitalizeWords=le;exports.createApiHelper=Dn;exports.createElement=Fn;exports.createStore=Hn;exports.debounce=mt;exports.decrypt=Y;exports.decryptString=me;exports.defaultState=J;exports.diffJson=it;exports.encrypt=G;exports.encryptString=de;exports.generateCacheKey=ie;exports.generateUUID=at;exports.getApiActions=he;exports.getFieldValue=k;exports.isArray=pt;exports.isNotEmpty=L;exports.jsonCopy=dt;exports.labelFormatter=ae;exports.mappingUndefinedtoNull=lt;exports.moment=E;exports.registerApi=ge;exports.renderChildren=ct;exports.sorting=ut;exports.splitElement=Ln;exports.stableStringify=Ce;exports.summary=ft;exports.unregisterApi=Re;exports.useApiLoad=$e;exports.useApiLoadStore=B;exports.useApiSend=Sn;exports.useApiStore=kn;exports.useBgsCore=M;exports.useCrypto=z;exports.useDelay=rn;exports.useFormatted=cn;exports.useInterval=dn;exports.useKeyPress=gn;exports.useScrollTrigger=qn;exports.useStorage=ye;exports.wrapApi=st;
package/dist/index.d.cts CHANGED
@@ -1,7 +1,8 @@
1
- import moment from 'moment';
2
1
  import { GenericAbortSignal, AxiosProgressEvent, AxiosResponse, AxiosRequestConfig } from 'axios';
2
+ import { DurationUnitType } from 'dayjs/plugin/duration';
3
3
  import React$1, { PropsWithChildren } from 'react';
4
4
  import * as zustand from 'zustand';
5
+ import dayjs from 'dayjs';
5
6
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
7
 
7
8
  type Children<T = unknown> = ChildFunction<T> | React.ReactNode;
@@ -163,7 +164,7 @@ type UseCallReturnType<DReq, DRes = DReq> = [
163
164
  ];
164
165
  interface TimeoutConfig {
165
166
  value: number;
166
- unit: moment.DurationInputArg2;
167
+ unit: DurationUnitType;
167
168
  }
168
169
  interface CacheProps {
169
170
  /**
@@ -360,8 +361,8 @@ type StorePayload<DRes> = {
360
361
  isCancel?: boolean;
361
362
  };
362
363
 
363
- type OnlyAllowOptions<DReq, DRes> = DReq extends undefined ? [options?: never] : [options?: Partial<UseCallOptionsProps<DReq, DRes>>];
364
- declare function useApiLoad<DReq, DRes>(...args: DReq extends undefined ? [api: ApiMethodVoid<DRes>, options?: Partial<UseCallOptionsProps<undefined, DRes>>] : [api: ApiMethod<DReq, DRes>, data: DReq, ...rest: OnlyAllowOptions<DReq, DRes>]): UseCallReturnType<DReq, DRes>;
364
+ declare function useApiLoad<DRes>(api: ApiMethodVoid<DRes>, options?: Partial<UseCallOptionsProps<undefined, DRes>>): UseCallReturnType<undefined, DRes>;
365
+ declare function useApiLoad<DReq, DRes>(api: ApiMethod<DReq, DRes>, data: DReq, options?: Partial<UseCallOptionsProps<DReq, DRes>>): UseCallReturnType<DReq, DRes>;
365
366
 
366
367
  declare function useDelay(s: number, callback?: Function): Promise<unknown>;
367
368
 
@@ -534,6 +535,8 @@ interface ApiLoadState {
534
535
  declare const defaultState: OptionsCallReturn;
535
536
  declare const useApiLoadStore: zustand.UseBoundStore<zustand.StoreApi<ApiLoadState>>;
536
537
 
538
+ declare const moment: typeof dayjs;
539
+
537
540
  type FormatType = {
538
541
  display: string;
539
542
  value: string;
@@ -547,6 +550,11 @@ type FormatContextProps = {
547
550
  number: OptionsNumberProps;
548
551
  };
549
552
  type BgsCoreProps = {
553
+ localeConfig?: {
554
+ preset?: string | ILocale;
555
+ object?: Partial<ILocale>;
556
+ isLocal?: boolean;
557
+ };
550
558
  passphrase?: string;
551
559
  storageKey?: string;
552
560
  format: FormatContextProps;
@@ -560,4 +568,4 @@ interface BgsCoreProviderProps {
560
568
  }
561
569
  declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
562
570
 
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 };
571
+ 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, moment, 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,7 +1,8 @@
1
- import moment from 'moment';
2
1
  import { GenericAbortSignal, AxiosProgressEvent, AxiosResponse, AxiosRequestConfig } from 'axios';
2
+ import { DurationUnitType } from 'dayjs/plugin/duration';
3
3
  import React$1, { PropsWithChildren } from 'react';
4
4
  import * as zustand from 'zustand';
5
+ import dayjs from 'dayjs';
5
6
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
7
 
7
8
  type Children<T = unknown> = ChildFunction<T> | React.ReactNode;
@@ -163,7 +164,7 @@ type UseCallReturnType<DReq, DRes = DReq> = [
163
164
  ];
164
165
  interface TimeoutConfig {
165
166
  value: number;
166
- unit: moment.DurationInputArg2;
167
+ unit: DurationUnitType;
167
168
  }
168
169
  interface CacheProps {
169
170
  /**
@@ -360,8 +361,8 @@ type StorePayload<DRes> = {
360
361
  isCancel?: boolean;
361
362
  };
362
363
 
363
- type OnlyAllowOptions<DReq, DRes> = DReq extends undefined ? [options?: never] : [options?: Partial<UseCallOptionsProps<DReq, DRes>>];
364
- declare function useApiLoad<DReq, DRes>(...args: DReq extends undefined ? [api: ApiMethodVoid<DRes>, options?: Partial<UseCallOptionsProps<undefined, DRes>>] : [api: ApiMethod<DReq, DRes>, data: DReq, ...rest: OnlyAllowOptions<DReq, DRes>]): UseCallReturnType<DReq, DRes>;
364
+ declare function useApiLoad<DRes>(api: ApiMethodVoid<DRes>, options?: Partial<UseCallOptionsProps<undefined, DRes>>): UseCallReturnType<undefined, DRes>;
365
+ declare function useApiLoad<DReq, DRes>(api: ApiMethod<DReq, DRes>, data: DReq, options?: Partial<UseCallOptionsProps<DReq, DRes>>): UseCallReturnType<DReq, DRes>;
365
366
 
366
367
  declare function useDelay(s: number, callback?: Function): Promise<unknown>;
367
368
 
@@ -534,6 +535,8 @@ interface ApiLoadState {
534
535
  declare const defaultState: OptionsCallReturn;
535
536
  declare const useApiLoadStore: zustand.UseBoundStore<zustand.StoreApi<ApiLoadState>>;
536
537
 
538
+ declare const moment: typeof dayjs;
539
+
537
540
  type FormatType = {
538
541
  display: string;
539
542
  value: string;
@@ -547,6 +550,11 @@ type FormatContextProps = {
547
550
  number: OptionsNumberProps;
548
551
  };
549
552
  type BgsCoreProps = {
553
+ localeConfig?: {
554
+ preset?: string | ILocale;
555
+ object?: Partial<ILocale>;
556
+ isLocal?: boolean;
557
+ };
550
558
  passphrase?: string;
551
559
  storageKey?: string;
552
560
  format: FormatContextProps;
@@ -560,4 +568,4 @@ interface BgsCoreProviderProps {
560
568
  }
561
569
  declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
562
570
 
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 };
571
+ 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, moment, 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 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};
1
+ import ne,{createContext,useContext,useEffect,useCallback,useRef,useMemo,useState,useSyncExternalStore}from'react';import q from'dayjs';import De from'dayjs/plugin/utc';import Ae from'dayjs/plugin/timezone';import Pe from'dayjs/plugin/duration';import Se from'dayjs/plugin/advancedFormat';import Oe from'dayjs/plugin/localizedFormat';import we from'dayjs/plugin/relativeTime';import qe from'dayjs/plugin/isSameOrBefore';import Ue from'dayjs/plugin/isSameOrAfter';import ve from'dayjs/plugin/weekOfYear';import Ne from'dayjs/plugin/customParseFormat';import {jsx}from'react/jsx-runtime';import ue from'crypto-js/aes';import fe from'crypto-js/pbkdf2';import Me from'crypto-js/enc-utf8';import W from'crypto-js/enc-base64';import ce from'crypto-js/lib-typedarrays';import {create}from'zustand';import Ze from'axios';function at(){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 it(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var lt=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function pt(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 L(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 ae={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=ae.snackCase(ae.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function ct(e,t){return typeof e=="function"?e(t):e}var k=(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},ut={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(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=k(n,t)?k(n,t):"",a=k(o,t)?k(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},ft=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?k(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function dt(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function Ce(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 ie(e,t){return Ce([t??"undefined",e??"undefined"])}function le(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function mt(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}q.extend(De);q.extend(Ae);q.extend(Pe);q.extend(Se);q.extend(Oe);q.extend(we);q.extend(qe);q.extend(Ue);q.extend(ve);q.extend(Ne);var E=q;var pe=createContext(void 0);function M(){let e=useContext(pe);return e||{}}var Fe=({children:e,value:t})=>{let n={...t};return useEffect(()=>{(async()=>{if(!(typeof window>"u")&&t.localeConfig){let{preset:s,object:a,isLocal:c}=t.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&E.locale(s,a??{},c);}})();},[t.localeConfig]),jsx(pe.Provider,{value:n,children:e})};function G(e,t){let n=ce.random(16),o=ce.random(16),s=fe(t,n,{keySize:256/32,iterations:1e3}),a=ue.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(W),iv:o.toString(W),encrypted:a}}function Y(e,t){let{salt:n,iv:o,encrypted:s}=e,a=fe(t,W.parse(n),{keySize:256/32,iterations:1e3}),r=ue.decrypt(s,a,{iv:W.parse(o)}).toString(Me);return JSON.parse(r)}function de(e,t){return JSON.stringify(G(e,t))}function me(e,t){return Y(JSON.parse(e),t)}function z(){let{passphrase:e}=M();return {passphrase:e,encrypt(t,n){return G(t,n||e)},decrypt(t,n){return Y(t,n||e)},encryptString(t,n){return de(t,n||e)},decryptString(t,n){return me(t,n||e)}}}var ye=()=>{let{encrypt:e,decrypt:t}=z(),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(U){console.error("Decrypt error from storage event",U);}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},B=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 Z=new Map,ge=(e,t)=>{Z.set(e,t);},Re=e=>{Z.delete(e);},he=e=>Z.get(e);function $e(...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),U=B(({states:u})=>u[p]?.loading??false),A=B(({states:u})=>u[p]?.response??void 0),{storageKey:O,cache:h,clearPreviousData:C,refetchOnWindowFocus:P}=M(),H=ye(),w=useRef(void 0),K=useRef(null),{cacheName:I,cacheKey:F,timeout:re,timeoutUnit:oe,persistence:_,cacheEnabled:m}=useMemo(()=>{let u=O?H.get(O):void 0,g=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=ie({...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,N="s";return L(h?.timeout)&&(typeof h?.timeout=="number"?(T=h.timeout,N="s"):typeof h?.timeout=="object"&&(T=h?.timeout.value,N=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,N="s"):typeof r.cache.timeout=="object"&&(T=r.cache.timeout.value,N=r.cache.timeout.unit)):d=r.cache),{cacheName:g,cacheKey:x,timeout:T,timeoutUnit:N,persistence:S,cacheEnabled:d}},[r?.cache,c,O,h,a]);useEffect(()=>{let u=JSON.stringify(L(w.current)?w.current:""),g=JSON.stringify(L(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,j);},[c,r?.clearPreviousData,C,r?.hold,...r?.trigger||[]]),useEffect(()=>{let u=async()=>{!_&&I&&F&&(await caches.open(I)).delete(F);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),K.current?.abort();}},[_,I,F,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(F))?.json();if(S){let{data:T,expired:N}=S;if(E().isAfter(N))await x.delete(F);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=E().add(re,oe).toISOString(),T={data:d,expired:S},N=await caches.open(I),se=new Response(JSON.stringify(T));await N.put(F,se);}}},[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();},E.duration(u,g).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=useRef(null),{enabledRefetch:b,timeoutRefetch:D,timeoutUnitRefetch:v}=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=E.duration(D,v).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,D,v,f]);let R=useCallback(()=>{K.current?.abort(),K.current=null,l(p,{loading:false,isCancel:true});},[p,K]),$=useCallback(()=>{l(p,{loading:false,response:null});},[p]),j={...A,loading:U,refresh:f,abort:R,clear:$,response:A,isCancel:y,clone:(u,g)=>$e(t,u,g)};return useEffect(()=>(ge(p,j),()=>{Re(p);}),[j,p]),[A?.data,j]}async function rn(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var je=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(je||{}),Ve=(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))(Ve||{});var cn=(e,t,n)=>{let{format:o}=M();return t==="number"?Je(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?_e(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?We(e,n):t==="string"?ze(e,n):e?.toString()??""};function We(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function ze(e,t){if(!L(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=le(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 Je(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 _e(e,{display:t,value:n}){if(!L(e))return e;let o=E(e,n);return o.isValid()?o.format(t):e}function dn(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 gn(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:U}=l,A=l.ctrlKey,O=l.altKey,h=l.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")a(y,U)&&(t==="ctrl"&&A||t==="alt"&&O||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let C=t.every(P=>P==="ctrl"?A:P==="alt"?O:P==="shift"?h:false);a(y,U)&&C&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(y,U)&&(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 Dn=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:c,handleAuthorization:r,disabledToastWhenCancel:p,withCredentials:l,encryptRequest:y,encryptResponse:U,passphrase:A})=>{let{encrypt:O,decrypt:h,passphrase:C}=z(),P=(m,f,i,b)=>{let D=b?.code==="ERR_CANCELED",v=m?.status===401,R=m?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:U)&&R){let d=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?C:i.passphrase:A;try{R=h(R,d);}catch{try{R=h(R,C);}catch{}}}let u={...o({...m,data:R,isCancel:D,isUnauthorization:v},b),isCancel:D,isUnauthorization:v,httpCode:m.status},g=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:p,x=r?r(u,i):!v;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&c&&(!D||!g)&&c(u),!x&&(!D||!i?.disabledHandleUnauthorized)){let d=i?.onUnauthorized||a;d&&d(u);}if(f)f(u);else return u},H=(m,f=()=>{})=>Ze.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,D)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...D},$={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&($.Authorization=`Bearer ${t}`):R.token&&($.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:y)&&i){let u=D?.passphrase?typeof D.passphrase=="boolean"&&D.passphrase?C:D.passphrase:A;i=O(i,u);}return H({url:f,method:m,data:i,headers:$,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:H,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 D=new FormData;return Object.keys(f).forEach(v=>D.append(v,f[v])),w("POST",`${m}`,D,i,{infoSuccess:false,...b,headers:{"Content-Type":"multipart/form-data",...b?.headers}})}}};function Sn(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 A=>{p.current?.abort();let O=new AbortController;p.current=O,o(true),t?.beforeRequest&&(A=t?.beforeRequest(A)),t?.logging&&console.log("Before request",A);let h={...t,signal:O.signal,onUploadProgress:P=>{let H=Math.round(P.loaded*100/(P.total||1));r(H);}},C=e.__isVoid?await e(void 0,h):await e(A,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 tt(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 nt=typeof window<"u"?window:null;function qn(e={}){let{getTrigger:t=tt,target:n=nt,disableHysteresis:o=false,threshold:s=100}=e,a=ne.useRef(0),[c,r]=ne.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return ne.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 kn=(e,t)=>{let n=t||e.__path||e.name,o=B(({states:p})=>p[n]??J),{refresh:s,abort:a,clear:c,clone:r}=he(n)||{};return [o?.data,{...o,refresh:s,abort:a,clear:c,clone:r}]};var Fn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},Ln=(e,t)=>{let n={};n.others=[];let o=s=>{ne.Children.forEach(s,a=>{if(ne.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 Hn(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 st(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]=st(s,[...t,o]):n[o]=s;}return n}export{Fe as BgsCoreProvider,Ve as DataTypeEnum,je as HttpMethod,le as capitalizeWords,Dn as createApiHelper,Fn as createElement,Hn as createStore,mt as debounce,Y as decrypt,me as decryptString,J as defaultState,it as diffJson,G as encrypt,de as encryptString,ie as generateCacheKey,at as generateUUID,he as getApiActions,k as getFieldValue,pt as isArray,L as isNotEmpty,dt as jsonCopy,ae as labelFormatter,lt as mappingUndefinedtoNull,E as moment,ge as registerApi,ct as renderChildren,ut as sorting,Ln as splitElement,Ce as stableStringify,ft as summary,Re as unregisterApi,$e as useApiLoad,B as useApiLoadStore,Sn as useApiSend,kn as useApiStore,M as useBgsCore,z as useCrypto,rn as useDelay,cn as useFormatted,dn as useInterval,gn as useKeyPress,qn as useScrollTrigger,ye as useStorage,st as wrapApi};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgscore/react-core",
3
- "version": "0.0.41",
3
+ "version": "0.0.43",
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",
@@ -42,13 +42,13 @@
42
42
  "license": "MIT",
43
43
  "peerDependencies": {
44
44
  "axios": ">=1.6.0",
45
- "moment": ">=2.0.0",
46
45
  "react": ">=17.0.0",
47
46
  "react-dom": ">=17.0.0",
48
47
  "socket.io-client": ">=4.8.1"
49
48
  },
50
49
  "dependencies": {
51
50
  "crypto-js": "^4.2.0",
51
+ "dayjs": "^1.11.13",
52
52
  "zustand": "^5.0.6"
53
53
  },
54
54
  "devDependencies": {