UNPKG

hy-vue-gantt

Version:

Evolution of vue-ganttastic package

2 lines 145 kB
function injectStyle(n,e="top"){if(!n||"undefined"==typeof document)return;const t=document.head||document.querySelector("head"),o=t.querySelector(":first-child"),a=document.createElement("style");a.appendChild(document.createTextNode(n)),"top"===e&&o?t.insertBefore(a,o):t.appendChild(a)}!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("dayjs"),require("dayjs/plugin/isoWeek"),require("dayjs/plugin/isSameOrBefore.js"),require("dayjs/plugin/isSameOrAfter.js"),require("dayjs/plugin/isBetween.js"),require("dayjs/plugin/weekOfYear"),require("dayjs/plugin/advancedFormat"),require("dayjs/plugin/customParseFormat.js"),require("dayjs/plugin/dayOfYear.js"),require("dayjs/plugin/localizedFormat"),require("dayjs/plugin/utc"),require("vue"),require("@fortawesome/vue-fontawesome"),require("@fortawesome/free-solid-svg-icons"),require("@vueuse/core"),require("uuid"),require("date-holidays"),require("lodash-es"),require("html2canvas"),require("jspdf"),require("xlsx"),require("dayjs/locale/it"),require("dayjs/locale/en"),require("dayjs/locale/fr"),require("dayjs/locale/de"),require("dayjs/locale/es"),require("dayjs/locale/pt"),require("dayjs/locale/ru"),require("dayjs/locale/zh-cn"),require("dayjs/locale/zh-tw"),require("dayjs/locale/ja"),require("dayjs/locale/ko"),require("dayjs/locale/ar"),require("dayjs/locale/hi"),require("dayjs/locale/tr"),require("dayjs/locale/nl"),require("dayjs/locale/pl"),require("dayjs/locale/cs"),require("dayjs/locale/hu"),require("dayjs/locale/ro"),require("dayjs/locale/bg"),require("dayjs/locale/sr"),require("dayjs/locale/sr-cyrl"),require("dayjs/locale/af"),require("dayjs/locale/az"),require("dayjs/locale/be"),require("dayjs/locale/bs"),require("dayjs/locale/ca"),require("dayjs/locale/da"),require("dayjs/locale/el"),require("dayjs/locale/et"),require("dayjs/locale/fi"),require("dayjs/locale/gl"),require("dayjs/locale/he"),require("dayjs/locale/hr"),require("dayjs/locale/is"),require("dayjs/locale/ka"),require("dayjs/locale/kk"),require("dayjs/locale/ky"),require("dayjs/locale/lt"),require("dayjs/locale/lv"),require("dayjs/locale/mk"),require("dayjs/locale/mn"),require("dayjs/locale/mt"),require("dayjs/locale/nb"),require("dayjs/locale/nn"),require("dayjs/locale/pt-br"),require("dayjs/locale/sk"),require("dayjs/locale/sl"),require("dayjs/locale/sq"),require("dayjs/locale/sv"),require("dayjs/locale/ta"),require("dayjs/locale/th"),require("dayjs/locale/uk"),require("dayjs/locale/uz"),require("dayjs/locale/vi"),require("dayjs/locale/zh-hk")):"function"==typeof define&&define.amd?define(["exports","dayjs","dayjs/plugin/isoWeek","dayjs/plugin/isSameOrBefore.js","dayjs/plugin/isSameOrAfter.js","dayjs/plugin/isBetween.js","dayjs/plugin/weekOfYear","dayjs/plugin/advancedFormat","dayjs/plugin/customParseFormat.js","dayjs/plugin/dayOfYear.js","dayjs/plugin/localizedFormat","dayjs/plugin/utc","vue","@fortawesome/vue-fontawesome","@fortawesome/free-solid-svg-icons","@vueuse/core","uuid","date-holidays","lodash-es","html2canvas","jspdf","xlsx","dayjs/locale/it","dayjs/locale/en","dayjs/locale/fr","dayjs/locale/de","dayjs/locale/es","dayjs/locale/pt","dayjs/locale/ru","dayjs/locale/zh-cn","dayjs/locale/zh-tw","dayjs/locale/ja","dayjs/locale/ko","dayjs/locale/ar","dayjs/locale/hi","dayjs/locale/tr","dayjs/locale/nl","dayjs/locale/pl","dayjs/locale/cs","dayjs/locale/hu","dayjs/locale/ro","dayjs/locale/bg","dayjs/locale/sr","dayjs/locale/sr-cyrl","dayjs/locale/af","dayjs/locale/az","dayjs/locale/be","dayjs/locale/bs","dayjs/locale/ca","dayjs/locale/da","dayjs/locale/el","dayjs/locale/et","dayjs/locale/fi","dayjs/locale/gl","dayjs/locale/he","dayjs/locale/hr","dayjs/locale/is","dayjs/locale/ka","dayjs/locale/kk","dayjs/locale/ky","dayjs/locale/lt","dayjs/locale/lv","dayjs/locale/mk","dayjs/locale/mn","dayjs/locale/mt","dayjs/locale/nb","dayjs/locale/nn","dayjs/locale/pt-br","dayjs/locale/sk","dayjs/locale/sl","dayjs/locale/sq","dayjs/locale/sv","dayjs/locale/ta","dayjs/locale/th","dayjs/locale/uk","dayjs/locale/uz","dayjs/locale/vi","dayjs/locale/zh-hk"],e):e((n="undefined"!=typeof globalThis?globalThis:n||self).HyVueGantt={},n.dayjs,n.isoWeek,n.isSameOrBefore,n.isSameOrAfter,n.isBetween,n.weekOfYear,n.advancedFormat,n.customParseFormat,n.dayOfYear,n.localizedFormat,n.utc,n.Vue,n.vueFontawesome,n.freeSolidSvgIcons,n.core,n.uuid,n["date-holidays"],n["lodash-es"],n.html2canvas,n.jspdf,n.xlsx)}(this,(function(n,e,t,o,a,r,i,l,s,c,d,u,g,p,m,h,f,b,y,w,v,x){"use strict";function k(n){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n)for(const t in n)if("default"!==t){const o=Object.getOwnPropertyDescriptor(n,t);Object.defineProperty(e,t,o.get?o:{enumerable:!0,get:()=>n[t]})}return e.default=n,Object.freeze(e)}const j=k(x),C=Symbol("CONFIG_KEY"),S=Symbol("BOOLEAN_KEY"),M=Symbol("EMIT_BAR_EVENT_KEY"),D=Symbol("BAR_CONTAINER_KEY"),T=Symbol("CHART_AREA_KEY"),E=Symbol("CHART_WRAPPER_KEY"),$=Symbol("GANTT_ID_KEY");function B(){const n=g.inject(C);if(!n)throw Error("Failed to inject config!");return n}const z="YYYY-MM-DD HH:mm";function Y(n=B()){const{chartStart:t,chartEnd:o,barStart:a,barEnd:r,dateFormat:i,locale:l}=n,s=g.computed((()=>d(t.value))),c=g.computed((()=>d(o.value)));e.locale(l.value);const d=(n,t)=>{let o;if(void 0===t||"string"==typeof n||n instanceof Date||(o="start"===t?n[a.value]:n[r.value]),"string"==typeof n)o=n;else if(n instanceof Date)return e(n);return e(o,i.value||z,!0)};return{chartStartDayjs:s,chartEndDayjs:c,toDayjs:d,format:(n,t)=>!1===t?n instanceof Date?n:e(n).toDate():("string"==typeof n||n instanceof Date?d(n):n).format(t),diffDates:()=>c.value.diff(s.value,"day")}}const H={class:"g-grid-container",ref:"time"},R=g.defineComponent({t:"GGanttGrid",props:{timeaxisUnits:{},internalPrecision:{}},setup(n){const e=n,{toDayjs:t}=Y(),{colors:o,highlightedHours:a,highlightedDaysInWeek:r,highlightedDaysInMonth:i,highlightedMonths:l,highlightedWeek:s,enableMinutes:c}=B(),d=n=>"hour"===e.internalPrecision?u(n)||p(n)||h(n)||m(n):"day"===e.internalPrecision||"date"===e.internalPrecision?p(n)||h(n)||m(n):"week"===e.internalPrecision?m(n)||h(n):"month"===e.internalPrecision&&h(n),u=n=>null==a?void 0:a.value.includes(n.getHours()),p=n=>(null==r?void 0:r.value.includes(n.getDay()))||(null==i?void 0:i.value.includes(n.getDate())),m=n=>null==s?void 0:s.value.includes(t(n).week()),h=n=>null==l?void 0:l.value.includes(n.getMonth());return(n,e)=>(g.openBlock(),g.createElementBlock("div",H,[g.unref(c)?(g.openBlock(!0),g.createElementBlock(g.Fragment,{key:1},g.renderList(n.timeaxisUnits.result.lowerUnits,(({label:e,date:t,width:a},r)=>(g.openBlock(),g.createElementBlock(g.Fragment,{key:`${e}_${r}`},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(n.timeaxisUnits.globalMinuteStep,(n=>(g.openBlock(),g.createElementBlock("div",{key:`${t}-${n}`,class:g.normalizeClass([n,"g-grid-line step"]),style:g.normalizeStyle({width:a,borderLeft:`1px solid ${g.unref(o).gridAndBorder}`,background:d(t)?g.unref(o).hoverHighlight:void 0})},null,6)))),128))],64)))),128)):(g.openBlock(!0),g.createElementBlock(g.Fragment,{key:0},g.renderList(n.timeaxisUnits.result.lowerUnits,(({label:n,date:e,width:t},a)=>(g.openBlock(),g.createElementBlock("div",{key:`${n}_${a}`,class:"g-grid-line",style:g.normalizeStyle({width:t,borderLeft:`1px solid ${g.unref(o).gridAndBorder}`,background:d(e)?g.unref(o).hoverHighlight:void 0})},null,4)))),128))],512))}});const q=["onClick"],P={class:"text-ellipsis"},_={key:0,class:"sort-icon"},A=["onMousedown","onTouchstart"],G=["data-row-id","draggable","onDragstart","onDragover","onTouchstart","onTouchmove"],I={class:"g-label-column-row-inner"},L=["onClick"],O={class:"text-ellipsis-value"},F=g.defineComponent({t:"GGanttLabelColumn",emits:["scroll","row-drop"],setup(n,{expose:e,emit:t}){const o=t,a=g.inject("useRows");if(!a)throw new Error("useRows does not provide ");const{rows:r,sortState:i,toggleSort:l}=a,{font:s,colors:c,labelColumnTitle:d,labelColumnWidth:u,rowHeight:h,maxRows:f,multiColumnLabel:b,precision:y,barStart:w,barEnd:v,dateFormat:x,rowLabelClass:k,labelResizable:j,enableRowDragAndDrop:C,hideTimeaxis:S,sortable:M,showEventsAxis:D,eventsAxisHeight:T}=B(),{toDayjs:E,format:$}=Y(),z=g.reactive(new Map),H=g.ref(!1),R=g.ref(0),F=g.ref(null),U=g.ref(null),{dragState:W,handleDragStart:X,handleDragOver:N,handleDrop:V}=function(n,e,t,o){const a=g.ref({isDragging:!1,draggedRow:null,dropTarget:{row:null,position:"before"}}),r=g.ref(new Map),i=(n,e)=>!!n.children&&n.children.some((n=>n.id===e.id||i(n,e))),l=(n,e)=>{var t;for(let o=0;o<n.length;o++){if(n[o].id===e)return[o,n];if(null==(t=n[o].children)?void 0:t.length){const[t,a]=l(n[o].children,e);if(-1!==t)return[t,a]}}return[-1,n]};return{dragState:a,handleDragStart:(t,o)=>{e.value||(a.value.isDragging=!0,a.value.draggedRow=t,o.dataTransfer&&(o.dataTransfer.effectAllowed="move",o.dataTransfer.setData("text/plain","")),0===r.value.size&&n.value.forEach(((n,e)=>{n.id&&r.value.set(n.id,e)})))},handleDragOver:(n,e)=>{var t;if(!a.value.draggedRow||!((n,e)=>{const t=n=>{var o;return!!(null==(o=n.children)?void 0:o.length)&&n.children.some((n=>n===e||t(n)))};return!t(n)})(a.value.draggedRow,n))return;e.preventDefault();const o=e.currentTarget.getBoundingClientRect(),r=e.clientY-o.top;a.value.dropTarget=(null==(t=n.children)?void 0:t.length)?r<.25*o.height?{row:n,position:"before"}:r>.75*o.height?{row:n,position:"after"}:{row:n,position:"child"}:{row:n,position:r<o.height/2?"before":"after"}},handleDrop:()=>{const{draggedRow:r,dropTarget:s}=a.value;if(!r||!s.row||e.value||r===s.row)return;if(i(r,s.row))return;const[c,d]=l(n.value,r.id),[u,g]=l(n.value,s.row.id);if(-1===c||-1===u)return;const[p]=d.splice(c,1),m="after"===s.position?u+1:u;g.splice(m,0,p),t([...n.value]),o(0,{sourceRow:r,targetRow:s.row,newIndex:m,parentId:g===n.value?void 0:s.row.id}),a.value={isDragging:!1,draggedRow:null,dropTarget:{row:null,position:"before"}}},resetOrder:()=>{0!==r.value.size&&n.value.sort(((n,e)=>(n.id?r.value.get(n.id)??0:0)-(e.id?r.value.get(e.id)??0:0)))},isDescendant:i,findRowIndexById:l}}(r,g.computed((()=>"none"!==i.value.direction)),a.updateRows,((n,e)=>o("row-drop",e))),{touchState:K,handleTouchStart:Z,handleTouchMove:J,handleTouchEnd:Q,handleTouchCancel:nn}=function(){const n=g.ref({isResizing:!1,startX:0,currentColumn:null,initialWidth:0}),e=()=>{n.value.isResizing&&(n.value={isResizing:!1,startX:0,currentColumn:null,initialWidth:0})};return{touchState:n,handleTouchStart:(e,t,o)=>{const a=e.touches[0];a&&(e.preventDefault(),n.value={isResizing:!0,startX:a.clientX,currentColumn:t,initialWidth:o})},handleTouchMove:(e,t)=>{const o=e.touches[0];if(!o||!n.value.isResizing)return;e.preventDefault();const a=Math.max(50,n.value.initialWidth+(o.clientX-n.value.startX));n.value.currentColumn&&t(n.value.currentColumn,a)},handleTouchEnd:e,handleTouchCancel:e}}(),{touchState:en,handleTouchStart:tn,handleTouchMove:on,handleTouchEnd:an,resetTouchState:rn}=function(){const n=g.ref({isDragging:!1,startY:0,currentY:0,draggedRow:null,dropTarget:{row:null,position:"before"},dragElement:null,initialTransform:""}),e=()=>{n.value.dragElement&&(n.value.dragElement.style.transform=n.value.initialTransform),n.value={isDragging:!1,startY:0,currentY:0,draggedRow:null,dropTarget:{row:null,position:"before"},dragElement:null,initialTransform:""}};return{touchState:n,handleTouchStart:(e,t,o)=>{const a=e.touches[0];a&&(setTimeout((()=>{n.value.isDragging&&e.preventDefault()}),100),n.value={isDragging:!0,startY:a.clientY,currentY:a.clientY,draggedRow:t,dropTarget:{row:null,position:"before"},dragElement:o,initialTransform:o.style.transform||""})},handleTouchMove:(e,t,o)=>{var a;const r=e.touches[0];if(!r||!n.value.isDragging||!n.value.dragElement)return;e.preventDefault(),n.value.currentY=r.clientY,n.value.dragElement.style.transform=`translateY(${r.clientY-n.value.startY}px)`;const i=o.getBoundingClientRect(),l=(r.clientY-i.top)/i.height;n.value.draggedRow!==t&&(n.value.dropTarget=(null==(a=t.children)?void 0:a.length)?l<.25?{row:t,position:"before"}:l>.75?{row:t,position:"after"}:{row:t,position:"child"}:{row:t,position:l<.5?"before":"after"})},handleTouchEnd:t=>{if(!n.value.isDragging)return null;if(!t.changedTouches[0])return null;const o={sourceRow:n.value.draggedRow,dropTarget:n.value.dropTarget,dropPosition:n.value.dropTarget.position};return e(),o},resetTouchState:e}}(),ln=g.computed((()=>{var n;if(!(null==(n=b.value)?void 0:n.length)||!d.value)return[{field:"Label",sortable:M.value}];const e=b.value.filter((n=>"Label"!==n.field));return[{field:"Label",sortable:M.value},...e]})),sn=g.computed((()=>{let n=0;return z.forEach((e=>n+=e)),n})),cn=g.computed((()=>{const n=(e,t=0)=>e.flatMap((e=>{var o;const r={...e,indentLevel:t},i=!!e.id&&a.isGroupExpanded(e.id);return(null==(o=e.children)?void 0:o.length)&&i?[r,...n(e.children,t+1)]:[r]}));return n(r.value)})),dn=g.computed((()=>0===f.value?{}:{height:Math.min(f.value,cn.value.length)*h.value+"px","overflow-y":"auto"})),un=g.computed((()=>ln.value.reduce(((n,e)=>(n[e.field]=!(!1===e.sortable||!(M.value||!M.value&&e.sortable)||!fn(e.field)&&!e.sortFn),n)),{}))),gn=g.computed((()=>S.value?0:D.value?80+(T.value||25):80));let pn=0;const mn=n=>{if(!C.value||"none"!==i.value.direction)return;if(Date.now()-pn<500){const e=n.target;if(e.closest(".group-toggle-button")){const n=e.closest("[data-row-id]");if(n){const e=n.dataset.rowId;e&&a.toggleGroupExpansion(e)}}return void rn()}const e=an(n);if(e&&e.sourceRow&&e.dropTarget.row){let n=cn.value.findIndex((n=>n===e.dropTarget.row));"after"===e.dropTarget.position&&(n+=1);const t=cn.value.findIndex((n=>n===e.sourceRow));t<n&&(n-=1);const r={sourceRow:e.sourceRow,targetRow:e.dropTarget.row,newIndex:n,parentId:"child"===e.dropTarget.position?e.dropTarget.row.id:void 0},i=[...cn.value];i.splice(t,1),i.splice(n,0,e.sourceRow),a.updateRows(i),o("row-drop",r)}},hn=n=>{j&&J(n,((n,e)=>{z.set(n,e)}))},fn=n=>["Id","Label","StartDate","EndDate","Duration","Progress"].includes(n),bn=n=>n.children&&n.children.length>0?[{field:"Label",sortable:M.value}]:ln.value,yn=n=>{var e;const t=["g-label-column-row"];return k.value&&t.push(k.value(n)),(null==(e=n.children)?void 0:e.length)&&t.push("g-label-column-group"),t},wn=n=>{if(!C.value)return{};const e=W.value.dropTarget.row===n;return{"g-label-column-row-draggable":!0,"g-label-column-row-dragging":W.value.draggedRow===n,"g-label-column-row-drop-target":e,[`g-label-column-row-drop-${W.value.dropTarget.position}`]:e}},vn=(n,e)=>{var t;if(!e)return{display:"flex",alignItems:"center",justifyContent:"center",width:"100%"};const o={display:"flex",alignItems:"center",width:"100%",position:"relative"};return(null==(t=n.children)?void 0:t.length)||n.indentLevel?n.indentLevel&&(o.paddingLeft=24*n.indentLevel+"px"):o.paddingLeft="24px",o},xn=n=>{const e={display:"flex",alignItems:"center",width:"100%"};return n||(e.justifyContent="center",e.paddingLeft="0"),e},kn=(n,e)=>e&&"Label"===n?{width:"100%",minWidth:"100%",maxWidth:"100%",position:"relative",flexShrink:0,flexGrow:0}:{width:`${z.get(n)||u.value}px`,minWidth:`${z.get(n)||u.value}px`,maxWidth:`${z.get(n)||u.value}px`,position:"relative",flexShrink:0,flexGrow:0},jn=(n,e,t)=>{if(e.valueGetter)return e.valueGetter(n);switch(e.field){case"Id":return n.id??t+1;case"Label":return n.label;case"StartDate":{if(!n.bars.length)return"-";const e=n.bars.reduce(((n,e)=>{const t=e[w.value];return!n||E(t).isBefore(E(n))?t:n}),"");return $(e,x.value)}case"EndDate":{if(!n.bars.length)return"-";const e=n.bars.reduce(((n,e)=>{const t=e[v.value];return!n||E(t).isAfter(E(n))?t:n}),"");return $(e,x.value)}case"Duration":{if(!n.bars.length)return"-";const e=n.bars.reduce(((n,e)=>{const t=e[w.value];return!n||E(t).isBefore(E(n))?t:n}),""),t=n.bars.reduce(((n,e)=>{const t=e[v.value];return!n||E(t).isAfter(E(n))?t:n}),"");return Cn(e,t)}case"Progress":{if(!n.bars.length)return"-";const e=n.bars.map((n=>n.ganttBarConfig.progress)).filter((n=>void 0!==n));if(0===e.length)return"-";const t=e.reduce(((n,e)=>n+e),0)/e.length;return`${Math.round(t)}%`}default:return""}},Cn=(n,e)=>{const t=E(n),o=E(e);switch(y.value){case"hour":return`${o.diff(t,"hour")}h`;case"day":case"date":default:return`${o.diff(t,"day")}d`;case"week":return`${o.diff(t,"week")}w`;case"month":return`${o.diff(t,"month")}m`}},Sn=n=>{o("scroll",n.target.scrollTop)},Mn=n=>{if(!H.value||!F.value)return;const e=n.clientX-R.value,t=z.get(F.value)||u.value,o=Math.max(50,t+e);z.set(F.value,o),R.value=n.clientX},Dn=()=>{H.value=!1,F.value=null,document.removeEventListener("mousemove",Mn),document.removeEventListener("mouseup",Dn)};return g.onMounted((()=>{ln.value.forEach((n=>{z.has(n.field)||z.set(n.field,u.value)}))})),e({setScroll:n=>{U.value&&(U.value.scrollTop=n)}}),(n,e)=>(g.openBlock(),g.createElementBlock("div",{class:"g-label-column",style:g.normalizeStyle({fontFamily:g.unref(s),color:g.unref(c).text,minWidth:"100%",flex:`0 0 ${sn.value}px`,borderRight:`1px solid ${g.unref(c).gridAndBorder}`})},[g.unref(S)?g.createCommentVNode("",!0):(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-label-column-header",style:g.normalizeStyle({background:g.unref(c).primary,borderBottom:`1px solid ${g.unref(c).gridAndBorder}`,height:`${gn.value}px`,minHeight:`${gn.value}px`})},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(ln.value,(t=>{return g.openBlock(),g.createElementBlock(g.Fragment,{key:t},[fn(t.field)||t.valueGetter?(g.openBlock(),g.createElementBlock("div",{key:0,class:g.normalizeClass(["g-label-column-header-cell",{sortable:un.value[t.field]}]),role:"columnheader",style:g.normalizeStyle(kn(t.field,!1))},[g.createElementVNode("div",{class:"header-content",onClick:n=>un.value[t.field]?g.unref(l)(t.field):void 0},[g.createElementVNode("span",P,[g.renderSlot(n.$slots,`label-column-title-${t.field.toLowerCase()}`,{},(()=>[g.createTextVNode(g.toDisplayString(t.field),1)]))]),un.value[t.field]?(g.openBlock(),g.createElementBlock("span",_,[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:(o=t.field,o!==i.value.column||"none"===i.value.direction?m.faSort:"asc"===i.value.direction?m.faArrowDownAZ:m.faArrowDownZA)},null,8,["icon"])])):g.createCommentVNode("",!0)],8,q),g.unref(j)?(g.openBlock(),g.createElementBlock("div",{key:0,class:g.normalizeClass(["column-resizer",{"is-dragging":H.value&&F.value===t.field,"is-touch-resizing":g.unref(K).isResizing&&g.unref(K).currentColumn===t.field}]),onMousedown:n=>((n,e)=>{H.value=!0,R.value=n.clientX,F.value=e,document.addEventListener("mousemove",Mn),document.addEventListener("mouseup",Dn)})(n,t.field),onTouchstart:n=>((n,e)=>{if(!j)return;const t=z.get(e)||u.value;Z(n,e,t)})(n,t.field),onTouchmove:hn,onTouchend:e[0]||(e[0]=(...n)=>g.unref(Q)&&g.unref(Q)(...n)),onTouchcancel:e[1]||(e[1]=(...n)=>g.unref(nn)&&g.unref(nn)(...n))},null,42,A)):g.createCommentVNode("",!0)],6)):g.createCommentVNode("",!0)],64);var o})),128))],4)),g.createElementVNode("div",{class:"g-label-column-rows",style:g.normalizeStyle(dn.value),ref_key:"labelContainer",ref:U,onScroll:Sn},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(cn.value,((t,o)=>{var r;return g.openBlock(),g.createElementBlock("div",{key:`${t.id||t.label}_${o}`,"data-row-id":t.id,style:g.normalizeStyle({background:(null==(r=t.children)?void 0:r.length)?g.unref(c).rowContainer:o%2==0?g.unref(c).ternary:g.unref(c).quartenary,height:`${g.unref(h)}px`,borderBottom:`1px solid ${g.unref(c).gridAndBorder}`,transform:g.unref(en).draggedRow===t?`translateY(${g.unref(en).currentY-g.unref(en).startY}px)`:void 0,zIndex:g.unref(en).draggedRow===t?1e3:void 0}),class:g.normalizeClass([yn(t),wn(t),{"is-touch-dragging":g.unref(en).draggedRow===t,"is-touch-drop-target":g.unref(en).dropTarget.row===t,[`is-touch-drop-${g.unref(en).dropTarget.position}`]:g.unref(en).dropTarget.row===t}]),draggable:g.unref(C),onDragstart:n=>g.unref(X)(t,n),onDragover:n=>g.unref(N)(t,n),onDrop:e[2]||(e[2]=n=>g.unref(V)()),onTouchstart:n=>((n,e)=>{C.value&&"none"===i.value.direction&&(pn=Date.now(),tn(n,e,n.currentTarget))})(n,t),onTouchmove:n=>((n,e)=>{C.value&&"none"===i.value.direction&&(Date.now()-pn<500?rn():on(n,e,n.currentTarget))})(n,t),onTouchend:mn,onTouchcancel:e[3]||(e[3]=(...n)=>g.unref(rn)&&g.unref(rn)(...n))},[g.createElementVNode("div",I,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(bn(t),(e=>{var r;return g.openBlock(),g.createElementBlock(g.Fragment,{key:e.field},[fn(e.field)||e.valueGetter?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-label-column-cell",style:g.normalizeStyle(kn(e.field,Boolean(null==(r=t.children)?void 0:r.length)))},[g.createElementVNode("div",{style:g.normalizeStyle(xn("Label"===e.field))},[g.createElementVNode("div",{style:g.normalizeStyle(vn(t,"Label"===e.field)),class:"cell-content"},["Label"===e.field&&t.children&&t.children.length>0?(g.openBlock(),g.createElementBlock("button",{key:0,class:"group-toggle-button",onClick:n=>((n,e)=>{e.stopPropagation(),n.id&&a.toggleGroupExpansion(n.id)})(t,n)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:t.id&&g.unref(a).isGroupExpanded(t.id)?g.unref(m.faChevronDown):g.unref(m.faChevronRight),class:"group-icon"},null,8,["icon"])],8,L)):g.createCommentVNode("",!0),g.createElementVNode("span",O,[g.renderSlot(n.$slots,`label-column-${e.field.toLowerCase()}`,{row:t,value:jn(t,e,o)},(()=>[g.createTextVNode(g.toDisplayString(jn(t,e,o)),1)]))])],4)],4)],4)):g.createCommentVNode("",!0)],64)})),128))])],46,G)})),128))],36)],4))}});const U=g.ref(),W=3e5,X=n=>n.split(/(\s+|\.|\,)/).map((n=>new RegExp("^\\p{L}","u").test(n)?(n=>n?n.normalize("NFD").replace(new RegExp("^\\p{L}","u"),(n=>n.toLocaleUpperCase())):n)(n):n)).join("");function N(n=B()){const{getHolidayInfo:t}=function(n){const{chartStartDayjs:e,chartEndDayjs:t}=Y(n),o=g.ref([]),a=new b;return g.watch((()=>{var e;return null==(e=n.holidayHighlight.value)?void 0:e.toUpperCase()}),(n=>{n?(n=>{a.init(n);const r=e.value.toDate(),i=t.value.toDate(),l=a.getHolidays(r),s=a.getHolidays(i),c=l.map((n=>({date:new Date(n.date),name:n.name,type:n.type}))),d=s.map((n=>({date:new Date(n.date),name:n.name,type:n.type})));o.value=[...c,...d]})(n):o.value=[]}),{immediate:!0}),{holidays:o,getHolidayInfo:n=>{const e=o.value.find((e=>e.date.toDateString()===n.toDateString()));return e?{isHoliday:!0,holidayName:e.name,holidayType:e.type}:null}}}(n),{precision:o,holidayHighlight:a,locale:r,timeaxisEvents:i}=n,l=g.ref(o.value),s=g.ref(3),c=g.ref([]),d={lower:new Map,upper:new Map,events:new Map},u={hour:"HH",date:"DD.MMM",day:"DD.MMM",week:"WW",month:"MMMM YYYY",year:"YYYY"},p=n=>"isoWeek"===n?u.week:u[n]||u.day,m=["hour","day","week","month"],h=g.computed((()=>24*s.value)),f=g.computed((()=>({hour:"day",day:"month",date:"month",week:"month",month:"year"}[l.value]||"month"))),y=(n,e,t,o)=>`${n.valueOf()}-${e.valueOf()}-${t}-${o}`,w=(n,e)=>{const t=n.get(e);return t?Date.now()-t.timestamp>W?(n.delete(e),null):t.units:null},v=(n,e,t)=>{n.set(e,{timestamp:Date.now(),units:t})},x=n=>({hour:"hour",day:"day",date:"day",week:"week",month:"month",year:"year",isoWeek:"week"}[n]),k=(n,e,o)=>{const r=n.toDate(),i=a.value?t(r):null,l=n.format(e);return{label:X(l),value:String(n),date:r,width:o,isHoliday:(null==i?void 0:i.isHoliday)||!1,holidayName:null==i?void 0:i.holidayName,holidayType:null==i?void 0:i.holidayType}},j=()=>{var t;if(!(null==(t=i.value)?void 0:t.length))return void(c.value=[]);const{chartStartDayjs:o,chartEndDayjs:a}=Y(n),r=a.value.diff(o.value,"minutes"),l=(u=a.value,g=s.value,`${o.value.valueOf()}-${u.valueOf()}-${g}`);var u,g;const p=(n=>{const e=d.events.get(n);return e?Date.now()-e.timestamp>W?(d.events.delete(n),null):e.events:null})(l);if(p)return void(c.value=p);const m=i.value.map((n=>{const t=e(n.startDate),i=e(n.endDate);if(i.isBefore(o.value)||t.isAfter(a.value))return{...n,width:"0px",xPosition:0};const l=t.isBefore(o.value)?o.value:t,s=i.isAfter(a.value)?a.value:i,c=l.diff(o.value,"minutes"),d=s.diff(o.value,"minutes"),u=c/r*U.value,g=Math.max(d/r*U.value-u,2);return{...n,width:`${g}px`,xPosition:u}}));var h;c.value=m,h=m,d.events.set(l,{timestamp:Date.now(),events:h})};g.watch((()=>o.value),(()=>{l.value=o.value,s.value=3})),g.watch([()=>a.value,()=>r.value],(()=>{e.locale(r.value),d.lower.clear(),d.upper.clear()})),g.watch(U,(()=>{j()})),g.watch([()=>i.value,()=>n.chartStart.value,()=>n.chartEnd.value],(()=>{j()}),{deep:!0});const C=g.computed((()=>{var e;const{chartStartDayjs:t,chartEndDayjs:o}=Y(n),a=y(t.value,o.value,l.value,s.value);let r=w(d.lower,a);const u=new Map;if(!r){r=[];let n=t.value.clone();for(;n.isBefore(o.value);){const e=k(n,p(l.value),`${h.value}px`);r.push(e),u.set(n.valueOf(),e),n=n.add(1,x(l.value))}v(d.lower,a,r)}const g=y(t.value,o.value,f.value,s.value);let m=w(d.upper,g);if(!m){m=[];let n=t.value.startOf(x(f.value));for(;n.isBefore(o.value);){const e=n.add(1,x(f.value)),a=n.isBefore(t.value)?t.value:n,r=e.isAfter(o.value)?o.value:e;let i=0;i="day"===l.value?Math.ceil(r.diff(a,"day",!0)):"month"===l.value?Math.ceil(r.diff(a,"month",!0)):"week"===l.value?Math.ceil(r.diff(a,"week",!0)):Math.ceil(r.diff(a,"hour",!0));const s=i*h.value;s>0&&m.push(k(n,p(f.value),`${s}px`)),n=e}v(d.upper,g,m)}(null==(e=i.value)?void 0:e.length)&&0===c.value.length&&j();const b=S();return M(),{result:{upperUnits:m,lowerUnits:r,events:c.value},globalMinuteStep:b}})),S=()=>{if(!n.enableMinutes.value||"hour"!==l.value)return[];const e=Math.floor(h.value/16);let t;if(e>=60)t=1;else if(e>=12)t=5;else if(e>=6)t=10;else if(e>=4)t=15;else{if(!(e>=2))return["00"];t=30}return Array.from({length:60/t},((n,e)=>(e*t).toString().padStart(2,"0")))},M=()=>{const n=Date.now();for(const[e,t]of d.lower.entries())n-t.timestamp>W&&d.lower.delete(e);for(const[e,t]of d.upper.entries())n-t.timestamp>W&&d.upper.delete(e);for(const[e,t]of d.events.entries())n-t.timestamp>W&&d.events.delete(e)};return g.watch([()=>n.chartStart.value,()=>n.chartEnd.value,l,s,()=>n.timeaxisEvents.value],(()=>{d.lower.clear(),d.upper.clear(),d.events.clear(),j()})),j(),{timeaxisUnits:C,internalPrecision:l,zoomLevel:s,adjustZoomAndPrecision:n=>{if(n)if(10===s.value){const n=(n=>{const e=m.indexOf(n),t=m.indexOf(o.value);return e>0&&e>t?m[e-1]:n})(l.value);n!==l.value&&(l.value=n,s.value=1)}else s.value+=1;else if(1===s.value){const n=(n=>{const e=m.indexOf(n);return e<m.length-1?m[e+1]:n})(l.value);n!==l.value&&(l.value=n,s.value=10)}else s.value-=1}}}const V={class:"g-gantt-holiday-tooltip-content"},K=g.defineComponent({t:"GGanttHolidayTooltip",props:{unit:{},modelValue:{type:Boolean},targetElement:{}},setup(n){const e=n,{unit:t,targetElement:o}=g.toRefs(e),{font:a}=B(),r=g.ref("0px"),i=g.ref("0px");return g.watch([()=>e.unit,()=>e.targetElement],(async()=>{var n;if(!(null==(n=t.value)?void 0:n.holidayName)||!o.value)return;const e=o.value.getBoundingClientRect();r.value=e.top-30+"px",i.value=`${e.left+e.width/2}px`}),{immediate:!0}),(n,e)=>(g.openBlock(),g.createBlock(g.Teleport,{to:"body"},[g.createVNode(g.Transition,{name:"g-fade",mode:"out-in"},{default:g.withCtx((()=>{var e;return[n.modelValue&&(null==(e=g.unref(t))?void 0:e.holidayName)?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-holiday-tooltip",style:g.normalizeStyle({top:r.value,left:i.value,fontFamily:g.unref(a)})},[g.createElementVNode("div",V,g.toDisplayString(g.unref(t).holidayName),1)],4)):g.createCommentVNode("",!0)]})),o:1})]))}}),Z={class:"g-gantt-event-tooltip-content"},J={class:"g-gantt-event-tooltip-title"},Q={class:"g-gantt-event-tooltip-time"},nn={key:0,class:"g-gantt-event-tooltip-description"},en=g.defineComponent({t:"GGanttEventTooltip",props:{event:{},modelValue:{type:Boolean},targetElement:{}},setup(n){const e=n,{event:t,targetElement:o}=g.toRefs(e),{font:a,colors:r,dateFormat:i}=B(),{format:l}=Y(),s=g.ref("0px"),c=g.ref("0px");g.watch([()=>e.event,()=>e.targetElement],(async()=>{if(!t.value||!o.value)return;await g.nextTick();const n=o.value.getBoundingClientRect();s.value=n.top-95+"px",c.value=`${n.left+n.width/2}px`}),{immediate:!0});const d=n=>l(n,i.value);return(n,e)=>(g.openBlock(),g.createBlock(g.Teleport,{to:"body"},[g.createVNode(g.Transition,{name:"g-fade",mode:"out-in"},{default:g.withCtx((()=>[n.modelValue&&g.unref(t)?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-event-tooltip",style:g.normalizeStyle({top:s.value,left:c.value,fontFamily:g.unref(a),background:g.unref(r).primary,color:g.unref(r).text})},[g.createElementVNode("div",Z,[g.createElementVNode("div",J,g.toDisplayString(g.unref(t).label),1),g.createElementVNode("div",Q,g.toDisplayString(d(g.unref(t).startDate))+" - "+g.toDisplayString(d(g.unref(t).endDate)),1),g.unref(t).description?(g.openBlock(),g.createElementBlock("div",nn,g.toDisplayString(g.unref(t).description),1)):g.createCommentVNode("",!0)])],4)):g.createCommentVNode("",!0)])),o:1})]))}}),tn={class:"g-timeunits-container"},on=["onMouseenter"],an={class:"g-timeunits-container"},rn=["onMouseenter"],ln={class:"g-timeunit-min"},sn={class:"label-unit"},cn={key:0,class:"g-timeunit-step"},dn={class:"label-unit"},un=["onMouseenter"],gn={class:"g-timeaxis-event-label"},pn=g.defineComponent({t:"GGanttTimeaxis",props:{timeaxisUnits:{},internalPrecision:{}},emits:["dragStart","drag","dragEnd"],setup(n,{expose:t,emit:o}){const a=n,{timeaxisUnits:r,internalPrecision:i}=g.toRefs(a),l=o,s=g.ref(null),c=g.ref(),d=g.ref(!1),u=g.ref(null),p=g.ref(),m=g.ref(!1),h=g.ref(null),{precision:f,colors:b,holidayHighlight:y,dayOptionLabel:w,enableMinutes:v,showEventsAxis:x,eventsAxisHeight:k}=B(),{toDayjs:j}=Y(),C=n=>{l("dragStart",n)},S=g.computed((()=>"hour"===i.value?"upper":"day"===i.value?"lower":null)),M=(n,e)=>y.value&&S.value===e&&n.isHoliday?{background:b.value.holidayHighlight||"#ffebee"}:{},D=(n,e,t)=>{y.value&&S.value!==e&&n.isHoliday||(c.value=n,u.value=t.currentTarget,d.value=!0)},T=()=>{d.value=!1,c.value=void 0,u.value=null},E=()=>{m.value=!1,p.value=void 0,h.value=null},$=(n,e)=>{if(S.value!==e||!w.value)return n.label;let t="";for(const o of w.value)switch(t&&(t+=" "),o){case"day":t+=n.label;break;case"doy":t+=`(${j(n.date).dayOfYear()})`;break;case"name":t+=X(j(n.date).format("dd")[0]);break;case"number":t+=j(n.date).date()}return t},z=g.computed((()=>k.value||25)),H=g.computed((()=>x.value&&r.value.result.events.length>0)),R=g.computed((()=>{if(!r.value.result.events.length)return[];const{chartStartDayjs:n,chartEndDayjs:t}=Y(),o=t.value.diff(n.value,"minutes");return r.value.result.events.map((a=>{const r=e(a.startDate),i=e(a.endDate),l=r.isBefore(n.value)?n.value:r,s=i.isAfter(t.value)?t.value:i,c=l.diff(n.value,"minutes"),d=s.diff(n.value,"minutes"),u=c/o*U.value,g=Math.max((d-c)/o*U.value,2);return{...a,calculatedWidth:`${g}px`,calculatedX:u}}))}));return t({timeaxisElement:s}),(n,e)=>(g.openBlock(),g.createElementBlock("div",{ref_key:"timeaxisElement",ref:s,class:"g-timeaxis",onMousedown:C,role:"tablist","aria-label":"Time Axis",style:g.normalizeStyle({borderBottom:`1px solid ${g.unref(b).gridAndBorder}`,height:H.value?`${80+z.value}px`:"80px"})},[g.createElementVNode("div",tn,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(g.unref(r).result.upperUnits,((e,t)=>(g.openBlock(),g.createElementBlock("div",{key:e.date.toISOString(),class:"g-upper-timeunit",style:g.normalizeStyle({background:t%2==0?g.unref(b).primary:g.unref(b).secondary,...M(e,"upper"),color:g.unref(b).text,width:e.width}),onMouseenter:n=>D(e,"upper",n),onMouseleave:T},[g.renderSlot(n.$slots,"upper-timeunit",{label:$(e,"upper"),value:e.value,date:e.date},(()=>[g.createTextVNode(g.toDisplayString($(e,"upper")),1)]))],44,on)))),128))]),g.createElementVNode("div",an,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(g.unref(r).result.lowerUnits,((e,t)=>(g.openBlock(),g.createElementBlock("div",{key:e.date.toISOString(),class:"g-timeunit",style:g.normalizeStyle({background:t%2==0?g.unref(b).ternary:g.unref(b).quartenary,...M(e,"lower"),color:g.unref(b).text,flexDirection:"hour"===g.unref(f)?g.unref(v)?"column":"row-reverse":"row",alignItems:"center",width:e.width}),onMouseenter:n=>D(e,"lower",n),onMouseleave:T},[g.createElementVNode("div",ln,[g.renderSlot(n.$slots,"timeunit",{label:$(e,"lower"),value:e.value,date:e.date},(()=>[g.createElementVNode("div",sn,g.toDisplayString($(e,"lower")),1)])),"hour"===g.unref(f)?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-timeaxis-hour-pin",style:g.normalizeStyle({background:g.unref(b).text})},null,4)):g.createCommentVNode("",!0)]),"hour"===g.unref(f)&&g.unref(v)?(g.openBlock(),g.createElementBlock("div",cn,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(g.unref(r).globalMinuteStep,(n=>(g.openBlock(),g.createElementBlock("div",{key:`${e.label}-${n}`,style:g.normalizeStyle({background:t%2==0?g.unref(b).ternary:g.unref(b).quartenary,color:g.unref(b).text,display:"flex",flexGrow:1,flexDirection:"row-reverse",alignItems:"center"})},[g.createElementVNode("div",dn,g.toDisplayString(n),1),g.createElementVNode("div",{class:"g-timeaxis-hour-pin",style:g.normalizeStyle({background:g.unref(b).text})},null,4)],4)))),128))])):g.createCommentVNode("",!0)],44,rn)))),128))]),H.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-events-container",style:g.normalizeStyle({height:`${z.value}px`,background:g.unref(b).background})},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(R.value,(e=>(g.openBlock(),g.createElementBlock("div",{key:e.id,class:"g-timeaxis-event",style:g.normalizeStyle({left:`${e.calculatedX}px`,width:e.calculatedWidth,backgroundColor:e.backgroundColor||g.unref(b).primary,color:e.color||g.unref(b).text,borderColor:e.color||g.unref(b).primary}),onMouseenter:n=>((n,e)=>{p.value=n,h.value=e.currentTarget,m.value=!0})(e,n),onMouseleave:E},[g.createElementVNode("div",gn,[g.renderSlot(n.$slots,"timeaxis-event",{event:e},(()=>[g.createTextVNode(g.toDisplayString(e.label),1)]))])],44,un)))),128))],4)):g.createCommentVNode("",!0),g.createVNode(K,{"model-value":d.value,unit:c.value,"target-element":u.value},null,8,["model-value","unit","target-element"]),g.createVNode(en,{"model-value":m.value,event:p.value,"target-element":h.value},null,8,["model-value","event","target-element"])],36))}}),mn=g.defineComponent({t:"GGanttBarTooltip",props:{bar:{},modelValue:{type:Boolean}},setup(n){const e={hour:"HH:mm",day:"DD. MMM HH:mm",date:"DD. MMMM YYYY",month:"DD. MMMM YYYY",week:"DD. MMMM YYYY (WW)"},t=n,{bar:o}=g.toRefs(t),{precision:a,font:r,barStart:i,barEnd:l,rowHeight:s,milestones:c}=B(),d=g.ref("0px"),u=g.ref("0px");g.watch((()=>t.bar),(async()=>{var n;await g.nextTick();const e=(null==(n=null==o?void 0:o.value)?void 0:n.ganttBarConfig.id)||"";if(!e)return;const t=document.getElementById(e),{top:a,left:r}=(null==t?void 0:t.getBoundingClientRect())||{top:0,left:0},i=Math.max(r,10);d.value=a+s.value-10+"px",u.value=`${i}px`}),{deep:!0,immediate:!0});const p=g.computed((()=>{var n,e;return(null==(e=null==(n=null==o?void 0:o.value)?void 0:n.ganttBarConfig.style)?void 0:e.background)||"cadetblue"})),{toDayjs:m}=Y(),h=g.computed((()=>{var n;return null==(n=o.value)?void 0:n[i.value]})),f=g.computed((()=>{var n;return null==(n=o.value)?void 0:n[l.value]})),b=g.computed((()=>{if(!(null==o?void 0:o.value))return"";const n=c.value.find((n=>{var e;return n.id===(null==(e=o.value)?void 0:e.ganttBarConfig.milestoneId)})),t=e[a.value];return`${m(h.value).format(t)} – ${m(f.value).format(t)}${n?` - (${n.name})`:""}`}));return(n,e)=>(g.openBlock(),g.createBlock(g.Teleport,{to:"body"},[g.createVNode(g.Transition,{name:"g-fade",mode:"out-in"},{default:g.withCtx((()=>[n.modelValue?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-tooltip",style:g.normalizeStyle({top:d.value,left:u.value,fontFamily:g.unref(r)})},[g.createElementVNode("div",{class:"g-gantt-tooltip-color-dot",style:g.normalizeStyle({background:p.value})},null,4),g.renderSlot(n.$slots,"default",{bar:g.unref(o),barStart:h.value,barEnd:f.value},(()=>[g.createTextVNode(g.toDisplayString(b.value),1)]))],4)):g.createCommentVNode("",!0)])),o:3})]))}});function hn(n=B()){const{dateFormat:e}=n,{chartStartDayjs:t,chartEndDayjs:o,toDayjs:a,format:r}=Y(n),i=g.computed((()=>o.value.diff(t.value,"minutes")));return{mapTimeToPosition:n=>{const e=U.value||0,o=a(n).diff(t.value,"minutes",!0);return Math.ceil(o/i.value*e)},mapPositionToTime:n=>r(t.value.add(n/(U.value||0)*i.value,"minutes"),e.value)}}const fn=g.defineComponent({t:"GGanttCurrentTime",setup(n){const{mapTimeToPosition:t}=hn(),o=g.ref(e()),{colors:a,dateFormat:r,currentTimeLabel:i,utc:l}=B(),s=g.ref();h.useIntervalFn((()=>{const n=l.value?e().utc():e();o.value=n;const a=r.value||"YYYY-MM-DD HH:mm:ss";s.value=t(e(o.value,a).format(a))}),1e3);const c=g.computed((()=>l.value?`${i.value} (UTC)`:i.value));return(n,e)=>(g.openBlock(),g.createElementBlock("div",{class:"g-grid-current-time",style:g.normalizeStyle({left:`${s.value}px`})},[g.createElementVNode("div",{class:"g-grid-current-time-marker",style:g.normalizeStyle({border:`1px dashed ${g.unref(a).markerCurrentTime}`})},null,4),g.createElementVNode("span",{class:"g-grid-current-time-text",style:g.normalizeStyle({color:g.unref(a).markerCurrentTime})},[g.renderSlot(n.$slots,"current-time-label",{},(()=>[g.createTextVNode(g.toDisplayString(c.value),1)]))],4)],4))}}),bn={class:"gantt-connector",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:1001,overflow:"visible"}},yn=["id"],wn=["fill"],vn=["id"],xn=["stop-color"],kn=["stop-color"],jn=["stop-color"],Cn=["stop-color"],Sn=["dur"],Mn=["dur"],Dn=["d","stroke","stroke-width","stroke-dasharray"],Tn=["cx","cy"],En=["cx","cy"],$n=(n=>{const e=n.i||n;for(const[t,o]of[["__scopeId","data-v-a658cc88"]])e[t]=o;return e})(g.defineComponent({t:"GGanttConnector",props:{sourceBar:{},targetBar:{},type:{default:"straight"},color:{default:"#ff0000"},strokeWidth:{default:2},pattern:{default:"solid"},animated:{type:Boolean,default:!1},animationSpeed:{default:"normal"},marker:{},isSelected:{type:Boolean,default:!1}},setup(n){const e=n,{enableConnectionDeletion:t}=B(),o=g.ref(null),a=g.computed((()=>e.animated?`connector-animated-${e.pattern}-${e.animationSpeed}`:"")),r=g.computed((()=>`marker-start-${e.sourceBar.id}-${e.targetBar.id}`)),i=g.computed((()=>"bidirectional"===e.marker||"forward"===e.marker)),l=g.computed((()=>"bidirectional"===e.marker)),s=g.computed((()=>i.value?4:0)),c=g.computed((()=>l.value?4:0)),d=g.computed((()=>{const n=e.sourceBar.x+e.sourceBar.width,t=e.sourceBar.y+e.sourceBar.height/2,o=e.targetBar.x,a=e.targetBar.y+e.targetBar.height/2,r=o<=n;switch(e.type){case"straight":return`M ${n},${t} L ${o-s.value},${a}`;case"squared":return r?`M ${n+c.value},${t}\n                h 20\n                v ${(a-t)/2}\n                h -${Math.abs(o-n)+40}\n                v ${(a-t)/2}\n                h ${20-2*s.value}`:`M ${n+c.value},${t}\n              h 20\n              v ${a-t}\n              h ${o-n-20-2*s.value}`;default:const e=(n+o)/2;return`M ${n+c.value},${t}\n              C ${e},${t}\n                ${e},${a}\n                ${o-s.value},${a}`}})),u=g.computed((()=>{if(!e.animated)switch(e.pattern){case"dash":return"8,8";case"dot":return"2,6";case"dashdot":return"12,6,3,6";default:return""}})),p=g.computed((()=>e.isSelected&&t.value?1.5*e.strokeWidth:e.strokeWidth));return(n,e)=>(g.openBlock(),g.createElementBlock("svg",bn,[g.createElementVNode("defs",null,[g.createElementVNode("marker",{id:r.value,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto-start-reverse"},[g.createElementVNode("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:n.color},null,8,wn)],8,yn),n.animated&&"solid"===n.pattern?(g.openBlock(),g.createElementBlock("linearGradient",{key:0,id:`gradient-${n.sourceBar.id}-${n.targetBar.id}`,gradientUnits:"userSpaceOnUse",x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[g.createElementVNode("stop",{offset:"0%","stop-color":n.color,"stop-opacity":"0.3"},null,8,xn),g.createElementVNode("stop",{offset:"45%","stop-color":n.color,"stop-opacity":"1"},null,8,kn),g.createElementVNode("stop",{offset:"55%","stop-color":n.color,"stop-opacity":"1"},null,8,jn),g.createElementVNode("stop",{offset:"100%","stop-color":n.color,"stop-opacity":"0.3"},null,8,Cn),g.createElementVNode("animate",{attributeName:"x1",from:"-100%",to:"100%",dur:"slow"===n.animationSpeed?"4s":"fast"===n.animationSpeed?"1s":"2s",repeatCount:"indefinite"},null,8,Sn),g.createElementVNode("animate",{attributeName:"x2",from:"0%",to:"200%",dur:"slow"===n.animationSpeed?"4s":"fast"===n.animationSpeed?"1s":"2s",repeatCount:"indefinite"},null,8,Mn)],8,vn)):g.createCommentVNode("",!0)]),g.createElementVNode("path",{ref_key:"pathRef",ref:o,d:d.value,fill:"none",stroke:n.animated&&"solid"===n.pattern?`url(#gradient-${n.sourceBar.id}-${n.targetBar.id})`:n.color,"stroke-width":p.value,"stroke-dasharray":u.value,class:g.normalizeClass(["connector-path",a.value,{selected:n.isSelected&&g.unref(t)}]),style:g.normalizeStyle({markerStart:l.value?`url(#${r.value})`:"none",markerEnd:i.value?`url(#${r.value})`:"none",cursor:g.unref(t)?"pointer":"inherit",pointerEvents:g.unref(t)?"all":"none"})},null,14,Dn),n.isSelected&&g.unref(t)?(g.openBlock(),g.createElementBlock(g.Fragment,{key:0},[g.createElementVNode("circle",{cx:n.sourceBar.x+n.sourceBar.width,cy:n.sourceBar.y+n.sourceBar.height/2,r:"6",fill:"white",class:"connection-endpoint"},null,8,Tn),g.createElementVNode("circle",{cx:n.targetBar.x,cy:n.targetBar.y+n.targetBar.height/2,r:"6",fill:"white",class:"connection-endpoint"},null,8,En)],64)):g.createCommentVNode("",!0)]))}})),Bn={class:"g-gantt-milestone-tooltip-title"},zn={class:"g-gantt-milestone-tooltip-date"},Yn={class:"g-gantt-milestone-tooltip-description"},Hn=g.defineComponent({t:"GGanttMilestone",props:{milestone:{}},setup(n){const t=n,{mapTimeToPosition:o}=hn(),{colors:a}=B(),r=g.ref(!1),i=g.ref({x:0,y:0}),l=g.computed((()=>{const n=e(t.milestone.date);return n.hour()||n.minute()?t.milestone.date:n.hour(12).minute(0).format("YYYY-MM-DD HH:mm")})),s=g.computed((()=>o(l.value))),c=g.computed((()=>t.milestone.color?{label:{background:t.milestone.color,color:"#000",border:`2px solid ${t.milestone.color}`},marker:{borderLeft:`2px solid ${t.milestone.color}`}}:{label:{background:a.value.primary,color:a.value.text,border:"none"},marker:{borderLeft:`2px solid ${a.value.markerCurrentTime}`}})),d=n=>{const e=n.target.getBoundingClientRect();i.value={x:e.left,y:e.top+10},r.value=!0},u=()=>{r.value=!1};return(n,e)=>(g.openBlock(),g.createElementBlock("div",{class:"g-gantt-milestone",style:g.normalizeStyle({left:`${s.value}px`}),onMouseenter:d,onMouseleave:u},[g.renderSlot(n.$slots,`milestone-${n.milestone.id}`,{milestone:n.milestone,styleConfig:c.value,position:s.value},(()=>[g.renderSlot(n.$slots,"milestone",{milestone:n.milestone,styleConfig:c.value,position:s.value},(()=>[g.createElementVNode("div",{class:"g-gantt-milestone-label",style:g.normalizeStyle(c.value.label)},g.toDisplayString(n.milestone.name),5)]))])),g.createElementVNode("div",{class:"g-gantt-milestone-marker",style:g.normalizeStyle(c.value.marker)},null,4),(g.openBlock(),g.createBlock(g.Teleport,{to:"body"},[g.createVNode(g.Transition,{name:"g-fade",mode:"out-in"},{default:g.withCtx((()=>[r.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-milestone-tooltip",style:g.normalizeStyle({top:`${i.value.y}px`,left:`${i.value.x}px`,background:g.unref(a).primary,color:g.unref(a).text})},[g.createElementVNode("div",Bn,g.toDisplayString(n.milestone.name),1),g.createElementVNode("div",zn,g.toDisplayString(n.milestone.date),1),g.createElementVNode("div",Yn,g.toDisplayString(n.milestone.description),1)],4)):g.createCommentVNode("",!0)])),o:1})]))],36))}});function Rn(){const n=g.inject(M);if(!n)throw Error("Failed to inject emitBarEvent!");return n}function qn(){const n=(n,e)=>{const t=document.getElementById(n);return t?t.querySelector(`#${CSS.escape(e)}`):null};return{findBarElement:n,findAllBarElements:n=>{const e=document.getElementById(n);return e?e.querySelectorAll(".g-gantt-bar"):document.querySelectorAll(".non-existent")},barExistsInGantt:(e,t)=>!!n(e,t)}}function Pn(n,t,o){const{barStart:a,barEnd:r,dateFormat:i,pushOnOverlap:l,pushOnConnect:s}=n,c=new Set,d=n=>{const e=o.format(n,i.value);return"string"==typeof e?e:e.toISOString()},u=(t,a)=>{if(!t.ganttBarConfig.milestoneId||!n.milestones.value)return!0;const r=n.milestones.value.find((n=>n.id===t.ganttBarConfig.milestoneId));if(!r)return!0;const i=o.toDayjs(a),l=e(r.date);let s=l;return l.hour()||l.minute()||(s=o.toDayjs(l.hour(23).minute(59).format("YYYY-MM-DD HH:mm"))),i.isSameOrBefore(s)},g=()=>{const n=e=>{var t;let o=[...e.bars];return(null==(t=e.children)?void 0:t.length)&&e.children.forEach((e=>{o=[...o,...n(e)]})),o};return t.rows.value.flatMap((e=>n(e)))},p=(n,e,t,i=!0)=>{if(c.has(n.ganttBarConfig.id))return{success:!0,affectedBars:new Set};if(!u(n,t))return{success:!1,affectedBars:new Set};c.add(n.ganttBarConfig.id);const l=new Set,s=n[a.value],h=n[r.value];if(n[a.value]=e,n[r.value]=t,n.ganttBarConfig.bundle&&i){const t=g().filter((e=>e.ganttBarConfig.bundle===n.ganttBarConfig.bundle&&e!==n)),i=o.toDayjs(e).diff(o.toDayjs(s),"minutes");for(const e of t){const t=d(o.toDayjs(e[a.value]).add(i,"minutes")),u=d(o.toDayjs(e[r.value]).add(i,"minutes")),g=p(e,t,u,!1);if(!g.success)return n[a.value]=s,n[r.value]=h,c.delete(n.ganttBarConfig.id),{success:!1,affectedBars:new Set};g.affectedBars.forEach((n=>l.add(n)))}}return m(n,l).success?(i&&c.clear(),l.add(n),{success:!0,affectedBars:l}):(n[a.value]=s,n[r.value]=h,c.delete(n.ganttBarConfig.id),{success:!1,affectedBars:new Set})},m=(n,e)=>{const t=l.value?f(n):[],i=s.value?b(n):[],c=[...new Set([...t,...i])];for(const l of c){if(l.ganttBarConfig.immobile)return{success:!1};const{shouldMove:t,minutesToMove:i,direction:s}=h(n,l);if(!t)continue;const c=d("left"===s?o.toDayjs(l[a.value]).subtract(i,"minutes"):o.toDayjs(l[a.value]).add(i,"minutes")),g=d("left"===s?o.toDayjs(l[r.value]).subtract(i,"minutes"):o.toDayjs(l[r.value]).add(i,"minutes"));if(!u(l,g))return{success:!1};const m=p(l,c,g,!1);if(!m.success)return{success:!1};e.add(l),m.affectedBars.forEach((n=>e.add(n)))}return{success:!0}},h=(n,e)=>{const t=o.toDayjs(n[a.value]),i=o.toDayjs(n[r.value]),l=o.toDayjs(e[a.value]),s=o.toDayjs(e[r.value]);if(e.ganttBarConfig.immobile&&(t.isBefore(s)&&i.isAfter(l)||i.isAfter(l)&&t.isBefore(s)))return{shouldMove:!1,minutesToMove:0,direction:"right"};if(i.isSameOrBefore(l)||t.isSameOrAfter(s))return{shouldMove:!1,minutesToMove:0,direction:"right"};const c=t.isBefore(l)?"right":"left";let d=0;return d="right"===c?i.diff(l,"minutes",!0):s.diff(t,"minutes",!0),{shouldMove:!0,minutesToMove:Math.abs(d),direction:c}},f=n=>{const e=(n,t)=>{var o;for(const a of t){if(a.bars.includes(n))return a;if(null==(o=a.children)?void 0:o.length){const t=e(n,a.children);if(t)return t}}return null},i=e(n,t.rows.value);return i?i.bars.filter((e=>{if(e===n||!1===e.ganttBarConfig.pushOnOverlap)return!1;if(e.ganttBarConfig.id.startsWith("group-"))return!1;const t=o.toDayjs(n[a.value]),i=o.toDayjs(n[r.value]),l=o.toDayjs(e[a.value]),s=o.toDayjs(e[r.value]);return t.isBefore(s)&&i.isAfter(l)||l.isBefore(i)&&s.isAfter(t)})):[]},b=n=>{var e;const t=g(),o=[];return null==(e=n.ganttBarConfig.connections)||e.forEach((n=>{const e=t.find((e=>e.ganttBarConfig.id===n.targetId));e&&!1!==e.ganttBarConfig.pushOnConnect&&o.push(e)})),t.forEach((e=>{var t;null==(t=e.ganttBarConfig.connections)||t.forEach((t=>{t.targetId===n.ganttBarConfig.id&&!1!==e.ganttBarConfig.pushOnConnect&&o.push(e)}))})),o};return{moveBar:p,findOverlappingBars:f,findConnectedBars:b,getAllBars:g}}const _n=()=>{const n=B(),e=Rn(),t=Y(n),{barStart:o,barEnd:a}=n,r=g.inject("useRows"),i=g.inject($),l=Pn(n,r,t),s={movedBars:new Map,isDragging:!1},c=(n,t)=>{const o=n.ganttBarConfig.bundle;if(!o)return;const a=(n=>{const e=[];return null!=n&&l.getAllBars().forEach((t=>{t.ganttBarConfig.bundle===n&&e.push(t)})),e})(o);a.forEach((e=>{d(e,e===n).initiateDrag(t),m(e)})),e({...t,type:"dragstart"},n)},d=(e,t=!0)=>({initiateDrag:o=>{const{initDrag:a}=function(n,e=()=>null,t=()=>null,o,a,r){const{findBarElement:i}=qn(),{barStart:l,barEnd:s}=o,c=g.ref(!1);let d,u=0,p=0;const{mapPositionToTime:m}=hn(o),{toDayjs:h}=Y(o),f=()=>{const e=i(r,n.ganttBarConfig.id);let t=e,o=null;for(;t&&!o;){const n=t.closest(".g-gantt-row-bars-container");n&&(o=n.getBoundingClientRect()),t=t.parentElement}return{barElement:e,barContainer:o}},b=t=>{const{barElement:o,barContainer:r}=f();if(!o||!r)return;const i=o.getBoundingClientRect().width,c=Math.max(0,t.clientX-u-r.left),d=c+i,g=m(c),p=m(d),h=n[l.value],b=n[s.value];if(!a.moveBar(n,g,p).success)return n[l.value]=h,n[s.value]=b,void v(t);e(t,n)},y=t=>{const{barContainer:o}=f();if(!o)return;const r=m(t.clientX-o.left);h(r).isSameOrAfter(h(n[s.value]))||a.moveBar(n,r,n[s.value]).success&&e(t,n)},w=t=>{const{barContainer:o}=f();if(!o)return;const r=m(t.clientX-o.left);h(r).isSameOrBefore(h(n[l.value]))||a.moveBar(n,n[l.value],r).success&&e(t,n)},v=e=>{c.value=!1,document.body.style.cursor="",window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",v),t(e,n)};return{isDragging:c,initDrag:e=>{if(n.ganttBarConfig.immobile)return;const t=i(r,n.ganttBarConfig.id);if(!t)return;const o=t.getBoundingClientRect();switch(p=o.left,u=e.clientX-p,e.target.className){case"g-gantt-bar-handle-left":document.body.style.cursor="ew-resize",d=y;break;case"g-gantt-bar-handle-right":document.body.style.cursor="ew-resize",d=w;break;default:d=b}c.value=!0,window.addEventListener("mousemove",d),window.addEventListener("mouseup",v)}}}(e,(n=>u(n,e)),t?p:()=>null,n,l,i);a(o)}}),u=(n,t)=>{e({...n,type:"drag"},t);const r=l.moveBar(t,t[o.value],t[a.value]);r.success?r.affectedBars.forEach((n=>{s.movedBars.has(n)||m(n)})):h()},p=(n,t)=>{e({...n,type:"dragend"},t,void 0,new Map(s.movedBars)),s.movedBars.clear(),s.isDragging=!1},m=n=>{s.movedBars.has(n)||s.movedBars.set(n,{oldStart:n[o.value],oldEnd:n[a.value]})},h=()=>{s.movedBars.forEach((({oldStart:n,oldEnd:e},t)=>{t[o.value]=n,t[a.value]=e}))};return{initDragOfBar:(n,t)=>{n.ganttBarConfig.bundle?c(n,t):(d(n).initiateDrag(t),m(n),e({...t,type:"dragstart"},n))},initDragOfBundle:c,snapBackMovedBars:h,handleDrag:u,getConnectedBars:l.findConnectedBars}};const An=["id","aria-label","aria-grabbed","aria-describedby"],Gn={key:0,class:"progress-text"},In=["width","height"],Ln=["d","fill"],On={class:"g-gantt-bar-label"},Fn={key:0},Un={key:0,class:"g-gantt-bar-label-edit"},Wn={key:1},Xn=["innerHTML"],Nn=g.defineComponent({t:"GGanttBar",props:{bar:{}},setup(n){const e=n,t=g.inject($),o=g.inject("connectionCreation"),a=Rn(),r=B(),{rowHeight:i}=r,{bar:l}=g.toRefs(e),{mapTimeToPosition:s,mapPositionToTime:c}=hn(),{initDragOfBar:d,initDragOfBundle:u}=_n(),{setDragLimitsOfGanttBar:p}=function(){const{pushOnOverlap:n,pushOnConnect:e}=B(),{getConnectedBars:t}=_n(),o=g.inject("useRows"),a=g.inject($),{findBarElement:r}=qn(),i=n=>{const e=[];return null!=n&&o.rows.value.forEach((t=>{t.bars.forEach((t=>{t.ganttBarConfig.bundle===n&&e.push(t)}))})),e},l=(n,e=0,t)=>{const o=n.ganttBarConfig.bundle?[{bar:n,gapDistance:e}]:[];let i=n,l=s(i,t);if("left"===t)for(;l;){const n=r(a,i.ganttBarConfig.id),t=r(a,l.ganttBarConfig.id);if(e+=n.offsetLeft-(t.offsetLeft+t.offsetWidth),l.ganttBarConfig.immobile)return{gapDistanceSoFar:e,bundleBarsAndGapDist:o};l.ganttBarConfig.bundle&&o.push({bar:l,gapDistance:e}),i=l,l=s(l,"left")}if("right"===t)for(;l;){const n=r(a,i.ganttBarConfig.id);if(e+=r(a,l.ganttBarConfig.id).offsetLeft-(n.offsetLeft+n.offsetWidth),l.ganttBarConfig.immobile)return{gapDistanceSoFar:e,bundleBarsAndGapDist:o};l.ganttBarConfig.bundle&&o.push({bar:l,gapDistance:e}),i=l,l=s(l,"right")}return{gapDistanceSoFar:null,bundleBarsAndGapDist:o}},s=(i,l)=>{var s;const c=r(a,i.ganttBarConfig.id);let d=[];n.value&&(d=(null==(s=o.rows.value.find((n=>n.bars.includes(i))))?void 0:s.bars)||[]),e.value&&(d=[...d,...t(i)]);let u=[];return u=d.filter("left"===l?n=>{const e=r(a,n.ganttBarConfig.id);return e&&e.offsetLeft<c.offsetLeft&&!1!==n.ganttBarConfig.pushOnOverlap&&!1!==n.ganttBarConfig.pushOnConnect}:n=>{const e=r(a,n.ganttBarConfig.id);return e&&e.offsetLeft>c.offsetLeft&&!1!==n.ganttBarConfig.pushOnOverlap&&!1!==n.ganttBarConfig.pushOnConnect}),u.length>0?u.reduce(((n,e)=>{const t=r(a,n.ganttBarConfig.id),o=r(a,e.ganttBarConfig.id);return Math.abs(t.offsetLeft-c.offsetLeft)<Math.abs(o.offsetLeft-c.offsetLeft)?n:e}),u[0]):null};return{setDragLimitsOfGanttBar:t=>{if(n.value&&!1!==t.ganttBarConfig.pushOnOverlap&&e.value&&!1!==t.ganttBarConfig.pushOnConnect){for(const n of["left","right"]){const e=n,{gapDistanceSoFar:o,bundleBarsAndGapDist:s}=l(t,0,e);let c=o;const d=s;if(!d)continue;for(let n=0;n<d.length;n++){const t=d[n].bar,o=d[n].gapDistance;i(t.ganttBarConfig.bundle).filter((n=>n!==t)).forEach((n=>{const t=l(n,o,e),a=t.gapDistanceSoFar;null!=a&&(!c||a<c)&&(c=a),t.bundleBarsAndGapDist.forEach((n=>{d.find((e=>e.bar===n.bar))||d.push(n)}))}))}const u=r(a,t.ganttBarConfig.id);null!=c&&"left"===e?t.ganttBarConfig.dragLimitLeft=u.offsetLeft-c:null!=c&&"right"===e&&(t.ganttBarConfig.dragLimitRight=u.offsetLeft+u.offsetWidth+c)}i(t.ganttBarConfig.bundle).forEach((n=>{n.ganttBarConfig.dragLimitLeft=t.ganttBarConfig.dragLimitLeft,n.ganttBarConfig.dragLimitRight=t.ganttBarConfig.dragLimitRight}))}}}}(),m=g.ref(!1),h=g.ref(!1),f=g.ref(""),b=g.ref(null),{barStart:y,barEnd:w,width:v,chartStart:x,chartEnd:k,chartSize:j,showLabel:C,showProgress:S,defaultProgressResizable:M,enableConnectionCreation:T,barLabelEditable:E}=r,z=g.ref(0),H=g.ref(0),R=g.computed((()=>l.value.ganttBarConfig)),q=g.computed((()=>l.value.ganttBarConfig.id.startsWith("group-"))),P=g.computed((()=>{var n;const t=e.bar.ganttBarConfig.progress??0,o=e.bar.ganttBarConfig.progressStyle||{},a=(null==(n=e.bar.ganttBarConfig.style)?void 0:n.background)||"#5F9EA0";return{...o,left:0,width:`${Math.min(Math.max(t,0),100)}%`,backgroundColor:o.backgroundColor||yn(a),transition:"width 0.3s ease",borderRadius:"inherit",height:"100%"}})),_=g.computed((()=>({width:"12px",height:"12px",borderRadius:"50%",cursor:"pointer",background:I.value?"#00ff00":"#ff0000",transition:"all 0.2s ease",opacity:(null==o?void 0:o.connectionState.value.isCreating)||rn.value||on.value||an.value?1:0,zIndex:1e3}))),A=g.computed((()=>({..._.value,left:0,top:"50%",transform:"translate(-50%, -50%)"}))),G=g.computed((()=>({..._.value,right:0,top:"50%",transform:"translate(50%, -50%)"}))),I=g.computed((()=>!!(null==o?void 0:o.connectionState.value.isCreating)&&o.canBeConnectionTarget.value(e.bar))),L=n=>{null!=R.value.bundle?u(l.value,n):d(l.value,n),m.value=!0},O=n=>{var e;n.preventDefault(),"mousedown"===n.type&&(p(l.value),R.value.immobile||(window.addEventListener("mousemove",L,{once:!0}),window.addEventListener("mouseup",(()=>{window.removeEventListener("mousemove",L),m.value=!1}),{once:!0})));const t=null==(e=null==F?void 0:F.value)?void 0:e.getBoundingClientRect();if(!t)return;const o=c(n.clientX-t.left);a(n,l.value,o)},F=g.inject(D),{handleTouchStart:U,handleTouchMove:W,handleTouchEnd:X,handleTouchCancel:N}=function(n,e=5){const t=g.ref({isDragging:!1,startX:0,startY:0,lastX:0,lastY:0,currentBar:null,dragTarget:null}),o=(n,e,o=0,a=0)=>{const r=new MouseEvent(e,{bubbles:!0,cancelable:!0,clientX:n.clientX,clientY:n.clientY,movementX:o,movementY:a,view:window});if(t.value.currentBar){const n=document.querySelector(`#${t.value.currentBar.ganttBarConfig.id}`);n&&Object.defineProperty(r,"target",{value:n})}return r},a=n=>{const e=n.changedTouches[0];if(e&&t.value.currentBar){if(t.value.isDragging){n.preventDefault();const t=o(e,"mouseup");window.dispatchEvent(t)}t.value={isDragging:!1,startX:0,startY:0,lastX:0,lastY:0,currentBar:null,dragTarget:null}}};return{handleTouchStart:(e,a)=>{const r=e.touches[0];if(!r||!a)return;const i=e.target;if(!i)return;const l=(s=i).classList.contains("g-gantt-bar-handle-left")?"leftHandle":s.classList.contains("g-gantt-bar-handle-right")?"rightHandle":s.classList.contains("g-gantt-bar")||s.closest(".g-gantt-bar")?"bar":null;var s;if(!l)return;e.preventDefault(),t.value={isDragging:!1,startX:r.clientX,startY:r.clientY,lastX:r.clientX,lastY:r.clientY,currentBar:a,dragTarget:l};const c=o(r,"mousedown");n(a,c)},handleTouchMove:n=>{const a=n.touches[0];if(!a||!t.value.currentBar)return;const r=Math.abs(a.clientX-t.value.startX),i=Math.abs(a.clientY-t.value.startY);if(!t.value.isDragging&&(r>e||i>e)&&(t.value.isDragging=!0),t.value.isDragging){n.preventDefault();const e=a.clientX-t.value.lastX,r=a.clientY-t.value.lastY;t.value.lastX=a.clientX,t.value.lastY=a.clientY;const i=o(a,"mousemove",e,r);window.dispatchEvent(i)}},handleTouchEnd:a,handleTouchCancel:a}}(((n,e)=>{L(e),m.value=!0})),V=n=>{if(l.value.ganttBarConfig.immobile)return;let e;switch(n.type){case"touchstart":e=U(n,l.value);break;case"touchmove":e=W(n);break;case"touchend":e=X(n);break;case"touchcancel":e=N(n)}e&&O(e)},K=g.ref(!1),Z=g.ref(0),J=g.ref(0),Q=n=>{(e.bar.ganttBarConfig.progressResizable||M.value)&&(n.stopPropagation(),K.value=!0,Z.value=n.clientX,J.value=e.bar.ganttBarConfig.progress??0,window.addEventListener("mousemove",en),window.addEventListener("mouseup",tn),a({...n,type:"progress-drag-start"},e.bar))},{findBarElement:nn}=qn(),en=n=>{if(!K.value)return;const o=nn(t,e.bar.ganttBarConfig.id);if(!o)return;const r=o.getBoundingClientRect(),i=Math.min(Math.max(J.value+(n.clientX-Z.value)/r.width*100,0),100);l.value.ganttBarConfig.progress=Math.round(i),a({...n,type:"progress-change"},e.bar)},tn=n=>{K.value&&(K.value=!1,window.removeEventListener("mousemove",en),window.removeEventListener("mouseup",tn),a({...n,type:"progress-drag-end"},e.bar))},on=g.ref(!1),an=g.ref(!1),rn=g.ref(!1),ln=n=>{T.value&&("start"===n?on.value=!0:an.value=!0,null==o||o.handleConnectionPointHover(e.bar.ganttBarConfig.id,n,!0))},sn=n=>{T.value&&("start"===n?on.value=!1:an.value=!1,null==o||o.handleConnectionPointHover(e.bar.ganttBarConfig.id,n,!1))},cn=(n,t)=>{T.value&&(n.stopPropagation(),null==o||o.startConnectionCreation(e.bar,t,n))},dn=(n,t)=>{T.value&&(n.stopPropagation(),null==o||o.completeConnection(e.bar,t,n))},un=n=>{rn.value=!0,O(n)},gn=n=>{rn.value=!1,O(n)},pn=n=>{E.value&&!q.value&&(n.stopPropagation(),l.value.ganttBarConfig.l=R.value.label||"",h.value=!0,f.value=R.value.label||"",setTimeout((()=>{b.value&&(b.value.focus(),b.value.select())}),0))},mn=()=>{h.value&&(l.value.ganttBarConfig.label=f.value,a({type:"label-edit",preventDefault:()=>{},stopPropagation:()=>{}},l.value),h.value=!1)},fn=n=>{"Enter"===n.key?mn():"Escape"===n.key&&(h.value=!1)},bn=()=>{mn()},yn=n=>{const e=n.startsWith("#")?wn(n):vn(n);return`rgba(${Math.max(0,e.r-40)}, ${Math.max(0,e.g-40)}, ${Math.max(0,e.b-40)}, ${e.a})`},wn=n=>{const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16),a:1}:{r:0,g:0,b:0,a:1}},vn=n=>{const e=n.match(/(\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?/);return e?{r:parseInt(e[1]),g:parseInt(e[2]),b:parseInt(e[3]),a:e[4]?parseFloat(e[4]):1}:{r:0,g:0,b:0,a:1}},xn=(n,e)=>{const t=.5*e;return`\n    M 0 0\n    L 0 ${e}\n    L 15 ${t}\n    L ${n-15} ${t}\n    L ${n} ${e}\n    L ${n} 0\n    L 0 0\n  `},{onBarKeyDown:kn}=function(n,e,t){const o=Y(e),{barStart:a,barEnd:r,dateFormat:i,precision:l}=e,s=g.inject("useRows"),c=Pn(e,s,o),d={hour:5,day:120,week:840,month:3600},u=n=>{const e=d[l.value]||d.hour;return n?12*e:e},p=(t,l)=>{const s="forward"===t?1:-1,d=u(l),g=o.toDayjs(n[a.value]),p=o.toDayjs(n[r.value]),m=g.add(d*s,"minutes"),f=p.add(d*s,"minutes");if(m.isBefore(e.chartStart.value)||f.isAfter(e.chartEnd.value))return;const b=o.format(m,i.value),y=o.format(f,i.value);c.moveBar(n,b,y).success&&h()},m=(t,l)=>{const s=o.toDayjs(n[a.value]),d=o.toDayjs(n[r.value]);let g=u(l);5===g&&(g=10);const p=g/2;let m,f;if("expand"===t)m=o.format(s.subtract(p,"minutes"),i.value),f=o.format(d.add(p,"minutes"),i.value);else{if(d.diff(s,"minutes")<=g)return;m=o.format(s.add(p,"minutes"),i.value),f=o.format(d.subtract(p,"minutes"),i.value)}const b=o.toDayjs(m),y=o.toDayjs(f);b.isBefore(e.chartStart.value)||y.isAfter(e.chartEnd.value)||c.moveBar(n,m,f).success&&h()},h=()=>{const e=new MouseEvent("drag",{bubbles:!0});t(e,n);const o=new MouseEvent("dragend",{bubbles:!0});t(o,n)};return{onBarKeyDown:e=>{const t=e.target;if(t.id&&t.id===n.ganttBarConfig.id&&!n.ganttBarConfig.immobile)switch(e.key){case"ArrowLeft":e.preventDefault(),p("backward",e.shiftKey);break;case"ArrowRight":e.preventDefault(),p("forward",e.shiftKey);break;case"ArrowUp":e.preventDefault(),m("expand",e.shiftKey);break;case"ArrowDown":e.preventDefault(),m("shrink",e.shiftKey)}}}}(l.value,r,a);return g.onMounted((()=>{z.value=s(l.value[y.value]),H.value=s(l.value[w.value]),g.watch([()=>l.value,v,x,k,j.width],(()=>{const n=s(l.value[y.value]),e=s(l.value[w.value]);z.value=n,H.value=e}),{deep:!0,immediate:!0})})),(n,e)=>(g.openBlock(),g.createElementBlock("div",{id:R.value.id,class:g.normalizeClass(["g-gantt-bar",R.value.class||""]),style:g.normalizeStyle({...R.value.style,position:"absolute",top:.15*g.unref(i)+"px",left:`${z.value}px`,width:H.value-z.value+"px",height:.7*g.unref(i)+"px",zIndex:m.value?3:2,cursor:g.unref(l).ganttBarConfig.immobile?"":"grab"}),onMousedown:O,onClick:O,onMouseenter:un,onMouseleave:gn,onContextmenu:O,onTouchstart:V,onTouchmove:V,onTouchend:V,onTouchcancel:V,onKeydown:e[9]||(e[9]=(...n)=>g.unref(kn)&&g.unref(kn)(...n)),onDblclick:pn,role:"listitem","aria-label":`Activity ${R.value.label}`,"aria-grabbed":m.value,tabindex:"0","aria-describedby":`tooltip-${R.value.id}`},[g.unref(T)?(g.openBlock(),g.createElementBlock(g.Fragment,{key:0},[g.createElementVNode("div",{class:"connection-point start",style:g.normalizeStyle([A.value,{position:"absolute"}]),onMouseenter:e[0]||(e[0]=n=>ln("start")),onMouseleave:e[1]||(e[1]=n=>sn("start")),onMousedown:e[2]||(e[2]=n=>cn(n,"start")),onMouseup:e[3]||(e[3]=n=>dn(n,"start"))},null,36),g.createElementVNode("div",{class:"connection-point end",style:g.normalizeStyle([G.value,{position:"absolute"}]),onMouseenter:e[4]||(e[4]=n=>ln("end")),onMouseleave:e[5]||(e[5]=n=>sn("end")),onMousedown:e[6]||(e[6]=n=>cn(n,"end")),onMouseup:e[7]||(e[7]=n=>dn(n,"end"))},null,36)],64)):g.createCommentVNode("",!0),void 0!==R.value.progress?(g.openBlock(),g.createElementBlock("div",{key:1,class:"g-gantt-progress-bar",style:g.normalizeStyle(P.value)},[g.unref(S)?(g.openBlock(),g.createElementBlock("span",Gn,g.toDisplayString(Math.round(R.value.progress))+"%",1)):g.createCommentVNode("",!0),R.value.progressResizable||g.unref(M)?(g.openBlock(),g.createElementBlock("div",{key:1,class:"g-gantt-progress-handle",style:g.normalizeStyle({right:0===g.unref(l).ganttBarConfig.progress?0:"-4px"}),onMousedown:Q},null,36)):g.createCommentVNode("",!0)],4)):g.createCommentVNode("",!0),q.value?(g.openBlock(),g.createElementBlock("svg",{key:2,class:"group-bar-decoration",width:H.value-z.value,height:.7*g.unref(i)},[g.createElementVNode("path",{d:xn(H.value-z.value,.65*g.unref(i)),fill:g.unref(r).colors.value.barContainer},null,8,Ln)],8,In)):g.createCommentVNode("",!0),g.createElementVNode("div",On,[g.renderSlot(n.$slots,"default",{bar:g.unref(l)},(()=>[!q.value&&g.unref(C)?(g.openBlock(),g.createElementBlock("div",Fn,[h.value&&g.unref(E)?(g.openBlock(),g.createElementBlock("div",Un,[g.withDirectives(g.createElementVNode("input",{ref_key:"labelInput",ref:b,"onUpdate:modelValue":e[8]||(e[8]=n=>f.value=n),onKeydown:fn,onBlur:bn,class:"g-gantt-bar-label-input"},null,544),[[g.vModelText,f.value]])])):(g.openBlock(),g.createElementBlock("div",Wn,g.toDisplayString(R.value.label||""),1))])):g.createCommentVNode("",!0),R.value.html?(g.openBlock(),g.createElementBlock("div",{key:1,innerHTML:R.value.html},null,8,Xn)):g.createCommentVNode("",!0)]))]),R.value.hasHandles?(g.openBlock(),g.createElementBlock(g.Fragment,{key:3},[e[10]||(e[10]=g.createElementVNode("div",{class:"g-gantt-bar-handle-left"},null,-1)),e[11]||(e[11]=g.createElementVNode("div",{class:"g-gantt-bar-handle-right"},null,-1))],64)):g.createCommentVNode("",!0)],46,An))}}),Vn={key:0,class:"g-gantt-row-children"},Kn=g.defineComponent({t:"GGanttRow",props:{label:{},bars:{},highlightOnHover:{type:Boolean},id:{},children:{},connections:{}},emits:["drop"],setup(n,{emit:e}){const t=n,o=e,a=g.inject("useRows"),{rowHeight:r,colors:i,labelColumnTitle:l,rowClass:s}=B(),{highlightOnHover:c}=g.toRefs(t),d=g.ref(null),u=g.ref(!1),h=g.computed((()=>{var n;return Boolean(null==(n=t.children)?void 0:n.length)})),f=g.computed((()=>!(!h.value||!t.id)&&a.isGroupExpanded(t.id))),b=g.computed((()=>{const n={height:`${r.value}px`,borderBottom:`1px solid ${i.value.gridAndBorder}`,background:(null==c?void 0:c.value)&&u.value?i.value.hoverHighlight:void 0};return h.value?{...n,background:(null==c?void 0:c.value)&&u.value?i.value.hoverHighlight:void 0}:n})),y=g.computed((()=>{const n=["g-gantt-row"];return s.value&&t&&n.push(s.value(t)),h.value&&n.push("g-gantt-row-group"),n})),w=g.computed((()=>h.value&&f.value&&t.children||[])),{mapPositionToTime:v}=hn(),x=n=>{n.stopPropagation(),t.id&&a.toggleGroupExpansion(t.id)};return g.provide(D,d),(n,e)=>{const t=g.resolveComponent("g-gantt-row",!0);return g.openBlock(),g.createElementBlock(g.Fragment,null,[g.createElementVNode("div",{class:g.normalizeClass(y.value),style:g.normalizeStyle(b.value),onDragover:e[2]||(e[2]=g.withModifiers((n=>u.value=!0),["prevent"])),onDragleave:e[3]||(e[3]=n=>u.value=!1),onDrop:e[4]||(e[4]=n=>(n=>{var e;if(h.value)return;const t=null==(e=d.value)?void 0:e.getBoundingClientRect();if(!t)return;const a=v(n.clientX-t.left);o("drop",{e:n,datetime:a})})(n)),onMouseover:e[5]||(e[5]=n=>u.value=!0),onMouseleave:e[6]||(e[6]=n=>u.value=!1),role:"list"},[(a=n.label,!a||/^\s*$/.test(a)||g.unref(l)?g.createCommentVNode("",!0):(g.openBlock(),g.createElementBlock("div",{key:0,class:g.normalizeClass(["g-gantt-row-label",{"g-gantt-row-group-label":h.value}]),style:g.normalizeStyle({background:g.unref(i).primary,color:g.unref(i).text}),onClick:e[1]||(e[1]=n=>h.value?x(n):void 0)},[h.value?(g.openBlock(),g.createElementBlock("button",{key:0,class:"group-toggle-button",onClick:e[0]||(e[0]=n=>x(n))},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.value?m.faChevronDown:m.faChevronRight),class:"group-icon"},null,8,["icon"])])):g.createCommentVNode("",!0),g.renderSlot(n.$slots,"label",{},(()=>[g.createTextVNode(g.toDisplayString(n.label),1)]))],6))),g.createElementVNode("div",g.mergeProps({ref_key:"barContainer",ref:d,class:"g-gantt-row-bars-container"},n.$attrs),[g.createVNode(g.TransitionGroup,{name:"bar-transition",tag:"div"},{default:g.withCtx((()=>[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(n.bars,(e=>(g.openBlock(),g.createBlock(Nn,{key:e.ganttBarConfig.id,bar:e,class:g.normalizeClass({"g-gantt-group-bar":h.value})},{default:g.withCtx((()=>[h.value?g.createCommentVNode("",!0):g.renderSlot(n.$slots,"bar-label",{key:0,bar:e})])),o:2},1032,["bar","class"])))),128))])),o:3})],16)],38),h.value&&f.value?(g.openBlock(),g.createElementBlock("div",Vn,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(w.value,(e=>(g.openBlock(),g.createBlock(t,g.mergeProps({key:e.id||e.label,ref_for:!0},e,{highlightOnHover:g.unref(c)}),g.createSlots({o:2},[g.renderList(n.$slots,((e,t)=>({name:t,fn:g.withCtx((e=>[g.renderSlot(n.$slots,t,g.mergeProps({ref_for:!0},e))]))})))]),1040,["highlightOnHover"])))),128))])):g.createCommentVNode("",!0)],64);var a}}}),Zn={style:{"font-weight":"bold"}},Jn=g.defineComponent({t:"GGanttPointerMarker",setup(n){const e=g.inject(T),t=g.inject(E),o=g.ref([]),a=g.useTemplateRef("tooltip"),{colors:r,barStart:i,barEnd:l}=B(),{mapPositionToTime:s}=hn(),c=g.inject("useRows"),{toDayjs:d}=Y(),{elementX:u}=h.useMouseInElement(e),{isOutside:p,x:m}=h.useMouseInElement(t),{width:f,height:b}=h.useElementBounding(a),{top:y,bottom:w}=h.useElementBounding(t),v=g.computed((n=>p.value?n??0:u.value)),x=g.computed((()=>s(v.value))),k=h.computedWithControl(c.getFlattenedRows,(()=>c.getFlattenedRows().flatMap((n=>n.bars)))),j=g.computed((()=>y.value-b.value>0?{top:`${y.value}px`,transform:"translateY(-100%)",left:m.value-f.value/2+"px"}:{top:`${w.value}px`,left:m.value-f.value/2+"px"}));return h.watchThrottled(v,(()=>{const n=[],e=d(x.value);for(let t=0;t<k.value.length;t++){const o=k.value[t],a=d(o[i.value]),r=d(o[l.value]);e.isBetween(a,r)&&n.push(o)}o.value=n}),{throttle:200}),(n,e)=>(g.openBlock(),g.createElementBlock("div",{class:"g-grid-pointer-marker-container",style:g.normalizeStyle({left:`${v.value}px`})},[g.createElementVNode("div",{class:"g-grid-pointer-marker-marker",style:g.normalizeStyle({border:`1px dashed ${g.unref(r).markerCurrentTime}`})},null,4),(g.openBlock(),g.createBlock(g.Teleport,{to:"body"},[g.createVNode(g.Transition,{name:"g-fade",mode:"out-in"},{default:g.withCtx((()=>[g.unref(p)?g.createCommentVNode("",!0):(g.openBlock(),g.createElementBlock("div",{key:0,ref:"tooltip",class:"g-grid-pointer-marker-tooltip",style:g.normalizeStyle(j.value)},[g.renderSlot(n.$slots,"pointer-marker-tooltips",g.normalizeProps(g.guardReactiveProps({hitBars:o.value,datetime:x.value})),(()=>[g.createElementVNode("div",{class:"g-grid-pointer-marker-tooltip-content",style:g.normalizeStyle({background:g.unref(r).primary,color:g.unref(r).text})},[g.createElementVNode("div",Zn,"Event at "+g.toDisplayString(x.value),1),g.createElementVNode("ul",null,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(o.value,(n=>(g.openBlock(),g.createElementBlock("li",{key:n.ganttBarConfig.id},g.toDisplayString(n.ganttBarConfig.label??n.ganttBarConfig.id),1)))),128))])],4)]))],4))])),o:3})]))],4))}});function Qn(n,e,t){const o=n=>{var e,t;return{id:n.id,label:n.label,bars:(null==(e=n.bars)?void 0:e.map((n=>({...n,ganttBarConfig:{id:n.ganttBarConfig.id,label:n.ganttBarConfig.label,html:n.ganttBarConfig.html,hasHandles:n.ganttBarConfig.hasHandles,immobile:n.ganttBarConfig.immobile,bundle:n.ganttBarConfig.bundle,pushOnOverlap:n.ganttBarConfig.pushOnOverlap,pushOnConnect:n.ganttBarConfig.pushOnConnect,style:n.ganttBarConfig.style,class:n.ganttBarConfig.class,connections:n.ganttBarConfig.connections,milestoneId:n.ganttBarConfig.milestoneId,progress:n.ganttBarConfig.progress,progressStyle:n.ganttBarConfig.progressStyle,progressResizable:n.ganttBarConfig.progressResizable}}))))||[],connections:n.connections,children:null==(t=n.children)?void 0:t.map(o)}},a=n.map(o);return{rows:y.cloneDeep(a),expandedGroups:new Set(e),customOrder:new Map(t),timestamp:Date.now()}}function ne(n,e){const t=(n,e)=>{const o=y.cloneDeep(n);return e&&(o.u=e.u),o.children&&(null==e?void 0:e.children)&&(o.children=o.children.map(((n,o)=>t(n,e.children[o])))),o};return{rows:n.rows.map((n=>{const o=e.find((e=>e.id===n.id));return t(n,o)})),expandedGroups:new Set(n.expandedGroups),customOrder:new Map(n.customOrder)}}function ee(n,e){if(e.length<=1)return;let t=n[e[0]];for(let o=1;o<e.length-1;o++){if(!(null==t?void 0:t.children))return;t=t.children[e[o]]}return null==t?void 0:t.id}function te(n,e){for(const t of n){const n=t.bars.find((n=>n.ganttBarConfig.id===e));if(n)return n;if(t.children){const n=te(t.children,e);if(n)return n}}return null}function oe(n,e){for(const t of n){if(t.id===e)return t;if(t.children){const n=oe(t.children,e);if(n)return n}}return null}function ae(n,e){for(let t=0;t<n.length;t++){if(n[t].id===e)return[t];if(n[t].children){const o=ae(n[t].children,e);if(o.length)return[t,...o]}}return[]}function re(n,e){return function e(t){for(const o of t){if(o.bars.some((e=>e.ganttBarConfig.id===n)))return o.id;if(o.children){const n=e(o.children);if(n)return n}}return null}(e)||""}function ie(n){const e=new Map;return function n(t){t.forEach((t=>{t.bars.forEach((n=>{e.set(n.ganttBarConfig.id,n)})),t.children&&n(t.children)}))}(n.rows),e}function le(n,e,t,o,a){const r=[];!function t(o){for(const a of o){if(!a.id)continue;const o=ae(n.rows,a.id),i=ae(e.rows,a.id);if(o.length!==i.length||!o.every(((n,e)=>n===i[e]))){const t=o.length>1?ee(n.rows,o):void 0,l=i.length>1?ee(e.rows,i):void 0;r.push({type:t!==l?"group":"reorder",sourceRow:a,oldIndex:o[o.length-1],newIndex:i[i.length-1],oldParentId:t,newParentId:l})}if(a.children){const n=oe(e.rows,a.id);(null==n?void 0:n.children)&&t(a.children)}}}(n.rows);const i=function(n,e,t,o,a){const r=[],i=ie(n),l=ie(e);return i.forEach(((n,e)=>{const i=l.get(e);if(i){const e=function(n,e,t,o,a){return n[t.value]===e[t.value]&&n[o.value]===e[o.value]?null:{barId:n.ganttBarConfig.id,rowId:re(n.ganttBarConfig.id,a.value),oldStart:n[t.value],newStart:e[t.value],oldEnd:n[o.value],newEnd:e[o.value]}}(n,i,t,o,a);e&&r.push(e)}})),r}(n,e,t,o,a);return{rowChanges:r,barChanges:i}}const se={default:{primary:"#eeeeee",secondary:"#E0E0E0",ternary:"#F5F5F5",quartenary:"#ededed",hoverHighlight:"rgba(204, 216, 219, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"#404040",background:"white",commands:"#eeeeee",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"rgba(0, 0, 0, 0.7)",rowContainer:"rgba(255, 255, 255, 1)",gridAndBorder:"#eaeaea"},creamy:{primary:"#ffe8d9",secondary:"#fcdcc5",ternary:"#fff6f0",quartenary:"#f7ece6",hoverHighlight:"rgba(230, 221, 202, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"#542d05",background:"white",commands:"white",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"#fcdcc5",rowContainer:"rgba(255, 255, 255, 1)",gridAndBorder:"#eaeaea"},crimson:{primary:"#a82039",secondary:"#c41238",ternary:"#db4f56",quartenary:"#ce5f64",hoverHighlight:"rgba(196, 141, 141, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"black",background:"white",commands:"white",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"#c41238",rowContainer:"rgba(255, 255, 255, 1)",gridAndBorder:"#eaeaea"},dark:{primary:"#404040",secondary:"#303030",ternary:"#353535",quartenary:"#383838",hoverHighlight:"rgba(159, 160, 161, 0.5)",markerCurrentTime:"#fff",markerPointer:"#fff",text:"white",background:"#525252",toast:"#1f1f1f",commands:"#525252",rangeHighlight:"#000",holidayHighlight:"#ff9d3b",barContainer:"rgba(0, 0, 0, 1)",rowContainer:"rgba(0, 0, 0, 1)",gridAndBorder:"#eaeaea"},flare:{primary:"#e08a38",secondary:"#e67912",ternary:"#5e5145",quartenary:"#665648",hoverHighlight:"rgba(196, 141, 141, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"white",background:"white",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"rgba(0, 0, 0, 1)",rowContainer:"rgba(0, 0, 0, 1)",gridAndBorder:"#eaeaea"},fuchsia:{primary:"#de1d5a",secondary:"#b50b41",ternary:"#ff7da6",quartenary:"#f2799f",hoverHighlight:"rgba(196, 141, 141, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"white",background:"white",commands:"white",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"#de1d5a",rowContainer:"rgba(0, 0, 0, 1)",gridAndBorder:"#eaeaea"},grove:{primary:"#3d9960",secondary:"#288542",ternary:"#72b585",quartenary:"#65a577",hoverHighlight:"rgba(160, 219, 171, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"white",background:"white",commands:"white",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"#3d9960",rowContainer:"rgba(0, 0, 0, 1)",gridAndBorder:"#eaeaea"},"material-blue":{primary:"#0D47A1",secondary:"#1565C0",ternary:"#42a5f5",quartenary:"#409fed",hoverHighlight:"rgba(110, 165, 196, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"white",background:"white",commands:"white",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"#0D47A1",rowContainer:"rgba(0, 0, 0, 1)",gridAndBorder:"#eaeaea"},sky:{primary:"#b5e3ff",secondary:"#a1d6f7",ternary:"#d6f7ff",quartenary:"#d0edf4",hoverHighlight:"rgba(193, 202, 214, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"#022c47",background:"white",commands:"white",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"rgb(20,20,20)",rowContainer:"#a1d6f7",gridAndBorder:"#eaeaea"},slumber:{primary:"#2a2f42",secondary:"#2f3447",ternary:"#35394d",quartenary:"#2c3044",hoverHighlight:"rgba(179, 162, 127, 0.5)",markerCurrentTime:"#fff",markerPointer:"#fff",text:"#ffe0b3",background:"#38383b",toast:"#1f1f1f",commands:"#38383b",rangeHighlight:"#000",holidayHighlight:"rgba(240, 120, 96, 0.8)",barContainer:"#2a2f42",rowContainer:"rgba(0, 0, 0, 1)",gridAndBorder:"#eaeaea"},vue:{primary:"#258a5d",secondary:"#41B883",ternary:"#35495E",quartenary:"#2a3d51",hoverHighlight:"rgba(160, 219, 171, 0.5)",markerCurrentTime:"#000",markerPointer:"#000",text:"white",background:"white",commands:"white",rangeHighlight:"#000",holidayHighlight:"#f7842d",barContainer:"#258a5d",rowContainer:"rgba(0, 0, 0, 1)",gridAndBorder:"#eaeaea"}},ce=["id"],de={class:"g-gantt-main-layout","aria-controls":"gantt-controls"},ue={key:0,class:"connection-preview",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",zIndex:2e3,overflow:"visible"}},ge={class:"g-gantt-command-block"},pe={key:0,class:"g-gantt-command-vertical"},me=["disabled"],he=["disabled"],fe={key:1,class:"g-gantt-command-groups"},be=["disabled"],ye=["disabled"],we={class:"g-gantt-command-fixed"},ve={class:"g-gantt-command-slider"},xe=["disabled"],ke=["disabled"],je=["aria-valuenow"],Ce=["disabled"],Se=["disabled"],Me={class:"g-gantt-command-block"},De={class:"g-gantt-command-zoom"},Te=["disabled"],Ee=["disabled"],$e={class:"g-gantt-command-history"},Be=["disabled"],ze=["disabled"],Ye={class:"g-gantt-command-block"},He={key:0,class:"g-gantt-command-export"},Re={class:"g-gantt-export-container"},qe=["disabled"],Pe=["disabled"],_e={key:0,class:"g-gantt-export-loading"},Ae=g.defineComponent({t:"GGanttChart",props:{chartStart:{},chartEnd:{},precision:{default:"day"},barStart:{},barEnd:{},currentTime:{type:Boolean},currentTimeLabel:{default:""},pointerMarker:{type:Boolean},dateFormat:{type:[String,Boolean],default:z},width:{default:"100%"},hideTimeaxis:{type:Boolean,default:!1},colorScheme:{default:"default"},grid:{type:Boolean,default:!1},pushOnOverlap:{type:Boolean,default:!1},pushOnConnect:{type:Boolean,default:!1},noOverlap:{type:Boolean,default:!1},rowHeight:{default:40},font:{default:"inherit"},labelColumnTitle:{default:""},labelColumnWidth:{default:120},multiColumnLabel:{default:()=>[]},commands:{type:Boolean,default:!0},enableMinutes:{type:Boolean,default:!1},enableConnections:{type:Boolean,default:!0},enableConnectionCreation:{type:Boolean,default:!1},enableConnectionDeletion:{type:Boolean,default:!1},defaultConnectionType:{default:"straight"},defaultConnectionColor:{default:"#ff0000"},defaultConnectionPattern:{default:"solid"},defaultConnectionAnimated:{type:Boolean,default:!1},defaultConnectionAnimationSpeed:{default:"normal"},maxRows:{default:0},initialSort:{default:()=>({column:"Label",direction:"none"})},initialRows:{default:()=>[]},sortable:{type:Boolean,default:!0},labelResizable:{type:Boolean,default:!0},milestones:{default:()=>[]},timeaxisEvents:{default:()=>[]},showEventsAxis:{type:Boolean,default:!0},eventsAxisHeight:{default:25},holidayHighlight:{default:""},rowClass:{type:Function,default:()=>""},rowLabelClass:{type:Function,default:()=>""},dayOptionLabel:{default:()=>["day"]},highlightedHours:{default:()=>[]},highlightedDaysInWeek:{default:()=>[]},highlightedDaysInMonth:{default:()=>[]},highlightedMonths:{default:()=>[]},highlightedWeek:{default:()=>[]},locale:{default:"en"},enableRowDragAndDrop:{type:Boolean,default:!1},markerConnection:{default:"forward"},showLabel:{type:Boolean,default:!0},showProgress:{type:Boolean,default:!0},defaultProgressResizable:{type:Boolean,default:!0},utc:{type:Boolean,default:!1},barLabelEditable:{type:Boolean,default:!1},exportEnabled:{type:Boolean,default:!0},exportOptions:{default:()=>({format:"pdf",quality:.95,paperSize:"a4",orientation:"landscape",scale:1.5,margin:10,exportColumnLabel:!0})}},emits:["click-bar","mousedown-bar","mouseup-bar","dblclick-bar","mouseenter-bar","mouseleave-bar","dragstart-bar","drag-bar","dragend-bar","contextmenu-bar","sort","group-expansion","row-drop","progress-change","progress-drag-start","progress-drag-end","connection-start","connection-drag","connection-complete","connection-cancel","connection-delete","label-edit","export-start","export-success","export-error"],setup(n,{expose:t,emit:o}){g.useCssVars((n=>({"170a1ade":en.value.rangeHighlight,"1a0a3e0a":en.value.primary})));const a=n,r=o,i=g.ref(f.v4()),l=g.useSlots(),s=g.ref(!1),c=g.ref(!1),d=g.ref(0),u=g.ref(null),b=g.ref(null),y=g.ref(null),x=g.ref(null),k=g.ref(null),D=g.ref(null),B=g.ref(null),z=()=>a.labelColumnWidth*(0===a.multiColumnLabel.length?1:a.multiColumnLabel.length+(a.multiColumnLabel.some((n=>"Label"===n.field))?0:1)),Y=g.ref(z());g.watch((()=>a.multiColumnLabel),(()=>{Y.value=z()}));const H=h.useElementSize(b),q={startX:0,isDragging:!1},P=function(n,{barStart:t,barEnd:o,dateFormat:a,multiColumnLabel:r,onSort:i,initialSort:l,onGroupExpansion:s},c){const d=g.ref({column:l.column,direction:l.direction}),u=g.ref(new Set),p=g.ref(new Set),m=g.ref(new Set),h=g.ref(new Map),f=g.ref([]),b=g.ref([]),y=g.ref(-1),w=()=>{b.value=[Qn(f.value,p.value,h.value)],y.value=0};g.onMounted((()=>{w()}));const v=g.computed((()=>y.value>0&&b.value.length>1)),x=g.computed((()=>b.value.length>1&&y.value<b.value.length-1)),k=()=>{if(y.value<b.value.length-1&&(b.value=b.value.slice(0,y.value+1)),b.value.push(Qn(f.value,p.value,h.value)),y.value++,b.value.length>50){const n=b.value.length-50;b.value=b.value.slice(n),y.value=Math.max(0,y.value-n)}},j=()=>{var e;return(null==(e=null==c?void 0:c.value)?void 0:e.length)?c.value:(()=>{var e;const t=null==(e=n.default)?void 0:e.call(n),o=[];return t?(t.forEach((n=>{var e,t;if((null==(e=n.props)?void 0:e.bars)||(null==(t=n.props)?void 0:t.children)){const{label:e,bars:t=[],children:a=[],id:r,connections:i=[]}=n.props;o.push({id:r,label:e,bars:t,children:a,connections:i,u:n})}else Array.isArray(n.children)&&n.children.forEach((n=>{var e,t;const a=n;if((null==(e=null==a?void 0:a.props)?void 0:e.bars)||(null==(t=null==a?void 0:a.props)?void 0:t.children)){const{label:n,bars:e=[],children:t=[],id:r,connections:i=[]}=a.props;o.push({id:r,label:n,bars:e,children:t,connections:i,u:a})}}))})),o):o})()};f.value=j(),g.watch((()=>j()),(n=>{f.value=n}));const C=n=>{var e;if(!(null==(e=n.children)?void 0:e.length))return n.bars||[];const r=n.children.flatMap((n=>[...C(n),...n.bars||[]]));if(!r.length)return[];const i=r.reduce(((n,e)=>{const o=S(e[t.value]);return!n||o.isBefore(n)?o:n}),null),l=r.reduce(((n,e)=>{const t=S(e[o.value]);return!n||t.isAfter(n)?t:n}),null);if(!i||!l)return[];const s="string"==typeof a.value?a.value:"YYYY-MM-DD HH:mm";return[{[t.value]:i.format(s),[o.value]:l.format(s),ganttBarConfig:{id:`group-${n.id||n.label}`,immobile:!0,label:n.label,style:{background:"transparent"},connections:n.connections||[]}}]},S=n=>"string"==typeof n||n instanceof Date?e(n):e(),M=n=>{var e;if(null==(e=n.children)?void 0:e.length){const e=n.children.map((n=>M(n))).filter((n=>null!==n));return 0===e.length?D(n.bars):e.reduce(((n,e)=>!n||e.isBefore(n)?e:n))}return D(n.bars)},D=n=>0===n.length?null:n.reduce(((n,e)=>{const o=S(e[t.value]);return!n||o.isBefore(n)?o:n}),null),T=n=>{var e;if(null==(e=n.children)?void 0:e.length){const e=n.children.map((n=>T(n))).filter((n=>null!==n));return 0===e.length?E(n.bars):e.reduce(((n,e)=>!n||e.isAfter(n)?e:n))}return E(n.bars)},E=n=>0===n.length?null:n.reduce(((n,e)=>{const t=S(e[o.value]);return!n||t.isAfter(n)?t:n}),null),$=n=>{const e=M(n),t=T(n);return e&&t?t.diff(e,"minutes"):0},B=g.computed((()=>{let n=[...f.value];if(!n.length)return n;const e=n=>n.map((n=>{var t;if(null==(t=n.children)?void 0:t.length){const t=e(n.children);return{...n,children:t,bars:C(n)}}return n}));return n=e(n),"none"!==d.value.direction?z(n,d.value.column,d.value.direction):h.value.size>0?n.sort(((n,e)=>(n.id?h.value.get(n.id)??Number.MAX_VALUE:Number.MAX_VALUE)-(e.id?h.value.get(e.id)??Number.MAX_VALUE:Number.MAX_VALUE))):n})),z=(n,e,t)=>n.map((n=>{var o;return(null==(o=n.children)?void 0:o.length)?{...n,children:z(n.children,e,t)}:n})).sort(((n,o)=>{const a=((n,e,t)=>{var o,a,i,l,s;if(((null==(o=n.children)?void 0:o.length)||0)!==((null==(a=e.children)?void 0:a.length)||0))return((null==(i=e.children)?void 0:i.length)||0)-((null==(l=n.children)?void 0:l.length)||0);const c=null==(s=r.value)?void 0:s.find((n=>n.field===t));if((null==c?void 0:c.sortFn)&&!["Id","Label","StartDate","EndDate","Duration"].includes(t))return c.sortFn(n,e);switch(t){case"Id":const t=n.id??0,o=e.id??0;return t<o?-1:t>o?1:0;case"Label":return n.label.localeCompare(e.label,void 0,{numeric:!0,sensitivity:"base"});case"StartDate":{const t=M(n),o=M(e);return t||o?t?o?t.valueOf()-o.valueOf():-1:1:0}case"EndDate":{const t=T(n),o=T(e);return t||o?t?o?t.valueOf()-o.valueOf():-1:1:0}case"Duration":return $(n)-$(e);case"Progress":{const t=n=>{const e=n.bars.map((n=>n.ganttBarConfig.progress)).filter((n=>void 0!==n));return 0===e.length?-1:e.reduce(((n,e)=>n+e),0)/e.length},o=t(n),a=t(e);return-1===o&&-1===a?0:-1===o?1:-1===a?-1:o-a}default:if(null==c?void 0:c.valueGetter){const t=c.valueGetter(n),o=c.valueGetter(e);return String(t).localeCompare(String(o))}return 0}})(n,o,e);return"asc"===t?a:-a})),Y=n=>p.value.has(n),H=g.computed((()=>{const n=e=>e.some((e=>{var t;return(null==(t=e.children)?void 0:t.length)>0||e.children&&n(e.children)}));return n(B.value)})),R=g.computed((()=>{if(!H.value)return!1;const n=e=>e.every((e=>{var t;return!(null==(t=e.children)?void 0:t.length)||!!e.id&&p.value.has(e.id)&&n(e.children)}));return n(B.value)})),q=g.computed((()=>{if(!H.value)return!1;const n=e=>e.every((e=>{var t;return!(null==(t=e.children)?void 0:t.length)||(!e.id||!p.value.has(e.id))&&n(e.children)}));return n(B.value)}));return{rows:B,updateRows:n=>{f.value=n,k()},sortState:d,toggleSort:n=>{const e=d.value.direction;if(d.value.column!==n)d.value={column:n,direction:"asc"};else switch(d.value.direction){case"none":d.value.direction="asc";break;case"asc":d.value.direction="desc";break;case"desc":d.value.direction="none"}var t;i(d.value),u.value.forEach((n=>n())),"none"!==e&&"none"===d.value.direction&&(t=B.value,0===h.value.size||"none"!==d.value.direction||[...t].sort(((n,e)=>(n.id?h.value.get(n.id)??Number.MAX_VALUE:Number.MAX_VALUE)-(e.id?h.value.get(e.id)??Number.MAX_VALUE:Number.MAX_VALUE))))},getChartRows:()=>B.value,onSortChange:n=>(u.value.add(n),()=>{u.value.delete(n)}),toggleGroupExpansion:n=>{p.value.has(n)?p.value.delete(n):p.value.add(n),s(n),m.value.forEach((n=>n()))},isGroupExpanded:Y,getFlattenedRows:()=>{const n=e=>e.flatMap((e=>{var t;return(null==(t=e.children)?void 0:t.length)&&Y(e.id)?[e,...n(e.children)]:[e]}));return n(B.value)},onGroupExpansionChange:n=>(m.value.add(n),()=>{m.value.delete(n)}),customOrder:h,resetCustomOrder:()=>{h.value.clear()},expandAllGroups:()=>{const n=e=>{e.forEach((e=>{var t;(null==(t=e.children)?void 0:t.length)&&e.id&&(p.value.add(e.id),n(e.children))}))};n(j()),m.value.forEach((n=>n()))},collapseAllGroups:()=>{p.value.clear(),m.value.forEach((n=>n()))},canUndo:v,canRedo:x,undo:()=>{const n=b.value[y.value];y.value--;const e=b.value[y.value],a=le(n,e,t,o,B),r=ne(e,f.value);return f.value=r.rows,h.value=r.customOrder,a},redo:()=>{const n=b.value[y.value];y.value++;const e=b.value[y.value],a=le(n,e,t,o,B),r=ne(e,f.value);return f.value=r.rows,h.value=r.customOrder,a},clearHistory:()=>{w()},onBarMove:()=>{k()},areAllGroupsExpanded:R,areAllGroupsCollapsed:q}}(l,{barStart:g.toRef(a,"barStart"),barEnd:g.toRef(a,"barEnd"),dateFormat:g.toRef(a,"dateFormat"),multiColumnLabel:g.toRef(a,"multiColumnLabel"),onSort:n=>r("sort",{sortState:n}),initialSort:a.initialSort,onGroupExpansion:n=>r("group-expansion",{rowId:n})},a.initialRows?g.toRef(a,"initialRows"):void 0);g.provide("useRows",P);const{connections:_,barPositions:A,getConnectorProps:G,initializeConnections:I,updateBarPositions:L,handleConnectionClick:O,selectedConnection:W,deleteSelectedConnection:X}=function(n,e,t,o){const a=g.ref([]),r=g.ref(new Map),i=g.ref(null),l=g.computed((()=>n=>{var t,o;const a=r.value.get(n.sourceId),l=r.value.get(n.targetId);return a&&l?{sourceBar:a,targetBar:l,type:n.type??e.defaultConnectionType,color:n.color??e.defaultConnectionColor,pattern:n.pattern??e.defaultConnectionPattern,animated:n.animated??e.defaultConnectionAnimated,animationSpeed:n.animationSpeed??e.defaultConnectionAnimationSpeed,isSelected:(null==(t=i.value)?void 0:t.sourceId)===n.sourceId&&(null==(o=i.value)?void 0:o.targetId)===n.targetId}:null})),s=n=>n.flatMap((n=>{var e;const t=[...n.bars];return(null==(e=n.children)?void 0:e.length)?[...t,...s(n.children)]:t})),c=()=>{a.value=[],s(n.rows.value).forEach((n=>{var e;(null==(e=n.ganttBarConfig.connections)?void 0:e.length)&&n.ganttBarConfig.connections.forEach((e=>{a.value.push({sourceId:n.ganttBarConfig.id,targetId:e.targetId,type:e.type,color:e.color,pattern:e.pattern,animated:e.animated,animationSpeed:e.animationSpeed})}))}))};return g.watch((()=>n.rows.value),(()=>{c()}),{deep:!0}),{connections:a,barPositions:r,getConnectorProps:l,initializeConnections:c,updateBarPositions:async()=>{await new Promise((n=>requestAnimationFrame(n)));const n=document.getElementById(t.value),e=n.querySelector(".g-gantt-rows-container");if(!e)return;const o=e.scrollTop,a=e.scrollLeft,i=e.getBoundingClientRect(),l=n.querySelectorAll(".g-gantt-bar");r.value.clear(),l.forEach((n=>{const e=n.getBoundingClientRect(),t=n.getAttribute("id");t&&r.value.set(t,{id:t,x:e.left-i.left+a,y:e.top-i.top+o,width:e.width,height:e.height})}))},handleConnectionClick:n=>{var e,t;i.value=(null==(e=i.value)?void 0:e.sourceId)===n.sourceId&&(null==(t=i.value)?void 0:t.targetId)===n.targetId?null:n},selectedConnection:i,deleteSelectedConnection:()=>{if(!i.value)return;const e=s(n.rows.value),t=e.find((n=>{var e;return n.ganttBarConfig.id===(null==(e=i.value)?void 0:e.sourceId)}));if(t&&t.ganttBarConfig.connections){t.ganttBarConfig.connections=t.ganttBarConfig.connections.filter((n=>{var e;return n.targetId!==(null==(e=i.value)?void 0:e.targetId)}));const a=e.find((n=>{var e;return n.ganttBarConfig.id===(null==(e=i.value)?void 0:e.targetId)}));o("connection-delete",{sourceBar:t,targetBar:a,e:new MouseEvent("mouseup")}),i.value=null,c(),n.onBarMove()}}}}(P,a,i,r),{showTooltip:V,tooltipBar:K,initTooltip:Z,clearTooltip:J}=function(){const n=g.ref(!1),e=g.ref(void 0);let t;return{showTooltip:n,tooltipBar:e,initTooltip:o=>{t&&clearTimeout(t),t=setTimeout((()=>{n.value=!0}),800),e.value=o},clearTooltip:()=>{clearTimeout(t),n.value=!1}}}(),{font:Q,colorScheme:nn}=g.toRefs(a),en=g.computed((()=>Fe(nn.value))),{timeaxisUnits:tn,internalPrecision:on,zoomLevel:an,adjustZoomAndPrecision:rn}=N({...g.toRefs(a),colors:en,chartSize:H}),{scrollPosition:ln,handleStep:sn,handleScroll:cn,handleWheel:dn,handleContentScroll:un,handleLabelScroll:gn,handleZoomUpdate:hn,scrollRowUp:bn,scrollRowDown:yn,isAtTop:wn,isAtBottom:vn}=function(n,e){const{scrollRefs:t,updateBarPositions:o,timeaxisUnits:a}=n,{adjustZoomAndPrecision:r}=a,i=g.ref(0),l=g.ref(!0),s=g.ref(!1),c=g.computed((()=>a.timeaxisUnits.value.result.lowerUnits.reduce(((n,e)=>n+parseInt(e.width)),0))),d=n=>{t.labelColumn.value&&t.labelColumn.value.setScroll(n.target.scrollTop),u()},u=()=>{if(!t.rowsContainer.value)return;const{scrollTop:n,scrollHeight:e,clientHeight:o}=t.rowsContainer.value;l.value=0===n,s.value=Math.ceil(n+o)>=e},p=n=>{const e=new Event("scroll",{bubbles:!0,cancelable:!0});return Object.defineProperty(e,"target",{value:n,enumerable:!0}),e};return{scrollPosition:i,isAtTop:l,isAtBottom:s,handleStep:(n,e)=>{e.scrollLeft=(c.value-e.clientWidth)*n/100,i.value=n},handleScroll:n=>{n.scrollLeft=(c.value-n.clientWidth)*i.value/100},handleWheel:(n,t)=>{0===e?(t.scrollLeft+=n.deltaX||n.deltaY,i.value=t.scrollLeft/(c.value-t.clientWidth)*100):0!==n.deltaX&&n.preventDefault()},handleContentScroll:d,handleLabelScroll:n=>{t.rowsContainer.value&&(t.rowsContainer.value.scrollTop=n,u())},handleZoomUpdate:async n=>{r(n),await g.nextTick(),o()},scrollRowUp:()=>{var n;if(!t.rowsContainer.value)return;const e=(null==(n=t.rowsContainer.value.firstElementChild)?void 0:n.clientHeight)||0;t.rowsContainer.value.scrollTop=Math.max(0,t.rowsContainer.value.scrollTop-e),d(p(t.rowsContainer.value))},scrollRowDown:()=>{var n;if(!t.rowsContainer.value)return;const e=(null==(n=t.rowsContainer.value.firstElementChild)?void 0:n.clientHeight)||0;t.rowsContainer.value.scrollTop=Math.min(t.rowsContainer.value.scrollHeight-t.rowsContainer.value.clientHeight,t.rowsContainer.value.scrollTop+e),d(p(t.rowsContainer.value))}}}({scrollRefs:{rowsContainer:D,labelColumn:B},updateBarPositions:L,timeaxisUnits:{timeaxisUnits:tn,internalPrecision:on,zoomLevel:an,adjustZoomAndPrecision:rn}},a.maxRows),{handleKeyDown:xn}=function(n,e,t,o,a){const{handleStep:r,handleZoomUpdate:i,scrollPosition:l}=n,{selectedConnection:s,deleteSelectedConnection:c}=o;return{handleKeyDown:n=>{if(t.value&&n.target===t.value){if(s.value&&a.value)switch(n.key){case"Delete":return void c();case"Escape":return void(s.value=null)}switch(n.key){case"ArrowLeft":e.value&&l.value>0&&r(Math.max(0,l.value-10),e.value);break;case"ArrowRight":e.value&&l.value<100&&r(Math.min(100,l.value+10),e.value);break;case"+":i(!0);break;case"-":i(!1);break;case"Home":e.value&&r(0,e.value);break;case"End":e.value&&r(100,e.value);break;case"PageUp":e.value&&l.value>=10?r(l.value-10,e.value):e.value&&r(0,e.value);break;case"PageDown":e.value&&l.value<=90?r(l.value+10,e.value):e.value&&r(100,e.value)}}}}}({scrollPosition:ln,handleStep:sn,handleZoomUpdate:hn},y,k,{selectedConnection:W,deleteSelectedConnection:X},g.toRef(a.enableConnectionDeletion)),{handleResizeStart:kn,handleResizeMove:jn,handleResizeEnd:Cn,handleTouchStart:Sn,handleTouchMove:Mn,resetResizeState:Dn}=(()=>{const n=g.ref({isResizing:!1,startX:0,startWidth:0}),e=()=>{n.value={isResizing:!1,startX:0,startWidth:0}};return{resizeState:n,handleResizeStart:(e,t)=>{e.preventDefault(),n.value={isResizing:!0,startX:e.clientX,startWidth:t},document.body.style.cursor="col-resize"},handleResizeMove:(e,t)=>{n.value.isResizing&&(e.preventDefault(),t(Math.max(0,n.value.startWidth+(e.clientX-n.value.startX))))},handleResizeEnd:()=>{n.value.isResizing&&(document.body.style.cursor="",e())},handleTouchStart:(e,t)=>{const o=e.touches[0];o&&(e.preventDefault(),n.value={isResizing:!0,startX:o.clientX,startWidth:t})},handleTouchMove:(e,t)=>{if(!n.value.isResizing)return;const o=e.touches[0];o&&(e.preventDefault(),t(Math.max(0,n.value.startWidth+(o.clientX-n.value.startX))))},resetResizeState:e}})(),{connectionState:Tn,hoverState:En,startConnectionCreation:Bn,updateConnectionDrag:zn,completeConnection:Yn,cancelConnectionCreation:Rn,handleConnectionPointHover:Pn,canBeConnectionTarget:_n}=function(n,e,t,o){const a=g.ref({isCreating:!1,sourceBar:null,sourcePoint:null,mouseX:0,mouseY:0}),r=g.ref({isVisible:!1,barId:null,point:null}),i=(n,e)=>{var t;return n.ganttBarConfig.id===e.ganttBarConfig.id?{isValid:!1,message:"Cannot connect a bar to itself"}:(null==(t=n.ganttBarConfig.connections)?void 0:t.find((n=>n.targetId===e.ganttBarConfig.id)))?{isValid:!1,message:"Existing connection"}:{isValid:!0}},l=()=>{a.value={isCreating:!1,sourceBar:null,sourcePoint:null,mouseX:0,mouseY:0}},s=g.computed((()=>n=>!!a.value.sourceBar&&i(a.value.sourceBar,n).isValid));return{connectionState:a,hoverState:r,startConnectionCreation:(n,e,o)=>{a.value={isCreating:!0,sourceBar:n,sourcePoint:e,mouseX:o.clientX,mouseY:o.clientY},t("connection-start",{sourceBar:n,connectionPoint:e,e:o})},updateConnectionDrag:n=>{a.value.isCreating&&(a.value.mouseX=n.clientX,a.value.mouseY=n.clientY,t("connection-drag",{sourceBar:a.value.sourceBar,connectionPoint:a.value.sourcePoint,currentX:n.clientX,currentY:n.clientY,e:n}))},completeConnection:(r,s,c)=>{if(a.value.sourceBar){if(i(a.value.sourceBar,r).isValid){const i={targetId:r.ganttBarConfig.id,type:n.defaultConnectionType.value,color:n.defaultConnectionColor.value,pattern:n.defaultConnectionPattern.value,animated:n.defaultConnectionAnimated.value,animationSpeed:n.defaultConnectionAnimationSpeed.value};a.value.sourceBar.ganttBarConfig.connections||(a.value.sourceBar.ganttBarConfig.connections=[]),a.value.sourceBar.ganttBarConfig.connections.push(i);const l=[...e.rows.value];e.updateRows(l),o(),t("connection-complete",{sourceBar:a.value.sourceBar,targetBar:r,sourcePoint:a.value.sourcePoint,targetPoint:s,e:c})}l()}},cancelConnectionCreation:n=>{a.value.sourceBar&&a.value.sourcePoint&&t("connection-cancel",{sourceBar:a.value.sourceBar,connectionPoint:a.value.sourcePoint,e:n}),l()},handleConnectionPointHover:(n,e,t)=>{r.value={isVisible:t,barId:t?n:null,point:t?e:null}},canBeConnectionTarget:s}}({...g.toRefs(a),colors:en,chartSize:H},P,r,I);g.provide("connectionCreation",{connectionState:Tn,hoverState:En,startConnectionCreation:Bn,updateConnectionDrag:zn,completeConnection:Yn,cancelConnectionCreation:Rn,handleConnectionPointHover:Pn,canBeConnectionTarget:_n});const An=n=>{Tn.value.isCreating&&zn(n)},Gn=n=>{Tn.value.isCreating&&Rn(n)},{findBarElement:In}=qn(),Ln=g.computed((()=>{if(!Tn.value.isCreating||!Tn.value.sourceBar)return null;const n=In(i.value,Tn.value.sourceBar.ganttBarConfig.id);if(!n)return null;const e=n.getBoundingClientRect(),t=k.value,o=null==t?void 0:t.querySelector(".g-gantt-rows-container");if(!o)return null;const a=o.getBoundingClientRect(),r=o.scrollLeft,l=o.scrollTop;return{x1:"start"===Tn.value.sourcePoint?e.left-a.left+r:e.right-a.left+r,y1:e.top-a.top+l+e.height/2,x2:Tn.value.mouseX-a.left+r,y2:Tn.value.mouseY-a.top+l}}));g.watch((()=>ln.value),(()=>{var n;Tn.value.isCreating&&(null==(n=k.value)?void 0:n.querySelector(".g-gantt-rows-container"))&&(Tn.value.mouseX=Tn.value.mouseX)}));const{exportChart:On,downloadExport:Fn,isExporting:Un}=function(n,t,o,a){const r=g.ref(!1),i=g.ref(null),l=(n,e,t)=>{const o=e.cloneNode(!0);o.style.width=n.offsetWidth+"px",o.style.height=n.offsetHeight+"px";const a=o.querySelectorAll([".g-gantt-bar-label > div",".g-timeunit-min",".label-unit"].join(", "));return o.querySelector(".g-gantt-command").style.display="none",t.exportColumnLabel||(o.querySelector(".g-gantt-label-section").style.display="none"),a.forEach((n=>{const e=n;e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center",e.style.textAlign="center",e.style.position="relative",e.style.fontSize="10px",e.style.transform="translateY(-25%)"})),o.querySelectorAll(".cell-content, .text-ellipsis, .text-ellipsis-value").forEach((n=>{const e=n;e.style.overflow="visible",e.style.alignItems="center",e.style.whiteSpace="normal",e.style.textOverflow="ellipsis",e.style.fontSize="10px",e.style.transform="translateY(-1%)"})),o.querySelectorAll(".g-label-column-row").forEach((n=>{const e=n;e.style.overflow="visible",e.style.flexWrap="wrap"})),o.querySelectorAll(".g-gantt-bar-label").forEach((n=>{const e=n;e.style.overflow="hidden",e.style.textOverflow="ellipsis",e.style.whiteSpace="nowrap",e.style.transform="translateY(-15%)"})),o.querySelectorAll(".g-gantt-progress-bar").forEach((n=>{const e=n;e.style.display="",e.style.alignItems="",e.style.justifyContent="",e.style.transform="",e.style.position=""})),o.querySelectorAll(".g-timeunit-min").forEach((n=>{n.style.transform="translateY(-35%)"})),o.querySelectorAll(".progress-text").forEach((n=>{n.style.transform="translateY(-40%)"})),o.querySelectorAll(".g-timeaxis-event-label").forEach((n=>{const e=n;e.style.fontSize="8px",e.style.transform="translateY(-45%)"})),o.querySelectorAll(".g-gantt-milestone-label").forEach((n=>{n.style.transform="translateY(-15%)"})),o.querySelectorAll(".g-gantt-milestone-marker").forEach((n=>{n.style.transform="translateY(-0.2%)"})),o.querySelectorAll(".g-gantt-row-label").forEach((n=>{n.style.transform="translateY(-15%)"})),o};return{exportChart:async n=>{r.value=!0,i.value=null;try{const t=b.value,r=u.value;if(!t||!r)throw new Error("Gantt chart element not found");const i=n.filename||`gantt-export-${(new Date).toISOString().slice(0,10)}`;switch(n.format){case"pdf":return await(async(n,e,t)=>{try{const o=l(n,e,t),a=document.createElement("div");a.style.position="absolute",a.style.left="-9999px",a.style.width=n.offsetWidth+"px",a.style.height=n.offsetHeight+"px",a.style.overflow="hidden",a.appendChild(o),document.body.appendChild(a),await new Promise((n=>setTimeout(n,100)));const r=t.orientation||"landscape",i=t.scale||1,s=void 0!==t.margin?t.margin:10,c=new v({orientation:r,unit:"mm",format:t.paperSize||"a4"}),d=await w(o,{scale:i,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});document.body.removeChild(a);const u="landscape"===r?c.internal.pageSize.getHeight():c.internal.pageSize.getWidth(),g="landscape"===r?c.internal.pageSize.getWidth():c.internal.pageSize.getHeight(),p=u-2*s,m=d.width,h=d.height;let f=p/(m/h);if(f>g-2*s){let n=0;for(;n<h;){n>0&&c.addPage();const e=Math.min(h-n,m/p*(g-2*s)),o=e/h*h;c.addImage(d.toDataURL("image/jpeg",t.quality||.95),"JPEG",s,s,p,p*(o/m),"","FAST",n/h),n+=e}}else c.addImage(d.toDataURL("image/jpeg",t.quality||.95),"JPEG",s,s,p,f,"","FAST");return{success:!0,data:c.output("blob"),filename:t.filename||"gantt-chart.pdf"}}catch(o){return{success:!1,data:null,error:o instanceof Error?o.message:"Error during PDF export",filename:t.filename||"gantt-chart.pdf"}}})(t,r,{...n,filename:i+".pdf"});case"png":return await(async(n,e,t)=>{try{const o=l(n,e,t),a=document.createElement("div");a.style.position="absolute",a.style.left="-9999px",a.style.width=n.offsetWidth+"px",a.style.height=n.offsetHeight+"px",a.style.overflow="hidden",a.appendChild(o),document.body.appendChild(a),await new Promise((n=>setTimeout(n,100)));const r=t.scale||2,i=await w(o,{scale:r,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});return document.body.removeChild(a),{success:!0,data:await new Promise(((n,e)=>{i.toBlob((t=>{t?n(t):e(new Error("Error creating blob PNG"))}),"image/png",t.quality||.95)})),filename:t.filename||"gantt-chart.png"}}catch(o){return{success:!1,data:null,error:o instanceof Error?o.message:"Error exporting PNG",filename:t.filename||"gantt-chart.png"}}})(t,r,{...n,filename:i+".png"});case"svg":return await(async(n,e,t)=>{try{const o=l(n,e,t),a=document.createElement("div");a.style.position="absolute",a.style.left="-9999px",a.style.width=n.offsetWidth+"px",a.style.height=n.offsetHeight+"px",a.style.overflow="hidden",a.appendChild(o),document.body.appendChild(a),await new Promise((n=>setTimeout(n,100)));const r=await w(o,{scale:t.scale||2,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});document.body.removeChild(a);const i=r.width,s=r.height,c="http://www.w3.org/2000/svg",d=document.createElementNS(c,"svg");d.setAttribute("width",i.toString()),d.setAttribute("height",s.toString()),d.setAttribute("viewBox",`0 0 ${i} ${s}`),d.setAttribute("xmlns",c),d.setAttribute("version","1.1");const u=document.createElementNS(c,"image");u.setAttribute("width",i.toString()),u.setAttribute("height",s.toString()),u.setAttribute("x","0"),u.setAttribute("y","0"),u.setAttribute("href",r.toDataURL("image/png",t.quality||.95)),d.appendChild(u);const g=(new XMLSerializer).serializeToString(d);return{success:!0,data:new Blob(['<?xml version="1.0" standalone="no"?>\n'+g],{type:"image/svg+xml;charset=utf-8"}),filename:t.filename||"gantt-chart.svg"}}catch(o){return{success:!1,data:null,error:o instanceof Error?o.message:"Error exporting in SVG",filename:t.filename||"gantt-chart.svg"}}})(t,r,{...n,filename:i+".svg"});case"excel":return await(async n=>{try{const t=j.utils.book_new(),r=n=>n.flatMap((n=>{var e;return(null==(e=n.children)?void 0:e.length)?[n,...r(n.children)]:[n]})),i=r(o.rows.value),l=[];l.push(["ID","Task","Start Date","End Date","Duration","Progress (%)"]),i.forEach(((n,t)=>{let o="-",r="-",i="-",s="-";if(n.bars&&n.bars.length>0){const t=n.bars.reduce(((n,t)=>{const o=e(t[a.barStart.value]);return!n||o.isBefore(n)?o:n}),null),l=n.bars.reduce(((n,t)=>{const o=e(t[a.barEnd.value]);return!n||o.isAfter(n)?o:n}),null);t&&(o=t.format(a.dateFormat.value||"YYYY-MM-DD HH:mm")),l&&(r=l.format(a.dateFormat.value||"YYYY-MM-DD HH:mm")),t&&l&&(i=`${l.diff(t,a.precision.value)}${a.precision.value.charAt(0)}`);const c=n.bars.map((n=>n.ganttBarConfig.progress)).filter((n=>void 0!==n));if(c.length>0){const n=c.reduce(((n,e)=>n+e),0)/c.length;s=`${Math.round(n)}%`}}l.push([n.id||t+1,n.label,o,r,i,s])}));const s=j.utils.aoa_to_sheet(l);j.utils.book_append_sheet(t,s,"Gantt Rows");const c=[];c.push(["Bar ID","Label","Parent Row","Row ID","Start Date","End Date","Duration","Progress (%)","Connections","Milestone"]);const d=new Set,u=[],g=n=>{n.forEach((n=>{n.bars.forEach((e=>{d.has(e.ganttBarConfig.id)||(d.add(e.ganttBarConfig.id),u.push({bar:e,rowLabel:n.label,rowId:n.id||""}))})),n.children&&n.children.length>0&&g(n.children)}))};g(o.rows.value),u.forEach((n=>{const{bar:t,rowLabel:o,rowId:r}=n,i=t.ganttBarConfig,l=e(t[a.barStart.value]).format(a.dateFormat.value||"YYYY-MM-DD HH:mm"),s=e(t[a.barEnd.value]).format(a.dateFormat.value||"YYYY-MM-DD HH:mm"),d=`${e(t[a.barEnd.value]).diff(e(t[a.barStart.value]),a.precision.value)}${a.precision.value.charAt(0)}`,u=void 0!==i.progress?`${Math.round(i.progress)}%`:"-",g=i.connections&&i.connections.length>0?i.connections.map((n=>n.targetId)).join(", "):"-";c.push([i.id,i.label||"",o,r,l,s,d,u,g,i.milestoneId?i.milestoneId:"-"])}));const p=j.utils.aoa_to_sheet(c);j.utils.book_append_sheet(t,p,"Bars Detail"),[s,p].forEach((n=>{const e=j.utils.decode_range(n["!ref"]||"A1");for(let t=e.s.c;t<=e.e.c;t++){const e=j.utils.encode_cell({r:0,c:t});n[e]||(n[e]={}),n[e].s={font:{bold:!0}}}})),s["!cols"]=[{wch:10},{wch:40},{wch:20},{wch:20},{wch:10},{wch:15}],p["!cols"]=[{wch:15},{wch:30},{wch:30},{wch:10},{wch:20},{wch:20},{wch:10},{wch:15},{wch:30},{wch:20}];const m=j.write(t,{bookType:"xlsx",type:"array"});return{success:!0,data:new Blob([m],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),filename:n.filename||"gantt-chart.xlsx"}}catch(t){return{success:!1,data:null,error:t instanceof Error?t.message:"Error exporting to Excel",filename:n.filename||"gantt-chart.xlsx"}}})({...n,filename:i+".xlsx"});default:throw new Error(`Format file export not supported: ${n.format}`)}}catch(t){const e=t instanceof Error?t.message:"Unknown Error";return i.value=e,{success:!1,data:null,error:e,filename:n.filename||"export-error"}}finally{r.value=!1}},downloadExport:n=>{if(n.success&&n.data){const e=URL.createObjectURL(n.data),t=document.createElement("a");t.href=e,t.download=n.filename,document.body.appendChild(t),t.click(),document.body.removeChild(t),URL.revokeObjectURL(e)}},isExporting:r,lastError:i}}(0,0,P,{barStart:g.toRef(a,"barStart"),barEnd:g.toRef(a,"barEnd"),dateFormat:g.toRef(a,"dateFormat"),precision:g.toRef(a,"precision")}),Wn=g.ref(""),Xn=async()=>{if(!Wn.value||Un.value)return;const n={...a.exportOptions,format:Wn.value};try{const e=await(async n=>{const e={format:a.exportOptions.format||"pdf",quality:a.exportOptions.quality,filename:a.exportOptions.filename,paperSize:a.exportOptions.paperSize,orientation:a.exportOptions.orientation,scale:a.exportOptions.scale,margin:a.exportOptions.margin,...n};r("export-start",e.format);try{const n=await On(e);return n.success?r("export-success",n):r("export-error",n.error||"Unknown error"),n}catch(t){const n=t instanceof Error?t.message:"Unknown error";return r("export-error",n),{success:!1,data:null,error:n,filename:e.filename||"export-error"}}})(n);Fn(e),Wn.value=""}catch(e){}},Nn=g.computed((()=>P.rows.value)),Vn=g.computed((()=>0===a.maxRows?{}:{"max-height":a.maxRows*a.rowHeight+"px","overflow-y":"auto"})),Zn=g.computed((()=>tn.value.result.lowerUnits.reduce(((n,e)=>n+parseInt(e.width)),0))),ee=g.computed((()=>{const n=e=>e.some((e=>{var t;return(null==(t=e.children)?void 0:t.length)>0||e.children&&n(e.children)}));return n(Nn.value)})),oe=g.computed((()=>({width:`${Y.value}px`,maxWidth:`${Y.value}px`,position:"relative",flexShrink:0,flexGrow:0}))),ae=n=>{c.value=!0,d.value=n.clientX},re=n=>{if(!c.value||!y.value)return;const e=n.clientX-d.value;d.value=n.clientX,y.value.scrollLeft-=e,ln.value=y.value.scrollLeft/(y.value.scrollWidth-y.value.clientWidth)*100},ie=()=>{c.value=!1},Ae=n=>{const e=n.touches[0];e&&(q.isDragging=!0,q.startX=e.clientX,n.preventDefault())},Ge=n=>{if(!q.isDragging||!y.value)return;const e=n.touches[0];if(!e)return;const t=e.clientX-q.startX;q.startX=e.clientX,y.value.scrollLeft-=t,ln.value=y.value.scrollLeft/(y.value.scrollWidth-y.value.clientWidth)*100,n.preventDefault()},Ie=()=>{q.isDragging=!1},Le=n=>{Y.value=n},Oe=n=>{r("row-drop",n),L()},Fe=n=>"string"!=typeof n?n:se[n]||se.default;g.watch((()=>Zn.value),(()=>{U.value=Zn.value}),{immediate:!0});const Ue=()=>{const n=document.getElementById(i.value).querySelector(".g-gantt-scroller");n&&n.style.setProperty("--value",`${ln.value}%`)},We=()=>{const n=P.undo();n&&(n.rowChanges.forEach((n=>{r("row-drop",{sourceRow:n.sourceRow,targetRow:void 0,newIndex:n.newIndex,parentId:n.newParentId})})),n.barChanges.forEach((n=>{const e=te(P.rows.value,n.barId);e&&r("dragend-bar",{bar:e,e:new MouseEvent("mouseup"),movedBars:new Map([[e,{oldStart:n.newStart,oldEnd:n.newEnd}]])})})),L())},Xe=()=>{const n=P.redo();n&&(n.rowChanges.forEach((n=>{r("row-drop",{sourceRow:n.sourceRow,targetRow:void 0,newIndex:n.newIndex,parentId:n.newParentId})})),n.barChanges.forEach((n=>{const e=te(P.rows.value,n.barId);e&&r("dragend-bar",{bar:e,e:new MouseEvent("mouseup"),movedBars:new Map([[e,{oldStart:n.oldStart,oldEnd:n.oldEnd}]])})})),L())},Ne=n=>{(n.ctrlKey||n.metaKey)&&"KeyZ"===n.code&&(n.preventDefault(),n.shiftKey?P.canRedo.value&&Xe():P.canUndo.value&&We())};let Ve;return g.onMounted((()=>{const n=P.onSortChange(L),e=P.onGroupExpansionChange(L);g.onUnmounted(n),g.onUnmounted(e),y.value&&y.value.addEventListener("wheel",(n=>dn(n,y.value))),window.addEventListener("mousemove",re),window.addEventListener("mouseup",ie),window.addEventListener("mousemove",(n=>jn(n,Le))),window.addEventListener("mouseup",Cn),window.addEventListener("keydown",Ne),Ve=new ResizeObserver(L);const t=document.querySelector(".g-gantt-chart");t&&Ve.observe(t),window.addEventListener("resize",L),I(),g.nextTick((()=>{L()})),g.watch(ln,Ue,{immediate:!0})})),g.onUnmounted((()=>{y.value&&y.value.removeEventListener("wheel",(n=>dn(n,y.value))),window.removeEventListener("mousemove",re),window.removeEventListener("mouseup",ie),window.removeEventListener("mousemove",(n=>jn(n,Le))),window.removeEventListener("mouseup",Cn),window.removeEventListener("keydown",Ne),Ve&&Ve.disconnect(),window.removeEventListener("resize",L)})),g.watch([()=>a.chartStart,()=>a.chartEnd],(()=>{L()})),g.provide(C,{...g.toRefs(a),colors:en,chartSize:H}),g.provide(M,((n,e,t,o)=>{switch(n.type){case"click":r("click-bar",{bar:e,e:n,datetime:t});break;case"mousedown":r("mousedown-bar",{bar:e,e:n,datetime:t});break;case"mouseup":r("mouseup-bar",{bar:e,e:n,datetime:t});break;case"dblclick":r("dblclick-bar",{bar:e,e:n,datetime:t});break;case"mouseenter":Z(e),r("mouseenter-bar",{bar:e,e:n});break;case"mouseleave":J(),r("mouseleave-bar",{bar:e,e:n});break;case"dragstart":s.value=!0,r("dragstart-bar",{bar:e,e:n}),L();break;case"drag":r("drag-bar",{bar:e,e:n}),L();break;case"dragend":s.value=!1,r("dragend-bar",{bar:e,e:n,movedBars:o}),L(),P.onBarMove();break;case"contextmenu":r("contextmenu-bar",{bar:e,e:n,datetime:t});break;case"progress-drag-start":Z(e),r("progress-drag-start",{bar:e,e:n});break;case"progress-change":Z(e),r("progress-change",{bar:e,e:n});break;case"progress-drag-end":Z(e),r("progress-drag-end",{bar:e,e:n}),P.onBarMove();break;case"label-edit":r("label-edit",{bar:e,e:n,oldValue:e.ganttBarConfig.l||"",newValue:e.ganttBarConfig.label||""}),P.onBarMove()}})),g.provide(S,{...a}),g.provide($,i.value),g.provide(T,b),g.provide(E,y),t({exportChart:On,isExporting:Un}),(n,e)=>(g.openBlock(),g.createElementBlock("div",{class:"g-gantt-container",role:"application","aria-label":"Interactive Gantt",tabindex:"0",onKeydown:e[19]||(e[19]=(...n)=>g.unref(xn)&&g.unref(xn)(...n)),onMousemove:An,onMouseup:Gn,ref_key:"ganttContainer",ref:k,id:i.value},[g.createElementVNode("div",{class:"g-gantt-rounded-wrapper",ref_key:"gGantt",ref:u},[g.createElementVNode("div",de,[n.labelColumnTitle?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-label-section",style:g.normalizeStyle(oe.value)},[g.createVNode(F,{ref_key:"labelColumn",ref:B,onScroll:g.unref(gn),onRowDrop:Oe},g.createSlots({"label-column-title":g.withCtx((()=>[g.renderSlot(n.$slots,"label-column-title")])),"label-column-row":g.withCtx((e=>[g.renderSlot(n.$slots,"label-column-row",g.normalizeProps(g.guardReactiveProps(e)))])),o:2},[g.renderList(n.$slots,((e,t)=>({name:t,fn:g.withCtx((e=>[g.renderSlot(n.$slots,t,g.normalizeProps(g.guardReactiveProps(e)))]))})))]),1032,["onScroll"]),g.createElementVNode("div",{class:"g-gantt-section-resizer",onMousedown:e[0]||(e[0]=n=>g.unref(kn)(n,Y.value)),onTouchstart:e[1]||(e[1]=n=>g.unref(Sn)(n,Y.value)),onTouchmove:e[2]||(e[2]=n=>g.unref(Mn)(n,Le)),onTouchend:e[3]||(e[3]=(...n)=>g.unref(Dn)&&g.unref(Dn)(...n)),onTouchcancel:e[4]||(e[4]=(...n)=>g.unref(Dn)&&g.unref(Dn)(...n))},null,32)],4)):g.createCommentVNode("",!0),g.createElementVNode("div",{ref_key:"ganttWrapper",ref:y,class:"gantt-wrapper",style:g.normalizeStyle({width:"100%","overflow-x":n.commands?"hidden":"auto"})},[g.createElementVNode("div",{ref_key:"ganttChart",ref:b,class:"g-gantt-chart",style:g.normalizeStyle({width:`${Zn.value}px`,background:en.value.background,fontFamily:g.unref(Q)})},[n.hideTimeaxis?g.createCommentVNode("",!0):(g.openBlock(),g.createBlock(pn,{key:0,ref_key:"timeaxisComponent",ref:x,onDragStart:ae,onTouchstart:Ae,onTouchmove:Ge,onTouchend:Ie,onTouchcancel:Ie,timeaxisUnits:g.unref(tn),internalPrecision:g.unref(on)},{"upper-timeunit":g.withCtx((e=>[g.renderSlot(n.$slots,"upper-timeunit",g.normalizeProps(g.guardReactiveProps(e)))])),timeunit:g.withCtx((e=>[g.renderSlot(n.$slots,"timeunit",g.normalizeProps(g.guardReactiveProps(e)))])),o:3},8,["timeaxisUnits","internalPrecision"])),n.grid?(g.openBlock(),g.createBlock(R,{key:1,timeaxisUnits:g.unref(tn),internalPrecision:g.unref(on)},null,8,["timeaxisUnits","internalPrecision"])):g.createCommentVNode("",!0),n.currentTime?(g.openBlock(),g.createBlock(fn,{key:2},{"current-time-label":g.withCtx((()=>[g.renderSlot(n.$slots,"current-time-label")])),o:3})):g.createCommentVNode("",!0),n.pointerMarker?(g.openBlock(),g.createBlock(Jn,{key:3},{"pointer-marker-tooltips":g.withCtx((({hitBars:e,datetime:t})=>[g.renderSlot(n.$slots,"pointer-marker-tooltips",g.normalizeProps(g.guardReactiveProps({hitBars:e,datetime:t})))])),o:3})):g.createCommentVNode("",!0),(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(n.milestones,(e=>(g.openBlock(),g.createBlock(Hn,{key:e.date.toString(),milestone:e},g.createSlots({o:2},[g.renderList(n.$slots,((e,t)=>({name:t,fn:g.withCtx((e=>[t.startsWith("milestone-")||"milestone"===t?g.renderSlot(n.$slots,t,g.mergeProps({key:0,ref_for:!0},e)):g.createCommentVNode("",!0)]))})))]),1032,["milestone"])))),128)),g.createElementVNode("div",{class:"g-gantt-rows-container",style:g.normalizeStyle(Vn.value),ref_key:"rowsContainer",ref:D,onScroll:e[5]||(e[5]=(...n)=>g.unref(un)&&g.unref(un)(...n))},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(Nn.value,(n=>(g.openBlock(),g.createBlock(g.resolveDynamicComponent((n=>n.u?g.h(Kn,{...n.u.props,label:n.label,bars:n.bars,children:n.children,id:n.id,key:n.id||n.label},n.u.children||{}):g.h(Kn,{label:n.label,bars:n.bars,id:n.id,key:n.id||n.label}))(n)),{key:n.id||n.label})))),128)),g.unref(Tn).isCreating&&Ln.value?(g.openBlock(),g.createElementBlock("svg",ue,[Ln.value?(g.openBlock(),g.createBlock($n,{key:0,"source-bar":{id:g.unref(Tn).sourceBar.ganttBarConfig.id,x:Ln.value.x1,y:Ln.value.y1,width:0,height:0},"target-bar":{id:"preview",x:Ln.value.x2,y:Ln.value.y2,width:0,height:0},type:n.defaultConnectionType,color:n.defaultConnectionColor,pattern:n.defaultConnectionPattern,animated:n.defaultConnectionAnimated,"animation-speed":n.defaultConnectionAnimationSpeed,style:{opacity:.6},marker:n.markerConnection},null,8,["source-bar","target-bar","type","color","pattern","animated","animation-speed","marker"])):g.createCommentVNode("",!0)])):g.createCommentVNode("",!0),n.enableConnections?(g.openBlock(!0),g.createElementBlock(g.Fragment,{key:1},g.renderList(g.unref(_),(e=>(g.openBlock(),g.createElementBlock(g.Fragment,{key:`${e.sourceId}-${e.targetId}`},[g.unref(A).get(e.sourceId)&&g.unref(A).get(e.targetId)?(g.openBlock(),g.createBlock($n,g.mergeProps({key:0,ref_for:!0},g.unref(G)(e),{marker:n.markerConnection,onClick:n=>g.unref(O)(e)}),null,16,["marker","onClick"])):g.createCommentVNode("",!0)],64)))),128)):g.createCommentVNode("",!0)],36)],4)],4)]),n.commands?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-command",style:g.normalizeStyle({background:en.value.commands,fontFamily:g.unref(Q)}),"aria-label":"Gantt Commands"},[g.renderSlot(n.$slots,"commands",{zoomIn:()=>g.unref(hn)(!0),zoomOut:()=>g.unref(hn)(!1),scrollRowUp:()=>g.unref(bn)(),scrollRowDown:()=>g.unref(yn)(),expandAllGroups:()=>g.unref(P).expandAllGroups(),collapseAllGroups:()=>g.unref(P).collapseAllGroups(),handleToStart:()=>g.unref(sn)(0,y.value),handleBack:()=>g.unref(sn)(g.unref(ln)-10,y.value),handleScroll:()=>g.unref(cn)(y.value),handleForward:()=>g.unref(sn)(g.unref(ln)+10,y.value),handleToEnd:()=>g.unref(sn)(100,y.value),undo:()=>We(),redo:()=>Xe(),canUndo:g.unref(P).canUndo,canRedo:g.unref(P).canRedo,isAtTop:g.unref(wn),isAtBottom:g.unref(vn),zoomLevel:g.unref(an),export:()=>Xn()},(()=>[g.createElementVNode("div",ge,[n.maxRows>0?(g.openBlock(),g.createElementBlock("div",pe,[g.createElementVNode("button",{onClick:e[6]||(e[6]=(...n)=>g.unref(bn)&&g.unref(bn)(...n)),"aria-label":"Scroll row up",disabled:g.unref(wn)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faAngleUp),class:"command-icon"},null,8,["icon"])],8,me),g.createElementVNode("button",{onClick:e[7]||(e[7]=(...n)=>g.unref(yn)&&g.unref(yn)(...n)),"aria-label":"Scroll row down",disabled:g.unref(vn)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faAngleDown),class:"command-icon"},null,8,["icon"])],8,he)])):g.createCommentVNode("",!0),ee.value?(g.openBlock(),g.createElementBlock("div",fe,[g.createElementVNode("button",{onClick:e[8]||(e[8]=n=>g.unref(P).expandAllGroups()),"aria-label":"Expand all groups",disabled:g.unref(P).areAllGroupsExpanded.value},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faExpandAlt),class:"command-icon"},null,8,["icon"])],8,be),g.createElementVNode("button",{onClick:e[9]||(e[9]=n=>g.unref(P).collapseAllGroups()),"aria-label":"Collapse all groups",disabled:g.unref(P).areAllGroupsCollapsed.value},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faCompressAlt),class:"command-icon"},null,8,["icon"])],8,ye)])):g.createCommentVNode("",!0)]),g.createElementVNode("div",we,[g.createElementVNode("div",ve,[g.createElementVNode("button",{disabled:0===g.unref(ln),onClick:e[10]||(e[10]=n=>g.unref(sn)(0,y.value)),"aria-label":"Scroll to start"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faAnglesLeft),class:"command-icon"},null,8,["icon"])],8,xe),g.createElementVNode("button",{disabled:0===g.unref(ln),onClick:e[11]||(e[11]=n=>g.unref(sn)(g.unref(ln)-10,y.value)),"aria-label":"Scroll back"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faAngleLeft),class:"command-icon"},null,8,["icon"])],8,ke),g.withDirectives(g.createElementVNode("input",{"onUpdate:modelValue":e[12]||(e[12]=n=>g.isRef(ln)?ln.value=n:null),type:"range",min:"0",max:"100",class:"g-gantt-scroller",style:g.normalizeStyle({"--value":`${g.unref(ln)}%`}),onInput:e[13]||(e[13]=n=>g.unref(cn)(y.value)),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":g.unref(ln),"aria-label":"Gantt scroll position"},null,44,je),[[g.vModelText,g.unref(ln)]]),g.createElementVNode("button",{disabled:100===g.unref(ln),onClick:e[14]||(e[14]=n=>g.unref(sn)(g.unref(ln)+10,y.value)),"aria-label":"Scroll up"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faAngleRight),class:"command-icon"},null,8,["icon"])],8,Ce),g.createElementVNode("button",{disabled:100===g.unref(ln),onClick:e[15]||(e[15]=n=>g.unref(sn)(100,y.value)),"aria-label":"Scroll to end"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faAnglesRight),class:"command-icon"},null,8,["icon"])],8,Se)])]),g.createElementVNode("div",Me,[g.createElementVNode("div",De,[g.createElementVNode("button",{onClick:e[16]||(e[16]=()=>g.unref(hn)(!1)),"aria-label":"Zoom-out Gantt",disabled:1===g.unref(an)&&"month"===g.unref(on)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faMagnifyingGlassMinus),class:"command-icon"},null,8,["icon"])],8,Te),g.createElementVNode("button",{onClick:e[17]||(e[17]=()=>g.unref(hn)(!0)),"aria-label":"Zoom-out Gantt",disabled:10===g.unref(an)&&g.unref(on)===n.precision},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faMagnifyingGlassPlus),class:"command-icon"},null,8,["icon"])],8,Ee)]),g.createElementVNode("div",$e,[g.createElementVNode("button",{onClick:We,disabled:!g.unref(P).canUndo.value,"aria-label":"Undo last action"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faUndo),class:"command-icon"},null,8,["icon"])],8,Be),g.createElementVNode("button",{onClick:Xe,disabled:!g.unref(P).canRedo.value,"aria-label":"Redo action"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faRedo),class:"command-icon"},null,8,["icon"])],8,ze)])]),g.createElementVNode("div",Ye,[n.exportEnabled?(g.openBlock(),g.createElementBlock("div",He,[g.createElementVNode("div",Re,[g.withDirectives(g.createElementVNode("select",{"onUpdate:modelValue":e[18]||(e[18]=n=>Wn.value=n),class:"g-gantt-export-select",disabled:g.unref(Un)},e[20]||(e[20]=[g.createStaticVNode('<option value="" disabled>Export</option><option value="pdf">PDF</option><option value="png">PNG</option><option value="svg">SVG</option><option value="excel">Excel</option>',5)]),8,qe),[[g.vModelSelect,Wn.value]]),g.createElementVNode("button",{onClick:Xn,disabled:!Wn.value||g.unref(Un)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faFileExport),class:"command-icon"},null,8,["icon"]),g.unref(Un)?(g.openBlock(),g.createElementBlock("span",_e,[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(m.faSpinner),class:"fa-spin"},null,8,["icon"])])):g.createCommentVNode("",!0)],8,Pe)])])):g.createCommentVNode("",!0)])]))],4)):g.createCommentVNode("",!0)],512),g.createVNode(mn,{"model-value":g.unref(V)||s.value,bar:g.unref(K)},{default:g.withCtx((e=>[g.renderSlot(n.$slots,"bar-tooltip",g.normalizeProps(g.guardReactiveProps(e)))])),o:3},8,["model-value","bar"])],40,ce))}});function Ge(){e.extend(o),e.extend(a),e.extend(r),e.extend(s),e.extend(i),e.extend(t),e.extend(l),e.extend(c),e.extend(d),e.extend(u)}const Ie={install(n){Ge(),n.component("GGanttChart",Ae),n.component("GGanttRow",Kn)}};n.GGanttChart=Ae,n.GGanttRow=Kn,n.default=Ie,n.extendDayjs=Ge,n.hyvuegantt=Ie,Object.defineProperties(n,{p:{value:!0},[Symbol.toStringTag]:{value:"Module"}})})),injectStyle('\n.g-gantt-container {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n}\n/* Layout */\n.g-gantt-chart {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  overflow-x: hidden;\n  -webkit-touch-callout: none;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n  font-feature-settings: "tnum";\n  font-variant-numeric: tabular-nums;\n}\n\n/* Container Styles */\n.g-gantt-rows-container {\n  position: relative;\n  width: 100%;\n  height: 100%;\n  overflow: visible;\n  scrollbar-width: none;\n  -ms-overflow-style: none;\n}\n.labels-in-column {\n  display: flex;\n  flex-direction: row;\n}\n\n/* Command Section Styles */\n.g-gantt-command {\n  display: flex;\n  align-items: center;\n  height: 40px;\n  border-top: 1px solid #eaeaea;\n  padding: 0px 6px;\n  gap: 8px;\n}\n.g-gantt-command-block {\n  display: flex;\n  gap: 8px;\n}\n.g-gantt-command-fixed,\n.g-gantt-command-slider,\n.g-gantt-command-vertical,\n.g-gantt-command-zoom,\n.g-gantt-command-history,\n.g-gantt-command-groups,\n.g-gantt-export-container {\n  display: flex;\n  align-items: center;\n  gap: 2px;\n}\n.g-gantt-command-custom {\n  flex-grow: 1;\n}\n.g-gantt-command-vertical button:disabled,\n.g-gantt-command-slider button:disabled,\n.g-gantt-command-zoom button:disabled,\n.g-gantt-command-groups button:disabled,\n.g-gantt-command-history button:disabled,\n.g-gantt-export-container button:disabled {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n.g-gantt-export-select {\n  border-radius: 4px;\n  font-size: 0.75rem;\n  padding-left: 2px;\n  padding-right: 2px;\n  padding-top: 0;\n  padding-bottom: 0;\n  height: 22px;\n}\n.g-gantt-export-loading {\n  margin-left: 4px;\n}\n.g-gantt-export-menu button:hover {\n  background: #f5f5f5;\n}\n@media screen and (max-width: 768px) {\n.g-gantt-command {\n    height: auto;\n    min-height: 0;\n    min-height: initial;\n    flex-direction: column;\n    align-items: stretch;\n    padding: 12px 6px;\n    gap: 12px;\n}\n.g-gantt-command > * {\n    width: 100%;\n}\n.g-gantt-command-block {\n    display: flex;\n    justify-content: center;\n    gap: 20px;\n}\n.g-gantt-command-fixed {\n    flex-direction: column;\n    gap: 8px;\n}\n.g-gantt-command-groups {\n    justify-content: center;\n    margin-right: 0;\n}\n.g-gantt-command-slider {\n    width: 100%;\n    justify-content: center;\n}\n.g-gantt-command-vertical {\n    flex-direction: row;\n    justify-content: center;\n}\n.g-gantt-command-zoom,\n  .g-gantt-command-history {\n    justify-content: center;\n}\n.g-gantt-command-export {\n    display: flex;\n    align-items: center;\n}\n.command-icon {\n    padding: 8px;\n    width: 16px;\n    height: 16px;\n}\n.g-gantt-scroller {\n    height: 12px;\n}\n.g-gantt-scroller::-webkit-slider-thumb {\n    width: 24px;\n    height: 24px;\n}\n.g-gantt-scroller::-moz-range-thumb {\n    width: 24px;\n    height: 24px;\n}\n}\n\n/* Scroller Styles */\n.g-gantt-scroller {\n  -webkit-appearance: none;\n  height: 8px;\n  border-radius: 4px;\n  outline: none;\n  background: linear-gradient(\n    to right,\n    var(--170a1ade) var(--value),\n    #ddd var(--value)\n  );\n}\n\n/* Scroller Thumb Styles */\n.g-gantt-scroller::-webkit-slider-thumb {\n  -webkit-appearance: none;\n  appearance: none;\n  width: 16px;\n  height: 16px;\n  background: var(--170a1ade);\n  border-radius: 50%;\n  cursor: pointer;\n  border: none;\n}\n.g-gantt-scroller::-moz-range-thumb {\n  width: 16px;\n  height: 16px;\n  background: var(--170a1ade);\n  border-radius: 50%;\n  cursor: pointer;\n  border: none;\n}\n\n/* Track Styles */\n.g-gantt-scroller::-moz-range-track {\n  height: 8px;\n  background: #ddd;\n  border-radius: 4px;\n  border: none;\n}\n\n/* Hover States */\n.g-gantt-scroller::-webkit-slider-thumb:hover {\n  background: var(--170a1ade);\n}\n.g-gantt-scroller::-moz-range-thumb:hover {\n  background: var(--170a1ade);\n}\n\n/* Icon Styles */\n.command-icon {\n  background: var(--170a1ade);\n  padding: 4px;\n  margin: 2px;\n  width: 14px;\n  height: 14px;\n  border-radius: 4px;\n}\nbutton {\n  display: flex;\n}\n.g-gantt-chart:focus-within {\n  outline: 2px solid var(--1a0a3e0a);\n  outline-offset: 2px;\n}\n.g-gantt-rounded-wrapper {\n  border-radius: 5px;\n  overflow: hidden;\n  border: 1px solid #eaeaea;\n  background: white;\n  display: flex;\n  flex-direction: column;\n}\n.g-gantt-rows-container::-webkit-scrollbar {\n  display: none;\n}\n.g-gantt-main-layout {\n  display: flex;\n  width: 100%;\n  position: relative;\n}\n.g-gantt-label-section {\n  position: relative;\n  display: flex;\n}\n.g-gantt-section-resizer {\n  position: absolute;\n  right: -4px;\n  top: 0;\n  width: 8px;\n  height: 100%;\n  cursor: col-resize;\n  background: transparent;\n  z-index: 10;\n  transition: background 0.2s ease;\n}\n.g-gantt-section-resizer:hover {\n  background: rgba(0, 0, 0, 0.1);\n}\n.g-gantt-section-resizer:active {\n  background: rgba(0, 0, 0, 0.2);\n}\n@media (max-width: 768px) {\n.g-gantt-section-resizer {\n    width: 16px;\n    right: -8px;\n}\n}\n.connection-preview {\n  pointer-events: none;\n}\n\n.g-gantt-row {\n  width: 100%;\n  transition: background 0.4s;\n  position: relative;\n}\n\n/*.g-gantt-row:last-child {\n  border-bottom: 0px !important;\n}*/\n.g-gantt-row > .g-gantt-row-bars-container {\n  position: relative;\n  width: 100%;\n}\n.g-gantt-row-label {\n  position: absolute;\n  top: 0;\n  left: 0px;\n  padding: 0px 8px;\n  display: flex;\n  align-items: center;\n  height: 60%;\n  min-height: 20px;\n  font-size: 0.8em;\n  font-weight: bold;\n  border-bottom-right-radius: 6px;\n  background: #f2f2f2;\n  z-index: 3;\n  box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.6);\n}\n.g-gantt-row-group-label {\n  font-weight: bold;\n  background: #e0e0e0 !important;\n}\n.g-gantt-row-children {\n  transition: max-height 0.3s ease-in-out;\n}\n.bar-transition-leave-active,\n.bar-transition-enter-active {\n  transition: all 0.2s;\n}\n.bar-transition-enter-from,\n.bar-transition-leave-to {\n  transform: scale(0.8);\n  opacity: 0;\n}\n\n.g-gantt-bar {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  background: cadetblue;\n  overflow: visible;\n  position: relative;\n}\n.g-gantt-bar-label {\n  width: 100%;\n  height: 100%;\n  box-sizing: border-box;\n  padding: 0 14px 0 14px;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: relative;\n  z-index: 2;\n  pointer-events: none;\n}\n.g-gantt-bar-label > * {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.g-gantt-bar-handle-left,\n.g-gantt-bar-handle-right {\n  position: absolute;\n  width: 10px;\n  height: 100%;\n  background: white;\n  opacity: 0.7;\n  border-radius: 0px;\n  cursor: ew-resize;\n  top: 0;\n}\n.g-gantt-bar-handle-left {\n  left: 0;\n}\n.g-gantt-bar-handle-right {\n  right: 0;\n}\n.g-gantt-bar-label img {\n  pointer-events: none;\n}\n.g-gantt-bar-label-edit {\n  width: 100%;\n  height: 100%;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  pointer-events: all;\n}\n.g-gantt-bar-label-input {\n  background: rgba(255, 255, 255, 0.2);\n  border-radius: 4px;\n  width: 100%;\n  height: 100%;\n  background: white;\n  color: black;\n  outline: none;\n  font: inherit;\n  padding: 2px;\n  text-align: center;\n}\n.is-group-bar {\n  background: transparent !important;\n}\n.group-bar-decoration {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n.g-gantt-progress-bar {\n  position: absolute;\n  pointer-events: none;\n  overflow: hidden;\n  min-width: 8px;\n  display: flex;\n  align-items: center;\n  justify-content: flex-end;\n  padding-right: 10px;\n  color: #fff;\n  font-size: 0.8em;\n  font-weight: 500;\n  z-index: 1;\n}\n.g-gantt-progress-handle {\n  position: absolute;\n  top: 0;\n  width: 8px;\n  height: 100%;\n  background-color: rgba(0, 0, 0, 0.3);\n  cursor: ew-resize;\n  pointer-events: all;\n  transition: background-color 0.2s ease;\n  z-index: 3;\n}\n.g-gantt-progress-handle:hover {\n  background-color: rgba(0, 0, 0, 0.5);\n}\n.g-gantt-progress-handle:active {\n  background-color: rgba(0, 0, 0, 0.7);\n}\n.connection-point {\n  z-index: 10;\n}\n.connection-point:hover {\n  transform: translate(-50%, -50%) scale(1.2);\n}\n.connection-point.end:hover {\n  transform: translate(50%, -50%) scale(1.2);\n}\n\n.g-label-column {\n  display: flex;\n  flex-direction: column;\n  color: rgb(64, 64, 64);\n  font-feature-settings: "tnum";\n  font-variant-numeric: tabular-nums;\n  font-size: 0.9em;\n  background: white;\n  box-sizing: border-box;\n  flex-shrink: 0;\n}\n.g-label-column-header {\n  width: 100%;\n  height: 80px;\n  min-height: 80px;\n  overflow: visible;\n  display: flex;\n  align-items: center;\n  overflow: visible;\n}\n.g-label-column-row-inner {\n  display: flex;\n  width: 100%;\n  min-width: 100%;\n  flex-wrap: nowrap;\n  align-items: center;\n}\n.g-label-column-header-cell {\n  flex: none;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0 0.5rem;\n  height: 100%;\n  gap: 0.5rem;\n  box-sizing: border-box;\n  position: relative;\n  overflow: visible;\n  text-align: center;\n}\n.g-label-column-cell {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0.1rem 0.3rem;\n  box-sizing: border-box;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  flex: none;\n}\n.header-content {\n  width: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0.5rem;\n  padding: 0 4px;\n}\n.cell-content {\n  display: flex;\n  align-items: center;\n  width: 100%;\n  gap: 4px;\n}\n.text-ellipsis {\n  flex: 1;\n  min-width: 0;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.text-ellipsis-value {\n  min-width: 0;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n.g-label-column-header-cell.sortable {\n  cursor: pointer;\n  transition: background-color 0.2s ease;\n}\n.g-label-column-header-cell.sortable:hover {\n  background-color: rgba(0, 0, 0, 0.1);\n}\n.g-label-column-rows {\n  width: 100%;\n  overflow-y: auto;\n  overflow-x: hidden;\n}\n.g-label-column-rows::-webkit-scrollbar {\n  display: none;\n}\n.g-label-column-row {\n  width: 100%;\n  display: flex;\n  box-sizing: border-box;\n  align-items: center;\n  flex-wrap: nowrap;\n}\n\n/*.g-label-column-row:last-child {\n  border-bottom: 0px !important;\n}*/\n.sort-icon {\n  display: inline-flex;\n  align-items: center;\n  opacity: 0.6;\n  font-size: 0.8em;\n  transition: opacity 0.2s ease;\n}\n.sortable:hover .sort-icon {\n  opacity: 1;\n}\n.column-resizer {\n  position: absolute;\n  right: -1px;\n  top: 0;\n  width: 8px;\n  height: 100%;\n  cursor: col-resize;\n  z-index: 1;\n  background: transparent;\n}\n.column-resizer:hover,\n.column-resizer.is-dragging,\n.column-resizer.is-touch-resizing {\n  background: rgba(0, 0, 0, 0.1);\n}\n.g-label-column-header-cell:has(.column-resizer.is-touch-resizing) {\n  background-color: rgba(0, 0, 0, 0.05);\n}\n@media (max-width: 768px) {\n.column-resizer {\n    width: 16px;\n}\n}\n.g-label-column {\n  -webkit-user-select: none;\n     -moz-user-select: none;\n          user-select: none;\n}\n.g-label-column.dragging {\n  cursor: col-resize;\n}\n.g-label-column-group {\n  font-weight: 600;\n  background-color: rgba(0, 0, 0, 0.03);\n}\n.group-toggle-button {\n  flex: 0 0 20px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 20px;\n  height: 20px;\n  padding: 0;\n  border: none;\n  background: transparent;\n  cursor: pointer;\n  transition: transform 0.2s ease;\n}\n.group-toggle-button:hover {\n  background-color: rgba(0, 0, 0, 0.05);\n  border-radius: 4px;\n}\n.group-icon {\n  width: 12px;\n  height: 12px;\n  transition: transform 0.2s ease;\n}\n.group-label {\n  font-weight: 600;\n}\n.g-label-column-row-draggable {\n  cursor: move;\n}\n.g-label-column-row-dragging {\n  opacity: 0.5;\n  background: #f0f0f0 !important;\n  background: var(--dragging-background, #f0f0f0) !important;\n}\n.g-label-column-row-drop-target {\n  position: relative;\n}\n.g-label-column-row-drop-before::before,\n.g-label-column-row-drop-after::after {\n  content: "";\n  position: absolute;\n  left: 0;\n  right: 0;\n  height: 2px;\n  background: #4a9eff;\n  background: var(--drop-indicator-color, #4a9eff);\n  z-index: 1;\n}\n.g-label-column-row-drop-before::before {\n  top: 0;\n}\n.g-label-column-row-drop-after::after {\n  bottom: 0;\n}\n.g-label-column-row-drop-child {\n  background: rgba(74, 158, 255, 0.1) !important;\n  background: var(--drop-child-background, rgba(74, 158, 255, 0.1)) !important;\n}\n.is-touch-dragging {\n  opacity: 0.8;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n  pointer-events: none;\n}\n@media (max-width: 768px) {\n.group-toggle-button {\n    padding: 12px;\n}\n}\n.g-label-column-header-cell-ex {\n  position: relative;\n  flex-grow: 1;\n}\n\n.g-grid-container {\n  position: absolute;\n  top: 0;\n  left: 0%;\n  width: 100%;\n  height: 100%;\n  display: flex;\n  justify-content: space-between;\n}\n.g-grid-line {\n  width: 1px;\n  height: 100%;\n}\n.g-grid-line:first-child {\n  border-left: 0px !important;\n}\n\n.g-timeaxis {\n  position: sticky;\n  top: 0;\n  width: 100%;\n  height: 80px;\n  background: white;\n  z-index: 4;\n  display: flex;\n  flex-direction: column;\n  cursor: grab;\n}\n.g-timeaxis:active {\n  cursor: grabbing;\n}\n.g-timeunits-container {\n  display: flex;\n  width: 100%;\n  height: 50%;\n}\n.g-timeunit {\n  height: 100%;\n  font-size: 65%;\n  display: flex;\n  justify-content: center;\n}\n.g-upper-timeunit {\n  display: flex;\n  height: 100%;\n  justify-content: center;\n  align-items: center;\n}\n.g-timeaxis-hour-pin {\n  width: 1px;\n  height: 10px;\n}\n.label-unit {\n  flex-grow: 1;\n  text-align: center;\n  line-height: normal;\n}\n.g-timeunit-min {\n  display: flex;\n  flex-direction: row-reverse;\n  align-items: center;\n  width: 100%;\n  line-height: 20px;\n}\n.g-timeunit-step {\n  display: flex;\n  width: 100%;\n  line-height: 20px;\n}\n.g-events-container {\n  display: flex;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  height: 100%;\n}\n.g-timeaxis-event {\n  height: 100%;\n  position: absolute;\n  font-size: 65%;\n  padding: 0 6px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  border: 1px solid;\n  box-sizing: border-box;\n  cursor: pointer;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n  transition: box-shadow 0.2s ease;\n}\n.g-timeaxis-event:hover {\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n  z-index: 5;\n}\n\n.g-gantt-tooltip {\n  position: fixed;\n  background: black;\n  color: white;\n  z-index: 4;\n  font-size: 0.85em;\n  padding: 5px;\n  border-radius: 3px;\n  transition: opacity 0.2s;\n  display: flex;\n  align-items: center;\n  font-feature-settings: "tnum";\n  font-variant-numeric: tabular-nums;\n}\n.g-gantt-tooltip:before {\n  content: "";\n  position: absolute;\n  top: 0;\n  left: 10%;\n  width: 0;\n  height: 0;\n  border: 10px solid transparent;\n  border-bottom-color: black;\n  border-top: 0;\n  margin-left: -5px;\n  margin-top: -5px;\n}\n.g-gantt-tooltip-color-dot {\n  width: 8px;\n  height: 8px;\n  border-radius: 100%;\n  margin-right: 4px;\n}\n.g-fade-enter-active,\n.g-fade-leave-active {\n  transition: opacity 0.3s ease;\n}\n.g-fade-enter-from,\n.g-fade-leave-to {\n  opacity: 0;\n}\n\n.g-grid-current-time {\n  position: absolute;\n  height: 100%;\n  display: flex;\n  z-index: 5;\n  pointer-events: none;\n}\n.g-grid-current-time-marker {\n  width: 0px;\n  height: calc(100% - 2px);\n  display: flex;\n}\n.g-grid-current-time-text {\n  font-size: x-small;\n}\n\n.gantt-connector[data-v-a658cc88] {\n  overflow: visible;\n  pointer-events: none;\n}\n.connector-path[data-v-a658cc88] {\n  transition: d 0.3s ease;\n}\n.connector-path.selected[data-v-a658cc88] {\n  filter: drop-shadow(0 0 5px rgba(33, 150, 243, 0.6));\n}\n\n/* Animation for dash pattern */\n.connector-animated-dash-slow[data-v-a658cc88] {\n  animation: dashFlow-a658cc88 4s linear infinite;\n}\n.connector-animated-dash-normal[data-v-a658cc88] {\n  animation: dashFlow-a658cc88 2s linear infinite;\n}\n.connector-animated-dash-fast[data-v-a658cc88] {\n  animation: dashFlow-a658cc88 1s linear infinite;\n}\n\n/* Animation for dot pattern */\n.connector-animated-dot-slow[data-v-a658cc88] {\n  animation: dotFlow-a658cc88 4s linear infinite;\n}\n.connector-animated-dot-normal[data-v-a658cc88] {\n  animation: dotFlow-a658cc88 2s linear infinite;\n}\n.connector-animated-dot-fast[data-v-a658cc88] {\n  animation: dotFlow-a658cc88 1s linear infinite;\n}\n\n/* Animation for dashdot pattern */\n.connector-animated-dashdot-slow[data-v-a658cc88] {\n  animation: dashdotFlow-a658cc88 4s linear infinite;\n}\n.connector-animated-dashdot-normal[data-v-a658cc88] {\n  animation: dashdotFlow-a658cc88 2s linear infinite;\n}\n.connector-animated-dashdot-fast[data-v-a658cc88] {\n  animation: dashdotFlow-a658cc88 1s linear infinite;\n}\n.connector-path[data-v-a658cc88] {\n  marker-start: none;\n  transition:\n    d 0.3s ease, marker-start 0.3s ease;\n}\n.connection-endpoint[data-v-a658cc88] {\n  filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.3));\n  transition: all 0.3s ease;\n  border: 1px solid black;\n  border-radius: 100%;\n}\n.connection-endpoint[data-v-a658cc88]:hover {\n  r: 8;\n}\n@keyframes dashFlow-a658cc88 {\n0% {\n    stroke-dasharray: 10, 10;\n    stroke-dashoffset: 0;\n}\n100% {\n    stroke-dasharray: 10, 10;\n    stroke-dashoffset: -20;\n}\n}\n@keyframes dotFlow-a658cc88 {\n0% {\n    stroke-dasharray: 2, 8;\n    stroke-dashoffset: 0;\n}\n100% {\n    stroke-dasharray: 2, 8;\n    stroke-dashoffset: -10;\n}\n}\n@keyframes dashdotFlow-a658cc88 {\n0% {\n    stroke-dasharray: 12, 6, 3, 6;\n    stroke-dashoffset: 0;\n}\n100% {\n    stroke-dasharray: 12, 6, 3, 6;\n    stroke-dashoffset: -27;\n}\n}\n\n.g-gantt-milestone {\n  position: absolute;\n  height: 100%;\n  display: flex;\n  z-index: 5;\n  pointer-events: auto;\n  flex-direction: column;\n  align-items: center;\n}\n.g-gantt-milestone-marker {\n  width: 0px;\n  height: calc(100% - 30px);\n  display: flex;\n  margin-top: 25px;\n}\n.g-gantt-milestone-label {\n  padding: 2px 8px;\n  border-radius: 4px;\n  font-size: 0.8em;\n  white-space: nowrap;\n  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n  position: absolute;\n  top: 4px;\n  transform: translateY(0);\n}\n.g-gantt-milestone-tooltip {\n  position: fixed;\n  padding: 8px;\n  border-radius: 4px;\n  font-size: 0.75em;\n  z-index: 1000;\n  min-width: 200px;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n  transform: translateY(-100%);\n}\n.g-gantt-milestone-tooltip-title {\n  font-weight: bold;\n}\n.g-gantt-milestone-tooltip-date {\n  font-size: 0.9em;\n  opacity: 0.8;\n}\n.g-gantt-milestone-tooltip-description {\n  font-size: 0.9em;\n  line-height: 1.4;\n}\n.g-fade-enter-active,\n.g-fade-leave-active {\n  transition: opacity 0.3s ease;\n}\n.g-fade-enter-from,\n.g-fade-leave-to {\n  opacity: 0;\n}\n\n.g-grid-pointer-marker-container {\n  position: absolute;\n  height: 100%;\n  display: flex;\n  z-index: 5;\n  pointer-events: none;\n}\n.g-grid-pointer-marker-tooltip {\n  position: fixed;\n  padding: 8px;\n  border-radius: 4px;\n  font-size: 0.75em;\n  z-index: 1000;\n  min-width: 200px;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n.g-grid-pointer-marker-tooltip-content {\n  padding: 8px;\n}\n.g-grid-pointer-marker-marker {\n  width: 0px;\n  height: calc(100% - 2px);\n  display: flex;\n}\n.g-grid-pointer-marker-text {\n  font-size: x-small;\n}\n\n.g-gantt-holiday-tooltip {\n  position: fixed;\n  background: rgba(0, 0, 0, 0.8);\n  color: white;\n  padding: 4px 8px;\n  border-radius: 4px;\n  font-size: 12px;\n  z-index: 1000;\n  transform: translateX(-50%);\n  white-space: nowrap;\n}\n.g-gantt-holiday-tooltip:after {\n  content: "";\n  position: absolute;\n  bottom: -5px;\n  left: 50%;\n  transform: translateX(-50%);\n  width: 0;\n  height: 0;\n  border-left: 5px solid transparent;\n  border-right: 5px solid transparent;\n  border-top: 5px solid rgba(0, 0, 0, 0.8);\n}\n.g-fade-enter-active,\n.g-fade-leave-active {\n  transition: opacity 0.2s ease;\n}\n.g-fade-enter-from,\n.g-fade-leave-to {\n  opacity: 0;\n}\n\n.g-gantt-event-tooltip {\n  position: fixed;\n  z-index: 1000;\n  min-width: 180px;\n  max-width: 280px;\n  border-radius: 4px;\n  padding: 8px 12px;\n  font-size: 12px;\n  transform: translateX(-50%);\n  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n  pointer-events: none;\n}\n.g-gantt-event-tooltip:after {\n  content: "";\n  position: absolute;\n  bottom: -6px;\n  left: 50%;\n  transform: translateX(-50%);\n  width: 0;\n  height: 0;\n  border-left: 6px solid transparent;\n  border-right: 6px solid transparent;\n  border-top: 6px solid #2a2f42;\n  border-top: 6px solid var(--tooltip-background, #2a2f42);\n}\n.g-gantt-event-tooltip-title {\n  font-weight: bold;\n  margin-bottom: 4px;\n}\n.g-gantt-event-tooltip-time {\n  font-size: 11px;\n  opacity: 0.9;\n  margin-bottom: 4px;\n}\n.g-gantt-event-tooltip-description {\n  font-size: 11px;\n  line-height: 1.4;\n  opacity: 0.9;\n  margin-top: 4px;\n  white-space: normal;\n  word-break: break-word;\n}\n.g-fade-enter-active,\n.g-fade-leave-active {\n  transition: opacity 0.2s ease;\n}\n.g-fade-enter-from,\n.g-fade-leave-to {\n  opacity: 0;\n}\n',"top");