@cleen/ui-core 0.1.101 → 0.1.103

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var Pe={TOOLTIP:700,POPOVER:600,MENU:600,DROPDOWN:600,MODAL:500,DRAWER:500};import{useEffect as V,useState as I}from"react";var N=e=>1-(1-e)*(1-e),Te=({targetNumber:e,defaultNumber:o=0,duration:n=1e3,disabled:t=!1,easeOut:r=!0})=>{let[s,i]=I(o);return V(()=>{if(t)return;let l=null,a=u=>{l||(l=u);let d=u-l,f=Math.min(d/n,1);r&&(f=N(f));let w=f*e;i(w),w<e&&requestAnimationFrame(a)};requestAnimationFrame(a)},[e,n,t,r]),t?e:s};import{useEffect as z}from"react";var v=0,E=null,W=()=>{if(typeof window>"u")return;let{body:e,documentElement:o}=document;if(!(!e||!o)){if(v===0){let n=window.innerWidth-o.clientWidth;E={bodyOverflow:e.style.overflow,bodyPaddingRight:e.style.paddingRight,bodyTouchAction:e.style.touchAction,htmlOverflow:o.style.overflow,htmlOverscrollBehavior:o.style.overscrollBehavior},e.style.overflow="hidden",e.style.touchAction="none",o.style.overflow="hidden",o.style.overscrollBehavior="none",n>0&&(e.style.paddingRight=`${n}px`)}v+=1}},$=()=>{if(typeof window>"u"||v===0||(v-=1,v>0))return;let{body:e,documentElement:o}=document;if(!e||!o||!E){E=null;return}e.style.overflow=E.bodyOverflow,e.style.paddingRight=E.bodyPaddingRight,e.style.touchAction=E.bodyTouchAction,o.style.overflow=E.htmlOverflow,o.style.overscrollBehavior=E.htmlOverscrollBehavior,E=null},Se=e=>{z(()=>{if(e)return W(),()=>{$()}},[e])};import{useEffect as j,useState as G}from"react";var ke=({value:e,defaultValue:o,onChange:n})=>{let t=e!==void 0,[r,s]=G(o),i=t?e:r,l=a=>{t||s(a),n?.(a)};return j(()=>{t||s(e??o??void 0)},[e,o,t]),{value:i,isControlled:t,handleChange:l}};import{useEffect as H,useState as q}from"react";var De=(e,o)=>{let[n,t]=q(e);return H(()=>{let r=setTimeout(()=>{t(e)},o);return()=>{clearTimeout(r)}},[e,o]),n};import{useState as K}from"react";var Re=e=>{let[o,n]=K(!1),t=e?.value!==void 0?e.value:o;return{isOpen:t,open:()=>{n(!0),e?.setValue?.(!0)},close:()=>{n(!1),e?.setValue?.(!1)},toggle:()=>{n(l=>!l),e?.setValue?.(!t)}}};import{useCallback as C,useMemo as _,useRef as Q,useState as X}from"react";var J=(i=>(i.QUEUED="queued",i.UPLOADING="uploading",i.PAUSED="paused",i.DONE="done",i.ERROR="error",i.DELETING="deleting",i))(J||{}),Y=(e,o)=>{let n=e.status??"done",t=e.progress??(n==="done"?100:0);return{id:o,file:e.file??null,url:e.url??null,name:e.name,size:e.size,status:n,progress:t,retries:0,preExisting:!0}},Ne=({initialFiles:e=[],files:o,onFilesChange:n,onFileUpload:t,onFileRemove:r})=>{let s=Q(0),i=_(()=>{let c=new Map;return e.forEach(p=>{let m="f"+ ++s.current;c.set(m,Y(p,m))}),c},[]),[l,a]=X(i),u=typeof o<"u",d=u?o:l,f=C((c,p)=>{let m=h=>h.has(c)?new Map(h).set(c,{...h.get(c),...p}):h;u||a(m),n?.(m)},[u,n]),w=C(async c=>{f(c,{status:"deleting"}),await r?.(c);let p=m=>{let h=new Map(m);return h.delete(c),h};u||a(p),n?.(p)},[r,f,n,u]),g=C(c=>{let p=new Map,m=[];Array.from(c).forEach(b=>{let P="f"+ ++s.current;p.set(P,{id:P,file:b,url:URL.createObjectURL(b),name:b.name,size:b.size,status:"queued",progress:0,retries:0,preExisting:!1}),m.push(P)});let h=b=>new Map([...b,...p]);u||a(h),n?.(h),Array.from(p?.entries()||[]).forEach(([b,P])=>{f(b,{status:"uploading"}),t?.(P,y=>f(b,y)).then(y=>{y?.id&&y?.id!==b&&(f(y?.id,{...y,url:y?.url??null,status:"done"}),w(b)),f(b,{...y,url:y?.url??null,status:"done"})})})},[f,t,w,n,u]);return{files:d,addFiles:g,remove:w}};import{useEffect as Z,useMemo as ee,useState as te}from"react";var $e=({defaultValue:e,resetOnDefaultValueChange:o=!0})=>{let[n,t]=te(e),r=()=>t(e),s=(l,a)=>{t(u=>({...u,[l]:a}))},i=ee(()=>JSON.stringify(n)!==JSON.stringify(e),[n,e]);return Z(()=>{e&&o&&t(e)},[e,o]),{form:n,isDirty:i,setForm:t,setField:s,reset:r}};var M="data-cleen-ignore-outside-click";import{useEffect as ne}from"react";function Ke({refs:e,handler:o,enabled:n=!0}){ne(()=>{if(!n)return;let t=r=>{let s=e.some(l=>{let a=l.current;return a?a.contains(r.target):!1}),i=r.target.closest(`[${M}]`);s||i||setTimeout(()=>o(r),0)};return document.addEventListener("mousedown",t),document.addEventListener("touchstart",t),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("touchstart",t)}},[e,o,n])}import{useState as A}from"react";function Xe(e={}){let{initialPage:o=1,initialPageSize:n=10}=e,[t,r]=A(o),[s,i]=A(n);return{page:t,setPage:r,pageSize:s,setPageSize:i,handleNextPage:d=>r(d),handlePreviousPage:d=>r(d),handlePageChange:d=>r(d)}}var k=(e,o,n)=>{let t={width:window.innerWidth,height:window.innerHeight},r=n;if(n==="left"||n==="right"){let a=n==="left",u=o.left,d=t.width-o.right;return a&&u<e.width&&d>e.width?"right":!a&&d<e.width&&u>e.width?"left":r}let s=n.startsWith("bottom"),i=t.height-o.bottom,l=o.top;if(s&&i<e.height&&l>e.height?r=n.replace("bottom","top"):!s&&n.startsWith("top")&&l<e.height&&i>e.height&&(r=n.replace("top","bottom")),n.includes("-")){let a=n.endsWith("left"),u=t.width-o.right,d=o.left;a&&u<e.width&&d>e.width?r=r.replace("left","right"):!a&&u<e.width&&d>e.width&&(r=r.replace("right","left"))}return r},L=(e,o,n,t)=>{if(!o)return{top:0,left:0};let r=window.scrollY,s=window.scrollX,i=t||0,l=0;n.startsWith("bottom")?l=o.bottom+r+i:n.startsWith("top")?l=o.top+r-(e?.height||0)-i:l=o.top+r+o.height/2-(e?.height||0)/2;let a=0;return n==="left"?a=o.left+s-(e?.width||0)-i:n==="right"?a=o.right+s+i:n.endsWith("left")||n==="bottom"||n==="top"?a=o.left+s:n.endsWith("right")&&(a=o.right+s-(e?.width||0)),(n==="bottom"||n==="top")&&(a=o.left+s+o.width/2-(e?.width||0)/2),{top:l,left:a}};import{useCallback as oe,useEffect as U,useState as T}from"react";var tt=({triggerRef:e,targetRef:o,position:n="bottom-left",offset:t=8,isOpen:r,extraUpdateTriggers:s=[]})=>{let[i,l]=T(!1),[a,u]=T({top:0,left:0}),[d,f]=T(n),w=oe(()=>{if(!e.current||!o.current)return;let g=o.current.getBoundingClientRect(),c=e.current.getBoundingClientRect(),p=k(g,c,n),m=L(g,c,p,t);f(h=>h===p?h:p),u(h=>h.top===m.top&&h.left===m.left?h:m)},[e,o,n,t]);return U(()=>{l(r)},[r]),U(()=>{if(!r){f(n),u({top:0,left:0});return}let g=null,c=()=>{g===null&&(g=window.requestAnimationFrame(()=>{g=null,w()}))},p=new ResizeObserver(()=>{c()});return e.current&&p.observe(e.current),o.current&&p.observe(o.current),window.addEventListener("resize",c),window.addEventListener("scroll",c,!0),s.forEach(m=>{window.addEventListener(m,c)}),window.visualViewport&&(window.visualViewport.addEventListener("resize",c),window.visualViewport.addEventListener("scroll",c),s.forEach(m=>{window.visualViewport?.addEventListener(m,c)})),w(),c(),()=>{g!==null&&window.cancelAnimationFrame(g),p.disconnect(),window.removeEventListener("resize",c),window.removeEventListener("scroll",c,!0),s.forEach(m=>{window.removeEventListener(m,c)}),window.visualViewport&&(window.visualViewport.removeEventListener("resize",c),window.visualViewport.removeEventListener("scroll",c),s.forEach(m=>{window.visualViewport?.removeEventListener(m,c)}))}},[r,n,w,e,o]),{positionStyles:a,optimalPosition:d,isMounted:i}};import{useCallback as x,useState as re}from"react";var rt=e=>{let[o,n]=re(e),t=x((i,l)=>{n(a=>(a[i]=l,{...a}))},[]),r=x(()=>{n(e)},[e]),s=x(i=>{n(l=>(delete l[i],{...l}))},[]);return{errors:o,setError:t,setErrors:n,clearError:s,clearErrors:r}};import{useEffect as se}from"react";var lt=({ref:e,skip:o},n)=>{se(()=>{let t=e.current;if(!t||o)return;let r=t.offsetWidth;t.style.width=`${r}px`,requestAnimationFrame(()=>{t.style.width="auto";let s=t.offsetWidth;t.style.width=`${r}px`,t.offsetHeight,t.style.width=`${s}px`;let i=()=>{t&&(t.style.width="auto"),t?.removeEventListener("transitionend",i)};t.addEventListener("transitionend",i)})},n)};import{create as ie}from"zustand";import{persist as le}from"zustand/middleware";var D="--cleen-",ae=["white","black","gray","pink","purple","indigo","blue","primary","success","warning","error","brand","sidebar","background"],dt=ie()(le((e,o)=>({colors:{},getColors:()=>{let n=o().colors;return ae.reduce((t,r)=>(n[r]?t[r]=n[r]:t[r]=getComputedStyle(document.documentElement).getPropertyValue(`${D}${r}`),t),{})},getColor:n=>{let t=o().colors;return t[n]?t[n]:getComputedStyle(document.documentElement).getPropertyValue(`${D}${n}`)},setColors:n=>Object.entries(n).map(([t,r])=>e(s=>({colors:{...s.colors,[t]:r}}))),setColor:(n,t)=>{e(r=>({colors:{...r.colors,[n]:t}}))},resetColors:()=>{e({colors:{}})},resetColor:n=>{let t=o().colors;delete t[n],e({colors:t})}}),{name:"cleen-colors"}));import{create as ce}from"zustand";import{persist as ue}from"zustand/middleware";var ht=ce()(ue(e=>({overlays:[],addOverlay:o=>{e(n=>({overlays:[...n.overlays,o]}))},removeOverlay:o=>{e(n=>({overlays:n.overlays.filter(t=>t!==o)}))},clearOverlays:()=>{e({overlays:[]})}}),{name:"cleen-overlays"}));var de=e=>{let{numberOfChannels:o,sampleRate:n,length:t}=e,r=16,s=o*r/8,i=n*s,l=t*s,a=new ArrayBuffer(44+l),u=new DataView(a),d=(w,g)=>{for(let c=0;c<g.length;c++)u.setUint8(w+c,g.charCodeAt(c))};d(0,"RIFF"),u.setUint32(4,36+l,!0),d(8,"WAVE"),d(12,"fmt "),u.setUint32(16,16,!0),u.setUint16(20,1,!0),u.setUint16(22,o,!0),u.setUint32(24,n,!0),u.setUint32(28,i,!0),u.setUint16(32,s,!0),u.setUint16(34,r,!0),d(36,"data"),u.setUint32(40,l,!0);let f=44;for(let w=0;w<t;w++)for(let g=0;g<o;g++){let c=Math.max(-1,Math.min(1,e.getChannelData(g)[w]));u.setInt16(f,c<0?c*32768:c*32767,!0),f+=2}return new Blob([a],{type:"audio/wav"})},wt=async(e,o,n)=>{let t=new AudioContext,r=await t.decodeAudioData(await e.arrayBuffer());await t.close();let{sampleRate:s,numberOfChannels:i}=r,l=Math.round(o*s),a=Math.round(n*s),u=a-l,d=new AudioContext().createBuffer(i,u,s);for(let f=0;f<i;f++)d.copyToChannel(r.getChannelData(f).subarray(l,a),f);return de(d)};import fe from"clsx";import{createTailwindMerge as me,getDefaultConfig as pe}from"tailwind-merge";var he=()=>({...pe(),prefix:"cleen-"}),ge=me(he),Pt=(...e)=>ge(fe(e));import{darken as we,getLuminance as B,lighten as be,parseToRgba as O,toHex as ye,toRgba as F}from"color2k";var R=class e{static deltaE(o,n){let t=e.rgb2lab(o),r=e.rgb2lab(n),s=t[0]-r[0],i=t[1]-r[1],l=t[2]-r[2],a=Math.sqrt(t[1]*t[1]+t[2]*t[2]),u=Math.sqrt(r[1]*r[1]+r[2]*r[2]),d=a-u,f=i*i+l*l-d*d;f=f<0?0:Math.sqrt(f);let w=1+.045*a,g=1+.015*a,c=s/1,p=d/w,m=f/g,h=c*c+p*p+m*m;return h<0?0:Math.sqrt(h)}static rgb2lab(o){let n=o[0]/255,t=o[1]/255,r=o[2]/255,s,i,l;return n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,s=(n*.4124+t*.3576+r*.1805)/.95047,i=(n*.2126+t*.7152+r*.0722)/1,l=(n*.0193+t*.1192+r*.9505)/1.08883,s=s>.008856?Math.pow(s,1/3):7.787*s+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,l=l>.008856?Math.pow(l,1/3):7.787*l+16/116,[116*i-16,500*(s-i),200*(i-l)]}static isSimilar(o,n,t=24){return e.deltaE(O(o),O(n))<t}static adjustColorForContrast(o,n=.25){let t=ye(o),r=o;try{if((t.match(/^#f{2,}e{0,2}$/i)||B(t)>.98)&&(t="#ffffff"),B(t)>.6){let s=we(t,n);r=F(s)}else{let s=be(t,n);r=F(s)}return r}catch{return"rgba(var(--cleen-white)"}}static getComputedColor(o){if(!o?.includes("var("))return o;let n=o.match(/var\((--[^,)]+)/)?.[1];if(n&&typeof window<"u"){let t=getComputedStyle(document.documentElement).getPropertyValue(n).trim();return t?`rgb(${t})`:void 0}}static getComputedRgb(o){if(!o)return;if(!o?.includes("var(")){let[t,r,s]=O(o);return`${t}, ${r}, ${s}`}let n=o.match(/var\((--[^,)]+)/)?.[1];if(n&&typeof window<"u")return getComputedStyle(document.documentElement).getPropertyValue(n).trim()}static trasparentize(o,n=0){return`color-mix(in srgb, ${o} ${(1-n)*100}%, transparent)`}};var Ee="https://picsum.photos",xt=e=>{let{width:o,height:n,grayscale:t,blur:r,seed:s}=e,i=Ee;s&&(i+=`/seed/${encodeURIComponent(s)}`),i+=`/${o}/${n||o}`;let l=new URLSearchParams;t&&l.append("grayscale",""),r&&l.append("blur",r.toString()),s&&l.append("seed",s);let a=l.toString();return a&&(i+=`?${a}`),i};function S(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.prototype.toString.call(e)==="[object Object]"}function St(e,o){let n=(r,s)=>{if(s===void 0)return t(r);if(S(r)&&S(s)){let i={};return new Set([...Object.keys(r),...Object.keys(s)]).forEach(a=>{let u=r[a],d=s[a];i[a]=n(u,d)}),i}return Array.isArray(r)||Array.isArray(s)?t(s===void 0?r:s):t(s!==void 0?s:r)},t=r=>{if(r!==void 0){if(r===null)return null;if(Array.isArray(r))return r.map(s=>t(s));if(S(r)){let s={};return Object.keys(r).forEach(i=>{s[i]=t(r[i])}),s}return r}};return n(e,o)}var At=async(e,o)=>(await Promise.all([o,new Promise(t=>setTimeout(t,e))])).slice(0,-1),kt=async(e,...o)=>(await Promise.all([...o,new Promise(t=>setTimeout(t,e))])).slice(0,-1);var Ut=e=>{if(e===0||!e)return"0 B";let o=1024,n=["B","KB","MB","GB","TB"],t=Math.floor(Math.log(e)/Math.log(o));return Math.round(e/Math.pow(o,t))+" "+n[t]},Dt=e=>{let o=Math.floor(e/60),n=Math.floor(e%60);return`${String(o).padStart(2,"0")}:${String(n).padStart(2,"0")}`},Bt=e=>{let o=new Date(e),t=Math.abs(new Date().getTime()-o.getTime());return`Created ${Math.ceil(t/(1e3*60*60*24))} days ago`};export{M as CLEEN_IGNORE_OUTSIDE_CLICK,R as ColorHelpers,J as FileEntryStatus,Pe as ZIndex,St as applyDefaults,k as calculateOptimalPosition,L as calculatePositionValues,Pt as cn,At as delay,kt as delayAll,de as encodeWav,Dt as formatAudioTime,Ut as formatFileSize,Bt as getCreatedDate,xt as getRandomImageUrl,wt as trimBlob,Te as useAnimateNumber,Se as useBodyScrollLock,dt as useCleenColors,ht as useCleenOverlays,ke as useControlled,De as useDebounce,Re as useDisclosure,Ne as useFileUpload,$e as useForm,Ke as useOutsideClick,Xe as usePaginationState,tt as usePositionClose,rt as useValidation,lt as useWidthDynamicResize};
1
+ var xe={TOOLTIP:700,POPOVER:600,MENU:600,DROPDOWN:600,MODAL:500,DRAWER:500};import{useEffect as W,useState as $}from"react";var j=e=>1-(1-e)*(1-e),Me=({targetNumber:e,defaultNumber:o=0,duration:t=1e3,disabled:n=!1,easeOut:r=!0})=>{let[s,i]=$(o);return W(()=>{if(n)return;let a=null,l=c=>{a||(a=c);let d=c-a,f=Math.min(d/t,1);r&&(f=j(f));let w=f*e;i(w),w<e&&requestAnimationFrame(l)};requestAnimationFrame(l)},[e,t,n,r]),n?e:s};import{useEffect as G}from"react";var v=0,y=null,H=()=>{if(typeof window>"u")return;let{body:e,documentElement:o}=document;if(!(!e||!o)){if(v===0){let t=window.innerWidth-o.clientWidth;y={bodyOverflow:e.style.overflow,bodyPaddingRight:e.style.paddingRight,bodyTouchAction:e.style.touchAction,htmlOverflow:o.style.overflow,htmlOverscrollBehavior:o.style.overscrollBehavior},e.style.overflow="hidden",e.style.touchAction="none",o.style.overflow="hidden",o.style.overscrollBehavior="none",t>0&&(e.style.paddingRight=`${t}px`)}v+=1}},q=()=>{if(typeof window>"u"||v===0||(v-=1,v>0))return;let{body:e,documentElement:o}=document;if(!e||!o||!y){y=null;return}e.style.overflow=y.bodyOverflow,e.style.paddingRight=y.bodyPaddingRight,e.style.touchAction=y.bodyTouchAction,o.style.overflow=y.htmlOverflow,o.style.overscrollBehavior=y.htmlOverscrollBehavior,y=null},Le=e=>{G(()=>{if(e)return H(),()=>{q()}},[e])};import{useEffect as K,useState as _}from"react";var Fe=({value:e,defaultValue:o,onChange:t})=>{let n=e!==void 0,[r,s]=_(o),i=n?e:r,a=l=>{n||s(l),t?.(l)};return K(()=>{n||s(e??o??void 0)},[e,o,n]),{value:i,isControlled:n,handleChange:a}};import{useEffect as Q,useState as X}from"react";var Re=(e,o)=>{let[t,n]=X(e);return Q(()=>{let r=setTimeout(()=>{n(e)},o);return()=>{clearTimeout(r)}},[e,o]),t};import{useState as J}from"react";var ze=e=>{let[o,t]=J(!1),n=e?.value!==void 0?e.value:o;return{isOpen:n,open:()=>{t(!0),e?.setValue?.(!0)},close:()=>{t(!1),e?.setValue?.(!1)},toggle:()=>{t(a=>!a),e?.setValue?.(!n)}}};import{useCallback as T,useMemo as Y,useRef as Z,useState as ee}from"react";var te=(i=>(i.QUEUED="queued",i.UPLOADING="uploading",i.PAUSED="paused",i.DONE="done",i.ERROR="error",i.DELETING="deleting",i))(te||{}),ne=(e,o)=>{let t=e.status??"done",n=e.progress??(t==="done"?100:0);return{id:o,file:e.file??null,url:e.url??null,name:e.name,size:e.size,status:t,progress:n,retries:0,preExisting:!0}},je=({initialFiles:e=[],files:o,onFilesChange:t,onFileUpload:n,onFileRemove:r})=>{let s=Z(0),i=Y(()=>{let u=new Map;return e.forEach(p=>{let m="f"+ ++s.current;u.set(m,ne(p,m))}),u},[]),[a,l]=ee(i),c=typeof o<"u",d=c?o:a,f=T((u,p)=>{let m=h=>h.has(u)?new Map(h).set(u,{...h.get(u),...p}):h;c||l(m),t?.(m)},[c,t]),w=T(async u=>{f(u,{status:"deleting"}),await r?.(u);let p=m=>{let h=new Map(m);return h.delete(u),h};c||l(p),t?.(p)},[r,f,t,c]),g=T(u=>{let p=new Map,m=[];Array.from(u).forEach(b=>{let P="f"+ ++s.current;p.set(P,{id:P,file:b,url:URL.createObjectURL(b),name:b.name,size:b.size,status:"queued",progress:0,retries:0,preExisting:!1}),m.push(P)});let h=b=>new Map([...b,...p]);c||l(h),t?.(h),Array.from(p?.entries()||[]).forEach(([b,P])=>{f(b,{status:"uploading"}),n?.(P,E=>f(b,E)).then(E=>{if(E?.id&&E.id!==b){let N={...P,...E,status:"done"},A=z=>{let C=new Map(z);return C.delete(b),C.set(E.id,N),C};c||l(A),t?.(A)}f(b,{...E,url:E?.url??null,status:"done"})})})},[f,n,t,c]);return{files:d,addFiles:g,remove:w}};import{useEffect as oe,useMemo as re,useState as se}from"react";var qe=({defaultValue:e,resetOnDefaultValueChange:o=!0})=>{let[t,n]=se(e),r=()=>n(e),s=(a,l)=>{n(c=>({...c,[a]:l}))},i=re(()=>JSON.stringify(t)!==JSON.stringify(e),[t,e]);return oe(()=>{e&&o&&n(e)},[e,o]),{form:t,isDirty:i,setForm:n,setField:s,reset:r}};var k="data-cleen-ignore-outside-click";import{useEffect as ie}from"react";function Je({refs:e,handler:o,enabled:t=!0}){ie(()=>{if(!t)return;let n=r=>{let s=e.some(a=>{let l=a.current;return l?l.contains(r.target):!1}),i=r.target.closest(`[${k}]`);s||i||setTimeout(()=>o(r),0)};return document.addEventListener("mousedown",n),document.addEventListener("touchstart",n),()=>{document.removeEventListener("mousedown",n),document.removeEventListener("touchstart",n)}},[e,o,t])}import{useState as L}from"react";function et(e={}){let{initialPage:o=1,initialPageSize:t=10}=e,[n,r]=L(o),[s,i]=L(t);return{page:n,setPage:r,pageSize:s,setPageSize:i,handleNextPage:d=>r(d),handlePreviousPage:d=>r(d),handlePageChange:d=>r(d)}}var U=(e,o,t)=>{let n={width:window.innerWidth,height:window.innerHeight},r=t;if(t==="left"||t==="right"){let l=t==="left",c=o.left,d=n.width-o.right;return l&&c<e.width&&d>e.width?"right":!l&&d<e.width&&c>e.width?"left":r}let s=t.startsWith("bottom"),i=n.height-o.bottom,a=o.top;if(s&&i<e.height&&a>e.height?r=t.replace("bottom","top"):!s&&t.startsWith("top")&&a<e.height&&i>e.height&&(r=t.replace("top","bottom")),t.includes("-")){let l=t.endsWith("left"),c=n.width-o.right,d=o.left;l&&c<e.width&&d>e.width?r=r.replace("left","right"):!l&&c<e.width&&d>e.width&&(r=r.replace("right","left"))}return r},D=(e,o,t,n)=>{if(!o)return{top:0,left:0};let r=window.scrollY,s=window.scrollX,i=n||0,a=0;t.startsWith("bottom")?a=o.bottom+r+i:t.startsWith("top")?a=o.top+r-(e?.height||0)-i:a=o.top+r+o.height/2-(e?.height||0)/2;let l=0;return t==="left"?l=o.left+s-(e?.width||0)-i:t==="right"?l=o.right+s+i:t.endsWith("left")||t==="bottom"||t==="top"?l=o.left+s:t.endsWith("right")&&(l=o.right+s-(e?.width||0)),(t==="bottom"||t==="top")&&(l=o.left+s+o.width/2-(e?.width||0)/2),{top:a,left:l}};import{useCallback as ae,useEffect as F,useState as x}from"react";var st=({triggerRef:e,targetRef:o,position:t="bottom-left",offset:n=8,isOpen:r,extraUpdateTriggers:s=[]})=>{let[i,a]=x(!1),[l,c]=x({top:0,left:0}),[d,f]=x(t),w=ae(()=>{if(!e.current||!o.current)return;let g=o.current.getBoundingClientRect(),u=e.current.getBoundingClientRect(),p=U(g,u,t),m=D(g,u,p,n);f(h=>h===p?h:p),c(h=>h.top===m.top&&h.left===m.left?h:m)},[e,o,t,n]);return F(()=>{a(r)},[r]),F(()=>{if(!r){f(t),c({top:0,left:0});return}let g=null,u=()=>{g===null&&(g=window.requestAnimationFrame(()=>{g=null,w()}))},p=new ResizeObserver(()=>{u()});return e.current&&p.observe(e.current),o.current&&p.observe(o.current),window.addEventListener("resize",u),window.addEventListener("scroll",u,!0),s.forEach(m=>{window.addEventListener(m,u)}),window.visualViewport&&(window.visualViewport.addEventListener("resize",u),window.visualViewport.addEventListener("scroll",u),s.forEach(m=>{window.visualViewport?.addEventListener(m,u)})),w(),u(),()=>{g!==null&&window.cancelAnimationFrame(g),p.disconnect(),window.removeEventListener("resize",u),window.removeEventListener("scroll",u,!0),s.forEach(m=>{window.removeEventListener(m,u)}),window.visualViewport&&(window.visualViewport.removeEventListener("resize",u),window.visualViewport.removeEventListener("scroll",u),s.forEach(m=>{window.visualViewport?.removeEventListener(m,u)}))}},[r,t,w,e,o]),{positionStyles:l,optimalPosition:d,isMounted:i}};import{useCallback as O,useState as le}from"react";var lt=e=>{let[o,t]=le(e),n=O((i,a)=>{t(l=>(l[i]=a,{...l}))},[]),r=O(()=>{t(e)},[e]),s=O(i=>{t(a=>(delete a[i],{...a}))},[]);return{errors:o,setError:n,setErrors:t,clearError:s,clearErrors:r}};import{useEffect as ce}from"react";var dt=({ref:e,skip:o},t)=>{ce(()=>{let n=e.current;if(!n||o)return;let r=n.offsetWidth;n.style.width=`${r}px`,requestAnimationFrame(()=>{n.style.width="auto";let s=n.offsetWidth;n.style.width=`${r}px`,n.offsetHeight,n.style.width=`${s}px`;let i=()=>{n&&(n.style.width="auto"),n?.removeEventListener("transitionend",i)};n.addEventListener("transitionend",i)})},t)};import{create as ue}from"zustand";import{persist as de}from"zustand/middleware";var B="--cleen-",fe=["white","black","gray","pink","purple","indigo","blue","primary","success","warning","error","brand","sidebar","background"],ht=ue()(de((e,o)=>({colors:{},getColors:()=>{let t=o().colors;return fe.reduce((n,r)=>(t[r]?n[r]=t[r]:n[r]=getComputedStyle(document.documentElement).getPropertyValue(`${B}${r}`),n),{})},getColor:t=>{let n=o().colors;return n[t]?n[t]:getComputedStyle(document.documentElement).getPropertyValue(`${B}${t}`)},setColors:t=>Object.entries(t).map(([n,r])=>e(s=>({colors:{...s.colors,[n]:r}}))),setColor:(t,n)=>{e(r=>({colors:{...r.colors,[t]:n}}))},resetColors:()=>{e({colors:{}})},resetColor:t=>{let n=o().colors;delete n[t],e({colors:n})}}),{name:"cleen-colors"}));import{create as me}from"zustand";import{persist as pe}from"zustand/middleware";var yt=me()(pe(e=>({overlays:[],addOverlay:o=>{e(t=>({overlays:[...t.overlays,o]}))},removeOverlay:o=>{e(t=>({overlays:t.overlays.filter(n=>n!==o)}))},clearOverlays:()=>{e({overlays:[]})}}),{name:"cleen-overlays"}));var he=e=>{let{numberOfChannels:o,sampleRate:t,length:n}=e,r=16,s=o*r/8,i=t*s,a=n*s,l=new ArrayBuffer(44+a),c=new DataView(l),d=(w,g)=>{for(let u=0;u<g.length;u++)c.setUint8(w+u,g.charCodeAt(u))};d(0,"RIFF"),c.setUint32(4,36+a,!0),d(8,"WAVE"),d(12,"fmt "),c.setUint32(16,16,!0),c.setUint16(20,1,!0),c.setUint16(22,o,!0),c.setUint32(24,t,!0),c.setUint32(28,i,!0),c.setUint16(32,s,!0),c.setUint16(34,r,!0),d(36,"data"),c.setUint32(40,a,!0);let f=44;for(let w=0;w<n;w++)for(let g=0;g<o;g++){let u=Math.max(-1,Math.min(1,e.getChannelData(g)[w]));c.setInt16(f,u<0?u*32768:u*32767,!0),f+=2}return new Blob([l],{type:"audio/wav"})},Pt=async(e,o,t)=>{let n=new AudioContext,r=await n.decodeAudioData(await e.arrayBuffer());await n.close();let{sampleRate:s,numberOfChannels:i}=r,a=Math.round(o*s),l=Math.round(t*s),c=l-a,d=new AudioContext().createBuffer(i,c,s);for(let f=0;f<i;f++)d.copyToChannel(r.getChannelData(f).subarray(a,l),f);return he(d)};import ge from"clsx";import{createTailwindMerge as we,getDefaultConfig as be}from"tailwind-merge";var ye=()=>({...be(),prefix:"cleen-"}),Ee=we(ye),xt=(...e)=>Ee(ge(e));import{darken as Pe,getLuminance as V,lighten as ve,parseToRgba as S,toHex as Ce,toRgba as R}from"color2k";var I=class e{static deltaE(o,t){let n=e.rgb2lab(o),r=e.rgb2lab(t),s=n[0]-r[0],i=n[1]-r[1],a=n[2]-r[2],l=Math.sqrt(n[1]*n[1]+n[2]*n[2]),c=Math.sqrt(r[1]*r[1]+r[2]*r[2]),d=l-c,f=i*i+a*a-d*d;f=f<0?0:Math.sqrt(f);let w=1+.045*l,g=1+.015*l,u=s/1,p=d/w,m=f/g,h=u*u+p*p+m*m;return h<0?0:Math.sqrt(h)}static rgb2lab(o){let t=o[0]/255,n=o[1]/255,r=o[2]/255,s,i,a;return t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,s=(t*.4124+n*.3576+r*.1805)/.95047,i=(t*.2126+n*.7152+r*.0722)/1,a=(t*.0193+n*.1192+r*.9505)/1.08883,s=s>.008856?Math.pow(s,1/3):7.787*s+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,[116*i-16,500*(s-i),200*(i-a)]}static isSimilar(o,t,n=24){return e.deltaE(S(o),S(t))<n}static adjustColorForContrast(o,t=.25){let n=Ce(o),r=o;try{if((n.match(/^#f{2,}e{0,2}$/i)||V(n)>.98)&&(n="#ffffff"),V(n)>.6){let s=Pe(n,t);r=R(s)}else{let s=ve(n,t);r=R(s)}return r}catch{return"rgba(var(--cleen-white)"}}static getComputedColor(o){if(!o?.includes("var("))return o;let t=o.match(/var\((--[^,)]+)/)?.[1];if(t&&typeof window<"u"){let n=getComputedStyle(document.documentElement).getPropertyValue(t).trim();return n?`rgb(${n})`:void 0}}static getComputedRgb(o){if(!o)return;if(!o?.includes("var(")){let[n,r,s]=S(o);return`${n}, ${r}, ${s}`}let t=o.match(/var\((--[^,)]+)/)?.[1];if(t&&typeof window<"u")return getComputedStyle(document.documentElement).getPropertyValue(t).trim()}static trasparentize(o,t=0){return`color-mix(in srgb, ${o} ${(1-t)*100}%, transparent)`}};var Te="https://picsum.photos",At=e=>{let{width:o,height:t,grayscale:n,blur:r,seed:s}=e,i=Te;s&&(i+=`/seed/${encodeURIComponent(s)}`),i+=`/${o}/${t||o}`;let a=new URLSearchParams;n&&a.append("grayscale",""),r&&a.append("blur",r.toString()),s&&a.append("seed",s);let l=a.toString();return l&&(i+=`?${l}`),i};function M(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.prototype.toString.call(e)==="[object Object]"}function Lt(e,o){let t=new WeakMap,n=s=>{if(s!==void 0){if(s===null)return null;if(Array.isArray(s)){if(t.has(s))return t.get(s);let i=[];return t.set(s,i),s.forEach(a=>{i.push(n(a))}),i}if(M(s)){if(t.has(s))return t.get(s);let i={};return t.set(s,i),Object.keys(s).forEach(a=>{i[a]=n(s[a])}),i}return s}},r=(s,i)=>{if(i===void 0)return n(s);if(M(s)&&M(i)){if(t.has(i))return t.get(i);let a={};return t.set(i,a),new Set([...Object.keys(s),...Object.keys(i)]).forEach(c=>{let d=s[c],f=i[c];a[c]=r(d,f)}),a}return Array.isArray(s)||Array.isArray(i)?n(i===void 0?s:i):n(i!==void 0?i:s)};return r(e,o)}var Dt=async(e,o)=>(await Promise.all([o,new Promise(n=>setTimeout(n,e))])).slice(0,-1),Ft=async(e,...o)=>(await Promise.all([...o,new Promise(n=>setTimeout(n,e))])).slice(0,-1);var Vt=e=>{if(e===0||!e)return"0 B";let o=1024,t=["B","KB","MB","GB","TB"],n=Math.floor(Math.log(e)/Math.log(o));return Math.round(e/Math.pow(o,n))+" "+t[n]},Rt=e=>{let o=Math.floor(e/60),t=Math.floor(e%60);return`${String(o).padStart(2,"0")}:${String(t).padStart(2,"0")}`},It=e=>{let o=new Date(e),n=Math.abs(new Date().getTime()-o.getTime());return`Created ${Math.ceil(n/(1e3*60*60*24))} days ago`};export{k as CLEEN_IGNORE_OUTSIDE_CLICK,I as ColorHelpers,te as FileEntryStatus,xe as ZIndex,Lt as applyDefaults,U as calculateOptimalPosition,D as calculatePositionValues,xt as cn,Dt as delay,Ft as delayAll,he as encodeWav,Rt as formatAudioTime,Vt as formatFileSize,It as getCreatedDate,At as getRandomImageUrl,Pt as trimBlob,Me as useAnimateNumber,Le as useBodyScrollLock,ht as useCleenColors,yt as useCleenOverlays,Fe as useControlled,Re as useDebounce,ze as useDisclosure,je as useFileUpload,qe as useForm,Je as useOutsideClick,et as usePaginationState,st as usePositionClose,lt as useValidation,dt as useWidthDynamicResize};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleen/ui-core",
3
- "version": "0.1.101",
3
+ "version": "0.1.103",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "type": "module",