@bgscore/react-core 0.0.61 → 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 +1 -1
- package/dist/index.d.cts +34 -1
- package/dist/index.d.ts +34 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var re=require('react'),q=require('dayjs'),Ae=require('dayjs/plugin/utc'),De=require('dayjs/plugin/timezone'),Pe=require('dayjs/plugin/duration'),Se=require('dayjs/plugin/advancedFormat'),Oe=require('dayjs/plugin/localizedFormat'),we=require('dayjs/plugin/relativeTime'),Ue=require('dayjs/plugin/isSameOrBefore'),qe=require('dayjs/plugin/isSameOrAfter'),ve=require('dayjs/plugin/weekOfYear'),Ne=require('dayjs/plugin/customParseFormat'),jsxRuntime=require('react/jsx-runtime'),fe=require('crypto-js/aes'),de=require('crypto-js/pbkdf2'),Me=require('crypto-js/enc-utf8'),z=require('crypto-js/enc-base64'),ue=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),shallow=require('zustand/react/shallow'),et=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var re__default=/*#__PURE__*/_interopDefault(re);var q__default=/*#__PURE__*/_interopDefault(q);var Ae__default=/*#__PURE__*/_interopDefault(Ae);var De__default=/*#__PURE__*/_interopDefault(De);var Pe__default=/*#__PURE__*/_interopDefault(Pe);var Se__default=/*#__PURE__*/_interopDefault(Se);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var we__default=/*#__PURE__*/_interopDefault(we);var Ue__default=/*#__PURE__*/_interopDefault(Ue);var qe__default=/*#__PURE__*/_interopDefault(qe);var ve__default=/*#__PURE__*/_interopDefault(ve);var Ne__default=/*#__PURE__*/_interopDefault(Ne);var fe__default=/*#__PURE__*/_interopDefault(fe);var de__default=/*#__PURE__*/_interopDefault(de);var Me__default=/*#__PURE__*/_interopDefault(Me);var z__default=/*#__PURE__*/_interopDefault(z);var ue__default=/*#__PURE__*/_interopDefault(ue);var et__default=/*#__PURE__*/_interopDefault(et);function pt(){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 ct(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var ut=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function ft(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 M(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 ie={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=ie.snackCase(ie.camelCase(t)),e&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function dt(t,e){return typeof t=="function"?t(e):t}var k=(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},mt={desc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=k(n,e)?k(n,e):"",a=k(o,e)?k(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=k(n,e)?k(n,e):"",a=k(o,e)?k(o,e):"";return s>a?1:-1}else return n>o?1:-1}))},yt=(t,e)=>{Array.isArray(t)||(t=[]);let n=[];return n=t.map(o=>Number(e?k(o,e)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function gt(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function Ce(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 le(t,e){return Ce([e??"undefined",t??"undefined"])}function pe(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function Rt(t,e=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{t(...o);},e*1e3);}}q__default.default.extend(Ae__default.default);q__default.default.extend(De__default.default);q__default.default.extend(Pe__default.default);q__default.default.extend(Se__default.default);q__default.default.extend(Oe__default.default);q__default.default.extend(we__default.default);q__default.default.extend(Ue__default.default);q__default.default.extend(qe__default.default);q__default.default.extend(ve__default.default);q__default.default.extend(Ne__default.default);var E=q__default.default;var ce=re.createContext(void 0);function B(){let t=re.useContext(ce);return t||{}}var Fe=({children:t,value:e})=>{let n={...e};return re.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&&E.locale(s,a??{},p);}})();},[e.localeConfig]),jsxRuntime.jsx(ce.Provider,{value:n,children:t})};function G(t,e){let n=ue__default.default.random(16),o=ue__default.default.random(16),s=de__default.default(e,n,{keySize:256/32,iterations:1e3}),a=fe__default.default.encrypt(JSON.stringify(t),s,{iv:o}).toString();return {salt:n.toString(z__default.default),iv:o.toString(z__default.default),encrypted:a}}function Y(t,e){let{salt:n,iv:o,encrypted:s}=t,a=de__default.default(e,z__default.default.parse(n),{keySize:256/32,iterations:1e3}),r=fe__default.default.decrypt(s,a,{iv:z__default.default.parse(o)}).toString(Me__default.default);return JSON.parse(r)}function me(t,e){return JSON.stringify(G(t,e))}function ye(t,e){return Y(JSON.parse(t),e)}function J(){let{passphrase:t}=B();return {passphrase:t,encrypt(e,n){return G(e,n||t)},decrypt(e,n){return Y(e,n||t)},encryptString(e,n){return me(e,n||t)},decryptString(e,n){return ye(e,n||t)}}}var ge=()=>{let{encrypt:t,decrypt:e}=J(),n=re.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=re.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]=re.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 re.useEffect(()=>{let l=m=>{if(m.key===p)if(m.newValue)try{c(e(JSON.parse(m.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else c(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[p,e]),r},a=re.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 V={loading:false,response:void 0,isCancel:false},j=zustand.create()(t=>({states:{},updateState:(e,n)=>t(o=>{let s=o.states[e]||V,a={...s,...n};return $e(s,a)?{states:{...o.states,[e]:a}}:o})}));var Z=new Map,Re=(t,e)=>{Z.set(t,e);},he=t=>{Z.delete(t);},be=t=>Z.get(t);function Ve(...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}=j(),[m,P,C]=j(shallow.useShallow(u=>{let d=u.states[c]??V;return [d.loading,d.isCancel,d.response]})),{storageKey:S,cache:h,clearPreviousData:b,refetchOnWindowFocus:O}=B(),I=ge(),U=re.useRef(void 0),K=re.useRef(null),{cacheName:H,cacheKey:F,timeout:oe,timeoutUnit:se,persistence:_,cacheEnabled:y}=re.useMemo(()=>{let u=S?I.get(S):void 0,d=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=le({...p,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),g=false;typeof h?.enabled=="boolean"&&(g=h.enabled);let w=false;typeof h?.persistence=="boolean"&&(w=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(w=r?.cache?.persistence??false);let D=60*5,N="s";return M(h?.timeout)&&(typeof h?.timeout=="number"?(D=h.timeout,N="s"):typeof h?.timeout=="object"&&(D=h?.timeout.value,N=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?g=r.cache.enabled:g=true,typeof r.cache.timeout=="number"?(D=r.cache.timeout,N="s"):typeof r.cache.timeout=="object"&&(D=r.cache.timeout.value,N=r.cache.timeout.unit)):g=r.cache),{cacheName:d,cacheKey:x,timeout:D,timeoutUnit:N,persistence:w,cacheEnabled:g}},[r?.cache,p,S,h,a]);re.useEffect(()=>{let u=JSON.stringify(M(U.current)?U.current:""),d=JSON.stringify(M(p)?p:""),x=U.current===void 0;(u!==d||x)&&!r?.hold&&((r?.clearPreviousData??b)&&l(c,{response:null}),f(),U.current=p),r?.onChange&&r?.onChange(p,$);},[p,r?.clearPreviousData,b,r?.hold,...r?.trigger||[]]),re.useEffect(()=>{let u=async()=>{!_&&H&&F&&(await caches.open(H)).delete(F);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),K.current?.abort();}},[_,H,F,c,K]);let f=re.useCallback(async u=>{let d=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(d=r?.beforeRequest(p)),y&&!u&&!P){l(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let x=await caches.open(H),w=await(await x.match(F))?.json();if(w){let{data:D,expired:N}=w;if(E().isAfter(N))await x.delete(F);else {r?.afterResponse&&D?.data&&(D.data=r?.afterResponse(D.data)),r?.logging&&console.log("After request: Using Cache",D),r?.onAfterResponse&&r?.onAfterResponse(D),l(c,{loading:false,response:D});return}}}if(typeof e=="function"){K.current?.abort();let x=new AbortController;K.current=x,l(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=s?await e(void 0,{...r,signal:x.signal}):await e(d,void 0,{...r,signal:x.signal});if(r?.afterResponse&&g?.data&&(g.data=r?.afterResponse(g.data)),r?.logging&&console.log("After request",g),r?.onAfterResponse&&r?.onAfterResponse(g),l(c,{loading:false,response:g,isCancel:false}),y&&g.status){let w=E().add(oe,se).toISOString(),D={data:g,expired:w},N=await caches.open(H),ae=new Response(JSON.stringify(D));await N.put(F,ae);}}},[p,e,r,P]);re.useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,d=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},E.duration(u,d).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=re.useRef(null),{enabledRefetch:T,timeoutRefetch:A,timeoutUnitRefetch:v}=re.useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??O?.enabled??false,d=r?.refetchOnWindowFocus?.timeout??O?.timeout,x=typeof d=="number"?d:d?.value??60*5,g=typeof d=="object"?d.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:g}},[r?.refetchOnWindowFocus,O]);re.useEffect(()=>{if(!T)return;let u=E.duration(A,v).asMilliseconds(),d=()=>{let g=Date.now(),w=i.current;w!==null&&g-w>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",d),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",x);}},[T,A,v,f]);let R=re.useCallback(()=>{K.current?.abort(),K.current=null,l(c,{loading:false,isCancel:true});},[c,K]),L=re.useCallback(()=>{l(c,{loading:false,response:null});},[c]),$=re.useMemo(()=>({...C,loading:m,refresh:f,abort:R,clear:L,response:C,isCancel:P,clone:(u,d)=>Ve(e,u,d)}),[C,m,f,R,L,P,e]);return re.useEffect(()=>(Re(c,$),()=>{he(c);}),[$,c]),[C?.data,$]}async function ln(t,e=()=>{}){let n=t*1e3;return new Promise(o=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),o(true);},n);})}var We=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(We||{}),ze=(i=>(i.number="number",i.currency="currency",i.percent="percent",i.date="date",i.dateTime="dateTime",i.month="month",i.year="year",i.time="time",i.timestamp="timestamp",i.string="string",i.textarea="textarea",i.code="code",i.password="password",i.boolean="boolean",i.toggle="toggle",i.email="email",i.phone="phone",i.url="url",i.json="json",i.file="file",i.image="image",i.array="array",i.object="object",i.enum="enum",i.user="user",i.department="department",i.status="status",i))(ze||{});var mn=(t,e,n)=>{let{format:o}=B();return e==="number"?Ge(t,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===e)?Ye(t,{display:o[e]?.display,value:o[e]?.value,...n}):e==="boolean"?Je(t,n):e==="string"?_e(t,n):t?.toString()??""};function Je(t,e){let n=typeof t=="string"?t==="true":!!t,o=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return n?o:s}function _e(t,e){if(!M(t))return "";let n=String(t);switch(e?.textTransform){case "capitalize":n=pe(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 Ge(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(),m=l.indexOf(".");m!==-1&&(p=l.length-m-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?p:o||0,maximumFractionDigits:o==="auto"?p:o||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",r).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,e)}function Ye(t,{display:e,value:n}){if(!M(t))return t;let o=E(t,n);return o.isValid()?o.format(e):t}function Rn(t,{interval:e,lead:n}){let o=re.useRef(null);re.useEffect(()=>{o.current=t;},[t]),re.useEffect(()=>{let s=()=>o.current();if(n&&s(),e!==null){let a=setInterval(s,e);return ()=>clearInterval(a)}},[e]);}function Tn(t,e,n){let[o,s]=re.useState(false),a=(l,m)=>typeof t=="string"&&l===t||typeof t=="number"&&m===t,p=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:m,keyCode:P}=l,C=l.ctrlKey,S=l.altKey,h=l.shiftKey;if(!p(document.activeElement))if(e)if(typeof e=="string")a(m,P)&&(e==="ctrl"&&C||e==="alt"&&S||e==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let b=e.every(O=>O==="ctrl"?C:O==="alt"?S:O==="shift"?h:false);a(m,P)&&b&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(m,P)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},c=({key:l,keyCode:m})=>{a(l,m)&&s(false);};return re.useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var On=({url:t,token:e,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:m,encryptResponse:P,passphrase:C})=>{let{encrypt:S,decrypt:h,passphrase:b}=J(),O=(y,f,i,T)=>{let A=T?.code==="ERR_CANCELED",v=y?.status===401,R=y?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:P)&&R){let g=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:C;try{R=h(R,g);}catch{try{R=h(R,b);}catch{}}}let u={...o({...y,data:R,isCancel:A,isUnauthorization:v},T),isCancel:A,isUnauthorization:v,httpCode:y?.status},d=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:c,x=r?r(u,i):!v;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&p&&(!A||!d)&&p(u),!x&&(!A||!i?.disabledHandleUnauthorized)){let g=i?.onUnauthorized||a;g&&g(u);}if(f)f(u);else return u},I=(y,f=()=>{})=>et__default.default.create({baseURL:`${t}`,withCredentials:typeof y.withCredentials=="boolean"?y.withCredentials:l})(y).then(f).catch(T=>f(T.response,T)),U=(y,f,i,T,A)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...A},L={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?e&&(L.Authorization=`Bearer ${e}`):R.token&&(L.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:m)&&i){let u=A?.passphrase?typeof A.passphrase=="boolean"&&A.passphrase?b:A.passphrase:C;i=S(i,u);}return I({url:f,method:y,data:i,headers:L,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,d)=>O(u,T,R,d))};return {client:I,post:(y,f,i,T)=>U("POST",`${y}`,f,i,T),put:(y,f,i,T)=>U("PUT",`${y}`,f,i,T),patch:(y,f,i,T)=>U("PATCH",`${y}`,f,i,T),delete:(y,f,i)=>U("DELETE",`${y}`,null,f,i),get:(y,f,i)=>U("GET",`${y}`,null,f,i),upload:(y,f,i,T)=>{let A=new FormData;return Object.keys(f).forEach(v=>A.append(v,f[v])),U("POST",`${y}`,A,i,{infoSuccess:false,...T,headers:{"Content-Type":"multipart/form-data",...T?.headers}})}}};function qn(t,e){let[n,o]=re.useState(false),[s,a]=re.useState(),[p,r]=re.useState(0),c=re.useRef(null);return re.useEffect(()=>{if(e?.abortOnUnmount)return ()=>{c.current?.abort();}},[]),[async C=>{c.current?.abort();let S=new AbortController;c.current=S,o(true),e?.beforeRequest&&(C=e?.beforeRequest(C)),e?.logging&&console.log("Before request",C);let h={...e,signal:S.signal,onUploadProgress:O=>{let I=Math.round(O.loaded*100/(O.total||1));r(I);}},b=t.__isVoid?await t(void 0,h):await t(C,void 0,h);e?.logging&&console.log("After response",b),a(b),o(false),r(0),b.status&&e?.onSuccess&&e?.onSuccess(b),!b.status&&e?.onError&&e?.onError(b),e?.afterResponse&&e?.afterResponse(b);},{...s,loading:n,abort:()=>{c.current?.abort(),c.current=null,o(false),r(0);},progress:p,reset:()=>{o(false),r(0),a(null);}}]}function rt(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 ot=typeof window<"u"?window:null;function kn(t={}){let{getTrigger:e=rt,target:n=ot,disableHysteresis:o=false,threshold:s=100}=t,a=re__default.default.useRef(0),[p,r]=re__default.default.useState(()=>e(a,{disableHysteresis:o,threshold:s,target:n}));return re__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 Bn=(t,e)=>{let n=e?.storeName||t.__path||t.name,o=e?.shallow??true,s=p=>{let r=p.states[n]??V,{loading:c,isCancel:l,response:m}=r,{refresh:P,abort:C,clear:S,clone:h}=be(n)||{},b=[m?.data,{...m,loading:c,isCancel:l,refresh:P,abort:C,clear:S,clone:h}];return e?.selector?e.selector(b):b};return o?j(shallow.useShallow(s)):j(s)};var $n=(t,e)=>{let n=o=>t(o);return n.displayName=e,n},jn=(t,e)=>{let n={};n.others=[];let o=s=>{re__default.default.Children.forEach(s,a=>{if(re__default.default.isValidElement(a)){let p=a.type.displayName;if(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 zn(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=re.useRef(r?r(e):e);return re.useSyncExternalStore(s,()=>{let l=r?r(e):e,m=c.current;return Object.is(m,l)||(c.current=l),c.current},()=>r?r(e):e)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function lt(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]=lt(s,[...e,o]):n[o]=s;}return n}exports.BgsCoreProvider=Fe;exports.DataTypeEnum=ze;exports.HttpMethod=We;exports.capitalizeWords=pe;exports.createApiHelper=On;exports.createElement=$n;exports.createStore=zn;exports.debounce=Rt;exports.decrypt=Y;exports.decryptString=ye;exports.defaultState=V;exports.diffJson=ct;exports.encrypt=G;exports.encryptString=me;exports.generateCacheKey=le;exports.generateUUID=pt;exports.getApiActions=be;exports.getFieldValue=k;exports.isArray=ft;exports.isNotEmpty=M;exports.jsonCopy=gt;exports.labelFormatter=ie;exports.mappingUndefinedtoNull=ut;exports.moment=E;exports.registerApi=Re;exports.renderChildren=dt;exports.sorting=mt;exports.splitElement=jn;exports.stableStringify=Ce;exports.summary=yt;exports.unregisterApi=he;exports.useApiLoad=Ve;exports.useApiLoadStore=j;exports.useApiSend=qn;exports.useApiStore=Bn;exports.useBgsCore=B;exports.useCrypto=J;exports.useDelay=ln;exports.useFormatted=mn;exports.useInterval=Rn;exports.useKeyPress=Tn;exports.useScrollTrigger=kn;exports.useStorage=ge;exports.wrapApi=lt;
|
|
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
|
@@ -134,8 +134,20 @@ declare enum HttpMethod {
|
|
|
134
134
|
}
|
|
135
135
|
type ApiMethod<DReq = any, DRes = DReq> = (data: DReq, callback?: CallbackHelper<DRes>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<DRes>>;
|
|
136
136
|
type ApiMethodVoid<DRes = any> = <Res = DRes>(callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
137
|
+
type ApiMethodStream<DReq = any, DRes = DReq> = (data: DReq, callback: CallbackStream<DRes>, options?: Partial<OptionsHelper>) => Promise<void>;
|
|
137
138
|
type ApiDefaultMethod<DReq = any, DRes = DReq> = <Req = DReq, Res = DRes>(url: string, data: Req, callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
138
139
|
type ApiDefaultFetch<DRes = any> = <Res = DRes>(url: string, callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
140
|
+
type ApiDefaultStream<DReq = any, DRes = DReq> = <Req = DReq, Res = DRes>(method: HttpMethod, url: string, data: Req, callback: CallbackStream<Res>, options?: Partial<OptionsHelper>) => Promise<void>;
|
|
141
|
+
type CallbackStream<T = any> = (response: ApiResponseStream<T>) => void;
|
|
142
|
+
interface ApiResponseStream<T = any> {
|
|
143
|
+
status: boolean;
|
|
144
|
+
data: T;
|
|
145
|
+
message: string;
|
|
146
|
+
isCancel: boolean;
|
|
147
|
+
isUnauthorization: boolean;
|
|
148
|
+
httpCode: number;
|
|
149
|
+
isDone: boolean;
|
|
150
|
+
}
|
|
139
151
|
type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata';
|
|
140
152
|
type OptionsCallReturn<DReq = unknown, DRes = DReq> = Partial<ApiResponse<DRes>> & {
|
|
141
153
|
/** Status loading saat request berlangsung */
|
|
@@ -319,6 +331,23 @@ type UseApiSendReturnType<Req, Res> = Req extends undefined ? [
|
|
|
319
331
|
(values: Req) => void,
|
|
320
332
|
ApiActionState<Res>
|
|
321
333
|
];
|
|
334
|
+
type ApiActionStateStream<Res> = Partial<ApiResponse<Res>> & {
|
|
335
|
+
/** Membatalkan request yang sedang berjalan */
|
|
336
|
+
abort: () => void;
|
|
337
|
+
/** Clear/reset response dan status terkait */
|
|
338
|
+
reset: () => void;
|
|
339
|
+
/** Status loading saat request berlangsung */
|
|
340
|
+
loading: boolean;
|
|
341
|
+
};
|
|
342
|
+
type UseApiStreamReturn<Req, Res> = Req extends undefined ? [
|
|
343
|
+
Res[],
|
|
344
|
+
(values?: Req) => void,
|
|
345
|
+
ApiActionStateStream<Res>
|
|
346
|
+
] : [
|
|
347
|
+
Res[],
|
|
348
|
+
(values: Req) => void,
|
|
349
|
+
ApiActionStateStream<Res>
|
|
350
|
+
];
|
|
322
351
|
declare enum DataTypeEnum {
|
|
323
352
|
number = "number",
|
|
324
353
|
currency = "currency",
|
|
@@ -411,6 +440,7 @@ declare const createApiHelper: <DReq = any, DRes = any>({ url, token, beforeRequ
|
|
|
411
440
|
delete: ApiDefaultFetch<DRes>;
|
|
412
441
|
get: ApiDefaultFetch<DRes>;
|
|
413
442
|
upload: ApiDefaultMethod<DReq, DRes>;
|
|
443
|
+
stream: ApiDefaultStream<DReq, DRes>;
|
|
414
444
|
};
|
|
415
445
|
|
|
416
446
|
declare function useApiSend<DReq, DRes>(api: ApiMethod<DReq, DRes>, props?: UseApiSendProps<DReq, DRes>): UseApiSendReturnType<DReq, DRes>;
|
|
@@ -535,6 +565,7 @@ declare function stableStringify(obj: any): string;
|
|
|
535
565
|
declare function generateCacheKey(data?: any, cacheKey?: string | any[]): string;
|
|
536
566
|
declare function capitalizeWords(value?: string): string;
|
|
537
567
|
declare function debounce<T extends (...args: any[]) => void>(func: T, delayInSeconds?: number): (...args: Parameters<T>) => void;
|
|
568
|
+
declare const parseSSEChunk: (chunk: string) => any;
|
|
538
569
|
|
|
539
570
|
type Listener = () => void;
|
|
540
571
|
declare function createStore<T>(initialState: T): {
|
|
@@ -568,6 +599,8 @@ declare const useApiLoadStore: zustand.UseBoundStore<zustand.StoreApi<ApiLoadSta
|
|
|
568
599
|
|
|
569
600
|
declare const moment: typeof dayjs;
|
|
570
601
|
|
|
602
|
+
declare function useApiStream<DReq, DRes>(api: ApiMethodStream<DReq, DRes>): UseApiStreamReturn<DReq, DRes>;
|
|
603
|
+
|
|
571
604
|
type FormatType = {
|
|
572
605
|
display: string;
|
|
573
606
|
value: string;
|
|
@@ -599,4 +632,4 @@ interface BgsCoreProviderProps {
|
|
|
599
632
|
}
|
|
600
633
|
declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
|
|
601
634
|
|
|
602
|
-
export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiLoadState, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, defaultState, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getApiActions, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, moment, 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
|
@@ -134,8 +134,20 @@ declare enum HttpMethod {
|
|
|
134
134
|
}
|
|
135
135
|
type ApiMethod<DReq = any, DRes = DReq> = (data: DReq, callback?: CallbackHelper<DRes>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<DRes>>;
|
|
136
136
|
type ApiMethodVoid<DRes = any> = <Res = DRes>(callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
137
|
+
type ApiMethodStream<DReq = any, DRes = DReq> = (data: DReq, callback: CallbackStream<DRes>, options?: Partial<OptionsHelper>) => Promise<void>;
|
|
137
138
|
type ApiDefaultMethod<DReq = any, DRes = DReq> = <Req = DReq, Res = DRes>(url: string, data: Req, callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
138
139
|
type ApiDefaultFetch<DRes = any> = <Res = DRes>(url: string, callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
140
|
+
type ApiDefaultStream<DReq = any, DRes = DReq> = <Req = DReq, Res = DRes>(method: HttpMethod, url: string, data: Req, callback: CallbackStream<Res>, options?: Partial<OptionsHelper>) => Promise<void>;
|
|
141
|
+
type CallbackStream<T = any> = (response: ApiResponseStream<T>) => void;
|
|
142
|
+
interface ApiResponseStream<T = any> {
|
|
143
|
+
status: boolean;
|
|
144
|
+
data: T;
|
|
145
|
+
message: string;
|
|
146
|
+
isCancel: boolean;
|
|
147
|
+
isUnauthorization: boolean;
|
|
148
|
+
httpCode: number;
|
|
149
|
+
isDone: boolean;
|
|
150
|
+
}
|
|
139
151
|
type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata';
|
|
140
152
|
type OptionsCallReturn<DReq = unknown, DRes = DReq> = Partial<ApiResponse<DRes>> & {
|
|
141
153
|
/** Status loading saat request berlangsung */
|
|
@@ -319,6 +331,23 @@ type UseApiSendReturnType<Req, Res> = Req extends undefined ? [
|
|
|
319
331
|
(values: Req) => void,
|
|
320
332
|
ApiActionState<Res>
|
|
321
333
|
];
|
|
334
|
+
type ApiActionStateStream<Res> = Partial<ApiResponse<Res>> & {
|
|
335
|
+
/** Membatalkan request yang sedang berjalan */
|
|
336
|
+
abort: () => void;
|
|
337
|
+
/** Clear/reset response dan status terkait */
|
|
338
|
+
reset: () => void;
|
|
339
|
+
/** Status loading saat request berlangsung */
|
|
340
|
+
loading: boolean;
|
|
341
|
+
};
|
|
342
|
+
type UseApiStreamReturn<Req, Res> = Req extends undefined ? [
|
|
343
|
+
Res[],
|
|
344
|
+
(values?: Req) => void,
|
|
345
|
+
ApiActionStateStream<Res>
|
|
346
|
+
] : [
|
|
347
|
+
Res[],
|
|
348
|
+
(values: Req) => void,
|
|
349
|
+
ApiActionStateStream<Res>
|
|
350
|
+
];
|
|
322
351
|
declare enum DataTypeEnum {
|
|
323
352
|
number = "number",
|
|
324
353
|
currency = "currency",
|
|
@@ -411,6 +440,7 @@ declare const createApiHelper: <DReq = any, DRes = any>({ url, token, beforeRequ
|
|
|
411
440
|
delete: ApiDefaultFetch<DRes>;
|
|
412
441
|
get: ApiDefaultFetch<DRes>;
|
|
413
442
|
upload: ApiDefaultMethod<DReq, DRes>;
|
|
443
|
+
stream: ApiDefaultStream<DReq, DRes>;
|
|
414
444
|
};
|
|
415
445
|
|
|
416
446
|
declare function useApiSend<DReq, DRes>(api: ApiMethod<DReq, DRes>, props?: UseApiSendProps<DReq, DRes>): UseApiSendReturnType<DReq, DRes>;
|
|
@@ -535,6 +565,7 @@ declare function stableStringify(obj: any): string;
|
|
|
535
565
|
declare function generateCacheKey(data?: any, cacheKey?: string | any[]): string;
|
|
536
566
|
declare function capitalizeWords(value?: string): string;
|
|
537
567
|
declare function debounce<T extends (...args: any[]) => void>(func: T, delayInSeconds?: number): (...args: Parameters<T>) => void;
|
|
568
|
+
declare const parseSSEChunk: (chunk: string) => any;
|
|
538
569
|
|
|
539
570
|
type Listener = () => void;
|
|
540
571
|
declare function createStore<T>(initialState: T): {
|
|
@@ -568,6 +599,8 @@ declare const useApiLoadStore: zustand.UseBoundStore<zustand.StoreApi<ApiLoadSta
|
|
|
568
599
|
|
|
569
600
|
declare const moment: typeof dayjs;
|
|
570
601
|
|
|
602
|
+
declare function useApiStream<DReq, DRes>(api: ApiMethodStream<DReq, DRes>): UseApiStreamReturn<DReq, DRes>;
|
|
603
|
+
|
|
571
604
|
type FormatType = {
|
|
572
605
|
display: string;
|
|
573
606
|
value: string;
|
|
@@ -599,4 +632,4 @@ interface BgsCoreProviderProps {
|
|
|
599
632
|
}
|
|
600
633
|
declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
|
|
601
634
|
|
|
602
|
-
export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiLoadState, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type StorePayload, type SupportedFormattedType, type TWithName, type TextTransform, type TimeoutConfig, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, defaultState, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getApiActions, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, moment, 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 re,{createContext,useContext,useEffect,useCallback,useRef,useMemo,useState,useSyncExternalStore}from'react';import q from'dayjs';import Ae from'dayjs/plugin/utc';import De from'dayjs/plugin/timezone';import Pe from'dayjs/plugin/duration';import Se from'dayjs/plugin/advancedFormat';import Oe from'dayjs/plugin/localizedFormat';import we from'dayjs/plugin/relativeTime';import Ue from'dayjs/plugin/isSameOrBefore';import qe from'dayjs/plugin/isSameOrAfter';import ve from'dayjs/plugin/weekOfYear';import Ne from'dayjs/plugin/customParseFormat';import {jsx}from'react/jsx-runtime';import fe from'crypto-js/aes';import de from'crypto-js/pbkdf2';import Me from'crypto-js/enc-utf8';import z from'crypto-js/enc-base64';import ue from'crypto-js/lib-typedarrays';import {create}from'zustand';import {useShallow}from'zustand/react/shallow';import et from'axios';function pt(){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 ct(t,e){try{return JSON.stringify(t)!==JSON.stringify(e)}catch{return false}}var ut=t=>(Object.keys(t).forEach(e=>{t[e]===void 0&&(t[e]=null);}),t);function ft(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 M(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 ie={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=ie.snackCase(ie.camelCase(t)),e&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function dt(t,e){return typeof t=="function"?t(e):t}var k=(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},mt={desc:(t,e)=>(t||(t=[]),t.sort((n,o)=>{if(e){let s=k(n,e)?k(n,e):"",a=k(o,e)?k(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=k(n,e)?k(n,e):"",a=k(o,e)?k(o,e):"";return s>a?1:-1}else return n>o?1:-1}))},yt=(t,e)=>{Array.isArray(t)||(t=[]);let n=[];return n=t.map(o=>Number(e?k(o,e)||0:o||0)),n.reduce((o,s)=>(o||0)+(s||0),0)||0};function gt(t){try{return t&&JSON.parse(JSON.stringify(t))}catch{return t}}function Ce(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 le(t,e){return Ce([e??"undefined",t??"undefined"])}function pe(t=""){return typeof t!="string"&&(t=""),t.replace(/\b\w/g,e=>e.toUpperCase())}function Rt(t,e=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{t(...o);},e*1e3);}}q.extend(Ae);q.extend(De);q.extend(Pe);q.extend(Se);q.extend(Oe);q.extend(we);q.extend(Ue);q.extend(qe);q.extend(ve);q.extend(Ne);var E=q;var ce=createContext(void 0);function B(){let t=useContext(ce);return t||{}}var Fe=({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&&E.locale(s,a??{},p);}})();},[e.localeConfig]),jsx(ce.Provider,{value:n,children:t})};function G(t,e){let n=ue.random(16),o=ue.random(16),s=de(e,n,{keySize:256/32,iterations:1e3}),a=fe.encrypt(JSON.stringify(t),s,{iv:o}).toString();return {salt:n.toString(z),iv:o.toString(z),encrypted:a}}function Y(t,e){let{salt:n,iv:o,encrypted:s}=t,a=de(e,z.parse(n),{keySize:256/32,iterations:1e3}),r=fe.decrypt(s,a,{iv:z.parse(o)}).toString(Me);return JSON.parse(r)}function me(t,e){return JSON.stringify(G(t,e))}function ye(t,e){return Y(JSON.parse(t),e)}function J(){let{passphrase:t}=B();return {passphrase:t,encrypt(e,n){return G(e,n||t)},decrypt(e,n){return Y(e,n||t)},encryptString(e,n){return me(e,n||t)},decryptString(e,n){return ye(e,n||t)}}}var ge=()=>{let{encrypt:t,decrypt:e}=J(),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=m=>{if(m.key===p)if(m.newValue)try{c(e(JSON.parse(m.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else c(null);};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[p,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 V={loading:false,response:void 0,isCancel:false},j=create()(t=>({states:{},updateState:(e,n)=>t(o=>{let s=o.states[e]||V,a={...s,...n};return $e(s,a)?{states:{...o.states,[e]:a}}:o})}));var Z=new Map,Re=(t,e)=>{Z.set(t,e);},he=t=>{Z.delete(t);},be=t=>Z.get(t);function Ve(...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}=j(),[m,P,C]=j(useShallow(u=>{let d=u.states[c]??V;return [d.loading,d.isCancel,d.response]})),{storageKey:S,cache:h,clearPreviousData:b,refetchOnWindowFocus:O}=B(),I=ge(),U=useRef(void 0),K=useRef(null),{cacheName:H,cacheKey:F,timeout:oe,timeoutUnit:se,persistence:_,cacheEnabled:y}=useMemo(()=>{let u=S?I.get(S):void 0,d=typeof r?.cache=="object"?r?.cache?.cacheName??a:a,x=le({...p,session:u},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),g=false;typeof h?.enabled=="boolean"&&(g=h.enabled);let w=false;typeof h?.persistence=="boolean"&&(w=h?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(w=r?.cache?.persistence??false);let D=60*5,N="s";return M(h?.timeout)&&(typeof h?.timeout=="number"?(D=h.timeout,N="s"):typeof h?.timeout=="object"&&(D=h?.timeout.value,N=h?.timeout.unit)),r?.cache&&(typeof r.cache!="boolean"?(typeof r.cache.enabled=="boolean"?g=r.cache.enabled:g=true,typeof r.cache.timeout=="number"?(D=r.cache.timeout,N="s"):typeof r.cache.timeout=="object"&&(D=r.cache.timeout.value,N=r.cache.timeout.unit)):g=r.cache),{cacheName:d,cacheKey:x,timeout:D,timeoutUnit:N,persistence:w,cacheEnabled:g}},[r?.cache,p,S,h,a]);useEffect(()=>{let u=JSON.stringify(M(U.current)?U.current:""),d=JSON.stringify(M(p)?p:""),x=U.current===void 0;(u!==d||x)&&!r?.hold&&((r?.clearPreviousData??b)&&l(c,{response:null}),f(),U.current=p),r?.onChange&&r?.onChange(p,$);},[p,r?.clearPreviousData,b,r?.hold,...r?.trigger||[]]),useEffect(()=>{let u=async()=>{!_&&H&&F&&(await caches.open(H)).delete(F);};return window.addEventListener("beforeunload",u),()=>{window.removeEventListener("beforeunload",u),K.current?.abort();}},[_,H,F,c,K]);let f=useCallback(async u=>{let d=p;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(d=r?.beforeRequest(p)),y&&!u&&!P){l(c,{loading:true}),r?.onBeforeRequest&&r?.onBeforeRequest(p);let x=await caches.open(H),w=await(await x.match(F))?.json();if(w){let{data:D,expired:N}=w;if(E().isAfter(N))await x.delete(F);else {r?.afterResponse&&D?.data&&(D.data=r?.afterResponse(D.data)),r?.logging&&console.log("After request: Using Cache",D),r?.onAfterResponse&&r?.onAfterResponse(D),l(c,{loading:false,response:D});return}}}if(typeof e=="function"){K.current?.abort();let x=new AbortController;K.current=x,l(c,{loading:true}),r?.logging&&console.log("Before request",p),r?.onBeforeRequest&&r?.onBeforeRequest(p);let g=s?await e(void 0,{...r,signal:x.signal}):await e(d,void 0,{...r,signal:x.signal});if(r?.afterResponse&&g?.data&&(g.data=r?.afterResponse(g.data)),r?.logging&&console.log("After request",g),r?.onAfterResponse&&r?.onAfterResponse(g),l(c,{loading:false,response:g,isCancel:false}),y&&g.status){let w=E().add(oe,se).toISOString(),D={data:g,expired:w},N=await caches.open(H),ae=new Response(JSON.stringify(D));await N.put(F,ae);}}},[p,e,r,P]);useEffect(()=>{if(r?.refreshInterval){let u=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,d=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,x=setInterval(()=>{f();},E.duration(u,d).asMilliseconds());return ()=>clearInterval(x)}return ()=>{}},[r?.refreshInterval,f]);let i=useRef(null),{enabledRefetch:T,timeoutRefetch:A,timeoutUnitRefetch:v}=useMemo(()=>{let u=r?.refetchOnWindowFocus?.enabled??O?.enabled??false,d=r?.refetchOnWindowFocus?.timeout??O?.timeout,x=typeof d=="number"?d:d?.value??60*5,g=typeof d=="object"?d.unit:"s";return {enabledRefetch:u,timeoutRefetch:x,timeoutUnitRefetch:g}},[r?.refetchOnWindowFocus,O]);useEffect(()=>{if(!T)return;let u=E.duration(A,v).asMilliseconds(),d=()=>{let g=Date.now(),w=i.current;w!==null&&g-w>=u&&f(),i.current=null;},x=()=>{i.current=Date.now();};return window.addEventListener("focus",d),window.addEventListener("blur",x),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",x);}},[T,A,v,f]);let R=useCallback(()=>{K.current?.abort(),K.current=null,l(c,{loading:false,isCancel:true});},[c,K]),L=useCallback(()=>{l(c,{loading:false,response:null});},[c]),$=useMemo(()=>({...C,loading:m,refresh:f,abort:R,clear:L,response:C,isCancel:P,clone:(u,d)=>Ve(e,u,d)}),[C,m,f,R,L,P,e]);return useEffect(()=>(Re(c,$),()=>{he(c);}),[$,c]),[C?.data,$]}async function ln(t,e=()=>{}){let n=t*1e3;return new Promise(o=>{setInterval(()=>{e();},1e3);setTimeout(async()=>{await e(),o(true);},n);})}var We=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(We||{}),ze=(i=>(i.number="number",i.currency="currency",i.percent="percent",i.date="date",i.dateTime="dateTime",i.month="month",i.year="year",i.time="time",i.timestamp="timestamp",i.string="string",i.textarea="textarea",i.code="code",i.password="password",i.boolean="boolean",i.toggle="toggle",i.email="email",i.phone="phone",i.url="url",i.json="json",i.file="file",i.image="image",i.array="array",i.object="object",i.enum="enum",i.user="user",i.department="department",i.status="status",i))(ze||{});var mn=(t,e,n)=>{let{format:o}=B();return e==="number"?Ge(t,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===e)?Ye(t,{display:o[e]?.display,value:o[e]?.value,...n}):e==="boolean"?Je(t,n):e==="string"?_e(t,n):t?.toString()??""};function Je(t,e){let n=typeof t=="string"?t==="true":!!t,o=e?.trueLabel??"Yes",s=e?.falseLabel??"No";return n?o:s}function _e(t,e){if(!M(t))return "";let n=String(t);switch(e?.textTransform){case "capitalize":n=pe(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 Ge(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(),m=l.indexOf(".");m!==-1&&(p=l.length-m-1);}let r={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?p:o||0,maximumFractionDigits:o==="auto"?p:o||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",r).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,e)}function Ye(t,{display:e,value:n}){if(!M(t))return t;let o=E(t,n);return o.isValid()?o.format(e):t}function Rn(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 Tn(t,e,n){let[o,s]=useState(false),a=(l,m)=>typeof t=="string"&&l===t||typeof t=="number"&&m===t,p=l=>l!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(l.tagName)||l.hasAttribute("contentEditable")),r=l=>{let{key:m,keyCode:P}=l,C=l.ctrlKey,S=l.altKey,h=l.shiftKey;if(!p(document.activeElement))if(e)if(typeof e=="string")a(m,P)&&(e==="ctrl"&&C||e==="alt"&&S||e==="shift"&&h)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));else {let b=e.every(O=>O==="ctrl"?C:O==="alt"?S:O==="shift"?h:false);a(m,P)&&b&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));}else a(m,P)&&(l.preventDefault(),n&&l.stopPropagation(),s(!o));},c=({key:l,keyCode:m})=>{a(l,m)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",r),window.addEventListener("keyup",c),()=>{window.removeEventListener("keydown",r),window.removeEventListener("keyup",c);}),[]),o}var On=({url:t,token:e,beforeRequest:n,onCallback:o,headers:s,onUnauthorized:a,handleToast:p,handleAuthorization:r,disabledToastWhenCancel:c,withCredentials:l,encryptRequest:m,encryptResponse:P,passphrase:C})=>{let{encrypt:S,decrypt:h,passphrase:b}=J(),O=(y,f,i,T)=>{let A=T?.code==="ERR_CANCELED",v=y?.status===401,R=y?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:P)&&R){let g=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?b:i.passphrase:C;try{R=h(R,g);}catch{try{R=h(R,b);}catch{}}}let u={...o({...y,data:R,isCancel:A,isUnauthorization:v},T),isCancel:A,isUnauthorization:v,httpCode:y?.status},d=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:c,x=r?r(u,i):!v;if((i?.infoSuccess&&u.status||i?.infoError&&!u.status)&&p&&(!A||!d)&&p(u),!x&&(!A||!i?.disabledHandleUnauthorized)){let g=i?.onUnauthorized||a;g&&g(u);}if(f)f(u);else return u},I=(y,f=()=>{})=>et.create({baseURL:`${t}`,withCredentials:typeof y.withCredentials=="boolean"?y.withCredentials:l})(y).then(f).catch(T=>f(T.response,T)),U=(y,f,i,T,A)=>{let R={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...A},L={"Content-Type":"application/json",...s,...R.headers};if(R.token&&(typeof R.token=="boolean"?e&&(L.Authorization=`Bearer ${e}`):R.token&&(L.Authorization=`Bearer ${R.token}`)),n&&(i=n(i)),(typeof R?.encryptRequest=="boolean"?R?.encryptRequest:m)&&i){let u=A?.passphrase?typeof A.passphrase=="boolean"&&A.passphrase?b:A.passphrase:C;i=S(i,u);}return I({url:f,method:y,data:i,headers:L,responseType:R.responseType,signal:R.signal,withCredentials:R.withCredentials,onUploadProgress:u=>{R?.onUploadProgress&&R?.onUploadProgress(u);}},(u,d)=>O(u,T,R,d))};return {client:I,post:(y,f,i,T)=>U("POST",`${y}`,f,i,T),put:(y,f,i,T)=>U("PUT",`${y}`,f,i,T),patch:(y,f,i,T)=>U("PATCH",`${y}`,f,i,T),delete:(y,f,i)=>U("DELETE",`${y}`,null,f,i),get:(y,f,i)=>U("GET",`${y}`,null,f,i),upload:(y,f,i,T)=>{let A=new FormData;return Object.keys(f).forEach(v=>A.append(v,f[v])),U("POST",`${y}`,A,i,{infoSuccess:false,...T,headers:{"Content-Type":"multipart/form-data",...T?.headers}})}}};function qn(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 S=new AbortController;c.current=S,o(true),e?.beforeRequest&&(C=e?.beforeRequest(C)),e?.logging&&console.log("Before request",C);let h={...e,signal:S.signal,onUploadProgress:O=>{let I=Math.round(O.loaded*100/(O.total||1));r(I);}},b=t.__isVoid?await t(void 0,h):await t(C,void 0,h);e?.logging&&console.log("After response",b),a(b),o(false),r(0),b.status&&e?.onSuccess&&e?.onSuccess(b),!b.status&&e?.onError&&e?.onError(b),e?.afterResponse&&e?.afterResponse(b);},{...s,loading:n,abort:()=>{c.current?.abort(),c.current=null,o(false),r(0);},progress:p,reset:()=>{o(false),r(0),a(null);}}]}function rt(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 ot=typeof window<"u"?window:null;function kn(t={}){let{getTrigger:e=rt,target:n=ot,disableHysteresis:o=false,threshold:s=100}=t,a=re.useRef(0),[p,r]=re.useState(()=>e(a,{disableHysteresis:o,threshold:s,target:n}));return re.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 Bn=(t,e)=>{let n=e?.storeName||t.__path||t.name,o=e?.shallow??true,s=p=>{let r=p.states[n]??V,{loading:c,isCancel:l,response:m}=r,{refresh:P,abort:C,clear:S,clone:h}=be(n)||{},b=[m?.data,{...m,loading:c,isCancel:l,refresh:P,abort:C,clear:S,clone:h}];return e?.selector?e.selector(b):b};return o?j(useShallow(s)):j(s)};var $n=(t,e)=>{let n=o=>t(o);return n.displayName=e,n},jn=(t,e)=>{let n={};n.others=[];let o=s=>{re.Children.forEach(s,a=>{if(re.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 zn(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,m=c.current;return Object.is(m,l)||(c.current=l),c.current},()=>r?r(e):e)}return {getSnapshot:o,subscribe:s,setState:a,useStore:p}}function lt(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]=lt(s,[...e,o]):n[o]=s;}return n}export{Fe as BgsCoreProvider,ze as DataTypeEnum,We as HttpMethod,pe as capitalizeWords,On as createApiHelper,$n as createElement,zn as createStore,Rt as debounce,Y as decrypt,ye as decryptString,V as defaultState,ct as diffJson,G as encrypt,me as encryptString,le as generateCacheKey,pt as generateUUID,be as getApiActions,k as getFieldValue,ft as isArray,M as isNotEmpty,gt as jsonCopy,ie as labelFormatter,ut as mappingUndefinedtoNull,E as moment,Re as registerApi,dt as renderChildren,mt as sorting,jn as splitElement,Ce as stableStringify,yt as summary,he as unregisterApi,Ve as useApiLoad,j as useApiLoadStore,qn as useApiSend,Bn as useApiStore,B as useBgsCore,J as useCrypto,ln as useDelay,mn as useFormatted,Rn as useInterval,Tn as useKeyPress,kn as useScrollTrigger,ge as useStorage,lt 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.
|
|
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",
|