@bgscore/react-core 0.0.21 → 0.0.22

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 J=require('moment'),Y=require('react'),jsxRuntime=require('react/jsx-runtime'),ae=require('crypto-js/aes'),ie=require('crypto-js/pbkdf2'),Te=require('crypto-js/enc-utf8'),M=require('crypto-js/enc-base64'),se=require('crypto-js/lib-typedarrays'),Fe=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var J__default=/*#__PURE__*/_interopDefault(J);var Y__default=/*#__PURE__*/_interopDefault(Y);var ae__default=/*#__PURE__*/_interopDefault(ae);var ie__default=/*#__PURE__*/_interopDefault(ie);var Te__default=/*#__PURE__*/_interopDefault(Te);var M__default=/*#__PURE__*/_interopDefault(M);var se__default=/*#__PURE__*/_interopDefault(se);var Fe__default=/*#__PURE__*/_interopDefault(Fe);function je(){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 Ve(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var We=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function ze(e,t){let r=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(r=true):r=true),r}function E(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 te={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 r=e.replace(/_([a-z])/g,(n,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(e="",t=false)=>{let r="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],r=te.snackCase(te.camelCase(e)),t&&(r=r?.split(" ")?.map(n=>n?.length<=3?n?.toUpperCase():n)?.join(" "));}catch{}return r?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var k=(e,t,r="")=>{if(!e)return r;if(e.hasOwnProperty(t))return e[t];let n=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let s of n){if(a==null)return r;a=a[s];}return a===void 0?r:a},_e={desc:(e,t)=>(e||(e=[]),e.sort((r,n)=>{if(t){let a=k(r,t)?k(r,t):"",s=k(n,t)?k(r,t):"";return a<s?1:-1}else return r<n?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((r,n)=>{if(t){let a=k(r,t)?k(r,t):"",s=k(n,t)?k(n,t):"";return a>s?1:-1}else return r>n?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let r=[];return r=e.map(n=>Number(t?k(n,t)||0:n||0)),r.reduce((n,a)=>(n||0)+(a||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function ye(e){let t=new WeakSet;return JSON.stringify(e,function(r,n){return n!==null&&typeof n=="object"?t.has(n)?void 0:(t.add(n),Object.keys(n).sort().reduce((a,s)=>(a[s]=n[s],a),{})):n})??""}function re(e,t){return ye([t??"undefined",e??"undefined"])}function ne(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{e(...n);},t*1e3);}}var oe=Y.createContext(void 0);function v(){let e=Y.useContext(oe);return e||{}}var he=({children:e,value:t})=>{let r={...t};return jsxRuntime.jsx(oe.Provider,{value:r,children:e})};function j(e,t){let r=se__default.default.random(16),n=se__default.default.random(16),a=ie__default.default(t,r,{keySize:256/32,iterations:1e3}),s=ae__default.default.encrypt(JSON.stringify(e),a,{iv:n}).toString();return {salt:r.toString(M__default.default),iv:n.toString(M__default.default),encrypted:s}}function V(e,t){let{salt:r,iv:n,encrypted:a}=e,s=ie__default.default(t,M__default.default.parse(r),{keySize:256/32,iterations:1e3}),p=ae__default.default.decrypt(a,s,{iv:M__default.default.parse(n)}).toString(Te__default.default);return JSON.parse(p)}function le(e,t){return JSON.stringify(j(e,t))}function pe(e,t){return V(JSON.parse(e),t)}function B(){let{passphrase:e}=v();return {passphrase:e,encrypt(t,r){return j(t,r||e)},decrypt(t,r){return V(t,r||e)},encryptString(t,r){return le(t,r||e)},decryptString(t,r){return pe(t,r||e)}}}var ce=()=>{let{encrypt:e,decrypt:t}=B(),r=Y.useCallback((o,p)=>{try{let d=e(p);localStorage.setItem(o,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),n=Y.useCallback(o=>{try{let p=localStorage.getItem(o);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to get from storage:",p),null}},[t]),a=o=>{let[p,d]=Y.useState(()=>{try{let l=localStorage.getItem(o);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return Y.useEffect(()=>{let l=y=>{if(y.key===o)if(y.newValue)try{d(t(JSON.parse(y.newValue)));}catch(w){console.error("Decrypt error from storage event",w);}else d(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[o,t]),p},s=Y.useCallback(o=>{o?localStorage.removeItem(o):localStorage.clear();},[]);return {save:r,get:n,clear:s,useWatchStorage:a}};function ue(e){let t=e,r=new Set;function n(){return t}function a(p){return r.add(p),()=>r.delete(p)}function s(p){typeof p=="function"?t=p(t):t=p,r.forEach(d=>d());}function o(p){return Y.useSyncExternalStore(a,()=>p?p(t):t,()=>p?p(t):t)}return {getSnapshot:n,subscribe:a,setState:s,useStore:o}}var z=new Map;function H(e){return z.has(e)||z.set(e,ue([null,{loading:false,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{}}])),z.get(e)}function Pe(e,t,r){let n=!e.__isVoid,a=e.__path||e.name,s=n?t:void 0,o=n?r:t,p=o?.storeName||a,{storageKey:d,cache:l}=v(),y=ce(),[w,h]=Y.useState(false),[U,q]=Y.useState(false),[b,P]=Y.useState(),N=Y.useRef(void 0),S=Y.useRef(null),{cacheName:F,cacheKey:K,timeout:Z,timeoutUnit:Q,persistence:ee,cacheEnabled:L}=Y.useMemo(()=>{let c=d?y.get(d):void 0,R=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,C=re({...s,session:c},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),f=false;typeof l?.enabled=="boolean"&&(f=l.enabled);let O=false;typeof l?.persistence=="boolean"&&(O=l?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(O=o?.cache?.persistence??false);let T=60*5,A="s";return E(l?.timeout)&&(typeof l?.timeout=="number"?(T=l.timeout,A="s"):typeof l?.timeout=="object"&&(T=l?.timeout.value,A=l?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?f=o.cache.enabled:f=true,typeof o.cache.timeout=="number"?(T=o.cache.timeout,A="s"):typeof o.cache.timeout=="object"&&(T=o.cache.timeout.value,A=o.cache.timeout.unit)):f=o.cache),{cacheName:R,cacheKey:C,timeout:T,timeoutUnit:A,persistence:O,cacheEnabled:f}},[o?.cache,d,l]);Y.useEffect(()=>{let c=JSON.stringify(E(N.current)?N.current:""),R=JSON.stringify(E(s)?s:""),C=N.current===void 0;(c!==R||C)&&!o?.hold&&(P(null),u(),N.current=s),o?.onChange&&o?.onChange(s,x);},[s,o?.hold,...o?.trigger||[]]),Y.useEffect(()=>{let c=async()=>{!ee&&F&&K&&(await caches.open(F)).delete(K);};return window.addEventListener("beforeunload",c),()=>{window.removeEventListener("beforeunload",c),S.current?.abort();}},[]);let u=Y.useCallback(async c=>{let R=s;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(R=o?.beforeRequest(s)),L&&!c&&!U){h(true),D({loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(s);let C=await caches.open(F),O=await(await C.match(K))?.json();if(O){let{data:T,expired:A}=O;if(J__default.default().isAfter(A))await C.delete(K);else {o?.afterResponse&&T?.data&&(T.data=o?.afterResponse(T.data)),o?.logging&&console.log("After request: Using Cache",T),o?.onAfterResponse&&o?.onAfterResponse(T),h(false),P(T),D({loading:false,response:T});return}}}if(typeof e=="function"){S.current?.abort();let C=new AbortController;S.current=C,h(true),D({loading:true}),o?.logging&&console.log("Before request",s),o?.onBeforeRequest&&o?.onBeforeRequest(s);let f=n?await e(R,void 0,{...o,signal:C.signal}):await e(void 0,{...o,signal:C.signal});if(o?.afterResponse&&f?.data&&(f.data=o?.afterResponse(f.data)),o?.logging&&console.log("After request",f),o?.onAfterResponse&&o?.onAfterResponse(f),h(false),P(f),q(false),D({response:f,loading:false,isCancel:false}),L&&f.status){let O=J__default.default().add(Z,Q).toISOString(),T={data:f,expired:O},A=await caches.open(F),$=new Response(JSON.stringify(T));await A.put(K,$);}}},[s,e,o]);Y.useEffect(()=>{if(o?.refreshInterval){let c=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,R=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,C=setInterval(()=>{u();},J__default.default.duration(c,R).asMilliseconds());return ()=>clearInterval(C)}return ()=>{}},[o?.refreshInterval,u]),Y.useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let c=()=>{u();};return window.addEventListener("focus",c),()=>{window.removeEventListener("focus",c);}},[o?.refetchOnWindowFocus,u]);let m=()=>{S.current?.abort(),S.current=null,h(false),q(true),D({isCancel:true,loading:false});},i=()=>{h(false),P(null),D({response:void 0,loading:false});},g=Y.useCallback((c,R)=>Pe(e,c,R),[e]),x={...b,loading:w,refresh:u,abort:m,clear:i,response:b,isCancel:U,clone:g},D=Y.useCallback(({response:c,loading:R,isCancel:C})=>{H(p).setState([c?.data,{...c,loading:R,refresh:u,abort:m,clear:i,response:c,isCancel:C,clone:g}]);},[u,m,i,g,p]);return [b?.data,x]}async function Ot(e,t=()=>{}){let r=e*1e3;return new Promise(n=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),n(true);},r);})}var Se=(s=>(s.POST="POST",s.PUT="PUT",s.PATCH="PATCH",s.DELETE="DELETE",s.GET="GET",s))(Se||{}),Oe=(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))(Oe||{});var Et=(e,t,r)=>{let{format:n}=v();return t==="number"?Ne(e,{thouSep:n.number.thouSep,decDigits:n.number.decDigits,decSep:n.number.decSep,...r}):["date","dateTime","month","year","time"].some(a=>a===t)?ke(e,{display:n[t]?.display,value:n[t]?.value,...r}):t==="boolean"?we(e,r):t==="string"?Ue(e,r):e?.toString()??""};function we(e,t){let r=typeof e=="string"?e==="true":!!e,n=t?.trueLabel??"Yes",a=t?.falseLabel??"No";return r?n:a}function Ue(e,t){if(!E(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=ne(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return t?.ellipsis&&r.length>t.ellipsis&&(r=r.slice(0,t.ellipsis)+"..."),r}function Ne(e,{thouSep:t,decSep:r,decDigits:n,method:a}){if(e==null||isNaN(Number(e)))return "";let s=typeof e=="string"?parseFloat(e):e;if(a)if(typeof n=="number"){let l=Math.pow(10,n);s=Math[a](s*l)/l;}else s=Math[a](s);else if(typeof n=="number"){let l=Math.pow(10,n);s=Math.floor(s*l)/l;}let o=0;if(n==="auto"){let l=s.toString(),y=l.indexOf(".");y!==-1&&(o=l.length-y-1);}let p={style:"decimal",useGrouping:true,minimumFractionDigits:n==="auto"?o:n||0,maximumFractionDigits:n==="auto"?o:n||0,minimumIntegerDigits:1};return s.toLocaleString("en-US",p).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,t)}function ke(e,{display:t,value:r}){if(!E(e))return e;let n=J__default.default(e,r);return n.isValid()?n.format(t):e}function Ft(e,{interval:t,lead:r}){let n=Y.useRef(null);Y.useEffect(()=>{n.current=e;},[e]),Y.useEffect(()=>{let a=()=>n.current();if(r&&a(),t!==null){let s=setInterval(a,t);return ()=>clearInterval(s)}},[t]);}function Ht(e,t,r){let[n,a]=Y.useState(false),s=(l,y)=>typeof e=="string"&&l===e||typeof e=="number"&&y===e,o=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),p=l=>{let{key:y,keyCode:w}=l,h=l.ctrlKey,U=l.altKey,q=l.shiftKey;if(!o(document.activeElement))if(t)if(typeof t=="string")s(y,w)&&(t==="ctrl"&&h||t==="alt"&&U||t==="shift"&&q)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));else {let b=t.every(P=>P==="ctrl"?h:P==="alt"?U:P==="shift"?q:false);s(y,w)&&b&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));}else s(y,w)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));},d=({key:l,keyCode:y})=>{s(l,y)&&a(false);};return Y.useEffect(()=>(window.addEventListener("keydown",p),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",p),window.removeEventListener("keyup",d);}),[]),n}var zt=({url:e,token:t,beforeRequest:r,onCallback:n,headers:a,onUnauthorized:s,handleToast:o,handleAuthorization:p,disabledToastWhenCancel:d,withCredentials:l,encryptRequest:y,encryptResponse:w,passphrase:h})=>{let{encrypt:U,decrypt:q,passphrase:b}=B(),P=(u,m,i,g)=>{let x=g?.code==="ERR_CANCELED",D=u.status===401,c=u?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:w)&&c){let A=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:h;try{c=q(c,A);}catch{try{c=q(c,b);}catch{}}}let f={...n({...u,data:c,isCancel:x,isUnauthorization:D},g),isCancel:x,isUnauthorization:D,httpCode:u.status},O=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:d,T=p?p(f,i):!D;if((i?.infoSuccess&&f.status||i?.infoError&&!f.status)&&o&&(!x||!O)&&o(f),!T&&(!x||!i?.disabledHandleUnauthorized)){let A=i?.onUnauthorized||s;A&&A(f);}if(m)m(f);else return f},N=(u,m=()=>{})=>Fe__default.default.create({baseURL:`${e}`,withCredentials:typeof u.withCredentials=="boolean"?u.withCredentials:l})(u).then(m).catch(g=>m(g.response,g)),S=(u,m,i,g,x)=>{let c={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...x},R={"Content-Type":"application/json",...a,...c.headers};if(c.token&&(typeof c.token=="boolean"?t&&(R.Authorization=`Bearer ${t}`):c.token&&(R.Authorization=`Bearer ${c.token}`)),r&&(i=r(i)),(typeof c?.encryptRequest=="boolean"?c?.encryptRequest:y)&&i){let f=x?.passphrase?typeof x.passphrase=="boolean"&&x.passphrase?b:x.passphrase:h;i=U(i,f);}return N({url:m,method:u,data:i,headers:R,responseType:c.responseType,signal:c.signal,withCredentials:c.withCredentials,onUploadProgress:f=>{c?.onUploadProgress&&c?.onUploadProgress(f);}},(f,O)=>P(f,g,c,O))};return {client:N,post:(u,m,i,g)=>S("POST",`${u}`,m,i,g),put:(u,m,i,g)=>S("PUT",`${u}`,m,i,g),patch:(u,m,i,g)=>S("PATCH",`${u}`,m,i,g),delete:(u,m,i)=>S("DELETE",`${u}`,null,m,i),get:(u,m,i)=>S("GET",`${u}`,null,m,i),upload:(u,m,i,g)=>{let x=new FormData;return Object.keys(m).forEach(D=>x.append(D,m[D])),S("POST",`${u}`,x,i,{infoSuccess:false,...g,headers:{"Content-Type":"multipart/form-data",...g?.headers}})}}};function Gt(e,t){let[r,n]=Y.useState(false),[a,s]=Y.useState(),[o,p]=Y.useState(0),d=Y.useRef(null);return Y.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async h=>{d.current?.abort();let U=new AbortController;d.current=U,n(true),t?.beforeRequest&&(h=t?.beforeRequest(h)),t?.logging&&console.log("Before request",h);let q={...t,signal:U.signal,onUploadProgress:P=>{let N=Math.round(P.loaded*100/(P.total||1));p(N);}},b=e.__isVoid?await e(void 0,q):await e(h,void 0,q);t?.logging&&console.log("After response",b),s(b),n(false),p(0),b.status&&t?.onSuccess&&t?.onSuccess(b),!b.status&&t?.onError&&t?.onError(b),t?.afterResponse&&t?.afterResponse(b);},{...a,loading:r,abort:()=>{d.current?.abort(),d.current=null,n(false),p(0);},progress:o,reset:()=>{n(false),p(0),s(null);}}]}function He(e,t){let{disableHysteresis:r=false,threshold:n=100,target:a}=t,s=e.current;return a&&(typeof a.pageYOffset=="number"?e.current=a.pageYOffset:a.scrollTop!==void 0&&(e.current=a.scrollTop)),!r&&s!==void 0&&e.current<s?false:(e.current||0)>n}var Ie=typeof window<"u"?window:null;function Zt(e={}){let{getTrigger:t=He,target:r=Ie,disableHysteresis:n=false,threshold:a=100}=e,s=Y__default.default.useRef(0),[o,p]=Y__default.default.useState(()=>t(s,{disableHysteresis:n,threshold:a,target:r}));return Y__default.default.useEffect(()=>{let d=()=>{p(t(s,{disableHysteresis:n,threshold:a,target:r}));};if(d(),r)return r.addEventListener("scroll",d,{passive:true}),()=>{r.removeEventListener("scroll",d);}},[r,t,n,a]),o}var tr=(e,t)=>{let r=t||e.__path||e.name;return H(r).useStore()};var or=(e,t)=>{let r=n=>e(n);return r.displayName=t,r},sr=(e,t)=>{let r={};r.others=[];let n=a=>{Y__default.default.Children.forEach(a,s=>{if(Y__default.default.isValidElement(s)){let o=s.type.displayName;if(t.includes(o))r[o]=s;else {let p=s;p.props?.children?n(p.props.children):r.others.push(s);}}else r.others.push(s);});};return n(e),r};function Le(e,t=[]){let r={};for(let n in e){let a=e[n];if(typeof a=="function"){let s=a.bind(null);s.__path=[...t,n].join("."),s.__isVoid=a.length===2,r[n]=s;}else typeof a=="object"&&a!==null?r[n]=Le(a,[...t,n]):r[n]=a;}return r}exports.BgsCoreProvider=he;exports.DataTypeEnum=Oe;exports.HttpMethod=Se;exports.capitalizeWords=ne;exports.createApiHelper=zt;exports.createElement=or;exports.createStore=ue;exports.debounce=Ye;exports.decrypt=V;exports.decryptString=pe;exports.diffJson=Ve;exports.encrypt=j;exports.encryptString=le;exports.generateCacheKey=re;exports.generateUUID=je;exports.getFieldValue=k;exports.isArray=ze;exports.isNotEmpty=E;exports.jsonCopy=Xe;exports.labelFormatter=te;exports.mappingUndefinedtoNull=We;exports.renderChildren=Je;exports.sorting=_e;exports.splitElement=sr;exports.stableStringify=ye;exports.summary=Ge;exports.useApiLoad=Pe;exports.useApiSend=Gt;exports.useApiStore=tr;exports.useBgsCore=v;exports.useCrypto=B;exports.useDelay=Ot;exports.useFormatted=Et;exports.useInterval=Ft;exports.useKeyPress=Ht;exports.useScrollTrigger=Zt;exports.useStorage=ce;exports.wrapApi=Le;
1
+ 'use strict';var J=require('moment'),Y=require('react'),jsxRuntime=require('react/jsx-runtime'),ae=require('crypto-js/aes'),ie=require('crypto-js/pbkdf2'),Te=require('crypto-js/enc-utf8'),B=require('crypto-js/enc-base64'),se=require('crypto-js/lib-typedarrays'),Fe=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var J__default=/*#__PURE__*/_interopDefault(J);var Y__default=/*#__PURE__*/_interopDefault(Y);var ae__default=/*#__PURE__*/_interopDefault(ae);var ie__default=/*#__PURE__*/_interopDefault(ie);var Te__default=/*#__PURE__*/_interopDefault(Te);var B__default=/*#__PURE__*/_interopDefault(B);var se__default=/*#__PURE__*/_interopDefault(se);var Fe__default=/*#__PURE__*/_interopDefault(Fe);function je(){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 Ve(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var We=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function ze(e,t){let r=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(r=true):r=true),r}function E(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 te={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 r=e.replace(/_([a-z])/g,(n,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(e="",t=false)=>{let r="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],r=te.snackCase(te.camelCase(e)),t&&(r=r?.split(" ")?.map(n=>n?.length<=3?n?.toUpperCase():n)?.join(" "));}catch{}return r?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var k=(e,t,r="")=>{if(!e)return r;if(e.hasOwnProperty(t))return e[t];let n=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let s of n){if(a==null)return r;a=a[s];}return a===void 0?r:a},_e={desc:(e,t)=>(e||(e=[]),e.sort((r,n)=>{if(t){let a=k(r,t)?k(r,t):"",s=k(n,t)?k(r,t):"";return a<s?1:-1}else return r<n?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((r,n)=>{if(t){let a=k(r,t)?k(r,t):"",s=k(n,t)?k(n,t):"";return a>s?1:-1}else return r>n?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let r=[];return r=e.map(n=>Number(t?k(n,t)||0:n||0)),r.reduce((n,a)=>(n||0)+(a||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function ye(e){let t=new WeakSet;return JSON.stringify(e,function(r,n){return n!==null&&typeof n=="object"?t.has(n)?void 0:(t.add(n),Object.keys(n).sort().reduce((a,s)=>(a[s]=n[s],a),{})):n})??""}function re(e,t){return ye([t??"undefined",e??"undefined"])}function ne(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{e(...n);},t*1e3);}}var oe=Y.createContext(void 0);function v(){let e=Y.useContext(oe);return e||{}}var he=({children:e,value:t})=>{let r={...t};return jsxRuntime.jsx(oe.Provider,{value:r,children:e})};function j(e,t){let r=se__default.default.random(16),n=se__default.default.random(16),a=ie__default.default(t,r,{keySize:256/32,iterations:1e3}),s=ae__default.default.encrypt(JSON.stringify(e),a,{iv:n}).toString();return {salt:r.toString(B__default.default),iv:n.toString(B__default.default),encrypted:s}}function V(e,t){let{salt:r,iv:n,encrypted:a}=e,s=ie__default.default(t,B__default.default.parse(r),{keySize:256/32,iterations:1e3}),p=ae__default.default.decrypt(a,s,{iv:B__default.default.parse(n)}).toString(Te__default.default);return JSON.parse(p)}function le(e,t){return JSON.stringify(j(e,t))}function pe(e,t){return V(JSON.parse(e),t)}function M(){let{passphrase:e}=v();return {passphrase:e,encrypt(t,r){return j(t,r||e)},decrypt(t,r){return V(t,r||e)},encryptString(t,r){return le(t,r||e)},decryptString(t,r){return pe(t,r||e)}}}var ce=()=>{let{encrypt:e,decrypt:t}=M(),r=Y.useCallback((o,p)=>{try{let d=e(p);localStorage.setItem(o,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),n=Y.useCallback(o=>{try{let p=localStorage.getItem(o);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to get from storage:",p),null}},[t]),a=o=>{let[p,d]=Y.useState(()=>{try{let l=localStorage.getItem(o);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return Y.useEffect(()=>{let l=y=>{if(y.key===o)if(y.newValue)try{d(t(JSON.parse(y.newValue)));}catch(w){console.error("Decrypt error from storage event",w);}else d(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[o,t]),p},s=Y.useCallback(o=>{o?localStorage.removeItem(o):localStorage.clear();},[]);return {save:r,get:n,clear:s,useWatchStorage:a}};function ue(e){let t=e,r=new Set;function n(){return t}function a(p){return r.add(p),()=>r.delete(p)}function s(p){typeof p=="function"?t=p(t):t=p,r.forEach(d=>d());}function o(p){return Y.useSyncExternalStore(a,()=>p?p(t):t,()=>p?p(t):t)}return {getSnapshot:n,subscribe:a,setState:s,useStore:o}}var z=new Map;function H(e){return z.has(e)||z.set(e,ue([null,{loading:false,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{}}])),z.get(e)}function Se(e,t,r){let n=!e.__isVoid,a=e.__path||e.name,s=n?t:void 0,o=n?r:t,p=o?.storeName||a,{storageKey:d,cache:l}=v(),y=ce(),[w,h]=Y.useState(false),[N,q]=Y.useState(false),[b,S]=Y.useState(),U=Y.useRef(void 0),P=Y.useRef(null),{cacheName:F,cacheKey:K,timeout:Z,timeoutUnit:Q,persistence:ee,cacheEnabled:$}=Y.useMemo(()=>{let c=d?y.get(d):void 0,R=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,C=re({...s,session:c},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),f=false;typeof l?.enabled=="boolean"&&(f=l.enabled);let O=false;typeof l?.persistence=="boolean"&&(O=l?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(O=o?.cache?.persistence??false);let T=60*5,D="s";return E(l?.timeout)&&(typeof l?.timeout=="number"?(T=l.timeout,D="s"):typeof l?.timeout=="object"&&(T=l?.timeout.value,D=l?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?f=o.cache.enabled:f=true,typeof o.cache.timeout=="number"?(T=o.cache.timeout,D="s"):typeof o.cache.timeout=="object"&&(T=o.cache.timeout.value,D=o.cache.timeout.unit)):f=o.cache),{cacheName:R,cacheKey:C,timeout:T,timeoutUnit:D,persistence:O,cacheEnabled:f}},[o?.cache,d,l]);Y.useEffect(()=>{let c=JSON.stringify(E(U.current)?U.current:""),R=JSON.stringify(E(s)?s:""),C=U.current===void 0;(c!==R||C)&&!o?.hold&&(S(null),u(),U.current=s),o?.onChange&&o?.onChange(s,x);},[s,o?.hold,...o?.trigger||[]]),Y.useEffect(()=>{let c=async()=>{!ee&&F&&K&&(await caches.open(F)).delete(K);};return window.addEventListener("beforeunload",c),()=>{window.removeEventListener("beforeunload",c),P.current?.abort();}},[]);let u=Y.useCallback(async c=>{let R=s;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(R=o?.beforeRequest(s)),$&&!c&&!N){h(true),A({loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(s);let C=await caches.open(F),O=await(await C.match(K))?.json();if(O){let{data:T,expired:D}=O;if(J__default.default().isAfter(D))await C.delete(K);else {o?.afterResponse&&T?.data&&(T.data=o?.afterResponse(T.data)),o?.logging&&console.log("After request: Using Cache",T),o?.onAfterResponse&&o?.onAfterResponse(T),h(false),S(T),A({loading:false,response:T});return}}}if(typeof e=="function"){P.current?.abort();let C=new AbortController;P.current=C,h(true),A({loading:true}),o?.logging&&console.log("Before request",s),o?.onBeforeRequest&&o?.onBeforeRequest(s);let f=n?await e(R,void 0,{...o,signal:C.signal}):await e(void 0,{...o,signal:C.signal});if(o?.afterResponse&&f?.data&&(f.data=o?.afterResponse(f.data)),o?.logging&&console.log("After request",f),o?.onAfterResponse&&o?.onAfterResponse(f),h(false),S(f),q(false),A({response:f,loading:false,isCancel:false}),$&&f.status){let O=J__default.default().add(Z,Q).toISOString(),T={data:f,expired:O},D=await caches.open(F),L=new Response(JSON.stringify(T));await D.put(K,L);}}},[s,e,o]);Y.useEffect(()=>{if(o?.refreshInterval){let c=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,R=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,C=setInterval(()=>{u();},J__default.default.duration(c,R).asMilliseconds());return ()=>clearInterval(C)}return ()=>{}},[o?.refreshInterval,u]),Y.useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let c=()=>{u();};return window.addEventListener("focus",c),()=>{window.removeEventListener("focus",c);}},[o?.refetchOnWindowFocus,u]);let m=()=>{P.current?.abort(),P.current=null,h(false),q(true),A({isCancel:true,loading:false});},i=()=>{h(false),S(null),A({response:void 0,loading:false});},g=Y.useCallback((c,R)=>Se(e,c,R),[e]),x={...b,loading:w,refresh:u,abort:m,clear:i,response:b,isCancel:N,clone:g},A=Y.useCallback(({response:c,loading:R,isCancel:C})=>{H(p).setState([c?.data,{...c,loading:R,refresh:u,abort:m,clear:i,response:c,isCancel:C,clone:g}]);},[u,m,i,g,p]);return [b?.data,x]}async function Ot(e,t=()=>{}){let r=e*1e3;return new Promise(n=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),n(true);},r);})}var Pe=(s=>(s.POST="POST",s.PUT="PUT",s.PATCH="PATCH",s.DELETE="DELETE",s.GET="GET",s))(Pe||{}),Oe=(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))(Oe||{});var Et=(e,t,r)=>{let{format:n}=v();return t==="number"?Ue(e,{thouSep:n.number.thouSep,decDigits:n.number.decDigits,decSep:n.number.decSep,...r}):["date","dateTime","month","year","time"].some(a=>a===t)?ke(e,{display:n[t]?.display,value:n[t]?.value,...r}):t==="boolean"?we(e,r):t==="string"?Ne(e,r):e?.toString()??""};function we(e,t){let r=typeof e=="string"?e==="true":!!e,n=t?.trueLabel??"Yes",a=t?.falseLabel??"No";return r?n:a}function Ne(e,t){if(!E(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=ne(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return t?.ellipsis&&r.length>t.ellipsis&&(r=r.slice(0,t.ellipsis)+"..."),r}function Ue(e,{thouSep:t,decSep:r,decDigits:n,method:a}){if(e==null||isNaN(Number(e)))return "";let s=typeof e=="string"?parseFloat(e):e;if(a)if(typeof n=="number"){let l=Math.pow(10,n);s=Math[a](s*l)/l;}else s=Math[a](s);else if(typeof n=="number"){let l=Math.pow(10,n);s=Math.floor(s*l)/l;}let o=0;if(n==="auto"){let l=s.toString(),y=l.indexOf(".");y!==-1&&(o=l.length-y-1);}let p={style:"decimal",useGrouping:true,minimumFractionDigits:n==="auto"?o:n||0,maximumFractionDigits:n==="auto"?o:n||0,minimumIntegerDigits:1};return s.toLocaleString("en-US",p).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,t)}function ke(e,{display:t,value:r}){if(!E(e))return e;let n=J__default.default(e,r);return n.isValid()?n.format(t):e}function Ft(e,{interval:t,lead:r}){let n=Y.useRef(null);Y.useEffect(()=>{n.current=e;},[e]),Y.useEffect(()=>{let a=()=>n.current();if(r&&a(),t!==null){let s=setInterval(a,t);return ()=>clearInterval(s)}},[t]);}function Ht(e,t,r){let[n,a]=Y.useState(false),s=(l,y)=>typeof e=="string"&&l===e||typeof e=="number"&&y===e,o=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),p=l=>{let{key:y,keyCode:w}=l,h=l.ctrlKey,N=l.altKey,q=l.shiftKey;if(!o(document.activeElement))if(t)if(typeof t=="string")s(y,w)&&(t==="ctrl"&&h||t==="alt"&&N||t==="shift"&&q)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));else {let b=t.every(S=>S==="ctrl"?h:S==="alt"?N:S==="shift"?q:false);s(y,w)&&b&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));}else s(y,w)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));},d=({key:l,keyCode:y})=>{s(l,y)&&a(false);};return Y.useEffect(()=>(window.addEventListener("keydown",p),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",p),window.removeEventListener("keyup",d);}),[]),n}var zt=({url:e,token:t,beforeRequest:r,onCallback:n,headers:a,onUnauthorized:s,handleToast:o,handleAuthorization:p,disabledToastWhenCancel:d,withCredentials:l,encryptRequest:y,encryptResponse:w,passphrase:h})=>{let{encrypt:N,decrypt:q,passphrase:b}=M(),S=(u,m,i,g)=>{let x=g?.code==="ERR_CANCELED",A=u.status===401,c=u?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:w)&&c){let D=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:h;try{c=q(c,D);}catch{try{c=q(c,b);}catch{}}}let f={...n({...u,data:c,isCancel:x,isUnauthorization:A},g),isCancel:x,isUnauthorization:A,httpCode:u.status},O=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:d,T=p?p(f,i):!A;if((i?.infoSuccess&&f.status||i?.infoError&&!f.status)&&o&&(!x||!O)&&o(f),!T&&(!x||!i?.disabledHandleUnauthorized)){let D=i?.onUnauthorized||s;D&&D(f);}if(m)m(f);else return f},U=(u,m=()=>{})=>Fe__default.default.create({baseURL:`${e}`,withCredentials:typeof u.withCredentials=="boolean"?u.withCredentials:l})(u).then(m).catch(g=>m(g.response,g)),P=(u,m,i,g,x)=>{let c={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...x},R={"Content-Type":"application/json",...a,...c.headers};if(c.token&&(typeof c.token=="boolean"?t&&(R.Authorization=`Bearer ${t}`):c.token&&(R.Authorization=`Bearer ${c.token}`)),r&&(i=r(i)),(typeof c?.encryptRequest=="boolean"?c?.encryptRequest:y)&&i){let f=x?.passphrase?typeof x.passphrase=="boolean"&&x.passphrase?b:x.passphrase:h;i=N(i,f);}return U({url:m,method:u,data:i,headers:R,responseType:c.responseType,signal:c.signal,withCredentials:c.withCredentials,onUploadProgress:f=>{c?.onUploadProgress&&c?.onUploadProgress(f);}},(f,O)=>S(f,g,c,O))};return {client:U,post:(u,m,i,g)=>P("POST",`${u}`,m,i,g),put:(u,m,i,g)=>P("PUT",`${u}`,m,i,g),patch:(u,m,i,g)=>P("PATCH",`${u}`,m,i,g),delete:(u,m,i)=>P("DELETE",`${u}`,null,m,i),get:(u,m,i)=>P("GET",`${u}`,null,m,i),upload:(u,m,i,g)=>{let x=new FormData;return Object.keys(m).forEach(A=>x.append(A,m[A])),P("POST",`${u}`,x,i,{infoSuccess:false,...g,headers:{"Content-Type":"multipart/form-data",...g?.headers}})}}};function Gt(e,t){let[r,n]=Y.useState(false),[a,s]=Y.useState(),[o,p]=Y.useState(0),d=Y.useRef(null);return Y.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async h=>{d.current?.abort();let N=new AbortController;d.current=N,n(true),t?.beforeRequest&&(h=t?.beforeRequest(h)),t?.logging&&console.log("Before request",h);let q={...t,signal:N.signal,onUploadProgress:S=>{let U=Math.round(S.loaded*100/(S.total||1));p(U);}},b=e.__isVoid?await e(void 0,q):await e(h,void 0,q);t?.logging&&console.log("After response",b),s(b),n(false),p(0),b.status&&t?.onSuccess&&t?.onSuccess(b),!b.status&&t?.onError&&t?.onError(b),t?.afterResponse&&t?.afterResponse(b);},{...a,loading:r,abort:()=>{d.current?.abort(),d.current=null,n(false),p(0);},progress:o,reset:()=>{n(false),p(0),s(null);}}]}function He(e,t){let{disableHysteresis:r=false,threshold:n=100,target:a}=t,s=e.current;return a&&(typeof a.pageYOffset=="number"?e.current=a.pageYOffset:a.scrollTop!==void 0&&(e.current=a.scrollTop)),!r&&s!==void 0&&e.current<s?false:(e.current||0)>n}var Ie=typeof window<"u"?window:null;function Zt(e={}){let{getTrigger:t=He,target:r=Ie,disableHysteresis:n=false,threshold:a=100}=e,s=Y__default.default.useRef(0),[o,p]=Y__default.default.useState(()=>t(s,{disableHysteresis:n,threshold:a,target:r}));return Y__default.default.useEffect(()=>{let d=()=>{p(t(s,{disableHysteresis:n,threshold:a,target:r}));};if(d(),r)return r.addEventListener("scroll",d,{passive:true}),()=>{r.removeEventListener("scroll",d);}},[r,t,n,a]),o}var tr=(e,t)=>{let r=t||e.__path||e.name;return H(r).useStore()};var or=(e,t)=>{let r=n=>e(n);return r.displayName=t,r},sr=(e,t)=>{let r={};r.others=[];let n=a=>{Y__default.default.Children.forEach(a,s=>{if(Y__default.default.isValidElement(s)){let o=s.type.displayName;if(t.includes(o))r[o]=s;else {let p=s;p.props?.children?n(p.props.children):r.others.push(s);}}else r.others.push(s);});};return n(e),r};function $e(e,t=[]){let r={};for(let n in e){let a=e[n];if(typeof a=="function"){let s=a.bind(null);s.__path=[...t,n].join("."),s.__isVoid=a.length===2,r[n]=s;}else typeof a=="object"&&a!==null?r[n]=$e(a,[...t,n]):r[n]=a;}return r}exports.BgsCoreProvider=he;exports.DataTypeEnum=Oe;exports.HttpMethod=Pe;exports.capitalizeWords=ne;exports.createApiHelper=zt;exports.createElement=or;exports.createStore=ue;exports.debounce=Ye;exports.decrypt=V;exports.decryptString=pe;exports.diffJson=Ve;exports.encrypt=j;exports.encryptString=le;exports.generateCacheKey=re;exports.generateUUID=je;exports.getFieldValue=k;exports.isArray=ze;exports.isNotEmpty=E;exports.jsonCopy=Xe;exports.labelFormatter=te;exports.mappingUndefinedtoNull=We;exports.renderChildren=Je;exports.sorting=_e;exports.splitElement=sr;exports.stableStringify=ye;exports.summary=Ge;exports.useApiLoad=Se;exports.useApiSend=Gt;exports.useApiStore=tr;exports.useBgsCore=v;exports.useCrypto=M;exports.useDelay=Ot;exports.useFormatted=Et;exports.useInterval=Ft;exports.useKeyPress=Ht;exports.useScrollTrigger=Zt;exports.useStorage=ce;exports.wrapApi=$e;
package/dist/index.d.cts CHANGED
@@ -351,8 +351,7 @@ type StorePayload<DRes> = {
351
351
  isCancel?: boolean;
352
352
  };
353
353
 
354
- declare function useApiLoad<DRes>(api: ApiMethodVoid<DRes>, options?: Partial<UseCallOptionsProps<undefined, DRes>>): UseCallReturnType<undefined, DRes>;
355
- declare function useApiLoad<DReq, DRes>(api: ApiMethod<DReq, DRes>, data: DReq, options?: Partial<UseCallOptionsProps<DReq, DRes>>): UseCallReturnType<DReq, DRes>;
354
+ declare function useApiLoad<DReq, DRes>(api: ApiMethod<DReq, DRes> | ApiMethodVoid<DRes>, dataOrOptions?: DReq extends undefined ? Partial<UseCallOptionsProps<DReq, DRes>> : DReq, maybeOptions?: Partial<UseCallOptionsProps<DReq, DRes>>): UseCallReturnType<DReq, DRes>;
356
355
 
357
356
  declare function useDelay(s: number, callback?: Function): Promise<unknown>;
358
357
 
package/dist/index.d.ts CHANGED
@@ -351,8 +351,7 @@ type StorePayload<DRes> = {
351
351
  isCancel?: boolean;
352
352
  };
353
353
 
354
- declare function useApiLoad<DRes>(api: ApiMethodVoid<DRes>, options?: Partial<UseCallOptionsProps<undefined, DRes>>): UseCallReturnType<undefined, DRes>;
355
- declare function useApiLoad<DReq, DRes>(api: ApiMethod<DReq, DRes>, data: DReq, options?: Partial<UseCallOptionsProps<DReq, DRes>>): UseCallReturnType<DReq, DRes>;
354
+ declare function useApiLoad<DReq, DRes>(api: ApiMethod<DReq, DRes> | ApiMethodVoid<DRes>, dataOrOptions?: DReq extends undefined ? Partial<UseCallOptionsProps<DReq, DRes>> : DReq, maybeOptions?: Partial<UseCallOptionsProps<DReq, DRes>>): UseCallReturnType<DReq, DRes>;
356
355
 
357
356
  declare function useDelay(s: number, callback?: Function): Promise<unknown>;
358
357
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import J from'moment';import Y,{createContext,useContext,useCallback,useState,useRef,useMemo,useEffect,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import ae from'crypto-js/aes';import ie from'crypto-js/pbkdf2';import Te from'crypto-js/enc-utf8';import M from'crypto-js/enc-base64';import se from'crypto-js/lib-typedarrays';import Fe from'axios';function je(){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 Ve(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var We=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function ze(e,t){let r=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(r=true):r=true),r}function E(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 te={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 r=e.replace(/_([a-z])/g,(n,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(e="",t=false)=>{let r="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],r=te.snackCase(te.camelCase(e)),t&&(r=r?.split(" ")?.map(n=>n?.length<=3?n?.toUpperCase():n)?.join(" "));}catch{}return r?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var k=(e,t,r="")=>{if(!e)return r;if(e.hasOwnProperty(t))return e[t];let n=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let s of n){if(a==null)return r;a=a[s];}return a===void 0?r:a},_e={desc:(e,t)=>(e||(e=[]),e.sort((r,n)=>{if(t){let a=k(r,t)?k(r,t):"",s=k(n,t)?k(r,t):"";return a<s?1:-1}else return r<n?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((r,n)=>{if(t){let a=k(r,t)?k(r,t):"",s=k(n,t)?k(n,t):"";return a>s?1:-1}else return r>n?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let r=[];return r=e.map(n=>Number(t?k(n,t)||0:n||0)),r.reduce((n,a)=>(n||0)+(a||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function ye(e){let t=new WeakSet;return JSON.stringify(e,function(r,n){return n!==null&&typeof n=="object"?t.has(n)?void 0:(t.add(n),Object.keys(n).sort().reduce((a,s)=>(a[s]=n[s],a),{})):n})??""}function re(e,t){return ye([t??"undefined",e??"undefined"])}function ne(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{e(...n);},t*1e3);}}var oe=createContext(void 0);function v(){let e=useContext(oe);return e||{}}var he=({children:e,value:t})=>{let r={...t};return jsx(oe.Provider,{value:r,children:e})};function j(e,t){let r=se.random(16),n=se.random(16),a=ie(t,r,{keySize:256/32,iterations:1e3}),s=ae.encrypt(JSON.stringify(e),a,{iv:n}).toString();return {salt:r.toString(M),iv:n.toString(M),encrypted:s}}function V(e,t){let{salt:r,iv:n,encrypted:a}=e,s=ie(t,M.parse(r),{keySize:256/32,iterations:1e3}),p=ae.decrypt(a,s,{iv:M.parse(n)}).toString(Te);return JSON.parse(p)}function le(e,t){return JSON.stringify(j(e,t))}function pe(e,t){return V(JSON.parse(e),t)}function B(){let{passphrase:e}=v();return {passphrase:e,encrypt(t,r){return j(t,r||e)},decrypt(t,r){return V(t,r||e)},encryptString(t,r){return le(t,r||e)},decryptString(t,r){return pe(t,r||e)}}}var ce=()=>{let{encrypt:e,decrypt:t}=B(),r=useCallback((o,p)=>{try{let d=e(p);localStorage.setItem(o,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),n=useCallback(o=>{try{let p=localStorage.getItem(o);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to get from storage:",p),null}},[t]),a=o=>{let[p,d]=useState(()=>{try{let l=localStorage.getItem(o);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===o)if(y.newValue)try{d(t(JSON.parse(y.newValue)));}catch(w){console.error("Decrypt error from storage event",w);}else d(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[o,t]),p},s=useCallback(o=>{o?localStorage.removeItem(o):localStorage.clear();},[]);return {save:r,get:n,clear:s,useWatchStorage:a}};function ue(e){let t=e,r=new Set;function n(){return t}function a(p){return r.add(p),()=>r.delete(p)}function s(p){typeof p=="function"?t=p(t):t=p,r.forEach(d=>d());}function o(p){return useSyncExternalStore(a,()=>p?p(t):t,()=>p?p(t):t)}return {getSnapshot:n,subscribe:a,setState:s,useStore:o}}var z=new Map;function H(e){return z.has(e)||z.set(e,ue([null,{loading:false,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{}}])),z.get(e)}function Pe(e,t,r){let n=!e.__isVoid,a=e.__path||e.name,s=n?t:void 0,o=n?r:t,p=o?.storeName||a,{storageKey:d,cache:l}=v(),y=ce(),[w,h]=useState(false),[U,q]=useState(false),[b,P]=useState(),N=useRef(void 0),S=useRef(null),{cacheName:F,cacheKey:K,timeout:Z,timeoutUnit:Q,persistence:ee,cacheEnabled:L}=useMemo(()=>{let c=d?y.get(d):void 0,R=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,C=re({...s,session:c},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),f=false;typeof l?.enabled=="boolean"&&(f=l.enabled);let O=false;typeof l?.persistence=="boolean"&&(O=l?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(O=o?.cache?.persistence??false);let T=60*5,A="s";return E(l?.timeout)&&(typeof l?.timeout=="number"?(T=l.timeout,A="s"):typeof l?.timeout=="object"&&(T=l?.timeout.value,A=l?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?f=o.cache.enabled:f=true,typeof o.cache.timeout=="number"?(T=o.cache.timeout,A="s"):typeof o.cache.timeout=="object"&&(T=o.cache.timeout.value,A=o.cache.timeout.unit)):f=o.cache),{cacheName:R,cacheKey:C,timeout:T,timeoutUnit:A,persistence:O,cacheEnabled:f}},[o?.cache,d,l]);useEffect(()=>{let c=JSON.stringify(E(N.current)?N.current:""),R=JSON.stringify(E(s)?s:""),C=N.current===void 0;(c!==R||C)&&!o?.hold&&(P(null),u(),N.current=s),o?.onChange&&o?.onChange(s,x);},[s,o?.hold,...o?.trigger||[]]),useEffect(()=>{let c=async()=>{!ee&&F&&K&&(await caches.open(F)).delete(K);};return window.addEventListener("beforeunload",c),()=>{window.removeEventListener("beforeunload",c),S.current?.abort();}},[]);let u=useCallback(async c=>{let R=s;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(R=o?.beforeRequest(s)),L&&!c&&!U){h(true),D({loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(s);let C=await caches.open(F),O=await(await C.match(K))?.json();if(O){let{data:T,expired:A}=O;if(J().isAfter(A))await C.delete(K);else {o?.afterResponse&&T?.data&&(T.data=o?.afterResponse(T.data)),o?.logging&&console.log("After request: Using Cache",T),o?.onAfterResponse&&o?.onAfterResponse(T),h(false),P(T),D({loading:false,response:T});return}}}if(typeof e=="function"){S.current?.abort();let C=new AbortController;S.current=C,h(true),D({loading:true}),o?.logging&&console.log("Before request",s),o?.onBeforeRequest&&o?.onBeforeRequest(s);let f=n?await e(R,void 0,{...o,signal:C.signal}):await e(void 0,{...o,signal:C.signal});if(o?.afterResponse&&f?.data&&(f.data=o?.afterResponse(f.data)),o?.logging&&console.log("After request",f),o?.onAfterResponse&&o?.onAfterResponse(f),h(false),P(f),q(false),D({response:f,loading:false,isCancel:false}),L&&f.status){let O=J().add(Z,Q).toISOString(),T={data:f,expired:O},A=await caches.open(F),$=new Response(JSON.stringify(T));await A.put(K,$);}}},[s,e,o]);useEffect(()=>{if(o?.refreshInterval){let c=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,R=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,C=setInterval(()=>{u();},J.duration(c,R).asMilliseconds());return ()=>clearInterval(C)}return ()=>{}},[o?.refreshInterval,u]),useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let c=()=>{u();};return window.addEventListener("focus",c),()=>{window.removeEventListener("focus",c);}},[o?.refetchOnWindowFocus,u]);let m=()=>{S.current?.abort(),S.current=null,h(false),q(true),D({isCancel:true,loading:false});},i=()=>{h(false),P(null),D({response:void 0,loading:false});},g=useCallback((c,R)=>Pe(e,c,R),[e]),x={...b,loading:w,refresh:u,abort:m,clear:i,response:b,isCancel:U,clone:g},D=useCallback(({response:c,loading:R,isCancel:C})=>{H(p).setState([c?.data,{...c,loading:R,refresh:u,abort:m,clear:i,response:c,isCancel:C,clone:g}]);},[u,m,i,g,p]);return [b?.data,x]}async function Ot(e,t=()=>{}){let r=e*1e3;return new Promise(n=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),n(true);},r);})}var Se=(s=>(s.POST="POST",s.PUT="PUT",s.PATCH="PATCH",s.DELETE="DELETE",s.GET="GET",s))(Se||{}),Oe=(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))(Oe||{});var Et=(e,t,r)=>{let{format:n}=v();return t==="number"?Ne(e,{thouSep:n.number.thouSep,decDigits:n.number.decDigits,decSep:n.number.decSep,...r}):["date","dateTime","month","year","time"].some(a=>a===t)?ke(e,{display:n[t]?.display,value:n[t]?.value,...r}):t==="boolean"?we(e,r):t==="string"?Ue(e,r):e?.toString()??""};function we(e,t){let r=typeof e=="string"?e==="true":!!e,n=t?.trueLabel??"Yes",a=t?.falseLabel??"No";return r?n:a}function Ue(e,t){if(!E(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=ne(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return t?.ellipsis&&r.length>t.ellipsis&&(r=r.slice(0,t.ellipsis)+"..."),r}function Ne(e,{thouSep:t,decSep:r,decDigits:n,method:a}){if(e==null||isNaN(Number(e)))return "";let s=typeof e=="string"?parseFloat(e):e;if(a)if(typeof n=="number"){let l=Math.pow(10,n);s=Math[a](s*l)/l;}else s=Math[a](s);else if(typeof n=="number"){let l=Math.pow(10,n);s=Math.floor(s*l)/l;}let o=0;if(n==="auto"){let l=s.toString(),y=l.indexOf(".");y!==-1&&(o=l.length-y-1);}let p={style:"decimal",useGrouping:true,minimumFractionDigits:n==="auto"?o:n||0,maximumFractionDigits:n==="auto"?o:n||0,minimumIntegerDigits:1};return s.toLocaleString("en-US",p).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,t)}function ke(e,{display:t,value:r}){if(!E(e))return e;let n=J(e,r);return n.isValid()?n.format(t):e}function Ft(e,{interval:t,lead:r}){let n=useRef(null);useEffect(()=>{n.current=e;},[e]),useEffect(()=>{let a=()=>n.current();if(r&&a(),t!==null){let s=setInterval(a,t);return ()=>clearInterval(s)}},[t]);}function Ht(e,t,r){let[n,a]=useState(false),s=(l,y)=>typeof e=="string"&&l===e||typeof e=="number"&&y===e,o=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),p=l=>{let{key:y,keyCode:w}=l,h=l.ctrlKey,U=l.altKey,q=l.shiftKey;if(!o(document.activeElement))if(t)if(typeof t=="string")s(y,w)&&(t==="ctrl"&&h||t==="alt"&&U||t==="shift"&&q)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));else {let b=t.every(P=>P==="ctrl"?h:P==="alt"?U:P==="shift"?q:false);s(y,w)&&b&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));}else s(y,w)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));},d=({key:l,keyCode:y})=>{s(l,y)&&a(false);};return useEffect(()=>(window.addEventListener("keydown",p),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",p),window.removeEventListener("keyup",d);}),[]),n}var zt=({url:e,token:t,beforeRequest:r,onCallback:n,headers:a,onUnauthorized:s,handleToast:o,handleAuthorization:p,disabledToastWhenCancel:d,withCredentials:l,encryptRequest:y,encryptResponse:w,passphrase:h})=>{let{encrypt:U,decrypt:q,passphrase:b}=B(),P=(u,m,i,g)=>{let x=g?.code==="ERR_CANCELED",D=u.status===401,c=u?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:w)&&c){let A=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:h;try{c=q(c,A);}catch{try{c=q(c,b);}catch{}}}let f={...n({...u,data:c,isCancel:x,isUnauthorization:D},g),isCancel:x,isUnauthorization:D,httpCode:u.status},O=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:d,T=p?p(f,i):!D;if((i?.infoSuccess&&f.status||i?.infoError&&!f.status)&&o&&(!x||!O)&&o(f),!T&&(!x||!i?.disabledHandleUnauthorized)){let A=i?.onUnauthorized||s;A&&A(f);}if(m)m(f);else return f},N=(u,m=()=>{})=>Fe.create({baseURL:`${e}`,withCredentials:typeof u.withCredentials=="boolean"?u.withCredentials:l})(u).then(m).catch(g=>m(g.response,g)),S=(u,m,i,g,x)=>{let c={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...x},R={"Content-Type":"application/json",...a,...c.headers};if(c.token&&(typeof c.token=="boolean"?t&&(R.Authorization=`Bearer ${t}`):c.token&&(R.Authorization=`Bearer ${c.token}`)),r&&(i=r(i)),(typeof c?.encryptRequest=="boolean"?c?.encryptRequest:y)&&i){let f=x?.passphrase?typeof x.passphrase=="boolean"&&x.passphrase?b:x.passphrase:h;i=U(i,f);}return N({url:m,method:u,data:i,headers:R,responseType:c.responseType,signal:c.signal,withCredentials:c.withCredentials,onUploadProgress:f=>{c?.onUploadProgress&&c?.onUploadProgress(f);}},(f,O)=>P(f,g,c,O))};return {client:N,post:(u,m,i,g)=>S("POST",`${u}`,m,i,g),put:(u,m,i,g)=>S("PUT",`${u}`,m,i,g),patch:(u,m,i,g)=>S("PATCH",`${u}`,m,i,g),delete:(u,m,i)=>S("DELETE",`${u}`,null,m,i),get:(u,m,i)=>S("GET",`${u}`,null,m,i),upload:(u,m,i,g)=>{let x=new FormData;return Object.keys(m).forEach(D=>x.append(D,m[D])),S("POST",`${u}`,x,i,{infoSuccess:false,...g,headers:{"Content-Type":"multipart/form-data",...g?.headers}})}}};function Gt(e,t){let[r,n]=useState(false),[a,s]=useState(),[o,p]=useState(0),d=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async h=>{d.current?.abort();let U=new AbortController;d.current=U,n(true),t?.beforeRequest&&(h=t?.beforeRequest(h)),t?.logging&&console.log("Before request",h);let q={...t,signal:U.signal,onUploadProgress:P=>{let N=Math.round(P.loaded*100/(P.total||1));p(N);}},b=e.__isVoid?await e(void 0,q):await e(h,void 0,q);t?.logging&&console.log("After response",b),s(b),n(false),p(0),b.status&&t?.onSuccess&&t?.onSuccess(b),!b.status&&t?.onError&&t?.onError(b),t?.afterResponse&&t?.afterResponse(b);},{...a,loading:r,abort:()=>{d.current?.abort(),d.current=null,n(false),p(0);},progress:o,reset:()=>{n(false),p(0),s(null);}}]}function He(e,t){let{disableHysteresis:r=false,threshold:n=100,target:a}=t,s=e.current;return a&&(typeof a.pageYOffset=="number"?e.current=a.pageYOffset:a.scrollTop!==void 0&&(e.current=a.scrollTop)),!r&&s!==void 0&&e.current<s?false:(e.current||0)>n}var Ie=typeof window<"u"?window:null;function Zt(e={}){let{getTrigger:t=He,target:r=Ie,disableHysteresis:n=false,threshold:a=100}=e,s=Y.useRef(0),[o,p]=Y.useState(()=>t(s,{disableHysteresis:n,threshold:a,target:r}));return Y.useEffect(()=>{let d=()=>{p(t(s,{disableHysteresis:n,threshold:a,target:r}));};if(d(),r)return r.addEventListener("scroll",d,{passive:true}),()=>{r.removeEventListener("scroll",d);}},[r,t,n,a]),o}var tr=(e,t)=>{let r=t||e.__path||e.name;return H(r).useStore()};var or=(e,t)=>{let r=n=>e(n);return r.displayName=t,r},sr=(e,t)=>{let r={};r.others=[];let n=a=>{Y.Children.forEach(a,s=>{if(Y.isValidElement(s)){let o=s.type.displayName;if(t.includes(o))r[o]=s;else {let p=s;p.props?.children?n(p.props.children):r.others.push(s);}}else r.others.push(s);});};return n(e),r};function Le(e,t=[]){let r={};for(let n in e){let a=e[n];if(typeof a=="function"){let s=a.bind(null);s.__path=[...t,n].join("."),s.__isVoid=a.length===2,r[n]=s;}else typeof a=="object"&&a!==null?r[n]=Le(a,[...t,n]):r[n]=a;}return r}export{he as BgsCoreProvider,Oe as DataTypeEnum,Se as HttpMethod,ne as capitalizeWords,zt as createApiHelper,or as createElement,ue as createStore,Ye as debounce,V as decrypt,pe as decryptString,Ve as diffJson,j as encrypt,le as encryptString,re as generateCacheKey,je as generateUUID,k as getFieldValue,ze as isArray,E as isNotEmpty,Xe as jsonCopy,te as labelFormatter,We as mappingUndefinedtoNull,Je as renderChildren,_e as sorting,sr as splitElement,ye as stableStringify,Ge as summary,Pe as useApiLoad,Gt as useApiSend,tr as useApiStore,v as useBgsCore,B as useCrypto,Ot as useDelay,Et as useFormatted,Ft as useInterval,Ht as useKeyPress,Zt as useScrollTrigger,ce as useStorage,Le as wrapApi};
1
+ import J from'moment';import Y,{createContext,useContext,useCallback,useState,useRef,useMemo,useEffect,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import ae from'crypto-js/aes';import ie from'crypto-js/pbkdf2';import Te from'crypto-js/enc-utf8';import B from'crypto-js/enc-base64';import se from'crypto-js/lib-typedarrays';import Fe from'axios';function je(){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 Ve(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var We=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function ze(e,t){let r=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(r=true):r=true),r}function E(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 te={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 r=e.replace(/_([a-z])/g,(n,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(e="",t=false)=>{let r="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],r=te.snackCase(te.camelCase(e)),t&&(r=r?.split(" ")?.map(n=>n?.length<=3?n?.toUpperCase():n)?.join(" "));}catch{}return r?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var k=(e,t,r="")=>{if(!e)return r;if(e.hasOwnProperty(t))return e[t];let n=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let s of n){if(a==null)return r;a=a[s];}return a===void 0?r:a},_e={desc:(e,t)=>(e||(e=[]),e.sort((r,n)=>{if(t){let a=k(r,t)?k(r,t):"",s=k(n,t)?k(r,t):"";return a<s?1:-1}else return r<n?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((r,n)=>{if(t){let a=k(r,t)?k(r,t):"",s=k(n,t)?k(n,t):"";return a>s?1:-1}else return r>n?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let r=[];return r=e.map(n=>Number(t?k(n,t)||0:n||0)),r.reduce((n,a)=>(n||0)+(a||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function ye(e){let t=new WeakSet;return JSON.stringify(e,function(r,n){return n!==null&&typeof n=="object"?t.has(n)?void 0:(t.add(n),Object.keys(n).sort().reduce((a,s)=>(a[s]=n[s],a),{})):n})??""}function re(e,t){return ye([t??"undefined",e??"undefined"])}function ne(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{e(...n);},t*1e3);}}var oe=createContext(void 0);function v(){let e=useContext(oe);return e||{}}var he=({children:e,value:t})=>{let r={...t};return jsx(oe.Provider,{value:r,children:e})};function j(e,t){let r=se.random(16),n=se.random(16),a=ie(t,r,{keySize:256/32,iterations:1e3}),s=ae.encrypt(JSON.stringify(e),a,{iv:n}).toString();return {salt:r.toString(B),iv:n.toString(B),encrypted:s}}function V(e,t){let{salt:r,iv:n,encrypted:a}=e,s=ie(t,B.parse(r),{keySize:256/32,iterations:1e3}),p=ae.decrypt(a,s,{iv:B.parse(n)}).toString(Te);return JSON.parse(p)}function le(e,t){return JSON.stringify(j(e,t))}function pe(e,t){return V(JSON.parse(e),t)}function M(){let{passphrase:e}=v();return {passphrase:e,encrypt(t,r){return j(t,r||e)},decrypt(t,r){return V(t,r||e)},encryptString(t,r){return le(t,r||e)},decryptString(t,r){return pe(t,r||e)}}}var ce=()=>{let{encrypt:e,decrypt:t}=M(),r=useCallback((o,p)=>{try{let d=e(p);localStorage.setItem(o,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),n=useCallback(o=>{try{let p=localStorage.getItem(o);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to get from storage:",p),null}},[t]),a=o=>{let[p,d]=useState(()=>{try{let l=localStorage.getItem(o);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===o)if(y.newValue)try{d(t(JSON.parse(y.newValue)));}catch(w){console.error("Decrypt error from storage event",w);}else d(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[o,t]),p},s=useCallback(o=>{o?localStorage.removeItem(o):localStorage.clear();},[]);return {save:r,get:n,clear:s,useWatchStorage:a}};function ue(e){let t=e,r=new Set;function n(){return t}function a(p){return r.add(p),()=>r.delete(p)}function s(p){typeof p=="function"?t=p(t):t=p,r.forEach(d=>d());}function o(p){return useSyncExternalStore(a,()=>p?p(t):t,()=>p?p(t):t)}return {getSnapshot:n,subscribe:a,setState:s,useStore:o}}var z=new Map;function H(e){return z.has(e)||z.set(e,ue([null,{loading:false,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{}}])),z.get(e)}function Se(e,t,r){let n=!e.__isVoid,a=e.__path||e.name,s=n?t:void 0,o=n?r:t,p=o?.storeName||a,{storageKey:d,cache:l}=v(),y=ce(),[w,h]=useState(false),[N,q]=useState(false),[b,S]=useState(),U=useRef(void 0),P=useRef(null),{cacheName:F,cacheKey:K,timeout:Z,timeoutUnit:Q,persistence:ee,cacheEnabled:$}=useMemo(()=>{let c=d?y.get(d):void 0,R=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,C=re({...s,session:c},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),f=false;typeof l?.enabled=="boolean"&&(f=l.enabled);let O=false;typeof l?.persistence=="boolean"&&(O=l?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(O=o?.cache?.persistence??false);let T=60*5,D="s";return E(l?.timeout)&&(typeof l?.timeout=="number"?(T=l.timeout,D="s"):typeof l?.timeout=="object"&&(T=l?.timeout.value,D=l?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?f=o.cache.enabled:f=true,typeof o.cache.timeout=="number"?(T=o.cache.timeout,D="s"):typeof o.cache.timeout=="object"&&(T=o.cache.timeout.value,D=o.cache.timeout.unit)):f=o.cache),{cacheName:R,cacheKey:C,timeout:T,timeoutUnit:D,persistence:O,cacheEnabled:f}},[o?.cache,d,l]);useEffect(()=>{let c=JSON.stringify(E(U.current)?U.current:""),R=JSON.stringify(E(s)?s:""),C=U.current===void 0;(c!==R||C)&&!o?.hold&&(S(null),u(),U.current=s),o?.onChange&&o?.onChange(s,x);},[s,o?.hold,...o?.trigger||[]]),useEffect(()=>{let c=async()=>{!ee&&F&&K&&(await caches.open(F)).delete(K);};return window.addEventListener("beforeunload",c),()=>{window.removeEventListener("beforeunload",c),P.current?.abort();}},[]);let u=useCallback(async c=>{let R=s;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(R=o?.beforeRequest(s)),$&&!c&&!N){h(true),A({loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(s);let C=await caches.open(F),O=await(await C.match(K))?.json();if(O){let{data:T,expired:D}=O;if(J().isAfter(D))await C.delete(K);else {o?.afterResponse&&T?.data&&(T.data=o?.afterResponse(T.data)),o?.logging&&console.log("After request: Using Cache",T),o?.onAfterResponse&&o?.onAfterResponse(T),h(false),S(T),A({loading:false,response:T});return}}}if(typeof e=="function"){P.current?.abort();let C=new AbortController;P.current=C,h(true),A({loading:true}),o?.logging&&console.log("Before request",s),o?.onBeforeRequest&&o?.onBeforeRequest(s);let f=n?await e(R,void 0,{...o,signal:C.signal}):await e(void 0,{...o,signal:C.signal});if(o?.afterResponse&&f?.data&&(f.data=o?.afterResponse(f.data)),o?.logging&&console.log("After request",f),o?.onAfterResponse&&o?.onAfterResponse(f),h(false),S(f),q(false),A({response:f,loading:false,isCancel:false}),$&&f.status){let O=J().add(Z,Q).toISOString(),T={data:f,expired:O},D=await caches.open(F),L=new Response(JSON.stringify(T));await D.put(K,L);}}},[s,e,o]);useEffect(()=>{if(o?.refreshInterval){let c=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,R=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,C=setInterval(()=>{u();},J.duration(c,R).asMilliseconds());return ()=>clearInterval(C)}return ()=>{}},[o?.refreshInterval,u]),useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let c=()=>{u();};return window.addEventListener("focus",c),()=>{window.removeEventListener("focus",c);}},[o?.refetchOnWindowFocus,u]);let m=()=>{P.current?.abort(),P.current=null,h(false),q(true),A({isCancel:true,loading:false});},i=()=>{h(false),S(null),A({response:void 0,loading:false});},g=useCallback((c,R)=>Se(e,c,R),[e]),x={...b,loading:w,refresh:u,abort:m,clear:i,response:b,isCancel:N,clone:g},A=useCallback(({response:c,loading:R,isCancel:C})=>{H(p).setState([c?.data,{...c,loading:R,refresh:u,abort:m,clear:i,response:c,isCancel:C,clone:g}]);},[u,m,i,g,p]);return [b?.data,x]}async function Ot(e,t=()=>{}){let r=e*1e3;return new Promise(n=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),n(true);},r);})}var Pe=(s=>(s.POST="POST",s.PUT="PUT",s.PATCH="PATCH",s.DELETE="DELETE",s.GET="GET",s))(Pe||{}),Oe=(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))(Oe||{});var Et=(e,t,r)=>{let{format:n}=v();return t==="number"?Ue(e,{thouSep:n.number.thouSep,decDigits:n.number.decDigits,decSep:n.number.decSep,...r}):["date","dateTime","month","year","time"].some(a=>a===t)?ke(e,{display:n[t]?.display,value:n[t]?.value,...r}):t==="boolean"?we(e,r):t==="string"?Ne(e,r):e?.toString()??""};function we(e,t){let r=typeof e=="string"?e==="true":!!e,n=t?.trueLabel??"Yes",a=t?.falseLabel??"No";return r?n:a}function Ne(e,t){if(!E(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=ne(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return t?.ellipsis&&r.length>t.ellipsis&&(r=r.slice(0,t.ellipsis)+"..."),r}function Ue(e,{thouSep:t,decSep:r,decDigits:n,method:a}){if(e==null||isNaN(Number(e)))return "";let s=typeof e=="string"?parseFloat(e):e;if(a)if(typeof n=="number"){let l=Math.pow(10,n);s=Math[a](s*l)/l;}else s=Math[a](s);else if(typeof n=="number"){let l=Math.pow(10,n);s=Math.floor(s*l)/l;}let o=0;if(n==="auto"){let l=s.toString(),y=l.indexOf(".");y!==-1&&(o=l.length-y-1);}let p={style:"decimal",useGrouping:true,minimumFractionDigits:n==="auto"?o:n||0,maximumFractionDigits:n==="auto"?o:n||0,minimumIntegerDigits:1};return s.toLocaleString("en-US",p).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,t)}function ke(e,{display:t,value:r}){if(!E(e))return e;let n=J(e,r);return n.isValid()?n.format(t):e}function Ft(e,{interval:t,lead:r}){let n=useRef(null);useEffect(()=>{n.current=e;},[e]),useEffect(()=>{let a=()=>n.current();if(r&&a(),t!==null){let s=setInterval(a,t);return ()=>clearInterval(s)}},[t]);}function Ht(e,t,r){let[n,a]=useState(false),s=(l,y)=>typeof e=="string"&&l===e||typeof e=="number"&&y===e,o=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),p=l=>{let{key:y,keyCode:w}=l,h=l.ctrlKey,N=l.altKey,q=l.shiftKey;if(!o(document.activeElement))if(t)if(typeof t=="string")s(y,w)&&(t==="ctrl"&&h||t==="alt"&&N||t==="shift"&&q)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));else {let b=t.every(S=>S==="ctrl"?h:S==="alt"?N:S==="shift"?q:false);s(y,w)&&b&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));}else s(y,w)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));},d=({key:l,keyCode:y})=>{s(l,y)&&a(false);};return useEffect(()=>(window.addEventListener("keydown",p),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",p),window.removeEventListener("keyup",d);}),[]),n}var zt=({url:e,token:t,beforeRequest:r,onCallback:n,headers:a,onUnauthorized:s,handleToast:o,handleAuthorization:p,disabledToastWhenCancel:d,withCredentials:l,encryptRequest:y,encryptResponse:w,passphrase:h})=>{let{encrypt:N,decrypt:q,passphrase:b}=M(),S=(u,m,i,g)=>{let x=g?.code==="ERR_CANCELED",A=u.status===401,c=u?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:w)&&c){let D=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:h;try{c=q(c,D);}catch{try{c=q(c,b);}catch{}}}let f={...n({...u,data:c,isCancel:x,isUnauthorization:A},g),isCancel:x,isUnauthorization:A,httpCode:u.status},O=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:d,T=p?p(f,i):!A;if((i?.infoSuccess&&f.status||i?.infoError&&!f.status)&&o&&(!x||!O)&&o(f),!T&&(!x||!i?.disabledHandleUnauthorized)){let D=i?.onUnauthorized||s;D&&D(f);}if(m)m(f);else return f},U=(u,m=()=>{})=>Fe.create({baseURL:`${e}`,withCredentials:typeof u.withCredentials=="boolean"?u.withCredentials:l})(u).then(m).catch(g=>m(g.response,g)),P=(u,m,i,g,x)=>{let c={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...x},R={"Content-Type":"application/json",...a,...c.headers};if(c.token&&(typeof c.token=="boolean"?t&&(R.Authorization=`Bearer ${t}`):c.token&&(R.Authorization=`Bearer ${c.token}`)),r&&(i=r(i)),(typeof c?.encryptRequest=="boolean"?c?.encryptRequest:y)&&i){let f=x?.passphrase?typeof x.passphrase=="boolean"&&x.passphrase?b:x.passphrase:h;i=N(i,f);}return U({url:m,method:u,data:i,headers:R,responseType:c.responseType,signal:c.signal,withCredentials:c.withCredentials,onUploadProgress:f=>{c?.onUploadProgress&&c?.onUploadProgress(f);}},(f,O)=>S(f,g,c,O))};return {client:U,post:(u,m,i,g)=>P("POST",`${u}`,m,i,g),put:(u,m,i,g)=>P("PUT",`${u}`,m,i,g),patch:(u,m,i,g)=>P("PATCH",`${u}`,m,i,g),delete:(u,m,i)=>P("DELETE",`${u}`,null,m,i),get:(u,m,i)=>P("GET",`${u}`,null,m,i),upload:(u,m,i,g)=>{let x=new FormData;return Object.keys(m).forEach(A=>x.append(A,m[A])),P("POST",`${u}`,x,i,{infoSuccess:false,...g,headers:{"Content-Type":"multipart/form-data",...g?.headers}})}}};function Gt(e,t){let[r,n]=useState(false),[a,s]=useState(),[o,p]=useState(0),d=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async h=>{d.current?.abort();let N=new AbortController;d.current=N,n(true),t?.beforeRequest&&(h=t?.beforeRequest(h)),t?.logging&&console.log("Before request",h);let q={...t,signal:N.signal,onUploadProgress:S=>{let U=Math.round(S.loaded*100/(S.total||1));p(U);}},b=e.__isVoid?await e(void 0,q):await e(h,void 0,q);t?.logging&&console.log("After response",b),s(b),n(false),p(0),b.status&&t?.onSuccess&&t?.onSuccess(b),!b.status&&t?.onError&&t?.onError(b),t?.afterResponse&&t?.afterResponse(b);},{...a,loading:r,abort:()=>{d.current?.abort(),d.current=null,n(false),p(0);},progress:o,reset:()=>{n(false),p(0),s(null);}}]}function He(e,t){let{disableHysteresis:r=false,threshold:n=100,target:a}=t,s=e.current;return a&&(typeof a.pageYOffset=="number"?e.current=a.pageYOffset:a.scrollTop!==void 0&&(e.current=a.scrollTop)),!r&&s!==void 0&&e.current<s?false:(e.current||0)>n}var Ie=typeof window<"u"?window:null;function Zt(e={}){let{getTrigger:t=He,target:r=Ie,disableHysteresis:n=false,threshold:a=100}=e,s=Y.useRef(0),[o,p]=Y.useState(()=>t(s,{disableHysteresis:n,threshold:a,target:r}));return Y.useEffect(()=>{let d=()=>{p(t(s,{disableHysteresis:n,threshold:a,target:r}));};if(d(),r)return r.addEventListener("scroll",d,{passive:true}),()=>{r.removeEventListener("scroll",d);}},[r,t,n,a]),o}var tr=(e,t)=>{let r=t||e.__path||e.name;return H(r).useStore()};var or=(e,t)=>{let r=n=>e(n);return r.displayName=t,r},sr=(e,t)=>{let r={};r.others=[];let n=a=>{Y.Children.forEach(a,s=>{if(Y.isValidElement(s)){let o=s.type.displayName;if(t.includes(o))r[o]=s;else {let p=s;p.props?.children?n(p.props.children):r.others.push(s);}}else r.others.push(s);});};return n(e),r};function $e(e,t=[]){let r={};for(let n in e){let a=e[n];if(typeof a=="function"){let s=a.bind(null);s.__path=[...t,n].join("."),s.__isVoid=a.length===2,r[n]=s;}else typeof a=="object"&&a!==null?r[n]=$e(a,[...t,n]):r[n]=a;}return r}export{he as BgsCoreProvider,Oe as DataTypeEnum,Pe as HttpMethod,ne as capitalizeWords,zt as createApiHelper,or as createElement,ue as createStore,Ye as debounce,V as decrypt,pe as decryptString,Ve as diffJson,j as encrypt,le as encryptString,re as generateCacheKey,je as generateUUID,k as getFieldValue,ze as isArray,E as isNotEmpty,Xe as jsonCopy,te as labelFormatter,We as mappingUndefinedtoNull,Je as renderChildren,_e as sorting,sr as splitElement,ye as stableStringify,Ge as summary,Se as useApiLoad,Gt as useApiSend,tr as useApiStore,v as useBgsCore,M as useCrypto,Ot as useDelay,Et as useFormatted,Ft as useInterval,Ht as useKeyPress,Zt as useScrollTrigger,ce 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.21",
3
+ "version": "0.0.22",
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",