@bgscore/react-core 0.0.15 → 0.0.16

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'),V=require('react'),jsxRuntime=require('react/jsx-runtime'),te=require('crypto-js/aes'),re=require('crypto-js/pbkdf2'),he=require('crypto-js/enc-utf8'),K=require('crypto-js/enc-base64'),ee=require('crypto-js/lib-typedarrays'),Ke=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var j__default=/*#__PURE__*/_interopDefault(j);var V__default=/*#__PURE__*/_interopDefault(V);var te__default=/*#__PURE__*/_interopDefault(te);var re__default=/*#__PURE__*/_interopDefault(re);var he__default=/*#__PURE__*/_interopDefault(he);var K__default=/*#__PURE__*/_interopDefault(K);var ee__default=/*#__PURE__*/_interopDefault(ee);var Ke__default=/*#__PURE__*/_interopDefault(Ke);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 We(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ze=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ve(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 q(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 X={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,(o,s)=>s.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=X.snackCase(X.camelCase(e)),t&&(r=r?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return r?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var O=(e,t,r="")=>{if(!e)return r;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let n of o){if(s==null)return r;s=s[n];}return s===void 0?r:s},_e={desc:(e,t)=>(e||(e=[]),e.sort((r,o)=>{if(t){let s=O(r,t)?O(r,t):"",n=O(o,t)?O(r,t):"";return s<n?1:-1}else return r<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((r,o)=>{if(t){let s=O(r,t)?O(r,t):"",n=O(o,t)?O(o,t):"";return s>n?1:-1}else return r>o?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let r=[];return r=e.map(o=>Number(t?O(o,t)||0:o||0)),r.reduce((o,s)=>(o||0)+(s||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function de(e){let t=new WeakSet;return JSON.stringify(e,function(r,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,n)=>(s[n]=o[n],s),{})):o})??""}function Y(e,t){return de([t??"undefined",e??"undefined"])}function Z(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let r;return function(...o){clearTimeout(r),r=setTimeout(()=>{e(...o);},t*1e3);}}var Q=V.createContext(void 0);function N(){let e=V.useContext(Q);return e||{}}var ge=({children:e,value:t})=>{let r={...t};return jsxRuntime.jsx(Q.Provider,{value:r,children:e})};function H(e,t){let r=ee__default.default.random(16),o=ee__default.default.random(16),s=re__default.default(t,r,{keySize:256/32,iterations:1e3}),n=te__default.default.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:r.toString(K__default.default),iv:o.toString(K__default.default),encrypted:n}}function I(e,t){let{salt:r,iv:o,encrypted:s}=e,n=re__default.default(t,K__default.default.parse(r),{keySize:256/32,iterations:1e3}),i=te__default.default.decrypt(s,n,{iv:K__default.default.parse(o)}).toString(he__default.default);return JSON.parse(i)}function ne(e,t){return JSON.stringify(H(e,t))}function oe(e,t){return I(JSON.parse(e),t)}function F(){let{passphrase:e}=N();return {passphrase:e,encrypt(t,r){return H(t,r||e)},decrypt(t,r){return I(t,r||e)},encryptString(t,r){return ne(t,r||e)},decryptString(t,r){return oe(t,r||e)}}}var se=()=>{let{encrypt:e,decrypt:t}=F(),r=V.useCallback((u,i)=>{try{let d=e(i);localStorage.setItem(u,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),o=V.useCallback(u=>{try{let i=localStorage.getItem(u);return i?t(JSON.parse(i)):null}catch(i){return console.error("Failed to get from storage:",i),null}},[t]),s=u=>{let[i,d]=V.useState(()=>{try{let p=localStorage.getItem(u);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return V.useEffect(()=>{let p=g=>{if(g.key===u)if(g.newValue)try{d(t(JSON.parse(g.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else d(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[u,t]),i},n=V.useCallback(u=>{u?localStorage.removeItem(u):localStorage.clear();},[]);return {save:r,get:o,clear:n,useWatchStorage:s}};function ae(e){let t=e,r=new Set;function o(){return t}function s(i){return r.add(i),()=>r.delete(i)}function n(i){typeof i=="function"?t=i(t):t=i,r.forEach(d=>d());}function u(i){return V.useSyncExternalStore(s,()=>i?i(t):t,()=>i?i(t):t)}return {getSnapshot:o,subscribe:s,setState:n,useStore:u}}var $=new Map;function M(e){return $.has(e)||$.set(e,ae([null,{}])),$.get(e)}function Ae(e,t,r){let o=arguments.length===3,s=o?t:void 0,n=o?r:t,{storageKey:u,cache:i}=N(),d=se(),[p,g]=V.useState(false),[P,b]=V.useState(false),[x,C]=V.useState(),R=V.useRef(void 0),T=V.useRef(null),{cacheName:S,cacheKey:A,timeout:J,timeoutUnit:_,persistence:G}=V.useMemo(()=>{let l=u?d.get(u):void 0,a=typeof n?.cache=="object"?n?.cache?.cacheName??e.name:e.name,f=Y({...s,session:l},typeof n?.cache=="object"?n?.cache?.cacheKey:void 0),y=false;typeof i?.persistence=="boolean"&&(y=i?.persistence),typeof n?.cache=="object"&&typeof n?.cache?.persistence=="boolean"&&(y=n?.cache?.persistence??false);let h=60*5,c="s";return q(i?.timeout)&&(typeof i?.timeout=="number"?(h=i.timeout,c="s"):typeof i?.timeout=="object"&&(h=i?.timeout.value,c=i?.timeout.unit)),n?.cache&&typeof n.cache!="boolean"&&(typeof n.cache.timeout=="number"?(h=n.cache.timeout,c="s"):typeof n.cache.timeout=="object"&&(h=n.cache.timeout.value,c=n.cache.timeout.unit)),{cacheName:a,cacheKey:f,timeout:h,timeoutUnit:c,persistence:y}},[n?.cache,u,i]);V.useEffect(()=>{let l=JSON.stringify(q(R.current)?R.current:""),a=JSON.stringify(q(s)?s:""),f=R.current===void 0;(l!==a||f)&&!n?.hold&&(C(null),U(),R.current=s),n?.onChange&&n?.onChange(s,m);},[s,n?.hold,...n?.trigger||[]]),V.useEffect(()=>{let l=async()=>{!G&&S&&A&&(await caches.open(S)).delete(A);};return window.addEventListener("beforeunload",l),()=>{window.removeEventListener("beforeunload",l),T.current?.abort();}},[]);let U=V.useCallback(async l=>{let a=s;if(n?.hold&&n?.logging&&console.log("Hold active"),n?.beforeRequest&&(a=n?.beforeRequest(s)),n?.cache&&!l&&!P){g(true),n?.onBeforeRequest&&n?.onBeforeRequest(s);let f=await caches.open(S),h=await(await f.match(A))?.json();if(h){let{data:c,expired:w}=h;if(j__default.default().isAfter(w))await f.delete(A);else {n?.afterResponse&&c?.data&&(c.data=n?.afterResponse(c.data)),n?.logging&&console.log("After request: Using Cache",c),n?.onAfterResponse&&n?.onAfterResponse(c),g(false),C(c);return}}}if(typeof e=="function"){T.current?.abort();let f=new AbortController;T.current=f,g(true),n?.logging&&console.log("Before request",s),n?.onBeforeRequest&&n?.onBeforeRequest(s);let y=o?await e(a,void 0,{...n,signal:f.signal}):await e(void 0,{...n,signal:f.signal});if(n?.afterResponse&&y?.data&&(y.data=n?.afterResponse(y.data)),n?.logging&&console.log("After request",y),n?.onAfterResponse&&n?.onAfterResponse(y),g(false),C(y),b(false),n?.cache&&y.status){let h=j__default.default().add(J,_).toISOString(),c={data:y,expired:h},w=await caches.open(S),E=new Response(JSON.stringify(c));await w.put(A,E);}}},[s,e,n]);V.useEffect(()=>{if(n?.refreshInterval){let l=typeof n.refreshInterval=="number"?n.refreshInterval:n.refreshInterval.value,a=typeof n.refreshInterval=="number"?"s":n.refreshInterval.unit,f=setInterval(()=>{U();},j__default.default.duration(l,a).asMilliseconds());return ()=>clearInterval(f)}return ()=>{}},[n?.refreshInterval,U]),V.useEffect(()=>{if(!n?.refetchOnWindowFocus)return;let l=()=>{U();};return window.addEventListener("focus",l),()=>{window.removeEventListener("focus",l);}},[n?.refetchOnWindowFocus,U]);let m={...x,loading:p,refresh:U,abort:()=>{T.current?.abort(),T.current=null,g(false),b(true);},clear:()=>{g(false),C(null);},response:x,isCancel:P,clone:(l,a)=>Ae(e,l,a)};return V.useEffect(()=>{let l=n?.storeName||e.__path||e.name;M(l).setState([x?.data,m]);},[x,m,n?.storeName,e]),[x?.data,m]}async function Ot(e,t=()=>{}){let r=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},r);})}var Pe=(n=>(n.POST="POST",n.PUT="PUT",n.PATCH="PATCH",n.DELETE="DELETE",n.GET="GET",n))(Pe||{}),Se=(a=>(a.number="number",a.currency="currency",a.percent="percent",a.date="date",a.dateTime="dateTime",a.month="month",a.year="year",a.time="time",a.timestamp="timestamp",a.string="string",a.textarea="textarea",a.code="code",a.password="password",a.boolean="boolean",a.toggle="toggle",a.email="email",a.phone="phone",a.url="url",a.json="json",a.file="file",a.image="image",a.array="array",a.object="object",a.enum="enum",a.user="user",a.department="department",a.status="status",a))(Se||{});var Et=(e,t,r)=>{let{format:o}=N();return t==="number"?Ue(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...r}):["date","dateTime","month","year","time"].some(s=>s===t)?Ne(e,{display:o[t]?.display,value:o[t]?.value,...r}):t==="boolean"?qe(e,r):t==="string"?we(e,r):e?.toString()??""};function qe(e,t){let r=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return r?o:s}function we(e,t){if(!q(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=Z(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:o,method:s}){if(e==null||isNaN(Number(e)))return "";let n=typeof e=="string"?parseFloat(e):e;if(s)if(typeof o=="number"){let p=Math.pow(10,o);n=Math[s](n*p)/p;}else n=Math[s](n);else if(typeof o=="number"){let p=Math.pow(10,o);n=Math.floor(n*p)/p;}let u=0;if(o==="auto"){let p=n.toString(),g=p.indexOf(".");g!==-1&&(u=p.length-g-1);}let i={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?u:o||0,maximumFractionDigits:o==="auto"?u:o||0,minimumIntegerDigits:1};return n.toLocaleString("en-US",i).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,t)}function Ne(e,{display:t,value:r}){if(!q(e))return e;let o=j__default.default(e,r);return o.isValid()?o.format(t):e}function Ft(e,{interval:t,lead:r}){let o=V.useRef(null);V.useEffect(()=>{o.current=e;},[e]),V.useEffect(()=>{let s=()=>o.current();if(r&&s(),t!==null){let n=setInterval(s,t);return ()=>clearInterval(n)}},[t]);}function Ht(e,t,r){let[o,s]=V.useState(false),n=(p,g)=>typeof e=="string"&&p===e||typeof e=="number"&&g===e,u=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),i=p=>{let{key:g,keyCode:P}=p,b=p.ctrlKey,x=p.altKey,C=p.shiftKey;if(!u(document.activeElement))if(t)if(typeof t=="string")n(g,P)&&(t==="ctrl"&&b||t==="alt"&&x||t==="shift"&&C)&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));else {let R=t.every(T=>T==="ctrl"?b:T==="alt"?x:T==="shift"?C:false);n(g,P)&&R&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));}else n(g,P)&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));},d=({key:p,keyCode:g})=>{n(p,g)&&s(false);};return V.useEffect(()=>(window.addEventListener("keydown",i),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",i),window.removeEventListener("keyup",d);}),[]),o}var Vt=({url:e,token:t,beforeRequest:r,onCallback:o,headers:s,onUnauthorized:n,handleToast:u,handleAuthorization:i,disabledToastWhenCancel:d,withCredentials:p,encryptRequest:g,encryptResponse:P,passphrase:b})=>{let{encrypt:x,decrypt:C,passphrase:R}=F(),T=(m,l,a,f)=>{let y=f?.code==="ERR_CANCELED",h=m.status===401,c=m?.data;if((typeof a?.encryptResponse=="boolean"?a?.encryptResponse:P)&&c){let v=a?.passphrase?typeof a.passphrase=="boolean"&&a.passphrase?R:a.passphrase:b;try{c=C(c,v);}catch{try{c=C(c,R);}catch{}}}let D={...o({...m,data:c,isCancel:y,isUnauthorization:h},f),isCancel:y,isUnauthorization:h,httpCode:m.status},B=typeof a?.disabledToastWhenCancel=="boolean"?a?.disabledToastWhenCancel:d,fe=i?i(D,a):!h;if((a?.infoSuccess&&D.status||a?.infoError&&!D.status)&&u&&(!y||!B)&&u(D),!fe&&(!y||!a?.disabledHandleUnauthorized)){let v=a?.onUnauthorized||n;v&&v(D);}if(l)l(D);else return D},S=(m,l=()=>{})=>Ke__default.default.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(f=>l(f.response,f)),A=(m,l,a,f,y)=>{let c={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...y},w={"Content-Type":"application/json",...s,...c.headers};if(c.token&&(typeof c.token=="boolean"?t&&(w.Authorization=`Bearer ${t}`):c.token&&(w.Authorization=`Bearer ${c.token}`)),r&&(a=r(a)),(typeof c?.encryptRequest=="boolean"?c?.encryptRequest:g)&&a){let D=y?.passphrase?typeof y.passphrase=="boolean"&&y.passphrase?R:y.passphrase:b;a=x(a,D);}return S({url:l,method:m,data:a,headers:w,responseType:c.responseType,signal:c.signal,withCredentials:c.withCredentials,onUploadProgress:D=>{c?.onUploadProgress&&c?.onUploadProgress(D);}},(D,B)=>T(D,f,c,B))};return {client:S,post:(m,l,a,f)=>A("POST",`${m}`,l,a,f),put:(m,l,a,f)=>A("PUT",`${m}`,l,a,f),patch:(m,l,a,f)=>A("PATCH",`${m}`,l,a,f),delete:(m,l,a)=>A("DELETE",`${m}`,null,l,a),get:(m,l,a)=>A("GET",`${m}`,null,l,a),upload:(m,l,a,f)=>{let y=new FormData;return Object.keys(l).forEach(h=>y.append(h,l[h])),A("POST",`${m}`,y,a,{infoSuccess:false,...f,headers:{"Content-Type":"multipart/form-data",...f?.headers}})}}};function Xt(e,t){let[r,o]=V.useState(false),[s,n]=V.useState(),[u,i]=V.useState(0),d=V.useRef(null);return V.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async b=>{d.current?.abort();let x=new AbortController;d.current=x,o(true),t?.beforeRequest&&(b=t?.beforeRequest(b)),t?.logging&&console.log("Before request",b);let C={...t,signal:x.signal,onUploadProgress:T=>{let S=Math.round(T.loaded*100/(T.total||1));i(S);}},R=q(b)?await e(b,void 0,C):await e(void 0,C);t?.logging&&console.log("After response",R),n(R),o(false),i(0),R.status&&t?.onSuccess&&t?.onSuccess(R),!R.status&&t?.onError&&t?.onError(R),t?.afterResponse&&t?.afterResponse(R);},{...s,loading:r,abort:()=>{d.current?.abort(),d.current=null,o(false),i(0);},progress:u,reset:()=>{o(false),i(0),n(null);}}]}function Be(e,t){let{disableHysteresis:r=false,threshold:o=100,target:s}=t,n=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!r&&n!==void 0&&e.current<n?false:(e.current||0)>o}var He=typeof window<"u"?window:null;function Qt(e={}){let{getTrigger:t=Be,target:r=He,disableHysteresis:o=false,threshold:s=100}=e,n=V__default.default.useRef(0),[u,i]=V__default.default.useState(()=>t(n,{disableHysteresis:o,threshold:s,target:r}));return V__default.default.useEffect(()=>{let d=()=>{i(t(n,{disableHysteresis:o,threshold:s,target:r}));};if(d(),r)return r.addEventListener("scroll",d,{passive:true}),()=>{r.removeEventListener("scroll",d);}},[r,t,o,s]),u}var rr=(e,t)=>{let r=t||e.__path||e.name;return M(r).useStore()};var sr=(e,t)=>{let r=o=>e(o);return r.displayName=t,r},ar=(e,t)=>{let r={};r.others=[];let o=s=>{V__default.default.Children.forEach(s,n=>{if(V__default.default.isValidElement(n)){let u=n.type.displayName;if(t.includes(u))r[u]=n;else {let i=n;i.props?.children?o(i.props.children):r.others.push(n);}}else r.others.push(n);});};return o(e),r};function Ie(e,t=[]){let r={};for(let o in e){let s=e[o];if(typeof s=="function"){let n=s.bind(null);n.__path=[...t,o].join("."),r[o]=n;}else typeof s=="object"&&s!==null?r[o]=Ie(s,[...t,o]):r[o]=s;}return r}exports.BgsCoreProvider=ge;exports.DataTypeEnum=Se;exports.HttpMethod=Pe;exports.capitalizeWords=Z;exports.createApiHelper=Vt;exports.createElement=sr;exports.createStore=ae;exports.debounce=Ye;exports.decrypt=I;exports.decryptString=oe;exports.diffJson=We;exports.encrypt=H;exports.encryptString=ne;exports.generateCacheKey=Y;exports.generateUUID=je;exports.getFieldValue=O;exports.isArray=Ve;exports.isNotEmpty=q;exports.jsonCopy=Xe;exports.labelFormatter=X;exports.mappingUndefinedtoNull=ze;exports.renderChildren=Je;exports.sorting=_e;exports.splitElement=ar;exports.stableStringify=de;exports.summary=Ge;exports.useApiLoad=Ae;exports.useApiSend=Xt;exports.useApiStore=rr;exports.useBgsCore=N;exports.useCrypto=F;exports.useDelay=Ot;exports.useFormatted=Et;exports.useInterval=Ft;exports.useKeyPress=Ht;exports.useScrollTrigger=Qt;exports.useStorage=se;exports.wrapApi=Ie;
1
+ 'use strict';var z=require('moment'),_=require('react'),jsxRuntime=require('react/jsx-runtime'),ne=require('crypto-js/aes'),oe=require('crypto-js/pbkdf2'),he=require('crypto-js/enc-utf8'),M=require('crypto-js/enc-base64'),re=require('crypto-js/lib-typedarrays'),Ke=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var z__default=/*#__PURE__*/_interopDefault(z);var ___default=/*#__PURE__*/_interopDefault(_);var ne__default=/*#__PURE__*/_interopDefault(ne);var oe__default=/*#__PURE__*/_interopDefault(oe);var he__default=/*#__PURE__*/_interopDefault(he);var M__default=/*#__PURE__*/_interopDefault(M);var re__default=/*#__PURE__*/_interopDefault(re);var Ke__default=/*#__PURE__*/_interopDefault(Ke);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 We(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ze=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ve(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 U(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 Z={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=Z.snackCase(Z.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 w=(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=w(r,t)?w(r,t):"",s=w(n,t)?w(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=w(r,t)?w(r,t):"",s=w(n,t)?w(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?w(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 de(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 Q(e,t){return de([t??"undefined",e??"undefined"])}function ee(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 te=_.createContext(void 0);function k(){let e=_.useContext(te);return e||{}}var ge=({children:e,value:t})=>{let r={...t};return jsxRuntime.jsx(te.Provider,{value:r,children:e})};function L(e,t){let r=re__default.default.random(16),n=re__default.default.random(16),a=oe__default.default(t,r,{keySize:256/32,iterations:1e3}),s=ne__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 $(e,t){let{salt:r,iv:n,encrypted:a}=e,s=oe__default.default(t,M__default.default.parse(r),{keySize:256/32,iterations:1e3}),p=ne__default.default.decrypt(a,s,{iv:M__default.default.parse(n)}).toString(he__default.default);return JSON.parse(p)}function se(e,t){return JSON.stringify(L(e,t))}function ae(e,t){return $(JSON.parse(e),t)}function B(){let{passphrase:e}=k();return {passphrase:e,encrypt(t,r){return L(t,r||e)},decrypt(t,r){return $(t,r||e)},encryptString(t,r){return se(t,r||e)},decryptString(t,r){return ae(t,r||e)}}}var ie=()=>{let{encrypt:e,decrypt:t}=B(),r=_.useCallback((o,p)=>{try{let c=e(p);localStorage.setItem(o,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[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,c]=_.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=R=>{if(R.key===o)if(R.newValue)try{c(t(JSON.parse(R.newValue)));}catch(x){console.error("Decrypt error from storage event",x);}else c(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 pe(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(c=>c());}function o(p){return _.useSyncExternalStore(a,()=>p?p(t):t,()=>p?p(t):t)}return {getSnapshot:n,subscribe:a,setState:s,useStore:o}}var W=new Map;function H(e){return W.has(e)||W.set(e,pe([null,{}])),W.get(e)}function Ae(e,t,r){let n=arguments.length===3,a=e.__path||e.name,s=n?t:void 0,o=n?r:t,{storageKey:p,cache:c}=k(),l=ie(),[R,x]=_.useState(false),[C,O]=_.useState(false),[D,b]=_.useState(),A=_.useRef(void 0),q=_.useRef(null),{cacheName:S,cacheKey:E,timeout:G,timeoutUnit:X,persistence:Y,cacheEnabled:I}=_.useMemo(()=>{let f=p?l.get(p):void 0,d=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,h=Q({...s,session:f},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),u=false;typeof c?.enabled=="boolean"&&(u=c.enabled);let P=false;typeof c?.persistence=="boolean"&&(P=c?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(P=o?.cache?.persistence??false);let T=60*5,y="s";return U(c?.timeout)&&(typeof c?.timeout=="number"?(T=c.timeout,y="s"):typeof c?.timeout=="object"&&(T=c?.timeout.value,y=c?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?u=o.cache.enabled:u=true,typeof o.cache.timeout=="number"?(T=o.cache.timeout,y="s"):typeof o.cache.timeout=="object"&&(T=o.cache.timeout.value,y=o.cache.timeout.unit)):u=o.cache),{cacheName:d,cacheKey:h,timeout:T,timeoutUnit:y,persistence:P,cacheEnabled:u}},[o?.cache,p,c]);_.useEffect(()=>{let f=JSON.stringify(U(A.current)?A.current:""),d=JSON.stringify(U(s)?s:""),h=A.current===void 0;(f!==d||h)&&!o?.hold&&(b(null),N(),A.current=s),o?.onChange&&o?.onChange(s,i);},[s,o?.hold,...o?.trigger||[]]),_.useEffect(()=>{let f=async()=>{!Y&&S&&E&&(await caches.open(S)).delete(E);};return window.addEventListener("beforeunload",f),()=>{window.removeEventListener("beforeunload",f),q.current?.abort();}},[]);let N=_.useCallback(async f=>{let d=s;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(d=o?.beforeRequest(s)),I&&!f&&!C){x(true),o?.onBeforeRequest&&o?.onBeforeRequest(s);let h=await caches.open(S),P=await(await h.match(E))?.json();if(P){let{data:T,expired:y}=P;if(z__default.default().isAfter(y))await h.delete(E);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),x(false),b(T);return}}}if(typeof e=="function"){q.current?.abort();let h=new AbortController;q.current=h,x(true),o?.logging&&console.log("Before request",s),o?.onBeforeRequest&&o?.onBeforeRequest(s);let u=n?await e(d,void 0,{...o,signal:h.signal}):await e(void 0,{...o,signal:h.signal});if(o?.afterResponse&&u?.data&&(u.data=o?.afterResponse(u.data)),o?.logging&&console.log("After request",u),o?.onAfterResponse&&o?.onAfterResponse(u),x(false),b(u),O(false),I&&u.status){let P=z__default.default().add(G,X).toISOString(),T={data:u,expired:P},y=await caches.open(S),v=new Response(JSON.stringify(T));await y.put(E,v);}}},[s,e,o]);_.useEffect(()=>{if(o?.refreshInterval){let f=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,d=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,h=setInterval(()=>{N();},z__default.default.duration(f,d).asMilliseconds());return ()=>clearInterval(h)}return ()=>{}},[o?.refreshInterval,N]),_.useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let f=()=>{N();};return window.addEventListener("focus",f),()=>{window.removeEventListener("focus",f);}},[o?.refetchOnWindowFocus,N]);let i={...D,loading:R,refresh:N,abort:()=>{q.current?.abort(),q.current=null,x(false),O(true);},clear:()=>{x(false),b(null);},response:D,isCancel:C,clone:(f,d)=>Ae(e,f,d)};return _.useEffect(()=>{let f=o?.storeName||a;f&&H(f).setState([D?.data,i]);},[D,i,o?.storeName,e]),[D?.data,i]}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||{}),Se=(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))(Se||{});var Et=(e,t,r)=>{let{format:n}=k();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)?Ne(e,{display:n[t]?.display,value:n[t]?.value,...r}):t==="boolean"?qe(e,r):t==="string"?we(e,r):e?.toString()??""};function qe(e,t){let r=typeof e=="string"?e==="true":!!e,n=t?.trueLabel??"Yes",a=t?.falseLabel??"No";return r?n:a}function we(e,t){if(!U(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=ee(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(),R=l.indexOf(".");R!==-1&&(o=l.length-R-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 Ne(e,{display:t,value:r}){if(!U(e))return e;let n=z__default.default(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,R)=>typeof e=="string"&&l===e||typeof e=="number"&&R===e,o=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),p=l=>{let{key:R,keyCode:x}=l,C=l.ctrlKey,O=l.altKey,D=l.shiftKey;if(!o(document.activeElement))if(t)if(typeof t=="string")s(R,x)&&(t==="ctrl"&&C||t==="alt"&&O||t==="shift"&&D)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));else {let b=t.every(A=>A==="ctrl"?C:A==="alt"?O:A==="shift"?D:false);s(R,x)&&b&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));}else s(R,x)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));},c=({key:l,keyCode:R})=>{s(l,R)&&a(false);};return _.useEffect(()=>(window.addEventListener("keydown",p),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",p),window.removeEventListener("keyup",c);}),[]),n}var Vt=({url:e,token:t,beforeRequest:r,onCallback:n,headers:a,onUnauthorized:s,handleToast:o,handleAuthorization:p,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:R,encryptResponse:x,passphrase:C})=>{let{encrypt:O,decrypt:D,passphrase:b}=B(),A=(m,g,i,f)=>{let d=f?.code==="ERR_CANCELED",h=m.status===401,u=m?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:x)&&u){let F=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:C;try{u=D(u,F);}catch{try{u=D(u,b);}catch{}}}let y={...n({...m,data:u,isCancel:d,isUnauthorization:h},f),isCancel:d,isUnauthorization:h,httpCode:m.status},v=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:c,fe=p?p(y,i):!h;if((i?.infoSuccess&&y.status||i?.infoError&&!y.status)&&o&&(!d||!v)&&o(y),!fe&&(!d||!i?.disabledHandleUnauthorized)){let F=i?.onUnauthorized||s;F&&F(y);}if(g)g(y);else return y},q=(m,g=()=>{})=>Ke__default.default.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:l})(m).then(g).catch(f=>g(f.response,f)),S=(m,g,i,f,d)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...d},P={"Content-Type":"application/json",...a,...u.headers};if(u.token&&(typeof u.token=="boolean"?t&&(P.Authorization=`Bearer ${t}`):u.token&&(P.Authorization=`Bearer ${u.token}`)),r&&(i=r(i)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:R)&&i){let y=d?.passphrase?typeof d.passphrase=="boolean"&&d.passphrase?b:d.passphrase:C;i=O(i,y);}return q({url:g,method:m,data:i,headers:P,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:y=>{u?.onUploadProgress&&u?.onUploadProgress(y);}},(y,v)=>A(y,f,u,v))};return {client:q,post:(m,g,i,f)=>S("POST",`${m}`,g,i,f),put:(m,g,i,f)=>S("PUT",`${m}`,g,i,f),patch:(m,g,i,f)=>S("PATCH",`${m}`,g,i,f),delete:(m,g,i)=>S("DELETE",`${m}`,null,g,i),get:(m,g,i)=>S("GET",`${m}`,null,g,i),upload:(m,g,i,f)=>{let d=new FormData;return Object.keys(g).forEach(h=>d.append(h,g[h])),S("POST",`${m}`,d,i,{infoSuccess:false,...f,headers:{"Content-Type":"multipart/form-data",...f?.headers}})}}};function Xt(e,t){let[r,n]=_.useState(false),[a,s]=_.useState(),[o,p]=_.useState(0),c=_.useRef(null);return _.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async C=>{c.current?.abort();let O=new AbortController;c.current=O,n(true),t?.beforeRequest&&(C=t?.beforeRequest(C)),t?.logging&&console.log("Before request",C);let D={...t,signal:O.signal,onUploadProgress:A=>{let q=Math.round(A.loaded*100/(A.total||1));p(q);}},b=U(C)?await e(C,void 0,D):await e(void 0,D);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:()=>{c.current?.abort(),c.current=null,n(false),p(0);},progress:o,reset:()=>{n(false),p(0),s(null);}}]}function Be(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 He=typeof window<"u"?window:null;function Qt(e={}){let{getTrigger:t=Be,target:r=He,disableHysteresis:n=false,threshold:a=100}=e,s=___default.default.useRef(0),[o,p]=___default.default.useState(()=>t(s,{disableHysteresis:n,threshold:a,target:r}));return ___default.default.useEffect(()=>{let c=()=>{p(t(s,{disableHysteresis:n,threshold:a,target:r}));};if(c(),r)return r.addEventListener("scroll",c,{passive:true}),()=>{r.removeEventListener("scroll",c);}},[r,t,n,a]),o}var rr=(e,t)=>{let r=t||e.__path||e.name;return H(r).useStore()};var sr=(e,t)=>{let r=n=>e(n);return r.displayName=t,r},ar=(e,t)=>{let r={};r.others=[];let n=a=>{___default.default.Children.forEach(a,s=>{if(___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 Ie(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("."),r[n]=s;}else typeof a=="object"&&a!==null?r[n]=Ie(a,[...t,n]):r[n]=a;}return r}exports.BgsCoreProvider=ge;exports.DataTypeEnum=Se;exports.HttpMethod=Pe;exports.capitalizeWords=ee;exports.createApiHelper=Vt;exports.createElement=sr;exports.createStore=pe;exports.debounce=Ye;exports.decrypt=$;exports.decryptString=ae;exports.diffJson=We;exports.encrypt=L;exports.encryptString=se;exports.generateCacheKey=Q;exports.generateUUID=je;exports.getFieldValue=w;exports.isArray=Ve;exports.isNotEmpty=U;exports.jsonCopy=Xe;exports.labelFormatter=Z;exports.mappingUndefinedtoNull=ze;exports.renderChildren=Je;exports.sorting=_e;exports.splitElement=ar;exports.stableStringify=de;exports.summary=Ge;exports.useApiLoad=Ae;exports.useApiSend=Xt;exports.useApiStore=rr;exports.useBgsCore=k;exports.useCrypto=B;exports.useDelay=Ot;exports.useFormatted=Et;exports.useInterval=Ft;exports.useKeyPress=Ht;exports.useScrollTrigger=Qt;exports.useStorage=ie;exports.wrapApi=Ie;
package/dist/index.d.cts CHANGED
@@ -165,6 +165,13 @@ interface TimeoutConfig {
165
165
  unit: moment.DurationInputArg2;
166
166
  }
167
167
  interface CacheProps {
168
+ /**
169
+ * Menentukan apakah fitur cache diaktifkan atau tidak.
170
+ * Jika `false`, data tidak akan disimpan atau diambil dari cache,
171
+ * meskipun properti `cacheKey` dan `cacheName` telah diatur.
172
+ * Default: `true`
173
+ */
174
+ enabled?: boolean;
168
175
  /**
169
176
  * Nama cache yang akan digunakan sebagai container atau namespace.
170
177
  * Biasanya untuk membedakan jenis cache yang berbeda.
@@ -231,9 +238,9 @@ interface UseCallOptionsProps<DReq, DRes> extends OptionsHelper {
231
238
  onChange: (data: DReq, options: OptionsCallReturn<DReq, DRes>) => void;
232
239
  /**
233
240
  * Mengaktifkan cache untuk menyimpan respon API.
234
- * Bisa true (default pengaturan) atau objek konfigurasi `CacheProps`.
241
+ * Bisa true/false (default pengaturan dri context) atau objek konfigurasi `CacheProps`.
235
242
  */
236
- cache: true | CacheProps;
243
+ cache: boolean | CacheProps;
237
244
  /**
238
245
  * Interval auto refresh data. Bisa dalam detik atau konfigurasi TimeoutConfig.
239
246
  */
package/dist/index.d.ts CHANGED
@@ -165,6 +165,13 @@ interface TimeoutConfig {
165
165
  unit: moment.DurationInputArg2;
166
166
  }
167
167
  interface CacheProps {
168
+ /**
169
+ * Menentukan apakah fitur cache diaktifkan atau tidak.
170
+ * Jika `false`, data tidak akan disimpan atau diambil dari cache,
171
+ * meskipun properti `cacheKey` dan `cacheName` telah diatur.
172
+ * Default: `true`
173
+ */
174
+ enabled?: boolean;
168
175
  /**
169
176
  * Nama cache yang akan digunakan sebagai container atau namespace.
170
177
  * Biasanya untuk membedakan jenis cache yang berbeda.
@@ -231,9 +238,9 @@ interface UseCallOptionsProps<DReq, DRes> extends OptionsHelper {
231
238
  onChange: (data: DReq, options: OptionsCallReturn<DReq, DRes>) => void;
232
239
  /**
233
240
  * Mengaktifkan cache untuk menyimpan respon API.
234
- * Bisa true (default pengaturan) atau objek konfigurasi `CacheProps`.
241
+ * Bisa true/false (default pengaturan dri context) atau objek konfigurasi `CacheProps`.
235
242
  */
236
- cache: true | CacheProps;
243
+ cache: boolean | CacheProps;
237
244
  /**
238
245
  * Interval auto refresh data. Bisa dalam detik atau konfigurasi TimeoutConfig.
239
246
  */
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import j from'moment';import V,{createContext,useContext,useCallback,useState,useRef,useMemo,useEffect,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import te from'crypto-js/aes';import re from'crypto-js/pbkdf2';import he from'crypto-js/enc-utf8';import K from'crypto-js/enc-base64';import ee from'crypto-js/lib-typedarrays';import Ke 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 We(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ze=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ve(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 q(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 X={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,(o,s)=>s.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=X.snackCase(X.camelCase(e)),t&&(r=r?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return r?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var O=(e,t,r="")=>{if(!e)return r;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let n of o){if(s==null)return r;s=s[n];}return s===void 0?r:s},_e={desc:(e,t)=>(e||(e=[]),e.sort((r,o)=>{if(t){let s=O(r,t)?O(r,t):"",n=O(o,t)?O(r,t):"";return s<n?1:-1}else return r<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((r,o)=>{if(t){let s=O(r,t)?O(r,t):"",n=O(o,t)?O(o,t):"";return s>n?1:-1}else return r>o?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let r=[];return r=e.map(o=>Number(t?O(o,t)||0:o||0)),r.reduce((o,s)=>(o||0)+(s||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function de(e){let t=new WeakSet;return JSON.stringify(e,function(r,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,n)=>(s[n]=o[n],s),{})):o})??""}function Y(e,t){return de([t??"undefined",e??"undefined"])}function Z(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let r;return function(...o){clearTimeout(r),r=setTimeout(()=>{e(...o);},t*1e3);}}var Q=createContext(void 0);function N(){let e=useContext(Q);return e||{}}var ge=({children:e,value:t})=>{let r={...t};return jsx(Q.Provider,{value:r,children:e})};function H(e,t){let r=ee.random(16),o=ee.random(16),s=re(t,r,{keySize:256/32,iterations:1e3}),n=te.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:r.toString(K),iv:o.toString(K),encrypted:n}}function I(e,t){let{salt:r,iv:o,encrypted:s}=e,n=re(t,K.parse(r),{keySize:256/32,iterations:1e3}),i=te.decrypt(s,n,{iv:K.parse(o)}).toString(he);return JSON.parse(i)}function ne(e,t){return JSON.stringify(H(e,t))}function oe(e,t){return I(JSON.parse(e),t)}function F(){let{passphrase:e}=N();return {passphrase:e,encrypt(t,r){return H(t,r||e)},decrypt(t,r){return I(t,r||e)},encryptString(t,r){return ne(t,r||e)},decryptString(t,r){return oe(t,r||e)}}}var se=()=>{let{encrypt:e,decrypt:t}=F(),r=useCallback((u,i)=>{try{let d=e(i);localStorage.setItem(u,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),o=useCallback(u=>{try{let i=localStorage.getItem(u);return i?t(JSON.parse(i)):null}catch(i){return console.error("Failed to get from storage:",i),null}},[t]),s=u=>{let[i,d]=useState(()=>{try{let p=localStorage.getItem(u);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return useEffect(()=>{let p=g=>{if(g.key===u)if(g.newValue)try{d(t(JSON.parse(g.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else d(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[u,t]),i},n=useCallback(u=>{u?localStorage.removeItem(u):localStorage.clear();},[]);return {save:r,get:o,clear:n,useWatchStorage:s}};function ae(e){let t=e,r=new Set;function o(){return t}function s(i){return r.add(i),()=>r.delete(i)}function n(i){typeof i=="function"?t=i(t):t=i,r.forEach(d=>d());}function u(i){return useSyncExternalStore(s,()=>i?i(t):t,()=>i?i(t):t)}return {getSnapshot:o,subscribe:s,setState:n,useStore:u}}var $=new Map;function M(e){return $.has(e)||$.set(e,ae([null,{}])),$.get(e)}function Ae(e,t,r){let o=arguments.length===3,s=o?t:void 0,n=o?r:t,{storageKey:u,cache:i}=N(),d=se(),[p,g]=useState(false),[P,b]=useState(false),[x,C]=useState(),R=useRef(void 0),T=useRef(null),{cacheName:S,cacheKey:A,timeout:J,timeoutUnit:_,persistence:G}=useMemo(()=>{let l=u?d.get(u):void 0,a=typeof n?.cache=="object"?n?.cache?.cacheName??e.name:e.name,f=Y({...s,session:l},typeof n?.cache=="object"?n?.cache?.cacheKey:void 0),y=false;typeof i?.persistence=="boolean"&&(y=i?.persistence),typeof n?.cache=="object"&&typeof n?.cache?.persistence=="boolean"&&(y=n?.cache?.persistence??false);let h=60*5,c="s";return q(i?.timeout)&&(typeof i?.timeout=="number"?(h=i.timeout,c="s"):typeof i?.timeout=="object"&&(h=i?.timeout.value,c=i?.timeout.unit)),n?.cache&&typeof n.cache!="boolean"&&(typeof n.cache.timeout=="number"?(h=n.cache.timeout,c="s"):typeof n.cache.timeout=="object"&&(h=n.cache.timeout.value,c=n.cache.timeout.unit)),{cacheName:a,cacheKey:f,timeout:h,timeoutUnit:c,persistence:y}},[n?.cache,u,i]);useEffect(()=>{let l=JSON.stringify(q(R.current)?R.current:""),a=JSON.stringify(q(s)?s:""),f=R.current===void 0;(l!==a||f)&&!n?.hold&&(C(null),U(),R.current=s),n?.onChange&&n?.onChange(s,m);},[s,n?.hold,...n?.trigger||[]]),useEffect(()=>{let l=async()=>{!G&&S&&A&&(await caches.open(S)).delete(A);};return window.addEventListener("beforeunload",l),()=>{window.removeEventListener("beforeunload",l),T.current?.abort();}},[]);let U=useCallback(async l=>{let a=s;if(n?.hold&&n?.logging&&console.log("Hold active"),n?.beforeRequest&&(a=n?.beforeRequest(s)),n?.cache&&!l&&!P){g(true),n?.onBeforeRequest&&n?.onBeforeRequest(s);let f=await caches.open(S),h=await(await f.match(A))?.json();if(h){let{data:c,expired:w}=h;if(j().isAfter(w))await f.delete(A);else {n?.afterResponse&&c?.data&&(c.data=n?.afterResponse(c.data)),n?.logging&&console.log("After request: Using Cache",c),n?.onAfterResponse&&n?.onAfterResponse(c),g(false),C(c);return}}}if(typeof e=="function"){T.current?.abort();let f=new AbortController;T.current=f,g(true),n?.logging&&console.log("Before request",s),n?.onBeforeRequest&&n?.onBeforeRequest(s);let y=o?await e(a,void 0,{...n,signal:f.signal}):await e(void 0,{...n,signal:f.signal});if(n?.afterResponse&&y?.data&&(y.data=n?.afterResponse(y.data)),n?.logging&&console.log("After request",y),n?.onAfterResponse&&n?.onAfterResponse(y),g(false),C(y),b(false),n?.cache&&y.status){let h=j().add(J,_).toISOString(),c={data:y,expired:h},w=await caches.open(S),E=new Response(JSON.stringify(c));await w.put(A,E);}}},[s,e,n]);useEffect(()=>{if(n?.refreshInterval){let l=typeof n.refreshInterval=="number"?n.refreshInterval:n.refreshInterval.value,a=typeof n.refreshInterval=="number"?"s":n.refreshInterval.unit,f=setInterval(()=>{U();},j.duration(l,a).asMilliseconds());return ()=>clearInterval(f)}return ()=>{}},[n?.refreshInterval,U]),useEffect(()=>{if(!n?.refetchOnWindowFocus)return;let l=()=>{U();};return window.addEventListener("focus",l),()=>{window.removeEventListener("focus",l);}},[n?.refetchOnWindowFocus,U]);let m={...x,loading:p,refresh:U,abort:()=>{T.current?.abort(),T.current=null,g(false),b(true);},clear:()=>{g(false),C(null);},response:x,isCancel:P,clone:(l,a)=>Ae(e,l,a)};return useEffect(()=>{let l=n?.storeName||e.__path||e.name;M(l).setState([x?.data,m]);},[x,m,n?.storeName,e]),[x?.data,m]}async function Ot(e,t=()=>{}){let r=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},r);})}var Pe=(n=>(n.POST="POST",n.PUT="PUT",n.PATCH="PATCH",n.DELETE="DELETE",n.GET="GET",n))(Pe||{}),Se=(a=>(a.number="number",a.currency="currency",a.percent="percent",a.date="date",a.dateTime="dateTime",a.month="month",a.year="year",a.time="time",a.timestamp="timestamp",a.string="string",a.textarea="textarea",a.code="code",a.password="password",a.boolean="boolean",a.toggle="toggle",a.email="email",a.phone="phone",a.url="url",a.json="json",a.file="file",a.image="image",a.array="array",a.object="object",a.enum="enum",a.user="user",a.department="department",a.status="status",a))(Se||{});var Et=(e,t,r)=>{let{format:o}=N();return t==="number"?Ue(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...r}):["date","dateTime","month","year","time"].some(s=>s===t)?Ne(e,{display:o[t]?.display,value:o[t]?.value,...r}):t==="boolean"?qe(e,r):t==="string"?we(e,r):e?.toString()??""};function qe(e,t){let r=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return r?o:s}function we(e,t){if(!q(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=Z(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:o,method:s}){if(e==null||isNaN(Number(e)))return "";let n=typeof e=="string"?parseFloat(e):e;if(s)if(typeof o=="number"){let p=Math.pow(10,o);n=Math[s](n*p)/p;}else n=Math[s](n);else if(typeof o=="number"){let p=Math.pow(10,o);n=Math.floor(n*p)/p;}let u=0;if(o==="auto"){let p=n.toString(),g=p.indexOf(".");g!==-1&&(u=p.length-g-1);}let i={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?u:o||0,maximumFractionDigits:o==="auto"?u:o||0,minimumIntegerDigits:1};return n.toLocaleString("en-US",i).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,t)}function Ne(e,{display:t,value:r}){if(!q(e))return e;let o=j(e,r);return o.isValid()?o.format(t):e}function Ft(e,{interval:t,lead:r}){let o=useRef(null);useEffect(()=>{o.current=e;},[e]),useEffect(()=>{let s=()=>o.current();if(r&&s(),t!==null){let n=setInterval(s,t);return ()=>clearInterval(n)}},[t]);}function Ht(e,t,r){let[o,s]=useState(false),n=(p,g)=>typeof e=="string"&&p===e||typeof e=="number"&&g===e,u=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),i=p=>{let{key:g,keyCode:P}=p,b=p.ctrlKey,x=p.altKey,C=p.shiftKey;if(!u(document.activeElement))if(t)if(typeof t=="string")n(g,P)&&(t==="ctrl"&&b||t==="alt"&&x||t==="shift"&&C)&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));else {let R=t.every(T=>T==="ctrl"?b:T==="alt"?x:T==="shift"?C:false);n(g,P)&&R&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));}else n(g,P)&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));},d=({key:p,keyCode:g})=>{n(p,g)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",i),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",i),window.removeEventListener("keyup",d);}),[]),o}var Vt=({url:e,token:t,beforeRequest:r,onCallback:o,headers:s,onUnauthorized:n,handleToast:u,handleAuthorization:i,disabledToastWhenCancel:d,withCredentials:p,encryptRequest:g,encryptResponse:P,passphrase:b})=>{let{encrypt:x,decrypt:C,passphrase:R}=F(),T=(m,l,a,f)=>{let y=f?.code==="ERR_CANCELED",h=m.status===401,c=m?.data;if((typeof a?.encryptResponse=="boolean"?a?.encryptResponse:P)&&c){let v=a?.passphrase?typeof a.passphrase=="boolean"&&a.passphrase?R:a.passphrase:b;try{c=C(c,v);}catch{try{c=C(c,R);}catch{}}}let D={...o({...m,data:c,isCancel:y,isUnauthorization:h},f),isCancel:y,isUnauthorization:h,httpCode:m.status},B=typeof a?.disabledToastWhenCancel=="boolean"?a?.disabledToastWhenCancel:d,fe=i?i(D,a):!h;if((a?.infoSuccess&&D.status||a?.infoError&&!D.status)&&u&&(!y||!B)&&u(D),!fe&&(!y||!a?.disabledHandleUnauthorized)){let v=a?.onUnauthorized||n;v&&v(D);}if(l)l(D);else return D},S=(m,l=()=>{})=>Ke.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(f=>l(f.response,f)),A=(m,l,a,f,y)=>{let c={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...y},w={"Content-Type":"application/json",...s,...c.headers};if(c.token&&(typeof c.token=="boolean"?t&&(w.Authorization=`Bearer ${t}`):c.token&&(w.Authorization=`Bearer ${c.token}`)),r&&(a=r(a)),(typeof c?.encryptRequest=="boolean"?c?.encryptRequest:g)&&a){let D=y?.passphrase?typeof y.passphrase=="boolean"&&y.passphrase?R:y.passphrase:b;a=x(a,D);}return S({url:l,method:m,data:a,headers:w,responseType:c.responseType,signal:c.signal,withCredentials:c.withCredentials,onUploadProgress:D=>{c?.onUploadProgress&&c?.onUploadProgress(D);}},(D,B)=>T(D,f,c,B))};return {client:S,post:(m,l,a,f)=>A("POST",`${m}`,l,a,f),put:(m,l,a,f)=>A("PUT",`${m}`,l,a,f),patch:(m,l,a,f)=>A("PATCH",`${m}`,l,a,f),delete:(m,l,a)=>A("DELETE",`${m}`,null,l,a),get:(m,l,a)=>A("GET",`${m}`,null,l,a),upload:(m,l,a,f)=>{let y=new FormData;return Object.keys(l).forEach(h=>y.append(h,l[h])),A("POST",`${m}`,y,a,{infoSuccess:false,...f,headers:{"Content-Type":"multipart/form-data",...f?.headers}})}}};function Xt(e,t){let[r,o]=useState(false),[s,n]=useState(),[u,i]=useState(0),d=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async b=>{d.current?.abort();let x=new AbortController;d.current=x,o(true),t?.beforeRequest&&(b=t?.beforeRequest(b)),t?.logging&&console.log("Before request",b);let C={...t,signal:x.signal,onUploadProgress:T=>{let S=Math.round(T.loaded*100/(T.total||1));i(S);}},R=q(b)?await e(b,void 0,C):await e(void 0,C);t?.logging&&console.log("After response",R),n(R),o(false),i(0),R.status&&t?.onSuccess&&t?.onSuccess(R),!R.status&&t?.onError&&t?.onError(R),t?.afterResponse&&t?.afterResponse(R);},{...s,loading:r,abort:()=>{d.current?.abort(),d.current=null,o(false),i(0);},progress:u,reset:()=>{o(false),i(0),n(null);}}]}function Be(e,t){let{disableHysteresis:r=false,threshold:o=100,target:s}=t,n=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!r&&n!==void 0&&e.current<n?false:(e.current||0)>o}var He=typeof window<"u"?window:null;function Qt(e={}){let{getTrigger:t=Be,target:r=He,disableHysteresis:o=false,threshold:s=100}=e,n=V.useRef(0),[u,i]=V.useState(()=>t(n,{disableHysteresis:o,threshold:s,target:r}));return V.useEffect(()=>{let d=()=>{i(t(n,{disableHysteresis:o,threshold:s,target:r}));};if(d(),r)return r.addEventListener("scroll",d,{passive:true}),()=>{r.removeEventListener("scroll",d);}},[r,t,o,s]),u}var rr=(e,t)=>{let r=t||e.__path||e.name;return M(r).useStore()};var sr=(e,t)=>{let r=o=>e(o);return r.displayName=t,r},ar=(e,t)=>{let r={};r.others=[];let o=s=>{V.Children.forEach(s,n=>{if(V.isValidElement(n)){let u=n.type.displayName;if(t.includes(u))r[u]=n;else {let i=n;i.props?.children?o(i.props.children):r.others.push(n);}}else r.others.push(n);});};return o(e),r};function Ie(e,t=[]){let r={};for(let o in e){let s=e[o];if(typeof s=="function"){let n=s.bind(null);n.__path=[...t,o].join("."),r[o]=n;}else typeof s=="object"&&s!==null?r[o]=Ie(s,[...t,o]):r[o]=s;}return r}export{ge as BgsCoreProvider,Se as DataTypeEnum,Pe as HttpMethod,Z as capitalizeWords,Vt as createApiHelper,sr as createElement,ae as createStore,Ye as debounce,I as decrypt,oe as decryptString,We as diffJson,H as encrypt,ne as encryptString,Y as generateCacheKey,je as generateUUID,O as getFieldValue,Ve as isArray,q as isNotEmpty,Xe as jsonCopy,X as labelFormatter,ze as mappingUndefinedtoNull,Je as renderChildren,_e as sorting,ar as splitElement,de as stableStringify,Ge as summary,Ae as useApiLoad,Xt as useApiSend,rr as useApiStore,N as useBgsCore,F as useCrypto,Ot as useDelay,Et as useFormatted,Ft as useInterval,Ht as useKeyPress,Qt as useScrollTrigger,se as useStorage,Ie as wrapApi};
1
+ import z from'moment';import _,{createContext,useContext,useCallback,useState,useRef,useMemo,useEffect,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import ne from'crypto-js/aes';import oe from'crypto-js/pbkdf2';import he from'crypto-js/enc-utf8';import M from'crypto-js/enc-base64';import re from'crypto-js/lib-typedarrays';import Ke 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 We(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ze=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ve(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 U(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 Z={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=Z.snackCase(Z.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 w=(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=w(r,t)?w(r,t):"",s=w(n,t)?w(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=w(r,t)?w(r,t):"",s=w(n,t)?w(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?w(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 de(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 Q(e,t){return de([t??"undefined",e??"undefined"])}function ee(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 te=createContext(void 0);function k(){let e=useContext(te);return e||{}}var ge=({children:e,value:t})=>{let r={...t};return jsx(te.Provider,{value:r,children:e})};function L(e,t){let r=re.random(16),n=re.random(16),a=oe(t,r,{keySize:256/32,iterations:1e3}),s=ne.encrypt(JSON.stringify(e),a,{iv:n}).toString();return {salt:r.toString(M),iv:n.toString(M),encrypted:s}}function $(e,t){let{salt:r,iv:n,encrypted:a}=e,s=oe(t,M.parse(r),{keySize:256/32,iterations:1e3}),p=ne.decrypt(a,s,{iv:M.parse(n)}).toString(he);return JSON.parse(p)}function se(e,t){return JSON.stringify(L(e,t))}function ae(e,t){return $(JSON.parse(e),t)}function B(){let{passphrase:e}=k();return {passphrase:e,encrypt(t,r){return L(t,r||e)},decrypt(t,r){return $(t,r||e)},encryptString(t,r){return se(t,r||e)},decryptString(t,r){return ae(t,r||e)}}}var ie=()=>{let{encrypt:e,decrypt:t}=B(),r=useCallback((o,p)=>{try{let c=e(p);localStorage.setItem(o,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[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,c]=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=R=>{if(R.key===o)if(R.newValue)try{c(t(JSON.parse(R.newValue)));}catch(x){console.error("Decrypt error from storage event",x);}else c(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 pe(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(c=>c());}function o(p){return useSyncExternalStore(a,()=>p?p(t):t,()=>p?p(t):t)}return {getSnapshot:n,subscribe:a,setState:s,useStore:o}}var W=new Map;function H(e){return W.has(e)||W.set(e,pe([null,{}])),W.get(e)}function Ae(e,t,r){let n=arguments.length===3,a=e.__path||e.name,s=n?t:void 0,o=n?r:t,{storageKey:p,cache:c}=k(),l=ie(),[R,x]=useState(false),[C,O]=useState(false),[D,b]=useState(),A=useRef(void 0),q=useRef(null),{cacheName:S,cacheKey:E,timeout:G,timeoutUnit:X,persistence:Y,cacheEnabled:I}=useMemo(()=>{let f=p?l.get(p):void 0,d=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,h=Q({...s,session:f},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),u=false;typeof c?.enabled=="boolean"&&(u=c.enabled);let P=false;typeof c?.persistence=="boolean"&&(P=c?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(P=o?.cache?.persistence??false);let T=60*5,y="s";return U(c?.timeout)&&(typeof c?.timeout=="number"?(T=c.timeout,y="s"):typeof c?.timeout=="object"&&(T=c?.timeout.value,y=c?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?u=o.cache.enabled:u=true,typeof o.cache.timeout=="number"?(T=o.cache.timeout,y="s"):typeof o.cache.timeout=="object"&&(T=o.cache.timeout.value,y=o.cache.timeout.unit)):u=o.cache),{cacheName:d,cacheKey:h,timeout:T,timeoutUnit:y,persistence:P,cacheEnabled:u}},[o?.cache,p,c]);useEffect(()=>{let f=JSON.stringify(U(A.current)?A.current:""),d=JSON.stringify(U(s)?s:""),h=A.current===void 0;(f!==d||h)&&!o?.hold&&(b(null),N(),A.current=s),o?.onChange&&o?.onChange(s,i);},[s,o?.hold,...o?.trigger||[]]),useEffect(()=>{let f=async()=>{!Y&&S&&E&&(await caches.open(S)).delete(E);};return window.addEventListener("beforeunload",f),()=>{window.removeEventListener("beforeunload",f),q.current?.abort();}},[]);let N=useCallback(async f=>{let d=s;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(d=o?.beforeRequest(s)),I&&!f&&!C){x(true),o?.onBeforeRequest&&o?.onBeforeRequest(s);let h=await caches.open(S),P=await(await h.match(E))?.json();if(P){let{data:T,expired:y}=P;if(z().isAfter(y))await h.delete(E);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),x(false),b(T);return}}}if(typeof e=="function"){q.current?.abort();let h=new AbortController;q.current=h,x(true),o?.logging&&console.log("Before request",s),o?.onBeforeRequest&&o?.onBeforeRequest(s);let u=n?await e(d,void 0,{...o,signal:h.signal}):await e(void 0,{...o,signal:h.signal});if(o?.afterResponse&&u?.data&&(u.data=o?.afterResponse(u.data)),o?.logging&&console.log("After request",u),o?.onAfterResponse&&o?.onAfterResponse(u),x(false),b(u),O(false),I&&u.status){let P=z().add(G,X).toISOString(),T={data:u,expired:P},y=await caches.open(S),v=new Response(JSON.stringify(T));await y.put(E,v);}}},[s,e,o]);useEffect(()=>{if(o?.refreshInterval){let f=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,d=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,h=setInterval(()=>{N();},z.duration(f,d).asMilliseconds());return ()=>clearInterval(h)}return ()=>{}},[o?.refreshInterval,N]),useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let f=()=>{N();};return window.addEventListener("focus",f),()=>{window.removeEventListener("focus",f);}},[o?.refetchOnWindowFocus,N]);let i={...D,loading:R,refresh:N,abort:()=>{q.current?.abort(),q.current=null,x(false),O(true);},clear:()=>{x(false),b(null);},response:D,isCancel:C,clone:(f,d)=>Ae(e,f,d)};return useEffect(()=>{let f=o?.storeName||a;f&&H(f).setState([D?.data,i]);},[D,i,o?.storeName,e]),[D?.data,i]}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||{}),Se=(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))(Se||{});var Et=(e,t,r)=>{let{format:n}=k();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)?Ne(e,{display:n[t]?.display,value:n[t]?.value,...r}):t==="boolean"?qe(e,r):t==="string"?we(e,r):e?.toString()??""};function qe(e,t){let r=typeof e=="string"?e==="true":!!e,n=t?.trueLabel??"Yes",a=t?.falseLabel??"No";return r?n:a}function we(e,t){if(!U(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=ee(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(),R=l.indexOf(".");R!==-1&&(o=l.length-R-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 Ne(e,{display:t,value:r}){if(!U(e))return e;let n=z(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,R)=>typeof e=="string"&&l===e||typeof e=="number"&&R===e,o=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),p=l=>{let{key:R,keyCode:x}=l,C=l.ctrlKey,O=l.altKey,D=l.shiftKey;if(!o(document.activeElement))if(t)if(typeof t=="string")s(R,x)&&(t==="ctrl"&&C||t==="alt"&&O||t==="shift"&&D)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));else {let b=t.every(A=>A==="ctrl"?C:A==="alt"?O:A==="shift"?D:false);s(R,x)&&b&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));}else s(R,x)&&(l.preventDefault(),r&&l.stopPropagation(),a(!n));},c=({key:l,keyCode:R})=>{s(l,R)&&a(false);};return useEffect(()=>(window.addEventListener("keydown",p),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",p),window.removeEventListener("keyup",c);}),[]),n}var Vt=({url:e,token:t,beforeRequest:r,onCallback:n,headers:a,onUnauthorized:s,handleToast:o,handleAuthorization:p,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:R,encryptResponse:x,passphrase:C})=>{let{encrypt:O,decrypt:D,passphrase:b}=B(),A=(m,g,i,f)=>{let d=f?.code==="ERR_CANCELED",h=m.status===401,u=m?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:x)&&u){let F=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:C;try{u=D(u,F);}catch{try{u=D(u,b);}catch{}}}let y={...n({...m,data:u,isCancel:d,isUnauthorization:h},f),isCancel:d,isUnauthorization:h,httpCode:m.status},v=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:c,fe=p?p(y,i):!h;if((i?.infoSuccess&&y.status||i?.infoError&&!y.status)&&o&&(!d||!v)&&o(y),!fe&&(!d||!i?.disabledHandleUnauthorized)){let F=i?.onUnauthorized||s;F&&F(y);}if(g)g(y);else return y},q=(m,g=()=>{})=>Ke.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:l})(m).then(g).catch(f=>g(f.response,f)),S=(m,g,i,f,d)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...d},P={"Content-Type":"application/json",...a,...u.headers};if(u.token&&(typeof u.token=="boolean"?t&&(P.Authorization=`Bearer ${t}`):u.token&&(P.Authorization=`Bearer ${u.token}`)),r&&(i=r(i)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:R)&&i){let y=d?.passphrase?typeof d.passphrase=="boolean"&&d.passphrase?b:d.passphrase:C;i=O(i,y);}return q({url:g,method:m,data:i,headers:P,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:y=>{u?.onUploadProgress&&u?.onUploadProgress(y);}},(y,v)=>A(y,f,u,v))};return {client:q,post:(m,g,i,f)=>S("POST",`${m}`,g,i,f),put:(m,g,i,f)=>S("PUT",`${m}`,g,i,f),patch:(m,g,i,f)=>S("PATCH",`${m}`,g,i,f),delete:(m,g,i)=>S("DELETE",`${m}`,null,g,i),get:(m,g,i)=>S("GET",`${m}`,null,g,i),upload:(m,g,i,f)=>{let d=new FormData;return Object.keys(g).forEach(h=>d.append(h,g[h])),S("POST",`${m}`,d,i,{infoSuccess:false,...f,headers:{"Content-Type":"multipart/form-data",...f?.headers}})}}};function Xt(e,t){let[r,n]=useState(false),[a,s]=useState(),[o,p]=useState(0),c=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async C=>{c.current?.abort();let O=new AbortController;c.current=O,n(true),t?.beforeRequest&&(C=t?.beforeRequest(C)),t?.logging&&console.log("Before request",C);let D={...t,signal:O.signal,onUploadProgress:A=>{let q=Math.round(A.loaded*100/(A.total||1));p(q);}},b=U(C)?await e(C,void 0,D):await e(void 0,D);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:()=>{c.current?.abort(),c.current=null,n(false),p(0);},progress:o,reset:()=>{n(false),p(0),s(null);}}]}function Be(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 He=typeof window<"u"?window:null;function Qt(e={}){let{getTrigger:t=Be,target:r=He,disableHysteresis:n=false,threshold:a=100}=e,s=_.useRef(0),[o,p]=_.useState(()=>t(s,{disableHysteresis:n,threshold:a,target:r}));return _.useEffect(()=>{let c=()=>{p(t(s,{disableHysteresis:n,threshold:a,target:r}));};if(c(),r)return r.addEventListener("scroll",c,{passive:true}),()=>{r.removeEventListener("scroll",c);}},[r,t,n,a]),o}var rr=(e,t)=>{let r=t||e.__path||e.name;return H(r).useStore()};var sr=(e,t)=>{let r=n=>e(n);return r.displayName=t,r},ar=(e,t)=>{let r={};r.others=[];let n=a=>{_.Children.forEach(a,s=>{if(_.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 Ie(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("."),r[n]=s;}else typeof a=="object"&&a!==null?r[n]=Ie(a,[...t,n]):r[n]=a;}return r}export{ge as BgsCoreProvider,Se as DataTypeEnum,Pe as HttpMethod,ee as capitalizeWords,Vt as createApiHelper,sr as createElement,pe as createStore,Ye as debounce,$ as decrypt,ae as decryptString,We as diffJson,L as encrypt,se as encryptString,Q as generateCacheKey,je as generateUUID,w as getFieldValue,Ve as isArray,U as isNotEmpty,Xe as jsonCopy,Z as labelFormatter,ze as mappingUndefinedtoNull,Je as renderChildren,_e as sorting,ar as splitElement,de as stableStringify,Ge as summary,Ae as useApiLoad,Xt as useApiSend,rr as useApiStore,k as useBgsCore,B as useCrypto,Ot as useDelay,Et as useFormatted,Ft as useInterval,Ht as useKeyPress,Qt as useScrollTrigger,ie as useStorage,Ie as wrapApi};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgscore/react-core",
3
- "version": "0.0.15",
3
+ "version": "0.0.16",
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",