@alaarab/ogrid-react-inputs 2.15.1 → 2.15.3

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/esm/index.js CHANGED
@@ -1 +1 @@
1
- import*as z from'react';import {parseDate,formatDate,getCalendarGrid,MONTH_NAMES,DAY_NAMES,DEFAULT_MAX_STARS,clampRating,DEFAULT_COLOR_PALETTE,normalizeHex,DEFAULT_MIN,DEFAULT_MAX,DEFAULT_STEP,clampValue,snapToStep,getPercentage,parseTags,filterTagSuggestions,formatTags,isValidHex,isLightColor,getStarFill,getValueFromOffset,getTagColor,getRatingFromPosition}from'@alaarab/ogrid-inputs';import {jsxs,jsx}from'react/jsx-runtime';var it={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"280px",userSelect:"none"},at={display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"},Ie={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"14px",color:"inherit",lineHeight:1},st={fontWeight:600,fontSize:"14px"},lt={display:"grid",gridTemplateColumns:"repeat(7, 1fr)",gap:"1px",textAlign:"center"},ct={padding:"4px 0",fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)"},dt={padding:"6px 0",borderRadius:"4px",cursor:"pointer",fontSize:"13px",lineHeight:1,border:"none",background:"none",color:"inherit"},pt={display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},Ae={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500},ut={display:"flex",gap:"6px",marginBottom:"8px"},ft={flex:1,padding:"4px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit"};function He(m){let{value:b,onValueChange:l,onCommit:f,onCancel:d}=m,x=z.useMemo(()=>b==null?null:parseDate(String(b)),[b]),i=new Date,[c,v]=z.useState(x?.year??i.getFullYear()),[g,h]=z.useState(x?.month??i.getMonth()),[C,w]=z.useState(x?formatDate(x.year,x.month,x.date):""),[P,V]=z.useState(C),[I,M]=z.useState(null),H=z.useRef(null),F=z.useMemo(()=>getCalendarGrid(c,g),[c,g]),A=()=>{g===0?(h(11),v(t=>t-1)):h(t=>t-1);},R=()=>{g===11?(h(0),v(t=>t+1)):h(t=>t+1);},e=(t,T,L)=>{let o=formatDate(t,T,L);w(o),V(o),l(o),setTimeout(()=>f(),0);},a=t=>{let T=t.target.value;V(T);let L=parseDate(T);L&&(w(formatDate(L.year,L.month,L.date)),v(L.year),h(L.month),l(T));},k=t=>{t.key==="Enter"&&(t.preventDefault(),t.stopPropagation(),l(P),f()),t.key==="Escape"&&(t.preventDefault(),t.stopPropagation(),d());},s=()=>{let t=new Date;e(t.getFullYear(),t.getMonth(),t.getDate());},u=()=>{w(""),V(""),l(""),f();};return z.useEffect(()=>{let t=H.current?.querySelector("input");t&&(t.focus(),t.select());},[]),z.useEffect(()=>{let t=L=>{L.key==="Escape"&&(L.preventDefault(),d());},T=H.current;if(T)return T.addEventListener("keydown",t),()=>T.removeEventListener("keydown",t)},[d]),jsxs("div",{ref:H,style:it,onMouseDown:t=>t.stopPropagation(),children:[jsx("div",{style:ut,children:jsx("input",{type:"text",value:P,onChange:a,onKeyDown:k,placeholder:"YYYY-MM-DD",style:ft})}),jsxs("div",{style:at,children:[jsx("button",{type:"button",style:Ie,onClick:A,"aria-label":"Previous month",children:"\u2039"}),jsxs("span",{style:st,children:[MONTH_NAMES[g]," ",c]}),jsx("button",{type:"button",style:Ie,onClick:R,"aria-label":"Next month",children:"\u203A"})]}),jsxs("div",{style:lt,children:[DAY_NAMES.map(t=>jsx("div",{style:ct,children:t},t)),F.flat().map(t=>{let T=formatDate(t.year,t.month,t.date),L=T===C,o=T===I,p={...dt};return t.isCurrentMonth||(p.color="var(--ogrid-muted, #ccc)"),t.isToday&&!L&&(p.fontWeight=700,p.color="var(--ogrid-accent, #0078d4)"),L?(p.background="var(--ogrid-accent, #0078d4)",p.color="#fff",p.fontWeight=600):o&&(p.background="var(--ogrid-bg-hover, #f0f0f0)"),jsx("button",{type:"button",style:p,onClick:()=>e(t.year,t.month,t.date),onMouseEnter:()=>M(T),onMouseLeave:()=>M(null),tabIndex:-1,children:t.date},T)})]}),jsxs("div",{style:pt,children:[jsx("button",{type:"button",style:Ae,onClick:s,children:"Today"}),jsx("button",{type:"button",style:Ae,onClick:u,children:"Clear"})]})]})}function Ce(m){if(!m)return null;let b=m.trim(),l=b.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(l){let d=parseInt(l[1],10),x=parseInt(l[2],10),i=l[3].toUpperCase();return d<1||d>12||x<0||x>59?null:(i==="AM"?d=d===12?0:d:d=d===12?12:d+12,{hours:d,minutes:x})}let f=b.match(/^(\d{1,2}):(\d{2})$/);if(f){let d=parseInt(f[1],10),x=parseInt(f[2],10);return d<0||d>23||x<0||x>59?null:{hours:d,minutes:x}}return null}function pe(m){let{hours:b,minutes:l}=m,f=b<12?"AM":"PM",d=b%12===0?12:b%12,x=String(l).padStart(2,"0");return `${d}:${x} ${f}`}function te(m){return m%12===0?12:m%12}function oe(m){return m<12?"AM":"PM"}function ne(m,b){return b==="AM"?m===12?0:m:m===12?12:m+12}function ye(m=5){let b=[];for(let l=0;l<60;l+=m)b.push(l);return b}function xe(){return [12,1,2,3,4,5,6,7,8,9,10,11]}var gt={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"220px",userSelect:"none"},mt={display:"flex",gap:"6px",marginBottom:"10px"},bt={flex:1,padding:"5px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit"},St={display:"flex",gap:"8px",alignItems:"stretch"},ke={display:"flex",flexDirection:"column",flex:1,gap:"0",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"6px",overflow:"hidden",maxHeight:"176px",overflowY:"auto"},Pe={textAlign:"center",fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)",padding:"4px 0",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))",position:"sticky",top:0,background:"var(--ogrid-bg, #fff)"},Te={padding:"5px 0",textAlign:"center",cursor:"pointer",fontSize:"13px",border:"none",background:"none",color:"inherit",width:"100%"},yt={display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"10px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},Le={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500};function ze(m){let{value:b,onValueChange:l,onCommit:f,onCancel:d}=m,i=(m.cellEditorParams??{}).minuteStep??5,c=()=>{let o=Ce(String(b??""));if(o)return o;let p=new Date;return {hours:p.getHours(),minutes:Math.floor(p.getMinutes()/i)*i}},[v,g]=z.useState(c),[h,C]=z.useState(oe(v.hours)),[w,P]=z.useState(te(v.hours)),[V,I]=z.useState(pe(v)),M=z.useRef(null),H=z.useRef(null),F=z.useRef(null),A=xe(),R=ye(i),e=z.useCallback((o,p,D)=>{let S={hours:ne(o,D),minutes:p},B=pe(S);I(B),l(B);},[l]),a=o=>{P(o),e(o,v.minutes,h),g(p=>({...p,hours:ne(o,h)}));},k=o=>{g(p=>({...p,minutes:o})),e(w,o,h);},s=o=>{C(o),g(p=>({...p,hours:ne(w,o)})),e(w,v.minutes,o);},u=o=>{let p=o.target.value;I(p);let D=Ce(p);D&&(g(D),P(te(D.hours)),C(oe(D.hours)),l(pe(D)));},t=o=>{o.key==="Enter"&&(o.preventDefault(),o.stopPropagation(),l(V),f()),o.key==="Escape"&&(o.preventDefault(),o.stopPropagation(),d());},T=()=>{let o=new Date,p=o.getHours(),D=Math.floor(o.getMinutes()/i)*i,r={hours:p,minutes:D};g(r),P(te(p)),C(oe(p));let S=pe(r);I(S),l(S),setTimeout(()=>f(),0);},L=()=>{l(""),f();};return z.useEffect(()=>{let o=(r,S,B)=>{if(!r)return;let q=(r.scrollHeight-25)/B;r.scrollTop=S*q;},p=A.indexOf(w),D=R.indexOf(v.minutes);o(H.current,p>=0?p:0,A.length),o(F.current,D>=0?D:0,R.length);},[]),z.useEffect(()=>{let o=M.current?.querySelector("input");o&&(o.focus(),o.select());},[]),z.useEffect(()=>{let o=M.current,p=D=>{D.key==="Escape"&&(D.preventDefault(),d());};if(o)return o.addEventListener("keydown",p),()=>o.removeEventListener("keydown",p)},[d]),jsxs("div",{ref:M,style:gt,onMouseDown:o=>o.stopPropagation(),children:[jsx("div",{style:mt,children:jsx("input",{type:"text",value:V,onChange:u,onKeyDown:t,placeholder:"h:mm AM/PM",style:bt})}),jsxs("div",{style:St,children:[jsxs("div",{ref:H,style:ke,children:[jsx("div",{style:Pe,children:"Hour"}),A.map(o=>{let p=o===w,D={...Te,background:p?"var(--ogrid-accent, #0078d4)":"none",color:p?"#fff":"inherit",fontWeight:p?600:400};return jsx("button",{type:"button",style:D,onClick:()=>a(o),tabIndex:-1,children:o},o)})]}),jsxs("div",{ref:F,style:ke,children:[jsx("div",{style:Pe,children:"Min"}),R.map(o=>{let p=o===v.minutes,D={...Te,background:p?"var(--ogrid-accent, #0078d4)":"none",color:p?"#fff":"inherit",fontWeight:p?600:400};return jsx("button",{type:"button",style:D,onClick:()=>k(o),tabIndex:-1,children:String(o).padStart(2,"0")},o)})]}),jsxs("div",{style:{...ke,flex:"none",width:"50px"},children:[jsx("div",{style:Pe,children:"AM/PM"}),["AM","PM"].map(o=>{let p=o===h,D={...Te,background:p?"var(--ogrid-accent, #0078d4)":"none",color:p?"#fff":"inherit",fontWeight:p?600:400};return jsx("button",{type:"button",style:D,onClick:()=>s(o),tabIndex:-1,children:o},o)})]})]}),jsxs("div",{style:yt,children:[jsx("button",{type:"button",style:Le,onClick:T,children:"Now"}),jsx("button",{type:"button",style:Le,onClick:L,children:"Clear"})]})]})}function Ve(m){if(!m)return null;let b=m.trim(),l=b.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(l){let d=parseInt(l[1],10),x=parseInt(l[2],10)-1,i=parseInt(l[3],10),c=parseInt(l[4],10),v=parseInt(l[5],10),g=l[6].toUpperCase();if(c<1||c>12||v<0||v>59)return null;g==="AM"?c=c===12?0:c:c=c===12?12:c+12;let h=new Date(d,x,i);return h.getFullYear()!==d||h.getMonth()!==x||h.getDate()!==i?null:{year:d,month:x,date:i,hours:c,minutes:v}}let f=b.match(/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})$/);if(f){let d=parseInt(f[1],10),x=parseInt(f[2],10)-1,i=parseInt(f[3],10),c=parseInt(f[4],10),v=parseInt(f[5],10);if(c<0||c>23||v<0||v>59)return null;let g=new Date(d,x,i);return g.getFullYear()!==d||g.getMonth()!==x||g.getDate()!==i?null:{year:d,month:x,date:i,hours:c,minutes:v}}return null}function Be(m){let b=String(m.month+1).padStart(2,"0"),l=String(m.date).padStart(2,"0"),f=`${m.year}-${b}-${l}`,d=m.hours<12?"AM":"PM",x=m.hours%12===0?12:m.hours%12,i=String(m.minutes).padStart(2,"0");return `${f} ${x}:${i} ${d}`}var xt={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"300px",userSelect:"none"},vt={display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"},Fe={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"14px",color:"inherit",lineHeight:1},ht={fontWeight:600,fontSize:"14px"},Rt={display:"grid",gridTemplateColumns:"repeat(7, 1fr)",gap:"1px",textAlign:"center"},Ct={padding:"4px 0",fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)"},kt={padding:"6px 0",borderRadius:"4px",cursor:"pointer",fontSize:"13px",lineHeight:1,border:"none",background:"none",color:"inherit"},Pt={borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))",margin:"10px 0 8px"},Tt={fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)",marginBottom:"6px",textTransform:"uppercase",letterSpacing:"0.04em"},Et={display:"flex",gap:"6px",alignItems:"stretch"},Ee={display:"flex",flexDirection:"column",flex:1,border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"6px",overflow:"hidden",maxHeight:"130px",overflowY:"auto"},we={textAlign:"center",fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)",padding:"3px 0",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))",position:"sticky",top:0,background:"var(--ogrid-bg, #fff)"},Me={padding:"4px 0",textAlign:"center",cursor:"pointer",fontSize:"12px",border:"none",background:"none",color:"inherit",width:"100%"},wt={display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"10px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},De={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500};function Ne(m){let{value:b,onValueChange:l,onCommit:f,onCancel:d}=m,i=(m.cellEditorParams??{}).minuteStep??5,c=new Date,g=(()=>{let n=Ve(String(b??""));return n||{year:c.getFullYear(),month:c.getMonth(),date:c.getDate(),hours:c.getHours(),minutes:Math.floor(c.getMinutes()/i)*i}})(),[h,C]=z.useState(g.year),[w,P]=z.useState(g.month),[V,I]=z.useState(formatDate(g.year,g.month,g.date)),[M,H]=z.useState(g.year),[F,A]=z.useState(g.month),[R,e]=z.useState(g.date),[a,k]=z.useState({hours:g.hours,minutes:g.minutes}),[s,u]=z.useState(oe(g.hours)),[t,T]=z.useState(te(g.hours)),[L,o]=z.useState(null),p=z.useRef(null),D=z.useRef(null),r=z.useRef(null),S=z.useMemo(()=>getCalendarGrid(h,w),[h,w]),B=xe(),q=ye(i),ce=z.useCallback((n,y,E,U,N)=>{let ae=Be({year:n,month:y,date:E,hours:U,minutes:N});l(ae);},[l]),je=()=>{w===0?(P(11),C(n=>n-1)):P(n=>n-1);},Je=()=>{w===11?(P(0),C(n=>n+1)):P(n=>n+1);},Qe=(n,y,E)=>{let U=formatDate(n,y,E);I(U),H(n),A(y),e(E),ce(n,y,E,a.hours,a.minutes);},Ze=n=>{T(n);let y=ne(n,s);k(E=>({...E,hours:y})),ce(M,F,R,y,a.minutes);},et=n=>{k(y=>({...y,minutes:n})),ce(M,F,R,a.hours,n);},tt=n=>{u(n);let y=ne(t,n);k(E=>({...E,hours:y})),ce(M,F,R,y,a.minutes);},ot=()=>{let n=new Date,y=n.getFullYear(),E=n.getMonth(),U=n.getDate(),N=n.getHours(),ae=Math.floor(n.getMinutes()/i)*i;C(y),P(E),I(formatDate(y,E,U)),H(y),A(E),e(U),k({hours:N,minutes:ae}),T(te(N)),u(oe(N)),ce(y,E,U,N,ae),setTimeout(()=>f(),0);},nt=()=>{l(""),f();};return z.useEffect(()=>{let n=(U,N,ae)=>{if(!U)return;let rt=(U.scrollHeight-22)/ae;U.scrollTop=N*rt;},y=B.indexOf(t),E=q.indexOf(a.minutes);n(D.current,y>=0?y:0,B.length),n(r.current,E>=0?E:0,q.length);},[]),z.useEffect(()=>{let n=p.current,y=E=>{E.key==="Escape"&&(E.preventDefault(),d());};if(n)return n.addEventListener("keydown",y),()=>n.removeEventListener("keydown",y)},[d]),jsxs("div",{ref:p,style:xt,onMouseDown:n=>n.stopPropagation(),children:[jsxs("div",{style:vt,children:[jsx("button",{type:"button",style:Fe,onClick:je,"aria-label":"Previous month",children:"\u2039"}),jsxs("span",{style:ht,children:[MONTH_NAMES[w]," ",h]}),jsx("button",{type:"button",style:Fe,onClick:Je,"aria-label":"Next month",children:"\u203A"})]}),jsxs("div",{style:Rt,children:[DAY_NAMES.map(n=>jsx("div",{style:Ct,children:n},n)),S.flat().map(n=>{let y=formatDate(n.year,n.month,n.date),E=y===V,U=y===L,N={...kt};return n.isCurrentMonth||(N.color="var(--ogrid-muted, #ccc)"),n.isToday&&!E&&(N.fontWeight=700,N.color="var(--ogrid-accent, #0078d4)"),E?(N.background="var(--ogrid-accent, #0078d4)",N.color="#fff",N.fontWeight=600):U&&(N.background="var(--ogrid-bg-hover, #f0f0f0)"),jsx("button",{type:"button",style:N,onClick:()=>Qe(n.year,n.month,n.date),onMouseEnter:()=>o(y),onMouseLeave:()=>o(null),tabIndex:-1,children:n.date},y)})]}),jsx("div",{style:Pt}),jsx("div",{style:Tt,children:"Time"}),jsxs("div",{style:Et,children:[jsxs("div",{ref:D,style:Ee,children:[jsx("div",{style:we,children:"Hr"}),B.map(n=>{let y=n===t,E={...Me,background:y?"var(--ogrid-accent, #0078d4)":"none",color:y?"#fff":"inherit",fontWeight:y?600:400};return jsx("button",{type:"button",style:E,onClick:()=>Ze(n),tabIndex:-1,children:n},n)})]}),jsxs("div",{ref:r,style:Ee,children:[jsx("div",{style:we,children:"Min"}),q.map(n=>{let y=n===a.minutes,E={...Me,background:y?"var(--ogrid-accent, #0078d4)":"none",color:y?"#fff":"inherit",fontWeight:y?600:400};return jsx("button",{type:"button",style:E,onClick:()=>et(n),tabIndex:-1,children:String(n).padStart(2,"0")},n)})]}),jsxs("div",{style:{...Ee,flex:"none",width:"46px"},children:[jsx("div",{style:we,children:"AM/PM"}),["AM","PM"].map(n=>{let y=n===s,E={...Me,background:y?"var(--ogrid-accent, #0078d4)":"none",color:y?"#fff":"inherit",fontWeight:y?600:400};return jsx("button",{type:"button",style:E,onClick:()=>tt(n),tabIndex:-1,children:n},n)})]})]}),jsxs("div",{style:wt,children:[jsx("button",{type:"button",style:De,onClick:ot,children:"Now"}),jsx("button",{type:"button",style:De,onClick:()=>f(),children:"Apply"}),jsx("button",{type:"button",style:De,onClick:nt,children:"Clear"})]})]})}var It={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",userSelect:"none"},At={display:"flex",alignItems:"center",gap:"2px",padding:"8px 0"},Ht={background:"none",border:"none",cursor:"pointer",padding:"2px",fontSize:"28px",lineHeight:1,transition:"transform 0.1s ease",color:"inherit"},Lt={fontSize:"12px",color:"var(--ogrid-muted, #888)",padding:"4px 0 0"},zt={display:"flex",justifyContent:"flex-start",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},Vt={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500};function Ke(m){let{value:b,onValueChange:l,onCommit:f,onCancel:d,cellEditorParams:x}=m,i=x?.maxStars??DEFAULT_MAX_STARS,c=x?.allowHalf??false,v=z.useMemo(()=>{if(b==null||b==="")return 0;let R=Number(b);return isNaN(R)?0:clampRating(R,i)},[b,i]),[g,h]=z.useState(v),[C,w]=z.useState(null),P=z.useRef(null),V=C??g,I=(R,e)=>{let a=e.currentTarget.getBoundingClientRect(),k=e.clientX-a.left,s=a.width,u=getRatingFromPosition(R,k,s,c),t=clampRating(u,i);h(t),l(t),setTimeout(()=>f(),0);},M=(R,e)=>{let a=e.currentTarget.getBoundingClientRect(),k=e.clientX-a.left,s=a.width,u=getRatingFromPosition(R,k,s,c);w(clampRating(u,i));},H=()=>{w(null);},F=()=>{h(0),l(""),f();};z.useEffect(()=>{P.current?.focus();},[]),z.useEffect(()=>{let R=a=>{if(a.key==="Escape")a.preventDefault(),d();else if(a.key==="Enter")a.preventDefault(),f();else if(a.key==="ArrowRight"||a.key==="ArrowUp"){a.preventDefault();let k=c?.5:1;h(s=>{let u=clampRating(s+k,i);return l(u),u});}else if(a.key==="ArrowLeft"||a.key==="ArrowDown"){a.preventDefault();let k=c?.5:1;h(s=>{let u=clampRating(Math.max(0,s-k),i);return l(u||""),u});}},e=P.current;if(e)return e.addEventListener("keydown",R),()=>e.removeEventListener("keydown",R)},[d,f,l,i,c]);let A=R=>{let e=getStarFill(R,V,c),a,k;e==="full"||e==="half"?(a="\u2605",k="#F59E0B"):(a="\u2606",k="var(--ogrid-muted, #ccc)");let s={...Ht,color:k};return e==="half"?jsx("button",{type:"button",style:s,onClick:u=>I(R,u),onMouseMove:u=>M(R,u),tabIndex:-1,children:jsx("span",{style:{background:"linear-gradient(90deg, #F59E0B 50%, var(--ogrid-muted, #ccc) 50%)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text"},children:"\u2605"})},R):jsx("button",{type:"button",style:s,onClick:u=>I(R,u),onMouseMove:u=>M(R,u),tabIndex:-1,children:a},R)};return jsxs("div",{ref:P,style:It,onMouseDown:R=>R.stopPropagation(),tabIndex:0,children:[jsx("div",{style:At,onMouseLeave:H,children:Array.from({length:i},(R,e)=>A(e))}),jsx("div",{style:Lt,children:g>0?`${g} / ${i}`:"No rating"}),jsx("div",{style:zt,children:jsx("button",{type:"button",style:Vt,onClick:F,children:"Clear"})})]})}var Wt={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"240px",userSelect:"none"},Kt={display:"flex",gap:"6px",marginBottom:"10px",alignItems:"center"},Ot={fontSize:"14px",fontWeight:600,color:"var(--ogrid-muted, #888)",lineHeight:1},$t={flex:1,padding:"4px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit",fontFamily:"monospace",textTransform:"uppercase"},Yt={width:"28px",height:"28px",borderRadius:"4px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",flexShrink:0},Ut={display:"grid",gridTemplateColumns:"repeat(5, 1fr)",gap:"6px",padding:"4px 0"},_t={width:"36px",height:"36px",borderRadius:"50%",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",fontWeight:700,padding:0,transition:"transform 0.1s ease, box-shadow 0.1s ease"},Xt={display:"flex",justifyContent:"flex-start",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},qt={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500};function Ye(m){let{value:b,onValueChange:l,onCommit:f,onCancel:d,cellEditorParams:x}=m,i=x?.colors??DEFAULT_COLOR_PALETTE,c=x?.allowCustom??true,v=z.useMemo(()=>b==null||b===""?"":normalizeHex(String(b))??String(b),[b]),[g,h]=z.useState(v),[C,w]=z.useState(v.replace(/^#/,"")),[P,V]=z.useState(null),I=z.useRef(null),M=e=>{let a=normalizeHex(e)??e;h(a),w(a.replace(/^#/,"")),l(a),setTimeout(()=>f(),0);},H=e=>{let a=e.target.value.replace(/[^0-9A-Fa-f]/g,"").slice(0,6);w(a);let k="#"+a;if(isValidHex(k)){let s=normalizeHex(k);s&&(h(s),l(s));}},F=e=>{if(e.key==="Enter"){e.preventDefault(),e.stopPropagation();let a="#"+C;if(isValidHex(a)){let k=normalizeHex(a);k&&l(k);}f();}e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),d());},A=()=>{h(""),w(""),l(""),f();};z.useEffect(()=>{let e=I.current?.querySelector("input");e&&(e.focus(),e.select());},[]),z.useEffect(()=>{let e=k=>{k.key==="Escape"&&(k.preventDefault(),d());},a=I.current;if(a)return a.addEventListener("keydown",e),()=>a.removeEventListener("keydown",e)},[d]);let R=(e,a)=>{let k=normalizeHex(e)??e,s=g.toUpperCase()===k.toUpperCase(),u=P===e,t=isLightColor(e),T={..._t,backgroundColor:e,border:t?"1px solid var(--ogrid-border, rgba(0,0,0,0.2))":"1px solid transparent",transform:u?"scale(1.15)":"scale(1)",boxShadow:s?"0 0 0 2px var(--ogrid-accent, #0078d4)":"none",color:t?"#333":"#fff"};return jsx("button",{type:"button",style:T,onClick:()=>M(e),onMouseEnter:()=>V(e),onMouseLeave:()=>V(null),tabIndex:-1,"aria-label":e,children:s?"\u2713":""},`${e}-${a}`)};return jsxs("div",{ref:I,style:Wt,onMouseDown:e=>e.stopPropagation(),children:[c&&jsxs("div",{style:Kt,children:[jsx("div",{style:{...Yt,backgroundColor:g||"transparent"}}),jsx("span",{style:Ot,children:"#"}),jsx("input",{type:"text",value:C,onChange:H,onKeyDown:F,placeholder:"000000",maxLength:6,style:$t})]}),jsx("div",{style:Ut,children:i.map((e,a)=>R(e,a))}),jsx("div",{style:Xt,children:jsx("button",{type:"button",style:qt,onClick:A,children:"Clear"})})]})}var Zt={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px 16px",width:"280px",userSelect:"none"},eo={display:"flex",alignItems:"center",gap:"12px",padding:"8px 0"},to={flex:1,position:"relative",height:"24px",display:"flex",alignItems:"center",cursor:"pointer"},oo={width:"100%",height:"6px",borderRadius:"3px",background:"var(--ogrid-border, rgba(0,0,0,0.15))",position:"relative",overflow:"hidden"},no={position:"absolute",top:0,left:0,height:"100%",borderRadius:"3px",background:"var(--ogrid-accent, #0078d4)",transition:"width 0.05s ease"},ro={position:"absolute",top:"50%",width:"18px",height:"18px",borderRadius:"50%",background:"var(--ogrid-accent, #0078d4)",border:"2px solid var(--ogrid-bg, #fff)",boxShadow:"0 1px 4px rgba(0,0,0,0.3)",transform:"translate(-50%, -50%)",cursor:"grab",transition:"box-shadow 0.1s ease"},io={fontSize:"14px",fontWeight:600,minWidth:"40px",textAlign:"right",fontVariantNumeric:"tabular-nums"},ao={display:"flex",gap:"8px",alignItems:"center",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},so={fontSize:"12px",color:"var(--ogrid-muted, #888)"},lo={flex:1,padding:"4px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit",textAlign:"right",fontVariantNumeric:"tabular-nums"},co={display:"flex",justifyContent:"space-between",fontSize:"11px",color:"var(--ogrid-muted, #888)",padding:"2px 0 0"};function _e(m){let{value:b,onValueChange:l,onCommit:f,onCancel:d,cellEditorParams:x}=m,i=x?.min??DEFAULT_MIN,c=x?.max??DEFAULT_MAX,v=x?.step??DEFAULT_STEP,g=z.useMemo(()=>{if(b==null||b==="")return i;let s=Number(b);return isNaN(s)?i:clampValue(snapToStep(s,i,v),i,c)},[b,i,c,v]),[h,C]=z.useState(g),[w,P]=z.useState(String(g)),[V,I]=z.useState(false),M=z.useRef(null),H=z.useRef(null),F=getPercentage(h,i,c),A=z.useCallback(s=>{let u=clampValue(snapToStep(s,i,v),i,c);C(u),P(String(u)),l(u);},[i,c,v,l]),R=s=>{if(!H.current)return;let u=H.current.getBoundingClientRect(),t=s.clientX-u.left,T=getValueFromOffset(t,u.width,i,c,v);A(T);},e=s=>{s.preventDefault(),s.stopPropagation(),I(true);};z.useEffect(()=>{if(!V)return;let s=t=>{if(!H.current)return;let T=H.current.getBoundingClientRect(),L=t.clientX-T.left,o=getValueFromOffset(L,T.width,i,c,v);A(o);},u=()=>{I(false),setTimeout(()=>f(),0);};return document.addEventListener("mousemove",s),document.addEventListener("mouseup",u),()=>{document.removeEventListener("mousemove",s),document.removeEventListener("mouseup",u);}},[V,i,c,v,A,f]);let a=s=>{let u=s.target.value;P(u);let t=Number(u);if(!isNaN(t)){let T=clampValue(snapToStep(t,i,v),i,c);C(T),l(T);}},k=s=>{if(s.key==="Enter"){s.preventDefault(),s.stopPropagation();let u=Number(w);if(!isNaN(u)){let t=clampValue(snapToStep(u,i,v),i,c);l(t);}f();}s.key==="Escape"&&(s.preventDefault(),s.stopPropagation(),d());};return z.useEffect(()=>{let s=M.current?.querySelector("input");s&&(s.focus(),s.select());},[]),z.useEffect(()=>{let s=t=>{t.key==="Escape"&&(t.preventDefault(),d());},u=M.current;if(u)return u.addEventListener("keydown",s),()=>u.removeEventListener("keydown",s)},[d]),jsxs("div",{ref:M,style:Zt,onMouseDown:s=>s.stopPropagation(),children:[jsxs("div",{style:eo,children:[jsxs("div",{ref:H,style:to,onClick:R,children:[jsx("div",{style:oo,children:jsx("div",{style:{...no,width:`${F}%`}})}),jsx("div",{style:{...ro,left:`${F}%`,cursor:V?"grabbing":"grab"},onMouseDown:e})]}),jsx("span",{style:io,children:h})]}),jsxs("div",{style:co,children:[jsx("span",{children:i}),jsx("span",{children:c})]}),jsxs("div",{style:ao,children:[jsx("span",{style:so,children:"Value:"}),jsx("input",{type:"text",value:w,onChange:a,onKeyDown:k,style:lo})]})]})}var mo={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"280px",userSelect:"none"},bo={display:"flex",flexWrap:"wrap",gap:"4px",minHeight:"32px",padding:"4px 0"},So={display:"inline-flex",alignItems:"center",gap:"4px",padding:"3px 8px",borderRadius:"12px",fontSize:"12px",fontWeight:500,lineHeight:1.4,maxWidth:"200px",overflow:"hidden"},yo={overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},xo={background:"none",border:"none",cursor:"pointer",padding:"0 2px",fontSize:"14px",lineHeight:1,color:"inherit",opacity:.6,flexShrink:0},vo={width:"100%",padding:"6px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit",marginTop:"6px",boxSizing:"border-box"},ho={maxHeight:"160px",overflowY:"auto",marginTop:"4px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.1))",borderRadius:"4px",background:"var(--ogrid-bg, #fff)"},Xe={padding:"6px 10px",cursor:"pointer",fontSize:"12px",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.04))",display:"flex",alignItems:"center",gap:"8px"},qe={background:"var(--ogrid-bg-hover, #f0f0f0)"},Ro={width:"14px",height:"14px",borderRadius:"3px",border:"1.5px solid var(--ogrid-border, rgba(0,0,0,0.3))",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,fontSize:"10px",background:"var(--ogrid-bg, #fff)"},Co={background:"var(--ogrid-accent, #0078d4)",border:"1.5px solid var(--ogrid-accent, #0078d4)",color:"#fff"},ko={fontSize:"12px",color:"var(--ogrid-muted, #888)",fontStyle:"italic",padding:"4px 0"},Po={display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},To={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500},Eo={background:"var(--ogrid-accent, #0078d4)",color:"#fff",border:"none",cursor:"pointer",padding:"5px 12px",borderRadius:"4px",fontSize:"12px",fontWeight:600},wo={fontSize:"11px",color:"var(--ogrid-muted, #888)"};function Ge(m){let{value:b,onValueChange:l,onCommit:f,onCancel:d,cellEditorParams:x}=m,i=x,c=i?.suggestions,v=i?.allowCreate??true,g=i?.showApplyButton??true,h=!!c&&!v,[C,w]=z.useState(()=>parseTags(b)),[P,V]=z.useState(""),[I,M]=z.useState(-1),H=z.useRef(null),F=z.useRef(null),A=z.useMemo(()=>{if(!c)return [];if(h){let r=P.toLowerCase().trim();return c.filter(S=>!r||S.toLowerCase().includes(r))}return filterTagSuggestions(P,c,C)},[P,c,C,h]),R=h?A.length>0:A.length>0&&P.length>0,e=z.useCallback(r=>{w(r),l(formatTags(r));},[l]),a=z.useCallback(r=>{let S=r.trim();if(!S||C.includes(S)||!v&&c&&!c.includes(S))return;let B=[...C,S];e(B),V(""),M(-1);},[C,v,c,e]),k=z.useCallback(r=>{let S=C.filter((B,q)=>q!==r);e(S);},[C,e]),s=z.useCallback(r=>{if(C.includes(r)){let S=C.filter(B=>B!==r);e(S);}else {let S=[...C,r];e(S);}},[C,e]),u=()=>{f();},t=()=>{e([]),V(""),l(""),g||f();},T=r=>{V(r.target.value),M(-1);},L=r=>{r.key==="Enter"?(r.preventDefault(),r.stopPropagation(),h?R&&I>=0?s(A[I]):f():R&&I>=0?a(A[I]):P.trim()?a(P):f()):r.key==="Escape"?(r.preventDefault(),r.stopPropagation(),d()):!h&&(r.key===","||r.key==="Tab")?P.trim()&&(r.preventDefault(),a(P)):r.key==="Backspace"&&P===""&&C.length>0&&!h?k(C.length-1):r.key==="ArrowDown"&&R?(r.preventDefault(),M(S=>S<A.length-1?S+1:0)):r.key==="ArrowUp"&&R&&(r.preventDefault(),M(S=>S>0?S-1:A.length-1));},o=r=>{h?(s(r),F.current?.focus()):(a(r),F.current?.focus());};z.useEffect(()=>{F.current?.focus();},[]),z.useEffect(()=>{let r=B=>{B.key==="Escape"&&(B.preventDefault(),d());},S=H.current;if(S)return S.addEventListener("keydown",r),()=>S.removeEventListener("keydown",r)},[d]);let p=(r,S)=>{let B=getTagColor(r);return jsxs("span",{style:{...So,backgroundColor:B,color:"#333"},children:[jsx("span",{style:yo,children:r}),jsx("button",{type:"button",style:xo,onClick:()=>k(S),tabIndex:-1,"aria-label":`Remove ${r}`,children:"\xD7"})]},`${r}-${S}`)},D=(r,S)=>{let B=C.includes(r),q=S===I;return h?jsxs("div",{style:{...Xe,...q?qe:{}},onClick:()=>o(r),onMouseEnter:()=>M(S),children:[jsx("span",{style:{...Ro,...B?Co:{}},children:B?"\u2713":""}),jsx("span",{style:{flex:1},children:r})]},r):jsx("div",{style:{...Xe,...q?qe:{}},onClick:()=>o(r),onMouseEnter:()=>M(S),children:r},r)};return jsxs("div",{ref:H,style:mo,onMouseDown:r=>r.stopPropagation(),children:[jsx("div",{style:bo,children:C.length>0?C.map((r,S)=>p(r,S)):jsx("span",{style:ko,children:"No tags"})}),jsx("input",{ref:F,type:"text",value:P,onChange:T,onKeyDown:L,placeholder:h?"Search...":v?"Type to add tag...":"Search tags...",style:vo,"aria-label":"Tag search input"}),R&&jsx("div",{style:ho,children:A.map((r,S)=>D(r,S))}),jsxs("div",{style:Po,children:[jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxs("span",{style:wo,children:[C.length," tag",C.length!==1?"s":""]}),jsx("button",{type:"button",style:To,onClick:t,children:"Clear all"})]}),g&&jsx("button",{type:"button",style:Eo,onClick:u,"aria-label":"Apply tags",children:"Apply"})]})]})}export{Ye as ColorPickerEditor,He as DatePickerEditor,Ne as DateTimePickerEditor,Ke as RatingEditor,_e as SliderEditor,Ge as TagsEditor,ze as TimePickerEditor};
1
+ import*as z from'react';import {parseDate,formatDate,getCalendarGrid,MONTH_NAMES,DAY_NAMES,DEFAULT_MAX_STARS,clampRating,DEFAULT_COLOR_PALETTE,normalizeHex,DEFAULT_MIN,DEFAULT_MAX,DEFAULT_STEP,clampValue,snapToStep,getPercentage,parseTags,filterTagSuggestions,formatTags,isValidHex,isLightColor,getStarFill,getValueFromOffset,getTagColor,getRatingFromPosition}from'@alaarab/ogrid-inputs';import {jsxs,jsx}from'react/jsx-runtime';var at={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"280px",userSelect:"none"},it={display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"},Ie={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"14px",color:"inherit",lineHeight:1},st={fontWeight:600,fontSize:"14px"},lt={display:"grid",gridTemplateColumns:"repeat(7, 1fr)",gap:"1px",textAlign:"center"},ct={padding:"4px 0",fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)"},dt={padding:"6px 0",borderRadius:"4px",cursor:"pointer",fontSize:"13px",lineHeight:1,border:"none",background:"none",color:"inherit"},pt={display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},He={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500},ut={display:"flex",gap:"6px",marginBottom:"8px"},ft={flex:1,padding:"4px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit"};function Ae(S){let{value:x,onValueChange:i,onCommit:d,onCancel:p}=S,h=z.useMemo(()=>x==null?null:parseDate(String(x)),[x]),r=new Date,[c,R]=z.useState(h?.year??r.getFullYear()),[g,y]=z.useState(h?.month??r.getMonth()),[k,w]=z.useState(h?formatDate(h.year,h.month,h.date):""),[P,V]=z.useState(k),[M,D]=z.useState(null),A=z.useRef(null),$=z.useMemo(()=>getCalendarGrid(c,g),[c,g]),L=()=>{g===0?(y(11),R(e=>e-1)):y(e=>e-1);},b=()=>{g===11?(y(0),R(e=>e+1)):y(e=>e+1);},t=(e,T,H)=>{let o=formatDate(e,T,H);w(o),V(o),i(o),setTimeout(()=>d(),0);},s=e=>{let T=e.target.value;V(T);let H=parseDate(T);H&&(w(formatDate(H.year,H.month,H.date)),R(H.year),y(H.month),i(T));},C=e=>{e.key==="Enter"&&(e.preventDefault(),e.stopPropagation(),i(P),d()),e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),p());},l=()=>{let e=new Date;t(e.getFullYear(),e.getMonth(),e.getDate());},f=()=>{w(""),V(""),i(""),d();};return z.useEffect(()=>{let e=A.current?.querySelector("input");e&&(e.focus(),e.select());},[]),z.useEffect(()=>{let e=H=>{H.key==="Escape"&&(H.preventDefault(),p());},T=A.current;if(T)return T.addEventListener("keydown",e),()=>T.removeEventListener("keydown",e)},[p]),jsxs("div",{ref:A,style:at,onMouseDown:e=>e.stopPropagation(),children:[jsx("div",{style:ut,children:jsx("input",{type:"text","aria-label":"Date (YYYY-MM-DD)",value:P,onChange:s,onKeyDown:C,placeholder:"YYYY-MM-DD",style:ft})}),jsxs("div",{style:it,children:[jsx("button",{type:"button",style:Ie,onClick:L,"aria-label":"Previous month",children:"\u2039"}),jsxs("span",{style:st,children:[MONTH_NAMES[g]," ",c]}),jsx("button",{type:"button",style:Ie,onClick:b,"aria-label":"Next month",children:"\u203A"})]}),jsxs("div",{style:lt,children:[DAY_NAMES.map(e=>jsx("div",{style:ct,children:e},e)),$.flat().map(e=>{let T=formatDate(e.year,e.month,e.date),H=T===k,o=T===M,u={...dt};return e.isCurrentMonth||(u.color="var(--ogrid-muted, #ccc)"),e.isToday&&!H&&(u.fontWeight=700,u.color="var(--ogrid-accent, #0078d4)"),H?(u.background="var(--ogrid-accent, #0078d4)",u.color="#fff",u.fontWeight=600):o&&(u.background="var(--ogrid-bg-hover, #f0f0f0)"),jsx("button",{type:"button",style:u,onClick:()=>t(e.year,e.month,e.date),onMouseEnter:()=>D(T),onMouseLeave:()=>D(null),tabIndex:-1,"aria-label":`${MONTH_NAMES[e.month]} ${e.date}, ${e.year}`,"aria-pressed":H,"aria-current":e.isToday?"date":void 0,children:e.date},T)})]}),jsxs("div",{style:pt,children:[jsx("button",{type:"button",style:He,onClick:l,children:"Today"}),jsx("button",{type:"button",style:He,onClick:f,children:"Clear"})]})]})}function Ce(S){if(!S)return null;let x=S.trim(),i=x.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(i?.[1]!=null&&i[2]!=null&&i[3]!=null){let p=parseInt(i[1],10),h=parseInt(i[2],10),r=i[3].toUpperCase();return p<1||p>12||h<0||h>59?null:(r==="AM"?p=p===12?0:p:p=p===12?12:p+12,{hours:p,minutes:h})}let d=x.match(/^(\d{1,2}):(\d{2})$/);if(d?.[1]!=null&&d[2]!=null){let p=parseInt(d[1],10),h=parseInt(d[2],10);return p<0||p>23||h<0||h>59?null:{hours:p,minutes:h}}return null}function ue(S){let{hours:x,minutes:i}=S,d=x<12?"AM":"PM",p=x%12===0?12:x%12,h=String(i).padStart(2,"0");return `${p}:${h} ${d}`}function oe(S){return S%12===0?12:S%12}function ne(S){return S<12?"AM":"PM"}function re(S,x){return x==="AM"?S===12?0:S:S===12?12:S+12}function xe(S=5){let x=[];for(let i=0;i<60;i+=S)x.push(i);return x}function ye(){return [12,1,2,3,4,5,6,7,8,9,10,11]}var gt={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"220px",userSelect:"none"},mt={display:"flex",gap:"6px",marginBottom:"10px"},bt={flex:1,padding:"5px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit"},St={display:"flex",gap:"8px",alignItems:"stretch"},ke={display:"flex",flexDirection:"column",flex:1,gap:"0",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"6px",overflow:"hidden",maxHeight:"176px",overflowY:"auto"},Pe={textAlign:"center",fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)",padding:"4px 0",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))",position:"sticky",top:0,background:"var(--ogrid-bg, #fff)"},Te={padding:"5px 0",textAlign:"center",cursor:"pointer",fontSize:"13px",border:"none",background:"none",color:"inherit",width:"100%"},xt={display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"10px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},Le={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500};function ze(S){let{value:x,onValueChange:i,onCommit:d,onCancel:p}=S,r=(S.cellEditorParams??{}).minuteStep??5,c=()=>{let o=Ce(String(x??""));if(o)return o;let u=new Date;return {hours:u.getHours(),minutes:Math.floor(u.getMinutes()/r)*r}},[R,g]=z.useState(c),[y,k]=z.useState(ne(R.hours)),[w,P]=z.useState(oe(R.hours)),[V,M]=z.useState(ue(R)),D=z.useRef(null),A=z.useRef(null),$=z.useRef(null),L=ye(),b=xe(r),t=z.useCallback((o,u,I)=>{let a={hours:re(o,I),minutes:u},m=ue(a);M(m),i(m);},[i]),s=o=>{P(o),t(o,R.minutes,y),g(u=>({...u,hours:re(o,y)}));},C=o=>{g(u=>({...u,minutes:o})),t(w,o,y);},l=o=>{k(o),g(u=>({...u,hours:re(w,o)})),t(w,R.minutes,o);},f=o=>{let u=o.target.value;M(u);let I=Ce(u);I&&(g(I),P(oe(I.hours)),k(ne(I.hours)),i(ue(I)));},e=o=>{o.key==="Enter"&&(o.preventDefault(),o.stopPropagation(),i(V),d()),o.key==="Escape"&&(o.preventDefault(),o.stopPropagation(),p());},T=()=>{let o=new Date,u=o.getHours(),I=Math.floor(o.getMinutes()/r)*r,_={hours:u,minutes:I};g(_),P(oe(u)),k(ne(u));let a=ue(_);M(a),i(a),setTimeout(()=>d(),0);},H=()=>{i(""),d();};return z.useEffect(()=>{let o=(_,a,m)=>{if(!_)return;let B=(_.scrollHeight-25)/m;_.scrollTop=a*B;},u=L.indexOf(w),I=b.indexOf(R.minutes);o(A.current,u>=0?u:0,L.length),o($.current,I>=0?I:0,b.length);},[]),z.useEffect(()=>{let o=D.current?.querySelector("input");o&&(o.focus(),o.select());},[]),z.useEffect(()=>{let o=D.current,u=I=>{I.key==="Escape"&&(I.preventDefault(),p());};if(o)return o.addEventListener("keydown",u),()=>o.removeEventListener("keydown",u)},[p]),jsxs("div",{ref:D,style:gt,onMouseDown:o=>o.stopPropagation(),children:[jsx("div",{style:mt,children:jsx("input",{type:"text","aria-label":"Time",value:V,onChange:f,onKeyDown:e,placeholder:"h:mm AM/PM",style:bt})}),jsxs("div",{style:St,children:[jsxs("div",{ref:A,style:ke,children:[jsx("div",{style:Pe,children:"Hour"}),L.map(o=>{let u=o===w,I={...Te,background:u?"var(--ogrid-accent, #0078d4)":"none",color:u?"#fff":"inherit",fontWeight:u?600:400};return jsx("button",{type:"button",style:I,onClick:()=>s(o),tabIndex:-1,children:o},o)})]}),jsxs("div",{ref:$,style:ke,children:[jsx("div",{style:Pe,children:"Min"}),b.map(o=>{let u=o===R.minutes,I={...Te,background:u?"var(--ogrid-accent, #0078d4)":"none",color:u?"#fff":"inherit",fontWeight:u?600:400};return jsx("button",{type:"button",style:I,onClick:()=>C(o),tabIndex:-1,children:String(o).padStart(2,"0")},o)})]}),jsxs("div",{style:{...ke,flex:"none",width:"50px"},children:[jsx("div",{style:Pe,children:"AM/PM"}),["AM","PM"].map(o=>{let u=o===y,I={...Te,background:u?"var(--ogrid-accent, #0078d4)":"none",color:u?"#fff":"inherit",fontWeight:u?600:400};return jsx("button",{type:"button",style:I,onClick:()=>l(o),tabIndex:-1,children:o},o)})]})]}),jsxs("div",{style:xt,children:[jsx("button",{type:"button",style:Le,onClick:T,children:"Now"}),jsx("button",{type:"button",style:Le,onClick:H,children:"Clear"})]})]})}function Ve(S){if(!S)return null;let x=S.trim(),i=x.match(/^(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{2})\s*(AM|PM)$/i);if(i?.[1]!=null&&i[2]!=null&&i[3]!=null&&i[4]!=null&&i[5]!=null&&i[6]!=null){let p=parseInt(i[1],10),h=parseInt(i[2],10)-1,r=parseInt(i[3],10),c=parseInt(i[4],10),R=parseInt(i[5],10),g=i[6].toUpperCase();if(c<1||c>12||R<0||R>59)return null;g==="AM"?c=c===12?0:c:c=c===12?12:c+12;let y=new Date(p,h,r);return y.getFullYear()!==p||y.getMonth()!==h||y.getDate()!==r?null:{year:p,month:h,date:r,hours:c,minutes:R}}let d=x.match(/^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})$/);if(d?.[1]!=null&&d[2]!=null&&d[3]!=null&&d[4]!=null&&d[5]!=null){let p=parseInt(d[1],10),h=parseInt(d[2],10)-1,r=parseInt(d[3],10),c=parseInt(d[4],10),R=parseInt(d[5],10);if(c<0||c>23||R<0||R>59)return null;let g=new Date(p,h,r);return g.getFullYear()!==p||g.getMonth()!==h||g.getDate()!==r?null:{year:p,month:h,date:r,hours:c,minutes:R}}return null}function $e(S){let x=String(S.month+1).padStart(2,"0"),i=String(S.date).padStart(2,"0"),d=`${S.year}-${x}-${i}`,p=S.hours<12?"AM":"PM",h=S.hours%12===0?12:S.hours%12,r=String(S.minutes).padStart(2,"0");return `${d} ${h}:${r} ${p}`}var yt={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"300px",userSelect:"none"},vt={display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"},Be={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"14px",color:"inherit",lineHeight:1},ht={fontWeight:600,fontSize:"14px"},Rt={display:"grid",gridTemplateColumns:"repeat(7, 1fr)",gap:"1px",textAlign:"center"},Ct={padding:"4px 0",fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)"},kt={padding:"6px 0",borderRadius:"4px",cursor:"pointer",fontSize:"13px",lineHeight:1,border:"none",background:"none",color:"inherit"},Pt={borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))",margin:"10px 0 8px"},Tt={fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)",marginBottom:"6px",textTransform:"uppercase",letterSpacing:"0.04em"},Et={display:"flex",gap:"6px",alignItems:"stretch"},Ee={display:"flex",flexDirection:"column",flex:1,border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"6px",overflow:"hidden",maxHeight:"130px",overflowY:"auto"},we={textAlign:"center",fontSize:"11px",fontWeight:600,color:"var(--ogrid-muted, #888)",padding:"3px 0",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))",position:"sticky",top:0,background:"var(--ogrid-bg, #fff)"},Me={padding:"4px 0",textAlign:"center",cursor:"pointer",fontSize:"12px",border:"none",background:"none",color:"inherit",width:"100%"},wt={display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"10px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},De={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500};function Ne(S){let{value:x,onValueChange:i,onCommit:d,onCancel:p}=S,r=(S.cellEditorParams??{}).minuteStep??5,c=new Date,g=(()=>{let n=Ve(String(x??""));return n||{year:c.getFullYear(),month:c.getMonth(),date:c.getDate(),hours:c.getHours(),minutes:Math.floor(c.getMinutes()/r)*r}})(),[y,k]=z.useState(g.year),[w,P]=z.useState(g.month),[V,M]=z.useState(formatDate(g.year,g.month,g.date)),[D,A]=z.useState(g.year),[$,L]=z.useState(g.month),[b,t]=z.useState(g.date),[s,C]=z.useState({hours:g.hours,minutes:g.minutes}),[l,f]=z.useState(ne(g.hours)),[e,T]=z.useState(oe(g.hours)),[H,o]=z.useState(null),u=z.useRef(null),I=z.useRef(null),_=z.useRef(null),a=z.useMemo(()=>getCalendarGrid(y,w),[y,w]),m=ye(),B=xe(r),G=z.useCallback((n,v,E,U,F)=>{let se=$e({year:n,month:v,date:E,hours:U,minutes:F});i(se);},[i]),je=()=>{w===0?(P(11),k(n=>n-1)):P(n=>n-1);},Je=()=>{w===11?(P(0),k(n=>n+1)):P(n=>n+1);},Qe=(n,v,E)=>{let U=formatDate(n,v,E);M(U),A(n),L(v),t(E),G(n,v,E,s.hours,s.minutes);},Ze=n=>{T(n);let v=re(n,l);C(E=>({...E,hours:v})),G(D,$,b,v,s.minutes);},et=n=>{C(v=>({...v,minutes:n})),G(D,$,b,s.hours,n);},tt=n=>{f(n);let v=re(e,n);C(E=>({...E,hours:v})),G(D,$,b,v,s.minutes);},ot=()=>{let n=new Date,v=n.getFullYear(),E=n.getMonth(),U=n.getDate(),F=n.getHours(),se=Math.floor(n.getMinutes()/r)*r;k(v),P(E),M(formatDate(v,E,U)),A(v),L(E),t(U),C({hours:F,minutes:se}),T(oe(F)),f(ne(F)),G(v,E,U,F,se),setTimeout(()=>d(),0);},nt=()=>{i(""),d();};return z.useEffect(()=>{let n=(U,F,se)=>{if(!U)return;let rt=(U.scrollHeight-22)/se;U.scrollTop=F*rt;},v=m.indexOf(e),E=B.indexOf(s.minutes);n(I.current,v>=0?v:0,m.length),n(_.current,E>=0?E:0,B.length);},[]),z.useEffect(()=>{let n=u.current,v=E=>{E.key==="Escape"&&(E.preventDefault(),p());};if(n)return n.addEventListener("keydown",v),()=>n.removeEventListener("keydown",v)},[p]),jsxs("div",{ref:u,style:yt,onMouseDown:n=>n.stopPropagation(),children:[jsxs("div",{style:vt,children:[jsx("button",{type:"button",style:Be,onClick:je,"aria-label":"Previous month",children:"\u2039"}),jsxs("span",{style:ht,children:[MONTH_NAMES[w]," ",y]}),jsx("button",{type:"button",style:Be,onClick:Je,"aria-label":"Next month",children:"\u203A"})]}),jsxs("div",{style:Rt,children:[DAY_NAMES.map(n=>jsx("div",{style:Ct,children:n},n)),a.flat().map(n=>{let v=formatDate(n.year,n.month,n.date),E=v===V,U=v===H,F={...kt};return n.isCurrentMonth||(F.color="var(--ogrid-muted, #ccc)"),n.isToday&&!E&&(F.fontWeight=700,F.color="var(--ogrid-accent, #0078d4)"),E?(F.background="var(--ogrid-accent, #0078d4)",F.color="#fff",F.fontWeight=600):U&&(F.background="var(--ogrid-bg-hover, #f0f0f0)"),jsx("button",{type:"button",style:F,onClick:()=>Qe(n.year,n.month,n.date),onMouseEnter:()=>o(v),onMouseLeave:()=>o(null),tabIndex:-1,children:n.date},v)})]}),jsx("div",{style:Pt}),jsx("div",{style:Tt,children:"Time"}),jsxs("div",{style:Et,children:[jsxs("div",{ref:I,style:Ee,children:[jsx("div",{style:we,children:"Hr"}),m.map(n=>{let v=n===e,E={...Me,background:v?"var(--ogrid-accent, #0078d4)":"none",color:v?"#fff":"inherit",fontWeight:v?600:400};return jsx("button",{type:"button",style:E,onClick:()=>Ze(n),tabIndex:-1,children:n},n)})]}),jsxs("div",{ref:_,style:Ee,children:[jsx("div",{style:we,children:"Min"}),B.map(n=>{let v=n===s.minutes,E={...Me,background:v?"var(--ogrid-accent, #0078d4)":"none",color:v?"#fff":"inherit",fontWeight:v?600:400};return jsx("button",{type:"button",style:E,onClick:()=>et(n),tabIndex:-1,children:String(n).padStart(2,"0")},n)})]}),jsxs("div",{style:{...Ee,flex:"none",width:"46px"},children:[jsx("div",{style:we,children:"AM/PM"}),["AM","PM"].map(n=>{let v=n===l,E={...Me,background:v?"var(--ogrid-accent, #0078d4)":"none",color:v?"#fff":"inherit",fontWeight:v?600:400};return jsx("button",{type:"button",style:E,onClick:()=>tt(n),tabIndex:-1,children:n},n)})]})]}),jsxs("div",{style:wt,children:[jsx("button",{type:"button",style:De,onClick:ot,children:"Now"}),jsx("button",{type:"button",style:De,onClick:()=>d(),children:"Apply"}),jsx("button",{type:"button",style:De,onClick:nt,children:"Clear"})]})]})}var It={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",userSelect:"none"},Ht={display:"flex",alignItems:"center",gap:"2px",padding:"8px 0"},At={background:"none",border:"none",cursor:"pointer",padding:"2px",fontSize:"28px",lineHeight:1,transition:"transform 0.1s ease",color:"inherit"},Lt={fontSize:"12px",color:"var(--ogrid-muted, #888)",padding:"4px 0 0"},zt={display:"flex",justifyContent:"flex-start",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},Vt={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500};function We(S){let{value:x,onValueChange:i,onCommit:d,onCancel:p,cellEditorParams:h}=S,r=h?.maxStars??DEFAULT_MAX_STARS,c=h?.allowHalf??false,R=z.useMemo(()=>{if(x==null||x==="")return 0;let b=Number(x);return Number.isNaN(b)?0:clampRating(b,r)},[x,r]),[g,y]=z.useState(R),[k,w]=z.useState(null),P=z.useRef(null),V=k??g,M=(b,t)=>{let s=t.currentTarget.getBoundingClientRect(),C=t.clientX-s.left,l=s.width,f=getRatingFromPosition(b,C,l,c),e=clampRating(f,r);y(e),i(e),setTimeout(()=>d(),0);},D=(b,t)=>{let s=t.currentTarget.getBoundingClientRect(),C=t.clientX-s.left,l=s.width,f=getRatingFromPosition(b,C,l,c);w(clampRating(f,r));},A=()=>{w(null);},$=()=>{y(0),i(""),d();};z.useEffect(()=>{P.current?.focus();},[]),z.useEffect(()=>{let b=s=>{if(s.key==="Escape")s.preventDefault(),p();else if(s.key==="Enter")s.preventDefault(),d();else if(s.key==="ArrowRight"||s.key==="ArrowUp"){s.preventDefault();let C=c?.5:1;y(l=>{let f=clampRating(l+C,r);return i(f),f});}else if(s.key==="ArrowLeft"||s.key==="ArrowDown"){s.preventDefault();let C=c?.5:1;y(l=>{let f=clampRating(Math.max(0,l-C),r);return i(f||""),f});}},t=P.current;if(t)return t.addEventListener("keydown",b),()=>t.removeEventListener("keydown",b)},[p,d,i,r,c]);let L=b=>{let t=getStarFill(b,V,c),s,C;t==="full"||t==="half"?(s="\u2605",C="#F59E0B"):(s="\u2606",C="var(--ogrid-muted, #ccc)");let l={...At,color:C};return t==="half"?jsx("button",{type:"button",style:l,onClick:f=>M(b,f),onMouseMove:f=>D(b,f),tabIndex:-1,"aria-label":`${b+1} of ${r} stars`,children:jsx("span",{style:{background:"linear-gradient(90deg, #F59E0B 50%, var(--ogrid-muted, #ccc) 50%)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text"},children:"\u2605"})},b):jsx("button",{type:"button",style:l,onClick:f=>M(b,f),onMouseMove:f=>D(b,f),tabIndex:-1,"aria-label":`${b+1} of ${r} stars`,children:s},b)};return jsxs("div",{ref:P,style:It,onMouseDown:b=>b.stopPropagation(),tabIndex:0,role:"slider","aria-label":"Rating","aria-valuemin":0,"aria-valuemax":r,"aria-valuenow":g,"aria-valuetext":g>0?`${g} of ${r} stars`:"No rating",children:[jsx("div",{style:Ht,onMouseLeave:A,children:Array.from({length:r},(b,t)=>L(t))}),jsx("div",{style:Lt,children:g>0?`${g} / ${r}`:"No rating"}),jsx("div",{style:zt,children:jsx("button",{type:"button",style:Vt,onClick:$,children:"Clear"})})]})}var Ft={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"240px",userSelect:"none"},Wt={display:"flex",gap:"6px",marginBottom:"10px",alignItems:"center"},Kt={fontSize:"14px",fontWeight:600,color:"var(--ogrid-muted, #888)",lineHeight:1},Yt={flex:1,padding:"4px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit",fontFamily:"monospace",textTransform:"uppercase"},Ot={width:"28px",height:"28px",borderRadius:"4px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",flexShrink:0},Ut={display:"grid",gridTemplateColumns:"repeat(5, 1fr)",gap:"6px",padding:"4px 0"},_t={width:"36px",height:"36px",borderRadius:"50%",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",fontWeight:700,padding:0,transition:"transform 0.1s ease, box-shadow 0.1s ease"},Xt={display:"flex",justifyContent:"flex-start",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},qt={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500};function Oe(S){let{value:x,onValueChange:i,onCommit:d,onCancel:p,cellEditorParams:h}=S,r=h?.colors??DEFAULT_COLOR_PALETTE,c=h?.allowCustom??true,R=z.useMemo(()=>x==null||x===""?"":normalizeHex(String(x))??String(x),[x]),[g,y]=z.useState(R),[k,w]=z.useState(R.replace(/^#/,"")),[P,V]=z.useState(null),M=z.useRef(null),D=t=>{let s=normalizeHex(t)??t;y(s),w(s.replace(/^#/,"")),i(s),setTimeout(()=>d(),0);},A=t=>{let s=t.target.value.replace(/[^0-9A-Fa-f]/g,"").slice(0,6);w(s);let C="#"+s;if(isValidHex(C)){let l=normalizeHex(C);l&&(y(l),i(l));}},$=t=>{if(t.key==="Enter"){t.preventDefault(),t.stopPropagation();let s="#"+k;if(isValidHex(s)){let C=normalizeHex(s);C&&i(C);}d();}t.key==="Escape"&&(t.preventDefault(),t.stopPropagation(),p());},L=()=>{y(""),w(""),i(""),d();};z.useEffect(()=>{let t=M.current?.querySelector("input");t&&(t.focus(),t.select());},[]),z.useEffect(()=>{let t=C=>{C.key==="Escape"&&(C.preventDefault(),p());},s=M.current;if(s)return s.addEventListener("keydown",t),()=>s.removeEventListener("keydown",t)},[p]);let b=(t,s)=>{let C=normalizeHex(t)??t,l=g.toUpperCase()===C.toUpperCase(),f=P===t,e=isLightColor(t),T={..._t,backgroundColor:t,border:e?"1px solid var(--ogrid-border, rgba(0,0,0,0.2))":"1px solid transparent",transform:f?"scale(1.15)":"scale(1)",boxShadow:l?"0 0 0 2px var(--ogrid-accent, #0078d4)":"none",color:e?"#333":"#fff"};return jsx("button",{type:"button",style:T,onClick:()=>D(t),onMouseEnter:()=>V(t),onMouseLeave:()=>V(null),tabIndex:-1,"aria-label":t,"aria-pressed":l,children:l?"\u2713":""},`${t}-${s}`)};return jsxs("div",{ref:M,style:Ft,onMouseDown:t=>t.stopPropagation(),children:[c&&jsxs("div",{style:Wt,children:[jsx("div",{style:{...Ot,backgroundColor:g||"transparent"}}),jsx("span",{style:Kt,children:"#"}),jsx("input",{type:"text","aria-label":"Hex color",value:k,onChange:A,onKeyDown:$,placeholder:"000000",maxLength:6,style:Yt})]}),jsx("div",{style:Ut,children:r.map((t,s)=>b(t,s))}),jsx("div",{style:Xt,children:jsx("button",{type:"button",style:qt,onClick:L,children:"Clear"})})]})}var Zt={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px 16px",width:"280px",userSelect:"none"},eo={display:"flex",alignItems:"center",gap:"12px",padding:"8px 0"},to={flex:1,position:"relative",height:"24px",display:"flex",alignItems:"center",cursor:"pointer"},oo={width:"100%",height:"6px",borderRadius:"3px",background:"var(--ogrid-border, rgba(0,0,0,0.15))",position:"relative",overflow:"hidden"},no={position:"absolute",top:0,left:0,height:"100%",borderRadius:"3px",background:"var(--ogrid-accent, #0078d4)",transition:"width 0.05s ease"},ro={position:"absolute",top:"50%",width:"18px",height:"18px",borderRadius:"50%",background:"var(--ogrid-accent, #0078d4)",border:"2px solid var(--ogrid-bg, #fff)",boxShadow:"0 1px 4px rgba(0,0,0,0.3)",transform:"translate(-50%, -50%)",cursor:"grab",transition:"box-shadow 0.1s ease"},ao={fontSize:"14px",fontWeight:600,minWidth:"40px",textAlign:"right",fontVariantNumeric:"tabular-nums"},io={display:"flex",gap:"8px",alignItems:"center",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},so={fontSize:"12px",color:"var(--ogrid-muted, #888)"},lo={flex:1,padding:"4px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit",textAlign:"right",fontVariantNumeric:"tabular-nums"},co={display:"flex",justifyContent:"space-between",fontSize:"11px",color:"var(--ogrid-muted, #888)",padding:"2px 0 0"};function _e(S){let{value:x,onValueChange:i,onCommit:d,onCancel:p,cellEditorParams:h}=S,r=h?.min??DEFAULT_MIN,c=h?.max??DEFAULT_MAX,R=h?.step??DEFAULT_STEP,g=z.useMemo(()=>{if(x==null||x==="")return r;let l=Number(x);return Number.isNaN(l)?r:clampValue(snapToStep(l,r,R),r,c)},[x,r,c,R]),[y,k]=z.useState(g),[w,P]=z.useState(String(g)),[V,M]=z.useState(false),D=z.useRef(null),A=z.useRef(null),$=getPercentage(y,r,c),L=z.useCallback(l=>{let f=clampValue(snapToStep(l,r,R),r,c);k(f),P(String(f)),i(f);},[r,c,R,i]),b=l=>{if(!A.current)return;let f=A.current.getBoundingClientRect(),e=l.clientX-f.left,T=getValueFromOffset(e,f.width,r,c,R);L(T);},t=l=>{l.preventDefault(),l.stopPropagation(),M(true);};z.useEffect(()=>{if(!V)return;let l=e=>{if(!A.current)return;let T=A.current.getBoundingClientRect(),H=e.clientX-T.left,o=getValueFromOffset(H,T.width,r,c,R);L(o);},f=()=>{M(false),setTimeout(()=>d(),0);};return document.addEventListener("mousemove",l),document.addEventListener("mouseup",f),()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",f);}},[V,r,c,R,L,d]);let s=l=>{let f=l.target.value;P(f);let e=Number(f);if(!Number.isNaN(e)){let T=clampValue(snapToStep(e,r,R),r,c);k(T),i(T);}},C=l=>{if(l.key==="Enter"){l.preventDefault(),l.stopPropagation();let f=Number(w);if(!Number.isNaN(f)){let e=clampValue(snapToStep(f,r,R),r,c);i(e);}d();}l.key==="Escape"&&(l.preventDefault(),l.stopPropagation(),p());};return z.useEffect(()=>{let l=D.current?.querySelector("input");l&&(l.focus(),l.select());},[]),z.useEffect(()=>{let l=e=>{e.key==="Escape"&&(e.preventDefault(),p());},f=D.current;if(f)return f.addEventListener("keydown",l),()=>f.removeEventListener("keydown",l)},[p]),jsxs("div",{ref:D,style:Zt,onMouseDown:l=>l.stopPropagation(),children:[jsxs("div",{style:eo,children:[jsxs("div",{ref:A,style:to,onClick:b,children:[jsx("div",{style:oo,children:jsx("div",{style:{...no,width:`${$}%`}})}),jsx("div",{style:{...ro,left:`${$}%`,cursor:V?"grabbing":"grab"},onMouseDown:t,role:"slider","aria-label":"Slider","aria-valuemin":r,"aria-valuemax":c,"aria-valuenow":y})]}),jsx("span",{style:ao,children:y})]}),jsxs("div",{style:co,children:[jsx("span",{children:r}),jsx("span",{children:c})]}),jsxs("div",{style:io,children:[jsx("span",{style:so,children:"Value:"}),jsx("input",{type:"text","aria-label":`Value (${r} to ${c})`,value:w,onChange:s,onKeyDown:C,style:lo})]})]})}var mo={fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontSize:"13px",background:"var(--ogrid-bg, #fff)",color:"var(--ogrid-fg, #242424)",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.12))",borderRadius:"8px",boxShadow:"var(--ogrid-shadow, 0 4px 16px rgba(0,0,0,0.15))",padding:"12px",width:"280px",userSelect:"none"},bo={display:"flex",flexWrap:"wrap",gap:"4px",minHeight:"32px",padding:"4px 0"},So={display:"inline-flex",alignItems:"center",gap:"4px",padding:"3px 8px",borderRadius:"12px",fontSize:"12px",fontWeight:500,lineHeight:1.4,maxWidth:"200px",overflow:"hidden"},xo={overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},yo={background:"none",border:"none",cursor:"pointer",padding:"0 2px",fontSize:"14px",lineHeight:1,color:"inherit",opacity:.6,flexShrink:0},vo={width:"100%",padding:"6px 8px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.2))",borderRadius:"4px",fontSize:"13px",outline:"none",background:"var(--ogrid-bg, #fff)",color:"inherit",marginTop:"6px",boxSizing:"border-box"},ho={maxHeight:"160px",overflowY:"auto",marginTop:"4px",border:"1px solid var(--ogrid-border, rgba(0,0,0,0.1))",borderRadius:"4px",background:"var(--ogrid-bg, #fff)"},Xe={padding:"6px 10px",cursor:"pointer",fontSize:"12px",borderBottom:"1px solid var(--ogrid-border, rgba(0,0,0,0.04))",display:"flex",alignItems:"center",gap:"8px"},qe={background:"var(--ogrid-bg-hover, #f0f0f0)"},Ro={width:"14px",height:"14px",borderRadius:"3px",border:"1.5px solid var(--ogrid-border, rgba(0,0,0,0.3))",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,fontSize:"10px",background:"var(--ogrid-bg, #fff)"},Co={background:"var(--ogrid-accent, #0078d4)",border:"1.5px solid var(--ogrid-accent, #0078d4)",color:"#fff"},ko={fontSize:"12px",color:"var(--ogrid-muted, #888)",fontStyle:"italic",padding:"4px 0"},Po={display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:"8px",paddingTop:"8px",borderTop:"1px solid var(--ogrid-border, rgba(0,0,0,0.08))"},To={background:"none",border:"none",cursor:"pointer",padding:"4px 8px",borderRadius:"4px",fontSize:"12px",color:"var(--ogrid-accent, #0078d4)",fontWeight:500},Eo={background:"var(--ogrid-accent, #0078d4)",color:"#fff",border:"none",cursor:"pointer",padding:"5px 12px",borderRadius:"4px",fontSize:"12px",fontWeight:600},wo={fontSize:"11px",color:"var(--ogrid-muted, #888)"},Mo=0;function Ge(S){let{value:x,onValueChange:i,onCommit:d,onCancel:p,cellEditorParams:h}=S,r=h,c=r?.suggestions,R=r?.allowCreate??true,g=r?.showApplyButton??true,y=!!c&&!R,[k,w]=z.useState(()=>parseTags(x)),[P,V]=z.useState(""),[M,D]=z.useState(-1),A=z.useRef(null),$=z.useRef(null),L=z.useRef(`ogrid-tags-listbox-${++Mo}`).current,b=z.useMemo(()=>{if(!c)return [];if(y){let a=P.toLowerCase().trim();return c.filter(m=>!a||m.toLowerCase().includes(a))}return filterTagSuggestions(P,c,k)},[P,c,k,y]),t=y?b.length>0:b.length>0&&P.length>0,s=z.useCallback(a=>{w(a),i(formatTags(a));},[i]),C=z.useCallback(a=>{let m=a.trim();if(!m||k.includes(m)||!R&&c&&!c.includes(m))return;let B=[...k,m];s(B),V(""),D(-1);},[k,R,c,s]),l=z.useCallback(a=>{let m=k.filter((B,G)=>G!==a);s(m);},[k,s]),f=z.useCallback(a=>{if(k.includes(a)){let m=k.filter(B=>B!==a);s(m);}else {let m=[...k,a];s(m);}},[k,s]),e=()=>{d();},T=()=>{s([]),V(""),i(""),g||d();},H=a=>{V(a.target.value),D(-1);},o=a=>{if(a.key==="Enter")if(a.preventDefault(),a.stopPropagation(),y){let m=b[M];t&&M>=0&&m!==void 0?f(m):d();}else t&&M>=0&&b[M]!==void 0?C(b[M]):P.trim()?C(P):d();else a.key==="Escape"?(a.preventDefault(),a.stopPropagation(),p()):!y&&(a.key===","||a.key==="Tab")?P.trim()&&(a.preventDefault(),C(P)):a.key==="Backspace"&&P===""&&k.length>0&&!y?l(k.length-1):a.key==="ArrowDown"&&t?(a.preventDefault(),D(m=>m<b.length-1?m+1:0)):a.key==="ArrowUp"&&t&&(a.preventDefault(),D(m=>m>0?m-1:b.length-1));},u=a=>{y?(f(a),$.current?.focus()):(C(a),$.current?.focus());};z.useEffect(()=>{$.current?.focus();},[]),z.useEffect(()=>{let a=B=>{B.key==="Escape"&&(B.preventDefault(),p());},m=A.current;if(m)return m.addEventListener("keydown",a),()=>m.removeEventListener("keydown",a)},[p]);let I=(a,m)=>{let B=getTagColor(a);return jsxs("span",{style:{...So,backgroundColor:B,color:"#333"},children:[jsx("span",{style:xo,children:a}),jsx("button",{type:"button",style:yo,onClick:()=>l(m),tabIndex:-1,"aria-label":`Remove ${a}`,children:"\xD7"})]},`${a}-${m}`)},_=(a,m)=>{let B=k.includes(a),G=m===M;return y?jsxs("div",{id:`${L}-opt-${m}`,role:"option","aria-selected":B,style:{...Xe,...G?qe:{}},onClick:()=>u(a),onMouseEnter:()=>D(m),children:[jsx("span",{style:{...Ro,...B?Co:{}},children:B?"\u2713":""}),jsx("span",{style:{flex:1},children:a})]},a):jsx("div",{id:`${L}-opt-${m}`,role:"option","aria-selected":B,style:{...Xe,...G?qe:{}},onClick:()=>u(a),onMouseEnter:()=>D(m),children:a},a)};return jsxs("div",{ref:A,style:mo,onMouseDown:a=>a.stopPropagation(),children:[jsx("div",{style:bo,children:k.length>0?k.map((a,m)=>I(a,m)):jsx("span",{style:ko,children:"No tags"})}),jsx("input",{ref:$,type:"text",value:P,onChange:H,onKeyDown:o,placeholder:y?"Search...":R?"Type to add tag...":"Search tags...",style:vo,"aria-label":"Tag search input",role:"combobox","aria-expanded":t,"aria-controls":t?L:void 0,"aria-autocomplete":"list","aria-activedescendant":t&&M>=0?`${L}-opt-${M}`:void 0}),t&&jsx("div",{id:L,role:"listbox","aria-label":"Tag suggestions",style:ho,children:b.map((a,m)=>_(a,m))}),jsxs("div",{style:Po,children:[jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[jsxs("span",{style:wo,children:[k.length," tag",k.length!==1?"s":""]}),jsx("button",{type:"button",style:To,onClick:T,children:"Clear all"})]}),g&&jsx("button",{type:"button",style:Eo,onClick:e,"aria-label":"Apply tags",children:"Apply"})]})]})}export{Oe as ColorPickerEditor,Ae as DatePickerEditor,Ne as DateTimePickerEditor,We as RatingEditor,_e as SliderEditor,Ge as TagsEditor,ze as TimePickerEditor};
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@alaarab/ogrid-react-inputs",
3
- "version": "2.15.1",
3
+ "version": "2.15.3",
4
+ "type": "module",
4
5
  "description": "OGrid React Inputs – Optional premium cell editors (DatePicker, and more). Zero impact when not installed.",
5
6
  "main": "dist/esm/index.js",
6
7
  "module": "dist/esm/index.js",
@@ -38,8 +39,8 @@
38
39
  "node": ">=18"
39
40
  },
40
41
  "dependencies": {
41
- "@alaarab/ogrid-core": "2.15.1",
42
- "@alaarab/ogrid-inputs": "2.15.1"
42
+ "@alaarab/ogrid-core": "2.15.3",
43
+ "@alaarab/ogrid-inputs": "2.15.3"
43
44
  },
44
45
  "peerDependencies": {
45
46
  "react": "^17.0.0 || ^18.0.0 || ^19.0.0",