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