@alaarab/ogrid-react-inputs 2.6.0 → 2.6.1
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 +1 -1
- package/package.json +3 -3
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(g){let{value:b,onValueChange:l,onCommit:f,onCancel:d}=g,x=z.useMemo(()=>b==null?null:parseDate(String(b)),[b]),i=new Date,[c,v]=z.useState(x?.year??i.getFullYear()),[m,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,m),[c,m]),A=()=>{m===0?(h(11),v(t=>t-1)):h(t=>t-1);},R=()=>{m===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[m]," ",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(g){if(!g)return null;let b=g.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(g){let{hours:b,minutes:l}=g,f=b<12?"AM":"PM",d=b%12===0?12:b%12,x=String(l).padStart(2,"0");return `${d}:${x} ${f}`}function te(g){return g%12===0?12:g%12}function oe(g){return g<12?"AM":"PM"}function ne(g,b){return b==="AM"?g===12?0:g:g===12?12:g+12}function ye(g=5){let b=[];for(let l=0;l<60;l+=g)b.push(l);return b}function xe(){return [12,1,2,3,4,5,6,7,8,9,10,11]}var mt={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"},gt={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(g){let{value:b,onValueChange:l,onCommit:f,onCancel:d}=g,i=(g.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,m]=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),m(p=>({...p,hours:ne(o,h)}));},k=o=>{m(p=>({...p,minutes:o})),e(w,o,h);},s=o=>{C(o),m(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&&(m(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};m(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:mt,onMouseDown:o=>o.stopPropagation(),children:[jsx("div",{style:gt,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(g){if(!g)return null;let b=g.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),m=l[6].toUpperCase();if(c<1||c>12||v<0||v>59)return null;m==="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 m=new Date(d,x,i);return m.getFullYear()!==d||m.getMonth()!==x||m.getDate()!==i?null:{year:d,month:x,date:i,hours:c,minutes:v}}return null}function Be(g){let b=String(g.month+1).padStart(2,"0"),l=String(g.date).padStart(2,"0"),f=`${g.year}-${b}-${l}`,d=g.hours<12?"AM":"PM",x=g.hours%12===0?12:g.hours%12,i=String(g.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(g){let{value:b,onValueChange:l,onCommit:f,onCancel:d}=g,i=(g.cellEditorParams??{}).minuteStep??5,c=new Date,m=(()=>{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(m.year),[w,P]=z.useState(m.month),[V,I]=z.useState(formatDate(m.year,m.month,m.date)),[M,H]=z.useState(m.year),[F,A]=z.useState(m.month),[R,e]=z.useState(m.date),[a,k]=z.useState({hours:m.hours,minutes:m.minutes}),[s,u]=z.useState(oe(m.hours)),[t,T]=z.useState(te(m.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(g){let{value:b,onValueChange:l,onCommit:f,onCancel:d,cellEditorParams:x}=g,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]),[m,h]=z.useState(v),[C,w]=z.useState(null),P=z.useRef(null),V=C??m,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:m>0?`${m} / ${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(g){let{value:b,onValueChange:l,onCommit:f,onCancel:d,cellEditorParams:x}=g,i=x?.colors??DEFAULT_COLOR_PALETTE,c=x?.allowCustom??true,v=z.useMemo(()=>b==null||b===""?"":normalizeHex(String(b))??String(b),[b]),[m,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=m.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:m||"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(g){let{value:b,onValueChange:l,onCommit:f,onCancel:d,cellEditorParams:x}=g,i=x?.min??DEFAULT_MIN,c=x?.max??DEFAULT_MAX,v=x?.step??DEFAULT_STEP,m=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(m),[w,P]=z.useState(String(m)),[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 go={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(g){let{value:b,onValueChange:l,onCommit:f,onCancel:d,cellEditorParams:x}=g,i=x,c=i?.suggestions,v=i?.allowCreate??true,m=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(""),m||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:go,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"})]}),m&&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 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};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alaarab/ogrid-react-inputs",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.1",
|
|
4
4
|
"description": "OGrid React Inputs – Optional premium cell editors (DatePicker, and more). Zero impact when not installed.",
|
|
5
5
|
"main": "dist/esm/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"node": ">=18"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@alaarab/ogrid-core": "2.6.
|
|
41
|
-
"@alaarab/ogrid-inputs": "2.6.
|
|
40
|
+
"@alaarab/ogrid-core": "2.6.1",
|
|
41
|
+
"@alaarab/ogrid-inputs": "2.6.1"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|