@bgscore/react-core 0.0.56 → 0.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var re=require('react'),U=require('dayjs'),Ce=require('dayjs/plugin/utc'),Ae=require('dayjs/plugin/timezone'),De=require('dayjs/plugin/duration'),Pe=require('dayjs/plugin/advancedFormat'),Se=require('dayjs/plugin/localizedFormat'),Oe=require('dayjs/plugin/relativeTime'),we=require('dayjs/plugin/isSameOrBefore'),qe=require('dayjs/plugin/isSameOrAfter'),Ue=require('dayjs/plugin/weekOfYear'),ve=require('dayjs/plugin/customParseFormat'),jsxRuntime=require('react/jsx-runtime'),fe=require('crypto-js/aes'),de=require('crypto-js/pbkdf2'),Le=require('crypto-js/enc-utf8'),z=require('crypto-js/enc-base64'),ue=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),shallow=require('zustand/react/shallow'),Qe=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var re__default=/*#__PURE__*/_interopDefault(re);var U__default=/*#__PURE__*/_interopDefault(U);var Ce__default=/*#__PURE__*/_interopDefault(Ce);var Ae__default=/*#__PURE__*/_interopDefault(Ae);var De__default=/*#__PURE__*/_interopDefault(De);var Pe__default=/*#__PURE__*/_interopDefault(Pe);var Se__default=/*#__PURE__*/_interopDefault(Se);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var we__default=/*#__PURE__*/_interopDefault(we);var qe__default=/*#__PURE__*/_interopDefault(qe);var Ue__default=/*#__PURE__*/_interopDefault(Ue);var ve__default=/*#__PURE__*/_interopDefault(ve);var fe__default=/*#__PURE__*/_interopDefault(fe);var de__default=/*#__PURE__*/_interopDefault(de);var Le__default=/*#__PURE__*/_interopDefault(Le);var z__default=/*#__PURE__*/_interopDefault(z);var ue__default=/*#__PURE__*/_interopDefault(ue);var Qe__default=/*#__PURE__*/_interopDefault(Qe);function pt(){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 ct(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ut=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function ft(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 M(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 ie={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=ie.snackCase(ie.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function dt(e,t){return typeof e=="function"?e(t):e}var k=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},mt={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(n,t):"";return s<a?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},yt=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?k(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function gt(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 le(e,t){return Te([t??"undefined",e??"undefined"])}function pe(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);}}U__default.default.extend(Ce__default.default);U__default.default.extend(Ae__default.default);U__default.default.extend(De__default.default);U__default.default.extend(Pe__default.default);U__default.default.extend(Se__default.default);U__default.default.extend(Oe__default.default);U__default.default.extend(we__default.default);U__default.default.extend(qe__default.default);U__default.default.extend(Ue__default.default);U__default.default.extend(ve__default.default);var E=U__default.default;var ce=re.createContext(void 0);function B(){let e=re.useContext(ce);return e||{}}var Ke=({children:e,value:t})=>{let n={...t};return re.useEffect(()=>{(async()=>{if(!(typeof window>"u")&&t.localeConfig){let{preset:s,object:a,isLocal:p}=t.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&E.locale(s,a??{},p);}})();},[t.localeConfig]),jsxRuntime.jsx(ce.Provider,{value:n,children:e})};function G(e,t){let n=ue__default.default.random(16),o=ue__default.default.random(16),s=de__default.default(t,n,{keySize:256/32,iterations:1e3}),a=fe__default.default.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(z__default.default),iv:o.toString(z__default.default),encrypted:a}}function Y(e,t){let{salt:n,iv:o,encrypted:s}=e,a=de__default.default(t,z__default.default.parse(n),{keySize:256/32,iterations:1e3}),r=fe__default.default.decrypt(s,a,{iv:z__default.default.parse(o)}).toString(Le__default.default);return JSON.parse(r)}function me(e,t){return JSON.stringify(G(e,t))}function ye(e,t){return Y(JSON.parse(e),t)}function J(){let{passphrase:e}=B();return {passphrase:e,encrypt(t,n){return G(t,n||e)},decrypt(t,n){return Y(t,n||e)},encryptString(t,n){return me(t,n||e)},decryptString(t,n){return ye(t,n||e)}}}var ge=()=>{let{encrypt:e,decrypt:t}=J(),n=re.useCallback((p,r)=>{try{let c=e(r);localStorage.setItem(p,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[e]),o=re.useCallback(p=>{try{let r=localStorage.getItem(p);return r?t(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[t]),s=p=>{let[r,c]=re.useState(()=>{try{let l=localStorage.getItem(p);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return re.useEffect(()=>{let l=m=>{if(m.key===p)if(m.newValue)try{c(t(JSON.parse(m.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else c(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[p,t]),r},a=re.useCallback(p=>{p?localStorage.removeItem(p):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};function Ie(e,t){for(let n in t)if(t[n]!==e[n])return t}var V={loading:false,response:void 0,isCancel:false},j=zustand.create()(e=>({states:{},updateState:(t,n)=>e(o=>{let s=o.states[t]||V,a={...s,...n};return Ie(s,a)?{states:{...o.states,[t]:a}}:o})}));var Z=new Map,Re=(e,t)=>{Z.set(e,t);},he=e=>{Z.delete(e);},Xt=e=>Z.get(e);function je(...e){let[t,n,o]=e,s=t.__isVoid,a=t.__path||t.name,p=s?void 0:n,r=s?n:o,c=r?.storeName||a,{updateState:l}=j(),[m,P,D]=j(shallow.useShallow(u=>{let d=u.states[c]??V;return [d.loading,d.isCancel,d.response]})),{storageKey:w,cache:h,clearPreviousData:T,refetchOnWindowFocus:S}=B(),H=ge(),q=re.useRef(void 0),K=re.useRef(null),{cacheName:I,cacheKey:F,timeout:oe,timeoutUnit:se,persistence:_,cacheEnabled:y}=re.useMemo(()=>{let u=w?H.get(w):void 0,d=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=le({...p,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),g=false;typeof h?.enabled=="boolean"&&(g=h.enabled);let O=false;typeof h?.persistence=="boolean"&&(O=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(O=r?.cache?.persistence??false);let A=60*5,N="s";return M(h?.timeout)&&(typeof h?.timeout=="number"?(A=h.timeout,N="s"):typeof h?.timeout=="object"&&(A=h?.timeout.value,N=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?g=r.cache.enabled:g=true,typeof r.cache.timeout=="number"?(A=r.cache.timeout,N="s"):typeof r.cache.timeout=="object"&&(A=r.cache.timeout.value,N=r.cache.timeout.unit)):g=r.cache),{cacheName:d,cacheKey:x,timeout:A,timeoutUnit:N,persistence:O,cacheEnabled:g}},[r?.cache,p,w,h,a]);re.useEffect(()=>{let u=JSON.stringify(M(q.current)?q.current:""),d=JSON.stringify(M(p)?p:""),x=q.current===void 0;(u!==d||x)&&!r?.hold&&((r?.clearPreviousData??T)&&l(c,{response:null}),f(),q.current=p),r?.onChange&&r?.onChange(p,$);},[p,r?.clearPreviousData,T,r?.hold,...r?.trigger||[]]),re.useEffect(()=>{let u=async()=>{!_&&I&&F&&(await caches.open(I)).delete(F);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),K.current?.abort();}},[_,I,F,c,K]);let f=re.useCallback(async u=>{let d=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(d=r?.beforeRequest(p)),y&&!u&&!P){l(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let x=await caches.open(I),O=await(await x.match(F))?.json();if(O){let{data:A,expired:N}=O;if(E().isAfter(N))await x.delete(F);else {r?.afterResponse&&A?.data&&(A.data=r?.afterResponse(A.data)),r?.logging&&console.log("After request: Using Cache",A),r?.onAfterResponse&&r?.onAfterResponse(A),l(c,{loading:false,response:A});return}}}if(typeof t=="function"){K.current?.abort();let x=new AbortController;K.current=x,l(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=s?await t(void 0,{...r,signal:x.signal}):await t(d,void 0,{...r,signal:x.signal});if(r?.afterResponse&&g?.data&&(g.data=r?.afterResponse(g.data)),r?.logging&&console.log("After request",g),r?.onAfterResponse&&r?.onAfterResponse(g),l(c,{loading:false,response:g,isCancel:false}),y&&g.status){let O=E().add(oe,se).toISOString(),A={data:g,expired:O},N=await caches.open(I),ae=new Response(JSON.stringify(A));await N.put(F,ae);}}},[p,t,r,P]);re.useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,d=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},E.duration(u,d).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=re.useRef(null),{enabledRefetch:b,timeoutRefetch:C,timeoutUnitRefetch:v}=re.useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??S?.enabled??false,d=r?.refetchOnWindowFocus?.timeout??S?.timeout,x=typeof d=="number"?d:d?.value??60*5,g=typeof d=="object"?d.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:g}},[r?.refetchOnWindowFocus,S]);re.useEffect(()=>{if(!b)return;let u=E.duration(C,v).asMilliseconds(),d=()=>{let g=Date.now(),O=i.current;O!==null&&g-O>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",d),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",x);}},[b,C,v,f]);let R=re.useCallback(()=>{K.current?.abort(),K.current=null,l(c,{loading:false,isCancel:true});},[c,K]),L=re.useCallback(()=>{l(c,{loading:false,response:null});},[c]),$=re.useMemo(()=>({...D,loading:m,refresh:f,abort:R,clear:L,response:D,isCancel:P,clone:(u,d)=>je(t,u,d)}),[D,m,f,R,L,P,t]);return re.useEffect(()=>(Re(c,$),()=>{he(c);}),[$,c]),[D?.data,$]}async function pn(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||{}),We=(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))(We||{});var yn=(e,t,n)=>{let{format:o}=B();return t==="number"?_e(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Ge(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?ze(e,n):t==="string"?Je(e,n):e?.toString()??""};function ze(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function Je(e,t){if(!M(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=pe(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 _e(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 p=0;if(o==="auto"){let l=a.toString(),m=l.indexOf(".");m!==-1&&(p=l.length-m-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?p:o||0,maximumFractionDigits:o==="auto"?p: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 Ge(e,{display:t,value:n}){if(!M(e))return e;let o=E(e,n);return o.isValid()?o.format(t):e}function hn(e,{interval:t,lead:n}){let o=re.useRef(null);re.useEffect(()=>{o.current=e;},[e]),re.useEffect(()=>{let s=()=>o.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function Tn(e,t,n){let[o,s]=re.useState(false),a=(l,m)=>typeof e=="string"&&l===e||typeof e=="number"&&m===e,p=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:m,keyCode:P}=l,D=l.ctrlKey,w=l.altKey,h=l.shiftKey;if(!p(document.activeElement))if(t)if(typeof t=="string")a(m,P)&&(t==="ctrl"&&D||t==="alt"&&w||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let T=t.every(S=>S==="ctrl"?D:S==="alt"?w:S==="shift"?h:false);a(m,P)&&T&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(m,P)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},c=({key:l,keyCode:m})=>{a(l,m)&&s(false);};return re.useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var wn=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:m,encryptResponse:P,passphrase:D})=>{let{encrypt:w,decrypt:h,passphrase:T}=J(),S=(y,f,i,b)=>{let C=b?.code==="ERR_CANCELED",v=y?.status===401,R=y?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:P)&&R){let g=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?T:i.passphrase:D;try{R=h(R,g);}catch{try{R=h(R,T);}catch{}}}let u={...o({...y,data:R,isCancel:C,isUnauthorization:v},b),isCancel:C,isUnauthorization:v,httpCode:y.status},d=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:c,x=r?r(u,i):!v;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&p&&(!C||!d)&&p(u),!x&&(!C||!i?.disabledHandleUnauthorized)){let g=i?.onUnauthorized||a;g&&g(u);}if(f)f(u);else return u},H=(y,f=()=>{})=>Qe__default.default.create({baseURL:`${e}`,withCredentials:typeof y.withCredentials=="boolean"?y.withCredentials:l})(y).then(f).catch(b=>f(b.response,b)),q=(y,f,i,b,C)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...C},L={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&(L.Authorization=`Bearer ${t}`):R.token&&(L.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:m)&&i){let u=C?.passphrase?typeof C.passphrase=="boolean"&&C.passphrase?T:C.passphrase:D;i=w(i,u);}return H({url:f,method:y,data:i,headers:L,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,d)=>S(u,b,R,d))};return {client:H,post:(y,f,i,b)=>q("POST",`${y}`,f,i,b),put:(y,f,i,b)=>q("PUT",`${y}`,f,i,b),patch:(y,f,i,b)=>q("PATCH",`${y}`,f,i,b),delete:(y,f,i)=>q("DELETE",`${y}`,null,f,i),get:(y,f,i)=>q("GET",`${y}`,null,f,i),upload:(y,f,i,b)=>{let C=new FormData;return Object.keys(f).forEach(v=>C.append(v,f[v])),q("POST",`${y}`,C,i,{infoSuccess:false,...b,headers:{"Content-Type":"multipart/form-data",...b?.headers}})}}};function vn(e,t){let[n,o]=re.useState(false),[s,a]=re.useState(),[p,r]=re.useState(0),c=re.useRef(null);return re.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async D=>{c.current?.abort();let w=new AbortController;c.current=w,o(true),t?.beforeRequest&&(D=t?.beforeRequest(D)),t?.logging&&console.log("Before request",D);let h={...t,signal:w.signal,onUploadProgress:S=>{let H=Math.round(S.loaded*100/(S.total||1));r(H);}},T=e.__isVoid?await e(void 0,h):await e(D,void 0,h);t?.logging&&console.log("After response",T),a(T),o(false),r(0),T.status&&t?.onSuccess&&t?.onSuccess(T),!T.status&&t?.onError&&t?.onError(T),t?.afterResponse&&t?.afterResponse(T);},{...s,loading:n,abort:()=>{c.current?.abort(),c.current=null,o(false),r(0);},progress:p,reset:()=>{o(false),r(0),a(null);}}]}function nt(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 rt=typeof window<"u"?window:null;function En(e={}){let{getTrigger:t=nt,target:n=rt,disableHysteresis:o=false,threshold:s=100}=e,a=re__default.default.useRef(0),[p,r]=re__default.default.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return re__default.default.useEffect(()=>{let c=()=>{r(t(a,{disableHysteresis:o,threshold:s,target:n}));};if(c(),n)return n.addEventListener("scroll",c,{passive:true}),()=>{n.removeEventListener("scroll",c);}},[n,t,o,s]),p}var Hn=(e,t)=>{let n=t?.storeName||e.__path||e.name,o=t?.shallow??true,s=l=>{let m=l.states[n]??V;return {loading:m.loading,isCancel:m.isCancel,response:m.response}},{loading:a,isCancel:p,response:r}=o?j(shallow.useShallow(s)):j(s),c=re.useMemo(()=>({loading:a,isCancel:p}),[a,p,e]);return [r?.data,c]};var jn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},Vn=(e,t)=>{let n={};n.others=[];let o=s=>{re__default.default.Children.forEach(s,a=>{if(re__default.default.isValidElement(a)){let p=a.type.displayName;if(t.includes(p))n[p]=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 Jn(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(c=>c());}function p(r){let c=re.useRef(r?r(t):t);return re.useSyncExternalStore(s,()=>{let l=r?r(t):t,m=c.current;return Object.is(m,l)||(c.current=l),c.current},()=>r?r(t):t)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function lt(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]=lt(s,[...t,o]):n[o]=s;}return n}exports.BgsCoreProvider=Ke;exports.DataTypeEnum=We;exports.HttpMethod=Ve;exports.capitalizeWords=pe;exports.createApiHelper=wn;exports.createElement=jn;exports.createStore=Jn;exports.debounce=Rt;exports.decrypt=Y;exports.decryptString=ye;exports.defaultState=V;exports.diffJson=ct;exports.encrypt=G;exports.encryptString=me;exports.generateCacheKey=le;exports.generateUUID=pt;exports.getApiActions=Xt;exports.getFieldValue=k;exports.isArray=ft;exports.isNotEmpty=M;exports.jsonCopy=gt;exports.labelFormatter=ie;exports.mappingUndefinedtoNull=ut;exports.moment=E;exports.registerApi=Re;exports.renderChildren=dt;exports.sorting=mt;exports.splitElement=Vn;exports.stableStringify=Te;exports.summary=yt;exports.unregisterApi=he;exports.useApiLoad=je;exports.useApiLoadStore=j;exports.useApiSend=vn;exports.useApiStore=Hn;exports.useBgsCore=B;exports.useCrypto=J;exports.useDelay=pn;exports.useFormatted=yn;exports.useInterval=hn;exports.useKeyPress=Tn;exports.useScrollTrigger=En;exports.useStorage=ge;exports.wrapApi=lt;
1
+ 'use strict';var re=require('react'),q=require('dayjs'),Ae=require('dayjs/plugin/utc'),De=require('dayjs/plugin/timezone'),Pe=require('dayjs/plugin/duration'),Se=require('dayjs/plugin/advancedFormat'),Oe=require('dayjs/plugin/localizedFormat'),we=require('dayjs/plugin/relativeTime'),Ue=require('dayjs/plugin/isSameOrBefore'),qe=require('dayjs/plugin/isSameOrAfter'),ve=require('dayjs/plugin/weekOfYear'),Ne=require('dayjs/plugin/customParseFormat'),jsxRuntime=require('react/jsx-runtime'),fe=require('crypto-js/aes'),de=require('crypto-js/pbkdf2'),Me=require('crypto-js/enc-utf8'),z=require('crypto-js/enc-base64'),ue=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),shallow=require('zustand/react/shallow'),et=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var re__default=/*#__PURE__*/_interopDefault(re);var q__default=/*#__PURE__*/_interopDefault(q);var Ae__default=/*#__PURE__*/_interopDefault(Ae);var De__default=/*#__PURE__*/_interopDefault(De);var Pe__default=/*#__PURE__*/_interopDefault(Pe);var Se__default=/*#__PURE__*/_interopDefault(Se);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var we__default=/*#__PURE__*/_interopDefault(we);var Ue__default=/*#__PURE__*/_interopDefault(Ue);var qe__default=/*#__PURE__*/_interopDefault(qe);var ve__default=/*#__PURE__*/_interopDefault(ve);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var fe__default=/*#__PURE__*/_interopDefault(fe);var de__default=/*#__PURE__*/_interopDefault(de);var Me__default=/*#__PURE__*/_interopDefault(Me);var z__default=/*#__PURE__*/_interopDefault(z);var ue__default=/*#__PURE__*/_interopDefault(ue);var et__default=/*#__PURE__*/_interopDefault(et);function ct(){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 ut(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ft=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function dt(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 M(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 ie={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=ie.snackCase(ie.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function mt(e,t){return typeof e=="function"?e(t):e}var k=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},yt={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(n,t):"";return s<a?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},gt=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?k(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function Rt(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function Ce(e){let t=new WeakSet;return JSON.stringify(e,function(n,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function le(e,t){return Ce([t??"undefined",e??"undefined"])}function pe(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function ht(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}q__default.default.extend(Ae__default.default);q__default.default.extend(De__default.default);q__default.default.extend(Pe__default.default);q__default.default.extend(Se__default.default);q__default.default.extend(Oe__default.default);q__default.default.extend(we__default.default);q__default.default.extend(Ue__default.default);q__default.default.extend(qe__default.default);q__default.default.extend(ve__default.default);q__default.default.extend(Ne__default.default);var E=q__default.default;var ce=re.createContext(void 0);function B(){let e=re.useContext(ce);return e||{}}var Fe=({children:e,value:t})=>{let n={...t};return re.useEffect(()=>{(async()=>{if(!(typeof window>"u")&&t.localeConfig){let{preset:s,object:a,isLocal:p}=t.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&E.locale(s,a??{},p);}})();},[t.localeConfig]),jsxRuntime.jsx(ce.Provider,{value:n,children:e})};function G(e,t){let n=ue__default.default.random(16),o=ue__default.default.random(16),s=de__default.default(t,n,{keySize:256/32,iterations:1e3}),a=fe__default.default.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(z__default.default),iv:o.toString(z__default.default),encrypted:a}}function Y(e,t){let{salt:n,iv:o,encrypted:s}=e,a=de__default.default(t,z__default.default.parse(n),{keySize:256/32,iterations:1e3}),r=fe__default.default.decrypt(s,a,{iv:z__default.default.parse(o)}).toString(Me__default.default);return JSON.parse(r)}function me(e,t){return JSON.stringify(G(e,t))}function ye(e,t){return Y(JSON.parse(e),t)}function J(){let{passphrase:e}=B();return {passphrase:e,encrypt(t,n){return G(t,n||e)},decrypt(t,n){return Y(t,n||e)},encryptString(t,n){return me(t,n||e)},decryptString(t,n){return ye(t,n||e)}}}var ge=()=>{let{encrypt:e,decrypt:t}=J(),n=re.useCallback((p,r)=>{try{let c=e(r);localStorage.setItem(p,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[e]),o=re.useCallback(p=>{try{let r=localStorage.getItem(p);return r?t(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[t]),s=p=>{let[r,c]=re.useState(()=>{try{let l=localStorage.getItem(p);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return re.useEffect(()=>{let l=m=>{if(m.key===p)if(m.newValue)try{c(t(JSON.parse(m.newValue)));}catch(A){console.error("Decrypt error from storage event",A);}else c(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[p,t]),r},a=re.useCallback(p=>{p?localStorage.removeItem(p):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};function $e(e,t){for(let n in t)if(t[n]!==e[n])return t}var V={loading:false,response:void 0,isCancel:false},j=zustand.create()(e=>({states:{},updateState:(t,n)=>e(o=>{let s=o.states[t]||V,a={...s,...n};return $e(s,a)?{states:{...o.states,[t]:a}}:o})}));var Z=new Map,Re=(e,t)=>{Z.set(e,t);},he=e=>{Z.delete(e);},be=e=>Z.get(e);function Ve(...e){let[t,n,o]=e,s=t.__isVoid,a=t.__path||t.name,p=s?void 0:n,r=s?n:o,c=r?.storeName||a,{updateState:l}=j(),[m,A,C]=j(shallow.useShallow(u=>{let d=u.states[c]??V;return [d.loading,d.isCancel,d.response]})),{storageKey:S,cache:h,clearPreviousData:b,refetchOnWindowFocus:O}=B(),I=ge(),U=re.useRef(void 0),K=re.useRef(null),{cacheName:H,cacheKey:F,timeout:oe,timeoutUnit:se,persistence:_,cacheEnabled:y}=re.useMemo(()=>{let u=S?I.get(S):void 0,d=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=le({...p,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),g=false;typeof h?.enabled=="boolean"&&(g=h.enabled);let w=false;typeof h?.persistence=="boolean"&&(w=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(w=r?.cache?.persistence??false);let P=60*5,N="s";return M(h?.timeout)&&(typeof h?.timeout=="number"?(P=h.timeout,N="s"):typeof h?.timeout=="object"&&(P=h?.timeout.value,N=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?g=r.cache.enabled:g=true,typeof r.cache.timeout=="number"?(P=r.cache.timeout,N="s"):typeof r.cache.timeout=="object"&&(P=r.cache.timeout.value,N=r.cache.timeout.unit)):g=r.cache),{cacheName:d,cacheKey:x,timeout:P,timeoutUnit:N,persistence:w,cacheEnabled:g}},[r?.cache,p,S,h,a]);re.useEffect(()=>{let u=JSON.stringify(M(U.current)?U.current:""),d=JSON.stringify(M(p)?p:""),x=U.current===void 0;(u!==d||x)&&!r?.hold&&((r?.clearPreviousData??b)&&l(c,{response:null}),f(),U.current=p),r?.onChange&&r?.onChange(p,$);},[p,r?.clearPreviousData,b,r?.hold,...r?.trigger||[]]),re.useEffect(()=>{let u=async()=>{!_&&H&&F&&(await caches.open(H)).delete(F);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),K.current?.abort();}},[_,H,F,c,K]);let f=re.useCallback(async u=>{let d=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(d=r?.beforeRequest(p)),y&&!u&&!A){l(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let x=await caches.open(H),w=await(await x.match(F))?.json();if(w){let{data:P,expired:N}=w;if(E().isAfter(N))await x.delete(F);else {r?.afterResponse&&P?.data&&(P.data=r?.afterResponse(P.data)),r?.logging&&console.log("After request: Using Cache",P),r?.onAfterResponse&&r?.onAfterResponse(P),l(c,{loading:false,response:P});return}}}if(typeof t=="function"){K.current?.abort();let x=new AbortController;K.current=x,l(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=s?await t(void 0,{...r,signal:x.signal}):await t(d,void 0,{...r,signal:x.signal});if(r?.afterResponse&&g?.data&&(g.data=r?.afterResponse(g.data)),r?.logging&&console.log("After request",g),r?.onAfterResponse&&r?.onAfterResponse(g),l(c,{loading:false,response:g,isCancel:false}),y&&g.status){let w=E().add(oe,se).toISOString(),P={data:g,expired:w},N=await caches.open(H),ae=new Response(JSON.stringify(P));await N.put(F,ae);}}},[p,t,r,A]);re.useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,d=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},E.duration(u,d).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=re.useRef(null),{enabledRefetch:T,timeoutRefetch:D,timeoutUnitRefetch:v}=re.useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??O?.enabled??false,d=r?.refetchOnWindowFocus?.timeout??O?.timeout,x=typeof d=="number"?d:d?.value??60*5,g=typeof d=="object"?d.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:g}},[r?.refetchOnWindowFocus,O]);re.useEffect(()=>{if(!T)return;let u=E.duration(D,v).asMilliseconds(),d=()=>{let g=Date.now(),w=i.current;w!==null&&g-w>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",d),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",x);}},[T,D,v,f]);let R=re.useCallback(()=>{K.current?.abort(),K.current=null,l(c,{loading:false,isCancel:true});},[c,K]),L=re.useCallback(()=>{l(c,{loading:false,response:null});},[c]),$=re.useMemo(()=>({...C,loading:m,refresh:f,abort:R,clear:L,response:C,isCancel:A,clone:(u,d)=>Ve(t,u,d)}),[C,m,f,R,L,A,t]);return re.useEffect(()=>(Re(c,$),()=>{he(c);}),[$,c]),[C?.data,$]}async function pn(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var We=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(We||{}),ze=(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))(ze||{});var yn=(e,t,n)=>{let{format:o}=B();return t==="number"?Ge(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Ye(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?Je(e,n):t==="string"?_e(e,n):e?.toString()??""};function Je(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function _e(e,t){if(!M(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=pe(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 Ge(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 p=0;if(o==="auto"){let l=a.toString(),m=l.indexOf(".");m!==-1&&(p=l.length-m-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?p:o||0,maximumFractionDigits:o==="auto"?p: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 Ye(e,{display:t,value:n}){if(!M(e))return e;let o=E(e,n);return o.isValid()?o.format(t):e}function hn(e,{interval:t,lead:n}){let o=re.useRef(null);re.useEffect(()=>{o.current=e;},[e]),re.useEffect(()=>{let s=()=>o.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function xn(e,t,n){let[o,s]=re.useState(false),a=(l,m)=>typeof e=="string"&&l===e||typeof e=="number"&&m===e,p=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:m,keyCode:A}=l,C=l.ctrlKey,S=l.altKey,h=l.shiftKey;if(!p(document.activeElement))if(t)if(typeof t=="string")a(m,A)&&(t==="ctrl"&&C||t==="alt"&&S||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let b=t.every(O=>O==="ctrl"?C:O==="alt"?S:O==="shift"?h:false);a(m,A)&&b&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(m,A)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},c=({key:l,keyCode:m})=>{a(l,m)&&s(false);};return re.useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var wn=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:m,encryptResponse:A,passphrase:C})=>{let{encrypt:S,decrypt:h,passphrase:b}=J(),O=(y,f,i,T)=>{let D=T?.code==="ERR_CANCELED",v=y?.status===401,R=y?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:A)&&R){let g=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:C;try{R=h(R,g);}catch{try{R=h(R,b);}catch{}}}let u={...o({...y,data:R,isCancel:D,isUnauthorization:v},T),isCancel:D,isUnauthorization:v,httpCode:y.status},d=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:c,x=r?r(u,i):!v;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&p&&(!D||!d)&&p(u),!x&&(!D||!i?.disabledHandleUnauthorized)){let g=i?.onUnauthorized||a;g&&g(u);}if(f)f(u);else return u},I=(y,f=()=>{})=>et__default.default.create({baseURL:`${e}`,withCredentials:typeof y.withCredentials=="boolean"?y.withCredentials:l})(y).then(f).catch(T=>f(T.response,T)),U=(y,f,i,T,D)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...D},L={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&(L.Authorization=`Bearer ${t}`):R.token&&(L.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:m)&&i){let u=D?.passphrase?typeof D.passphrase=="boolean"&&D.passphrase?b:D.passphrase:C;i=S(i,u);}return I({url:f,method:y,data:i,headers:L,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,d)=>O(u,T,R,d))};return {client:I,post:(y,f,i,T)=>U("POST",`${y}`,f,i,T),put:(y,f,i,T)=>U("PUT",`${y}`,f,i,T),patch:(y,f,i,T)=>U("PATCH",`${y}`,f,i,T),delete:(y,f,i)=>U("DELETE",`${y}`,null,f,i),get:(y,f,i)=>U("GET",`${y}`,null,f,i),upload:(y,f,i,T)=>{let D=new FormData;return Object.keys(f).forEach(v=>D.append(v,f[v])),U("POST",`${y}`,D,i,{infoSuccess:false,...T,headers:{"Content-Type":"multipart/form-data",...T?.headers}})}}};function vn(e,t){let[n,o]=re.useState(false),[s,a]=re.useState(),[p,r]=re.useState(0),c=re.useRef(null);return re.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async C=>{c.current?.abort();let S=new AbortController;c.current=S,o(true),t?.beforeRequest&&(C=t?.beforeRequest(C)),t?.logging&&console.log("Before request",C);let h={...t,signal:S.signal,onUploadProgress:O=>{let I=Math.round(O.loaded*100/(O.total||1));r(I);}},b=e.__isVoid?await e(void 0,h):await e(C,void 0,h);t?.logging&&console.log("After response",b),a(b),o(false),r(0),b.status&&t?.onSuccess&&t?.onSuccess(b),!b.status&&t?.onError&&t?.onError(b),t?.afterResponse&&t?.afterResponse(b);},{...s,loading:n,abort:()=>{c.current?.abort(),c.current=null,o(false),r(0);},progress:p,reset:()=>{o(false),r(0),a(null);}}]}function rt(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 ot=typeof window<"u"?window:null;function En(e={}){let{getTrigger:t=rt,target:n=ot,disableHysteresis:o=false,threshold:s=100}=e,a=re__default.default.useRef(0),[p,r]=re__default.default.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return re__default.default.useEffect(()=>{let c=()=>{r(t(a,{disableHysteresis:o,threshold:s,target:n}));};if(c(),n)return n.addEventListener("scroll",c,{passive:true}),()=>{n.removeEventListener("scroll",c);}},[n,t,o,s]),p}var Hn=(e,t)=>{let n=t?.storeName||e.__path||e.name,o=t?.shallow??true,s=h=>{let b=h.states[n]??V;return {loading:b.loading,isCancel:b.isCancel,response:b.response}},{loading:a,isCancel:p,response:r}=o?j(shallow.useShallow(s)):j(s),{refresh:c,abort:l,clear:m,clone:A}=be(n)||{},C=re.useMemo(()=>({...r,loading:a,refresh:c,abort:l,clear:m,response:r,isCancel:p,clone:A}),[r,a,c,l,A,m,p,e]),S=[r?.data,C];return t?.selector?t.selector(S):S};var Vn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},Wn=(e,t)=>{let n={};n.others=[];let o=s=>{re__default.default.Children.forEach(s,a=>{if(re__default.default.isValidElement(a)){let p=a.type.displayName;if(t.includes(p))n[p]=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 _n(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(c=>c());}function p(r){let c=re.useRef(r?r(t):t);return re.useSyncExternalStore(s,()=>{let l=r?r(t):t,m=c.current;return Object.is(m,l)||(c.current=l),c.current},()=>r?r(t):t)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function pt(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]=pt(s,[...t,o]):n[o]=s;}return n}exports.BgsCoreProvider=Fe;exports.DataTypeEnum=ze;exports.HttpMethod=We;exports.capitalizeWords=pe;exports.createApiHelper=wn;exports.createElement=Vn;exports.createStore=_n;exports.debounce=ht;exports.decrypt=Y;exports.decryptString=ye;exports.defaultState=V;exports.diffJson=ut;exports.encrypt=G;exports.encryptString=me;exports.generateCacheKey=le;exports.generateUUID=ct;exports.getApiActions=be;exports.getFieldValue=k;exports.isArray=dt;exports.isNotEmpty=M;exports.jsonCopy=Rt;exports.labelFormatter=ie;exports.mappingUndefinedtoNull=ft;exports.moment=E;exports.registerApi=Re;exports.renderChildren=mt;exports.sorting=yt;exports.splitElement=Wn;exports.stableStringify=Ce;exports.summary=gt;exports.unregisterApi=he;exports.useApiLoad=Ve;exports.useApiLoadStore=j;exports.useApiSend=vn;exports.useApiStore=Hn;exports.useBgsCore=B;exports.useCrypto=J;exports.useDelay=pn;exports.useFormatted=yn;exports.useInterval=hn;exports.useKeyPress=xn;exports.useScrollTrigger=En;exports.useStorage=ge;exports.wrapApi=pt;
package/dist/index.d.cts CHANGED
@@ -468,18 +468,39 @@ type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : T extends
468
468
  * const store = useApiStore(api.absence.save, 'absence.save'); // pakai key manual
469
469
  * ```
470
470
  */
471
- interface UseApiStoreOptions {
471
+ /**
472
+ * Opsi tambahan untuk penggunaan hook `useApiStore`.
473
+ *
474
+ * @template T - Tipe method API (ApiMethod atau ApiMethodVoid).
475
+ * @template U - Tipe hasil akhir setelah selector diterapkan (default-nya adalah `UseCallReturnType`).
476
+ */
477
+ interface UseApiStoreOptions<T extends AnyApiMethod, U = UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>> {
472
478
  /**
473
- * Custom store name to use instead of the auto-generated one
479
+ * Nama custom untuk store.
480
+ * Jika tidak diisi, maka akan otomatis menggunakan `api.__path` atau `api.name`.
474
481
  */
475
482
  storeName?: string;
476
483
  /**
477
- * Whether to enable shallow comparison for state updates
484
+ * Menentukan apakah akan menggunakan shallow comparison (perbandingan dangkal) saat subscribe state.
485
+ * Berguna untuk mencegah rerender tidak perlu saat hanya sebagian kecil data yang berubah.
486
+ *
478
487
  * @default true
479
488
  */
480
489
  shallow?: boolean;
490
+ /**
491
+ * Fungsi selector untuk mengambil bagian tertentu dari hasil `useApiStore`.
492
+ * Sangat berguna untuk menghindari rerender besar karena hanya bagian yang dipilih yang akan dipantau.
493
+ *
494
+ * Contoh penggunaan:
495
+ * ```ts
496
+ * const loading = useApiStore(api.absence.get, {
497
+ * selector: ([, meta]) => meta.loading
498
+ * });
499
+ * ```
500
+ */
501
+ selector?: (value: UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>) => U;
481
502
  }
482
- declare const useApiStore: <T extends AnyApiMethod>(api: T, options?: UseApiStoreOptions) => UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>;
503
+ declare const useApiStore: <T extends AnyApiMethod, U = UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>>(api: T, options?: UseApiStoreOptions<T, U>) => U;
483
504
 
484
505
  type CreateElementProps<P = unknown> = {
485
506
  (element: (props: P) => React$1.JSX.Element, elementName: string): React$1.FC<P>;
package/dist/index.d.ts CHANGED
@@ -468,18 +468,39 @@ type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : T extends
468
468
  * const store = useApiStore(api.absence.save, 'absence.save'); // pakai key manual
469
469
  * ```
470
470
  */
471
- interface UseApiStoreOptions {
471
+ /**
472
+ * Opsi tambahan untuk penggunaan hook `useApiStore`.
473
+ *
474
+ * @template T - Tipe method API (ApiMethod atau ApiMethodVoid).
475
+ * @template U - Tipe hasil akhir setelah selector diterapkan (default-nya adalah `UseCallReturnType`).
476
+ */
477
+ interface UseApiStoreOptions<T extends AnyApiMethod, U = UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>> {
472
478
  /**
473
- * Custom store name to use instead of the auto-generated one
479
+ * Nama custom untuk store.
480
+ * Jika tidak diisi, maka akan otomatis menggunakan `api.__path` atau `api.name`.
474
481
  */
475
482
  storeName?: string;
476
483
  /**
477
- * Whether to enable shallow comparison for state updates
484
+ * Menentukan apakah akan menggunakan shallow comparison (perbandingan dangkal) saat subscribe state.
485
+ * Berguna untuk mencegah rerender tidak perlu saat hanya sebagian kecil data yang berubah.
486
+ *
478
487
  * @default true
479
488
  */
480
489
  shallow?: boolean;
490
+ /**
491
+ * Fungsi selector untuk mengambil bagian tertentu dari hasil `useApiStore`.
492
+ * Sangat berguna untuk menghindari rerender besar karena hanya bagian yang dipilih yang akan dipantau.
493
+ *
494
+ * Contoh penggunaan:
495
+ * ```ts
496
+ * const loading = useApiStore(api.absence.get, {
497
+ * selector: ([, meta]) => meta.loading
498
+ * });
499
+ * ```
500
+ */
501
+ selector?: (value: UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>) => U;
481
502
  }
482
- declare const useApiStore: <T extends AnyApiMethod>(api: T, options?: UseApiStoreOptions) => UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>;
503
+ declare const useApiStore: <T extends AnyApiMethod, U = UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>>(api: T, options?: UseApiStoreOptions<T, U>) => U;
483
504
 
484
505
  type CreateElementProps<P = unknown> = {
485
506
  (element: (props: P) => React$1.JSX.Element, elementName: string): React$1.FC<P>;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import re,{createContext,useContext,useEffect,useCallback,useRef,useMemo,useState,useSyncExternalStore}from'react';import U from'dayjs';import Ce from'dayjs/plugin/utc';import Ae from'dayjs/plugin/timezone';import De from'dayjs/plugin/duration';import Pe from'dayjs/plugin/advancedFormat';import Se from'dayjs/plugin/localizedFormat';import Oe from'dayjs/plugin/relativeTime';import we from'dayjs/plugin/isSameOrBefore';import qe from'dayjs/plugin/isSameOrAfter';import Ue from'dayjs/plugin/weekOfYear';import ve from'dayjs/plugin/customParseFormat';import {jsx}from'react/jsx-runtime';import fe from'crypto-js/aes';import de from'crypto-js/pbkdf2';import Le from'crypto-js/enc-utf8';import z from'crypto-js/enc-base64';import ue from'crypto-js/lib-typedarrays';import {create}from'zustand';import {useShallow}from'zustand/react/shallow';import Qe from'axios';function pt(){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 ct(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ut=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function ft(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 M(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 ie={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=ie.snackCase(ie.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function dt(e,t){return typeof e=="function"?e(t):e}var k=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},mt={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(n,t):"";return s<a?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},yt=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?k(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function gt(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 le(e,t){return Te([t??"undefined",e??"undefined"])}function pe(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);}}U.extend(Ce);U.extend(Ae);U.extend(De);U.extend(Pe);U.extend(Se);U.extend(Oe);U.extend(we);U.extend(qe);U.extend(Ue);U.extend(ve);var E=U;var ce=createContext(void 0);function B(){let e=useContext(ce);return e||{}}var Ke=({children:e,value:t})=>{let n={...t};return useEffect(()=>{(async()=>{if(!(typeof window>"u")&&t.localeConfig){let{preset:s,object:a,isLocal:p}=t.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&E.locale(s,a??{},p);}})();},[t.localeConfig]),jsx(ce.Provider,{value:n,children:e})};function G(e,t){let n=ue.random(16),o=ue.random(16),s=de(t,n,{keySize:256/32,iterations:1e3}),a=fe.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(z),iv:o.toString(z),encrypted:a}}function Y(e,t){let{salt:n,iv:o,encrypted:s}=e,a=de(t,z.parse(n),{keySize:256/32,iterations:1e3}),r=fe.decrypt(s,a,{iv:z.parse(o)}).toString(Le);return JSON.parse(r)}function me(e,t){return JSON.stringify(G(e,t))}function ye(e,t){return Y(JSON.parse(e),t)}function J(){let{passphrase:e}=B();return {passphrase:e,encrypt(t,n){return G(t,n||e)},decrypt(t,n){return Y(t,n||e)},encryptString(t,n){return me(t,n||e)},decryptString(t,n){return ye(t,n||e)}}}var ge=()=>{let{encrypt:e,decrypt:t}=J(),n=useCallback((p,r)=>{try{let c=e(r);localStorage.setItem(p,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[e]),o=useCallback(p=>{try{let r=localStorage.getItem(p);return r?t(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[t]),s=p=>{let[r,c]=useState(()=>{try{let l=localStorage.getItem(p);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return useEffect(()=>{let l=m=>{if(m.key===p)if(m.newValue)try{c(t(JSON.parse(m.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else c(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[p,t]),r},a=useCallback(p=>{p?localStorage.removeItem(p):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};function Ie(e,t){for(let n in t)if(t[n]!==e[n])return t}var V={loading:false,response:void 0,isCancel:false},j=create()(e=>({states:{},updateState:(t,n)=>e(o=>{let s=o.states[t]||V,a={...s,...n};return Ie(s,a)?{states:{...o.states,[t]:a}}:o})}));var Z=new Map,Re=(e,t)=>{Z.set(e,t);},he=e=>{Z.delete(e);},Xt=e=>Z.get(e);function je(...e){let[t,n,o]=e,s=t.__isVoid,a=t.__path||t.name,p=s?void 0:n,r=s?n:o,c=r?.storeName||a,{updateState:l}=j(),[m,P,D]=j(useShallow(u=>{let d=u.states[c]??V;return [d.loading,d.isCancel,d.response]})),{storageKey:w,cache:h,clearPreviousData:T,refetchOnWindowFocus:S}=B(),H=ge(),q=useRef(void 0),K=useRef(null),{cacheName:I,cacheKey:F,timeout:oe,timeoutUnit:se,persistence:_,cacheEnabled:y}=useMemo(()=>{let u=w?H.get(w):void 0,d=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=le({...p,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),g=false;typeof h?.enabled=="boolean"&&(g=h.enabled);let O=false;typeof h?.persistence=="boolean"&&(O=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(O=r?.cache?.persistence??false);let A=60*5,N="s";return M(h?.timeout)&&(typeof h?.timeout=="number"?(A=h.timeout,N="s"):typeof h?.timeout=="object"&&(A=h?.timeout.value,N=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?g=r.cache.enabled:g=true,typeof r.cache.timeout=="number"?(A=r.cache.timeout,N="s"):typeof r.cache.timeout=="object"&&(A=r.cache.timeout.value,N=r.cache.timeout.unit)):g=r.cache),{cacheName:d,cacheKey:x,timeout:A,timeoutUnit:N,persistence:O,cacheEnabled:g}},[r?.cache,p,w,h,a]);useEffect(()=>{let u=JSON.stringify(M(q.current)?q.current:""),d=JSON.stringify(M(p)?p:""),x=q.current===void 0;(u!==d||x)&&!r?.hold&&((r?.clearPreviousData??T)&&l(c,{response:null}),f(),q.current=p),r?.onChange&&r?.onChange(p,$);},[p,r?.clearPreviousData,T,r?.hold,...r?.trigger||[]]),useEffect(()=>{let u=async()=>{!_&&I&&F&&(await caches.open(I)).delete(F);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),K.current?.abort();}},[_,I,F,c,K]);let f=useCallback(async u=>{let d=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(d=r?.beforeRequest(p)),y&&!u&&!P){l(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let x=await caches.open(I),O=await(await x.match(F))?.json();if(O){let{data:A,expired:N}=O;if(E().isAfter(N))await x.delete(F);else {r?.afterResponse&&A?.data&&(A.data=r?.afterResponse(A.data)),r?.logging&&console.log("After request: Using Cache",A),r?.onAfterResponse&&r?.onAfterResponse(A),l(c,{loading:false,response:A});return}}}if(typeof t=="function"){K.current?.abort();let x=new AbortController;K.current=x,l(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=s?await t(void 0,{...r,signal:x.signal}):await t(d,void 0,{...r,signal:x.signal});if(r?.afterResponse&&g?.data&&(g.data=r?.afterResponse(g.data)),r?.logging&&console.log("After request",g),r?.onAfterResponse&&r?.onAfterResponse(g),l(c,{loading:false,response:g,isCancel:false}),y&&g.status){let O=E().add(oe,se).toISOString(),A={data:g,expired:O},N=await caches.open(I),ae=new Response(JSON.stringify(A));await N.put(F,ae);}}},[p,t,r,P]);useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,d=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},E.duration(u,d).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=useRef(null),{enabledRefetch:b,timeoutRefetch:C,timeoutUnitRefetch:v}=useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??S?.enabled??false,d=r?.refetchOnWindowFocus?.timeout??S?.timeout,x=typeof d=="number"?d:d?.value??60*5,g=typeof d=="object"?d.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:g}},[r?.refetchOnWindowFocus,S]);useEffect(()=>{if(!b)return;let u=E.duration(C,v).asMilliseconds(),d=()=>{let g=Date.now(),O=i.current;O!==null&&g-O>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",d),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",x);}},[b,C,v,f]);let R=useCallback(()=>{K.current?.abort(),K.current=null,l(c,{loading:false,isCancel:true});},[c,K]),L=useCallback(()=>{l(c,{loading:false,response:null});},[c]),$=useMemo(()=>({...D,loading:m,refresh:f,abort:R,clear:L,response:D,isCancel:P,clone:(u,d)=>je(t,u,d)}),[D,m,f,R,L,P,t]);return useEffect(()=>(Re(c,$),()=>{he(c);}),[$,c]),[D?.data,$]}async function pn(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||{}),We=(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))(We||{});var yn=(e,t,n)=>{let{format:o}=B();return t==="number"?_e(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Ge(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?ze(e,n):t==="string"?Je(e,n):e?.toString()??""};function ze(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function Je(e,t){if(!M(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=pe(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 _e(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 p=0;if(o==="auto"){let l=a.toString(),m=l.indexOf(".");m!==-1&&(p=l.length-m-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?p:o||0,maximumFractionDigits:o==="auto"?p: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 Ge(e,{display:t,value:n}){if(!M(e))return e;let o=E(e,n);return o.isValid()?o.format(t):e}function hn(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 Tn(e,t,n){let[o,s]=useState(false),a=(l,m)=>typeof e=="string"&&l===e||typeof e=="number"&&m===e,p=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:m,keyCode:P}=l,D=l.ctrlKey,w=l.altKey,h=l.shiftKey;if(!p(document.activeElement))if(t)if(typeof t=="string")a(m,P)&&(t==="ctrl"&&D||t==="alt"&&w||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let T=t.every(S=>S==="ctrl"?D:S==="alt"?w:S==="shift"?h:false);a(m,P)&&T&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(m,P)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},c=({key:l,keyCode:m})=>{a(l,m)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var wn=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:m,encryptResponse:P,passphrase:D})=>{let{encrypt:w,decrypt:h,passphrase:T}=J(),S=(y,f,i,b)=>{let C=b?.code==="ERR_CANCELED",v=y?.status===401,R=y?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:P)&&R){let g=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?T:i.passphrase:D;try{R=h(R,g);}catch{try{R=h(R,T);}catch{}}}let u={...o({...y,data:R,isCancel:C,isUnauthorization:v},b),isCancel:C,isUnauthorization:v,httpCode:y.status},d=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:c,x=r?r(u,i):!v;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&p&&(!C||!d)&&p(u),!x&&(!C||!i?.disabledHandleUnauthorized)){let g=i?.onUnauthorized||a;g&&g(u);}if(f)f(u);else return u},H=(y,f=()=>{})=>Qe.create({baseURL:`${e}`,withCredentials:typeof y.withCredentials=="boolean"?y.withCredentials:l})(y).then(f).catch(b=>f(b.response,b)),q=(y,f,i,b,C)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...C},L={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&(L.Authorization=`Bearer ${t}`):R.token&&(L.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:m)&&i){let u=C?.passphrase?typeof C.passphrase=="boolean"&&C.passphrase?T:C.passphrase:D;i=w(i,u);}return H({url:f,method:y,data:i,headers:L,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,d)=>S(u,b,R,d))};return {client:H,post:(y,f,i,b)=>q("POST",`${y}`,f,i,b),put:(y,f,i,b)=>q("PUT",`${y}`,f,i,b),patch:(y,f,i,b)=>q("PATCH",`${y}`,f,i,b),delete:(y,f,i)=>q("DELETE",`${y}`,null,f,i),get:(y,f,i)=>q("GET",`${y}`,null,f,i),upload:(y,f,i,b)=>{let C=new FormData;return Object.keys(f).forEach(v=>C.append(v,f[v])),q("POST",`${y}`,C,i,{infoSuccess:false,...b,headers:{"Content-Type":"multipart/form-data",...b?.headers}})}}};function vn(e,t){let[n,o]=useState(false),[s,a]=useState(),[p,r]=useState(0),c=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async D=>{c.current?.abort();let w=new AbortController;c.current=w,o(true),t?.beforeRequest&&(D=t?.beforeRequest(D)),t?.logging&&console.log("Before request",D);let h={...t,signal:w.signal,onUploadProgress:S=>{let H=Math.round(S.loaded*100/(S.total||1));r(H);}},T=e.__isVoid?await e(void 0,h):await e(D,void 0,h);t?.logging&&console.log("After response",T),a(T),o(false),r(0),T.status&&t?.onSuccess&&t?.onSuccess(T),!T.status&&t?.onError&&t?.onError(T),t?.afterResponse&&t?.afterResponse(T);},{...s,loading:n,abort:()=>{c.current?.abort(),c.current=null,o(false),r(0);},progress:p,reset:()=>{o(false),r(0),a(null);}}]}function nt(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 rt=typeof window<"u"?window:null;function En(e={}){let{getTrigger:t=nt,target:n=rt,disableHysteresis:o=false,threshold:s=100}=e,a=re.useRef(0),[p,r]=re.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return re.useEffect(()=>{let c=()=>{r(t(a,{disableHysteresis:o,threshold:s,target:n}));};if(c(),n)return n.addEventListener("scroll",c,{passive:true}),()=>{n.removeEventListener("scroll",c);}},[n,t,o,s]),p}var Hn=(e,t)=>{let n=t?.storeName||e.__path||e.name,o=t?.shallow??true,s=l=>{let m=l.states[n]??V;return {loading:m.loading,isCancel:m.isCancel,response:m.response}},{loading:a,isCancel:p,response:r}=o?j(useShallow(s)):j(s),c=useMemo(()=>({loading:a,isCancel:p}),[a,p,e]);return [r?.data,c]};var jn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},Vn=(e,t)=>{let n={};n.others=[];let o=s=>{re.Children.forEach(s,a=>{if(re.isValidElement(a)){let p=a.type.displayName;if(t.includes(p))n[p]=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 Jn(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(c=>c());}function p(r){let c=useRef(r?r(t):t);return useSyncExternalStore(s,()=>{let l=r?r(t):t,m=c.current;return Object.is(m,l)||(c.current=l),c.current},()=>r?r(t):t)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function lt(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]=lt(s,[...t,o]):n[o]=s;}return n}export{Ke as BgsCoreProvider,We as DataTypeEnum,Ve as HttpMethod,pe as capitalizeWords,wn as createApiHelper,jn as createElement,Jn as createStore,Rt as debounce,Y as decrypt,ye as decryptString,V as defaultState,ct as diffJson,G as encrypt,me as encryptString,le as generateCacheKey,pt as generateUUID,Xt as getApiActions,k as getFieldValue,ft as isArray,M as isNotEmpty,gt as jsonCopy,ie as labelFormatter,ut as mappingUndefinedtoNull,E as moment,Re as registerApi,dt as renderChildren,mt as sorting,Vn as splitElement,Te as stableStringify,yt as summary,he as unregisterApi,je as useApiLoad,j as useApiLoadStore,vn as useApiSend,Hn as useApiStore,B as useBgsCore,J as useCrypto,pn as useDelay,yn as useFormatted,hn as useInterval,Tn as useKeyPress,En as useScrollTrigger,ge as useStorage,lt as wrapApi};
1
+ import re,{createContext,useContext,useEffect,useCallback,useRef,useMemo,useState,useSyncExternalStore}from'react';import q from'dayjs';import Ae from'dayjs/plugin/utc';import De from'dayjs/plugin/timezone';import Pe from'dayjs/plugin/duration';import Se from'dayjs/plugin/advancedFormat';import Oe from'dayjs/plugin/localizedFormat';import we from'dayjs/plugin/relativeTime';import Ue from'dayjs/plugin/isSameOrBefore';import qe from'dayjs/plugin/isSameOrAfter';import ve from'dayjs/plugin/weekOfYear';import Ne from'dayjs/plugin/customParseFormat';import {jsx}from'react/jsx-runtime';import fe from'crypto-js/aes';import de from'crypto-js/pbkdf2';import Me from'crypto-js/enc-utf8';import z from'crypto-js/enc-base64';import ue from'crypto-js/lib-typedarrays';import {create}from'zustand';import {useShallow}from'zustand/react/shallow';import et from'axios';function ct(){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 ut(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ft=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function dt(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 M(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 ie={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=ie.snackCase(ie.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function mt(e,t){return typeof e=="function"?e(t):e}var k=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},yt={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(n,t):"";return s<a?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let s=k(n,t)?k(n,t):"",a=k(o,t)?k(o,t):"";return s>a?1:-1}else return n>o?1:-1}))},gt=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?k(o,t)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function Rt(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function Ce(e){let t=new WeakSet;return JSON.stringify(e,function(n,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function le(e,t){return Ce([t??"undefined",e??"undefined"])}function pe(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function ht(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}q.extend(Ae);q.extend(De);q.extend(Pe);q.extend(Se);q.extend(Oe);q.extend(we);q.extend(Ue);q.extend(qe);q.extend(ve);q.extend(Ne);var E=q;var ce=createContext(void 0);function B(){let e=useContext(ce);return e||{}}var Fe=({children:e,value:t})=>{let n={...t};return useEffect(()=>{(async()=>{if(!(typeof window>"u")&&t.localeConfig){let{preset:s,object:a,isLocal:p}=t.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&E.locale(s,a??{},p);}})();},[t.localeConfig]),jsx(ce.Provider,{value:n,children:e})};function G(e,t){let n=ue.random(16),o=ue.random(16),s=de(t,n,{keySize:256/32,iterations:1e3}),a=fe.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:n.toString(z),iv:o.toString(z),encrypted:a}}function Y(e,t){let{salt:n,iv:o,encrypted:s}=e,a=de(t,z.parse(n),{keySize:256/32,iterations:1e3}),r=fe.decrypt(s,a,{iv:z.parse(o)}).toString(Me);return JSON.parse(r)}function me(e,t){return JSON.stringify(G(e,t))}function ye(e,t){return Y(JSON.parse(e),t)}function J(){let{passphrase:e}=B();return {passphrase:e,encrypt(t,n){return G(t,n||e)},decrypt(t,n){return Y(t,n||e)},encryptString(t,n){return me(t,n||e)},decryptString(t,n){return ye(t,n||e)}}}var ge=()=>{let{encrypt:e,decrypt:t}=J(),n=useCallback((p,r)=>{try{let c=e(r);localStorage.setItem(p,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[e]),o=useCallback(p=>{try{let r=localStorage.getItem(p);return r?t(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[t]),s=p=>{let[r,c]=useState(()=>{try{let l=localStorage.getItem(p);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return useEffect(()=>{let l=m=>{if(m.key===p)if(m.newValue)try{c(t(JSON.parse(m.newValue)));}catch(A){console.error("Decrypt error from storage event",A);}else c(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[p,t]),r},a=useCallback(p=>{p?localStorage.removeItem(p):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};function $e(e,t){for(let n in t)if(t[n]!==e[n])return t}var V={loading:false,response:void 0,isCancel:false},j=create()(e=>({states:{},updateState:(t,n)=>e(o=>{let s=o.states[t]||V,a={...s,...n};return $e(s,a)?{states:{...o.states,[t]:a}}:o})}));var Z=new Map,Re=(e,t)=>{Z.set(e,t);},he=e=>{Z.delete(e);},be=e=>Z.get(e);function Ve(...e){let[t,n,o]=e,s=t.__isVoid,a=t.__path||t.name,p=s?void 0:n,r=s?n:o,c=r?.storeName||a,{updateState:l}=j(),[m,A,C]=j(useShallow(u=>{let d=u.states[c]??V;return [d.loading,d.isCancel,d.response]})),{storageKey:S,cache:h,clearPreviousData:b,refetchOnWindowFocus:O}=B(),I=ge(),U=useRef(void 0),K=useRef(null),{cacheName:H,cacheKey:F,timeout:oe,timeoutUnit:se,persistence:_,cacheEnabled:y}=useMemo(()=>{let u=S?I.get(S):void 0,d=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=le({...p,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),g=false;typeof h?.enabled=="boolean"&&(g=h.enabled);let w=false;typeof h?.persistence=="boolean"&&(w=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(w=r?.cache?.persistence??false);let P=60*5,N="s";return M(h?.timeout)&&(typeof h?.timeout=="number"?(P=h.timeout,N="s"):typeof h?.timeout=="object"&&(P=h?.timeout.value,N=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?g=r.cache.enabled:g=true,typeof r.cache.timeout=="number"?(P=r.cache.timeout,N="s"):typeof r.cache.timeout=="object"&&(P=r.cache.timeout.value,N=r.cache.timeout.unit)):g=r.cache),{cacheName:d,cacheKey:x,timeout:P,timeoutUnit:N,persistence:w,cacheEnabled:g}},[r?.cache,p,S,h,a]);useEffect(()=>{let u=JSON.stringify(M(U.current)?U.current:""),d=JSON.stringify(M(p)?p:""),x=U.current===void 0;(u!==d||x)&&!r?.hold&&((r?.clearPreviousData??b)&&l(c,{response:null}),f(),U.current=p),r?.onChange&&r?.onChange(p,$);},[p,r?.clearPreviousData,b,r?.hold,...r?.trigger||[]]),useEffect(()=>{let u=async()=>{!_&&H&&F&&(await caches.open(H)).delete(F);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),K.current?.abort();}},[_,H,F,c,K]);let f=useCallback(async u=>{let d=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(d=r?.beforeRequest(p)),y&&!u&&!A){l(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let x=await caches.open(H),w=await(await x.match(F))?.json();if(w){let{data:P,expired:N}=w;if(E().isAfter(N))await x.delete(F);else {r?.afterResponse&&P?.data&&(P.data=r?.afterResponse(P.data)),r?.logging&&console.log("After request: Using Cache",P),r?.onAfterResponse&&r?.onAfterResponse(P),l(c,{loading:false,response:P});return}}}if(typeof t=="function"){K.current?.abort();let x=new AbortController;K.current=x,l(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=s?await t(void 0,{...r,signal:x.signal}):await t(d,void 0,{...r,signal:x.signal});if(r?.afterResponse&&g?.data&&(g.data=r?.afterResponse(g.data)),r?.logging&&console.log("After request",g),r?.onAfterResponse&&r?.onAfterResponse(g),l(c,{loading:false,response:g,isCancel:false}),y&&g.status){let w=E().add(oe,se).toISOString(),P={data:g,expired:w},N=await caches.open(H),ae=new Response(JSON.stringify(P));await N.put(F,ae);}}},[p,t,r,A]);useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,d=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},E.duration(u,d).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=useRef(null),{enabledRefetch:T,timeoutRefetch:D,timeoutUnitRefetch:v}=useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??O?.enabled??false,d=r?.refetchOnWindowFocus?.timeout??O?.timeout,x=typeof d=="number"?d:d?.value??60*5,g=typeof d=="object"?d.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:g}},[r?.refetchOnWindowFocus,O]);useEffect(()=>{if(!T)return;let u=E.duration(D,v).asMilliseconds(),d=()=>{let g=Date.now(),w=i.current;w!==null&&g-w>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",d),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",x);}},[T,D,v,f]);let R=useCallback(()=>{K.current?.abort(),K.current=null,l(c,{loading:false,isCancel:true});},[c,K]),L=useCallback(()=>{l(c,{loading:false,response:null});},[c]),$=useMemo(()=>({...C,loading:m,refresh:f,abort:R,clear:L,response:C,isCancel:A,clone:(u,d)=>Ve(t,u,d)}),[C,m,f,R,L,A,t]);return useEffect(()=>(Re(c,$),()=>{he(c);}),[$,c]),[C?.data,$]}async function pn(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var We=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(We||{}),ze=(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))(ze||{});var yn=(e,t,n)=>{let{format:o}=B();return t==="number"?Ge(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Ye(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?Je(e,n):t==="string"?_e(e,n):e?.toString()??""};function Je(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?o:s}function _e(e,t){if(!M(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=pe(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 Ge(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 p=0;if(o==="auto"){let l=a.toString(),m=l.indexOf(".");m!==-1&&(p=l.length-m-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?p:o||0,maximumFractionDigits:o==="auto"?p: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 Ye(e,{display:t,value:n}){if(!M(e))return e;let o=E(e,n);return o.isValid()?o.format(t):e}function hn(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 xn(e,t,n){let[o,s]=useState(false),a=(l,m)=>typeof e=="string"&&l===e||typeof e=="number"&&m===e,p=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:m,keyCode:A}=l,C=l.ctrlKey,S=l.altKey,h=l.shiftKey;if(!p(document.activeElement))if(t)if(typeof t=="string")a(m,A)&&(t==="ctrl"&&C||t==="alt"&&S||t==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let b=t.every(O=>O==="ctrl"?C:O==="alt"?S:O==="shift"?h:false);a(m,A)&&b&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(m,A)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},c=({key:l,keyCode:m})=>{a(l,m)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var wn=({url:e,token:t,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:m,encryptResponse:A,passphrase:C})=>{let{encrypt:S,decrypt:h,passphrase:b}=J(),O=(y,f,i,T)=>{let D=T?.code==="ERR_CANCELED",v=y?.status===401,R=y?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:A)&&R){let g=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:C;try{R=h(R,g);}catch{try{R=h(R,b);}catch{}}}let u={...o({...y,data:R,isCancel:D,isUnauthorization:v},T),isCancel:D,isUnauthorization:v,httpCode:y.status},d=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:c,x=r?r(u,i):!v;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&p&&(!D||!d)&&p(u),!x&&(!D||!i?.disabledHandleUnauthorized)){let g=i?.onUnauthorized||a;g&&g(u);}if(f)f(u);else return u},I=(y,f=()=>{})=>et.create({baseURL:`${e}`,withCredentials:typeof y.withCredentials=="boolean"?y.withCredentials:l})(y).then(f).catch(T=>f(T.response,T)),U=(y,f,i,T,D)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...D},L={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?t&&(L.Authorization=`Bearer ${t}`):R.token&&(L.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:m)&&i){let u=D?.passphrase?typeof D.passphrase=="boolean"&&D.passphrase?b:D.passphrase:C;i=S(i,u);}return I({url:f,method:y,data:i,headers:L,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,d)=>O(u,T,R,d))};return {client:I,post:(y,f,i,T)=>U("POST",`${y}`,f,i,T),put:(y,f,i,T)=>U("PUT",`${y}`,f,i,T),patch:(y,f,i,T)=>U("PATCH",`${y}`,f,i,T),delete:(y,f,i)=>U("DELETE",`${y}`,null,f,i),get:(y,f,i)=>U("GET",`${y}`,null,f,i),upload:(y,f,i,T)=>{let D=new FormData;return Object.keys(f).forEach(v=>D.append(v,f[v])),U("POST",`${y}`,D,i,{infoSuccess:false,...T,headers:{"Content-Type":"multipart/form-data",...T?.headers}})}}};function vn(e,t){let[n,o]=useState(false),[s,a]=useState(),[p,r]=useState(0),c=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async C=>{c.current?.abort();let S=new AbortController;c.current=S,o(true),t?.beforeRequest&&(C=t?.beforeRequest(C)),t?.logging&&console.log("Before request",C);let h={...t,signal:S.signal,onUploadProgress:O=>{let I=Math.round(O.loaded*100/(O.total||1));r(I);}},b=e.__isVoid?await e(void 0,h):await e(C,void 0,h);t?.logging&&console.log("After response",b),a(b),o(false),r(0),b.status&&t?.onSuccess&&t?.onSuccess(b),!b.status&&t?.onError&&t?.onError(b),t?.afterResponse&&t?.afterResponse(b);},{...s,loading:n,abort:()=>{c.current?.abort(),c.current=null,o(false),r(0);},progress:p,reset:()=>{o(false),r(0),a(null);}}]}function rt(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 ot=typeof window<"u"?window:null;function En(e={}){let{getTrigger:t=rt,target:n=ot,disableHysteresis:o=false,threshold:s=100}=e,a=re.useRef(0),[p,r]=re.useState(()=>t(a,{disableHysteresis:o,threshold:s,target:n}));return re.useEffect(()=>{let c=()=>{r(t(a,{disableHysteresis:o,threshold:s,target:n}));};if(c(),n)return n.addEventListener("scroll",c,{passive:true}),()=>{n.removeEventListener("scroll",c);}},[n,t,o,s]),p}var Hn=(e,t)=>{let n=t?.storeName||e.__path||e.name,o=t?.shallow??true,s=h=>{let b=h.states[n]??V;return {loading:b.loading,isCancel:b.isCancel,response:b.response}},{loading:a,isCancel:p,response:r}=o?j(useShallow(s)):j(s),{refresh:c,abort:l,clear:m,clone:A}=be(n)||{},C=useMemo(()=>({...r,loading:a,refresh:c,abort:l,clear:m,response:r,isCancel:p,clone:A}),[r,a,c,l,A,m,p,e]),S=[r?.data,C];return t?.selector?t.selector(S):S};var Vn=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},Wn=(e,t)=>{let n={};n.others=[];let o=s=>{re.Children.forEach(s,a=>{if(re.isValidElement(a)){let p=a.type.displayName;if(t.includes(p))n[p]=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 _n(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(c=>c());}function p(r){let c=useRef(r?r(t):t);return useSyncExternalStore(s,()=>{let l=r?r(t):t,m=c.current;return Object.is(m,l)||(c.current=l),c.current},()=>r?r(t):t)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function pt(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]=pt(s,[...t,o]):n[o]=s;}return n}export{Fe as BgsCoreProvider,ze as DataTypeEnum,We as HttpMethod,pe as capitalizeWords,wn as createApiHelper,Vn as createElement,_n as createStore,ht as debounce,Y as decrypt,ye as decryptString,V as defaultState,ut as diffJson,G as encrypt,me as encryptString,le as generateCacheKey,ct as generateUUID,be as getApiActions,k as getFieldValue,dt as isArray,M as isNotEmpty,Rt as jsonCopy,ie as labelFormatter,ft as mappingUndefinedtoNull,E as moment,Re as registerApi,mt as renderChildren,yt as sorting,Wn as splitElement,Ce as stableStringify,gt as summary,he as unregisterApi,Ve as useApiLoad,j as useApiLoadStore,vn as useApiSend,Hn as useApiStore,B as useBgsCore,J as useCrypto,pn as useDelay,yn as useFormatted,hn as useInterval,xn as useKeyPress,En as useScrollTrigger,ge as useStorage,pt as wrapApi};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgscore/react-core",
3
- "version": "0.0.56",
3
+ "version": "0.0.57",
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",