dhx-react-suite 1.0.7 → 1.0.9
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/dhx-react-suite.js +1290 -1051
- package/dist/dhx-react-suite.js.map +1 -1
- package/dist/dhx-react-suite.umd.cjs +2 -2
- package/dist/dhx-react-suite.umd.cjs.map +1 -1
- package/dist/index.d.ts +26 -10
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(W,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("recharts")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","recharts"],e):(W=typeof globalThis<"u"?globalThis:W||self,e(W.DhxReactSuite={},W.ReactJSXRuntime,W.React,W.Recharts))})(this,function(W,e,
|
|
1
|
+
(function(W,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("recharts")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","recharts"],e):(W=typeof globalThis<"u"?globalThis:W||self,e(W.DhxReactSuite={},W.ReactJSXRuntime,W.React,W.Recharts))})(this,function(W,e,u,Y){"use strict";const t={primary:"#0288d1",primaryDk:"#01579b",primaryLt:"#e1f5fe",success:"#43a047",danger:"#e53935",warning:"#fb8c00",bg:"#f5f7fa",surface:"#ffffff",border:"#dde3ea",borderDk:"#b0bec5",text:"#3d4a5c",textSec:"#6b7a8d",textMut:"#9aa5b1",shadow:"0 2px 8px rgba(0,0,0,.10)",shadowLg:"0 8px 28px rgba(0,0,0,.14)",r:"4px",rMd:"8px",font:"'Segoe UI', system-ui, -apple-system, sans-serif"},ke="dhx-react-styles";function j(){if(typeof document>"u"||document.getElementById(ke))return;const r=document.createElement("style");r.id=ke,r.textContent=`
|
|
2
2
|
*,*::before,*::after{box-sizing:border-box}
|
|
3
3
|
.dhx{font-family:${t.font};font-size:14px;color:${t.text}}
|
|
4
4
|
.dhx *{box-sizing:border-box}
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
.dhx-tag-success{background:#e8f5e9;color:#1b5e20}
|
|
39
39
|
.dhx-tag-danger{background:#ffebee;color:#b71c1c}
|
|
40
40
|
.dhx-tag-warning{background:#fff3e0;color:#e65100}
|
|
41
|
-
`,document.head.appendChild(r)}const Ne={sm:{height:24,padding:"0 8px",fontSize:12},md:{},lg:{height:38,padding:"0 18px",fontSize:14}};function Le({children:r,variant:l="primary",size:d="md",icon:o,disabled:u,onClick:a,style:f,className:n=""}){return x.useEffect(O,[]),e.jsxs("button",{className:`dhx dhx-btn dhx-btn-${l} ${n}`,style:{...Ne[d],...f},disabled:u,onClick:a,children:[o&&e.jsx("span",{style:{fontSize:16},children:o}),r]})}function Ie({items:r=[],style:l}){x.useEffect(O,[]);const d=(o,u)=>{var f;if(o.type==="separator")return e.jsx("div",{style:{width:1,background:t.border,margin:"6px 4px",alignSelf:"stretch"}},u);if(o.type==="spacer")return e.jsx("div",{style:{flex:1}},u);if(o.type==="input")return e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[o.label&&e.jsx("span",{style:{fontSize:12,color:t.textSec,fontWeight:500},children:o.label}),e.jsx("input",{className:"dhx dhx-input",style:{width:o.width||140,height:28},placeholder:o.placeholder,defaultValue:o.value,onChange:n=>{var c;return(c=o.onChange)==null?void 0:c.call(o,n.target.value)}})]},u);if(o.type==="select")return e.jsx("select",{className:"dhx dhx-input",style:{width:o.width||100,height:28,cursor:"pointer"},defaultValue:o.value,onChange:n=>{var c;return(c=o.onChange)==null?void 0:c.call(o,n.target.value)},children:(f=o.options)==null?void 0:f.map(n=>e.jsx("option",{value:n.value,children:n.label},n.value))},u);const a=o.active;return e.jsxs("button",{className:`dhx dhx-btn ${a?"dhx-btn-primary":"dhx-btn-ghost"}`,style:{height:32,gap:4,...o.twoState&&a?{background:t.primaryLt,color:t.primary,borderColor:`${t.primary}66`}:{}},disabled:o.disabled,onClick:()=>{var n;return(n=o.onClick)==null?void 0:n.call(o,o)},children:[o.icon&&e.jsx("span",{style:{fontSize:16},children:o.icon}),o.text&&e.jsx("span",{children:o.text})]},u)};return e.jsx("div",{className:"dhx",style:{display:"flex",alignItems:"center",gap:2,padding:"4px 8px",background:t.surface,borderBottom:`1px solid ${t.border}`,minHeight:44,flexWrap:"wrap",...l},children:r.map(d)})}function We({items:r=[],width:l=240,collapsed:d,onSelect:o,header:u,footer:a,style:f}){const[n,c]=x.useState(d??!1),[g,p]=x.useState(null),[w,$]=x.useState({});x.useEffect(O,[]);const S=n?56:l,s=M=>{p(M.id),o==null||o(M)},k=(M,C=0)=>{var y;if(M.type==="separator")return e.jsx("div",{style:{height:1,background:t.border,margin:"6px 8px"}},M.id);if(M.type==="customHTML")return e.jsx("div",{style:{padding:"8px 12px"},dangerouslySetInnerHTML:{__html:M.html||""}},M.id);const T=(((y=M.items)==null?void 0:y.length)??0)>0,L=w[M.id],h=g===M.id;return e.jsxs("div",{children:[e.jsxs("div",{onClick:()=>{T&&$(I=>({...I,[M.id]:!I[M.id]})),s(M)},style:{display:"flex",alignItems:"center",gap:10,padding:`8px ${n?"0px":`${12+C*16}px`}`,cursor:"pointer",borderRadius:t.r,margin:"1px 6px",justifyContent:n?"center":"flex-start",transition:"all .15s",background:h?t.primaryLt:"transparent",color:h?t.primary:t.text,userSelect:"none"},onMouseEnter:I=>!h&&(I.currentTarget.style.background=t.bg),onMouseLeave:I=>!h&&(I.currentTarget.style.background="transparent"),children:[M.icon&&e.jsx("span",{style:{fontSize:18,minWidth:22,textAlign:"center"},children:M.icon}),!n&&e.jsx("span",{style:{flex:1,fontSize:13,fontWeight:h?600:400},children:M.value}),!n&&M.count!==void 0&&e.jsx("span",{style:{background:t.primary,color:"#fff",borderRadius:10,padding:"1px 6px",fontSize:11,fontWeight:700},children:M.count}),!n&&T&&e.jsx("span",{style:{fontSize:12,color:t.textMut,transition:"transform .15s",transform:L?"rotate(90deg)":"rotate(0deg)"},children:"▶"})]}),T&&L&&!n&&M.items.map(I=>k(I,C+1))]},M.id)};return e.jsxs("div",{className:"dhx",style:{width:S,minWidth:S,background:t.surface,borderRight:`1px solid ${t.border}`,display:"flex",flexDirection:"column",transition:"width .2s ease",overflow:"hidden",...f},children:[u&&!n&&e.jsx("div",{style:{padding:"12px 14px",borderBottom:`1px solid ${t.border}`,fontWeight:700,fontSize:15},children:u}),e.jsx("button",{onClick:()=>c(M=>!M),style:{margin:"8px 6px",background:"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:n?"center":"flex-end",padding:"4px 6px",borderRadius:t.r,color:t.textSec},children:e.jsx("span",{style:{fontSize:18},children:n?"☰":"✕"})}),e.jsx("div",{className:"dhx-scroll",style:{flex:1,overflowY:"auto",overflowX:"hidden"},children:r.map(M=>k(M))}),a&&!n&&e.jsx("div",{style:{padding:"10px 14px",borderTop:`1px solid ${t.border}`},children:a})]})}function Ae({config:r}){const[l,d]=x.useState(!1),o={position:"relative",background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.r,overflow:"hidden",...r.width?{width:r.width,minWidth:r.width}:{flex:1},...r.height?{height:r.height,minHeight:r.height}:{minHeight:40},...l?{flex:"0 0 auto"}:{}};return e.jsxs("div",{style:o,children:[r.header&&e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 12px",background:t.bg,borderBottom:`1px solid ${t.border}`,fontSize:12,fontWeight:600,color:t.textSec,userSelect:"none"},children:[e.jsx("span",{children:r.header}),r.collapsable&&e.jsx("button",{onClick:()=>d(u=>!u),style:{background:"none",border:"none",cursor:"pointer",color:t.textMut,fontSize:16,lineHeight:1},children:l?"▼":"▲"})]}),!l&&e.jsxs("div",{style:{padding:r.padding||0,height:r.header?"calc(100% - 33px)":"100%",overflow:"auto"},children:[r.html?e.jsx("div",{dangerouslySetInnerHTML:{__html:r.html}}):r.content,(r.rows||r.cols)&&e.jsx(we,{rows:r.rows,cols:r.cols,style:{height:"100%"}})]})]})}function we({rows:r,cols:l,type:d="line",style:o,children:u}){x.useEffect(O,[]);const a=d==="space"?12:d==="wide"?8:1,f=r||l,n=!!r;return f?e.jsx("div",{className:"dhx",style:{display:"flex",flexDirection:n?"column":"row",gap:a,width:"100%",height:"100%",...o},children:f.map((c,g)=>e.jsx(Ae,{config:c},c.id||g))}):e.jsx("div",{className:"dhx",style:{width:"100%",height:"100%",...o},children:u})}function Be({views:r=[],mode:l="top",tabAlign:d="left",closable:o=[],disabled:u=[],defaultActive:a,onBeforeChange:f,onChange:n,style:c}){var h;const[g,p]=x.useState(a||((h=r[0])==null?void 0:h.id)),[w,$]=x.useState(r.map(y=>y.id));x.useEffect(O,[]);const S=(y,I)=>{y.stopPropagation(),$(i=>i.filter(z=>z!==I)),g===I&&p(w.find(i=>i!==I)??"")},s=y=>{u.includes(y)||f&&f(y)===!1||(p(y),n==null||n(y))},k=l==="left"||l==="right",M=r.filter(y=>w.includes(y.id)),C=e.jsx("div",{style:{display:"flex",flexDirection:k?"column":"row",justifyContent:d==="center"?"center":d==="right"?"flex-end":"flex-start",background:t.surface,borderBottom:!k&&l!=="bottom"?`2px solid ${t.border}`:"none",borderTop:l==="bottom"?`2px solid ${t.border}`:"none",borderRight:l==="left"?`2px solid ${t.border}`:"none",borderLeft:l==="right"?`2px solid ${t.border}`:"none",overflowX:"auto",flexShrink:0},children:M.map(y=>{const I=g===y.id,i=u.includes(y.id),z=l==="bottom"?{borderTop:`2px solid ${t.primary}`,color:t.primary,fontWeight:600}:k?{color:t.primary,fontWeight:600,background:t.primaryLt,[l==="left"?"borderRight":"borderLeft"]:`2px solid ${t.primary}`}:{borderBottom:`2px solid ${t.primary}`,color:t.primary,fontWeight:600};return e.jsxs("div",{onClick:()=>s(y.id),style:{display:"flex",alignItems:"center",gap:6,padding:"10px 16px",cursor:i?"not-allowed":"pointer",whiteSpace:"nowrap",fontSize:13,transition:"color .15s",userSelect:"none",minWidth:k?120:"auto",...I?z:{color:i?t.textMut:t.textSec}},children:[y.icon&&e.jsx("span",{style:{fontSize:16},children:y.icon}),e.jsx("span",{children:y.tab}),o.includes(y.id)&&e.jsx("span",{onClick:b=>S(b,y.id),style:{marginLeft:4,opacity:.6,fontSize:12,cursor:"pointer"},children:"✕"})]},y.id)})}),T=M.find(y=>y.id===g),L=e.jsxs("div",{className:"dhx-scroll",style:{flex:1,overflow:"auto"},children:[T==null?void 0:T.content,(T==null?void 0:T.html)&&e.jsx("div",{dangerouslySetInnerHTML:{__html:T.html},style:{padding:16}})]});return e.jsxs("div",{className:"dhx",style:{display:"flex",flexDirection:l==="top"?"column":l==="bottom"?"column-reverse":l==="left"?"row":"row-reverse",width:"100%",height:"100%",background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.r,overflow:"hidden",...c},children:[C,L]})}const U=`1px solid ${t.border}`;function He({active:r,dir:l}){return e.jsxs("span",{style:{display:"inline-flex",flexDirection:"column",gap:1,flexShrink:0,marginLeft:4},children:[e.jsx("svg",{width:"7",height:"4",viewBox:"0 0 7 4",children:e.jsx("path",{d:"M3.5 0L7 4H0z",fill:r&&l==="asc"?t.primary:t.borderDk})}),e.jsx("svg",{width:"7",height:"4",viewBox:"0 0 7 4",children:e.jsx("path",{d:"M3.5 4L0 0H7z",fill:r&&l==="desc"?t.primary:t.borderDk})})]})}function Pe({columns:r,data:l=[],height:d=400,rowHeight:o=40,sortable:u=!0,resizable:a=!0,editable:f=!1,stripe:n=!1,autoWidth:c=!1,keyNavigation:g=!1,selection:p,multiselect:w,onSelect:$,onChange:S,style:s}){const[k,M]=x.useState(null),[C,T]=x.useState("asc"),[L,h]=x.useState({}),[y,I]=x.useState(new Set),[i,z]=x.useState(-1),[b,B]=x.useState(()=>r.map(v=>v.width??v.minWidth??150)),[V,J]=x.useState(null),[Q,le]=x.useState(""),[oe,ae]=x.useState({}),D=x.useRef(null),[P,K]=x.useState(0);x.useEffect(O,[]),x.useEffect(()=>{if(!c||!D.current)return;const v=new ResizeObserver(()=>{var m;return K(((m=D.current)==null?void 0:m.offsetWidth)??0)});return v.observe(D.current),()=>v.disconnect()},[c]);const X=x.useMemo(()=>{if(!c||P===0)return b;const v=b.reduce((N,E)=>N+E,0);if(P<=v)return b;const m=(P-v)/r.length;return b.map(N=>N+m)},[c,P,b,r.length]),F=x.useMemo(()=>{let v=l.map((m,N)=>{const E=String(m.id??N);return oe[E]?{...m,...oe[E]}:m}).filter(m=>Object.entries(L).every(([N,E])=>!E||String(m[N]??"").toLowerCase().includes(E.toLowerCase())));return k&&(v=[...v].sort((m,N)=>{const E=m[k],j=N[k];if(E==null)return 1;if(j==null)return-1;const H=E<j?-1:E>j?1:0;return C==="asc"?H:-H})),v},[l,k,C,L,oe]),G=x.useMemo(()=>{const v={};return r.forEach(m=>{var N;if((N=m.footer)!=null&&N.some(E=>E.summary)){const E=F.map(H=>Number(H[m.id])).filter(H=>!isNaN(H)),j=E.reduce((H,ee)=>H+ee,0);v[m.id]={sum:j,avg:E.length?j/E.length:0,count:F.length,min:E.length?Math.min(...E):0,max:E.length?Math.max(...E):0}}}),v},[F,r]),q=x.useMemo(()=>{const v={};return r.filter(m=>m.filterType==="select").forEach(m=>{v[m.id]=[...new Set(l.map(N=>String(N[m.id]??"")))].sort()}),v},[l,r]),ie=r.some(v=>v.filterable),de=r.some(v=>{var m;return(m=v.footer)==null?void 0:m.length}),be=X.reduce((v,m)=>v+m,0),se=(v,m)=>v.id??m,ce=v=>{!u||v.sortable===!1||(T(m=>k===v.id&&m==="asc"?"desc":"asc"),M(v.id))},A=(v,m)=>{if(!p)return;const N=se(v,m);z(m),I(E=>{const j=w?new Set(E):new Set;return j.has(N)?j.delete(N):j.add(N),j}),$==null||$(v)},R=()=>{if(!V)return;const{key:v,colId:m}=V;ae(E=>({...E,[String(v)]:{...E[String(v)]||{},[m]:Q}}));const N=F.find((E,j)=>se(E,j)===v);N&&(S==null||S(N,m,Q)),J(null)},it=v=>{if(V&&v.key==="Escape"){J(null);return}if(!(!g||!p)){if(v.key==="ArrowDown"){v.preventDefault();const m=Math.min(i+1,F.length-1);m>=0&&A(F[m],m)}else if(v.key==="ArrowUp"){v.preventDefault();const m=Math.max(i-1,0);m>=0&&A(F[m],m)}}},dt=(v,m)=>{v.preventDefault(),v.stopPropagation();const N=v.clientX,E=b[m],j=ee=>B(Se=>{const te=[...Se];return te[m]=Math.max(r[m].minWidth||50,E+ee.clientX-N),te}),H=()=>{document.removeEventListener("mousemove",j),document.removeEventListener("mouseup",H)};document.addEventListener("mousemove",j),document.addEventListener("mouseup",H)},ve=(v,m,N,E)=>({width:v,minWidth:v,flexShrink:0,boxSizing:"border-box",padding:"0 12px",height:E,display:"flex",alignItems:"center",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,textAlign:m.align,justifyContent:m.align==="center"?"center":m.align==="right"?"flex-end":"flex-start",borderLeft:N?"none":U});return e.jsx("div",{ref:D,className:"dhx",tabIndex:g?0:void 0,onKeyDown:it,style:{width:"100%",height:d,display:"flex",flexDirection:"column",border:U,borderRadius:t.r,overflow:"hidden",outline:"none",...s},children:e.jsx("div",{style:{overflowX:"auto",flex:1,display:"flex",flexDirection:"column",minHeight:0},children:e.jsxs("div",{style:{minWidth:be,display:"flex",flexDirection:"column",height:"100%"},children:[e.jsx("div",{style:{display:"flex",background:t.bg,borderBottom:U,flexShrink:0,position:"sticky",top:0,zIndex:2},children:r.map((v,m)=>{var N;return e.jsxs("div",{onClick:()=>ce(v),style:{...ve(X[m],v,m===0,40),position:"relative",fontWeight:500,color:t.text,cursor:u&&v.sortable!==!1?"pointer":"default",userSelect:"none"},children:[e.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Array.isArray(v.header)?(N=v.header[0])==null?void 0:N.text:v.header||v.id}),u&&v.sortable!==!1&&e.jsx(He,{active:k===v.id,dir:C}),a&&v.resizable!==!1&&m<r.length-1&&e.jsx("div",{onMouseDown:E=>dt(E,m),onClick:E=>E.stopPropagation(),style:{position:"absolute",right:0,top:0,bottom:0,width:4,cursor:"col-resize",zIndex:1},onMouseEnter:E=>E.currentTarget.style.background=t.primary+"55",onMouseLeave:E=>E.currentTarget.style.background="transparent"})]},v.id)})}),ie&&e.jsx("div",{style:{display:"flex",borderBottom:U,background:t.surface,flexShrink:0},children:r.map((v,m)=>e.jsx("div",{style:{width:X[m],minWidth:X[m],flexShrink:0,padding:"4px 6px",boxSizing:"border-box",borderLeft:m===0?"none":U},children:v.filterable&&v.filterType==="select"?e.jsxs("select",{className:"dhx dhx-input",style:{height:26,fontSize:12,padding:"0 4px"},value:L[v.id]||"",onChange:N=>h(E=>({...E,[v.id]:N.target.value})),children:[e.jsx("option",{value:"",children:"All"}),(q[v.id]||[]).map(N=>e.jsx("option",{value:N,children:N},N))]}):v.filterable?e.jsx("input",{className:"dhx dhx-input",style:{height:26,fontSize:12},placeholder:"Filter...",value:L[v.id]||"",onChange:N=>h(E=>({...E,[v.id]:N.target.value}))}):null},v.id))}),e.jsxs("div",{className:"dhx-scroll",style:{flex:1,overflowY:"auto",minHeight:0},children:[F.map((v,m)=>{const N=se(v,m),E=y.has(N),j=E?t.primaryLt:n&&m%2!==0?t.bg:t.surface;return e.jsx("div",{style:{display:"flex",height:o,borderBottom:U,flexShrink:0,background:j,transition:"background .1s",cursor:p?"pointer":"default"},onMouseEnter:H=>!E&&(H.currentTarget.style.background=t.primaryLt+"80"),onMouseLeave:H=>!E&&(H.currentTarget.style.background=j),children:r.map((H,ee)=>{const Se=(V==null?void 0:V.key)===N&&(V==null?void 0:V.colId)===H.id,te=v[H.id],ct=H.template?H.template(te,v):String(te??"");return e.jsx("div",{onClick:()=>{A(v,m),f&&H.editable!==!1&&(J({key:N,colId:H.id}),le(String(te??"")))},style:ve(X[ee],H,ee===0,o),children:Se?e.jsx("input",{autoFocus:!0,value:Q,onChange:re=>le(re.target.value),onBlur:R,onKeyDown:re=>{re.key==="Enter"&&R(),re.key==="Escape"&&J(null)},onClick:re=>re.stopPropagation(),style:{width:"100%",border:"none",outline:`2px solid ${t.primary}`,borderRadius:2,fontSize:13,padding:"2px 4px",background:t.surface,color:t.text}}):ct},H.id)})},String(N))}),F.length===0&&e.jsx("div",{style:{textAlign:"center",padding:40,color:t.textMut,fontSize:13},children:"No data"})]}),de&&e.jsx("div",{style:{display:"flex",borderTop:U,background:t.bg,flexShrink:0},children:r.map((v,m)=>{var H;const N=(H=v.footer)==null?void 0:H[0],E=G[v.id]??{sum:0,avg:0,count:0,min:0,max:0};let j="";return N&&(typeof N.text=="function"?j=N.text(E):N.text?j=N.text:N.summary&&(j=String(Math.round(E[N.summary]*100)/100))),e.jsx("div",{style:{...ve(X[m],v,m===0,40),fontWeight:600,color:t.text},children:j},v.id)})})]})})})}const _=["#0288d1","#43a047","#f57c00","#e53935","#8e24aa","#00838f","#ef6c00","#2e7d32"];function Oe({type:r="bar",data:l=[],series:d=[],scales:o={},legend:u,height:a=280,style:f}){var k,M,C,T,L;x.useEffect(O,[]);const n=((k=o.bottom)==null?void 0:k.text)||l[0]&&Object.keys(l[0])[0]||"x",c=e.jsx(Y.Tooltip,{contentStyle:{fontSize:12,borderRadius:t.r,border:`1px solid ${t.border}`}}),g=u?e.jsx(Y.Legend,{iconSize:10,wrapperStyle:{fontSize:12},verticalAlign:u.valign,align:u.halign}):null,p=e.jsx(Y.CartesianGrid,{strokeDasharray:"3 3",stroke:t.border}),w=e.jsx(Y.XAxis,{dataKey:n,tick:{fontSize:11,fill:t.textSec},axisLine:{stroke:t.border},tickLine:!1}),$=e.jsx(Y.YAxis,{tick:{fontSize:11,fill:t.textSec},axisLine:!1,tickLine:!1,domain:[((M=o.left)==null?void 0:M.min)??"auto",((C=o.left)==null?void 0:C.max)??"auto"]}),S={data:l,margin:{top:10,right:20,left:0,bottom:0}};let s;if(r==="bar")s=e.jsxs(Y.BarChart,{...S,children:[p,w,$,c,g,d.map((h,y)=>e.jsx(Y.Bar,{dataKey:h.value||h.id,name:h.label||h.id,fill:h.fill||_[y%_.length],radius:[3,3,0,0]},h.id))]});else if(r==="line")s=e.jsxs(Y.LineChart,{...S,children:[p,w,$,c,g,d.map((h,y)=>e.jsx(Y.Line,{type:"monotone",dataKey:h.value||h.id,name:h.label||h.id,stroke:h.color||_[y%_.length],strokeWidth:2,dot:{r:3,fill:h.color||_[y%_.length]}},h.id))]});else if(r==="area")s=e.jsxs(Y.AreaChart,{...S,children:[p,w,$,c,g,d.map((h,y)=>e.jsx(Y.Area,{type:"monotone",dataKey:h.value||h.id,name:h.label||h.id,stroke:h.color||_[y%_.length],fill:(h.fill||_[y%_.length])+"33",strokeWidth:2},h.id))]});else if(r==="pie"||r==="donut"){const h=l[0]||{},y=Object.keys(h).find(i=>typeof h[i]=="number")||"value",I=Object.keys(h).find(i=>typeof h[i]=="string")||"x";s=e.jsxs(Y.PieChart,{children:[e.jsx(Y.Pie,{data:l,cx:"50%",cy:"50%",outerRadius:r==="donut"?"70%":"80%",innerRadius:r==="donut"?"40%":0,dataKey:y,nameKey:I,label:({name:i,percent:z})=>`${i??""} ${((z??0)*100).toFixed(0)}%`,labelLine:!0,paddingAngle:2,children:l.map((i,z)=>e.jsx(Y.Cell,{fill:_[z%_.length]},z))}),c,g]})}else r==="radar"?s=e.jsxs(Y.RadarChart,{...S,cx:"50%",cy:"50%",children:[e.jsx(Y.PolarGrid,{}),e.jsx(Y.PolarAngleAxis,{dataKey:n,tick:{fontSize:11}}),d.map((h,y)=>e.jsx(Y.Radar,{dataKey:h.value||h.id,name:h.label||h.id,stroke:h.color||_[y],fill:(h.fill||_[y])+"44"},h.id)),c,g]}):r==="scatter"&&(s=e.jsxs(Y.ScatterChart,{...S,children:[p,e.jsx(Y.XAxis,{dataKey:((T=d[0])==null?void 0:T.xValue)||"x",type:"number",tick:{fontSize:11,fill:t.textSec}}),e.jsx(Y.YAxis,{dataKey:((L=d[0])==null?void 0:L.yValue)||"y",tick:{fontSize:11,fill:t.textSec}}),c,d.map((h,y)=>e.jsx(Y.Scatter,{data:h.data||l,name:h.label||h.id,fill:h.color||_[y]},h.id))]}));return e.jsx("div",{className:"dhx",style:{width:"100%",height:a,padding:12,background:t.surface,borderRadius:t.rMd,...f},children:e.jsx(Y.ResponsiveContainer,{width:"100%",height:"100%",children:s})})}const je=["January","February","March","April","May","June","July","August","September","October","November","December"],Ye=["Su","Mo","Tu","We","Th","Fr","Sa"];function Ke({value:r,range:l=!1,timepicker:d=!1,onChange:o,style:u}){const a=new Date,f=r?new Date(Array.isArray(r)?r[0]:r):a,[n,c]=x.useState(f),[g,p]=x.useState(r??(l?[null,null]:null)),[w,$]=x.useState(null),[S,s]=x.useState({h:0,m:0});x.useEffect(O,[]);const k=n.getFullYear(),M=n.getMonth(),C=new Date(k,M,1).getDay(),T=new Date(k,M+1,0).getDate(),L=[];for(let i=0;i<C;i++)L.push(null);for(let i=1;i<=T;i++)L.push(new Date(k,M,i));const h=i=>i.toDateString()===a.toDateString(),y=i=>{if(!g)return!1;if(l&&Array.isArray(g)){const[z,b]=g;if(!z)return!1;const B=i.getTime();return b?B>=z.getTime()&&B<=b.getTime():i.toDateString()===z.toDateString()}return i.toDateString()===g.toDateString()},I=i=>{if(l){const[z,b]=Array.isArray(g)?g:[null,null];if(!z||b)p([i,null]);else{const B=i<z?[i,z]:[z,i];p(B),o==null||o(B)}}else p(i),o==null||o(i)};return e.jsxs("div",{className:"dhx",style:{background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.rMd,padding:16,display:"inline-block",boxShadow:t.shadow,...u},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:12},children:[e.jsx("button",{onClick:()=>c(i=>new Date(i.getFullYear(),i.getMonth()-1,1)),className:"dhx dhx-btn dhx-btn-ghost",style:{height:28,padding:"0 8px",fontSize:16},children:"‹"}),e.jsxs("div",{style:{fontWeight:700,fontSize:14},children:[je[M]," ",k]}),e.jsx("button",{onClick:()=>c(i=>new Date(i.getFullYear(),i.getMonth()+1,1)),className:"dhx dhx-btn dhx-btn-ghost",style:{height:28,padding:"0 8px",fontSize:16},children:"›"})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, 32px)",gap:2},children:[Ye.map(i=>e.jsx("div",{style:{textAlign:"center",fontSize:11,fontWeight:600,color:t.textMut,paddingBottom:4},children:i},i)),L.map((i,z)=>{const b=i?y(i):!1,B=i&&w&&i.toDateString()===w.toDateString();return e.jsx("div",{onClick:()=>i&&I(i),onMouseEnter:()=>i&&$(i),onMouseLeave:()=>$(null),style:{width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:t.r,cursor:i?"pointer":"default",fontSize:12,fontWeight:i&&h(i)?700:400,background:b?t.primary:B?t.bg:"transparent",color:b?"#fff":i&&h(i)?t.primary:i?t.text:"transparent",border:i&&h(i)&&!b?`1px solid ${t.primary}`:"1px solid transparent",transition:"all .1s"},children:i==null?void 0:i.getDate()},z)})]}),d&&e.jsxs("div",{style:{borderTop:`1px solid ${t.border}`,marginTop:12,paddingTop:12,display:"flex",alignItems:"center",justifyContent:"center",gap:8},children:[e.jsx("input",{type:"number",min:0,max:23,value:S.h,onChange:i=>s(z=>({...z,h:+i.target.value})),className:"dhx dhx-input",style:{width:50,textAlign:"center"}}),e.jsx("span",{style:{fontWeight:700,color:t.textSec},children:":"}),e.jsx("input",{type:"number",min:0,max:59,value:S.m,onChange:i=>s(z=>({...z,m:+i.target.value})),className:"dhx dhx-input",style:{width:50,textAlign:"center"}})]})]})}function me({value:r,onChange:l,timeFormat:d=12,controls:o=!1,minuteStep:u=5,style:a}){const[f,n]=x.useState((r==null?void 0:r.h)??(d===24?0:12)),[c,g]=x.useState((r==null?void 0:r.m)??0),[p,w]=x.useState((r==null?void 0:r.ampm)??"AM"),[$,S]=x.useState(null);x.useEffect(O,[]);const s=d===24?Array.from({length:24},(h,y)=>y):Array.from({length:12},(h,y)=>y+1),k=Array.from({length:Math.ceil(60/u)},(h,y)=>y*u),M=(h,y,I)=>{const i=d===24?{h,m:y}:{h,m:y,ampm:I};o?S(i):l==null||l(i)},C=()=>{S(null),n((r==null?void 0:r.h)??(d===24?0:12)),g((r==null?void 0:r.m)??0),w((r==null?void 0:r.ampm)??"AM")},T={display:"flex",flexDirection:"column",alignItems:"center",gap:4},L=h=>({height:32,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:13,fontWeight:h?700:400,background:h?t.primaryLt:"transparent",color:h?t.primary:t.text});return e.jsxs("div",{className:"dhx",style:{background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.rMd,padding:16,display:"inline-block",boxShadow:t.shadow,...a},children:[e.jsxs("div",{style:{display:"flex",gap:8,alignItems:"stretch"},children:[e.jsxs("div",{style:T,children:[e.jsx("span",{style:{fontSize:11,fontWeight:600,color:t.textMut},children:"Hours"}),e.jsx("div",{className:"dhx-scroll",style:{height:160,overflowY:"auto",width:48,border:`1px solid ${t.border}`,borderRadius:t.r},children:s.map(h=>e.jsx("div",{onClick:()=>{n(h),M(h,c,p)},style:L(f===h),onMouseEnter:y=>f!==h&&(y.currentTarget.style.background=t.bg),onMouseLeave:y=>f!==h&&(y.currentTarget.style.background="transparent"),children:String(h).padStart(2,"0")},h))})]}),e.jsxs("div",{style:T,children:[e.jsx("span",{style:{fontSize:11,fontWeight:600,color:t.textMut},children:"Minutes"}),e.jsx("div",{className:"dhx-scroll",style:{height:160,overflowY:"auto",width:48,border:`1px solid ${t.border}`,borderRadius:t.r},children:k.map(h=>e.jsx("div",{onClick:()=>{g(h),M(f,h,p)},style:L(c===h),onMouseEnter:y=>c!==h&&(y.currentTarget.style.background=t.bg),onMouseLeave:y=>c!==h&&(y.currentTarget.style.background="transparent"),children:String(h).padStart(2,"0")},h))})]}),d===12&&e.jsxs("div",{style:T,children:[e.jsx("span",{style:{fontSize:11,fontWeight:600,color:t.textMut},children:"AM/PM"}),e.jsx("div",{style:{display:"flex",flexDirection:"column",border:`1px solid ${t.border}`,borderRadius:t.r,overflow:"hidden"},children:["AM","PM"].map(h=>e.jsx("div",{onClick:()=>{w(h),M(f,c,h)},style:{height:40,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:"0 12px",fontSize:13,fontWeight:p===h?700:400,background:p===h?t.primary:t.surface,color:p===h?"#fff":t.text},children:h},h))})]})]}),e.jsxs("div",{style:{textAlign:"center",marginTop:12,fontSize:22,fontWeight:700,color:t.primary,letterSpacing:2},children:[String(f).padStart(2,"0"),":",String(c).padStart(2,"0"),d===12?` ${p}`:""]}),o&&e.jsxs("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",marginTop:12},children:[e.jsx("button",{className:"dhx dhx-btn dhx-btn-secondary",onClick:C,children:"Cancel"}),e.jsx("button",{className:"dhx dhx-btn dhx-btn-primary",onClick:()=>$&&(l==null?void 0:l($)),children:"Apply"})]})]})}function Z(r,l){x.useEffect(()=>{const d=o=>{r.current&&!r.current.contains(o.target)&&l(o)};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[r,l])}function Me(r){const l=x.useRef(!1),d=x.useRef({x:0,y:0,ox:0,oy:0});return x.useCallback((o,u=0,a=0)=>{l.current=!0,d.current={x:o.clientX,y:o.clientY,ox:u,oy:a};const f=c=>{if(!l.current)return;const{x:g,y:p,ox:w,oy:$}=d.current;r(w+c.clientX-g,$+c.clientY-p)},n=()=>{l.current=!1,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",n)};document.addEventListener("mousemove",f),document.addEventListener("mouseup",n),o.preventDefault()},[r])}const Fe=({open:r})=>e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",style:{flexShrink:0,transition:"transform .15s",transform:r?"rotate(180deg)":"rotate(0deg)"},children:e.jsx("path",{d:"M2 4l4 4 4-4",stroke:t.textMut,strokeWidth:"1.5",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})});function pe({data:r=[],value:l,placeholder:d="Select or type...",multiselection:o=!1,label:u,onChange:a,style:f}){var I;const[n,c]=x.useState(!1),[g,p]=x.useState(""),[w,$]=x.useState(o?l?[].concat(l):[]:l||null),S=x.useRef(null),s=x.useRef(null);x.useEffect(O,[]),Z(S,x.useCallback(()=>{c(!1),p("")},[]));const k=x.useMemo(()=>r.filter(i=>!g||i.value.toLowerCase().includes(g.toLowerCase())),[r,g]),M=i=>o?(w||[]).includes(i):w===i,C=i=>{const z=i.id||i.value;if(o){const b=M(z)?w.filter(B=>B!==z):[...w||[],z];$(b),a==null||a(b)}else $(z),p(""),c(!1),a==null||a(z)},T=i=>{const z=w.filter(b=>b!==i);$(z),a==null||a(z)},L=()=>{c(!0),setTimeout(()=>{var i;return(i=s.current)==null?void 0:i.focus()},0)},h=((I=r.find(i=>(i.id||i.value)===w))==null?void 0:I.value)||"",y=o?w||[]:[];return e.jsxs("div",{ref:S,className:"dhx",style:{position:"relative",...f},children:[u&&e.jsx("label",{className:"dhx dhx-label",children:u}),e.jsxs("div",{onClick:L,style:{display:"flex",alignItems:"center",flexWrap:o?"wrap":"nowrap",border:`1px solid ${n?t.primary:t.border}`,borderRadius:t.r,minHeight:34,padding:"4px 8px",cursor:"text",background:t.surface,gap:4,transition:"border-color .15s",boxShadow:n?`0 0 0 3px ${t.primary}22`:"none"},children:[o&&e.jsxs(e.Fragment,{children:[y.map(i=>{var z;return e.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4,background:t.primary,color:"#fff",borderRadius:12,padding:"2px 10px 2px 8px",fontSize:12,lineHeight:1.5,whiteSpace:"nowrap"},children:[((z=r.find(b=>(b.id||b.value)===i))==null?void 0:z.value)||i,e.jsx("span",{onClick:b=>{b.stopPropagation(),T(i)},style:{cursor:"pointer",fontSize:15,lineHeight:1,opacity:.75,marginLeft:2},children:"×"})]},i)}),e.jsx("input",{ref:s,value:g,onChange:i=>{p(i.target.value),c(!0)},onFocus:()=>c(!0),onClick:i=>i.stopPropagation(),placeholder:y.length?"":d,style:{flex:1,minWidth:60,border:"none",outline:"none",fontSize:13,background:"transparent",color:t.text,padding:0}})]}),!o&&e.jsx("input",{ref:s,value:n?g:h,onChange:i=>{p(i.target.value),c(!0)},onFocus:()=>{c(!0),p("")},onClick:i=>i.stopPropagation(),placeholder:d,style:{flex:1,border:"none",outline:"none",fontSize:13,background:"transparent",color:t.text,padding:0}}),e.jsx(Fe,{open:n})]}),n&&e.jsx("div",{className:"dhx dhx-anim-fade",style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.r,boxShadow:t.shadowLg,zIndex:100},children:e.jsxs("div",{className:"dhx-scroll",style:{maxHeight:220,overflowY:"auto"},children:[k.map(i=>{const z=i.id||i.value,b=M(z);return e.jsxs("div",{onClick:()=>C(i),style:{padding:"8px 12px",cursor:"pointer",display:"flex",alignItems:"center",gap:8,fontSize:13,background:b?t.primaryLt:"transparent",color:b?t.primary:t.text},onMouseEnter:B=>!b&&(B.currentTarget.style.background=t.bg),onMouseLeave:B=>!b&&(B.currentTarget.style.background="transparent"),children:[o&&e.jsx("span",{style:{width:14,height:14,flexShrink:0,border:`2px solid ${b?t.primary:t.borderDk}`,borderRadius:3,display:"flex",alignItems:"center",justifyContent:"center",background:b?t.primary:"transparent"},children:b&&e.jsx("span",{style:{color:"#fff",fontSize:9,lineHeight:1},children:"✓"})}),e.jsx("span",{style:{flex:1},children:i.value}),!o&&b&&e.jsx("span",{style:{color:t.primary,fontSize:12,fontWeight:700},children:"✓"}),i.count!==void 0&&e.jsxs("span",{style:{fontSize:11,color:t.textMut},children:["(",i.count,")"]})]},z)}),k.length===0&&e.jsx("div",{style:{padding:16,textAlign:"center",color:t.textMut,fontSize:13},children:"No matches"})]})})]})}function he({min:r=0,max:l=100,step:d=1,value:o,range:u=!1,label:a,tick:f,disabled:n=!1,onChange:c,style:g}){const[p,w]=x.useState(o??(u?[r,l]:r));x.useEffect(O,[]);const $=(C,T)=>{if(!n)if(u){const L=[...p];L[C]=T,w(L),c==null||c(L)}else w(T),c==null||c(T)},S=C=>(C-r)/(l-r)*100,s=u?p:[p],k=u?{left:`${S(s[0])}%`,width:`${S(s[1])-S(s[0])}%`}:{left:0,width:`${S(s[0])}%`},M=n?t.border:t.primary;return e.jsxs("div",{className:"dhx",style:{width:"100%",opacity:n?.5:1,...g},children:[a&&e.jsx("label",{className:"dhx dhx-label",children:a}),e.jsx("div",{style:{position:"relative",height:36,display:"flex",alignItems:"center"},children:e.jsxs("div",{style:{position:"relative",flex:1,height:4,background:t.border,borderRadius:2},children:[e.jsx("div",{style:{position:"absolute",...k,height:"100%",background:M,borderRadius:2}}),s.map((C,T)=>e.jsx("input",{type:"range",min:r,max:l,step:d,value:C,disabled:n,onChange:L=>{const h=+L.target.value;u&&T===0&&h>=p[1]||u&&T===1&&h<=p[0]||$(T,h)},style:{position:"absolute",width:"100%",height:"100%",opacity:0,cursor:n?"not-allowed":"pointer",top:0,left:0,margin:0}},T)),s.map((C,T)=>e.jsx("div",{style:{position:"absolute",left:`${S(C)}%`,top:"50%",transform:"translate(-50%, -50%)",width:16,height:16,borderRadius:"50%",background:t.surface,border:`2px solid ${M}`,boxShadow:"0 1px 4px rgba(0,0,0,.2)",pointerEvents:"none"},children:e.jsx("div",{style:{position:"absolute",bottom:"calc(100% + 6px)",left:"50%",transform:"translateX(-50%)",background:n?t.textMut:t.primaryDk,color:"#fff",padding:"2px 6px",borderRadius:t.r,fontSize:11,fontWeight:700,whiteSpace:"nowrap"},children:C})},T))]})}),f&&e.jsx("div",{style:{display:"flex",justifyContent:"space-between",marginTop:2},children:[r,Math.round((l+r)/2),l].map(C=>e.jsx("span",{style:{fontSize:10,color:t.textMut},children:C},C))})]})}const Ve=["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4caf50","#8bc34a","#cddc39","#ffeb3b","#ffc107","#ff9800","#ff5722","#795548","#607d8b","#9e9e9e","#000000","#ffffff","#0288d1","#01579b","#43a047","#e53935","#f57c00"];function fe(r){const l=parseInt(r.slice(1,3),16)/255,d=parseInt(r.slice(3,5),16)/255,o=parseInt(r.slice(5,7),16)/255,u=Math.max(l,d,o),a=Math.min(l,d,o);let f=0,n=0;const c=(u+a)/2;if(u!==a){const g=u-a;n=c>.5?g/(2-u-a):g/(u+a),f=u===l?((d-o)/g+(d<o?6:0))/6:u===d?((o-l)/g+2)/6:((l-d)/g+4)/6}return[Math.round(f*360),Math.round(n*100),Math.round(c*100)]}function ze(r,l,d){l/=100,d/=100;const o=l*Math.min(d,1-d),u=a=>{const f=(a+r/30)%12,n=d-o*Math.max(Math.min(f-3,9-f,1),-1);return Math.round(255*n).toString(16).padStart(2,"0")};return"#"+u(0)+u(8)+u(4)}function Xe({value:r="#0288d1",onChange:l,style:d}){const[o,u]=x.useState(()=>fe(r)),a=ze(...o);x.useEffect(O,[]);const f=n=>{u(n),l==null||l(ze(...n))};return e.jsxs("div",{className:"dhx",style:{background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.rMd,padding:16,display:"inline-block",boxShadow:t.shadow,...d},children:[e.jsx("div",{style:{width:200,height:120,borderRadius:t.r,marginBottom:12,background:`linear-gradient(to bottom, transparent, black), linear-gradient(to right, white, hsl(${o[0]},100%,50%))`,cursor:"crosshair"}}),[["Hue",0,360,o[0]],["Saturation",0,100,o[1]],["Lightness",0,100,o[2]]].map(([n,c,g,p],w)=>e.jsxs("div",{style:{marginBottom:w<2?8:12},children:[e.jsxs("div",{className:"dhx dhx-label",children:[n,w>0?` (${p}%)`:""]}),e.jsx("input",{type:"range",min:c,max:g,value:p,onChange:$=>{const S=[...o];S[w]=+$.target.value,f(S)},style:{width:"100%",accentColor:t.primary}})]},n)),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:12},children:[e.jsx("div",{style:{width:36,height:36,borderRadius:t.r,background:a,border:`1px solid ${t.border}`,flexShrink:0}}),e.jsx("input",{className:"dhx dhx-input",style:{flex:1,fontFamily:"monospace",fontSize:12},value:a,onChange:n=>{try{f(fe(n.target.value)),l==null||l(n.target.value)}catch{}}})]}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(13, 1fr)",gap:3},children:Ve.map(n=>e.jsx("div",{onClick:()=>{u(fe(n)),l==null||l(n)},style:{width:14,height:14,borderRadius:2,background:n,cursor:"pointer",border:a===n?`2px solid ${t.text}`:"1px solid rgba(0,0,0,.15)",transition:"transform .1s"},onMouseEnter:c=>c.currentTarget.style.transform="scale(1.3)",onMouseLeave:c=>c.currentTarget.style.transform="scale(1)"},n))})]})}function ne({items:r,onSelect:l,style:d}){const[o,u]=x.useState(null);return e.jsx("div",{className:"dhx dhx-anim-fade",style:{position:"absolute",top:"calc(100% + 4px)",left:0,minWidth:180,background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.r,boxShadow:t.shadowLg,zIndex:200,padding:"4px 0",...d},children:r.map((a,f)=>{var c,g;if(a.type==="separator")return e.jsx("div",{style:{height:1,background:t.border,margin:"4px 0"}},f);const n=o===f;return e.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>u(f),onMouseLeave:()=>u(null),children:[e.jsxs("div",{onClick:()=>{var p;return!a.disabled&&!((p=a.items)!=null&&p.length)&&l(a)},style:{display:"flex",alignItems:"center",gap:8,padding:"8px 14px",cursor:a.disabled?"not-allowed":"pointer",fontSize:13,color:a.disabled?t.textMut:t.text,background:n&&!a.disabled?t.bg:"transparent",opacity:a.disabled?.5:1},children:[a.icon&&e.jsx("span",{style:{fontSize:15,width:18,textAlign:"center"},children:a.icon}),e.jsx("span",{style:{flex:1},children:a.value||a.id}),a.hotkey&&e.jsx("span",{style:{fontSize:11,color:t.textMut},children:a.hotkey}),(c=a.items)!=null&&c.length?e.jsx("span",{style:{fontSize:10,color:t.textMut},children:"▶"}):null]}),n&&((g=a.items)!=null&&g.length)?e.jsx(ne,{items:a.items,onSelect:l,style:{position:"absolute",left:"100%",top:-4}}):null]},a.id||f)})})}function _e({items:r=[],label:l="Menu",onSelect:d,style:o}){const[u,a]=x.useState(!1),f=x.useRef(null);return x.useEffect(O,[]),Z(f,x.useCallback(()=>a(!1),[])),e.jsxs("div",{ref:f,className:"dhx",style:{position:"relative",display:"inline-block",...o},children:[e.jsxs("button",{className:"dhx dhx-btn dhx-btn-secondary",onClick:()=>a(n=>!n),children:[l," ",e.jsx("span",{style:{fontSize:10},children:u?"▲":"▼"})]}),u&&e.jsx(ne,{items:r,onSelect:n=>{d==null||d(n),a(!1)}})]})}function qe({items:r=[],onSelect:l,children:d}){const[o,u]=x.useState(null),a=x.useRef(null);x.useEffect(O,[]),Z(a,x.useCallback(()=>u(null),[]));const f=n=>{n.preventDefault(),u({x:n.clientX,y:n.clientY})};return e.jsxs("div",{ref:a,onContextMenu:f,style:{position:"relative",display:"contents"},children:[d,o&&e.jsx("div",{style:{position:"fixed",left:o.x,top:o.y,zIndex:9999},children:e.jsx(ne,{items:r,onSelect:n=>{l==null||l(n),u(null)}})})]})}function Ge({trigger:r,children:l,placement:d="bottom-start",style:o}){const[u,a]=x.useState(!1),[f,n]=x.useState({top:"100%",left:0}),c=x.useRef(null),g=x.useRef(null);x.useEffect(O,[]),Z(c,x.useCallback(()=>a(!1),[]));const p=()=>{a(w=>{if(!w&&g.current){const $=g.current.getBoundingClientRect(),S={"bottom-start":{top:$.height+4,left:0},"bottom-end":{top:$.height+4,right:0,left:"auto"},"top-start":{bottom:$.height+4,top:"auto",left:0}};n(S[d]||S["bottom-start"])}return!w})};return e.jsxs("div",{ref:c,className:"dhx",style:{position:"relative",display:"inline-block"},children:[e.jsx("div",{ref:g,onClick:p,children:r}),u&&e.jsx("div",{className:"dhx dhx-anim-fade",style:{position:"absolute",...f,zIndex:200,background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.rMd,boxShadow:t.shadowLg,...o},children:l})]})}function Je({title:r,children:l,width:d=480,height:o,closable:u=!0,movable:a=!0,modal:f=!1,defaultOpen:n=!0,footer:c,onClose:g,style:p}){const[w,$]=x.useState(n),[S,s]=x.useState({x:0,y:0});x.useEffect(O,[]);const k=Me(x.useCallback((C,T)=>a&&s({x:C,y:T}),[a])),M=()=>{$(!1),g==null||g()};return w?e.jsxs(e.Fragment,{children:[f&&e.jsx("div",{style:{position:"fixed",inset:0,background:"rgba(0,0,0,.45)",zIndex:900},onClick:u?M:void 0}),e.jsxs("div",{className:"dhx",style:{position:f?"fixed":"absolute",left:f?"50%":`calc(50% + ${S.x}px)`,top:f?"50%":`calc(50% + ${S.y}px)`,transform:`translate(calc(-50% + ${S.x}px), calc(-50% + ${S.y}px))`,width:d,...o?{height:o}:{},background:t.surface,borderRadius:t.rMd,boxShadow:t.shadowLg,zIndex:901,display:"flex",flexDirection:"column",overflow:"hidden",...p},children:[e.jsxs("div",{onMouseDown:C=>k(C,S.x,S.y),style:{display:"flex",alignItems:"center",padding:"12px 16px",borderBottom:`1px solid ${t.border}`,cursor:a?"grab":"default",background:t.bg,gap:8,userSelect:"none"},children:[e.jsx("span",{style:{flex:1,fontWeight:700,fontSize:15},children:r}),u&&e.jsx("button",{onClick:M,style:{background:"none",border:"none",cursor:"pointer",width:28,height:28,borderRadius:t.r,display:"flex",alignItems:"center",justifyContent:"center",fontSize:18,color:t.textSec},onMouseEnter:C=>C.currentTarget.style.background=t.border,onMouseLeave:C=>C.currentTarget.style.background="none",children:"×"})]}),e.jsx("div",{className:"dhx-scroll",style:{flex:1,minHeight:0,padding:20,overflowY:"auto"},children:l}),c&&e.jsx("div",{style:{padding:"12px 16px",borderTop:`1px solid ${t.border}`,display:"flex",justifyContent:"flex-end",gap:8,background:t.bg},children:c})]})]}):null}const ue=x.createContext(null),Ue={success:"✓",error:"✕",warning:"⚠",info:"ℹ"},$e={success:t.success,error:t.danger,warning:t.warning,info:t.primary};function Qe({children:r}){const[l,d]=x.useState([]);x.useEffect(O,[]);const o=x.useCallback(f=>d(n=>n.filter(c=>c.id!==f)),[]),u=x.useCallback(f=>{const n=Date.now();return d(c=>[...c,{id:n,...f}]),f.duration!==0&&setTimeout(()=>o(n),f.duration||4e3),n},[o]),a={message:u,alert:(f,n)=>u({type:"info",title:f,...n}),confirm:(f,n,c)=>u({type:"warning",title:f,confirm:n,...c})};return e.jsxs(ue.Provider,{value:a,children:[r,e.jsx("div",{style:{position:"fixed",top:20,right:20,zIndex:9999,display:"flex",flexDirection:"column",gap:8,pointerEvents:"none"},children:l.map(f=>{const n=f.type||"info";return e.jsxs("div",{style:{background:t.surface,border:`1px solid ${t.border}`,borderLeft:`4px solid ${$e[n]}`,borderRadius:t.r,boxShadow:t.shadowLg,padding:"12px 16px",minWidth:280,maxWidth:380,pointerEvents:"all",display:"flex",gap:10,alignItems:"flex-start",animation:"dhx-toast .3s ease"},children:[e.jsx("span",{style:{fontSize:18,color:$e[n],lineHeight:1},children:Ue[n]}),e.jsxs("div",{style:{flex:1},children:[f.title&&e.jsx("div",{style:{fontWeight:600,fontSize:13,marginBottom:f.text?3:0},children:f.title}),f.text&&e.jsx("div",{style:{fontSize:12,color:t.textSec,lineHeight:1.5},children:f.text}),f.confirm&&e.jsxs("div",{style:{display:"flex",gap:6,marginTop:8},children:[e.jsx("button",{className:"dhx dhx-btn dhx-btn-primary",style:{height:26,fontSize:12},onClick:()=>{f.confirm(!0),o(f.id)},children:"Confirm"}),e.jsx("button",{className:"dhx dhx-btn dhx-btn-secondary",style:{height:26,fontSize:12},onClick:()=>{f.confirm(!1),o(f.id)},children:"Cancel"})]})]}),e.jsx("button",{onClick:()=>o(f.id),style:{background:"none",border:"none",cursor:"pointer",color:t.textMut,fontSize:14,lineHeight:1,padding:0},children:"×"})]},f.id)})})]})}function Ze(){const r=x.useContext(ue);if(!r)throw new Error("useMessage must be used inside <MessageProvider>");return r}function Re({data:r=[],template:l,keyNavigation:d=!0,multiselection:o=!1,editable:u=!1,height:a=400,onSelect:f,onEdit:n,style:c}){const[g,p]=x.useState(new Set),[w,$]=x.useState(null),[S,s]=x.useState(""),[k,M]=x.useState(null);x.useEffect(O,[]);const C=(L,h)=>{const y=L.id??h;p(I=>{const i=o?new Set(I):new Set;return i.has(y)?i.delete(y):i.add(y),i}),M(h),f==null||f(L)},T=(L,h)=>{n==null||n({...L,value:S},h),$(null)};return e.jsxs("div",{className:"dhx dhx-scroll",style:{height:a,overflowY:"auto",border:`1px solid ${t.border}`,borderRadius:t.r,background:t.surface,...c},tabIndex:0,onKeyDown:L=>{d&&(L.key==="ArrowDown"&&M(h=>Math.min((h??-1)+1,r.length-1)),L.key==="ArrowUp"&&M(h=>Math.max((h??1)-1,0)))},children:[r.map((L,h)=>{const y=L.id??h,I=g.has(y),i=k===h;return e.jsx("div",{onClick:()=>C(L,h),onDoubleClick:()=>u&&($(h),s(String(L.value||""))),style:{display:"flex",alignItems:"center",padding:"0 12px",height:40,cursor:"pointer",fontSize:13,borderBottom:`1px solid ${t.border}`,background:I?t.primaryLt:i?t.bg:t.surface,color:I?t.primary:t.text,outline:i?`2px solid ${t.primary}44`:"none",transition:"background .1s"},children:w===h?e.jsx("input",{autoFocus:!0,className:"dhx dhx-input",style:{height:28,flex:1},value:S,onChange:z=>s(z.target.value),onBlur:()=>T(L,h),onKeyDown:z=>{z.key==="Enter"&&T(L,h),z.key==="Escape"&&$(null)},onClick:z=>z.stopPropagation()}):l?e.jsx("div",{dangerouslySetInnerHTML:{__html:l(L)},style:{flex:1}}):e.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:String(L.value??"")})},String(y))}),r.length===0&&e.jsx("div",{style:{padding:24,textAlign:"center",color:t.textMut},children:"No items"})]})}function et({data:r=[],template:l,itemsInRow:d=3,gap:o=12,multiselection:u=!1,onSelect:a,style:f}){const[n,c]=x.useState(new Set);x.useEffect(O,[]);const g=p=>{const w=p.id??String(p.title);c($=>{const S=u?new Set($):new Set;return S.has(w)?S.delete(w):S.add(w),S}),a==null||a(p)};return e.jsx("div",{className:"dhx",style:{display:"grid",gridTemplateColumns:`repeat(${d}, 1fr)`,gap:o,padding:o,...f},children:r.map((p,w)=>{const $=p.id??w,S=n.has($);return e.jsx("div",{onClick:()=>g(p),style:{background:t.surface,border:`2px solid ${S?t.primary:t.border}`,borderRadius:t.rMd,overflow:"hidden",cursor:"pointer",transition:"all .15s",boxShadow:S?`0 0 0 3px ${t.primary}33`:t.shadow,transform:S?"translateY(-2px)":"none"},onMouseEnter:s=>{s.currentTarget.style.boxShadow=t.shadowLg,s.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:s=>{s.currentTarget.style.boxShadow=S?`0 0 0 3px ${t.primary}33`:t.shadow,s.currentTarget.style.transform=S?"translateY(-2px)":"none"},children:l?e.jsx("div",{dangerouslySetInnerHTML:{__html:l(p)}}):e.jsxs("div",{style:{padding:16},children:[p.img&&e.jsx("img",{src:p.img,alt:p.title||"",style:{width:"100%",borderRadius:t.r,marginBottom:8,display:"block"}}),e.jsx("div",{style:{fontWeight:600,fontSize:14,marginBottom:4},children:p.title||p.value}),p.subtitle&&e.jsx("div",{style:{fontSize:12,color:t.textSec},children:p.subtitle})]})},String($))})})}function xe(r){return r.map(l=>({...l,items:l.items?xe(l.items):void 0}))}function ge(r,l={}){return r.forEach(d=>{d.opened&&(l[d.id]=!0),d.items&&ge(d.items,l)}),l}function De(r,l){let d=null;return[r.filter(u=>u.id===l?(d=u,!1):!0).map(u=>{if(u.items){const[a,f]=De(u.items,l);return f&&(d=f),{...u,items:a}}return u}),d]}function ye(r,l,d,o){if(o==="inside")return r.map(a=>a.id===l?{...a,items:[...a.items||[],d]}:a.items?{...a,items:ye(a.items,l,d,o)}:a);if(r.some(a=>a.id===l)){const a=[];for(const f of r)f.id===l?o==="before"?(a.push(d),a.push(f)):(a.push(f),a.push(d)):a.push(f);return a}return r.map(a=>a.items?{...a,items:ye(a.items,l,d,o)}:a)}function tt(r,l,d){function o(u){var a,f;if(u.id===l){const n=c=>{var g;return c.id===d||(((g=c.items)==null?void 0:g.some(n))??!1)};return((a=u.items)==null?void 0:a.some(n))??!1}return((f=u.items)==null?void 0:f.some(o))??!1}return r.some(o)}function Ce(r,l,d){return r.map(o=>o.id===l?{...o,value:d}:{...o,items:o.items?Ce(o.items,l,d):void 0})}function rt(r,l){var a;let d=0,o=0;const u=f=>{var n;d++,l[f.id]&&o++,(n=f.items)==null||n.forEach(u)};return(a=r.items)==null||a.forEach(u),{total:d,checkedCount:o}}function nt({data:r=[],checkbox:l=!1,editable:d=!1,dragMode:o,tooltip:u,onSelect:a,onCheck:f,onChange:n,style:c}){const[g,p]=x.useState(()=>xe(r)),[w,$]=x.useState(()=>ge(r)),[S,s]=x.useState(null),[k,M]=x.useState({}),[C,T]=x.useState(null),[L,h]=x.useState(""),[y,I]=x.useState(null),[i,z]=x.useState(null);x.useEffect(O,[]),x.useEffect(()=>{p(xe(r)),$(D=>({...ge(r),...D}))},[r]);const b=D=>$(P=>({...P,[D]:!P[D]})),B=(D,P)=>{M(K=>({...K,[D]:P})),f==null||f(D,P)},V=()=>{if(!C)return;const D=C,P=L;T(null),p(K=>{const X=Ce(K,D,P);return n==null||n(X),X})},J=(D,P)=>{D.dataTransfer.effectAllowed="move",I(P)},Q=(D,P)=>{if(!y||y===P||tt(g,y,P))return;D.preventDefault();const K=D.currentTarget.getBoundingClientRect(),X=D.clientY-K.top,F=K.height,G=X<F*.25?"before":X>F*.75?"after":"inside";z(q=>(q==null?void 0:q.id)===P&&(q==null?void 0:q.pos)===G?q:{id:P,pos:G})},le=(D,P)=>{if(D.preventDefault(),!y||!i||y===P){z(null),I(null);return}p(K=>{const[X,F]=De(K,y);if(!F)return K;const G=ye(X,P,F,i.pos);return n==null||n(G),G}),i.pos==="inside"&&$(K=>({...K,[P]:!0})),z(null),I(null)},oe=()=>{I(null),z(null)},ae=(D,P=0)=>{var ce;const K=(((ce=D.items)==null?void 0:ce.length)??0)>0,X=w[D.id],F=S===D.id,G=y===D.id,q=(i==null?void 0:i.id)===D.id;let ie=!!k[D.id],de=!1;if(l&&K){const{total:A,checkedCount:R}=rt(D,k);R>0&&R<A?de=!0:A>0&&R===A&&(ie=!0)}const be=q&&i.pos!=="inside"?{boxShadow:i.pos==="before"?`inset 0 2px 0 0 ${t.primary}`:`inset 0 -2px 0 0 ${t.primary}`}:{},se=q&&i.pos==="inside"||F?t.primaryLt:"transparent";return e.jsxs("div",{style:{opacity:G?.4:1},children:[e.jsxs("div",{draggable:!!o,onDragStart:o?A=>J(A,D.id):void 0,onDragOver:o?A=>Q(A,D.id):void 0,onDrop:o?A=>le(A,D.id):void 0,onDragEnd:o?oe:void 0,title:u==null?void 0:u(D),onClick:()=>{s(D.id),a==null||a(D),K&&b(D.id)},onDoubleClick:()=>{d&&(T(D.id),h(D.value||""))},style:{display:"flex",alignItems:"center",gap:4,padding:`5px 8px 5px ${12+P*18}px`,cursor:o?"grab":"pointer",borderRadius:t.r,margin:"1px 4px",background:se,color:F?t.primary:t.text,userSelect:"none",fontSize:13,...be},onMouseEnter:A=>!F&&!q&&(A.currentTarget.style.background=t.bg),onMouseLeave:A=>!F&&!q&&(A.currentTarget.style.background="transparent"),children:[e.jsx("span",{style:{width:16,textAlign:"center",fontSize:11,color:t.textMut,flexShrink:0},onClick:A=>{A.stopPropagation(),K&&b(D.id)},children:K?X?"▾":"▸":""}),e.jsx("span",{style:{fontSize:15,flexShrink:0},children:K?X?"📂":"📁":"📄"}),l&&e.jsx("input",{ref:A=>{A&&(A.indeterminate=de)},type:"checkbox",checked:ie,onChange:A=>{A.stopPropagation(),B(D.id,A.target.checked)},style:{cursor:"pointer",accentColor:t.primary,flexShrink:0},onClick:A=>A.stopPropagation()}),C===D.id?e.jsx("input",{autoFocus:!0,className:"dhx dhx-input",style:{height:24,fontSize:12,flex:1},value:L,onChange:A=>h(A.target.value),onBlur:V,onKeyDown:A=>{A.key==="Enter"&&V(),A.key==="Escape"&&T(null)},onClick:A=>A.stopPropagation()}):e.jsx("span",{style:{flex:1},children:D.value}),D.count!==void 0&&e.jsxs("span",{style:{fontSize:11,color:t.textMut},children:["(",D.count,")"]})]}),K&&X&&e.jsx("div",{children:D.items.map(A=>ae(A,P+1))})]},D.id)};return e.jsx("div",{className:"dhx dhx-scroll",style:{overflowY:"auto",...c},onDragOver:o?D=>D.preventDefault():void 0,onDrop:o?D=>{D.preventDefault(),z(null),I(null)}:void 0,children:g.map(D=>ae(D))})}function ot({total:r,pageSize:l=10,page:d,onChange:o,style:u}){const[a,f]=x.useState(d||1),n=Math.ceil(r/l);x.useEffect(O,[]);const c=p=>{const w=Math.min(Math.max(1,p),n);f(w),o==null||o(w)},g=x.useMemo(()=>{const p=[];for(let $=Math.max(1,a-2);$<=Math.min(n,a+2);$++)p.push($);return p[0]>1&&(p[0]>2&&p.unshift("..."),p.unshift(1)),p[p.length-1]<n&&(p[p.length-1]<n-1&&p.push("..."),p.push(n)),p},[a,n]);return e.jsxs("div",{className:"dhx",style:{display:"flex",alignItems:"center",gap:4,padding:"8px 12px",...u},children:[e.jsxs("span",{style:{fontSize:12,color:t.textSec,marginRight:8},children:[(a-1)*l+1,"–",Math.min(a*l,r)," of ",r]}),[["«",1],["‹",a-1]].map(([p,w])=>e.jsx("button",{className:"dhx dhx-btn dhx-btn-ghost",style:{height:30,padding:"0 8px",fontSize:14},disabled:a===1,onClick:()=>c(w),children:p},p)),g.map((p,w)=>e.jsx("button",{onClick:()=>typeof p=="number"&&c(p),className:`dhx dhx-btn ${p===a?"dhx-btn-primary":"dhx-btn-ghost"}`,style:{height:30,minWidth:30,padding:"0 8px",fontSize:13},disabled:p==="...",children:p},w)),[["›",a+1],["»",n]].map(([p,w])=>e.jsx("button",{className:"dhx dhx-btn dhx-btn-ghost",style:{height:30,padding:"0 8px",fontSize:14},disabled:a===n,onClick:()=>c(w),children:p},p))]})}function st({config:r={},defaultValues:l={},onSubmit:d,style:o}){const[u,a]=x.useState(l),[f,n]=x.useState({}),[c,g]=x.useState(null);x.useEffect(O,[]);const p=(s,k)=>{a(M=>({...M,[s]:k})),n(M=>({...M,[s]:null}))},w=()=>{const s={};return(r.rows||[]).flat().forEach(k=>{k&&typeof k=="object"&&"name"in k&&k.required&&!u[k.name]&&(s[k.name]=`${k.label||k.name} is required`)}),n(s),Object.keys(s).length===0},$=s=>{const k=u[s.name]??s.value??"",M=f[s.name],C=s.labelWidth??r.labelWidth,T=C!==void 0||s.labelPosition==="left";if(s.type==="fieldset")return e.jsxs("fieldset",{style:{border:`1px solid ${t.border}`,borderRadius:t.r,padding:"12px 16px",marginBottom:14},children:[e.jsx("legend",{style:{fontSize:12,fontWeight:700,color:t.textSec,padding:"0 6px"},children:s.label}),(s.rows||[]).map(b=>$(b))]},s.name);if(s.type==="spacer")return e.jsx("div",{style:{height:s.height||16}},s.name);const L=C?{minWidth:C,width:C,flexShrink:0,paddingTop:8,boxSizing:"border-box"}:{},h=s.label?e.jsxs("label",{className:"dhx dhx-label",style:{display:"flex",gap:4,...L},children:[s.label,s.required&&e.jsx("span",{style:{color:t.danger},children:"*"})]},"lbl"):null,y=M?e.jsx("div",{style:{fontSize:11,color:t.danger,marginTop:3},children:M}):null,I=s.helpMessage?e.jsxs("div",{style:{fontSize:11,color:t.textMut,marginTop:3},children:["ⓘ ",s.helpMessage]}):null,i={key:s.name,className:"dhx-form-group"},z=b=>T?e.jsxs("div",{...i,style:{display:"flex",alignItems:"flex-start",gap:8},children:[h,e.jsxs("div",{style:{flex:1,minWidth:0},children:[b,y,I]})]}):e.jsxs("div",{...i,children:[h,b,y,I]});if(!s.type||s.type==="input")return z(e.jsxs("div",{className:"dhx-input-wrap",children:[s.icon&&e.jsx("span",{className:"dhx-input-icon",children:s.icon}),e.jsx("input",{className:`dhx dhx-input${s.icon?" dhx-input--with-icon":""}`,style:{borderColor:M?t.danger:void 0},type:s.inputType||"text",placeholder:s.placeholder,value:k,onChange:b=>p(s.name,b.target.value),disabled:s.disabled})]}));if(s.type==="textarea")return z(e.jsx("textarea",{className:"dhx dhx-input",style:{height:80,resize:"vertical",padding:"8px 10px"},placeholder:s.placeholder,value:k,onChange:b=>p(s.name,b.target.value)}));if(s.type==="select")return z(e.jsxs("select",{className:"dhx dhx-input",value:k,onChange:b=>p(s.name,b.target.value),style:{cursor:"pointer"},children:[e.jsx("option",{value:"",children:"— Select —"}),(s.options||[]).map(b=>e.jsx("option",{value:b.value,children:b.label||b.value},b.value))]}));if(s.type==="datepicker")return z(e.jsx("input",{type:"date",className:"dhx dhx-input",value:k,onChange:b=>p(s.name,b.target.value)}));if(s.type==="timepicker"){const b=u[s.name]??{h:12,m:0,ampm:"AM"},B=!!u[s.name],V=B?`${String(b.h).padStart(2,"0")}:${String(b.m).padStart(2,"0")}${b.ampm?" "+b.ampm:""}`:s.placeholder||"Click to select",J=e.jsxs("div",{style:{position:"relative"},children:[e.jsxs("div",{className:"dhx dhx-input",style:{cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},onClick:()=>g(c===s.name?null:s.name),children:[e.jsx("span",{style:{color:B?t.text:t.textMut},children:V}),e.jsx("span",{style:{fontSize:13,color:t.textSec},children:"🕐"})]}),c===s.name&&e.jsx("div",{style:{position:"absolute",zIndex:100,top:"calc(100% + 4px)",left:0},children:e.jsx(me,{value:b,controls:!0,onChange:Q=>{p(s.name,Q),g(null)}})})]});return z(J)}if(s.type==="colorpicker")return z(e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("input",{type:"color",value:k||"#000000",onChange:b=>p(s.name,b.target.value),style:{width:36,height:36,padding:2,border:`1px solid ${t.border}`,borderRadius:t.r,cursor:"pointer",background:"none"}}),e.jsx("span",{style:{fontSize:12,color:t.textSec,fontFamily:"monospace"},children:k||"#000000"})]}));if(s.type==="text")return z(e.jsx("p",{style:{margin:"6px 0",fontSize:13,color:t.text},children:s.value}));if(s.type==="checkbox")return e.jsxs("div",{...i,children:[T?e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[C&&e.jsx("div",{style:{width:C,flexShrink:0}}),e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8,cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",checked:!!k,onChange:b=>p(s.name,b.target.checked),style:{width:16,height:16,accentColor:t.primary,cursor:"pointer"}}),e.jsx("span",{style:{fontSize:13},children:s.label})]})]}):e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8,cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",checked:!!k,onChange:b=>p(s.name,b.target.checked),style:{width:16,height:16,accentColor:t.primary,cursor:"pointer"}}),e.jsx("span",{style:{fontSize:13},children:s.label})]}),I]});if(s.type==="radio"){const b=(s.options||[]).map(B=>e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,cursor:"pointer",fontSize:13},children:[e.jsx("input",{type:"radio",name:s.name,value:B.value,checked:k===B.value,onChange:()=>p(s.name,B.value),style:{accentColor:t.primary,cursor:"pointer"}}),B.label||B.value]},B.value));return z(e.jsx("div",{style:{display:"flex",gap:16,flexWrap:"wrap",paddingTop:8},children:b}))}if(s.type==="slider")return T?e.jsxs("div",{...i,style:{display:"flex",alignItems:"flex-start",gap:8},children:[h,e.jsxs("div",{style:{flex:1},children:[e.jsx(he,{min:s.min,max:s.max,step:s.step,value:k||s.min,range:s.range,onChange:b=>p(s.name,b)}),I]})]}):e.jsxs("div",{...i,children:[e.jsx(he,{label:s.label,min:s.min,max:s.max,step:s.step,value:k||s.min,range:s.range,onChange:b=>p(s.name,b)}),I]});if(s.type==="combo")return T?e.jsxs("div",{...i,style:{display:"flex",alignItems:"flex-start",gap:8},children:[h,e.jsxs("div",{style:{flex:1},children:[e.jsx(pe,{data:s.data||[],multiselection:s.multiselection,placeholder:s.placeholder||"Select...",value:k||(s.multiselection?[]:null),onChange:b=>p(s.name,b)}),y,I]})]}):e.jsxs("div",{...i,children:[e.jsx(pe,{label:s.label,data:s.data||[],multiselection:s.multiselection,placeholder:s.placeholder||"Select...",value:k||(s.multiselection?[]:null),onChange:b=>p(s.name,b)}),y,I]});if(s.type==="toggle"){const b=!!k,B=b?s.icon:s.offIcon||s.icon,V=b?s.text||s.label:s.offText||s.text||s.label;return e.jsxs("div",{...i,children:[T&&C&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("div",{style:{width:C,flexShrink:0}}),e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8,cursor:"pointer"},children:[e.jsx(Te,{on:b,onClick:()=>p(s.name,!k)}),B&&e.jsx("span",{style:{fontSize:16},children:B}),V&&e.jsx("span",{style:{fontSize:13},children:V})]})]}),!T&&e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:10,cursor:"pointer"},children:[e.jsx(Te,{on:b,onClick:()=>p(s.name,!k)}),B&&e.jsx("span",{style:{fontSize:16},children:B}),V&&e.jsx("span",{style:{fontSize:13},children:V})]}),I]})}return null},S=s=>s.map((k,M)=>Array.isArray(k)?e.jsx("div",{style:{display:"flex",gap:12,alignItems:"flex-start"},children:k.map($)},M):$(k));return e.jsxs("div",{className:"dhx",style:{padding:r.padding||0,width:r.width||"100%",...o},children:[S(r.rows||[]),(r.buttons||d)&&e.jsxs("div",{style:{display:"flex",gap:8,justifyContent:r.buttonAlign||"flex-start",marginTop:8},children:[e.jsx("button",{className:"dhx dhx-btn dhx-btn-primary",onClick:()=>w()&&(d==null?void 0:d(u)),children:r.submitText||"Submit"}),r.resetButton!==!1&&e.jsx("button",{className:"dhx dhx-btn dhx-btn-secondary",onClick:()=>{a(l),n({})},children:r.resetText||"Reset"})]})]})}function Te({on:r,onClick:l}){return e.jsxs("div",{style:{position:"relative",width:40,height:22,flexShrink:0},onClick:l,children:[e.jsx("div",{style:{width:40,height:22,borderRadius:11,background:r?t.primary:t.border,transition:"background 0.2s"}}),e.jsx("div",{style:{position:"absolute",top:3,left:r?21:3,width:16,height:16,borderRadius:"50%",background:"#fff",transition:"left 0.2s",boxShadow:"0 1px 3px rgba(0,0,0,.3)"}})]})}function Ee(r){const l=[];for(const d of r)"type"in d&&d.type==="block"?l.push(...d.items||[]):l.push(d);return l}function lt({items:r=[],onAction:l,style:d}){x.useEffect(O,[]);const[o,u]=x.useState(()=>{const n={};for(const c of Ee(r))c.id&&(n[c.id]=!!c.active);return n}),a=n=>{var c;if(n.id)if(n.group){const g=Ee(r).filter(p=>p.group===n.group&&p.id);u(p=>{const w={...p};for(const $ of g)w[$.id]=!1;return w[n.id]=!0,w})}else n.twoState&&u(g=>({...g,[n.id]:!g[n.id]}));(c=n.onClick)==null||c.call(n,n),n.id&&(l==null||l(n.id,n))},f=(n,c)=>{var w,$;if("type"in n&&(n.type==="separator"||n.type==="sep"))return e.jsx("div",{style:{width:1,background:t.border,margin:"8px 4px",alignSelf:"stretch"}},c);if("type"in n&&n.type==="input"){const S=n;return e.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"4px 6px",gap:4},children:[S.label&&e.jsx("span",{style:{fontSize:10,color:t.textMut},children:S.label}),e.jsx("input",{className:"dhx dhx-input",style:{width:S.width||110,height:26,fontSize:12},placeholder:S.placeholder,defaultValue:S.value,onChange:s=>{var k;return(k=S.onChange)==null?void 0:k.call(S,s.target.value)}})]},c)}if("type"in n&&n.type==="block"){const S=n;return e.jsxs("div",{style:{display:"flex",flexDirection:S.direction==="col"?"column":"row",alignItems:"center",gap:4,padding:"4px 8px",borderRight:`1px solid ${t.border}`,minHeight:64},children:[e.jsx("div",{style:{display:"flex",gap:2},children:(w=S.items)==null?void 0:w.map((s,k)=>f(s,k))}),S.label&&e.jsx("span",{style:{fontSize:10,color:t.textMut,marginTop:2},children:S.label})]},c)}if("type"in n&&n.type==="selectButton"){const S=n;return e.jsx("select",{className:"dhx dhx-input",style:{height:28,fontSize:12,cursor:"pointer",margin:2},defaultValue:S.value,onChange:s=>{var k;return(k=S.onChange)==null?void 0:k.call(S,s.target.value)},children:($=S.items)==null?void 0:$.map(s=>e.jsx("option",{value:s.value,children:s.value},s.value))},c)}const g=n,p=g.id!==void 0?o[g.id]??!!g.active:!!g.active;return e.jsxs("button",{title:g.tooltip,className:`dhx dhx-btn ${p?"dhx-btn-primary":"dhx-btn-ghost"}`,style:{flexDirection:"column",minHeight:48,padding:"4px 8px",gap:4,fontSize:12},disabled:g.disabled,onClick:()=>a(g),children:[g.icon&&e.jsx("span",{style:{fontSize:g.size==="large"?24:18},children:g.icon}),g.text&&e.jsx("span",{style:{fontSize:10,maxWidth:60,textAlign:"center",lineHeight:1.2,whiteSpace:"normal"},children:g.text})]},c)};return e.jsx("div",{className:"dhx",style:{display:"flex",alignItems:"stretch",background:t.bg,borderBottom:`1px solid ${t.border}`,padding:"4px 0",overflowX:"auto",gap:0,...d},children:r.map(f)})}function at({logo:r,items:l=[],vertical:d=!1,style:o}){const[u,a]=x.useState(null),f=x.useRef(null);x.useEffect(O,[]),Z(f,x.useCallback(()=>a(null),[]));const n=(c,g)=>{var p;return c.type==="separator"?e.jsx("div",{style:{[d?"height":"width"]:1,background:t.border,margin:d?"4px 8px":"0 6px",alignSelf:"stretch"}},g):c.type==="spacer"?e.jsx("div",{style:{flex:1}},g):c.type==="input"?e.jsx("input",{className:"dhx dhx-input",style:{width:c.width||200,height:28,margin:"0 4px"},placeholder:c.placeholder},g):c.type==="menuItem"&&((p=c.items)!=null&&p.length)?e.jsxs("div",{style:{position:"relative"},children:[e.jsxs("button",{className:"dhx dhx-btn dhx-btn-ghost",style:{height:36,color:t.text},onClick:()=>a(u===g?null:g),children:[c.icon&&e.jsx("span",{children:c.icon}),c.value," ",e.jsx("span",{style:{fontSize:9},children:"▼"})]}),u===g&&e.jsx(ne,{items:c.items,onSelect:()=>a(null),style:{top:"100%"}})]},g):e.jsxs("button",{className:"dhx dhx-btn dhx-btn-ghost",style:{height:36,gap:6,color:t.text},onClick:()=>{var w;return(w=c.onClick)==null?void 0:w.call(c)},children:[c.icon&&e.jsx("span",{style:{fontSize:16},children:c.icon}),c.value&&e.jsx("span",{style:{fontSize:13},children:c.value})]},g)};return e.jsxs("nav",{ref:f,className:"dhx",style:{display:"flex",flexDirection:d?"column":"row",alignItems:d?"stretch":"center",background:t.surface,borderBottom:d?"none":`1px solid ${t.border}`,borderRight:d?`1px solid ${t.border}`:"none",padding:d?"12px 0":"0 12px",minHeight:d?void 0:48,gap:2,...o},children:[r&&e.jsx("div",{style:{color:t.text,fontWeight:800,fontSize:16,padding:d?"8px 16px":"0 12px 0 4px",borderRight:d?"none":`1px solid ${t.border}`,marginRight:d?0:8},children:r}),l.map(n)]})}W.Button=Le,W.Calendar=Ke,W.Chart=Oe,W.Colorpicker=Xe,W.Combobox=pe,W.ContextMenu=qe,W.DataView=et,W.Form=st,W.Grid=Pe,W.Layout=we,W.List=Re,W.Menu=_e,W.MenuDropdown=ne,W.MessageContext=ue,W.MessageProvider=Qe,W.Navbar=at,W.Pagination=ot,W.Popup=Ge,W.Ribbon=lt,W.Sidebar=We,W.Slider=he,W.Tabbar=Be,W.Timepicker=me,W.Toolbar=Ie,W.Tree=nt,W.Window=Je,W.tokens=t,W.useClickOutside=Z,W.useDrag=Me,W.useMessage=Ze,Object.defineProperty(W,Symbol.toStringTag,{value:"Module"})});
|
|
41
|
+
`,document.head.appendChild(r)}const Ne={sm:{height:24,padding:"0 8px",fontSize:12},md:{},lg:{height:38,padding:"0 18px",fontSize:14}};function We({children:r,variant:l="primary",size:d="md",icon:c,disabled:g,onClick:a,style:f,className:s=""}){return u.useEffect(j,[]),e.jsxs("button",{className:`dhx dhx-btn dhx-btn-${l} ${s}`,style:{...Ne[d],...f},disabled:g,onClick:a,children:[c&&e.jsx("span",{style:{fontSize:16},children:c}),r]})}function U(r,l){u.useEffect(()=>{const d=c=>{r.current&&!r.current.contains(c.target)&&l(c)};return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[r,l])}function we(r){const l=u.useRef(!1),d=u.useRef({x:0,y:0,ox:0,oy:0});return u.useCallback((c,g=0,a=0)=>{l.current=!0,d.current={x:c.clientX,y:c.clientY,ox:g,oy:a};const f=x=>{if(!l.current)return;const{x:b,y:n,ox:S,oy:h}=d.current;r(S+x.clientX-b,h+x.clientY-n)},s=()=>{l.current=!1,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",s)};document.addEventListener("mousemove",f),document.addEventListener("mouseup",s),c.preventDefault()},[r])}function R({items:r,onSelect:l,style:d}){const[c,g]=u.useState(null);return e.jsx("div",{className:"dhx dhx-anim-fade",style:{position:"absolute",top:"calc(100% + 4px)",left:0,minWidth:180,background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.r,boxShadow:t.shadowLg,zIndex:200,padding:"4px 0",...d},children:r.map((a,f)=>{var x,b;if(a.type==="separator")return e.jsx("div",{style:{height:1,background:t.border,margin:"4px 0"}},f);const s=c===f;return e.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>g(f),onMouseLeave:()=>g(null),children:[e.jsxs("div",{onClick:()=>{var n;return!a.disabled&&!((n=a.items)!=null&&n.length)&&l(a)},style:{display:"flex",alignItems:"center",gap:8,padding:"8px 14px",cursor:a.disabled?"not-allowed":"pointer",fontSize:13,color:a.disabled?t.textMut:t.text,background:s&&!a.disabled?t.bg:"transparent",opacity:a.disabled?.5:1},children:[a.icon&&e.jsx("span",{style:{fontSize:15,width:18,textAlign:"center"},children:a.icon}),e.jsx("span",{style:{flex:1},children:a.value||a.id}),a.hotkey&&e.jsx("span",{style:{fontSize:11,color:t.textMut},children:a.hotkey}),(x=a.items)!=null&&x.length?e.jsx("span",{style:{fontSize:10,color:t.textMut},children:"▶"}):null]}),s&&((b=a.items)!=null&&b.length)?e.jsx(R,{items:a.items,onSelect:l,style:{position:"absolute",left:"100%",top:-4}}):null]},a.id||f)})})}function Ae({items:r=[],label:l="Menu",onSelect:d,style:c}){const[g,a]=u.useState(!1),f=u.useRef(null);return u.useEffect(j,[]),U(f,u.useCallback(()=>a(!1),[])),e.jsxs("div",{ref:f,className:"dhx",style:{position:"relative",display:"inline-block",...c},children:[e.jsxs("button",{className:"dhx dhx-btn dhx-btn-secondary",onClick:()=>a(s=>!s),children:[l," ",e.jsx("span",{style:{fontSize:10},children:g?"▲":"▼"})]}),g&&e.jsx(R,{items:r,onSelect:s=>{d==null||d(s),a(!1)}})]})}function Be({items:r=[],onSelect:l,children:d}){const[c,g]=u.useState(null),a=u.useRef(null);u.useEffect(j,[]),U(a,u.useCallback(()=>g(null),[]));const f=s=>{s.preventDefault(),g({x:s.clientX,y:s.clientY})};return e.jsxs("div",{ref:a,onContextMenu:f,style:{position:"relative",display:"contents"},children:[d,c&&e.jsx("div",{style:{position:"fixed",left:c.x,top:c.y,zIndex:9999},children:e.jsx(R,{items:r,onSelect:s=>{l==null||l(s),g(null)}})})]})}function Me({count:r}){return e.jsx("span",{style:{position:"absolute",top:2,right:2,minWidth:16,height:16,background:t.danger,color:"#fff",borderRadius:8,fontSize:10,fontWeight:700,display:"flex",alignItems:"center",justifyContent:"center",padding:"0 3px",lineHeight:1,pointerEvents:"none"},children:r})}function He({items:r=[],onAction:l,style:d}){const[c,g]=u.useState(null),[a,f]=u.useState(()=>{const n={};return r.forEach(S=>{S.id&&(S.twoState||S.group)&&S.active&&(n[S.id]=!0)}),n}),s=u.useRef(null);u.useEffect(j,[]),U(s,u.useCallback(()=>g(null),[]));const x=(n,S)=>{var h,y;if(!n.disabled){if(n.twoState&&n.id&&f(o=>({...o,[n.id]:!o[n.id]})),n.group&&n.id&&f(o=>{const v={...o};return r.forEach(z=>{z.group===n.group&&z.id&&(v[z.id]=!1)}),v[n.id]=!0,v}),(h=n.items)!=null&&h.length){g(o=>o===S?null:S);return}(y=n.onClick)==null||y.call(n,n.id||""),l==null||l(n.id||"")}},b=(n,S)=>{var v,z;if(n.hidden)return null;if(n.type==="separator")return e.jsx("div",{style:{width:1,background:t.border,margin:"6px 4px",alignSelf:"stretch"}},S);if(n.type==="spacer")return e.jsx("div",{style:{flex:1}},S);if(n.type==="input")return e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[n.label&&e.jsx("span",{style:{fontSize:12,color:t.textSec,fontWeight:500},children:n.label}),e.jsxs("div",{style:{position:"relative",display:"flex",alignItems:"center"},children:[n.icon&&e.jsx("span",{style:{position:"absolute",left:8,color:t.textMut,fontSize:15,pointerEvents:"none",zIndex:1},children:n.icon}),e.jsx("input",{className:"dhx dhx-input",style:{width:n.width||140,height:28,paddingLeft:n.icon?30:void 0},placeholder:n.placeholder,defaultValue:n.value,onChange:$=>{var D;return(D=n.onChange)==null?void 0:D.call(n,$.target.value)}})]})]},S);if(n.type==="select")return e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6},children:[n.label&&e.jsx("span",{style:{fontSize:12,color:t.textSec,fontWeight:500},children:n.label}),e.jsx("select",{className:"dhx dhx-input",style:{width:n.width||100,height:28,cursor:"pointer"},defaultValue:n.value,onChange:$=>{var D;return(D=n.onChange)==null?void 0:D.call(n,$.target.value)},children:(v=n.options)==null?void 0:v.map($=>e.jsx("option",{value:$.value,children:$.label},$.value))})]},S);if(n.type==="imageButton")return e.jsxs("button",{title:n.tooltip,disabled:n.disabled,style:{position:"relative",width:32,height:32,padding:2,border:"none",borderRadius:"50%",overflow:"hidden",cursor:n.disabled?"not-allowed":"pointer",background:"transparent",flexShrink:0},onClick:()=>x(n,S),children:[n.src&&e.jsx("img",{src:n.src,alt:n.value||"",style:{width:"100%",height:"100%",objectFit:"cover",borderRadius:"50%"}}),n.count!==void 0&&e.jsx(Me,{count:n.count})]},S);const h=!!(n.id&&a[n.id]),y=n.value??n.text,o=!!((z=n.items)!=null&&z.length);return e.jsxs("div",{style:{position:"relative"},children:[e.jsxs("button",{className:"dhx dhx-btn dhx-btn-ghost",title:n.tooltip,disabled:n.disabled,style:{height:32,gap:4,position:"relative",background:h?t.primaryLt:"transparent",color:h?t.primary:n.disabled?t.textMut:t.text,opacity:n.disabled?.55:1,cursor:n.disabled?"not-allowed":"pointer"},onClick:()=>x(n,S),children:[n.icon&&e.jsx("span",{style:{fontSize:16},children:n.icon}),y&&e.jsx("span",{style:{fontSize:13},children:y}),o&&e.jsx("span",{style:{fontSize:9,opacity:.55,marginLeft:2},children:"▼"}),n.count!==void 0&&e.jsx(Me,{count:n.count})]}),o&&c===S&&e.jsx(R,{items:n.items,onSelect:()=>g(null),style:{top:"100%",left:0}})]},S)};return e.jsx("div",{ref:s,className:"dhx",style:{display:"flex",alignItems:"center",gap:2,padding:"4px 8px",background:t.surface,borderBottom:`1px solid ${t.border}`,minHeight:44,flexWrap:"wrap",...d},children:r.map(b)})}function Pe({items:r=[],width:l=240,collapsed:d,onSelect:c,header:g,footer:a,style:f}){const[s,x]=u.useState(d??!1),[b,n]=u.useState(null),[S,h]=u.useState({});u.useEffect(j,[]);const y=s?56:l,o=z=>{n(z.id),c==null||c(z)},v=(z,$=0)=>{var k;if(z.type==="separator")return e.jsx("div",{style:{height:1,background:t.border,margin:"6px 8px"}},z.id);if(z.type==="customHTML")return e.jsx("div",{style:{padding:"8px 12px"},dangerouslySetInnerHTML:{__html:z.html||""}},z.id);const D=(((k=z.items)==null?void 0:k.length)??0)>0,T=S[z.id],p=b===z.id;return e.jsxs("div",{children:[e.jsxs("div",{onClick:()=>{D&&h(N=>({...N,[z.id]:!N[z.id]})),o(z)},style:{display:"flex",alignItems:"center",gap:10,padding:`8px ${s?"0px":`${12+$*16}px`}`,cursor:"pointer",borderRadius:t.r,margin:"1px 6px",justifyContent:s?"center":"flex-start",transition:"all .15s",background:p?t.primaryLt:"transparent",color:p?t.primary:t.text,userSelect:"none"},onMouseEnter:N=>!p&&(N.currentTarget.style.background=t.bg),onMouseLeave:N=>!p&&(N.currentTarget.style.background="transparent"),children:[z.icon&&e.jsx("span",{style:{fontSize:18,minWidth:22,textAlign:"center"},children:z.icon}),!s&&e.jsx("span",{style:{flex:1,fontSize:13,fontWeight:p?600:400},children:z.value}),!s&&z.count!==void 0&&e.jsx("span",{style:{background:t.primary,color:"#fff",borderRadius:10,padding:"1px 6px",fontSize:11,fontWeight:700},children:z.count}),!s&&D&&e.jsx("span",{style:{fontSize:12,color:t.textMut,transition:"transform .15s",transform:T?"rotate(90deg)":"rotate(0deg)"},children:"▶"})]}),D&&T&&!s&&z.items.map(N=>v(N,$+1))]},z.id)};return e.jsxs("div",{className:"dhx",style:{width:y,minWidth:y,background:t.surface,borderRight:`1px solid ${t.border}`,display:"flex",flexDirection:"column",transition:"width .2s ease",overflow:"hidden",...f},children:[g&&!s&&e.jsx("div",{style:{padding:"12px 14px",borderBottom:`1px solid ${t.border}`,fontWeight:700,fontSize:15},children:g}),e.jsx("button",{onClick:()=>x(z=>!z),style:{margin:"8px 6px",background:"transparent",border:"none",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:s?"center":"flex-end",padding:"4px 6px",borderRadius:t.r,color:t.textSec},children:e.jsx("span",{style:{fontSize:18},children:s?"☰":"✕"})}),e.jsx("div",{className:"dhx-scroll",style:{flex:1,overflowY:"auto",overflowX:"hidden"},children:r.map(z=>v(z))}),a&&!s&&e.jsx("div",{style:{padding:"10px 14px",borderTop:`1px solid ${t.border}`},children:a})]})}function je({config:r}){const[l,d]=u.useState(!1),c={position:"relative",background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.r,overflow:"hidden",...r.width?{width:r.width,minWidth:r.width}:{flex:1},...r.height?{height:r.height,minHeight:r.height}:{minHeight:40},...l?{flex:"0 0 auto"}:{}};return e.jsxs("div",{style:c,children:[r.header&&e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 12px",background:t.bg,borderBottom:`1px solid ${t.border}`,fontSize:12,fontWeight:600,color:t.textSec,userSelect:"none"},children:[e.jsx("span",{children:r.header}),r.collapsable&&e.jsx("button",{onClick:()=>d(g=>!g),style:{background:"none",border:"none",cursor:"pointer",color:t.textMut,fontSize:16,lineHeight:1},children:l?"▼":"▲"})]}),!l&&e.jsxs("div",{style:{padding:r.padding||0,height:r.header?"calc(100% - 33px)":"100%",overflow:"auto"},children:[r.html?e.jsx("div",{dangerouslySetInnerHTML:{__html:r.html}}):r.content,(r.rows||r.cols)&&e.jsx(ze,{rows:r.rows,cols:r.cols,style:{height:"100%"}})]})]})}function ze({rows:r,cols:l,type:d="line",style:c,children:g}){u.useEffect(j,[]);const a=d==="space"?12:d==="wide"?8:1,f=r||l,s=!!r;return f?e.jsx("div",{className:"dhx",style:{display:"flex",flexDirection:s?"column":"row",gap:a,width:"100%",height:"100%",...c},children:f.map((x,b)=>e.jsx(je,{config:x},x.id||b))}):e.jsx("div",{className:"dhx",style:{width:"100%",height:"100%",...c},children:g})}function Oe({views:r=[],mode:l="top",tabAlign:d="left",closable:c=[],disabled:g=[],defaultActive:a,onBeforeChange:f,onChange:s,style:x}){var p;const[b,n]=u.useState(a||((p=r[0])==null?void 0:p.id)),[S,h]=u.useState(r.map(k=>k.id));u.useEffect(j,[]);const y=(k,N)=>{k.stopPropagation(),h(i=>i.filter(C=>C!==N)),b===N&&n(S.find(i=>i!==N)??"")},o=k=>{g.includes(k)||f&&f(k)===!1||(n(k),s==null||s(k))},v=l==="left"||l==="right",z=r.filter(k=>S.includes(k.id)),$=e.jsx("div",{style:{display:"flex",flexDirection:v?"column":"row",justifyContent:d==="center"?"center":d==="right"?"flex-end":"flex-start",background:t.surface,borderBottom:!v&&l!=="bottom"?`2px solid ${t.border}`:"none",borderTop:l==="bottom"?`2px solid ${t.border}`:"none",borderRight:l==="left"?`2px solid ${t.border}`:"none",borderLeft:l==="right"?`2px solid ${t.border}`:"none",overflowX:"auto",flexShrink:0},children:z.map(k=>{const N=b===k.id,i=g.includes(k.id),C=l==="bottom"?{borderTop:`2px solid ${t.primary}`,color:t.primary,fontWeight:600}:v?{color:t.primary,fontWeight:600,background:t.primaryLt,[l==="left"?"borderRight":"borderLeft"]:`2px solid ${t.primary}`}:{borderBottom:`2px solid ${t.primary}`,color:t.primary,fontWeight:600};return e.jsxs("div",{onClick:()=>o(k.id),style:{display:"flex",alignItems:"center",gap:6,padding:"10px 16px",cursor:i?"not-allowed":"pointer",whiteSpace:"nowrap",fontSize:13,transition:"color .15s",userSelect:"none",minWidth:v?120:"auto",...N?C:{color:i?t.textMut:t.textSec}},children:[k.icon&&e.jsx("span",{style:{fontSize:16},children:k.icon}),e.jsx("span",{children:k.tab}),c.includes(k.id)&&e.jsx("span",{onClick:w=>y(w,k.id),style:{marginLeft:4,opacity:.6,fontSize:12,cursor:"pointer"},children:"✕"})]},k.id)})}),D=z.find(k=>k.id===b),T=e.jsxs("div",{className:"dhx-scroll",style:{flex:1,overflow:"auto"},children:[D==null?void 0:D.content,(D==null?void 0:D.html)&&e.jsx("div",{dangerouslySetInnerHTML:{__html:D.html},style:{padding:16}})]});return e.jsxs("div",{className:"dhx",style:{display:"flex",flexDirection:l==="top"?"column":l==="bottom"?"column-reverse":l==="left"?"row":"row-reverse",width:"100%",height:"100%",background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.r,overflow:"hidden",...x},children:[$,T]})}const Q=`1px solid ${t.border}`;function Ye({active:r,dir:l}){return e.jsxs("span",{style:{display:"inline-flex",flexDirection:"column",gap:1,flexShrink:0,marginLeft:4},children:[e.jsx("svg",{width:"7",height:"4",viewBox:"0 0 7 4",children:e.jsx("path",{d:"M3.5 0L7 4H0z",fill:r&&l==="asc"?t.primary:t.borderDk})}),e.jsx("svg",{width:"7",height:"4",viewBox:"0 0 7 4",children:e.jsx("path",{d:"M3.5 4L0 0H7z",fill:r&&l==="desc"?t.primary:t.borderDk})})]})}function Fe({columns:r,data:l=[],height:d=400,rowHeight:c=40,sortable:g=!0,resizable:a=!0,editable:f=!1,stripe:s=!1,autoWidth:x=!1,keyNavigation:b=!1,selection:n,multiselect:S,onSelect:h,onChange:y,style:o}){const[v,z]=u.useState(null),[$,D]=u.useState("asc"),[T,p]=u.useState({}),[k,N]=u.useState(new Set),[i,C]=u.useState(-1),[w,B]=u.useState(()=>r.map(M=>M.width??M.minWidth??150)),[V,J]=u.useState(null),[Z,le]=u.useState(""),[oe,ae]=u.useState({}),E=u.useRef(null),[P,F]=u.useState(0);u.useEffect(j,[]),u.useEffect(()=>{if(!x||!E.current)return;const M=new ResizeObserver(()=>{var m;return F(((m=E.current)==null?void 0:m.offsetWidth)??0)});return M.observe(E.current),()=>M.disconnect()},[x]);const X=u.useMemo(()=>{if(!x||P===0)return w;const M=w.reduce((L,I)=>L+I,0);if(P<=M)return w;const m=(P-M)/r.length;return w.map(L=>L+m)},[x,P,w,r.length]),K=u.useMemo(()=>{let M=l.map((m,L)=>{const I=String(m.id??L);return oe[I]?{...m,...oe[I]}:m}).filter(m=>Object.entries(T).every(([L,I])=>!I||String(m[L]??"").toLowerCase().includes(I.toLowerCase())));return v&&(M=[...M].sort((m,L)=>{const I=m[v],O=L[v];if(I==null)return 1;if(O==null)return-1;const H=I<O?-1:I>O?1:0;return $==="asc"?H:-H})),M},[l,v,$,T,oe]),G=u.useMemo(()=>{const M={};return r.forEach(m=>{var L;if((L=m.footer)!=null&&L.some(I=>I.summary)){const I=K.map(H=>Number(H[m.id])).filter(H=>!isNaN(H)),O=I.reduce((H,te)=>H+te,0);M[m.id]={sum:O,avg:I.length?O/I.length:0,count:K.length,min:I.length?Math.min(...I):0,max:I.length?Math.max(...I):0}}}),M},[K,r]),q=u.useMemo(()=>{const M={};return r.filter(m=>m.filterType==="select").forEach(m=>{M[m.id]=[...new Set(l.map(L=>String(L[m.id]??"")))].sort()}),M},[l,r]),ie=r.some(M=>M.filterable),de=r.some(M=>{var m;return(m=M.footer)==null?void 0:m.length}),be=X.reduce((M,m)=>M+m,0),se=(M,m)=>M.id??m,ce=M=>{!g||M.sortable===!1||(D(m=>v===M.id&&m==="asc"?"desc":"asc"),z(M.id))},A=(M,m)=>{if(!n)return;const L=se(M,m);C(m),N(I=>{const O=S?new Set(I):new Set;return O.has(L)?O.delete(L):O.add(L),O}),h==null||h(M)},ee=()=>{if(!V)return;const{key:M,colId:m}=V;ae(I=>({...I,[String(M)]:{...I[String(M)]||{},[m]:Z}}));const L=K.find((I,O)=>se(I,O)===M);L&&(y==null||y(L,m,Z)),J(null)},ct=M=>{if(V&&M.key==="Escape"){J(null);return}if(!(!b||!n)){if(M.key==="ArrowDown"){M.preventDefault();const m=Math.min(i+1,K.length-1);m>=0&&A(K[m],m)}else if(M.key==="ArrowUp"){M.preventDefault();const m=Math.max(i-1,0);m>=0&&A(K[m],m)}}},pt=(M,m)=>{M.preventDefault(),M.stopPropagation();const L=M.clientX,I=w[m],O=te=>B(Se=>{const re=[...Se];return re[m]=Math.max(r[m].minWidth||50,I+te.clientX-L),re}),H=()=>{document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",H)};document.addEventListener("mousemove",O),document.addEventListener("mouseup",H)},ve=(M,m,L,I)=>({width:M,minWidth:M,flexShrink:0,boxSizing:"border-box",padding:"0 12px",height:I,display:"flex",alignItems:"center",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",fontSize:13,textAlign:m.align,justifyContent:m.align==="center"?"center":m.align==="right"?"flex-end":"flex-start",borderLeft:L?"none":Q});return e.jsx("div",{ref:E,className:"dhx",tabIndex:b?0:void 0,onKeyDown:ct,style:{width:"100%",height:d,display:"flex",flexDirection:"column",border:Q,borderRadius:t.r,overflow:"hidden",outline:"none",...o},children:e.jsx("div",{style:{overflowX:"auto",flex:1,display:"flex",flexDirection:"column",minHeight:0},children:e.jsxs("div",{style:{minWidth:be,display:"flex",flexDirection:"column",height:"100%"},children:[e.jsx("div",{style:{display:"flex",background:t.bg,borderBottom:Q,flexShrink:0,position:"sticky",top:0,zIndex:2},children:r.map((M,m)=>{var L;return e.jsxs("div",{onClick:()=>ce(M),style:{...ve(X[m],M,m===0,40),position:"relative",fontWeight:500,color:t.text,cursor:g&&M.sortable!==!1?"pointer":"default",userSelect:"none"},children:[e.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:Array.isArray(M.header)?(L=M.header[0])==null?void 0:L.text:M.header||M.id}),g&&M.sortable!==!1&&e.jsx(Ye,{active:v===M.id,dir:$}),a&&M.resizable!==!1&&m<r.length-1&&e.jsx("div",{onMouseDown:I=>pt(I,m),onClick:I=>I.stopPropagation(),style:{position:"absolute",right:0,top:0,bottom:0,width:4,cursor:"col-resize",zIndex:1},onMouseEnter:I=>I.currentTarget.style.background=t.primary+"55",onMouseLeave:I=>I.currentTarget.style.background="transparent"})]},M.id)})}),ie&&e.jsx("div",{style:{display:"flex",borderBottom:Q,background:t.surface,flexShrink:0},children:r.map((M,m)=>e.jsx("div",{style:{width:X[m],minWidth:X[m],flexShrink:0,padding:"4px 6px",boxSizing:"border-box",borderLeft:m===0?"none":Q},children:M.filterable&&M.filterType==="select"?e.jsxs("select",{className:"dhx dhx-input",style:{height:26,fontSize:12,padding:"0 4px"},value:T[M.id]||"",onChange:L=>p(I=>({...I,[M.id]:L.target.value})),children:[e.jsx("option",{value:"",children:"All"}),(q[M.id]||[]).map(L=>e.jsx("option",{value:L,children:L},L))]}):M.filterable?e.jsx("input",{className:"dhx dhx-input",style:{height:26,fontSize:12},placeholder:"Filter...",value:T[M.id]||"",onChange:L=>p(I=>({...I,[M.id]:L.target.value}))}):null},M.id))}),e.jsxs("div",{className:"dhx-scroll",style:{flex:1,overflowY:"auto",minHeight:0},children:[K.map((M,m)=>{const L=se(M,m),I=k.has(L),O=I?t.primaryLt:s&&m%2!==0?t.bg:t.surface;return e.jsx("div",{style:{display:"flex",height:c,borderBottom:Q,flexShrink:0,background:O,transition:"background .1s",cursor:n?"pointer":"default"},onMouseEnter:H=>!I&&(H.currentTarget.style.background=t.primaryLt+"80"),onMouseLeave:H=>!I&&(H.currentTarget.style.background=O),children:r.map((H,te)=>{const Se=(V==null?void 0:V.key)===L&&(V==null?void 0:V.colId)===H.id,re=M[H.id],ht=H.template?H.template(re,M):String(re??"");return e.jsx("div",{onClick:()=>{A(M,m),f&&H.editable!==!1&&(J({key:L,colId:H.id}),le(String(re??"")))},style:ve(X[te],H,te===0,c),children:Se?e.jsx("input",{autoFocus:!0,value:Z,onChange:ne=>le(ne.target.value),onBlur:ee,onKeyDown:ne=>{ne.key==="Enter"&&ee(),ne.key==="Escape"&&J(null)},onClick:ne=>ne.stopPropagation(),style:{width:"100%",border:"none",outline:`2px solid ${t.primary}`,borderRadius:2,fontSize:13,padding:"2px 4px",background:t.surface,color:t.text}}):ht},H.id)})},String(L))}),K.length===0&&e.jsx("div",{style:{textAlign:"center",padding:40,color:t.textMut,fontSize:13},children:"No data"})]}),de&&e.jsx("div",{style:{display:"flex",borderTop:Q,background:t.bg,flexShrink:0},children:r.map((M,m)=>{var H;const L=(H=M.footer)==null?void 0:H[0],I=G[M.id]??{sum:0,avg:0,count:0,min:0,max:0};let O="";return L&&(typeof L.text=="function"?O=L.text(I):L.text?O=L.text:L.summary&&(O=String(Math.round(I[L.summary]*100)/100))),e.jsx("div",{style:{...ve(X[m],M,m===0,40),fontWeight:600,color:t.text},children:O},M.id)})})]})})})}const _=["#0288d1","#43a047","#f57c00","#e53935","#8e24aa","#00838f","#ef6c00","#2e7d32"];function Ke({type:r="bar",data:l=[],series:d=[],scales:c={},legend:g,height:a=280,style:f}){var v,z,$,D,T;u.useEffect(j,[]);const s=((v=c.bottom)==null?void 0:v.text)||l[0]&&Object.keys(l[0])[0]||"x",x=e.jsx(Y.Tooltip,{contentStyle:{fontSize:12,borderRadius:t.r,border:`1px solid ${t.border}`}}),b=g?e.jsx(Y.Legend,{iconSize:10,wrapperStyle:{fontSize:12},verticalAlign:g.valign,align:g.halign}):null,n=e.jsx(Y.CartesianGrid,{strokeDasharray:"3 3",stroke:t.border}),S=e.jsx(Y.XAxis,{dataKey:s,tick:{fontSize:11,fill:t.textSec},axisLine:{stroke:t.border},tickLine:!1}),h=e.jsx(Y.YAxis,{tick:{fontSize:11,fill:t.textSec},axisLine:!1,tickLine:!1,domain:[((z=c.left)==null?void 0:z.min)??"auto",(($=c.left)==null?void 0:$.max)??"auto"]}),y={data:l,margin:{top:10,right:20,left:0,bottom:0}};let o;if(r==="bar")o=e.jsxs(Y.BarChart,{...y,children:[n,S,h,x,b,d.map((p,k)=>e.jsx(Y.Bar,{dataKey:p.value||p.id,name:p.label||p.id,fill:p.fill||_[k%_.length],radius:[3,3,0,0]},p.id))]});else if(r==="line")o=e.jsxs(Y.LineChart,{...y,children:[n,S,h,x,b,d.map((p,k)=>e.jsx(Y.Line,{type:"monotone",dataKey:p.value||p.id,name:p.label||p.id,stroke:p.color||_[k%_.length],strokeWidth:2,dot:{r:3,fill:p.color||_[k%_.length]}},p.id))]});else if(r==="area")o=e.jsxs(Y.AreaChart,{...y,children:[n,S,h,x,b,d.map((p,k)=>e.jsx(Y.Area,{type:"monotone",dataKey:p.value||p.id,name:p.label||p.id,stroke:p.color||_[k%_.length],fill:(p.fill||_[k%_.length])+"33",strokeWidth:2},p.id))]});else if(r==="pie"||r==="donut"){const p=l[0]||{},k=Object.keys(p).find(i=>typeof p[i]=="number")||"value",N=Object.keys(p).find(i=>typeof p[i]=="string")||"x";o=e.jsxs(Y.PieChart,{children:[e.jsx(Y.Pie,{data:l,cx:"50%",cy:"50%",outerRadius:r==="donut"?"70%":"80%",innerRadius:r==="donut"?"40%":0,dataKey:k,nameKey:N,label:({name:i,percent:C})=>`${i??""} ${((C??0)*100).toFixed(0)}%`,labelLine:!0,paddingAngle:2,children:l.map((i,C)=>e.jsx(Y.Cell,{fill:_[C%_.length]},C))}),x,b]})}else r==="radar"?o=e.jsxs(Y.RadarChart,{...y,cx:"50%",cy:"50%",children:[e.jsx(Y.PolarGrid,{}),e.jsx(Y.PolarAngleAxis,{dataKey:s,tick:{fontSize:11}}),d.map((p,k)=>e.jsx(Y.Radar,{dataKey:p.value||p.id,name:p.label||p.id,stroke:p.color||_[k],fill:(p.fill||_[k])+"44"},p.id)),x,b]}):r==="scatter"&&(o=e.jsxs(Y.ScatterChart,{...y,children:[n,e.jsx(Y.XAxis,{dataKey:((D=d[0])==null?void 0:D.xValue)||"x",type:"number",tick:{fontSize:11,fill:t.textSec}}),e.jsx(Y.YAxis,{dataKey:((T=d[0])==null?void 0:T.yValue)||"y",tick:{fontSize:11,fill:t.textSec}}),x,d.map((p,k)=>e.jsx(Y.Scatter,{data:p.data||l,name:p.label||p.id,fill:p.color||_[k]},p.id))]}));return e.jsx("div",{className:"dhx",style:{width:"100%",height:a,padding:12,background:t.surface,borderRadius:t.rMd,...f},children:e.jsx(Y.ResponsiveContainer,{width:"100%",height:"100%",children:o})})}const Ve=["January","February","March","April","May","June","July","August","September","October","November","December"],Xe=["Su","Mo","Tu","We","Th","Fr","Sa"];function _e({value:r,range:l=!1,timepicker:d=!1,onChange:c,style:g}){const a=new Date,f=r?new Date(Array.isArray(r)?r[0]:r):a,[s,x]=u.useState(f),[b,n]=u.useState(r??(l?[null,null]:null)),[S,h]=u.useState(null),[y,o]=u.useState({h:0,m:0});u.useEffect(j,[]);const v=s.getFullYear(),z=s.getMonth(),$=new Date(v,z,1).getDay(),D=new Date(v,z+1,0).getDate(),T=[];for(let i=0;i<$;i++)T.push(null);for(let i=1;i<=D;i++)T.push(new Date(v,z,i));const p=i=>i.toDateString()===a.toDateString(),k=i=>{if(!b)return!1;if(l&&Array.isArray(b)){const[C,w]=b;if(!C)return!1;const B=i.getTime();return w?B>=C.getTime()&&B<=w.getTime():i.toDateString()===C.toDateString()}return i.toDateString()===b.toDateString()},N=i=>{if(l){const[C,w]=Array.isArray(b)?b:[null,null];if(!C||w)n([i,null]);else{const B=i<C?[i,C]:[C,i];n(B),c==null||c(B)}}else n(i),c==null||c(i)};return e.jsxs("div",{className:"dhx",style:{background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.rMd,padding:16,display:"inline-block",boxShadow:t.shadow,...g},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:12},children:[e.jsx("button",{onClick:()=>x(i=>new Date(i.getFullYear(),i.getMonth()-1,1)),className:"dhx dhx-btn dhx-btn-ghost",style:{height:28,padding:"0 8px",fontSize:16},children:"‹"}),e.jsxs("div",{style:{fontWeight:700,fontSize:14},children:[Ve[z]," ",v]}),e.jsx("button",{onClick:()=>x(i=>new Date(i.getFullYear(),i.getMonth()+1,1)),className:"dhx dhx-btn dhx-btn-ghost",style:{height:28,padding:"0 8px",fontSize:16},children:"›"})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, 32px)",gap:2},children:[Xe.map(i=>e.jsx("div",{style:{textAlign:"center",fontSize:11,fontWeight:600,color:t.textMut,paddingBottom:4},children:i},i)),T.map((i,C)=>{const w=i?k(i):!1,B=i&&S&&i.toDateString()===S.toDateString();return e.jsx("div",{onClick:()=>i&&N(i),onMouseEnter:()=>i&&h(i),onMouseLeave:()=>h(null),style:{width:32,height:32,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:t.r,cursor:i?"pointer":"default",fontSize:12,fontWeight:i&&p(i)?700:400,background:w?t.primary:B?t.bg:"transparent",color:w?"#fff":i&&p(i)?t.primary:i?t.text:"transparent",border:i&&p(i)&&!w?`1px solid ${t.primary}`:"1px solid transparent",transition:"all .1s"},children:i==null?void 0:i.getDate()},C)})]}),d&&e.jsxs("div",{style:{borderTop:`1px solid ${t.border}`,marginTop:12,paddingTop:12,display:"flex",alignItems:"center",justifyContent:"center",gap:8},children:[e.jsx("input",{type:"number",min:0,max:23,value:y.h,onChange:i=>o(C=>({...C,h:+i.target.value})),className:"dhx dhx-input",style:{width:50,textAlign:"center"}}),e.jsx("span",{style:{fontWeight:700,color:t.textSec},children:":"}),e.jsx("input",{type:"number",min:0,max:59,value:y.m,onChange:i=>o(C=>({...C,m:+i.target.value})),className:"dhx dhx-input",style:{width:50,textAlign:"center"}})]})]})}function me({value:r,onChange:l,timeFormat:d=12,controls:c=!1,minuteStep:g=5,style:a}){const[f,s]=u.useState((r==null?void 0:r.h)??(d===24?0:12)),[x,b]=u.useState((r==null?void 0:r.m)??0),[n,S]=u.useState((r==null?void 0:r.ampm)??"AM"),[h,y]=u.useState(null);u.useEffect(j,[]);const o=d===24?Array.from({length:24},(p,k)=>k):Array.from({length:12},(p,k)=>k+1),v=Array.from({length:Math.ceil(60/g)},(p,k)=>k*g),z=(p,k,N)=>{const i=d===24?{h:p,m:k}:{h:p,m:k,ampm:N};c?y(i):l==null||l(i)},$=()=>{y(null),s((r==null?void 0:r.h)??(d===24?0:12)),b((r==null?void 0:r.m)??0),S((r==null?void 0:r.ampm)??"AM")},D={display:"flex",flexDirection:"column",alignItems:"center",gap:4},T=p=>({height:32,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:13,fontWeight:p?700:400,background:p?t.primaryLt:"transparent",color:p?t.primary:t.text});return e.jsxs("div",{className:"dhx",style:{background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.rMd,padding:16,display:"inline-block",boxShadow:t.shadow,...a},children:[e.jsxs("div",{style:{display:"flex",gap:8,alignItems:"stretch"},children:[e.jsxs("div",{style:D,children:[e.jsx("span",{style:{fontSize:11,fontWeight:600,color:t.textMut},children:"Hours"}),e.jsx("div",{className:"dhx-scroll",style:{height:160,overflowY:"auto",width:48,border:`1px solid ${t.border}`,borderRadius:t.r},children:o.map(p=>e.jsx("div",{onClick:()=>{s(p),z(p,x,n)},style:T(f===p),onMouseEnter:k=>f!==p&&(k.currentTarget.style.background=t.bg),onMouseLeave:k=>f!==p&&(k.currentTarget.style.background="transparent"),children:String(p).padStart(2,"0")},p))})]}),e.jsxs("div",{style:D,children:[e.jsx("span",{style:{fontSize:11,fontWeight:600,color:t.textMut},children:"Minutes"}),e.jsx("div",{className:"dhx-scroll",style:{height:160,overflowY:"auto",width:48,border:`1px solid ${t.border}`,borderRadius:t.r},children:v.map(p=>e.jsx("div",{onClick:()=>{b(p),z(f,p,n)},style:T(x===p),onMouseEnter:k=>x!==p&&(k.currentTarget.style.background=t.bg),onMouseLeave:k=>x!==p&&(k.currentTarget.style.background="transparent"),children:String(p).padStart(2,"0")},p))})]}),d===12&&e.jsxs("div",{style:D,children:[e.jsx("span",{style:{fontSize:11,fontWeight:600,color:t.textMut},children:"AM/PM"}),e.jsx("div",{style:{display:"flex",flexDirection:"column",border:`1px solid ${t.border}`,borderRadius:t.r,overflow:"hidden"},children:["AM","PM"].map(p=>e.jsx("div",{onClick:()=>{S(p),z(f,x,p)},style:{height:40,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:"0 12px",fontSize:13,fontWeight:n===p?700:400,background:n===p?t.primary:t.surface,color:n===p?"#fff":t.text},children:p},p))})]})]}),e.jsxs("div",{style:{textAlign:"center",marginTop:12,fontSize:22,fontWeight:700,color:t.primary,letterSpacing:2},children:[String(f).padStart(2,"0"),":",String(x).padStart(2,"0"),d===12?` ${n}`:""]}),c&&e.jsxs("div",{style:{display:"flex",gap:8,justifyContent:"flex-end",marginTop:12},children:[e.jsx("button",{className:"dhx dhx-btn dhx-btn-secondary",onClick:$,children:"Cancel"}),e.jsx("button",{className:"dhx dhx-btn dhx-btn-primary",onClick:()=>h&&(l==null?void 0:l(h)),children:"Apply"})]})]})}const qe=({open:r})=>e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",style:{flexShrink:0,transition:"transform .15s",transform:r?"rotate(180deg)":"rotate(0deg)"},children:e.jsx("path",{d:"M2 4l4 4 4-4",stroke:t.textMut,strokeWidth:"1.5",fill:"none",strokeLinecap:"round",strokeLinejoin:"round"})});function pe({data:r=[],value:l,placeholder:d="Select or type...",multiselection:c=!1,label:g,onChange:a,style:f}){var N;const[s,x]=u.useState(!1),[b,n]=u.useState(""),[S,h]=u.useState(c?l?[].concat(l):[]:l||null),y=u.useRef(null),o=u.useRef(null);u.useEffect(j,[]),U(y,u.useCallback(()=>{x(!1),n("")},[]));const v=u.useMemo(()=>r.filter(i=>!b||i.value.toLowerCase().includes(b.toLowerCase())),[r,b]),z=i=>c?(S||[]).includes(i):S===i,$=i=>{const C=i.id||i.value;if(c){const w=z(C)?S.filter(B=>B!==C):[...S||[],C];h(w),a==null||a(w)}else h(C),n(""),x(!1),a==null||a(C)},D=i=>{const C=S.filter(w=>w!==i);h(C),a==null||a(C)},T=()=>{x(!0),setTimeout(()=>{var i;return(i=o.current)==null?void 0:i.focus()},0)},p=((N=r.find(i=>(i.id||i.value)===S))==null?void 0:N.value)||"",k=c?S||[]:[];return e.jsxs("div",{ref:y,className:"dhx",style:{position:"relative",...f},children:[g&&e.jsx("label",{className:"dhx dhx-label",children:g}),e.jsxs("div",{onClick:T,style:{display:"flex",alignItems:"center",flexWrap:c?"wrap":"nowrap",border:`1px solid ${s?t.primary:t.border}`,borderRadius:t.r,minHeight:34,padding:"4px 8px",cursor:"text",background:t.surface,gap:4,transition:"border-color .15s",boxShadow:s?`0 0 0 3px ${t.primary}22`:"none"},children:[c&&e.jsxs(e.Fragment,{children:[k.map(i=>{var C;return e.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4,background:t.primary,color:"#fff",borderRadius:12,padding:"2px 10px 2px 8px",fontSize:12,lineHeight:1.5,whiteSpace:"nowrap"},children:[((C=r.find(w=>(w.id||w.value)===i))==null?void 0:C.value)||i,e.jsx("span",{onClick:w=>{w.stopPropagation(),D(i)},style:{cursor:"pointer",fontSize:15,lineHeight:1,opacity:.75,marginLeft:2},children:"×"})]},i)}),e.jsx("input",{ref:o,value:b,onChange:i=>{n(i.target.value),x(!0)},onFocus:()=>x(!0),onClick:i=>i.stopPropagation(),placeholder:k.length?"":d,style:{flex:1,minWidth:60,border:"none",outline:"none",fontSize:13,background:"transparent",color:t.text,padding:0}})]}),!c&&e.jsx("input",{ref:o,value:s?b:p,onChange:i=>{n(i.target.value),x(!0)},onFocus:()=>{x(!0),n("")},onClick:i=>i.stopPropagation(),placeholder:d,style:{flex:1,border:"none",outline:"none",fontSize:13,background:"transparent",color:t.text,padding:0}}),e.jsx(qe,{open:s})]}),s&&e.jsx("div",{className:"dhx dhx-anim-fade",style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.r,boxShadow:t.shadowLg,zIndex:100},children:e.jsxs("div",{className:"dhx-scroll",style:{maxHeight:220,overflowY:"auto"},children:[v.map(i=>{const C=i.id||i.value,w=z(C);return e.jsxs("div",{onClick:()=>$(i),style:{padding:"8px 12px",cursor:"pointer",display:"flex",alignItems:"center",gap:8,fontSize:13,background:w?t.primaryLt:"transparent",color:w?t.primary:t.text},onMouseEnter:B=>!w&&(B.currentTarget.style.background=t.bg),onMouseLeave:B=>!w&&(B.currentTarget.style.background="transparent"),children:[c&&e.jsx("span",{style:{width:14,height:14,flexShrink:0,border:`2px solid ${w?t.primary:t.borderDk}`,borderRadius:3,display:"flex",alignItems:"center",justifyContent:"center",background:w?t.primary:"transparent"},children:w&&e.jsx("span",{style:{color:"#fff",fontSize:9,lineHeight:1},children:"✓"})}),e.jsx("span",{style:{flex:1},children:i.value}),!c&&w&&e.jsx("span",{style:{color:t.primary,fontSize:12,fontWeight:700},children:"✓"}),i.count!==void 0&&e.jsxs("span",{style:{fontSize:11,color:t.textMut},children:["(",i.count,")"]})]},C)}),v.length===0&&e.jsx("div",{style:{padding:16,textAlign:"center",color:t.textMut,fontSize:13},children:"No matches"})]})})]})}function he({min:r=0,max:l=100,step:d=1,value:c,range:g=!1,label:a,tick:f,disabled:s=!1,onChange:x,style:b}){const[n,S]=u.useState(c??(g?[r,l]:r));u.useEffect(j,[]);const h=($,D)=>{if(!s)if(g){const T=[...n];T[$]=D,S(T),x==null||x(T)}else S(D),x==null||x(D)},y=$=>($-r)/(l-r)*100,o=g?n:[n],v=g?{left:`${y(o[0])}%`,width:`${y(o[1])-y(o[0])}%`}:{left:0,width:`${y(o[0])}%`},z=s?t.border:t.primary;return e.jsxs("div",{className:"dhx",style:{width:"100%",opacity:s?.5:1,...b},children:[a&&e.jsx("label",{className:"dhx dhx-label",children:a}),e.jsx("div",{style:{position:"relative",height:36,display:"flex",alignItems:"center"},children:e.jsxs("div",{style:{position:"relative",flex:1,height:4,background:t.border,borderRadius:2},children:[e.jsx("div",{style:{position:"absolute",...v,height:"100%",background:z,borderRadius:2}}),o.map(($,D)=>e.jsx("input",{type:"range",min:r,max:l,step:d,value:$,disabled:s,onChange:T=>{const p=+T.target.value;g&&D===0&&p>=n[1]||g&&D===1&&p<=n[0]||h(D,p)},style:{position:"absolute",width:"100%",height:"100%",opacity:0,cursor:s?"not-allowed":"pointer",top:0,left:0,margin:0}},D)),o.map(($,D)=>e.jsx("div",{style:{position:"absolute",left:`${y($)}%`,top:"50%",transform:"translate(-50%, -50%)",width:16,height:16,borderRadius:"50%",background:t.surface,border:`2px solid ${z}`,boxShadow:"0 1px 4px rgba(0,0,0,.2)",pointerEvents:"none"},children:e.jsx("div",{style:{position:"absolute",bottom:"calc(100% + 6px)",left:"50%",transform:"translateX(-50%)",background:s?t.textMut:t.primaryDk,color:"#fff",padding:"2px 6px",borderRadius:t.r,fontSize:11,fontWeight:700,whiteSpace:"nowrap"},children:$})},D))]})}),f&&e.jsx("div",{style:{display:"flex",justifyContent:"space-between",marginTop:2},children:[r,Math.round((l+r)/2),l].map($=>e.jsx("span",{style:{fontSize:10,color:t.textMut},children:$},$))})]})}const Ge=["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4caf50","#8bc34a","#cddc39","#ffeb3b","#ffc107","#ff9800","#ff5722","#795548","#607d8b","#9e9e9e","#000000","#ffffff","#0288d1","#01579b","#43a047","#e53935","#f57c00"];function fe(r){const l=parseInt(r.slice(1,3),16)/255,d=parseInt(r.slice(3,5),16)/255,c=parseInt(r.slice(5,7),16)/255,g=Math.max(l,d,c),a=Math.min(l,d,c);let f=0,s=0;const x=(g+a)/2;if(g!==a){const b=g-a;s=x>.5?b/(2-g-a):b/(g+a),f=g===l?((d-c)/b+(d<c?6:0))/6:g===d?((c-l)/b+2)/6:((l-d)/b+4)/6}return[Math.round(f*360),Math.round(s*100),Math.round(x*100)]}function $e(r,l,d){l/=100,d/=100;const c=l*Math.min(d,1-d),g=a=>{const f=(a+r/30)%12,s=d-c*Math.max(Math.min(f-3,9-f,1),-1);return Math.round(255*s).toString(16).padStart(2,"0")};return"#"+g(0)+g(8)+g(4)}function Je({value:r="#0288d1",onChange:l,style:d}){const[c,g]=u.useState(()=>fe(r)),a=$e(...c);u.useEffect(j,[]);const f=s=>{g(s),l==null||l($e(...s))};return e.jsxs("div",{className:"dhx",style:{background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.rMd,padding:16,display:"inline-block",boxShadow:t.shadow,...d},children:[e.jsx("div",{style:{width:200,height:120,borderRadius:t.r,marginBottom:12,background:`linear-gradient(to bottom, transparent, black), linear-gradient(to right, white, hsl(${c[0]},100%,50%))`,cursor:"crosshair"}}),[["Hue",0,360,c[0]],["Saturation",0,100,c[1]],["Lightness",0,100,c[2]]].map(([s,x,b,n],S)=>e.jsxs("div",{style:{marginBottom:S<2?8:12},children:[e.jsxs("div",{className:"dhx dhx-label",children:[s,S>0?` (${n}%)`:""]}),e.jsx("input",{type:"range",min:x,max:b,value:n,onChange:h=>{const y=[...c];y[S]=+h.target.value,f(y)},style:{width:"100%",accentColor:t.primary}})]},s)),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:12},children:[e.jsx("div",{style:{width:36,height:36,borderRadius:t.r,background:a,border:`1px solid ${t.border}`,flexShrink:0}}),e.jsx("input",{className:"dhx dhx-input",style:{flex:1,fontFamily:"monospace",fontSize:12},value:a,onChange:s=>{try{f(fe(s.target.value)),l==null||l(s.target.value)}catch{}}})]}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(13, 1fr)",gap:3},children:Ge.map(s=>e.jsx("div",{onClick:()=>{g(fe(s)),l==null||l(s)},style:{width:14,height:14,borderRadius:2,background:s,cursor:"pointer",border:a===s?`2px solid ${t.text}`:"1px solid rgba(0,0,0,.15)",transition:"transform .1s"},onMouseEnter:x=>x.currentTarget.style.transform="scale(1.3)",onMouseLeave:x=>x.currentTarget.style.transform="scale(1)"},s))})]})}function Ue({trigger:r,children:l,placement:d="bottom-start",style:c}){const[g,a]=u.useState(!1),[f,s]=u.useState({top:"100%",left:0}),x=u.useRef(null),b=u.useRef(null);u.useEffect(j,[]),U(x,u.useCallback(()=>a(!1),[]));const n=()=>{a(S=>{if(!S&&b.current){const h=b.current.getBoundingClientRect(),y={"bottom-start":{top:h.height+4,left:0},"bottom-end":{top:h.height+4,right:0,left:"auto"},"top-start":{bottom:h.height+4,top:"auto",left:0}};s(y[d]||y["bottom-start"])}return!S})};return e.jsxs("div",{ref:x,className:"dhx",style:{position:"relative",display:"inline-block"},children:[e.jsx("div",{ref:b,onClick:n,children:r}),g&&e.jsx("div",{className:"dhx dhx-anim-fade",style:{position:"absolute",...f,zIndex:200,background:t.surface,border:`1px solid ${t.border}`,borderRadius:t.rMd,boxShadow:t.shadowLg,...c},children:l})]})}function Qe({title:r,children:l,width:d=480,height:c,closable:g=!0,movable:a=!0,modal:f=!1,defaultOpen:s=!0,footer:x,onClose:b,style:n}){const[S,h]=u.useState(s),[y,o]=u.useState({x:0,y:0});u.useEffect(j,[]);const v=we(u.useCallback(($,D)=>a&&o({x:$,y:D}),[a])),z=()=>{h(!1),b==null||b()};return S?e.jsxs(e.Fragment,{children:[f&&e.jsx("div",{style:{position:"fixed",inset:0,background:"rgba(0,0,0,.45)",zIndex:900},onClick:g?z:void 0}),e.jsxs("div",{className:"dhx",style:{position:f?"fixed":"absolute",left:f?"50%":`calc(50% + ${y.x}px)`,top:f?"50%":`calc(50% + ${y.y}px)`,transform:`translate(calc(-50% + ${y.x}px), calc(-50% + ${y.y}px))`,width:d,...c?{height:c}:{},background:t.surface,borderRadius:t.rMd,boxShadow:t.shadowLg,zIndex:901,display:"flex",flexDirection:"column",overflow:"hidden",...n},children:[e.jsxs("div",{onMouseDown:$=>v($,y.x,y.y),style:{display:"flex",alignItems:"center",padding:"12px 16px",borderBottom:`1px solid ${t.border}`,cursor:a?"grab":"default",background:t.bg,gap:8,userSelect:"none"},children:[e.jsx("span",{style:{flex:1,fontWeight:700,fontSize:15},children:r}),g&&e.jsx("button",{onClick:z,style:{background:"none",border:"none",cursor:"pointer",width:28,height:28,borderRadius:t.r,display:"flex",alignItems:"center",justifyContent:"center",fontSize:18,color:t.textSec},onMouseEnter:$=>$.currentTarget.style.background=t.border,onMouseLeave:$=>$.currentTarget.style.background="none",children:"×"})]}),e.jsx("div",{className:"dhx-scroll",style:{flex:1,minHeight:0,padding:20,overflowY:"auto"},children:l}),x&&e.jsx("div",{style:{padding:"12px 16px",borderTop:`1px solid ${t.border}`,display:"flex",justifyContent:"flex-end",gap:8,background:t.bg},children:x})]})]}):null}const ue=u.createContext(null),Ze={success:"✓",error:"✕",warning:"⚠",info:"ℹ"},Ce={success:t.success,error:t.danger,warning:t.warning,info:t.primary};function Re({children:r}){const[l,d]=u.useState([]);u.useEffect(j,[]);const c=u.useCallback(f=>d(s=>s.filter(x=>x.id!==f)),[]),g=u.useCallback(f=>{const s=Date.now();return d(x=>[...x,{id:s,...f}]),f.duration!==0&&setTimeout(()=>c(s),f.duration||4e3),s},[c]),a={message:g,alert:(f,s)=>g({type:"info",title:f,...s}),confirm:(f,s,x)=>g({type:"warning",title:f,confirm:s,...x})};return e.jsxs(ue.Provider,{value:a,children:[r,e.jsx("div",{style:{position:"fixed",top:20,right:20,zIndex:9999,display:"flex",flexDirection:"column",gap:8,pointerEvents:"none"},children:l.map(f=>{const s=f.type||"info";return e.jsxs("div",{style:{background:t.surface,border:`1px solid ${t.border}`,borderLeft:`4px solid ${Ce[s]}`,borderRadius:t.r,boxShadow:t.shadowLg,padding:"12px 16px",minWidth:280,maxWidth:380,pointerEvents:"all",display:"flex",gap:10,alignItems:"flex-start",animation:"dhx-toast .3s ease"},children:[e.jsx("span",{style:{fontSize:18,color:Ce[s],lineHeight:1},children:Ze[s]}),e.jsxs("div",{style:{flex:1},children:[f.title&&e.jsx("div",{style:{fontWeight:600,fontSize:13,marginBottom:f.text?3:0},children:f.title}),f.text&&e.jsx("div",{style:{fontSize:12,color:t.textSec,lineHeight:1.5},children:f.text}),f.confirm&&e.jsxs("div",{style:{display:"flex",gap:6,marginTop:8},children:[e.jsx("button",{className:"dhx dhx-btn dhx-btn-primary",style:{height:26,fontSize:12},onClick:()=>{f.confirm(!0),c(f.id)},children:"Confirm"}),e.jsx("button",{className:"dhx dhx-btn dhx-btn-secondary",style:{height:26,fontSize:12},onClick:()=>{f.confirm(!1),c(f.id)},children:"Cancel"})]})]}),e.jsx("button",{onClick:()=>c(f.id),style:{background:"none",border:"none",cursor:"pointer",color:t.textMut,fontSize:14,lineHeight:1,padding:0},children:"×"})]},f.id)})})]})}function et(){const r=u.useContext(ue);if(!r)throw new Error("useMessage must be used inside <MessageProvider>");return r}function tt({data:r=[],template:l,keyNavigation:d=!0,multiselection:c=!1,editable:g=!1,height:a=400,onSelect:f,onEdit:s,style:x}){const[b,n]=u.useState(new Set),[S,h]=u.useState(null),[y,o]=u.useState(""),[v,z]=u.useState(null);u.useEffect(j,[]);const $=(T,p)=>{const k=T.id??p;n(N=>{const i=c?new Set(N):new Set;return i.has(k)?i.delete(k):i.add(k),i}),z(p),f==null||f(T)},D=(T,p)=>{s==null||s({...T,value:y},p),h(null)};return e.jsxs("div",{className:"dhx dhx-scroll",style:{height:a,overflowY:"auto",border:`1px solid ${t.border}`,borderRadius:t.r,background:t.surface,...x},tabIndex:0,onKeyDown:T=>{d&&(T.key==="ArrowDown"&&z(p=>Math.min((p??-1)+1,r.length-1)),T.key==="ArrowUp"&&z(p=>Math.max((p??1)-1,0)))},children:[r.map((T,p)=>{const k=T.id??p,N=b.has(k),i=v===p;return e.jsx("div",{onClick:()=>$(T,p),onDoubleClick:()=>g&&(h(p),o(String(T.value||""))),style:{display:"flex",alignItems:"center",padding:"0 12px",height:40,cursor:"pointer",fontSize:13,borderBottom:`1px solid ${t.border}`,background:N?t.primaryLt:i?t.bg:t.surface,color:N?t.primary:t.text,outline:i?`2px solid ${t.primary}44`:"none",transition:"background .1s"},children:S===p?e.jsx("input",{autoFocus:!0,className:"dhx dhx-input",style:{height:28,flex:1},value:y,onChange:C=>o(C.target.value),onBlur:()=>D(T,p),onKeyDown:C=>{C.key==="Enter"&&D(T,p),C.key==="Escape"&&h(null)},onClick:C=>C.stopPropagation()}):l?e.jsx("div",{dangerouslySetInnerHTML:{__html:l(T)},style:{flex:1}}):e.jsx("span",{style:{flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:String(T.value??"")})},String(k))}),r.length===0&&e.jsx("div",{style:{padding:24,textAlign:"center",color:t.textMut},children:"No items"})]})}function rt({data:r=[],template:l,itemsInRow:d=3,gap:c=12,multiselection:g=!1,onSelect:a,style:f}){const[s,x]=u.useState(new Set);u.useEffect(j,[]);const b=n=>{const S=n.id??String(n.title);x(h=>{const y=g?new Set(h):new Set;return y.has(S)?y.delete(S):y.add(S),y}),a==null||a(n)};return e.jsx("div",{className:"dhx",style:{display:"grid",gridTemplateColumns:`repeat(${d}, 1fr)`,gap:c,padding:c,...f},children:r.map((n,S)=>{const h=n.id??S,y=s.has(h);return e.jsx("div",{onClick:()=>b(n),style:{background:t.surface,border:`2px solid ${y?t.primary:t.border}`,borderRadius:t.rMd,overflow:"hidden",cursor:"pointer",transition:"all .15s",boxShadow:y?`0 0 0 3px ${t.primary}33`:t.shadow,transform:y?"translateY(-2px)":"none"},onMouseEnter:o=>{o.currentTarget.style.boxShadow=t.shadowLg,o.currentTarget.style.transform="translateY(-2px)"},onMouseLeave:o=>{o.currentTarget.style.boxShadow=y?`0 0 0 3px ${t.primary}33`:t.shadow,o.currentTarget.style.transform=y?"translateY(-2px)":"none"},children:l?e.jsx("div",{dangerouslySetInnerHTML:{__html:l(n)}}):e.jsxs("div",{style:{padding:16},children:[n.img&&e.jsx("img",{src:n.img,alt:n.title||"",style:{width:"100%",borderRadius:t.r,marginBottom:8,display:"block"}}),e.jsx("div",{style:{fontWeight:600,fontSize:14,marginBottom:4},children:n.title||n.value}),n.subtitle&&e.jsx("div",{style:{fontSize:12,color:t.textSec},children:n.subtitle})]})},String(h))})})}function ge(r){return r.map(l=>({...l,items:l.items?ge(l.items):void 0}))}function xe(r,l={}){return r.forEach(d=>{d.opened&&(l[d.id]=!0),d.items&&xe(d.items,l)}),l}function De(r,l){let d=null;return[r.filter(g=>g.id===l?(d=g,!1):!0).map(g=>{if(g.items){const[a,f]=De(g.items,l);return f&&(d=f),{...g,items:a}}return g}),d]}function ye(r,l,d,c){if(c==="inside")return r.map(a=>a.id===l?{...a,items:[...a.items||[],d]}:a.items?{...a,items:ye(a.items,l,d,c)}:a);if(r.some(a=>a.id===l)){const a=[];for(const f of r)f.id===l?c==="before"?(a.push(d),a.push(f)):(a.push(f),a.push(d)):a.push(f);return a}return r.map(a=>a.items?{...a,items:ye(a.items,l,d,c)}:a)}function nt(r,l,d){function c(g){var a,f;if(g.id===l){const s=x=>{var b;return x.id===d||(((b=x.items)==null?void 0:b.some(s))??!1)};return((a=g.items)==null?void 0:a.some(s))??!1}return((f=g.items)==null?void 0:f.some(c))??!1}return r.some(c)}function Ee(r,l,d){return r.map(c=>c.id===l?{...c,value:d}:{...c,items:c.items?Ee(c.items,l,d):void 0})}function ot(r,l){var a;let d=0,c=0;const g=f=>{var s;d++,l[f.id]&&c++,(s=f.items)==null||s.forEach(g)};return(a=r.items)==null||a.forEach(g),{total:d,checkedCount:c}}function st({data:r=[],checkbox:l=!1,editable:d=!1,dragMode:c,tooltip:g,onSelect:a,onCheck:f,onChange:s,style:x}){const[b,n]=u.useState(()=>ge(r)),[S,h]=u.useState(()=>xe(r)),[y,o]=u.useState(null),[v,z]=u.useState({}),[$,D]=u.useState(null),[T,p]=u.useState(""),[k,N]=u.useState(null),[i,C]=u.useState(null);u.useEffect(j,[]),u.useEffect(()=>{n(ge(r)),h(E=>({...xe(r),...E}))},[r]);const w=E=>h(P=>({...P,[E]:!P[E]})),B=(E,P)=>{z(F=>({...F,[E]:P})),f==null||f(E,P)},V=()=>{if(!$)return;const E=$,P=T;D(null),n(F=>{const X=Ee(F,E,P);return s==null||s(X),X})},J=(E,P)=>{E.dataTransfer.effectAllowed="move",N(P)},Z=(E,P)=>{if(!k||k===P||nt(b,k,P))return;E.preventDefault();const F=E.currentTarget.getBoundingClientRect(),X=E.clientY-F.top,K=F.height,G=X<K*.25?"before":X>K*.75?"after":"inside";C(q=>(q==null?void 0:q.id)===P&&(q==null?void 0:q.pos)===G?q:{id:P,pos:G})},le=(E,P)=>{if(E.preventDefault(),!k||!i||k===P){C(null),N(null);return}n(F=>{const[X,K]=De(F,k);if(!K)return F;const G=ye(X,P,K,i.pos);return s==null||s(G),G}),i.pos==="inside"&&h(F=>({...F,[P]:!0})),C(null),N(null)},oe=()=>{N(null),C(null)},ae=(E,P=0)=>{var ce;const F=(((ce=E.items)==null?void 0:ce.length)??0)>0,X=S[E.id],K=y===E.id,G=k===E.id,q=(i==null?void 0:i.id)===E.id;let ie=!!v[E.id],de=!1;if(l&&F){const{total:A,checkedCount:ee}=ot(E,v);ee>0&&ee<A?de=!0:A>0&&ee===A&&(ie=!0)}const be=q&&i.pos!=="inside"?{boxShadow:i.pos==="before"?`inset 0 2px 0 0 ${t.primary}`:`inset 0 -2px 0 0 ${t.primary}`}:{},se=q&&i.pos==="inside"||K?t.primaryLt:"transparent";return e.jsxs("div",{style:{opacity:G?.4:1},children:[e.jsxs("div",{draggable:!!c,onDragStart:c?A=>J(A,E.id):void 0,onDragOver:c?A=>Z(A,E.id):void 0,onDrop:c?A=>le(A,E.id):void 0,onDragEnd:c?oe:void 0,title:g==null?void 0:g(E),onClick:()=>{o(E.id),a==null||a(E),F&&w(E.id)},onDoubleClick:()=>{d&&(D(E.id),p(E.value||""))},style:{display:"flex",alignItems:"center",gap:4,padding:`5px 8px 5px ${12+P*18}px`,cursor:c?"grab":"pointer",borderRadius:t.r,margin:"1px 4px",background:se,color:K?t.primary:t.text,userSelect:"none",fontSize:13,...be},onMouseEnter:A=>!K&&!q&&(A.currentTarget.style.background=t.bg),onMouseLeave:A=>!K&&!q&&(A.currentTarget.style.background="transparent"),children:[e.jsx("span",{style:{width:16,textAlign:"center",fontSize:11,color:t.textMut,flexShrink:0},onClick:A=>{A.stopPropagation(),F&&w(E.id)},children:F?X?"▾":"▸":""}),e.jsx("span",{style:{fontSize:15,flexShrink:0},children:F?X?"📂":"📁":"📄"}),l&&e.jsx("input",{ref:A=>{A&&(A.indeterminate=de)},type:"checkbox",checked:ie,onChange:A=>{A.stopPropagation(),B(E.id,A.target.checked)},style:{cursor:"pointer",accentColor:t.primary,flexShrink:0},onClick:A=>A.stopPropagation()}),$===E.id?e.jsx("input",{autoFocus:!0,className:"dhx dhx-input",style:{height:24,fontSize:12,flex:1},value:T,onChange:A=>p(A.target.value),onBlur:V,onKeyDown:A=>{A.key==="Enter"&&V(),A.key==="Escape"&&D(null)},onClick:A=>A.stopPropagation()}):e.jsx("span",{style:{flex:1},children:E.value}),E.count!==void 0&&e.jsxs("span",{style:{fontSize:11,color:t.textMut},children:["(",E.count,")"]})]}),F&&X&&e.jsx("div",{children:E.items.map(A=>ae(A,P+1))})]},E.id)};return e.jsx("div",{className:"dhx dhx-scroll",style:{overflowY:"auto",...x},onDragOver:c?E=>E.preventDefault():void 0,onDrop:c?E=>{E.preventDefault(),C(null),N(null)}:void 0,children:b.map(E=>ae(E))})}function lt({total:r,pageSize:l=10,page:d,onChange:c,style:g}){const[a,f]=u.useState(d||1),s=Math.ceil(r/l);u.useEffect(j,[]);const x=n=>{const S=Math.min(Math.max(1,n),s);f(S),c==null||c(S)},b=u.useMemo(()=>{const n=[];for(let h=Math.max(1,a-2);h<=Math.min(s,a+2);h++)n.push(h);return n[0]>1&&(n[0]>2&&n.unshift("..."),n.unshift(1)),n[n.length-1]<s&&(n[n.length-1]<s-1&&n.push("..."),n.push(s)),n},[a,s]);return e.jsxs("div",{className:"dhx",style:{display:"flex",alignItems:"center",gap:4,padding:"8px 12px",...g},children:[e.jsxs("span",{style:{fontSize:12,color:t.textSec,marginRight:8},children:[(a-1)*l+1,"–",Math.min(a*l,r)," of ",r]}),[["«",1],["‹",a-1]].map(([n,S])=>e.jsx("button",{className:"dhx dhx-btn dhx-btn-ghost",style:{height:30,padding:"0 8px",fontSize:14},disabled:a===1,onClick:()=>x(S),children:n},n)),b.map((n,S)=>e.jsx("button",{onClick:()=>typeof n=="number"&&x(n),className:`dhx dhx-btn ${n===a?"dhx-btn-primary":"dhx-btn-ghost"}`,style:{height:30,minWidth:30,padding:"0 8px",fontSize:13},disabled:n==="...",children:n},S)),[["›",a+1],["»",s]].map(([n,S])=>e.jsx("button",{className:"dhx dhx-btn dhx-btn-ghost",style:{height:30,padding:"0 8px",fontSize:14},disabled:a===s,onClick:()=>x(S),children:n},n))]})}function at({config:r={},defaultValues:l={},onSubmit:d,style:c}){const[g,a]=u.useState(l),[f,s]=u.useState({}),[x,b]=u.useState(null);u.useEffect(j,[]);const n=(o,v)=>{a(z=>({...z,[o]:v})),s(z=>({...z,[o]:null}))},S=()=>{const o={};return(r.rows||[]).flat().forEach(v=>{v&&typeof v=="object"&&"name"in v&&v.required&&!g[v.name]&&(o[v.name]=`${v.label||v.name} is required`)}),s(o),Object.keys(o).length===0},h=o=>{const v=g[o.name]??o.value??"",z=f[o.name],$=o.labelWidth??r.labelWidth,D=$!==void 0||o.labelPosition==="left";if(o.type==="fieldset")return e.jsxs("fieldset",{style:{border:`1px solid ${t.border}`,borderRadius:t.r,padding:"12px 16px",marginBottom:14},children:[e.jsx("legend",{style:{fontSize:12,fontWeight:700,color:t.textSec,padding:"0 6px"},children:o.label}),(o.rows||[]).map(w=>h(w))]},o.name);if(o.type==="spacer")return e.jsx("div",{style:{height:o.height||16}},o.name);const T=$?{minWidth:$,width:$,flexShrink:0,paddingTop:8,boxSizing:"border-box"}:{},p=o.label?e.jsxs("label",{className:"dhx dhx-label",style:{display:"flex",gap:4,...T},children:[o.label,o.required&&e.jsx("span",{style:{color:t.danger},children:"*"})]},"lbl"):null,k=z?e.jsx("div",{style:{fontSize:11,color:t.danger,marginTop:3},children:z}):null,N=o.helpMessage?e.jsxs("div",{style:{fontSize:11,color:t.textMut,marginTop:3},children:["ⓘ ",o.helpMessage]}):null,i={key:o.name,className:"dhx-form-group"},C=w=>D?e.jsxs("div",{...i,style:{display:"flex",alignItems:"flex-start",gap:8},children:[p,e.jsxs("div",{style:{flex:1,minWidth:0},children:[w,k,N]})]}):e.jsxs("div",{...i,children:[p,w,k,N]});if(!o.type||o.type==="input")return C(e.jsxs("div",{className:"dhx-input-wrap",children:[o.icon&&e.jsx("span",{className:"dhx-input-icon",children:o.icon}),e.jsx("input",{className:`dhx dhx-input${o.icon?" dhx-input--with-icon":""}`,style:{borderColor:z?t.danger:void 0},type:o.inputType||"text",placeholder:o.placeholder,value:v,onChange:w=>n(o.name,w.target.value),disabled:o.disabled})]}));if(o.type==="textarea")return C(e.jsx("textarea",{className:"dhx dhx-input",style:{height:80,resize:"vertical",padding:"8px 10px"},placeholder:o.placeholder,value:v,onChange:w=>n(o.name,w.target.value)}));if(o.type==="select")return C(e.jsxs("select",{className:"dhx dhx-input",value:v,onChange:w=>n(o.name,w.target.value),style:{cursor:"pointer"},children:[e.jsx("option",{value:"",children:"— Select —"}),(o.options||[]).map(w=>e.jsx("option",{value:w.value,children:w.label||w.value},w.value))]}));if(o.type==="datepicker")return C(e.jsx("input",{type:"date",className:"dhx dhx-input",value:v,onChange:w=>n(o.name,w.target.value)}));if(o.type==="timepicker"){const w=g[o.name]??{h:12,m:0,ampm:"AM"},B=!!g[o.name],V=B?`${String(w.h).padStart(2,"0")}:${String(w.m).padStart(2,"0")}${w.ampm?" "+w.ampm:""}`:o.placeholder||"Click to select",J=e.jsxs("div",{style:{position:"relative"},children:[e.jsxs("div",{className:"dhx dhx-input",style:{cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"space-between"},onClick:()=>b(x===o.name?null:o.name),children:[e.jsx("span",{style:{color:B?t.text:t.textMut},children:V}),e.jsx("span",{style:{fontSize:13,color:t.textSec},children:"🕐"})]}),x===o.name&&e.jsx("div",{style:{position:"absolute",zIndex:100,top:"calc(100% + 4px)",left:0},children:e.jsx(me,{value:w,controls:!0,onChange:Z=>{n(o.name,Z),b(null)}})})]});return C(J)}if(o.type==="colorpicker")return C(e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("input",{type:"color",value:v||"#000000",onChange:w=>n(o.name,w.target.value),style:{width:36,height:36,padding:2,border:`1px solid ${t.border}`,borderRadius:t.r,cursor:"pointer",background:"none"}}),e.jsx("span",{style:{fontSize:12,color:t.textSec,fontFamily:"monospace"},children:v||"#000000"})]}));if(o.type==="text")return C(e.jsx("p",{style:{margin:"6px 0",fontSize:13,color:t.text},children:o.value}));if(o.type==="checkbox")return e.jsxs("div",{...i,children:[D?e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[$&&e.jsx("div",{style:{width:$,flexShrink:0}}),e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8,cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",checked:!!v,onChange:w=>n(o.name,w.target.checked),style:{width:16,height:16,accentColor:t.primary,cursor:"pointer"}}),e.jsx("span",{style:{fontSize:13},children:o.label})]})]}):e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8,cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",checked:!!v,onChange:w=>n(o.name,w.target.checked),style:{width:16,height:16,accentColor:t.primary,cursor:"pointer"}}),e.jsx("span",{style:{fontSize:13},children:o.label})]}),N]});if(o.type==="radio"){const w=(o.options||[]).map(B=>e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:6,cursor:"pointer",fontSize:13},children:[e.jsx("input",{type:"radio",name:o.name,value:B.value,checked:v===B.value,onChange:()=>n(o.name,B.value),style:{accentColor:t.primary,cursor:"pointer"}}),B.label||B.value]},B.value));return C(e.jsx("div",{style:{display:"flex",gap:16,flexWrap:"wrap",paddingTop:8},children:w}))}if(o.type==="slider")return D?e.jsxs("div",{...i,style:{display:"flex",alignItems:"flex-start",gap:8},children:[p,e.jsxs("div",{style:{flex:1},children:[e.jsx(he,{min:o.min,max:o.max,step:o.step,value:v||o.min,range:o.range,onChange:w=>n(o.name,w)}),N]})]}):e.jsxs("div",{...i,children:[e.jsx(he,{label:o.label,min:o.min,max:o.max,step:o.step,value:v||o.min,range:o.range,onChange:w=>n(o.name,w)}),N]});if(o.type==="combo")return D?e.jsxs("div",{...i,style:{display:"flex",alignItems:"flex-start",gap:8},children:[p,e.jsxs("div",{style:{flex:1},children:[e.jsx(pe,{data:o.data||[],multiselection:o.multiselection,placeholder:o.placeholder||"Select...",value:v||(o.multiselection?[]:null),onChange:w=>n(o.name,w)}),k,N]})]}):e.jsxs("div",{...i,children:[e.jsx(pe,{label:o.label,data:o.data||[],multiselection:o.multiselection,placeholder:o.placeholder||"Select...",value:v||(o.multiselection?[]:null),onChange:w=>n(o.name,w)}),k,N]});if(o.type==="toggle"){const w=!!v,B=w?o.icon:o.offIcon||o.icon,V=w?o.text||o.label:o.offText||o.text||o.label;return e.jsxs("div",{...i,children:[D&&$&&e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[e.jsx("div",{style:{width:$,flexShrink:0}}),e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:8,cursor:"pointer"},children:[e.jsx(Te,{on:w,onClick:()=>n(o.name,!v)}),B&&e.jsx("span",{style:{fontSize:16},children:B}),V&&e.jsx("span",{style:{fontSize:13},children:V})]})]}),!D&&e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:10,cursor:"pointer"},children:[e.jsx(Te,{on:w,onClick:()=>n(o.name,!v)}),B&&e.jsx("span",{style:{fontSize:16},children:B}),V&&e.jsx("span",{style:{fontSize:13},children:V})]}),N]})}return null},y=o=>o.map((v,z)=>Array.isArray(v)?e.jsx("div",{style:{display:"flex",gap:12,alignItems:"flex-start"},children:v.map(h)},z):h(v));return e.jsxs("div",{className:"dhx",style:{padding:r.padding||0,width:r.width||"100%",...c},children:[y(r.rows||[]),(r.buttons||d)&&e.jsxs("div",{style:{display:"flex",gap:8,justifyContent:r.buttonAlign||"flex-start",marginTop:8},children:[e.jsx("button",{className:"dhx dhx-btn dhx-btn-primary",onClick:()=>S()&&(d==null?void 0:d(g)),children:r.submitText||"Submit"}),r.resetButton!==!1&&e.jsx("button",{className:"dhx dhx-btn dhx-btn-secondary",onClick:()=>{a(l),s({})},children:r.resetText||"Reset"})]})]})}function Te({on:r,onClick:l}){return e.jsxs("div",{style:{position:"relative",width:40,height:22,flexShrink:0},onClick:l,children:[e.jsx("div",{style:{width:40,height:22,borderRadius:11,background:r?t.primary:t.border,transition:"background 0.2s"}}),e.jsx("div",{style:{position:"absolute",top:3,left:r?21:3,width:16,height:16,borderRadius:"50%",background:"#fff",transition:"left 0.2s",boxShadow:"0 1px 3px rgba(0,0,0,.3)"}})]})}function Ie(r){const l=[];for(const d of r)"type"in d&&d.type==="block"?l.push(...d.items||[]):l.push(d);return l}function it({items:r=[],onAction:l,style:d}){u.useEffect(j,[]);const[c,g]=u.useState(()=>{const s={};for(const x of Ie(r))x.id&&(s[x.id]=!!x.active);return s}),a=s=>{var x;if(s.id)if(s.group){const b=Ie(r).filter(n=>n.group===s.group&&n.id);g(n=>{const S={...n};for(const h of b)S[h.id]=!1;return S[s.id]=!0,S})}else s.twoState&&g(b=>({...b,[s.id]:!b[s.id]}));(x=s.onClick)==null||x.call(s,s),s.id&&(l==null||l(s.id,s))},f=(s,x)=>{var S,h;if("type"in s&&(s.type==="separator"||s.type==="sep"))return e.jsx("div",{style:{width:1,background:t.border,margin:"8px 4px",alignSelf:"stretch"}},x);if("type"in s&&s.type==="input"){const y=s;return e.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"4px 6px",gap:4},children:[y.label&&e.jsx("span",{style:{fontSize:10,color:t.textMut},children:y.label}),e.jsx("input",{className:"dhx dhx-input",style:{width:y.width||110,height:26,fontSize:12},placeholder:y.placeholder,defaultValue:y.value,onChange:o=>{var v;return(v=y.onChange)==null?void 0:v.call(y,o.target.value)}})]},x)}if("type"in s&&s.type==="block"){const y=s;return e.jsxs("div",{style:{display:"flex",flexDirection:y.direction==="col"?"column":"row",alignItems:"center",gap:4,padding:"4px 8px",borderRight:`1px solid ${t.border}`,minHeight:64},children:[e.jsx("div",{style:{display:"flex",gap:2},children:(S=y.items)==null?void 0:S.map((o,v)=>f(o,v))}),y.label&&e.jsx("span",{style:{fontSize:10,color:t.textMut,marginTop:2},children:y.label})]},x)}if("type"in s&&s.type==="selectButton"){const y=s;return e.jsx("select",{className:"dhx dhx-input",style:{height:28,fontSize:12,cursor:"pointer",margin:2},defaultValue:y.value,onChange:o=>{var v;return(v=y.onChange)==null?void 0:v.call(y,o.target.value)},children:(h=y.items)==null?void 0:h.map(o=>e.jsx("option",{value:o.value,children:o.value},o.value))},x)}const b=s,n=b.id!==void 0?c[b.id]??!!b.active:!!b.active;return e.jsxs("button",{title:b.tooltip,className:`dhx dhx-btn ${n?"dhx-btn-primary":"dhx-btn-ghost"}`,style:{flexDirection:"column",minHeight:48,padding:"4px 8px",gap:4,fontSize:12},disabled:b.disabled,onClick:()=>a(b),children:[b.icon&&e.jsx("span",{style:{fontSize:b.size==="large"?24:18},children:b.icon}),b.text&&e.jsx("span",{style:{fontSize:10,maxWidth:60,textAlign:"center",lineHeight:1.2,whiteSpace:"normal"},children:b.text})]},x)};return e.jsx("div",{className:"dhx",style:{display:"flex",alignItems:"stretch",background:t.bg,borderBottom:`1px solid ${t.border}`,padding:"4px 0",overflowX:"auto",gap:0,...d},children:r.map(f)})}function Le({count:r}){return e.jsx("span",{style:{position:"absolute",top:3,right:3,minWidth:16,height:16,background:t.danger,color:"#fff",borderRadius:8,fontSize:10,fontWeight:700,display:"flex",alignItems:"center",justifyContent:"center",padding:"0 3px",lineHeight:1,pointerEvents:"none"},children:r})}function dt({logo:r,items:l=[],vertical:d=!1,onAction:c,style:g}){const[a,f]=u.useState(null),[s,x]=u.useState(()=>{const h={};return l.forEach(y=>{y.id&&y.twoState&&y.active&&(h[y.id]=!0)}),h}),b=u.useRef(null);u.useEffect(j,[]),U(b,u.useCallback(()=>f(null),[]));const n=(h,y)=>{var o,v;if(!h.disabled){if(h.twoState&&h.id&&x(z=>({...z,[h.id]:!z[h.id]})),(o=h.items)!=null&&o.length){f(z=>z===y?null:y);return}(v=h.onClick)==null||v.call(h,h.id||""),c==null||c(h.id||"")}},S=(h,y)=>{var $;if(h.hidden)return null;if(h.type==="separator")return e.jsx("div",{style:{[d?"height":"width"]:1,background:t.border,margin:d?"4px 8px":"0 6px",alignSelf:"stretch"}},y);if(h.type==="spacer")return e.jsx("div",{style:{flex:1}},y);if(h.type==="input")return e.jsxs("div",{style:{position:"relative",display:"flex",alignItems:"center",margin:"0 4px"},children:[h.icon&&e.jsx("span",{style:{position:"absolute",left:8,color:t.textMut,fontSize:15,pointerEvents:"none",zIndex:1},children:h.icon}),e.jsx("input",{className:"dhx dhx-input",style:{width:h.width||200,height:28,paddingLeft:h.icon?30:void 0},placeholder:h.placeholder,onChange:D=>{var T;return(T=h.onChange)==null?void 0:T.call(h,D.target.value)}})]},y);if(h.type==="imageButton")return e.jsxs("button",{title:h.tooltip,disabled:h.disabled,style:{position:"relative",width:36,height:36,padding:2,border:"none",borderRadius:"50%",overflow:"hidden",cursor:h.disabled?"not-allowed":"pointer",background:"transparent",flexShrink:0},onClick:()=>n(h,y),children:[h.src&&e.jsx("img",{src:h.src,alt:h.value||"",style:{width:"100%",height:"100%",objectFit:"cover",borderRadius:"50%"}}),h.count!==void 0&&e.jsx(Le,{count:h.count})]},y);const o=!!(h.twoState&&h.id&&s[h.id]),v=!!(($=h.items)!=null&&$.length),z={position:"relative",height:d?40:36,gap:6,background:o?t.primaryLt:"transparent",color:o?t.primary:h.disabled?t.textMut:t.text,opacity:h.disabled?.55:1,cursor:h.disabled?"not-allowed":"pointer",...d?{width:"100%",justifyContent:"flex-start",padding:"0 16px",borderRadius:0}:{}};return e.jsxs("div",{style:{position:"relative"},children:[e.jsxs("button",{className:"dhx dhx-btn dhx-btn-ghost",title:h.tooltip,disabled:h.disabled,style:z,onClick:()=>n(h,y),children:[h.icon&&e.jsx("span",{style:{fontSize:16,flexShrink:0},children:h.icon}),h.value&&e.jsx("span",{style:{fontSize:13},children:h.value}),v&&e.jsx("span",{style:{fontSize:9,opacity:.55,marginLeft:2},children:"▼"}),h.count!==void 0&&e.jsx(Le,{count:h.count})]}),v&&a===y&&e.jsx(R,{items:h.items,onSelect:()=>f(null),style:d?{left:"100%",top:0}:{top:"100%"}})]},y)};return e.jsxs("nav",{ref:b,className:"dhx",style:{display:"flex",flexDirection:d?"column":"row",alignItems:d?"stretch":"center",background:t.surface,borderBottom:d?"none":`1px solid ${t.border}`,borderRight:d?`1px solid ${t.border}`:"none",padding:d?"8px 0":"0 12px",minHeight:d?void 0:48,gap:2,...g},children:[r&&e.jsx("div",{style:{color:t.text,fontWeight:800,fontSize:16,padding:d?"8px 16px 12px":"0 12px 0 4px",borderBottom:d?`1px solid ${t.border}`:"none",borderRight:d?"none":`1px solid ${t.border}`,marginRight:d?0:8,marginBottom:d?4:0,flexShrink:0},children:r}),l.map(S)]})}W.Button=We,W.Calendar=_e,W.Chart=Ke,W.Colorpicker=Je,W.Combobox=pe,W.ContextMenu=Be,W.DataView=rt,W.Form=at,W.Grid=Fe,W.Layout=ze,W.List=tt,W.Menu=Ae,W.MenuDropdown=R,W.MessageContext=ue,W.MessageProvider=Re,W.Navbar=dt,W.Pagination=lt,W.Popup=Ue,W.Ribbon=it,W.Sidebar=Pe,W.Slider=he,W.Tabbar=Oe,W.Timepicker=me,W.Toolbar=He,W.Tree=st,W.Window=Qe,W.tokens=t,W.useClickOutside=U,W.useDrag=we,W.useMessage=et,Object.defineProperty(W,Symbol.toStringTag,{value:"Module"})});
|
|
42
42
|
//# sourceMappingURL=dhx-react-suite.umd.cjs.map
|