@bgscore/react-core 0.0.65 → 0.0.66

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,3 @@
1
- 'use strict';var le=require('react'),K=require('dayjs'),ve=require('dayjs/plugin/utc'),ke=require('dayjs/plugin/timezone'),Ee=require('dayjs/plugin/duration'),Ne=require('dayjs/plugin/advancedFormat'),Ke=require('dayjs/plugin/localizedFormat'),Me=require('dayjs/plugin/relativeTime'),Fe=require('dayjs/plugin/isSameOrBefore'),Le=require('dayjs/plugin/isSameOrAfter'),He=require('dayjs/plugin/weekOfYear'),Be=require('dayjs/plugin/customParseFormat'),jsxRuntime=require('react/jsx-runtime'),he=require('crypto-js/aes'),be=require('crypto-js/pbkdf2'),ze=require('crypto-js/enc-utf8'),Y=require('crypto-js/enc-base64'),ge=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),shallow=require('zustand/react/shallow'),lt=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var le__default=/*#__PURE__*/_interopDefault(le);var K__default=/*#__PURE__*/_interopDefault(K);var ve__default=/*#__PURE__*/_interopDefault(ve);var ke__default=/*#__PURE__*/_interopDefault(ke);var Ee__default=/*#__PURE__*/_interopDefault(Ee);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var Ke__default=/*#__PURE__*/_interopDefault(Ke);var Me__default=/*#__PURE__*/_interopDefault(Me);var Fe__default=/*#__PURE__*/_interopDefault(Fe);var Le__default=/*#__PURE__*/_interopDefault(Le);var He__default=/*#__PURE__*/_interopDefault(He);var Be__default=/*#__PURE__*/_interopDefault(Be);var he__default=/*#__PURE__*/_interopDefault(he);var be__default=/*#__PURE__*/_interopDefault(be);var ze__default=/*#__PURE__*/_interopDefault(ze);var Y__default=/*#__PURE__*/_interopDefault(Y);var ge__default=/*#__PURE__*/_interopDefault(ge);var lt__default=/*#__PURE__*/_interopDefault(lt);function Tt(){let t=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>(e==="x"?t():t()&3|8).toString(16))}function At(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var Ct=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function Dt(t,e){let r=false;return t&&typeof t=="object"&&Array.isArray(t)&&(typeof e=="number"?t.length>e&&(r=true):r=true),r}function I(t){return !(t==null||typeof t=="string"&&t.trim()===""||Array.isArray(t)&&t.length===0||typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.keys(t).length===0)}var fe={camelCase:(t="")=>(t=t.split(".").map(e=>(e=e.charAt(0).toUpperCase()+e.slice(1),e)).join(" "),t=t.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),t.charAt(0).toUpperCase()+t.slice(1)),snackCase:(t="")=>{let r=t.replace(/_([a-z])/g,(n,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(t="",e=false)=>{let r="";try{t=t?.split(".")[t?.split(".")?.length-1],t=t?.split("[]")[t?.split("[]")?.length-1],r=fe.snackCase(fe.camelCase(t)),e&&(r=r?.split(" ")?.map(n=>n?.length<=3?n?.toUpperCase():n)?.join(" "));}catch{}return r?.trim()}};function St(t,e){return typeof t=="function"?t(e):t}var F=(t,e,r="")=>{if(!t)return r;if(t.hasOwnProperty(e))return t[e];let n=e.replace(/\[(\d+)\]/g,".$1").split("."),s=t;for(let a of n){if(s==null)return r;s=s[a];}return s===void 0?r:s},Pt={desc:(t,e)=>(t||(t=[]),t.sort((r,n)=>{if(e){let s=F(r,e)?F(r,e):"",a=F(n,e)?F(r,e):"";return s<a?1:-1}else return r<n?1:-1})),asc:(t,e)=>(t||(t=[]),t.sort((r,n)=>{if(e){let s=F(r,e)?F(r,e):"",a=F(n,e)?F(n,e):"";return s>a?1:-1}else return r>n?1:-1}))},Ot=(t,e)=>{Array.isArray(t)||(t=[]);let r=[];return r=t.map(n=>Number(e?F(n,e)||0:n||0)),r.reduce((n,s)=>(n||0)+(s||0),0)||0};function wt(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function Ue(t){let e=new WeakSet;return JSON.stringify(t,function(r,n){return n!==null&&typeof n=="object"?e.has(n)?void 0:(e.add(n),Object.keys(n).sort().reduce((s,a)=>(s[a]=n[a],s),{})):n})??""}function de(t,e){return Ue([e??"undefined",t??"undefined"])}function me(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function qt(t,e=0){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{t(...n);},e*1e3);}}var ye=t=>{let e=t.match(/^data:\s*(.*)/s);if(e)try{return JSON.parse(e[1])}catch{return null}return null};K__default.default.extend(ve__default.default);K__default.default.extend(ke__default.default);K__default.default.extend(Ee__default.default);K__default.default.extend(Ne__default.default);K__default.default.extend(Ke__default.default);K__default.default.extend(Me__default.default);K__default.default.extend(Fe__default.default);K__default.default.extend(Le__default.default);K__default.default.extend(He__default.default);K__default.default.extend(Be__default.default);var L=K__default.default;var Re=le.createContext(void 0);function $(){let t=le.useContext(Re);return t||{}}var Ve=({children:t,value:e})=>{let r={...e};return le.useEffect(()=>{(async()=>{if(!(typeof window>"u")&&e.localeConfig){let{preset:s,object:a,isLocal:i}=e.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&L.locale(s,a??{},i);}})();},[e.localeConfig]),jsxRuntime.jsx(Re.Provider,{value:r,children:t})};function ee(t,e){let r=ge__default.default.random(16),n=ge__default.default.random(16),s=be__default.default(e,r,{keySize:256/32,iterations:1e3}),a=he__default.default.encrypt(JSON.stringify(t),s,{iv:n}).toString();return {salt:r.toString(Y__default.default),iv:n.toString(Y__default.default),encrypted:a}}function te(t,e){let{salt:r,iv:n,encrypted:s}=t,a=be__default.default(e,Y__default.default.parse(r),{keySize:256/32,iterations:1e3}),o=he__default.default.decrypt(s,a,{iv:Y__default.default.parse(n)}).toString(ze__default.default);return JSON.parse(o)}function xe(t,e){return JSON.stringify(ee(t,e))}function Te(t,e){return te(JSON.parse(t),e)}function X(){let{passphrase:t}=$();return {passphrase:t,encrypt(e,r){return ee(e,r||t)},decrypt(e,r){return te(e,r||t)},encryptString(e,r){return xe(e,r||t)},decryptString(e,r){return Te(e,r||t)}}}var Ae=()=>{let{encrypt:t,decrypt:e}=X(),r=le.useCallback((i,o)=>{try{let c=t(o);localStorage.setItem(i,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[t]),n=le.useCallback(i=>{try{let o=localStorage.getItem(i);return o?e(JSON.parse(o)):null}catch(o){return console.error("Failed to get from storage:",o),null}},[e]),s=i=>{let[o,c]=le.useState(()=>{try{let p=localStorage.getItem(i);return p?e(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return le.useEffect(()=>{let p=y=>{if(y.key===i)if(y.newValue)try{c(e(JSON.parse(y.newValue)));}catch(S){console.error("Decrypt error from storage event",S);}else c(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[i,e]),o},a=le.useCallback(i=>{i?localStorage.removeItem(i):localStorage.clear();},[]);return {save:r,get:n,clear:a,useWatchStorage:s}};function Ye(t,e){for(let r in e)if(e[r]!==t[r])return e}var z={loading:false,response:void 0,isCancel:false},W=zustand.create()(t=>({states:{},updateState:(e,r)=>t(n=>{let s=n.states[e]||z,a={...s,...r};return Ye(s,a)?{states:{...n.states,[e]:a}}:n})}));var ne=new Map,Ce=(t,e)=>{ne.set(t,e);},De=t=>{ne.delete(t);},Se=t=>ne.get(t);function Ze(...t){let[e,r,n]=t,s=e.__isVoid,a=e.__path||e.name,i=s?void 0:r,o=s?r:n,c=o?.storeName||a,{updateState:p}=W(),[y,S,g]=W(shallow.useShallow(b=>{let d=b.states[c]??z;return [d.loading,d.isCancel,d.response]})),{storageKey:O,cache:x,clearPreviousData:A,refetchOnWindowFocus:q}=$(),j=Ae(),k=le.useRef(void 0),H=le.useRef(null),{cacheName:V,cacheKey:B,timeout:pe,timeoutUnit:ce,persistence:Z,cacheEnabled:Q}=le.useMemo(()=>{let b=O?j.get(O):void 0,d=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,R=de({...i,session:b},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),T=false;typeof x?.enabled=="boolean"&&(T=x.enabled);let P=false;typeof x?.persistence=="boolean"&&(P=x?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(P=o?.cache?.persistence??false);let D=60*5,v="s";return I(x?.timeout)&&(typeof x?.timeout=="number"?(D=x.timeout,v="s"):typeof x?.timeout=="object"&&(D=x?.timeout.value,v=x?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?T=o.cache.enabled:T=true,typeof o.cache.timeout=="number"?(D=o.cache.timeout,v="s"):typeof o.cache.timeout=="object"&&(D=o.cache.timeout.value,v=o.cache.timeout.unit)):T=o.cache),{cacheName:d,cacheKey:R,timeout:D,timeoutUnit:v,persistence:P,cacheEnabled:T}},[o?.cache,i,O,x,a]);le.useEffect(()=>{let b=JSON.stringify(I(k.current)?k.current:""),d=JSON.stringify(I(i)?i:""),R=k.current===void 0;(b!==d||R)&&!o?.hold&&((o?.clearPreviousData??A)&&p(c,{response:null}),m(),k.current=i),o?.onChange&&o?.onChange(i,U);},[i,o?.clearPreviousData,A,o?.hold,...o?.trigger||[]]),le.useEffect(()=>{let b=async()=>{!Z&&V&&B&&(await caches.open(V)).delete(B);};return window.addEventListener("beforeunload",b),()=>{window.removeEventListener("beforeunload",b),H.current?.abort();}},[Z,V,B,c,H]);let m=le.useCallback(async b=>{let d=i;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(d=o?.beforeRequest(i)),Q&&!b&&!S){p(c,{loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(i);let R=await caches.open(V),P=await(await R.match(B))?.json();if(P){let{data:D,expired:v}=P;if(L().isAfter(v))await R.delete(B);else {o?.afterResponse&&D?.data&&(D.data=o?.afterResponse(D.data)),o?.logging&&console.log("After request: Using Cache",D),o?.onAfterResponse&&o?.onAfterResponse(D),p(c,{loading:false,response:D});return}}}if(typeof e=="function"){H.current?.abort();let R=new AbortController;H.current=R,p(c,{loading:true}),o?.logging&&console.log("Before request",i),o?.onBeforeRequest&&o?.onBeforeRequest(i);let T=s?await e(void 0,{...o,signal:R.signal}):await e(d,void 0,{...o,signal:R.signal});if(o?.afterResponse&&T?.data&&(T.data=o?.afterResponse(T.data)),o?.logging&&console.log("After request",T),o?.onAfterResponse&&o?.onAfterResponse(T),p(c,{loading:false,response:T,isCancel:false}),Q&&T.status){let P=L().add(pe,ce).toISOString(),D={data:T,expired:P},v=await caches.open(V),_=new Response(JSON.stringify(D));await v.put(B,_);}}},[i,e,o,S]);le.useEffect(()=>{if(o?.refreshInterval){let b=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,d=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,R=setInterval(()=>{m();},L.duration(b,d).asMilliseconds());return ()=>clearInterval(R)}return ()=>{}},[o?.refreshInterval,m]);let l=le.useRef(null),{enabledRefetch:f,timeoutRefetch:C,timeoutUnitRefetch:h}=le.useMemo(()=>{let b=o?.refetchOnWindowFocus?.enabled??q?.enabled??false,d=o?.refetchOnWindowFocus?.timeout??q?.timeout,R=typeof d=="number"?d:d?.value??60*5,T=typeof d=="object"?d.unit:"s";return {enabledRefetch:b,timeoutRefetch:R,timeoutUnitRefetch:T}},[o?.refetchOnWindowFocus,q]);le.useEffect(()=>{if(!f)return;let b=L.duration(C,h).asMilliseconds(),d=()=>{let T=Date.now(),P=l.current;P!==null&&T-P>=b&&m(),l.current=null;},R=()=>{l.current=Date.now();};return window.addEventListener("focus",d),window.addEventListener("blur",R),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",R);}},[f,C,h,m]);let w=le.useCallback(()=>{H.current?.abort(),H.current=null,p(c,{loading:false,isCancel:true});},[c,H]),u=le.useCallback(()=>{p(c,{loading:false,response:null});},[c]),U=le.useMemo(()=>({...g,loading:y,refresh:m,abort:w,clear:u,response:g,isCancel:S,clone:(b,d)=>Ze(e,b,d)}),[g,y,m,w,u,S,e]);return le.useEffect(()=>(Ce(c,U),()=>{De(c);}),[U,c]),[g?.data,U]}async function br(t,e=()=>{}){let r=t*1e3;return new Promise(n=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),n(true);},r);})}var Qe=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(Qe||{}),et=(l=>(l.number="number",l.currency="currency",l.percent="percent",l.date="date",l.dateTime="dateTime",l.month="month",l.year="year",l.time="time",l.timestamp="timestamp",l.string="string",l.textarea="textarea",l.code="code",l.password="password",l.boolean="boolean",l.toggle="toggle",l.email="email",l.phone="phone",l.url="url",l.json="json",l.file="file",l.image="image",l.array="array",l.object="object",l.enum="enum",l.user="user",l.department="department",l.status="status",l))(et||{});var Sr=(t,e,r)=>{let{format:n}=$();return e==="number"?nt(t,{thouSep:n.number.thouSep,decDigits:n.number.decDigits,decSep:n.number.decSep,...r}):["date","dateTime","month","year","time"].some(s=>s===e)?ot(t,{display:n[e]?.display,value:n[e]?.value,...r}):e==="boolean"?tt(t,r):e==="string"?rt(t,r):t?.toString()??""};function tt(t,e){let r=typeof t=="string"?t==="true":!!t,n=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return r?n:s}function rt(t,e){if(!I(t))return "";let r=String(t);switch(e?.textTransform){case "capitalize":r=me(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return e?.ellipsis&&r.length>e.ellipsis&&(r=r.slice(0,e.ellipsis)+"..."),r}function nt(t,{thouSep:e,decSep:r,decDigits:n,method:s}){if(t==null||isNaN(Number(t)))return "";let a=typeof t=="string"?parseFloat(t):t;if(s)if(typeof n=="number"){let p=Math.pow(10,n);a=Math[s](a*p)/p;}else a=Math[s](a);else if(typeof n=="number"){let p=Math.pow(10,n);a=Math.floor(a*p)/p;}let i=0;if(n==="auto"){let p=a.toString(),y=p.indexOf(".");y!==-1&&(i=p.length-y-1);}let o={style:"decimal",useGrouping:true,minimumFractionDigits:n==="auto"?i:n||0,maximumFractionDigits:n==="auto"?i:n||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",o).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,e)}function ot(t,{display:e,value:r}){if(!I(t))return t;let n=L(t,r);return n.isValid()?n.format(e):t}function wr(t,{interval:e,lead:r}){let n=le.useRef(null);le.useEffect(()=>{n.current=t;},[t]),le.useEffect(()=>{let s=()=>n.current();if(r&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function vr(t,e,r){let[n,s]=le.useState(false),a=(p,y)=>typeof t=="string"&&p===t||typeof t=="number"&&y===t,i=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),o=p=>{let{key:y,keyCode:S}=p,g=p.ctrlKey,O=p.altKey,x=p.shiftKey;if(!i(document.activeElement))if(e)if(typeof e=="string")a(y,S)&&(e==="ctrl"&&g||e==="alt"&&O||e==="shift"&&x)&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));else {let A=e.every(q=>q==="ctrl"?g:q==="alt"?O:q==="shift"?x:false);a(y,S)&&A&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));}else a(y,S)&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));},c=({key:p,keyCode:y})=>{a(p,y)&&s(false);};return le.useEffect(()=>(window.addEventListener("keydown",o),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",o),window.removeEventListener("keyup",c);}),[]),n}var Hr=({url:t,token:e,beforeRequest:r,onCallback:n,headers:s,onUnauthorized:a,handleToast:i,handleAuthorization:o,disabledToastWhenCancel:c,withCredentials:p,encryptRequest:y,encryptResponse:S,passphrase:g})=>{let{encrypt:O,decrypt:x,passphrase:A}=X(),q=(m,l,f,C)=>{let h=C?.code==="ERR_CANCELED",w=m?.status===401,u=m?.data;if((typeof f?.encryptResponse=="boolean"?f?.encryptResponse:S)&&u){let P=f?.passphrase?typeof f.passphrase=="boolean"&&f.passphrase?A:f.passphrase:g;try{u=x(u,P);}catch{try{u=x(u,A);}catch{}}}let d={...n({...m,data:u,isCancel:h,isUnauthorization:w},C),isCancel:h,isUnauthorization:w,httpCode:m?.status},R=typeof f?.disabledToastWhenCancel=="boolean"?f?.disabledToastWhenCancel:c,T=o?o(d,f):!w;if((f?.infoSuccess&&d.status||f?.infoError&&!d.status)&&i&&(!h||!R)&&i(d),!T&&(!h||!f?.disabledHandleUnauthorized)){let P=f?.onUnauthorized||a;P&&P(d);}if(l)l(d);else return d},j=(m,l=()=>{})=>lt__default.default.create({baseURL:`${t}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(C=>l(C.response,C)),k=(m,l,f,C,h)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...h},U={"Content-Type":"application/json",...s,...u.headers};if(u.token&&(typeof u.token=="boolean"?e&&(U.Authorization=`Bearer ${e}`):u.token&&(U.Authorization=`Bearer ${u.token}`)),r&&(f=r(f)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:y)&&f){let d=h?.passphrase?typeof h.passphrase=="boolean"&&h.passphrase?A:h.passphrase:g;f=O(f,d);}return j({url:l,method:m,data:f,headers:U,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:d=>{u?.onUploadProgress&&u?.onUploadProgress(d);}},(d,R)=>q(d,C,u,R))};return {client:j,post:(m,l,f,C)=>k("POST",`${m}`,l,f,C),put:(m,l,f,C)=>k("PUT",`${m}`,l,f,C),patch:(m,l,f,C)=>k("PATCH",`${m}`,l,f,C),delete:(m,l,f)=>k("DELETE",`${m}`,null,l,f),get:(m,l,f)=>k("GET",`${m}`,null,l,f),upload:(m,l,f,C)=>{let h=new FormData;return Object.keys(l).forEach(w=>h.append(w,l[w])),k("POST",`${m}`,h,f,{infoSuccess:false,...C,headers:{"Content-Type":"multipart/form-data",...C?.headers}})},stream:async(m,l,f,C,h)=>{try{let u={...{token:!0,responseType:"json"},...h},U={"Content-Type":"application/json",...s,...u.headers};if(u.token){let E=typeof u.token=="boolean"?e:u.token;E&&(U.Authorization=`Bearer ${E}`);}let b=f;if(r&&(b=r(b)),(typeof u.encryptRequest=="boolean"?u.encryptRequest:y)&&b){let E=u.passphrase?typeof u.passphrase=="boolean"&&u.passphrase?A:u.passphrase:g;b=O(b,E);}let R=await fetch(`${t}${l}`,{method:m,headers:U,credentials:u.withCredentials?"include":"same-origin",signal:u.signal,body:JSON.stringify(b)}),T=R?.status,P=T===401,D=R?.statusText||"Error";try{let E=R.headers.get("content-type")||"",M=await R.clone().text();if(M)if(E.includes("application/json"))try{let N=JSON.parse(M);if((typeof h?.encryptResponse=="boolean"?h?.encryptResponse:S)&&f){let qe=h?.passphrase?typeof h.passphrase=="boolean"&&h.passphrase?A:h.passphrase:g;try{f=x(N,qe);}catch{try{f=x(N,A);}catch{}}}D=N?.message||D;}catch{D=M;}else D=M;}catch{}if(!R.ok){let E=typeof h?.disabledToastWhenCancel=="boolean"?h?.disabledToastWhenCancel:c,M={status:!1,data:void 0,message:D,isCancel:!1,isUnauthorization:P,httpCode:T,isDone:!0};h?.infoError&&i&&!E&&i(M),C(M);return}let v=R.body.getReader(),_=new TextDecoder("utf-8"),G=!1;for(;!G;){let{value:E,done:M}=await v.read();if(G=M,E){let N=_.decode(E,{stream:!G});if(N=ye(N),u.encryptResponse){let ue=u.passphrase?u.passphrase===!0?A:u.passphrase:A;try{N=x(N,ue);}catch{N=x(N,A);}}C({status:!0,data:N,message:"",isCancel:!1,isUnauthorization:P,httpCode:T,isDone:G});}}}catch(w){let u=w?.name==="AbortError";C({status:false,data:void 0,message:w instanceof Error?w.message:"Internal Server Error",isCancel:u,isUnauthorization:false,httpCode:400,isDone:true});}}}};function $r(t,e){let[r,n]=le.useState(false),[s,a]=le.useState(),[i,o]=le.useState(0),c=le.useRef(null);return le.useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async g=>{c.current?.abort();let O=new AbortController;c.current=O,n(true),e?.beforeRequest&&(g=e?.beforeRequest(g)),e?.logging&&console.log("Before request",g);let x={...e,signal:O.signal,onUploadProgress:q=>{let j=Math.round(q.loaded*100/(q.total||1));o(j);}},A=t.__isVoid?await t(void 0,x):await t(g,void 0,x);e?.logging&&console.log("After response",A),a(A),n(false),o(0),A.status&&e?.onSuccess&&e?.onSuccess(A),!A.status&&e?.onError&&e?.onError(A),e?.afterResponse&&e?.afterResponse(A);},{...s,loading:r,abort:()=>{c.current?.abort(),c.current=null,n(false),o(0);},progress:i,reset:()=>{n(false),o(0),a(null);}}]}function ut(t,e){let{disableHysteresis:r=false,threshold:n=100,target:s}=e,a=t.current;return s&&(typeof s.pageYOffset=="number"?t.current=s.pageYOffset:s.scrollTop!==void 0&&(t.current=s.scrollTop)),!r&&a!==void 0&&t.current<a?false:(t.current||0)>n}var ft=typeof window<"u"?window:null;function Wr(t={}){let{getTrigger:e=ut,target:r=ft,disableHysteresis:n=false,threshold:s=100}=t,a=le__default.default.useRef(0),[i,o]=le__default.default.useState(()=>e(a,{disableHysteresis:n,threshold:s,target:r}));return le__default.default.useEffect(()=>{let c=()=>{o(e(a,{disableHysteresis:n,threshold:s,target:r}));};if(c(),r)return r.addEventListener("scroll",c,{passive:true}),()=>{r.removeEventListener("scroll",c);}},[r,e,n,s]),i}var Xr=(t,e)=>{let r=e?.storeName||t.__path||t.name,n=e?.shallow??true,s=i=>{let o=i.states[r]??z,{loading:c,isCancel:p,response:y}=o,{refresh:S,abort:g,clear:O,clone:x}=Se(r)||{},A=[y?.data,{...y,loading:c,isCancel:p,refresh:S,abort:g,clear:O,clone:x}];return e?.selector?e.selector(A):A};return n?W(shallow.useShallow(s)):W(s)};var en=(t,e)=>{let r=n=>t(n);return r.displayName=e,r},tn=(t,e)=>{let r={};r.others=[];let n=s=>{le__default.default.Children.forEach(s,a=>{if(le__default.default.isValidElement(a)){let i=a.type.displayName;if(e.includes(i))r[i]=a;else {let o=a;o.props?.children?n(o.props.children):r.others.push(a);}}else r.others.push(a);});};return n(t),r};function on(t){let e=t,r=new Set;function n(){return e}function s(o){return r.add(o),()=>r.delete(o)}function a(o){typeof o=="function"?e=o(e):e=o,r.forEach(c=>c());}function i(o){let c=le.useRef(o?o(e):e);return le.useSyncExternalStore(s,()=>{let p=o?o(e):e,y=c.current;return Object.is(y,p)||(c.current=p),c.current},()=>o?o(e):e)}return {getSnapshot:n,subscribe:s,setState:a,useStore:i}}function Rt(t,e=[]){let r={};for(let n in t){let s=t[n];if(typeof s=="function"){let a=s.bind(null);a.__path=[...e,n].join("."),a.__isVoid=s.length===2,r[n]=a;}else typeof s=="object"&&s!==null?r[n]=Rt(s,[...e,n]):r[n]=s;}return r}function pn(t,e){let[r,n]=le.useState(false),[s,a]=le.useState([]),i=le.useRef(null);le.useEffect(()=>{if(e?.abortOnUnmount)return ()=>{i.current?.abort();}},[]);let o=async y=>{i.current?.abort();let S=new AbortController;i.current=S,n(true),t(y,g=>{a(O=>[...O,g]),(g.isDone||!g.status)&&(n(false),e?.onDone&&e?.onDone([...s,g])),g.status?e?.onStream&&e?.onStream(g):e?.onError&&e?.onError(g);},{signal:S.signal});},c=()=>{i.current?.abort(),i.current=null,n(false);},p=()=>{n(false),a([]);};return [s.map(y=>y.data),o,{loading:r,abort:c,reset:p}]}exports.BgsCoreProvider=Ve;exports.DataTypeEnum=et;exports.HttpMethod=Qe;exports.capitalizeWords=me;exports.createApiHelper=Hr;exports.createElement=en;exports.createStore=on;exports.debounce=qt;exports.decrypt=te;exports.decryptString=Te;exports.defaultState=z;exports.diffJson=At;exports.encrypt=ee;exports.encryptString=xe;exports.generateCacheKey=de;exports.generateUUID=Tt;exports.getApiActions=Se;exports.getFieldValue=F;exports.isArray=Dt;exports.isNotEmpty=I;exports.jsonCopy=wt;exports.labelFormatter=fe;exports.mappingUndefinedtoNull=Ct;exports.moment=L;exports.parseSSEChunk=ye;exports.registerApi=Ce;exports.renderChildren=St;exports.sorting=Pt;exports.splitElement=tn;exports.stableStringify=Ue;exports.summary=Ot;exports.unregisterApi=De;exports.useApiLoad=Ze;exports.useApiLoadStore=W;exports.useApiSend=$r;exports.useApiStore=Xr;exports.useApiStream=pn;exports.useBgsCore=$;exports.useCrypto=X;exports.useDelay=br;exports.useFormatted=Sr;exports.useInterval=wr;exports.useKeyPress=vr;exports.useScrollTrigger=Wr;exports.useStorage=Ae;exports.wrapApi=Rt;
1
+ 'use strict';var ce=require('react'),N=require('dayjs'),ve=require('dayjs/plugin/utc'),ke=require('dayjs/plugin/timezone'),Ee=require('dayjs/plugin/duration'),Ne=require('dayjs/plugin/advancedFormat'),Ke=require('dayjs/plugin/localizedFormat'),Me=require('dayjs/plugin/relativeTime'),Fe=require('dayjs/plugin/isSameOrBefore'),Le=require('dayjs/plugin/isSameOrAfter'),He=require('dayjs/plugin/weekOfYear'),Be=require('dayjs/plugin/customParseFormat'),jsxRuntime=require('react/jsx-runtime'),be=require('crypto-js/aes'),xe=require('crypto-js/pbkdf2'),ze=require('crypto-js/enc-utf8'),Y=require('crypto-js/enc-base64'),he=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),shallow=require('zustand/react/shallow'),lt=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ce__default=/*#__PURE__*/_interopDefault(ce);var N__default=/*#__PURE__*/_interopDefault(N);var ve__default=/*#__PURE__*/_interopDefault(ve);var ke__default=/*#__PURE__*/_interopDefault(ke);var Ee__default=/*#__PURE__*/_interopDefault(Ee);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var Ke__default=/*#__PURE__*/_interopDefault(Ke);var Me__default=/*#__PURE__*/_interopDefault(Me);var Fe__default=/*#__PURE__*/_interopDefault(Fe);var Le__default=/*#__PURE__*/_interopDefault(Le);var He__default=/*#__PURE__*/_interopDefault(He);var Be__default=/*#__PURE__*/_interopDefault(Be);var be__default=/*#__PURE__*/_interopDefault(be);var xe__default=/*#__PURE__*/_interopDefault(xe);var ze__default=/*#__PURE__*/_interopDefault(ze);var Y__default=/*#__PURE__*/_interopDefault(Y);var he__default=/*#__PURE__*/_interopDefault(he);var lt__default=/*#__PURE__*/_interopDefault(lt);function Tt(){let t=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>(e==="x"?t():t()&3|8).toString(16))}function At(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var Ct=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function Dt(t,e){let r=false;return t&&typeof t=="object"&&Array.isArray(t)&&(typeof e=="number"?t.length>e&&(r=true):r=true),r}function B(t){return !(t==null||typeof t=="string"&&t.trim()===""||Array.isArray(t)&&t.length===0||typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.keys(t).length===0)}var de={camelCase:(t="")=>(t=t.split(".").map(e=>(e=e.charAt(0).toUpperCase()+e.slice(1),e)).join(" "),t=t.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),t.charAt(0).toUpperCase()+t.slice(1)),snackCase:(t="")=>{let r=t.replace(/_([a-z])/g,(n,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(t="",e=false)=>{let r="";try{t=t?.split(".")[t?.split(".")?.length-1],t=t?.split("[]")[t?.split("[]")?.length-1],r=de.snackCase(de.camelCase(t)),e&&(r=r?.split(" ")?.map(n=>n?.length<=3?n?.toUpperCase():n)?.join(" "));}catch{}return r?.trim()}};function St(t,e){return typeof t=="function"?t(e):t}var M=(t,e,r="")=>{if(!t)return r;if(t.hasOwnProperty(e))return t[e];let n=e.replace(/\[(\d+)\]/g,".$1").split("."),s=t;for(let a of n){if(s==null)return r;s=s[a];}return s===void 0?r:s},Pt={desc:(t,e)=>(t||(t=[]),t.sort((r,n)=>{if(e){let s=M(r,e)?M(r,e):"",a=M(n,e)?M(r,e):"";return s<a?1:-1}else return r<n?1:-1})),asc:(t,e)=>(t||(t=[]),t.sort((r,n)=>{if(e){let s=M(r,e)?M(r,e):"",a=M(n,e)?M(n,e):"";return s>a?1:-1}else return r>n?1:-1}))},Ot=(t,e)=>{Array.isArray(t)||(t=[]);let r=[];return r=t.map(n=>Number(e?M(n,e)||0:n||0)),r.reduce((n,s)=>(n||0)+(s||0),0)||0};function wt(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function Ue(t){let e=new WeakSet;return JSON.stringify(t,function(r,n){return n!==null&&typeof n=="object"?e.has(n)?void 0:(e.add(n),Object.keys(n).sort().reduce((s,a)=>(s[a]=n[a],s),{})):n})??""}function me(t,e){return Ue([e??"undefined",t??"undefined"])}function ye(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function qt(t,e=0){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{t(...n);},e*1e3);}}var Re=t=>{let e=t.match(/^data:\s*(.*)/s);if(e)try{return JSON.parse(e[1])}catch{return null}return null};N__default.default.extend(ve__default.default);N__default.default.extend(ke__default.default);N__default.default.extend(Ee__default.default);N__default.default.extend(Ne__default.default);N__default.default.extend(Ke__default.default);N__default.default.extend(Me__default.default);N__default.default.extend(Fe__default.default);N__default.default.extend(Le__default.default);N__default.default.extend(He__default.default);N__default.default.extend(Be__default.default);var F=N__default.default;var ge=ce.createContext(void 0);function I(){let t=ce.useContext(ge);return t||{}}var We=({children:t,value:e})=>{let r={...e};return ce.useEffect(()=>{(async()=>{if(!(typeof window>"u")&&e.localeConfig){let{preset:s,object:a,isLocal:i}=e.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&F.locale(s,a??{},i);}})();},[e.localeConfig]),jsxRuntime.jsx(ge.Provider,{value:r,children:t})};function re(t,e){let r=he__default.default.random(16),n=he__default.default.random(16),s=xe__default.default(e,r,{keySize:256/32,iterations:1e3}),a=be__default.default.encrypt(JSON.stringify(t),s,{iv:n}).toString();return {salt:r.toString(Y__default.default),iv:n.toString(Y__default.default),encrypted:a}}function ne(t,e){let{salt:r,iv:n,encrypted:s}=t,a=xe__default.default(e,Y__default.default.parse(r),{keySize:256/32,iterations:1e3}),o=be__default.default.decrypt(s,a,{iv:Y__default.default.parse(n)}).toString(ze__default.default);return JSON.parse(o)}function Te(t,e){return JSON.stringify(re(t,e))}function Ae(t,e){return ne(JSON.parse(t),e)}function X(){let{passphrase:t}=I();return {passphrase:t,encrypt(e,r){return re(e,r||t)},decrypt(e,r){return ne(e,r||t)},encryptString(e,r){return Te(e,r||t)},decryptString(e,r){return Ae(e,r||t)}}}var Ce=()=>{let{encrypt:t,decrypt:e}=X(),r=ce.useCallback((i,o)=>{try{let c=t(o);localStorage.setItem(i,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[t]),n=ce.useCallback(i=>{try{let o=localStorage.getItem(i);return o?e(JSON.parse(o)):null}catch(o){return console.error("Failed to get from storage:",o),null}},[e]),s=i=>{let[o,c]=ce.useState(()=>{try{let p=localStorage.getItem(i);return p?e(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return ce.useEffect(()=>{let p=y=>{if(y.key===i)if(y.newValue)try{c(e(JSON.parse(y.newValue)));}catch(S){console.error("Decrypt error from storage event",S);}else c(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[i,e]),o},a=ce.useCallback(i=>{i?localStorage.removeItem(i):localStorage.clear();},[]);return {save:r,get:n,clear:a,useWatchStorage:s}};function Ye(t,e){for(let r in e)if(e[r]!==t[r])return e}var z={loading:false,response:void 0,isCancel:false},V=zustand.create()(t=>({states:{},updateState:(e,r)=>t(n=>{let s=n.states[e]||z,a={...s,...r};return Ye(s,a)?{states:{...n.states,[e]:a}}:n})}));var se=new Map,De=(t,e)=>{se.set(t,e);},Se=t=>{se.delete(t);},Pe=t=>se.get(t);function Ze(...t){let[e,r,n]=t,s=e.__isVoid,a=e.__path||e.name,i=s?void 0:r,o=s?r:n,c=o?.storeName||a,{updateState:p}=V(),[y,S,g]=V(shallow.useShallow(b=>{let f=b.states[c]??z;return [f.loading,f.isCancel,f.response]})),{storageKey:O,cache:T,clearPreviousData:C,refetchOnWindowFocus:q}=I(),$=Ce(),k=ce.useRef(void 0),L=ce.useRef(null),{cacheName:j,cacheKey:H,timeout:ue,timeoutUnit:fe,persistence:Z,cacheEnabled:Q}=ce.useMemo(()=>{let b=O?$.get(O):void 0,f=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,R=me({...i,session:b},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),x=false;typeof T?.enabled=="boolean"&&(x=T.enabled);let P=false;typeof T?.persistence=="boolean"&&(P=T?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(P=o?.cache?.persistence??false);let D=60*5,v="s";return B(T?.timeout)&&(typeof T?.timeout=="number"?(D=T.timeout,v="s"):typeof T?.timeout=="object"&&(D=T?.timeout.value,v=T?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?x=o.cache.enabled:x=true,typeof o.cache.timeout=="number"?(D=o.cache.timeout,v="s"):typeof o.cache.timeout=="object"&&(D=o.cache.timeout.value,v=o.cache.timeout.unit)):x=o.cache),{cacheName:f,cacheKey:R,timeout:D,timeoutUnit:v,persistence:P,cacheEnabled:x}},[o?.cache,i,O,T,a]);ce.useEffect(()=>{let b=JSON.stringify(B(k.current)?k.current:""),f=JSON.stringify(B(i)?i:""),R=k.current===void 0;(b!==f||R)&&!o?.hold&&((o?.clearPreviousData??C)&&p(c,{response:null}),m(),k.current=i),o?.onChange&&o?.onChange(i,U);},[i,o?.clearPreviousData,C,o?.hold,...o?.trigger||[]]),ce.useEffect(()=>{let b=async()=>{!Z&&j&&H&&(await caches.open(j)).delete(H);};return window.addEventListener("beforeunload",b),()=>{window.removeEventListener("beforeunload",b),L.current?.abort();}},[Z,j,H,c,L]);let m=ce.useCallback(async b=>{let f=i;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(f=o?.beforeRequest(i)),Q&&!b&&!S){p(c,{loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(i);let R=await caches.open(j),P=await(await R.match(H))?.json();if(P){let{data:D,expired:v}=P;if(F().isAfter(v))await R.delete(H);else {o?.afterResponse&&D?.data&&(D.data=o?.afterResponse(D.data)),o?.logging&&console.log("After request: Using Cache",D),o?.onAfterResponse&&o?.onAfterResponse(D),p(c,{loading:false,response:D});return}}}if(typeof e=="function"){L.current?.abort();let R=new AbortController;L.current=R,p(c,{loading:true}),o?.logging&&console.log("Before request",i),o?.onBeforeRequest&&o?.onBeforeRequest(i);let x=s?await e(void 0,{...o,signal:R.signal}):await e(f,void 0,{...o,signal:R.signal});if(o?.afterResponse&&x?.data&&(x.data=o?.afterResponse(x.data)),o?.logging&&console.log("After request",x),o?.onAfterResponse&&o?.onAfterResponse(x),p(c,{loading:false,response:x,isCancel:false}),Q&&x.status){let P=F().add(ue,fe).toISOString(),D={data:x,expired:P},v=await caches.open(j),_=new Response(JSON.stringify(D));await v.put(H,_);}}},[i,e,o,S]);ce.useEffect(()=>{if(o?.refreshInterval){let b=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,f=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,R=setInterval(()=>{m();},F.duration(b,f).asMilliseconds());return ()=>clearInterval(R)}return ()=>{}},[o?.refreshInterval,m]);let l=ce.useRef(null),{enabledRefetch:u,timeoutRefetch:A,timeoutUnitRefetch:h}=ce.useMemo(()=>{let b=o?.refetchOnWindowFocus?.enabled??q?.enabled??false,f=o?.refetchOnWindowFocus?.timeout??q?.timeout,R=typeof f=="number"?f:f?.value??60*5,x=typeof f=="object"?f.unit:"s";return {enabledRefetch:b,timeoutRefetch:R,timeoutUnitRefetch:x}},[o?.refetchOnWindowFocus,q]);ce.useEffect(()=>{if(!u)return;let b=F.duration(A,h).asMilliseconds(),f=()=>{let x=Date.now(),P=l.current;P!==null&&x-P>=b&&m(),l.current=null;},R=()=>{l.current=Date.now();};return window.addEventListener("focus",f),window.addEventListener("blur",R),()=>{window.removeEventListener("focus",f),window.removeEventListener("blur",R);}},[u,A,h,m]);let w=ce.useCallback(()=>{L.current?.abort(),L.current=null,p(c,{loading:false,isCancel:true});},[c,L]),d=ce.useCallback(()=>{p(c,{loading:false,response:null});},[c]),U=ce.useMemo(()=>({...g,loading:y,refresh:m,abort:w,clear:d,response:g,isCancel:S,clone:(b,f)=>Ze(e,b,f)}),[g,y,m,w,d,S,e]);return ce.useEffect(()=>(De(c,U),()=>{Se(c);}),[U,c]),[g?.data,U]}async function br(t,e=()=>{}){let r=t*1e3;return new Promise(n=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),n(true);},r);})}var Qe=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(Qe||{}),et=(l=>(l.number="number",l.currency="currency",l.percent="percent",l.date="date",l.dateTime="dateTime",l.month="month",l.year="year",l.time="time",l.timestamp="timestamp",l.string="string",l.textarea="textarea",l.code="code",l.password="password",l.boolean="boolean",l.toggle="toggle",l.email="email",l.phone="phone",l.url="url",l.json="json",l.file="file",l.image="image",l.array="array",l.object="object",l.enum="enum",l.user="user",l.department="department",l.status="status",l))(et||{});var Sr=(t,e,r)=>{let{format:n}=I();return e==="number"?nt(t,{thouSep:n.number.thouSep,decDigits:n.number.decDigits,decSep:n.number.decSep,...r}):["date","dateTime","month","year","time"].some(s=>s===e)?ot(t,{display:n[e]?.display,value:n[e]?.value,...r}):e==="boolean"?tt(t,r):e==="string"?rt(t,r):t?.toString()??""};function tt(t,e){let r=typeof t=="string"?t==="true":!!t,n=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return r?n:s}function rt(t,e){if(!B(t))return "";let r=String(t);switch(e?.textTransform){case "capitalize":r=ye(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return e?.ellipsis&&r.length>e.ellipsis&&(r=r.slice(0,e.ellipsis)+"..."),r}function nt(t,{thouSep:e,decSep:r,decDigits:n,method:s}){if(t==null||isNaN(Number(t)))return "";let a=typeof t=="string"?parseFloat(t):t;if(s)if(typeof n=="number"){let p=Math.pow(10,n);a=Math[s](a*p)/p;}else a=Math[s](a);else if(typeof n=="number"){let p=Math.pow(10,n);a=Math.floor(a*p)/p;}let i=0;if(n==="auto"){let p=a.toString(),y=p.indexOf(".");y!==-1&&(i=p.length-y-1);}let o={style:"decimal",useGrouping:true,minimumFractionDigits:n==="auto"?i:n||0,maximumFractionDigits:n==="auto"?i:n||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",o).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,e)}function ot(t,{display:e,value:r}){if(!B(t))return t;let n=F(t,r);return n.isValid()?n.format(e):t}function wr(t,{interval:e,lead:r}){let n=ce.useRef(null);ce.useEffect(()=>{n.current=t;},[t]),ce.useEffect(()=>{let s=()=>n.current();if(r&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function vr(t,e,r){let[n,s]=ce.useState(false),a=(p,y)=>typeof t=="string"&&p===t||typeof t=="number"&&y===t,i=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),o=p=>{let{key:y,keyCode:S}=p,g=p.ctrlKey,O=p.altKey,T=p.shiftKey;if(!i(document.activeElement))if(e)if(typeof e=="string")a(y,S)&&(e==="ctrl"&&g||e==="alt"&&O||e==="shift"&&T)&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));else {let C=e.every(q=>q==="ctrl"?g:q==="alt"?O:q==="shift"?T:false);a(y,S)&&C&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));}else a(y,S)&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));},c=({key:p,keyCode:y})=>{a(p,y)&&s(false);};return ce.useEffect(()=>(window.addEventListener("keydown",o),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",o),window.removeEventListener("keyup",c);}),[]),n}var Hr=({url:t,token:e,beforeRequest:r,onCallback:n,headers:s,onUnauthorized:a,handleToast:i,handleAuthorization:o,disabledToastWhenCancel:c,withCredentials:p,encryptRequest:y,encryptResponse:S,passphrase:g})=>{let{encrypt:O,decrypt:T,passphrase:C}=X(),q=(m,l,u,A)=>{let h=A?.code==="ERR_CANCELED",w=m?.status===401,d=m?.data;if((typeof u?.encryptResponse=="boolean"?u?.encryptResponse:S)&&d){let P=u?.passphrase?typeof u.passphrase=="boolean"&&u.passphrase?C:u.passphrase:g;try{d=T(d,P);}catch{try{d=T(d,C);}catch{}}}let f={...n({...m,data:d,isCancel:h,isUnauthorization:w},A),isCancel:h,isUnauthorization:w,httpCode:m?.status},R=typeof u?.disabledToastWhenCancel=="boolean"?u?.disabledToastWhenCancel:c,x=o?o(f,u):!w;if((u?.infoSuccess&&f.status||u?.infoError&&!f.status)&&i&&(!h||!R)&&i(f),!x&&(!h||!u?.disabledHandleUnauthorized)){let P=u?.onUnauthorized||a;P&&P(f);}if(l)l(f);else return f},$=(m,l=()=>{})=>lt__default.default.create({baseURL:`${t}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(A=>l(A.response,A)),k=(m,l,u,A,h)=>{let d={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...h},U={"Content-Type":"application/json",...s,...d.headers};if(d.token&&(typeof d.token=="boolean"?e&&(U.Authorization=`Bearer ${e}`):d.token&&(U.Authorization=`Bearer ${d.token}`)),r&&(u=r(u)),(typeof d?.encryptRequest=="boolean"?d?.encryptRequest:y)&&u){let f=h?.passphrase?typeof h.passphrase=="boolean"&&h.passphrase?C:h.passphrase:g;u=O(u,f);}return $({url:l,method:m,data:u,headers:U,responseType:d.responseType,signal:d.signal,withCredentials:d.withCredentials,onUploadProgress:f=>{d?.onUploadProgress&&d?.onUploadProgress(f);}},(f,R)=>q(f,A,d,R))};return {client:$,post:(m,l,u,A)=>k("POST",`${m}`,l,u,A),put:(m,l,u,A)=>k("PUT",`${m}`,l,u,A),patch:(m,l,u,A)=>k("PATCH",`${m}`,l,u,A),delete:(m,l,u)=>k("DELETE",`${m}`,null,l,u),get:(m,l,u)=>k("GET",`${m}`,null,l,u),upload:(m,l,u,A)=>{let h=new FormData;return Object.keys(l).forEach(w=>h.append(w,l[w])),k("POST",`${m}`,h,u,{infoSuccess:false,...A,headers:{"Content-Type":"multipart/form-data",...A?.headers}})},stream:async(m,l,u,A,h)=>{try{let d={...{token:!0,responseType:"json",infoError:!0},...h},U={"Content-Type":"application/json",...s,...d.headers};if(d.token){let E=typeof d.token=="boolean"?e:d.token;E&&(U.Authorization=`Bearer ${E}`);}let b=u;if(r&&(b=r(b)),(typeof d.encryptRequest=="boolean"?d.encryptRequest:y)&&b){let E=d.passphrase?typeof d.passphrase=="boolean"&&d.passphrase?C:d.passphrase:g;b=O(b,E);}let R=await fetch(`${t}${l}`,{method:m,headers:U,credentials:d.withCredentials?"include":"same-origin",signal:d.signal,body:JSON.stringify(b)}),x=R?.status,P=x===401,D=R?.statusText||"Error";try{let E=R.headers.get("content-type")||"",K=await R.clone().text();if(K)if(E.includes("application/json"))try{let W=JSON.parse(K);if((typeof h?.encryptResponse=="boolean"?h?.encryptResponse:S)&&u){let G=h?.passphrase?typeof h.passphrase=="boolean"&&h.passphrase?C:h.passphrase:g;try{u=T(W,G);}catch{try{u=T(W,C);}catch{}}}D=W?.message||D;}catch{D=K;}else D=K;}catch{}if(!R.ok){let E=typeof h?.disabledToastWhenCancel=="boolean"?h?.disabledToastWhenCancel:c,K={status:!1,data:void 0,message:D,isCancel:!1,isUnauthorization:P,httpCode:x,isDone:!0};h?.infoError&&i&&!E&&i(K),A(K);return}let v=R.body.getReader(),_=new TextDecoder("utf-8"),ee="";for(;;){let{done:E,value:K}=await v.read();if(E)break;ee+=_.decode(K,{stream:!0});let W=ee.split(`
2
+
3
+ `);ee=W.pop();for(let te of W)if(te.startsWith("data:"))try{let G=Re(te);A({status:!0,data:G,message:"",isCancel:!1,isUnauthorization:P,httpCode:x,isDone:E});}catch{}}}catch(w){let d=w?.name==="AbortError";A({status:false,data:void 0,message:w instanceof Error?w.message:"Internal Server Error",isCancel:d,isUnauthorization:false,httpCode:400,isDone:true});}}}};function $r(t,e){let[r,n]=ce.useState(false),[s,a]=ce.useState(),[i,o]=ce.useState(0),c=ce.useRef(null);return ce.useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async g=>{c.current?.abort();let O=new AbortController;c.current=O,n(true),e?.beforeRequest&&(g=e?.beforeRequest(g)),e?.logging&&console.log("Before request",g);let T={...e,signal:O.signal,onUploadProgress:q=>{let $=Math.round(q.loaded*100/(q.total||1));o($);}},C=t.__isVoid?await t(void 0,T):await t(g,void 0,T);e?.logging&&console.log("After response",C),a(C),n(false),o(0),C.status&&e?.onSuccess&&e?.onSuccess(C),!C.status&&e?.onError&&e?.onError(C),e?.afterResponse&&e?.afterResponse(C);},{...s,loading:r,abort:()=>{c.current?.abort(),c.current=null,n(false),o(0);},progress:i,reset:()=>{n(false),o(0),a(null);}}]}function ut(t,e){let{disableHysteresis:r=false,threshold:n=100,target:s}=e,a=t.current;return s&&(typeof s.pageYOffset=="number"?t.current=s.pageYOffset:s.scrollTop!==void 0&&(t.current=s.scrollTop)),!r&&a!==void 0&&t.current<a?false:(t.current||0)>n}var ft=typeof window<"u"?window:null;function Vr(t={}){let{getTrigger:e=ut,target:r=ft,disableHysteresis:n=false,threshold:s=100}=t,a=ce__default.default.useRef(0),[i,o]=ce__default.default.useState(()=>e(a,{disableHysteresis:n,threshold:s,target:r}));return ce__default.default.useEffect(()=>{let c=()=>{o(e(a,{disableHysteresis:n,threshold:s,target:r}));};if(c(),r)return r.addEventListener("scroll",c,{passive:true}),()=>{r.removeEventListener("scroll",c);}},[r,e,n,s]),i}var Xr=(t,e)=>{let r=e?.storeName||t.__path||t.name,n=e?.shallow??true,s=i=>{let o=i.states[r]??z,{loading:c,isCancel:p,response:y}=o,{refresh:S,abort:g,clear:O,clone:T}=Pe(r)||{},C=[y?.data,{...y,loading:c,isCancel:p,refresh:S,abort:g,clear:O,clone:T}];return e?.selector?e.selector(C):C};return n?V(shallow.useShallow(s)):V(s)};var en=(t,e)=>{let r=n=>t(n);return r.displayName=e,r},tn=(t,e)=>{let r={};r.others=[];let n=s=>{ce__default.default.Children.forEach(s,a=>{if(ce__default.default.isValidElement(a)){let i=a.type.displayName;if(e.includes(i))r[i]=a;else {let o=a;o.props?.children?n(o.props.children):r.others.push(a);}}else r.others.push(a);});};return n(t),r};function on(t){let e=t,r=new Set;function n(){return e}function s(o){return r.add(o),()=>r.delete(o)}function a(o){typeof o=="function"?e=o(e):e=o,r.forEach(c=>c());}function i(o){let c=ce.useRef(o?o(e):e);return ce.useSyncExternalStore(s,()=>{let p=o?o(e):e,y=c.current;return Object.is(y,p)||(c.current=p),c.current},()=>o?o(e):e)}return {getSnapshot:n,subscribe:s,setState:a,useStore:i}}function Rt(t,e=[]){let r={};for(let n in t){let s=t[n];if(typeof s=="function"){let a=s.bind(null);a.__path=[...e,n].join("."),a.__isVoid=s.length===2,r[n]=a;}else typeof s=="object"&&s!==null?r[n]=Rt(s,[...e,n]):r[n]=s;}return r}function pn(t,e){let[r,n]=ce.useState(false),[s,a]=ce.useState([]),i=ce.useRef(null);ce.useEffect(()=>{if(e?.abortOnUnmount)return ()=>{i.current?.abort();}},[]);let o=async y=>{i.current?.abort();let S=new AbortController;i.current=S,n(true),t(y,g=>{a(O=>[...O,g]),(g.isDone||!g.status)&&(n(false),e?.onDone&&e?.onDone([...s,g])),g.status?e?.onStream&&e?.onStream(g):e?.onError&&e?.onError(g);},{signal:S.signal});},c=()=>{i.current?.abort(),i.current=null,n(false);},p=()=>{n(false),a([]);};return [s.map(y=>y.data),o,{loading:r,abort:c,reset:p}]}exports.BgsCoreProvider=We;exports.DataTypeEnum=et;exports.HttpMethod=Qe;exports.capitalizeWords=ye;exports.createApiHelper=Hr;exports.createElement=en;exports.createStore=on;exports.debounce=qt;exports.decrypt=ne;exports.decryptString=Ae;exports.defaultState=z;exports.diffJson=At;exports.encrypt=re;exports.encryptString=Te;exports.generateCacheKey=me;exports.generateUUID=Tt;exports.getApiActions=Pe;exports.getFieldValue=M;exports.isArray=Dt;exports.isNotEmpty=B;exports.jsonCopy=wt;exports.labelFormatter=de;exports.mappingUndefinedtoNull=Ct;exports.moment=F;exports.parseSSEChunk=Re;exports.registerApi=De;exports.renderChildren=St;exports.sorting=Pt;exports.splitElement=tn;exports.stableStringify=Ue;exports.summary=Ot;exports.unregisterApi=Se;exports.useApiLoad=Ze;exports.useApiLoadStore=V;exports.useApiSend=$r;exports.useApiStore=Xr;exports.useApiStream=pn;exports.useBgsCore=I;exports.useCrypto=X;exports.useDelay=br;exports.useFormatted=Sr;exports.useInterval=wr;exports.useKeyPress=vr;exports.useScrollTrigger=Vr;exports.useStorage=Ce;exports.wrapApi=Rt;
package/dist/index.js CHANGED
@@ -1 +1,3 @@
1
- import le,{createContext,useContext,useEffect,useCallback,useRef,useMemo,useState,useSyncExternalStore}from'react';import K from'dayjs';import ve from'dayjs/plugin/utc';import ke from'dayjs/plugin/timezone';import Ee from'dayjs/plugin/duration';import Ne from'dayjs/plugin/advancedFormat';import Ke from'dayjs/plugin/localizedFormat';import Me from'dayjs/plugin/relativeTime';import Fe from'dayjs/plugin/isSameOrBefore';import Le from'dayjs/plugin/isSameOrAfter';import He from'dayjs/plugin/weekOfYear';import Be from'dayjs/plugin/customParseFormat';import {jsx}from'react/jsx-runtime';import he from'crypto-js/aes';import be from'crypto-js/pbkdf2';import ze from'crypto-js/enc-utf8';import Y from'crypto-js/enc-base64';import ge from'crypto-js/lib-typedarrays';import {create}from'zustand';import {useShallow}from'zustand/react/shallow';import lt from'axios';function Tt(){let t=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>(e==="x"?t():t()&3|8).toString(16))}function At(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var Ct=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function Dt(t,e){let r=false;return t&&typeof t=="object"&&Array.isArray(t)&&(typeof e=="number"?t.length>e&&(r=true):r=true),r}function I(t){return !(t==null||typeof t=="string"&&t.trim()===""||Array.isArray(t)&&t.length===0||typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.keys(t).length===0)}var fe={camelCase:(t="")=>(t=t.split(".").map(e=>(e=e.charAt(0).toUpperCase()+e.slice(1),e)).join(" "),t=t.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),t.charAt(0).toUpperCase()+t.slice(1)),snackCase:(t="")=>{let r=t.replace(/_([a-z])/g,(n,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(t="",e=false)=>{let r="";try{t=t?.split(".")[t?.split(".")?.length-1],t=t?.split("[]")[t?.split("[]")?.length-1],r=fe.snackCase(fe.camelCase(t)),e&&(r=r?.split(" ")?.map(n=>n?.length<=3?n?.toUpperCase():n)?.join(" "));}catch{}return r?.trim()}};function St(t,e){return typeof t=="function"?t(e):t}var F=(t,e,r="")=>{if(!t)return r;if(t.hasOwnProperty(e))return t[e];let n=e.replace(/\[(\d+)\]/g,".$1").split("."),s=t;for(let a of n){if(s==null)return r;s=s[a];}return s===void 0?r:s},Pt={desc:(t,e)=>(t||(t=[]),t.sort((r,n)=>{if(e){let s=F(r,e)?F(r,e):"",a=F(n,e)?F(r,e):"";return s<a?1:-1}else return r<n?1:-1})),asc:(t,e)=>(t||(t=[]),t.sort((r,n)=>{if(e){let s=F(r,e)?F(r,e):"",a=F(n,e)?F(n,e):"";return s>a?1:-1}else return r>n?1:-1}))},Ot=(t,e)=>{Array.isArray(t)||(t=[]);let r=[];return r=t.map(n=>Number(e?F(n,e)||0:n||0)),r.reduce((n,s)=>(n||0)+(s||0),0)||0};function wt(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function Ue(t){let e=new WeakSet;return JSON.stringify(t,function(r,n){return n!==null&&typeof n=="object"?e.has(n)?void 0:(e.add(n),Object.keys(n).sort().reduce((s,a)=>(s[a]=n[a],s),{})):n})??""}function de(t,e){return Ue([e??"undefined",t??"undefined"])}function me(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function qt(t,e=0){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{t(...n);},e*1e3);}}var ye=t=>{let e=t.match(/^data:\s*(.*)/s);if(e)try{return JSON.parse(e[1])}catch{return null}return null};K.extend(ve);K.extend(ke);K.extend(Ee);K.extend(Ne);K.extend(Ke);K.extend(Me);K.extend(Fe);K.extend(Le);K.extend(He);K.extend(Be);var L=K;var Re=createContext(void 0);function $(){let t=useContext(Re);return t||{}}var Ve=({children:t,value:e})=>{let r={...e};return useEffect(()=>{(async()=>{if(!(typeof window>"u")&&e.localeConfig){let{preset:s,object:a,isLocal:i}=e.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&L.locale(s,a??{},i);}})();},[e.localeConfig]),jsx(Re.Provider,{value:r,children:t})};function ee(t,e){let r=ge.random(16),n=ge.random(16),s=be(e,r,{keySize:256/32,iterations:1e3}),a=he.encrypt(JSON.stringify(t),s,{iv:n}).toString();return {salt:r.toString(Y),iv:n.toString(Y),encrypted:a}}function te(t,e){let{salt:r,iv:n,encrypted:s}=t,a=be(e,Y.parse(r),{keySize:256/32,iterations:1e3}),o=he.decrypt(s,a,{iv:Y.parse(n)}).toString(ze);return JSON.parse(o)}function xe(t,e){return JSON.stringify(ee(t,e))}function Te(t,e){return te(JSON.parse(t),e)}function X(){let{passphrase:t}=$();return {passphrase:t,encrypt(e,r){return ee(e,r||t)},decrypt(e,r){return te(e,r||t)},encryptString(e,r){return xe(e,r||t)},decryptString(e,r){return Te(e,r||t)}}}var Ae=()=>{let{encrypt:t,decrypt:e}=X(),r=useCallback((i,o)=>{try{let c=t(o);localStorage.setItem(i,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[t]),n=useCallback(i=>{try{let o=localStorage.getItem(i);return o?e(JSON.parse(o)):null}catch(o){return console.error("Failed to get from storage:",o),null}},[e]),s=i=>{let[o,c]=useState(()=>{try{let p=localStorage.getItem(i);return p?e(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return useEffect(()=>{let p=y=>{if(y.key===i)if(y.newValue)try{c(e(JSON.parse(y.newValue)));}catch(S){console.error("Decrypt error from storage event",S);}else c(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[i,e]),o},a=useCallback(i=>{i?localStorage.removeItem(i):localStorage.clear();},[]);return {save:r,get:n,clear:a,useWatchStorage:s}};function Ye(t,e){for(let r in e)if(e[r]!==t[r])return e}var z={loading:false,response:void 0,isCancel:false},W=create()(t=>({states:{},updateState:(e,r)=>t(n=>{let s=n.states[e]||z,a={...s,...r};return Ye(s,a)?{states:{...n.states,[e]:a}}:n})}));var ne=new Map,Ce=(t,e)=>{ne.set(t,e);},De=t=>{ne.delete(t);},Se=t=>ne.get(t);function Ze(...t){let[e,r,n]=t,s=e.__isVoid,a=e.__path||e.name,i=s?void 0:r,o=s?r:n,c=o?.storeName||a,{updateState:p}=W(),[y,S,g]=W(useShallow(b=>{let d=b.states[c]??z;return [d.loading,d.isCancel,d.response]})),{storageKey:O,cache:x,clearPreviousData:A,refetchOnWindowFocus:q}=$(),j=Ae(),k=useRef(void 0),H=useRef(null),{cacheName:V,cacheKey:B,timeout:pe,timeoutUnit:ce,persistence:Z,cacheEnabled:Q}=useMemo(()=>{let b=O?j.get(O):void 0,d=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,R=de({...i,session:b},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),T=false;typeof x?.enabled=="boolean"&&(T=x.enabled);let P=false;typeof x?.persistence=="boolean"&&(P=x?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(P=o?.cache?.persistence??false);let D=60*5,v="s";return I(x?.timeout)&&(typeof x?.timeout=="number"?(D=x.timeout,v="s"):typeof x?.timeout=="object"&&(D=x?.timeout.value,v=x?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?T=o.cache.enabled:T=true,typeof o.cache.timeout=="number"?(D=o.cache.timeout,v="s"):typeof o.cache.timeout=="object"&&(D=o.cache.timeout.value,v=o.cache.timeout.unit)):T=o.cache),{cacheName:d,cacheKey:R,timeout:D,timeoutUnit:v,persistence:P,cacheEnabled:T}},[o?.cache,i,O,x,a]);useEffect(()=>{let b=JSON.stringify(I(k.current)?k.current:""),d=JSON.stringify(I(i)?i:""),R=k.current===void 0;(b!==d||R)&&!o?.hold&&((o?.clearPreviousData??A)&&p(c,{response:null}),m(),k.current=i),o?.onChange&&o?.onChange(i,U);},[i,o?.clearPreviousData,A,o?.hold,...o?.trigger||[]]),useEffect(()=>{let b=async()=>{!Z&&V&&B&&(await caches.open(V)).delete(B);};return window.addEventListener("beforeunload",b),()=>{window.removeEventListener("beforeunload",b),H.current?.abort();}},[Z,V,B,c,H]);let m=useCallback(async b=>{let d=i;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(d=o?.beforeRequest(i)),Q&&!b&&!S){p(c,{loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(i);let R=await caches.open(V),P=await(await R.match(B))?.json();if(P){let{data:D,expired:v}=P;if(L().isAfter(v))await R.delete(B);else {o?.afterResponse&&D?.data&&(D.data=o?.afterResponse(D.data)),o?.logging&&console.log("After request: Using Cache",D),o?.onAfterResponse&&o?.onAfterResponse(D),p(c,{loading:false,response:D});return}}}if(typeof e=="function"){H.current?.abort();let R=new AbortController;H.current=R,p(c,{loading:true}),o?.logging&&console.log("Before request",i),o?.onBeforeRequest&&o?.onBeforeRequest(i);let T=s?await e(void 0,{...o,signal:R.signal}):await e(d,void 0,{...o,signal:R.signal});if(o?.afterResponse&&T?.data&&(T.data=o?.afterResponse(T.data)),o?.logging&&console.log("After request",T),o?.onAfterResponse&&o?.onAfterResponse(T),p(c,{loading:false,response:T,isCancel:false}),Q&&T.status){let P=L().add(pe,ce).toISOString(),D={data:T,expired:P},v=await caches.open(V),_=new Response(JSON.stringify(D));await v.put(B,_);}}},[i,e,o,S]);useEffect(()=>{if(o?.refreshInterval){let b=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,d=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,R=setInterval(()=>{m();},L.duration(b,d).asMilliseconds());return ()=>clearInterval(R)}return ()=>{}},[o?.refreshInterval,m]);let l=useRef(null),{enabledRefetch:f,timeoutRefetch:C,timeoutUnitRefetch:h}=useMemo(()=>{let b=o?.refetchOnWindowFocus?.enabled??q?.enabled??false,d=o?.refetchOnWindowFocus?.timeout??q?.timeout,R=typeof d=="number"?d:d?.value??60*5,T=typeof d=="object"?d.unit:"s";return {enabledRefetch:b,timeoutRefetch:R,timeoutUnitRefetch:T}},[o?.refetchOnWindowFocus,q]);useEffect(()=>{if(!f)return;let b=L.duration(C,h).asMilliseconds(),d=()=>{let T=Date.now(),P=l.current;P!==null&&T-P>=b&&m(),l.current=null;},R=()=>{l.current=Date.now();};return window.addEventListener("focus",d),window.addEventListener("blur",R),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",R);}},[f,C,h,m]);let w=useCallback(()=>{H.current?.abort(),H.current=null,p(c,{loading:false,isCancel:true});},[c,H]),u=useCallback(()=>{p(c,{loading:false,response:null});},[c]),U=useMemo(()=>({...g,loading:y,refresh:m,abort:w,clear:u,response:g,isCancel:S,clone:(b,d)=>Ze(e,b,d)}),[g,y,m,w,u,S,e]);return useEffect(()=>(Ce(c,U),()=>{De(c);}),[U,c]),[g?.data,U]}async function br(t,e=()=>{}){let r=t*1e3;return new Promise(n=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),n(true);},r);})}var Qe=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(Qe||{}),et=(l=>(l.number="number",l.currency="currency",l.percent="percent",l.date="date",l.dateTime="dateTime",l.month="month",l.year="year",l.time="time",l.timestamp="timestamp",l.string="string",l.textarea="textarea",l.code="code",l.password="password",l.boolean="boolean",l.toggle="toggle",l.email="email",l.phone="phone",l.url="url",l.json="json",l.file="file",l.image="image",l.array="array",l.object="object",l.enum="enum",l.user="user",l.department="department",l.status="status",l))(et||{});var Sr=(t,e,r)=>{let{format:n}=$();return e==="number"?nt(t,{thouSep:n.number.thouSep,decDigits:n.number.decDigits,decSep:n.number.decSep,...r}):["date","dateTime","month","year","time"].some(s=>s===e)?ot(t,{display:n[e]?.display,value:n[e]?.value,...r}):e==="boolean"?tt(t,r):e==="string"?rt(t,r):t?.toString()??""};function tt(t,e){let r=typeof t=="string"?t==="true":!!t,n=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return r?n:s}function rt(t,e){if(!I(t))return "";let r=String(t);switch(e?.textTransform){case "capitalize":r=me(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return e?.ellipsis&&r.length>e.ellipsis&&(r=r.slice(0,e.ellipsis)+"..."),r}function nt(t,{thouSep:e,decSep:r,decDigits:n,method:s}){if(t==null||isNaN(Number(t)))return "";let a=typeof t=="string"?parseFloat(t):t;if(s)if(typeof n=="number"){let p=Math.pow(10,n);a=Math[s](a*p)/p;}else a=Math[s](a);else if(typeof n=="number"){let p=Math.pow(10,n);a=Math.floor(a*p)/p;}let i=0;if(n==="auto"){let p=a.toString(),y=p.indexOf(".");y!==-1&&(i=p.length-y-1);}let o={style:"decimal",useGrouping:true,minimumFractionDigits:n==="auto"?i:n||0,maximumFractionDigits:n==="auto"?i:n||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",o).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,e)}function ot(t,{display:e,value:r}){if(!I(t))return t;let n=L(t,r);return n.isValid()?n.format(e):t}function wr(t,{interval:e,lead:r}){let n=useRef(null);useEffect(()=>{n.current=t;},[t]),useEffect(()=>{let s=()=>n.current();if(r&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function vr(t,e,r){let[n,s]=useState(false),a=(p,y)=>typeof t=="string"&&p===t||typeof t=="number"&&y===t,i=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),o=p=>{let{key:y,keyCode:S}=p,g=p.ctrlKey,O=p.altKey,x=p.shiftKey;if(!i(document.activeElement))if(e)if(typeof e=="string")a(y,S)&&(e==="ctrl"&&g||e==="alt"&&O||e==="shift"&&x)&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));else {let A=e.every(q=>q==="ctrl"?g:q==="alt"?O:q==="shift"?x:false);a(y,S)&&A&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));}else a(y,S)&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));},c=({key:p,keyCode:y})=>{a(p,y)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",o),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",o),window.removeEventListener("keyup",c);}),[]),n}var Hr=({url:t,token:e,beforeRequest:r,onCallback:n,headers:s,onUnauthorized:a,handleToast:i,handleAuthorization:o,disabledToastWhenCancel:c,withCredentials:p,encryptRequest:y,encryptResponse:S,passphrase:g})=>{let{encrypt:O,decrypt:x,passphrase:A}=X(),q=(m,l,f,C)=>{let h=C?.code==="ERR_CANCELED",w=m?.status===401,u=m?.data;if((typeof f?.encryptResponse=="boolean"?f?.encryptResponse:S)&&u){let P=f?.passphrase?typeof f.passphrase=="boolean"&&f.passphrase?A:f.passphrase:g;try{u=x(u,P);}catch{try{u=x(u,A);}catch{}}}let d={...n({...m,data:u,isCancel:h,isUnauthorization:w},C),isCancel:h,isUnauthorization:w,httpCode:m?.status},R=typeof f?.disabledToastWhenCancel=="boolean"?f?.disabledToastWhenCancel:c,T=o?o(d,f):!w;if((f?.infoSuccess&&d.status||f?.infoError&&!d.status)&&i&&(!h||!R)&&i(d),!T&&(!h||!f?.disabledHandleUnauthorized)){let P=f?.onUnauthorized||a;P&&P(d);}if(l)l(d);else return d},j=(m,l=()=>{})=>lt.create({baseURL:`${t}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(C=>l(C.response,C)),k=(m,l,f,C,h)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...h},U={"Content-Type":"application/json",...s,...u.headers};if(u.token&&(typeof u.token=="boolean"?e&&(U.Authorization=`Bearer ${e}`):u.token&&(U.Authorization=`Bearer ${u.token}`)),r&&(f=r(f)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:y)&&f){let d=h?.passphrase?typeof h.passphrase=="boolean"&&h.passphrase?A:h.passphrase:g;f=O(f,d);}return j({url:l,method:m,data:f,headers:U,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:d=>{u?.onUploadProgress&&u?.onUploadProgress(d);}},(d,R)=>q(d,C,u,R))};return {client:j,post:(m,l,f,C)=>k("POST",`${m}`,l,f,C),put:(m,l,f,C)=>k("PUT",`${m}`,l,f,C),patch:(m,l,f,C)=>k("PATCH",`${m}`,l,f,C),delete:(m,l,f)=>k("DELETE",`${m}`,null,l,f),get:(m,l,f)=>k("GET",`${m}`,null,l,f),upload:(m,l,f,C)=>{let h=new FormData;return Object.keys(l).forEach(w=>h.append(w,l[w])),k("POST",`${m}`,h,f,{infoSuccess:false,...C,headers:{"Content-Type":"multipart/form-data",...C?.headers}})},stream:async(m,l,f,C,h)=>{try{let u={...{token:!0,responseType:"json"},...h},U={"Content-Type":"application/json",...s,...u.headers};if(u.token){let E=typeof u.token=="boolean"?e:u.token;E&&(U.Authorization=`Bearer ${E}`);}let b=f;if(r&&(b=r(b)),(typeof u.encryptRequest=="boolean"?u.encryptRequest:y)&&b){let E=u.passphrase?typeof u.passphrase=="boolean"&&u.passphrase?A:u.passphrase:g;b=O(b,E);}let R=await fetch(`${t}${l}`,{method:m,headers:U,credentials:u.withCredentials?"include":"same-origin",signal:u.signal,body:JSON.stringify(b)}),T=R?.status,P=T===401,D=R?.statusText||"Error";try{let E=R.headers.get("content-type")||"",M=await R.clone().text();if(M)if(E.includes("application/json"))try{let N=JSON.parse(M);if((typeof h?.encryptResponse=="boolean"?h?.encryptResponse:S)&&f){let qe=h?.passphrase?typeof h.passphrase=="boolean"&&h.passphrase?A:h.passphrase:g;try{f=x(N,qe);}catch{try{f=x(N,A);}catch{}}}D=N?.message||D;}catch{D=M;}else D=M;}catch{}if(!R.ok){let E=typeof h?.disabledToastWhenCancel=="boolean"?h?.disabledToastWhenCancel:c,M={status:!1,data:void 0,message:D,isCancel:!1,isUnauthorization:P,httpCode:T,isDone:!0};h?.infoError&&i&&!E&&i(M),C(M);return}let v=R.body.getReader(),_=new TextDecoder("utf-8"),G=!1;for(;!G;){let{value:E,done:M}=await v.read();if(G=M,E){let N=_.decode(E,{stream:!G});if(N=ye(N),u.encryptResponse){let ue=u.passphrase?u.passphrase===!0?A:u.passphrase:A;try{N=x(N,ue);}catch{N=x(N,A);}}C({status:!0,data:N,message:"",isCancel:!1,isUnauthorization:P,httpCode:T,isDone:G});}}}catch(w){let u=w?.name==="AbortError";C({status:false,data:void 0,message:w instanceof Error?w.message:"Internal Server Error",isCancel:u,isUnauthorization:false,httpCode:400,isDone:true});}}}};function $r(t,e){let[r,n]=useState(false),[s,a]=useState(),[i,o]=useState(0),c=useRef(null);return useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async g=>{c.current?.abort();let O=new AbortController;c.current=O,n(true),e?.beforeRequest&&(g=e?.beforeRequest(g)),e?.logging&&console.log("Before request",g);let x={...e,signal:O.signal,onUploadProgress:q=>{let j=Math.round(q.loaded*100/(q.total||1));o(j);}},A=t.__isVoid?await t(void 0,x):await t(g,void 0,x);e?.logging&&console.log("After response",A),a(A),n(false),o(0),A.status&&e?.onSuccess&&e?.onSuccess(A),!A.status&&e?.onError&&e?.onError(A),e?.afterResponse&&e?.afterResponse(A);},{...s,loading:r,abort:()=>{c.current?.abort(),c.current=null,n(false),o(0);},progress:i,reset:()=>{n(false),o(0),a(null);}}]}function ut(t,e){let{disableHysteresis:r=false,threshold:n=100,target:s}=e,a=t.current;return s&&(typeof s.pageYOffset=="number"?t.current=s.pageYOffset:s.scrollTop!==void 0&&(t.current=s.scrollTop)),!r&&a!==void 0&&t.current<a?false:(t.current||0)>n}var ft=typeof window<"u"?window:null;function Wr(t={}){let{getTrigger:e=ut,target:r=ft,disableHysteresis:n=false,threshold:s=100}=t,a=le.useRef(0),[i,o]=le.useState(()=>e(a,{disableHysteresis:n,threshold:s,target:r}));return le.useEffect(()=>{let c=()=>{o(e(a,{disableHysteresis:n,threshold:s,target:r}));};if(c(),r)return r.addEventListener("scroll",c,{passive:true}),()=>{r.removeEventListener("scroll",c);}},[r,e,n,s]),i}var Xr=(t,e)=>{let r=e?.storeName||t.__path||t.name,n=e?.shallow??true,s=i=>{let o=i.states[r]??z,{loading:c,isCancel:p,response:y}=o,{refresh:S,abort:g,clear:O,clone:x}=Se(r)||{},A=[y?.data,{...y,loading:c,isCancel:p,refresh:S,abort:g,clear:O,clone:x}];return e?.selector?e.selector(A):A};return n?W(useShallow(s)):W(s)};var en=(t,e)=>{let r=n=>t(n);return r.displayName=e,r},tn=(t,e)=>{let r={};r.others=[];let n=s=>{le.Children.forEach(s,a=>{if(le.isValidElement(a)){let i=a.type.displayName;if(e.includes(i))r[i]=a;else {let o=a;o.props?.children?n(o.props.children):r.others.push(a);}}else r.others.push(a);});};return n(t),r};function on(t){let e=t,r=new Set;function n(){return e}function s(o){return r.add(o),()=>r.delete(o)}function a(o){typeof o=="function"?e=o(e):e=o,r.forEach(c=>c());}function i(o){let c=useRef(o?o(e):e);return useSyncExternalStore(s,()=>{let p=o?o(e):e,y=c.current;return Object.is(y,p)||(c.current=p),c.current},()=>o?o(e):e)}return {getSnapshot:n,subscribe:s,setState:a,useStore:i}}function Rt(t,e=[]){let r={};for(let n in t){let s=t[n];if(typeof s=="function"){let a=s.bind(null);a.__path=[...e,n].join("."),a.__isVoid=s.length===2,r[n]=a;}else typeof s=="object"&&s!==null?r[n]=Rt(s,[...e,n]):r[n]=s;}return r}function pn(t,e){let[r,n]=useState(false),[s,a]=useState([]),i=useRef(null);useEffect(()=>{if(e?.abortOnUnmount)return ()=>{i.current?.abort();}},[]);let o=async y=>{i.current?.abort();let S=new AbortController;i.current=S,n(true),t(y,g=>{a(O=>[...O,g]),(g.isDone||!g.status)&&(n(false),e?.onDone&&e?.onDone([...s,g])),g.status?e?.onStream&&e?.onStream(g):e?.onError&&e?.onError(g);},{signal:S.signal});},c=()=>{i.current?.abort(),i.current=null,n(false);},p=()=>{n(false),a([]);};return [s.map(y=>y.data),o,{loading:r,abort:c,reset:p}]}export{Ve as BgsCoreProvider,et as DataTypeEnum,Qe as HttpMethod,me as capitalizeWords,Hr as createApiHelper,en as createElement,on as createStore,qt as debounce,te as decrypt,Te as decryptString,z as defaultState,At as diffJson,ee as encrypt,xe as encryptString,de as generateCacheKey,Tt as generateUUID,Se as getApiActions,F as getFieldValue,Dt as isArray,I as isNotEmpty,wt as jsonCopy,fe as labelFormatter,Ct as mappingUndefinedtoNull,L as moment,ye as parseSSEChunk,Ce as registerApi,St as renderChildren,Pt as sorting,tn as splitElement,Ue as stableStringify,Ot as summary,De as unregisterApi,Ze as useApiLoad,W as useApiLoadStore,$r as useApiSend,Xr as useApiStore,pn as useApiStream,$ as useBgsCore,X as useCrypto,br as useDelay,Sr as useFormatted,wr as useInterval,vr as useKeyPress,Wr as useScrollTrigger,Ae as useStorage,Rt as wrapApi};
1
+ import ce,{createContext,useContext,useEffect,useCallback,useRef,useMemo,useState,useSyncExternalStore}from'react';import N from'dayjs';import ve from'dayjs/plugin/utc';import ke from'dayjs/plugin/timezone';import Ee from'dayjs/plugin/duration';import Ne from'dayjs/plugin/advancedFormat';import Ke from'dayjs/plugin/localizedFormat';import Me from'dayjs/plugin/relativeTime';import Fe from'dayjs/plugin/isSameOrBefore';import Le from'dayjs/plugin/isSameOrAfter';import He from'dayjs/plugin/weekOfYear';import Be from'dayjs/plugin/customParseFormat';import {jsx}from'react/jsx-runtime';import be from'crypto-js/aes';import xe from'crypto-js/pbkdf2';import ze from'crypto-js/enc-utf8';import Y from'crypto-js/enc-base64';import he from'crypto-js/lib-typedarrays';import {create}from'zustand';import {useShallow}from'zustand/react/shallow';import lt from'axios';function Tt(){let t=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>(e==="x"?t():t()&3|8).toString(16))}function At(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var Ct=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function Dt(t,e){let r=false;return t&&typeof t=="object"&&Array.isArray(t)&&(typeof e=="number"?t.length>e&&(r=true):r=true),r}function B(t){return !(t==null||typeof t=="string"&&t.trim()===""||Array.isArray(t)&&t.length===0||typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.keys(t).length===0)}var de={camelCase:(t="")=>(t=t.split(".").map(e=>(e=e.charAt(0).toUpperCase()+e.slice(1),e)).join(" "),t=t.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),t.charAt(0).toUpperCase()+t.slice(1)),snackCase:(t="")=>{let r=t.replace(/_([a-z])/g,(n,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(t="",e=false)=>{let r="";try{t=t?.split(".")[t?.split(".")?.length-1],t=t?.split("[]")[t?.split("[]")?.length-1],r=de.snackCase(de.camelCase(t)),e&&(r=r?.split(" ")?.map(n=>n?.length<=3?n?.toUpperCase():n)?.join(" "));}catch{}return r?.trim()}};function St(t,e){return typeof t=="function"?t(e):t}var M=(t,e,r="")=>{if(!t)return r;if(t.hasOwnProperty(e))return t[e];let n=e.replace(/\[(\d+)\]/g,".$1").split("."),s=t;for(let a of n){if(s==null)return r;s=s[a];}return s===void 0?r:s},Pt={desc:(t,e)=>(t||(t=[]),t.sort((r,n)=>{if(e){let s=M(r,e)?M(r,e):"",a=M(n,e)?M(r,e):"";return s<a?1:-1}else return r<n?1:-1})),asc:(t,e)=>(t||(t=[]),t.sort((r,n)=>{if(e){let s=M(r,e)?M(r,e):"",a=M(n,e)?M(n,e):"";return s>a?1:-1}else return r>n?1:-1}))},Ot=(t,e)=>{Array.isArray(t)||(t=[]);let r=[];return r=t.map(n=>Number(e?M(n,e)||0:n||0)),r.reduce((n,s)=>(n||0)+(s||0),0)||0};function wt(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function Ue(t){let e=new WeakSet;return JSON.stringify(t,function(r,n){return n!==null&&typeof n=="object"?e.has(n)?void 0:(e.add(n),Object.keys(n).sort().reduce((s,a)=>(s[a]=n[a],s),{})):n})??""}function me(t,e){return Ue([e??"undefined",t??"undefined"])}function ye(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function qt(t,e=0){let r;return function(...n){clearTimeout(r),r=setTimeout(()=>{t(...n);},e*1e3);}}var Re=t=>{let e=t.match(/^data:\s*(.*)/s);if(e)try{return JSON.parse(e[1])}catch{return null}return null};N.extend(ve);N.extend(ke);N.extend(Ee);N.extend(Ne);N.extend(Ke);N.extend(Me);N.extend(Fe);N.extend(Le);N.extend(He);N.extend(Be);var F=N;var ge=createContext(void 0);function I(){let t=useContext(ge);return t||{}}var We=({children:t,value:e})=>{let r={...e};return useEffect(()=>{(async()=>{if(!(typeof window>"u")&&e.localeConfig){let{preset:s,object:a,isLocal:i}=e.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&F.locale(s,a??{},i);}})();},[e.localeConfig]),jsx(ge.Provider,{value:r,children:t})};function re(t,e){let r=he.random(16),n=he.random(16),s=xe(e,r,{keySize:256/32,iterations:1e3}),a=be.encrypt(JSON.stringify(t),s,{iv:n}).toString();return {salt:r.toString(Y),iv:n.toString(Y),encrypted:a}}function ne(t,e){let{salt:r,iv:n,encrypted:s}=t,a=xe(e,Y.parse(r),{keySize:256/32,iterations:1e3}),o=be.decrypt(s,a,{iv:Y.parse(n)}).toString(ze);return JSON.parse(o)}function Te(t,e){return JSON.stringify(re(t,e))}function Ae(t,e){return ne(JSON.parse(t),e)}function X(){let{passphrase:t}=I();return {passphrase:t,encrypt(e,r){return re(e,r||t)},decrypt(e,r){return ne(e,r||t)},encryptString(e,r){return Te(e,r||t)},decryptString(e,r){return Ae(e,r||t)}}}var Ce=()=>{let{encrypt:t,decrypt:e}=X(),r=useCallback((i,o)=>{try{let c=t(o);localStorage.setItem(i,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[t]),n=useCallback(i=>{try{let o=localStorage.getItem(i);return o?e(JSON.parse(o)):null}catch(o){return console.error("Failed to get from storage:",o),null}},[e]),s=i=>{let[o,c]=useState(()=>{try{let p=localStorage.getItem(i);return p?e(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return useEffect(()=>{let p=y=>{if(y.key===i)if(y.newValue)try{c(e(JSON.parse(y.newValue)));}catch(S){console.error("Decrypt error from storage event",S);}else c(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[i,e]),o},a=useCallback(i=>{i?localStorage.removeItem(i):localStorage.clear();},[]);return {save:r,get:n,clear:a,useWatchStorage:s}};function Ye(t,e){for(let r in e)if(e[r]!==t[r])return e}var z={loading:false,response:void 0,isCancel:false},V=create()(t=>({states:{},updateState:(e,r)=>t(n=>{let s=n.states[e]||z,a={...s,...r};return Ye(s,a)?{states:{...n.states,[e]:a}}:n})}));var se=new Map,De=(t,e)=>{se.set(t,e);},Se=t=>{se.delete(t);},Pe=t=>se.get(t);function Ze(...t){let[e,r,n]=t,s=e.__isVoid,a=e.__path||e.name,i=s?void 0:r,o=s?r:n,c=o?.storeName||a,{updateState:p}=V(),[y,S,g]=V(useShallow(b=>{let f=b.states[c]??z;return [f.loading,f.isCancel,f.response]})),{storageKey:O,cache:T,clearPreviousData:C,refetchOnWindowFocus:q}=I(),$=Ce(),k=useRef(void 0),L=useRef(null),{cacheName:j,cacheKey:H,timeout:ue,timeoutUnit:fe,persistence:Z,cacheEnabled:Q}=useMemo(()=>{let b=O?$.get(O):void 0,f=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,R=me({...i,session:b},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),x=false;typeof T?.enabled=="boolean"&&(x=T.enabled);let P=false;typeof T?.persistence=="boolean"&&(P=T?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(P=o?.cache?.persistence??false);let D=60*5,v="s";return B(T?.timeout)&&(typeof T?.timeout=="number"?(D=T.timeout,v="s"):typeof T?.timeout=="object"&&(D=T?.timeout.value,v=T?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?x=o.cache.enabled:x=true,typeof o.cache.timeout=="number"?(D=o.cache.timeout,v="s"):typeof o.cache.timeout=="object"&&(D=o.cache.timeout.value,v=o.cache.timeout.unit)):x=o.cache),{cacheName:f,cacheKey:R,timeout:D,timeoutUnit:v,persistence:P,cacheEnabled:x}},[o?.cache,i,O,T,a]);useEffect(()=>{let b=JSON.stringify(B(k.current)?k.current:""),f=JSON.stringify(B(i)?i:""),R=k.current===void 0;(b!==f||R)&&!o?.hold&&((o?.clearPreviousData??C)&&p(c,{response:null}),m(),k.current=i),o?.onChange&&o?.onChange(i,U);},[i,o?.clearPreviousData,C,o?.hold,...o?.trigger||[]]),useEffect(()=>{let b=async()=>{!Z&&j&&H&&(await caches.open(j)).delete(H);};return window.addEventListener("beforeunload",b),()=>{window.removeEventListener("beforeunload",b),L.current?.abort();}},[Z,j,H,c,L]);let m=useCallback(async b=>{let f=i;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(f=o?.beforeRequest(i)),Q&&!b&&!S){p(c,{loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(i);let R=await caches.open(j),P=await(await R.match(H))?.json();if(P){let{data:D,expired:v}=P;if(F().isAfter(v))await R.delete(H);else {o?.afterResponse&&D?.data&&(D.data=o?.afterResponse(D.data)),o?.logging&&console.log("After request: Using Cache",D),o?.onAfterResponse&&o?.onAfterResponse(D),p(c,{loading:false,response:D});return}}}if(typeof e=="function"){L.current?.abort();let R=new AbortController;L.current=R,p(c,{loading:true}),o?.logging&&console.log("Before request",i),o?.onBeforeRequest&&o?.onBeforeRequest(i);let x=s?await e(void 0,{...o,signal:R.signal}):await e(f,void 0,{...o,signal:R.signal});if(o?.afterResponse&&x?.data&&(x.data=o?.afterResponse(x.data)),o?.logging&&console.log("After request",x),o?.onAfterResponse&&o?.onAfterResponse(x),p(c,{loading:false,response:x,isCancel:false}),Q&&x.status){let P=F().add(ue,fe).toISOString(),D={data:x,expired:P},v=await caches.open(j),_=new Response(JSON.stringify(D));await v.put(H,_);}}},[i,e,o,S]);useEffect(()=>{if(o?.refreshInterval){let b=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,f=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,R=setInterval(()=>{m();},F.duration(b,f).asMilliseconds());return ()=>clearInterval(R)}return ()=>{}},[o?.refreshInterval,m]);let l=useRef(null),{enabledRefetch:u,timeoutRefetch:A,timeoutUnitRefetch:h}=useMemo(()=>{let b=o?.refetchOnWindowFocus?.enabled??q?.enabled??false,f=o?.refetchOnWindowFocus?.timeout??q?.timeout,R=typeof f=="number"?f:f?.value??60*5,x=typeof f=="object"?f.unit:"s";return {enabledRefetch:b,timeoutRefetch:R,timeoutUnitRefetch:x}},[o?.refetchOnWindowFocus,q]);useEffect(()=>{if(!u)return;let b=F.duration(A,h).asMilliseconds(),f=()=>{let x=Date.now(),P=l.current;P!==null&&x-P>=b&&m(),l.current=null;},R=()=>{l.current=Date.now();};return window.addEventListener("focus",f),window.addEventListener("blur",R),()=>{window.removeEventListener("focus",f),window.removeEventListener("blur",R);}},[u,A,h,m]);let w=useCallback(()=>{L.current?.abort(),L.current=null,p(c,{loading:false,isCancel:true});},[c,L]),d=useCallback(()=>{p(c,{loading:false,response:null});},[c]),U=useMemo(()=>({...g,loading:y,refresh:m,abort:w,clear:d,response:g,isCancel:S,clone:(b,f)=>Ze(e,b,f)}),[g,y,m,w,d,S,e]);return useEffect(()=>(De(c,U),()=>{Se(c);}),[U,c]),[g?.data,U]}async function br(t,e=()=>{}){let r=t*1e3;return new Promise(n=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),n(true);},r);})}var Qe=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(Qe||{}),et=(l=>(l.number="number",l.currency="currency",l.percent="percent",l.date="date",l.dateTime="dateTime",l.month="month",l.year="year",l.time="time",l.timestamp="timestamp",l.string="string",l.textarea="textarea",l.code="code",l.password="password",l.boolean="boolean",l.toggle="toggle",l.email="email",l.phone="phone",l.url="url",l.json="json",l.file="file",l.image="image",l.array="array",l.object="object",l.enum="enum",l.user="user",l.department="department",l.status="status",l))(et||{});var Sr=(t,e,r)=>{let{format:n}=I();return e==="number"?nt(t,{thouSep:n.number.thouSep,decDigits:n.number.decDigits,decSep:n.number.decSep,...r}):["date","dateTime","month","year","time"].some(s=>s===e)?ot(t,{display:n[e]?.display,value:n[e]?.value,...r}):e==="boolean"?tt(t,r):e==="string"?rt(t,r):t?.toString()??""};function tt(t,e){let r=typeof t=="string"?t==="true":!!t,n=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return r?n:s}function rt(t,e){if(!B(t))return "";let r=String(t);switch(e?.textTransform){case "capitalize":r=ye(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return e?.ellipsis&&r.length>e.ellipsis&&(r=r.slice(0,e.ellipsis)+"..."),r}function nt(t,{thouSep:e,decSep:r,decDigits:n,method:s}){if(t==null||isNaN(Number(t)))return "";let a=typeof t=="string"?parseFloat(t):t;if(s)if(typeof n=="number"){let p=Math.pow(10,n);a=Math[s](a*p)/p;}else a=Math[s](a);else if(typeof n=="number"){let p=Math.pow(10,n);a=Math.floor(a*p)/p;}let i=0;if(n==="auto"){let p=a.toString(),y=p.indexOf(".");y!==-1&&(i=p.length-y-1);}let o={style:"decimal",useGrouping:true,minimumFractionDigits:n==="auto"?i:n||0,maximumFractionDigits:n==="auto"?i:n||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",o).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,e)}function ot(t,{display:e,value:r}){if(!B(t))return t;let n=F(t,r);return n.isValid()?n.format(e):t}function wr(t,{interval:e,lead:r}){let n=useRef(null);useEffect(()=>{n.current=t;},[t]),useEffect(()=>{let s=()=>n.current();if(r&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function vr(t,e,r){let[n,s]=useState(false),a=(p,y)=>typeof t=="string"&&p===t||typeof t=="number"&&y===t,i=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),o=p=>{let{key:y,keyCode:S}=p,g=p.ctrlKey,O=p.altKey,T=p.shiftKey;if(!i(document.activeElement))if(e)if(typeof e=="string")a(y,S)&&(e==="ctrl"&&g||e==="alt"&&O||e==="shift"&&T)&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));else {let C=e.every(q=>q==="ctrl"?g:q==="alt"?O:q==="shift"?T:false);a(y,S)&&C&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));}else a(y,S)&&(p.preventDefault(),r&&p.stopPropagation(),s(!n));},c=({key:p,keyCode:y})=>{a(p,y)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",o),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",o),window.removeEventListener("keyup",c);}),[]),n}var Hr=({url:t,token:e,beforeRequest:r,onCallback:n,headers:s,onUnauthorized:a,handleToast:i,handleAuthorization:o,disabledToastWhenCancel:c,withCredentials:p,encryptRequest:y,encryptResponse:S,passphrase:g})=>{let{encrypt:O,decrypt:T,passphrase:C}=X(),q=(m,l,u,A)=>{let h=A?.code==="ERR_CANCELED",w=m?.status===401,d=m?.data;if((typeof u?.encryptResponse=="boolean"?u?.encryptResponse:S)&&d){let P=u?.passphrase?typeof u.passphrase=="boolean"&&u.passphrase?C:u.passphrase:g;try{d=T(d,P);}catch{try{d=T(d,C);}catch{}}}let f={...n({...m,data:d,isCancel:h,isUnauthorization:w},A),isCancel:h,isUnauthorization:w,httpCode:m?.status},R=typeof u?.disabledToastWhenCancel=="boolean"?u?.disabledToastWhenCancel:c,x=o?o(f,u):!w;if((u?.infoSuccess&&f.status||u?.infoError&&!f.status)&&i&&(!h||!R)&&i(f),!x&&(!h||!u?.disabledHandleUnauthorized)){let P=u?.onUnauthorized||a;P&&P(f);}if(l)l(f);else return f},$=(m,l=()=>{})=>lt.create({baseURL:`${t}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(A=>l(A.response,A)),k=(m,l,u,A,h)=>{let d={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...h},U={"Content-Type":"application/json",...s,...d.headers};if(d.token&&(typeof d.token=="boolean"?e&&(U.Authorization=`Bearer ${e}`):d.token&&(U.Authorization=`Bearer ${d.token}`)),r&&(u=r(u)),(typeof d?.encryptRequest=="boolean"?d?.encryptRequest:y)&&u){let f=h?.passphrase?typeof h.passphrase=="boolean"&&h.passphrase?C:h.passphrase:g;u=O(u,f);}return $({url:l,method:m,data:u,headers:U,responseType:d.responseType,signal:d.signal,withCredentials:d.withCredentials,onUploadProgress:f=>{d?.onUploadProgress&&d?.onUploadProgress(f);}},(f,R)=>q(f,A,d,R))};return {client:$,post:(m,l,u,A)=>k("POST",`${m}`,l,u,A),put:(m,l,u,A)=>k("PUT",`${m}`,l,u,A),patch:(m,l,u,A)=>k("PATCH",`${m}`,l,u,A),delete:(m,l,u)=>k("DELETE",`${m}`,null,l,u),get:(m,l,u)=>k("GET",`${m}`,null,l,u),upload:(m,l,u,A)=>{let h=new FormData;return Object.keys(l).forEach(w=>h.append(w,l[w])),k("POST",`${m}`,h,u,{infoSuccess:false,...A,headers:{"Content-Type":"multipart/form-data",...A?.headers}})},stream:async(m,l,u,A,h)=>{try{let d={...{token:!0,responseType:"json",infoError:!0},...h},U={"Content-Type":"application/json",...s,...d.headers};if(d.token){let E=typeof d.token=="boolean"?e:d.token;E&&(U.Authorization=`Bearer ${E}`);}let b=u;if(r&&(b=r(b)),(typeof d.encryptRequest=="boolean"?d.encryptRequest:y)&&b){let E=d.passphrase?typeof d.passphrase=="boolean"&&d.passphrase?C:d.passphrase:g;b=O(b,E);}let R=await fetch(`${t}${l}`,{method:m,headers:U,credentials:d.withCredentials?"include":"same-origin",signal:d.signal,body:JSON.stringify(b)}),x=R?.status,P=x===401,D=R?.statusText||"Error";try{let E=R.headers.get("content-type")||"",K=await R.clone().text();if(K)if(E.includes("application/json"))try{let W=JSON.parse(K);if((typeof h?.encryptResponse=="boolean"?h?.encryptResponse:S)&&u){let G=h?.passphrase?typeof h.passphrase=="boolean"&&h.passphrase?C:h.passphrase:g;try{u=T(W,G);}catch{try{u=T(W,C);}catch{}}}D=W?.message||D;}catch{D=K;}else D=K;}catch{}if(!R.ok){let E=typeof h?.disabledToastWhenCancel=="boolean"?h?.disabledToastWhenCancel:c,K={status:!1,data:void 0,message:D,isCancel:!1,isUnauthorization:P,httpCode:x,isDone:!0};h?.infoError&&i&&!E&&i(K),A(K);return}let v=R.body.getReader(),_=new TextDecoder("utf-8"),ee="";for(;;){let{done:E,value:K}=await v.read();if(E)break;ee+=_.decode(K,{stream:!0});let W=ee.split(`
2
+
3
+ `);ee=W.pop();for(let te of W)if(te.startsWith("data:"))try{let G=Re(te);A({status:!0,data:G,message:"",isCancel:!1,isUnauthorization:P,httpCode:x,isDone:E});}catch{}}}catch(w){let d=w?.name==="AbortError";A({status:false,data:void 0,message:w instanceof Error?w.message:"Internal Server Error",isCancel:d,isUnauthorization:false,httpCode:400,isDone:true});}}}};function $r(t,e){let[r,n]=useState(false),[s,a]=useState(),[i,o]=useState(0),c=useRef(null);return useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async g=>{c.current?.abort();let O=new AbortController;c.current=O,n(true),e?.beforeRequest&&(g=e?.beforeRequest(g)),e?.logging&&console.log("Before request",g);let T={...e,signal:O.signal,onUploadProgress:q=>{let $=Math.round(q.loaded*100/(q.total||1));o($);}},C=t.__isVoid?await t(void 0,T):await t(g,void 0,T);e?.logging&&console.log("After response",C),a(C),n(false),o(0),C.status&&e?.onSuccess&&e?.onSuccess(C),!C.status&&e?.onError&&e?.onError(C),e?.afterResponse&&e?.afterResponse(C);},{...s,loading:r,abort:()=>{c.current?.abort(),c.current=null,n(false),o(0);},progress:i,reset:()=>{n(false),o(0),a(null);}}]}function ut(t,e){let{disableHysteresis:r=false,threshold:n=100,target:s}=e,a=t.current;return s&&(typeof s.pageYOffset=="number"?t.current=s.pageYOffset:s.scrollTop!==void 0&&(t.current=s.scrollTop)),!r&&a!==void 0&&t.current<a?false:(t.current||0)>n}var ft=typeof window<"u"?window:null;function Vr(t={}){let{getTrigger:e=ut,target:r=ft,disableHysteresis:n=false,threshold:s=100}=t,a=ce.useRef(0),[i,o]=ce.useState(()=>e(a,{disableHysteresis:n,threshold:s,target:r}));return ce.useEffect(()=>{let c=()=>{o(e(a,{disableHysteresis:n,threshold:s,target:r}));};if(c(),r)return r.addEventListener("scroll",c,{passive:true}),()=>{r.removeEventListener("scroll",c);}},[r,e,n,s]),i}var Xr=(t,e)=>{let r=e?.storeName||t.__path||t.name,n=e?.shallow??true,s=i=>{let o=i.states[r]??z,{loading:c,isCancel:p,response:y}=o,{refresh:S,abort:g,clear:O,clone:T}=Pe(r)||{},C=[y?.data,{...y,loading:c,isCancel:p,refresh:S,abort:g,clear:O,clone:T}];return e?.selector?e.selector(C):C};return n?V(useShallow(s)):V(s)};var en=(t,e)=>{let r=n=>t(n);return r.displayName=e,r},tn=(t,e)=>{let r={};r.others=[];let n=s=>{ce.Children.forEach(s,a=>{if(ce.isValidElement(a)){let i=a.type.displayName;if(e.includes(i))r[i]=a;else {let o=a;o.props?.children?n(o.props.children):r.others.push(a);}}else r.others.push(a);});};return n(t),r};function on(t){let e=t,r=new Set;function n(){return e}function s(o){return r.add(o),()=>r.delete(o)}function a(o){typeof o=="function"?e=o(e):e=o,r.forEach(c=>c());}function i(o){let c=useRef(o?o(e):e);return useSyncExternalStore(s,()=>{let p=o?o(e):e,y=c.current;return Object.is(y,p)||(c.current=p),c.current},()=>o?o(e):e)}return {getSnapshot:n,subscribe:s,setState:a,useStore:i}}function Rt(t,e=[]){let r={};for(let n in t){let s=t[n];if(typeof s=="function"){let a=s.bind(null);a.__path=[...e,n].join("."),a.__isVoid=s.length===2,r[n]=a;}else typeof s=="object"&&s!==null?r[n]=Rt(s,[...e,n]):r[n]=s;}return r}function pn(t,e){let[r,n]=useState(false),[s,a]=useState([]),i=useRef(null);useEffect(()=>{if(e?.abortOnUnmount)return ()=>{i.current?.abort();}},[]);let o=async y=>{i.current?.abort();let S=new AbortController;i.current=S,n(true),t(y,g=>{a(O=>[...O,g]),(g.isDone||!g.status)&&(n(false),e?.onDone&&e?.onDone([...s,g])),g.status?e?.onStream&&e?.onStream(g):e?.onError&&e?.onError(g);},{signal:S.signal});},c=()=>{i.current?.abort(),i.current=null,n(false);},p=()=>{n(false),a([]);};return [s.map(y=>y.data),o,{loading:r,abort:c,reset:p}]}export{We as BgsCoreProvider,et as DataTypeEnum,Qe as HttpMethod,ye as capitalizeWords,Hr as createApiHelper,en as createElement,on as createStore,qt as debounce,ne as decrypt,Ae as decryptString,z as defaultState,At as diffJson,re as encrypt,Te as encryptString,me as generateCacheKey,Tt as generateUUID,Pe as getApiActions,M as getFieldValue,Dt as isArray,B as isNotEmpty,wt as jsonCopy,de as labelFormatter,Ct as mappingUndefinedtoNull,F as moment,Re as parseSSEChunk,De as registerApi,St as renderChildren,Pt as sorting,tn as splitElement,Ue as stableStringify,Ot as summary,Se as unregisterApi,Ze as useApiLoad,V as useApiLoadStore,$r as useApiSend,Xr as useApiStore,pn as useApiStream,I as useBgsCore,X as useCrypto,br as useDelay,Sr as useFormatted,wr as useInterval,vr as useKeyPress,Vr as useScrollTrigger,Ce as useStorage,Rt as wrapApi};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgscore/react-core",
3
- "version": "0.0.65",
3
+ "version": "0.0.66",
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",