@bgscore/react-core 0.0.62 → 0.0.63

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 ie=require('react'),N=require('dayjs'),qe=require('dayjs/plugin/utc'),Ue=require('dayjs/plugin/timezone'),ve=require('dayjs/plugin/duration'),ke=require('dayjs/plugin/advancedFormat'),Ne=require('dayjs/plugin/localizedFormat'),Ee=require('dayjs/plugin/relativeTime'),Ke=require('dayjs/plugin/isSameOrBefore'),Fe=require('dayjs/plugin/isSameOrAfter'),Me=require('dayjs/plugin/weekOfYear'),Le=require('dayjs/plugin/customParseFormat'),jsxRuntime=require('react/jsx-runtime'),Re=require('crypto-js/aes'),ge=require('crypto-js/pbkdf2'),Ve=require('crypto-js/enc-utf8'),G=require('crypto-js/enc-base64'),ye=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),shallow=require('zustand/react/shallow'),at=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ie__default=/*#__PURE__*/_interopDefault(ie);var N__default=/*#__PURE__*/_interopDefault(N);var qe__default=/*#__PURE__*/_interopDefault(qe);var Ue__default=/*#__PURE__*/_interopDefault(Ue);var ve__default=/*#__PURE__*/_interopDefault(ve);var ke__default=/*#__PURE__*/_interopDefault(ke);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var Ee__default=/*#__PURE__*/_interopDefault(Ee);var Ke__default=/*#__PURE__*/_interopDefault(Ke);var Fe__default=/*#__PURE__*/_interopDefault(Fe);var Me__default=/*#__PURE__*/_interopDefault(Me);var Le__default=/*#__PURE__*/_interopDefault(Le);var Re__default=/*#__PURE__*/_interopDefault(Re);var ge__default=/*#__PURE__*/_interopDefault(ge);var Ve__default=/*#__PURE__*/_interopDefault(Ve);var G__default=/*#__PURE__*/_interopDefault(G);var ye__default=/*#__PURE__*/_interopDefault(ye);var at__default=/*#__PURE__*/_interopDefault(at);function yt(){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 Rt(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var gt=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function ht(t,e){let n=false;return t&&typeof t=="object"&&Array.isArray(t)&&(typeof e=="number"?t.length>e&&(n=true):n=true),n}function H(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 ce={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 n=t.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(t="",e=false)=>{let n="";try{t=t?.split(".")[t?.split(".")?.length-1],t=t?.split("[]")[t?.split("[]")?.length-1],n=ce.snackCase(ce.camelCase(t)),e&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function bt(t,e){return typeof t=="function"?t(e):t}var E=(t,e,n="")=>{if(!t)return n;if(t.hasOwnProperty(e))return t[e];let o=e.replace(/\[(\d+)\]/g,".$1").split("."),s=t;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},Tt={desc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=E(n,e)?E(n,e):"",a=E(o,e)?E(n,e):"";return s<a?1:-1}else return n<o?1:-1})),asc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=E(n,e)?E(n,e):"",a=E(o,e)?E(o,e):"";return s>a?1:-1}else return n>o?1:-1}))},xt=(t,e)=>{Array.isArray(t)||(t=[]);let n=[];return n=t.map(o=>Number(e?E(o,e)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function Ct(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function we(t){let e=new WeakSet;return JSON.stringify(t,function(n,o){return o!==null&&typeof o=="object"?e.has(o)?void 0:(e.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function ue(t,e){return we([e??"undefined",t??"undefined"])}function fe(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function At(t,e=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{t(...o);},e*1e3);}}var de=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(qe__default.default);N__default.default.extend(Ue__default.default);N__default.default.extend(ve__default.default);N__default.default.extend(ke__default.default);N__default.default.extend(Ne__default.default);N__default.default.extend(Ee__default.default);N__default.default.extend(Ke__default.default);N__default.default.extend(Fe__default.default);N__default.default.extend(Me__default.default);N__default.default.extend(Le__default.default);var K=N__default.default;var me=ie.createContext(void 0);function I(){let t=ie.useContext(me);return t||{}}var $e=({children:t,value:e})=>{let n={...e};return ie.useEffect(()=>{(async()=>{if(!(typeof window>"u")&&e.localeConfig){let{preset:s,object:a,isLocal:p}=e.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&K.locale(s,a??{},p);}})();},[e.localeConfig]),jsxRuntime.jsx(me.Provider,{value:n,children:t})};function Q(t,e){let n=ye__default.default.random(16),o=ye__default.default.random(16),s=ge__default.default(e,n,{keySize:256/32,iterations:1e3}),a=Re__default.default.encrypt(JSON.stringify(t),s,{iv:o}).toString();return {salt:n.toString(G__default.default),iv:o.toString(G__default.default),encrypted:a}}function ee(t,e){let{salt:n,iv:o,encrypted:s}=t,a=ge__default.default(e,G__default.default.parse(n),{keySize:256/32,iterations:1e3}),r=Re__default.default.decrypt(s,a,{iv:G__default.default.parse(o)}).toString(Ve__default.default);return JSON.parse(r)}function he(t,e){return JSON.stringify(Q(t,e))}function be(t,e){return ee(JSON.parse(t),e)}function Y(){let{passphrase:t}=I();return {passphrase:t,encrypt(e,n){return Q(e,n||t)},decrypt(e,n){return ee(e,n||t)},encryptString(e,n){return he(e,n||t)},decryptString(e,n){return be(e,n||t)}}}var Te=()=>{let{encrypt:t,decrypt:e}=Y(),n=ie.useCallback((p,r)=>{try{let c=t(r);localStorage.setItem(p,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[t]),o=ie.useCallback(p=>{try{let r=localStorage.getItem(p);return r?e(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[e]),s=p=>{let[r,c]=ie.useState(()=>{try{let l=localStorage.getItem(p);return l?e(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return ie.useEffect(()=>{let l=y=>{if(y.key===p)if(y.newValue)try{c(e(JSON.parse(y.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else c(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[p,e]),r},a=ie.useCallback(p=>{p?localStorage.removeItem(p):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};function _e(t,e){for(let n in e)if(e[n]!==t[n])return e}var W={loading:false,response:void 0,isCancel:false},V=zustand.create()(t=>({states:{},updateState:(e,n)=>t(o=>{let s=o.states[e]||W,a={...s,...n};return _e(s,a)?{states:{...o.states,[e]:a}}:o})}));var ne=new Map,xe=(t,e)=>{ne.set(t,e);},Ce=t=>{ne.delete(t);},Ae=t=>ne.get(t);function Ye(...t){let[e,n,o]=t,s=e.__isVoid,a=e.__path||e.name,p=s?void 0:n,r=s?n:o,c=r?.storeName||a,{updateState:l}=V(),[y,P,A]=V(shallow.useShallow(R=>{let f=R.states[c]??W;return [f.loading,f.isCancel,f.response]})),{storageKey:w,cache:b,clearPreviousData:T,refetchOnWindowFocus:q}=I(),$=Te(),k=ie.useRef(void 0),F=ie.useRef(null),{cacheName:j,cacheKey:M,timeout:le,timeoutUnit:pe,persistence:X,cacheEnabled:Z}=ie.useMemo(()=>{let R=w?$.get(w):void 0,f=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,g=ue({...p,session:R},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),h=false;typeof b?.enabled=="boolean"&&(h=b.enabled);let C=false;typeof b?.persistence=="boolean"&&(C=b?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(C=r?.cache?.persistence??false);let S=60*5,v="s";return H(b?.timeout)&&(typeof b?.timeout=="number"?(S=b.timeout,v="s"):typeof b?.timeout=="object"&&(S=b?.timeout.value,v=b?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?h=r.cache.enabled:h=true,typeof r.cache.timeout=="number"?(S=r.cache.timeout,v="s"):typeof r.cache.timeout=="object"&&(S=r.cache.timeout.value,v=r.cache.timeout.unit)):h=r.cache),{cacheName:f,cacheKey:g,timeout:S,timeoutUnit:v,persistence:C,cacheEnabled:h}},[r?.cache,p,w,b,a]);ie.useEffect(()=>{let R=JSON.stringify(H(k.current)?k.current:""),f=JSON.stringify(H(p)?p:""),g=k.current===void 0;(R!==f||g)&&!r?.hold&&((r?.clearPreviousData??T)&&l(c,{response:null}),m(),k.current=p),r?.onChange&&r?.onChange(p,U);},[p,r?.clearPreviousData,T,r?.hold,...r?.trigger||[]]),ie.useEffect(()=>{let R=async()=>{!X&&j&&M&&(await caches.open(j)).delete(M);};return window.addEventListener("beforeunload",R),()=>{window.removeEventListener("beforeunload",R),F.current?.abort();}},[X,j,M,c,F]);let m=ie.useCallback(async R=>{let f=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(f=r?.beforeRequest(p)),Z&&!R&&!P){l(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=await caches.open(j),C=await(await g.match(M))?.json();if(C){let{data:S,expired:v}=C;if(K().isAfter(v))await g.delete(M);else {r?.afterResponse&&S?.data&&(S.data=r?.afterResponse(S.data)),r?.logging&&console.log("After request: Using Cache",S),r?.onAfterResponse&&r?.onAfterResponse(S),l(c,{loading:false,response:S});return}}}if(typeof e=="function"){F.current?.abort();let g=new AbortController;F.current=g,l(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let h=s?await e(void 0,{...r,signal:g.signal}):await e(f,void 0,{...r,signal:g.signal});if(r?.afterResponse&&h?.data&&(h.data=r?.afterResponse(h.data)),r?.logging&&console.log("After request",h),r?.onAfterResponse&&r?.onAfterResponse(h),l(c,{loading:false,response:h,isCancel:false}),Z&&h.status){let C=K().add(le,pe).toISOString(),S={data:h,expired:C},v=await caches.open(j),J=new Response(JSON.stringify(S));await v.put(M,J);}}},[p,e,r,P]);ie.useEffect(()=>{if(r?.refreshInterval){let R=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,f=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,g=setInterval(()=>{m();},K.duration(R,f).asMilliseconds());return ()=>clearInterval(g)}return ()=>{}},[r?.refreshInterval,m]);let i=ie.useRef(null),{enabledRefetch:d,timeoutRefetch:x,timeoutUnitRefetch:D}=ie.useMemo(()=>{let R=r?.refetchOnWindowFocus?.enabled??q?.enabled??false,f=r?.refetchOnWindowFocus?.timeout??q?.timeout,g=typeof f=="number"?f:f?.value??60*5,h=typeof f=="object"?f.unit:"s";return {enabledRefetch:R,timeoutRefetch:g,timeoutUnitRefetch:h}},[r?.refetchOnWindowFocus,q]);ie.useEffect(()=>{if(!d)return;let R=K.duration(x,D).asMilliseconds(),f=()=>{let h=Date.now(),C=i.current;C!==null&&h-C>=R&&m(),i.current=null;},g=()=>{i.current=Date.now();};return window.addEventListener("focus",f),window.addEventListener("blur",g),()=>{window.removeEventListener("focus",f),window.removeEventListener("blur",g);}},[d,x,D,m]);let O=ie.useCallback(()=>{F.current?.abort(),F.current=null,l(c,{loading:false,isCancel:true});},[c,F]),u=ie.useCallback(()=>{l(c,{loading:false,response:null});},[c]),U=ie.useMemo(()=>({...A,loading:y,refresh:m,abort:O,clear:u,response:A,isCancel:P,clone:(R,f)=>Ye(e,R,f)}),[A,y,m,O,u,P,e]);return ie.useEffect(()=>(xe(c,U),()=>{Ce(c);}),[U,c]),[A?.data,U]}async function mn(t,e=()=>{}){let n=t*1e3;return new Promise(o=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),o(true);},n);})}var Xe=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(Xe||{}),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 Tn=(t,e,n)=>{let{format:o}=I();return e==="number"?tt(t,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===e)?nt(t,{display:o[e]?.display,value:o[e]?.value,...n}):e==="boolean"?Qe(t,n):e==="string"?et(t,n):t?.toString()??""};function Qe(t,e){let n=typeof t=="string"?t==="true":!!t,o=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return n?o:s}function et(t,e){if(!H(t))return "";let n=String(t);switch(e?.textTransform){case "capitalize":n=fe(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return e?.ellipsis&&n.length>e.ellipsis&&(n=n.slice(0,e.ellipsis)+"..."),n}function tt(t,{thouSep:e,decSep:n,decDigits:o,method:s}){if(t==null||isNaN(Number(t)))return "";let a=typeof t=="string"?parseFloat(t):t;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(),y=l.indexOf(".");y!==-1&&(p=l.length-y-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,e)}function nt(t,{display:e,value:n}){if(!H(t))return t;let o=K(t,n);return o.isValid()?o.format(e):t}function An(t,{interval:e,lead:n}){let o=ie.useRef(null);ie.useEffect(()=>{o.current=t;},[t]),ie.useEffect(()=>{let s=()=>o.current();if(n&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function Pn(t,e,n){let[o,s]=ie.useState(false),a=(l,y)=>typeof t=="string"&&l===t||typeof t=="number"&&y===t,p=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:y,keyCode:P}=l,A=l.ctrlKey,w=l.altKey,b=l.shiftKey;if(!p(document.activeElement))if(e)if(typeof e=="string")a(y,P)&&(e==="ctrl"&&A||e==="alt"&&w||e==="shift"&&b)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let T=e.every(q=>q==="ctrl"?A:q==="alt"?w:q==="shift"?b:false);a(y,P)&&T&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(y,P)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},c=({key:l,keyCode:y})=>{a(l,y)&&s(false);};return ie.useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var En=({url:t,token:e,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:y,encryptResponse:P,passphrase:A})=>{let{encrypt:w,decrypt:b,passphrase:T}=Y(),q=(m,i,d,x)=>{let D=x?.code==="ERR_CANCELED",O=m?.status===401,u=m?.data;if((typeof d?.encryptResponse=="boolean"?d?.encryptResponse:P)&&u){let C=d?.passphrase?typeof d.passphrase=="boolean"&&d.passphrase?T:d.passphrase:A;try{u=b(u,C);}catch{try{u=b(u,T);}catch{}}}let f={...o({...m,data:u,isCancel:D,isUnauthorization:O},x),isCancel:D,isUnauthorization:O,httpCode:m?.status},g=typeof d?.disabledToastWhenCancel=="boolean"?d?.disabledToastWhenCancel:c,h=r?r(f,d):!O;if((d?.infoSuccess&&f.status||d?.infoError&&!f.status)&&p&&(!D||!g)&&p(f),!h&&(!D||!d?.disabledHandleUnauthorized)){let C=d?.onUnauthorized||a;C&&C(f);}if(i)i(f);else return f},$=(m,i=()=>{})=>at__default.default.create({baseURL:`${t}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:l})(m).then(i).catch(x=>i(x.response,x)),k=(m,i,d,x,D)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...D},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}`)),n&&(d=n(d)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:y)&&d){let f=D?.passphrase?typeof D.passphrase=="boolean"&&D.passphrase?T:D.passphrase:A;d=w(d,f);}return $({url:i,method:m,data:d,headers:U,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:f=>{u?.onUploadProgress&&u?.onUploadProgress(f);}},(f,g)=>q(f,x,u,g))};return {client:$,post:(m,i,d,x)=>k("POST",`${m}`,i,d,x),put:(m,i,d,x)=>k("PUT",`${m}`,i,d,x),patch:(m,i,d,x)=>k("PATCH",`${m}`,i,d,x),delete:(m,i,d)=>k("DELETE",`${m}`,null,i,d),get:(m,i,d)=>k("GET",`${m}`,null,i,d),upload:(m,i,d,x)=>{let D=new FormData;return Object.keys(i).forEach(O=>D.append(O,i[O])),k("POST",`${m}`,D,d,{infoSuccess:false,...x,headers:{"Content-Type":"multipart/form-data",...x?.headers}})},stream:async(m,i,d,x,D)=>{try{let u={...{token:!0,responseType:"json"},...D},U={"Content-Type":"application/json",...s,...u.headers};if(u.token){let L=typeof u.token=="boolean"?e:u.token;L&&(U.Authorization=`Bearer ${L}`);}let R=d;if(n&&(R=n(R)),(typeof u.encryptRequest=="boolean"?u.encryptRequest:y)&&R){let L=u.passphrase?typeof u.passphrase=="boolean"&&u.passphrase?T:u.passphrase:A;R=w(R,L);}let g=await fetch(`${t}${i}`,{method:m,headers:U,credentials:u.withCredentials?"include":"same-origin",signal:u.signal,body:JSON.stringify(R)}),h=g?.status,C=h===401,S=g?.statusText||"Internal Server Error";if(!g.ok){x({status:!1,data:void 0,message:S,isCancel:!1,isUnauthorization:C,httpCode:h,isDone:!0});return}let v=g.body.getReader(),J=new TextDecoder("utf-8"),_=!1;for(;!_;){let{value:L,done:Pe}=await v.read();if(_=Pe,L){let B=J.decode(L,{stream:!_});if(B=de(B),u.encryptResponse){let Oe=u.passphrase?u.passphrase===!0?T:u.passphrase:T;try{B=b(B,Oe);}catch{B=b(B,T);}}x({status:!0,data:B,message:"",isCancel:!1,isUnauthorization:C,httpCode:h,isDone:_});}}}catch(O){let u=O?.name==="AbortError";x({status:false,data:void 0,message:O instanceof Error?O.message:"Internal Server Error",isCancel:u,isUnauthorization:false,httpCode:400,isDone:true});}}}};function Mn(t,e){let[n,o]=ie.useState(false),[s,a]=ie.useState(),[p,r]=ie.useState(0),c=ie.useRef(null);return ie.useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async A=>{c.current?.abort();let w=new AbortController;c.current=w,o(true),e?.beforeRequest&&(A=e?.beforeRequest(A)),e?.logging&&console.log("Before request",A);let b={...e,signal:w.signal,onUploadProgress:q=>{let $=Math.round(q.loaded*100/(q.total||1));r($);}},T=t.__isVoid?await t(void 0,b):await t(A,void 0,b);e?.logging&&console.log("After response",T),a(T),o(false),r(0),T.status&&e?.onSuccess&&e?.onSuccess(T),!T.status&&e?.onError&&e?.onError(T),e?.afterResponse&&e?.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 pt(t,e){let{disableHysteresis:n=false,threshold:o=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)),!n&&a!==void 0&&t.current<a?false:(t.current||0)>o}var ct=typeof window<"u"?window:null;function Hn(t={}){let{getTrigger:e=pt,target:n=ct,disableHysteresis:o=false,threshold:s=100}=t,a=ie__default.default.useRef(0),[p,r]=ie__default.default.useState(()=>e(a,{disableHysteresis:o,threshold:s,target:n}));return ie__default.default.useEffect(()=>{let c=()=>{r(e(a,{disableHysteresis:o,threshold:s,target:n}));};if(c(),n)return n.addEventListener("scroll",c,{passive:true}),()=>{n.removeEventListener("scroll",c);}},[n,e,o,s]),p}var zn=(t,e)=>{let n=e?.storeName||t.__path||t.name,o=e?.shallow??true,s=p=>{let r=p.states[n]??W,{loading:c,isCancel:l,response:y}=r,{refresh:P,abort:A,clear:w,clone:b}=Ae(n)||{},T=[y?.data,{...y,loading:c,isCancel:l,refresh:P,abort:A,clear:w,clone:b}];return e?.selector?e.selector(T):T};return o?V(shallow.useShallow(s)):V(s)};var Gn=(t,e)=>{let n=o=>t(o);return n.displayName=e,n},Yn=(t,e)=>{let n={};n.others=[];let o=s=>{ie__default.default.Children.forEach(s,a=>{if(ie__default.default.isValidElement(a)){let p=a.type.displayName;if(e.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(t),n};function Qn(t){let e=t,n=new Set;function o(){return e}function s(r){return n.add(r),()=>n.delete(r)}function a(r){typeof r=="function"?e=r(e):e=r,n.forEach(c=>c());}function p(r){let c=ie.useRef(r?r(e):e);return ie.useSyncExternalStore(s,()=>{let l=r?r(e):e,y=c.current;return Object.is(y,l)||(c.current=l),c.current},()=>r?r(e):e)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function mt(t,e=[]){let n={};for(let o in t){let s=t[o];if(typeof s=="function"){let a=s.bind(null);a.__path=[...e,o].join("."),a.__isVoid=s.length===2,n[o]=a;}else typeof s=="object"&&s!==null?n[o]=mt(s,[...e,o]):n[o]=s;}return n}exports.BgsCoreProvider=$e;exports.DataTypeEnum=Ze;exports.HttpMethod=Xe;exports.capitalizeWords=fe;exports.createApiHelper=En;exports.createElement=Gn;exports.createStore=Qn;exports.debounce=At;exports.decrypt=ee;exports.decryptString=be;exports.defaultState=W;exports.diffJson=Rt;exports.encrypt=Q;exports.encryptString=he;exports.generateCacheKey=ue;exports.generateUUID=yt;exports.getApiActions=Ae;exports.getFieldValue=E;exports.isArray=ht;exports.isNotEmpty=H;exports.jsonCopy=Ct;exports.labelFormatter=ce;exports.mappingUndefinedtoNull=gt;exports.moment=K;exports.parseSSEChunk=de;exports.registerApi=xe;exports.renderChildren=bt;exports.sorting=Tt;exports.splitElement=Yn;exports.stableStringify=we;exports.summary=xt;exports.unregisterApi=Ce;exports.useApiLoad=Ye;exports.useApiLoadStore=V;exports.useApiSend=Mn;exports.useApiStore=zn;exports.useBgsCore=I;exports.useCrypto=Y;exports.useDelay=mn;exports.useFormatted=Tn;exports.useInterval=An;exports.useKeyPress=Pn;exports.useScrollTrigger=Hn;exports.useStorage=Te;exports.wrapApi=mt;
1
+ 'use strict';var ie=require('react'),N=require('dayjs'),Ue=require('dayjs/plugin/utc'),ve=require('dayjs/plugin/timezone'),ke=require('dayjs/plugin/duration'),Ne=require('dayjs/plugin/advancedFormat'),Ee=require('dayjs/plugin/localizedFormat'),Ke=require('dayjs/plugin/relativeTime'),Me=require('dayjs/plugin/isSameOrBefore'),Fe=require('dayjs/plugin/isSameOrAfter'),Le=require('dayjs/plugin/weekOfYear'),Be=require('dayjs/plugin/customParseFormat'),jsxRuntime=require('react/jsx-runtime'),Re=require('crypto-js/aes'),ge=require('crypto-js/pbkdf2'),We=require('crypto-js/enc-utf8'),G=require('crypto-js/enc-base64'),ye=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),shallow=require('zustand/react/shallow'),it=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ie__default=/*#__PURE__*/_interopDefault(ie);var N__default=/*#__PURE__*/_interopDefault(N);var Ue__default=/*#__PURE__*/_interopDefault(Ue);var ve__default=/*#__PURE__*/_interopDefault(ve);var ke__default=/*#__PURE__*/_interopDefault(ke);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var Ee__default=/*#__PURE__*/_interopDefault(Ee);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 Be__default=/*#__PURE__*/_interopDefault(Be);var Re__default=/*#__PURE__*/_interopDefault(Re);var ge__default=/*#__PURE__*/_interopDefault(ge);var We__default=/*#__PURE__*/_interopDefault(We);var G__default=/*#__PURE__*/_interopDefault(G);var ye__default=/*#__PURE__*/_interopDefault(ye);var it__default=/*#__PURE__*/_interopDefault(it);function ht(){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 bt(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var xt=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function Tt(t,e){let n=false;return t&&typeof t=="object"&&Array.isArray(t)&&(typeof e=="number"?t.length>e&&(n=true):n=true),n}function H(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 ce={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 n=t.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(t="",e=false)=>{let n="";try{t=t?.split(".")[t?.split(".")?.length-1],t=t?.split("[]")[t?.split("[]")?.length-1],n=ce.snackCase(ce.camelCase(t)),e&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function Ct(t,e){return typeof t=="function"?t(e):t}var E=(t,e,n="")=>{if(!t)return n;if(t.hasOwnProperty(e))return t[e];let o=e.replace(/\[(\d+)\]/g,".$1").split("."),s=t;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},At={desc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=E(n,e)?E(n,e):"",a=E(o,e)?E(n,e):"";return s<a?1:-1}else return n<o?1:-1})),asc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=E(n,e)?E(n,e):"",a=E(o,e)?E(o,e):"";return s>a?1:-1}else return n>o?1:-1}))},Dt=(t,e)=>{Array.isArray(t)||(t=[]);let n=[];return n=t.map(o=>Number(e?E(o,e)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function St(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function qe(t){let e=new WeakSet;return JSON.stringify(t,function(n,o){return o!==null&&typeof o=="object"?e.has(o)?void 0:(e.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function ue(t,e){return qe([e??"undefined",t??"undefined"])}function fe(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function Pt(t,e=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{t(...o);},e*1e3);}}var de=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(Ue__default.default);N__default.default.extend(ve__default.default);N__default.default.extend(ke__default.default);N__default.default.extend(Ne__default.default);N__default.default.extend(Ee__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(Be__default.default);var K=N__default.default;var me=ie.createContext(void 0);function I(){let t=ie.useContext(me);return t||{}}var je=({children:t,value:e})=>{let n={...e};return ie.useEffect(()=>{(async()=>{if(!(typeof window>"u")&&e.localeConfig){let{preset:s,object:a,isLocal:p}=e.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&K.locale(s,a??{},p);}})();},[e.localeConfig]),jsxRuntime.jsx(me.Provider,{value:n,children:t})};function Q(t,e){let n=ye__default.default.random(16),o=ye__default.default.random(16),s=ge__default.default(e,n,{keySize:256/32,iterations:1e3}),a=Re__default.default.encrypt(JSON.stringify(t),s,{iv:o}).toString();return {salt:n.toString(G__default.default),iv:o.toString(G__default.default),encrypted:a}}function ee(t,e){let{salt:n,iv:o,encrypted:s}=t,a=ge__default.default(e,G__default.default.parse(n),{keySize:256/32,iterations:1e3}),r=Re__default.default.decrypt(s,a,{iv:G__default.default.parse(o)}).toString(We__default.default);return JSON.parse(r)}function he(t,e){return JSON.stringify(Q(t,e))}function be(t,e){return ee(JSON.parse(t),e)}function Y(){let{passphrase:t}=I();return {passphrase:t,encrypt(e,n){return Q(e,n||t)},decrypt(e,n){return ee(e,n||t)},encryptString(e,n){return he(e,n||t)},decryptString(e,n){return be(e,n||t)}}}var xe=()=>{let{encrypt:t,decrypt:e}=Y(),n=ie.useCallback((p,r)=>{try{let c=t(r);localStorage.setItem(p,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[t]),o=ie.useCallback(p=>{try{let r=localStorage.getItem(p);return r?e(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[e]),s=p=>{let[r,c]=ie.useState(()=>{try{let i=localStorage.getItem(p);return i?e(JSON.parse(i)):null}catch(i){return console.error("Failed to parse localStorage value",i),null}});return ie.useEffect(()=>{let i=y=>{if(y.key===p)if(y.newValue)try{c(e(JSON.parse(y.newValue)));}catch(A){console.error("Decrypt error from storage event",A);}else c(null);};return window.addEventListener("storage",i),()=>window.removeEventListener("storage",i)},[p,e]),r},a=ie.useCallback(p=>{p?localStorage.removeItem(p):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};function Ge(t,e){for(let n in e)if(e[n]!==t[n])return e}var W={loading:false,response:void 0,isCancel:false},V=zustand.create()(t=>({states:{},updateState:(e,n)=>t(o=>{let s=o.states[e]||W,a={...s,...n};return Ge(s,a)?{states:{...o.states,[e]:a}}:o})}));var ne=new Map,Te=(t,e)=>{ne.set(t,e);},Ce=t=>{ne.delete(t);},Ae=t=>ne.get(t);function Xe(...t){let[e,n,o]=t,s=e.__isVoid,a=e.__path||e.name,p=s?void 0:n,r=s?n:o,c=r?.storeName||a,{updateState:i}=V(),[y,A,C]=V(shallow.useShallow(R=>{let f=R.states[c]??W;return [f.loading,f.isCancel,f.response]})),{storageKey:w,cache:b,clearPreviousData:x,refetchOnWindowFocus:q}=I(),$=xe(),k=ie.useRef(void 0),M=ie.useRef(null),{cacheName:j,cacheKey:F,timeout:le,timeoutUnit:pe,persistence:X,cacheEnabled:Z}=ie.useMemo(()=>{let R=w?$.get(w):void 0,f=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,g=ue({...p,session:R},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),h=false;typeof b?.enabled=="boolean"&&(h=b.enabled);let D=false;typeof b?.persistence=="boolean"&&(D=b?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(D=r?.cache?.persistence??false);let P=60*5,v="s";return H(b?.timeout)&&(typeof b?.timeout=="number"?(P=b.timeout,v="s"):typeof b?.timeout=="object"&&(P=b?.timeout.value,v=b?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?h=r.cache.enabled:h=true,typeof r.cache.timeout=="number"?(P=r.cache.timeout,v="s"):typeof r.cache.timeout=="object"&&(P=r.cache.timeout.value,v=r.cache.timeout.unit)):h=r.cache),{cacheName:f,cacheKey:g,timeout:P,timeoutUnit:v,persistence:D,cacheEnabled:h}},[r?.cache,p,w,b,a]);ie.useEffect(()=>{let R=JSON.stringify(H(k.current)?k.current:""),f=JSON.stringify(H(p)?p:""),g=k.current===void 0;(R!==f||g)&&!r?.hold&&((r?.clearPreviousData??x)&&i(c,{response:null}),m(),k.current=p),r?.onChange&&r?.onChange(p,U);},[p,r?.clearPreviousData,x,r?.hold,...r?.trigger||[]]),ie.useEffect(()=>{let R=async()=>{!X&&j&&F&&(await caches.open(j)).delete(F);};return window.addEventListener("beforeunload",R),()=>{window.removeEventListener("beforeunload",R),M.current?.abort();}},[X,j,F,c,M]);let m=ie.useCallback(async R=>{let f=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(f=r?.beforeRequest(p)),Z&&!R&&!A){i(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=await caches.open(j),D=await(await g.match(F))?.json();if(D){let{data:P,expired:v}=D;if(K().isAfter(v))await g.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),i(c,{loading:false,response:P});return}}}if(typeof e=="function"){M.current?.abort();let g=new AbortController;M.current=g,i(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let h=s?await e(void 0,{...r,signal:g.signal}):await e(f,void 0,{...r,signal:g.signal});if(r?.afterResponse&&h?.data&&(h.data=r?.afterResponse(h.data)),r?.logging&&console.log("After request",h),r?.onAfterResponse&&r?.onAfterResponse(h),i(c,{loading:false,response:h,isCancel:false}),Z&&h.status){let D=K().add(le,pe).toISOString(),P={data:h,expired:D},v=await caches.open(j),J=new Response(JSON.stringify(P));await v.put(F,J);}}},[p,e,r,A]);ie.useEffect(()=>{if(r?.refreshInterval){let R=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,f=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,g=setInterval(()=>{m();},K.duration(R,f).asMilliseconds());return ()=>clearInterval(g)}return ()=>{}},[r?.refreshInterval,m]);let l=ie.useRef(null),{enabledRefetch:d,timeoutRefetch:T,timeoutUnitRefetch:S}=ie.useMemo(()=>{let R=r?.refetchOnWindowFocus?.enabled??q?.enabled??false,f=r?.refetchOnWindowFocus?.timeout??q?.timeout,g=typeof f=="number"?f:f?.value??60*5,h=typeof f=="object"?f.unit:"s";return {enabledRefetch:R,timeoutRefetch:g,timeoutUnitRefetch:h}},[r?.refetchOnWindowFocus,q]);ie.useEffect(()=>{if(!d)return;let R=K.duration(T,S).asMilliseconds(),f=()=>{let h=Date.now(),D=l.current;D!==null&&h-D>=R&&m(),l.current=null;},g=()=>{l.current=Date.now();};return window.addEventListener("focus",f),window.addEventListener("blur",g),()=>{window.removeEventListener("focus",f),window.removeEventListener("blur",g);}},[d,T,S,m]);let O=ie.useCallback(()=>{M.current?.abort(),M.current=null,i(c,{loading:false,isCancel:true});},[c,M]),u=ie.useCallback(()=>{i(c,{loading:false,response:null});},[c]),U=ie.useMemo(()=>({...C,loading:y,refresh:m,abort:O,clear:u,response:C,isCancel:A,clone:(R,f)=>Xe(e,R,f)}),[C,y,m,O,u,A,e]);return ie.useEffect(()=>(Te(c,U),()=>{Ce(c);}),[U,c]),[C?.data,U]}async function gn(t,e=()=>{}){let n=t*1e3;return new Promise(o=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),o(true);},n);})}var Ze=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(Ze||{}),Qe=(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))(Qe||{});var An=(t,e,n)=>{let{format:o}=I();return e==="number"?nt(t,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===e)?rt(t,{display:o[e]?.display,value:o[e]?.value,...n}):e==="boolean"?et(t,n):e==="string"?tt(t,n):t?.toString()??""};function et(t,e){let n=typeof t=="string"?t==="true":!!t,o=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return n?o:s}function tt(t,e){if(!H(t))return "";let n=String(t);switch(e?.textTransform){case "capitalize":n=fe(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return e?.ellipsis&&n.length>e.ellipsis&&(n=n.slice(0,e.ellipsis)+"..."),n}function nt(t,{thouSep:e,decSep:n,decDigits:o,method:s}){if(t==null||isNaN(Number(t)))return "";let a=typeof t=="string"?parseFloat(t):t;if(s)if(typeof o=="number"){let i=Math.pow(10,o);a=Math[s](a*i)/i;}else a=Math[s](a);else if(typeof o=="number"){let i=Math.pow(10,o);a=Math.floor(a*i)/i;}let p=0;if(o==="auto"){let i=a.toString(),y=i.indexOf(".");y!==-1&&(p=i.length-y-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,e)}function rt(t,{display:e,value:n}){if(!H(t))return t;let o=K(t,n);return o.isValid()?o.format(e):t}function Pn(t,{interval:e,lead:n}){let o=ie.useRef(null);ie.useEffect(()=>{o.current=t;},[t]),ie.useEffect(()=>{let s=()=>o.current();if(n&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function qn(t,e,n){let[o,s]=ie.useState(false),a=(i,y)=>typeof t=="string"&&i===t||typeof t=="number"&&y===t,p=i=>i!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(i.tagName)||i.hasAttribute("contentEditable")),r=i=>{let{key:y,keyCode:A}=i,C=i.ctrlKey,w=i.altKey,b=i.shiftKey;if(!p(document.activeElement))if(e)if(typeof e=="string")a(y,A)&&(e==="ctrl"&&C||e==="alt"&&w||e==="shift"&&b)&&(i.preventDefault(),n&&i.stopPropagation(),s(!o));else {let x=e.every(q=>q==="ctrl"?C:q==="alt"?w:q==="shift"?b:false);a(y,A)&&x&&(i.preventDefault(),n&&i.stopPropagation(),s(!o));}else a(y,A)&&(i.preventDefault(),n&&i.stopPropagation(),s(!o));},c=({key:i,keyCode:y})=>{a(i,y)&&s(false);};return ie.useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var Fn=({url:t,token:e,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:i,encryptRequest:y,encryptResponse:A,passphrase:C})=>{let{encrypt:w,decrypt:b,passphrase:x}=Y(),q=(m,l,d,T)=>{let S=T?.code==="ERR_CANCELED",O=m?.status===401,u=m?.data;if((typeof d?.encryptResponse=="boolean"?d?.encryptResponse:A)&&u){let D=d?.passphrase?typeof d.passphrase=="boolean"&&d.passphrase?x:d.passphrase:C;try{u=b(u,D);}catch{try{u=b(u,x);}catch{}}}let f={...o({...m,data:u,isCancel:S,isUnauthorization:O},T),isCancel:S,isUnauthorization:O,httpCode:m?.status},g=typeof d?.disabledToastWhenCancel=="boolean"?d?.disabledToastWhenCancel:c,h=r?r(f,d):!O;if((d?.infoSuccess&&f.status||d?.infoError&&!f.status)&&p&&(!S||!g)&&p(f),!h&&(!S||!d?.disabledHandleUnauthorized)){let D=d?.onUnauthorized||a;D&&D(f);}if(l)l(f);else return f},$=(m,l=()=>{})=>it__default.default.create({baseURL:`${t}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:i})(m).then(l).catch(T=>l(T.response,T)),k=(m,l,d,T,S)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...S},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}`)),n&&(d=n(d)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:y)&&d){let f=S?.passphrase?typeof S.passphrase=="boolean"&&S.passphrase?x:S.passphrase:C;d=w(d,f);}return $({url:l,method:m,data:d,headers:U,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:f=>{u?.onUploadProgress&&u?.onUploadProgress(f);}},(f,g)=>q(f,T,u,g))};return {client:$,post:(m,l,d,T)=>k("POST",`${m}`,l,d,T),put:(m,l,d,T)=>k("PUT",`${m}`,l,d,T),patch:(m,l,d,T)=>k("PATCH",`${m}`,l,d,T),delete:(m,l,d)=>k("DELETE",`${m}`,null,l,d),get:(m,l,d)=>k("GET",`${m}`,null,l,d),upload:(m,l,d,T)=>{let S=new FormData;return Object.keys(l).forEach(O=>S.append(O,l[O])),k("POST",`${m}`,S,d,{infoSuccess:false,...T,headers:{"Content-Type":"multipart/form-data",...T?.headers}})},stream:async(m,l,d,T,S)=>{try{let u={...{token:!0,responseType:"json"},...S},U={"Content-Type":"application/json",...s,...u.headers};if(u.token){let L=typeof u.token=="boolean"?e:u.token;L&&(U.Authorization=`Bearer ${L}`);}let R=d;if(n&&(R=n(R)),(typeof u.encryptRequest=="boolean"?u.encryptRequest:y)&&R){let L=u.passphrase?typeof u.passphrase=="boolean"&&u.passphrase?x:u.passphrase:C;R=w(R,L);}let g=await fetch(`${t}${l}`,{method:m,headers:U,credentials:u.withCredentials?"include":"same-origin",signal:u.signal,body:JSON.stringify(R)}),h=g?.status,D=h===401,P=g?.statusText||"Internal Server Error";if(!g.ok){T({status:!1,data:void 0,message:P,isCancel:!1,isUnauthorization:D,httpCode:h,isDone:!0});return}let v=g.body.getReader(),J=new TextDecoder("utf-8"),_=!1;for(;!_;){let{value:L,done:Oe}=await v.read();if(_=Oe,L){let B=J.decode(L,{stream:!_});if(B=de(B),u.encryptResponse){let we=u.passphrase?u.passphrase===!0?x:u.passphrase:x;try{B=b(B,we);}catch{B=b(B,x);}}T({status:!0,data:B,message:"",isCancel:!1,isUnauthorization:D,httpCode:h,isDone:_});}}}catch(O){let u=O?.name==="AbortError";T({status:false,data:void 0,message:O instanceof Error?O.message:"Internal Server Error",isCancel:u,isUnauthorization:false,httpCode:400,isDone:true});}}}};function Hn(t,e){let[n,o]=ie.useState(false),[s,a]=ie.useState(),[p,r]=ie.useState(0),c=ie.useRef(null);return ie.useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async C=>{c.current?.abort();let w=new AbortController;c.current=w,o(true),e?.beforeRequest&&(C=e?.beforeRequest(C)),e?.logging&&console.log("Before request",C);let b={...e,signal:w.signal,onUploadProgress:q=>{let $=Math.round(q.loaded*100/(q.total||1));r($);}},x=t.__isVoid?await t(void 0,b):await t(C,void 0,b);e?.logging&&console.log("After response",x),a(x),o(false),r(0),x.status&&e?.onSuccess&&e?.onSuccess(x),!x.status&&e?.onError&&e?.onError(x),e?.afterResponse&&e?.afterResponse(x);},{...s,loading:n,abort:()=>{c.current?.abort(),c.current=null,o(false),r(0);},progress:p,reset:()=>{o(false),r(0),a(null);}}]}function ct(t,e){let{disableHysteresis:n=false,threshold:o=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)),!n&&a!==void 0&&t.current<a?false:(t.current||0)>o}var ut=typeof window<"u"?window:null;function jn(t={}){let{getTrigger:e=ct,target:n=ut,disableHysteresis:o=false,threshold:s=100}=t,a=ie__default.default.useRef(0),[p,r]=ie__default.default.useState(()=>e(a,{disableHysteresis:o,threshold:s,target:n}));return ie__default.default.useEffect(()=>{let c=()=>{r(e(a,{disableHysteresis:o,threshold:s,target:n}));};if(c(),n)return n.addEventListener("scroll",c,{passive:true}),()=>{n.removeEventListener("scroll",c);}},[n,e,o,s]),p}var Gn=(t,e)=>{let n=e?.storeName||t.__path||t.name,o=e?.shallow??true,s=p=>{let r=p.states[n]??W,{loading:c,isCancel:i,response:y}=r,{refresh:A,abort:C,clear:w,clone:b}=Ae(n)||{},x=[y?.data,{...y,loading:c,isCancel:i,refresh:A,abort:C,clear:w,clone:b}];return e?.selector?e.selector(x):x};return o?V(shallow.useShallow(s)):V(s)};var Zn=(t,e)=>{let n=o=>t(o);return n.displayName=e,n},Qn=(t,e)=>{let n={};n.others=[];let o=s=>{ie__default.default.Children.forEach(s,a=>{if(ie__default.default.isValidElement(a)){let p=a.type.displayName;if(e.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(t),n};function nr(t){let e=t,n=new Set;function o(){return e}function s(r){return n.add(r),()=>n.delete(r)}function a(r){typeof r=="function"?e=r(e):e=r,n.forEach(c=>c());}function p(r){let c=ie.useRef(r?r(e):e);return ie.useSyncExternalStore(s,()=>{let i=r?r(e):e,y=c.current;return Object.is(y,i)||(c.current=i),c.current},()=>r?r(e):e)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function yt(t,e=[]){let n={};for(let o in t){let s=t[o];if(typeof s=="function"){let a=s.bind(null);a.__path=[...e,o].join("."),a.__isVoid=s.length===2,n[o]=a;}else typeof s=="object"&&s!==null?n[o]=yt(s,[...e,o]):n[o]=s;}return n}function ar(t){let[e,n]=ie.useState(false),[o,s]=ie.useState([]),a=ie.useRef(null);ie.useEffect(()=>()=>{a.current?.abort();},[]);let p=async i=>{a.current?.abort();let y=new AbortController;a.current=y,n(true),t(i,A=>{s(C=>[...C,A]),(A.isDone||!A.status)&&n(false);},{signal:y.signal});},r=()=>{a.current?.abort(),a.current=null,n(false);},c=()=>{n(false),s([]);};return [o.map(i=>i.data),p,{loading:e,abort:r,reset:c}]}exports.BgsCoreProvider=je;exports.DataTypeEnum=Qe;exports.HttpMethod=Ze;exports.capitalizeWords=fe;exports.createApiHelper=Fn;exports.createElement=Zn;exports.createStore=nr;exports.debounce=Pt;exports.decrypt=ee;exports.decryptString=be;exports.defaultState=W;exports.diffJson=bt;exports.encrypt=Q;exports.encryptString=he;exports.generateCacheKey=ue;exports.generateUUID=ht;exports.getApiActions=Ae;exports.getFieldValue=E;exports.isArray=Tt;exports.isNotEmpty=H;exports.jsonCopy=St;exports.labelFormatter=ce;exports.mappingUndefinedtoNull=xt;exports.moment=K;exports.parseSSEChunk=de;exports.registerApi=Te;exports.renderChildren=Ct;exports.sorting=At;exports.splitElement=Qn;exports.stableStringify=qe;exports.summary=Dt;exports.unregisterApi=Ce;exports.useApiLoad=Xe;exports.useApiLoadStore=V;exports.useApiSend=Hn;exports.useApiStore=Gn;exports.useApiStream=ar;exports.useBgsCore=I;exports.useCrypto=Y;exports.useDelay=gn;exports.useFormatted=An;exports.useInterval=Pn;exports.useKeyPress=qn;exports.useScrollTrigger=jn;exports.useStorage=xe;exports.wrapApi=yt;
package/dist/index.d.cts CHANGED
@@ -599,6 +599,8 @@ declare const useApiLoadStore: zustand.UseBoundStore<zustand.StoreApi<ApiLoadSta
599
599
 
600
600
  declare const moment: typeof dayjs;
601
601
 
602
+ declare function useApiStream<DReq, DRes>(api: ApiMethodStream<DReq, DRes>): UseApiStreamReturn<DReq, DRes>;
603
+
602
604
  type FormatType = {
603
605
  display: string;
604
606
  value: string;
@@ -630,4 +632,4 @@ interface BgsCoreProviderProps {
630
632
  }
631
633
  declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
632
634
 
633
- export { type ApiActionState, type ApiActionStateStream, type ApiDefaultFetch, type ApiDefaultMethod, type ApiDefaultStream, type ApiLoadState, type ApiMethod, type ApiMethodStream, type ApiMethodVoid, type ApiResponse, type ApiResponseStream, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type CallbackStream, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseApiStreamReturn, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, defaultState, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getApiActions, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, moment, parseSSEChunk, registerApi, renderChildren, sorting, splitElement, stableStringify, summary, unregisterApi, useApiLoad, useApiLoadStore, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
635
+ export { type ApiActionState, type ApiActionStateStream, type ApiDefaultFetch, type ApiDefaultMethod, type ApiDefaultStream, type ApiLoadState, type ApiMethod, type ApiMethodStream, type ApiMethodVoid, type ApiResponse, type ApiResponseStream, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type CallbackStream, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseApiStreamReturn, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, defaultState, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getApiActions, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, moment, parseSSEChunk, registerApi, renderChildren, sorting, splitElement, stableStringify, summary, unregisterApi, useApiLoad, useApiLoadStore, useApiSend, useApiStore, useApiStream, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
package/dist/index.d.ts CHANGED
@@ -599,6 +599,8 @@ declare const useApiLoadStore: zustand.UseBoundStore<zustand.StoreApi<ApiLoadSta
599
599
 
600
600
  declare const moment: typeof dayjs;
601
601
 
602
+ declare function useApiStream<DReq, DRes>(api: ApiMethodStream<DReq, DRes>): UseApiStreamReturn<DReq, DRes>;
603
+
602
604
  type FormatType = {
603
605
  display: string;
604
606
  value: string;
@@ -630,4 +632,4 @@ interface BgsCoreProviderProps {
630
632
  }
631
633
  declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
632
634
 
633
- export { type ApiActionState, type ApiActionStateStream, type ApiDefaultFetch, type ApiDefaultMethod, type ApiDefaultStream, type ApiLoadState, type ApiMethod, type ApiMethodStream, type ApiMethodVoid, type ApiResponse, type ApiResponseStream, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type CallbackStream, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseApiStreamReturn, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, defaultState, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getApiActions, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, moment, parseSSEChunk, registerApi, renderChildren, sorting, splitElement, stableStringify, summary, unregisterApi, useApiLoad, useApiLoadStore, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
635
+ export { type ApiActionState, type ApiActionStateStream, type ApiDefaultFetch, type ApiDefaultMethod, type ApiDefaultStream, type ApiLoadState, type ApiMethod, type ApiMethodStream, type ApiMethodVoid, type ApiResponse, type ApiResponseStream, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type CallbackStream, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseApiStreamReturn, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, defaultState, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getApiActions, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, moment, parseSSEChunk, registerApi, renderChildren, sorting, splitElement, stableStringify, summary, unregisterApi, useApiLoad, useApiLoadStore, useApiSend, useApiStore, useApiStream, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import ie,{createContext,useContext,useEffect,useCallback,useRef,useMemo,useState,useSyncExternalStore}from'react';import N from'dayjs';import qe from'dayjs/plugin/utc';import Ue from'dayjs/plugin/timezone';import ve from'dayjs/plugin/duration';import ke from'dayjs/plugin/advancedFormat';import Ne from'dayjs/plugin/localizedFormat';import Ee from'dayjs/plugin/relativeTime';import Ke from'dayjs/plugin/isSameOrBefore';import Fe from'dayjs/plugin/isSameOrAfter';import Me from'dayjs/plugin/weekOfYear';import Le from'dayjs/plugin/customParseFormat';import {jsx}from'react/jsx-runtime';import Re from'crypto-js/aes';import ge from'crypto-js/pbkdf2';import Ve from'crypto-js/enc-utf8';import G from'crypto-js/enc-base64';import ye from'crypto-js/lib-typedarrays';import {create}from'zustand';import {useShallow}from'zustand/react/shallow';import at from'axios';function yt(){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 Rt(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var gt=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function ht(t,e){let n=false;return t&&typeof t=="object"&&Array.isArray(t)&&(typeof e=="number"?t.length>e&&(n=true):n=true),n}function H(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 ce={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 n=t.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(t="",e=false)=>{let n="";try{t=t?.split(".")[t?.split(".")?.length-1],t=t?.split("[]")[t?.split("[]")?.length-1],n=ce.snackCase(ce.camelCase(t)),e&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function bt(t,e){return typeof t=="function"?t(e):t}var E=(t,e,n="")=>{if(!t)return n;if(t.hasOwnProperty(e))return t[e];let o=e.replace(/\[(\d+)\]/g,".$1").split("."),s=t;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},Tt={desc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=E(n,e)?E(n,e):"",a=E(o,e)?E(n,e):"";return s<a?1:-1}else return n<o?1:-1})),asc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=E(n,e)?E(n,e):"",a=E(o,e)?E(o,e):"";return s>a?1:-1}else return n>o?1:-1}))},xt=(t,e)=>{Array.isArray(t)||(t=[]);let n=[];return n=t.map(o=>Number(e?E(o,e)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function Ct(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function we(t){let e=new WeakSet;return JSON.stringify(t,function(n,o){return o!==null&&typeof o=="object"?e.has(o)?void 0:(e.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function ue(t,e){return we([e??"undefined",t??"undefined"])}function fe(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function At(t,e=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{t(...o);},e*1e3);}}var de=t=>{let e=t.match(/^data:\s*(.*)/s);if(e)try{return JSON.parse(e[1])}catch{return null}return null};N.extend(qe);N.extend(Ue);N.extend(ve);N.extend(ke);N.extend(Ne);N.extend(Ee);N.extend(Ke);N.extend(Fe);N.extend(Me);N.extend(Le);var K=N;var me=createContext(void 0);function I(){let t=useContext(me);return t||{}}var $e=({children:t,value:e})=>{let n={...e};return useEffect(()=>{(async()=>{if(!(typeof window>"u")&&e.localeConfig){let{preset:s,object:a,isLocal:p}=e.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&K.locale(s,a??{},p);}})();},[e.localeConfig]),jsx(me.Provider,{value:n,children:t})};function Q(t,e){let n=ye.random(16),o=ye.random(16),s=ge(e,n,{keySize:256/32,iterations:1e3}),a=Re.encrypt(JSON.stringify(t),s,{iv:o}).toString();return {salt:n.toString(G),iv:o.toString(G),encrypted:a}}function ee(t,e){let{salt:n,iv:o,encrypted:s}=t,a=ge(e,G.parse(n),{keySize:256/32,iterations:1e3}),r=Re.decrypt(s,a,{iv:G.parse(o)}).toString(Ve);return JSON.parse(r)}function he(t,e){return JSON.stringify(Q(t,e))}function be(t,e){return ee(JSON.parse(t),e)}function Y(){let{passphrase:t}=I();return {passphrase:t,encrypt(e,n){return Q(e,n||t)},decrypt(e,n){return ee(e,n||t)},encryptString(e,n){return he(e,n||t)},decryptString(e,n){return be(e,n||t)}}}var Te=()=>{let{encrypt:t,decrypt:e}=Y(),n=useCallback((p,r)=>{try{let c=t(r);localStorage.setItem(p,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[t]),o=useCallback(p=>{try{let r=localStorage.getItem(p);return r?e(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[e]),s=p=>{let[r,c]=useState(()=>{try{let l=localStorage.getItem(p);return l?e(JSON.parse(l)):null}catch(l){return console.error("Failed to parse localStorage value",l),null}});return useEffect(()=>{let l=y=>{if(y.key===p)if(y.newValue)try{c(e(JSON.parse(y.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else c(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[p,e]),r},a=useCallback(p=>{p?localStorage.removeItem(p):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};function _e(t,e){for(let n in e)if(e[n]!==t[n])return e}var W={loading:false,response:void 0,isCancel:false},V=create()(t=>({states:{},updateState:(e,n)=>t(o=>{let s=o.states[e]||W,a={...s,...n};return _e(s,a)?{states:{...o.states,[e]:a}}:o})}));var ne=new Map,xe=(t,e)=>{ne.set(t,e);},Ce=t=>{ne.delete(t);},Ae=t=>ne.get(t);function Ye(...t){let[e,n,o]=t,s=e.__isVoid,a=e.__path||e.name,p=s?void 0:n,r=s?n:o,c=r?.storeName||a,{updateState:l}=V(),[y,P,A]=V(useShallow(R=>{let f=R.states[c]??W;return [f.loading,f.isCancel,f.response]})),{storageKey:w,cache:b,clearPreviousData:T,refetchOnWindowFocus:q}=I(),$=Te(),k=useRef(void 0),F=useRef(null),{cacheName:j,cacheKey:M,timeout:le,timeoutUnit:pe,persistence:X,cacheEnabled:Z}=useMemo(()=>{let R=w?$.get(w):void 0,f=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,g=ue({...p,session:R},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),h=false;typeof b?.enabled=="boolean"&&(h=b.enabled);let C=false;typeof b?.persistence=="boolean"&&(C=b?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(C=r?.cache?.persistence??false);let S=60*5,v="s";return H(b?.timeout)&&(typeof b?.timeout=="number"?(S=b.timeout,v="s"):typeof b?.timeout=="object"&&(S=b?.timeout.value,v=b?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?h=r.cache.enabled:h=true,typeof r.cache.timeout=="number"?(S=r.cache.timeout,v="s"):typeof r.cache.timeout=="object"&&(S=r.cache.timeout.value,v=r.cache.timeout.unit)):h=r.cache),{cacheName:f,cacheKey:g,timeout:S,timeoutUnit:v,persistence:C,cacheEnabled:h}},[r?.cache,p,w,b,a]);useEffect(()=>{let R=JSON.stringify(H(k.current)?k.current:""),f=JSON.stringify(H(p)?p:""),g=k.current===void 0;(R!==f||g)&&!r?.hold&&((r?.clearPreviousData??T)&&l(c,{response:null}),m(),k.current=p),r?.onChange&&r?.onChange(p,U);},[p,r?.clearPreviousData,T,r?.hold,...r?.trigger||[]]),useEffect(()=>{let R=async()=>{!X&&j&&M&&(await caches.open(j)).delete(M);};return window.addEventListener("beforeunload",R),()=>{window.removeEventListener("beforeunload",R),F.current?.abort();}},[X,j,M,c,F]);let m=useCallback(async R=>{let f=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(f=r?.beforeRequest(p)),Z&&!R&&!P){l(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=await caches.open(j),C=await(await g.match(M))?.json();if(C){let{data:S,expired:v}=C;if(K().isAfter(v))await g.delete(M);else {r?.afterResponse&&S?.data&&(S.data=r?.afterResponse(S.data)),r?.logging&&console.log("After request: Using Cache",S),r?.onAfterResponse&&r?.onAfterResponse(S),l(c,{loading:false,response:S});return}}}if(typeof e=="function"){F.current?.abort();let g=new AbortController;F.current=g,l(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let h=s?await e(void 0,{...r,signal:g.signal}):await e(f,void 0,{...r,signal:g.signal});if(r?.afterResponse&&h?.data&&(h.data=r?.afterResponse(h.data)),r?.logging&&console.log("After request",h),r?.onAfterResponse&&r?.onAfterResponse(h),l(c,{loading:false,response:h,isCancel:false}),Z&&h.status){let C=K().add(le,pe).toISOString(),S={data:h,expired:C},v=await caches.open(j),J=new Response(JSON.stringify(S));await v.put(M,J);}}},[p,e,r,P]);useEffect(()=>{if(r?.refreshInterval){let R=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,f=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,g=setInterval(()=>{m();},K.duration(R,f).asMilliseconds());return ()=>clearInterval(g)}return ()=>{}},[r?.refreshInterval,m]);let i=useRef(null),{enabledRefetch:d,timeoutRefetch:x,timeoutUnitRefetch:D}=useMemo(()=>{let R=r?.refetchOnWindowFocus?.enabled??q?.enabled??false,f=r?.refetchOnWindowFocus?.timeout??q?.timeout,g=typeof f=="number"?f:f?.value??60*5,h=typeof f=="object"?f.unit:"s";return {enabledRefetch:R,timeoutRefetch:g,timeoutUnitRefetch:h}},[r?.refetchOnWindowFocus,q]);useEffect(()=>{if(!d)return;let R=K.duration(x,D).asMilliseconds(),f=()=>{let h=Date.now(),C=i.current;C!==null&&h-C>=R&&m(),i.current=null;},g=()=>{i.current=Date.now();};return window.addEventListener("focus",f),window.addEventListener("blur",g),()=>{window.removeEventListener("focus",f),window.removeEventListener("blur",g);}},[d,x,D,m]);let O=useCallback(()=>{F.current?.abort(),F.current=null,l(c,{loading:false,isCancel:true});},[c,F]),u=useCallback(()=>{l(c,{loading:false,response:null});},[c]),U=useMemo(()=>({...A,loading:y,refresh:m,abort:O,clear:u,response:A,isCancel:P,clone:(R,f)=>Ye(e,R,f)}),[A,y,m,O,u,P,e]);return useEffect(()=>(xe(c,U),()=>{Ce(c);}),[U,c]),[A?.data,U]}async function mn(t,e=()=>{}){let n=t*1e3;return new Promise(o=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),o(true);},n);})}var Xe=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(Xe||{}),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 Tn=(t,e,n)=>{let{format:o}=I();return e==="number"?tt(t,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===e)?nt(t,{display:o[e]?.display,value:o[e]?.value,...n}):e==="boolean"?Qe(t,n):e==="string"?et(t,n):t?.toString()??""};function Qe(t,e){let n=typeof t=="string"?t==="true":!!t,o=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return n?o:s}function et(t,e){if(!H(t))return "";let n=String(t);switch(e?.textTransform){case "capitalize":n=fe(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return e?.ellipsis&&n.length>e.ellipsis&&(n=n.slice(0,e.ellipsis)+"..."),n}function tt(t,{thouSep:e,decSep:n,decDigits:o,method:s}){if(t==null||isNaN(Number(t)))return "";let a=typeof t=="string"?parseFloat(t):t;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(),y=l.indexOf(".");y!==-1&&(p=l.length-y-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,e)}function nt(t,{display:e,value:n}){if(!H(t))return t;let o=K(t,n);return o.isValid()?o.format(e):t}function An(t,{interval:e,lead:n}){let o=useRef(null);useEffect(()=>{o.current=t;},[t]),useEffect(()=>{let s=()=>o.current();if(n&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function Pn(t,e,n){let[o,s]=useState(false),a=(l,y)=>typeof t=="string"&&l===t||typeof t=="number"&&y===t,p=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:y,keyCode:P}=l,A=l.ctrlKey,w=l.altKey,b=l.shiftKey;if(!p(document.activeElement))if(e)if(typeof e=="string")a(y,P)&&(e==="ctrl"&&A||e==="alt"&&w||e==="shift"&&b)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let T=e.every(q=>q==="ctrl"?A:q==="alt"?w:q==="shift"?b:false);a(y,P)&&T&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(y,P)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},c=({key:l,keyCode:y})=>{a(l,y)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var En=({url:t,token:e,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:y,encryptResponse:P,passphrase:A})=>{let{encrypt:w,decrypt:b,passphrase:T}=Y(),q=(m,i,d,x)=>{let D=x?.code==="ERR_CANCELED",O=m?.status===401,u=m?.data;if((typeof d?.encryptResponse=="boolean"?d?.encryptResponse:P)&&u){let C=d?.passphrase?typeof d.passphrase=="boolean"&&d.passphrase?T:d.passphrase:A;try{u=b(u,C);}catch{try{u=b(u,T);}catch{}}}let f={...o({...m,data:u,isCancel:D,isUnauthorization:O},x),isCancel:D,isUnauthorization:O,httpCode:m?.status},g=typeof d?.disabledToastWhenCancel=="boolean"?d?.disabledToastWhenCancel:c,h=r?r(f,d):!O;if((d?.infoSuccess&&f.status||d?.infoError&&!f.status)&&p&&(!D||!g)&&p(f),!h&&(!D||!d?.disabledHandleUnauthorized)){let C=d?.onUnauthorized||a;C&&C(f);}if(i)i(f);else return f},$=(m,i=()=>{})=>at.create({baseURL:`${t}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:l})(m).then(i).catch(x=>i(x.response,x)),k=(m,i,d,x,D)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...D},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}`)),n&&(d=n(d)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:y)&&d){let f=D?.passphrase?typeof D.passphrase=="boolean"&&D.passphrase?T:D.passphrase:A;d=w(d,f);}return $({url:i,method:m,data:d,headers:U,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:f=>{u?.onUploadProgress&&u?.onUploadProgress(f);}},(f,g)=>q(f,x,u,g))};return {client:$,post:(m,i,d,x)=>k("POST",`${m}`,i,d,x),put:(m,i,d,x)=>k("PUT",`${m}`,i,d,x),patch:(m,i,d,x)=>k("PATCH",`${m}`,i,d,x),delete:(m,i,d)=>k("DELETE",`${m}`,null,i,d),get:(m,i,d)=>k("GET",`${m}`,null,i,d),upload:(m,i,d,x)=>{let D=new FormData;return Object.keys(i).forEach(O=>D.append(O,i[O])),k("POST",`${m}`,D,d,{infoSuccess:false,...x,headers:{"Content-Type":"multipart/form-data",...x?.headers}})},stream:async(m,i,d,x,D)=>{try{let u={...{token:!0,responseType:"json"},...D},U={"Content-Type":"application/json",...s,...u.headers};if(u.token){let L=typeof u.token=="boolean"?e:u.token;L&&(U.Authorization=`Bearer ${L}`);}let R=d;if(n&&(R=n(R)),(typeof u.encryptRequest=="boolean"?u.encryptRequest:y)&&R){let L=u.passphrase?typeof u.passphrase=="boolean"&&u.passphrase?T:u.passphrase:A;R=w(R,L);}let g=await fetch(`${t}${i}`,{method:m,headers:U,credentials:u.withCredentials?"include":"same-origin",signal:u.signal,body:JSON.stringify(R)}),h=g?.status,C=h===401,S=g?.statusText||"Internal Server Error";if(!g.ok){x({status:!1,data:void 0,message:S,isCancel:!1,isUnauthorization:C,httpCode:h,isDone:!0});return}let v=g.body.getReader(),J=new TextDecoder("utf-8"),_=!1;for(;!_;){let{value:L,done:Pe}=await v.read();if(_=Pe,L){let B=J.decode(L,{stream:!_});if(B=de(B),u.encryptResponse){let Oe=u.passphrase?u.passphrase===!0?T:u.passphrase:T;try{B=b(B,Oe);}catch{B=b(B,T);}}x({status:!0,data:B,message:"",isCancel:!1,isUnauthorization:C,httpCode:h,isDone:_});}}}catch(O){let u=O?.name==="AbortError";x({status:false,data:void 0,message:O instanceof Error?O.message:"Internal Server Error",isCancel:u,isUnauthorization:false,httpCode:400,isDone:true});}}}};function Mn(t,e){let[n,o]=useState(false),[s,a]=useState(),[p,r]=useState(0),c=useRef(null);return useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async A=>{c.current?.abort();let w=new AbortController;c.current=w,o(true),e?.beforeRequest&&(A=e?.beforeRequest(A)),e?.logging&&console.log("Before request",A);let b={...e,signal:w.signal,onUploadProgress:q=>{let $=Math.round(q.loaded*100/(q.total||1));r($);}},T=t.__isVoid?await t(void 0,b):await t(A,void 0,b);e?.logging&&console.log("After response",T),a(T),o(false),r(0),T.status&&e?.onSuccess&&e?.onSuccess(T),!T.status&&e?.onError&&e?.onError(T),e?.afterResponse&&e?.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 pt(t,e){let{disableHysteresis:n=false,threshold:o=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)),!n&&a!==void 0&&t.current<a?false:(t.current||0)>o}var ct=typeof window<"u"?window:null;function Hn(t={}){let{getTrigger:e=pt,target:n=ct,disableHysteresis:o=false,threshold:s=100}=t,a=ie.useRef(0),[p,r]=ie.useState(()=>e(a,{disableHysteresis:o,threshold:s,target:n}));return ie.useEffect(()=>{let c=()=>{r(e(a,{disableHysteresis:o,threshold:s,target:n}));};if(c(),n)return n.addEventListener("scroll",c,{passive:true}),()=>{n.removeEventListener("scroll",c);}},[n,e,o,s]),p}var zn=(t,e)=>{let n=e?.storeName||t.__path||t.name,o=e?.shallow??true,s=p=>{let r=p.states[n]??W,{loading:c,isCancel:l,response:y}=r,{refresh:P,abort:A,clear:w,clone:b}=Ae(n)||{},T=[y?.data,{...y,loading:c,isCancel:l,refresh:P,abort:A,clear:w,clone:b}];return e?.selector?e.selector(T):T};return o?V(useShallow(s)):V(s)};var Gn=(t,e)=>{let n=o=>t(o);return n.displayName=e,n},Yn=(t,e)=>{let n={};n.others=[];let o=s=>{ie.Children.forEach(s,a=>{if(ie.isValidElement(a)){let p=a.type.displayName;if(e.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(t),n};function Qn(t){let e=t,n=new Set;function o(){return e}function s(r){return n.add(r),()=>n.delete(r)}function a(r){typeof r=="function"?e=r(e):e=r,n.forEach(c=>c());}function p(r){let c=useRef(r?r(e):e);return useSyncExternalStore(s,()=>{let l=r?r(e):e,y=c.current;return Object.is(y,l)||(c.current=l),c.current},()=>r?r(e):e)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function mt(t,e=[]){let n={};for(let o in t){let s=t[o];if(typeof s=="function"){let a=s.bind(null);a.__path=[...e,o].join("."),a.__isVoid=s.length===2,n[o]=a;}else typeof s=="object"&&s!==null?n[o]=mt(s,[...e,o]):n[o]=s;}return n}export{$e as BgsCoreProvider,Ze as DataTypeEnum,Xe as HttpMethod,fe as capitalizeWords,En as createApiHelper,Gn as createElement,Qn as createStore,At as debounce,ee as decrypt,be as decryptString,W as defaultState,Rt as diffJson,Q as encrypt,he as encryptString,ue as generateCacheKey,yt as generateUUID,Ae as getApiActions,E as getFieldValue,ht as isArray,H as isNotEmpty,Ct as jsonCopy,ce as labelFormatter,gt as mappingUndefinedtoNull,K as moment,de as parseSSEChunk,xe as registerApi,bt as renderChildren,Tt as sorting,Yn as splitElement,we as stableStringify,xt as summary,Ce as unregisterApi,Ye as useApiLoad,V as useApiLoadStore,Mn as useApiSend,zn as useApiStore,I as useBgsCore,Y as useCrypto,mn as useDelay,Tn as useFormatted,An as useInterval,Pn as useKeyPress,Hn as useScrollTrigger,Te as useStorage,mt as wrapApi};
1
+ import ie,{createContext,useContext,useEffect,useCallback,useRef,useMemo,useState,useSyncExternalStore}from'react';import N from'dayjs';import Ue from'dayjs/plugin/utc';import ve from'dayjs/plugin/timezone';import ke from'dayjs/plugin/duration';import Ne from'dayjs/plugin/advancedFormat';import Ee from'dayjs/plugin/localizedFormat';import Ke from'dayjs/plugin/relativeTime';import Me from'dayjs/plugin/isSameOrBefore';import Fe from'dayjs/plugin/isSameOrAfter';import Le from'dayjs/plugin/weekOfYear';import Be from'dayjs/plugin/customParseFormat';import {jsx}from'react/jsx-runtime';import Re from'crypto-js/aes';import ge from'crypto-js/pbkdf2';import We from'crypto-js/enc-utf8';import G from'crypto-js/enc-base64';import ye from'crypto-js/lib-typedarrays';import {create}from'zustand';import {useShallow}from'zustand/react/shallow';import it from'axios';function ht(){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 bt(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var xt=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function Tt(t,e){let n=false;return t&&typeof t=="object"&&Array.isArray(t)&&(typeof e=="number"?t.length>e&&(n=true):n=true),n}function H(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 ce={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 n=t.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(t="",e=false)=>{let n="";try{t=t?.split(".")[t?.split(".")?.length-1],t=t?.split("[]")[t?.split("[]")?.length-1],n=ce.snackCase(ce.camelCase(t)),e&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function Ct(t,e){return typeof t=="function"?t(e):t}var E=(t,e,n="")=>{if(!t)return n;if(t.hasOwnProperty(e))return t[e];let o=e.replace(/\[(\d+)\]/g,".$1").split("."),s=t;for(let a of o){if(s==null)return n;s=s[a];}return s===void 0?n:s},At={desc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=E(n,e)?E(n,e):"",a=E(o,e)?E(n,e):"";return s<a?1:-1}else return n<o?1:-1})),asc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=E(n,e)?E(n,e):"",a=E(o,e)?E(o,e):"";return s>a?1:-1}else return n>o?1:-1}))},Dt=(t,e)=>{Array.isArray(t)||(t=[]);let n=[];return n=t.map(o=>Number(e?E(o,e)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function St(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function qe(t){let e=new WeakSet;return JSON.stringify(t,function(n,o){return o!==null&&typeof o=="object"?e.has(o)?void 0:(e.add(o),Object.keys(o).sort().reduce((s,a)=>(s[a]=o[a],s),{})):o})??""}function ue(t,e){return qe([e??"undefined",t??"undefined"])}function fe(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function Pt(t,e=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{t(...o);},e*1e3);}}var de=t=>{let e=t.match(/^data:\s*(.*)/s);if(e)try{return JSON.parse(e[1])}catch{return null}return null};N.extend(Ue);N.extend(ve);N.extend(ke);N.extend(Ne);N.extend(Ee);N.extend(Ke);N.extend(Me);N.extend(Fe);N.extend(Le);N.extend(Be);var K=N;var me=createContext(void 0);function I(){let t=useContext(me);return t||{}}var je=({children:t,value:e})=>{let n={...e};return useEffect(()=>{(async()=>{if(!(typeof window>"u")&&e.localeConfig){let{preset:s,object:a,isLocal:p}=e.localeConfig;if(typeof s=="string")try{await import(`dayjs/locale/${s}`);}catch{console.warn(`Locale "${s}" not found, fallback to default`);}s&&K.locale(s,a??{},p);}})();},[e.localeConfig]),jsx(me.Provider,{value:n,children:t})};function Q(t,e){let n=ye.random(16),o=ye.random(16),s=ge(e,n,{keySize:256/32,iterations:1e3}),a=Re.encrypt(JSON.stringify(t),s,{iv:o}).toString();return {salt:n.toString(G),iv:o.toString(G),encrypted:a}}function ee(t,e){let{salt:n,iv:o,encrypted:s}=t,a=ge(e,G.parse(n),{keySize:256/32,iterations:1e3}),r=Re.decrypt(s,a,{iv:G.parse(o)}).toString(We);return JSON.parse(r)}function he(t,e){return JSON.stringify(Q(t,e))}function be(t,e){return ee(JSON.parse(t),e)}function Y(){let{passphrase:t}=I();return {passphrase:t,encrypt(e,n){return Q(e,n||t)},decrypt(e,n){return ee(e,n||t)},encryptString(e,n){return he(e,n||t)},decryptString(e,n){return be(e,n||t)}}}var xe=()=>{let{encrypt:t,decrypt:e}=Y(),n=useCallback((p,r)=>{try{let c=t(r);localStorage.setItem(p,JSON.stringify(c));}catch(c){console.error("Failed to save to storage:",c);}},[t]),o=useCallback(p=>{try{let r=localStorage.getItem(p);return r?e(JSON.parse(r)):null}catch(r){return console.error("Failed to get from storage:",r),null}},[e]),s=p=>{let[r,c]=useState(()=>{try{let i=localStorage.getItem(p);return i?e(JSON.parse(i)):null}catch(i){return console.error("Failed to parse localStorage value",i),null}});return useEffect(()=>{let i=y=>{if(y.key===p)if(y.newValue)try{c(e(JSON.parse(y.newValue)));}catch(A){console.error("Decrypt error from storage event",A);}else c(null);};return window.addEventListener("storage",i),()=>window.removeEventListener("storage",i)},[p,e]),r},a=useCallback(p=>{p?localStorage.removeItem(p):localStorage.clear();},[]);return {save:n,get:o,clear:a,useWatchStorage:s}};function Ge(t,e){for(let n in e)if(e[n]!==t[n])return e}var W={loading:false,response:void 0,isCancel:false},V=create()(t=>({states:{},updateState:(e,n)=>t(o=>{let s=o.states[e]||W,a={...s,...n};return Ge(s,a)?{states:{...o.states,[e]:a}}:o})}));var ne=new Map,Te=(t,e)=>{ne.set(t,e);},Ce=t=>{ne.delete(t);},Ae=t=>ne.get(t);function Xe(...t){let[e,n,o]=t,s=e.__isVoid,a=e.__path||e.name,p=s?void 0:n,r=s?n:o,c=r?.storeName||a,{updateState:i}=V(),[y,A,C]=V(useShallow(R=>{let f=R.states[c]??W;return [f.loading,f.isCancel,f.response]})),{storageKey:w,cache:b,clearPreviousData:x,refetchOnWindowFocus:q}=I(),$=xe(),k=useRef(void 0),M=useRef(null),{cacheName:j,cacheKey:F,timeout:le,timeoutUnit:pe,persistence:X,cacheEnabled:Z}=useMemo(()=>{let R=w?$.get(w):void 0,f=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,g=ue({...p,session:R},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),h=false;typeof b?.enabled=="boolean"&&(h=b.enabled);let D=false;typeof b?.persistence=="boolean"&&(D=b?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(D=r?.cache?.persistence??false);let P=60*5,v="s";return H(b?.timeout)&&(typeof b?.timeout=="number"?(P=b.timeout,v="s"):typeof b?.timeout=="object"&&(P=b?.timeout.value,v=b?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?h=r.cache.enabled:h=true,typeof r.cache.timeout=="number"?(P=r.cache.timeout,v="s"):typeof r.cache.timeout=="object"&&(P=r.cache.timeout.value,v=r.cache.timeout.unit)):h=r.cache),{cacheName:f,cacheKey:g,timeout:P,timeoutUnit:v,persistence:D,cacheEnabled:h}},[r?.cache,p,w,b,a]);useEffect(()=>{let R=JSON.stringify(H(k.current)?k.current:""),f=JSON.stringify(H(p)?p:""),g=k.current===void 0;(R!==f||g)&&!r?.hold&&((r?.clearPreviousData??x)&&i(c,{response:null}),m(),k.current=p),r?.onChange&&r?.onChange(p,U);},[p,r?.clearPreviousData,x,r?.hold,...r?.trigger||[]]),useEffect(()=>{let R=async()=>{!X&&j&&F&&(await caches.open(j)).delete(F);};return window.addEventListener("beforeunload",R),()=>{window.removeEventListener("beforeunload",R),M.current?.abort();}},[X,j,F,c,M]);let m=useCallback(async R=>{let f=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(f=r?.beforeRequest(p)),Z&&!R&&!A){i(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=await caches.open(j),D=await(await g.match(F))?.json();if(D){let{data:P,expired:v}=D;if(K().isAfter(v))await g.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),i(c,{loading:false,response:P});return}}}if(typeof e=="function"){M.current?.abort();let g=new AbortController;M.current=g,i(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let h=s?await e(void 0,{...r,signal:g.signal}):await e(f,void 0,{...r,signal:g.signal});if(r?.afterResponse&&h?.data&&(h.data=r?.afterResponse(h.data)),r?.logging&&console.log("After request",h),r?.onAfterResponse&&r?.onAfterResponse(h),i(c,{loading:false,response:h,isCancel:false}),Z&&h.status){let D=K().add(le,pe).toISOString(),P={data:h,expired:D},v=await caches.open(j),J=new Response(JSON.stringify(P));await v.put(F,J);}}},[p,e,r,A]);useEffect(()=>{if(r?.refreshInterval){let R=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,f=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,g=setInterval(()=>{m();},K.duration(R,f).asMilliseconds());return ()=>clearInterval(g)}return ()=>{}},[r?.refreshInterval,m]);let l=useRef(null),{enabledRefetch:d,timeoutRefetch:T,timeoutUnitRefetch:S}=useMemo(()=>{let R=r?.refetchOnWindowFocus?.enabled??q?.enabled??false,f=r?.refetchOnWindowFocus?.timeout??q?.timeout,g=typeof f=="number"?f:f?.value??60*5,h=typeof f=="object"?f.unit:"s";return {enabledRefetch:R,timeoutRefetch:g,timeoutUnitRefetch:h}},[r?.refetchOnWindowFocus,q]);useEffect(()=>{if(!d)return;let R=K.duration(T,S).asMilliseconds(),f=()=>{let h=Date.now(),D=l.current;D!==null&&h-D>=R&&m(),l.current=null;},g=()=>{l.current=Date.now();};return window.addEventListener("focus",f),window.addEventListener("blur",g),()=>{window.removeEventListener("focus",f),window.removeEventListener("blur",g);}},[d,T,S,m]);let O=useCallback(()=>{M.current?.abort(),M.current=null,i(c,{loading:false,isCancel:true});},[c,M]),u=useCallback(()=>{i(c,{loading:false,response:null});},[c]),U=useMemo(()=>({...C,loading:y,refresh:m,abort:O,clear:u,response:C,isCancel:A,clone:(R,f)=>Xe(e,R,f)}),[C,y,m,O,u,A,e]);return useEffect(()=>(Te(c,U),()=>{Ce(c);}),[U,c]),[C?.data,U]}async function gn(t,e=()=>{}){let n=t*1e3;return new Promise(o=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),o(true);},n);})}var Ze=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(Ze||{}),Qe=(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))(Qe||{});var An=(t,e,n)=>{let{format:o}=I();return e==="number"?nt(t,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===e)?rt(t,{display:o[e]?.display,value:o[e]?.value,...n}):e==="boolean"?et(t,n):e==="string"?tt(t,n):t?.toString()??""};function et(t,e){let n=typeof t=="string"?t==="true":!!t,o=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return n?o:s}function tt(t,e){if(!H(t))return "";let n=String(t);switch(e?.textTransform){case "capitalize":n=fe(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return e?.ellipsis&&n.length>e.ellipsis&&(n=n.slice(0,e.ellipsis)+"..."),n}function nt(t,{thouSep:e,decSep:n,decDigits:o,method:s}){if(t==null||isNaN(Number(t)))return "";let a=typeof t=="string"?parseFloat(t):t;if(s)if(typeof o=="number"){let i=Math.pow(10,o);a=Math[s](a*i)/i;}else a=Math[s](a);else if(typeof o=="number"){let i=Math.pow(10,o);a=Math.floor(a*i)/i;}let p=0;if(o==="auto"){let i=a.toString(),y=i.indexOf(".");y!==-1&&(p=i.length-y-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,e)}function rt(t,{display:e,value:n}){if(!H(t))return t;let o=K(t,n);return o.isValid()?o.format(e):t}function Pn(t,{interval:e,lead:n}){let o=useRef(null);useEffect(()=>{o.current=t;},[t]),useEffect(()=>{let s=()=>o.current();if(n&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function qn(t,e,n){let[o,s]=useState(false),a=(i,y)=>typeof t=="string"&&i===t||typeof t=="number"&&y===t,p=i=>i!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(i.tagName)||i.hasAttribute("contentEditable")),r=i=>{let{key:y,keyCode:A}=i,C=i.ctrlKey,w=i.altKey,b=i.shiftKey;if(!p(document.activeElement))if(e)if(typeof e=="string")a(y,A)&&(e==="ctrl"&&C||e==="alt"&&w||e==="shift"&&b)&&(i.preventDefault(),n&&i.stopPropagation(),s(!o));else {let x=e.every(q=>q==="ctrl"?C:q==="alt"?w:q==="shift"?b:false);a(y,A)&&x&&(i.preventDefault(),n&&i.stopPropagation(),s(!o));}else a(y,A)&&(i.preventDefault(),n&&i.stopPropagation(),s(!o));},c=({key:i,keyCode:y})=>{a(i,y)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var Fn=({url:t,token:e,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:i,encryptRequest:y,encryptResponse:A,passphrase:C})=>{let{encrypt:w,decrypt:b,passphrase:x}=Y(),q=(m,l,d,T)=>{let S=T?.code==="ERR_CANCELED",O=m?.status===401,u=m?.data;if((typeof d?.encryptResponse=="boolean"?d?.encryptResponse:A)&&u){let D=d?.passphrase?typeof d.passphrase=="boolean"&&d.passphrase?x:d.passphrase:C;try{u=b(u,D);}catch{try{u=b(u,x);}catch{}}}let f={...o({...m,data:u,isCancel:S,isUnauthorization:O},T),isCancel:S,isUnauthorization:O,httpCode:m?.status},g=typeof d?.disabledToastWhenCancel=="boolean"?d?.disabledToastWhenCancel:c,h=r?r(f,d):!O;if((d?.infoSuccess&&f.status||d?.infoError&&!f.status)&&p&&(!S||!g)&&p(f),!h&&(!S||!d?.disabledHandleUnauthorized)){let D=d?.onUnauthorized||a;D&&D(f);}if(l)l(f);else return f},$=(m,l=()=>{})=>it.create({baseURL:`${t}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:i})(m).then(l).catch(T=>l(T.response,T)),k=(m,l,d,T,S)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...S},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}`)),n&&(d=n(d)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:y)&&d){let f=S?.passphrase?typeof S.passphrase=="boolean"&&S.passphrase?x:S.passphrase:C;d=w(d,f);}return $({url:l,method:m,data:d,headers:U,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:f=>{u?.onUploadProgress&&u?.onUploadProgress(f);}},(f,g)=>q(f,T,u,g))};return {client:$,post:(m,l,d,T)=>k("POST",`${m}`,l,d,T),put:(m,l,d,T)=>k("PUT",`${m}`,l,d,T),patch:(m,l,d,T)=>k("PATCH",`${m}`,l,d,T),delete:(m,l,d)=>k("DELETE",`${m}`,null,l,d),get:(m,l,d)=>k("GET",`${m}`,null,l,d),upload:(m,l,d,T)=>{let S=new FormData;return Object.keys(l).forEach(O=>S.append(O,l[O])),k("POST",`${m}`,S,d,{infoSuccess:false,...T,headers:{"Content-Type":"multipart/form-data",...T?.headers}})},stream:async(m,l,d,T,S)=>{try{let u={...{token:!0,responseType:"json"},...S},U={"Content-Type":"application/json",...s,...u.headers};if(u.token){let L=typeof u.token=="boolean"?e:u.token;L&&(U.Authorization=`Bearer ${L}`);}let R=d;if(n&&(R=n(R)),(typeof u.encryptRequest=="boolean"?u.encryptRequest:y)&&R){let L=u.passphrase?typeof u.passphrase=="boolean"&&u.passphrase?x:u.passphrase:C;R=w(R,L);}let g=await fetch(`${t}${l}`,{method:m,headers:U,credentials:u.withCredentials?"include":"same-origin",signal:u.signal,body:JSON.stringify(R)}),h=g?.status,D=h===401,P=g?.statusText||"Internal Server Error";if(!g.ok){T({status:!1,data:void 0,message:P,isCancel:!1,isUnauthorization:D,httpCode:h,isDone:!0});return}let v=g.body.getReader(),J=new TextDecoder("utf-8"),_=!1;for(;!_;){let{value:L,done:Oe}=await v.read();if(_=Oe,L){let B=J.decode(L,{stream:!_});if(B=de(B),u.encryptResponse){let we=u.passphrase?u.passphrase===!0?x:u.passphrase:x;try{B=b(B,we);}catch{B=b(B,x);}}T({status:!0,data:B,message:"",isCancel:!1,isUnauthorization:D,httpCode:h,isDone:_});}}}catch(O){let u=O?.name==="AbortError";T({status:false,data:void 0,message:O instanceof Error?O.message:"Internal Server Error",isCancel:u,isUnauthorization:false,httpCode:400,isDone:true});}}}};function Hn(t,e){let[n,o]=useState(false),[s,a]=useState(),[p,r]=useState(0),c=useRef(null);return useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async C=>{c.current?.abort();let w=new AbortController;c.current=w,o(true),e?.beforeRequest&&(C=e?.beforeRequest(C)),e?.logging&&console.log("Before request",C);let b={...e,signal:w.signal,onUploadProgress:q=>{let $=Math.round(q.loaded*100/(q.total||1));r($);}},x=t.__isVoid?await t(void 0,b):await t(C,void 0,b);e?.logging&&console.log("After response",x),a(x),o(false),r(0),x.status&&e?.onSuccess&&e?.onSuccess(x),!x.status&&e?.onError&&e?.onError(x),e?.afterResponse&&e?.afterResponse(x);},{...s,loading:n,abort:()=>{c.current?.abort(),c.current=null,o(false),r(0);},progress:p,reset:()=>{o(false),r(0),a(null);}}]}function ct(t,e){let{disableHysteresis:n=false,threshold:o=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)),!n&&a!==void 0&&t.current<a?false:(t.current||0)>o}var ut=typeof window<"u"?window:null;function jn(t={}){let{getTrigger:e=ct,target:n=ut,disableHysteresis:o=false,threshold:s=100}=t,a=ie.useRef(0),[p,r]=ie.useState(()=>e(a,{disableHysteresis:o,threshold:s,target:n}));return ie.useEffect(()=>{let c=()=>{r(e(a,{disableHysteresis:o,threshold:s,target:n}));};if(c(),n)return n.addEventListener("scroll",c,{passive:true}),()=>{n.removeEventListener("scroll",c);}},[n,e,o,s]),p}var Gn=(t,e)=>{let n=e?.storeName||t.__path||t.name,o=e?.shallow??true,s=p=>{let r=p.states[n]??W,{loading:c,isCancel:i,response:y}=r,{refresh:A,abort:C,clear:w,clone:b}=Ae(n)||{},x=[y?.data,{...y,loading:c,isCancel:i,refresh:A,abort:C,clear:w,clone:b}];return e?.selector?e.selector(x):x};return o?V(useShallow(s)):V(s)};var Zn=(t,e)=>{let n=o=>t(o);return n.displayName=e,n},Qn=(t,e)=>{let n={};n.others=[];let o=s=>{ie.Children.forEach(s,a=>{if(ie.isValidElement(a)){let p=a.type.displayName;if(e.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(t),n};function nr(t){let e=t,n=new Set;function o(){return e}function s(r){return n.add(r),()=>n.delete(r)}function a(r){typeof r=="function"?e=r(e):e=r,n.forEach(c=>c());}function p(r){let c=useRef(r?r(e):e);return useSyncExternalStore(s,()=>{let i=r?r(e):e,y=c.current;return Object.is(y,i)||(c.current=i),c.current},()=>r?r(e):e)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function yt(t,e=[]){let n={};for(let o in t){let s=t[o];if(typeof s=="function"){let a=s.bind(null);a.__path=[...e,o].join("."),a.__isVoid=s.length===2,n[o]=a;}else typeof s=="object"&&s!==null?n[o]=yt(s,[...e,o]):n[o]=s;}return n}function ar(t){let[e,n]=useState(false),[o,s]=useState([]),a=useRef(null);useEffect(()=>()=>{a.current?.abort();},[]);let p=async i=>{a.current?.abort();let y=new AbortController;a.current=y,n(true),t(i,A=>{s(C=>[...C,A]),(A.isDone||!A.status)&&n(false);},{signal:y.signal});},r=()=>{a.current?.abort(),a.current=null,n(false);},c=()=>{n(false),s([]);};return [o.map(i=>i.data),p,{loading:e,abort:r,reset:c}]}export{je as BgsCoreProvider,Qe as DataTypeEnum,Ze as HttpMethod,fe as capitalizeWords,Fn as createApiHelper,Zn as createElement,nr as createStore,Pt as debounce,ee as decrypt,be as decryptString,W as defaultState,bt as diffJson,Q as encrypt,he as encryptString,ue as generateCacheKey,ht as generateUUID,Ae as getApiActions,E as getFieldValue,Tt as isArray,H as isNotEmpty,St as jsonCopy,ce as labelFormatter,xt as mappingUndefinedtoNull,K as moment,de as parseSSEChunk,Te as registerApi,Ct as renderChildren,At as sorting,Qn as splitElement,qe as stableStringify,Dt as summary,Ce as unregisterApi,Xe as useApiLoad,V as useApiLoadStore,Hn as useApiSend,Gn as useApiStore,ar as useApiStream,I as useBgsCore,Y as useCrypto,gn as useDelay,An as useFormatted,Pn as useInterval,qn as useKeyPress,jn as useScrollTrigger,xe as useStorage,yt as wrapApi};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgscore/react-core",
3
- "version": "0.0.62",
3
+ "version": "0.0.63",
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",