UNPKG

react-modern-gantt

Version:

A modern, customizable Gantt chart component for React applications

3 lines (2 loc) 42 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t,r=require("react"),a=require("date-fns"),n=function(){return n=Object.assign||function(e){for(var t,r=1,a=arguments.length;r<a;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},n.apply(this,arguments)};function o(e,t,r){if(r||2===arguments.length)for(var a,n=0,o=t.length;n<o;n++)!a&&n in t||(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))}function i(e,t,r){if(void 0===t&&(t=exports.DateDisplayFormat.FULL_DATE),void 0===r&&(r="default"),!(e instanceof Date)||isNaN(e.getTime()))return"Invalid date";switch(t){case exports.DateDisplayFormat.MONTH_YEAR:return e.toLocaleString(r,{month:"short",year:"2-digit"});case exports.DateDisplayFormat.SHORT_DATE:return e.toLocaleString(r,{month:"short",day:"numeric"});case exports.DateDisplayFormat.FULL_DATE:default:return e.toLocaleString(r,{month:"short",day:"numeric",year:"numeric"})}}function s(e,t){var r=[];if(!(e instanceof Date&&t instanceof Date))return[new Date];for(var a=e.getFullYear(),n=e.getMonth(),o=t.getFullYear(),i=t.getMonth(),s=a;s<=o;s++)for(var c=s===o?i:11,l=s===a?n:0;l<=c;l++)r.push(new Date(s,l,1));return r}function c(e,t,r){void 0===r&&(r=exports.ViewMode.MONTH);try{if(!(e instanceof Date)||!(t instanceof Date)||isNaN(e.getTime())||isNaN(t.getTime()))return{value:0,unit:"days"};var n=e<t?e:t,o=e<t?t:e;switch(r){case exports.ViewMode.DAY:var i=a.differenceInDays(o,n)+1;return{value:i,unit:1===i?"day":"days"};case exports.ViewMode.WEEK:var s=a.differenceInWeeks(o,n)+1;return{value:s,unit:1===s?"week":"weeks"};case exports.ViewMode.MONTH:var c=a.differenceInMonths(o,n)+1;return{value:c,unit:1===c?"month":"months"};case exports.ViewMode.QUARTER:var l=a.differenceInQuarters(o,n)+1;return{value:l,unit:1===l?"quarter":"quarters"};case exports.ViewMode.YEAR:var u=a.differenceInYears(o,n)+1;return{value:u,unit:1===u?"year":"years"};default:var d=a.differenceInDays(o,n)+1;return{value:d,unit:1===d?"day":"days"}}}catch(e){return console.error("Error calculating duration:",e),{value:0,unit:"days"}}}function l(e){if(!Array.isArray(e)||0===e.length)return new Date;var t=new Date,r=!1;if(e.forEach((function(e){e&&Array.isArray(e.tasks)&&e.tasks.forEach((function(e){e&&e.startDate instanceof Date&&(r?e.startDate<t&&(t=new Date(e.startDate)):(t=new Date(e.startDate),r=!0))}))})),!r){var a=new Date;return new Date(a.getFullYear(),a.getMonth()-1,1)}return new Date(t.getFullYear(),t.getMonth(),1)}function u(e){if(!Array.isArray(e)||0===e.length)return new Date;var t=new Date,r=!1;if(e.forEach((function(e){e&&Array.isArray(e.tasks)&&e.tasks.forEach((function(e){e&&e.endDate instanceof Date&&(r?e.endDate>t&&(t=new Date(e.endDate)):(t=new Date(e.endDate),r=!0))}))})),!r){var a=new Date;return new Date(a.getFullYear(),a.getMonth()+2,0)}return new Date(t.getFullYear(),t.getMonth()+1,0)}"function"==typeof SuppressedError&&SuppressedError,exports.ViewMode=void 0,(e=exports.ViewMode||(exports.ViewMode={})).MINUTE="minute",e.HOUR="hour",e.DAY="day",e.WEEK="week",e.MONTH="month",e.QUARTER="quarter",e.YEAR="year",exports.DateDisplayFormat=void 0,(t=exports.DateDisplayFormat||(exports.DateDisplayFormat={})).MONTH_YEAR="month-year",t.FULL_DATE="full-date",t.SHORT_DATE="short-date";var d=function(e){var t=e.months,n=e.currentMonthIndex,o=(e.locale,e.className),i=void 0===o?"":o,s=e.viewMode,c=void 0===s?exports.ViewMode.MONTH:s,l=e.unitWidth,u=void 0===l?150:l,d=[exports.ViewMode.MINUTE,exports.ViewMode.HOUR,exports.ViewMode.DAY,exports.ViewMode.WEEK].includes(c),m=function(){if(![exports.ViewMode.MINUTE,exports.ViewMode.HOUR,exports.ViewMode.DAY,exports.ViewMode.WEEK].includes(c)||0===t.length)return[];var e=[];if(c===exports.ViewMode.MINUTE){var r=new Date(t[0]);r.setMinutes(0,0,0);var a=0;return t.forEach((function(t){t.getHours()===r.getHours()&&t.getDate()===r.getDate()&&t.getMonth()===r.getMonth()&&t.getFullYear()===r.getFullYear()?a+=1:(e.push({date:r,span:a}),(r=new Date(t)).setMinutes(0,0,0),a=1)})),a>0&&e.push({date:r,span:a}),e}if(c===exports.ViewMode.HOUR){var n=new Date(t[0]);n.setHours(0,0,0,0);var o=0;return t.forEach((function(t){t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?o+=1:(e.push({date:n,span:o}),(n=new Date(t)).setHours(0,0,0,0),o=1)})),o>0&&e.push({date:n,span:o}),e}var i=new Date(t[0]),s=0;return t.forEach((function(t){t.getMonth()===i.getMonth()&&t.getFullYear()===i.getFullYear()?s+=1:(e.push({date:i,span:s}),i=new Date(t),s=1)})),s>0&&e.push({date:i,span:s}),e}();return r.createElement("div",{className:"rmg-timeline ".concat(i),style:{"--gantt-unit-width":"".concat(u,"px")},"data-rmg-component":"timeline"},d&&r.createElement("div",{className:"rmg-timeline-header-higher","data-rmg-component":"timeline-header-higher"},m.map((function(e,t){return r.createElement("div",{key:"higher-level-".concat(t),className:"rmg-timeline-unit",style:{width:"".concat(e.span*u,"px")},"data-timeunit-higher":e.date.toISOString(),"data-rmg-component":"timeline-unit-higher"},function(e){if(!(e instanceof Date))return"";switch(c){case exports.ViewMode.MINUTE:return a.format(e,"HH:00",{locale:void 0});case exports.ViewMode.HOUR:return a.format(e,"MMM d",{locale:void 0});case exports.ViewMode.DAY:case exports.ViewMode.WEEK:return a.format(e,"MMM yyyy",{locale:void 0});default:return""}}(e.date))}))),r.createElement("div",{className:"rmg-timeline-header","data-rmg-component":"timeline-header"},t.map((function(e,t){return r.createElement("div",{key:"timeunit-".concat(t),className:"rmg-timeline-unit ".concat(t===n?"rmg-timeline-unit-current":""),style:{width:"".concat(u,"px")},"data-timeunit":e.toISOString(),"data-rmg-component":"timeline-unit"},function(e){if(!(e instanceof Date&&a.isValid(e)))return"";switch(c){case exports.ViewMode.MINUTE:return a.format(e,"HH:mm",{locale:void 0});case exports.ViewMode.HOUR:return a.format(e,"HH:00",{locale:void 0});case exports.ViewMode.DAY:return a.format(e,"d",{locale:void 0});case exports.ViewMode.WEEK:var t=a.getWeek(e);return"W".concat(t);case exports.ViewMode.MONTH:return a.format(e,"MMM yyyy",{locale:void 0});case exports.ViewMode.QUARTER:var r=Math.floor(e.getMonth()/3)+1;return"Q".concat(r," ").concat(e.getFullYear());case exports.ViewMode.YEAR:return e.getFullYear().toString();default:return a.format(e,"MMM yyyy",{locale:void 0})}}(e))}))))},m=function(e){var t=e.currentMonthIndex,a=e.height,n=e.label,o=void 0===n?"Today":n,i=e.dayOfMonth,s=e.className,c=void 0===s?"":s,l=e.markerClass,u=void 0===l?"":l,d=e.viewMode,m=void 0===d?exports.ViewMode.MONTH:d,f=e.unitWidth,g=void 0===f?150:f;if(t<0)return null;var p=function(){var e=new Date,r=i||e.getDate();switch(m){case exports.ViewMode.MINUTE:var a=e.getMinutes(),n=e.getSeconds();return t*g+g*((a+n/60)/60);case exports.ViewMode.HOUR:var o=e.getMinutes();return t*g+g*(o/60);case exports.ViewMode.DAY:return t*g+g/2;case exports.ViewMode.WEEK:var s=e.getDay();return t*g+g*((s+7)%7/6);case exports.ViewMode.MONTH:var c=new Date(e.getFullYear(),e.getMonth()+1,0).getDate();return t*g+g*((r-1)/c);case exports.ViewMode.QUARTER:var l=e.getMonth()%3;return t*g+g*(l/3);case exports.ViewMode.YEAR:var u=e.getMonth();return t*g+g*(u/12);default:return t*g+g/2}}(),h=Math.max(100,a);return r.createElement("div",{className:"rmg-today-marker ".concat(c," ").concat(u),style:{left:"".concat(p,"px"),height:"".concat(h,"px")},"data-testid":"today-marker","data-rmg-component":"today-marker"},r.createElement("div",{className:"rmg-today-marker-label","data-rmg-component":"today-marker-label"},o))},f=function(){function e(){}return e.detectOverlaps=function(e,t){var r=this;if(void 0===t&&(t=exports.ViewMode.MONTH),!Array.isArray(e)||0===e.length)return[];var a=o([],e,!0).sort((function(e,t){return e.startDate&&t.startDate?e.startDate.getTime()-t.startDate.getTime():0})),n=[];return a.forEach((function(e){for(var a=!1,o=0;o<n.length;o++){if(!n[o].some((function(a){return r.tasksVisuallyOverlap(e,a,t)}))){n[o].push(e),a=!0;break}}a||n.push([e])})),n},e.tasksVisuallyOverlap=function(e,t,r){if(void 0===r&&(r=exports.ViewMode.MONTH),!(e.startDate&&e.endDate&&t.startDate&&t.endDate))return!1;var a=e.startDate.getTime(),n=e.endDate.getTime(),o=t.startDate.getTime(),i=t.endDate.getTime(),s=this.getCollisionBufferByViewMode(r);return a+s<i-s&&n-s>o+s||Math.abs(a-o)<2*s||Math.abs(n-i)<2*s},e.getCollisionBufferByViewMode=function(e){var t=36e5,r=24*t;switch(e){case exports.ViewMode.MINUTE:return 3e4;case exports.ViewMode.HOUR:return 9e5;case exports.ViewMode.DAY:return t;case exports.ViewMode.WEEK:return 4*t;case exports.ViewMode.MONTH:return 12*t;case exports.ViewMode.QUARTER:return r;case exports.ViewMode.YEAR:return 2*r;default:return 12*t}},e.wouldCollide=function(e,t,r,a){var n=this;return void 0===r&&(r=exports.ViewMode.MONTH),t.some((function(t){return t.id!==e.id&&t.id!==a&&n.tasksVisuallyOverlap(e,t,r)}))},e.getPreviewArrangement=function(e,t,r){void 0===r&&(r=exports.ViewMode.MONTH);var a=t.map((function(t){return t.id===e.id?e:t}));return this.detectOverlaps(a,r)},e}(),g=function(){function e(){}return e.calculateDatesFromPosition=function(e,t,r,n,o,i,s){void 0===s&&(s=exports.ViewMode.MONTH);try{var c=isNaN(e)?0:e,l=isNaN(t)||t<20?20:t,u=r.getTime(),d=(n.getTime()-u)/(o*i),m=c*d,f=l*d,g=new Date(u+m),p=new Date(u+m+f);switch(s){case exports.ViewMode.MINUTE:g.setSeconds(0,0),p.setSeconds(59,999);break;case exports.ViewMode.HOUR:g.setMinutes(0,0,0),p.setMinutes(59,59,999);break;case exports.ViewMode.DAY:var h=Math.round(e/i),v=Math.max(1,Math.round(t/i)),M=new Date(r);M.setHours(0,0,0,0),(g=new Date(M)).setDate(M.getDate()+h),g.setHours(0,0,0,0),(p=new Date(g)).setDate(g.getDate()+v-1),p.setHours(23,59,59,999);break;default:g=a.startOfDay(g),p=a.endOfDay(p)}return g<r&&(g=new Date(r)),p>n&&(p=new Date(n)),{newStartDate:g,newEndDate:p}}catch(e){return console.error("Error calculating dates from position:",e),{newStartDate:new Date(r),newEndDate:new Date(n)}}},e.createUpdatedTask=function(e,t,r){return n(n({},e),{startDate:new Date(t),endDate:new Date(r)})},e.calculateTaskPixelPosition=function(e,t,r,a,n,o){var i;void 0===o&&(o=exports.ViewMode.MONTH);try{if(!(e.startDate instanceof Date&&e.endDate instanceof Date))throw new Error("Invalid dates in task");var s=t.getTime(),c=r.getTime(),l=Math.max(e.startDate.getTime(),t.getTime()),u=Math.min(e.endDate.getTime(),r.getTime());if(o===exports.ViewMode.MINUTE||o===exports.ViewMode.HOUR||o===exports.ViewMode.DAY){var d=void 0,m=void 0;if(o===exports.ViewMode.MINUTE)d=s,m=c;else if(o===exports.ViewMode.HOUR){var f=new Date(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),0,0,0).getTime(),g=new Date(r.getFullYear(),r.getMonth(),r.getDate(),r.getHours(),59,59,999).getTime();d=f,m=g}else{var p=new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0).getTime(),h=new Date(r.getFullYear(),r.getMonth(),r.getDate(),23,59,59,999).getTime();d=p,m=h}if(s=d,c=m,o===exports.ViewMode.DAY){var v=new Date(new Date(l).getFullYear(),new Date(l).getMonth(),new Date(l).getDate(),0,0,0,0).getTime(),M=new Date(new Date(u).getFullYear(),new Date(u).getMonth(),new Date(u).getDate(),23,59,59,999).getTime();l=v,u=M}}var w=c-s,D=a*n,x=(l-s)/w*D,E=(u-l)/w*D;o===exports.ViewMode.MINUTE?(x=Math.round(x),E=Math.max(10,Math.round(E))):o===exports.ViewMode.HOUR?(x=Math.round(x),E=Math.max(15,Math.round(E))):o===exports.ViewMode.DAY&&(x=Math.round(x/n)*n,E=Math.max(n,Math.round(E/n)*n));var k=((i={})[exports.ViewMode.MINUTE]=10,i[exports.ViewMode.HOUR]=15,i[exports.ViewMode.DAY]=20,i[exports.ViewMode.WEEK]=20,i[exports.ViewMode.MONTH]=20,i[exports.ViewMode.QUARTER]=30,i[exports.ViewMode.YEAR]=40,i)[o]||20;E=Math.max(k,E);var y=D-x;return{leftPx:x,widthPx:E=Math.min(y,E)}}catch(e){return console.error("Error calculating task position:",e),{leftPx:0,widthPx:20}}},e.getLiveDatesFromElement=function(e,t,r,a,n,o){void 0===o&&(o=exports.ViewMode.MONTH);try{if(!e)return{startDate:new Date(t),endDate:new Date(r)};var i=parseFloat(e.style.left||"0"),s=parseFloat(e.style.width||"0"),c=this.calculateDatesFromPosition(i,s,t,r,a,n,o);return{startDate:c.newStartDate,endDate:c.newEndDate}}catch(e){return console.error("Error getting live dates:",e),{startDate:new Date(t),endDate:new Date(r)}}},e.datesOverlap=function(e,t,r,n){return a.isWithinInterval(e,{start:r,end:n})||a.isWithinInterval(t,{start:r,end:n})||a.isWithinInterval(r,{start:e,end:t})||a.isWithinInterval(n,{start:e,end:t})},e}(),p=function(e){var t=e.task,n=e.position,o=e.dragType,i=e.taskId,s=e.startDate,l=e.endDate,u=e.totalMonths,d=e.monthWidth,m=e.showProgress,f=void 0!==m&&m,p=e.instanceId,h=e.className,v=void 0===h?"":h,M=e.viewMode,w=void 0===M?exports.ViewMode.MONTH:M,D=e.renderTooltip,x=t.startDate,E=t.endDate;try{var k=i||t.id,y=document.querySelector('[data-task-id="'.concat(k,'"][data-instance-id="').concat(p,'"]'));if(y&&(o||y.style.left||y.style.width)){var T=g.getLiveDatesFromElement(y,s,l,u,d,w);x=T.startDate,E=T.endDate}}catch(e){console.error("Error calculating live dates for tooltip:",e)}var V=c(x,E,w),N=function(e){return e instanceof Date&&!isNaN(e.getTime())?w===exports.ViewMode.DAY?a.format(e,"EEE, MMM d, yyyy"):a.format(e,"MMM d, yyyy"):"Invalid date"},b=function(){if(!o)return null;switch(o){case"move":return"Moving task...";case"resize-left":return"Adjusting start date...";case"resize-right":return"Adjusting end date...";default:return null}}();return D?r.createElement("div",{className:"rmg-tooltip ".concat(v," rmg-tooltip-visible"),style:{left:"".concat(n.x,"px"),top:"".concat(n.y-40,"px")},"data-rmg-component":"tooltip"},D({task:t,position:n,dragType:o,startDate:x,endDate:E,viewMode:w})):r.createElement("div",{className:"rmg-tooltip ".concat(v," rmg-tooltip-visible"),style:{left:"".concat(n.x,"px"),top:"".concat(n.y-40,"px")},"data-rmg-component":"tooltip"},r.createElement("div",{className:"rmg-tooltip-title","data-rmg-component":"tooltip-title"},t.name||"Unnamed Task"),b&&r.createElement("div",{className:"rmg-tooltip-action","data-rmg-component":"tooltip-action"},b),r.createElement("div",{className:"rmg-tooltip-content","data-rmg-component":"tooltip-content"},r.createElement("div",{className:"rmg-tooltip-row","data-rmg-component":"tooltip-row"},r.createElement("div",{className:"rmg-tooltip-label"},"Start:"),r.createElement("div",{className:"rmg-tooltip-value"},N(x))),r.createElement("div",{className:"rmg-tooltip-row","data-rmg-component":"tooltip-row"},r.createElement("div",{className:"rmg-tooltip-label"},"End:"),r.createElement("div",{className:"rmg-tooltip-value"},N(E))),r.createElement("div",{className:"rmg-tooltip-row","data-rmg-component":"tooltip-row"},r.createElement("div",{className:"rmg-tooltip-label"},"Duration:"),r.createElement("div",{className:"rmg-tooltip-value"},V.value," ",V.unit)),f&&"number"==typeof t.percent&&r.createElement("div",{className:"rmg-tooltip-row","data-rmg-component":"tooltip-row"},r.createElement("div",{className:"rmg-tooltip-label"},"Progress:"),r.createElement("div",{className:"rmg-tooltip-value"},t.percent,"%")),t.dependencies&&t.dependencies.length>0&&r.createElement("div",{className:"rmg-tooltip-row","data-rmg-component":"tooltip-row"},r.createElement("div",{className:"rmg-tooltip-label"},"Dependencies:"),r.createElement("div",{className:"rmg-tooltip-value"},t.dependencies.join(", ")))))},h=function(e){var t=e.activeMode,a=e.onChange,n=e.darkMode,o=e.availableModes,i=[{id:exports.ViewMode.MINUTE,label:"Minute"},{id:exports.ViewMode.HOUR,label:"Hour"},{id:exports.ViewMode.DAY,label:"Day"},{id:exports.ViewMode.WEEK,label:"Week"},{id:exports.ViewMode.MONTH,label:"Month"},{id:exports.ViewMode.QUARTER,label:"Quarter"},{id:exports.ViewMode.YEAR,label:"Year"}],s=[exports.ViewMode.DAY,exports.ViewMode.WEEK,exports.ViewMode.MONTH,exports.ViewMode.QUARTER,exports.ViewMode.YEAR],c=o?i.filter((function(e){return o.includes(e.id)})):i.filter((function(e){return s.includes(e.id)}));return r.createElement("div",{className:"rmg-view-mode-selector ".concat(n?"rmg-dark":""),"data-rmg-component":"view-mode-selector"},c.map((function(e){return r.createElement("button",{key:e.id,type:"button",className:"rmg-view-mode-button ".concat(t===e.id?"rmg-view-mode-button-active":""),onClick:function(){return a(e.id)},"data-rmg-component":"view-mode-button","data-view-mode":e.id,"data-active":t===e.id?"true":"false"},e.label)})))},v=function(e){var t=e.task,a=e.leftPx,n=e.widthPx,o=e.topPx,i=e.isHovered,s=e.isDragging,c=e.editMode,l=e.showProgress,u=void 0!==l&&l,d=e.instanceId,m=e.renderTask,f=e.getTaskColor,g=e.onMouseDown,p=e.onMouseEnter,h=e.onMouseLeave,v=e.onClick,M=e.onProgressUpdate,w=(i||s)&&c,D=r.useRef(null),x=r.useRef(null),E=r.useState(!1),k=E[0],y=E[1],T=r.useState(t.percent||0),V=T[0],N=T[1];if(!t||!t.id)return null;var b=t.color||"var(--rmg-task-color)",A="",C="var(--rmg-task-text-color)";if(f){var R=f({task:t,isHovered:i,isDragging:s});b=R.backgroundColor,A=R.borderColor||"",C=R.textColor||C}var Y=r.useCallback((function(e){if(k&&x.current&&D.current){var t=D.current.getBoundingClientRect(),r=t.width-2,a=Math.max(0,Math.min(r,e.clientX-t.left)),n=Math.round(a/r*100);N(Math.max(0,Math.min(100,n))),x.current&&x.current.firstChild&&(x.current.firstChild.style.width="".concat(Math.max(0,Math.min(100,n)),"%"))}}),[k]),H=r.useCallback((function(){k&&(y(!1),document.removeEventListener("mousemove",Y),document.removeEventListener("mouseup",H),x.current&&(x.current.style.transition=""),M&&V!==t.percent&&M(t,V))}),[k,M,V,t]);if(r.useEffect((function(){N(t.percent||0)}),[t.percent]),r.useEffect((function(){return function(){document.removeEventListener("mousemove",Y),document.removeEventListener("mouseup",H)}}),[Y,H]),m){var F=m({task:t,leftPx:a,widthPx:n,topPx:o,isHovered:i,isDragging:s,editMode:c,showProgress:u});return r.createElement("div",{ref:D,className:"rmg-task-item-custom",style:{position:"absolute",left:"".concat(Math.max(0,a),"px"),width:"".concat(Math.max(20,n),"px"),top:"".concat(o,"px")},onClick:function(e){return v(e,t)},onMouseDown:function(e){return g(e,t,"move")},onMouseEnter:function(e){return p(e,t)},onMouseLeave:h,"data-testid":"task-".concat(t.id),"data-task-id":t.id,"data-instance-id":d,"data-dragging":s?"true":"false","data-rmg-component":"task"},F)}var O={left:"".concat(Math.max(0,a),"px"),width:"".concat(Math.max(20,n),"px"),top:"".concat(o,"px"),willChange:s?"transform, left, width":"auto",backgroundColor:b.startsWith("var(")||b.startsWith("#")?b:"var(--rmg-task-color)",color:C.startsWith("var(")||C.startsWith("#")?C:"var(--rmg-task-text-color)"};return A&&(O.borderColor=A,O.borderWidth="1px",O.borderStyle="solid"),r.createElement("div",{ref:D,className:"rmg-task-item ".concat(s?"rmg-task-item-dragging":""),style:O,onClick:function(e){return v(e,t)},onMouseDown:function(e){return g(e,t,"move")},onMouseEnter:function(e){return p(e,t)},onMouseLeave:h,"data-testid":"task-".concat(t.id),"data-task-id":t.id,"data-instance-id":d,"data-dragging":s?"true":"false","data-rmg-component":"task"},w&&r.createElement("div",{className:"rmg-resize-handle rmg-resize-handle-left",onMouseDown:function(e){e.stopPropagation(),g(e,t,"resize-left")},"data-rmg-component":"resize-handle","data-rmg-handle":"left"}),r.createElement("div",{className:"rmg-task-item-name"},t.name||"Unnamed Task"),u&&"number"==typeof V&&r.createElement("div",{ref:x,className:"rmg-progress-bar",onClick:function(e){if(c&&u&&M){e.stopPropagation();var r=e.currentTarget.clientWidth,a=e.nativeEvent.offsetX,n=Math.round(a/r*100);N(n),M(t,n)}},"data-rmg-component":"progress-bar"},r.createElement("div",{className:"rmg-progress-fill",style:{width:"".concat(V,"%")},"data-rmg-component":"progress-fill"},c&&(i||k)&&r.createElement("div",{className:"rmg-progress-handle ".concat(k?"rmg-progress-handle-dragging":""),onMouseDown:function(e){c&&u&&(e.stopPropagation(),e.preventDefault(),y(!0),x.current&&(x.current.style.transition="width 0.05s ease-out"),document.addEventListener("mousemove",Y),document.addEventListener("mouseup",H))},"data-rmg-component":"progress-handle"}))),w&&r.createElement("div",{className:"rmg-resize-handle rmg-resize-handle-right",onMouseDown:function(e){e.stopPropagation(),g(e,t,"resize-right")},"data-rmg-component":"resize-handle","data-rmg-handle":"right"}))},M=function(e){var t=e.tasks,a=void 0===t?[]:t,n=e.headerLabel,o=void 0===n?"Resources":n,i=e.showIcon,s=void 0!==i&&i,c=e.showTaskCount,l=void 0!==c&&c,u=e.showDescription,d=void 0===u||u,m=e.rowHeight,g=void 0===m?40:m,p=e.className,h=void 0===p?"":p,v=e.onGroupClick,M=e.viewMode,w=Array.isArray(a)?a:[],D=M===exports.ViewMode.DAY||M===exports.ViewMode.WEEK;return r.createElement("div",{className:"rmg-task-list ".concat(h),"data-rmg-component":"task-list"},D?r.createElement(r.Fragment,null,r.createElement("div",{className:"rmg-task-list-header"}),r.createElement("div",{className:"rmg-task-list-header"},o)):r.createElement("div",{className:"rmg-task-list-header"},o),w.map((function(e){if(!e)return null;var t=function(e){if(!e.tasks||!Array.isArray(e.tasks))return 60;var t=f.detectOverlaps(e.tasks,M);return Math.max(60,t.length*g+20)}(e);return r.createElement("div",{key:"task-group-".concat(e.id||"unknown"),className:"rmg-task-group",style:{height:"".concat(t,"px")},onClick:function(){return t=e,void(v&&v(t));var t},"data-testid":"task-group-".concat(e.id||"unknown"),"data-rmg-component":"task-group","data-group-id":e.id},r.createElement("div",{className:"rmg-task-group-content"},s&&e.icon&&r.createElement("span",{className:"rmg-task-group-icon",dangerouslySetInnerHTML:{__html:e.icon},"data-rmg-component":"task-group-icon"}),r.createElement("div",{className:"rmg-task-group-name","data-rmg-component":"task-group-name"},e.name||"Unnamed")),d&&e.description&&r.createElement("div",{className:"rmg-task-group-description","data-rmg-component":"task-group-description"},e.description),l&&e.tasks&&e.tasks.length>0&&r.createElement("div",{className:"rmg-task-group-count","data-rmg-component":"task-group-count"},e.tasks.length," ",1===e.tasks.length?"task":"tasks"))})))},w=function(e){var t=e.taskGroup,a=e.startDate,o=e.endDate,i=e.totalMonths,s=e.monthWidth,c=e.editMode,l=void 0===c||c,u=e.showProgress,d=void 0!==u&&u,m=e.className,h=void 0===m?"":m,M=e.tooltipClassName,w=void 0===M?"":M,D=e.onTaskUpdate,x=e.onTaskClick,E=e.onTaskSelect,k=e.onAutoScrollChange,y=e.viewMode,T=void 0===y?exports.ViewMode.MONTH:y,V=e.scrollContainerRef,N=e.smoothDragging,b=void 0===N||N;e.movementThreshold;var A=e.animationSpeed,C=void 0===A?.25:A,R=e.renderTask,Y=e.renderTooltip,H=e.getTaskColor;if(!t||!t.id||!Array.isArray(t.tasks))return r.createElement("div",{className:"rmg-task-row rmg-task-row-invalid"},"Invalid task group data");var F=a instanceof Date?a:new Date,O=o instanceof Date?o:new Date,S=r.useState(null),U=S[0],I=S[1],L=r.useState(null),P=L[0],W=L[1],Q=r.useState(null),K=Q[0],B=Q[1],z=r.useState(0),_=z[0],q=z[1],X=r.useState({x:0,y:0}),G=X[0],j=X[1],J=r.useState(null),Z=J[0],$=J[1],ee=r.useState(null),te=ee[0],re=ee[1],ae=r.useRef(null),ne=r.useRef({x:0,y:0}),oe=r.useRef(null),ie=r.useRef(null),se=r.useRef({left:0,width:0}),ce=r.useRef(0),le=r.useRef(!1),ue=r.useRef(null),de=r.useRef(0),me=r.useRef(null),fe=r.useRef({minLeft:0,maxLeft:i*s}),ge=r.useRef(null),pe=r.useRef(null),he=r.useRef(null),ve=r.useRef(null),Me=r.useRef("task-row-".concat(Math.random().toString(36).substring(2,11))),we=b&&T!==exports.ViewMode.DAY,De=function(e){var t=n(n({},e),{startDate:new Date(e.startDate),endDate:new Date(e.endDate)});$(t),he.current=t},xe=Z?f.getPreviewArrangement(Z,t.tasks,T):f.detectOverlaps(t.tasks,T),Ee=Math.max(60,40*xe.length+20);r.useEffect((function(){fe.current={minLeft:0,maxLeft:i*s}}),[i,s]);var ke=function(){if(ve.current&&oe.current&&ie.current){var e=Date.now(),t=e-ce.current;ce.current=e;var r=C||.25,a=ie.current.left+(oe.current.left-ie.current.left)*r,n=ie.current.width+(oe.current.width-ie.current.width)*r;se.current.left=(a-ie.current.left)/(t||16),se.current.width=(n-ie.current.width)/(t||16),ie.current={left:a,width:n},ve.current.style.left="".concat(a,"px"),ve.current.style.width="".concat(n,"px"),pe.current&&ye(a,n),ae.current=requestAnimationFrame(ke)}else ae.current=null},ye=function(e,t){if(pe.current)try{if(T===exports.ViewMode.DAY){var r=Math.round(e/s),a=Math.max(1,Math.round(t/s)),o=new Date(F);o.setHours(0,0,0,0),(p=new Date(o)).setDate(o.getDate()+r),p.setHours(0,0,0,0),(h=new Date(p)).setDate(p.getDate()+a-1),h.setHours(23,59,59,999);var c=F.getTime(),l=O.getTime(),u=new Date(Math.max(c,p.getTime())),d=new Date(Math.min(l,h.getTime())),m=n(n({},pe.current),{startDate:u,endDate:d});De(m)}else{var f=g.calculateDatesFromPosition(e,t,F,O,i,s,T),p=f.newStartDate,h=f.newEndDate;m=n(n({},pe.current),{startDate:p,endDate:h});De(m)}}catch(e){console.error("Error updating dates:",e)}},Te=function(){if(!le.current){le.current=!0;var e=function(){if(le.current&&(null==V?void 0:V.current)&&oe.current){var t=V.current,r=me.current,a=de.current,n=t.scrollLeft,o=t.scrollWidth-t.clientWidth;if("left"===r){if(n<=0)return void Ve();var i=Math.max(0,n-a);if(t.scrollLeft=i,oe.current){var s=Math.max(fe.current.minLeft,oe.current.left-a);oe.current.left=s}}else if("right"===r){if(n>=o)return void Ve();i=Math.min(o,n+a);if(t.scrollLeft=i,oe.current&&te){var c=fe.current.maxLeft-oe.current.width;s=Math.min(c,oe.current.left+a);oe.current.left=s}}le.current&&(ue.current=requestAnimationFrame(e))}};ue.current=requestAnimationFrame(e)}},Ve=function(){le.current=!1,null!==ue.current&&(cancelAnimationFrame(ue.current),ue.current=null)},Ne=function(e,r){x&&!P&&x(r,t),E&&E(r,!0)},be=function(e,t){P||(I(t),Ce(e))},Ae=function(){P||I(null)},Ce=function(e){if(ge.current){var t=ge.current.getBoundingClientRect();j({x:e.clientX-t.left+20,y:e.clientY-t.top})}},Re=function(e,t,r){if(l){e.preventDefault(),e.stopPropagation();var a=document.querySelector('[data-task-id="'.concat(t.id,'"][data-instance-id="').concat(Me.current,'"]'));if(a){ve.current=a;var o=parseFloat(a.style.left||"0"),i=parseFloat(a.style.width||"0");re({left:o,width:i,startDate:new Date(t.startDate),endDate:new Date(t.endDate)}),oe.current={left:o,width:i},ie.current={left:o,width:i},ne.current={x:e.clientX,y:e.clientY},ce.current=Date.now(),se.current={left:0,width:0},a.setAttribute("data-dragging","true"),a.style.transition="none",W(t),B(r),q(e.clientX),$(t),function(e){var t=n(n({},e),{startDate:new Date(e.startDate),endDate:new Date(e.endDate)});W(t),pe.current=t}(t),De(t),null===ae.current&&we&&(ae.current=requestAnimationFrame(ke)),document.addEventListener("mouseup",He),document.addEventListener("mousemove",Ye)}}},Ye=function(e){if(ne.current={x:e.clientX,y:e.clientY},e instanceof MouseEvent&&U&&ge.current){var t=ge.current.getBoundingClientRect();j({x:e.clientX-t.left+20,y:e.clientY-t.top})}else e instanceof MouseEvent||Ce(e);if(P&&(null==V?void 0:V.current)&&function(e){if((null==V?void 0:V.current)&&P){var t=V.current.getBoundingClientRect(),r=null,a=0;e<t.left+40?(r="left",a=Math.max(1,Math.round((40-(e-t.left))/10))):e>t.right-40&&(r="right",a=Math.max(1,Math.round((e-(t.right-40))/10))),me.current=r,de.current=a,r&&!le.current?(Te(),k&&k(!0)):!r&&le.current&&(Ve(),k&&k(!1))}}(e.clientX),P&&K&&te&&ge.current&&oe.current)try{var r=e.clientX-_,a=i*s,n=oe.current.left,o=oe.current.width;switch(K){case"move":n=Math.max(0,Math.min(a-te.width,te.left+r)),T===exports.ViewMode.DAY&&(n=Math.round(n/s)*s);break;case"resize-left":var c=te.width-20,l=Math.min(c,r);n=Math.max(0,te.left+l),T===exports.ViewMode.DAY&&(n=Math.round(n/s)*s);var u=te.left+te.width;o=Math.max(20,u-n),T===exports.ViewMode.DAY&&(o=Math.round(o/s)*s,o=Math.max(s,o));break;case"resize-right":o=Math.max(20,Math.min(a-te.left,te.width+r)),T===exports.ViewMode.DAY&&(o=Math.round(o/s)*s,o=Math.max(s,o))}oe.current={left:n,width:o},T===exports.ViewMode.DAY&&ve.current?(ve.current.style.left="".concat(n,"px"),ve.current.style.width="".concat(o,"px"),ye(n,o)):we?null===ae.current&&(ce.current=Date.now(),ae.current=requestAnimationFrame(ke)):ve.current&&(ve.current.style.left="".concat(n,"px"),ve.current.style.width="".concat(o,"px"),ye(n,o))}catch(e){console.error("Error in handleMouseMove:",e)}},He=function(){try{null!==ae.current&&(cancelAnimationFrame(ae.current),ae.current=null),function(){if(ve.current&&oe.current&&pe.current){var e=oe.current.left,r=oe.current.width;T===exports.ViewMode.DAY?(e=Math.round(e/s)*s,r=Math.round(r/s)*s,r=Math.max(s,r),ve.current.style.transition="transform 0.15s ease-out, left 0.15s ease-out, width 0.15s ease-out",ve.current.style.left="".concat(e,"px"),ve.current.style.width="".concat(r,"px"),ye(e,r)):we||(ve.current.style.transition="transform 0.15s ease-out, left 0.15s ease-out, width 0.15s ease-out",ve.current.style.left="".concat(e,"px"),ve.current.style.width="".concat(r,"px"));var a=he.current;if(a){var o=F.getTime(),i=O.getTime();if(a.startDate.getTime()<o&&(a=n(n({},a),{startDate:new Date(o)})),a.endDate.getTime()>i&&(a=n(n({},a),{endDate:new Date(i)})),D&&a)try{D(t.id,a)}catch(e){console.error("Error in onTaskUpdate:",e)}}}}(),ve.current&&(ve.current.setAttribute("data-dragging","false"),setTimeout((function(){ve.current&&(ve.current.style.transition="")}),200))}catch(e){console.error("Error in handleMouseUp:",e)}finally{Ve(),k&&k(!1),W(null),B(null),$(null),re(null),pe.current=null,he.current=null,ve.current=null,oe.current=null,ie.current=null,document.removeEventListener("mouseup",He),document.removeEventListener("mousemove",Ye)}},Fe=function(e,r){if(D&&t.id)try{var a=n(n({},e),{percent:r});D(t.id,a)}catch(e){console.error("Error updating task progress:",e)}};return r.useEffect((function(){return function(){document.removeEventListener("mouseup",He),document.removeEventListener("mousemove",Ye),Ve(),null!==ae.current&&(cancelAnimationFrame(ae.current),ae.current=null)}}),[]),t.tasks&&0!==t.tasks.length?r.createElement("div",{className:"rmg-task-row ".concat(h),style:{height:"".concat(Ee,"px")},onMouseMove:function(e){return Ye(e)},onMouseLeave:function(){return I(null)},ref:ge,"data-testid":"task-row-".concat(t.id),"data-instance-id":Me.current,"data-rmg-component":"task-row","data-group-id":t.id},xe.map((function(e,t){return r.createElement(r.Fragment,{key:"task-row-".concat(t)},e.map((function(e){try{if(!(e&&e.id&&e.startDate instanceof Date&&e.endDate instanceof Date))return console.warn("Invalid task data:",e),null;var a=g.calculateTaskPixelPosition(e,F,O,i,s,T),n=a.leftPx,o=a.widthPx,c=(null==U?void 0:U.id)===e.id,u=(null==P?void 0:P.id)===e.id,m=40*t+10;return r.createElement(v,{key:"task-".concat(e.id),task:e,leftPx:n,widthPx:o,topPx:m,isHovered:c,isDragging:u,editMode:l,showProgress:d,instanceId:Me.current,onMouseDown:Re,onMouseEnter:be,onMouseLeave:Ae,onClick:Ne,renderTask:R,getTaskColor:H,onProgressUpdate:Fe})}catch(e){return console.error("Error rendering task:",e),null}})))})),(U||P)&&r.createElement(p,{task:Z||P||U,position:G,dragType:K,taskId:null==P?void 0:P.id,startDate:F,endDate:O,totalMonths:i,monthWidth:s,showProgress:d,instanceId:Me.current,className:w,viewMode:T,renderTooltip:Y})):r.createElement("div",{className:"rmg-task-row rmg-task-row-empty"},"No tasks available")},D=function(e){var t=e.tasks,i=void 0===t?[]:t,c=e.startDate,g=e.endDate,p=e.title,v=void 0===p?"Project Timeline":p,D=e.currentDate,x=void 0===D?new Date:D,E=e.showCurrentDateMarker,k=void 0===E||E,y=e.todayLabel,T=void 0===y?"Today":y,V=e.editMode,N=void 0===V||V,b=e.headerLabel,A=void 0===b?"Resources":b,C=e.showProgress,R=void 0!==C&&C,Y=e.darkMode,H=void 0!==Y&&Y,F=e.locale,O=void 0===F?"default":F,S=e.styles,U=void 0===S?{}:S,I=e.viewMode,L=void 0===I?exports.ViewMode.MONTH:I,P=e.viewModes,W=e.smoothDragging,Q=void 0===W||W,K=e.movementThreshold,B=void 0===K?3:K,z=e.animationSpeed,_=void 0===z?.25:z,q=e.minuteStep,X=void 0===q?5:q,G=e.renderTaskList,j=e.renderTask,J=e.renderTooltip,Z=e.renderViewModeSelector,$=e.renderHeader,ee=e.renderTimelineHeader,te=e.getTaskColor,re=e.onTaskUpdate,ae=e.onTaskClick,ne=e.onTaskSelect;e.onTaskDoubleClick;var oe=e.onGroupClick,ie=e.onViewModeChange,se=e.fontSize;e.rowHeight,e.timeStep;var ce=r.useRef(null),le=r.useRef(null),ue=r.useState(L),de=ue[0],me=ue[1],fe=r.useState([]);fe[0];var ge=fe[1],pe=r.useState(150),he=pe[0],ve=pe[1],Me=r.useState(!1),we=Me[0],De=Me[1],xe=r.useState(0),Ee=xe[0],ke=xe[1],ye=c||l(i),Te=g||u(i),Ve=function(e,t,r){void 0===r&&(r=5);var n=[],o=new Date(e);o.setSeconds(0,0);var i=o.getMinutes(),s=Math.floor(i/r)*r;o.setMinutes(s);var c=new Date(t);for(c.setMinutes(c.getMinutes(),59,999);o<=c;)n.push(new Date(o)),o=a.addMinutes(o,r);return n},Ne=function(e,t){var r=[],n=new Date(e);n.setMinutes(0,0,0);var o=new Date(t);for(o.setHours(o.getHours(),59,59,999);n<=o;)r.push(new Date(n)),n=a.addHours(n,1);return r},be=function(e,t){var r=[],n=new Date(e);n.setHours(0,0,0,0);var o=new Date(t);for(o.setHours(23,59,59,999);n<=o;)r.push(new Date(n)),n=a.addDays(n,1);return r},Ae=function(e,t){for(var r=[],n=new Date(e);n<=t;)r.push(new Date(n)),n=a.addDays(n,7);return r},Ce=function(e,t){for(var r=[],n=a.startOfQuarter(new Date(e));n<=t;)r.push(new Date(n)),n=a.addQuarters(n,1);return r},Re=function(e,t){for(var r=[],n=a.startOfYear(new Date(e));n<=t;)r.push(new Date(n)),n=a.addYears(n,1);return r},Ye=function(){return!1!==P&&(Array.isArray(P)?P:[exports.ViewMode.DAY,exports.ViewMode.WEEK,exports.ViewMode.MONTH,exports.ViewMode.QUARTER,exports.ViewMode.YEAR])},He=function(){switch(de){case exports.ViewMode.MINUTE:return Ve(ye,Te,X);case exports.ViewMode.HOUR:return Ne(ye,Te);case exports.ViewMode.DAY:return be(ye,Te);case exports.ViewMode.WEEK:return Ae(ye,Te);case exports.ViewMode.MONTH:return s(ye,Te);case exports.ViewMode.QUARTER:return Ce(ye,Te);case exports.ViewMode.YEAR:return Re(ye,Te);default:return s(ye,Te)}}(),Fe=He.length,Oe=function(){var e=new Date;switch(de){case exports.ViewMode.MINUTE:return He.findIndex((function(t){return t.getHours()===e.getHours()&&Math.floor(t.getMinutes()/(X||5))===Math.floor(e.getMinutes()/(X||5))&&t.getDate()===e.getDate()&&t.getMonth()===e.getMonth()&&t.getFullYear()===e.getFullYear()}));case exports.ViewMode.HOUR:return He.findIndex((function(t){return t.getHours()===e.getHours()&&t.getDate()===e.getDate()&&t.getMonth()===e.getMonth()&&t.getFullYear()===e.getFullYear()}));case exports.ViewMode.DAY:return He.findIndex((function(t){return t.getDate()===e.getDate()&&t.getMonth()===e.getMonth()&&t.getFullYear()===e.getFullYear()}));case exports.ViewMode.WEEK:return He.findIndex((function(t){var r=new Date(t);return r.setDate(t.getDate()+6),e>=t&&e<=r}));case exports.ViewMode.MONTH:return He.findIndex((function(t){return t.getMonth()===e.getMonth()&&t.getFullYear()===e.getFullYear()}));case exports.ViewMode.QUARTER:var t=Math.floor(e.getMonth()/3);return He.findIndex((function(r){return Math.floor(r.getMonth()/3)===t&&r.getFullYear()===e.getFullYear()}));case exports.ViewMode.YEAR:return He.findIndex((function(t){return t.getFullYear()===e.getFullYear()}));default:return-1}}(),Se=function(e){De(e),le.current&&(e?le.current.classList.add("rmg-auto-scrolling"):le.current.classList.remove("rmg-auto-scrolling"))},Ue=function(e,t){if(re)try{var r=n(n({},t),{startDate:t.startDate instanceof Date?t.startDate:new Date(t.startDate),endDate:t.endDate instanceof Date?t.endDate:new Date(t.endDate)});ke((function(e){return e+1})),re(e,r)}catch(e){console.error("Error in handleTaskUpdate:",e)}},Ie=function(e,t){if(ae)try{ae(e,t)}catch(e){console.error("Error in handleTaskClick:",e)}},Le=function(e,t){if(ge((function(r){return t?o(o([],r,!0),[e.id],!1):r.filter((function(t){return t!==e.id}))})),ne)try{ne(e,t)}catch(e){console.error("Error in onTaskSelect handler:",e)}},Pe=function(e){switch(me(e),e){case exports.ViewMode.MINUTE:ve(30);break;case exports.ViewMode.HOUR:ve(40);break;case exports.ViewMode.DAY:ve(50);break;case exports.ViewMode.WEEK:ve(80);break;case exports.ViewMode.MONTH:ve(150);break;case exports.ViewMode.QUARTER:ve(180);break;case exports.ViewMode.YEAR:ve(200);break;default:ve(150)}ie&&ie(e)};r.useEffect((function(){Pe(L)}),[L]),r.useEffect((function(){if(ce.current){var e=Math.max(.1,Math.min(1,_||.25));ce.current.style.setProperty("--rmg-animation-speed",e.toString())}}),[_,ce.current]);var We={fontSize:se||"inherit"},Qe=H?"rmg-dark":"",Ke=function(e,t){return"".concat(t," ").concat(U[e]||"")},Be=!1!==Ye();return r.createElement("div",{ref:ce,className:"rmg-gantt-chart ".concat(Qe," ").concat(Ke("container","")),style:n(n({},We),{"--gantt-unit-width":"".concat(he,"px")}),"data-testid":"gantt-chart","data-rmg-component":"gantt-chart"},$?$({title:v,darkMode:H,viewMode:de,onViewModeChange:Pe,showViewModeSelector:Be}):r.createElement("div",{className:"rmg-header"},r.createElement("div",{className:"rmg-header-content"},r.createElement("h1",{className:Ke("title","rmg-title")},v),Be&&r.createElement("div",{className:"rmg-view-mode-wrapper"},Z?Z({activeMode:de,onChange:Pe,darkMode:H,availableModes:Ye()}):r.createElement(h,{activeMode:de,onChange:Pe,darkMode:H,availableModes:Ye()})))),r.createElement("div",{className:"rmg-container","data-rmg-component":"container"},G?G({tasks:i,headerLabel:A,onGroupClick:oe,viewMode:de}):r.createElement(M,{tasks:i,headerLabel:A,onGroupClick:oe,className:Ke("taskList","rmg-task-list"),viewMode:de}),r.createElement("div",{ref:le,className:"rmg-timeline-container ".concat(we?"rmg-auto-scrolling":""),"data-rmg-component":"timeline-container"},r.createElement("div",{className:"rmg-timeline-content","data-rmg-component":"timeline-content"},ee?ee({timeUnits:He,currentUnitIndex:Oe,viewMode:de,locale:O,unitWidth:he}):r.createElement(d,{months:He,currentMonthIndex:Oe,locale:O,className:Ke("timeline","rmg-timeline"),viewMode:de,unitWidth:he}),r.createElement("div",{className:"rmg-timeline-grid","data-rmg-component":"timeline-grid"},k&&Oe>=0&&r.createElement(m,{currentMonthIndex:Oe,height:i.reduce((function(e,t){if(!t||!Array.isArray(t.tasks))return e+60;var r=f.detectOverlaps(t.tasks,de);return e+Math.max(60,40*r.length+20)}),0),label:T,dayOfMonth:x.getDate(),className:Ke("todayMarker","rmg-today-marker"),viewMode:de,unitWidth:he}),i.map((function(e){return e&&e.id?r.createElement(w,{key:"task-row-".concat(e.id,"-").concat(Ee),taskGroup:e,startDate:ye,endDate:Te,totalMonths:Fe,monthWidth:he,editMode:N,showProgress:R,onTaskUpdate:Ue,onTaskClick:Ie,onTaskSelect:Le,onAutoScrollChange:Se,className:Ke("taskRow","rmg-task-row"),tooltipClassName:Ke("tooltip","rmg-tooltip"),viewMode:de,scrollContainerRef:le,smoothDragging:Q,movementThreshold:B,animationSpeed:_,renderTask:j,renderTooltip:J,getTaskColor:te}):null})))))))},x=function(e){return r.createElement(D,n({},e))};exports.CollisionService=f,exports.GanttChart=D,exports.GanttChartWithStyles=x,exports.TaskItem=v,exports.TaskList=M,exports.TaskRow=w,exports.TaskService=g,exports.Timeline=d,exports.TodayMarker=m,exports.Tooltip=p,exports.ViewModeSelector=h,exports.calculateDuration=function(e,t){var r;if(!(e instanceof Date&&t instanceof Date))return 0;e>t&&(e=(r=[t,e])[0],t=r[1]);var a=Math.abs(t.getTime()-e.getTime());return Math.ceil(a/864e5)},exports.calculateTaskPosition=function(e,t,r){if(!(e.startDate instanceof Date&&e.endDate instanceof Date))return{left:"0%",width:"10%"};var a=s(new Date(t.getFullYear(),t.getMonth(),1),new Date(r.getFullYear(),r.getMonth()+1,0)),n=a.length,o=e.startDate.getFullYear(),i=e.startDate.getMonth(),c=a.findIndex((function(e){return e.getFullYear()===o&&e.getMonth()===i})),l=c<0?0:c,u=e.endDate.getFullYear(),d=e.endDate.getMonth(),m=a.findIndex((function(e){return e.getFullYear()===u&&e.getMonth()===d})),f=((m<0?a.length-1:m)-l+1)/n*100;return{left:"".concat(l/n*100,"%"),width:"".concat(f,"%")}},exports.darkTheme={bgColor:"#1f2937",textColor:"#f3f4f6",borderColor:"#374151",highlightColor:"#374151",markerColor:"#ef4444",taskColor:"#4f46e5",taskTextColor:"#ffffff",tooltipBgColor:"#1f2937",tooltipTextColor:"#f3f4f6",tooltipBorderColor:"#374151",progressBgColor:"rgba(255, 255, 255, 0.3)",progressFillColor:"#d1d5db",shadowColor:"rgba(0, 0, 0, 0.3)",shadowHoverColor:"rgba(0, 0, 0, 0.4)",shadowDragColor:"rgba(0, 0, 0, 0.5)",scrollbarTrackColor:"rgba(55, 65, 81, 0.5)",scrollbarThumbColor:"rgba(75, 85, 99, 0.7)",scrollbarThumbHoverColor:"rgba(107, 114, 128, 0.8)"},exports.default=x,exports.defaultTheme={bgColor:"#ffffff",textColor:"#1f2937",borderColor:"#e5e7eb",highlightColor:"#eff6ff",markerColor:"#ef4444",taskColor:"#3b82f6",taskTextColor:"#ffffff",tooltipBgColor:"#ffffff",tooltipTextColor:"#1f2937",tooltipBorderColor:"#e5e7eb",progressBgColor:"rgba(0, 0, 0, 0.2)",progressFillColor:"#ffffff",shadowColor:"rgba(0, 0, 0, 0.1)",shadowHoverColor:"rgba(0, 0, 0, 0.2)",shadowDragColor:"rgba(0, 0, 0, 0.3)",scrollbarTrackColor:"rgba(229, 231, 235, 0.5)",scrollbarThumbColor:"rgba(156, 163, 175, 0.7)",scrollbarThumbHoverColor:"rgba(107, 114, 128, 0.8)"},exports.detectTaskOverlaps=function(e){if(!Array.isArray(e))return[];var t=e.filter((function(e){return e&&e.startDate instanceof Date&&e.endDate instanceof Date}));if(0===t.length)return[];var r=[];return t.forEach((function(e){for(var t=!1,a=0;a<r.length;a++){if(!r[a].some((function(t){return!(e.startDate>=t.endDate||e.endDate<=t.startDate)}))){r[a].push(e),t=!0;break}}t||r.push([e])})),r},exports.findEarliestDate=l,exports.findLatestDate=u,exports.formatDate=i,exports.formatDateRange=function(e,t,r){if(void 0===r&&(r="default"),!(e instanceof Date&&t instanceof Date))return"Invalid date range";var a=i(e,exports.DateDisplayFormat.SHORT_DATE,r),n=i(t,exports.DateDisplayFormat.SHORT_DATE,r);return"".concat(a," - ").concat(n)},exports.formatMonth=function(e,t){return void 0===t&&(t="default"),e.toLocaleString(t,{month:"short"})},exports.getDaysInMonth=function(e,t){return new Date(e,t+1,0).getDate()},exports.getDuration=c,exports.getMonthsBetween=s; //# sourceMappingURL=index.js.map