@bgscore/react-core 0.0.12 → 0.0.14
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 +38 -15
- package/dist/index.d.ts +38 -15
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var j=require('moment'),le=require('react'),jsxRuntime=require('react/jsx-runtime'),ee=require('crypto-js/aes'),te=require('crypto-js/pbkdf2'),he=require('crypto-js/enc-utf8'),K=require('crypto-js/enc-base64'),Q=require('crypto-js/lib-typedarrays'),Ke=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var j__default=/*#__PURE__*/_interopDefault(j);var le__default=/*#__PURE__*/_interopDefault(le);var ee__default=/*#__PURE__*/_interopDefault(ee);var te__default=/*#__PURE__*/_interopDefault(te);var he__default=/*#__PURE__*/_interopDefault(he);var K__default=/*#__PURE__*/_interopDefault(K);var Q__default=/*#__PURE__*/_interopDefault(Q);var Ke__default=/*#__PURE__*/_interopDefault(Ke);function je(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function ze(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var Ve=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Je(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function q(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var X={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(o,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=X.snackCase(X.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function We(e,t){return typeof e=="function"?e(t):e}var O=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let r of o){if(a==null)return n;a=a[r];}return a===void 0?n:a},Ge={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let a=O(n,t)?O(n,t):"",r=O(o,t)?O(n,t):"";return a<r?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let a=O(n,t)?O(n,t):"",r=O(o,t)?O(o,t):"";return a>r?1:-1}else return n>o?1:-1}))},Xe=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?O(o,t)||0:o||0)),n.reduce((o,a)=>(o||0)+(a||0),0)||0};function _e(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function de(e){let t=new WeakSet;return JSON.stringify(e,function(n,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((a,r)=>(a[r]=o[r],a),{})):o})??""}function _(e,t){return de([t??"undefined",e??"undefined"])}function Z(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ze(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}var Y=le.createContext(void 0);function N(){let e=le.useContext(Y);return e||{}}var Re=({children:e,value:t})=>{let n={...t};return jsxRuntime.jsx(Y.Provider,{value:n,children:e})};function I(e,t){let n=Q__default.default.random(16),o=Q__default.default.random(16),a=te__default.default(t,n,{keySize:256/32,iterations:1e3}),r=ee__default.default.encrypt(JSON.stringify(e),a,{iv:o}).toString();return {salt:n.toString(K__default.default),iv:o.toString(K__default.default),encrypted:r}}function L(e,t){let{salt:n,iv:o,encrypted:a}=e,r=te__default.default(t,K__default.default.parse(n),{keySize:256/32,iterations:1e3}),i=ee__default.default.decrypt(a,r,{iv:K__default.default.parse(o)}).toString(he__default.default);return JSON.parse(i)}function re(e,t){return JSON.stringify(I(e,t))}function ne(e,t){return L(JSON.parse(e),t)}function M(){let{passphrase:e}=N();return {passphrase:e,encrypt(t,n){return I(t,n||e)},decrypt(t,n){return L(t,n||e)},encryptString(t,n){return re(t,n||e)},decryptString(t,n){return ne(t,n||e)}}}var oe=()=>{let{encrypt:e,decrypt:t}=M(),n=le.useCallback((c,i)=>{try{let d=e(i);localStorage.setItem(c,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),o=le.useCallback(c=>{try{let i=localStorage.getItem(c);return i?t(JSON.parse(i)):null}catch(i){return console.error("Failed to get from storage:",i),null}},[t]),a=c=>{let[i,d]=le.useState(()=>{try{let p=localStorage.getItem(c);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return le.useEffect(()=>{let p=R=>{if(R.key===c)if(R.newValue)try{d(t(JSON.parse(R.newValue)));}catch(S){console.error("Decrypt error from storage event",S);}else d(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[c,t]),i},r=le.useCallback(c=>{c?localStorage.removeItem(c):localStorage.clear();},[]);return {save:n,get:o,clear:r,useWatchStorage:a}};function se(e){let t=e,n=new Set;function o(){return t}function a(i){return n.add(i),()=>n.delete(i)}function r(i){typeof i=="function"?t=i(t):t=i,n.forEach(d=>d());}function c(i){return le.useSyncExternalStore(a,()=>i?i(t):t,()=>i?i(t):t)}return {getSnapshot:o,subscribe:a,setState:r,useStore:c}}var $=new Map;function F(e){return $.has(e)||$.set(e,se([null,{}])),$.get(e)}function Ae(e,t,n){let o=arguments.length===3,a=o?t:void 0,r=o?n:t,{storageKey:c,cache:i}=N(),d=oe(),[p,R]=le.useState(false),[S,b]=le.useState(false),[T,C]=le.useState(),g=le.useRef(void 0),x=le.useRef(null),{cacheName:P,cacheKey:A,timeout:J,timeoutUnit:W,persistence:G}=le.useMemo(()=>{let l=c?d.get(c):void 0,s=typeof r?.cache=="object"?r?.cache?.cacheName??e.name:e.name,f=_({...a,session:l},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),y=false;typeof i?.persistence=="boolean"&&(y=i?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(y=r?.cache?.persistence??false);let h=60*5,u="s";return q(i?.timeout)&&(typeof i?.timeout=="number"?(h=i.timeout,u="s"):typeof i?.timeout=="object"&&(h=i?.timeout.value,u=i?.timeout.unit)),r?.cache&&typeof r.cache!="boolean"&&(typeof r.cache.timeout=="number"?(h=r.cache.timeout,u="s"):typeof r.cache.timeout=="object"&&(h=r.cache.timeout.value,u=r.cache.timeout.unit)),{cacheName:s,cacheKey:f,timeout:h,timeoutUnit:u,persistence:y}},[r?.cache,c,i]);le.useEffect(()=>{let l=JSON.stringify(q(g.current)?g.current:""),s=JSON.stringify(q(a)?a:""),f=g.current===void 0;(l!==s||f)&&!r?.hold&&(C(null),U(),g.current=a),r?.onChange&&r?.onChange(a,m);},[a,r?.hold,...r?.trigger||[]]),le.useEffect(()=>{let l=async()=>{!G&&P&&A&&(await caches.open(P)).delete(A);};return window.addEventListener("beforeunload",l),()=>{window.removeEventListener("beforeunload",l),x.current?.abort();}},[]);let U=le.useCallback(async l=>{let s=a;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(s=r?.beforeRequest(a)),r?.cache&&!l&&!S){R(true),r?.onBeforeRequest&&r?.onBeforeRequest(a);let f=await caches.open(P),h=await(await f.match(A))?.json();if(h){let{data:u,expired:w}=h;if(j__default.default().isAfter(w))await f.delete(A);else {r?.afterResponse&&u?.data&&(u.data=r?.afterResponse(u.data)),r?.logging&&console.log("After request: Using Cache",u),r?.onAfterResponse&&r?.onAfterResponse(u),R(false),C(u);return}}}if(typeof e=="function"){x.current?.abort();let f=new AbortController;x.current=f,R(true),r?.logging&&console.log("Before request",a),r?.onBeforeRequest&&r?.onBeforeRequest(a);let y=o?await e(s,void 0,{...r,signal:f.signal}):await e(void 0,{...r,signal:f.signal});if(r?.afterResponse&&y?.data&&(y.data=r?.afterResponse(y.data)),r?.logging&&console.log("After request",y),r?.onAfterResponse&&r?.onAfterResponse(y),R(false),C(y),b(false),r?.cache&&y.status){let h=j__default.default().add(J,W).toISOString(),u={data:y,expired:h},w=await caches.open(P),E=new Response(JSON.stringify(u));await w.put(A,E);}}},[a,e,r]);le.useEffect(()=>{if(r?.refreshInterval){let l=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,s=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,f=setInterval(()=>{U();},j__default.default.duration(l,s).asMilliseconds());return ()=>clearInterval(f)}return ()=>{}},[r?.refreshInterval,U]),le.useEffect(()=>{if(!r?.refetchOnWindowFocus)return;let l=()=>{U();};return window.addEventListener("focus",l),()=>{window.removeEventListener("focus",l);}},[r?.refetchOnWindowFocus,U]);let m={...T,loading:p,refresh:U,abort:()=>{x.current?.abort(),x.current=null,R(false),b(true);},clear:()=>{R(false),C(null);},response:T,isCancel:S,clone:(l,s)=>Ae(e,l,s)};return le.useEffect(()=>{r?.storeName&&F(r?.storeName).setState([T?.data,m]);},[T,m,r?.storeName]),[T?.data,m]}async function Ot(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var Se=(r=>(r.POST="POST",r.PUT="PUT",r.PATCH="PATCH",r.DELETE="DELETE",r.GET="GET",r))(Se||{}),Pe=(s=>(s.number="number",s.currency="currency",s.percent="percent",s.date="date",s.dateTime="dateTime",s.month="month",s.year="year",s.time="time",s.timestamp="timestamp",s.string="string",s.textarea="textarea",s.code="code",s.password="password",s.boolean="boolean",s.toggle="toggle",s.email="email",s.phone="phone",s.url="url",s.json="json",s.file="file",s.image="image",s.array="array",s.object="object",s.enum="enum",s.user="user",s.department="department",s.status="status",s))(Pe||{});var Et=(e,t,n)=>{let{format:o}=N();return t==="number"?Ue(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(a=>a===t)?Ne(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?qe(e,n):t==="string"?we(e,n):e?.toString()??""};function qe(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",a=t?.falseLabel??"No";return n?o:a}function we(e,t){if(!q(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=Z(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function Ue(e,{thouSep:t,decSep:n,decDigits:o,method:a}){if(e==null||isNaN(Number(e)))return "";let r=typeof e=="string"?parseFloat(e):e;if(a)if(typeof o=="number"){let p=Math.pow(10,o);r=Math[a](r*p)/p;}else r=Math[a](r);else if(typeof o=="number"){let p=Math.pow(10,o);r=Math.floor(r*p)/p;}let c=0;if(o==="auto"){let p=r.toString(),R=p.indexOf(".");R!==-1&&(c=p.length-R-1);}let i={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?c:o||0,maximumFractionDigits:o==="auto"?c:o||0,minimumIntegerDigits:1};return r.toLocaleString("en-US",i).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Ne(e,{display:t,value:n}){if(!q(e))return e;let o=j__default.default(e,n);return o.isValid()?o.format(t):e}function Mt(e,{interval:t,lead:n}){let o=le.useRef(null);le.useEffect(()=>{o.current=e;},[e]),le.useEffect(()=>{let a=()=>o.current();if(n&&a(),t!==null){let r=setInterval(a,t);return ()=>clearInterval(r)}},[t]);}function It(e,t,n){let[o,a]=le.useState(false),r=(p,R)=>typeof e=="string"&&p===e||typeof e=="number"&&R===e,c=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),i=p=>{let{key:R,keyCode:S}=p,b=p.ctrlKey,T=p.altKey,C=p.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")r(R,S)&&(t==="ctrl"&&b||t==="alt"&&T||t==="shift"&&C)&&(p.preventDefault(),n&&p.stopPropagation(),a(!o));else {let g=t.every(x=>x==="ctrl"?b:x==="alt"?T:x==="shift"?C:false);r(R,S)&&g&&(p.preventDefault(),n&&p.stopPropagation(),a(!o));}else r(R,S)&&(p.preventDefault(),n&&p.stopPropagation(),a(!o));},d=({key:p,keyCode:R})=>{r(p,R)&&a(false);};return le.useEffect(()=>(window.addEventListener("keydown",i),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",i),window.removeEventListener("keyup",d);}),[]),o}var Jt=({url:e,token:t,beforeRequest:n,onCallback:o,headers:a,onUnauthorized:r,handleToast:c,handleAuthorization:i,disabledToastWhenCancel:d,withCredentials:p,encryptRequest:R,encryptResponse:S,passphrase:b})=>{let{encrypt:T,decrypt:C,passphrase:g}=M(),x=(m,l,s,f)=>{let y=f?.code==="ERR_CANCELED",h=m.status===401,u=m?.data;if((typeof s?.encryptResponse=="boolean"?s?.encryptResponse:S)&&u){let v=s?.passphrase?typeof s.passphrase=="boolean"&&s.passphrase?g:s.passphrase:b;try{u=C(u,v);}catch{try{u=C(u,g);}catch{}}}let D={...o({...m,data:u,isCancel:y,isUnauthorization:h},f),isCancel:y,isUnauthorization:h,httpCode:m.status},B=typeof s?.disabledToastWhenCancel=="boolean"?s?.disabledToastWhenCancel:d,fe=i?i(D,s):!h;if((s?.infoSuccess&&D.status||s?.infoError&&!D.status)&&c&&(!y||!B)&&c(D),!fe&&(!y||!s?.disabledHandleUnauthorized)){let v=s?.onUnauthorized||r;v&&v(D);}if(l)l(D);else return D},P=(m,l=()=>{})=>Ke__default.default.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(f=>l(f.response,f)),A=(m,l,s,f,y)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...y},w={"Content-Type":"application/json",...a,...u.headers};if(u.token&&(typeof u.token=="boolean"?t&&(w.Authorization=`Bearer ${t}`):u.token&&(w.Authorization=`Bearer ${u.token}`)),n&&(s=n(s)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:R)&&s){let D=y?.passphrase?typeof y.passphrase=="boolean"&&y.passphrase?g:y.passphrase:b;s=T(s,D);}return P({url:l,method:m,data:s,headers:w,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:D=>{u?.onUploadProgress&&u?.onUploadProgress(D);}},(D,B)=>x(D,f,u,B))};return {client:P,post:(m,l,s,f)=>A("POST",`${m}`,l,s,f),put:(m,l,s,f)=>A("PUT",`${m}`,l,s,f),patch:(m,l,s,f)=>A("PATCH",`${m}`,l,s,f),delete:(m,l,s)=>A("DELETE",`${m}`,null,l,s),get:(m,l,s)=>A("GET",`${m}`,null,l,s),upload:(m,l,s,f)=>{let y=new FormData;return Object.keys(l).forEach(h=>y.append(h,l[h])),A("POST",`${m}`,y,s,{infoSuccess:false,...f,headers:{"Content-Type":"multipart/form-data",...f?.headers}})}}};function _t(e,t){let[n,o]=le.useState(false),[a,r]=le.useState(),[c,i]=le.useState(0),d=le.useRef(null);return le.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async b=>{d.current?.abort();let T=new AbortController;d.current=T,o(true),t?.beforeRequest&&(b=t?.beforeRequest(b)),t?.logging&&console.log("Before request",b);let C={...t,signal:T.signal,onUploadProgress:x=>{let P=Math.round(x.loaded*100/(x.total||1));i(P);}},g=q(b)?await e(b,void 0,C):await e(void 0,C);t?.logging&&console.log("After response",g),r(g),o(false),i(0),g.status&&t?.onSuccess&&t?.onSuccess(g),!g.status&&t?.onError&&t?.onError(g),t?.afterResponse&&t?.afterResponse(g);},{...a,loading:n,abort:()=>{d.current?.abort(),d.current=null,o(false),i(0);},progress:c,reset:()=>{o(false),i(0),r(null);}}]}function Qt(e="vertical"){let t=le.useRef(null),[n,o]=le.useState(false),[a,r]=le.useState(false),c=le.useCallback(()=>{let i=t.current;if(i)if(e==="vertical"){let d=Math.ceil(i.scrollTop+i.clientHeight),p=Math.floor(i.scrollHeight);o(i.scrollTop>0),r(d<p);}else {let d=Math.ceil(i.scrollLeft+i.clientWidth),p=Math.floor(i.scrollWidth);o(i.scrollLeft>0),r(d<p);}},[e]);return le.useEffect(()=>{let i=t.current;if(i)return c(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)},[c]),{ref:t,showStartShadow:n,showEndShadow:a}}var rr=(e,t)=>F(t).useStore();var sr=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},ar=(e,t)=>{let n={};n.others=[];let o=a=>{le__default.default.Children.forEach(a,r=>{if(le__default.default.isValidElement(r)){let c=r.type.displayName;if(t.includes(c))n[c]=r;else {let i=r;i.props?.children?o(i.props.children):n.others.push(r);}}else n.others.push(r);});};return o(e),n};exports.BgsCoreProvider=Re;exports.DataTypeEnum=Pe;exports.HttpMethod=Se;exports.capitalizeWords=Z;exports.createApiHelper=Jt;exports.createElement=sr;exports.createStore=se;exports.debounce=Ze;exports.decrypt=L;exports.decryptString=ne;exports.diffJson=ze;exports.encrypt=I;exports.encryptString=re;exports.generateCacheKey=_;exports.generateUUID=je;exports.getFieldValue=O;exports.isArray=Je;exports.isNotEmpty=q;exports.jsonCopy=_e;exports.labelFormatter=X;exports.mappingUndefinedtoNull=Ve;exports.renderChildren=We;exports.sorting=Ge;exports.splitElement=ar;exports.stableStringify=de;exports.summary=Xe;exports.useApiLoad=Ae;exports.useApiSend=_t;exports.useApiStore=rr;exports.useBgsCore=N;exports.useCrypto=M;exports.useDelay=Ot;exports.useFormatted=Et;exports.useInterval=Mt;exports.useKeyPress=It;exports.useScroll=Qt;exports.useStorage=oe;
|
|
1
|
+
'use strict';var j=require('moment'),V=require('react'),jsxRuntime=require('react/jsx-runtime'),te=require('crypto-js/aes'),re=require('crypto-js/pbkdf2'),he=require('crypto-js/enc-utf8'),K=require('crypto-js/enc-base64'),ee=require('crypto-js/lib-typedarrays'),Ke=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var j__default=/*#__PURE__*/_interopDefault(j);var V__default=/*#__PURE__*/_interopDefault(V);var te__default=/*#__PURE__*/_interopDefault(te);var re__default=/*#__PURE__*/_interopDefault(re);var he__default=/*#__PURE__*/_interopDefault(he);var K__default=/*#__PURE__*/_interopDefault(K);var ee__default=/*#__PURE__*/_interopDefault(ee);var Ke__default=/*#__PURE__*/_interopDefault(Ke);function je(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function We(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ze=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ve(e,t){let r=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(r=true):r=true),r}function q(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var X={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let r=e.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(e="",t=false)=>{let r="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],r=X.snackCase(X.camelCase(e)),t&&(r=r?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return r?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var O=(e,t,r="")=>{if(!e)return r;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let n of o){if(s==null)return r;s=s[n];}return s===void 0?r:s},_e={desc:(e,t)=>(e||(e=[]),e.sort((r,o)=>{if(t){let s=O(r,t)?O(r,t):"",n=O(o,t)?O(r,t):"";return s<n?1:-1}else return r<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((r,o)=>{if(t){let s=O(r,t)?O(r,t):"",n=O(o,t)?O(o,t):"";return s>n?1:-1}else return r>o?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let r=[];return r=e.map(o=>Number(t?O(o,t)||0:o||0)),r.reduce((o,s)=>(o||0)+(s||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function de(e){let t=new WeakSet;return JSON.stringify(e,function(r,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,n)=>(s[n]=o[n],s),{})):o})??""}function Y(e,t){return de([t??"undefined",e??"undefined"])}function Z(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let r;return function(...o){clearTimeout(r),r=setTimeout(()=>{e(...o);},t*1e3);}}var Q=V.createContext(void 0);function N(){let e=V.useContext(Q);return e||{}}var ge=({children:e,value:t})=>{let r={...t};return jsxRuntime.jsx(Q.Provider,{value:r,children:e})};function H(e,t){let r=ee__default.default.random(16),o=ee__default.default.random(16),s=re__default.default(t,r,{keySize:256/32,iterations:1e3}),n=te__default.default.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:r.toString(K__default.default),iv:o.toString(K__default.default),encrypted:n}}function I(e,t){let{salt:r,iv:o,encrypted:s}=e,n=re__default.default(t,K__default.default.parse(r),{keySize:256/32,iterations:1e3}),i=te__default.default.decrypt(s,n,{iv:K__default.default.parse(o)}).toString(he__default.default);return JSON.parse(i)}function ne(e,t){return JSON.stringify(H(e,t))}function oe(e,t){return I(JSON.parse(e),t)}function F(){let{passphrase:e}=N();return {passphrase:e,encrypt(t,r){return H(t,r||e)},decrypt(t,r){return I(t,r||e)},encryptString(t,r){return ne(t,r||e)},decryptString(t,r){return oe(t,r||e)}}}var se=()=>{let{encrypt:e,decrypt:t}=F(),r=V.useCallback((u,i)=>{try{let d=e(i);localStorage.setItem(u,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),o=V.useCallback(u=>{try{let i=localStorage.getItem(u);return i?t(JSON.parse(i)):null}catch(i){return console.error("Failed to get from storage:",i),null}},[t]),s=u=>{let[i,d]=V.useState(()=>{try{let p=localStorage.getItem(u);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return V.useEffect(()=>{let p=g=>{if(g.key===u)if(g.newValue)try{d(t(JSON.parse(g.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else d(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[u,t]),i},n=V.useCallback(u=>{u?localStorage.removeItem(u):localStorage.clear();},[]);return {save:r,get:o,clear:n,useWatchStorage:s}};function ae(e){let t=e,r=new Set;function o(){return t}function s(i){return r.add(i),()=>r.delete(i)}function n(i){typeof i=="function"?t=i(t):t=i,r.forEach(d=>d());}function u(i){return V.useSyncExternalStore(s,()=>i?i(t):t,()=>i?i(t):t)}return {getSnapshot:o,subscribe:s,setState:n,useStore:u}}var $=new Map;function M(e){return $.has(e)||$.set(e,ae([null,{}])),$.get(e)}function Ae(e,t,r){let o=arguments.length===3,s=o?t:void 0,n=o?r:t,{storageKey:u,cache:i}=N(),d=se(),[p,g]=V.useState(false),[P,b]=V.useState(false),[x,C]=V.useState(),R=V.useRef(void 0),T=V.useRef(null),{cacheName:S,cacheKey:A,timeout:J,timeoutUnit:_,persistence:G}=V.useMemo(()=>{let l=u?d.get(u):void 0,a=typeof n?.cache=="object"?n?.cache?.cacheName??e.name:e.name,f=Y({...s,session:l},typeof n?.cache=="object"?n?.cache?.cacheKey:void 0),y=false;typeof i?.persistence=="boolean"&&(y=i?.persistence),typeof n?.cache=="object"&&typeof n?.cache?.persistence=="boolean"&&(y=n?.cache?.persistence??false);let h=60*5,c="s";return q(i?.timeout)&&(typeof i?.timeout=="number"?(h=i.timeout,c="s"):typeof i?.timeout=="object"&&(h=i?.timeout.value,c=i?.timeout.unit)),n?.cache&&typeof n.cache!="boolean"&&(typeof n.cache.timeout=="number"?(h=n.cache.timeout,c="s"):typeof n.cache.timeout=="object"&&(h=n.cache.timeout.value,c=n.cache.timeout.unit)),{cacheName:a,cacheKey:f,timeout:h,timeoutUnit:c,persistence:y}},[n?.cache,u,i]);V.useEffect(()=>{let l=JSON.stringify(q(R.current)?R.current:""),a=JSON.stringify(q(s)?s:""),f=R.current===void 0;(l!==a||f)&&!n?.hold&&(C(null),U(),R.current=s),n?.onChange&&n?.onChange(s,m);},[s,n?.hold,...n?.trigger||[]]),V.useEffect(()=>{let l=async()=>{!G&&S&&A&&(await caches.open(S)).delete(A);};return window.addEventListener("beforeunload",l),()=>{window.removeEventListener("beforeunload",l),T.current?.abort();}},[]);let U=V.useCallback(async l=>{let a=s;if(n?.hold&&n?.logging&&console.log("Hold active"),n?.beforeRequest&&(a=n?.beforeRequest(s)),n?.cache&&!l&&!P){g(true),n?.onBeforeRequest&&n?.onBeforeRequest(s);let f=await caches.open(S),h=await(await f.match(A))?.json();if(h){let{data:c,expired:w}=h;if(j__default.default().isAfter(w))await f.delete(A);else {n?.afterResponse&&c?.data&&(c.data=n?.afterResponse(c.data)),n?.logging&&console.log("After request: Using Cache",c),n?.onAfterResponse&&n?.onAfterResponse(c),g(false),C(c);return}}}if(typeof e=="function"){T.current?.abort();let f=new AbortController;T.current=f,g(true),n?.logging&&console.log("Before request",s),n?.onBeforeRequest&&n?.onBeforeRequest(s);let y=o?await e(a,void 0,{...n,signal:f.signal}):await e(void 0,{...n,signal:f.signal});if(n?.afterResponse&&y?.data&&(y.data=n?.afterResponse(y.data)),n?.logging&&console.log("After request",y),n?.onAfterResponse&&n?.onAfterResponse(y),g(false),C(y),b(false),n?.cache&&y.status){let h=j__default.default().add(J,_).toISOString(),c={data:y,expired:h},w=await caches.open(S),E=new Response(JSON.stringify(c));await w.put(A,E);}}},[s,e,n]);V.useEffect(()=>{if(n?.refreshInterval){let l=typeof n.refreshInterval=="number"?n.refreshInterval:n.refreshInterval.value,a=typeof n.refreshInterval=="number"?"s":n.refreshInterval.unit,f=setInterval(()=>{U();},j__default.default.duration(l,a).asMilliseconds());return ()=>clearInterval(f)}return ()=>{}},[n?.refreshInterval,U]),V.useEffect(()=>{if(!n?.refetchOnWindowFocus)return;let l=()=>{U();};return window.addEventListener("focus",l),()=>{window.removeEventListener("focus",l);}},[n?.refetchOnWindowFocus,U]);let m={...x,loading:p,refresh:U,abort:()=>{T.current?.abort(),T.current=null,g(false),b(true);},clear:()=>{g(false),C(null);},response:x,isCancel:P,clone:(l,a)=>Ae(e,l,a)};return V.useEffect(()=>{let l=n?.storeName||e.__path||e.name;M(l).setState([x?.data,m]);},[x,m,n?.storeName,e]),[x?.data,m]}async function Ot(e,t=()=>{}){let r=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},r);})}var Pe=(n=>(n.POST="POST",n.PUT="PUT",n.PATCH="PATCH",n.DELETE="DELETE",n.GET="GET",n))(Pe||{}),Se=(a=>(a.number="number",a.currency="currency",a.percent="percent",a.date="date",a.dateTime="dateTime",a.month="month",a.year="year",a.time="time",a.timestamp="timestamp",a.string="string",a.textarea="textarea",a.code="code",a.password="password",a.boolean="boolean",a.toggle="toggle",a.email="email",a.phone="phone",a.url="url",a.json="json",a.file="file",a.image="image",a.array="array",a.object="object",a.enum="enum",a.user="user",a.department="department",a.status="status",a))(Se||{});var Et=(e,t,r)=>{let{format:o}=N();return t==="number"?Ue(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...r}):["date","dateTime","month","year","time"].some(s=>s===t)?Ne(e,{display:o[t]?.display,value:o[t]?.value,...r}):t==="boolean"?qe(e,r):t==="string"?we(e,r):e?.toString()??""};function qe(e,t){let r=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return r?o:s}function we(e,t){if(!q(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=Z(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return t?.ellipsis&&r.length>t.ellipsis&&(r=r.slice(0,t.ellipsis)+"..."),r}function Ue(e,{thouSep:t,decSep:r,decDigits:o,method:s}){if(e==null||isNaN(Number(e)))return "";let n=typeof e=="string"?parseFloat(e):e;if(s)if(typeof o=="number"){let p=Math.pow(10,o);n=Math[s](n*p)/p;}else n=Math[s](n);else if(typeof o=="number"){let p=Math.pow(10,o);n=Math.floor(n*p)/p;}let u=0;if(o==="auto"){let p=n.toString(),g=p.indexOf(".");g!==-1&&(u=p.length-g-1);}let i={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?u:o||0,maximumFractionDigits:o==="auto"?u:o||0,minimumIntegerDigits:1};return n.toLocaleString("en-US",i).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,t)}function Ne(e,{display:t,value:r}){if(!q(e))return e;let o=j__default.default(e,r);return o.isValid()?o.format(t):e}function Ft(e,{interval:t,lead:r}){let o=V.useRef(null);V.useEffect(()=>{o.current=e;},[e]),V.useEffect(()=>{let s=()=>o.current();if(r&&s(),t!==null){let n=setInterval(s,t);return ()=>clearInterval(n)}},[t]);}function Ht(e,t,r){let[o,s]=V.useState(false),n=(p,g)=>typeof e=="string"&&p===e||typeof e=="number"&&g===e,u=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),i=p=>{let{key:g,keyCode:P}=p,b=p.ctrlKey,x=p.altKey,C=p.shiftKey;if(!u(document.activeElement))if(t)if(typeof t=="string")n(g,P)&&(t==="ctrl"&&b||t==="alt"&&x||t==="shift"&&C)&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));else {let R=t.every(T=>T==="ctrl"?b:T==="alt"?x:T==="shift"?C:false);n(g,P)&&R&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));}else n(g,P)&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));},d=({key:p,keyCode:g})=>{n(p,g)&&s(false);};return V.useEffect(()=>(window.addEventListener("keydown",i),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",i),window.removeEventListener("keyup",d);}),[]),o}var Vt=({url:e,token:t,beforeRequest:r,onCallback:o,headers:s,onUnauthorized:n,handleToast:u,handleAuthorization:i,disabledToastWhenCancel:d,withCredentials:p,encryptRequest:g,encryptResponse:P,passphrase:b})=>{let{encrypt:x,decrypt:C,passphrase:R}=F(),T=(m,l,a,f)=>{let y=f?.code==="ERR_CANCELED",h=m.status===401,c=m?.data;if((typeof a?.encryptResponse=="boolean"?a?.encryptResponse:P)&&c){let v=a?.passphrase?typeof a.passphrase=="boolean"&&a.passphrase?R:a.passphrase:b;try{c=C(c,v);}catch{try{c=C(c,R);}catch{}}}let D={...o({...m,data:c,isCancel:y,isUnauthorization:h},f),isCancel:y,isUnauthorization:h,httpCode:m.status},B=typeof a?.disabledToastWhenCancel=="boolean"?a?.disabledToastWhenCancel:d,fe=i?i(D,a):!h;if((a?.infoSuccess&&D.status||a?.infoError&&!D.status)&&u&&(!y||!B)&&u(D),!fe&&(!y||!a?.disabledHandleUnauthorized)){let v=a?.onUnauthorized||n;v&&v(D);}if(l)l(D);else return D},S=(m,l=()=>{})=>Ke__default.default.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(f=>l(f.response,f)),A=(m,l,a,f,y)=>{let c={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...y},w={"Content-Type":"application/json",...s,...c.headers};if(c.token&&(typeof c.token=="boolean"?t&&(w.Authorization=`Bearer ${t}`):c.token&&(w.Authorization=`Bearer ${c.token}`)),r&&(a=r(a)),(typeof c?.encryptRequest=="boolean"?c?.encryptRequest:g)&&a){let D=y?.passphrase?typeof y.passphrase=="boolean"&&y.passphrase?R:y.passphrase:b;a=x(a,D);}return S({url:l,method:m,data:a,headers:w,responseType:c.responseType,signal:c.signal,withCredentials:c.withCredentials,onUploadProgress:D=>{c?.onUploadProgress&&c?.onUploadProgress(D);}},(D,B)=>T(D,f,c,B))};return {client:S,post:(m,l,a,f)=>A("POST",`${m}`,l,a,f),put:(m,l,a,f)=>A("PUT",`${m}`,l,a,f),patch:(m,l,a,f)=>A("PATCH",`${m}`,l,a,f),delete:(m,l,a)=>A("DELETE",`${m}`,null,l,a),get:(m,l,a)=>A("GET",`${m}`,null,l,a),upload:(m,l,a,f)=>{let y=new FormData;return Object.keys(l).forEach(h=>y.append(h,l[h])),A("POST",`${m}`,y,a,{infoSuccess:false,...f,headers:{"Content-Type":"multipart/form-data",...f?.headers}})}}};function Xt(e,t){let[r,o]=V.useState(false),[s,n]=V.useState(),[u,i]=V.useState(0),d=V.useRef(null);return V.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async b=>{d.current?.abort();let x=new AbortController;d.current=x,o(true),t?.beforeRequest&&(b=t?.beforeRequest(b)),t?.logging&&console.log("Before request",b);let C={...t,signal:x.signal,onUploadProgress:T=>{let S=Math.round(T.loaded*100/(T.total||1));i(S);}},R=q(b)?await e(b,void 0,C):await e(void 0,C);t?.logging&&console.log("After response",R),n(R),o(false),i(0),R.status&&t?.onSuccess&&t?.onSuccess(R),!R.status&&t?.onError&&t?.onError(R),t?.afterResponse&&t?.afterResponse(R);},{...s,loading:r,abort:()=>{d.current?.abort(),d.current=null,o(false),i(0);},progress:u,reset:()=>{o(false),i(0),n(null);}}]}function Be(e,t){let{disableHysteresis:r=false,threshold:o=100,target:s}=t,n=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!r&&n!==void 0&&e.current<n?false:(e.current||0)>o}var He=typeof window<"u"?window:null;function Qt(e={}){let{getTrigger:t=Be,target:r=He,disableHysteresis:o=false,threshold:s=100}=e,n=V__default.default.useRef(0),[u,i]=V__default.default.useState(()=>t(n,{disableHysteresis:o,threshold:s,target:r}));return V__default.default.useEffect(()=>{let d=()=>{i(t(n,{disableHysteresis:o,threshold:s,target:r}));};if(d(),r)return r.addEventListener("scroll",d,{passive:true}),()=>{r.removeEventListener("scroll",d);}},[r,t,o,s]),u}var rr=(e,t)=>{let r=t||e.__path||e.name;return M(r).useStore()};var sr=(e,t)=>{let r=o=>e(o);return r.displayName=t,r},ar=(e,t)=>{let r={};r.others=[];let o=s=>{V__default.default.Children.forEach(s,n=>{if(V__default.default.isValidElement(n)){let u=n.type.displayName;if(t.includes(u))r[u]=n;else {let i=n;i.props?.children?o(i.props.children):r.others.push(n);}}else r.others.push(n);});};return o(e),r};function Ie(e,t=[]){let r={};for(let o in e){let s=e[o];if(typeof s=="function"){let n=s.bind(null);n.__path=[...t,o].join("."),r[o]=n;}else typeof s=="object"&&s!==null?r[o]=Ie(s,[...t,o]):r[o]=s;}return r}exports.BgsCoreProvider=ge;exports.DataTypeEnum=Se;exports.HttpMethod=Pe;exports.capitalizeWords=Z;exports.createApiHelper=Vt;exports.createElement=sr;exports.createStore=ae;exports.debounce=Ye;exports.decrypt=I;exports.decryptString=oe;exports.diffJson=We;exports.encrypt=H;exports.encryptString=ne;exports.generateCacheKey=Y;exports.generateUUID=je;exports.getFieldValue=O;exports.isArray=Ve;exports.isNotEmpty=q;exports.jsonCopy=Xe;exports.labelFormatter=X;exports.mappingUndefinedtoNull=ze;exports.renderChildren=Je;exports.sorting=_e;exports.splitElement=ar;exports.stableStringify=de;exports.summary=Ge;exports.useApiLoad=Ae;exports.useApiSend=Xt;exports.useApiStore=rr;exports.useBgsCore=N;exports.useCrypto=F;exports.useDelay=Ot;exports.useFormatted=Et;exports.useInterval=Ft;exports.useKeyPress=Ht;exports.useScrollTrigger=Qt;exports.useStorage=se;exports.wrapApi=Ie;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import moment from 'moment';
|
|
2
2
|
import { GenericAbortSignal, AxiosProgressEvent, AxiosResponse, AxiosRequestConfig } from 'axios';
|
|
3
|
-
import
|
|
4
|
-
import React__default, { PropsWithChildren } from 'react';
|
|
3
|
+
import React$1, { PropsWithChildren } from 'react';
|
|
5
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
5
|
|
|
7
6
|
type Children<T = unknown> = ChildFunction<T> | React.ReactNode;
|
|
@@ -395,12 +394,17 @@ declare const createApiHelper: <DReq = any, DRes = any>({ url, token, beforeRequ
|
|
|
395
394
|
declare function useApiSend<DReq, DRes>(api: ApiMethod<DReq, DRes>, props?: UseApiSendProps<DReq, DRes>): UseApiSendReturnType<DReq, DRes>;
|
|
396
395
|
declare function useApiSend<DRes>(api: ApiMethodVoid<DRes>, props?: UseApiSendProps<undefined, DRes>): UseApiSendReturnType<undefined, DRes>;
|
|
397
396
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
397
|
+
interface UseScrollTriggerOptions {
|
|
398
|
+
disableHysteresis?: boolean;
|
|
399
|
+
target?: Node | Window | null;
|
|
400
|
+
threshold?: number;
|
|
401
|
+
getTrigger?: (store: ReturnType<typeof React$1.useRef<number | undefined>>, options: {
|
|
402
|
+
disableHysteresis?: boolean;
|
|
403
|
+
threshold?: number;
|
|
404
|
+
target?: Node | Window | null;
|
|
405
|
+
}) => boolean;
|
|
406
|
+
}
|
|
407
|
+
declare function useScrollTrigger(options?: UseScrollTriggerOptions): boolean;
|
|
404
408
|
|
|
405
409
|
declare const useStorage: () => {
|
|
406
410
|
save: <T = any>(key: string, data: T) => void;
|
|
@@ -429,18 +433,30 @@ declare function useCrypto(): {
|
|
|
429
433
|
|
|
430
434
|
type InferApiRequest<T> = T extends ApiMethod<infer Req, any> ? Req : never;
|
|
431
435
|
type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : never;
|
|
432
|
-
|
|
436
|
+
/**
|
|
437
|
+
* Hook untuk menggunakan API store yang sesuai dengan method.
|
|
438
|
+
*
|
|
439
|
+
* @param api API method yang ingin digunakan (misalnya `api.absence.save`)
|
|
440
|
+
* @param key (Optional) Nama store. Jika tidak diisi, akan otomatis memakai `api.__path` (jika tersedia dari `wrapApi`) atau `api.name`
|
|
441
|
+
*
|
|
442
|
+
* Contoh:
|
|
443
|
+
* ```ts
|
|
444
|
+
* const store = useApiStore(api.absence.save); // pakai __path
|
|
445
|
+
* const store = useApiStore(api.absence.save, 'absence.save'); // pakai key manual
|
|
446
|
+
* ```
|
|
447
|
+
*/
|
|
448
|
+
declare const useApiStore: <T extends ApiMethod<any, any>>(api: T, key?: string) => UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>;
|
|
433
449
|
|
|
434
450
|
type CreateElementProps<P = unknown> = {
|
|
435
|
-
(element: (props: P) =>
|
|
451
|
+
(element: (props: P) => React$1.JSX.Element, elementName: string): React$1.FC<P>;
|
|
436
452
|
};
|
|
437
|
-
declare const createElement: <T>(element: (props: T) =>
|
|
453
|
+
declare const createElement: <T>(element: (props: T) => React$1.JSX.Element, elementName: string) => React$1.FC<T>;
|
|
438
454
|
type SplitElementResult<T extends string> = {
|
|
439
|
-
[K in T]?:
|
|
455
|
+
[K in T]?: React$1.ReactNode;
|
|
440
456
|
} & {
|
|
441
|
-
others?:
|
|
457
|
+
others?: React$1.ReactNode[];
|
|
442
458
|
};
|
|
443
|
-
declare const splitElement: <T extends string>(children:
|
|
459
|
+
declare const splitElement: <T extends string>(children: React$1.ReactNode, elementNames: T[]) => SplitElementResult<T>;
|
|
444
460
|
|
|
445
461
|
declare function generateUUID(): string;
|
|
446
462
|
declare function diffJson(data1: any, data2: any): boolean;
|
|
@@ -476,6 +492,13 @@ declare function createStore<T>(initialState: T): {
|
|
|
476
492
|
};
|
|
477
493
|
};
|
|
478
494
|
|
|
495
|
+
type TWithName<T> = {
|
|
496
|
+
[K in keyof T]: T[K] extends (...args: any[]) => any ? T[K] & {
|
|
497
|
+
__path: string;
|
|
498
|
+
} : T[K] extends object ? TWithName<T[K]> : T[K];
|
|
499
|
+
};
|
|
500
|
+
declare function wrapApi<T extends object>(obj: T, path?: string[]): TWithName<T>;
|
|
501
|
+
|
|
479
502
|
type FormatType = {
|
|
480
503
|
display: string;
|
|
481
504
|
value: string;
|
|
@@ -500,4 +523,4 @@ interface BgsCoreProviderProps {
|
|
|
500
523
|
}
|
|
501
524
|
declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
|
|
502
525
|
|
|
503
|
-
export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type SupportedFormattedType, type TextTransform, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, renderChildren, sorting, splitElement, stableStringify, summary, useApiLoad, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress,
|
|
526
|
+
export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type SupportedFormattedType, type TWithName, type TextTransform, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, renderChildren, sorting, splitElement, stableStringify, summary, useApiLoad, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import moment from 'moment';
|
|
2
2
|
import { GenericAbortSignal, AxiosProgressEvent, AxiosResponse, AxiosRequestConfig } from 'axios';
|
|
3
|
-
import
|
|
4
|
-
import React__default, { PropsWithChildren } from 'react';
|
|
3
|
+
import React$1, { PropsWithChildren } from 'react';
|
|
5
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
5
|
|
|
7
6
|
type Children<T = unknown> = ChildFunction<T> | React.ReactNode;
|
|
@@ -395,12 +394,17 @@ declare const createApiHelper: <DReq = any, DRes = any>({ url, token, beforeRequ
|
|
|
395
394
|
declare function useApiSend<DReq, DRes>(api: ApiMethod<DReq, DRes>, props?: UseApiSendProps<DReq, DRes>): UseApiSendReturnType<DReq, DRes>;
|
|
396
395
|
declare function useApiSend<DRes>(api: ApiMethodVoid<DRes>, props?: UseApiSendProps<undefined, DRes>): UseApiSendReturnType<undefined, DRes>;
|
|
397
396
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
397
|
+
interface UseScrollTriggerOptions {
|
|
398
|
+
disableHysteresis?: boolean;
|
|
399
|
+
target?: Node | Window | null;
|
|
400
|
+
threshold?: number;
|
|
401
|
+
getTrigger?: (store: ReturnType<typeof React$1.useRef<number | undefined>>, options: {
|
|
402
|
+
disableHysteresis?: boolean;
|
|
403
|
+
threshold?: number;
|
|
404
|
+
target?: Node | Window | null;
|
|
405
|
+
}) => boolean;
|
|
406
|
+
}
|
|
407
|
+
declare function useScrollTrigger(options?: UseScrollTriggerOptions): boolean;
|
|
404
408
|
|
|
405
409
|
declare const useStorage: () => {
|
|
406
410
|
save: <T = any>(key: string, data: T) => void;
|
|
@@ -429,18 +433,30 @@ declare function useCrypto(): {
|
|
|
429
433
|
|
|
430
434
|
type InferApiRequest<T> = T extends ApiMethod<infer Req, any> ? Req : never;
|
|
431
435
|
type InferApiResponse<T> = T extends ApiMethod<any, infer Res> ? Res : never;
|
|
432
|
-
|
|
436
|
+
/**
|
|
437
|
+
* Hook untuk menggunakan API store yang sesuai dengan method.
|
|
438
|
+
*
|
|
439
|
+
* @param api API method yang ingin digunakan (misalnya `api.absence.save`)
|
|
440
|
+
* @param key (Optional) Nama store. Jika tidak diisi, akan otomatis memakai `api.__path` (jika tersedia dari `wrapApi`) atau `api.name`
|
|
441
|
+
*
|
|
442
|
+
* Contoh:
|
|
443
|
+
* ```ts
|
|
444
|
+
* const store = useApiStore(api.absence.save); // pakai __path
|
|
445
|
+
* const store = useApiStore(api.absence.save, 'absence.save'); // pakai key manual
|
|
446
|
+
* ```
|
|
447
|
+
*/
|
|
448
|
+
declare const useApiStore: <T extends ApiMethod<any, any>>(api: T, key?: string) => UseCallReturnType<InferApiRequest<T>, InferApiResponse<T>>;
|
|
433
449
|
|
|
434
450
|
type CreateElementProps<P = unknown> = {
|
|
435
|
-
(element: (props: P) =>
|
|
451
|
+
(element: (props: P) => React$1.JSX.Element, elementName: string): React$1.FC<P>;
|
|
436
452
|
};
|
|
437
|
-
declare const createElement: <T>(element: (props: T) =>
|
|
453
|
+
declare const createElement: <T>(element: (props: T) => React$1.JSX.Element, elementName: string) => React$1.FC<T>;
|
|
438
454
|
type SplitElementResult<T extends string> = {
|
|
439
|
-
[K in T]?:
|
|
455
|
+
[K in T]?: React$1.ReactNode;
|
|
440
456
|
} & {
|
|
441
|
-
others?:
|
|
457
|
+
others?: React$1.ReactNode[];
|
|
442
458
|
};
|
|
443
|
-
declare const splitElement: <T extends string>(children:
|
|
459
|
+
declare const splitElement: <T extends string>(children: React$1.ReactNode, elementNames: T[]) => SplitElementResult<T>;
|
|
444
460
|
|
|
445
461
|
declare function generateUUID(): string;
|
|
446
462
|
declare function diffJson(data1: any, data2: any): boolean;
|
|
@@ -476,6 +492,13 @@ declare function createStore<T>(initialState: T): {
|
|
|
476
492
|
};
|
|
477
493
|
};
|
|
478
494
|
|
|
495
|
+
type TWithName<T> = {
|
|
496
|
+
[K in keyof T]: T[K] extends (...args: any[]) => any ? T[K] & {
|
|
497
|
+
__path: string;
|
|
498
|
+
} : T[K] extends object ? TWithName<T[K]> : T[K];
|
|
499
|
+
};
|
|
500
|
+
declare function wrapApi<T extends object>(obj: T, path?: string[]): TWithName<T>;
|
|
501
|
+
|
|
479
502
|
type FormatType = {
|
|
480
503
|
display: string;
|
|
481
504
|
value: string;
|
|
@@ -500,4 +523,4 @@ interface BgsCoreProviderProps {
|
|
|
500
523
|
}
|
|
501
524
|
declare const BgsCoreProvider: ({ children, value: options }: PropsWithChildren<BgsCoreProviderProps>) => react_jsx_runtime.JSX.Element;
|
|
502
525
|
|
|
503
|
-
export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type SupportedFormattedType, type TextTransform, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, renderChildren, sorting, splitElement, stableStringify, summary, useApiLoad, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress,
|
|
526
|
+
export { type ApiActionState, type ApiDefaultFetch, type ApiDefaultMethod, type ApiMethod, type ApiMethodVoid, type ApiResponse, type BgsCoreProps, BgsCoreProvider, type CacheData, type CacheProps, type CallbackHelper, type Children, type ClientCallback, type CombinationType, type CreateElementProps, type DataType, DataTypeEnum, type EncryptedPayload, HttpMethod, type NestedKeyOf, type OptionsCallReturn, type OptionsHelper, type OptionsNumberProps, type PaginationMeta, type PathValue, type ResponseType, type SelectedNested, type SplitElementResult, type SupportedFormattedType, type TWithName, type TextTransform, type UseApiSendProps, type UseApiSendReturnType, type UseCallOptionsProps, type UseCallReturnType, type UseHelperProps, type UseScrollTriggerOptions, capitalizeWords, createApiHelper, createElement, createStore, debounce, decrypt, decryptString, diffJson, encrypt, encryptString, generateCacheKey, generateUUID, getFieldValue, isArray, isNotEmpty, jsonCopy, labelFormatter, mappingUndefinedtoNull, renderChildren, sorting, splitElement, stableStringify, summary, useApiLoad, useApiSend, useApiStore, useBgsCore, useCrypto, useDelay, useFormatted, useInterval, useKeyPress, useScrollTrigger, useStorage, wrapApi };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import j from'moment';import le,{createContext,useContext,useCallback,useState,useRef,useMemo,useEffect,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import ee from'crypto-js/aes';import te from'crypto-js/pbkdf2';import he from'crypto-js/enc-utf8';import K from'crypto-js/enc-base64';import Q from'crypto-js/lib-typedarrays';import Ke from'axios';function je(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function ze(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var Ve=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Je(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function q(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var X={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(o,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=X.snackCase(X.camelCase(e)),t&&(n=n?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return n?.trim()}};function We(e,t){return typeof e=="function"?e(t):e}var O=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let r of o){if(a==null)return n;a=a[r];}return a===void 0?n:a},Ge={desc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let a=O(n,t)?O(n,t):"",r=O(o,t)?O(n,t):"";return a<r?1:-1}else return n<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,o)=>{if(t){let a=O(n,t)?O(n,t):"",r=O(o,t)?O(o,t):"";return a>r?1:-1}else return n>o?1:-1}))},Xe=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(o=>Number(t?O(o,t)||0:o||0)),n.reduce((o,a)=>(o||0)+(a||0),0)||0};function _e(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function de(e){let t=new WeakSet;return JSON.stringify(e,function(n,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((a,r)=>(a[r]=o[r],a),{})):o})??""}function _(e,t){return de([t??"undefined",e??"undefined"])}function Z(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ze(e,t=0){let n;return function(...o){clearTimeout(n),n=setTimeout(()=>{e(...o);},t*1e3);}}var Y=createContext(void 0);function N(){let e=useContext(Y);return e||{}}var Re=({children:e,value:t})=>{let n={...t};return jsx(Y.Provider,{value:n,children:e})};function I(e,t){let n=Q.random(16),o=Q.random(16),a=te(t,n,{keySize:256/32,iterations:1e3}),r=ee.encrypt(JSON.stringify(e),a,{iv:o}).toString();return {salt:n.toString(K),iv:o.toString(K),encrypted:r}}function L(e,t){let{salt:n,iv:o,encrypted:a}=e,r=te(t,K.parse(n),{keySize:256/32,iterations:1e3}),i=ee.decrypt(a,r,{iv:K.parse(o)}).toString(he);return JSON.parse(i)}function re(e,t){return JSON.stringify(I(e,t))}function ne(e,t){return L(JSON.parse(e),t)}function M(){let{passphrase:e}=N();return {passphrase:e,encrypt(t,n){return I(t,n||e)},decrypt(t,n){return L(t,n||e)},encryptString(t,n){return re(t,n||e)},decryptString(t,n){return ne(t,n||e)}}}var oe=()=>{let{encrypt:e,decrypt:t}=M(),n=useCallback((c,i)=>{try{let d=e(i);localStorage.setItem(c,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),o=useCallback(c=>{try{let i=localStorage.getItem(c);return i?t(JSON.parse(i)):null}catch(i){return console.error("Failed to get from storage:",i),null}},[t]),a=c=>{let[i,d]=useState(()=>{try{let p=localStorage.getItem(c);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return useEffect(()=>{let p=R=>{if(R.key===c)if(R.newValue)try{d(t(JSON.parse(R.newValue)));}catch(S){console.error("Decrypt error from storage event",S);}else d(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[c,t]),i},r=useCallback(c=>{c?localStorage.removeItem(c):localStorage.clear();},[]);return {save:n,get:o,clear:r,useWatchStorage:a}};function se(e){let t=e,n=new Set;function o(){return t}function a(i){return n.add(i),()=>n.delete(i)}function r(i){typeof i=="function"?t=i(t):t=i,n.forEach(d=>d());}function c(i){return useSyncExternalStore(a,()=>i?i(t):t,()=>i?i(t):t)}return {getSnapshot:o,subscribe:a,setState:r,useStore:c}}var $=new Map;function F(e){return $.has(e)||$.set(e,se([null,{}])),$.get(e)}function Ae(e,t,n){let o=arguments.length===3,a=o?t:void 0,r=o?n:t,{storageKey:c,cache:i}=N(),d=oe(),[p,R]=useState(false),[S,b]=useState(false),[T,C]=useState(),g=useRef(void 0),x=useRef(null),{cacheName:P,cacheKey:A,timeout:J,timeoutUnit:W,persistence:G}=useMemo(()=>{let l=c?d.get(c):void 0,s=typeof r?.cache=="object"?r?.cache?.cacheName??e.name:e.name,f=_({...a,session:l},typeof r?.cache=="object"?r?.cache?.cacheKey:void 0),y=false;typeof i?.persistence=="boolean"&&(y=i?.persistence),typeof r?.cache=="object"&&typeof r?.cache?.persistence=="boolean"&&(y=r?.cache?.persistence??false);let h=60*5,u="s";return q(i?.timeout)&&(typeof i?.timeout=="number"?(h=i.timeout,u="s"):typeof i?.timeout=="object"&&(h=i?.timeout.value,u=i?.timeout.unit)),r?.cache&&typeof r.cache!="boolean"&&(typeof r.cache.timeout=="number"?(h=r.cache.timeout,u="s"):typeof r.cache.timeout=="object"&&(h=r.cache.timeout.value,u=r.cache.timeout.unit)),{cacheName:s,cacheKey:f,timeout:h,timeoutUnit:u,persistence:y}},[r?.cache,c,i]);useEffect(()=>{let l=JSON.stringify(q(g.current)?g.current:""),s=JSON.stringify(q(a)?a:""),f=g.current===void 0;(l!==s||f)&&!r?.hold&&(C(null),U(),g.current=a),r?.onChange&&r?.onChange(a,m);},[a,r?.hold,...r?.trigger||[]]),useEffect(()=>{let l=async()=>{!G&&P&&A&&(await caches.open(P)).delete(A);};return window.addEventListener("beforeunload",l),()=>{window.removeEventListener("beforeunload",l),x.current?.abort();}},[]);let U=useCallback(async l=>{let s=a;if(r?.hold&&r?.logging&&console.log("Hold active"),r?.beforeRequest&&(s=r?.beforeRequest(a)),r?.cache&&!l&&!S){R(true),r?.onBeforeRequest&&r?.onBeforeRequest(a);let f=await caches.open(P),h=await(await f.match(A))?.json();if(h){let{data:u,expired:w}=h;if(j().isAfter(w))await f.delete(A);else {r?.afterResponse&&u?.data&&(u.data=r?.afterResponse(u.data)),r?.logging&&console.log("After request: Using Cache",u),r?.onAfterResponse&&r?.onAfterResponse(u),R(false),C(u);return}}}if(typeof e=="function"){x.current?.abort();let f=new AbortController;x.current=f,R(true),r?.logging&&console.log("Before request",a),r?.onBeforeRequest&&r?.onBeforeRequest(a);let y=o?await e(s,void 0,{...r,signal:f.signal}):await e(void 0,{...r,signal:f.signal});if(r?.afterResponse&&y?.data&&(y.data=r?.afterResponse(y.data)),r?.logging&&console.log("After request",y),r?.onAfterResponse&&r?.onAfterResponse(y),R(false),C(y),b(false),r?.cache&&y.status){let h=j().add(J,W).toISOString(),u={data:y,expired:h},w=await caches.open(P),E=new Response(JSON.stringify(u));await w.put(A,E);}}},[a,e,r]);useEffect(()=>{if(r?.refreshInterval){let l=typeof r.refreshInterval=="number"?r.refreshInterval:r.refreshInterval.value,s=typeof r.refreshInterval=="number"?"s":r.refreshInterval.unit,f=setInterval(()=>{U();},j.duration(l,s).asMilliseconds());return ()=>clearInterval(f)}return ()=>{}},[r?.refreshInterval,U]),useEffect(()=>{if(!r?.refetchOnWindowFocus)return;let l=()=>{U();};return window.addEventListener("focus",l),()=>{window.removeEventListener("focus",l);}},[r?.refetchOnWindowFocus,U]);let m={...T,loading:p,refresh:U,abort:()=>{x.current?.abort(),x.current=null,R(false),b(true);},clear:()=>{R(false),C(null);},response:T,isCancel:S,clone:(l,s)=>Ae(e,l,s)};return useEffect(()=>{r?.storeName&&F(r?.storeName).setState([T?.data,m]);},[T,m,r?.storeName]),[T?.data,m]}async function Ot(e,t=()=>{}){let n=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},n);})}var Se=(r=>(r.POST="POST",r.PUT="PUT",r.PATCH="PATCH",r.DELETE="DELETE",r.GET="GET",r))(Se||{}),Pe=(s=>(s.number="number",s.currency="currency",s.percent="percent",s.date="date",s.dateTime="dateTime",s.month="month",s.year="year",s.time="time",s.timestamp="timestamp",s.string="string",s.textarea="textarea",s.code="code",s.password="password",s.boolean="boolean",s.toggle="toggle",s.email="email",s.phone="phone",s.url="url",s.json="json",s.file="file",s.image="image",s.array="array",s.object="object",s.enum="enum",s.user="user",s.department="department",s.status="status",s))(Pe||{});var Et=(e,t,n)=>{let{format:o}=N();return t==="number"?Ue(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...n}):["date","dateTime","month","year","time"].some(a=>a===t)?Ne(e,{display:o[t]?.display,value:o[t]?.value,...n}):t==="boolean"?qe(e,n):t==="string"?we(e,n):e?.toString()??""};function qe(e,t){let n=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",a=t?.falseLabel??"No";return n?o:a}function we(e,t){if(!q(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=Z(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function Ue(e,{thouSep:t,decSep:n,decDigits:o,method:a}){if(e==null||isNaN(Number(e)))return "";let r=typeof e=="string"?parseFloat(e):e;if(a)if(typeof o=="number"){let p=Math.pow(10,o);r=Math[a](r*p)/p;}else r=Math[a](r);else if(typeof o=="number"){let p=Math.pow(10,o);r=Math.floor(r*p)/p;}let c=0;if(o==="auto"){let p=r.toString(),R=p.indexOf(".");R!==-1&&(c=p.length-R-1);}let i={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?c:o||0,maximumFractionDigits:o==="auto"?c:o||0,minimumIntegerDigits:1};return r.toLocaleString("en-US",i).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Ne(e,{display:t,value:n}){if(!q(e))return e;let o=j(e,n);return o.isValid()?o.format(t):e}function Mt(e,{interval:t,lead:n}){let o=useRef(null);useEffect(()=>{o.current=e;},[e]),useEffect(()=>{let a=()=>o.current();if(n&&a(),t!==null){let r=setInterval(a,t);return ()=>clearInterval(r)}},[t]);}function It(e,t,n){let[o,a]=useState(false),r=(p,R)=>typeof e=="string"&&p===e||typeof e=="number"&&R===e,c=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),i=p=>{let{key:R,keyCode:S}=p,b=p.ctrlKey,T=p.altKey,C=p.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")r(R,S)&&(t==="ctrl"&&b||t==="alt"&&T||t==="shift"&&C)&&(p.preventDefault(),n&&p.stopPropagation(),a(!o));else {let g=t.every(x=>x==="ctrl"?b:x==="alt"?T:x==="shift"?C:false);r(R,S)&&g&&(p.preventDefault(),n&&p.stopPropagation(),a(!o));}else r(R,S)&&(p.preventDefault(),n&&p.stopPropagation(),a(!o));},d=({key:p,keyCode:R})=>{r(p,R)&&a(false);};return useEffect(()=>(window.addEventListener("keydown",i),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",i),window.removeEventListener("keyup",d);}),[]),o}var Jt=({url:e,token:t,beforeRequest:n,onCallback:o,headers:a,onUnauthorized:r,handleToast:c,handleAuthorization:i,disabledToastWhenCancel:d,withCredentials:p,encryptRequest:R,encryptResponse:S,passphrase:b})=>{let{encrypt:T,decrypt:C,passphrase:g}=M(),x=(m,l,s,f)=>{let y=f?.code==="ERR_CANCELED",h=m.status===401,u=m?.data;if((typeof s?.encryptResponse=="boolean"?s?.encryptResponse:S)&&u){let v=s?.passphrase?typeof s.passphrase=="boolean"&&s.passphrase?g:s.passphrase:b;try{u=C(u,v);}catch{try{u=C(u,g);}catch{}}}let D={...o({...m,data:u,isCancel:y,isUnauthorization:h},f),isCancel:y,isUnauthorization:h,httpCode:m.status},B=typeof s?.disabledToastWhenCancel=="boolean"?s?.disabledToastWhenCancel:d,fe=i?i(D,s):!h;if((s?.infoSuccess&&D.status||s?.infoError&&!D.status)&&c&&(!y||!B)&&c(D),!fe&&(!y||!s?.disabledHandleUnauthorized)){let v=s?.onUnauthorized||r;v&&v(D);}if(l)l(D);else return D},P=(m,l=()=>{})=>Ke.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(f=>l(f.response,f)),A=(m,l,s,f,y)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...y},w={"Content-Type":"application/json",...a,...u.headers};if(u.token&&(typeof u.token=="boolean"?t&&(w.Authorization=`Bearer ${t}`):u.token&&(w.Authorization=`Bearer ${u.token}`)),n&&(s=n(s)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:R)&&s){let D=y?.passphrase?typeof y.passphrase=="boolean"&&y.passphrase?g:y.passphrase:b;s=T(s,D);}return P({url:l,method:m,data:s,headers:w,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:D=>{u?.onUploadProgress&&u?.onUploadProgress(D);}},(D,B)=>x(D,f,u,B))};return {client:P,post:(m,l,s,f)=>A("POST",`${m}`,l,s,f),put:(m,l,s,f)=>A("PUT",`${m}`,l,s,f),patch:(m,l,s,f)=>A("PATCH",`${m}`,l,s,f),delete:(m,l,s)=>A("DELETE",`${m}`,null,l,s),get:(m,l,s)=>A("GET",`${m}`,null,l,s),upload:(m,l,s,f)=>{let y=new FormData;return Object.keys(l).forEach(h=>y.append(h,l[h])),A("POST",`${m}`,y,s,{infoSuccess:false,...f,headers:{"Content-Type":"multipart/form-data",...f?.headers}})}}};function _t(e,t){let[n,o]=useState(false),[a,r]=useState(),[c,i]=useState(0),d=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async b=>{d.current?.abort();let T=new AbortController;d.current=T,o(true),t?.beforeRequest&&(b=t?.beforeRequest(b)),t?.logging&&console.log("Before request",b);let C={...t,signal:T.signal,onUploadProgress:x=>{let P=Math.round(x.loaded*100/(x.total||1));i(P);}},g=q(b)?await e(b,void 0,C):await e(void 0,C);t?.logging&&console.log("After response",g),r(g),o(false),i(0),g.status&&t?.onSuccess&&t?.onSuccess(g),!g.status&&t?.onError&&t?.onError(g),t?.afterResponse&&t?.afterResponse(g);},{...a,loading:n,abort:()=>{d.current?.abort(),d.current=null,o(false),i(0);},progress:c,reset:()=>{o(false),i(0),r(null);}}]}function Qt(e="vertical"){let t=useRef(null),[n,o]=useState(false),[a,r]=useState(false),c=useCallback(()=>{let i=t.current;if(i)if(e==="vertical"){let d=Math.ceil(i.scrollTop+i.clientHeight),p=Math.floor(i.scrollHeight);o(i.scrollTop>0),r(d<p);}else {let d=Math.ceil(i.scrollLeft+i.clientWidth),p=Math.floor(i.scrollWidth);o(i.scrollLeft>0),r(d<p);}},[e]);return useEffect(()=>{let i=t.current;if(i)return c(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)},[c]),{ref:t,showStartShadow:n,showEndShadow:a}}var rr=(e,t)=>F(t).useStore();var sr=(e,t)=>{let n=o=>e(o);return n.displayName=t,n},ar=(e,t)=>{let n={};n.others=[];let o=a=>{le.Children.forEach(a,r=>{if(le.isValidElement(r)){let c=r.type.displayName;if(t.includes(c))n[c]=r;else {let i=r;i.props?.children?o(i.props.children):n.others.push(r);}}else n.others.push(r);});};return o(e),n};export{Re as BgsCoreProvider,Pe as DataTypeEnum,Se as HttpMethod,Z as capitalizeWords,Jt as createApiHelper,sr as createElement,se as createStore,Ze as debounce,L as decrypt,ne as decryptString,ze as diffJson,I as encrypt,re as encryptString,_ as generateCacheKey,je as generateUUID,O as getFieldValue,Je as isArray,q as isNotEmpty,_e as jsonCopy,X as labelFormatter,Ve as mappingUndefinedtoNull,We as renderChildren,Ge as sorting,ar as splitElement,de as stableStringify,Xe as summary,Ae as useApiLoad,_t as useApiSend,rr as useApiStore,N as useBgsCore,M as useCrypto,Ot as useDelay,Et as useFormatted,Mt as useInterval,It as useKeyPress,Qt as useScroll,oe as useStorage};
|
|
1
|
+
import j from'moment';import V,{createContext,useContext,useCallback,useState,useRef,useMemo,useEffect,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import te from'crypto-js/aes';import re from'crypto-js/pbkdf2';import he from'crypto-js/enc-utf8';import K from'crypto-js/enc-base64';import ee from'crypto-js/lib-typedarrays';import Ke from'axios';function je(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function We(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var ze=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Ve(e,t){let r=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(r=true):r=true),r}function q(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var X={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let r=e.replace(/_([a-z])/g,(o,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return r=r.charAt(0).toUpperCase()+r.slice(1),r},changeAll:(e="",t=false)=>{let r="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],r=X.snackCase(X.camelCase(e)),t&&(r=r?.split(" ")?.map(o=>o?.length<=3?o?.toUpperCase():o)?.join(" "));}catch{}return r?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var O=(e,t,r="")=>{if(!e)return r;if(e.hasOwnProperty(t))return e[t];let o=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let n of o){if(s==null)return r;s=s[n];}return s===void 0?r:s},_e={desc:(e,t)=>(e||(e=[]),e.sort((r,o)=>{if(t){let s=O(r,t)?O(r,t):"",n=O(o,t)?O(r,t):"";return s<n?1:-1}else return r<o?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((r,o)=>{if(t){let s=O(r,t)?O(r,t):"",n=O(o,t)?O(o,t):"";return s>n?1:-1}else return r>o?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let r=[];return r=e.map(o=>Number(t?O(o,t)||0:o||0)),r.reduce((o,s)=>(o||0)+(s||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function de(e){let t=new WeakSet;return JSON.stringify(e,function(r,o){return o!==null&&typeof o=="object"?t.has(o)?void 0:(t.add(o),Object.keys(o).sort().reduce((s,n)=>(s[n]=o[n],s),{})):o})??""}function Y(e,t){return de([t??"undefined",e??"undefined"])}function Z(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let r;return function(...o){clearTimeout(r),r=setTimeout(()=>{e(...o);},t*1e3);}}var Q=createContext(void 0);function N(){let e=useContext(Q);return e||{}}var ge=({children:e,value:t})=>{let r={...t};return jsx(Q.Provider,{value:r,children:e})};function H(e,t){let r=ee.random(16),o=ee.random(16),s=re(t,r,{keySize:256/32,iterations:1e3}),n=te.encrypt(JSON.stringify(e),s,{iv:o}).toString();return {salt:r.toString(K),iv:o.toString(K),encrypted:n}}function I(e,t){let{salt:r,iv:o,encrypted:s}=e,n=re(t,K.parse(r),{keySize:256/32,iterations:1e3}),i=te.decrypt(s,n,{iv:K.parse(o)}).toString(he);return JSON.parse(i)}function ne(e,t){return JSON.stringify(H(e,t))}function oe(e,t){return I(JSON.parse(e),t)}function F(){let{passphrase:e}=N();return {passphrase:e,encrypt(t,r){return H(t,r||e)},decrypt(t,r){return I(t,r||e)},encryptString(t,r){return ne(t,r||e)},decryptString(t,r){return oe(t,r||e)}}}var se=()=>{let{encrypt:e,decrypt:t}=F(),r=useCallback((u,i)=>{try{let d=e(i);localStorage.setItem(u,JSON.stringify(d));}catch(d){console.error("Failed to save to storage:",d);}},[e]),o=useCallback(u=>{try{let i=localStorage.getItem(u);return i?t(JSON.parse(i)):null}catch(i){return console.error("Failed to get from storage:",i),null}},[t]),s=u=>{let[i,d]=useState(()=>{try{let p=localStorage.getItem(u);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return useEffect(()=>{let p=g=>{if(g.key===u)if(g.newValue)try{d(t(JSON.parse(g.newValue)));}catch(P){console.error("Decrypt error from storage event",P);}else d(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[u,t]),i},n=useCallback(u=>{u?localStorage.removeItem(u):localStorage.clear();},[]);return {save:r,get:o,clear:n,useWatchStorage:s}};function ae(e){let t=e,r=new Set;function o(){return t}function s(i){return r.add(i),()=>r.delete(i)}function n(i){typeof i=="function"?t=i(t):t=i,r.forEach(d=>d());}function u(i){return useSyncExternalStore(s,()=>i?i(t):t,()=>i?i(t):t)}return {getSnapshot:o,subscribe:s,setState:n,useStore:u}}var $=new Map;function M(e){return $.has(e)||$.set(e,ae([null,{}])),$.get(e)}function Ae(e,t,r){let o=arguments.length===3,s=o?t:void 0,n=o?r:t,{storageKey:u,cache:i}=N(),d=se(),[p,g]=useState(false),[P,b]=useState(false),[x,C]=useState(),R=useRef(void 0),T=useRef(null),{cacheName:S,cacheKey:A,timeout:J,timeoutUnit:_,persistence:G}=useMemo(()=>{let l=u?d.get(u):void 0,a=typeof n?.cache=="object"?n?.cache?.cacheName??e.name:e.name,f=Y({...s,session:l},typeof n?.cache=="object"?n?.cache?.cacheKey:void 0),y=false;typeof i?.persistence=="boolean"&&(y=i?.persistence),typeof n?.cache=="object"&&typeof n?.cache?.persistence=="boolean"&&(y=n?.cache?.persistence??false);let h=60*5,c="s";return q(i?.timeout)&&(typeof i?.timeout=="number"?(h=i.timeout,c="s"):typeof i?.timeout=="object"&&(h=i?.timeout.value,c=i?.timeout.unit)),n?.cache&&typeof n.cache!="boolean"&&(typeof n.cache.timeout=="number"?(h=n.cache.timeout,c="s"):typeof n.cache.timeout=="object"&&(h=n.cache.timeout.value,c=n.cache.timeout.unit)),{cacheName:a,cacheKey:f,timeout:h,timeoutUnit:c,persistence:y}},[n?.cache,u,i]);useEffect(()=>{let l=JSON.stringify(q(R.current)?R.current:""),a=JSON.stringify(q(s)?s:""),f=R.current===void 0;(l!==a||f)&&!n?.hold&&(C(null),U(),R.current=s),n?.onChange&&n?.onChange(s,m);},[s,n?.hold,...n?.trigger||[]]),useEffect(()=>{let l=async()=>{!G&&S&&A&&(await caches.open(S)).delete(A);};return window.addEventListener("beforeunload",l),()=>{window.removeEventListener("beforeunload",l),T.current?.abort();}},[]);let U=useCallback(async l=>{let a=s;if(n?.hold&&n?.logging&&console.log("Hold active"),n?.beforeRequest&&(a=n?.beforeRequest(s)),n?.cache&&!l&&!P){g(true),n?.onBeforeRequest&&n?.onBeforeRequest(s);let f=await caches.open(S),h=await(await f.match(A))?.json();if(h){let{data:c,expired:w}=h;if(j().isAfter(w))await f.delete(A);else {n?.afterResponse&&c?.data&&(c.data=n?.afterResponse(c.data)),n?.logging&&console.log("After request: Using Cache",c),n?.onAfterResponse&&n?.onAfterResponse(c),g(false),C(c);return}}}if(typeof e=="function"){T.current?.abort();let f=new AbortController;T.current=f,g(true),n?.logging&&console.log("Before request",s),n?.onBeforeRequest&&n?.onBeforeRequest(s);let y=o?await e(a,void 0,{...n,signal:f.signal}):await e(void 0,{...n,signal:f.signal});if(n?.afterResponse&&y?.data&&(y.data=n?.afterResponse(y.data)),n?.logging&&console.log("After request",y),n?.onAfterResponse&&n?.onAfterResponse(y),g(false),C(y),b(false),n?.cache&&y.status){let h=j().add(J,_).toISOString(),c={data:y,expired:h},w=await caches.open(S),E=new Response(JSON.stringify(c));await w.put(A,E);}}},[s,e,n]);useEffect(()=>{if(n?.refreshInterval){let l=typeof n.refreshInterval=="number"?n.refreshInterval:n.refreshInterval.value,a=typeof n.refreshInterval=="number"?"s":n.refreshInterval.unit,f=setInterval(()=>{U();},j.duration(l,a).asMilliseconds());return ()=>clearInterval(f)}return ()=>{}},[n?.refreshInterval,U]),useEffect(()=>{if(!n?.refetchOnWindowFocus)return;let l=()=>{U();};return window.addEventListener("focus",l),()=>{window.removeEventListener("focus",l);}},[n?.refetchOnWindowFocus,U]);let m={...x,loading:p,refresh:U,abort:()=>{T.current?.abort(),T.current=null,g(false),b(true);},clear:()=>{g(false),C(null);},response:x,isCancel:P,clone:(l,a)=>Ae(e,l,a)};return useEffect(()=>{let l=n?.storeName||e.__path||e.name;M(l).setState([x?.data,m]);},[x,m,n?.storeName,e]),[x?.data,m]}async function Ot(e,t=()=>{}){let r=e*1e3;return new Promise(o=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),o(true);},r);})}var Pe=(n=>(n.POST="POST",n.PUT="PUT",n.PATCH="PATCH",n.DELETE="DELETE",n.GET="GET",n))(Pe||{}),Se=(a=>(a.number="number",a.currency="currency",a.percent="percent",a.date="date",a.dateTime="dateTime",a.month="month",a.year="year",a.time="time",a.timestamp="timestamp",a.string="string",a.textarea="textarea",a.code="code",a.password="password",a.boolean="boolean",a.toggle="toggle",a.email="email",a.phone="phone",a.url="url",a.json="json",a.file="file",a.image="image",a.array="array",a.object="object",a.enum="enum",a.user="user",a.department="department",a.status="status",a))(Se||{});var Et=(e,t,r)=>{let{format:o}=N();return t==="number"?Ue(e,{thouSep:o.number.thouSep,decDigits:o.number.decDigits,decSep:o.number.decSep,...r}):["date","dateTime","month","year","time"].some(s=>s===t)?Ne(e,{display:o[t]?.display,value:o[t]?.value,...r}):t==="boolean"?qe(e,r):t==="string"?we(e,r):e?.toString()??""};function qe(e,t){let r=typeof e=="string"?e==="true":!!e,o=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return r?o:s}function we(e,t){if(!q(e))return "";let r=String(e);switch(t?.textTransform){case "capitalize":r=Z(r);break;case "uppercase":r=r.toUpperCase();break;case "lowercase":r=r.toLowerCase();break}return t?.ellipsis&&r.length>t.ellipsis&&(r=r.slice(0,t.ellipsis)+"..."),r}function Ue(e,{thouSep:t,decSep:r,decDigits:o,method:s}){if(e==null||isNaN(Number(e)))return "";let n=typeof e=="string"?parseFloat(e):e;if(s)if(typeof o=="number"){let p=Math.pow(10,o);n=Math[s](n*p)/p;}else n=Math[s](n);else if(typeof o=="number"){let p=Math.pow(10,o);n=Math.floor(n*p)/p;}let u=0;if(o==="auto"){let p=n.toString(),g=p.indexOf(".");g!==-1&&(u=p.length-g-1);}let i={style:"decimal",useGrouping:true,minimumFractionDigits:o==="auto"?u:o||0,maximumFractionDigits:o==="auto"?u:o||0,minimumIntegerDigits:1};return n.toLocaleString("en-US",i).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,r).replace(/thouSep/g,t)}function Ne(e,{display:t,value:r}){if(!q(e))return e;let o=j(e,r);return o.isValid()?o.format(t):e}function Ft(e,{interval:t,lead:r}){let o=useRef(null);useEffect(()=>{o.current=e;},[e]),useEffect(()=>{let s=()=>o.current();if(r&&s(),t!==null){let n=setInterval(s,t);return ()=>clearInterval(n)}},[t]);}function Ht(e,t,r){let[o,s]=useState(false),n=(p,g)=>typeof e=="string"&&p===e||typeof e=="number"&&g===e,u=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),i=p=>{let{key:g,keyCode:P}=p,b=p.ctrlKey,x=p.altKey,C=p.shiftKey;if(!u(document.activeElement))if(t)if(typeof t=="string")n(g,P)&&(t==="ctrl"&&b||t==="alt"&&x||t==="shift"&&C)&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));else {let R=t.every(T=>T==="ctrl"?b:T==="alt"?x:T==="shift"?C:false);n(g,P)&&R&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));}else n(g,P)&&(p.preventDefault(),r&&p.stopPropagation(),s(!o));},d=({key:p,keyCode:g})=>{n(p,g)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",i),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",i),window.removeEventListener("keyup",d);}),[]),o}var Vt=({url:e,token:t,beforeRequest:r,onCallback:o,headers:s,onUnauthorized:n,handleToast:u,handleAuthorization:i,disabledToastWhenCancel:d,withCredentials:p,encryptRequest:g,encryptResponse:P,passphrase:b})=>{let{encrypt:x,decrypt:C,passphrase:R}=F(),T=(m,l,a,f)=>{let y=f?.code==="ERR_CANCELED",h=m.status===401,c=m?.data;if((typeof a?.encryptResponse=="boolean"?a?.encryptResponse:P)&&c){let v=a?.passphrase?typeof a.passphrase=="boolean"&&a.passphrase?R:a.passphrase:b;try{c=C(c,v);}catch{try{c=C(c,R);}catch{}}}let D={...o({...m,data:c,isCancel:y,isUnauthorization:h},f),isCancel:y,isUnauthorization:h,httpCode:m.status},B=typeof a?.disabledToastWhenCancel=="boolean"?a?.disabledToastWhenCancel:d,fe=i?i(D,a):!h;if((a?.infoSuccess&&D.status||a?.infoError&&!D.status)&&u&&(!y||!B)&&u(D),!fe&&(!y||!a?.disabledHandleUnauthorized)){let v=a?.onUnauthorized||n;v&&v(D);}if(l)l(D);else return D},S=(m,l=()=>{})=>Ke.create({baseURL:`${e}`,withCredentials:typeof m.withCredentials=="boolean"?m.withCredentials:p})(m).then(l).catch(f=>l(f.response,f)),A=(m,l,a,f,y)=>{let c={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...y},w={"Content-Type":"application/json",...s,...c.headers};if(c.token&&(typeof c.token=="boolean"?t&&(w.Authorization=`Bearer ${t}`):c.token&&(w.Authorization=`Bearer ${c.token}`)),r&&(a=r(a)),(typeof c?.encryptRequest=="boolean"?c?.encryptRequest:g)&&a){let D=y?.passphrase?typeof y.passphrase=="boolean"&&y.passphrase?R:y.passphrase:b;a=x(a,D);}return S({url:l,method:m,data:a,headers:w,responseType:c.responseType,signal:c.signal,withCredentials:c.withCredentials,onUploadProgress:D=>{c?.onUploadProgress&&c?.onUploadProgress(D);}},(D,B)=>T(D,f,c,B))};return {client:S,post:(m,l,a,f)=>A("POST",`${m}`,l,a,f),put:(m,l,a,f)=>A("PUT",`${m}`,l,a,f),patch:(m,l,a,f)=>A("PATCH",`${m}`,l,a,f),delete:(m,l,a)=>A("DELETE",`${m}`,null,l,a),get:(m,l,a)=>A("GET",`${m}`,null,l,a),upload:(m,l,a,f)=>{let y=new FormData;return Object.keys(l).forEach(h=>y.append(h,l[h])),A("POST",`${m}`,y,a,{infoSuccess:false,...f,headers:{"Content-Type":"multipart/form-data",...f?.headers}})}}};function Xt(e,t){let[r,o]=useState(false),[s,n]=useState(),[u,i]=useState(0),d=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{d.current?.abort();}},[]),[async b=>{d.current?.abort();let x=new AbortController;d.current=x,o(true),t?.beforeRequest&&(b=t?.beforeRequest(b)),t?.logging&&console.log("Before request",b);let C={...t,signal:x.signal,onUploadProgress:T=>{let S=Math.round(T.loaded*100/(T.total||1));i(S);}},R=q(b)?await e(b,void 0,C):await e(void 0,C);t?.logging&&console.log("After response",R),n(R),o(false),i(0),R.status&&t?.onSuccess&&t?.onSuccess(R),!R.status&&t?.onError&&t?.onError(R),t?.afterResponse&&t?.afterResponse(R);},{...s,loading:r,abort:()=>{d.current?.abort(),d.current=null,o(false),i(0);},progress:u,reset:()=>{o(false),i(0),n(null);}}]}function Be(e,t){let{disableHysteresis:r=false,threshold:o=100,target:s}=t,n=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!r&&n!==void 0&&e.current<n?false:(e.current||0)>o}var He=typeof window<"u"?window:null;function Qt(e={}){let{getTrigger:t=Be,target:r=He,disableHysteresis:o=false,threshold:s=100}=e,n=V.useRef(0),[u,i]=V.useState(()=>t(n,{disableHysteresis:o,threshold:s,target:r}));return V.useEffect(()=>{let d=()=>{i(t(n,{disableHysteresis:o,threshold:s,target:r}));};if(d(),r)return r.addEventListener("scroll",d,{passive:true}),()=>{r.removeEventListener("scroll",d);}},[r,t,o,s]),u}var rr=(e,t)=>{let r=t||e.__path||e.name;return M(r).useStore()};var sr=(e,t)=>{let r=o=>e(o);return r.displayName=t,r},ar=(e,t)=>{let r={};r.others=[];let o=s=>{V.Children.forEach(s,n=>{if(V.isValidElement(n)){let u=n.type.displayName;if(t.includes(u))r[u]=n;else {let i=n;i.props?.children?o(i.props.children):r.others.push(n);}}else r.others.push(n);});};return o(e),r};function Ie(e,t=[]){let r={};for(let o in e){let s=e[o];if(typeof s=="function"){let n=s.bind(null);n.__path=[...t,o].join("."),r[o]=n;}else typeof s=="object"&&s!==null?r[o]=Ie(s,[...t,o]):r[o]=s;}return r}export{ge as BgsCoreProvider,Se as DataTypeEnum,Pe as HttpMethod,Z as capitalizeWords,Vt as createApiHelper,sr as createElement,ae as createStore,Ye as debounce,I as decrypt,oe as decryptString,We as diffJson,H as encrypt,ne as encryptString,Y as generateCacheKey,je as generateUUID,O as getFieldValue,Ve as isArray,q as isNotEmpty,Xe as jsonCopy,X as labelFormatter,ze as mappingUndefinedtoNull,Je as renderChildren,_e as sorting,ar as splitElement,de as stableStringify,Ge as summary,Ae as useApiLoad,Xt as useApiSend,rr as useApiStore,N as useBgsCore,F as useCrypto,Ot as useDelay,Et as useFormatted,Ft as useInterval,Ht as useKeyPress,Qt as useScrollTrigger,se as useStorage,Ie 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.14",
|
|
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",
|