@progress/kendo-react-gantt 12.0.2-develop.3 → 12.0.2-develop.5
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/cdn/js/kendo-react-gantt.js +1 -1
- package/index.d.mts +130 -37
- package/index.d.ts +130 -37
- package/package-metadata.js +1 -1
- package/package-metadata.mjs +2 -2
- package/package.json +14 -14
|
@@ -12,4 +12,4 @@
|
|
|
12
12
|
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
13
13
|
*-------------------------------------------------------------------------------------------
|
|
14
14
|
*/
|
|
15
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("@progress/kendo-date-math"),require("@progress/kendo-react-common"),require("@progress/kendo-react-data-tools"),require("@progress/kendo-react-treelist"),require("@progress/kendo-react-intl"),require("@progress/kendo-svg-icons"),require("@progress/kendo-react-buttons"),require("react-dom"),require("@progress/kendo-react-form"),require("@progress/kendo-react-dialogs"),require("@progress/kendo-react-labels"),require("@progress/kendo-react-inputs"),require("@progress/kendo-react-layout"),require("@progress/kendo-react-dateinputs"),require("@progress/kendo-react-dropdowns"),require("@progress/kendo-react-grid"),require("@progress/kendo-data-query")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","@progress/kendo-date-math","@progress/kendo-react-common","@progress/kendo-react-data-tools","@progress/kendo-react-treelist","@progress/kendo-react-intl","@progress/kendo-svg-icons","@progress/kendo-react-buttons","react-dom","@progress/kendo-react-form","@progress/kendo-react-dialogs","@progress/kendo-react-labels","@progress/kendo-react-inputs","@progress/kendo-react-layout","@progress/kendo-react-dateinputs","@progress/kendo-react-dropdowns","@progress/kendo-react-grid","@progress/kendo-data-query"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoReactGantt={},e.React,e.PropTypes,e.KendoDateMath,e.KendoReactCommon,e.KendoReactDataTools,e.KendoReactTreelist,e.KendoReactIntl,e.KendoSvgIcons,e.KendoReactButtons,e.ReactDOM,e.KendoReactForm,e.KendoReactDialogs,e.KendoReactLabels,e.KendoReactInputs,e.KendoReactLayout,e.KendoReactDateinputs,e.KendoReactDropdowns,e.KendoReactGrid,e.KendoDataQuery)}(this,(function(e,t,n,a,o,r,l,s,i,d,c,u,m,p,g,h,f,k,y,v){"use strict";function C(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var D=C(t),E=C(c);const b=r.TABLE_ROW_INDEX_ATTRIBUTE,I=r.TABLE_COL_INDEX_ATTRIBUTE,w=r.TABLE_PREVENT_SELECTION_ELEMENT,S=(new Date).getTime(),R={skeleton:"MEd"},T=100,x="data-dependency-drag-handle",F={[x]:"start"},N={[x]:"finish"},M="data-task-id",z={id:"id",start:"start",end:"end",title:"title",percentComplete:"percentComplete",parentId:"parentId",isRollup:"isRollup",isExpanded:"isExpanded",isInEdit:"isInEdit",children:"children",isSelected:"isSelected"},L={id:"id",fromId:"fromId",toId:"toId",type:"type"},W=r.orderBy,H=r.filterBy,K=o.mapTree,V=o.extendDataItem,O=l.createDataTree,A=e=>a.getDate(e),P=(e,t)=>a.getDate(a.addDays(e,t||1));function B(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))}const G=(e,t,n,a)=>a?_(e,t,n):$(e,t,n),_=(e,t,n)=>{n.push({top:e-2,left:t}),n.push({top:e,left:t-4+1}),n.push({top:e+2,left:t}),n.push({top:e,left:t})},$=(e,t,n)=>{n.push({top:e+2,left:t}),n.push({top:e,left:t+4-1}),n.push({top:e-2,left:t}),n.push({top:e,left:t})},q=e=>{if(void 0===e.workWeekStart||void 0===e.workWeekEnd)return[];const t=[];let n=e.workWeekStart;for(t.push(n);e.workWeekEnd!==n;)n>6?n-=7:n++,t.push(n);return t},Z=(e,t)=>{const n=e.getDay();return t.indexOf(n)>-1},U=(e,{step:t,timezone:n})=>{const o=[],r=a.ZonedDate.fromLocalDate(e.start,n),l=a.ZonedDate.fromLocalDate(e.end,n);let s=r.clone();for(;s.getTime()<l.getTime();){const e=s.clone(),n=e.clone().addTime(t),a=new Date(e.getTime()),r={end:new Date(n.getTime()),start:a,zonedStart:e,zonedEnd:n};o.push(r),s=s.addTime(t)}return o},j=(e,t,n)=>U(e,{step:a.MS_PER_DAY,timezone:t.timezone}).map((e=>({range:e,isWork:Z(e.start,t.workDays),span:1,text:n.formatDate(e.zonedStart,R),type:"day"}))),Y=(e,t,n)=>((e,{timezone:t},n)=>{const o=[],r=a.ZonedDate.fromLocalDate(e.start,t),l=a.ZonedDate.fromLocalDate(e.end,t);for(let e=r.clone();e.getTime()<l.getTime();){const r=e.clone(),s=P(a.firstDayInWeek(a.getDate(r),n.firstDay()),7),i=a.ZonedDate.fromUTCDate(B(s),t),d=i.getTime()>l.getTime()?l.clone():i;e=d.clone();const c=new Date(r.getTime()),u={end:new Date(d.getTime()),start:c,zonedStart:r,zonedEnd:d};o.push(u)}return o})(e,{timezone:t.timezone},n).map((e=>{const t=Math.round((e.zonedEnd.getTime()-e.zonedStart.getTime())/a.MS_PER_DAY);return{range:e,isWork:!1,span:t,text:`${n.formatDate(e.zonedStart,R)} - ${n.formatDate(e.zonedEnd,R)}`,type:"week"}})),X=(e,t,n)=>((e,{timezone:t})=>{const n=[],o=a.ZonedDate.fromLocalDate(e.start,t),r=a.ZonedDate.fromLocalDate(e.end,t);for(let e=o.clone();e.getTime()<r.getTime();){const o=e.clone(),r=a.ZonedDate.fromLocalDate(a.addMonths(new Date(o.getTime()),1),t);e=r.clone();const l=new Date(o.getTime()),s={end:new Date(r.getTime()),start:l,zonedStart:o,zonedEnd:r};n.push(s)}return n})(e,{timezone:t.timezone}).map((e=>{const t=Math.round((e.zonedEnd.getTime()-e.zonedStart.getTime())/a.MS_PER_DAY);return{range:e,isWork:!1,span:t,text:n.formatDate(e.zonedStart,"MMM"),type:"month"}})),Q=(e,t,n)=>((e,{timezone:t})=>{const n=[],o=a.ZonedDate.fromLocalDate(e.start,t),r=a.ZonedDate.fromLocalDate(e.end,t);for(let e=o.clone();e.getTime()<r.getTime();){const o=e.clone(),r=a.ZonedDate.fromLocalDate(a.addMonths(new Date(o.getTime()),12),t);e=r.clone();const l=new Date(o.getTime()),s={end:new Date(r.getTime()),start:l,zonedStart:o,zonedEnd:r};n.push(s)}return n})(e,{timezone:t.timezone}).map((e=>{const t=Math.round((e.zonedEnd.getTime()-e.zonedStart.getTime())/a.MS_PER_DAY);return{range:e,isWork:!1,span:t,text:n.formatDate(e.zonedStart,"yyyy"),type:"year"}})),J=(e,t)=>!!o.getter(t)(e),ee=(e,t)=>!!o.getter(t)(e),te=D.createContext([]);te.displayName="KendoReactGanttTaskDataContext";const ne=D.createContext([]);ne.displayName="KendoReactGanttDependencyDataContext";const ae=D.createContext(z),oe=()=>D.useContext(ae);ae.displayName="KendoReactGanttTaskModelFieldsContext";const re=D.createContext(L),le=()=>D.useContext(re);re.displayName="KendoReactGanttDependencyModelFieldsContext";const se=D.createContext({}),ie=()=>D.useContext(se);se.displayName="KendoReactGanttPropsContext";const de=D.createContext({start:new Date,end:new Date,zonedStart:a.ZonedDate.fromLocalDate(new Date),zonedEnd:a.ZonedDate.fromLocalDate(new Date)}),ce=()=>D.useContext(de);de.displayName="KendoReactGanttDateRangeContext";const ue=D.createContext([]);ue.displayName="KendoReactGanttViewsContext";const me=D.createContext(["week",o.noop]),pe=()=>D.useContext(me);me.displayName="KendoReactGanttActiveViewContext";const ge=D.createContext(0),he=()=>D.useContext(ge);ge.displayName="KendoReactGanttRowHeightContext";const fe=D.createContext(0);fe.displayName="KendoReactGanttToolbarHeightContext";const ke=D.createContext({onDataStateChange:o.noop,onSortChange:o.noop,onFilterChange:o.noop,onColumnMenuFilterChange:o.noop,onExpandChange:o.noop,onRowClick:o.noop,onRowDoubleClick:o.noop,onRowContextMenu:o.noop,onColumnResize:o.noop,onColumnReorder:o.noop,onDependencyCreate:o.noop,onKeyDown:o.noop,onSelectionChange:o.noop,onHeaderSelectionChange:o.noop});ke.displayName="KendoReactGanttEventsContext";const ye=D.createContext({onTaskClick:o.noop,onTaskDoubleClick:o.noop,onTaskContextMenu:o.noop});ye.displayName="KendoReactGanttTaskEventsContext";const ve=({children:e,taskData:t,dependencyData:n,taskModelFields:a,dependencyModelFields:o,props:r,dateRange:l,views:s,activeView:i,rowHeight:d,toolbarHeight:c,events:u,taskEvents:m})=>D.createElement(se.Provider,{value:r},D.createElement(te.Provider,{value:t},D.createElement(ne.Provider,{value:n},D.createElement(ae.Provider,{value:a},D.createElement(re.Provider,{value:o},D.createElement(de.Provider,{value:l},D.createElement(ue.Provider,{value:s},D.createElement(me.Provider,{value:i},D.createElement(ge.Provider,{value:d},D.createElement(fe.Provider,{value:c},D.createElement(ke.Provider,{value:u},D.createElement(ye.Provider,{value:m},e))))))))))));ve.displayName="KendoReactGanttContext";const Ce=D.createContext([{current:{}},o.noop]),De=()=>D.useContext(Ce);Ce.displayName="KendoReactGanttViewContext";const Ee=D.createContext(0);Ee.displayName="KendoReactGanttViewTimelineWidthContext";const be=D.createContext({onDependencyHandlePress:o.noop,onDependencyHandleDrag:o.noop,onDependencyHandleRelease:o.noop,isEnabled:!1,draggedId:null});be.displayName="KendoReactGanttViewDependencyDragContext";const Ie=({children:e,tasksStore:t,timelineWidth:n,dependencyDrag:a})=>D.createElement(Ce.Provider,{value:t},D.createElement(Ee.Provider,{value:n},D.createElement(be.Provider,{value:a},e)));Ie.displayName="KendoReactGanttViewContext";var we=(e=>(e[e.add=0]="add",e[e.remove=1]="remove",e))(we||{});const Se=D.forwardRef(((e,t)=>{const n=ce(),a=oe(),r=D.useContext(Ee),l=D.useContext(be),s=D.useContext(ye),d=D.useRef(null),c=D.useRef(null);((e,t,n,a)=>{const r=D.useRef(null),[,l]=De();D.useImperativeHandle(r,(()=>({element:a.current,dataItem:e}))),D.useImperativeHandle(n,(()=>r.current)),o.useIsomorphicLayoutEffect((()=>{const e=r.current;if(e)return l({type:we.add,itemRef:e,id:t}),()=>{l({type:we.remove,itemRef:e,id:t})}}))})(e.dataItem,o.getter(a.id)(e.dataItem),t,d);const u=D.useRef(null),m=o.getter(a.id)(e.dataItem),p=o.getter(a.start)(e.dataItem),g=o.getter(a.end)(e.dataItem),h=o.getter(a.title)(e.dataItem),f=o.getter(a.percentComplete)(e.dataItem),k=o.getter(a.children)(e.dataItem),y=o.getter(a.isSelected)(e.dataItem),v=p&&p.getTime(),C=g&&g.getTime(),E=k&&k.length,b=!E&&v===C,I=v&&C&&((e,t,n,a)=>n<t&&e<=a)(n.start,n.end,p,g),[w,S]=D.useState(!1),R=D.useRef(null),T=D.useRef(null);o.useDraggable(R,{onPress:l.onDependencyHandlePress,onDrag:l.onDependencyHandleDrag,onRelease:l.onDependencyHandleRelease}),o.useDraggable(T,{onPress:l.onDependencyHandlePress,onDrag:l.onDependencyHandleDrag,onRelease:l.onDependencyHandleRelease});const x=D.useCallback((t=>{s.onTaskClick&&s.onTaskClick({dataItem:e.dataItem,level:e.level,nativeEvent:t&&t.nativeEvent,syntheticEvent:t,target:null})}),[e.dataItem,e.level]),z=D.useCallback((t=>{s.onTaskDoubleClick&&s.onTaskDoubleClick({dataItem:e.dataItem,level:e.level,nativeEvent:t&&t.nativeEvent,syntheticEvent:t,target:null})}),[e.dataItem,e.level]),L=D.useCallback((t=>{s.onTaskContextMenu&&s.onTaskContextMenu({dataItem:e.dataItem,level:e.level,nativeEvent:t&&t.nativeEvent,syntheticEvent:t,target:null})}),[e.dataItem,e.level]),W=D.useCallback((t=>{s.onTaskRemoveClick&&s.onTaskRemoveClick({dataItem:e.dataItem,level:e.level,nativeEvent:t&&t.nativeEvent,syntheticEvent:t,target:null})}),[e.dataItem,e.level]),H=D.useCallback((()=>{const e=n.start,t=n.end,a=u.current,o=d.current,r=c.current;if(!I||null===a||null===o)return;const l=a.clientWidth/(t.getTime()-e.getTime()),s=(p.getTime()-e.getTime())*l,i=(g.getTime()-p.getTime())*l,m=(a.offsetHeight-o.offsetHeight)/2;o.style.left=`${Math.round(b?s-6:s)}px`,o.style.top=`${Math.round(m)}px`,b||(o.style.width=`${Math.round(i)}px`,null!==r&&(r.style.width=`${Math.round(i*(f||0))}px`)),S(!0)}),[n.start.getTime(),n.end.getTime(),v,C,I,f,r]);D.useEffect(H,[H]);const K={visibility:w?void 0:"hidden",display:I?void 0:"none"},V={userSelect:"none",display:l.draggedId===String(m)?"block":void 0};return D.createElement("td",{ref:u,key:m,role:"presentation"},b?D.createElement("div",{"aria-hidden":!0,className:o.classNames({"k-task":!0,"k-task-milestone":!0,"k-selected":y&&!Array.isArray(y)}),style:K,ref:d,[M]:m,onClick:x,onDoubleClick:z,onContextMenu:L},D.createElement("div",{className:"k-task-milestone-content"}),l.isEnabled&&D.createElement("div",{className:"k-task-dot k-task-start",ref:R,style:V,...F}),l.isEnabled&&D.createElement("div",{className:"k-task-dot k-task-end",ref:T,style:V,...N})):D.createElement("div",{"aria-hidden":!0,className:o.classNames({"k-task":!0,"k-task-summary":E,"k-task-single":!E,"k-selected":y&&!Array.isArray(y)}),ref:d,style:K,[M]:m,onClick:x,onDoubleClick:z,onContextMenu:L},E?D.createElement("div",{className:"k-task-summary-progress",ref:c},D.createElement("div",{className:"k-task-summary-complete"})):D.createElement("div",{className:"k-task-complete",ref:c}),!E&&D.createElement(D.Fragment,null,D.createElement("div",{className:"k-task-content"},h),s.onTaskRemoveClick?D.createElement("span",{className:"k-task-actions"},D.createElement("span",{onClick:W,className:"k-link k-task-delete","aria-label":"Delete"},D.createElement(o.IconWrap,{name:"x",icon:i.xIcon}))):null),l.isEnabled&&D.createElement("div",{className:"k-task-dot k-task-start",ref:R,style:V,...F}),l.isEnabled&&D.createElement("div",{className:"k-task-dot k-task-end",ref:T,style:V,...N})))}));Se.displayName="KendoReactGanttTask";const Re=e=>{const{dependency:t}=e,[n]=De(),a=D.useRef(null),r=le(),l=he(),[s,i]=D.useState(!1);return D.useEffect((()=>{if(null===a.current||null===n.current)return void i(!1);const e=n.current[o.getter(r.fromId)(t)],d=n.current[o.getter(r.toId)(t)];if(!e||!d)return void i(!1);const c=e.element,u=d.element;if(!c||!u)return void i(!1);if(!1===s)return void i(!0);const m={top:c.offsetTop+c.offsetHeight/2,start:c.offsetLeft,end:c.offsetLeft+c.offsetWidth},p={top:u.offsetTop+u.offsetHeight/2,start:u.offsetLeft,end:u.offsetLeft+u.offsetWidth},g=o.getter(r.type)(t),h=((e,t,n,a)=>{const o=[];let r=0,l=0;const s=10,i=Math.floor(n/2),d=e.top<t.top,c=()=>o.push({left:l,top:r});if(0===a||3===a){const n=3===a?"start":"end";r=e.top,l=e[n],c(),l=Math["start"===n?"min":"max"](e[n],t[n]),l="start"===n?l-s:l+s,c(),r=t.top,c(),l="start"===n?t[n]-4:t[n]+4,c(),G(r,l,o,"start"!==n)}else{const n=2===a?"start":"end",u=2===a?"end":"start",m=2===a?e[n]-20>=t[u]:e[n]+20<=t[u];r=e.top,l=e[n],c(),l="start"===n?l-s:l+s,c(),m||(r=d?r+i:r-i,c(),l="start"===n?t[u]+s:t[u]-s,c()),r=t.top,c(),l="start"===u?t[u]-4:t[u]+4,c(),G(r,l,o,"start"!==u)}return o})(m,p,l,g);h&&h.length&&a.current.setAttribute("points",h.map((e=>`${e.left},${e.top}`)).join(" "))})),D.createElement("polyline",{ref:a,style:{display:s?void 0:"none"}})};Re.displayName="KendoReactGanttDependency";const Te=class extends D.Component{constructor(e){super(e),this.state={activeId:void 0,level:0},this.tableElement=null,this.tbodyElement=null,this.wrapperScrollLeft=0,this.wrapperScrollTop=0,this.updateOnScroll=!1,this.tbodyOffsetTop=0,this.prevData=[],this.flattedData=[],this.element=null,this.contextStateRef={current:void 0},this.navigationStateRef={current:void 0},this.scrollIntoView=e=>{if(!this.element)return;const{rowIndex:t=0}=e,{rowHeight:n=0}=this.props;this.element.scroll(0,(t-1)*n)},this.getColumns=e=>{const t=e.filter((e=>e.declarationIndex>=0&&-1===e.parentIndex)),n=e=>(e.sort(((e,t)=>e.declarationIndex-t.declarationIndex)),e.map((e=>{const{declarationIndex:t,parentIndex:a,depth:o,colSpan:r,rowSpan:l,index:s,kFirst:i,groupable:d,children:c,...u}=e;return c.length?{children:n(c),...u}:u})));return n(t)},this.onKeyDown=e=>{if(r.tableKeyboardNavigation.onKeyDown(e,{navigatable:!1,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),this.props.onKeyDown){const{mode:t,cell:n}=r.getSelectionOptions(this.props.selectable),a={dataItems:this.getLeafDataItems(),mode:t,cell:n,componentId:this.props.treelistId,selectedField:this.props.selectedField,...this.getEventArguments(e)};this.props.onKeyDown.call(void 0,a)}},this.onFocus=e=>{r.tableKeyboardNavigation.onFocus(e,{contextStateRef:this.contextStateRef})},this.onRowDrag=e=>{if(this.props.onRowDrag){const t={...e,target:this};this.props.onRowDrag.call(void 0,t)}},this.onRowDrop=e=>{if(this.props.onRowDrop){const t={...e,target:this};this.props.onRowDrop.call(void 0,t)}},this.onColumnReorder=(e,t,n)=>{const{extendedColumns:a}=this.props,o=a[e].depth,r=e=>{do{e++}while(e<a.length&&a[e].depth>o);return e},l=[...a],s=l.splice(e,r(e)-e);if(l.splice(e<t?r(t-s.length):t,0,...s),l.filter((e=>e.declarationIndex>=0)).forEach(((e,t)=>e.orderIndex=t)),this.props.onColumnReorder){const e={target:this,columns:this.getColumns(l),nativeEvent:n};this.props.onColumnReorder.call(void 0,e)}},this.onColumnResize=(e,t,n,a,o)=>{if(this.props.onColumnResize){const r=this.props.extendedColumns.filter((e=>0===e.children.length)).reduce(((e,t)=>e+parseFloat(String(t.width))),0);this.tableElement&&(this.tableElement.style.width=r+"px");const l={columns:this.getColumns(this.props.extendedColumns),totalWidth:r,index:e,nativeEvent:a,newWidth:t,oldWidth:n,end:o,target:this};this.props.onColumnResize.call(void 0,l)}},this.onScroll=e=>{const t=e.currentTarget.scrollLeft,n=e.currentTarget.scrollTop,{columnVirtualization:a,scrollable:o,rowHeight:r=0}=this.props,l=r;let s=!1;a&&Math.abs(this.wrapperScrollLeft-t)>0&&(this.wrapperScrollLeft=t,s=!0),"virtual"===o&&Math.abs(this.wrapperScrollTop-n)>l&&(this.wrapperScrollTop=n,s=!0),s&&(this.updateOnScroll=!0,this.forceUpdate())},this.calculateSizes=e=>{if(!e||"none"===this.props.scrollable)return;const t=Array.from(e.childNodes),n=t.find((e=>"TABLE"===e.nodeName)),a=this.props.toolbar&&t.find((e=>1===e.nodeType&&e.classList.contains("k-grid-toolbar")));let o=0;if(a){const e=a.style.boxSizing;a.style.boxSizing="border-box",o=parseFloat(String(window.getComputedStyle(a).height))||a.offsetHeight,a.style.boxSizing=e,a.getAttribute("style")||a.removeAttribute("style")}this.tbodyOffsetTop=n.tBodies[0].offsetTop,l.setHeaderRowsTop(n,o)},this.onItemChange=e=>{if(e.field!==this.props.expandField){if(this.props.onItemChange){const t={...this.getEventArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,field:e.field,value:e.value};this.props.onItemChange.call(void 0,t)}}else{const t=this.props.onExpandChange;if(t){const n={...this.getEventArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,value:e.value};t.call(void 0,n)}}},this.onHeaderSelectionChange=e=>{if(this.props.onHeaderSelectionChange){const t={field:e.field,nativeEvent:e.syntheticEvent&&e.syntheticEvent.nativeEvent,syntheticEvent:e.syntheticEvent,target:this,dataItems:this.getLeafDataItems()};this.props.onHeaderSelectionChange.call(void 0,t)}},this.selectionRelease=e=>{if(this.props.onSelectionChange){const t={syntheticEvent:void 0,target:this,selectedField:this.props.selectedField||"",componentId:this.props.treelistId,dataItems:this.getLeafDataItems(),dataItem:null,level:[],...e};this.props.onSelectionChange.call(void 0,t)}},this.onSortChange=(e,t,n)=>{this.onDataStateChange(this.props.onSortChange,{sort:t,field:n},e)},this.onFilterChange=e=>{const{filter:t,field:n}=e;this.onDataStateChange(this.props.onFilterChange,{filter:t,field:n},e.syntheticEvent)},this.onColumnMenuFilterChange=(e,t,n)=>{if(!n)return;const{onColumnMenuFilterChange:a}=this.props;if(!a)return;const o={syntheticEvent:e,filter:t,field:n,target:this,nativeEvent:e.nativeEvent};a.call(void 0,o)},this.onExpandChange=(e,t,n)=>{const{expandField:a,onExpandChange:o}=this.props;if(a&&o){const a={...this.getEventArguments(e),dataItem:t,level:n,value:J(t,this.props.expandField)};o.call(void 0,a)}},this.onRowClick=(e,t)=>{if(this.props.onRowClick&&"TD"===e.target.nodeName){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowClick.call(void 0,n)}},this.rowDoubleClick=(e,t)=>{if(this.props.onRowDoubleClick&&"TD"===e.target.nodeName){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowDoubleClick.call(void 0,n)}},this.rowContextMenu=(e,t)=>{if(this.props.onRowContextMenu&&"TD"===e.target.nodeName){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowContextMenu.call(void 0,n)}},this.onPageChange=e=>{if(this.props.onPageChange){const t={...this.getEventArguments(e.syntheticEvent),skip:e.skip,take:e.take};this.props.onPageChange.call(void 0,t)}},this.onDataStateChange=(e,t,n)=>{if(e&&e.call(void 0,{...this.getEventArguments(n),...t}),this.props.onDataStateChange){const e={...this.getEventArguments(n),dataState:{...this.getDataState(),...t}};this.props.onDataStateChange.call(void 0,e)}},this.getDataState=()=>({filter:this.props.filter,sort:this.props.sort}),this.getEventArguments=e=>({nativeEvent:e&&e.nativeEvent,syntheticEvent:e,target:this}),this.getLeafDataItems=()=>this.flatData.map((e=>e.dataItem)),this.dragLogic=new r.CommonDragLogic(this.onColumnReorder,o.noop,o.noop),this.columnResize=new r.ColumnResize(this.onColumnResize),r.tableKeyboardNavigation.onConstructor({navigatable:!!e.navigatable,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef,idPrefix:e.idPrefix})}get document(){if(o.canUseDOM)return this.element&&this.element.ownerDocument||document}componentDidMount(){this.calculateSizes(this.element),r.tableKeyboardNavigation.onComponentDidMount({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}getSnapshotBeforeUpdate(){return r.tableKeyboardNavigation.onGetSnapshotBeforeUpdate({document:this.document,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),null}componentDidUpdate(e){e.columns!==this.props.columns&&this.calculateSizes(this.element),r.tableKeyboardNavigation.onComponentDidUpdate({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}componentWillUnmount(){this.columnResize.columns=[],this.dragLogic.columns=[],this.prevData=[],this.flattedData=[],this.updateOnScroll=!1}render(){const{filterRow:e,scrollable:t="scrollable",resizable:n=!1,reorderable:a=!1,skip:s,take:i,afterContent:d,extendedColumns:c=[],columnsMap:u}=this.props,m=c.some((e=>!!e.filter))||void 0!==e,p=e||r.FilterRow,g=r.tableKeyboardNavigationTools.getIdPrefix(this.navigationStateRef);this.columnResize.columns=c,this.columnResize.resizable=n,this.dragLogic.columns=c,this.dragLogic.reorderable=a,this.dragLogic.groupable=!1;const h=c.filter((e=>0===e.children.length)),f=D.createElement(r.Header,{headerRow:D.createElement(r.HeaderRow,{sort:this.props.sort,sortable:this.props.sortable,sortChange:this.onSortChange,selectionChange:this.onHeaderSelectionChange,columns:c,columnsMap:u,cellRender:this.props.headerCellRender,columnResize:this.columnResize,columnMenu:this.props.columnMenu,columnMenuFilter:this.props.columnMenuFilter,columnMenuFilterChange:this.onColumnMenuFilterChange,pressHandler:this.dragLogic.pressHandler,dragHandler:this.dragLogic.dragHandler,releaseHandler:this.dragLogic.releaseHandler}),filterRow:m&&D.createElement(p,{columns:h,filter:this.props.filter,filterChange:this.onFilterChange,sort:this.props.sort,ariaRowIndex:u.length+1})||void 0,columnResize:this.columnResize}),k=this.props.style||{},{colSpans:y,hiddenColumns:v}=r.tableColumnsVirtualization({enabled:this.props.columnVirtualization,columns:h,scrollLeft:this.wrapperScrollLeft,tableViewPortWidth:parseFloat((k.width||"").toString())}),C=(e,t,n,a,o,s)=>h.map(((i,d)=>{if(v[d])return null;const c=i.id?i.id:d,u=`k-table-td ${i.className?i.className+" ":""}${i.locked?"k-grid-content-sticky":""}`,m={id:r.tableKeyboardNavigationTools.generateNavigatableId(`${n}-${String(d)}`,g),colSpan:y[d],dataItem:e.dataItem,field:i.field,format:i.format,className:u||void 0,render:this.props.cellRender,onChange:this.onItemChange,selectionChange:this.props.onSelectionChange?t=>{this.onSelectionChange({event:t,item:e,columnIndex:d,dataIndex:o})}:void 0,level:e.level,expandable:i.expandable,expanded:a,hasChildren:ee(e.dataItem,this.props.subItemsField),colIndex:d,ariaColumnIndex:i.ariaColumnIndex,onExpandChange:this.onExpandChange,style:void 0!==i.left&&{left:i.left,right:i.right,borderRightWidth:i.rightBorder?"1px":""}||{},isSelected:Array.isArray(s)&&s.indexOf(d)>-1};return t&&i.editCell?D.createElement(i.editCell,{...m,onChange:this.onItemChange,key:c}):i.cell?D.createElement(i.cell,{key:c,...m}):D.createElement(l.TreeListCell,{key:c,...m})}));let E=this.flatData;const b=E.length;void 0!==s&&void 0!==i&&(E=E.slice(s,s+i)),"virtual"===t&&(E=l.tableRowsVirtualization({rows:E,tableViewPortHeight:parseFloat((k.height||k.maxHeight||"").toString()),scrollTop:this.wrapperScrollTop}),this.updateOnScroll=!1);const I=E.map((e=>e.level)),w=u.length+(m?1:0)+1,S=E.length>0&&E.map(((e,t)=>{const n=o.getter(this.props.editField||"")(e.dataItem),a=o.getter(this.props.dataItemKey)(e.dataItem),r=String(a||e.level.join(".")),s=J(e.dataItem,this.props.expandField),i=this.props.selectedField?o.getter(this.props.selectedField)(e.dataItem):void 0,d={key:r,level:e.level,levels:I,dataItem:e.dataItem,selectedField:this.props.selectedField,rowHeight:e.height,render:this.props.rowRender,onDrop:this.onRowDrop,onDrag:this.onRowDrag,onClick:t=>this.onRowClick(t,e),onDoubleClick:t=>this.rowDoubleClick(t,e),onContextMenu:t=>this.rowContextMenu(t,e),isAltRow:t%2!=0,expanded:s,rowIndex:t,ariaRowIndex:w+t,ariaSetSize:e.levelCount,ariaPosInSet:e.level[e.level.length-1]+1,isSelected:"boolean"==typeof i&&i},c=this.props.editRow,u=this.props.row||l.TreeListRow,m=C(e,n,r,s,t,i);return n&&c?D.createElement(c,{...d,key:d.key},m):D.createElement(u,{...d,key:d.key},m)}))||D.createElement("tr",{className:"k-table-row k-grid-norecords"},D.createElement("td",{className:"k-table-td",colSpan:h.length},this.props.noRecords||D.createElement(l.TreeListNoRecords,null))),R=e=>this.props.sort&&this.props.sort.some((t=>t.field===e)),T=D.createElement("colgroup",{ref:e=>{this.columnResize.colGroupMain=e}},h.map(((e,t)=>D.createElement("col",{key:t.toString(),className:R(e.field)?"k-sorted":void 0,style:void 0!==e.width?{width:e.width}:void 0})))),x=this.props.columnVirtualization||"virtual"===this.props.scrollable,F=this.props.selectable&&this.props.selectable.drag?"none":void 0,N=this.props.tableProps||{};return D.createElement(r.TableKeyboardNavigationContext.Provider,{value:this.contextStateRef.current},D.createElement("div",{id:this.props.treelistId,style:this.props.style,className:o.classNames("k-grid k-grid-md",this.props.className,{"k-treelist-scrollable":"none"!==t}),ref:e=>{this.element=e},onScroll:x?this.onScroll:void 0,onKeyDown:this.onKeyDown,onFocus:this.onFocus,"aria-rowcount":b,"aria-colcount":h.length,role:"treegrid",...r.tableKeyboardNavigationScopeAttributes},this.props.toolbar,D.createElement(r.TableSelection,{selectable:this.props.selectable,onRelease:this.selectionRelease,childRef:e=>{this.tableElement=e}},D.createElement("table",{className:"k-table k-table-md",...this.props.tableProps||{},style:{...N.style||{},userSelect:F},role:"presentation"},T,f,D.createElement("tbody",{className:"k-table-tbody",...r.tableKeyboardNavigationBodyAttributes,ref:e=>{this.tbodyElement=e},role:"presentation"},S))),this.props.pager&&D.createElement(this.props.pager,{className:"k-grid-pager",total:b,skip:s,take:i,onPageChange:this.onPageChange}),a&&D.createElement(D.Fragment,null,D.createElement(r.DropClue,{ref:this.dragLogic.refDropElementClue}),D.createElement(r.DragClue,{ref:this.dragLogic.refDragElementClue})),d))}get flatData(){const{data:e=[],rowHeight:t=0}=this.props;let n=0;const a=()=>{const e={height:t,offsetTop:n};return n+=e.height,e},o=this.updateOnScroll&&this.prevData===e&&this.tbodyOffsetTop>0&&this.flattedData.length?this.flattedData:e.map((e=>({...e,...a()})));return this.prevData=e,this.flattedData=o,o}onSelectionChange(e){if(this.props.onSelectionChange){const{event:t,item:n,dataIndex:a,columnIndex:o}=e,{mode:l,cell:s}=r.getSelectionOptions(this.props.selectable),i={...this.getEventArguments(t.syntheticEvent),dataItem:n.dataItem,level:n.level,startColIndex:o,endColIndex:o,startRowIndex:a,endRowIndex:a,dataItems:this.getLeafDataItems(),altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1,mode:l,cell:s,isDrag:!1,componentId:this.props.treelistId,selectedField:this.props.selectedField||""};this.props.onSelectionChange.call(void 0,i)}}};Te.propTypes={data:n.array,resizable:n.bool,reorderable:n.bool,sortable:n.oneOfType([n.bool,n.shape({mode:n.oneOf(["single","multiple"]),allowUnsort:n.bool})]),onSortChange:n.func,sort:n.array,columns:n.arrayOf(n.object),columnVirtualization:n.bool,filter:n.array,onFilterChange:n.func,filterRow:n.any,toolbar:n.any,noRecords:n.any,onExpandChange:n.func,expandField:n.string,subItemsField:n.string,selectedField:n.string,onSelectionChange:n.func,onHeaderSelectionChange:n.func,onRowClick:n.func,onItemChange:n.func,editField:n.string,scrollable:n.oneOf(["none","scrollable","virtual"]),rowHeight:n.number,style:n.object,tableProps:n.object,pager:n.any,skip:n.number,take:n.number,onPageChange:n.func,onDataStateChange:n.func,onColumnResize:n.func,onColumnReorder:n.func,extendedColumns:n.arrayOf(n.object),columnsMap:n.arrayOf(n.array),dataItemKey:n.string.isRequired,afterContent:n.any,navigatable:n.bool,idPrefix:n.string,treelistId:n.string},Te.contextType=r.TableKeyboardNavigationContext;let xe=Te;const Fe=D.forwardRef(((e,t)=>{const{slotLevels:n,slotWidth:a,timelineHeaderCell:l}=e,{columns:s,noRecords:i,resizable:d,reorderable:c,sortable:u,sort:m,filter:p,columnMenuFilter:g,columnMenu:h,navigatable:f,row:k,selectable:y}=ie(),{onDataStateChange:v,onSortChange:C,onFilterChange:E,onColumnMenuFilterChange:b,onExpandChange:I,onRowClick:w,onRowDoubleClick:S,onRowContextMenu:R,onColumnResize:F,onColumnReorder:N,onDependencyCreate:z,onKeyDown:L,onSelectionChange:W,onHeaderSelectionChange:H}=D.useContext(ke),K=he(),V=D.useContext(fe),O=oe(),A=le(),P=D.useContext(te),B=D.useContext(ne),G=D.useRef(null),_=D.useRef(null),$=D.useRef(null),q=D.useRef(null),Z=D.useRef(0),U=D.useRef(o.useId()),j=D.useRef(o.useId()),Y=D.useRef(null),X=D.useRef(null),Q=D.useCallback((e=>{$.current&&$.current.scrollIntoView(e)}),[]);D.useImperativeHandle(X,(()=>({scrollIntoView:Q}))),D.useImperativeHandle(t,(()=>X.current));const J=D.useRef(0),ee=D.useRef(0),ae=D.useRef(0),re=D.useRef(0),se=D.useRef(null),de=D.useRef(null),[ce,ue]=D.useState(null),me=((e,t,n)=>{const a=n;return D.createElement("table",{className:"k-table k-table-md",ref:t,"aria-hidden":!0},D.createElement("tbody",{className:"k-table-tbody"},e.map(((e,t)=>D.createElement("tr",{className:"k-table-row",key:t},e.map(((e,n)=>D.createElement("td",{key:e.range.start.getTime(),colSpan:e.span,className:o.classNames("k-table-th",{"k-header":!0,"k-nonwork-hour":!e.isWork})},a?D.createElement(a,{rowIndex:t,index:n,range:e.range,text:e.text,isWork:e.isWork,type:e.type}):e.text))))))))})(n,G,l),pe=((e,t)=>{const n=e[e.length-1];return D.createElement("table",{className:"k-table k-table-md k-gantt-columns",ref:t,"aria-hidden":!0},D.createElement("tbody",{className:"k-table-tbody"},D.createElement("tr",{className:"k-table-row"},n.map((e=>D.createElement("td",{key:e.range.start.getTime(),colSpan:e.span,className:o.classNames("k-table-td",{"k-nonwork-hour":!e.isWork})}))))))})(n,_),ge=((e,t)=>{const n=e[e.length-1];let a=0,o=0;return n.forEach((e=>{const t=e.span;o+=t,t>a&&(a=t)})),Math.round(o*t/a)})(n,a),{extendedColumns:ye,columnsWidth:ve,columnsMap:Ce}=D.useMemo((()=>{const e=r.readColumns([...s,{title:"",sortable:!1,resizable:!1,reorderable:!1,width:ge,headerCell:()=>me,cell:Se,orderIndex:Number.MAX_SAFE_INTEGER,navigatable:!1}],{prevId:0,idPrefix:U.current});let t=0;return e.forEach(((e,n,a)=>{const o=n+1===a.length,r=0===e.children.length;o?e.isAccessible=!1:(e.locked=!0,r&&(e.width=e.width||T)),r&&(t+=parseFloat(String(e.width)))})),{extendedColumns:e,columnsWidth:t,columnsMap:r.mapColumns(e)}}),[s,ge]),[De,Ee]=(()=>{const e=D.useRef({}),t=D.useCallback((t=>{switch(t.type){case 0:e.current[t.id]=t.itemRef;break;case 1:delete e.current[t.id]}}),[]);return[e,t]})(),be=D.useCallback((()=>G.current&&G.current.parentElement),[]),we=()=>{const e=be(),t=_.current,n=$.current&&$.current.tbodyElement;if(!e||!t||!n)return;const a=n.offsetTop,o=e.offsetLeft,r=ge;t.style.top=a+"px",t.style.left=o+"px",t.style.width=r+"px",t.style.height=n.offsetHeight+"px"};D.useEffect(we),D.useEffect((()=>{const e=be();e&&(Z.current=e.offsetLeft)}));const Te=D.useCallback((e=>{if(!q.current)return;const t=e.columns.slice(0,e.columns.length-1);if(e.end)q.current.style.left="0px";else{const e=be();if(!e)return;q.current.style.left=e.offsetLeft-Z.current+"px",we()}F({...e,columns:t})}),[F]),Fe=D.useCallback((e=>{const t=e.columns.slice(0,e.columns.length-1);N({...e,columns:t})}),[F]),Ne=D.useCallback((e=>{const t=(Y.current&&Y.current.ownerDocument?Y.current.ownerDocument:document).elementFromPoint(e.clientX,e.clientY),n=Y.current;if(!t||!t.parentElement||!n)return;const a=n.parentElement,o=n.firstElementChild;if(!a||!o)return;const r=t.getAttribute(x);if(r){const l=n.offsetTop,s=n.offsetLeft,i=a.offsetTop,d=a.offsetLeft,c=o.scrollTop,u=o.scrollLeft;ae.current=s+d,re.current=l+i,J.current=e.clientX-ae.current+u,ee.current=e.clientY-re.current+c,se.current=t.parentElement.getAttribute(M),de.current=r}}),[]),Me=D.useCallback((e=>{const t=Y.current;if(!t)return;const n=t.firstElementChild;if(!n)return;const a=n.scrollTop,o=n.scrollLeft,r=e.clientX-ae.current+o,l=e.clientY-re.current+a;Math.abs(J.current-r)<10&&Math.abs(ee.current-l)<10||ue({startX:J.current,startY:ee.current,endX:r,endY:l})}),[]),ze=D.useCallback((e=>{const t=(Y.current&&Y.current.ownerDocument?Y.current.ownerDocument:document).elementFromPoint(e.clientX,e.clientY);if(!t||!t.parentElement)return;const n=t.parentElement.getAttribute(M),a=t.getAttribute(x);if(a&&n!==se.current&&z){let e;e="start"===de.current?"start"===a?3:2:"start"===a?1:0,z({fromId:se.current,toId:n,type:e})}J.current=0,ee.current=0,ae.current=0,re.current=0,se.current=null,de.current=null,ue(null)}),[z,ue]);return D.createElement(Ie,{tasksStore:[De,Ee],timelineWidth:ge,dependencyDrag:{isEnabled:!!z,draggedId:se.current,onDependencyHandlePress:Ne,onDependencyHandleDrag:Me,onDependencyHandleRelease:ze}},D.createElement("div",{className:"k-gantt-content",ref:Y,style:{height:`calc(100% - ${V}px)`}},D.createElement(xe,{treelistId:j.current,ref:$,extendedColumns:ye,columnsMap:Ce,dataItemKey:O.id,data:P,idPrefix:U.current,navigatable:f,expandField:O.isExpanded,subItemsField:O.children,editField:O.isInEdit,selectedField:O.isSelected,onDataStateChange:v,onSortChange:C,onFilterChange:E,onExpandChange:I,onRowClick:w,onRowDoubleClick:S,onRowContextMenu:R,onColumnResize:Te,onColumnReorder:Fe,onColumnMenuFilterChange:b,onKeyDown:L,onSelectionChange:W,onHeaderSelectionChange:H,tableProps:{style:{width:ve},className:"k-table k-table-md k-table-layout-fixed"},noRecords:i,rowHeight:K,resizable:d,reorderable:c,sortable:u,sort:m,filter:p,columnMenuFilter:g,columnMenu:h,row:k,selectable:y,afterContent:D.createElement(D.Fragment,null,D.createElement("svg",{className:"k-gantt-dependencies-svg",ref:q,style:{left:0,top:0}},B.map((e=>D.createElement(Re,{key:o.getter(A.id)(e),dependency:e})))),D.createElement("svg",{className:"k-gantt-dependencies-svg",style:{left:0,top:0,zIndex:3}},ce&&D.createElement("polyline",{points:`${ce.startX},${ce.startY} ${ce.endX},${ce.endY}`})),P&&P.length?pe:null)})))}));Fe.displayName="KendoReactGanttBaseView";const Ne="gantt.weekViewTitle",Me="gantt.dayViewTitle",ze="gantt.monthViewTitle",Le="gantt.yearViewTitle",We="gantt.filterClearButton",He="gantt.filterEqOperator",Ke="gantt.filterNotEqOperator",Ve="gantt.filterIsNullOperator",Oe="gantt.filterIsNotNullOperator",Ae="gantt.filterIsEmptyOperator",Pe="gantt.filterIsNotEmptyOperator",Be="gantt.filterStartsWithOperator",Ge="gantt.filterContainsOperator",_e="gantt.filterNotContainsOperator",$e="gantt.filterEndsWithOperator",qe="gantt.filterGteOperator",Ze="gantt.filterGtOperator",Ue="gantt.filterLteOperator",je="gantt.filterLtOperator",Ye="gantt.filterIsTrue",Xe="gantt.filterIsFalse",Qe="gantt.filterBooleanAll",Je="gantt.filterAfterOrEqualOperator",et="gantt.filterAfterOperator",tt="gantt.filterBeforeOperator",nt="gantt.filterBeforeOrEqualOperator",at="gantt.editSave",ot="gantt.editCancel",rt="gantt.editAdd",lt="gantt.editRemove",st="gantt.editTabGeneral",it="gantt.editTabPredecessors",dt="gantt.editTabSuccessors",ct="gantt.editorTitle",ut="gantt.editorTaskTitle",mt="gantt.editorTaskStart",pt="gantt.editorTaskEnd",gt="gantt.editorTaskComplete",ht="gantt.editorTaskParent",ft="gantt.editorValidationRequired",kt="gantt.editorValidationStart",yt="gantt.editorValidationEnd",vt="gantt.editorValidationPercentCompleteRange",Ct="gantt.editorDependencyTypesFF",Dt="gantt.editorDependencyTypesSF",Et="gantt.editorDependencyTypesFS",bt="gantt.editorDependencyTypesSS",It="gantt.addTask",wt="gantt.addChild",St="gantt.addAbove",Rt="gantt.addBelow",Tt="gantt.viewSelector",xt="gantt.editorDelete",Ft="gantt.deleteConfirmation",Nt="gantt.deleteDialogTitle",Mt="gantt.editorDependencyNameLabel",zt="gantt.editorDependencyTypeLabel",Lt={[Ne]:"Week",[Me]:"Day",[ze]:"Month",[Le]:"Year",[We]:"Clear",[He]:"Is equal to",[Ke]:"Is not equal to",[Ve]:"Is null",[Oe]:"Is not null",[Ae]:"Is empty",[Pe]:"Is not empty",[Be]:"Starts with",[Ge]:"Contains",[_e]:"Does not contain",[$e]:"Ends with",[qe]:"Is greater than or equal to",[Ze]:"Is greater than",[Ue]:"Is less than or equal to",[je]:"Is less than",[Ye]:"Is true",[Xe]:"Is false",[Qe]:"(All)",[Je]:"Is after or equal to",[et]:"Is after",[tt]:"Is before",[nt]:"Is before or equal to","gantt.noRecords":"No records available",[at]:"Save",[ot]:"Cancel",[rt]:"Add",[lt]:"Remove",[st]:"General",[it]:"Predecessors",[dt]:"Successors",[ct]:"Edit task",[ut]:"Title",[mt]:"Start",[pt]:"End","gantt.editorTaskPlannedStart":"Planned Start Date","gantt.editorTaskPlannedEnd":"Planned End Date","gantt.editorTaskActualStart":"Actual Start Date","gantt.editorTaskActualEnd":"Actual End Date",[gt]:"Complete",[ht]:"Parent",[ft]:"Field is required.",[kt]:"Start time must be be before End time.",[yt]:"End time must be after Start time.",[vt]:"Value should be between 0 and 100.",[Ct]:"Finish-Finish",[Et]:"Finish-Start",[Dt]:"Start-Finish",[bt]:"Start-Start",[It]:"Add Task",[wt]:"Add Child",[St]:"Add Above",[Rt]:"Add Below",[Tt]:"View Selector",[xt]:"Delete",[Ft]:"Are you sure you want to delete this event?",[Nt]:"Delete Event",[Mt]:"Name",[zt]:"Type"},Wt=D.forwardRef(((e,t)=>{const{slotWidth:n=Ht.slotWidth,firstSlotRangeRef:a,timelineHeaderCell:o}=e,{timezone:r}=ie(),l=s.useInternationalization(),i=D.useRef(null),d=D.useRef(null),c=D.useCallback((e=>{d.current&&d.current.scrollIntoView(e)}),[]);D.useImperativeHandle(i,(()=>({scrollIntoView:c}))),D.useImperativeHandle(t,(()=>i.current));const u=ce(),m=e.workWeekStart||Ht.workWeekStart,p=e.workWeekEnd||Ht.workWeekEnd,g=D.useMemo((()=>{const e=q({workWeekStart:m,workWeekEnd:p}),t=[],n=Y(u,{timezone:r},l);return n.forEach((n=>{const a=j(n.range,{workDays:e,timezone:r},l);t.push.apply(t,a)})),a&&t[0]&&(a.current=t[0].range),[n,t]}),[r,u.start.getTime(),u.end.getTime(),l,m,p]);return D.createElement(Fe,{ref:d,slotWidth:n,slotLevels:g,timelineHeaderCell:o})})),Ht={name:"week",dateRange:({intl:e,tasksStart:t,tasksEnd:n,timezone:o})=>{const r=a.ZonedDate.fromLocalDate(t,o),l=a.ZonedDate.fromLocalDate(n,o),s=A(a.firstDayInWeek(a.getDate(r),e.firstDay())),i=P(a.firstDayInWeek(a.getDate(l),e.firstDay()),7),d=a.ZonedDate.fromUTCDate(B(s),o),c=a.ZonedDate.fromUTCDate(B(i),o);return{start:new Date(d.getTime()),end:new Date(c.getTime()),zonedStart:d,zonedEnd:c}},title:e=>e.toLanguageString(Ne,Lt[Ne]),slotWidth:T,workWeekStart:1,workWeekEnd:5,workDayStart:"08:00",workDayEnd:"17:00"};Wt.propTypes={name:n.string,dateRange:n.oneOfType([n.func,n.object]),title:n.oneOfType([n.string,n.func]),slotWidth:n.number,workWeekStart:n.number,workWeekEnd:n.number,workDayStart:n.string,workDayEnd:n.string},Wt.displayName="KendoReactGanttWeekView";const Kt=D.forwardRef(((e,t)=>{const{slotWidth:n=Vt.slotWidth,slotDuration:o=Vt.slotDuration,firstSlotRangeRef:r,timelineHeaderCell:l}=e,{timezone:i}=ie(),d=s.useInternationalization(),c=D.useRef(null),u=D.useRef(null),m=D.useCallback((e=>{u.current&&u.current.scrollIntoView(e)}),[]);D.useImperativeHandle(c,(()=>({scrollIntoView:m}))),D.useImperativeHandle(t,(()=>c.current));const p=ce(),g=e.workWeekStart||Vt.workWeekStart,h=e.workWeekEnd||Vt.workWeekEnd,f=e.workDayStart||Vt.workDayStart,k=e.workDayEnd||Vt.workDayEnd,y=D.useMemo((()=>{const e=q({workWeekStart:g,workWeekEnd:h}),t=[],n=j(p,{workDays:e,timezone:i},d);return n.forEach((e=>{const n=((e,t,n)=>{const o=n.parseDate(t.workDayStart).getHours(),r=n.parseDate(t.workDayEnd).getHours();return U(e,{step:a.MS_PER_MINUTE*t.slotDuration,timezone:t.timezone}).map((e=>{const t=e.zonedStart.getHours();return{range:e,isWork:t>=o&&t<r,span:1,text:n.formatDate(e.zonedStart,"hh:mm a"),type:"time"}}))})(e.range,{workDayStart:f,workDayEnd:k,timezone:i,slotDuration:o},d);e.span=n.length,t.push.apply(t,n)})),r&&t[0]&&(r.current=t[0].range),[n,t]}),[i,p.start.getTime(),p.end.getTime(),d,g,h,f,k]);return D.createElement(Fe,{ref:u,slotWidth:n,slotLevels:y,timelineHeaderCell:l})})),Vt={name:"day",dateRange:({tasksStart:e,tasksEnd:t,timezone:n})=>{const o=a.ZonedDate.fromLocalDate(e,n),r=a.ZonedDate.fromLocalDate(t,n),l=A(o),s=P(r),i=a.ZonedDate.fromUTCDate(B(l),n),d=a.ZonedDate.fromUTCDate(B(s),n);return{start:new Date(i.getTime()),end:new Date(d.getTime()),zonedStart:i,zonedEnd:d}},title:e=>e.toLanguageString(Me,Lt[Me]),slotWidth:T,slotDuration:60,workWeekStart:1,workWeekEnd:5,workDayStart:"08:00",workDayEnd:"17:00"};Kt.propTypes={name:n.string,dateRange:n.oneOfType([n.func,n.object]),title:n.oneOfType([n.string,n.func]),slotWidth:n.number,slotDuration:n.number,workWeekStart:n.number,workWeekEnd:n.number,workDayStart:n.string,workDayEnd:n.string},Kt.displayName="KendoReactGanttDayView";const Ot=D.forwardRef(((e,t)=>{const{slotWidth:n=At.slotWidth,firstSlotRangeRef:a,timelineHeaderCell:o}=e,{timezone:r}=ie(),l=s.useInternationalization(),i=D.useRef(null),d=D.useRef(null),c=D.useCallback((e=>{d.current&&d.current.scrollIntoView(e)}),[]);D.useImperativeHandle(i,(()=>({scrollIntoView:c}))),D.useImperativeHandle(t,(()=>i.current));const u=ce(),m=D.useMemo((()=>{const e=[],t=X(u,{timezone:r},l);return t.forEach((t=>{const n=Y(t.range,{timezone:r},l);e.push.apply(e,n)})),a&&e[0]&&(a.current=e[0].range),[t,e]}),[r,u.start.getTime(),u.end.getTime(),l]);return D.createElement(Fe,{ref:d,slotWidth:n,slotLevels:m,timelineHeaderCell:o})})),At={name:"month",dateRange:({tasksStart:e,tasksEnd:t,timezone:n})=>{const o=a.ZonedDate.fromLocalDate(e,n),r=a.ZonedDate.fromLocalDate(t,n),l=a.firstDayOfMonth(a.getDate(o)),s=a.addDays(a.lastDayOfMonth(a.getDate(r)),1),i=a.ZonedDate.fromUTCDate(B(l),n),d=a.ZonedDate.fromUTCDate(B(s),n);return{start:new Date(i.getTime()),end:new Date(d.getTime()),zonedStart:i,zonedEnd:d}},title:e=>e.toLanguageString(ze,Lt[ze]),slotWidth:T,workWeekStart:1,workWeekEnd:5,workDayStart:"08:00",workDayEnd:"17:00"};Ot.propTypes={name:n.string,dateRange:n.oneOfType([n.func,n.object]),title:n.oneOfType([n.string,n.func]),slotWidth:n.number,workWeekStart:n.number,workWeekEnd:n.number,workDayStart:n.string,workDayEnd:n.string},Ot.displayName="GanttMonthView";const Pt=D.forwardRef(((e,t)=>{const{slotWidth:n=Bt.slotWidth,firstSlotRangeRef:a,timelineHeaderCell:o}=e,{timezone:r}=ie(),l=s.useInternationalization(),i=D.useRef(null),d=D.useRef(null),c=D.useCallback((e=>{d.current&&d.current.scrollIntoView(e)}),[]);D.useImperativeHandle(i,(()=>({scrollIntoView:c}))),D.useImperativeHandle(t,(()=>i.current));const u=ce(),m=D.useMemo((()=>{const e=Q(u,{timezone:r},l),t=[];return e.forEach((e=>{const n=X(e.range,{timezone:r},l);t.push.apply(t,n)})),a&&t[0]&&(a.current=t[0].range),[e,t]}),[r,u.start.getTime(),u.end.getTime(),l]);return D.createElement(Fe,{slotWidth:n,slotLevels:m,timelineHeaderCell:o})})),Bt={name:"year",dateRange:({tasksStart:e,tasksEnd:t,timezone:n})=>{const o=a.ZonedDate.fromLocalDate(e,n),r=a.ZonedDate.fromLocalDate(t,n),l=a.firstDayOfMonth(a.firstMonthOfYear(a.getDate(o))),s=a.addDays(a.lastDayOfMonth(a.lastMonthOfYear(a.getDate(r))),1),i=a.ZonedDate.fromUTCDate(B(l),n),d=a.ZonedDate.fromUTCDate(B(s),n);return{start:new Date(i.getTime()),end:new Date(d.getTime()),zonedStart:i,zonedEnd:d}},title:e=>e.toLanguageString(Le,Lt[Le]),slotWidth:T};Pt.propTypes={name:n.string,dateRange:n.oneOfType([n.func,n.object]),title:n.oneOfType([n.string,n.func]),slotWidth:n.number},Pt.displayName="GanttYearView";const Gt=e=>{const[t,n]=pe(),a=s.useLocalization(),o=D.useMemo((()=>"function"==typeof e.view.title?e.view.title.call(void 0,a):e.view.title),[e.view.title,a]),r=D.useCallback((()=>{e.view.name&&n(e.view.name)}),[n,e.view.name]);return D.createElement(d.Button,{role:"button",type:"button",tabIndex:-1,togglable:!0,selected:e.view.name===t,onClick:r},o)};Gt.displayName="KendoReactGanttViewSelectorItem";const _t=D.forwardRef((()=>{const e=D.useContext(ue),[t,n]=pe(),a=s.useLocalization(),o=D.useCallback((e=>{n&&(e.preventDefault(),n(e.target.value))}),[n]);return D.createElement("div",{className:"k-gantt-views-wrapper"},D.createElement(d.ButtonGroup,{className:"k-gantt-views"},e.map((e=>D.createElement(Gt,{key:e.props.name,view:e.props})))),D.createElement("select",{value:t,onChange:o,"aria-label":(e=>a.toLanguageString(e,Lt[e]))(Tt),className:"k-picker k-picker-solid k-dropdown-list k-dropdown k-views-dropdown k-rounded-md"},e.map((e=>D.createElement("option",{key:e.props.name,value:e.props.name},"function"==typeof e.props.title?e.props.title.call(void 0,a):e.props.title)))))}));_t.displayName="KendoReactGanttViewSelectorList";const $t=D.forwardRef(((e,t)=>{const{className:n,...a}=e,r=D.useRef(null);return D.useImperativeHandle(t,(()=>({element:r.current,props:e}))),D.createElement(d.ToolbarItem,{ref:e=>{e&&(r.current=e.element)},className:o.classNames("k-gantt-views",n),...a},e.children)}));$t.displayName="KendoReactGanttViewSelector";const qt=D.forwardRef(((e,t)=>{const{className:n,...a}=e,r=D.useRef(null),l=D.useRef(null);D.useImperativeHandle(l,(()=>({element:r.current,props:e}))),D.useImperativeHandle(t,(()=>l.current));const s=D.useMemo((()=>o.classNames("k-gantt-toolbar k-gantt-header",n)),[n]);return D.createElement(d.Toolbar,{ref:e=>{e&&(r.current=e.element)},className:s,...a},e.children)}));qt.displayName="KendoReactGanttToolbar";const Zt=Object.freeze({name:"@progress/kendo-react-gantt",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate:0,version:"12.0.2-develop.3",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"}),Ut=D.forwardRef(((e,t)=>{const n=s.useLocalization(),a=e=>n.toLanguageString(e,Lt[e]),r=a(It),l=a(wt),c=a(St),u=a(Rt),m=D.useCallback((t=>{t.syntheticEvent.preventDefault();const n=t.item&&t.item.direction?t.item.direction:"none";e.onClick&&e.onClick({nativeEvent:t.nativeEvent,syntheticEvent:t.syntheticEvent,direction:n})}),[e.onClick]),p=D.useCallback((t=>{t.preventDefault(),e.onClick&&e.onClick({nativeEvent:t&&t.nativeEvent,syntheticEvent:t,direction:"none"})}),[e.onClick]),g=D.createElement(D.Fragment,null,D.createElement(o.IconWrap,{name:"plus",icon:i.plusIcon}),r);return e.selectedTask?D.createElement(d.DropDownButton,{className:"k-views-dropdown",onItemClick:m,popupSettings:{popupClass:"k-gantt-toolbar"},textField:"title",items:[{title:l,direction:"child"},{title:c,direction:"above"},{title:u,direction:"below"}],text:g}):D.createElement(d.Button,{onClick:p},g)}));Ut.displayName="KendoReactGanttAddButton";const jt=D.forwardRef(((e,t)=>{const n=!o.validatePackage(Zt,{component:"Gantt"}),a=o.getLicenseMessage(Zt),{columns:r=Yt.columns,taskData:i=Yt.taskData,dependencyData:c=Yt.dependencyData,style:u,className:m,noRecords:p,timezone:g,rowHeight:h=Yt.rowHeight,resizable:f,reorderable:k,sortable:y,sort:v,filter:C,columnMenuFilter:E,columnMenu:b,navigatable:I,toolbar:w,row:R,selectable:T}=e,x=new Map;x.set(Kt,Vt),x.set(Ot,At),x.set(Wt,Ht),x.set(Pt,Bt);const F=s.useInternationalization(),{fields:N}=D.useMemo((()=>(e=>({fields:{...z,...e}}))(e.taskModelFields)),[e.taskModelFields]),{fields:M}=D.useMemo((()=>(e=>({fields:{...L,...e}}))(e.dependencyModelFields)),[e.dependencyModelFields]),W=D.useCallback(((e,t)=>n=>J(n,e)&&ee(n,t)?[...o.getter(t)(n)]:[])(N.isExpanded,N.children),[N.isExpanded,N.children]),H=D.useRef(null),K=D.useRef(null),V=D.useRef(null),O=D.useRef(null),A=D.useRef(null),P=D.useCallback((e=>{const t=o.getter(N.start)(e),n=o.getter(N.end)(e),a=o.getter(N.isSelected)(e);(!K.current||t<K.current)&&(K.current=t),(!V.current||n>V.current)&&(V.current=n),a&&(O.current=e)}),[N.start,N.end]),B=D.useMemo((()=>(K.current=null,V.current=null,O.current=null,l.flatData(i,W,P))),[i,W]);(!K.current||!V.current)&&(K.current=new Date(S),V.current=new Date(S));const G=D.Children.toArray(e.children||[]).map((e=>{var t;return D.isValidElement(e)?D.cloneElement(e,{...x.get(e.type),...null!=(t=e.props)?t:{}}):e})),_=D.cloneElement(D.createElement(Wt,null),x.get(Wt)),$=G.length?G[0]:_,[q,Z]=((e,t,n)=>{const[a,o]=D.useState(t||e),r=D.useCallback(((e,t)=>{o(e),n&&n.call(void 0,{...t,value:e})}),[n,o]);return[void 0!==t?t:a,r]})(e.defaultView||$.props.name,e.view,e.onViewChange),U=G.find((e=>e.props.name===q))||$,j="function"==typeof U.props.dateRange?U.props.dateRange.call(void 0,{intl:F,tasksStart:K.current,tasksEnd:V.current,timezone:g}):U.props.dateRange,Y=D.useRef(null),[X,Q]=D.useState(0);o.useIsomorphicLayoutEffect((()=>{Y.current&&Q(Y.current.element.offsetHeight)}),[]);const te=D.useCallback((e=>{H.current&&H.current.scrollIntoView(e)}),[]),ne=D.useRef(null),ae=D.useRef(null);D.useImperativeHandle(ae,(()=>({props:e,element:ne.current,scrollIntoView:te}))),D.useImperativeHandle(t,(()=>ae.current));const oe=D.useCallback((t=>{e.onDataStateChange&&e.onDataStateChange.call(void 0,{...t,target:ae.current})}),[e.onDataStateChange]),re=D.useCallback((t=>{e.onSortChange&&e.onSortChange.call(void 0,{...t,target:ae.current})}),[e.onSortChange]),le=D.useCallback((t=>{e.onKeyDown&&e.onKeyDown.call(void 0,{...t,target:ae.current})}),[e.onKeyDown]),se=D.useCallback((t=>{e.onSelectionChange&&e.onSelectionChange.call(void 0,{...t,target:ae.current})}),[e.onSelectionChange]),ie=D.useCallback((t=>{e.onHeaderSelectionChange&&e.onHeaderSelectionChange.call(void 0,{...t,target:ae.current})}),[e.onHeaderSelectionChange]),de=D.useCallback((t=>{e.onFilterChange&&e.onFilterChange.call(void 0,{...t,target:ae.current})}),[e.onFilterChange]),ce=D.useCallback((t=>{e.onColumnMenuFilterChange&&e.onColumnMenuFilterChange.call(void 0,{...t,target:ae.current})}),[e.onColumnMenuFilterChange]),ue=D.useCallback((t=>{e.onExpandChange&&e.onExpandChange.call(void 0,{...t,target:ae.current})}),[e.onExpandChange]),me=D.useCallback((t=>{e.onAddClick&&e.onAddClick.call(void 0,{...t,target:ae.current,selectedDataItem:O.current,slotStart:A.current&&new Date(A.current.start.getTime()),slotEnd:A.current&&new Date(A.current.end.getTime())})}),[e.onAddClick]),pe=D.useCallback((t=>{e.onColumnResize&&e.onColumnResize.call(void 0,{...t,target:ae.current})}),[e.onColumnResize]),ge=D.useCallback((t=>{e.onColumnReorder&&e.onColumnReorder.call(void 0,{...t,target:ae.current})}),[e.onColumnReorder]),he=D.useCallback((t=>{e.onRowClick&&e.onRowClick.call(void 0,{...t,target:ae.current})}),[e.onRowClick]),fe=D.useCallback((t=>{e.onRowDoubleClick&&e.onRowDoubleClick.call(void 0,{...t,target:ae.current})}),[e.onRowClick]),ke=D.useCallback((t=>{e.onRowContextMenu&&e.onRowContextMenu.call(void 0,{...t,target:ae.current})}),[e.onRowClick]),ye=D.useCallback((t=>{e.onTaskClick&&e.onTaskClick.call(void 0,{...t,target:ae.current})}),[e.onTaskClick]),Ce=D.useCallback((t=>{e.onTaskDoubleClick&&e.onTaskDoubleClick.call(void 0,{...t,target:ae.current})}),[e.onTaskDoubleClick]),De=D.useCallback((t=>{e.onTaskContextMenu&&e.onTaskContextMenu.call(void 0,{...t,target:ae.current})}),[e.onTaskContextMenu]),Ee=D.useCallback((t=>{e.onTaskRemoveClick&&e.onTaskRemoveClick.call(void 0,{...t,target:ae.current})}),[e.onTaskRemoveClick]),be=D.useCallback((t=>{if(e.onDependencyCreate){let n,a;const r=o.getter(N.id);for(let e=0;e<B.length;e++){const o=r(B[e].dataItem);if(String(o)===t.fromId&&(n=o),String(o)===t.toId&&(a=o),n&&a)break}e.onDependencyCreate.call(void 0,{fromId:n,toId:a,target:ae.current,type:t.type})}}),[e.onDependencyCreate,N,B]);return D.createElement(ve,{dateRange:j,taskData:B,dependencyData:c,taskModelFields:N,dependencyModelFields:M,views:G,activeView:[q,Z],rowHeight:h,toolbarHeight:X,props:{columns:r,noRecords:p,timezone:g,resizable:f,reorderable:k,sortable:y,sort:v,filter:C,columnMenuFilter:E,columnMenu:b,navigatable:I,row:R,selectable:T},events:{onDataStateChange:oe,onSortChange:re,onFilterChange:de,onColumnMenuFilterChange:ce,onExpandChange:ue,onRowClick:he,onRowDoubleClick:fe,onRowContextMenu:ke,onColumnResize:pe,onColumnReorder:ge,onDependencyCreate:e.onDependencyCreate&&be,onKeyDown:le,onSelectionChange:se,onHeaderSelectionChange:ie},taskEvents:{onTaskClick:ye,onTaskDoubleClick:Ce,onTaskContextMenu:De,onTaskRemoveClick:e.onTaskRemoveClick&&Ee}},D.createElement("div",{ref:ne,role:"application",style:u,className:o.classNames("k-gantt",m)},D.createElement(qt,{ref:Y},w&&w.addTaskButton?D.createElement(Ut,{selectedTask:O.current,onClick:me}):null,D.createElement(d.ToolbarSpacer,null),D.createElement($t,null,D.createElement(_t,null))),U&&D.createElement(U.type,{key:U.props.name,ref:H,...U.props,firstSlotRangeRef:A}),n&&D.createElement(o.WatermarkOverlay,{message:a})))})),Yt={taskData:[],dependencyData:[],columns:[],rowHeight:40};jt.propTypes={taskData:n.array,taskModelFields:n.shape({id:n.string,start:n.string,end:n.string,title:n.string,percentComplete:n.string,parentId:n.string,isRollup:n.string,isExpanded:n.string,children:n.string,isInEdit:n.string}),dependencyData:n.array,dependencyModelFields:n.shape({id:n.string,fromId:n.string,toId:n.string,type:n.string}),columns:n.arrayOf(n.shape({width:n.number,cell:n.any,editCell:n.any,headerCell:n.any,filter:n.any,children:n.any,field:n.string,title:n.string,sortable:n.any,expandable:n.bool,headerSelectionValue:n.bool,format:n.string,headerClassName:n.string,className:n.string,resizable:n.bool,reorderable:n.bool,minResizableWidth:n.number,orderIndex:n.number,columnMenu:n.any})),sort:n.array,filter:n.array,columnMenuFilter:n.array,columnMenu:n.any,style:n.object,className:n.string,children:n.any,timezone:n.string,defaultView:n.string,view:n.string,rowHeight:n.number,navigatable:n.bool,onViewChange:n.func,onDataStateChange:n.func,onSortChange:n.func,onFilterChange:n.func,onExpandChange:n.func,onRowClick:n.func,onColumnResize:n.func,onColumnReorder:n.func},jt.displayName="KendoReactGantt";const Xt=[{text:Ge,operator:"contains"},{text:_e,operator:"doesnotcontain"},{text:He,operator:"eq"},{text:Ke,operator:"neq"},{text:Be,operator:"startswith"},{text:$e,operator:"endswith"},{text:Ve,operator:"isnull"},{text:Oe,operator:"isnotnull"},{text:Ae,operator:"isempty"},{text:Pe,operator:"isnotempty"}],Qt=[{text:He,operator:"eq"},{text:Ke,operator:"neq"},{text:qe,operator:"gte"},{text:Ze,operator:"gt"},{text:Ue,operator:"lte"},{text:je,operator:"lt"},{text:Ve,operator:"isnull"},{text:Oe,operator:"isnotnull"}],Jt=[{text:He,operator:"eq"},{text:Ke,operator:"neq"},{text:Je,operator:"gte"},{text:et,operator:"gt"},{text:tt,operator:"lt"},{text:nt,operator:"lte"},{text:Ve,operator:"isnull"},{text:Oe,operator:"isnotnull"}],en=[{text:Qe,operator:""},{text:Ye,operator:!0},{text:Xe,operator:!1}];function tn(e,t){return{clearButtonTitle:e.toLanguageString(We,Lt[We]),operators:t.map((t=>({text:e.toLanguageString(t.text,Lt[t.text]),operator:t.operator})))}}const nn=e=>{const{operators:t,...n}=e;return D.createElement(r.TextFilterCell,{ariaLabel:"text filter",...tn(s.useLocalization(),t||Xt),...n})};nn.displayName="KendoReactGanttTextFilter";const an=e=>{const{operators:t,...n}=e;return D.createElement(r.NumericFilterCell,{ariaLabel:"numeric filter",...tn(s.useLocalization(),t||Qt),...n})};an.displayName="KendoReactGanttNumericFilter";const on=e=>{const{operators:t,...n}=e;return D.createElement(r.BooleanFilterCell,{ariaLabel:"boolean filter",...tn(s.useLocalization(),t||en),...n})};on.displayName="KendoReactGanttBooleanFilter";const rn=e=>{const{operators:t,...n}=e;return D.createElement(r.DateFilterCell,{ariaLabel:"date filter",...tn(s.useLocalization(),t||Jt),...n})};rn.displayName="KendoReactGanttDateFilter";const ln=(e,t)=>{cn(e,t),un(e,t),mn(e,t)},sn=(e,t,n)=>{const a=o.getter(t.children),r=o.setter(t.children);for(let t=e.length-1;t>=0;t--){const o=e[t],l=a(o);if(n.parentId===o.id){const e=l.filter((e=>e.parentId===o.id));r(o,e)}}},dn=(e,t,n)=>{const a=o.getter(t.children),r=o.setter(t.children);return null===n.parentId?[...e,n]:(e=K(e,t.children,(e=>{if(e.id===n.parentId){const t=a(e)||[];r(e,[...t,n])}return{...e}})),e)},cn=(e,t)=>{if(!e.length)return;const n=o.getter(t.children),a=o.getter(t.start),r=o.setter(t.start);for(let t=e.length-1;t>=0;t--){const o=e[t],l=n(o);if(l&&l.length){const e=l.reduce(((e,t)=>Math.min(e,a(t).getTime())),a(l[0]).getTime());r(o,new Date(e))}}},un=(e,t)=>{if(!e.length)return;const n=o.getter(t.children),a=o.getter(t.end),r=o.setter(t.end);for(let t=e.length-1;t>=0;t--){const o=e[t],l=n(o);if(l&&l.length){const e=l.reduce(((e,t)=>Math.max(e,a(t).getTime())),a(l[0]).getTime());r(o,new Date(e))}}},mn=(e,t)=>{if(!e.length)return;const n=o.getter(t.children),a=o.getter(t.percentComplete),r=o.setter(t.percentComplete),l=({avg:e,n:t},n)=>({avg:((a(n)||0)+t*e)/(t+1),n:t+1});for(let t=e.length-1;t>=0;t--){const a=e[t],o=n(a);if(o&&o.length){r(a,o.reduce(l,{avg:0,n:0}).avg)}}},pn=(e,t,n)=>{if(!e)return;const a=o.getter(t.children),r=o.getter(t.start),l=o.setter(t.start),s=o.getter(t.end),i=o.setter(t.end),d=e.map((e=>({task:e,childrenIndex:0})));for(;d.length>0;){const e=d[d.length-1],t=e.task,o=a(t);o&&o.length&&o.length>e.childrenIndex?(d.push({task:o[e.childrenIndex],childrenIndex:0}),e.childrenIndex++):(d.pop(),l(t,new Date(r(t).getTime()+n)),i(t,new Date(s(t).getTime()+n)))}},gn=e=>{const{validationMessage:t,touched:n,label:a,id:o,valid:r,disabled:l,hint:s,type:i,optional:d,...c}=e,m=n&&t,h=!m&&s,f=h?`${o}_hint`:"",k=m?`${o}_error`:"";return D.createElement(u.FieldWrapper,{className:"k-col-span-full"},D.createElement(p.Label,{editorId:o,editorValid:r,editorDisabled:l,optional:d},a),D.createElement("div",{className:"k-form-field-wrap"},D.createElement(g.Input,{valid:r,type:i,id:o,disabled:l,ariaDescribedBy:`${f} ${k}`,...c}),h&&D.createElement(p.Hint,{id:f},s),m&&D.createElement(p.Error,{id:k},t)))},hn=e=>{const{validationMessage:t,touched:n,label:a,id:o,valid:r,disabled:l,hint:s,wrapperStyle:i,...d}=e,c=n&&t,m=!c&&s,g=m?`${o}_hint`:"",h=c?`${o}_error`:"",k=a?`${o}_label`:"";return D.createElement(u.FieldWrapper,{style:i,className:"k-col-span-2"},D.createElement(p.Label,{id:k,editorId:o,editorValid:r,editorDisabled:l},a),D.createElement("div",{className:"k-form-field-wrap"},D.createElement(f.DateTimePicker,{ariaLabelledBy:k,ariaDescribedBy:`${g} ${h}`,valid:r,id:o,disabled:l,...d}),m&&D.createElement(p.Hint,{id:g},s),c&&D.createElement(p.Error,{id:h},t)))},fn=e=>{const{validationMessage:t,visited:n,label:a,id:o,valid:r,disabled:l,hint:s,...i}=e,d=n&&t,c=!d&&s,m=c?`${o}_hint`:"",h=d?`${o}_error`:"";return D.createElement(u.FieldWrapper,null,D.createElement(p.Label,{editorId:o,editorValid:r,editorDisabled:l},a),D.createElement("div",{className:"k-form-field-wrap"},D.createElement(g.NumericTextBox,{ariaDescribedBy:`${m} ${h}`,valid:r,id:o,disabled:l,format:"p0",step:.01,...i}),c&&D.createElement(p.Hint,{id:m},s),d&&D.createElement(p.Error,{id:h},t)))},kn=e=>{const{validationMessage:t,touched:n,label:a,id:o,valid:r,disabled:l,hint:s,idField:i,dataItem:d,...c}=e,m=[],g=n&&t,h=!g&&s,f=h?`${o}_hint`:"",y=g?`${o}_error`:"",v=D.useCallback((t=>{if(!t||!t.children)return e.data;for(const e of t.children)m.push(e),e.children&&v(e);const n=m.map((e=>e.id));return e.data.filter((e=>!n.includes(e.id)))}),[e.data]),C=v(d),E=D.useMemo((()=>C.map((e=>{const t=new Date(e.start).toLocaleDateString(),n=new Date(e.end).toLocaleDateString();return{...e,title:`${e.title} (${t}-${n})`}}))),[v]),b=D.useMemo((()=>k.findByFieldValue(E,i,e.value)),[E,i,e.value]);return D.createElement(u.FieldWrapper,{className:"k-col-span-full"},D.createElement(p.Label,{editorId:o,editorValid:r,editorDisabled:l},a),D.createElement("div",{className:"k-form-field-wrap"},D.createElement(k.DropDownList,{textField:"title",ariaDescribedBy:`${f} ${y}`,valid:r,id:o,disabled:l,...c,value:b,data:E,onChange:t=>{null===t.value.id?e.onChange({value:null}):e.onChange({value:t.value[i]})},defaultItem:{id:null,title:"-None-",parentId:null}}),h&&D.createElement(p.Hint,{id:f},s),g&&D.createElement(p.Error,{id:y},t)))},yn=e=>{const{selectedItem:t,updateDependency:n,flatTasks:a}=D.useContext(Cn),r=e.dataItem,[l,s]=D.useState(a),i=D.useRef(null),d=D.useMemo((()=>k.findByFieldValue(a,"id",r.fromId)),[a,r.fromId]);return D.createElement("td",{ref:i,className:o.classNames((t&&!r.uid?t.id===r.id:t&&null===r.id?t.uid===r.uid:void 0)&&"k-selected")},D.createElement(k.DropDownList,{textField:"title",data:l,value:d,onChange:e=>{n(r,"fromId",e.target.value.id)},filterable:!0,onFilterChange:e=>{const t=v.filterBy(a,e.filter);s(t)},required:!0}))},vn=e=>{const{selectedItem:t,updateDependency:n,dependencyTypes:a}=D.useContext(Cn),r=e.dataItem,l=D.useMemo((()=>k.findByFieldValue(a,"type",r.type)),[a,r.type]);return D.createElement("td",{className:o.classNames((t&&!r.uid?t.id===r.id:t&&null===r.id?t.uid===r.uid:void 0)&&"k-selected")},D.createElement(k.DropDownList,{textField:"name",data:a,value:l,onChange:e=>{n(r,"type",e.target.value.type)}}))},Cn=D.createContext({flatTasks:[],dependencyTypes:[],selectedItem:void 0,updateDependency:()=>{}}),Dn=e=>{var t;const[n,a]=D.useState([]),o=s.useLocalization(),r=e=>o.toLanguageString(e,Lt[e]),l=r(rt),c=r(lt),u=r(Mt),m=r(zt),p=D.useMemo((()=>{const t=e.predecessors.map((t=>{const n=k.findByFieldValue(e.flatTasks,"id",t.fromId),a=k.findByFieldValue(e.dependencyTypes,"type",t.type);return{...t,taskTitle:n?n.title:"",typeName:a?a.type:""}}));return v.orderBy(t,n)}),[e.predecessors,e.dependencyTypes,e.flatTasks,n]);return D.createElement(Cn.Provider,{value:{flatTasks:e.flatTasks,dependencyTypes:e.dependencyTypes,selectedItem:e.selectedItem,updateDependency:e.updateDependency}},D.createElement(y.Grid,{data:p,sort:n,sortable:!0,onRowClick:e.onSelectRow,onSortChange:e=>{a(e.sort)},style:{height:"23em"}},D.createElement(y.GridToolbar,null,D.createElement(d.Button,{icon:"plus",svgIcon:i.plusIcon,onClick:e.addPredecessorsDependency},l),D.createElement(d.Button,{icon:"minus",svgIcon:i.minusIcon,onClick:e.deleteDependency,disabled:void 0===(null==(t=e.selectedItem)?void 0:t.id)},c)),D.createElement(y.GridColumn,{field:"taskTitle",title:u,cells:{data:yn}}),D.createElement(y.GridColumn,{field:"typeName",title:m,cells:{data:vn}})))},En=e=>{const{selectedItem:t,updateDependency:n,flatTasks:a}=D.useContext(In),r=e.dataItem,[l,s]=D.useState(a),i=D.useMemo((()=>k.findByFieldValue(a,"id",r.toId)),[a,r.toId]);return D.createElement("td",{className:o.classNames((t&&!r.uid?t.id===r.id:t&&null===r.id?t.uid===r.uid:void 0)&&"k-selected")},D.createElement(k.DropDownList,{textField:"title",data:l,value:i,onChange:e=>{n(r,"toId",e.target.value.id)},filterable:!0,onFilterChange:e=>{const t=v.filterBy(a,e.filter);s(t)},required:!0}))},bn=e=>{const{selectedItem:t,updateDependency:n,dependencyTypes:a}=D.useContext(In),r=e.dataItem,l=D.useMemo((()=>k.findByFieldValue(a,"type",r.type)),[a,r.type]);return D.createElement("td",{className:o.classNames((t&&!r.uid?t.id===r.id:t&&null===r.id?t.uid===r.uid:void 0)&&"k-selected")},D.createElement(k.DropDownList,{textField:"name",data:a,value:l,onChange:e=>{n(r,"type",e.target.value.type)}}))},In=D.createContext({flatTasks:[],dependencyTypes:[],selectedItem:void 0,updateDependency:()=>{}}),wn=e=>{var t;const[n,a]=D.useState([]),o=s.useLocalization(),r=e=>o.toLanguageString(e,Lt[e]),l=r(rt),c=r(lt),u=r(Mt),m=r(zt),p=D.useMemo((()=>{const t=e.successors.map((t=>{const n=k.findByFieldValue(e.flatTasks,"id",t.toId),a=k.findByFieldValue(e.dependencyTypes,"type",t.type);return{...t,taskTitle:n?n.title:"",typeName:a?a.type:""}}));return v.orderBy(t,n)}),[e.successors,e.dependencyTypes,e.flatTasks,n]);return D.createElement(In.Provider,{value:{flatTasks:e.flatTasks,dependencyTypes:e.dependencyTypes,selectedItem:e.selectedItem,updateDependency:e.updateDependency}},D.createElement(y.Grid,{data:p,sort:n,sortable:!0,onRowClick:e.onSelectRow,onSortChange:e=>{a(e.sort)},style:{height:"23em"}},D.createElement(y.GridToolbar,null,D.createElement(d.Button,{icon:"plus",svgIcon:i.plusIcon,onClick:e.addSuccessorsDependency},l),D.createElement(d.Button,{icon:"minus",svgIcon:i.minusIcon,onClick:e.deleteDependency,disabled:void 0===(null==(t=e.selectedItem)?void 0:t.id)},c)),D.createElement(y.GridColumn,{field:"taskTitle",title:u,cells:{data:En}}),D.createElement(y.GridColumn,{field:"type",title:m,cells:{data:bn}})))};var Sn=(e=>(e[e.FF=0]="FF",e[e.FS=1]="FS",e[e.SF=2]="SF",e[e.SS=3]="SS",e))(Sn||{});const Rn=[{type:Sn.FF},{type:Sn.FS},{type:Sn.SF},{type:Sn.SS}],Tn=e=>{const[t,n]=D.useState(0),[a,r]=D.useState(),[i,d]=D.useState([...e.dependencyData||[]]),[c,m]=D.useState([]),p=oe(),g=s.useLocalization(),f=e=>g.toLanguageString(e,Lt[e]),y=f(ut),v=f(mt),C=f(pt),E=f(gt),b=f(ht),I=f(st),w=f(it),S=f(dt),R=f(ft),T=f(kt),x=f(yt),F=f(vt),N=D.useMemo((()=>l.flatData(e.taskData||[],(e=>e.children||[]),(e=>{const t={title:e[p.title],id:e[p.id],start:e[p.start],end:e[p.end],parentId:null};return p.parentId&&(t.parentId=e[p.parentId]),t}))),[e.taskData,p]),M=D.useMemo((()=>N.filter((t=>t.id!==e.dataItem.id))),[N,e.dataItem]),z=D.useMemo((()=>i.filter((t=>t.toId===e.dataItem.id))),[i,e.dataItem]),L=D.useMemo((()=>i.filter((t=>t.fromId===e.dataItem.id))),[i,e.dataItem]),W=D.useMemo((()=>i.filter((e=>null===e.id)).map((e=>({id:e.id,fromId:e.fromId,toId:e.toId,type:e.type})))),[i]),H=D.useMemo((()=>i.filter((e=>null!==e.id&&e.uid)).map((e=>({id:e.id,fromId:e.fromId,toId:e.toId,type:e.type})))),[i]),K=()=>{if(a){if(a.id){const e=i.filter((e=>e.id!==a.id));d(e);const t=i.filter((e=>e.id===a.id));m((e=>[...e,...t]))}else{const e=i.filter((e=>e.uid!==a.uid));d(e);const t=i.filter((e=>e.uid===a.uid));m((e=>[...e,...t]))}r(void 0)}},V=D.useCallback((e=>e||0===e?void 0:R),[R]),O=D.useCallback((e=>e||0===e?e>=0&&e<=1?void 0:F:R),[R,F]),A=D.useCallback(((e,t)=>e&&t(p.end)&&e.getTime()>t(p.end).getTime()?T:void 0),[p,T]),P=D.useCallback(((e,t)=>e&&t(p.start)&&e.getTime()<t(p.start).getTime()?x:void 0),[p,x]),B=D.useMemo((()=>[V,A]),[V,A]),G=D.useMemo((()=>[V,P]),[V,P]),_=D.useMemo((()=>k.findByFieldValue(i,"fromId",null)||k.findByFieldValue(i,"toId",null)),[i]),$=e=>{r(e.dataItem)},q=(e,t,n)=>{const a={...e,uid:e.uid||o.guid(),[t]:n},r=i.findIndex((e=>e.id&&e.id===a.id||e.uid&&e.uid===a.uid));r>-1&&(i.splice(r,1,a),d([...i]))},Z=D.useMemo((()=>Rn.map((e=>{let t;switch(e.type){case Sn.FF:t=f(Ct);break;case Sn.FS:t=f(Et);break;case Sn.SF:t=f(Dt);break;case Sn.SS:t=f(bt);break;default:t=f(Ct)}return{...e,name:t}}))),[f]);D.useEffect((()=>{e.onDependencyCreate&&e.onDependencyCreate.call(void 0,{createdDependencies:W,updatedDependencies:H,deletedDependencies:c})}),[W,H,c,e.onDependencyCreate]);const U=e.dependencyData&&e.taskData,j=D.createElement(u.FormElement,{style:{width:400},horizontal:!0},D.createElement(u.Field,{id:`${p.title}_gantteditor`,name:p.title,label:y,component:gn,validator:V}),D.createElement(u.Field,{id:`${p.start}_gantteditor`,name:p.start,label:v,component:hn,validator:B}),D.createElement(u.Field,{id:`${p.end}_gantteditor`,name:p.end,label:C,component:hn,validator:G}),D.createElement(u.Field,{id:`${p.percentComplete}_gantteditor`,name:p.percentComplete,label:E,component:fn,validator:O})),Y=D.createElement(u.FormElement,{style:{paddingInline:"4px"}},D.createElement("div",{className:"k-form-fieldset"},D.createElement("div",{className:"k-form-layout k-d-grid k-grid-cols-4 k-gap-x-2"},D.createElement(u.Field,{id:`${p.title}_gantteditor`,name:p.title,label:y,component:gn,validator:V}),D.createElement(u.Field,{id:`${p.start}_gantteditor`,name:p.start,label:v,component:hn,validator:B}),D.createElement(u.Field,{id:`${p.end}_gantteditor`,name:p.end,label:C,component:hn,validator:G}),D.createElement(u.Field,{id:`${p.percentComplete}_gantteditor`,name:p.percentComplete,label:E,component:fn,validator:O}),p.parentId&&D.createElement(u.Field,{id:`${p.parentId}_gantteditor`,name:p.parentId||"",idField:p.id,label:b,component:kn,data:M,dataItem:e.dataItem}))));return U?D.createElement(h.TabStrip,{selected:t,onSelect:e=>{_||(n(e.selected),r(void 0))}},D.createElement(h.TabStripTab,{title:I},Y),D.createElement(h.TabStripTab,{title:w},D.createElement(Dn,{flatTasks:N,predecessors:z,dependencyTypes:Z,selectedItem:a,onSelectRow:$,addPredecessorsDependency:()=>{const t={uid:o.guid(),id:null,fromId:null,toId:e.dataItem.id,type:Sn.FS};d([...i,t])},deleteDependency:K,updateDependency:q})),D.createElement(h.TabStripTab,{title:S},D.createElement(wn,{flatTasks:N,successors:L,dependencyTypes:Z,selectedItem:a,onSelectRow:$,addSuccessorsDependency:()=>{const t={uid:o.guid(),id:null,fromId:e.dataItem.id,toId:null,type:Sn.FS};d([...i,t])},deleteDependency:K,updateDependency:q}))):j},xn=l.TreeListRow;Object.defineProperty(e,"getSelectedState",{enumerable:!0,get:function(){return r.getSelectedState}}),Object.defineProperty(e,"getSelectedStateFromKeyDown",{enumerable:!0,get:function(){return r.getSelectedStateFromKeyDown}}),Object.defineProperty(e,"setSelectedState",{enumerable:!0,get:function(){return r.setSelectedState}}),e.GANTT_COL_INDEX_ATTRIBUTE=I,e.GANTT_PREVENT_SELECTION_ELEMENT=w,e.GANTT_ROW_INDEX_ATTRIBUTE=b,e.Gantt=jt,e.GanttBooleanFilter=on,e.GanttDateFilter=rn,e.GanttDayView=Kt,e.GanttForm=e=>{const{onCancel:t,onDelete:n,onClose:a,onSubmit:r,...l}=e,c=D.useRef(e.dataItem),[p,g]=D.useState({}),h=s.useLocalization(),f=e=>h.toLanguageString(e,Lt[e]),y=f(at),v=f(ot),C=f(xt),b=f(ct),I=D.useCallback((n=>{if(t){const a={syntheticEvent:n,nativeEvent:n.nativeEvent,dataItem:e.dataItem};t.call(void 0,a)}}),[t,e.dataItem]),w=D.useCallback((t=>{if(n){const a={syntheticEvent:t,nativeEvent:t.nativeEvent,dataItem:e.dataItem};n.call(void 0,a)}}),[n,e.dataItem]),S=D.useCallback((({syntheticEvent:t})=>{if(a){const n={syntheticEvent:t,nativeEvent:t.nativeEvent,dataItem:e.dataItem};a.call(void 0,n)}}),[a,e.dataItem]),R=D.useCallback(((e,t)=>{if(r){const n={dataItem:e,initialDataItem:c.current,syntheticEvent:t,nativeEvent:t&&t.nativeEvent,dependencies:p};r.call(void 0,n)}}),[r,p]),T=D.useMemo((()=>k.findByFieldValue(p.createdDependencies,"fromId",null)||k.findByFieldValue(p.createdDependencies,"toId",null)),[p]),x=D.useMemo((()=>p.createdDependencies&&p.createdDependencies.length&&void 0===T||p.updatedDependencies&&p.updatedDependencies.length||p.deletedDependencies&&p.deletedDependencies.length),[p,T]),F=D.useCallback((e=>{g(e)}),[]),N=D.createElement(u.Form,{initialValues:e.dataItem,onSubmit:R,render:t=>D.createElement(m.Window,{title:b,minWidth:90,width:554,modal:!0,height:0,onClose:S},D.createElement(Tn,{taskData:e.taskData,dependencyData:e.dependencyData,dataItem:e.dataItem,onDependencyCreate:F}),D.createElement(m.WindowActionsBar,{layout:"start"},D.createElement(d.Button,{disabled:!t.allowSubmit&&!x,onClick:t.allowSubmit?t.onSubmit:t=>R(e.dataItem,t),icon:"save",svgIcon:i.saveIcon,themeColor:"primary"},y),D.createElement(d.Button,{onClick:I,type:"button",icon:"cancel",svgIcon:i.cancelIcon},v),D.createElement("div",{className:"k-spacer"}),n&&D.createElement(d.Button,{onClick:w,icon:"trash",svgIcon:i.trashIcon,fillMode:"flat",themeColor:"primary"},C))),...l});return o.canUseDOM?E.createPortal(N,document&&document.body):null},e.GanttMonthView=Ot,e.GanttNumericFilter=an,e.GanttRemoveDialog=e=>{const{onClose:t,onCancel:n,onConfirm:a,dataItem:r}=e,l=s.useLocalization(),i=e=>l.toLanguageString(e,Lt[e]),c=i(xt),u=i(ot),p=i(Ft),g=i(Nt),h=D.useCallback((({syntheticEvent:e})=>{t&&t.call(void 0,{syntheticEvent:e,nativeEvent:e&&e.nativeEvent,dataItem:null})}),[t]),f=D.useCallback((e=>{n&&n.call(void 0,{syntheticEvent:e,nativeEvent:e&&e.nativeEvent,dataItem:null})}),[n]),k=D.useCallback((e=>{a&&a.call(void 0,{syntheticEvent:e,nativeEvent:e&&e.nativeEvent,dataItem:r})}),[a,r]),y=D.createElement(m.Dialog,{title:g,onClose:h},p,D.createElement(m.DialogActionsBar,{layout:"end"},D.createElement(d.Button,{themeColor:"primary",onClick:k},c),D.createElement(d.Button,{onClick:f},u)));return o.canUseDOM?E.createPortal(y,document&&document.body):null},e.GanttRow=xn,e.GanttTextFilter=nn,e.GanttWeekView=Wt,e.GanttYearView=Pt,e.addDependency=e=>{const{dependencyData:t,dependencyModelFields:n,defaultDataItem:a,fromId:r,toId:l,type:s}=e,i=t.map((e=>({...e}))),d=o.setter(n.fromId),c=o.setter(n.toId),u=o.setter(n.type),m=a?{...a}:{};return d(m,r),c(m,l),u(m,s),i.push(m),i},e.addTask=e=>{const{defaultDataItem:t,selectedDataItem:n,direction:a,taskModelFields:r,dataTree:l,slotStart:s,slotEnd:i}=e,d=K(l,r.children,(e=>({...e}))),c=o.setter(r.start),u=o.setter(r.end),m=o.getter(r.start),p=o.getter(r.end),g=o.setter(r.parentId||""),h=t?{...t}:{},f=m(h)&&p(h);if(n&&"none"!==a){const e=[{task:{[r.children]:d},childrenIndex:0}],t=o.getter(r.id),l=o.getter(r.children),k=o.setter(r.children),y=t(n);for(;e.length>0;){const n=e[e.length-1],a=n.task,o=t(a),r=l(a);if(o&&o===y)break;r&&r.length&&r.length>n.childrenIndex?(e.push({task:r[n.childrenIndex],childrenIndex:0}),n.childrenIndex++):e.pop()}if(e.length>1){const n=e[e.length-1].task,o=e[e.length-2].childrenIndex,d=e[e.length-2].task,y=l(d);switch(a){case"child":{let a=l(n);a||(a=[],k(n,a)),f||(c(h,new Date(m(n).getTime())),u(h,new Date(p(n).getTime()))),a.push(h),g(h,t(n)),ln(e.splice(1,e.length-1).map((e=>e.task)),r);break}case"above":m(d)&&p(d)&&!f?(c(h,new Date(m(n).getTime())),u(h,new Date(p(n).getTime()))):(c(h,s),u(h,i)),y.splice(o-1,0,h),g(h,t(d)),ln(e.splice(1,e.length-2).map((e=>e.task)),r);break;case"below":m(d)&&p(d)&&!f?(c(h,new Date(m(n).getTime())),u(h,new Date(p(n).getTime()))):(c(h,s),u(h,i)),y.splice(o,0,h),g(h,t(d)),ln(e.splice(1,e.length-2).map((e=>e.task)),r)}}}else f||(c(h,s),u(h,i)),r.parentId&&g(h,null),d.unshift(h);return d},e.createDataTree=O,e.extendDataItem=V,e.filterBy=H,e.mapTree=K,e.orderBy=W,e.removeTask=e=>{const{removedDataItem:t,taskModelFields:n,dataTree:a}=e,r=K(a,n.children,(e=>({...e})));let l=[{task:{[n.children]:r},childrenIndex:0}];const s=o.getter(n.id),i=o.getter(n.children),d=s(t);for(;l.length>0;){const e=l[l.length-1],t=e.task,n=s(t),a=i(t);if(n&&n===d)break;a&&a.length&&a.length>e.childrenIndex?(l.push({task:a[e.childrenIndex],childrenIndex:0}),e.childrenIndex++):l.pop()}if(l.length>1){const e=l[l.length-2];i(e.task).splice(e.childrenIndex-1,1),l=l.splice(1,l.length-2),ln(l.map((e=>e.task)),n)}return r},e.updateTask=e=>{const{updatedDataItem:t,taskModelFields:n,dataTree:a}=e,r=o.getter(n.id),l=o.getter(n.children),s=r(t);let i;const d=K(a,n.children,(e=>r(e)===s?(i=e,{...t}):{...e}));let c=[{task:{[n.children]:d},childrenIndex:0}];for(;c.length>0;){const e=c[c.length-1],t=e.task,n=r(t),a=l(t);if(n&&n===s)break;a&&a.length&&a.length>e.childrenIndex?(c.push({task:a[e.childrenIndex],childrenIndex:0}),e.childrenIndex++):c.pop()}if(c.length>1){c=c.splice(1,c.length-2);const e=o.getter(n.start),a=o.getter(n.end),s=o.getter(n.percentComplete),u=o.getter(n.parentId||"");if(e(i).getTime()!==e(t).getTime()){cn(c.map((e=>e.task)),n);const a=e(t).getTime()-e(i).getTime();pn(l(t),n,a)}if(a(i).getTime()!==a(t).getTime()&&un(c.map((e=>e.task)),n),s(i)!==s(t)&&mn(c.map((e=>e.task)),n),n.parentId&&u(i)!==u(t)){let e;return c.length?sn(c.map((e=>e.task)),n,i):e=d.filter((e=>r(e)!==r(t))),dn(e||d,n,t)}}return d}}));
|
|
15
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("@progress/kendo-date-math"),require("@progress/kendo-react-common"),require("@progress/kendo-react-data-tools"),require("@progress/kendo-react-treelist"),require("@progress/kendo-react-intl"),require("@progress/kendo-svg-icons"),require("@progress/kendo-react-buttons"),require("react-dom"),require("@progress/kendo-react-form"),require("@progress/kendo-react-dialogs"),require("@progress/kendo-react-labels"),require("@progress/kendo-react-inputs"),require("@progress/kendo-react-layout"),require("@progress/kendo-react-dateinputs"),require("@progress/kendo-react-dropdowns"),require("@progress/kendo-react-grid"),require("@progress/kendo-data-query")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","@progress/kendo-date-math","@progress/kendo-react-common","@progress/kendo-react-data-tools","@progress/kendo-react-treelist","@progress/kendo-react-intl","@progress/kendo-svg-icons","@progress/kendo-react-buttons","react-dom","@progress/kendo-react-form","@progress/kendo-react-dialogs","@progress/kendo-react-labels","@progress/kendo-react-inputs","@progress/kendo-react-layout","@progress/kendo-react-dateinputs","@progress/kendo-react-dropdowns","@progress/kendo-react-grid","@progress/kendo-data-query"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoReactGantt={},e.React,e.PropTypes,e.KendoDateMath,e.KendoReactCommon,e.KendoReactDataTools,e.KendoReactTreelist,e.KendoReactIntl,e.KendoSvgIcons,e.KendoReactButtons,e.ReactDOM,e.KendoReactForm,e.KendoReactDialogs,e.KendoReactLabels,e.KendoReactInputs,e.KendoReactLayout,e.KendoReactDateinputs,e.KendoReactDropdowns,e.KendoReactGrid,e.KendoDataQuery)}(this,(function(e,t,n,a,o,r,l,s,i,d,c,u,m,p,g,h,f,k,y,v){"use strict";function C(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,a.get?a:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var D=C(t),E=C(c);const b=r.TABLE_ROW_INDEX_ATTRIBUTE,I=r.TABLE_COL_INDEX_ATTRIBUTE,w=r.TABLE_PREVENT_SELECTION_ELEMENT,S=(new Date).getTime(),R={skeleton:"MEd"},T=100,x="data-dependency-drag-handle",F={[x]:"start"},N={[x]:"finish"},M="data-task-id",z={id:"id",start:"start",end:"end",title:"title",percentComplete:"percentComplete",parentId:"parentId",isRollup:"isRollup",isExpanded:"isExpanded",isInEdit:"isInEdit",children:"children",isSelected:"isSelected"},L={id:"id",fromId:"fromId",toId:"toId",type:"type"},W=r.orderBy,H=r.filterBy,K=o.mapTree,V=o.extendDataItem,O=l.createDataTree,A=e=>a.getDate(e),P=(e,t)=>a.getDate(a.addDays(e,t||1));function B(e){return new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()))}const G=(e,t,n,a)=>a?_(e,t,n):$(e,t,n),_=(e,t,n)=>{n.push({top:e-2,left:t}),n.push({top:e,left:t-4+1}),n.push({top:e+2,left:t}),n.push({top:e,left:t})},$=(e,t,n)=>{n.push({top:e+2,left:t}),n.push({top:e,left:t+4-1}),n.push({top:e-2,left:t}),n.push({top:e,left:t})},q=e=>{if(void 0===e.workWeekStart||void 0===e.workWeekEnd)return[];const t=[];let n=e.workWeekStart;for(t.push(n);e.workWeekEnd!==n;)n>6?n-=7:n++,t.push(n);return t},Z=(e,t)=>{const n=e.getDay();return t.indexOf(n)>-1},U=(e,{step:t,timezone:n})=>{const o=[],r=a.ZonedDate.fromLocalDate(e.start,n),l=a.ZonedDate.fromLocalDate(e.end,n);let s=r.clone();for(;s.getTime()<l.getTime();){const e=s.clone(),n=e.clone().addTime(t),a=new Date(e.getTime()),r={end:new Date(n.getTime()),start:a,zonedStart:e,zonedEnd:n};o.push(r),s=s.addTime(t)}return o},j=(e,t,n)=>U(e,{step:a.MS_PER_DAY,timezone:t.timezone}).map((e=>({range:e,isWork:Z(e.start,t.workDays),span:1,text:n.formatDate(e.zonedStart,R),type:"day"}))),Y=(e,t,n)=>((e,{timezone:t},n)=>{const o=[],r=a.ZonedDate.fromLocalDate(e.start,t),l=a.ZonedDate.fromLocalDate(e.end,t);for(let e=r.clone();e.getTime()<l.getTime();){const r=e.clone(),s=P(a.firstDayInWeek(a.getDate(r),n.firstDay()),7),i=a.ZonedDate.fromUTCDate(B(s),t),d=i.getTime()>l.getTime()?l.clone():i;e=d.clone();const c=new Date(r.getTime()),u={end:new Date(d.getTime()),start:c,zonedStart:r,zonedEnd:d};o.push(u)}return o})(e,{timezone:t.timezone},n).map((e=>{const t=Math.round((e.zonedEnd.getTime()-e.zonedStart.getTime())/a.MS_PER_DAY);return{range:e,isWork:!1,span:t,text:`${n.formatDate(e.zonedStart,R)} - ${n.formatDate(e.zonedEnd,R)}`,type:"week"}})),X=(e,t,n)=>((e,{timezone:t})=>{const n=[],o=a.ZonedDate.fromLocalDate(e.start,t),r=a.ZonedDate.fromLocalDate(e.end,t);for(let e=o.clone();e.getTime()<r.getTime();){const o=e.clone(),r=a.ZonedDate.fromLocalDate(a.addMonths(new Date(o.getTime()),1),t);e=r.clone();const l=new Date(o.getTime()),s={end:new Date(r.getTime()),start:l,zonedStart:o,zonedEnd:r};n.push(s)}return n})(e,{timezone:t.timezone}).map((e=>{const t=Math.round((e.zonedEnd.getTime()-e.zonedStart.getTime())/a.MS_PER_DAY);return{range:e,isWork:!1,span:t,text:n.formatDate(e.zonedStart,"MMM"),type:"month"}})),Q=(e,t,n)=>((e,{timezone:t})=>{const n=[],o=a.ZonedDate.fromLocalDate(e.start,t),r=a.ZonedDate.fromLocalDate(e.end,t);for(let e=o.clone();e.getTime()<r.getTime();){const o=e.clone(),r=a.ZonedDate.fromLocalDate(a.addMonths(new Date(o.getTime()),12),t);e=r.clone();const l=new Date(o.getTime()),s={end:new Date(r.getTime()),start:l,zonedStart:o,zonedEnd:r};n.push(s)}return n})(e,{timezone:t.timezone}).map((e=>{const t=Math.round((e.zonedEnd.getTime()-e.zonedStart.getTime())/a.MS_PER_DAY);return{range:e,isWork:!1,span:t,text:n.formatDate(e.zonedStart,"yyyy"),type:"year"}})),J=(e,t)=>!!o.getter(t)(e),ee=(e,t)=>!!o.getter(t)(e),te=D.createContext([]);te.displayName="KendoReactGanttTaskDataContext";const ne=D.createContext([]);ne.displayName="KendoReactGanttDependencyDataContext";const ae=D.createContext(z),oe=()=>D.useContext(ae);ae.displayName="KendoReactGanttTaskModelFieldsContext";const re=D.createContext(L),le=()=>D.useContext(re);re.displayName="KendoReactGanttDependencyModelFieldsContext";const se=D.createContext({}),ie=()=>D.useContext(se);se.displayName="KendoReactGanttPropsContext";const de=D.createContext({start:new Date,end:new Date,zonedStart:a.ZonedDate.fromLocalDate(new Date),zonedEnd:a.ZonedDate.fromLocalDate(new Date)}),ce=()=>D.useContext(de);de.displayName="KendoReactGanttDateRangeContext";const ue=D.createContext([]);ue.displayName="KendoReactGanttViewsContext";const me=D.createContext(["week",o.noop]),pe=()=>D.useContext(me);me.displayName="KendoReactGanttActiveViewContext";const ge=D.createContext(0),he=()=>D.useContext(ge);ge.displayName="KendoReactGanttRowHeightContext";const fe=D.createContext(0);fe.displayName="KendoReactGanttToolbarHeightContext";const ke=D.createContext({onDataStateChange:o.noop,onSortChange:o.noop,onFilterChange:o.noop,onColumnMenuFilterChange:o.noop,onExpandChange:o.noop,onRowClick:o.noop,onRowDoubleClick:o.noop,onRowContextMenu:o.noop,onColumnResize:o.noop,onColumnReorder:o.noop,onDependencyCreate:o.noop,onKeyDown:o.noop,onSelectionChange:o.noop,onHeaderSelectionChange:o.noop});ke.displayName="KendoReactGanttEventsContext";const ye=D.createContext({onTaskClick:o.noop,onTaskDoubleClick:o.noop,onTaskContextMenu:o.noop});ye.displayName="KendoReactGanttTaskEventsContext";const ve=({children:e,taskData:t,dependencyData:n,taskModelFields:a,dependencyModelFields:o,props:r,dateRange:l,views:s,activeView:i,rowHeight:d,toolbarHeight:c,events:u,taskEvents:m})=>D.createElement(se.Provider,{value:r},D.createElement(te.Provider,{value:t},D.createElement(ne.Provider,{value:n},D.createElement(ae.Provider,{value:a},D.createElement(re.Provider,{value:o},D.createElement(de.Provider,{value:l},D.createElement(ue.Provider,{value:s},D.createElement(me.Provider,{value:i},D.createElement(ge.Provider,{value:d},D.createElement(fe.Provider,{value:c},D.createElement(ke.Provider,{value:u},D.createElement(ye.Provider,{value:m},e))))))))))));ve.displayName="KendoReactGanttContext";const Ce=D.createContext([{current:{}},o.noop]),De=()=>D.useContext(Ce);Ce.displayName="KendoReactGanttViewContext";const Ee=D.createContext(0);Ee.displayName="KendoReactGanttViewTimelineWidthContext";const be=D.createContext({onDependencyHandlePress:o.noop,onDependencyHandleDrag:o.noop,onDependencyHandleRelease:o.noop,isEnabled:!1,draggedId:null});be.displayName="KendoReactGanttViewDependencyDragContext";const Ie=({children:e,tasksStore:t,timelineWidth:n,dependencyDrag:a})=>D.createElement(Ce.Provider,{value:t},D.createElement(Ee.Provider,{value:n},D.createElement(be.Provider,{value:a},e)));Ie.displayName="KendoReactGanttViewContext";var we=(e=>(e[e.add=0]="add",e[e.remove=1]="remove",e))(we||{});const Se=D.forwardRef(((e,t)=>{const n=ce(),a=oe(),r=D.useContext(Ee),l=D.useContext(be),s=D.useContext(ye),d=D.useRef(null),c=D.useRef(null);((e,t,n,a)=>{const r=D.useRef(null),[,l]=De();D.useImperativeHandle(r,(()=>({element:a.current,dataItem:e}))),D.useImperativeHandle(n,(()=>r.current)),o.useIsomorphicLayoutEffect((()=>{const e=r.current;if(e)return l({type:we.add,itemRef:e,id:t}),()=>{l({type:we.remove,itemRef:e,id:t})}}))})(e.dataItem,o.getter(a.id)(e.dataItem),t,d);const u=D.useRef(null),m=o.getter(a.id)(e.dataItem),p=o.getter(a.start)(e.dataItem),g=o.getter(a.end)(e.dataItem),h=o.getter(a.title)(e.dataItem),f=o.getter(a.percentComplete)(e.dataItem),k=o.getter(a.children)(e.dataItem),y=o.getter(a.isSelected)(e.dataItem),v=p&&p.getTime(),C=g&&g.getTime(),E=k&&k.length,b=!E&&v===C,I=v&&C&&((e,t,n,a)=>n<t&&e<=a)(n.start,n.end,p,g),[w,S]=D.useState(!1),R=D.useRef(null),T=D.useRef(null);o.useDraggable(R,{onPress:l.onDependencyHandlePress,onDrag:l.onDependencyHandleDrag,onRelease:l.onDependencyHandleRelease}),o.useDraggable(T,{onPress:l.onDependencyHandlePress,onDrag:l.onDependencyHandleDrag,onRelease:l.onDependencyHandleRelease});const x=D.useCallback((t=>{s.onTaskClick&&s.onTaskClick({dataItem:e.dataItem,level:e.level,nativeEvent:t&&t.nativeEvent,syntheticEvent:t,target:null})}),[e.dataItem,e.level]),z=D.useCallback((t=>{s.onTaskDoubleClick&&s.onTaskDoubleClick({dataItem:e.dataItem,level:e.level,nativeEvent:t&&t.nativeEvent,syntheticEvent:t,target:null})}),[e.dataItem,e.level]),L=D.useCallback((t=>{s.onTaskContextMenu&&s.onTaskContextMenu({dataItem:e.dataItem,level:e.level,nativeEvent:t&&t.nativeEvent,syntheticEvent:t,target:null})}),[e.dataItem,e.level]),W=D.useCallback((t=>{s.onTaskRemoveClick&&s.onTaskRemoveClick({dataItem:e.dataItem,level:e.level,nativeEvent:t&&t.nativeEvent,syntheticEvent:t,target:null})}),[e.dataItem,e.level]),H=D.useCallback((()=>{const e=n.start,t=n.end,a=u.current,o=d.current,r=c.current;if(!I||null===a||null===o)return;const l=a.clientWidth/(t.getTime()-e.getTime()),s=(p.getTime()-e.getTime())*l,i=(g.getTime()-p.getTime())*l,m=(a.offsetHeight-o.offsetHeight)/2;o.style.left=`${Math.round(b?s-6:s)}px`,o.style.top=`${Math.round(m)}px`,b||(o.style.width=`${Math.round(i)}px`,null!==r&&(r.style.width=`${Math.round(i*(f||0))}px`)),S(!0)}),[n.start.getTime(),n.end.getTime(),v,C,I,f,r]);D.useEffect(H,[H]);const K={visibility:w?void 0:"hidden",display:I?void 0:"none"},V={userSelect:"none",display:l.draggedId===String(m)?"block":void 0};return D.createElement("td",{ref:u,key:m,role:"presentation"},b?D.createElement("div",{"aria-hidden":!0,className:o.classNames({"k-task":!0,"k-task-milestone":!0,"k-selected":y&&!Array.isArray(y)}),style:K,ref:d,[M]:m,onClick:x,onDoubleClick:z,onContextMenu:L},D.createElement("div",{className:"k-task-milestone-content"}),l.isEnabled&&D.createElement("div",{className:"k-task-dot k-task-start",ref:R,style:V,...F}),l.isEnabled&&D.createElement("div",{className:"k-task-dot k-task-end",ref:T,style:V,...N})):D.createElement("div",{"aria-hidden":!0,className:o.classNames({"k-task":!0,"k-task-summary":E,"k-task-single":!E,"k-selected":y&&!Array.isArray(y)}),ref:d,style:K,[M]:m,onClick:x,onDoubleClick:z,onContextMenu:L},E?D.createElement("div",{className:"k-task-summary-progress",ref:c},D.createElement("div",{className:"k-task-summary-complete"})):D.createElement("div",{className:"k-task-complete",ref:c}),!E&&D.createElement(D.Fragment,null,D.createElement("div",{className:"k-task-content"},h),s.onTaskRemoveClick?D.createElement("span",{className:"k-task-actions"},D.createElement("span",{onClick:W,className:"k-link k-task-delete","aria-label":"Delete"},D.createElement(o.IconWrap,{name:"x",icon:i.xIcon}))):null),l.isEnabled&&D.createElement("div",{className:"k-task-dot k-task-start",ref:R,style:V,...F}),l.isEnabled&&D.createElement("div",{className:"k-task-dot k-task-end",ref:T,style:V,...N})))}));Se.displayName="KendoReactGanttTask";const Re=e=>{const{dependency:t}=e,[n]=De(),a=D.useRef(null),r=le(),l=he(),[s,i]=D.useState(!1);return D.useEffect((()=>{if(null===a.current||null===n.current)return void i(!1);const e=n.current[o.getter(r.fromId)(t)],d=n.current[o.getter(r.toId)(t)];if(!e||!d)return void i(!1);const c=e.element,u=d.element;if(!c||!u)return void i(!1);if(!1===s)return void i(!0);const m={top:c.offsetTop+c.offsetHeight/2,start:c.offsetLeft,end:c.offsetLeft+c.offsetWidth},p={top:u.offsetTop+u.offsetHeight/2,start:u.offsetLeft,end:u.offsetLeft+u.offsetWidth},g=o.getter(r.type)(t),h=((e,t,n,a)=>{const o=[];let r=0,l=0;const s=10,i=Math.floor(n/2),d=e.top<t.top,c=()=>o.push({left:l,top:r});if(0===a||3===a){const n=3===a?"start":"end";r=e.top,l=e[n],c(),l=Math["start"===n?"min":"max"](e[n],t[n]),l="start"===n?l-s:l+s,c(),r=t.top,c(),l="start"===n?t[n]-4:t[n]+4,c(),G(r,l,o,"start"!==n)}else{const n=2===a?"start":"end",u=2===a?"end":"start",m=2===a?e[n]-20>=t[u]:e[n]+20<=t[u];r=e.top,l=e[n],c(),l="start"===n?l-s:l+s,c(),m||(r=d?r+i:r-i,c(),l="start"===n?t[u]+s:t[u]-s,c()),r=t.top,c(),l="start"===u?t[u]-4:t[u]+4,c(),G(r,l,o,"start"!==u)}return o})(m,p,l,g);h&&h.length&&a.current.setAttribute("points",h.map((e=>`${e.left},${e.top}`)).join(" "))})),D.createElement("polyline",{ref:a,style:{display:s?void 0:"none"}})};Re.displayName="KendoReactGanttDependency";const Te=class extends D.Component{constructor(e){super(e),this.state={activeId:void 0,level:0},this.tableElement=null,this.tbodyElement=null,this.wrapperScrollLeft=0,this.wrapperScrollTop=0,this.updateOnScroll=!1,this.tbodyOffsetTop=0,this.prevData=[],this.flattedData=[],this.element=null,this.contextStateRef={current:void 0},this.navigationStateRef={current:void 0},this.scrollIntoView=e=>{if(!this.element)return;const{rowIndex:t=0}=e,{rowHeight:n=0}=this.props;this.element.scroll(0,(t-1)*n)},this.getColumns=e=>{const t=e.filter((e=>e.declarationIndex>=0&&-1===e.parentIndex)),n=e=>(e.sort(((e,t)=>e.declarationIndex-t.declarationIndex)),e.map((e=>{const{declarationIndex:t,parentIndex:a,depth:o,colSpan:r,rowSpan:l,index:s,kFirst:i,groupable:d,children:c,...u}=e;return c.length?{children:n(c),...u}:u})));return n(t)},this.onKeyDown=e=>{if(r.tableKeyboardNavigation.onKeyDown(e,{navigatable:!1,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),this.props.onKeyDown){const{mode:t,cell:n}=r.getSelectionOptions(this.props.selectable),a={dataItems:this.getLeafDataItems(),mode:t,cell:n,componentId:this.props.treelistId,selectedField:this.props.selectedField,...this.getEventArguments(e)};this.props.onKeyDown.call(void 0,a)}},this.onFocus=e=>{r.tableKeyboardNavigation.onFocus(e,{contextStateRef:this.contextStateRef})},this.onRowDrag=e=>{if(this.props.onRowDrag){const t={...e,target:this};this.props.onRowDrag.call(void 0,t)}},this.onRowDrop=e=>{if(this.props.onRowDrop){const t={...e,target:this};this.props.onRowDrop.call(void 0,t)}},this.onColumnReorder=(e,t,n)=>{const{extendedColumns:a}=this.props,o=a[e].depth,r=e=>{do{e++}while(e<a.length&&a[e].depth>o);return e},l=[...a],s=l.splice(e,r(e)-e);if(l.splice(e<t?r(t-s.length):t,0,...s),l.filter((e=>e.declarationIndex>=0)).forEach(((e,t)=>e.orderIndex=t)),this.props.onColumnReorder){const e={target:this,columns:this.getColumns(l),nativeEvent:n};this.props.onColumnReorder.call(void 0,e)}},this.onColumnResize=(e,t,n,a,o)=>{if(this.props.onColumnResize){const r=this.props.extendedColumns.filter((e=>0===e.children.length)).reduce(((e,t)=>e+parseFloat(String(t.width))),0);this.tableElement&&(this.tableElement.style.width=r+"px");const l={columns:this.getColumns(this.props.extendedColumns),totalWidth:r,index:e,nativeEvent:a,newWidth:t,oldWidth:n,end:o,target:this};this.props.onColumnResize.call(void 0,l)}},this.onScroll=e=>{const t=e.currentTarget.scrollLeft,n=e.currentTarget.scrollTop,{columnVirtualization:a,scrollable:o,rowHeight:r=0}=this.props,l=r;let s=!1;a&&Math.abs(this.wrapperScrollLeft-t)>0&&(this.wrapperScrollLeft=t,s=!0),"virtual"===o&&Math.abs(this.wrapperScrollTop-n)>l&&(this.wrapperScrollTop=n,s=!0),s&&(this.updateOnScroll=!0,this.forceUpdate())},this.calculateSizes=e=>{if(!e||"none"===this.props.scrollable)return;const t=Array.from(e.childNodes),n=t.find((e=>"TABLE"===e.nodeName)),a=this.props.toolbar&&t.find((e=>1===e.nodeType&&e.classList.contains("k-grid-toolbar")));let o=0;if(a){const e=a.style.boxSizing;a.style.boxSizing="border-box",o=parseFloat(String(window.getComputedStyle(a).height))||a.offsetHeight,a.style.boxSizing=e,a.getAttribute("style")||a.removeAttribute("style")}this.tbodyOffsetTop=n.tBodies[0].offsetTop,l.setHeaderRowsTop(n,o)},this.onItemChange=e=>{if(e.field!==this.props.expandField){if(this.props.onItemChange){const t={...this.getEventArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,field:e.field,value:e.value};this.props.onItemChange.call(void 0,t)}}else{const t=this.props.onExpandChange;if(t){const n={...this.getEventArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,value:e.value};t.call(void 0,n)}}},this.onHeaderSelectionChange=e=>{if(this.props.onHeaderSelectionChange){const t={field:e.field,nativeEvent:e.syntheticEvent&&e.syntheticEvent.nativeEvent,syntheticEvent:e.syntheticEvent,target:this,dataItems:this.getLeafDataItems()};this.props.onHeaderSelectionChange.call(void 0,t)}},this.selectionRelease=e=>{if(this.props.onSelectionChange){const t={syntheticEvent:void 0,target:this,selectedField:this.props.selectedField||"",componentId:this.props.treelistId,dataItems:this.getLeafDataItems(),dataItem:null,level:[],...e};this.props.onSelectionChange.call(void 0,t)}},this.onSortChange=(e,t,n)=>{this.onDataStateChange(this.props.onSortChange,{sort:t,field:n},e)},this.onFilterChange=e=>{const{filter:t,field:n}=e;this.onDataStateChange(this.props.onFilterChange,{filter:t,field:n},e.syntheticEvent)},this.onColumnMenuFilterChange=(e,t,n)=>{if(!n)return;const{onColumnMenuFilterChange:a}=this.props;if(!a)return;const o={syntheticEvent:e,filter:t,field:n,target:this,nativeEvent:e.nativeEvent};a.call(void 0,o)},this.onExpandChange=(e,t,n)=>{const{expandField:a,onExpandChange:o}=this.props;if(a&&o){const a={...this.getEventArguments(e),dataItem:t,level:n,value:J(t,this.props.expandField)};o.call(void 0,a)}},this.onRowClick=(e,t)=>{if(this.props.onRowClick&&"TD"===e.target.nodeName){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowClick.call(void 0,n)}},this.rowDoubleClick=(e,t)=>{if(this.props.onRowDoubleClick&&"TD"===e.target.nodeName){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowDoubleClick.call(void 0,n)}},this.rowContextMenu=(e,t)=>{if(this.props.onRowContextMenu&&"TD"===e.target.nodeName){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowContextMenu.call(void 0,n)}},this.onPageChange=e=>{if(this.props.onPageChange){const t={...this.getEventArguments(e.syntheticEvent),skip:e.skip,take:e.take};this.props.onPageChange.call(void 0,t)}},this.onDataStateChange=(e,t,n)=>{if(e&&e.call(void 0,{...this.getEventArguments(n),...t}),this.props.onDataStateChange){const e={...this.getEventArguments(n),dataState:{...this.getDataState(),...t}};this.props.onDataStateChange.call(void 0,e)}},this.getDataState=()=>({filter:this.props.filter,sort:this.props.sort}),this.getEventArguments=e=>({nativeEvent:e&&e.nativeEvent,syntheticEvent:e,target:this}),this.getLeafDataItems=()=>this.flatData.map((e=>e.dataItem)),this.dragLogic=new r.CommonDragLogic(this.onColumnReorder,o.noop,o.noop),this.columnResize=new r.ColumnResize(this.onColumnResize),r.tableKeyboardNavigation.onConstructor({navigatable:!!e.navigatable,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef,idPrefix:e.idPrefix})}get document(){if(o.canUseDOM)return this.element&&this.element.ownerDocument||document}componentDidMount(){this.calculateSizes(this.element),r.tableKeyboardNavigation.onComponentDidMount({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}getSnapshotBeforeUpdate(){return r.tableKeyboardNavigation.onGetSnapshotBeforeUpdate({document:this.document,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),null}componentDidUpdate(e){e.columns!==this.props.columns&&this.calculateSizes(this.element),r.tableKeyboardNavigation.onComponentDidUpdate({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}componentWillUnmount(){this.columnResize.columns=[],this.dragLogic.columns=[],this.prevData=[],this.flattedData=[],this.updateOnScroll=!1}render(){const{filterRow:e,scrollable:t="scrollable",resizable:n=!1,reorderable:a=!1,skip:s,take:i,afterContent:d,extendedColumns:c=[],columnsMap:u}=this.props,m=c.some((e=>!!e.filter))||void 0!==e,p=e||r.FilterRow,g=r.tableKeyboardNavigationTools.getIdPrefix(this.navigationStateRef);this.columnResize.columns=c,this.columnResize.resizable=n,this.dragLogic.columns=c,this.dragLogic.reorderable=a,this.dragLogic.groupable=!1;const h=c.filter((e=>0===e.children.length)),f=D.createElement(r.Header,{headerRow:D.createElement(r.HeaderRow,{sort:this.props.sort,sortable:this.props.sortable,sortChange:this.onSortChange,selectionChange:this.onHeaderSelectionChange,columns:c,columnsMap:u,cellRender:this.props.headerCellRender,columnResize:this.columnResize,columnMenu:this.props.columnMenu,columnMenuFilter:this.props.columnMenuFilter,columnMenuFilterChange:this.onColumnMenuFilterChange,pressHandler:this.dragLogic.pressHandler,dragHandler:this.dragLogic.dragHandler,releaseHandler:this.dragLogic.releaseHandler}),filterRow:m&&D.createElement(p,{columns:h,filter:this.props.filter,filterChange:this.onFilterChange,sort:this.props.sort,ariaRowIndex:u.length+1})||void 0,columnResize:this.columnResize}),k=this.props.style||{},{colSpans:y,hiddenColumns:v}=r.tableColumnsVirtualization({enabled:this.props.columnVirtualization,columns:h,scrollLeft:this.wrapperScrollLeft,tableViewPortWidth:parseFloat((k.width||"").toString())}),C=(e,t,n,a,o,s)=>h.map(((i,d)=>{if(v[d])return null;const c=i.id?i.id:d,u=`k-table-td ${i.className?i.className+" ":""}${i.locked?"k-grid-content-sticky":""}`,m={id:r.tableKeyboardNavigationTools.generateNavigatableId(`${n}-${String(d)}`,g),colSpan:y[d],dataItem:e.dataItem,field:i.field,format:i.format,className:u||void 0,render:this.props.cellRender,onChange:this.onItemChange,selectionChange:this.props.onSelectionChange?t=>{this.onSelectionChange({event:t,item:e,columnIndex:d,dataIndex:o})}:void 0,level:e.level,expandable:i.expandable,expanded:a,hasChildren:ee(e.dataItem,this.props.subItemsField),colIndex:d,ariaColumnIndex:i.ariaColumnIndex,onExpandChange:this.onExpandChange,style:void 0!==i.left&&{left:i.left,right:i.right,borderRightWidth:i.rightBorder?"1px":""}||{},isSelected:Array.isArray(s)&&s.indexOf(d)>-1};return t&&i.editCell?D.createElement(i.editCell,{...m,onChange:this.onItemChange,key:c}):i.cell?D.createElement(i.cell,{key:c,...m}):D.createElement(l.TreeListCell,{key:c,...m})}));let E=this.flatData;const b=E.length;void 0!==s&&void 0!==i&&(E=E.slice(s,s+i)),"virtual"===t&&(E=l.tableRowsVirtualization({rows:E,tableViewPortHeight:parseFloat((k.height||k.maxHeight||"").toString()),scrollTop:this.wrapperScrollTop}),this.updateOnScroll=!1);const I=E.map((e=>e.level)),w=u.length+(m?1:0)+1,S=E.length>0&&E.map(((e,t)=>{const n=o.getter(this.props.editField||"")(e.dataItem),a=o.getter(this.props.dataItemKey)(e.dataItem),r=String(a||e.level.join(".")),s=J(e.dataItem,this.props.expandField),i=this.props.selectedField?o.getter(this.props.selectedField)(e.dataItem):void 0,d={key:r,level:e.level,levels:I,dataItem:e.dataItem,selectedField:this.props.selectedField,rowHeight:e.height,render:this.props.rowRender,onDrop:this.onRowDrop,onDrag:this.onRowDrag,onClick:t=>this.onRowClick(t,e),onDoubleClick:t=>this.rowDoubleClick(t,e),onContextMenu:t=>this.rowContextMenu(t,e),isAltRow:t%2!=0,expanded:s,rowIndex:t,ariaRowIndex:w+t,ariaSetSize:e.levelCount,ariaPosInSet:e.level[e.level.length-1]+1,isSelected:"boolean"==typeof i&&i},c=this.props.editRow,u=this.props.row||l.TreeListRow,m=C(e,n,r,s,t,i);return n&&c?D.createElement(c,{...d,key:d.key},m):D.createElement(u,{...d,key:d.key},m)}))||D.createElement("tr",{className:"k-table-row k-grid-norecords"},D.createElement("td",{className:"k-table-td",colSpan:h.length},this.props.noRecords||D.createElement(l.TreeListNoRecords,null))),R=e=>this.props.sort&&this.props.sort.some((t=>t.field===e)),T=D.createElement("colgroup",{ref:e=>{this.columnResize.colGroupMain=e}},h.map(((e,t)=>D.createElement("col",{key:t.toString(),className:R(e.field)?"k-sorted":void 0,style:void 0!==e.width?{width:e.width}:void 0})))),x=this.props.columnVirtualization||"virtual"===this.props.scrollable,F=this.props.selectable&&this.props.selectable.drag?"none":void 0,N=this.props.tableProps||{};return D.createElement(r.TableKeyboardNavigationContext.Provider,{value:this.contextStateRef.current},D.createElement("div",{id:this.props.treelistId,style:this.props.style,className:o.classNames("k-grid k-grid-md",this.props.className,{"k-treelist-scrollable":"none"!==t}),ref:e=>{this.element=e},onScroll:x?this.onScroll:void 0,onKeyDown:this.onKeyDown,onFocus:this.onFocus,"aria-rowcount":b,"aria-colcount":h.length,role:"treegrid",...r.tableKeyboardNavigationScopeAttributes},this.props.toolbar,D.createElement(r.TableSelection,{selectable:this.props.selectable,onRelease:this.selectionRelease,childRef:e=>{this.tableElement=e}},D.createElement("table",{className:"k-table k-table-md",...this.props.tableProps||{},style:{...N.style||{},userSelect:F},role:"presentation"},T,f,D.createElement("tbody",{className:"k-table-tbody",...r.tableKeyboardNavigationBodyAttributes,ref:e=>{this.tbodyElement=e},role:"presentation"},S))),this.props.pager&&D.createElement(this.props.pager,{className:"k-grid-pager",total:b,skip:s,take:i,onPageChange:this.onPageChange}),a&&D.createElement(D.Fragment,null,D.createElement(r.DropClue,{ref:this.dragLogic.refDropElementClue}),D.createElement(r.DragClue,{ref:this.dragLogic.refDragElementClue})),d))}get flatData(){const{data:e=[],rowHeight:t=0}=this.props;let n=0;const a=()=>{const e={height:t,offsetTop:n};return n+=e.height,e},o=this.updateOnScroll&&this.prevData===e&&this.tbodyOffsetTop>0&&this.flattedData.length?this.flattedData:e.map((e=>({...e,...a()})));return this.prevData=e,this.flattedData=o,o}onSelectionChange(e){if(this.props.onSelectionChange){const{event:t,item:n,dataIndex:a,columnIndex:o}=e,{mode:l,cell:s}=r.getSelectionOptions(this.props.selectable),i={...this.getEventArguments(t.syntheticEvent),dataItem:n.dataItem,level:n.level,startColIndex:o,endColIndex:o,startRowIndex:a,endRowIndex:a,dataItems:this.getLeafDataItems(),altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1,mode:l,cell:s,isDrag:!1,componentId:this.props.treelistId,selectedField:this.props.selectedField||""};this.props.onSelectionChange.call(void 0,i)}}};Te.propTypes={data:n.array,resizable:n.bool,reorderable:n.bool,sortable:n.oneOfType([n.bool,n.shape({mode:n.oneOf(["single","multiple"]),allowUnsort:n.bool})]),onSortChange:n.func,sort:n.array,columns:n.arrayOf(n.object),columnVirtualization:n.bool,filter:n.array,onFilterChange:n.func,filterRow:n.any,toolbar:n.any,noRecords:n.any,onExpandChange:n.func,expandField:n.string,subItemsField:n.string,selectedField:n.string,onSelectionChange:n.func,onHeaderSelectionChange:n.func,onRowClick:n.func,onItemChange:n.func,editField:n.string,scrollable:n.oneOf(["none","scrollable","virtual"]),rowHeight:n.number,style:n.object,tableProps:n.object,pager:n.any,skip:n.number,take:n.number,onPageChange:n.func,onDataStateChange:n.func,onColumnResize:n.func,onColumnReorder:n.func,extendedColumns:n.arrayOf(n.object),columnsMap:n.arrayOf(n.array),dataItemKey:n.string.isRequired,afterContent:n.any,navigatable:n.bool,idPrefix:n.string,treelistId:n.string},Te.contextType=r.TableKeyboardNavigationContext;let xe=Te;const Fe=D.forwardRef(((e,t)=>{const{slotLevels:n,slotWidth:a,timelineHeaderCell:l}=e,{columns:s,noRecords:i,resizable:d,reorderable:c,sortable:u,sort:m,filter:p,columnMenuFilter:g,columnMenu:h,navigatable:f,row:k,selectable:y}=ie(),{onDataStateChange:v,onSortChange:C,onFilterChange:E,onColumnMenuFilterChange:b,onExpandChange:I,onRowClick:w,onRowDoubleClick:S,onRowContextMenu:R,onColumnResize:F,onColumnReorder:N,onDependencyCreate:z,onKeyDown:L,onSelectionChange:W,onHeaderSelectionChange:H}=D.useContext(ke),K=he(),V=D.useContext(fe),O=oe(),A=le(),P=D.useContext(te),B=D.useContext(ne),G=D.useRef(null),_=D.useRef(null),$=D.useRef(null),q=D.useRef(null),Z=D.useRef(0),U=D.useRef(o.useId()),j=D.useRef(o.useId()),Y=D.useRef(null),X=D.useRef(null),Q=D.useCallback((e=>{$.current&&$.current.scrollIntoView(e)}),[]);D.useImperativeHandle(X,(()=>({scrollIntoView:Q}))),D.useImperativeHandle(t,(()=>X.current));const J=D.useRef(0),ee=D.useRef(0),ae=D.useRef(0),re=D.useRef(0),se=D.useRef(null),de=D.useRef(null),[ce,ue]=D.useState(null),me=((e,t,n)=>{const a=n;return D.createElement("table",{className:"k-table k-table-md",ref:t,"aria-hidden":!0},D.createElement("tbody",{className:"k-table-tbody"},e.map(((e,t)=>D.createElement("tr",{className:"k-table-row",key:t},e.map(((e,n)=>D.createElement("td",{key:e.range.start.getTime(),colSpan:e.span,className:o.classNames("k-table-th",{"k-header":!0,"k-nonwork-hour":!e.isWork})},a?D.createElement(a,{rowIndex:t,index:n,range:e.range,text:e.text,isWork:e.isWork,type:e.type}):e.text))))))))})(n,G,l),pe=((e,t)=>{const n=e[e.length-1];return D.createElement("table",{className:"k-table k-table-md k-gantt-columns",ref:t,"aria-hidden":!0},D.createElement("tbody",{className:"k-table-tbody"},D.createElement("tr",{className:"k-table-row"},n.map((e=>D.createElement("td",{key:e.range.start.getTime(),colSpan:e.span,className:o.classNames("k-table-td",{"k-nonwork-hour":!e.isWork})}))))))})(n,_),ge=((e,t)=>{const n=e[e.length-1];let a=0,o=0;return n.forEach((e=>{const t=e.span;o+=t,t>a&&(a=t)})),Math.round(o*t/a)})(n,a),{extendedColumns:ye,columnsWidth:ve,columnsMap:Ce}=D.useMemo((()=>{const e=r.readColumns([...s,{title:"",sortable:!1,resizable:!1,reorderable:!1,width:ge,headerCell:()=>me,cell:Se,orderIndex:Number.MAX_SAFE_INTEGER,navigatable:!1}],{prevId:0,idPrefix:U.current});let t=0;return e.forEach(((e,n,a)=>{const o=n+1===a.length,r=0===e.children.length;o?e.isAccessible=!1:(e.locked=!0,r&&(e.width=e.width||T)),r&&(t+=parseFloat(String(e.width)))})),{extendedColumns:e,columnsWidth:t,columnsMap:r.mapColumns(e)}}),[s,ge]),[De,Ee]=(()=>{const e=D.useRef({}),t=D.useCallback((t=>{switch(t.type){case 0:e.current[t.id]=t.itemRef;break;case 1:delete e.current[t.id]}}),[]);return[e,t]})(),be=D.useCallback((()=>G.current&&G.current.parentElement),[]),we=()=>{const e=be(),t=_.current,n=$.current&&$.current.tbodyElement;if(!e||!t||!n)return;const a=n.offsetTop,o=e.offsetLeft,r=ge;t.style.top=a+"px",t.style.left=o+"px",t.style.width=r+"px",t.style.height=n.offsetHeight+"px"};D.useEffect(we),D.useEffect((()=>{const e=be();e&&(Z.current=e.offsetLeft)}));const Te=D.useCallback((e=>{if(!q.current)return;const t=e.columns.slice(0,e.columns.length-1);if(e.end)q.current.style.left="0px";else{const e=be();if(!e)return;q.current.style.left=e.offsetLeft-Z.current+"px",we()}F({...e,columns:t})}),[F]),Fe=D.useCallback((e=>{const t=e.columns.slice(0,e.columns.length-1);N({...e,columns:t})}),[F]),Ne=D.useCallback((e=>{const t=(Y.current&&Y.current.ownerDocument?Y.current.ownerDocument:document).elementFromPoint(e.clientX,e.clientY),n=Y.current;if(!t||!t.parentElement||!n)return;const a=n.parentElement,o=n.firstElementChild;if(!a||!o)return;const r=t.getAttribute(x);if(r){const l=n.offsetTop,s=n.offsetLeft,i=a.offsetTop,d=a.offsetLeft,c=o.scrollTop,u=o.scrollLeft;ae.current=s+d,re.current=l+i,J.current=e.clientX-ae.current+u,ee.current=e.clientY-re.current+c,se.current=t.parentElement.getAttribute(M),de.current=r}}),[]),Me=D.useCallback((e=>{const t=Y.current;if(!t)return;const n=t.firstElementChild;if(!n)return;const a=n.scrollTop,o=n.scrollLeft,r=e.clientX-ae.current+o,l=e.clientY-re.current+a;Math.abs(J.current-r)<10&&Math.abs(ee.current-l)<10||ue({startX:J.current,startY:ee.current,endX:r,endY:l})}),[]),ze=D.useCallback((e=>{const t=(Y.current&&Y.current.ownerDocument?Y.current.ownerDocument:document).elementFromPoint(e.clientX,e.clientY);if(!t||!t.parentElement)return;const n=t.parentElement.getAttribute(M),a=t.getAttribute(x);if(a&&n!==se.current&&z){let e;e="start"===de.current?"start"===a?3:2:"start"===a?1:0,z({fromId:se.current,toId:n,type:e})}J.current=0,ee.current=0,ae.current=0,re.current=0,se.current=null,de.current=null,ue(null)}),[z,ue]);return D.createElement(Ie,{tasksStore:[De,Ee],timelineWidth:ge,dependencyDrag:{isEnabled:!!z,draggedId:se.current,onDependencyHandlePress:Ne,onDependencyHandleDrag:Me,onDependencyHandleRelease:ze}},D.createElement("div",{className:"k-gantt-content",ref:Y,style:{height:`calc(100% - ${V}px)`}},D.createElement(xe,{treelistId:j.current,ref:$,extendedColumns:ye,columnsMap:Ce,dataItemKey:O.id,data:P,idPrefix:U.current,navigatable:f,expandField:O.isExpanded,subItemsField:O.children,editField:O.isInEdit,selectedField:O.isSelected,onDataStateChange:v,onSortChange:C,onFilterChange:E,onExpandChange:I,onRowClick:w,onRowDoubleClick:S,onRowContextMenu:R,onColumnResize:Te,onColumnReorder:Fe,onColumnMenuFilterChange:b,onKeyDown:L,onSelectionChange:W,onHeaderSelectionChange:H,tableProps:{style:{width:ve},className:"k-table k-table-md k-table-layout-fixed"},noRecords:i,rowHeight:K,resizable:d,reorderable:c,sortable:u,sort:m,filter:p,columnMenuFilter:g,columnMenu:h,row:k,selectable:y,afterContent:D.createElement(D.Fragment,null,D.createElement("svg",{className:"k-gantt-dependencies-svg",ref:q,style:{left:0,top:0}},B.map((e=>D.createElement(Re,{key:o.getter(A.id)(e),dependency:e})))),D.createElement("svg",{className:"k-gantt-dependencies-svg",style:{left:0,top:0,zIndex:3}},ce&&D.createElement("polyline",{points:`${ce.startX},${ce.startY} ${ce.endX},${ce.endY}`})),P&&P.length?pe:null)})))}));Fe.displayName="KendoReactGanttBaseView";const Ne="gantt.weekViewTitle",Me="gantt.dayViewTitle",ze="gantt.monthViewTitle",Le="gantt.yearViewTitle",We="gantt.filterClearButton",He="gantt.filterEqOperator",Ke="gantt.filterNotEqOperator",Ve="gantt.filterIsNullOperator",Oe="gantt.filterIsNotNullOperator",Ae="gantt.filterIsEmptyOperator",Pe="gantt.filterIsNotEmptyOperator",Be="gantt.filterStartsWithOperator",Ge="gantt.filterContainsOperator",_e="gantt.filterNotContainsOperator",$e="gantt.filterEndsWithOperator",qe="gantt.filterGteOperator",Ze="gantt.filterGtOperator",Ue="gantt.filterLteOperator",je="gantt.filterLtOperator",Ye="gantt.filterIsTrue",Xe="gantt.filterIsFalse",Qe="gantt.filterBooleanAll",Je="gantt.filterAfterOrEqualOperator",et="gantt.filterAfterOperator",tt="gantt.filterBeforeOperator",nt="gantt.filterBeforeOrEqualOperator",at="gantt.editSave",ot="gantt.editCancel",rt="gantt.editAdd",lt="gantt.editRemove",st="gantt.editTabGeneral",it="gantt.editTabPredecessors",dt="gantt.editTabSuccessors",ct="gantt.editorTitle",ut="gantt.editorTaskTitle",mt="gantt.editorTaskStart",pt="gantt.editorTaskEnd",gt="gantt.editorTaskComplete",ht="gantt.editorTaskParent",ft="gantt.editorValidationRequired",kt="gantt.editorValidationStart",yt="gantt.editorValidationEnd",vt="gantt.editorValidationPercentCompleteRange",Ct="gantt.editorDependencyTypesFF",Dt="gantt.editorDependencyTypesSF",Et="gantt.editorDependencyTypesFS",bt="gantt.editorDependencyTypesSS",It="gantt.addTask",wt="gantt.addChild",St="gantt.addAbove",Rt="gantt.addBelow",Tt="gantt.viewSelector",xt="gantt.editorDelete",Ft="gantt.deleteConfirmation",Nt="gantt.deleteDialogTitle",Mt="gantt.editorDependencyNameLabel",zt="gantt.editorDependencyTypeLabel",Lt={[Ne]:"Week",[Me]:"Day",[ze]:"Month",[Le]:"Year",[We]:"Clear",[He]:"Is equal to",[Ke]:"Is not equal to",[Ve]:"Is null",[Oe]:"Is not null",[Ae]:"Is empty",[Pe]:"Is not empty",[Be]:"Starts with",[Ge]:"Contains",[_e]:"Does not contain",[$e]:"Ends with",[qe]:"Is greater than or equal to",[Ze]:"Is greater than",[Ue]:"Is less than or equal to",[je]:"Is less than",[Ye]:"Is true",[Xe]:"Is false",[Qe]:"(All)",[Je]:"Is after or equal to",[et]:"Is after",[tt]:"Is before",[nt]:"Is before or equal to","gantt.noRecords":"No records available",[at]:"Save",[ot]:"Cancel",[rt]:"Add",[lt]:"Remove",[st]:"General",[it]:"Predecessors",[dt]:"Successors",[ct]:"Edit task",[ut]:"Title",[mt]:"Start",[pt]:"End","gantt.editorTaskPlannedStart":"Planned Start Date","gantt.editorTaskPlannedEnd":"Planned End Date","gantt.editorTaskActualStart":"Actual Start Date","gantt.editorTaskActualEnd":"Actual End Date",[gt]:"Complete",[ht]:"Parent",[ft]:"Field is required.",[kt]:"Start time must be be before End time.",[yt]:"End time must be after Start time.",[vt]:"Value should be between 0 and 100.",[Ct]:"Finish-Finish",[Et]:"Finish-Start",[Dt]:"Start-Finish",[bt]:"Start-Start",[It]:"Add Task",[wt]:"Add Child",[St]:"Add Above",[Rt]:"Add Below",[Tt]:"View Selector",[xt]:"Delete",[Ft]:"Are you sure you want to delete this event?",[Nt]:"Delete Event",[Mt]:"Name",[zt]:"Type"},Wt=D.forwardRef(((e,t)=>{const{slotWidth:n=Ht.slotWidth,firstSlotRangeRef:a,timelineHeaderCell:o}=e,{timezone:r}=ie(),l=s.useInternationalization(),i=D.useRef(null),d=D.useRef(null),c=D.useCallback((e=>{d.current&&d.current.scrollIntoView(e)}),[]);D.useImperativeHandle(i,(()=>({scrollIntoView:c}))),D.useImperativeHandle(t,(()=>i.current));const u=ce(),m=e.workWeekStart||Ht.workWeekStart,p=e.workWeekEnd||Ht.workWeekEnd,g=D.useMemo((()=>{const e=q({workWeekStart:m,workWeekEnd:p}),t=[],n=Y(u,{timezone:r},l);return n.forEach((n=>{const a=j(n.range,{workDays:e,timezone:r},l);t.push.apply(t,a)})),a&&t[0]&&(a.current=t[0].range),[n,t]}),[r,u.start.getTime(),u.end.getTime(),l,m,p]);return D.createElement(Fe,{ref:d,slotWidth:n,slotLevels:g,timelineHeaderCell:o})})),Ht={name:"week",dateRange:({intl:e,tasksStart:t,tasksEnd:n,timezone:o})=>{const r=a.ZonedDate.fromLocalDate(t,o),l=a.ZonedDate.fromLocalDate(n,o),s=A(a.firstDayInWeek(a.getDate(r),e.firstDay())),i=P(a.firstDayInWeek(a.getDate(l),e.firstDay()),7),d=a.ZonedDate.fromUTCDate(B(s),o),c=a.ZonedDate.fromUTCDate(B(i),o);return{start:new Date(d.getTime()),end:new Date(c.getTime()),zonedStart:d,zonedEnd:c}},title:e=>e.toLanguageString(Ne,Lt[Ne]),slotWidth:T,workWeekStart:1,workWeekEnd:5,workDayStart:"08:00",workDayEnd:"17:00"};Wt.propTypes={name:n.string,dateRange:n.oneOfType([n.func,n.object]),title:n.oneOfType([n.string,n.func]),slotWidth:n.number,workWeekStart:n.number,workWeekEnd:n.number,workDayStart:n.string,workDayEnd:n.string},Wt.displayName="KendoReactGanttWeekView";const Kt=D.forwardRef(((e,t)=>{const{slotWidth:n=Vt.slotWidth,slotDuration:o=Vt.slotDuration,firstSlotRangeRef:r,timelineHeaderCell:l}=e,{timezone:i}=ie(),d=s.useInternationalization(),c=D.useRef(null),u=D.useRef(null),m=D.useCallback((e=>{u.current&&u.current.scrollIntoView(e)}),[]);D.useImperativeHandle(c,(()=>({scrollIntoView:m}))),D.useImperativeHandle(t,(()=>c.current));const p=ce(),g=e.workWeekStart||Vt.workWeekStart,h=e.workWeekEnd||Vt.workWeekEnd,f=e.workDayStart||Vt.workDayStart,k=e.workDayEnd||Vt.workDayEnd,y=D.useMemo((()=>{const e=q({workWeekStart:g,workWeekEnd:h}),t=[],n=j(p,{workDays:e,timezone:i},d);return n.forEach((e=>{const n=((e,t,n)=>{const o=n.parseDate(t.workDayStart).getHours(),r=n.parseDate(t.workDayEnd).getHours();return U(e,{step:a.MS_PER_MINUTE*t.slotDuration,timezone:t.timezone}).map((e=>{const t=e.zonedStart.getHours();return{range:e,isWork:t>=o&&t<r,span:1,text:n.formatDate(e.zonedStart,"hh:mm a"),type:"time"}}))})(e.range,{workDayStart:f,workDayEnd:k,timezone:i,slotDuration:o},d);e.span=n.length,t.push.apply(t,n)})),r&&t[0]&&(r.current=t[0].range),[n,t]}),[i,p.start.getTime(),p.end.getTime(),d,g,h,f,k]);return D.createElement(Fe,{ref:u,slotWidth:n,slotLevels:y,timelineHeaderCell:l})})),Vt={name:"day",dateRange:({tasksStart:e,tasksEnd:t,timezone:n})=>{const o=a.ZonedDate.fromLocalDate(e,n),r=a.ZonedDate.fromLocalDate(t,n),l=A(o),s=P(r),i=a.ZonedDate.fromUTCDate(B(l),n),d=a.ZonedDate.fromUTCDate(B(s),n);return{start:new Date(i.getTime()),end:new Date(d.getTime()),zonedStart:i,zonedEnd:d}},title:e=>e.toLanguageString(Me,Lt[Me]),slotWidth:T,slotDuration:60,workWeekStart:1,workWeekEnd:5,workDayStart:"08:00",workDayEnd:"17:00"};Kt.propTypes={name:n.string,dateRange:n.oneOfType([n.func,n.object]),title:n.oneOfType([n.string,n.func]),slotWidth:n.number,slotDuration:n.number,workWeekStart:n.number,workWeekEnd:n.number,workDayStart:n.string,workDayEnd:n.string},Kt.displayName="KendoReactGanttDayView";const Ot=D.forwardRef(((e,t)=>{const{slotWidth:n=At.slotWidth,firstSlotRangeRef:a,timelineHeaderCell:o}=e,{timezone:r}=ie(),l=s.useInternationalization(),i=D.useRef(null),d=D.useRef(null),c=D.useCallback((e=>{d.current&&d.current.scrollIntoView(e)}),[]);D.useImperativeHandle(i,(()=>({scrollIntoView:c}))),D.useImperativeHandle(t,(()=>i.current));const u=ce(),m=D.useMemo((()=>{const e=[],t=X(u,{timezone:r},l);return t.forEach((t=>{const n=Y(t.range,{timezone:r},l);e.push.apply(e,n)})),a&&e[0]&&(a.current=e[0].range),[t,e]}),[r,u.start.getTime(),u.end.getTime(),l]);return D.createElement(Fe,{ref:d,slotWidth:n,slotLevels:m,timelineHeaderCell:o})})),At={name:"month",dateRange:({tasksStart:e,tasksEnd:t,timezone:n})=>{const o=a.ZonedDate.fromLocalDate(e,n),r=a.ZonedDate.fromLocalDate(t,n),l=a.firstDayOfMonth(a.getDate(o)),s=a.addDays(a.lastDayOfMonth(a.getDate(r)),1),i=a.ZonedDate.fromUTCDate(B(l),n),d=a.ZonedDate.fromUTCDate(B(s),n);return{start:new Date(i.getTime()),end:new Date(d.getTime()),zonedStart:i,zonedEnd:d}},title:e=>e.toLanguageString(ze,Lt[ze]),slotWidth:T,workWeekStart:1,workWeekEnd:5,workDayStart:"08:00",workDayEnd:"17:00"};Ot.propTypes={name:n.string,dateRange:n.oneOfType([n.func,n.object]),title:n.oneOfType([n.string,n.func]),slotWidth:n.number,workWeekStart:n.number,workWeekEnd:n.number,workDayStart:n.string,workDayEnd:n.string},Ot.displayName="GanttMonthView";const Pt=D.forwardRef(((e,t)=>{const{slotWidth:n=Bt.slotWidth,firstSlotRangeRef:a,timelineHeaderCell:o}=e,{timezone:r}=ie(),l=s.useInternationalization(),i=D.useRef(null),d=D.useRef(null),c=D.useCallback((e=>{d.current&&d.current.scrollIntoView(e)}),[]);D.useImperativeHandle(i,(()=>({scrollIntoView:c}))),D.useImperativeHandle(t,(()=>i.current));const u=ce(),m=D.useMemo((()=>{const e=Q(u,{timezone:r},l),t=[];return e.forEach((e=>{const n=X(e.range,{timezone:r},l);t.push.apply(t,n)})),a&&t[0]&&(a.current=t[0].range),[e,t]}),[r,u.start.getTime(),u.end.getTime(),l]);return D.createElement(Fe,{slotWidth:n,slotLevels:m,timelineHeaderCell:o})})),Bt={name:"year",dateRange:({tasksStart:e,tasksEnd:t,timezone:n})=>{const o=a.ZonedDate.fromLocalDate(e,n),r=a.ZonedDate.fromLocalDate(t,n),l=a.firstDayOfMonth(a.firstMonthOfYear(a.getDate(o))),s=a.addDays(a.lastDayOfMonth(a.lastMonthOfYear(a.getDate(r))),1),i=a.ZonedDate.fromUTCDate(B(l),n),d=a.ZonedDate.fromUTCDate(B(s),n);return{start:new Date(i.getTime()),end:new Date(d.getTime()),zonedStart:i,zonedEnd:d}},title:e=>e.toLanguageString(Le,Lt[Le]),slotWidth:T};Pt.propTypes={name:n.string,dateRange:n.oneOfType([n.func,n.object]),title:n.oneOfType([n.string,n.func]),slotWidth:n.number},Pt.displayName="GanttYearView";const Gt=e=>{const[t,n]=pe(),a=s.useLocalization(),o=D.useMemo((()=>"function"==typeof e.view.title?e.view.title.call(void 0,a):e.view.title),[e.view.title,a]),r=D.useCallback((()=>{e.view.name&&n(e.view.name)}),[n,e.view.name]);return D.createElement(d.Button,{role:"button",type:"button",tabIndex:-1,togglable:!0,selected:e.view.name===t,onClick:r},o)};Gt.displayName="KendoReactGanttViewSelectorItem";const _t=D.forwardRef((()=>{const e=D.useContext(ue),[t,n]=pe(),a=s.useLocalization(),o=D.useCallback((e=>{n&&(e.preventDefault(),n(e.target.value))}),[n]);return D.createElement("div",{className:"k-gantt-views-wrapper"},D.createElement(d.ButtonGroup,{className:"k-gantt-views"},e.map((e=>D.createElement(Gt,{key:e.props.name,view:e.props})))),D.createElement("select",{value:t,onChange:o,"aria-label":(e=>a.toLanguageString(e,Lt[e]))(Tt),className:"k-picker k-picker-solid k-dropdown-list k-dropdown k-views-dropdown k-rounded-md"},e.map((e=>D.createElement("option",{key:e.props.name,value:e.props.name},"function"==typeof e.props.title?e.props.title.call(void 0,a):e.props.title)))))}));_t.displayName="KendoReactGanttViewSelectorList";const $t=D.forwardRef(((e,t)=>{const{className:n,...a}=e,r=D.useRef(null);return D.useImperativeHandle(t,(()=>({element:r.current,props:e}))),D.createElement(d.ToolbarItem,{ref:e=>{e&&(r.current=e.element)},className:o.classNames("k-gantt-views",n),...a},e.children)}));$t.displayName="KendoReactGanttViewSelector";const qt=D.forwardRef(((e,t)=>{const{className:n,...a}=e,r=D.useRef(null),l=D.useRef(null);D.useImperativeHandle(l,(()=>({element:r.current,props:e}))),D.useImperativeHandle(t,(()=>l.current));const s=D.useMemo((()=>o.classNames("k-gantt-toolbar k-gantt-header",n)),[n]);return D.createElement(d.Toolbar,{ref:e=>{e&&(r.current=e.element)},className:s,...a},e.children)}));qt.displayName="KendoReactGanttToolbar";const Zt=Object.freeze({name:"@progress/kendo-react-gantt",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate:0,version:"12.0.2-develop.5",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"}),Ut=D.forwardRef(((e,t)=>{const n=s.useLocalization(),a=e=>n.toLanguageString(e,Lt[e]),r=a(It),l=a(wt),c=a(St),u=a(Rt),m=D.useCallback((t=>{t.syntheticEvent.preventDefault();const n=t.item&&t.item.direction?t.item.direction:"none";e.onClick&&e.onClick({nativeEvent:t.nativeEvent,syntheticEvent:t.syntheticEvent,direction:n})}),[e.onClick]),p=D.useCallback((t=>{t.preventDefault(),e.onClick&&e.onClick({nativeEvent:t&&t.nativeEvent,syntheticEvent:t,direction:"none"})}),[e.onClick]),g=D.createElement(D.Fragment,null,D.createElement(o.IconWrap,{name:"plus",icon:i.plusIcon}),r);return e.selectedTask?D.createElement(d.DropDownButton,{className:"k-views-dropdown",onItemClick:m,popupSettings:{popupClass:"k-gantt-toolbar"},textField:"title",items:[{title:l,direction:"child"},{title:c,direction:"above"},{title:u,direction:"below"}],text:g}):D.createElement(d.Button,{onClick:p},g)}));Ut.displayName="KendoReactGanttAddButton";const jt=D.forwardRef(((e,t)=>{const n=!o.validatePackage(Zt,{component:"Gantt"}),a=o.getLicenseMessage(Zt),{columns:r=Yt.columns,taskData:i=Yt.taskData,dependencyData:c=Yt.dependencyData,style:u,className:m,noRecords:p,timezone:g,rowHeight:h=Yt.rowHeight,resizable:f,reorderable:k,sortable:y,sort:v,filter:C,columnMenuFilter:E,columnMenu:b,navigatable:I,toolbar:w,row:R,selectable:T}=e,x=new Map;x.set(Kt,Vt),x.set(Ot,At),x.set(Wt,Ht),x.set(Pt,Bt);const F=s.useInternationalization(),{fields:N}=D.useMemo((()=>(e=>({fields:{...z,...e}}))(e.taskModelFields)),[e.taskModelFields]),{fields:M}=D.useMemo((()=>(e=>({fields:{...L,...e}}))(e.dependencyModelFields)),[e.dependencyModelFields]),W=D.useCallback(((e,t)=>n=>J(n,e)&&ee(n,t)?[...o.getter(t)(n)]:[])(N.isExpanded,N.children),[N.isExpanded,N.children]),H=D.useRef(null),K=D.useRef(null),V=D.useRef(null),O=D.useRef(null),A=D.useRef(null),P=D.useCallback((e=>{const t=o.getter(N.start)(e),n=o.getter(N.end)(e),a=o.getter(N.isSelected)(e);(!K.current||t<K.current)&&(K.current=t),(!V.current||n>V.current)&&(V.current=n),a&&(O.current=e)}),[N.start,N.end]),B=D.useMemo((()=>(K.current=null,V.current=null,O.current=null,l.flatData(i,W,P))),[i,W]);(!K.current||!V.current)&&(K.current=new Date(S),V.current=new Date(S));const G=D.Children.toArray(e.children||[]).map((e=>{var t;return D.isValidElement(e)?D.cloneElement(e,{...x.get(e.type),...null!=(t=e.props)?t:{}}):e})),_=D.cloneElement(D.createElement(Wt,null),x.get(Wt)),$=G.length?G[0]:_,[q,Z]=((e,t,n)=>{const[a,o]=D.useState(t||e),r=D.useCallback(((e,t)=>{o(e),n&&n.call(void 0,{...t,value:e})}),[n,o]);return[void 0!==t?t:a,r]})(e.defaultView||$.props.name,e.view,e.onViewChange),U=G.find((e=>e.props.name===q))||$,j="function"==typeof U.props.dateRange?U.props.dateRange.call(void 0,{intl:F,tasksStart:K.current,tasksEnd:V.current,timezone:g}):U.props.dateRange,Y=D.useRef(null),[X,Q]=D.useState(0);o.useIsomorphicLayoutEffect((()=>{Y.current&&Q(Y.current.element.offsetHeight)}),[]);const te=D.useCallback((e=>{H.current&&H.current.scrollIntoView(e)}),[]),ne=D.useRef(null),ae=D.useRef(null);D.useImperativeHandle(ae,(()=>({props:e,element:ne.current,scrollIntoView:te}))),D.useImperativeHandle(t,(()=>ae.current));const oe=D.useCallback((t=>{e.onDataStateChange&&e.onDataStateChange.call(void 0,{...t,target:ae.current})}),[e.onDataStateChange]),re=D.useCallback((t=>{e.onSortChange&&e.onSortChange.call(void 0,{...t,target:ae.current})}),[e.onSortChange]),le=D.useCallback((t=>{e.onKeyDown&&e.onKeyDown.call(void 0,{...t,target:ae.current})}),[e.onKeyDown]),se=D.useCallback((t=>{e.onSelectionChange&&e.onSelectionChange.call(void 0,{...t,target:ae.current})}),[e.onSelectionChange]),ie=D.useCallback((t=>{e.onHeaderSelectionChange&&e.onHeaderSelectionChange.call(void 0,{...t,target:ae.current})}),[e.onHeaderSelectionChange]),de=D.useCallback((t=>{e.onFilterChange&&e.onFilterChange.call(void 0,{...t,target:ae.current})}),[e.onFilterChange]),ce=D.useCallback((t=>{e.onColumnMenuFilterChange&&e.onColumnMenuFilterChange.call(void 0,{...t,target:ae.current})}),[e.onColumnMenuFilterChange]),ue=D.useCallback((t=>{e.onExpandChange&&e.onExpandChange.call(void 0,{...t,target:ae.current})}),[e.onExpandChange]),me=D.useCallback((t=>{e.onAddClick&&e.onAddClick.call(void 0,{...t,target:ae.current,selectedDataItem:O.current,slotStart:A.current&&new Date(A.current.start.getTime()),slotEnd:A.current&&new Date(A.current.end.getTime())})}),[e.onAddClick]),pe=D.useCallback((t=>{e.onColumnResize&&e.onColumnResize.call(void 0,{...t,target:ae.current})}),[e.onColumnResize]),ge=D.useCallback((t=>{e.onColumnReorder&&e.onColumnReorder.call(void 0,{...t,target:ae.current})}),[e.onColumnReorder]),he=D.useCallback((t=>{e.onRowClick&&e.onRowClick.call(void 0,{...t,target:ae.current})}),[e.onRowClick]),fe=D.useCallback((t=>{e.onRowDoubleClick&&e.onRowDoubleClick.call(void 0,{...t,target:ae.current})}),[e.onRowClick]),ke=D.useCallback((t=>{e.onRowContextMenu&&e.onRowContextMenu.call(void 0,{...t,target:ae.current})}),[e.onRowClick]),ye=D.useCallback((t=>{e.onTaskClick&&e.onTaskClick.call(void 0,{...t,target:ae.current})}),[e.onTaskClick]),Ce=D.useCallback((t=>{e.onTaskDoubleClick&&e.onTaskDoubleClick.call(void 0,{...t,target:ae.current})}),[e.onTaskDoubleClick]),De=D.useCallback((t=>{e.onTaskContextMenu&&e.onTaskContextMenu.call(void 0,{...t,target:ae.current})}),[e.onTaskContextMenu]),Ee=D.useCallback((t=>{e.onTaskRemoveClick&&e.onTaskRemoveClick.call(void 0,{...t,target:ae.current})}),[e.onTaskRemoveClick]),be=D.useCallback((t=>{if(e.onDependencyCreate){let n,a;const r=o.getter(N.id);for(let e=0;e<B.length;e++){const o=r(B[e].dataItem);if(String(o)===t.fromId&&(n=o),String(o)===t.toId&&(a=o),n&&a)break}e.onDependencyCreate.call(void 0,{fromId:n,toId:a,target:ae.current,type:t.type})}}),[e.onDependencyCreate,N,B]);return D.createElement(ve,{dateRange:j,taskData:B,dependencyData:c,taskModelFields:N,dependencyModelFields:M,views:G,activeView:[q,Z],rowHeight:h,toolbarHeight:X,props:{columns:r,noRecords:p,timezone:g,resizable:f,reorderable:k,sortable:y,sort:v,filter:C,columnMenuFilter:E,columnMenu:b,navigatable:I,row:R,selectable:T},events:{onDataStateChange:oe,onSortChange:re,onFilterChange:de,onColumnMenuFilterChange:ce,onExpandChange:ue,onRowClick:he,onRowDoubleClick:fe,onRowContextMenu:ke,onColumnResize:pe,onColumnReorder:ge,onDependencyCreate:e.onDependencyCreate&&be,onKeyDown:le,onSelectionChange:se,onHeaderSelectionChange:ie},taskEvents:{onTaskClick:ye,onTaskDoubleClick:Ce,onTaskContextMenu:De,onTaskRemoveClick:e.onTaskRemoveClick&&Ee}},D.createElement("div",{ref:ne,role:"application",style:u,className:o.classNames("k-gantt",m)},D.createElement(qt,{ref:Y},w&&w.addTaskButton?D.createElement(Ut,{selectedTask:O.current,onClick:me}):null,D.createElement(d.ToolbarSpacer,null),D.createElement($t,null,D.createElement(_t,null))),U&&D.createElement(U.type,{key:U.props.name,ref:H,...U.props,firstSlotRangeRef:A}),n&&D.createElement(o.WatermarkOverlay,{message:a})))})),Yt={taskData:[],dependencyData:[],columns:[],rowHeight:40};jt.propTypes={taskData:n.array,taskModelFields:n.shape({id:n.string,start:n.string,end:n.string,title:n.string,percentComplete:n.string,parentId:n.string,isRollup:n.string,isExpanded:n.string,children:n.string,isInEdit:n.string}),dependencyData:n.array,dependencyModelFields:n.shape({id:n.string,fromId:n.string,toId:n.string,type:n.string}),columns:n.arrayOf(n.shape({width:n.number,cell:n.any,editCell:n.any,headerCell:n.any,filter:n.any,children:n.any,field:n.string,title:n.string,sortable:n.any,expandable:n.bool,headerSelectionValue:n.bool,format:n.string,headerClassName:n.string,className:n.string,resizable:n.bool,reorderable:n.bool,minResizableWidth:n.number,orderIndex:n.number,columnMenu:n.any})),sort:n.array,filter:n.array,columnMenuFilter:n.array,columnMenu:n.any,style:n.object,className:n.string,children:n.any,timezone:n.string,defaultView:n.string,view:n.string,rowHeight:n.number,navigatable:n.bool,onViewChange:n.func,onDataStateChange:n.func,onSortChange:n.func,onFilterChange:n.func,onExpandChange:n.func,onRowClick:n.func,onColumnResize:n.func,onColumnReorder:n.func},jt.displayName="KendoReactGantt";const Xt=[{text:Ge,operator:"contains"},{text:_e,operator:"doesnotcontain"},{text:He,operator:"eq"},{text:Ke,operator:"neq"},{text:Be,operator:"startswith"},{text:$e,operator:"endswith"},{text:Ve,operator:"isnull"},{text:Oe,operator:"isnotnull"},{text:Ae,operator:"isempty"},{text:Pe,operator:"isnotempty"}],Qt=[{text:He,operator:"eq"},{text:Ke,operator:"neq"},{text:qe,operator:"gte"},{text:Ze,operator:"gt"},{text:Ue,operator:"lte"},{text:je,operator:"lt"},{text:Ve,operator:"isnull"},{text:Oe,operator:"isnotnull"}],Jt=[{text:He,operator:"eq"},{text:Ke,operator:"neq"},{text:Je,operator:"gte"},{text:et,operator:"gt"},{text:tt,operator:"lt"},{text:nt,operator:"lte"},{text:Ve,operator:"isnull"},{text:Oe,operator:"isnotnull"}],en=[{text:Qe,operator:""},{text:Ye,operator:!0},{text:Xe,operator:!1}];function tn(e,t){return{clearButtonTitle:e.toLanguageString(We,Lt[We]),operators:t.map((t=>({text:e.toLanguageString(t.text,Lt[t.text]),operator:t.operator})))}}const nn=e=>{const{operators:t,...n}=e;return D.createElement(r.TextFilterCell,{ariaLabel:"text filter",...tn(s.useLocalization(),t||Xt),...n})};nn.displayName="KendoReactGanttTextFilter";const an=e=>{const{operators:t,...n}=e;return D.createElement(r.NumericFilterCell,{ariaLabel:"numeric filter",...tn(s.useLocalization(),t||Qt),...n})};an.displayName="KendoReactGanttNumericFilter";const on=e=>{const{operators:t,...n}=e;return D.createElement(r.BooleanFilterCell,{ariaLabel:"boolean filter",...tn(s.useLocalization(),t||en),...n})};on.displayName="KendoReactGanttBooleanFilter";const rn=e=>{const{operators:t,...n}=e;return D.createElement(r.DateFilterCell,{ariaLabel:"date filter",...tn(s.useLocalization(),t||Jt),...n})};rn.displayName="KendoReactGanttDateFilter";const ln=(e,t)=>{cn(e,t),un(e,t),mn(e,t)},sn=(e,t,n)=>{const a=o.getter(t.children),r=o.setter(t.children);for(let t=e.length-1;t>=0;t--){const o=e[t],l=a(o);if(n.parentId===o.id){const e=l.filter((e=>e.parentId===o.id));r(o,e)}}},dn=(e,t,n)=>{const a=o.getter(t.children),r=o.setter(t.children);return null===n.parentId?[...e,n]:(e=K(e,t.children,(e=>{if(e.id===n.parentId){const t=a(e)||[];r(e,[...t,n])}return{...e}})),e)},cn=(e,t)=>{if(!e.length)return;const n=o.getter(t.children),a=o.getter(t.start),r=o.setter(t.start);for(let t=e.length-1;t>=0;t--){const o=e[t],l=n(o);if(l&&l.length){const e=l.reduce(((e,t)=>Math.min(e,a(t).getTime())),a(l[0]).getTime());r(o,new Date(e))}}},un=(e,t)=>{if(!e.length)return;const n=o.getter(t.children),a=o.getter(t.end),r=o.setter(t.end);for(let t=e.length-1;t>=0;t--){const o=e[t],l=n(o);if(l&&l.length){const e=l.reduce(((e,t)=>Math.max(e,a(t).getTime())),a(l[0]).getTime());r(o,new Date(e))}}},mn=(e,t)=>{if(!e.length)return;const n=o.getter(t.children),a=o.getter(t.percentComplete),r=o.setter(t.percentComplete),l=({avg:e,n:t},n)=>({avg:((a(n)||0)+t*e)/(t+1),n:t+1});for(let t=e.length-1;t>=0;t--){const a=e[t],o=n(a);if(o&&o.length){r(a,o.reduce(l,{avg:0,n:0}).avg)}}},pn=(e,t,n)=>{if(!e)return;const a=o.getter(t.children),r=o.getter(t.start),l=o.setter(t.start),s=o.getter(t.end),i=o.setter(t.end),d=e.map((e=>({task:e,childrenIndex:0})));for(;d.length>0;){const e=d[d.length-1],t=e.task,o=a(t);o&&o.length&&o.length>e.childrenIndex?(d.push({task:o[e.childrenIndex],childrenIndex:0}),e.childrenIndex++):(d.pop(),l(t,new Date(r(t).getTime()+n)),i(t,new Date(s(t).getTime()+n)))}},gn=e=>{const{validationMessage:t,touched:n,label:a,id:o,valid:r,disabled:l,hint:s,type:i,optional:d,...c}=e,m=n&&t,h=!m&&s,f=h?`${o}_hint`:"",k=m?`${o}_error`:"";return D.createElement(u.FieldWrapper,{className:"k-col-span-full"},D.createElement(p.Label,{editorId:o,editorValid:r,editorDisabled:l,optional:d},a),D.createElement("div",{className:"k-form-field-wrap"},D.createElement(g.Input,{valid:r,type:i,id:o,disabled:l,ariaDescribedBy:`${f} ${k}`,...c}),h&&D.createElement(p.Hint,{id:f},s),m&&D.createElement(p.Error,{id:k},t)))},hn=e=>{const{validationMessage:t,touched:n,label:a,id:o,valid:r,disabled:l,hint:s,wrapperStyle:i,...d}=e,c=n&&t,m=!c&&s,g=m?`${o}_hint`:"",h=c?`${o}_error`:"",k=a?`${o}_label`:"";return D.createElement(u.FieldWrapper,{style:i,className:"k-col-span-2"},D.createElement(p.Label,{id:k,editorId:o,editorValid:r,editorDisabled:l},a),D.createElement("div",{className:"k-form-field-wrap"},D.createElement(f.DateTimePicker,{ariaLabelledBy:k,ariaDescribedBy:`${g} ${h}`,valid:r,id:o,disabled:l,...d}),m&&D.createElement(p.Hint,{id:g},s),c&&D.createElement(p.Error,{id:h},t)))},fn=e=>{const{validationMessage:t,visited:n,label:a,id:o,valid:r,disabled:l,hint:s,...i}=e,d=n&&t,c=!d&&s,m=c?`${o}_hint`:"",h=d?`${o}_error`:"";return D.createElement(u.FieldWrapper,null,D.createElement(p.Label,{editorId:o,editorValid:r,editorDisabled:l},a),D.createElement("div",{className:"k-form-field-wrap"},D.createElement(g.NumericTextBox,{ariaDescribedBy:`${m} ${h}`,valid:r,id:o,disabled:l,format:"p0",step:.01,...i}),c&&D.createElement(p.Hint,{id:m},s),d&&D.createElement(p.Error,{id:h},t)))},kn=e=>{const{validationMessage:t,touched:n,label:a,id:o,valid:r,disabled:l,hint:s,idField:i,dataItem:d,...c}=e,m=[],g=n&&t,h=!g&&s,f=h?`${o}_hint`:"",y=g?`${o}_error`:"",v=D.useCallback((t=>{if(!t||!t.children)return e.data;for(const e of t.children)m.push(e),e.children&&v(e);const n=m.map((e=>e.id));return e.data.filter((e=>!n.includes(e.id)))}),[e.data]),C=v(d),E=D.useMemo((()=>C.map((e=>{const t=new Date(e.start).toLocaleDateString(),n=new Date(e.end).toLocaleDateString();return{...e,title:`${e.title} (${t}-${n})`}}))),[v]),b=D.useMemo((()=>k.findByFieldValue(E,i,e.value)),[E,i,e.value]);return D.createElement(u.FieldWrapper,{className:"k-col-span-full"},D.createElement(p.Label,{editorId:o,editorValid:r,editorDisabled:l},a),D.createElement("div",{className:"k-form-field-wrap"},D.createElement(k.DropDownList,{textField:"title",ariaDescribedBy:`${f} ${y}`,valid:r,id:o,disabled:l,...c,value:b,data:E,onChange:t=>{null===t.value.id?e.onChange({value:null}):e.onChange({value:t.value[i]})},defaultItem:{id:null,title:"-None-",parentId:null}}),h&&D.createElement(p.Hint,{id:f},s),g&&D.createElement(p.Error,{id:y},t)))},yn=e=>{const{selectedItem:t,updateDependency:n,flatTasks:a}=D.useContext(Cn),r=e.dataItem,[l,s]=D.useState(a),i=D.useRef(null),d=D.useMemo((()=>k.findByFieldValue(a,"id",r.fromId)),[a,r.fromId]);return D.createElement("td",{ref:i,className:o.classNames((t&&!r.uid?t.id===r.id:t&&null===r.id?t.uid===r.uid:void 0)&&"k-selected")},D.createElement(k.DropDownList,{textField:"title",data:l,value:d,onChange:e=>{n(r,"fromId",e.target.value.id)},filterable:!0,onFilterChange:e=>{const t=v.filterBy(a,e.filter);s(t)},required:!0}))},vn=e=>{const{selectedItem:t,updateDependency:n,dependencyTypes:a}=D.useContext(Cn),r=e.dataItem,l=D.useMemo((()=>k.findByFieldValue(a,"type",r.type)),[a,r.type]);return D.createElement("td",{className:o.classNames((t&&!r.uid?t.id===r.id:t&&null===r.id?t.uid===r.uid:void 0)&&"k-selected")},D.createElement(k.DropDownList,{textField:"name",data:a,value:l,onChange:e=>{n(r,"type",e.target.value.type)}}))},Cn=D.createContext({flatTasks:[],dependencyTypes:[],selectedItem:void 0,updateDependency:()=>{}}),Dn=e=>{var t;const[n,a]=D.useState([]),o=s.useLocalization(),r=e=>o.toLanguageString(e,Lt[e]),l=r(rt),c=r(lt),u=r(Mt),m=r(zt),p=D.useMemo((()=>{const t=e.predecessors.map((t=>{const n=k.findByFieldValue(e.flatTasks,"id",t.fromId),a=k.findByFieldValue(e.dependencyTypes,"type",t.type);return{...t,taskTitle:n?n.title:"",typeName:a?a.type:""}}));return v.orderBy(t,n)}),[e.predecessors,e.dependencyTypes,e.flatTasks,n]);return D.createElement(Cn.Provider,{value:{flatTasks:e.flatTasks,dependencyTypes:e.dependencyTypes,selectedItem:e.selectedItem,updateDependency:e.updateDependency}},D.createElement(y.Grid,{data:p,sort:n,sortable:!0,onRowClick:e.onSelectRow,onSortChange:e=>{a(e.sort)},style:{height:"23em"}},D.createElement(y.GridToolbar,null,D.createElement(d.Button,{icon:"plus",svgIcon:i.plusIcon,onClick:e.addPredecessorsDependency},l),D.createElement(d.Button,{icon:"minus",svgIcon:i.minusIcon,onClick:e.deleteDependency,disabled:void 0===(null==(t=e.selectedItem)?void 0:t.id)},c)),D.createElement(y.GridColumn,{field:"taskTitle",title:u,cells:{data:yn}}),D.createElement(y.GridColumn,{field:"typeName",title:m,cells:{data:vn}})))},En=e=>{const{selectedItem:t,updateDependency:n,flatTasks:a}=D.useContext(In),r=e.dataItem,[l,s]=D.useState(a),i=D.useMemo((()=>k.findByFieldValue(a,"id",r.toId)),[a,r.toId]);return D.createElement("td",{className:o.classNames((t&&!r.uid?t.id===r.id:t&&null===r.id?t.uid===r.uid:void 0)&&"k-selected")},D.createElement(k.DropDownList,{textField:"title",data:l,value:i,onChange:e=>{n(r,"toId",e.target.value.id)},filterable:!0,onFilterChange:e=>{const t=v.filterBy(a,e.filter);s(t)},required:!0}))},bn=e=>{const{selectedItem:t,updateDependency:n,dependencyTypes:a}=D.useContext(In),r=e.dataItem,l=D.useMemo((()=>k.findByFieldValue(a,"type",r.type)),[a,r.type]);return D.createElement("td",{className:o.classNames((t&&!r.uid?t.id===r.id:t&&null===r.id?t.uid===r.uid:void 0)&&"k-selected")},D.createElement(k.DropDownList,{textField:"name",data:a,value:l,onChange:e=>{n(r,"type",e.target.value.type)}}))},In=D.createContext({flatTasks:[],dependencyTypes:[],selectedItem:void 0,updateDependency:()=>{}}),wn=e=>{var t;const[n,a]=D.useState([]),o=s.useLocalization(),r=e=>o.toLanguageString(e,Lt[e]),l=r(rt),c=r(lt),u=r(Mt),m=r(zt),p=D.useMemo((()=>{const t=e.successors.map((t=>{const n=k.findByFieldValue(e.flatTasks,"id",t.toId),a=k.findByFieldValue(e.dependencyTypes,"type",t.type);return{...t,taskTitle:n?n.title:"",typeName:a?a.type:""}}));return v.orderBy(t,n)}),[e.successors,e.dependencyTypes,e.flatTasks,n]);return D.createElement(In.Provider,{value:{flatTasks:e.flatTasks,dependencyTypes:e.dependencyTypes,selectedItem:e.selectedItem,updateDependency:e.updateDependency}},D.createElement(y.Grid,{data:p,sort:n,sortable:!0,onRowClick:e.onSelectRow,onSortChange:e=>{a(e.sort)},style:{height:"23em"}},D.createElement(y.GridToolbar,null,D.createElement(d.Button,{icon:"plus",svgIcon:i.plusIcon,onClick:e.addSuccessorsDependency},l),D.createElement(d.Button,{icon:"minus",svgIcon:i.minusIcon,onClick:e.deleteDependency,disabled:void 0===(null==(t=e.selectedItem)?void 0:t.id)},c)),D.createElement(y.GridColumn,{field:"taskTitle",title:u,cells:{data:En}}),D.createElement(y.GridColumn,{field:"type",title:m,cells:{data:bn}})))};var Sn=(e=>(e[e.FF=0]="FF",e[e.FS=1]="FS",e[e.SF=2]="SF",e[e.SS=3]="SS",e))(Sn||{});const Rn=[{type:Sn.FF},{type:Sn.FS},{type:Sn.SF},{type:Sn.SS}],Tn=e=>{const[t,n]=D.useState(0),[a,r]=D.useState(),[i,d]=D.useState([...e.dependencyData||[]]),[c,m]=D.useState([]),p=oe(),g=s.useLocalization(),f=e=>g.toLanguageString(e,Lt[e]),y=f(ut),v=f(mt),C=f(pt),E=f(gt),b=f(ht),I=f(st),w=f(it),S=f(dt),R=f(ft),T=f(kt),x=f(yt),F=f(vt),N=D.useMemo((()=>l.flatData(e.taskData||[],(e=>e.children||[]),(e=>{const t={title:e[p.title],id:e[p.id],start:e[p.start],end:e[p.end],parentId:null};return p.parentId&&(t.parentId=e[p.parentId]),t}))),[e.taskData,p]),M=D.useMemo((()=>N.filter((t=>t.id!==e.dataItem.id))),[N,e.dataItem]),z=D.useMemo((()=>i.filter((t=>t.toId===e.dataItem.id))),[i,e.dataItem]),L=D.useMemo((()=>i.filter((t=>t.fromId===e.dataItem.id))),[i,e.dataItem]),W=D.useMemo((()=>i.filter((e=>null===e.id)).map((e=>({id:e.id,fromId:e.fromId,toId:e.toId,type:e.type})))),[i]),H=D.useMemo((()=>i.filter((e=>null!==e.id&&e.uid)).map((e=>({id:e.id,fromId:e.fromId,toId:e.toId,type:e.type})))),[i]),K=()=>{if(a){if(a.id){const e=i.filter((e=>e.id!==a.id));d(e);const t=i.filter((e=>e.id===a.id));m((e=>[...e,...t]))}else{const e=i.filter((e=>e.uid!==a.uid));d(e);const t=i.filter((e=>e.uid===a.uid));m((e=>[...e,...t]))}r(void 0)}},V=D.useCallback((e=>e||0===e?void 0:R),[R]),O=D.useCallback((e=>e||0===e?e>=0&&e<=1?void 0:F:R),[R,F]),A=D.useCallback(((e,t)=>e&&t(p.end)&&e.getTime()>t(p.end).getTime()?T:void 0),[p,T]),P=D.useCallback(((e,t)=>e&&t(p.start)&&e.getTime()<t(p.start).getTime()?x:void 0),[p,x]),B=D.useMemo((()=>[V,A]),[V,A]),G=D.useMemo((()=>[V,P]),[V,P]),_=D.useMemo((()=>k.findByFieldValue(i,"fromId",null)||k.findByFieldValue(i,"toId",null)),[i]),$=e=>{r(e.dataItem)},q=(e,t,n)=>{const a={...e,uid:e.uid||o.guid(),[t]:n},r=i.findIndex((e=>e.id&&e.id===a.id||e.uid&&e.uid===a.uid));r>-1&&(i.splice(r,1,a),d([...i]))},Z=D.useMemo((()=>Rn.map((e=>{let t;switch(e.type){case Sn.FF:t=f(Ct);break;case Sn.FS:t=f(Et);break;case Sn.SF:t=f(Dt);break;case Sn.SS:t=f(bt);break;default:t=f(Ct)}return{...e,name:t}}))),[f]);D.useEffect((()=>{e.onDependencyCreate&&e.onDependencyCreate.call(void 0,{createdDependencies:W,updatedDependencies:H,deletedDependencies:c})}),[W,H,c,e.onDependencyCreate]);const U=e.dependencyData&&e.taskData,j=D.createElement(u.FormElement,{style:{width:400},horizontal:!0},D.createElement(u.Field,{id:`${p.title}_gantteditor`,name:p.title,label:y,component:gn,validator:V}),D.createElement(u.Field,{id:`${p.start}_gantteditor`,name:p.start,label:v,component:hn,validator:B}),D.createElement(u.Field,{id:`${p.end}_gantteditor`,name:p.end,label:C,component:hn,validator:G}),D.createElement(u.Field,{id:`${p.percentComplete}_gantteditor`,name:p.percentComplete,label:E,component:fn,validator:O})),Y=D.createElement(u.FormElement,{style:{paddingInline:"4px"}},D.createElement("div",{className:"k-form-fieldset"},D.createElement("div",{className:"k-form-layout k-d-grid k-grid-cols-4 k-gap-x-2"},D.createElement(u.Field,{id:`${p.title}_gantteditor`,name:p.title,label:y,component:gn,validator:V}),D.createElement(u.Field,{id:`${p.start}_gantteditor`,name:p.start,label:v,component:hn,validator:B}),D.createElement(u.Field,{id:`${p.end}_gantteditor`,name:p.end,label:C,component:hn,validator:G}),D.createElement(u.Field,{id:`${p.percentComplete}_gantteditor`,name:p.percentComplete,label:E,component:fn,validator:O}),p.parentId&&D.createElement(u.Field,{id:`${p.parentId}_gantteditor`,name:p.parentId||"",idField:p.id,label:b,component:kn,data:M,dataItem:e.dataItem}))));return U?D.createElement(h.TabStrip,{selected:t,onSelect:e=>{_||(n(e.selected),r(void 0))}},D.createElement(h.TabStripTab,{title:I},Y),D.createElement(h.TabStripTab,{title:w},D.createElement(Dn,{flatTasks:N,predecessors:z,dependencyTypes:Z,selectedItem:a,onSelectRow:$,addPredecessorsDependency:()=>{const t={uid:o.guid(),id:null,fromId:null,toId:e.dataItem.id,type:Sn.FS};d([...i,t])},deleteDependency:K,updateDependency:q})),D.createElement(h.TabStripTab,{title:S},D.createElement(wn,{flatTasks:N,successors:L,dependencyTypes:Z,selectedItem:a,onSelectRow:$,addSuccessorsDependency:()=>{const t={uid:o.guid(),id:null,fromId:e.dataItem.id,toId:null,type:Sn.FS};d([...i,t])},deleteDependency:K,updateDependency:q}))):j},xn=l.TreeListRow;Object.defineProperty(e,"getSelectedState",{enumerable:!0,get:function(){return r.getSelectedState}}),Object.defineProperty(e,"getSelectedStateFromKeyDown",{enumerable:!0,get:function(){return r.getSelectedStateFromKeyDown}}),Object.defineProperty(e,"setSelectedState",{enumerable:!0,get:function(){return r.setSelectedState}}),e.GANTT_COL_INDEX_ATTRIBUTE=I,e.GANTT_PREVENT_SELECTION_ELEMENT=w,e.GANTT_ROW_INDEX_ATTRIBUTE=b,e.Gantt=jt,e.GanttBooleanFilter=on,e.GanttDateFilter=rn,e.GanttDayView=Kt,e.GanttForm=e=>{const{onCancel:t,onDelete:n,onClose:a,onSubmit:r,...l}=e,c=D.useRef(e.dataItem),[p,g]=D.useState({}),h=s.useLocalization(),f=e=>h.toLanguageString(e,Lt[e]),y=f(at),v=f(ot),C=f(xt),b=f(ct),I=D.useCallback((n=>{if(t){const a={syntheticEvent:n,nativeEvent:n.nativeEvent,dataItem:e.dataItem};t.call(void 0,a)}}),[t,e.dataItem]),w=D.useCallback((t=>{if(n){const a={syntheticEvent:t,nativeEvent:t.nativeEvent,dataItem:e.dataItem};n.call(void 0,a)}}),[n,e.dataItem]),S=D.useCallback((({syntheticEvent:t})=>{if(a){const n={syntheticEvent:t,nativeEvent:t.nativeEvent,dataItem:e.dataItem};a.call(void 0,n)}}),[a,e.dataItem]),R=D.useCallback(((e,t)=>{if(r){const n={dataItem:e,initialDataItem:c.current,syntheticEvent:t,nativeEvent:t&&t.nativeEvent,dependencies:p};r.call(void 0,n)}}),[r,p]),T=D.useMemo((()=>k.findByFieldValue(p.createdDependencies,"fromId",null)||k.findByFieldValue(p.createdDependencies,"toId",null)),[p]),x=D.useMemo((()=>p.createdDependencies&&p.createdDependencies.length&&void 0===T||p.updatedDependencies&&p.updatedDependencies.length||p.deletedDependencies&&p.deletedDependencies.length),[p,T]),F=D.useCallback((e=>{g(e)}),[]),N=D.createElement(u.Form,{initialValues:e.dataItem,onSubmit:R,render:t=>D.createElement(m.Window,{title:b,minWidth:90,width:554,modal:!0,height:0,onClose:S},D.createElement(Tn,{taskData:e.taskData,dependencyData:e.dependencyData,dataItem:e.dataItem,onDependencyCreate:F}),D.createElement(m.WindowActionsBar,{layout:"start"},D.createElement(d.Button,{disabled:!t.allowSubmit&&!x,onClick:t.allowSubmit?t.onSubmit:t=>R(e.dataItem,t),icon:"save",svgIcon:i.saveIcon,themeColor:"primary"},y),D.createElement(d.Button,{onClick:I,type:"button",icon:"cancel",svgIcon:i.cancelIcon},v),D.createElement("div",{className:"k-spacer"}),n&&D.createElement(d.Button,{onClick:w,icon:"trash",svgIcon:i.trashIcon,fillMode:"flat",themeColor:"primary"},C))),...l});return o.canUseDOM?E.createPortal(N,document&&document.body):null},e.GanttMonthView=Ot,e.GanttNumericFilter=an,e.GanttRemoveDialog=e=>{const{onClose:t,onCancel:n,onConfirm:a,dataItem:r}=e,l=s.useLocalization(),i=e=>l.toLanguageString(e,Lt[e]),c=i(xt),u=i(ot),p=i(Ft),g=i(Nt),h=D.useCallback((({syntheticEvent:e})=>{t&&t.call(void 0,{syntheticEvent:e,nativeEvent:e&&e.nativeEvent,dataItem:null})}),[t]),f=D.useCallback((e=>{n&&n.call(void 0,{syntheticEvent:e,nativeEvent:e&&e.nativeEvent,dataItem:null})}),[n]),k=D.useCallback((e=>{a&&a.call(void 0,{syntheticEvent:e,nativeEvent:e&&e.nativeEvent,dataItem:r})}),[a,r]),y=D.createElement(m.Dialog,{title:g,onClose:h},p,D.createElement(m.DialogActionsBar,{layout:"end"},D.createElement(d.Button,{themeColor:"primary",onClick:k},c),D.createElement(d.Button,{onClick:f},u)));return o.canUseDOM?E.createPortal(y,document&&document.body):null},e.GanttRow=xn,e.GanttTextFilter=nn,e.GanttWeekView=Wt,e.GanttYearView=Pt,e.addDependency=e=>{const{dependencyData:t,dependencyModelFields:n,defaultDataItem:a,fromId:r,toId:l,type:s}=e,i=t.map((e=>({...e}))),d=o.setter(n.fromId),c=o.setter(n.toId),u=o.setter(n.type),m=a?{...a}:{};return d(m,r),c(m,l),u(m,s),i.push(m),i},e.addTask=e=>{const{defaultDataItem:t,selectedDataItem:n,direction:a,taskModelFields:r,dataTree:l,slotStart:s,slotEnd:i}=e,d=K(l,r.children,(e=>({...e}))),c=o.setter(r.start),u=o.setter(r.end),m=o.getter(r.start),p=o.getter(r.end),g=o.setter(r.parentId||""),h=t?{...t}:{},f=m(h)&&p(h);if(n&&"none"!==a){const e=[{task:{[r.children]:d},childrenIndex:0}],t=o.getter(r.id),l=o.getter(r.children),k=o.setter(r.children),y=t(n);for(;e.length>0;){const n=e[e.length-1],a=n.task,o=t(a),r=l(a);if(o&&o===y)break;r&&r.length&&r.length>n.childrenIndex?(e.push({task:r[n.childrenIndex],childrenIndex:0}),n.childrenIndex++):e.pop()}if(e.length>1){const n=e[e.length-1].task,o=e[e.length-2].childrenIndex,d=e[e.length-2].task,y=l(d);switch(a){case"child":{let a=l(n);a||(a=[],k(n,a)),f||(c(h,new Date(m(n).getTime())),u(h,new Date(p(n).getTime()))),a.push(h),g(h,t(n)),ln(e.splice(1,e.length-1).map((e=>e.task)),r);break}case"above":m(d)&&p(d)&&!f?(c(h,new Date(m(n).getTime())),u(h,new Date(p(n).getTime()))):(c(h,s),u(h,i)),y.splice(o-1,0,h),g(h,t(d)),ln(e.splice(1,e.length-2).map((e=>e.task)),r);break;case"below":m(d)&&p(d)&&!f?(c(h,new Date(m(n).getTime())),u(h,new Date(p(n).getTime()))):(c(h,s),u(h,i)),y.splice(o,0,h),g(h,t(d)),ln(e.splice(1,e.length-2).map((e=>e.task)),r)}}}else f||(c(h,s),u(h,i)),r.parentId&&g(h,null),d.unshift(h);return d},e.createDataTree=O,e.extendDataItem=V,e.filterBy=H,e.mapTree=K,e.orderBy=W,e.removeTask=e=>{const{removedDataItem:t,taskModelFields:n,dataTree:a}=e,r=K(a,n.children,(e=>({...e})));let l=[{task:{[n.children]:r},childrenIndex:0}];const s=o.getter(n.id),i=o.getter(n.children),d=s(t);for(;l.length>0;){const e=l[l.length-1],t=e.task,n=s(t),a=i(t);if(n&&n===d)break;a&&a.length&&a.length>e.childrenIndex?(l.push({task:a[e.childrenIndex],childrenIndex:0}),e.childrenIndex++):l.pop()}if(l.length>1){const e=l[l.length-2];i(e.task).splice(e.childrenIndex-1,1),l=l.splice(1,l.length-2),ln(l.map((e=>e.task)),n)}return r},e.updateTask=e=>{const{updatedDataItem:t,taskModelFields:n,dataTree:a}=e,r=o.getter(n.id),l=o.getter(n.children),s=r(t);let i;const d=K(a,n.children,(e=>r(e)===s?(i=e,{...t}):{...e}));let c=[{task:{[n.children]:d},childrenIndex:0}];for(;c.length>0;){const e=c[c.length-1],t=e.task,n=r(t),a=l(t);if(n&&n===s)break;a&&a.length&&a.length>e.childrenIndex?(c.push({task:a[e.childrenIndex],childrenIndex:0}),e.childrenIndex++):c.pop()}if(c.length>1){c=c.splice(1,c.length-2);const e=o.getter(n.start),a=o.getter(n.end),s=o.getter(n.percentComplete),u=o.getter(n.parentId||"");if(e(i).getTime()!==e(t).getTime()){cn(c.map((e=>e.task)),n);const a=e(t).getTime()-e(i).getTime();pn(l(t),n,a)}if(a(i).getTime()!==a(t).getTime()&&un(c.map((e=>e.task)),n),s(i)!==s(t)&&mn(c.map((e=>e.task)),n),n.parentId&&u(i)!==u(t)){let e;return c.length?sn(c.map((e=>e.task)),n,i):e=d.filter((e=>r(e)!==r(t))),dn(e||d,n,t)}}return d}}));
|
package/index.d.mts
CHANGED
|
@@ -230,6 +230,8 @@ declare interface GanttBaseProps {
|
|
|
230
230
|
timezone?: string;
|
|
231
231
|
/**
|
|
232
232
|
* If set to `true`, the user can resize columns by dragging the edges (resize handles) of their header cells.
|
|
233
|
+
*
|
|
234
|
+
* @default false
|
|
233
235
|
*/
|
|
234
236
|
resizable?: boolean;
|
|
235
237
|
/**
|
|
@@ -247,14 +249,24 @@ declare interface GanttBaseProps {
|
|
|
247
249
|
filter?: FilterDescriptor[];
|
|
248
250
|
/**
|
|
249
251
|
* If set to `true`, the user can reorder columns by dragging their header cells.
|
|
252
|
+
*
|
|
253
|
+
* @default false
|
|
250
254
|
*/
|
|
251
255
|
reorderable?: boolean;
|
|
252
256
|
/**
|
|
253
257
|
* If set to `true`, the user can use dedicated shortcuts to interact with the Gantt.
|
|
254
258
|
* By default, navigation is disabled and the Gantt content is accessible in the normal tab sequence.
|
|
259
|
+
*
|
|
260
|
+
* @default false
|
|
255
261
|
*/
|
|
256
262
|
navigatable?: boolean;
|
|
263
|
+
/**
|
|
264
|
+
* The descriptors by which the data is filtered in the column menu.
|
|
265
|
+
*/
|
|
257
266
|
columnMenuFilter?: CompositeFilterDescriptor[];
|
|
267
|
+
/**
|
|
268
|
+
* The component to render as the column menu.
|
|
269
|
+
*/
|
|
258
270
|
columnMenu?: React.ComponentType<any>;
|
|
259
271
|
/**
|
|
260
272
|
* The Gantt row component.
|
|
@@ -512,8 +524,17 @@ export declare interface GanttDependencyModelFields {
|
|
|
512
524
|
}
|
|
513
525
|
|
|
514
526
|
declare interface GanttEditorDependenciesHandler {
|
|
527
|
+
/**
|
|
528
|
+
* Lists the new dependencies that were created.
|
|
529
|
+
*/
|
|
515
530
|
createdDependencies: GanttDependency[];
|
|
531
|
+
/**
|
|
532
|
+
* Lists the existing dependencies that were changed.
|
|
533
|
+
*/
|
|
516
534
|
updatedDependencies: GanttDependency[];
|
|
535
|
+
/**
|
|
536
|
+
* Lists the dependencies that were removed.
|
|
537
|
+
*/
|
|
517
538
|
deletedDependencies: GanttDependency[];
|
|
518
539
|
}
|
|
519
540
|
|
|
@@ -711,7 +732,7 @@ export declare interface GanttNumericFilterProps extends FilterComponentProps {
|
|
|
711
732
|
*/
|
|
712
733
|
declare interface GanttProps extends GanttBaseProps {
|
|
713
734
|
/**
|
|
714
|
-
*
|
|
735
|
+
* Adds custom CSS classes to the Gantt component.
|
|
715
736
|
*
|
|
716
737
|
* @example
|
|
717
738
|
* ```jsx
|
|
@@ -720,7 +741,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
720
741
|
*/
|
|
721
742
|
className?: string;
|
|
722
743
|
/**
|
|
723
|
-
*
|
|
744
|
+
* Sets custom styles for the Gantt component.
|
|
724
745
|
*
|
|
725
746
|
* @example
|
|
726
747
|
* ```jsx
|
|
@@ -729,7 +750,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
729
750
|
*/
|
|
730
751
|
style?: React.CSSProperties;
|
|
731
752
|
/**
|
|
732
|
-
*
|
|
753
|
+
* Provides task data for the Gantt chart. Tasks appear as visual bars in the timeline.
|
|
733
754
|
*
|
|
734
755
|
* @example
|
|
735
756
|
* ```jsx
|
|
@@ -741,7 +762,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
741
762
|
*/
|
|
742
763
|
taskData?: DataItem[];
|
|
743
764
|
/**
|
|
744
|
-
*
|
|
765
|
+
* Provides dependency data for the Gantt chart. Dependencies appear as visual connections between tasks.
|
|
745
766
|
*
|
|
746
767
|
* @example
|
|
747
768
|
* ```jsx
|
|
@@ -753,7 +774,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
753
774
|
*/
|
|
754
775
|
dependencyData?: GanttDependency[];
|
|
755
776
|
/**
|
|
756
|
-
*
|
|
777
|
+
* Maps field names for reading task data from your data source.
|
|
757
778
|
*
|
|
758
779
|
* @example
|
|
759
780
|
* ```jsx
|
|
@@ -763,7 +784,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
763
784
|
*/
|
|
764
785
|
taskModelFields?: GanttTaskModelFields;
|
|
765
786
|
/**
|
|
766
|
-
*
|
|
787
|
+
* Maps field names for reading dependency data from your data source.
|
|
767
788
|
*
|
|
768
789
|
* @example
|
|
769
790
|
* ```jsx
|
|
@@ -773,7 +794,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
773
794
|
*/
|
|
774
795
|
dependencyModelFields?: GanttDependencyModelFields;
|
|
775
796
|
/**
|
|
776
|
-
*
|
|
797
|
+
* Provides view components as children. The Gantt renders the currently selected view.
|
|
777
798
|
*
|
|
778
799
|
* @example
|
|
779
800
|
* ```jsx
|
|
@@ -785,12 +806,14 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
785
806
|
*/
|
|
786
807
|
children?: GanttView[] | GanttView;
|
|
787
808
|
/**
|
|
788
|
-
* Sets the
|
|
809
|
+
* Sets the view that shows first when the Gantt loads. You can choose from:
|
|
789
810
|
* * `day`
|
|
790
811
|
* * `week` (Default)
|
|
791
812
|
* * `month`
|
|
792
813
|
* * `year`
|
|
793
814
|
*
|
|
815
|
+
* @default "week"
|
|
816
|
+
*
|
|
794
817
|
* @example
|
|
795
818
|
* ```jsx
|
|
796
819
|
* <Gantt defaultView="month" />
|
|
@@ -798,7 +821,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
798
821
|
*/
|
|
799
822
|
defaultView?: string;
|
|
800
823
|
/**
|
|
801
|
-
*
|
|
824
|
+
* Controls which view is currently shown. The value must match the `title` property of a view.
|
|
802
825
|
*
|
|
803
826
|
* @example
|
|
804
827
|
* ```jsx
|
|
@@ -807,7 +830,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
807
830
|
*/
|
|
808
831
|
view?: string;
|
|
809
832
|
/**
|
|
810
|
-
*
|
|
833
|
+
* Sets the timezone for displaying dates and times in the Gantt chart.
|
|
811
834
|
* For example, `Europe/Sofia`.
|
|
812
835
|
*
|
|
813
836
|
* @example
|
|
@@ -817,7 +840,9 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
817
840
|
*/
|
|
818
841
|
timezone?: string;
|
|
819
842
|
/**
|
|
820
|
-
*
|
|
843
|
+
* Sets the height of all rows in pixels. All rows have the same height.
|
|
844
|
+
*
|
|
845
|
+
* @default 50
|
|
821
846
|
*
|
|
822
847
|
* @example
|
|
823
848
|
* ```jsx
|
|
@@ -826,7 +851,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
826
851
|
*/
|
|
827
852
|
rowHeight?: number;
|
|
828
853
|
/**
|
|
829
|
-
*
|
|
854
|
+
* Configures the toolbar options. You can enable the add task button.
|
|
830
855
|
*
|
|
831
856
|
* @example
|
|
832
857
|
* ```jsx
|
|
@@ -837,7 +862,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
837
862
|
addTaskButton: boolean;
|
|
838
863
|
};
|
|
839
864
|
/**
|
|
840
|
-
*
|
|
865
|
+
* Fires when the user selects a different view. Use this to control which view is shown.
|
|
841
866
|
*
|
|
842
867
|
* @example
|
|
843
868
|
* ```jsx
|
|
@@ -846,36 +871,39 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
846
871
|
* ```
|
|
847
872
|
*/
|
|
848
873
|
onViewChange?: (args: GanttViewChangeEvent) => void;
|
|
874
|
+
/**
|
|
875
|
+
* Fires when the user changes the column menu filter.
|
|
876
|
+
*/
|
|
849
877
|
onColumnMenuFilterChange?: (event: GanttColumnMenuFilterChangeEvent) => void;
|
|
850
878
|
/**
|
|
851
|
-
* Fires when the data state
|
|
879
|
+
* Fires when the data state changes.
|
|
852
880
|
*/
|
|
853
881
|
onDataStateChange?: (event: GanttDataStateChangeEvent) => void;
|
|
854
882
|
/**
|
|
855
883
|
* Fires when the sorting of the Gantt is changed ([see example]({% slug sorting_gantt %})).
|
|
856
|
-
* You
|
|
884
|
+
* You need to handle the event yourself and sort the data.
|
|
857
885
|
*/
|
|
858
886
|
onSortChange?: (event: GanttSortChangeEvent) => void;
|
|
859
887
|
/**
|
|
860
888
|
* Fires when the Gantt filter is modified through the UI
|
|
861
889
|
* ([more information and examples]({% slug filtering_gantt %})).
|
|
862
|
-
* You
|
|
890
|
+
* You need to handle the event yourself and filter the data.
|
|
863
891
|
*/
|
|
864
892
|
onFilterChange?: (event: GanttFilterChangeEvent) => void;
|
|
865
893
|
/**
|
|
866
|
-
* Fires when the user clicks
|
|
894
|
+
* Fires when the user clicks the expand or collapse icon on a row.
|
|
867
895
|
*/
|
|
868
896
|
onExpandChange?: (event: GanttExpandChangeEvent) => void;
|
|
869
897
|
/**
|
|
870
|
-
* Fires when the user clicks
|
|
898
|
+
* Fires when the user clicks the add task button.
|
|
871
899
|
*/
|
|
872
900
|
onAddClick?: (event: GanttAddClickEvent) => void;
|
|
873
901
|
/**
|
|
874
|
-
* Fires when a column
|
|
902
|
+
* Fires when the user resizes a column.
|
|
875
903
|
*/
|
|
876
904
|
onColumnResize?: (event: GanttColumnResizeEvent) => void;
|
|
877
905
|
/**
|
|
878
|
-
* Fires when the
|
|
906
|
+
* Fires when the user reorders columns.
|
|
879
907
|
*/
|
|
880
908
|
onColumnReorder?: (event: GanttColumnReorderEvent) => void;
|
|
881
909
|
/**
|
|
@@ -883,11 +911,11 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
883
911
|
*/
|
|
884
912
|
onRowClick?: (event: GanttRowClickEvent) => void;
|
|
885
913
|
/**
|
|
886
|
-
* Fires when the user double
|
|
914
|
+
* Fires when the user double-clicks a row.
|
|
887
915
|
*/
|
|
888
916
|
onRowDoubleClick?: (event: GanttRowDoubleClickEvent) => void;
|
|
889
917
|
/**
|
|
890
|
-
* Fires when the user
|
|
918
|
+
* Fires when the user right-clicks on a row.
|
|
891
919
|
*/
|
|
892
920
|
onRowContextMenu?: (event: GanttRowContextMenuEvent) => void;
|
|
893
921
|
/**
|
|
@@ -895,31 +923,31 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
895
923
|
*/
|
|
896
924
|
onTaskClick?: (event: GanttTaskClickEvent) => void;
|
|
897
925
|
/**
|
|
898
|
-
* Fires when the user double
|
|
926
|
+
* Fires when the user double-clicks a task.
|
|
899
927
|
*/
|
|
900
928
|
onTaskDoubleClick?: (event: GanttTaskDoubleClickEvent) => void;
|
|
901
929
|
/**
|
|
902
|
-
* Fires when the user
|
|
930
|
+
* Fires when the user right-clicks on a task.
|
|
903
931
|
*/
|
|
904
932
|
onTaskContextMenu?: (event: GanttTaskContextMenuEvent) => void;
|
|
905
933
|
/**
|
|
906
|
-
* Fires when the user clicks the
|
|
934
|
+
* Fires when the user clicks the remove button on a task.
|
|
907
935
|
*/
|
|
908
936
|
onTaskRemoveClick?: (event: GanttTaskRemoveClickEvent) => void;
|
|
909
937
|
/**
|
|
910
|
-
* Fires when the user creates
|
|
938
|
+
* Fires when the user creates a dependency by connecting two tasks.
|
|
911
939
|
*/
|
|
912
940
|
onDependencyCreate?: (event: GanttDependencyCreateEvent) => void;
|
|
913
941
|
/**
|
|
914
|
-
* Fires when the user
|
|
942
|
+
* Fires when the user presses any keyboard key.
|
|
915
943
|
*/
|
|
916
944
|
onKeyDown?: (event: GanttKeyDownEvent) => void;
|
|
917
945
|
/**
|
|
918
|
-
* Fires when the user
|
|
946
|
+
* Fires when the user selects or deselects rows or cells.
|
|
919
947
|
*/
|
|
920
948
|
onSelectionChange?: (event: GanttSelectionChangeEvent) => void;
|
|
921
949
|
/**
|
|
922
|
-
* Fires when the user clicks the checkbox
|
|
950
|
+
* Fires when the user clicks the checkbox in a column header.
|
|
923
951
|
*/
|
|
924
952
|
onHeaderSelectionChange?: (event: GanttHeaderSelectionChangeEvent) => void;
|
|
925
953
|
}
|
|
@@ -1258,7 +1286,7 @@ export declare interface GanttTaskModelFields {
|
|
|
1258
1286
|
*/
|
|
1259
1287
|
isInEdit?: string;
|
|
1260
1288
|
/**
|
|
1261
|
-
*
|
|
1289
|
+
* The name of the selected model field. It will provide a Boolean representation of the selected state of the current item.
|
|
1262
1290
|
* Defaults to `"isSelected"`.
|
|
1263
1291
|
*/
|
|
1264
1292
|
isSelected?: string;
|
|
@@ -1296,6 +1324,9 @@ declare type GanttView = React.ReactElement<GanttViewProps>;
|
|
|
1296
1324
|
* Called every time the user changes the active `view`.
|
|
1297
1325
|
*/
|
|
1298
1326
|
export declare interface GanttViewChangeEvent extends GanttEvent {
|
|
1327
|
+
/**
|
|
1328
|
+
* The value of the selected view.
|
|
1329
|
+
*/
|
|
1299
1330
|
value: string;
|
|
1300
1331
|
}
|
|
1301
1332
|
|
|
@@ -1303,10 +1334,25 @@ export declare interface GanttViewChangeEvent extends GanttEvent {
|
|
|
1303
1334
|
* Represents the arguments which are passed to the [dateRange]({% slug api_gantt_ganttviewprops %}#toc-daterange) function.
|
|
1304
1335
|
*/
|
|
1305
1336
|
declare interface GanttViewDateRangeArgs {
|
|
1337
|
+
/**
|
|
1338
|
+
* The earliest start date among all tasks.
|
|
1339
|
+
*/
|
|
1306
1340
|
tasksStart: Date;
|
|
1341
|
+
/**
|
|
1342
|
+
* The latest end date among all tasks.
|
|
1343
|
+
*/
|
|
1307
1344
|
tasksEnd: Date;
|
|
1345
|
+
/**
|
|
1346
|
+
* The internationalization service for date formatting and localization.
|
|
1347
|
+
*/
|
|
1308
1348
|
intl: IntlService;
|
|
1349
|
+
/**
|
|
1350
|
+
* The timezone identifier for date calculations.
|
|
1351
|
+
*/
|
|
1309
1352
|
timezone?: string;
|
|
1353
|
+
/**
|
|
1354
|
+
* The number of days to include in the date range calculation.
|
|
1355
|
+
*/
|
|
1310
1356
|
numberOfDays?: number;
|
|
1311
1357
|
}
|
|
1312
1358
|
|
|
@@ -1349,6 +1395,8 @@ export declare interface GanttViewProps {
|
|
|
1349
1395
|
/**
|
|
1350
1396
|
* The width of a single time slot in pixels. Default is 100px.
|
|
1351
1397
|
*
|
|
1398
|
+
* @default 100
|
|
1399
|
+
*
|
|
1352
1400
|
* @example
|
|
1353
1401
|
* ```jsx
|
|
1354
1402
|
* <GanttView slotWidth={120} />
|
|
@@ -1420,17 +1468,29 @@ export declare interface GanttViewProps {
|
|
|
1420
1468
|
* The props of the Gantt view timeline header cell component.
|
|
1421
1469
|
*/
|
|
1422
1470
|
export declare interface GanttViewTimelineHeaderCellProps {
|
|
1423
|
-
/**
|
|
1471
|
+
/**
|
|
1472
|
+
* The date range of the cell.
|
|
1473
|
+
*/
|
|
1424
1474
|
range: DateRange;
|
|
1425
|
-
/**
|
|
1475
|
+
/**
|
|
1476
|
+
* Indicates if the cell is in work time.
|
|
1477
|
+
*/
|
|
1426
1478
|
isWork: boolean;
|
|
1427
|
-
/**
|
|
1479
|
+
/**
|
|
1480
|
+
* The default cell text value.
|
|
1481
|
+
*/
|
|
1428
1482
|
text: string;
|
|
1429
|
-
/**
|
|
1483
|
+
/**
|
|
1484
|
+
* The type of the cell slot.
|
|
1485
|
+
*/
|
|
1430
1486
|
type: GanttSlotType;
|
|
1431
|
-
/**
|
|
1487
|
+
/**
|
|
1488
|
+
* The header cell row index.
|
|
1489
|
+
*/
|
|
1432
1490
|
rowIndex: number;
|
|
1433
|
-
/**
|
|
1491
|
+
/**
|
|
1492
|
+
* The header cell index.
|
|
1493
|
+
*/
|
|
1434
1494
|
index: number;
|
|
1435
1495
|
}
|
|
1436
1496
|
|
|
@@ -1493,19 +1553,52 @@ export declare const removeTask: (options: {
|
|
|
1493
1553
|
export { setSelectedState }
|
|
1494
1554
|
|
|
1495
1555
|
/**
|
|
1496
|
-
*
|
|
1556
|
+
* Maps field names from your task data to the fields that the Gantt component expects.
|
|
1497
1557
|
*/
|
|
1498
1558
|
export declare interface TaskModelFields {
|
|
1559
|
+
/**
|
|
1560
|
+
* Maps to the field that contains the unique ID for each task.
|
|
1561
|
+
*/
|
|
1499
1562
|
id: string;
|
|
1563
|
+
/**
|
|
1564
|
+
* Maps to the field that contains the task start date.
|
|
1565
|
+
*/
|
|
1500
1566
|
start: string;
|
|
1567
|
+
/**
|
|
1568
|
+
* Maps to the field that contains the task end date.
|
|
1569
|
+
*/
|
|
1501
1570
|
end: string;
|
|
1571
|
+
/**
|
|
1572
|
+
* Maps to the field that contains the task title or name.
|
|
1573
|
+
*/
|
|
1502
1574
|
title: string;
|
|
1575
|
+
/**
|
|
1576
|
+
* Maps to the field that contains the task completion percentage.
|
|
1577
|
+
*/
|
|
1503
1578
|
percentComplete: string;
|
|
1579
|
+
/**
|
|
1580
|
+
* Maps to the field that contains the parent task ID for child tasks.
|
|
1581
|
+
*/
|
|
1504
1582
|
parentId?: string;
|
|
1583
|
+
/**
|
|
1584
|
+
* Maps to the field that indicates if a task is a summary of child tasks.
|
|
1585
|
+
*/
|
|
1505
1586
|
isRollup: string;
|
|
1587
|
+
/**
|
|
1588
|
+
* Maps to the field that indicates if a task is expanded to show child tasks.
|
|
1589
|
+
*/
|
|
1506
1590
|
isExpanded: string;
|
|
1591
|
+
/**
|
|
1592
|
+
* Maps to the field that contains child tasks.
|
|
1593
|
+
*/
|
|
1507
1594
|
children: string;
|
|
1595
|
+
/**
|
|
1596
|
+
* Maps to the field that indicates if a task is currently being edited.
|
|
1597
|
+
*/
|
|
1508
1598
|
isInEdit: string;
|
|
1599
|
+
/**
|
|
1600
|
+
* Maps to the field that indicates if a task is selected.
|
|
1601
|
+
*/
|
|
1509
1602
|
isSelected: string;
|
|
1510
1603
|
}
|
|
1511
1604
|
|
package/index.d.ts
CHANGED
|
@@ -230,6 +230,8 @@ declare interface GanttBaseProps {
|
|
|
230
230
|
timezone?: string;
|
|
231
231
|
/**
|
|
232
232
|
* If set to `true`, the user can resize columns by dragging the edges (resize handles) of their header cells.
|
|
233
|
+
*
|
|
234
|
+
* @default false
|
|
233
235
|
*/
|
|
234
236
|
resizable?: boolean;
|
|
235
237
|
/**
|
|
@@ -247,14 +249,24 @@ declare interface GanttBaseProps {
|
|
|
247
249
|
filter?: FilterDescriptor[];
|
|
248
250
|
/**
|
|
249
251
|
* If set to `true`, the user can reorder columns by dragging their header cells.
|
|
252
|
+
*
|
|
253
|
+
* @default false
|
|
250
254
|
*/
|
|
251
255
|
reorderable?: boolean;
|
|
252
256
|
/**
|
|
253
257
|
* If set to `true`, the user can use dedicated shortcuts to interact with the Gantt.
|
|
254
258
|
* By default, navigation is disabled and the Gantt content is accessible in the normal tab sequence.
|
|
259
|
+
*
|
|
260
|
+
* @default false
|
|
255
261
|
*/
|
|
256
262
|
navigatable?: boolean;
|
|
263
|
+
/**
|
|
264
|
+
* The descriptors by which the data is filtered in the column menu.
|
|
265
|
+
*/
|
|
257
266
|
columnMenuFilter?: CompositeFilterDescriptor[];
|
|
267
|
+
/**
|
|
268
|
+
* The component to render as the column menu.
|
|
269
|
+
*/
|
|
258
270
|
columnMenu?: React.ComponentType<any>;
|
|
259
271
|
/**
|
|
260
272
|
* The Gantt row component.
|
|
@@ -512,8 +524,17 @@ export declare interface GanttDependencyModelFields {
|
|
|
512
524
|
}
|
|
513
525
|
|
|
514
526
|
declare interface GanttEditorDependenciesHandler {
|
|
527
|
+
/**
|
|
528
|
+
* Lists the new dependencies that were created.
|
|
529
|
+
*/
|
|
515
530
|
createdDependencies: GanttDependency[];
|
|
531
|
+
/**
|
|
532
|
+
* Lists the existing dependencies that were changed.
|
|
533
|
+
*/
|
|
516
534
|
updatedDependencies: GanttDependency[];
|
|
535
|
+
/**
|
|
536
|
+
* Lists the dependencies that were removed.
|
|
537
|
+
*/
|
|
517
538
|
deletedDependencies: GanttDependency[];
|
|
518
539
|
}
|
|
519
540
|
|
|
@@ -711,7 +732,7 @@ export declare interface GanttNumericFilterProps extends FilterComponentProps {
|
|
|
711
732
|
*/
|
|
712
733
|
declare interface GanttProps extends GanttBaseProps {
|
|
713
734
|
/**
|
|
714
|
-
*
|
|
735
|
+
* Adds custom CSS classes to the Gantt component.
|
|
715
736
|
*
|
|
716
737
|
* @example
|
|
717
738
|
* ```jsx
|
|
@@ -720,7 +741,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
720
741
|
*/
|
|
721
742
|
className?: string;
|
|
722
743
|
/**
|
|
723
|
-
*
|
|
744
|
+
* Sets custom styles for the Gantt component.
|
|
724
745
|
*
|
|
725
746
|
* @example
|
|
726
747
|
* ```jsx
|
|
@@ -729,7 +750,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
729
750
|
*/
|
|
730
751
|
style?: React.CSSProperties;
|
|
731
752
|
/**
|
|
732
|
-
*
|
|
753
|
+
* Provides task data for the Gantt chart. Tasks appear as visual bars in the timeline.
|
|
733
754
|
*
|
|
734
755
|
* @example
|
|
735
756
|
* ```jsx
|
|
@@ -741,7 +762,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
741
762
|
*/
|
|
742
763
|
taskData?: DataItem[];
|
|
743
764
|
/**
|
|
744
|
-
*
|
|
765
|
+
* Provides dependency data for the Gantt chart. Dependencies appear as visual connections between tasks.
|
|
745
766
|
*
|
|
746
767
|
* @example
|
|
747
768
|
* ```jsx
|
|
@@ -753,7 +774,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
753
774
|
*/
|
|
754
775
|
dependencyData?: GanttDependency[];
|
|
755
776
|
/**
|
|
756
|
-
*
|
|
777
|
+
* Maps field names for reading task data from your data source.
|
|
757
778
|
*
|
|
758
779
|
* @example
|
|
759
780
|
* ```jsx
|
|
@@ -763,7 +784,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
763
784
|
*/
|
|
764
785
|
taskModelFields?: GanttTaskModelFields;
|
|
765
786
|
/**
|
|
766
|
-
*
|
|
787
|
+
* Maps field names for reading dependency data from your data source.
|
|
767
788
|
*
|
|
768
789
|
* @example
|
|
769
790
|
* ```jsx
|
|
@@ -773,7 +794,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
773
794
|
*/
|
|
774
795
|
dependencyModelFields?: GanttDependencyModelFields;
|
|
775
796
|
/**
|
|
776
|
-
*
|
|
797
|
+
* Provides view components as children. The Gantt renders the currently selected view.
|
|
777
798
|
*
|
|
778
799
|
* @example
|
|
779
800
|
* ```jsx
|
|
@@ -785,12 +806,14 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
785
806
|
*/
|
|
786
807
|
children?: GanttView[] | GanttView;
|
|
787
808
|
/**
|
|
788
|
-
* Sets the
|
|
809
|
+
* Sets the view that shows first when the Gantt loads. You can choose from:
|
|
789
810
|
* * `day`
|
|
790
811
|
* * `week` (Default)
|
|
791
812
|
* * `month`
|
|
792
813
|
* * `year`
|
|
793
814
|
*
|
|
815
|
+
* @default "week"
|
|
816
|
+
*
|
|
794
817
|
* @example
|
|
795
818
|
* ```jsx
|
|
796
819
|
* <Gantt defaultView="month" />
|
|
@@ -798,7 +821,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
798
821
|
*/
|
|
799
822
|
defaultView?: string;
|
|
800
823
|
/**
|
|
801
|
-
*
|
|
824
|
+
* Controls which view is currently shown. The value must match the `title` property of a view.
|
|
802
825
|
*
|
|
803
826
|
* @example
|
|
804
827
|
* ```jsx
|
|
@@ -807,7 +830,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
807
830
|
*/
|
|
808
831
|
view?: string;
|
|
809
832
|
/**
|
|
810
|
-
*
|
|
833
|
+
* Sets the timezone for displaying dates and times in the Gantt chart.
|
|
811
834
|
* For example, `Europe/Sofia`.
|
|
812
835
|
*
|
|
813
836
|
* @example
|
|
@@ -817,7 +840,9 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
817
840
|
*/
|
|
818
841
|
timezone?: string;
|
|
819
842
|
/**
|
|
820
|
-
*
|
|
843
|
+
* Sets the height of all rows in pixels. All rows have the same height.
|
|
844
|
+
*
|
|
845
|
+
* @default 50
|
|
821
846
|
*
|
|
822
847
|
* @example
|
|
823
848
|
* ```jsx
|
|
@@ -826,7 +851,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
826
851
|
*/
|
|
827
852
|
rowHeight?: number;
|
|
828
853
|
/**
|
|
829
|
-
*
|
|
854
|
+
* Configures the toolbar options. You can enable the add task button.
|
|
830
855
|
*
|
|
831
856
|
* @example
|
|
832
857
|
* ```jsx
|
|
@@ -837,7 +862,7 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
837
862
|
addTaskButton: boolean;
|
|
838
863
|
};
|
|
839
864
|
/**
|
|
840
|
-
*
|
|
865
|
+
* Fires when the user selects a different view. Use this to control which view is shown.
|
|
841
866
|
*
|
|
842
867
|
* @example
|
|
843
868
|
* ```jsx
|
|
@@ -846,36 +871,39 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
846
871
|
* ```
|
|
847
872
|
*/
|
|
848
873
|
onViewChange?: (args: GanttViewChangeEvent) => void;
|
|
874
|
+
/**
|
|
875
|
+
* Fires when the user changes the column menu filter.
|
|
876
|
+
*/
|
|
849
877
|
onColumnMenuFilterChange?: (event: GanttColumnMenuFilterChangeEvent) => void;
|
|
850
878
|
/**
|
|
851
|
-
* Fires when the data state
|
|
879
|
+
* Fires when the data state changes.
|
|
852
880
|
*/
|
|
853
881
|
onDataStateChange?: (event: GanttDataStateChangeEvent) => void;
|
|
854
882
|
/**
|
|
855
883
|
* Fires when the sorting of the Gantt is changed ([see example]({% slug sorting_gantt %})).
|
|
856
|
-
* You
|
|
884
|
+
* You need to handle the event yourself and sort the data.
|
|
857
885
|
*/
|
|
858
886
|
onSortChange?: (event: GanttSortChangeEvent) => void;
|
|
859
887
|
/**
|
|
860
888
|
* Fires when the Gantt filter is modified through the UI
|
|
861
889
|
* ([more information and examples]({% slug filtering_gantt %})).
|
|
862
|
-
* You
|
|
890
|
+
* You need to handle the event yourself and filter the data.
|
|
863
891
|
*/
|
|
864
892
|
onFilterChange?: (event: GanttFilterChangeEvent) => void;
|
|
865
893
|
/**
|
|
866
|
-
* Fires when the user clicks
|
|
894
|
+
* Fires when the user clicks the expand or collapse icon on a row.
|
|
867
895
|
*/
|
|
868
896
|
onExpandChange?: (event: GanttExpandChangeEvent) => void;
|
|
869
897
|
/**
|
|
870
|
-
* Fires when the user clicks
|
|
898
|
+
* Fires when the user clicks the add task button.
|
|
871
899
|
*/
|
|
872
900
|
onAddClick?: (event: GanttAddClickEvent) => void;
|
|
873
901
|
/**
|
|
874
|
-
* Fires when a column
|
|
902
|
+
* Fires when the user resizes a column.
|
|
875
903
|
*/
|
|
876
904
|
onColumnResize?: (event: GanttColumnResizeEvent) => void;
|
|
877
905
|
/**
|
|
878
|
-
* Fires when the
|
|
906
|
+
* Fires when the user reorders columns.
|
|
879
907
|
*/
|
|
880
908
|
onColumnReorder?: (event: GanttColumnReorderEvent) => void;
|
|
881
909
|
/**
|
|
@@ -883,11 +911,11 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
883
911
|
*/
|
|
884
912
|
onRowClick?: (event: GanttRowClickEvent) => void;
|
|
885
913
|
/**
|
|
886
|
-
* Fires when the user double
|
|
914
|
+
* Fires when the user double-clicks a row.
|
|
887
915
|
*/
|
|
888
916
|
onRowDoubleClick?: (event: GanttRowDoubleClickEvent) => void;
|
|
889
917
|
/**
|
|
890
|
-
* Fires when the user
|
|
918
|
+
* Fires when the user right-clicks on a row.
|
|
891
919
|
*/
|
|
892
920
|
onRowContextMenu?: (event: GanttRowContextMenuEvent) => void;
|
|
893
921
|
/**
|
|
@@ -895,31 +923,31 @@ declare interface GanttProps extends GanttBaseProps {
|
|
|
895
923
|
*/
|
|
896
924
|
onTaskClick?: (event: GanttTaskClickEvent) => void;
|
|
897
925
|
/**
|
|
898
|
-
* Fires when the user double
|
|
926
|
+
* Fires when the user double-clicks a task.
|
|
899
927
|
*/
|
|
900
928
|
onTaskDoubleClick?: (event: GanttTaskDoubleClickEvent) => void;
|
|
901
929
|
/**
|
|
902
|
-
* Fires when the user
|
|
930
|
+
* Fires when the user right-clicks on a task.
|
|
903
931
|
*/
|
|
904
932
|
onTaskContextMenu?: (event: GanttTaskContextMenuEvent) => void;
|
|
905
933
|
/**
|
|
906
|
-
* Fires when the user clicks the
|
|
934
|
+
* Fires when the user clicks the remove button on a task.
|
|
907
935
|
*/
|
|
908
936
|
onTaskRemoveClick?: (event: GanttTaskRemoveClickEvent) => void;
|
|
909
937
|
/**
|
|
910
|
-
* Fires when the user creates
|
|
938
|
+
* Fires when the user creates a dependency by connecting two tasks.
|
|
911
939
|
*/
|
|
912
940
|
onDependencyCreate?: (event: GanttDependencyCreateEvent) => void;
|
|
913
941
|
/**
|
|
914
|
-
* Fires when the user
|
|
942
|
+
* Fires when the user presses any keyboard key.
|
|
915
943
|
*/
|
|
916
944
|
onKeyDown?: (event: GanttKeyDownEvent) => void;
|
|
917
945
|
/**
|
|
918
|
-
* Fires when the user
|
|
946
|
+
* Fires when the user selects or deselects rows or cells.
|
|
919
947
|
*/
|
|
920
948
|
onSelectionChange?: (event: GanttSelectionChangeEvent) => void;
|
|
921
949
|
/**
|
|
922
|
-
* Fires when the user clicks the checkbox
|
|
950
|
+
* Fires when the user clicks the checkbox in a column header.
|
|
923
951
|
*/
|
|
924
952
|
onHeaderSelectionChange?: (event: GanttHeaderSelectionChangeEvent) => void;
|
|
925
953
|
}
|
|
@@ -1258,7 +1286,7 @@ export declare interface GanttTaskModelFields {
|
|
|
1258
1286
|
*/
|
|
1259
1287
|
isInEdit?: string;
|
|
1260
1288
|
/**
|
|
1261
|
-
*
|
|
1289
|
+
* The name of the selected model field. It will provide a Boolean representation of the selected state of the current item.
|
|
1262
1290
|
* Defaults to `"isSelected"`.
|
|
1263
1291
|
*/
|
|
1264
1292
|
isSelected?: string;
|
|
@@ -1296,6 +1324,9 @@ declare type GanttView = React.ReactElement<GanttViewProps>;
|
|
|
1296
1324
|
* Called every time the user changes the active `view`.
|
|
1297
1325
|
*/
|
|
1298
1326
|
export declare interface GanttViewChangeEvent extends GanttEvent {
|
|
1327
|
+
/**
|
|
1328
|
+
* The value of the selected view.
|
|
1329
|
+
*/
|
|
1299
1330
|
value: string;
|
|
1300
1331
|
}
|
|
1301
1332
|
|
|
@@ -1303,10 +1334,25 @@ export declare interface GanttViewChangeEvent extends GanttEvent {
|
|
|
1303
1334
|
* Represents the arguments which are passed to the [dateRange]({% slug api_gantt_ganttviewprops %}#toc-daterange) function.
|
|
1304
1335
|
*/
|
|
1305
1336
|
declare interface GanttViewDateRangeArgs {
|
|
1337
|
+
/**
|
|
1338
|
+
* The earliest start date among all tasks.
|
|
1339
|
+
*/
|
|
1306
1340
|
tasksStart: Date;
|
|
1341
|
+
/**
|
|
1342
|
+
* The latest end date among all tasks.
|
|
1343
|
+
*/
|
|
1307
1344
|
tasksEnd: Date;
|
|
1345
|
+
/**
|
|
1346
|
+
* The internationalization service for date formatting and localization.
|
|
1347
|
+
*/
|
|
1308
1348
|
intl: IntlService;
|
|
1349
|
+
/**
|
|
1350
|
+
* The timezone identifier for date calculations.
|
|
1351
|
+
*/
|
|
1309
1352
|
timezone?: string;
|
|
1353
|
+
/**
|
|
1354
|
+
* The number of days to include in the date range calculation.
|
|
1355
|
+
*/
|
|
1310
1356
|
numberOfDays?: number;
|
|
1311
1357
|
}
|
|
1312
1358
|
|
|
@@ -1349,6 +1395,8 @@ export declare interface GanttViewProps {
|
|
|
1349
1395
|
/**
|
|
1350
1396
|
* The width of a single time slot in pixels. Default is 100px.
|
|
1351
1397
|
*
|
|
1398
|
+
* @default 100
|
|
1399
|
+
*
|
|
1352
1400
|
* @example
|
|
1353
1401
|
* ```jsx
|
|
1354
1402
|
* <GanttView slotWidth={120} />
|
|
@@ -1420,17 +1468,29 @@ export declare interface GanttViewProps {
|
|
|
1420
1468
|
* The props of the Gantt view timeline header cell component.
|
|
1421
1469
|
*/
|
|
1422
1470
|
export declare interface GanttViewTimelineHeaderCellProps {
|
|
1423
|
-
/**
|
|
1471
|
+
/**
|
|
1472
|
+
* The date range of the cell.
|
|
1473
|
+
*/
|
|
1424
1474
|
range: DateRange;
|
|
1425
|
-
/**
|
|
1475
|
+
/**
|
|
1476
|
+
* Indicates if the cell is in work time.
|
|
1477
|
+
*/
|
|
1426
1478
|
isWork: boolean;
|
|
1427
|
-
/**
|
|
1479
|
+
/**
|
|
1480
|
+
* The default cell text value.
|
|
1481
|
+
*/
|
|
1428
1482
|
text: string;
|
|
1429
|
-
/**
|
|
1483
|
+
/**
|
|
1484
|
+
* The type of the cell slot.
|
|
1485
|
+
*/
|
|
1430
1486
|
type: GanttSlotType;
|
|
1431
|
-
/**
|
|
1487
|
+
/**
|
|
1488
|
+
* The header cell row index.
|
|
1489
|
+
*/
|
|
1432
1490
|
rowIndex: number;
|
|
1433
|
-
/**
|
|
1491
|
+
/**
|
|
1492
|
+
* The header cell index.
|
|
1493
|
+
*/
|
|
1434
1494
|
index: number;
|
|
1435
1495
|
}
|
|
1436
1496
|
|
|
@@ -1493,19 +1553,52 @@ export declare const removeTask: (options: {
|
|
|
1493
1553
|
export { setSelectedState }
|
|
1494
1554
|
|
|
1495
1555
|
/**
|
|
1496
|
-
*
|
|
1556
|
+
* Maps field names from your task data to the fields that the Gantt component expects.
|
|
1497
1557
|
*/
|
|
1498
1558
|
export declare interface TaskModelFields {
|
|
1559
|
+
/**
|
|
1560
|
+
* Maps to the field that contains the unique ID for each task.
|
|
1561
|
+
*/
|
|
1499
1562
|
id: string;
|
|
1563
|
+
/**
|
|
1564
|
+
* Maps to the field that contains the task start date.
|
|
1565
|
+
*/
|
|
1500
1566
|
start: string;
|
|
1567
|
+
/**
|
|
1568
|
+
* Maps to the field that contains the task end date.
|
|
1569
|
+
*/
|
|
1501
1570
|
end: string;
|
|
1571
|
+
/**
|
|
1572
|
+
* Maps to the field that contains the task title or name.
|
|
1573
|
+
*/
|
|
1502
1574
|
title: string;
|
|
1575
|
+
/**
|
|
1576
|
+
* Maps to the field that contains the task completion percentage.
|
|
1577
|
+
*/
|
|
1503
1578
|
percentComplete: string;
|
|
1579
|
+
/**
|
|
1580
|
+
* Maps to the field that contains the parent task ID for child tasks.
|
|
1581
|
+
*/
|
|
1504
1582
|
parentId?: string;
|
|
1583
|
+
/**
|
|
1584
|
+
* Maps to the field that indicates if a task is a summary of child tasks.
|
|
1585
|
+
*/
|
|
1505
1586
|
isRollup: string;
|
|
1587
|
+
/**
|
|
1588
|
+
* Maps to the field that indicates if a task is expanded to show child tasks.
|
|
1589
|
+
*/
|
|
1506
1590
|
isExpanded: string;
|
|
1591
|
+
/**
|
|
1592
|
+
* Maps to the field that contains child tasks.
|
|
1593
|
+
*/
|
|
1507
1594
|
children: string;
|
|
1595
|
+
/**
|
|
1596
|
+
* Maps to the field that indicates if a task is currently being edited.
|
|
1597
|
+
*/
|
|
1508
1598
|
isInEdit: string;
|
|
1599
|
+
/**
|
|
1600
|
+
* Maps to the field that indicates if a task is selected.
|
|
1601
|
+
*/
|
|
1509
1602
|
isSelected: string;
|
|
1510
1603
|
}
|
|
1511
1604
|
|
package/package-metadata.js
CHANGED
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
6
|
*-------------------------------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=Object.freeze({name:"@progress/kendo-react-gantt",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate:
|
|
8
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=Object.freeze({name:"@progress/kendo-react-gantt",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1757585025,version:"12.0.2-develop.5",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"});exports.packageMetadata=e;
|
package/package-metadata.mjs
CHANGED
|
@@ -10,8 +10,8 @@ const e = Object.freeze({
|
|
|
10
10
|
productName: "KendoReact",
|
|
11
11
|
productCode: "KENDOUIREACT",
|
|
12
12
|
productCodes: ["KENDOUIREACT"],
|
|
13
|
-
publishDate:
|
|
14
|
-
version: "12.0.2-develop.
|
|
13
|
+
publishDate: 1757585025,
|
|
14
|
+
version: "12.0.2-develop.5",
|
|
15
15
|
licensingDocsUrl: "https://www.telerik.com/kendo-react-ui/components/my-license/"
|
|
16
16
|
});
|
|
17
17
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progress/kendo-react-gantt",
|
|
3
|
-
"version": "12.0.2-develop.
|
|
3
|
+
"version": "12.0.2-develop.5",
|
|
4
4
|
"description": "React Gantt enables the display of self-referencing tabular data with many features. KendoReact Gantt package",
|
|
5
5
|
"author": "Progress",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
@@ -29,18 +29,18 @@
|
|
|
29
29
|
"@progress/kendo-date-math": "^1.4.1",
|
|
30
30
|
"@progress/kendo-drawing": "^1.21.2",
|
|
31
31
|
"@progress/kendo-licensing": "^1.7.0",
|
|
32
|
-
"@progress/kendo-react-buttons": "12.0.2-develop.
|
|
33
|
-
"@progress/kendo-react-common": "12.0.2-develop.
|
|
34
|
-
"@progress/kendo-react-grid": "12.0.2-develop.
|
|
35
|
-
"@progress/kendo-react-data-tools": "12.0.2-develop.
|
|
36
|
-
"@progress/kendo-react-dateinputs": "12.0.2-develop.
|
|
37
|
-
"@progress/kendo-react-dialogs": "12.0.2-develop.
|
|
38
|
-
"@progress/kendo-react-dropdowns": "12.0.2-develop.
|
|
39
|
-
"@progress/kendo-react-form": "12.0.2-develop.
|
|
40
|
-
"@progress/kendo-react-inputs": "12.0.2-develop.
|
|
41
|
-
"@progress/kendo-react-intl": "12.0.2-develop.
|
|
42
|
-
"@progress/kendo-react-labels": "12.0.2-develop.
|
|
43
|
-
"@progress/kendo-react-treelist": "12.0.2-develop.
|
|
32
|
+
"@progress/kendo-react-buttons": "12.0.2-develop.5",
|
|
33
|
+
"@progress/kendo-react-common": "12.0.2-develop.5",
|
|
34
|
+
"@progress/kendo-react-grid": "12.0.2-develop.5",
|
|
35
|
+
"@progress/kendo-react-data-tools": "12.0.2-develop.5",
|
|
36
|
+
"@progress/kendo-react-dateinputs": "12.0.2-develop.5",
|
|
37
|
+
"@progress/kendo-react-dialogs": "12.0.2-develop.5",
|
|
38
|
+
"@progress/kendo-react-dropdowns": "12.0.2-develop.5",
|
|
39
|
+
"@progress/kendo-react-form": "12.0.2-develop.5",
|
|
40
|
+
"@progress/kendo-react-inputs": "12.0.2-develop.5",
|
|
41
|
+
"@progress/kendo-react-intl": "12.0.2-develop.5",
|
|
42
|
+
"@progress/kendo-react-labels": "12.0.2-develop.5",
|
|
43
|
+
"@progress/kendo-react-treelist": "12.0.2-develop.5",
|
|
44
44
|
"@progress/kendo-svg-icons": "^4.0.0",
|
|
45
45
|
"react": "^16.8.2 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc",
|
|
46
46
|
"react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"package": {
|
|
70
70
|
"productName": "KendoReact",
|
|
71
71
|
"productCode": "KENDOUIREACT",
|
|
72
|
-
"publishDate":
|
|
72
|
+
"publishDate": 1757585025,
|
|
73
73
|
"licensingDocsUrl": "https://www.telerik.com/kendo-react-ui/components/my-license/"
|
|
74
74
|
}
|
|
75
75
|
},
|