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