@art-tools/react-gantt 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +217 -209
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`react`),t=require(`react-dom`),n=require(`react/jsx-runtime`);var r=class{cache=new Map;capacity;constructor(e){this.capacity=e}refreshKey(e){if(!this.cache.has(e))return;let t=this.cache.get(e);this.cache.delete(e),this.cache.set(e,t)}get(e){if(this.cache.has(e))return this.refreshKey(e),this.cache.get(e)}put(e,t){if(this.refreshKey(e),this.cache.set(e,t),this.cache.size>this.capacity){let[e]=this.cache.keys();this.cache.delete(e)}}};function i(e,t){let n=new r(t);return t=>{let r=n.get(t);if(r!=null)return r;let i=e(t);return n.put(t,i),i}}function a(e,t){return i(e,t)}var o=6e4,s=36e5,c=864e5,l={minute:o,hour:s,day:c,week:c*7};function u(e,t,n){let r=e.getFullYear(),i=e.getMonth(),a=e.getDate();switch(t){case`minute`:{let t=new Date(e);t.setSeconds(0,0);let r=Math.round(t.getTime()/o);return`mi-${Math.floor(r/n)}`}case`hour`:{let t=new Date(e);t.setMinutes(0,0,0);let r=Math.round(t.getTime()/s);return`h-${Math.floor(r/n)}`}case`day`:{let e=Math.floor(Date.UTC(r,i,a)/c);return`d-${Math.floor(e/n)}`}case`week`:{let e=new Date(r,i,a),t=e.getDay(),o=t===0?-6:1-t;e.setDate(e.getDate()+o);let s=Math.floor(e.getTime()/(c*7));return`w-${Math.floor(s/n)}`}case`month`:{let e=r*12+i;return`mo-${Math.floor(e/n)}`}case`quarter`:{let e=r*4+Math.floor(i/3);return`q-${Math.floor(e/n)}`}case`year`:return`y-${Math.floor(r/n)}`;default:throw Error(`Unsupported unit: ${t}`)}}function d(e){let t=e.getDay();return t===0||t===6}function f(e){return Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())/c}function p(e){let t=new Date(e*c);return new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())}function m(e,t){let n=new Date(e);return n.setHours(0,0,0,0),new Date(n.getTime()+t*c)}function h(e,t){let n=new Date(e);switch(t){case`minute`:return n.setSeconds(0,0),n;case`hour`:return n.setMinutes(0,0,0),n;case`day`:return n.setHours(0,0,0,0),n;case`week`:{n.setHours(0,0,0,0);let e=n.getDay(),t=e===0?-6:1-e;return n.setDate(n.getDate()+t),n}case`month`:return n.setHours(0,0,0,0),n.setDate(1),n;case`quarter`:return n.setHours(0,0,0,0),n.setMonth(Math.floor(n.getMonth()/3)*3,1),n;case`year`:return n.setHours(0,0,0,0),n.setMonth(0,1),n;default:throw Error(`Unsupported unit: ${t}`)}}function g(e,t,n){let r=l[t];if(r!==void 0)return t===`day`||t===`week`?m(e,r/c*n):new Date(e.getTime()+n*r);let i=new Date(e);switch(t){case`month`:return i.setMonth(i.getMonth()+n),i;case`quarter`:return i.setMonth(i.getMonth()+n*3),i;case`year`:return i.setFullYear(i.getFullYear()+n),i;default:throw Error(`Unsupported unit: ${t}`)}}function _(e,t,n){let r=l[n];if(r!==void 0)return(t.getTime()-e.getTime())/r;let i=n===`month`?1:n===`quarter`?3:12,a=e.getFullYear()*12+e.getMonth(),o=t.getFullYear()*12+t.getMonth(),s=Math.floor((o-a)/i);for(;g(e,n,s).getTime()>t.getTime();)--s;for(;g(e,n,s+1).getTime()<=t.getTime();)s+=1;let c=g(e,n,s).getTime(),u=g(e,n,s+1).getTime();return s+(t.getTime()-c)/(u-c)}function v(e,t,n){let r=l[t];if(r!==void 0)return new Date(e.getTime()+n*r);let i=Math.floor(n),a=n-i,o=g(e,t,i).getTime(),s=g(e,t,i+1).getTime();return new Date(o+a*(s-o))}function y(e,t,n=`day`,r=1){return Array.from({length:t},(t,i)=>g(e,n,i*r))}function b(e){let t=e[0];if(!t)return null;let n=t.startDate,r=t.endDate??t.startDate;for(let t of e){t.startDate<n&&(n=t.startDate);let e=t.endDate??t.startDate;e>r&&(r=e)}return{min:n,max:r}}var x=a(b,3),S=1440,C=6e4,w=[0,S],T=/^\s*(\d{1,2}):(\d{2})\s*-\s*(\d{1,2}):(\d{2})\s*$/;function E(e){let t=T.exec(e);if(!t)throw Error(`Invalid working-hours range ${JSON.stringify(e)}: expected "H:MM-H:MM", e.g. "8:30-12:00".`);let n=Number(t[1])*60+Number(t[2]),r=Number(t[3])*60+Number(t[4]);if(n<0||n>=1440)throw Error(`Invalid working-hours range ${JSON.stringify(e)}: start must be within the day.`);if(r<=n||r>1440)throw Error(`Invalid working-hours range ${JSON.stringify(e)}: end must be after start and no later than 24:00.`);return[n,r]}function D(e){if(e===void 0)return w;if(e===!1)return[];let t=e.map(E).toSorted((e,t)=>e[0]-t[0]),n=[];for(let[e,r]of t){let t=n.length>0?n[n.length-1]:void 0;if(t!==void 0&&e<=t){r>t&&(n[n.length-1]=r);continue}n.push(e,r)}return n}function O(e,t){let n=[],r=0;for(let t=0;t<e.length;t+=2)n.push(r),r+=e[t+1]-e[t];return{intervals:e,prefix:n,totalMinutes:r,id:t}}function ee(){let e=new Map;return t=>{let n=t.join(`,`),r=e.get(n);if(r)return r;let i=O(t,e.size);return e.set(n,i),i}}function k(e){return e===void 0?`*`:e===!1?`-`:e.join(`,`)}function te(e){if(!e)return``;let t=[k(e.hours)];for(let n=0;n<7;n++){let r=e.days?.[n];r!==void 0&&t.push(`${n}=${k(r)}`)}let n=e.dates;if(n)for(let e of Object.keys(n).toSorted())t.push(`${e}=${k(n[e])}`);return t.join(`|`)}var A=/^(\d{4})-(\d{2})-(\d{2})$/;function j(e){let t=A.exec(e);if(!t)throw Error(`Invalid calendar date key ${JSON.stringify(e)}: expected a local civil date, "YYYY-MM-DD".`);return f(new Date(Number(t[1]),Number(t[2])-1,Number(t[3])))}function M(e,t){let n=ee(),r=D(e.hours),i=[];for(let t=0;t<7;t++){let a=e.days?.[t];i.push(n(a===void 0?r:D(a)))}let a=new Map;if(e.dates)for(let[t,r]of Object.entries(e.dates))a.set(j(t),n(D(r)));let o=[...a.keys()].toSorted((e,t)=>e-t),s=0,c=!0,l=a.size===0;for(let e of i)s+=e.totalMinutes,e.totalMinutes!==0&&e.totalMinutes!==1440&&(c=!1),e.totalMinutes!==1440&&(l=!1);for(let e of a.values())e.totalMinutes!==0&&e.totalMinutes!==1440&&(c=!1);let u=0;for(let e of i)e.totalMinutes>u&&(u=e.totalMinutes);return{key:t,byWeekday:i,byDate:a,overrideDays:o,isAlwaysWorking:l,isDayGranular:c,weekMinutes:s,msPerWorkingDay:u*C}}function N(e,t){return e.byDate.get(t)||e.byWeekday[((t+4)%7+7)%7]}function P(e,t){let n=e.overrideDays,r=0,i=n.length;for(;r<i;){let e=r+i>>1;n[e]<t?r=e+1:i=e}return r<n.length?n[r]:1/0}function F(e,t){let n=e.overrideDays,r=0,i=n.length;for(;r<i;){let e=r+i>>1;n[e]<=t?r=e+1:i=e}return r>0?n[r-1]:-1/0}function ne(t){let n=(0,e.useRef)(null),r=te(t);return(!n.current||n.current.key!==r)&&(n.current={key:r,value:t?M(t,r):null}),n.current.value}var I=36e5,L=864e5,R=2e4;function z(e){return(e.getHours()*I+e.getMinutes()*C+e.getSeconds()*1e3+e.getMilliseconds())/C}function B(e,t){let n=p(e);return new Date(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0,Math.round(t*C))}function re(e,t){let{intervals:n,prefix:r}=e;for(let e=0,i=0;e<n.length;e+=2,i++){let a=n[e],o=n[e+1];if(t<=a)return r[i];if(t<o)return r[i]+(t-a)}return e.totalMinutes}function ie(e,t){let{intervals:n,prefix:r}=e,i=n.length>0?n[0]:0;for(let e=0,a=0;e<n.length&&!(r[a]>=t);e+=2,a++)i=n[e]+(t-r[a]);return i}function ae(e,t){let{intervals:n,prefix:r}=e;for(let e=0,i=0;e<n.length;e+=2,i++){let a=n[e+1]-n[e];if(t<r[i]+a)return n[e]+(t-r[i])}return n.length>0?n[n.length-1]:0}function oe(e,t){let{intervals:n}=e;for(let e=0;e<n.length;e+=2)if(t<n[e+1])return Math.max(t,n[e]);return null}function se(e,t){let{intervals:n}=e,r=null;for(let e=0;e<n.length;e+=2)t>n[e]&&(r=Math.min(t,n[e+1]));return r}function ce(e,t){if(!e||e.isAlwaysWorking)return!0;let n=N(e,f(t)),r=z(t),{intervals:i}=n;for(let e=0;e<i.length;e+=2)if(r>=i[e]&&r<i[e+1])return!0;return!1}function V(e,t,n){if(!e||e.isAlwaysWorking||e.weekMinutes===0&&e.byDate.size===0)return t;let r=f(t),i=z(t);for(let a=0;a<R;a++){let a=N(e,r);if(n===1){let e=oe(a,i);if(e!==null)return e===i&&r===f(t)?t:B(r,e);r+=1,i=0;continue}let o=se(a,i);if(o!==null)return o===i&&r===f(t)?t:B(r,o);--r,i=S}return t}function le(e,t){if(!e||e.isAlwaysWorking||ce(e,t))return t;let n=V(e,t,1),r=V(e,t,-1);return n.getTime()-t.getTime()<=t.getTime()-r.getTime()?n:r}function ue(e,t,n){let r=f(t),i=z(t),a=n;for(let t=0;t<R;t++){let t=N(e,r),n=re(t,i),o=t.totalMinutes-n;if(a<=o)return B(r,ie(t,n+a));if(a-=o,r+=1,i=0,e.weekMinutes>0&&a>e.weekMinutes){let t=P(e,r),n=t===1/0?1/0:Math.floor((t-r)/7),i=Math.ceil(a/e.weekMinutes)-1,o=Math.min(n,i);o>0&&Number.isFinite(o)&&(r+=o*7,a-=o*e.weekMinutes)}}return B(r,i)}function de(e,t,n){let r=f(t),i=z(t),a=n;for(let t=0;t<R;t++){let t=N(e,r),n=re(t,i);if(a<=n)return B(r,ae(t,n-a));if(a-=n,--r,i=S,e.weekMinutes>0&&a>e.weekMinutes){let t=F(e,r),n=t===-1/0?1/0:Math.floor((r-t)/7),i=Math.ceil(a/e.weekMinutes)-1,o=Math.min(n,i);o>0&&Number.isFinite(o)&&(r-=o*7,a-=o*e.weekMinutes)}}return B(r,i)}function H(e,t,n,r){if(!e)return new Date(t.getTime()+n);let i=V(e,t,r??(n<0?-1:1));return n===0||e.weekMinutes===0&&e.byDate.size===0?i:n>0?ue(e,i,n/C):de(e,i,-n/C)}function fe(e,t,n){if(!e)return n.getTime()-t.getTime();if(n.getTime()<t.getTime())return-fe(e,n,t);let r=f(n),i=f(t),a=z(t),o=0;for(;i<r;){if(a===0&&e.weekMinutes>0){let t=P(e,i),n=Math.floor((Math.min(r,t)-i)/7);if(n>0){o+=n*e.weekMinutes,i+=n*7;continue}}let t=N(e,i);o+=t.totalMinutes-re(t,a),i+=1,a=0}let s=N(e,i);return o+=re(s,z(n))-re(s,a),o*C}var pe={isNonWorking:!1};function U(e,t,n){if(!e){let e=t.getDay();return e===0||e===6?{isNonWorking:!0,reason:`weekend`}:pe}if(fe(e,t,n)>0)return pe;let r=f(t);return e.byDate.has(r)?{isNonWorking:!0,reason:`holiday`}:N(e,r).totalMinutes===0?{isNonWorking:!0,reason:`weekend`}:{isNonWorking:!0,reason:`offHours`}}function W(e,t){return t===`minute`?C:t===`hour`?I:!e||e.msPerWorkingDay===0?L:e.msPerWorkingDay}function me(e,t,n,r,i){return H(e,t,n*W(e,r),i)}var G={calendar:null,durationUnit:`day`,snapToWorking:!0};function K(e,t){return e.type===`milestone`||e.duration===0?e.startDate:e.endDate?e.endDate:e.duration===void 0?e.startDate:me(t.calendar,e.startDate,e.duration,t.durationUnit,1)}function he(e,t){return t.getTime()<=e.getTime()?h(e,`day`):h(new Date(t.getTime()-1),`day`)}function ge(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+1)}function _e(e,t){let n=K(e,t);if(!(n.getTime()<=e.startDate.getTime()))return he(e.startDate,n)}function ve(e,t){return fe(t.calendar,e.startDate,K(e,t))/W(t.calendar,t.durationUnit)}var ye={gantt:`Gantt chart`,taskList:`Task list`,timeline:`Timeline`,expand:`Expand`,collapse:`Collapse`,resizeTaskList:`Resize task list`,deleteDependency:`Delete dependency`,editTask:e=>`Edit ${e.name}`,addTaskAfter:e=>`Add task after ${e.name}`,deleteTask:e=>`Delete ${e.name}`,bar:(e,{progress:t})=>Ce(e,t)};function be(e){return e?{...ye,...e}:ye}function xe(e){return e.toLocaleDateString(void 0,{dateStyle:`medium`})}var Se={task:`task`,milestone:`milestone`,summary:`summary`};function Ce(e,t){let n=Se[e.type??`task`],r=[e.name,n];return e.endDate&&e.endDate.getTime()!==e.startDate.getTime()?r.push(`${xe(e.startDate)} to ${xe(e.endDate)}`):r.push(xe(e.startDate)),e.type!==`milestone`&&r.push(`${Math.round(t)}% complete`),r.join(`, `)}function we(e,t,n){switch(t){case`minute`:case`hour`:return e.toLocaleString(void 0,{dateStyle:`long`,timeStyle:`short`});case`day`:return e.toLocaleDateString(void 0,{dateStyle:`long`});case`week`:return`Week of ${e.toLocaleDateString(void 0,{dateStyle:`long`})}`;case`month`:return e.toLocaleDateString(void 0,{month:`long`,year:`numeric`});case`quarter`:return`Q${Math.floor(e.getMonth()/3)+1} ${e.getFullYear()}`;case`year`:return n>1?`${e.getFullYear()} to ${e.getFullYear()+n-1}`:String(e.getFullYear())}}function Te(e,t=G){let n=Ie(e.values()),r=n.get(null)??[],i=[];for(let e of r)Ne(e,n,i,t);return i}function Ee(e){let t=new Map;for(let n of e)t.set(n.id,n);return t}function De(e,t){return Oe(new Map(e),t)}function Oe(e,t){for(let n of t)switch(n.type){case`update`:e.has(n.task.id)&&e.set(n.task.id,n.task);break;case`delete`:e.delete(n.id);break;case`create`:e=ke(e,n.task,n.afterId);break}return e}function ke(e,t,n){if(n==null)return e.set(t.id,t),e;let r=new Map;e.has(n)||r.set(t.id,t);for(let[i,a]of e)r.set(i,a),i===n&&r.set(t.id,t);return r}var Ae=32;function je(){return{seedTasks:null,snapshots:new r(Ae)}}function Me(e,t,n){e.seedTasks!==t&&(e.seedTasks=t,e.snapshots=new r(Ae));let i=0,a=null;for(let t=n.cursor;t>=1;t--){let r=e.snapshots.get(t);if(r&&r.producedBy===n.transactions[t-1]){i=t,a=r.map;break}}if(!a){let n=e.snapshots.get(0);a=n?n.map:Ee(t),n||e.snapshots.put(0,{producedBy:null,map:a})}for(let t=i;t<n.cursor;t++){let r=n.transactions[t];a=De(a,r),e.snapshots.put(t+1,{producedBy:r,map:a})}return a}function Ne(e,t,n,r){let i=t.get(e.id);if(!i||i.length===0){let t=Pe(e,r);return n.push(t),t}let a=n.length;n.push(e);let o=[];for(let e of i)o.push(Ne(e,t,n,r));let s=Fe(e,o,r);return n[a]=s,s}function Pe(e,t){let n=K(e,t);return e.endDate&&e.endDate.getTime()===n.getTime()||!e.endDate&&n===e.startDate?e:{...e,endDate:n}}function Fe(e,t,n=G){if(e.type!==`summary`||t.length===0)return Pe(e,n);let r=t[0].startDate,i=K(t[0],n),a=0,o=0;for(let e of t){e.startDate<r&&(r=e.startDate);let t=K(e,n);t>i&&(i=t),e.type!==`milestone`&&(o++,a+=e.progress??0)}let s=o===0?0:Math.round(a/o);return{...e,startDate:r,endDate:i,progress:s}}function Ie(e){let t=new Map;for(let n of e){let e=n.parentId??null,r=t.get(e)??[];r.push(n),t.set(e,r)}return t}var Le=class{items=[];head=0;constructor(e){e&&this.items.push(...e)}get size(){return this.items.length-this.head}isEmpty(){return this.size===0}enqueue(e){this.items.push(e)}dequeue(){if(this.head>=this.items.length)return;let e=this.items[this.head];return this.head++,this.head>this.items.length>>1&&(this.items=this.items.slice(this.head),this.head=0),e}};function Re(e,t){return{start:e.startDate,end:K(e,t)}}function ze(e,t){let{start:n,end:r}=Re(e,t);return fe(t.calendar,n,r)}function Be(e,t,n,r,i){let a=i.calendar;switch(t){case`FS`:return H(a,e.end,n,1);case`SS`:return H(a,e.start,n,1);case`FF`:return H(a,H(a,e.end,n,-1),-r,-1);case`SF`:return H(a,H(a,e.start,n,-1),-r,-1)}}function Ve(e){let t=new Map,n=new Map;for(let r of e){let e=t.get(r.from);e?e.push(r.to):t.set(r.from,[r.to]);let i=n.get(r.to);i?i.push(r):n.set(r.to,[r])}return{successorsOf:t,predecessorDeps:n,size:e.length}}function He(e){let t=new Map;return{get:n=>t.get(n)??e.get(n),set:(e,n)=>{t.set(e,n)},get size(){return e.size}}}function Ue(e,t,n,r){let i=ze(e,r),a=W(r.calendar,r.durationUnit),o=null;for(let s of t.get(e.id)??[]){let e=n.get(s.from);if(!e)continue;let t=Be(Re(e,r),s.type,(s.lag??0)*a,i,r);(o===null||t>o)&&(o=t)}return o===null?null:V(r.calendar,o,1)}function We(e,t,n){return e.type===`milestone`?{...e,startDate:t,endDate:t}:{...e,startDate:t,endDate:H(n.calendar,t,ze(e,n),1)}}function Ge(e,t,n){let r=n.calendar,i=n.snapToWorking,a=Re(e,n);if(e.type===`milestone`){let e=t.kind===`resizeEnd`?t.endDate:t.startDate,n=i?le(r,e):e;return{startDate:n,endDate:n}}if(t.kind===`move`){let e=fe(r,a.start,a.end),n=i?V(r,t.startDate,1):t.startDate;return{startDate:n,endDate:H(r,n,e,1)}}let o=t.kind===`resizeStart`?t.startDate:a.start,s=t.kind===`resizeEnd`?t.endDate:a.end,c=i?V(r,o,1):o,l=i?V(r,s,-1):s;if(fe(r,c,l)<=0){let e=W(r,n.durationUnit);return t.kind===`resizeStart`?{startDate:H(r,l,-e,-1),endDate:l}:{startDate:c,endDate:H(r,c,e,1)}}return{startDate:c,endDate:l}}function Ke(e,t,n,r=G){let{successorsOf:i,predecessorDeps:a}=t,o=new Map,s=e.get(n);if(s){let t=Ue(s,a,e,r);if(t!==null&&t.getTime()>s.startDate.getTime()){let i=We(s,t,r);e.set(n,i),o.set(n,i)}}let c=new Le([n]),l=(t.size+1)*(e.size+1),u=0;for(;!c.isEmpty()&&!(u++>l);){let t=c.dequeue();for(let n of i.get(t)??[]){let t=e.get(n);if(!t)continue;let i=Ue(t,a,e,r);if(i===null||i.getTime()<=t.startDate.getTime())continue;let s=We(t,i,r);e.set(n,s),o.set(n,s),c.enqueue(n)}}return o}var qe={transactions:[],cursor:0},Je=[];function Ye(t){(0,e.startTransition)(t)}function Xe(e,t){let n=e.transactions.slice(0,e.cursor);return{transactions:[...n,t],cursor:n.length+1}}function Ze(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function Qe(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);for(let r of n)if(!Ze(e[r],t[r]))return!1;return!0}var $e=(n,r=Je,i={},a=G)=>{let o=(0,e.useRef)(i);o.current=i;let s=(0,e.useRef)(a);s.current=a;let[c,l]=(0,e.useState)(qe),u=(0,e.useMemo)(()=>Ve(r),[r]),d=(0,e.useRef)(null),f=(0,e.useMemo)(()=>(d.current??=je(),Me(d.current,n,c)),[n,c]),p=(0,e.useRef)(f);p.current=f;let m=(0,e.useMemo)(()=>Te(f,a),[f,a]),h=(0,e.useCallback)((e,t)=>{let n=p.current.get(e);if(!n)return;let{startDate:r,endDate:i}=Ge(n,t,s.current),a={...n,startDate:r,endDate:i};if(Qe(a,n))return;let o=[{type:`update`,task:a}];if(u.size>0){let t=He(p.current);t.set(e,a);let n=Ke(t,u,e,s.current);for(let e of n.values())o.push({type:`update`,task:e})}Ye(()=>l(e=>Xe(e,o)))},[u]),g=(0,e.useCallback)((e,t)=>{let n=p.current.get(e);if(!n)return;let r={...n};if(t.name!==void 0&&(r.name=t.name),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),t.progress!==void 0&&(r.progress=t.progress),Qe(r,n))return;let i=[{type:`update`,task:r}];if((t.startDate!==void 0||t.endDate!==void 0)&&u.size>0){let t=He(p.current);t.set(e,r);let n=Ke(t,u,e,s.current);for(let e of n.values())i.push({type:`update`,task:e})}Ye(()=>l(e=>Xe(e,i)))},[u]),_=(0,e.useCallback)((e,n)=>{(0,t.flushSync)(()=>{l(t=>Xe(t,[{type:`create`,task:e,afterId:n}]))}),o.current.onTaskCreate?.(e,n)},[]),v=(0,e.useCallback)(e=>{Ye(()=>l(t=>Xe(t,[{type:`delete`,id:e}]))),o.current.onTaskDelete?.(e)},[]),y=(0,e.useCallback)(()=>{Ye(()=>l(e=>e.cursor>0?{...e,cursor:e.cursor-1}:e))},[]),b=(0,e.useCallback)(()=>{Ye(()=>l(e=>e.cursor<e.transactions.length?{...e,cursor:e.cursor+1}:e))},[]),x=c.cursor>0,S=c.cursor<c.transactions.length,C=(0,e.useRef)(m);C.current=m;let w=(0,e.useRef)(c);return(0,e.useEffect)(()=>{w.current!==c&&(w.current=c,o.current.onTasksChange?.(C.current))},[c]),{tasksList:m,updateTask:g,commitTask:h,createTask:_,deleteTask:v,undo:y,redo:b,canUndo:x,canRedo:S}};function q(t){let n=(0,e.useRef)(t);return n.current=t,n}function et(t){let n=(0,e.useMemo)(()=>{let e=new Set;for(let n of t)n.parentId!=null&&e.add(n.parentId);return e},[t]),[r,i]=(0,e.useState)(new Set),a=(0,e.useCallback)(e=>{i(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),o=q(t),s=(0,e.useCallback)(e=>{i(t=>{if(t.size===0)return t;let n=new Map;for(let e of o.current)n.set(e.id,e);let r=new Set(t),i=!1,a=n.get(e);for(;a&&a.parentId!=null;)r.delete(a.parentId)&&(i=!0),a=n.get(a.parentId);return i?r:t})},[o]),c=(0,e.useMemo)(()=>{let e=new Set;for(let t of n)r.has(t)||e.add(t);return e},[n,r]);return{visibleTasks:(0,e.useMemo)(()=>{if(r.size===0)return t;let e=new Set,n=[];for(let i of t){if(i.parentId!=null&&(e.has(i.parentId)||r.has(i.parentId))){e.add(i.id);continue}n.push(i)}return n},[t,r]),expandedIds:c,parentIds:n,toggleExpand:a,revealAncestors:s}}var tt=typeof window<`u`?e.useLayoutEffect:e.useEffect,nt={scrollTop:0,scrollLeft:0,clientWidth:0,clientHeight:0};function rt(e){return{scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,clientWidth:e.clientWidth,clientHeight:e.clientHeight}}function it(e,t,n){return e.scrollTop!==t.scrollTop||e.clientHeight!==t.clientHeight?!1:n?e.scrollLeft===t.scrollLeft&&e.clientWidth===t.clientWidth:!0}function at(t,{trackHorizontal:n=!0}={}){let r=(0,e.useRef)(null),i=q(n),[a,o]=(0,e.useState)(nt),s=(0,e.useCallback)(()=>{r.current===null&&(r.current=requestAnimationFrame(()=>{r.current=null;let e=t.current;if(!e)return;let n=rt(e);o(e=>it(e,n,i.current)?e:n)}))},[t,i]);return tt(()=>{let e=t.current;e&&o(t=>{let n=rt(e);return it(t,n,i.current)?t:n})},[t]),(0,e.useEffect)(()=>{let e=t.current;if(!e||typeof ResizeObserver>`u`)return;let n=new ResizeObserver(s);return n.observe(e),()=>{n.disconnect(),r.current!==null&&(cancelAnimationFrame(r.current),r.current=null)}},[s,t]),{viewport:a,scheduleMeasure:s}}function ot(){let t=(0,e.useRef)(null),n=(0,e.useRef)(null),r=(0,e.useRef)(!1),{viewport:i,scheduleMeasure:a}=at(n);return{taskListRef:t,gridRef:n,onTaskListScroll:(0,e.useCallback)(()=>{r.current||!t.current||!n.current||(r.current=!0,n.current.scrollTop=t.current.scrollTop,r.current=!1,a())},[a]),onGridScroll:(0,e.useCallback)(()=>{n.current&&t.current&&!r.current&&(r.current=!0,t.current.scrollTop=n.current.scrollTop,r.current=!1),a()},[a]),viewport:i}}function st(t){let n=(0,e.useRef)(t);n.current=t;let r=(0,e.useCallback)((...e)=>n.current?.(...e),[]);if(t)return r}function ct(e,t,n,r,i=0){let a=n+r;return e-i<n?Math.max(0,e-i):e+t+i>a?e+t+i-r:n}function lt(e,t={},n,r,i=`day`){let a=t.startDate??e.startDate,o=t.endDate??e.endDate??a,s=_(n,a,i),c=_(n,o,i);return{left:s*r,width:(c-s)*r,progress:t.progress??e.progress??0}}function ut(e,t,n,r=`day`){return v(t,r,e/n)}var dt=[{unit:`month`,step:1,format:e=>e.toLocaleString(void 0,{month:`long`,year:`numeric`})},{unit:`day`,step:1,format:e=>String(e.getDate())}];function ft(e){return(e??dt).at(-1)?.unit??`day`}function pt(e){return(e??dt).at(-1)?.step??1}function mt(e,t,n){let r=x(e);return r?ht(r.min,ft(t),n,pt(t)):null}function ht(e,t,n,r){return h(g(h(e,t),t,-n*r),t)}function gt(e,t=0,n){let r=x(e);if(!r)return[];let i=ft(n),a=pt(n),o=ht(r.min,i,t,a),s=g(h(r.max,i),i,t*a);return y(o,Math.round(_(o,s,i)/a)+1,i,a)}function _t({taskListRef:t,gridRef:n,tasksList:r,visibleTasks:i,rowHeight:a,colWidth:o,scales:s,padDays:c,revealAncestors:l}){let u=q(r),d=q(i),f=(0,e.useRef)(()=>{}),p=(0,e.useRef)(null),m=e=>{let r=t.current??n.current;if(!r)return;let i=ct(e*a,a,r.scrollTop,r.clientHeight,a);i!==r.scrollTop&&(r.scrollTop=i)},h=e=>{let t=n.current,r=mt(d.current,s,c);if(!t||!r)return;let{left:i,width:a}=lt(e,{},r,o,ft(s)),l=ct(i,a,t.scrollLeft,t.clientWidth,o);l!==t.scrollLeft&&(t.scrollLeft=l)};return f.current=(e,t)=>{let{vertical:n=!0,horizontal:r=!1}=t??{},i=d.current.findIndex(t=>t.id===e);if(i<0){if(!u.current.some(t=>t.id===e))return;p.current={id:e,options:t},l(e);return}n&&m(i),r&&h(d.current[i])},(0,e.useLayoutEffect)(()=>{let e=p.current;e&&(p.current=null,f.current(e.id,e.options))},[i]),(0,e.useCallback)((e,t)=>f.current(e,t),[])}function vt({gridRef:t,visibleTasks:n,padDays:r,levels:i,initialIndex:a}){let o=(0,e.useCallback)(e=>Math.max(0,Math.min(i.length-1,e)),[i.length]),[s,c]=(0,e.useState)(()=>o(a)),l=q(s),u=q(n),d=q(r),f=q(i),p=(0,e.useRef)(null),m=(0,e.useCallback)((e,n)=>{let r=l.current,i=o(r+n);if(i===r)return;let a=t.current,s=f.current[r],m=mt(u.current,s.scales,d.current);a&&m?p.current={date:v(m,ft(s.scales),e/s.colWidth),viewportOffset:e-a.scrollLeft}:p.current=null,c(i)},[o,t,l,u,d,f]),h=(0,e.useCallback)(()=>{let e=t.current;return e?e.scrollLeft+e.clientWidth/2:0},[t]),g=(0,e.useCallback)(()=>m(h(),1),[m,h]),y=(0,e.useCallback)(()=>m(h(),-1),[m,h]),b=(0,e.useCallback)(e=>m(h(),o(e)-l.current),[m,h,o,l]);return(0,e.useLayoutEffect)(()=>{let e=p.current;if(e===null)return;p.current=null;let n=t.current,r=f.current[s],i=mt(u.current,r.scales,d.current);if(!n||!i)return;let a=ft(r.scales),o=_(i,e.date,a)*r.colWidth;n.scrollLeft=Math.max(0,o-e.viewportOffset)},[s]),{index:s,level:i[s],count:i.length,canZoomIn:s<i.length-1,canZoomOut:s>0,zoomIn:g,zoomOut:y,setZoom:b,zoomAt:m}}var yt=e=>String(e).padStart(2,`0`),bt=e=>String(e.getFullYear()),xt=e=>`Q${Math.floor(e.getMonth()/3)+1}`,St=e=>e.toLocaleString(void 0,{month:`long`,year:`numeric`}),Ct=e=>e.toLocaleString(void 0,{month:`short`}),wt=e=>String(e.getDate()),Tt=e=>e.toLocaleString(void 0,{weekday:`short`,day:`numeric`}),Et=[{colWidth:56,scales:[{unit:`year`,step:1,format:bt},{unit:`quarter`,step:1,format:xt}]},{colWidth:44,scales:[{unit:`year`,step:1,format:bt},{unit:`month`,step:1,format:Ct}]},{colWidth:60,scales:[{unit:`month`,step:1,format:St},{unit:`week`,step:1,format:Tt}]},{colWidth:40,scales:[{unit:`month`,step:1,format:St},{unit:`day`,step:1,format:wt}]},{colWidth:44,scales:[{unit:`day`,step:1,format:Tt},{unit:`hour`,step:1,format:e=>`${yt(e.getHours())}:00`}]}],Dt=3;function Ot(e,t,n){return e&&e.length>0?e:!t&&n===void 0?Et:Et.map((e,r)=>r===3?{scales:t??e.scales,colWidth:n??e.colWidth}:e)}var kt={end:{start:`FS`,end:`FF`},start:{start:`SS`,end:`SF`}};function At({gridBodyRef:t,onDependencyCreate:n}){let r=q(n),[i,a]=(0,e.useState)(null),o=q(i),s=(0,e.useRef)(null),c=(0,e.useRef)(null),l=(0,e.useRef)(null),u=(0,e.useCallback)(()=>{s.current&&=(window.removeEventListener(`mousemove`,s.current.move),window.removeEventListener(`mouseup`,s.current.up),null),c.current!==null&&(cancelAnimationFrame(c.current),c.current=null)},[]);return(0,e.useEffect)(()=>u,[u]),{drag:i,startDrag:(0,e.useCallback)(e=>{a(e);let n=e=>{l.current={x:e.clientX,y:e.clientY},c.current===null&&(c.current=requestAnimationFrame(()=>{c.current=null;let e=t.current,n=l.current;if(!e||!n)return;let r=e.getBoundingClientRect();a(e=>e?{...e,currentX:n.x-r.left,currentY:n.y-r.top}:null)}))},r=()=>{a(null),u()};s.current={move:n,up:r},window.addEventListener(`mousemove`,n),window.addEventListener(`mouseup`,r)},[u,t]),endDrag:(0,e.useCallback)((e,t)=>{let n=o.current;if(n&&e!==null&&t&&e!==n.fromTaskId){let i=kt[n.handle][t];r.current?.({from:n.fromTaskId,to:e,type:i})}a(null),u()},[u,o,r])}}function jt(t){let{createTask:n,updateTask:r,deleteTask:i,undo:a,redo:o,revealTask:s,zoomIn:c,zoomOut:l,setZoom:u}=t;return(0,e.useMemo)(()=>({createTask:n,updateTask:r,deleteTask:i,undo:a,redo:o,revealTask:s,zoomIn:c,zoomOut:l,setZoom:u}),[n,r,i,a,o,s,c,l,u])}function Mt({handle:t,readOnly:n,labels:r,schedulingContext:i,onTaskEditRef:a}){return(0,e.useMemo)(()=>({...t,editTask:e=>a.current?.(e),readOnly:n,labels:r,format:{endDate:e=>_e(e,i),duration:e=>ve(e,i)}}),[t,a,n,r,i])}var Nt=(0,e.createContext)(null);function Pt(){let t=(0,e.useContext)(Nt);if(!t)throw Error(`useGanttConfig must be used within a <GanttProvider>`);return t}var Ft=(0,e.createContext)(ye);function It(){return(0,e.useContext)(Ft)}var Lt=(0,e.createContext)(G);function Rt(){return(0,e.useContext)(Lt)}var zt=(0,e.createContext)(!1);function Bt(){return(0,e.useContext)(zt)}var Vt=(0,e.createContext)(null);function Ht(){let t=(0,e.useContext)(Vt);if(!t)throw Error(`useGanttTaskState must be used within a <GanttProvider>`);return t}var Ut=(0,e.createContext)(null);function Wt(){let t=(0,e.useContext)(Ut);if(!t)throw Error(`useGanttTaskActions must be used within a <GanttProvider>`);return t}var Gt=(0,e.createContext)(null);function Kt(){return(0,e.useContext)(Gt)}var qt=(0,e.createContext)(null);function Jt(){let t=(0,e.useContext)(qt);if(!t)throw Error(`useGanttScroll must be used within a <GanttProvider>`);return t}var Yt=(0,e.createContext)(null);function Xt(){let t=(0,e.useContext)(Yt);if(!t)throw Error(`useGanttViewport must be used within a <GanttProvider>`);return t}var Zt=(0,e.createContext)(null);function Qt(){let t=(0,e.useContext)(Zt);if(!t)throw Error(`useGanttDependency must be used within a <GanttProvider>`);return t}var $t=(0,e.createContext)(!1);function en(){return(0,e.useContext)($t)}var tn=(0,e.createContext)(null);function nn(){return(0,e.useContext)(tn)}var rn=(0,e.createContext)(null);function an(){let t=(0,e.useContext)(rn);if(!t)throw Error(`useGanttZoom must be used within a <GanttProvider>`);return t}function on({tasks:t,rowHeight:r=36,colWidth:i,height:a,scales:o,padDays:s=1,zoomLevels:c,defaultZoomIndex:l,onZoomChange:u,zoomWheel:d=!1,zoomKeyboard:f=!1,dependencies:p=Je,onTaskClick:m,onDependencyCreate:h,onDependencyDelete:g,onTaskCreate:_,onTaskDelete:v,onTaskEdit:y,onTasksChange:b,apiRef:x,labels:S,calendar:C,snapToWorking:w=!0,durationUnit:T=`day`,readOnly:E=!1,children:D}){let[O,ee]=(0,e.useState)(null),k=(0,e.useMemo)(()=>be(S),[S]),te=ne(C),A=(0,e.useMemo)(()=>({calendar:te,durationUnit:T,snapToWorking:w}),[te,T,w]),j=q(y),M=st(m),N=st(g),{tasksList:P,updateTask:F,commitTask:I,createTask:L,deleteTask:R,undo:z,redo:B,canUndo:re,canRedo:ie}=$e(t,p,{onTaskCreate:_,onTaskDelete:v,onTasksChange:b},A),{visibleTasks:ae,expandedIds:oe,parentIds:se,toggleExpand:ce,revealAncestors:V}=et(P),{taskListRef:le,gridRef:ue,onTaskListScroll:de,onGridScroll:H,viewport:fe}=ot(),pe=(0,e.useRef)(null),U=vt({gridRef:ue,visibleTasks:ae,padDays:s,levels:(0,e.useMemo)(()=>Ot(c,o,i),[c,o,i]),initialIndex:l??3}),W=_t({taskListRef:le,gridRef:ue,tasksList:P,visibleTasks:ae,rowHeight:r,colWidth:U.level.colWidth,scales:U.level.scales,padDays:s,revealAncestors:V}),me=q(u);(0,e.useEffect)(()=>{me.current?.({index:U.index,count:U.count})},[U.index,U.count,me]);let G=(0,e.useCallback)((e,t)=>{L(e,t),ee(e.id),W(e.id)},[L,W]),{zoomIn:K,zoomOut:he,setZoom:ge,zoomAt:_e}=U,ve=jt({createTask:G,updateTask:F,deleteTask:R,undo:z,redo:B,revealTask:W,zoomIn:K,zoomOut:he,setZoom:ge});(0,e.useImperativeHandle)(x,()=>ve,[ve]);let ye=Mt({handle:ve,readOnly:E,labels:k,schedulingContext:A,onTaskEditRef:j}),{drag:xe,startDrag:Se,endDrag:Ce}=At({gridBodyRef:pe,onDependencyCreate:h}),we=(0,e.useMemo)(()=>({rowHeight:r,colWidth:U.level.colWidth,scales:U.level.scales,padDays:s,height:a}),[r,U.level,s,a]),Te=(0,e.useMemo)(()=>({zoomIn:K,zoomOut:he,zoomAt:_e,wheelEnabled:d,keyboardEnabled:f}),[K,he,_e,d,f]),Ee=(0,e.useMemo)(()=>({tasksList:P,visibleTasks:ae,expandedIds:oe,parentIds:se,canUndo:re,canRedo:ie}),[P,ae,oe,se,re,ie]),De=(0,e.useMemo)(()=>({updateTask:F,commitTask:I,createTask:G,deleteTask:R,undo:z,redo:B,columnApi:ye,setSelectedId:ee,toggleExpand:ce,onTaskClick:M,revealTask:W}),[F,I,G,R,z,B,ye,ce,M,W]),Oe=(0,e.useMemo)(()=>({taskListRef:le,gridRef:ue,gridBodyRef:pe,onTaskListScroll:de,onGridScroll:H}),[le,ue,de,H]),ke=(0,e.useMemo)(()=>({dependencies:p,onDependencyDelete:N,startDrag:Se,endDrag:Ce}),[p,N,Se,Ce]);return(0,n.jsx)(Nt.Provider,{value:we,children:(0,n.jsx)(zt.Provider,{value:E,children:(0,n.jsx)(Ft.Provider,{value:k,children:(0,n.jsx)(Lt.Provider,{value:A,children:(0,n.jsx)(rn.Provider,{value:Te,children:(0,n.jsx)(qt.Provider,{value:Oe,children:(0,n.jsx)(Ut.Provider,{value:De,children:(0,n.jsx)(Zt.Provider,{value:ke,children:(0,n.jsx)(Vt.Provider,{value:Ee,children:(0,n.jsx)(Gt.Provider,{value:O,children:(0,n.jsx)($t.Provider,{value:xe!==null,children:(0,n.jsx)(Yt.Provider,{value:fe,children:(0,n.jsx)(tn.Provider,{value:xe,children:D})})})})})})})})})})})})})}var sn=(0,e.createContext)({});function cn({value:e,children:t}){return(0,n.jsx)(sn.Provider,{value:e,children:t})}function J(){return(0,e.useContext)(sn)}function ln(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=ln(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function un(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=ln(e))&&(r&&(r+=` `),r+=t);return r}function Y(e,t,n){let r=typeof t==`function`?t(n):t;if(!r)return e;let{className:i,style:a,...o}=r;return{...e,...o,className:un(e.className,i),style:{...e.style,...a}}}var dn={calendar:`_calendar_1ksbu_1`,row:`_row_1ksbu_19`,cell:`_cell_1ksbu_29`,cellWeekend:`_cellWeekend_1ksbu_56`};function fn(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=u(i,t.unit,t.step),o=n[n.length-1];o&&o.key===a?o.count+=1:n.push({key:a,start:i,startIndex:r,count:1})}return n}function pn(e,t){if(!t)return{start:0,end:e.length};let n=0,r=e.length;for(;n<r;){let i=n+r>>1,a=e[i];a.startIndex+a.count<=t.start?n=i+1:r=i}let i=n;for(;i<e.length&&e[i].startIndex<t.end;)i+=1;return{start:n,end:i}}function mn({scale:t,dates:r,colWidth:i,rowHeight:a,highlightWeekends:o=!1,colRange:s,rowIndex:c,slots:l,slotProps:u}){let f=J(),p=l??f.timeline?.calendarRow?.slots,{calendar:m}=Rt(),h=u??f.timeline?.calendarRow?.slotProps,_=(0,e.useMemo)(()=>fn(r,t),[r,t]),v=pn(_,s),y=p?.row??`div`,b=p?.cell??`div`,x={scale:t,colWidth:i,rowHeight:a,highlightWeekends:o};return(0,n.jsx)(y,{...Y({className:dn.row,style:{height:a},role:`row`,"aria-rowindex":c},h?.row,x),children:_.slice(v.start,v.end).map(e=>{let r=o&&m?U(m,e.start,g(e.start,t.unit,t.step)):{isNonWorking:!1,reason:void 0},a=m?r.isNonWorking:o&&d(e.start),s={scale:t,date:e.start,startIndex:e.startIndex,count:e.count,isNonWorking:a,nonWorkingReason:a?r.reason??`weekend`:void 0,isWeekend:a,colWidth:i};return(0,n.jsx)(b,{...Y({className:un(dn.cell,a&&dn.cellWeekend),style:{left:e.startIndex*i,width:e.count*i},children:t.format(e.start),role:`columnheader`,"aria-colindex":e.startIndex+1,"aria-colspan":e.count,"aria-label":t.ariaFormat?t.ariaFormat(e.start):we(e.start,t.unit,t.step)},h?.cell,s)},e.key)})})}function hn({colWidth:e,rowHeight:t,scales:r=dt,dates:i,colRange:a}){let o=i.length*e;return(0,n.jsx)(`div`,{className:dn.calendar,style:{width:o},role:`rowgroup`,children:r.map((r,o)=>(0,n.jsx)(mn,{scale:r,dates:i,colWidth:e,rowHeight:t,highlightWeekends:r.unit===`day`&&r.step===1,colRange:a,rowIndex:o+1},`${r.unit}-${r.step}`))})}var gn=40,_n=14;function vn(e){let t=e;for(;t;){let e=getComputedStyle(t);if((e.overflowX===`auto`||e.overflowX===`scroll`)&&t.scrollWidth>t.clientWidth)return t;t=t.parentElement}return document.scrollingElement}function yn(e){if(e===document.scrollingElement)return{left:0,right:window.innerWidth};let t=e.getBoundingClientRect();return{left:t.left,right:t.right}}function bn(e,t,n){return n<e+gn?-_n*Math.min(1,(e+gn-n)/gn):n>t-gn?_n*Math.min(1,(n-(t-gn))/gn):0}function xn({enabled:t,onScroll:n}){let r=(0,e.useRef)({container:null,scrollTarget:null,startScrollLeft:0,cursorX:0,rafId:null}),i=(0,e.useRef)(n);i.current=n;let a=(0,e.useCallback)(()=>i.current(),[]),o=(0,e.useCallback)(()=>{let e=r.current;if(!e.container){e.rafId=null;return}let{left:t,right:n}=yn(e.container),i=bn(t,n,e.cursorX);i!==0&&(e.container.scrollLeft+=i),e.rafId=requestAnimationFrame(o)},[]),s=(0,e.useCallback)(()=>{let e=r.current;e.rafId!==null&&cancelAnimationFrame(e.rafId),e.scrollTarget&&e.scrollTarget.removeEventListener(`scroll`,a),e.container=null,e.scrollTarget=null,e.rafId=null},[a]),c=(0,e.useCallback)(e=>{if(!t)return;let n=r.current,i=vn(e);n.container=i,n.startScrollLeft=i?.scrollLeft??0,i&&(n.scrollTarget=i===document.scrollingElement?window:i,n.scrollTarget.addEventListener(`scroll`,a,{passive:!0}),n.rafId=requestAnimationFrame(o))},[t,a,o]),l=(0,e.useCallback)(e=>{r.current.cursorX=e},[]),u=(0,e.useCallback)(()=>{let e=r.current;return e.container?e.container.scrollLeft-e.startScrollLeft:0},[]);return(0,e.useEffect)(()=>s,[s]),{start:c,stop:s,setCursorX:l,getScrollDelta:u}}function Sn({onStart:t,onDrag:n,onEnd:r,autoScroll:i=!1}){let a=(0,e.useRef)(!1),o=(0,e.useRef)(null),s=(0,e.useRef)(0),c=(0,e.useRef)(0),l=(0,e.useRef)(0),u=(0,e.useRef)(n),d=(0,e.useRef)(r);u.current=n,d.current=r;let f=(0,e.useRef)(()=>{}),{start:p,stop:m,setCursorX:h,getScrollDelta:g}=xn({enabled:i,onScroll:()=>f.current()}),_=(0,e.useCallback)(()=>{if(!a.current||o.current===null)return;let e=c.current-s.current+g();l.current=e,u.current(e,o.current)},[g]);f.current=_;let v=(0,e.useCallback)(e=>{o.current=t(e),s.current=e.clientX,c.current=e.clientX,l.current=0,a.current=!0,h(e.clientX),p(e.currentTarget),e.preventDefault(),e.stopPropagation()},[t,h,p]);return(0,e.useEffect)(()=>{let e=e=>{!a.current||o.current===null||(c.current=e.clientX,h(e.clientX),_(),e.preventDefault())},t=()=>{a.current&&o.current!==null&&d.current?.(l.current,o.current),a.current=!1,o.current=null,m()};return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t),m()}},[_,h,m]),v}var X={tooltip:`_tooltip_mcgy9_11`,name:`_name_mcgy9_31`,row:`_row_mcgy9_6`,label:`_label_mcgy9_42`},Cn=(0,e.createContext)(null),wn=()=>(0,e.useContext)(Cn);function Tn({anchorRef:t,children:r}){let[i,a]=(0,e.useState)(!1),o=(0,e.useMemo)(()=>({open:i,setOpen:a,anchorRef:t}),[i,t]);return(0,n.jsx)(Cn.Provider,{value:o,children:r})}function En({children:t}){let n=wn(),r=n?.open??!1,i=n?.setOpen,a=n?.anchorRef;if((0,e.useEffect)(()=>{if(!r||!i)return;let e=()=>i(!1),t=e=>{let t=a?.current?.getBoundingClientRect();!t||t.width===0||t.height===0||e.clientX>=t.left&&e.clientX<=t.right&&e.clientY>=t.top&&e.clientY<=t.bottom||i(!1)};return document.addEventListener(`scroll`,e,{capture:!0,passive:!0}),document.addEventListener(`mousemove`,t,{passive:!0}),()=>{document.removeEventListener(`scroll`,e,{capture:!0}),document.removeEventListener(`mousemove`,t)}},[r,i,a]),!i||!(0,e.isValidElement)(t))return t;let{onMouseEnter:o,onMouseLeave:s}=t.props;return(0,e.cloneElement)(t,{onMouseEnter:e=>{o?.(e),i(!0)},onMouseLeave:e=>{s?.(e),i(!1)}})}var Dn=12,On=8;function kn(e,t,n,r){let i=e+Dn,a=i+t<=r-On;return Math.max(a?i:e-Dn-t,n+On)}var An=(t,n)=>{let r=(0,e.useContext)(qt)?.gridRef,[i,a]=(0,e.useState)({left:-9999,top:-9999}),o=(0,e.useDeferredValue)(i);return(0,e.useEffect)(()=>{if(!n)return;let e=e=>{let{clientX:n,clientY:i}=e,o=r?.current?.getBoundingClientRect(),s=o&&o.width>0&&o.height>0?{left:o.left,top:o.top,right:o.right,bottom:o.bottom}:{left:0,top:0,right:window.innerWidth,bottom:window.innerHeight};if(n<s.left||n>s.right||i<s.top||i>s.bottom)return;let c=t.current?.getBoundingClientRect(),l=c?.width??0,u=c?.height??0,d=kn(n,l,s.left,s.right),f=kn(i,u,s.top,s.bottom);a(e=>e.left===d&&e.top===f?e:{left:d,top:f})};return window.addEventListener(`mousemove`,e),()=>{window.removeEventListener(`mousemove`,e)}},[t,r,n]),o};function jn(e){return e?e.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`}):`—`}function Mn({task:r,progress:i,displayEnd:a,className:o,style:s,...c}){let l=(0,e.useRef)(null),u=wn()?.open??!1,d=An(l,u);return!u||typeof document>`u`?null:(0,t.createPortal)((0,n.jsxs)(`div`,{role:`tooltip`,ref:l,className:o?`${X.tooltip} ${o}`:X.tooltip,style:{...s,...d},...c,children:[(0,n.jsx)(`div`,{className:X.name,children:r.name}),(0,n.jsxs)(`div`,{className:X.row,children:[(0,n.jsx)(`span`,{className:X.label,children:`Start`}),(0,n.jsx)(`span`,{children:jn(r.startDate)})]}),(0,n.jsxs)(`div`,{className:X.row,children:[(0,n.jsx)(`span`,{className:X.label,children:`End`}),(0,n.jsx)(`span`,{children:jn(a)})]}),(0,n.jsxs)(`div`,{className:X.row,children:[(0,n.jsx)(`span`,{className:X.label,children:`Progress`}),(0,n.jsxs)(`span`,{children:[Math.round(i),`%`]})]})]}),document.body)}function Nn({task:e,progress:t,displayEnd:r,anchorRef:i,className:a,style:o,children:s,...c}){return(0,n.jsxs)(Tn,{anchorRef:i,children:[(0,n.jsx)(En,{children:s}),(0,n.jsx)(Mn,{task:e,progress:t,displayEnd:r,className:a,style:o,...c})]})}function Pn({children:e,tooltip:t,anchorRef:r}){let i=J().bars?.tooltip,a=i?.slots?.tooltip;return!a||!t?e:(0,n.jsx)(a,{...Y({},i?.slotProps?.tooltip,t),anchorRef:r,...t,children:e})}function Fn({left:t,top:r,width:i,height:a,colWidth:o,dragAnchor:s,className:c,title:l,style:u,onMove:d,onMoveEnd:f,tooltip:p,onMouseEnter:m,onMouseLeave:h,children:g,..._}){let v=(0,e.useRef)(null),y=!d&&!f,b=Sn({onStart:()=>({start:s}),onDrag:(e,{start:t})=>d?.(t+e),onEnd:(e,{start:t})=>{let n=Math.round((t+e)/o)*o;f?.(n)},autoScroll:!0}),x=!!(d||f);return(0,n.jsx)(Pn,{tooltip:p,anchorRef:v,children:(0,n.jsx)(`div`,{..._,ref:v,className:c,style:{left:t,top:r,width:i,height:a,cursor:y?`default`:`move`,...u},title:l,onMouseDown:x?b:void 0,onMouseEnter:m,onMouseLeave:h,children:g})})}var In={milestone:`_milestone_o4jql_1`,milestoneShape:`_milestoneShape_o4jql_5`};function Ln({size:e,centerLeft:t,top:r,colWidth:i,title:a,a11y:o,onMove:s,onMoveEnd:c,tooltip:l,slots:u,slotProps:d}){let f=J(),p=u??f.bars?.milestoneBar?.slots,m=d??f.bars?.milestoneBar?.slotProps,h={size:e,title:a},g=p?.root??Fn,_=p?.shape??`div`,v=Y({className:In.milestone,...o,title:o?o.title:a},m?.root,h),y=Y({className:In.milestoneShape,"aria-hidden":!0},m?.shape,h);return(0,n.jsx)(g,{tooltip:l,left:t-e/2,top:r,width:e,height:e,colWidth:i,dragAnchor:t,onMove:s,onMoveEnd:c,...v,children:(0,n.jsx)(_,{...y})})}var Rn={barProgress:`_barProgress_1obm3_1`,barProgressResizeHandle:`_barProgressResizeHandle_1obm3_10`};function zn({width:e,onResize:t,onResizeEnd:r,parentWidth:i,slots:a,slotProps:o}){let s=J(),c=a??s.bars?.barProgressResizeHandle?.slots,l=o??s.bars?.barProgressResizeHandle?.slotProps,u=(e,t)=>Math.min(Math.max(0,t+e),i),d=Sn({onStart:()=>({startWidth:e}),onDrag:(e,{startWidth:n})=>t(u(e,n)),onEnd:(e,{startWidth:t})=>r?.(u(e,t))}),f={width:e,parentWidth:i};return(0,n.jsx)(c?.root??`div`,{...Y({className:Rn.barProgressResizeHandle,"aria-hidden":!0,tabIndex:-1,onMouseDown:d},l?.root,f)})}function Bn({progress:e,width:t,height:r,onProgressChange:i,onProgressEnd:a,slots:o,slotProps:s}){let c=J(),l=o??c.bars?.barProgress?.slots,u=s??c.bars?.barProgress?.slotProps,d=e/100*t,f=e=>e/t*100,p={progress:e,width:d,height:r};return(0,n.jsx)(l?.root??`div`,{...Y({className:Rn.barProgress,style:{width:d,height:r}},u?.root,p),children:i&&(0,n.jsx)(zn,{width:d,parentWidth:t,onResize:e=>i(f(e)),onResizeEnd:a?e=>a(f(e)):void 0})})}var Vn={project:`_project_927ph_1`,projectInner:`_projectInner_927ph_10`,projectContent:`_projectContent_927ph_16`};function Hn({width:e,height:t,left:r,top:i,colWidth:a,title:o,a11y:s,progress:c,onProgressChange:l,onProgressEnd:u,onMove:d,onMoveEnd:f,tooltip:p,slots:m,slotProps:h}){let g=J(),_=m??g.bars?.projectBar?.slots,v=h??g.bars?.projectBar?.slotProps,y={width:e,height:t,progress:c,title:o},b=_?.root??Fn,x=_?.inner??`div`,S=_?.label??`div`,C=Y({className:Vn.project,style:{lineHeight:`${t}px`},...s},v?.root,y),w=Y({className:Vn.projectInner,"aria-hidden":!0},v?.inner,y),T=Y({className:Vn.projectContent,children:o},v?.label,y);return(0,n.jsx)(b,{tooltip:p,left:r,top:i,width:e,height:t,colWidth:a,dragAnchor:r,onMove:d,onMoveEnd:f,...C,children:(0,n.jsxs)(x,{...w,children:[(0,n.jsx)(Bn,{width:e,height:t,progress:c,onProgressChange:l,onProgressEnd:u}),(0,n.jsx)(S,{...T})]})})}var Un={task:`_task_18g5p_1`,taskInner:`_taskInner_18g5p_9`,taskContent:`_taskContent_18g5p_15`,resizer:`_resizer_18g5p_28`,startResizer:`_startResizer_18g5p_59`,endResizer:`_endResizer_18g5p_62`};function Wn({width:e,left:t,colWidth:r,onResize:i,onResizeEnd:a,slots:o,slotProps:s}){let c=J(),l=o??c.bars?.taskResizer?.slots,u=s??c.bars?.taskResizer?.slotProps,d=Sn({onStart:()=>({startWidth:e,startLeft:t}),onDrag:(e,{startWidth:t,startLeft:n})=>{let r=Math.min(e,t);i(t-r,n+r)},onEnd:(e,{startWidth:t,startLeft:n})=>{let i=n+Math.min(e,t);a(`start`,Math.round(i/r)*r)}}),f=Sn({onStart:()=>({startWidth:e,startLeft:t}),onDrag:(e,{startWidth:t,startLeft:n})=>{i(Math.max(0,t+e),n)},onEnd:(e,{startWidth:t,startLeft:n})=>{let i=n+Math.max(0,t+e);a(`end`,Math.round(i/r)*r)}}),p={width:e,left:t},m=l?.startHandle??`button`,h=l?.endHandle??`button`,g=Y({type:`button`,"aria-hidden":!0,tabIndex:-1,className:un(Un.resizer,Un.startResizer),onMouseDown:d},u?.startHandle,p),_=Y({type:`button`,"aria-hidden":!0,tabIndex:-1,className:un(Un.resizer,Un.endResizer),onMouseDown:f},u?.endHandle,p);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(m,{...g}),(0,n.jsx)(h,{..._})]})}function Gn({width:e,height:t,left:r,top:i,colWidth:a,title:o,a11y:s,progress:c=30,onProgressChange:l,onProgressEnd:u,onResize:d,onResizeEnd:f,onMove:p,onMoveEnd:m,tooltip:h,slots:g,slotProps:_}){let v=J(),y=g??v.bars?.taskBar?.slots,b=_??v.bars?.taskBar?.slotProps,x={width:e,height:t,progress:c,title:o},S=y?.root??Fn,C=y?.inner??`div`,w=y?.label??`div`,T=Y({className:`${Un.task} am-gantt-bar-task`,style:{lineHeight:`${t}px`},...s},b?.root,x),E=Y({className:Un.taskInner,"aria-hidden":!0},b?.inner,x),D=Y({className:Un.taskContent,title:s?.title,children:o},b?.label,x);return(0,n.jsx)(S,{tooltip:h,left:r,top:i,width:e,height:t,colWidth:a,dragAnchor:r,onMove:p,onMoveEnd:m,...T,children:(0,n.jsxs)(C,{...E,children:[(0,n.jsx)(Bn,{width:e,height:t,progress:c,onProgressChange:l,onProgressEnd:u}),(0,n.jsx)(w,{...D}),d&&f&&(0,n.jsx)(Wn,{width:e,left:r,colWidth:a,onResize:d,onResizeEnd:f})]})})}var Kn={handle:`_handle_fw6gu_1`,visible:`_visible_fw6gu_18`},qn=10/2;function Jn({taskId:e,barLeft:t,barWidth:r,barCenterY:i,show:a,slots:o,slotProps:s}){let c=J(),l=o??c.bars?.connectorHandles?.slots,u=s??c.bars?.connectorHandles?.slotProps,{startDrag:d,endDrag:f}=Qt(),p=en(),{gridBodyRef:m}=Jt(),h=(e,t)=>{let n=m.current?.getBoundingClientRect();if(!n)return{x:0,y:0};let r=e.currentTarget.getBoundingClientRect();return{x:r.left+r.width/2-n.left,y:r.top+r.height/2-n.top}},g=(t,n)=>{t.stopPropagation(),t.preventDefault();let{x:r,y:i}=h(t,n);d({fromTaskId:e,handle:n,startX:r,startY:i,currentX:r,currentY:i})},_=(t,n)=>{p&&(t.stopPropagation(),f(e,n))},v={taskId:e,barLeft:t,barWidth:r,barCenterY:i,show:a,isDragging:p},y=l?.startHandle??`div`,b=l?.endHandle??`div`,x=a||p,S=Y({"aria-hidden":!0,tabIndex:-1,className:un(Kn.handle,x&&Kn.visible),style:{left:t-10,top:i-qn},onMouseDown:e=>g(e,`start`),onMouseUp:e=>_(e,`start`)},u?.startHandle,v),C=Y({"aria-hidden":!0,tabIndex:-1,className:un(Kn.handle,x&&Kn.visible),style:{left:t+r,top:i-qn},onMouseDown:e=>g(e,`end`),onMouseUp:e=>_(e,`end`)},u?.endHandle,v);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(y,{...S}),(0,n.jsx)(b,{...C})]})}var Yn={row:`_row_1jios_13`},Xn=(0,e.memo)(function({task:t,index:r,origin:i,colWidth:a,rowHeight:o,unit:s,override:c,onOverride:l,onUpdate:u,onCommit:d,onTaskClick:f,rowIndexOffset:p}){let m=It(),h=Bt(),g=Kt()===t.id,_=Rt(),v=J().bars?.tooltip?.slots?.tooltip,{left:y,width:b,progress:x}=lt(t,c||{},i,a,s),S=r*o,C=y,w=o-12,T=6+w/2,E=t.type===`milestone`,D=E?C-w/2:C,O=E?w-1:b,[ee,k]=(0,e.useState)(!1),te=e=>({startDate:ut(e,i,a,s),endDate:ut(e+b,i,a,s)}),A=(e,t)=>({startDate:ut(t,i,a,s),endDate:ut(t+e,i,a,s)}),j=e=>{l(t.id,e)},M=(t,n)=>{(0,e.startTransition)(()=>{u(t,n),l(t,null)})},N=n=>{(0,e.startTransition)(()=>{d(t.id,n),l(t.id,null)})},P=e=>({kind:`move`,startDate:ut(e,i,a,s)}),F=h?{}:{onMove:e=>j(te(e)),onMoveEnd:e=>N(P(e))},ne=h?{}:{onProgressChange:e=>j({progress:e}),onProgressEnd:e=>M(t.id,{progress:e})},I=h?{}:{onResize:(e,t)=>j(A(e,t)),onResizeEnd:(e,t)=>N(e===`start`?{kind:`resizeStart`,startDate:ut(t,i,a,s)}:{kind:`resizeEnd`,endDate:ut(t,i,a,s)})},L={role:`gridcell`,"aria-colindex":Math.max(1,Math.floor(C/a)+1),"aria-colspan":Math.max(1,Math.round(b/a)),"aria-label":m.bar(t,{progress:x}),"aria-selected":g||void 0,title:v?void 0:t.name},R={task:t,progress:x,displayEnd:_e(t,_)};return(0,n.jsxs)(`div`,{className:Yn.row,style:{top:S,height:o},onClick:f?()=>f(t):void 0,onMouseEnter:()=>k(!0),onMouseLeave:()=>k(!1),role:`row`,"aria-rowindex":p+r+1,children:[!h&&(0,n.jsx)(Jn,{taskId:t.id,barLeft:D,barWidth:O,barCenterY:T,show:ee}),t.type===`milestone`&&(0,n.jsx)(Ln,{tooltip:R,size:w,centerLeft:C,top:6,colWidth:a,title:t.name,a11y:L,...F}),t.type===`summary`&&(0,n.jsx)(Hn,{tooltip:R,left:C,top:6,width:b,height:w,colWidth:a,title:t.name,a11y:L,progress:x,...ne,...F}),t.type===`task`||!t.type?(0,n.jsx)(Gn,{tooltip:R,left:C,top:6,width:b,height:w,colWidth:a,title:t.name,a11y:L,progress:x,...ne,...F,...I}):null]})});Xn.displayName=`Row`;var Zn=12,Qn={};function $n(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e)a.x<t&&(t=a.x),a.x>r&&(r=a.x),a.y<n&&(n=a.y),a.y>i&&(i=a.y);return{minX:t,minY:n,maxX:r,maxY:i}}function er(e){if(e.length<2)return e[0]??{x:0,y:0};let t=Math.floor((e.length-1)/2),n=e[t],r=e[t+1];return{x:(n.x+r.x)/2,y:(n.y+r.y)/2}}function tr(e,t,n,{origin:r,colWidth:i,rowHeight:a,unit:o}){let{left:s,width:c}=lt(e,t,r,i,o);if(e.type===`milestone`){let t=(a-12)/2;return{startX:s-t,endX:s+t,centerY:n,task:e}}return{startX:s,endX:s+c,centerY:n,task:e}}function nr(e,t){let n=new Map,{rowHeight:r}=t;return e.forEach((e,i)=>{n.set(e.id,tr(e,Qn,i*r+r/2,t))}),n}function rr(e,t){let n=(e.x+t.x)/2;return[e,{x:n,y:e.y},{x:n,y:t.y},t]}function ir(e,t,n,r){let i=e.x+n*Zn,a=t.x-r*Zn,o=(e.y+t.y)/2;return[e,{x:i,y:e.y},{x:i,y:o},{x:a,y:o},{x:a,y:t.y},t]}function ar(e,t,n){return[e,{x:n,y:e.y},{x:n,y:t.y},t]}function or(e,t,n){let r=t.centerY,i=n.centerY;switch(e){case`FS`:{let e={x:t.endX,y:r},a={x:n.startX,y:i};return n.startX>=t.endX+2*Zn?rr(e,a):ir(e,a,1,1)}case`SS`:return ar({x:t.startX,y:r},{x:n.startX,y:i},Math.min(t.startX,n.startX)-Zn);case`FF`:return ar({x:t.endX,y:r},{x:n.endX,y:i},Math.max(t.endX,n.endX)+Zn);case`SF`:{let e={x:t.startX,y:r},a={x:n.endX,y:i};return n.endX<=t.startX-2*Zn?rr(e,a):ir(e,a,-1,-1)}}}function sr({tasks:e,dependencies:t,...n}){let r=nr(e,n),i=[];for(let e of t){let t=r.get(e.from),n=r.get(e.to);!t||!n||i.push(cr(e,t,n))}let a=null;return{links:i,boxes:r,linksTouching(e){return a??=lr(i),a.get(e)}}}function cr(e,t,n){let r=or(e.type,t,n);return{id:`${e.from}->${e.to}`,type:e.type,points:r,bounds:$n(r),dep:e}}function lr(e){let t=new Map,n=(e,n)=>{let r=t.get(e);r?r.push(n):t.set(e,[n])};return e.forEach((e,t)=>{n(String(e.dep.from),t),n(String(e.dep.to),t)}),t}function ur(e,t,n){let r=Object.keys(t);if(r.length===0)return e.links;let i=new Map,a=r=>{let a=e.boxes.get(r),o=a&&t[String(r)];if(!a||!o)return a;let s=i.get(r);return s||(s=tr(a.task,o,a.centerY,n),i.set(r,s)),s},o=null;for(let t of r)for(let n of e.linksTouching(t)??[]){let{dep:t}=e.links[n],r=a(t.from),i=a(t.to);!r||!i||(o??=e.links.slice(),o[n]=cr(t,r,i))}return o??e.links}var dr=(0,e.createContext)(null);function fr({tasks:t,dependencies:r,origin:i,colWidth:a,rowHeight:o,unit:s,children:c,overrides:l}){let u=(0,e.useMemo)(()=>sr({tasks:t,dependencies:r,origin:i,colWidth:a,rowHeight:o,unit:s}),[t,r,i,a,o,s]),d=(0,e.useMemo)(()=>ur(u,l,{origin:i,colWidth:a,rowHeight:o,unit:s}),[u,l,i,a,o,s]);return(0,n.jsx)(dr.Provider,{value:d,children:c})}function pr(){let t=(0,e.useContext)(dr);if(t===null)throw Error(`useDependencyLinks must be used within a <DependencyLinksProvider>`);return t}var Z={layer:`_layer_1ih9f_1`,hitArea:`_hitArea_1ih9f_8`,segment:`_segment_1ih9f_15`,segmentSelected:`_segmentSelected_1ih9f_21`,arrowRight:`_arrowRight_1ih9f_25`,arrowLeft:`_arrowLeft_1ih9f_26`,arrowSelected:`_arrowSelected_1ih9f_43`,lagLabel:`_lagLabel_1ih9f_51`,deleteBtn:`_deleteBtn_1ih9f_65`},Q=2,mr=8,hr=6;function gr(e,t){return t?e.minX<=t.maxX&&e.maxX>=t.minX&&e.minY<=t.maxY&&e.maxY>=t.minY:!0}function _r(e,t){return e.y===t.y?{left:Math.min(e.x,t.x)-Q/2,top:e.y-Q/2,width:Math.abs(t.x-e.x)+Q,height:Q}:{left:e.x-Q/2,top:Math.min(e.y,t.y)-Q/2,width:Q,height:Math.abs(t.y-e.y)+Q}}function vr(e,t){return e.y===t.y?{left:Math.min(e.x,t.x)-Q/2,top:e.y-hr,width:Math.abs(t.x-e.x)+Q,height:Q+hr*2}:{left:e.x-hr,top:Math.min(e.y,t.y)-Q/2,width:Q+hr*2,height:Math.abs(t.y-e.y)+Q}}function yr(e){let t=[];for(let n=0;n+1<e.length;n++)t.push([e[n],e[n+1]]);return t}function br(e){let t=e[e.length-1],n=e[e.length-2],r=t.x>=n.x;return{className:r?Z.arrowRight:Z.arrowLeft,style:{left:r?t.x-mr:t.x,top:t.y-mr/2}}}function xr({width:t,height:r,onDependencyDelete:i,visibleRect:a,slots:o,slotProps:s}){let c=J(),l=o??c.dependencies?.links?.slots,u=s??c.dependencies?.links?.slotProps,d=It(),f=Bt(),p=pr(),[m,h]=(0,e.useState)(null),[g,_]=(0,e.useState)(null),v=m?p.find(e=>e.id===m):null;if((0,e.useEffect)(()=>{if(!m)return;let e=e=>{(e.key===`Delete`||e.key===`Backspace`)&&(v&&i?.(v.dep),h(null),_(null))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[m,v,i]),p.length===0)return null;let y=(e,t)=>{if(t.stopPropagation(),m===e)h(null),_(null);else{h(e);let n=t.currentTarget.closest(`.${Z.layer}`)?.getBoundingClientRect();_(n?{x:t.clientX-n.left,y:t.clientY-n.top}:null)}},b=e=>{e.stopPropagation(),v&&i?.(v.dep),h(null),_(null)},x=l?.layer??`div`,S=l?.segment??`div`,C=l?.arrow??`div`,w=l?.lagLabel??`div`,T=l?.deleteButton??`button`;return(0,n.jsxs)(x,{...Y({className:Z.layer,style:{width:t,height:r},role:`presentation`,"aria-hidden":!0,onClick:()=>{h(null),_(null)}},u?.layer,{width:t,height:r,linkCount:p.length}),children:[p.map(t=>{let r=t.id===m;if(!r&&!gr(t.bounds,a))return null;let i=br(t.points),o=yr(t.points),s=t.dep.lag?er(t.points):null,c={link:t,isSelected:r},l=Y({className:`${i.className} ${r?Z.arrowSelected:``}`,style:i.style},u?.arrow,c);return(0,n.jsxs)(e.Fragment,{children:[!f&&o.map(([e,r])=>(0,n.jsx)(`div`,{className:Z.hitArea,style:vr(e,r),onClick:e=>y(t.id,e)},`hit-${e.x},${e.y}-${r.x},${r.y}`)),o.map(([e,i],a)=>(0,n.jsx)(S,{...Y({className:`${Z.segment} ${r?Z.segmentSelected:``}`,style:_r(e,i)},u?.segment,{link:t,isSelected:r,from:e,to:i,index:a})},`seg-${e.x},${e.y}-${i.x},${i.y}`)),(0,n.jsx)(C,{...l}),s&&t.dep.lag!==void 0&&t.dep.lag!==0&&(0,n.jsx)(w,{...Y({className:Z.lagLabel,style:{left:s.x,top:s.y},children:t.dep.lag>0?`+${t.dep.lag}d`:`${t.dep.lag}d`},u?.lagLabel,{link:t,isSelected:r,lag:t.dep.lag})})]},t.id)}),!f&&v&&g&&(0,n.jsx)(T,{...Y({className:Z.deleteBtn,type:`button`,tabIndex:-1,style:{left:g.x,top:g.y},onClick:b,"aria-label":d.deleteDependency,children:`×`},u?.deleteButton,{dependency:v.dep})})]})}var Sr={preview:`_preview_1jjzd_1`};function Cr({slots:e,slotProps:t}){let r=J(),i=e??r.dependencies?.preview?.slots,a=t??r.dependencies?.preview?.slotProps,o=nn();if(!o)return null;let s=o.currentX-o.startX,c=o.currentY-o.startY,l=Math.hypot(s,c),u=180/Math.PI*Math.atan2(c,s);return(0,n.jsx)(i?.root??`div`,{...Y({className:Sr.preview,style:{left:o.startX,top:o.startY,width:l,transform:`rotate(${u}deg)`},"aria-hidden":!0},a?.root,{drag:o,length:l,angle:u})})}var wr={cols:`_cols_kjab1_1`,col:`_col_kjab1_1`,colWeekend:`_colWeekend_kjab1_14`};function Tr({dates:e,colWidth:t,bodyHeight:r,colRange:i,unit:a=`day`,step:o=1,slots:s,slotProps:c}){let l=J(),u=s??l.timeline?.gridColumn?.slots,f=c??l.timeline?.gridColumn?.slotProps,p=u?.column??`div`,{calendar:m}=Rt(),h=a===`day`||a===`hour`||a===`minute`;return(0,n.jsx)(`div`,{className:wr.cols,role:`presentation`,"aria-hidden":!0,children:e.slice(i.start,i.end).map((e,s)=>{let c=i.start+s,l=h?U(m,e,g(e,a,o)):{isNonWorking:!1,reason:void 0},u=m?l.isNonWorking:a===`day`&&d(e),_={date:e,index:c,isNonWorking:u,nonWorkingReason:u?l.reason??`weekend`:void 0,isWeekend:u,colWidth:t,bodyHeight:r};return(0,n.jsx)(p,{...Y({className:un(wr.col,u&&wr.colWeekend),style:{left:c*t,width:t,height:r}},f?.column,_)},e.getTime())})})}Tr.displayName=`GridColumns`;var Er={gridWrapper:`_gridWrapper_1tr84_1`,grid:`_grid_1tr84_1`,body:`_body_1tr84_17`};function Dr(e,t,n,r,i=0){if(r<=0)return{start:0,end:0};if(t<=0||n<=0)return{start:0,end:Math.min(r,100)};let a=Math.floor(e/n),o=Math.ceil((e+t)/n);return{start:Math.max(0,a-i),end:Math.min(r,o+i)}}function Or({slots:t,slotProps:r}={}){let i=J(),a=t??i.timeline?.grid?.slots,o=r??i.timeline?.grid?.slotProps,{visibleTasks:s}=Ht(),{updateTask:c,commitTask:l,onTaskClick:u,setSelectedId:d}=Wt(),{colWidth:f,rowHeight:p,scales:m,padDays:h,height:g}=Pt(),_=It(),{gridRef:v,onGridScroll:y,gridBodyRef:b}=Jt(),x=Xt(),{dependencies:S,onDependencyDelete:C}=Qt(),{zoomAt:w,zoomIn:T,zoomOut:E,wheelEnabled:D,keyboardEnabled:O}=an();(0,e.useEffect)(()=>{let e=v.current;if(!e||!D&&!O)return;let t=t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();let n=e.getBoundingClientRect();w(e.scrollLeft+(t.clientX-n.left),t.deltaY<0?1:-1)},n=e=>{e.key===`+`||e.key===`=`?(e.preventDefault(),T()):(e.key===`-`||e.key===`_`)&&(e.preventDefault(),E())};return D&&e.addEventListener(`wheel`,t,{passive:!1}),O&&(e.tabIndex=0,e.addEventListener(`keydown`,n)),()=>{e.removeEventListener(`wheel`,t),e.removeEventListener(`keydown`,n)}},[v,D,O,w,T,E,s.length]);let[ee,k]=(0,e.useState)({}),te=(0,e.useCallback)(e=>{d(e.id),u?.(e)},[d,u]),A=(0,e.useCallback)((e,t)=>{k(n=>{if(t===null){let{[e]:t,...r}=n;return r}return{...n,[e]:{...n[e],...t}}})},[]),j=(0,e.useMemo)(()=>gt(s,h,m),[s,h,m]),M=j[0]?.getTime(),N=(0,e.useMemo)(()=>M==null?void 0:new Date(M),[M]);if(!N)return null;let P=ft(m),F=j.length*f,ne=s.length*p,I=(m??dt).length,L=Dr(x.scrollTop,x.clientHeight,p,s.length,6),R=Dr(x.scrollLeft,x.clientWidth,f,j.length,4),z={minX:R.start*f,maxX:R.end*f,minY:L.start*p,maxY:L.end*p},B=a?.root??`div`,re=a?.body??`div`,ie={totalWidth:F,bodyHeight:ne,height:g},ae=Y({className:Er.gridWrapper,style:g===void 0?{}:{height:g},onScroll:y,role:`grid`,"aria-label":_.timeline,"aria-rowcount":I+s.length,"aria-colcount":j.length},o?.root,ie),oe=Y({className:Er.body,style:{height:ne,width:F},role:`rowgroup`},o?.body,ie);return(0,n.jsx)(B,{ref:v,...ae,children:(0,n.jsxs)(`div`,{className:Er.grid,style:{width:F},role:`presentation`,children:[(0,n.jsx)(hn,{colWidth:f,rowHeight:p,dates:j,scales:m,colRange:R}),(0,n.jsx)(fr,{tasks:s,dependencies:S,origin:N,colWidth:f,rowHeight:p,unit:P,overrides:ee,children:(0,n.jsxs)(re,{ref:b,...oe,children:[(0,n.jsx)(Tr,{dates:j,colWidth:f,bodyHeight:ne,colRange:R,unit:P,step:pt(m)}),(0,n.jsx)(xr,{width:F,height:ne,onDependencyDelete:C,visibleRect:z}),(0,n.jsx)(Cr,{}),s.slice(L.start,L.end).map((e,t)=>(0,n.jsx)(Xn,{task:e,index:L.start+t,origin:N,colWidth:f,rowHeight:p,unit:P,onUpdate:c,onCommit:l,override:ee[e.id],onOverride:A,onTaskClick:te,rowIndexOffset:I},e.id))]})})]})})}Or.displayName=`GanttGrid`;var kr={handle:`_handle_1o220_1`};function Ar({onMouseDown:e,isResizing:t=!1,slots:r,slotProps:i}){let a=J(),o=r??a.timeline?.gridResizeHandle?.slots,s=i??a.timeline?.gridResizeHandle?.slotProps,c=It(),l={isResizing:t};return(0,n.jsx)(o?.root??`div`,{...Y({className:kr.handle,onMouseDown:e,role:`separator`,"aria-orientation":`vertical`,"aria-label":c.resizeTaskList},s?.root,l)})}var $={taskList:`_taskList_i76t8_1`,header:`_header_i76t8_10`,headerCell:`_headerCell_i76t8_22`,body:`_body_i76t8_41`,rows:`_rows_i76t8_54`,row:`_row_i76t8_54`,selected:`_selected_i76t8_70`,cell:`_cell_i76t8_74`,treeCell:`_treeCell_i76t8_91`,nameContent:`_nameContent_i76t8_95`,expandBtn:`_expandBtn_i76t8_104`,expandPlaceholder:`_expandPlaceholder_i76t8_122`,divider:`_divider_i76t8_128`};function jr({columns:e,rowHeight:t,scales:r=dt,onResizeStart:i,slots:a,slotProps:o}){let s=r.length*t+2,c=a?.header??`div`,l=a?.headerCell??`div`,u=a?.columnResizeHandle??`div`;return(0,n.jsx)(c,{...Y({className:$.header,style:{minHeight:s,height:s},role:`row`,"aria-rowindex":1},o?.header,{columns:e,headerHeight:s}),children:e.map((e,t)=>{let r={column:e,index:t},a=Y({className:$.headerCell,style:e.width?{width:e.width,flexShrink:0}:{flex:`1 1 auto`,minWidth:100},role:`columnheader`,"aria-colindex":t+1},o?.headerCell,r),s=Y({className:$.divider,"aria-hidden":!0,onMouseDown:t=>{let n=t.currentTarget.parentElement;i(e.key,n.offsetWidth,t)}},o?.columnResizeHandle,r);return(0,n.jsxs)(l,{...a,children:[e.header,(0,n.jsx)(u,{...s})]},e.key)})})}var Mr=16;function Nr({taskId:e,depth:t,isParent:r,isExpanded:i,onToggleExpand:a,children:o,slots:s,slotProps:c}){let l=It(),u={taskId:e,depth:t,isParent:r,isExpanded:i},d=s?.root??`span`,f=s?.expandButton??`button`,p=s?.placeholder??`span`,m=Y({className:$.nameContent,style:{paddingLeft:t*Mr}},c?.root,u),h=Y({className:$.expandBtn,type:`button`,onClick:t=>{t.stopPropagation(),a(e)},"aria-label":i?l.collapse:l.expand,children:i?`▾`:`▸`},c?.expandButton,u),g=Y({className:$.expandPlaceholder,"aria-hidden":!0},c?.placeholder,u);return(0,n.jsxs)(d,{...m,children:[r?(0,n.jsx)(f,{...h}):(0,n.jsx)(p,{...g}),o]})}var Pr=100,Fr=(0,e.memo)(function({task:e,rowHeight:t,rowIndex:r,depth:i,posinset:a,setsize:o,isParent:s,isExpanded:c,isSelected:l,onToggleExpand:u,onSelect:d,columns:f,treeCell:p}){let{columnApi:m}=Wt();return(0,n.jsx)(`div`,{className:`${$.row} ${l?$.selected:``}`,style:{height:t},onClick:()=>d(e.id),role:`row`,"aria-rowindex":r+2,"aria-level":i+1,"aria-posinset":a,"aria-setsize":o,"aria-expanded":s?c:void 0,"aria-selected":l||void 0,children:f.map((t,r)=>(0,n.jsx)(`div`,{className:`${$.cell} ${t.isTreeColumn?$.treeCell:``}`,style:{width:t.width||Pr,flexShrink:0},role:t.isTreeColumn?`rowheader`:`gridcell`,"aria-colindex":r+1,children:t.isTreeColumn?(0,n.jsx)(Nr,{taskId:e.id,depth:i,isParent:s,isExpanded:c,onToggleExpand:u,slots:p?.slots,slotProps:p?.slotProps,children:t.render(e,m)}):t.render(e,m)},t.key))})});Fr.displayName=`TaskListRow`;function Ir(){let[t,n]=(0,e.useState)({}),r=(0,e.useRef)(null);return{widths:t,onResizeStart:(0,e.useCallback)((e,t,i)=>{i.preventDefault(),r.current={key:e,mouseX:i.clientX,width:t};let a=e=>{if(!r.current)return;let{key:t,mouseX:i,width:a}=r.current,o=Math.max(60,a+(e.clientX-i));n(e=>({...e,[t]:o}))},o=()=>{r.current=null,window.removeEventListener(`mousemove`,a),window.removeEventListener(`mouseup`,o)};window.addEventListener(`mousemove`,a),window.addEventListener(`mouseup`,o)},[])}}var Lr={flex:`1 1 auto`,minHeight:0};function Rr({columns:t=[],taskList:r}){let{visibleTasks:i,expandedIds:a,parentIds:o}=Ht(),{toggleExpand:s,setSelectedId:c,onTaskClick:l,revealTask:u}=Wt(),d=Kt(),{rowHeight:f,scales:p,height:m}=Pt(),h=It(),{taskListRef:g,onTaskListScroll:_}=Jt(),{widths:v,onResizeStart:y}=Ir(),b=(0,e.useMemo)(()=>t.map(e=>v[e.key]==null?e:{...e,width:v[e.key]}),[t,v]),x=q(e=>{c(e);let t=i.find(t=>t.id===e);t&&(l?.(t),u(e,{horizontal:!0,vertical:!1}))}),S=(0,e.useCallback)(e=>x.current(e),[x]),C=(0,e.useMemo)(()=>{let e=new Map;for(let t of i){let n=t.parentId==null?-1:e.get(t.parentId)??0;e.set(t.id,n+1)}return e},[i]),w=(0,e.useMemo)(()=>{let e=new Map,t=new Map;for(let n of i){let r=n.parentId??null,i=(e.get(r)??0)+1;e.set(r,i),t.set(n.id,{posinset:i,setsize:0})}for(let n of i){let r=t.get(n.id);r.setsize=e.get(n.parentId??null)??1}return t},[i]),{viewport:T,scheduleMeasure:E}=at(g,{trackHorizontal:!1}),D=(0,e.useCallback)(()=>{_(),E()},[_,E]),O=Dr(T.scrollTop,T.clientHeight,f,i.length,6);return(0,n.jsxs)(`div`,{className:$.taskList,style:{height:m},role:`treegrid`,"aria-label":h.taskList,"aria-rowcount":i.length+1,"aria-colcount":b.length,children:[(0,n.jsx)(jr,{columns:b,rowHeight:f,scales:p,onResizeStart:y,slots:r?.header?.slots,slotProps:r?.header?.slotProps}),(0,n.jsx)(`div`,{ref:g,className:$.body,style:Lr,onScroll:D,role:`presentation`,children:(0,n.jsxs)(`div`,{className:$.rows,role:`rowgroup`,children:[(0,n.jsx)(`div`,{style:{height:O.start*f},role:`presentation`,"aria-hidden":`true`}),Array.from({length:O.end-O.start},(e,t)=>{let c=O.start+t,l=i[c],u=w.get(l.id);return(0,n.jsx)(Fr,{task:l,rowHeight:f,rowIndex:c,depth:C.get(l.id)??0,posinset:u?.posinset??1,setsize:u?.setsize??1,isParent:o.has(l.id),isExpanded:a.has(l.id),isSelected:d===l.id,onToggleExpand:s,onSelect:S,columns:b,treeCell:r?.treeCell},l.id)}),(0,n.jsx)(`div`,{style:{height:(i.length-O.end)*f},role:`presentation`,"aria-hidden":`true`})]})})]})}function zr(t,n){let[r,i]=(0,e.useState)(void 0),a=(0,e.useRef)(null);return{gridWidth:r,onHandleMouseDown:(0,e.useCallback)(e=>{e.preventDefault();let r=n.current,o=t.current;if(!r||!o)return;a.current={mouseX:e.clientX,width:r.offsetWidth,containerW:o.offsetWidth};let s=e=>{if(!a.current)return;let{mouseX:t,width:n,containerW:r}=a.current;i(Math.min(r,Math.max(10,n+(t-e.clientX))))},c=()=>{a.current=null,window.removeEventListener(`mousemove`,s),window.removeEventListener(`mouseup`,c)};window.addEventListener(`mousemove`,s),window.addEventListener(`mouseup`,c)},[t,n])}}var Br={actionsCell:`_actionsCell_1gvtx_1`};function Vr(e){let t=m(e.startDate,1);return{id:`task-${Date.now()}`,name:`New task`,startDate:t,endDate:m(t,1),duration:1,progress:0,type:`task`,parentId:e.parentId??null}}function Hr({task:e,api:t}){return(0,n.jsxs)(`div`,{className:Br.actionsCell,children:[(0,n.jsx)(`button`,{type:`button`,title:`Edit`,"aria-label":t.labels.editTask(e),onClick:n=>{n.stopPropagation(),t.editTask(e)},children:(0,n.jsx)(`span`,{"aria-hidden":`true`,children:`✎`})}),(0,n.jsx)(`button`,{type:`button`,title:`Add after`,"aria-label":t.labels.addTaskAfter(e),onClick:n=>{n.stopPropagation();let r=Vr(e);t.createTask(r,e.id),t.editTask(r)},children:(0,n.jsx)(`span`,{"aria-hidden":`true`,children:`➕`})}),(0,n.jsx)(`button`,{type:`button`,title:`Delete`,"aria-label":t.labels.deleteTask(e),style:{fontSize:9},onClick:n=>{n.stopPropagation(),t.deleteTask(e.id)},children:(0,n.jsx)(`span`,{"aria-hidden":`true`,children:`❌`})})]})}var Ur=`__action`,Wr=[{key:Ur,header:` `,width:100,render:(e,t)=>(0,n.jsx)(Hr,{task:e,api:t})},{key:`__name`,header:`Task Name`,render:e=>e.name,width:200,isTreeColumn:!0},{key:`__start`,header:`Start`,width:90,render:e=>e.startDate.toLocaleDateString()},{key:`__end`,header:`End`,width:90,render:(e,t)=>t.format.endDate(e)?.toLocaleDateString()??`—`},{key:`__progress`,header:`Progress, %`,width:90,render:e=>`${e.progress??0}%`}],Gr=Wr.filter(e=>e.key!==Ur);function Kr({tasks:t,dependencies:r,rowHeight:i,colWidth:a,height:o,scales:s,padDays:c,zoomLevels:l,defaultZoomIndex:u,onZoomChange:d,zoomWheel:f,zoomKeyboard:p,onTaskClick:m,columns:h,defaultTaskListWidth:g=280,onDependencyCreate:_,onDependencyDelete:v,onTaskCreate:y,onTaskDelete:b,onTaskEdit:x,onTasksChange:S,calendar:C,snapToWorking:w,durationUnit:T,readOnly:E=!1,apiRef:D,hideTaskList:O,taskList:ee,bars:k,dependencySlots:te,timeline:A,labels:j}){let M=(0,e.useRef)(null),N=(0,e.useRef)(null),{gridWidth:P,onHandleMouseDown:F}=zr(M,N),ne=h??(E?Gr:Wr),I=!O;return(0,n.jsx)(on,{tasks:t,dependencies:r,rowHeight:i,colWidth:a,height:o,scales:s,padDays:c,zoomLevels:l,defaultZoomIndex:u,onZoomChange:d,zoomWheel:f,zoomKeyboard:p,onTaskClick:m,onDependencyCreate:_,onDependencyDelete:v,onTaskCreate:y,onTaskDelete:b,onTaskEdit:x,onTasksChange:S,apiRef:D,labels:j,calendar:C,snapToWorking:w,durationUnit:T,readOnly:E,children:(0,n.jsx)(cn,{value:(0,e.useMemo)(()=>({bars:k,dependencies:te,timeline:A}),[k,te,A]),children:I?(0,n.jsxs)(`div`,{ref:M,role:`group`,"aria-label":j?.gantt??ye.gantt,style:{position:`relative`},children:[(0,n.jsx)(Rr,{columns:ne,taskList:ee}),(0,n.jsxs)(`div`,{ref:N,style:{position:`absolute`,top:0,right:0,zIndex:1,display:`flex`,flexDirection:`row`,background:`var(--am-gantt-grid-bg, #ffffff)`,...P===void 0?{left:g}:{width:P}},children:[(0,n.jsx)(Ar,{onMouseDown:F}),(0,n.jsx)(`div`,{style:{flex:`1 1 auto`,minWidth:0},children:(0,n.jsx)(Or,{})})]})]}):(0,n.jsx)(Or,{})})})}exports.ACTION_COLUMN_KEY=Ur,exports.BarTooltipRoot=Tn,exports.BarTooltipTrigger=En,exports.Calendar=hn,exports.DEFAULT_COLUMNS=Wr,exports.DEFAULT_ZOOM_INDEX=Dt,exports.DEFAULT_ZOOM_LEVELS=Et,exports.Gantt=Kr,exports.GanttBarTooltip=Nn,exports.GanttGrid=Or,exports.GanttProvider=on,exports.GanttSlotsProvider=cn,exports.MilestoneBar=Ln,exports.ProjectBar=Hn,exports.READ_ONLY_COLUMNS=Gr,exports.TaskBar=Gn,exports.TaskList=Rr,exports.displayEndDate=he,exports.endInstantFromDisplayDate=ge,exports.mergeSlotProps=Y,exports.useBarTooltip=wn,exports.useGanttReadOnly=Bt,exports.useGanttSlots=J;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require(`react`),t=require(`react-dom`),n=require(`react/jsx-runtime`);var r=class{cache=new Map;capacity;constructor(e){this.capacity=e}refreshKey(e){if(!this.cache.has(e))return;let t=this.cache.get(e);this.cache.delete(e),this.cache.set(e,t)}get(e){if(this.cache.has(e))return this.refreshKey(e),this.cache.get(e)}put(e,t){if(this.refreshKey(e),this.cache.set(e,t),this.cache.size>this.capacity){let[e]=this.cache.keys();this.cache.delete(e)}}};function i(e,t){let n=new r(t);return t=>{let r=n.get(t);if(r!=null)return r;let i=e(t);return n.put(t,i),i}}function a(e,t){return i(e,t)}var o=6e4,s=36e5,c=864e5,l={minute:o,hour:s,day:c,week:c*7};function u(e,t,n){let r=e.getFullYear(),i=e.getMonth(),a=e.getDate();switch(t){case`minute`:{let t=new Date(e);t.setSeconds(0,0);let r=Math.round(t.getTime()/o);return`mi-${Math.floor(r/n)}`}case`hour`:{let t=new Date(e);t.setMinutes(0,0,0);let r=Math.round(t.getTime()/s);return`h-${Math.floor(r/n)}`}case`day`:{let e=Math.floor(Date.UTC(r,i,a)/c);return`d-${Math.floor(e/n)}`}case`week`:{let e=new Date(r,i,a),t=e.getDay(),o=t===0?-6:1-t;e.setDate(e.getDate()+o);let s=Math.floor(e.getTime()/(c*7));return`w-${Math.floor(s/n)}`}case`month`:{let e=r*12+i;return`mo-${Math.floor(e/n)}`}case`quarter`:{let e=r*4+Math.floor(i/3);return`q-${Math.floor(e/n)}`}case`year`:return`y-${Math.floor(r/n)}`;default:throw Error(`Unsupported unit: ${t}`)}}function d(e){let t=e.getDay();return t===0||t===6}function f(e){return Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())/c}function p(e){let t=new Date(e*c);return new Date(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate())}function m(e,t){let n=new Date(e);return n.setHours(0,0,0,0),new Date(n.getTime()+t*c)}function h(e,t){let n=new Date(e);switch(t){case`minute`:return n.setSeconds(0,0),n;case`hour`:return n.setMinutes(0,0,0),n;case`day`:return n.setHours(0,0,0,0),n;case`week`:{n.setHours(0,0,0,0);let e=n.getDay(),t=e===0?-6:1-e;return n.setDate(n.getDate()+t),n}case`month`:return n.setHours(0,0,0,0),n.setDate(1),n;case`quarter`:return n.setHours(0,0,0,0),n.setMonth(Math.floor(n.getMonth()/3)*3,1),n;case`year`:return n.setHours(0,0,0,0),n.setMonth(0,1),n;default:throw Error(`Unsupported unit: ${t}`)}}function g(e,t,n){let r=l[t];if(r!==void 0)return t===`day`||t===`week`?m(e,r/c*n):new Date(e.getTime()+n*r);let i=new Date(e);switch(t){case`month`:return i.setMonth(i.getMonth()+n),i;case`quarter`:return i.setMonth(i.getMonth()+n*3),i;case`year`:return i.setFullYear(i.getFullYear()+n),i;default:throw Error(`Unsupported unit: ${t}`)}}function _(e,t,n){let r=l[n];if(r!==void 0)return(t.getTime()-e.getTime())/r;let i=n===`month`?1:n===`quarter`?3:12,a=e.getFullYear()*12+e.getMonth(),o=t.getFullYear()*12+t.getMonth(),s=Math.floor((o-a)/i);for(;g(e,n,s).getTime()>t.getTime();)--s;for(;g(e,n,s+1).getTime()<=t.getTime();)s+=1;let c=g(e,n,s).getTime(),u=g(e,n,s+1).getTime();return s+(t.getTime()-c)/(u-c)}function v(e,t,n){let r=l[t];if(r!==void 0)return new Date(e.getTime()+n*r);let i=Math.floor(n),a=n-i,o=g(e,t,i).getTime(),s=g(e,t,i+1).getTime();return new Date(o+a*(s-o))}function y(e,t,n=`day`,r=1){return Array.from({length:t},(t,i)=>g(e,n,i*r))}function b(e){let t=e[0];if(!t)return null;let n=t.startDate,r=t.endDate??t.startDate;for(let t of e){t.startDate<n&&(n=t.startDate);let e=t.endDate??t.startDate;e>r&&(r=e)}return{min:n,max:r}}var x=a(b,3),S=1440,C=6e4,w=[0,S],T=/^\s*(\d{1,2}):(\d{2})\s*-\s*(\d{1,2}):(\d{2})\s*$/;function E(e){let t=T.exec(e);if(!t)throw Error(`Invalid working-hours range ${JSON.stringify(e)}: expected "H:MM-H:MM", e.g. "8:30-12:00".`);let n=Number(t[1])*60+Number(t[2]),r=Number(t[3])*60+Number(t[4]);if(n<0||n>=1440)throw Error(`Invalid working-hours range ${JSON.stringify(e)}: start must be within the day.`);if(r<=n||r>1440)throw Error(`Invalid working-hours range ${JSON.stringify(e)}: end must be after start and no later than 24:00.`);return[n,r]}function D(e){if(e===void 0)return w;if(e===!1)return[];let t=e.map(E).toSorted((e,t)=>e[0]-t[0]),n=[];for(let[e,r]of t){let t=n.length>0?n[n.length-1]:void 0;if(t!==void 0&&e<=t){r>t&&(n[n.length-1]=r);continue}n.push(e,r)}return n}function O(e,t){let n=[],r=0;for(let t=0;t<e.length;t+=2)n.push(r),r+=e[t+1]-e[t];return{intervals:e,prefix:n,totalMinutes:r,id:t}}function ee(){let e=new Map;return t=>{let n=t.join(`,`),r=e.get(n);if(r)return r;let i=O(t,e.size);return e.set(n,i),i}}function k(e){return e===void 0?`*`:e===!1?`-`:e.join(`,`)}function te(e){if(!e)return``;let t=[k(e.hours)];for(let n=0;n<7;n++){let r=e.days?.[n];r!==void 0&&t.push(`${n}=${k(r)}`)}let n=e.dates;if(n)for(let e of Object.keys(n).toSorted())t.push(`${e}=${k(n[e])}`);return t.join(`|`)}var ne=/^(\d{4})-(\d{2})-(\d{2})$/;function A(e){let t=ne.exec(e);if(!t)throw Error(`Invalid calendar date key ${JSON.stringify(e)}: expected a local civil date, "YYYY-MM-DD".`);return f(new Date(Number(t[1]),Number(t[2])-1,Number(t[3])))}function j(e,t){let n=ee(),r=D(e.hours),i=[];for(let t=0;t<7;t++){let a=e.days?.[t];i.push(n(a===void 0?r:D(a)))}let a=new Map;if(e.dates)for(let[t,r]of Object.entries(e.dates))a.set(A(t),n(D(r)));let o=[...a.keys()].toSorted((e,t)=>e-t),s=0,c=!0,l=a.size===0;for(let e of i)s+=e.totalMinutes,e.totalMinutes!==0&&e.totalMinutes!==1440&&(c=!1),e.totalMinutes!==1440&&(l=!1);for(let e of a.values())e.totalMinutes!==0&&e.totalMinutes!==1440&&(c=!1);let u=0;for(let e of i)e.totalMinutes>u&&(u=e.totalMinutes);return{key:t,byWeekday:i,byDate:a,overrideDays:o,isAlwaysWorking:l,isDayGranular:c,weekMinutes:s,msPerWorkingDay:u*C}}function M(e,t){return e.byDate.get(t)||e.byWeekday[((t+4)%7+7)%7]}function N(e,t){let n=e.overrideDays,r=0,i=n.length;for(;r<i;){let e=r+i>>1;n[e]<t?r=e+1:i=e}return r<n.length?n[r]:1/0}function P(e,t){let n=e.overrideDays,r=0,i=n.length;for(;r<i;){let e=r+i>>1;n[e]<=t?r=e+1:i=e}return r>0?n[r-1]:-1/0}function F(t){let n=(0,e.useRef)(null),r=te(t);return(!n.current||n.current.key!==r)&&(n.current={key:r,value:t?j(t,r):null}),n.current.value}var I=36e5,L=864e5,R=2e4;function z(e){return(e.getHours()*I+e.getMinutes()*C+e.getSeconds()*1e3+e.getMilliseconds())/C}function B(e,t){let n=p(e);return new Date(n.getFullYear(),n.getMonth(),n.getDate(),0,0,0,Math.round(t*C))}function V(e,t){let{intervals:n,prefix:r}=e;for(let e=0,i=0;e<n.length;e+=2,i++){let a=n[e],o=n[e+1];if(t<=a)return r[i];if(t<o)return r[i]+(t-a)}return e.totalMinutes}function re(e,t){let{intervals:n,prefix:r}=e,i=n.length>0?n[0]:0;for(let e=0,a=0;e<n.length&&!(r[a]>=t);e+=2,a++)i=n[e]+(t-r[a]);return i}function ie(e,t){let{intervals:n,prefix:r}=e;for(let e=0,i=0;e<n.length;e+=2,i++){let a=n[e+1]-n[e];if(t<r[i]+a)return n[e]+(t-r[i])}return n.length>0?n[n.length-1]:0}function ae(e,t){let{intervals:n}=e;for(let e=0;e<n.length;e+=2)if(t<n[e+1])return Math.max(t,n[e]);return null}function oe(e,t){let{intervals:n}=e,r=null;for(let e=0;e<n.length;e+=2)t>n[e]&&(r=Math.min(t,n[e+1]));return r}function se(e,t){if(!e||e.isAlwaysWorking)return!0;let n=M(e,f(t)),r=z(t),{intervals:i}=n;for(let e=0;e<i.length;e+=2)if(r>=i[e]&&r<i[e+1])return!0;return!1}function ce(e,t,n){if(!e||e.isAlwaysWorking||e.weekMinutes===0&&e.byDate.size===0)return t;let r=f(t),i=z(t);for(let a=0;a<R;a++){let a=M(e,r);if(n===1){let e=ae(a,i);if(e!==null)return e===i&&r===f(t)?t:B(r,e);r+=1,i=0;continue}let o=oe(a,i);if(o!==null)return o===i&&r===f(t)?t:B(r,o);--r,i=S}return t}function le(e,t){if(!e||e.isAlwaysWorking||se(e,t))return t;let n=ce(e,t,1),r=ce(e,t,-1);return n.getTime()-t.getTime()<=t.getTime()-r.getTime()?n:r}function ue(e,t,n){let r=f(t),i=z(t),a=n;for(let t=0;t<R;t++){let t=M(e,r),n=V(t,i),o=t.totalMinutes-n;if(a<=o)return B(r,re(t,n+a));if(a-=o,r+=1,i=0,e.weekMinutes>0&&a>e.weekMinutes){let t=N(e,r),n=t===1/0?1/0:Math.floor((t-r)/7),i=Math.ceil(a/e.weekMinutes)-1,o=Math.min(n,i);o>0&&Number.isFinite(o)&&(r+=o*7,a-=o*e.weekMinutes)}}return B(r,i)}function de(e,t,n){let r=f(t),i=z(t),a=n;for(let t=0;t<R;t++){let t=M(e,r),n=V(t,i);if(a<=n)return B(r,ie(t,n-a));if(a-=n,--r,i=S,e.weekMinutes>0&&a>e.weekMinutes){let t=P(e,r),n=t===-1/0?1/0:Math.floor((r-t)/7),i=Math.ceil(a/e.weekMinutes)-1,o=Math.min(n,i);o>0&&Number.isFinite(o)&&(r-=o*7,a-=o*e.weekMinutes)}}return B(r,i)}function H(e,t,n,r){if(!e)return new Date(t.getTime()+n);let i=ce(e,t,r??(n<0?-1:1));return n===0||e.weekMinutes===0&&e.byDate.size===0?i:n>0?ue(e,i,n/C):de(e,i,-n/C)}function fe(e,t,n){if(!e)return n.getTime()-t.getTime();if(n.getTime()<t.getTime())return-fe(e,n,t);let r=f(n),i=f(t),a=z(t),o=0;for(;i<r;){if(a===0&&e.weekMinutes>0){let t=N(e,i),n=Math.floor((Math.min(r,t)-i)/7);if(n>0){o+=n*e.weekMinutes,i+=n*7;continue}}let t=M(e,i);o+=t.totalMinutes-V(t,a),i+=1,a=0}let s=M(e,i);return o+=V(s,z(n))-V(s,a),o*C}var pe={isNonWorking:!1};function U(e,t,n){if(!e){let e=t.getDay();return e===0||e===6?{isNonWorking:!0,reason:`weekend`}:pe}if(fe(e,t,n)>0)return pe;let r=f(t);return e.byDate.has(r)?{isNonWorking:!0,reason:`holiday`}:M(e,r).totalMinutes===0?{isNonWorking:!0,reason:`weekend`}:{isNonWorking:!0,reason:`offHours`}}function W(e,t){return t===`minute`?C:t===`hour`?I:!e||e.msPerWorkingDay===0?L:e.msPerWorkingDay}function me(e,t,n,r,i){return H(e,t,n*W(e,r),i)}var G={calendar:null,durationUnit:`day`,snapToWorking:!0};function K(e,t){return e.type===`milestone`||e.duration===0?e.startDate:e.endDate?e.endDate:e.duration===void 0?e.startDate:me(t.calendar,e.startDate,e.duration,t.durationUnit,1)}function he(e,t){return t.getTime()<=e.getTime()?h(e,`day`):h(new Date(t.getTime()-1),`day`)}function ge(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+1)}function _e(e,t){let n=K(e,t);if(!(n.getTime()<=e.startDate.getTime()))return he(e.startDate,n)}function ve(e,t){return fe(t.calendar,e.startDate,K(e,t))/W(t.calendar,t.durationUnit)}var ye={gantt:`Gantt chart`,taskList:`Task list`,timeline:`Timeline`,expand:`Expand`,collapse:`Collapse`,resizeTaskList:`Resize task list`,deleteDependency:`Delete dependency`,editTask:e=>`Edit ${e.name}`,addTaskAfter:e=>`Add task after ${e.name}`,deleteTask:e=>`Delete ${e.name}`,bar:(e,{progress:t})=>Ce(e,t)};function be(e){return e?{...ye,...e}:ye}function xe(e){return e.toLocaleDateString(void 0,{dateStyle:`medium`})}var Se={task:`task`,milestone:`milestone`,summary:`summary`};function Ce(e,t){let n=Se[e.type??`task`],r=[e.name,n];return e.endDate&&e.endDate.getTime()!==e.startDate.getTime()?r.push(`${xe(e.startDate)} to ${xe(e.endDate)}`):r.push(xe(e.startDate)),e.type!==`milestone`&&r.push(`${Math.round(t)}% complete`),r.join(`, `)}function we(e,t,n){switch(t){case`minute`:case`hour`:return e.toLocaleString(void 0,{dateStyle:`long`,timeStyle:`short`});case`day`:return e.toLocaleDateString(void 0,{dateStyle:`long`});case`week`:return`Week of ${e.toLocaleDateString(void 0,{dateStyle:`long`})}`;case`month`:return e.toLocaleDateString(void 0,{month:`long`,year:`numeric`});case`quarter`:return`Q${Math.floor(e.getMonth()/3)+1} ${e.getFullYear()}`;case`year`:return n>1?`${e.getFullYear()} to ${e.getFullYear()+n-1}`:String(e.getFullYear())}}function Te(e,t=G){let n=Ie(e.values()),r=n.get(null)??[],i=[];for(let e of r)Ne(e,n,i,t);return i}function Ee(e){let t=new Map;for(let n of e)t.set(n.id,n);return t}function De(e,t){return Oe(new Map(e),t)}function Oe(e,t){for(let n of t)switch(n.type){case`update`:e.has(n.task.id)&&e.set(n.task.id,n.task);break;case`delete`:e.delete(n.id);break;case`create`:e=ke(e,n.task,n.afterId);break}return e}function ke(e,t,n){if(n==null)return e.set(t.id,t),e;let r=new Map;e.has(n)||r.set(t.id,t);for(let[i,a]of e)r.set(i,a),i===n&&r.set(t.id,t);return r}var Ae=32;function je(){return{seedTasks:null,snapshots:new r(Ae)}}function Me(e,t,n){e.seedTasks!==t&&(e.seedTasks=t,e.snapshots=new r(Ae));let i=0,a=null;for(let t=n.cursor;t>=1;t--){let r=e.snapshots.get(t);if(r&&r.producedBy===n.transactions[t-1]){i=t,a=r.map;break}}if(!a){let n=e.snapshots.get(0);a=n?n.map:Ee(t),n||e.snapshots.put(0,{producedBy:null,map:a})}for(let t=i;t<n.cursor;t++){let r=n.transactions[t];a=De(a,r),e.snapshots.put(t+1,{producedBy:r,map:a})}return a}function Ne(e,t,n,r){let i=t.get(e.id);if(!i||i.length===0){let t=Pe(e,r);return n.push(t),t}let a=n.length;n.push(e);let o=[];for(let e of i)o.push(Ne(e,t,n,r));let s=Fe(e,o,r);return n[a]=s,s}function Pe(e,t){let n=K(e,t);return e.endDate&&e.endDate.getTime()===n.getTime()||!e.endDate&&n===e.startDate?e:{...e,endDate:n}}function Fe(e,t,n=G){if(e.type!==`summary`||t.length===0)return Pe(e,n);let r=t[0].startDate,i=K(t[0],n),a=0,o=0;for(let e of t){e.startDate<r&&(r=e.startDate);let t=K(e,n);t>i&&(i=t),e.type!==`milestone`&&(o++,a+=e.progress??0)}let s=o===0?0:Math.round(a/o);return{...e,startDate:r,endDate:i,progress:s}}function Ie(e){let t=new Map;for(let n of e){let e=n.parentId??null,r=t.get(e)??[];r.push(n),t.set(e,r)}return t}var Le=class{items=[];head=0;constructor(e){e&&this.items.push(...e)}get size(){return this.items.length-this.head}isEmpty(){return this.size===0}enqueue(e){this.items.push(e)}dequeue(){if(this.head>=this.items.length)return;let e=this.items[this.head];return this.head++,this.head>this.items.length>>1&&(this.items=this.items.slice(this.head),this.head=0),e}};function Re(e,t){return{start:e.startDate,end:K(e,t)}}function ze(e,t){let{start:n,end:r}=Re(e,t);return fe(t.calendar,n,r)}function Be(e,t,n,r,i){let a=i.calendar;switch(t){case`FS`:return H(a,e.end,n,1);case`SS`:return H(a,e.start,n,1);case`FF`:return H(a,H(a,e.end,n,-1),-r,-1);case`SF`:return H(a,H(a,e.start,n,-1),-r,-1)}}function Ve(e){let t=new Map,n=new Map;for(let r of e){let e=t.get(r.from);e?e.push(r.to):t.set(r.from,[r.to]);let i=n.get(r.to);i?i.push(r):n.set(r.to,[r])}return{successorsOf:t,predecessorDeps:n,size:e.length}}function He(e){let t=new Map;return{get:n=>t.get(n)??e.get(n),set:(e,n)=>{t.set(e,n)},get size(){return e.size}}}function Ue(e,t,n,r){let i=ze(e,r),a=W(r.calendar,r.durationUnit),o=null;for(let s of t.get(e.id)??[]){let e=n.get(s.from);if(!e)continue;let t=Be(Re(e,r),s.type,(s.lag??0)*a,i,r);(o===null||t>o)&&(o=t)}return o===null?null:ce(r.calendar,o,1)}function We(e,t,n){return e.type===`milestone`?{...e,startDate:t,endDate:t}:{...e,startDate:t,endDate:H(n.calendar,t,ze(e,n),1)}}function Ge(e,t,n){let r=n.calendar,i=n.snapToWorking,a=Re(e,n);if(e.type===`milestone`){let e=t.kind===`resizeEnd`?t.endDate:t.startDate,n=i?le(r,e):e;return{startDate:n,endDate:n}}if(t.kind===`move`){let e=fe(r,a.start,a.end),n=i?ce(r,t.startDate,1):t.startDate;return{startDate:n,endDate:H(r,n,e,1)}}let o=t.kind===`resizeStart`?t.startDate:a.start,s=t.kind===`resizeEnd`?t.endDate:a.end,c=i?ce(r,o,1):o,l=i?ce(r,s,-1):s;if(fe(r,c,l)<=0){let e=W(r,n.durationUnit);return t.kind===`resizeStart`?{startDate:H(r,l,-e,-1),endDate:l}:{startDate:c,endDate:H(r,c,e,1)}}return{startDate:c,endDate:l}}function Ke(e,t,n,r=G){let{successorsOf:i,predecessorDeps:a}=t,o=new Map,s=e.get(n);if(s){let t=Ue(s,a,e,r);if(t!==null&&t.getTime()>s.startDate.getTime()){let i=We(s,t,r);e.set(n,i),o.set(n,i)}}let c=new Le([n]),l=(t.size+1)*(e.size+1),u=0;for(;!c.isEmpty()&&!(u++>l);){let t=c.dequeue();for(let n of i.get(t)??[]){let t=e.get(n);if(!t)continue;let i=Ue(t,a,e,r);if(i===null||i.getTime()<=t.startDate.getTime())continue;let s=We(t,i,r);e.set(n,s),o.set(n,s),c.enqueue(n)}}return o}var qe={transactions:[],cursor:0},Je=[];function Ye(t){(0,e.startTransition)(t)}function Xe(e,t){let n=e.transactions.slice(0,e.cursor);return{transactions:[...n,t],cursor:n.length+1}}function Ze(e,t){return e instanceof Date&&t instanceof Date?e.getTime()===t.getTime():Object.is(e,t)}function Qe(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);for(let r of n)if(!Ze(e[r],t[r]))return!1;return!0}var $e=(n,r=Je,i={},a=G)=>{let o=(0,e.useRef)(i);o.current=i;let s=(0,e.useRef)(a);s.current=a;let[c,l]=(0,e.useState)(qe),u=(0,e.useMemo)(()=>Ve(r),[r]),d=(0,e.useRef)(null),f=(0,e.useMemo)(()=>(d.current??=je(),Me(d.current,n,c)),[n,c]),p=(0,e.useRef)(f);p.current=f;let m=(0,e.useMemo)(()=>Te(f,a),[f,a]),h=(0,e.useCallback)((e,t)=>{let n=p.current.get(e);if(!n)return;let{startDate:r,endDate:i}=Ge(n,t,s.current),a={...n,startDate:r,endDate:i};if(Qe(a,n))return;let o=[{type:`update`,task:a}];if(u.size>0){let t=He(p.current);t.set(e,a);let n=Ke(t,u,e,s.current);for(let e of n.values())o.push({type:`update`,task:e})}Ye(()=>l(e=>Xe(e,o)))},[u]),g=(0,e.useCallback)((e,t)=>{let n=p.current.get(e);if(!n)return;let r={...n};if(t.name!==void 0&&(r.name=t.name),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),t.progress!==void 0&&(r.progress=t.progress),Qe(r,n))return;let i=[{type:`update`,task:r}];if((t.startDate!==void 0||t.endDate!==void 0)&&u.size>0){let t=He(p.current);t.set(e,r);let n=Ke(t,u,e,s.current);for(let e of n.values())i.push({type:`update`,task:e})}Ye(()=>l(e=>Xe(e,i)))},[u]),_=(0,e.useCallback)((e,n)=>{(0,t.flushSync)(()=>{l(t=>Xe(t,[{type:`create`,task:e,afterId:n}]))}),o.current.onTaskCreate?.(e,n)},[]),v=(0,e.useCallback)(e=>{Ye(()=>l(t=>Xe(t,[{type:`delete`,id:e}]))),o.current.onTaskDelete?.(e)},[]),y=(0,e.useCallback)(()=>{Ye(()=>l(e=>e.cursor>0?{...e,cursor:e.cursor-1}:e))},[]),b=(0,e.useCallback)(()=>{Ye(()=>l(e=>e.cursor<e.transactions.length?{...e,cursor:e.cursor+1}:e))},[]),x=c.cursor>0,S=c.cursor<c.transactions.length,C=(0,e.useRef)(m);C.current=m;let w=(0,e.useRef)(c);return(0,e.useEffect)(()=>{w.current!==c&&(w.current=c,o.current.onTasksChange?.(C.current))},[c]),{tasksList:m,updateTask:g,commitTask:h,createTask:_,deleteTask:v,undo:y,redo:b,canUndo:x,canRedo:S}};function q(t){let n=(0,e.useRef)(t);return n.current=t,n}function et(t){let n=(0,e.useMemo)(()=>{let e=new Set;for(let n of t)n.parentId!=null&&e.add(n.parentId);return e},[t]),[r,i]=(0,e.useState)(new Set),a=(0,e.useCallback)(e=>{i(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),o=q(t),s=(0,e.useCallback)(e=>{i(t=>{if(t.size===0)return t;let n=new Map;for(let e of o.current)n.set(e.id,e);let r=new Set(t),i=!1,a=n.get(e);for(;a&&a.parentId!=null;)r.delete(a.parentId)&&(i=!0),a=n.get(a.parentId);return i?r:t})},[o]),c=(0,e.useMemo)(()=>{let e=new Set;for(let t of n)r.has(t)||e.add(t);return e},[n,r]);return{visibleTasks:(0,e.useMemo)(()=>{if(r.size===0)return t;let e=new Set,n=[];for(let i of t){if(i.parentId!=null&&(e.has(i.parentId)||r.has(i.parentId))){e.add(i.id);continue}n.push(i)}return n},[t,r]),expandedIds:c,parentIds:n,toggleExpand:a,revealAncestors:s}}var tt=typeof window<`u`?e.useLayoutEffect:e.useEffect,nt={scrollTop:0,scrollLeft:0,clientWidth:0,clientHeight:0};function rt(e){return{scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,clientWidth:e.clientWidth,clientHeight:e.clientHeight}}function it(e,t,n){return e.scrollTop!==t.scrollTop||e.clientHeight!==t.clientHeight?!1:n?e.scrollLeft===t.scrollLeft&&e.clientWidth===t.clientWidth:!0}function at(t,{trackHorizontal:n=!0}={}){let r=(0,e.useRef)(null),i=q(n),[a,o]=(0,e.useState)(nt),s=(0,e.useCallback)(()=>{r.current===null&&(r.current=requestAnimationFrame(()=>{r.current=null;let e=t.current;if(!e)return;let n=rt(e);o(e=>it(e,n,i.current)?e:n)}))},[t,i]);return tt(()=>{let e=t.current;e&&o(t=>{let n=rt(e);return it(t,n,i.current)?t:n})},[t]),(0,e.useEffect)(()=>{let e=t.current;if(!e||typeof ResizeObserver>`u`)return;let n=new ResizeObserver(s);return n.observe(e),()=>{n.disconnect(),r.current!==null&&(cancelAnimationFrame(r.current),r.current=null)}},[s,t]),{viewport:a,scheduleMeasure:s}}function ot(){let t=(0,e.useRef)(null),n=(0,e.useRef)(null),r=(0,e.useRef)(!1),{viewport:i,scheduleMeasure:a}=at(n);return{taskListRef:t,gridRef:n,onTaskListScroll:(0,e.useCallback)(()=>{r.current||!t.current||!n.current||(r.current=!0,n.current.scrollTop=t.current.scrollTop,r.current=!1,a())},[a]),onGridScroll:(0,e.useCallback)(()=>{n.current&&t.current&&!r.current&&(r.current=!0,t.current.scrollTop=n.current.scrollTop,r.current=!1),a()},[a]),viewport:i}}function st(t){let n=(0,e.useRef)(t);n.current=t;let r=(0,e.useCallback)((...e)=>n.current?.(...e),[]);if(t)return r}function ct(e,t,n,r,i=0){let a=n+r;return e-i<n?Math.max(0,e-i):e+t+i>a?e+t+i-r:n}function lt(e,t={},n,r,i=`day`){let a=t.startDate??e.startDate,o=t.endDate??e.endDate??a,s=_(n,a,i),c=_(n,o,i);return{left:s*r,width:(c-s)*r,progress:t.progress??e.progress??0}}function ut(e,t,n,r=`day`){return v(t,r,e/n)}var dt=[{unit:`month`,step:1,format:e=>e.toLocaleString(void 0,{month:`long`,year:`numeric`})},{unit:`day`,step:1,format:e=>String(e.getDate())}];function ft(e){return(e??dt).at(-1)?.unit??`day`}function pt(e){return(e??dt).at(-1)?.step??1}function mt(e,t,n){let r=x(e);return r?ht(r.min,ft(t),n,pt(t)):null}function ht(e,t,n,r){return h(g(h(e,t),t,-n*r),t)}function gt(e,t=0,n){let r=x(e);if(!r)return[];let i=ft(n),a=pt(n),o=ht(r.min,i,t,a),s=g(h(r.max,i),i,t*a);return y(o,Math.round(_(o,s,i)/a)+1,i,a)}function _t({taskListRef:t,gridRef:n,tasksList:r,visibleTasks:i,rowHeight:a,colWidth:o,scales:s,padDays:c,revealAncestors:l}){let u=q(r),d=q(i),f=(0,e.useRef)(()=>{}),p=(0,e.useRef)(null),m=e=>{let r=t.current??n.current;if(!r)return;let i=ct(e*a,a,r.scrollTop,r.clientHeight,a);i!==r.scrollTop&&(r.scrollTop=i)},h=e=>{let t=n.current,r=mt(d.current,s,c);if(!t||!r)return;let{left:i,width:a}=lt(e,{},r,o,ft(s)),l=ct(i,a,t.scrollLeft,t.clientWidth,o);l!==t.scrollLeft&&(t.scrollLeft=l)};return f.current=(e,t)=>{let{vertical:n=!0,horizontal:r=!1}=t??{},i=d.current.findIndex(t=>t.id===e);if(i<0){if(!u.current.some(t=>t.id===e))return;p.current={id:e,options:t},l(e);return}n&&m(i),r&&h(d.current[i])},(0,e.useLayoutEffect)(()=>{let e=p.current;e&&(p.current=null,f.current(e.id,e.options))},[i]),(0,e.useCallback)((e,t)=>f.current(e,t),[])}function vt({gridRef:t,visibleTasks:n,padDays:r,levels:i,initialIndex:a}){let o=(0,e.useCallback)(e=>Math.max(0,Math.min(i.length-1,e)),[i.length]),[s,c]=(0,e.useState)(()=>o(a)),l=q(s),u=q(n),d=q(r),f=q(i),p=(0,e.useRef)(null),m=(0,e.useCallback)((e,n)=>{let r=l.current,i=o(r+n);if(i===r)return;let a=t.current,s=f.current[r],m=mt(u.current,s.scales,d.current);a&&m?p.current={date:v(m,ft(s.scales),e/s.colWidth),viewportOffset:e-a.scrollLeft}:p.current=null,c(i)},[o,t,l,u,d,f]),h=(0,e.useCallback)(()=>{let e=t.current;return e?e.scrollLeft+e.clientWidth/2:0},[t]),g=(0,e.useCallback)(()=>m(h(),1),[m,h]),y=(0,e.useCallback)(()=>m(h(),-1),[m,h]),b=(0,e.useCallback)(e=>m(h(),o(e)-l.current),[m,h,o,l]);return(0,e.useLayoutEffect)(()=>{let e=p.current;if(e===null)return;p.current=null;let n=t.current,r=f.current[s],i=mt(u.current,r.scales,d.current);if(!n||!i)return;let a=ft(r.scales),o=_(i,e.date,a)*r.colWidth;n.scrollLeft=Math.max(0,o-e.viewportOffset)},[s]),{index:s,level:i[s],count:i.length,canZoomIn:s<i.length-1,canZoomOut:s>0,zoomIn:g,zoomOut:y,setZoom:b,zoomAt:m}}var yt=e=>String(e).padStart(2,`0`),bt=e=>String(e.getFullYear()),xt=e=>`Q${Math.floor(e.getMonth()/3)+1}`,St=e=>e.toLocaleString(void 0,{month:`long`,year:`numeric`}),Ct=e=>e.toLocaleString(void 0,{month:`short`}),wt=e=>String(e.getDate()),Tt=e=>e.toLocaleString(void 0,{weekday:`short`,day:`numeric`}),Et=[{colWidth:56,scales:[{unit:`year`,step:1,format:bt},{unit:`quarter`,step:1,format:xt}]},{colWidth:44,scales:[{unit:`year`,step:1,format:bt},{unit:`month`,step:1,format:Ct}]},{colWidth:60,scales:[{unit:`month`,step:1,format:St},{unit:`week`,step:1,format:Tt}]},{colWidth:40,scales:[{unit:`month`,step:1,format:St},{unit:`day`,step:1,format:wt}]},{colWidth:44,scales:[{unit:`day`,step:1,format:Tt},{unit:`hour`,step:1,format:e=>`${yt(e.getHours())}:00`}]}],Dt=3;function Ot(e,t,n){return e&&e.length>0?e:!t&&n===void 0?Et:Et.map((e,r)=>r===3?{scales:t??e.scales,colWidth:n??e.colWidth}:e)}var kt={end:{start:`FS`,end:`FF`},start:{start:`SS`,end:`SF`}};function At({gridBodyRef:t,onDependencyCreate:n}){let r=q(n),[i,a]=(0,e.useState)(null),o=q(i),s=(0,e.useRef)(null),c=(0,e.useRef)(null),l=(0,e.useRef)(null),u=(0,e.useCallback)(()=>{s.current&&=(window.removeEventListener(`mousemove`,s.current.move),window.removeEventListener(`mouseup`,s.current.up),null),c.current!==null&&(cancelAnimationFrame(c.current),c.current=null)},[]);return(0,e.useEffect)(()=>u,[u]),{drag:i,startDrag:(0,e.useCallback)(e=>{a(e);let n=e=>{l.current={x:e.clientX,y:e.clientY},c.current===null&&(c.current=requestAnimationFrame(()=>{c.current=null;let e=t.current,n=l.current;if(!e||!n)return;let r=e.getBoundingClientRect();a(e=>e?{...e,currentX:n.x-r.left,currentY:n.y-r.top}:null)}))},r=()=>{a(null),u()};s.current={move:n,up:r},window.addEventListener(`mousemove`,n),window.addEventListener(`mouseup`,r)},[u,t]),endDrag:(0,e.useCallback)((e,t)=>{let n=o.current;if(n&&e!==null&&t&&e!==n.fromTaskId){let i=kt[n.handle][t];r.current?.({from:n.fromTaskId,to:e,type:i})}a(null),u()},[u,o,r])}}function jt(t){let{createTask:n,updateTask:r,deleteTask:i,undo:a,redo:o,revealTask:s,zoomIn:c,zoomOut:l,setZoom:u}=t;return(0,e.useMemo)(()=>({createTask:n,updateTask:r,deleteTask:i,undo:a,redo:o,revealTask:s,zoomIn:c,zoomOut:l,setZoom:u}),[n,r,i,a,o,s,c,l,u])}function Mt({handle:t,readOnly:n,labels:r,schedulingContext:i,onTaskEditRef:a}){return(0,e.useMemo)(()=>({...t,editTask:e=>a.current?.(e),readOnly:n,labels:r,format:{endDate:e=>_e(e,i),duration:e=>ve(e,i)}}),[t,a,n,r,i])}var Nt=(0,e.createContext)(null);function Pt(){let t=(0,e.useContext)(Nt);if(!t)throw Error(`useGanttConfig must be used within a <GanttProvider>`);return t}var Ft=(0,e.createContext)(ye);function It(){return(0,e.useContext)(Ft)}var Lt=(0,e.createContext)(G);function Rt(){return(0,e.useContext)(Lt)}var zt=(0,e.createContext)(!1);function Bt(){return(0,e.useContext)(zt)}var Vt=(0,e.createContext)(null);function Ht(){let t=(0,e.useContext)(Vt);if(!t)throw Error(`useGanttTaskState must be used within a <GanttProvider>`);return t}var Ut=(0,e.createContext)(null);function Wt(){let t=(0,e.useContext)(Ut);if(!t)throw Error(`useGanttTaskActions must be used within a <GanttProvider>`);return t}var Gt=(0,e.createContext)(null);function Kt(){return(0,e.useContext)(Gt)}var qt=(0,e.createContext)(null);function Jt(){let t=(0,e.useContext)(qt);if(!t)throw Error(`useGanttScroll must be used within a <GanttProvider>`);return t}var Yt=(0,e.createContext)(null);function Xt(){let t=(0,e.useContext)(Yt);if(!t)throw Error(`useGanttViewport must be used within a <GanttProvider>`);return t}var Zt=(0,e.createContext)(null);function Qt(){let t=(0,e.useContext)(Zt);if(!t)throw Error(`useGanttDependency must be used within a <GanttProvider>`);return t}var $t=(0,e.createContext)(!1);function en(){return(0,e.useContext)($t)}var tn=(0,e.createContext)(null);function nn(){return(0,e.useContext)(tn)}var rn=(0,e.createContext)(null);function an(){let t=(0,e.useContext)(rn);if(!t)throw Error(`useGanttZoom must be used within a <GanttProvider>`);return t}function on({tasks:t,rowHeight:r=36,colWidth:i,height:a,scales:o,padDays:s=1,zoomLevels:c,defaultZoomIndex:l,onZoomChange:u,zoomWheel:d=!1,zoomKeyboard:f=!1,dependencies:p=Je,onTaskClick:m,onDependencyCreate:h,onDependencyDelete:g,onTaskCreate:_,onTaskDelete:v,onTaskEdit:y,onTasksChange:b,apiRef:x,labels:S,calendar:C,snapToWorking:w=!0,durationUnit:T=`day`,readOnly:E=!1,children:D}){let[O,ee]=(0,e.useState)(null),k=(0,e.useMemo)(()=>be(S),[S]),te=F(C),ne=(0,e.useMemo)(()=>({calendar:te,durationUnit:T,snapToWorking:w}),[te,T,w]),A=q(y),j=st(m),M=st(g),{tasksList:N,updateTask:P,commitTask:I,createTask:L,deleteTask:R,undo:z,redo:B,canUndo:V,canRedo:re}=$e(t,p,{onTaskCreate:_,onTaskDelete:v,onTasksChange:b},ne),{visibleTasks:ie,expandedIds:ae,parentIds:oe,toggleExpand:se,revealAncestors:ce}=et(N),{taskListRef:le,gridRef:ue,onTaskListScroll:de,onGridScroll:H,viewport:fe}=ot(),pe=(0,e.useRef)(null),U=vt({gridRef:ue,visibleTasks:ie,padDays:s,levels:(0,e.useMemo)(()=>Ot(c,o,i),[c,o,i]),initialIndex:l??3}),W=_t({taskListRef:le,gridRef:ue,tasksList:N,visibleTasks:ie,rowHeight:r,colWidth:U.level.colWidth,scales:U.level.scales,padDays:s,revealAncestors:ce}),me=q(u);(0,e.useEffect)(()=>{me.current?.({index:U.index,count:U.count})},[U.index,U.count,me]);let G=(0,e.useCallback)((e,t)=>{L(e,t),ee(e.id),W(e.id)},[L,W]),{zoomIn:K,zoomOut:he,setZoom:ge,zoomAt:_e}=U,ve=jt({createTask:G,updateTask:P,deleteTask:R,undo:z,redo:B,revealTask:W,zoomIn:K,zoomOut:he,setZoom:ge});(0,e.useImperativeHandle)(x,()=>ve,[ve]);let ye=Mt({handle:ve,readOnly:E,labels:k,schedulingContext:ne,onTaskEditRef:A}),{drag:xe,startDrag:Se,endDrag:Ce}=At({gridBodyRef:pe,onDependencyCreate:h}),we=(0,e.useMemo)(()=>({rowHeight:r,colWidth:U.level.colWidth,scales:U.level.scales,padDays:s,height:a}),[r,U.level,s,a]),Te=(0,e.useMemo)(()=>({zoomIn:K,zoomOut:he,zoomAt:_e,wheelEnabled:d,keyboardEnabled:f}),[K,he,_e,d,f]),Ee=(0,e.useMemo)(()=>({tasksList:N,visibleTasks:ie,expandedIds:ae,parentIds:oe,canUndo:V,canRedo:re}),[N,ie,ae,oe,V,re]),De=(0,e.useMemo)(()=>({updateTask:P,commitTask:I,createTask:G,deleteTask:R,undo:z,redo:B,columnApi:ye,setSelectedId:ee,toggleExpand:se,onTaskClick:j,revealTask:W}),[P,I,G,R,z,B,ye,se,j,W]),Oe=(0,e.useMemo)(()=>({taskListRef:le,gridRef:ue,gridBodyRef:pe,onTaskListScroll:de,onGridScroll:H}),[le,ue,de,H]),ke=(0,e.useMemo)(()=>({dependencies:p,onDependencyDelete:M,startDrag:Se,endDrag:Ce}),[p,M,Se,Ce]);return(0,n.jsx)(Nt.Provider,{value:we,children:(0,n.jsx)(zt.Provider,{value:E,children:(0,n.jsx)(Ft.Provider,{value:k,children:(0,n.jsx)(Lt.Provider,{value:ne,children:(0,n.jsx)(rn.Provider,{value:Te,children:(0,n.jsx)(qt.Provider,{value:Oe,children:(0,n.jsx)(Ut.Provider,{value:De,children:(0,n.jsx)(Zt.Provider,{value:ke,children:(0,n.jsx)(Vt.Provider,{value:Ee,children:(0,n.jsx)(Gt.Provider,{value:O,children:(0,n.jsx)($t.Provider,{value:xe!==null,children:(0,n.jsx)(Yt.Provider,{value:fe,children:(0,n.jsx)(tn.Provider,{value:xe,children:D})})})})})})})})})})})})})}var sn=(0,e.createContext)({});function cn({value:e,children:t}){return(0,n.jsx)(sn.Provider,{value:e,children:t})}function J(){return(0,e.useContext)(sn)}function ln(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=ln(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function un(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=ln(e))&&(r&&(r+=` `),r+=t);return r}function Y(e,t,n){let r=typeof t==`function`?t(n):t;if(!r)return e;let{className:i,style:a,...o}=r;return{...e,...o,className:un(e.className,i),style:{...e.style,...a}}}var dn={calendar:`_calendar_1ksbu_1`,row:`_row_1ksbu_19`,cell:`_cell_1ksbu_29`,cellWeekend:`_cellWeekend_1ksbu_56`};function fn(e,t){let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=u(i,t.unit,t.step),o=n[n.length-1];o&&o.key===a?o.count+=1:n.push({key:a,start:i,startIndex:r,count:1})}return n}function pn(e,t){if(!t)return{start:0,end:e.length};let n=0,r=e.length;for(;n<r;){let i=n+r>>1,a=e[i];a.startIndex+a.count<=t.start?n=i+1:r=i}let i=n;for(;i<e.length&&e[i].startIndex<t.end;)i+=1;return{start:n,end:i}}function mn({scale:t,dates:r,colWidth:i,rowHeight:a,highlightWeekends:o=!1,colRange:s,rowIndex:c,slots:l,slotProps:u}){let f=J(),p=l??f.timeline?.calendarRow?.slots,{calendar:m}=Rt(),h=u??f.timeline?.calendarRow?.slotProps,_=(0,e.useMemo)(()=>fn(r,t),[r,t]),v=pn(_,s),y=p?.row??`div`,b=p?.cell??`div`,x={scale:t,colWidth:i,rowHeight:a,highlightWeekends:o};return(0,n.jsx)(y,{...Y({className:dn.row,style:{height:a},role:`row`,"aria-rowindex":c},h?.row,x),children:_.slice(v.start,v.end).map(e=>{let r=o&&m?U(m,e.start,g(e.start,t.unit,t.step)):{isNonWorking:!1,reason:void 0},a=m?r.isNonWorking:o&&d(e.start),s={scale:t,date:e.start,startIndex:e.startIndex,count:e.count,isNonWorking:a,nonWorkingReason:a?r.reason??`weekend`:void 0,isWeekend:a,colWidth:i};return(0,n.jsx)(b,{...Y({className:un(dn.cell,a&&dn.cellWeekend),style:{left:e.startIndex*i,width:e.count*i},children:t.format(e.start),role:`columnheader`,"aria-colindex":e.startIndex+1,"aria-colspan":e.count,"aria-label":t.ariaFormat?t.ariaFormat(e.start):we(e.start,t.unit,t.step)},h?.cell,s)},e.key)})})}function hn({colWidth:e,rowHeight:t,scales:r=dt,dates:i,colRange:a}){let o=i.length*e;return(0,n.jsx)(`div`,{className:dn.calendar,style:{width:o},role:`rowgroup`,children:r.map((r,o)=>(0,n.jsx)(mn,{scale:r,dates:i,colWidth:e,rowHeight:t,highlightWeekends:r.unit===`day`&&r.step===1,colRange:a,rowIndex:o+1},`${r.unit}-${r.step}`))})}var gn=40,_n=14;function vn(e){let t=e;for(;t;){let e=getComputedStyle(t);if((e.overflowX===`auto`||e.overflowX===`scroll`)&&t.scrollWidth>t.clientWidth)return t;t=t.parentElement}return document.scrollingElement}function yn(e){if(e===document.scrollingElement)return{left:0,right:window.innerWidth};let t=e.getBoundingClientRect();return{left:t.left,right:t.right}}function bn(e,t,n){return n<e+gn?-_n*Math.min(1,(e+gn-n)/gn):n>t-gn?_n*Math.min(1,(n-(t-gn))/gn):0}function xn({enabled:t,onScroll:n}){let r=(0,e.useRef)({container:null,scrollTarget:null,startScrollLeft:0,cursorX:0,rafId:null}),i=(0,e.useRef)(n);i.current=n;let a=(0,e.useCallback)(()=>i.current(),[]),o=(0,e.useCallback)(()=>{let e=r.current;if(!e.container){e.rafId=null;return}let{left:t,right:n}=yn(e.container),i=bn(t,n,e.cursorX);i!==0&&(e.container.scrollLeft+=i),e.rafId=requestAnimationFrame(o)},[]),s=(0,e.useCallback)(()=>{let e=r.current;e.rafId!==null&&cancelAnimationFrame(e.rafId),e.scrollTarget&&e.scrollTarget.removeEventListener(`scroll`,a),e.container=null,e.scrollTarget=null,e.rafId=null},[a]),c=(0,e.useCallback)(e=>{if(!t)return;let n=r.current,i=vn(e);n.container=i,n.startScrollLeft=i?.scrollLeft??0,i&&(n.scrollTarget=i===document.scrollingElement?window:i,n.scrollTarget.addEventListener(`scroll`,a,{passive:!0}),n.rafId=requestAnimationFrame(o))},[t,a,o]),l=(0,e.useCallback)(e=>{r.current.cursorX=e},[]),u=(0,e.useCallback)(()=>{let e=r.current;return e.container?e.container.scrollLeft-e.startScrollLeft:0},[]);return(0,e.useEffect)(()=>s,[s]),{start:c,stop:s,setCursorX:l,getScrollDelta:u}}function Sn({onStart:t,onDrag:n,onEnd:r,autoScroll:i=!1}){let a=(0,e.useRef)(!1),o=(0,e.useRef)(null),s=(0,e.useRef)(0),c=(0,e.useRef)(0),l=(0,e.useRef)(0),u=(0,e.useRef)(n),d=(0,e.useRef)(r);u.current=n,d.current=r;let f=(0,e.useRef)(()=>{}),{start:p,stop:m,setCursorX:h,getScrollDelta:g}=xn({enabled:i,onScroll:()=>f.current()}),_=(0,e.useCallback)(()=>{if(!a.current||o.current===null)return;let e=c.current-s.current+g();l.current=e,u.current(e,o.current)},[g]);f.current=_;let v=(0,e.useCallback)(e=>{o.current=t(e),s.current=e.clientX,c.current=e.clientX,l.current=0,a.current=!0,h(e.clientX),p(e.currentTarget),e.preventDefault(),e.stopPropagation()},[t,h,p]);return(0,e.useEffect)(()=>{let e=e=>{!a.current||o.current===null||(c.current=e.clientX,h(e.clientX),_(),e.preventDefault())},t=()=>{a.current&&o.current!==null&&d.current?.(l.current,o.current),a.current=!1,o.current=null,m()};return window.addEventListener(`mousemove`,e),window.addEventListener(`mouseup`,t),()=>{window.removeEventListener(`mousemove`,e),window.removeEventListener(`mouseup`,t),m()}},[_,h,m]),v}var X={tooltip:`_tooltip_mcgy9_11`,name:`_name_mcgy9_31`,row:`_row_mcgy9_6`,label:`_label_mcgy9_42`},Cn=(0,e.createContext)(null),wn=()=>(0,e.useContext)(Cn);function Tn({anchorRef:t,children:r}){let[i,a]=(0,e.useState)(!1),o=(0,e.useMemo)(()=>({open:i,setOpen:a,anchorRef:t}),[i,t]);return(0,n.jsx)(Cn.Provider,{value:o,children:r})}var En=12,Dn=8,On=null;function kn(e,t){On={x:e,y:t}}function An(e,t,n,r){let i=e+En,a=i+t<=r-Dn;return Math.max(a?i:e-En-t,n+Dn)}var jn=(t,n)=>{let r=(0,e.useContext)(qt)?.gridRef,[i,a]=(0,e.useState)({left:-9999,top:-9999}),o=(0,e.useDeferredValue)(i);return tt(()=>{if(!n)return;let e=(e,n)=>{let i=r?.current?.getBoundingClientRect(),o=i&&i.width>0&&i.height>0?{left:i.left,top:i.top,right:i.right,bottom:i.bottom}:{left:0,top:0,right:window.innerWidth,bottom:window.innerHeight};if(e<o.left||e>o.right||n<o.top||n>o.bottom)return;let s=t.current?.getBoundingClientRect(),c=s?.width??0,l=s?.height??0,u=An(e,c,o.left,o.right),d=An(n,l,o.top,o.bottom);a(e=>e.left===u&&e.top===d?e:{left:u,top:d})};On&&e(On.x,On.y);let i=t=>e(t.clientX,t.clientY);return window.addEventListener(`mousemove`,i),()=>{window.removeEventListener(`mousemove`,i)}},[t,r,n]),o};function Mn({children:t}){let n=wn(),r=n?.open??!1,i=n?.setOpen,a=n?.anchorRef;if((0,e.useEffect)(()=>{if(!r||!i)return;let e=()=>i(!1),t=e=>{let t=a?.current,n=e.target;!t||!(n instanceof Node)||t.contains(n)||i(!1)};return document.addEventListener(`scroll`,e,{capture:!0,passive:!0}),document.addEventListener(`mousemove`,t,{passive:!0}),()=>{document.removeEventListener(`scroll`,e,{capture:!0}),document.removeEventListener(`mousemove`,t)}},[r,i,a]),!i||!(0,e.isValidElement)(t))return t;let{onMouseEnter:o,onMouseLeave:s}=t.props;return(0,e.cloneElement)(t,{onMouseEnter:e=>{o?.(e),kn(e.clientX,e.clientY),i(!0)},onMouseLeave:e=>{s?.(e),i(!1)}})}function Nn(e){return e?e.toLocaleDateString(void 0,{year:`numeric`,month:`short`,day:`numeric`}):`—`}function Pn({task:r,progress:i,displayEnd:a,className:o,style:s,...c}){let l=(0,e.useRef)(null),u=wn()?.open??!1,d=jn(l,u);return!u||typeof document>`u`?null:(0,t.createPortal)((0,n.jsxs)(`div`,{role:`tooltip`,ref:l,className:o?`${X.tooltip} ${o}`:X.tooltip,style:{...s,...d},...c,children:[(0,n.jsx)(`div`,{className:X.name,children:r.name}),(0,n.jsxs)(`div`,{className:X.row,children:[(0,n.jsx)(`span`,{className:X.label,children:`Start`}),(0,n.jsx)(`span`,{children:Nn(r.startDate)})]}),(0,n.jsxs)(`div`,{className:X.row,children:[(0,n.jsx)(`span`,{className:X.label,children:`End`}),(0,n.jsx)(`span`,{children:Nn(a)})]}),(0,n.jsxs)(`div`,{className:X.row,children:[(0,n.jsx)(`span`,{className:X.label,children:`Progress`}),(0,n.jsxs)(`span`,{children:[Math.round(i),`%`]})]})]}),document.body)}function Fn({task:e,progress:t,displayEnd:r,anchorRef:i,className:a,style:o,children:s,...c}){return(0,n.jsxs)(Tn,{anchorRef:i,children:[(0,n.jsx)(Mn,{children:s}),(0,n.jsx)(Pn,{task:e,progress:t,displayEnd:r,className:a,style:o,...c})]})}function In({children:e,tooltip:t,anchorRef:r}){let i=J().bars?.tooltip,a=i?.slots?.tooltip;return!a||!t?e:(0,n.jsx)(a,{...Y({},i?.slotProps?.tooltip,t),anchorRef:r,...t,children:e})}function Ln({left:t,top:r,width:i,height:a,colWidth:o,dragAnchor:s,className:c,title:l,style:u,onMove:d,onMoveEnd:f,tooltip:p,onMouseEnter:m,onMouseLeave:h,children:g,..._}){let v=(0,e.useRef)(null),y=!d&&!f,b=Sn({onStart:()=>({start:s}),onDrag:(e,{start:t})=>d?.(t+e),onEnd:(e,{start:t})=>{let n=Math.round((t+e)/o)*o;f?.(n)},autoScroll:!0}),x=!!(d||f);return(0,n.jsx)(In,{tooltip:p,anchorRef:v,children:(0,n.jsx)(`div`,{..._,ref:v,className:c,style:{left:t,top:r,width:i,height:a,cursor:y?`default`:`move`,...u},title:l,onMouseDown:x?b:void 0,onMouseEnter:m,onMouseLeave:h,children:g})})}var Rn={milestone:`_milestone_o4jql_1`,milestoneShape:`_milestoneShape_o4jql_5`};function zn({size:e,centerLeft:t,top:r,colWidth:i,title:a,a11y:o,onMove:s,onMoveEnd:c,tooltip:l,slots:u,slotProps:d}){let f=J(),p=u??f.bars?.milestoneBar?.slots,m=d??f.bars?.milestoneBar?.slotProps,h={size:e,title:a},g=p?.root??Ln,_=p?.shape??`div`,v=Y({className:Rn.milestone,...o,title:o?o.title:a},m?.root,h),y=Y({className:Rn.milestoneShape,"aria-hidden":!0},m?.shape,h);return(0,n.jsx)(g,{tooltip:l,left:t-e/2,top:r,width:e,height:e,colWidth:i,dragAnchor:t,onMove:s,onMoveEnd:c,...v,children:(0,n.jsx)(_,{...y})})}var Bn={barProgress:`_barProgress_1obm3_1`,barProgressResizeHandle:`_barProgressResizeHandle_1obm3_10`};function Vn({width:e,onResize:t,onResizeEnd:r,parentWidth:i,slots:a,slotProps:o}){let s=J(),c=a??s.bars?.barProgressResizeHandle?.slots,l=o??s.bars?.barProgressResizeHandle?.slotProps,u=(e,t)=>Math.min(Math.max(0,t+e),i),d=Sn({onStart:()=>({startWidth:e}),onDrag:(e,{startWidth:n})=>t(u(e,n)),onEnd:(e,{startWidth:t})=>r?.(u(e,t))}),f={width:e,parentWidth:i};return(0,n.jsx)(c?.root??`div`,{...Y({className:Bn.barProgressResizeHandle,"aria-hidden":!0,tabIndex:-1,onMouseDown:d},l?.root,f)})}function Hn({progress:e,width:t,height:r,onProgressChange:i,onProgressEnd:a,slots:o,slotProps:s}){let c=J(),l=o??c.bars?.barProgress?.slots,u=s??c.bars?.barProgress?.slotProps,d=e/100*t,f=e=>e/t*100,p={progress:e,width:d,height:r};return(0,n.jsx)(l?.root??`div`,{...Y({className:Bn.barProgress,style:{width:d,height:r}},u?.root,p),children:i&&(0,n.jsx)(Vn,{width:d,parentWidth:t,onResize:e=>i(f(e)),onResizeEnd:a?e=>a(f(e)):void 0})})}var Un={project:`_project_927ph_1`,projectInner:`_projectInner_927ph_10`,projectContent:`_projectContent_927ph_16`};function Wn({width:e,height:t,left:r,top:i,colWidth:a,title:o,a11y:s,progress:c,onProgressChange:l,onProgressEnd:u,onMove:d,onMoveEnd:f,tooltip:p,slots:m,slotProps:h}){let g=J(),_=m??g.bars?.projectBar?.slots,v=h??g.bars?.projectBar?.slotProps,y={width:e,height:t,progress:c,title:o},b=_?.root??Ln,x=_?.inner??`div`,S=_?.label??`div`,C=Y({className:Un.project,style:{lineHeight:`${t}px`},...s},v?.root,y),w=Y({className:Un.projectInner,"aria-hidden":!0},v?.inner,y),T=Y({className:Un.projectContent,children:o},v?.label,y);return(0,n.jsx)(b,{tooltip:p,left:r,top:i,width:e,height:t,colWidth:a,dragAnchor:r,onMove:d,onMoveEnd:f,...C,children:(0,n.jsxs)(x,{...w,children:[(0,n.jsx)(Hn,{width:e,height:t,progress:c,onProgressChange:l,onProgressEnd:u}),(0,n.jsx)(S,{...T})]})})}var Gn={task:`_task_18g5p_1`,taskInner:`_taskInner_18g5p_9`,taskContent:`_taskContent_18g5p_15`,resizer:`_resizer_18g5p_28`,startResizer:`_startResizer_18g5p_59`,endResizer:`_endResizer_18g5p_62`};function Kn({width:e,left:t,colWidth:r,onResize:i,onResizeEnd:a,slots:o,slotProps:s}){let c=J(),l=o??c.bars?.taskResizer?.slots,u=s??c.bars?.taskResizer?.slotProps,d=Sn({onStart:()=>({startWidth:e,startLeft:t}),onDrag:(e,{startWidth:t,startLeft:n})=>{let r=Math.min(e,t);i(t-r,n+r)},onEnd:(e,{startWidth:t,startLeft:n})=>{let i=n+Math.min(e,t);a(`start`,Math.round(i/r)*r)}}),f=Sn({onStart:()=>({startWidth:e,startLeft:t}),onDrag:(e,{startWidth:t,startLeft:n})=>{i(Math.max(0,t+e),n)},onEnd:(e,{startWidth:t,startLeft:n})=>{let i=n+Math.max(0,t+e);a(`end`,Math.round(i/r)*r)}}),p={width:e,left:t},m=l?.startHandle??`button`,h=l?.endHandle??`button`,g=Y({type:`button`,"aria-hidden":!0,tabIndex:-1,className:un(Gn.resizer,Gn.startResizer),onMouseDown:d},u?.startHandle,p),_=Y({type:`button`,"aria-hidden":!0,tabIndex:-1,className:un(Gn.resizer,Gn.endResizer),onMouseDown:f},u?.endHandle,p);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(m,{...g}),(0,n.jsx)(h,{..._})]})}function qn({width:e,height:t,left:r,top:i,colWidth:a,title:o,a11y:s,progress:c=30,onProgressChange:l,onProgressEnd:u,onResize:d,onResizeEnd:f,onMove:p,onMoveEnd:m,tooltip:h,slots:g,slotProps:_}){let v=J(),y=g??v.bars?.taskBar?.slots,b=_??v.bars?.taskBar?.slotProps,x={width:e,height:t,progress:c,title:o},S=y?.root??Ln,C=y?.inner??`div`,w=y?.label??`div`,T=Y({className:`${Gn.task} am-gantt-bar-task`,style:{lineHeight:`${t}px`},...s},b?.root,x),E=Y({className:Gn.taskInner,"aria-hidden":!0},b?.inner,x),D=Y({className:Gn.taskContent,title:s?.title,children:o},b?.label,x);return(0,n.jsx)(S,{tooltip:h,left:r,top:i,width:e,height:t,colWidth:a,dragAnchor:r,onMove:p,onMoveEnd:m,...T,children:(0,n.jsxs)(C,{...E,children:[(0,n.jsx)(Hn,{width:e,height:t,progress:c,onProgressChange:l,onProgressEnd:u}),(0,n.jsx)(w,{...D}),d&&f&&(0,n.jsx)(Kn,{width:e,left:r,colWidth:a,onResize:d,onResizeEnd:f})]})})}var Jn={handle:`_handle_fw6gu_1`,visible:`_visible_fw6gu_18`},Yn=10/2;function Xn({taskId:e,barLeft:t,barWidth:r,barCenterY:i,show:a,slots:o,slotProps:s}){let c=J(),l=o??c.bars?.connectorHandles?.slots,u=s??c.bars?.connectorHandles?.slotProps,{startDrag:d,endDrag:f}=Qt(),p=en(),{gridBodyRef:m}=Jt(),h=(e,t)=>{let n=m.current?.getBoundingClientRect();if(!n)return{x:0,y:0};let r=e.currentTarget.getBoundingClientRect();return{x:r.left+r.width/2-n.left,y:r.top+r.height/2-n.top}},g=(t,n)=>{t.stopPropagation(),t.preventDefault();let{x:r,y:i}=h(t,n);d({fromTaskId:e,handle:n,startX:r,startY:i,currentX:r,currentY:i})},_=(t,n)=>{p&&(t.stopPropagation(),f(e,n))},v={taskId:e,barLeft:t,barWidth:r,barCenterY:i,show:a,isDragging:p},y=l?.startHandle??`div`,b=l?.endHandle??`div`,x=a||p,S=Y({"aria-hidden":!0,tabIndex:-1,className:un(Jn.handle,x&&Jn.visible),style:{left:t-10,top:i-Yn},onMouseDown:e=>g(e,`start`),onMouseUp:e=>_(e,`start`)},u?.startHandle,v),C=Y({"aria-hidden":!0,tabIndex:-1,className:un(Jn.handle,x&&Jn.visible),style:{left:t+r,top:i-Yn},onMouseDown:e=>g(e,`end`),onMouseUp:e=>_(e,`end`)},u?.endHandle,v);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(y,{...S}),(0,n.jsx)(b,{...C})]})}var Zn={row:`_row_1jios_13`},Qn=(0,e.memo)(function({task:t,index:r,origin:i,colWidth:a,rowHeight:o,unit:s,override:c,onOverride:l,onUpdate:u,onCommit:d,onTaskClick:f,rowIndexOffset:p}){let m=It(),h=Bt(),g=Kt()===t.id,_=Rt(),v=J().bars?.tooltip?.slots?.tooltip,{left:y,width:b,progress:x}=lt(t,c||{},i,a,s),S=r*o,C=y,w=o-12,T=6+w/2,E=t.type===`milestone`,D=E?C-w/2:C,O=E?w-1:b,[ee,k]=(0,e.useState)(!1),te=e=>({startDate:ut(e,i,a,s),endDate:ut(e+b,i,a,s)}),ne=(e,t)=>({startDate:ut(t,i,a,s),endDate:ut(t+e,i,a,s)}),A=e=>{l(t.id,e)},j=(t,n)=>{(0,e.startTransition)(()=>{u(t,n),l(t,null)})},M=n=>{(0,e.startTransition)(()=>{d(t.id,n),l(t.id,null)})},N=e=>({kind:`move`,startDate:ut(e,i,a,s)}),P=h?{}:{onMove:e=>A(te(e)),onMoveEnd:e=>M(N(e))},F=h?{}:{onProgressChange:e=>A({progress:e}),onProgressEnd:e=>j(t.id,{progress:e})},I=h?{}:{onResize:(e,t)=>A(ne(e,t)),onResizeEnd:(e,t)=>M(e===`start`?{kind:`resizeStart`,startDate:ut(t,i,a,s)}:{kind:`resizeEnd`,endDate:ut(t,i,a,s)})},L={role:`gridcell`,"aria-colindex":Math.max(1,Math.floor(C/a)+1),"aria-colspan":Math.max(1,Math.round(b/a)),"aria-label":m.bar(t,{progress:x}),"aria-selected":g||void 0,title:v?void 0:t.name},R={task:t,progress:x,displayEnd:_e(t,_)};return(0,n.jsxs)(`div`,{className:Zn.row,style:{top:S,height:o},onClick:f?()=>f(t):void 0,onMouseEnter:()=>k(!0),onMouseLeave:()=>k(!1),role:`row`,"aria-rowindex":p+r+1,children:[!h&&(0,n.jsx)(Xn,{taskId:t.id,barLeft:D,barWidth:O,barCenterY:T,show:ee}),t.type===`milestone`&&(0,n.jsx)(zn,{tooltip:R,size:w,centerLeft:C,top:6,colWidth:a,title:t.name,a11y:L,...P}),t.type===`summary`&&(0,n.jsx)(Wn,{tooltip:R,left:C,top:6,width:b,height:w,colWidth:a,title:t.name,a11y:L,progress:x,...F,...P}),t.type===`task`||!t.type?(0,n.jsx)(qn,{tooltip:R,left:C,top:6,width:b,height:w,colWidth:a,title:t.name,a11y:L,progress:x,...F,...P,...I}):null]})});Qn.displayName=`Row`;var $n=12,er={};function tr(e){let t=1/0,n=1/0,r=-1/0,i=-1/0;for(let a of e)a.x<t&&(t=a.x),a.x>r&&(r=a.x),a.y<n&&(n=a.y),a.y>i&&(i=a.y);return{minX:t,minY:n,maxX:r,maxY:i}}function nr(e){if(e.length<2)return e[0]??{x:0,y:0};let t=Math.floor((e.length-1)/2),n=e[t],r=e[t+1];return{x:(n.x+r.x)/2,y:(n.y+r.y)/2}}function rr(e,t,n,{origin:r,colWidth:i,rowHeight:a,unit:o}){let{left:s,width:c}=lt(e,t,r,i,o);if(e.type===`milestone`){let t=(a-12)/2;return{startX:s-t,endX:s+t,centerY:n,task:e}}return{startX:s,endX:s+c,centerY:n,task:e}}function ir(e,t){let n=new Map,{rowHeight:r}=t;return e.forEach((e,i)=>{n.set(e.id,rr(e,er,i*r+r/2,t))}),n}function ar(e,t){let n=(e.x+t.x)/2;return[e,{x:n,y:e.y},{x:n,y:t.y},t]}function or(e,t,n,r){let i=e.x+n*$n,a=t.x-r*$n,o=(e.y+t.y)/2;return[e,{x:i,y:e.y},{x:i,y:o},{x:a,y:o},{x:a,y:t.y},t]}function sr(e,t,n){return[e,{x:n,y:e.y},{x:n,y:t.y},t]}function cr(e,t,n){let r=t.centerY,i=n.centerY;switch(e){case`FS`:{let e={x:t.endX,y:r},a={x:n.startX,y:i};return n.startX>=t.endX+2*$n?ar(e,a):or(e,a,1,1)}case`SS`:return sr({x:t.startX,y:r},{x:n.startX,y:i},Math.min(t.startX,n.startX)-$n);case`FF`:return sr({x:t.endX,y:r},{x:n.endX,y:i},Math.max(t.endX,n.endX)+$n);case`SF`:{let e={x:t.startX,y:r},a={x:n.endX,y:i};return n.endX<=t.startX-2*$n?ar(e,a):or(e,a,-1,-1)}}}function lr({tasks:e,dependencies:t,...n}){let r=ir(e,n),i=[];for(let e of t){let t=r.get(e.from),n=r.get(e.to);!t||!n||i.push(ur(e,t,n))}let a=null;return{links:i,boxes:r,linksTouching(e){return a??=dr(i),a.get(e)}}}function ur(e,t,n){let r=cr(e.type,t,n);return{id:`${e.from}->${e.to}`,type:e.type,points:r,bounds:tr(r),dep:e}}function dr(e){let t=new Map,n=(e,n)=>{let r=t.get(e);r?r.push(n):t.set(e,[n])};return e.forEach((e,t)=>{n(String(e.dep.from),t),n(String(e.dep.to),t)}),t}function fr(e,t,n){let r=Object.keys(t);if(r.length===0)return e.links;let i=new Map,a=r=>{let a=e.boxes.get(r),o=a&&t[String(r)];if(!a||!o)return a;let s=i.get(r);return s||(s=rr(a.task,o,a.centerY,n),i.set(r,s)),s},o=null;for(let t of r)for(let n of e.linksTouching(t)??[]){let{dep:t}=e.links[n],r=a(t.from),i=a(t.to);!r||!i||(o??=e.links.slice(),o[n]=ur(t,r,i))}return o??e.links}var pr=(0,e.createContext)(null);function mr({tasks:t,dependencies:r,origin:i,colWidth:a,rowHeight:o,unit:s,children:c,overrides:l}){let u=(0,e.useMemo)(()=>lr({tasks:t,dependencies:r,origin:i,colWidth:a,rowHeight:o,unit:s}),[t,r,i,a,o,s]),d=(0,e.useMemo)(()=>fr(u,l,{origin:i,colWidth:a,rowHeight:o,unit:s}),[u,l,i,a,o,s]);return(0,n.jsx)(pr.Provider,{value:d,children:c})}function hr(){let t=(0,e.useContext)(pr);if(t===null)throw Error(`useDependencyLinks must be used within a <DependencyLinksProvider>`);return t}var Z={layer:`_layer_1ih9f_1`,hitArea:`_hitArea_1ih9f_8`,segment:`_segment_1ih9f_15`,segmentSelected:`_segmentSelected_1ih9f_21`,arrowRight:`_arrowRight_1ih9f_25`,arrowLeft:`_arrowLeft_1ih9f_26`,arrowSelected:`_arrowSelected_1ih9f_43`,lagLabel:`_lagLabel_1ih9f_51`,deleteBtn:`_deleteBtn_1ih9f_65`},Q=2,gr=8,_r=6;function vr(e,t){return t?e.minX<=t.maxX&&e.maxX>=t.minX&&e.minY<=t.maxY&&e.maxY>=t.minY:!0}function yr(e,t){return e.y===t.y?{left:Math.min(e.x,t.x)-Q/2,top:e.y-Q/2,width:Math.abs(t.x-e.x)+Q,height:Q}:{left:e.x-Q/2,top:Math.min(e.y,t.y)-Q/2,width:Q,height:Math.abs(t.y-e.y)+Q}}function br(e,t){return e.y===t.y?{left:Math.min(e.x,t.x)-Q/2,top:e.y-_r,width:Math.abs(t.x-e.x)+Q,height:Q+_r*2}:{left:e.x-_r,top:Math.min(e.y,t.y)-Q/2,width:Q+_r*2,height:Math.abs(t.y-e.y)+Q}}function xr(e){let t=[];for(let n=0;n+1<e.length;n++)t.push([e[n],e[n+1]]);return t}function Sr(e){let t=e[e.length-1],n=e[e.length-2],r=t.x>=n.x;return{className:r?Z.arrowRight:Z.arrowLeft,style:{left:r?t.x-gr:t.x,top:t.y-gr/2}}}function Cr({width:t,height:r,onDependencyDelete:i,visibleRect:a,slots:o,slotProps:s}){let c=J(),l=o??c.dependencies?.links?.slots,u=s??c.dependencies?.links?.slotProps,d=It(),f=Bt(),p=hr(),[m,h]=(0,e.useState)(null),[g,_]=(0,e.useState)(null),v=m?p.find(e=>e.id===m):null;if((0,e.useEffect)(()=>{if(!m)return;let e=e=>{(e.key===`Delete`||e.key===`Backspace`)&&(v&&i?.(v.dep),h(null),_(null))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[m,v,i]),p.length===0)return null;let y=(e,t)=>{if(t.stopPropagation(),m===e)h(null),_(null);else{h(e);let n=t.currentTarget.closest(`.${Z.layer}`)?.getBoundingClientRect();_(n?{x:t.clientX-n.left,y:t.clientY-n.top}:null)}},b=e=>{e.stopPropagation(),v&&i?.(v.dep),h(null),_(null)},x=l?.layer??`div`,S=l?.segment??`div`,C=l?.arrow??`div`,w=l?.lagLabel??`div`,T=l?.deleteButton??`button`;return(0,n.jsxs)(x,{...Y({className:Z.layer,style:{width:t,height:r},role:`presentation`,"aria-hidden":!0,onClick:()=>{h(null),_(null)}},u?.layer,{width:t,height:r,linkCount:p.length}),children:[p.map(t=>{let r=t.id===m;if(!r&&!vr(t.bounds,a))return null;let i=Sr(t.points),o=xr(t.points),s=t.dep.lag?nr(t.points):null,c={link:t,isSelected:r},l=Y({className:`${i.className} ${r?Z.arrowSelected:``}`,style:i.style},u?.arrow,c);return(0,n.jsxs)(e.Fragment,{children:[!f&&o.map(([e,r])=>(0,n.jsx)(`div`,{className:Z.hitArea,style:br(e,r),onClick:e=>y(t.id,e)},`hit-${e.x},${e.y}-${r.x},${r.y}`)),o.map(([e,i],a)=>(0,n.jsx)(S,{...Y({className:`${Z.segment} ${r?Z.segmentSelected:``}`,style:yr(e,i)},u?.segment,{link:t,isSelected:r,from:e,to:i,index:a})},`seg-${e.x},${e.y}-${i.x},${i.y}`)),(0,n.jsx)(C,{...l}),s&&t.dep.lag!==void 0&&t.dep.lag!==0&&(0,n.jsx)(w,{...Y({className:Z.lagLabel,style:{left:s.x,top:s.y},children:t.dep.lag>0?`+${t.dep.lag}d`:`${t.dep.lag}d`},u?.lagLabel,{link:t,isSelected:r,lag:t.dep.lag})})]},t.id)}),!f&&v&&g&&(0,n.jsx)(T,{...Y({className:Z.deleteBtn,type:`button`,tabIndex:-1,style:{left:g.x,top:g.y},onClick:b,"aria-label":d.deleteDependency,children:`×`},u?.deleteButton,{dependency:v.dep})})]})}var wr={preview:`_preview_1jjzd_1`};function Tr({slots:e,slotProps:t}){let r=J(),i=e??r.dependencies?.preview?.slots,a=t??r.dependencies?.preview?.slotProps,o=nn();if(!o)return null;let s=o.currentX-o.startX,c=o.currentY-o.startY,l=Math.hypot(s,c),u=180/Math.PI*Math.atan2(c,s);return(0,n.jsx)(i?.root??`div`,{...Y({className:wr.preview,style:{left:o.startX,top:o.startY,width:l,transform:`rotate(${u}deg)`},"aria-hidden":!0},a?.root,{drag:o,length:l,angle:u})})}var Er={cols:`_cols_kjab1_1`,col:`_col_kjab1_1`,colWeekend:`_colWeekend_kjab1_14`};function Dr({dates:e,colWidth:t,bodyHeight:r,colRange:i,unit:a=`day`,step:o=1,slots:s,slotProps:c}){let l=J(),u=s??l.timeline?.gridColumn?.slots,f=c??l.timeline?.gridColumn?.slotProps,p=u?.column??`div`,{calendar:m}=Rt(),h=a===`day`||a===`hour`||a===`minute`;return(0,n.jsx)(`div`,{className:Er.cols,role:`presentation`,"aria-hidden":!0,children:e.slice(i.start,i.end).map((e,s)=>{let c=i.start+s,l=h?U(m,e,g(e,a,o)):{isNonWorking:!1,reason:void 0},u=m?l.isNonWorking:a===`day`&&d(e),_={date:e,index:c,isNonWorking:u,nonWorkingReason:u?l.reason??`weekend`:void 0,isWeekend:u,colWidth:t,bodyHeight:r};return(0,n.jsx)(p,{...Y({className:un(Er.col,u&&Er.colWeekend),style:{left:c*t,width:t,height:r}},f?.column,_)},e.getTime())})})}Dr.displayName=`GridColumns`;var Or={gridWrapper:`_gridWrapper_1tr84_1`,grid:`_grid_1tr84_1`,body:`_body_1tr84_17`};function kr(e,t,n,r,i=0){if(r<=0)return{start:0,end:0};if(t<=0||n<=0)return{start:0,end:Math.min(r,100)};let a=Math.floor(e/n),o=Math.ceil((e+t)/n);return{start:Math.max(0,a-i),end:Math.min(r,o+i)}}function Ar({slots:t,slotProps:r}={}){let i=J(),a=t??i.timeline?.grid?.slots,o=r??i.timeline?.grid?.slotProps,{visibleTasks:s}=Ht(),{updateTask:c,commitTask:l,onTaskClick:u,setSelectedId:d}=Wt(),{colWidth:f,rowHeight:p,scales:m,padDays:h,height:g}=Pt(),_=It(),{gridRef:v,onGridScroll:y,gridBodyRef:b}=Jt(),x=Xt(),{dependencies:S,onDependencyDelete:C}=Qt(),{zoomAt:w,zoomIn:T,zoomOut:E,wheelEnabled:D,keyboardEnabled:O}=an();(0,e.useEffect)(()=>{let e=v.current;if(!e||!D&&!O)return;let t=t=>{if(!(t.ctrlKey||t.metaKey))return;t.preventDefault();let n=e.getBoundingClientRect();w(e.scrollLeft+(t.clientX-n.left),t.deltaY<0?1:-1)},n=e=>{e.key===`+`||e.key===`=`?(e.preventDefault(),T()):(e.key===`-`||e.key===`_`)&&(e.preventDefault(),E())};return D&&e.addEventListener(`wheel`,t,{passive:!1}),O&&(e.tabIndex=0,e.addEventListener(`keydown`,n)),()=>{e.removeEventListener(`wheel`,t),e.removeEventListener(`keydown`,n)}},[v,D,O,w,T,E,s.length]);let[ee,k]=(0,e.useState)({}),te=(0,e.useCallback)(e=>{d(e.id),u?.(e)},[d,u]),ne=(0,e.useCallback)((e,t)=>{k(n=>{if(t===null){let{[e]:t,...r}=n;return r}return{...n,[e]:{...n[e],...t}}})},[]),A=(0,e.useMemo)(()=>gt(s,h,m),[s,h,m]),j=A[0]?.getTime(),M=(0,e.useMemo)(()=>j==null?void 0:new Date(j),[j]);if(!M)return null;let N=ft(m),P=A.length*f,F=s.length*p,I=(m??dt).length,L=kr(x.scrollTop,x.clientHeight,p,s.length,6),R=kr(x.scrollLeft,x.clientWidth,f,A.length,4),z={minX:R.start*f,maxX:R.end*f,minY:L.start*p,maxY:L.end*p},B=a?.root??`div`,V=a?.body??`div`,re={totalWidth:P,bodyHeight:F,height:g},ie=Y({className:Or.gridWrapper,style:g===void 0?{}:{height:g},onScroll:y,role:`grid`,"aria-label":_.timeline,"aria-rowcount":I+s.length,"aria-colcount":A.length},o?.root,re),ae=Y({className:Or.body,style:{height:F,width:P},role:`rowgroup`},o?.body,re);return(0,n.jsx)(B,{ref:v,...ie,children:(0,n.jsxs)(`div`,{className:Or.grid,style:{width:P},role:`presentation`,children:[(0,n.jsx)(hn,{colWidth:f,rowHeight:p,dates:A,scales:m,colRange:R}),(0,n.jsx)(mr,{tasks:s,dependencies:S,origin:M,colWidth:f,rowHeight:p,unit:N,overrides:ee,children:(0,n.jsxs)(V,{ref:b,...ae,children:[(0,n.jsx)(Dr,{dates:A,colWidth:f,bodyHeight:F,colRange:R,unit:N,step:pt(m)}),(0,n.jsx)(Cr,{width:P,height:F,onDependencyDelete:C,visibleRect:z}),(0,n.jsx)(Tr,{}),s.slice(L.start,L.end).map((e,t)=>(0,n.jsx)(Qn,{task:e,index:L.start+t,origin:M,colWidth:f,rowHeight:p,unit:N,onUpdate:c,onCommit:l,override:ee[e.id],onOverride:ne,onTaskClick:te,rowIndexOffset:I},e.id))]})})]})})}Ar.displayName=`GanttGrid`;var jr={handle:`_handle_1o220_1`};function Mr({onMouseDown:e,isResizing:t=!1,slots:r,slotProps:i}){let a=J(),o=r??a.timeline?.gridResizeHandle?.slots,s=i??a.timeline?.gridResizeHandle?.slotProps,c=It(),l={isResizing:t};return(0,n.jsx)(o?.root??`div`,{...Y({className:jr.handle,onMouseDown:e,role:`separator`,"aria-orientation":`vertical`,"aria-label":c.resizeTaskList},s?.root,l)})}var $={taskList:`_taskList_i76t8_1`,header:`_header_i76t8_10`,headerCell:`_headerCell_i76t8_22`,body:`_body_i76t8_41`,rows:`_rows_i76t8_54`,row:`_row_i76t8_54`,selected:`_selected_i76t8_70`,cell:`_cell_i76t8_74`,treeCell:`_treeCell_i76t8_91`,nameContent:`_nameContent_i76t8_95`,expandBtn:`_expandBtn_i76t8_104`,expandPlaceholder:`_expandPlaceholder_i76t8_122`,divider:`_divider_i76t8_128`};function Nr({columns:e,rowHeight:t,scales:r=dt,onResizeStart:i,slots:a,slotProps:o}){let s=r.length*t+2,c=a?.header??`div`,l=a?.headerCell??`div`,u=a?.columnResizeHandle??`div`;return(0,n.jsx)(c,{...Y({className:$.header,style:{minHeight:s,height:s},role:`row`,"aria-rowindex":1},o?.header,{columns:e,headerHeight:s}),children:e.map((e,t)=>{let r={column:e,index:t},a=Y({className:$.headerCell,style:e.width?{width:e.width,flexShrink:0}:{flex:`1 1 auto`,minWidth:100},role:`columnheader`,"aria-colindex":t+1},o?.headerCell,r),s=Y({className:$.divider,"aria-hidden":!0,onMouseDown:t=>{let n=t.currentTarget.parentElement;i(e.key,n.offsetWidth,t)}},o?.columnResizeHandle,r);return(0,n.jsxs)(l,{...a,children:[e.header,(0,n.jsx)(u,{...s})]},e.key)})})}var Pr=16;function Fr({taskId:e,depth:t,isParent:r,isExpanded:i,onToggleExpand:a,children:o,slots:s,slotProps:c}){let l=It(),u={taskId:e,depth:t,isParent:r,isExpanded:i},d=s?.root??`span`,f=s?.expandButton??`button`,p=s?.placeholder??`span`,m=Y({className:$.nameContent,style:{paddingLeft:t*Pr}},c?.root,u),h=Y({className:$.expandBtn,type:`button`,onClick:t=>{t.stopPropagation(),a(e)},"aria-label":i?l.collapse:l.expand,children:i?`▾`:`▸`},c?.expandButton,u),g=Y({className:$.expandPlaceholder,"aria-hidden":!0},c?.placeholder,u);return(0,n.jsxs)(d,{...m,children:[r?(0,n.jsx)(f,{...h}):(0,n.jsx)(p,{...g}),o]})}var Ir=100,Lr=(0,e.memo)(function({task:e,rowHeight:t,rowIndex:r,depth:i,posinset:a,setsize:o,isParent:s,isExpanded:c,isSelected:l,onToggleExpand:u,onSelect:d,columns:f,treeCell:p}){let{columnApi:m}=Wt();return(0,n.jsx)(`div`,{className:`${$.row} ${l?$.selected:``}`,style:{height:t},onClick:()=>d(e.id),role:`row`,"aria-rowindex":r+2,"aria-level":i+1,"aria-posinset":a,"aria-setsize":o,"aria-expanded":s?c:void 0,"aria-selected":l||void 0,children:f.map((t,r)=>(0,n.jsx)(`div`,{className:`${$.cell} ${t.isTreeColumn?$.treeCell:``}`,style:{width:t.width||Ir,flexShrink:0},role:t.isTreeColumn?`rowheader`:`gridcell`,"aria-colindex":r+1,children:t.isTreeColumn?(0,n.jsx)(Fr,{taskId:e.id,depth:i,isParent:s,isExpanded:c,onToggleExpand:u,slots:p?.slots,slotProps:p?.slotProps,children:t.render(e,m)}):t.render(e,m)},t.key))})});Lr.displayName=`TaskListRow`;function Rr(){let[t,n]=(0,e.useState)({}),r=(0,e.useRef)(null);return{widths:t,onResizeStart:(0,e.useCallback)((e,t,i)=>{i.preventDefault(),r.current={key:e,mouseX:i.clientX,width:t};let a=e=>{if(!r.current)return;let{key:t,mouseX:i,width:a}=r.current,o=Math.max(60,a+(e.clientX-i));n(e=>({...e,[t]:o}))},o=()=>{r.current=null,window.removeEventListener(`mousemove`,a),window.removeEventListener(`mouseup`,o)};window.addEventListener(`mousemove`,a),window.addEventListener(`mouseup`,o)},[])}}var zr={flex:`1 1 auto`,minHeight:0};function Br({columns:t=[],taskList:r}){let{visibleTasks:i,expandedIds:a,parentIds:o}=Ht(),{toggleExpand:s,setSelectedId:c,onTaskClick:l,revealTask:u}=Wt(),d=Kt(),{rowHeight:f,scales:p,height:m}=Pt(),h=It(),{taskListRef:g,onTaskListScroll:_}=Jt(),{widths:v,onResizeStart:y}=Rr(),b=(0,e.useMemo)(()=>t.map(e=>v[e.key]==null?e:{...e,width:v[e.key]}),[t,v]),x=q(e=>{c(e);let t=i.find(t=>t.id===e);t&&(l?.(t),u(e,{horizontal:!0,vertical:!1}))}),S=(0,e.useCallback)(e=>x.current(e),[x]),C=(0,e.useMemo)(()=>{let e=new Map;for(let t of i){let n=t.parentId==null?-1:e.get(t.parentId)??0;e.set(t.id,n+1)}return e},[i]),w=(0,e.useMemo)(()=>{let e=new Map,t=new Map;for(let n of i){let r=n.parentId??null,i=(e.get(r)??0)+1;e.set(r,i),t.set(n.id,{posinset:i,setsize:0})}for(let n of i){let r=t.get(n.id);r.setsize=e.get(n.parentId??null)??1}return t},[i]),{viewport:T,scheduleMeasure:E}=at(g,{trackHorizontal:!1}),D=(0,e.useCallback)(()=>{_(),E()},[_,E]),O=kr(T.scrollTop,T.clientHeight,f,i.length,6);return(0,n.jsxs)(`div`,{className:$.taskList,style:{height:m},role:`treegrid`,"aria-label":h.taskList,"aria-rowcount":i.length+1,"aria-colcount":b.length,children:[(0,n.jsx)(Nr,{columns:b,rowHeight:f,scales:p,onResizeStart:y,slots:r?.header?.slots,slotProps:r?.header?.slotProps}),(0,n.jsx)(`div`,{ref:g,className:$.body,style:zr,onScroll:D,role:`presentation`,children:(0,n.jsxs)(`div`,{className:$.rows,role:`rowgroup`,children:[(0,n.jsx)(`div`,{style:{height:O.start*f},role:`presentation`,"aria-hidden":`true`}),Array.from({length:O.end-O.start},(e,t)=>{let c=O.start+t,l=i[c],u=w.get(l.id);return(0,n.jsx)(Lr,{task:l,rowHeight:f,rowIndex:c,depth:C.get(l.id)??0,posinset:u?.posinset??1,setsize:u?.setsize??1,isParent:o.has(l.id),isExpanded:a.has(l.id),isSelected:d===l.id,onToggleExpand:s,onSelect:S,columns:b,treeCell:r?.treeCell},l.id)}),(0,n.jsx)(`div`,{style:{height:(i.length-O.end)*f},role:`presentation`,"aria-hidden":`true`})]})})]})}function Vr(t,n){let[r,i]=(0,e.useState)(void 0),a=(0,e.useRef)(null);return{gridWidth:r,onHandleMouseDown:(0,e.useCallback)(e=>{e.preventDefault();let r=n.current,o=t.current;if(!r||!o)return;a.current={mouseX:e.clientX,width:r.offsetWidth,containerW:o.offsetWidth};let s=e=>{if(!a.current)return;let{mouseX:t,width:n,containerW:r}=a.current;i(Math.min(r,Math.max(10,n+(t-e.clientX))))},c=()=>{a.current=null,window.removeEventListener(`mousemove`,s),window.removeEventListener(`mouseup`,c)};window.addEventListener(`mousemove`,s),window.addEventListener(`mouseup`,c)},[t,n])}}var Hr={actionsCell:`_actionsCell_1gvtx_1`};function Ur(e){let t=m(e.startDate,1);return{id:`task-${Date.now()}`,name:`New task`,startDate:t,endDate:m(t,1),duration:1,progress:0,type:`task`,parentId:e.parentId??null}}function Wr({task:e,api:t}){return(0,n.jsxs)(`div`,{className:Hr.actionsCell,children:[(0,n.jsx)(`button`,{type:`button`,title:`Edit`,"aria-label":t.labels.editTask(e),onClick:n=>{n.stopPropagation(),t.editTask(e)},children:(0,n.jsx)(`span`,{"aria-hidden":`true`,children:`✎`})}),(0,n.jsx)(`button`,{type:`button`,title:`Add after`,"aria-label":t.labels.addTaskAfter(e),onClick:n=>{n.stopPropagation();let r=Ur(e);t.createTask(r,e.id),t.editTask(r)},children:(0,n.jsx)(`span`,{"aria-hidden":`true`,children:`➕`})}),(0,n.jsx)(`button`,{type:`button`,title:`Delete`,"aria-label":t.labels.deleteTask(e),style:{fontSize:9},onClick:n=>{n.stopPropagation(),t.deleteTask(e.id)},children:(0,n.jsx)(`span`,{"aria-hidden":`true`,children:`❌`})})]})}var Gr=`__action`,Kr=[{key:Gr,header:` `,width:100,render:(e,t)=>(0,n.jsx)(Wr,{task:e,api:t})},{key:`__name`,header:`Task Name`,render:e=>e.name,width:200,isTreeColumn:!0},{key:`__start`,header:`Start`,width:90,render:e=>e.startDate.toLocaleDateString()},{key:`__end`,header:`End`,width:90,render:(e,t)=>t.format.endDate(e)?.toLocaleDateString()??`—`},{key:`__progress`,header:`Progress, %`,width:90,render:e=>`${e.progress??0}%`}],qr=Kr.filter(e=>e.key!==Gr);function Jr({tasks:t,dependencies:r,rowHeight:i,colWidth:a,height:o,scales:s,padDays:c,zoomLevels:l,defaultZoomIndex:u,onZoomChange:d,zoomWheel:f,zoomKeyboard:p,onTaskClick:m,columns:h,defaultTaskListWidth:g=280,onDependencyCreate:_,onDependencyDelete:v,onTaskCreate:y,onTaskDelete:b,onTaskEdit:x,onTasksChange:S,calendar:C,snapToWorking:w,durationUnit:T,readOnly:E=!1,apiRef:D,hideTaskList:O,taskList:ee,bars:k,dependencySlots:te,timeline:ne,labels:A}){let j=(0,e.useRef)(null),M=(0,e.useRef)(null),{gridWidth:N,onHandleMouseDown:P}=Vr(j,M),F=h??(E?qr:Kr),I=!O;return(0,n.jsx)(on,{tasks:t,dependencies:r,rowHeight:i,colWidth:a,height:o,scales:s,padDays:c,zoomLevels:l,defaultZoomIndex:u,onZoomChange:d,zoomWheel:f,zoomKeyboard:p,onTaskClick:m,onDependencyCreate:_,onDependencyDelete:v,onTaskCreate:y,onTaskDelete:b,onTaskEdit:x,onTasksChange:S,apiRef:D,labels:A,calendar:C,snapToWorking:w,durationUnit:T,readOnly:E,children:(0,n.jsx)(cn,{value:(0,e.useMemo)(()=>({bars:k,dependencies:te,timeline:ne}),[k,te,ne]),children:I?(0,n.jsxs)(`div`,{ref:j,role:`group`,"aria-label":A?.gantt??ye.gantt,style:{position:`relative`},children:[(0,n.jsx)(Br,{columns:F,taskList:ee}),(0,n.jsxs)(`div`,{ref:M,style:{position:`absolute`,top:0,right:0,zIndex:1,display:`flex`,flexDirection:`row`,background:`var(--am-gantt-grid-bg, #ffffff)`,...N===void 0?{left:g}:{width:N}},children:[(0,n.jsx)(Mr,{onMouseDown:P}),(0,n.jsx)(`div`,{style:{flex:`1 1 auto`,minWidth:0},children:(0,n.jsx)(Ar,{})})]})]}):(0,n.jsx)(Ar,{})})})}exports.ACTION_COLUMN_KEY=Gr,exports.BarTooltipRoot=Tn,exports.BarTooltipTrigger=Mn,exports.Calendar=hn,exports.DEFAULT_COLUMNS=Kr,exports.DEFAULT_ZOOM_INDEX=Dt,exports.DEFAULT_ZOOM_LEVELS=Et,exports.Gantt=Jr,exports.GanttBarTooltip=Fn,exports.GanttGrid=Ar,exports.GanttProvider=on,exports.GanttSlotsProvider=cn,exports.MilestoneBar=zn,exports.ProjectBar=Wn,exports.READ_ONLY_COLUMNS=qr,exports.TaskBar=qn,exports.TaskList=Br,exports.displayEndDate=he,exports.endInstantFromDisplayDate=ge,exports.mergeSlotProps=Y,exports.useBarTooltip=wn,exports.useGanttReadOnly=Bt,exports.useGanttSlots=J;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|