UNPKG

@leancodepl/utils

Version:

Common utility functions and React hooks for web applications

2 lines (1 loc) 2.69 kB
(function(t,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("tiny-invariant"),require("react/jsx-runtime"),require("react")):typeof define=="function"&&define.amd?define(["exports","tiny-invariant","react/jsx-runtime","react"],r):(t=typeof globalThis<"u"?globalThis:t||self,r(t["@leancodepl/utils"]={},t.invariant,t.jsxRuntime,t.react))})(this,(function(t,r,g,o){"use strict";function f(){const[n,e]=o.useState(0),u=o.useCallback(async i=>{e(s=>s+1);try{return await i()}finally{e(s=>s-1)}},[]);return[n>0,u]}function C(n){const[e,u]=f(),i=o.useMemo(()=>n?(...s)=>u(()=>n(...s)):void 0,[n,u]);return[e,i]}function l(n){return[o.useCallback(()=>n(!0),[n]),o.useCallback(()=>n(!1),[n])]}function R(n){const[e,u]=o.useState(!1),[i,s]=l(u),c=o.useCallback(()=>{s(),n&&setTimeout(n)},[s,n]);return{isDialogOpen:e,openDialog:i,closeDialog:c}}function T(n){const e=[];for(const u in n){const i=n[u];(Array.isArray(i)?i.some(s=>s!==null):i!==null)&&e.push(u)}return e}function j(n,e,u){const[i,s]=o.useState(n);(u?!u(n,i):n!==i)&&(s(n),e(n))}function N(n,e){return Object.fromEntries(Object.entries(n).map(([u,i])=>[`${e}${u}`,i]))}function d(n,e){r(n!==void 0,e)}function y(n,e){r(n!=null,e)}function m(n,e){r(n!==null,e)}function k(n,e={}){if(typeof n=="string"){const{name:u}=e,i=document.createElement("a");i.href=n,i.target="_blank",u&&(i.download=u),i.click()}else{const u=URL.createObjectURL(n);k(u,e),URL.revokeObjectURL(u)}}function h(n,e){return d(n,e),n}function b(n,e){return y(n,e),n}function E(n,e){return m(n,e),n}function p(n,e){return n.length===0?"":e(n[0])+n.slice(1)}function D(n){return p(n,e=>e.toLowerCase())}function S(n){return p(n,e=>e.toUpperCase())}function a(n,e){if(n!=null){if(Array.isArray(n))return n.map(u=>a(u,e));if(typeof n=="object"){const u=e==="capitalize"?S:D;return Object.entries(n).reduce((i,[s,c])=>({...i,[u(s)]:a(c,e)}),{})}return n}}function I(n){return a(n,"uncapitalize")}function w(n){return a(n,"capitalize")}function z(){const n=o.createContext([void 0,()=>{}]);function e(){return o.useContext(n)}return e.Provider=function({children:i,initialValue:s}){const c=o.useState(s);return g.jsx(n.Provider,{value:c,children:i})},e.set=function(i){const[,s]=e();o.useEffect(()=>{s(i)},[s,i]),o.useEffect(()=>()=>s(void 0),[s])},e}t.addPrefix=N,t.assertDefined=d,t.assertNotEmpty=y,t.assertNotNull=m,t.capitalizeDeep=w,t.downloadFile=k,t.ensureDefined=h,t.ensureNotEmpty=b,t.ensureNotNull=E,t.mkValueContext=z,t.toLowerFirst=D,t.toUpperFirst=S,t.uncapitalizeDeep=I,t.useBoundRunInTask=C,t.useDialog=R,t.useKeyByRoute=T,t.useRunInTask=f,t.useSetUnset=l,t.useSyncState=j,Object.defineProperty(t,Symbol.toStringTag,{value:"Module"})}));