hy-vue-gantt
Version:
Evolution of vue-ganttastic package
2 lines • 192 kB
JavaScript
function injectStyle(n,e="top"){if(!n||"undefined"==typeof document)return;const t=document.head||document.querySelector("head"),o=t.querySelector(":first-child"),r=document.createElement("style");r.appendChild(document.createTextNode(n)),"top"===e&&o?t.insertBefore(r,o):t.appendChild(r)}!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/nl"),require("dayjs/locale/pl"),require("dayjs/locale/cs")):"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/nl","dayjs/locale/pl","dayjs/locale/cs"],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,r,a,i,s,l,d,c,u,g,p,f,h,m,b,v,w,y,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 C=k(x),S=Symbol("CONFIG_KEY"),M=Symbol("BOOLEAN_KEY"),$=Symbol("EMIT_BAR_EVENT_KEY"),D=Symbol("BAR_CONTAINER_KEY"),E=Symbol("CHART_AREA_KEY"),T=Symbol("CHART_WRAPPER_KEY"),j=Symbol("GANTT_ID_KEY");function B(){const n=g.inject(S);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:r,barEnd:a,dateFormat:i,locale:s}=n,l=g.computed((()=>c(t.value))),d=g.computed((()=>c(o.value)));e.locale(s.value);const c=(n,t)=>{let o;if(void 0===t||"string"==typeof n||n instanceof Date||(o="start"===t?n[r.value]:n[a.value]),"string"==typeof n)o=n;else if(n instanceof Date)return e(n);return e(o,i.value||z,!1)};return{chartStartDayjs:l,chartEndDayjs:d,toDayjs:c,format:(n,t)=>!1===t?n instanceof Date?n:e(n).toDate():("string"==typeof n||n instanceof Date?c(n):n).format(t),diffDates:()=>d.value.diff(l.value,"day")}}const R={class:"g-grid-container",ref:"time"},F=g.defineComponent({t:"GGanttGrid",props:{timeaxisUnits:{},internalPrecision:{}},setup(n){const e=n,{toDayjs:t}=Y(),{colors:o,highlightedHours:r,highlightedDaysInWeek:a,highlightedDaysInMonth:i,highlightedMonths:s,highlightedWeek:l,enableMinutes:d}=B(),c=n=>"hour"===e.internalPrecision?u(n)||p(n)||h(n)||f(n):"day"===e.internalPrecision||"date"===e.internalPrecision?p(n)||h(n)||f(n):"week"===e.internalPrecision?f(n)||h(n):"month"===e.internalPrecision&&h(n),u=n=>null==r?void 0:r.value.includes(n.getHours()),p=n=>(null==a?void 0:a.value.includes(n.getDay()))||(null==i?void 0:i.value.includes(n.getDate())),f=n=>null==l?void 0:l.value.includes(t(n).week()),h=n=>null==s?void 0:s.value.includes(n.getMonth());return(n,e)=>(g.openBlock(),g.createElementBlock("div",R,[g.unref(d)?(g.openBlock(!0),g.createElementBlock(g.Fragment,{key:1},g.renderList(n.timeaxisUnits.result.lowerUnits,(({label:e,date:t,width:r},a)=>(g.openBlock(),g.createElementBlock(g.Fragment,{key:`${e}_${a}`},[(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:r,borderLeft:`1px solid ${g.unref(o).gridAndBorder}`,background:c(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},r)=>(g.openBlock(),g.createElementBlock("div",{key:`${n}_${r}`,class:"g-grid-line",style:g.normalizeStyle({width:t,borderLeft:`1px solid ${g.unref(o).gridAndBorder}`,background:c(e)?g.unref(o).hoverHighlight:void 0})},null,4)))),128))],512))}});const H=["onClick"],I={class:"text-ellipsis"},_={key:0,class:"sort-icon"},A=["onMousedown","onTouchstart"],P=["data-row-id","draggable","onDragstart","onDragover","onTouchstart","onTouchmove"],O={class:"g-label-column-row-inner"},G=["onClick"],L={class:"text-ellipsis-value"},q=g.defineComponent({t:"GGanttLabelColumn",emits:["scroll","row-drop"],setup(n,{expose:e,emit:t}){const o=t,r=g.inject("useRows");if(!r)throw new Error("useRows does not provide ");const{rows:a,sortState:i,toggleSort:s}=r,{font:l,colors:d,labelColumnTitle:c,labelColumnWidth:u,rowHeight:h,maxRows:m,multiColumnLabel:b,precision:v,barStart:w,barEnd:y,dateFormat:x,rowLabelClass:k,labelResizable:C,enableRowDragAndDrop:S,hideTimeaxis:M,sortable:$,showEventsAxis:D,eventsAxisHeight:E}=B(),{toDayjs:T,format:j}=Y(),z=g.reactive(new Map),R=g.ref(!1),F=g.ref(0),q=g.ref(null),U=g.ref(null),{dragState:W,handleDragStart:X,handleDragOver:N,handleDrop:V}=function(n,e,t,o){const r=g.ref({isDragging:!1,draggedRow:null,dropTarget:{row:null,position:"before"}}),a=g.ref(new Map),i=(n,e)=>!!n.children&&n.children.some((n=>n.id===e.id||i(n,e))),s=(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,r]=s(n[o].children,e);if(-1!==t)return[t,r]}}return[-1,n]};return{dragState:r,handleDragStart:(t,o)=>{e.value||(r.value.isDragging=!0,r.value.draggedRow=t,o.dataTransfer&&(o.dataTransfer.effectAllowed="move",o.dataTransfer.setData("text/plain","")),0===a.value.size&&n.value.forEach(((n,e)=>{n.id&&a.value.set(n.id,e)})))},handleDragOver:(n,e)=>{var t;if(!r.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)})(r.value.draggedRow,n))return;e.preventDefault();const o=e.currentTarget.getBoundingClientRect(),a=e.clientY-o.top;r.value.dropTarget=(null==(t=n.children)?void 0:t.length)?a<.25*o.height?{row:n,position:"before"}:a>.75*o.height?{row:n,position:"after"}:{row:n,position:"child"}:{row:n,position:a<o.height/2?"before":"after"}},handleDrop:()=>{const{draggedRow:a,dropTarget:l}=r.value;if(!a||!l.row||e.value||a===l.row)return;if(i(a,l.row))return;const[d,c]=s(n.value,a.id),[u,g]=s(n.value,l.row.id);if(-1===d||-1===u)return;const[p]=c.splice(d,1),f="after"===l.position?u+1:u;g.splice(f,0,p),t([...n.value]),o(0,{sourceRow:a,targetRow:l.row,newIndex:f,parentId:g===n.value?void 0:l.row.id}),r.value={isDragging:!1,draggedRow:null,dropTarget:{row:null,position:"before"}}},resetOrder:()=>{0!==a.value.size&&n.value.sort(((n,e)=>(n.id?a.value.get(n.id)??0:0)-(e.id?a.value.get(e.id)??0:0)))},isDescendant:i,findRowIndexById:s}}(a,g.computed((()=>"none"!==i.value.direction)),r.updateRows,((n,e)=>o("row-drop",e))),{touchState:Z,handleTouchStart:K,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 r=e.touches[0];r&&(e.preventDefault(),n.value={isResizing:!0,startX:r.clientX,currentColumn:t,initialWidth:o})},handleTouchMove:(e,t)=>{const o=e.touches[0];if(!o||!n.value.isResizing)return;e.preventDefault();const r=Math.max(50,n.value.initialWidth+(o.clientX-n.value.startX));n.value.currentColumn&&t(n.value.currentColumn,r)},handleTouchEnd:e,handleTouchCancel:e}}(),{touchState:en,handleTouchStart:tn,handleTouchMove:on,handleTouchEnd:rn,resetTouchState:an}=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 r=e.touches[0];r&&(setTimeout((()=>{n.value.isDragging&&e.preventDefault()}),100),n.value={isDragging:!0,startY:r.clientY,currentY:r.clientY,draggedRow:t,dropTarget:{row:null,position:"before"},dragElement:o,initialTransform:o.style.transform||""})},handleTouchMove:(e,t,o)=>{var r;const a=e.touches[0];if(!a||!n.value.isDragging||!n.value.dragElement)return;e.preventDefault(),n.value.currentY=a.clientY,n.value.dragElement.style.transform=`translateY(${a.clientY-n.value.startY}px)`;const i=o.getBoundingClientRect(),s=(a.clientY-i.top)/i.height;n.value.draggedRow!==t&&(n.value.dropTarget=(null==(r=t.children)?void 0:r.length)?s<.25?{row:t,position:"before"}:s>.75?{row:t,position:"after"}:{row:t,position:"child"}:{row:t,position:s<.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}}(),sn=g.computed((()=>{var n;if(!(null==(n=b.value)?void 0:n.length)||!c.value)return[{field:"Label",sortable:$.value}];const e=b.value.filter((n=>"Label"!==n.field));return[{field:"Label",sortable:$.value},...e]})),ln=g.computed((()=>{let n=0;return z.forEach((e=>n+=e)),n})),dn=g.computed((()=>{const n=(e,t=0)=>e.flatMap((e=>{var o;const a={...e,indentLevel:t},i=!!e.id&&r.isGroupExpanded(e.id);return(null==(o=e.children)?void 0:o.length)&&i?[a,...n(e.children,t+1)]:[a]}));return n(a.value)})),cn=g.computed((()=>0===m.value?{}:{height:Math.min(m.value,dn.value.length)*h.value+"px","overflow-y":"auto"})),un=g.computed((()=>sn.value.reduce(((n,e)=>(n[e.field]=!(!1===e.sortable||!($.value||!$.value&&e.sortable)||!mn(e.field)&&!e.sortFn),n)),{}))),gn=g.computed((()=>M.value?0:D.value?80+(E.value||25):80));let pn=0;const fn=n=>{if(!S.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&&r.toggleGroupExpansion(e)}}return void an()}const e=rn(n);if(e&&e.sourceRow&&e.dropTarget.row){let n=dn.value.findIndex((n=>n===e.dropTarget.row));"after"===e.dropTarget.position&&(n+=1);const t=dn.value.findIndex((n=>n===e.sourceRow));t<n&&(n-=1);const a={sourceRow:e.sourceRow,targetRow:e.dropTarget.row,newIndex:n,parentId:"child"===e.dropTarget.position?e.dropTarget.row.id:void 0},i=[...dn.value];i.splice(t,1),i.splice(n,0,e.sourceRow),r.updateRows(i),o("row-drop",a)}},hn=n=>{C&&J(n,((n,e)=>{z.set(n,e)}))},mn=n=>["Id","Label","StartDate","EndDate","Duration","Progress"].includes(n),bn=n=>n.children&&n.children.length>0?[{field:"Label",sortable:$.value}]:sn.value,vn=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(!S.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}},yn=(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},Cn=(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||T(t).isBefore(T(n))?t:n}),"");return j(e,x.value)}case"EndDate":{if(!n.bars.length)return"-";const e=n.bars.reduce(((n,e)=>{const t=e[y.value];return!n||T(t).isAfter(T(n))?t:n}),"");return j(e,x.value)}case"Duration":{if(!n.bars.length)return"-";const e=n.bars.reduce(((n,e)=>{const t=e[w.value];return!n||T(t).isBefore(T(n))?t:n}),""),t=n.bars.reduce(((n,e)=>{const t=e[y.value];return!n||T(t).isAfter(T(n))?t:n}),"");return Sn(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""}},Sn=(n,e)=>{const t=T(n),o=T(e);switch(v.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`}},Mn=n=>{o("scroll",n.target.scrollTop)},$n=n=>{if(!R.value||!q.value)return;const e=n.clientX-F.value,t=z.get(q.value)||u.value,o=Math.max(50,t+e);z.set(q.value,o),F.value=n.clientX},Dn=()=>{R.value=!1,q.value=null,document.removeEventListener("mousemove",$n),document.removeEventListener("mouseup",Dn)};return g.onMounted((()=>{sn.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(l),color:g.unref(d).text,minWidth:"100%",flex:`0 0 ${ln.value}px`,borderRight:`1px solid ${g.unref(d).gridAndBorder}`})},[g.unref(M)?g.createCommentVNode("",!0):(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-label-column-header",style:g.normalizeStyle({background:g.unref(d).primary,borderBottom:`1px solid ${g.unref(d).gridAndBorder}`,height:`${gn.value}px`,minHeight:`${gn.value}px`})},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(sn.value,(t=>{return g.openBlock(),g.createElementBlock(g.Fragment,{key:t},[mn(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(s)(t.field):void 0},[g.createElementVNode("span",I,[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?f.faSort:"asc"===i.value.direction?f.faArrowDownAZ:f.faArrowDownZA)},null,8,["icon"])])):g.createCommentVNode("",!0)],8,H),g.unref(C)?(g.openBlock(),g.createElementBlock("div",{key:0,class:g.normalizeClass(["column-resizer",{"is-dragging":R.value&&q.value===t.field,"is-touch-resizing":g.unref(Z).isResizing&&g.unref(Z).currentColumn===t.field}]),onMousedown:n=>((n,e)=>{R.value=!0,F.value=n.clientX,q.value=e,document.addEventListener("mousemove",$n),document.addEventListener("mouseup",Dn)})(n,t.field),onTouchstart:n=>((n,e)=>{if(!C)return;const t=z.get(e)||u.value;K(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(cn.value),ref_key:"labelContainer",ref:U,onScroll:Mn},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(dn.value,((t,o)=>{var a;return g.openBlock(),g.createElementBlock("div",{key:`${t.id||t.label}_${o}`,"data-row-id":t.id,style:g.normalizeStyle({background:(null==(a=t.children)?void 0:a.length)?g.unref(d).rowContainer:o%2==0?g.unref(d).ternary:g.unref(d).quartenary,height:`${g.unref(h)}px`,borderBottom:`1px solid ${g.unref(d).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([vn(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(S),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)=>{S.value&&"none"===i.value.direction&&(pn=Date.now(),tn(n,e,n.currentTarget))})(n,t),onTouchmove:n=>((n,e)=>{S.value&&"none"===i.value.direction&&(Date.now()-pn<500?an():on(n,e,n.currentTarget))})(n,t),onTouchend:fn,onTouchcancel:e[3]||(e[3]=(...n)=>g.unref(an)&&g.unref(an)(...n))},[g.createElementVNode("div",O,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(bn(t),(e=>{var a,i;return g.openBlock(),g.createElementBlock(g.Fragment,{key:e.field},[mn(e.field)||e.valueGetter?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-label-column-cell",style:g.normalizeStyle(kn(e.field,Boolean(null==(a=t.children)?void 0:a.length)))},[g.createElementVNode("div",{style:g.normalizeStyle(xn("Label"===e.field))},[g.createElementVNode("div",{style:g.normalizeStyle(yn(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&&r.toggleGroupExpansion(n.id)})(t,n)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:t.id&&g.unref(r).isGroupExpanded(t.id)?g.unref(f.faChevronDown):g.unref(f.faChevronRight),class:"group-icon"},null,8,["icon"])],8,G)):g.createCommentVNode("",!0),g.createElementVNode("span",L,[(null==(i=t.children)?void 0:i.length)?g.renderSlot(n.$slots,`label-column-${e.field.toLowerCase()}-group`,{key:0,row:t,value:Cn(t,e,o)},(()=>[g.renderSlot(n.$slots,`label-column-${e.field.toLowerCase()}`,{row:t,value:Cn(t,e,o)},(()=>[g.createTextVNode(g.toDisplayString(Cn(t,e,o)),1)]))])):g.renderSlot(n.$slots,`label-column-${e.field.toLowerCase()}`,{key:1,row:t,value:Cn(t,e,o)},(()=>[g.createTextVNode(g.toDisplayString(Cn(t,e,o)),1)]))])],4)],4)],4)):g.createCommentVNode("",!0)],64)})),128))])],46,P)})),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([]),r=new b;return g.watch((()=>{var e;return null==(e=n.holidayHighlight.value)?void 0:e.toUpperCase()}),(n=>{n?(n=>{r.init(n);const a=e.value.toDate(),i=t.value.toDate(),s=r.getHolidays(a),l=r.getHolidays(i),d=s.map((n=>({date:new Date(n.date),name:n.name,type:n.type}))),c=l.map((n=>({date:new Date(n.date),name:n.name,type:n.type})));o.value=[...d,...c]})(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:r,locale:a,timeaxisEvents:i,baseUnitWidth:s,defaultZoom:l}=n,d=g.ref(o.value),c=g.ref(l.value),u=g.ref([]),p={lower:new Map,upper:new Map,events:new Map},f={hour:"HH",date:"DD.MMM",day:"DD.MMM",week:"WW",month:"MMMM YYYY",year:"YYYY"},h=n=>"isoWeek"===n?f.week:f[n]||f.day,m=["hour","day","week","month"],v=g.computed((()=>s.value*c.value)),w=g.computed((()=>({hour:"day",day:"month",date:"month",week:"month",month:"year"}[d.value]||"month"))),y=(n,e,t,o)=>`${n.valueOf()}-${e.valueOf()}-${t}-${o}`,x=(n,e)=>{const t=n.get(e);return t?Date.now()-t.timestamp>W?(n.delete(e),null):t.units:null},k=(n,e,t)=>{n.set(e,{timestamp:Date.now(),units:t})},C=n=>({hour:"hour",day:"day",date:"day",week:"week",month:"month",year:"year",isoWeek:"week"}[n]),S=(n,e,o)=>{const a=n.toDate(),i=r.value?t(a):null,s=n.format(e);return{label:X(s),value:String(n),date:a,width:o,isHoliday:(null==i?void 0:i.isHoliday)||!1,holidayName:null==i?void 0:i.holidayName,holidayType:null==i?void 0:i.holidayType}},M=()=>{var t;if(!(null==(t=i.value)?void 0:t.length))return void(u.value=[]);const{chartStartDayjs:o,chartEndDayjs:r}=Y(n),a=r.value.diff(o.value,"minutes"),s=(l=r.value,d=c.value,`${o.value.valueOf()}-${l.valueOf()}-${d}`);var l,d;const g=(n=>{const e=p.events.get(n);return e?Date.now()-e.timestamp>W?(p.events.delete(n),null):e.events:null})(s);if(g)return void(u.value=g);const f=i.value.map((n=>{const t=e(n.startDate),i=e(n.endDate);if(i.isBefore(o.value)||t.isAfter(r.value))return{...n,width:"0px",xPosition:0};const s=t.isBefore(o.value)?o.value:t,l=i.isAfter(r.value)?r.value:i,d=s.diff(o.value,"minutes"),c=l.diff(o.value,"minutes"),u=d/a*U.value,g=Math.max(c/a*U.value-u,2);return{...n,width:`${g}px`,xPosition:u}}));var h;u.value=f,h=f,p.events.set(s,{timestamp:Date.now(),events:h})};g.watch((()=>o.value),(()=>{d.value=o.value,c.value=l.value})),g.watch([()=>r.value,()=>a.value],(()=>{e.locale(a.value),p.lower.clear(),p.upper.clear()})),g.watch(U,(()=>{M()})),g.watch([()=>i.value,()=>n.chartStart.value,()=>n.chartEnd.value],(()=>{M()}),{deep:!0});const $=g.computed((()=>{var e;const{chartStartDayjs:t,chartEndDayjs:o}=Y(n),r=y(t.value,o.value,d.value,c.value);let a=x(p.lower,r);const s=new Map;if(!a){a=[];let n=t.value.clone();for(;n.isBefore(o.value);){const e=S(n,h(d.value),`${v.value}px`);a.push(e),s.set(n.valueOf(),e),n=n.add(1,C(d.value))}k(p.lower,r,a)}const l=y(t.value,o.value,w.value,c.value);let g=x(p.upper,l);if(!g){g=[];let n=t.value.startOf(C(w.value));for(;n.isBefore(o.value);){const e=n.add(1,C(w.value)),r=n.isBefore(t.value)?t.value:n,a=e.isAfter(o.value)?o.value:e;let i=0;i="day"===d.value?Math.ceil(a.diff(r,"day",!0)):"month"===d.value?Math.ceil(a.diff(r,"month",!0)):"week"===d.value?Math.ceil(a.diff(r,"week",!0)):Math.ceil(a.diff(r,"hour",!0));const s=i*v.value;s>0&&g.push(S(n,h(w.value),`${s}px`)),n=e}k(p.upper,l,g)}(null==(e=i.value)?void 0:e.length)&&0===u.value.length&&M();const f=D();return E(),{result:{upperUnits:g,lowerUnits:a,events:u.value},globalMinuteStep:f}})),D=()=>{if(!n.enableMinutes.value||"hour"!==d.value)return[];const e=Math.floor(v.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")))},E=()=>{const n=Date.now();for(const[e,t]of p.lower.entries())n-t.timestamp>W&&p.lower.delete(e);for(const[e,t]of p.upper.entries())n-t.timestamp>W&&p.upper.delete(e);for(const[e,t]of p.events.entries())n-t.timestamp>W&&p.events.delete(e)};return g.watch([()=>n.chartStart.value,()=>n.chartEnd.value,d,c,()=>n.timeaxisEvents.value],(()=>{p.lower.clear(),p.upper.clear(),p.events.clear(),M()})),M(),{timeaxisUnits:$,internalPrecision:d,zoomLevel:c,adjustZoomAndPrecision:n=>{if(n)if(10===c.value){const n=(n=>{const e=m.indexOf(n),t=m.indexOf(o.value);return e>0&&e>t?m[e-1]:n})(d.value);n!==d.value&&(d.value=n,c.value=1)}else c.value+=1;else if(1===c.value){const n=(n=>{const e=m.indexOf(n);return e<m.length-1?m[e+1]:n})(d.value);n!==d.value&&(d.value=n,c.value=10)}else c.value-=1}}}const V={class:"g-gantt-event-tooltip-content"},Z={class:"g-gantt-event-tooltip-title"},K={class:"g-gantt-event-tooltip-time"},J={key:0,class:"g-gantt-event-tooltip-description"},Q={class:"g-gantt-holiday-tooltip-content"},nn=g.defineComponent({t:"GGanttTooltip",props:{modelValue:{type:Boolean},type:{},bar:{},event:{},unit:{},targetElement:{}},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,event:r,unit:a,targetElement:i,type:s}=g.toRefs(t),{precision:l,font:d,barStart:c,barEnd:u,rowHeight:p,milestones:f,colors:h,dateFormat:m}=B(),b=g.ref("0px"),v=g.ref("0px"),{toDayjs:w,format:y}=Y();g.watch([()=>t.bar,()=>t.event,()=>t.unit,()=>t.targetElement,()=>t.type],(async()=>{var n;if(await g.nextTick(),"bar"===s.value&&o.value){const n=o.value.ganttBarConfig.id||"";if(!n)return;const e=document.getElementById(n),{top:t,left:r}=(null==e?void 0:e.getBoundingClientRect())||{top:0,left:0},a=Math.max(r,10);b.value=t+p.value-10+"px",v.value=`${a}px`}else if("event"===s.value&&r.value&&i.value){const n=i.value.getBoundingClientRect();b.value=n.top-95+"px",v.value=`${n.left+n.width/2}px`}else if("holiday"===s.value&&(null==(n=a.value)?void 0:n.holidayName)&&i.value){const n=i.value.getBoundingClientRect();b.value=n.top-30+"px",v.value=`${n.left+n.width/2}px`}}),{deep:!0,immediate:!0});const x=g.computed((()=>{var n,e;return(null==(e=null==(n=o.value)?void 0:n.ganttBarConfig.style)?void 0:e.background)||"cadetblue"})),k=g.computed((()=>{var n;return null==(n=o.value)?void 0:n[c.value]})),C=g.computed((()=>{var n;return null==(n=o.value)?void 0:n[u.value]})),S=g.computed((()=>{if(!o.value)return"";const n=f.value.find((n=>{var e;return n.id===(null==(e=o.value)?void 0:e.ganttBarConfig.milestoneId)})),t=e[l.value];return`${w(k.value).format(t)} – ${w(C.value).format(t)}${n?` - (${n.name})`:""}`})),M=n=>y(n,m.value),$=g.computed((()=>{switch(s.value){case"bar":default:return"g-gantt-tooltip";case"event":return"g-gantt-event-tooltip";case"holiday":return"g-gantt-holiday-tooltip"}})),D=g.computed((()=>{const n={top:b.value,left:v.value,fontFamily:d.value};switch(s.value){case"bar":case"holiday":default:return n;case"event":return{...n,background:h.value.primary,color:h.value.text}}}));return(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&&"bar"===g.unref(s)&&g.unref(o)?(g.openBlock(),g.createElementBlock("div",{key:0,class:g.normalizeClass($.value),style:g.normalizeStyle(D.value)},[g.createElementVNode("div",{class:"g-gantt-tooltip-color-dot",style:g.normalizeStyle({background:x.value})},null,4),g.renderSlot(n.$slots,"default",{bar:g.unref(o),barStart:k.value,barEnd:C.value},(()=>[g.createTextVNode(g.toDisplayString(S.value),1)]))],6)):n.modelValue&&"event"===g.unref(s)&&g.unref(r)?(g.openBlock(),g.createElementBlock("div",{key:1,class:g.normalizeClass($.value),style:g.normalizeStyle(D.value)},[g.renderSlot(n.$slots,"event-tooltip",{event:g.unref(r),formatDate:M},(()=>[g.createElementVNode("div",V,[g.createElementVNode("div",Z,g.toDisplayString(g.unref(r).label),1),g.createElementVNode("div",K,g.toDisplayString(M(g.unref(r).startDate))+" - "+g.toDisplayString(M(g.unref(r).endDate)),1),g.unref(r).description?(g.openBlock(),g.createElementBlock("div",J,g.toDisplayString(g.unref(r).description),1)):g.createCommentVNode("",!0)])]))],6)):n.modelValue&&"holiday"===g.unref(s)&&(null==(e=g.unref(a))?void 0:e.holidayName)?(g.openBlock(),g.createElementBlock("div",{key:2,class:g.normalizeClass($.value),style:g.normalizeStyle(D.value)},[g.renderSlot(n.$slots,"holiday-tooltip",{unit:g.unref(a)},(()=>[g.createElementVNode("div",Q,g.toDisplayString(g.unref(a).holidayName),1)]))],6)):g.createCommentVNode("",!0)]})),o:3})]))}}),en={class:"g-timeunits-container"},tn=["onMouseenter"],on={class:"g-timeunits-container"},rn=["onMouseenter"],an={class:"g-timeunit-min"},sn={class:"label-unit"},ln={key:0,class:"g-timeunit-step"},dn={class:"label-unit"},cn=["onMouseenter"],un={class:"g-timeaxis-event-label"},gn=g.defineComponent({t:"GGanttTimeaxis",props:{timeaxisUnits:{},internalPrecision:{}},emits:["dragStart","drag","dragEnd"],setup(n,{expose:t,emit:o}){const r=n,{timeaxisUnits:a,internalPrecision:i}=g.toRefs(r),s=o,l=g.ref(null),d=g.ref(),c=g.ref(!1),u=g.ref(null),p=g.ref(),f=g.ref(!1),h=g.ref(null),{precision:m,colors:b,holidayHighlight:v,dayOptionLabel:w,enableMinutes:y,showEventsAxis:x,eventsAxisHeight:k}=B(),{toDayjs:C}=Y(),S=n=>{s("dragStart",n)},M=g.computed((()=>"hour"===i.value?"upper":"day"===i.value?"lower":null)),$=(n,e)=>v.value&&M.value===e&&n.isHoliday?{background:b.value.holidayHighlight||"#ffebee"}:{},D=(n,e,t)=>{v.value&&M.value!==e&&n.isHoliday||(d.value=n,u.value=t.currentTarget,c.value=!0)},E=()=>{c.value=!1,d.value=void 0,u.value=null},T=()=>{f.value=!1,p.value=void 0,h.value=null},j=(n,e)=>{if(M.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+=`(${C(n.date).dayOfYear()})`;break;case"name":t+=X(C(n.date).format("dd")[0]);break;case"number":t+=C(n.date).date()}return t},z=g.computed((()=>k.value||25)),R=g.computed((()=>x.value&&a.value.result.events.length>0)),F=g.computed((()=>{if(!a.value.result.events.length)return[];const{chartStartDayjs:n,chartEndDayjs:t}=Y(),o=t.value.diff(n.value,"minutes");return a.value.result.events.map((r=>{const a=e(r.startDate),i=e(r.endDate),s=a.isBefore(n.value)?n.value:a,l=i.isAfter(t.value)?t.value:i,d=s.diff(n.value,"minutes"),c=l.diff(n.value,"minutes"),u=d/o*U.value,g=Math.max((c-d)/o*U.value,2);return{...r,calculatedWidth:`${g}px`,calculatedX:u}}))}));return t({timeaxisElement:l}),(n,e)=>(g.openBlock(),g.createElementBlock("div",{ref_key:"timeaxisElement",ref:l,class:"g-timeaxis",onMousedown:S,role:"tablist","aria-label":"Time Axis",style:g.normalizeStyle({borderBottom:`1px solid ${g.unref(b).gridAndBorder}`,height:R.value?`${80+z.value}px`:"80px"})},[g.createElementVNode("div",en,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(g.unref(a).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,...$(e,"upper"),color:g.unref(b).text,width:e.width}),onMouseenter:n=>D(e,"upper",n),onMouseleave:E},[g.renderSlot(n.$slots,"upper-timeunit",{label:j(e,"upper"),value:e.value,date:e.date},(()=>[g.createTextVNode(g.toDisplayString(j(e,"upper")),1)]))],44,tn)))),128))]),g.createElementVNode("div",on,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(g.unref(a).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,...$(e,"lower"),color:g.unref(b).text,flexDirection:"hour"===g.unref(m)?g.unref(y)?"column":"row-reverse":"row",alignItems:"center",width:e.width}),onMouseenter:n=>D(e,"lower",n),onMouseleave:E},[g.createElementVNode("div",an,[g.renderSlot(n.$slots,"timeunit",{label:j(e,"lower"),value:e.value,date:e.date},(()=>[g.createElementVNode("div",sn,g.toDisplayString(j(e,"lower")),1)])),"hour"===g.unref(m)?(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(m)&&g.unref(y)?(g.openBlock(),g.createElementBlock("div",ln,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(g.unref(a).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))]),R.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(F.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,f.value=!0})(e,n),onMouseleave:T},[g.createElementVNode("div",un,[g.renderSlot(n.$slots,"timeaxis-event",{event:e},(()=>[g.createTextVNode(g.toDisplayString(e.label),1)]))])],44,cn)))),128))],4)):g.createCommentVNode("",!0),g.createVNode(nn,{type:"holiday","model-value":c.value,unit:d.value,"target-element":u.value},{"holiday-tooltip":g.withCtx((e=>[g.renderSlot(n.$slots,"holiday-tooltip",g.normalizeProps(g.guardReactiveProps(e)))])),o:3},8,["model-value","unit","target-element"]),g.createVNode(nn,{type:"event","model-value":f.value,event:p.value,"target-element":h.value},{"event-tooltip":g.withCtx((e=>[g.renderSlot(n.$slots,"event-tooltip",g.normalizeProps(g.guardReactiveProps(e)))])),o:3},8,["model-value","event","target-element"])],36))}});function pn(n=B()){const{dateFormat:e}=n,{chartStartDayjs:t,chartEndDayjs:o,toDayjs:r,format:a}=Y(n),i=g.computed((()=>o.value.diff(t.value,"minutes")));return{mapTimeToPosition:n=>{const e=U.value||0,o=r(n).diff(t.value,"minutes",!0);return Math.ceil(o/i.value*e)},mapPositionToTime:n=>a(t.value.add(n/(U.value||0)*i.value,"minutes"),e.value)}}const fn=g.defineComponent({t:"GGanttCurrentTime",setup(n){const{mapTimeToPosition:t}=pn(),o=g.ref(e()),{colors:r,dateFormat:a,currentTimeLabel:i,utc:s}=B(),l=g.ref();h.useIntervalFn((()=>{const n=s.value?e().utc():e();o.value=n;const r=a.value||"YYYY-MM-DD HH:mm:ss";l.value=t(e(o.value,r).format(r))}),1e3);const d=g.computed((()=>s.value?`${i.value} (UTC)`:i.value));return(n,e)=>(g.openBlock(),g.createElementBlock("div",{class:"g-grid-current-time",style:g.normalizeStyle({left:`${l.value}px`})},[g.createElementVNode("div",{class:"g-grid-current-time-marker",style:g.normalizeStyle({border:`1px dashed ${g.unref(r).markerCurrentTime}`})},null,4),g.createElementVNode("span",{class:"g-grid-current-time-text",style:g.normalizeStyle({color:g.unref(r).markerCurrentTime})},[g.renderSlot(n.$slots,"current-time-label",{},(()=>[g.createTextVNode(g.toDisplayString(d.value),1)]))],4)],4))}}),hn={class:"gantt-connector",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:1001,overflow:"visible"}},mn=["id"],bn=["fill"],vn=["id"],wn=["stop-color"],yn=["stop-color"],xn=["stop-color"],kn=["stop-color"],Cn=["dur"],Sn=["dur"],Mn=["d","stroke","stroke-width","stroke-dasharray"],$n=["x","y"],Dn=["cx","cy"],En=["cx","cy"],Tn=(n=>{const e=n.i||n;for(const[t,o]of[["__scopeId","data-v-652d5ef8"]])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},relation:{default:"FS"},label:{default:""},labelAlwaysVisible:{type:Boolean,default:!1},labelStyle:{default:()=>({})}},setup(n){const e=n,{enableConnectionDeletion:t}=B(),o=g.ref(null),r=g.computed((()=>e.animated?`connector-animated-${e.pattern}-${e.animationSpeed}`:"")),a=g.computed((()=>`marker-${e.sourceBar.id}-${e.targetBar.id}`)),i=g.computed((()=>"bidirectional"===e.marker||"forward"===e.marker)),s=g.computed((()=>"bidirectional"===e.marker)),l=g.computed((()=>4)),d=g.computed((()=>e.label&&(e.labelAlwaysVisible||e.isSelected))),c=g.computed((()=>({fill:e.color,fontWeight:"bold",...e.labelStyle}))),u=g.computed((()=>{const{sourceBar:n,targetBar:t,relation:o}=e;switch(o){case"FS":default:return{sourceX:n.x+n.width,sourceY:n.y+n.height/2,targetX:t.x,targetY:t.y+t.height/2};case"SS":return{sourceX:n.x,sourceY:n.y+n.height/2,targetX:t.x,targetY:t.y+t.height/2};case"FF":return{sourceX:n.x+n.width,sourceY:n.y+n.height/2,targetX:t.x+t.width,targetY:t.y+t.height/2};case"SF":return{sourceX:n.x,sourceY:n.y+n.height/2,targetX:t.x+t.width,targetY:t.y+t.height/2}}})),p=g.computed((()=>{const{sourceX:n,sourceY:t,targetX:o,targetY:r}=u.value,{relation:a,type:d}=e,c=r-t,g="FF"===a||"SF"===a?20:0,p=o-n,f=Math.abs(p)<20*("FS"===a?1:2),h=f?Math.max(20,Math.abs(p)/2):20,m=0===c&&f?20:0,b=s.value?l.value:0,v=i.value?l.value:0;switch(d){case"straight":if(f){const e=(t+r)/2+m*(t>r?-1:1);return`M ${n+b},${t} \n Q ${n+h},${e} ${(n+o)/2},${e} \n Q ${o-h},${e} ${o-v},${r}`}return`M ${n+b},${t} L ${o-v},${r}`;case"squared":return"FS"===a?`M ${n+b},${t}\n h ${h/2}\n v ${c}\n h ${p-h/2-v}`:"SS"===a?`M ${n+b},${t}\n h ${-h/2}\n v ${c}\n h ${p+h/2-v}`:"FF"===a?`M ${n+b},${t}\n h ${h/2}\n v ${c/2}\n h ${p+h/2}\n v ${c/2}\n h ${-h/2-v}`:"SF"===a?`M ${n+b},${t}\n h ${-h/2}\n v ${c/2}\n h ${p+1.5*h}\n v ${c/2}\n h ${-h/2-v}`:`M ${n+b},${t}\n h ${h}\n v ${c}\n h ${p-h-v}`;default:let e=Math.max(Math.abs(p)/3,1.5*h);if(f&&(e=Math.max(e,2*h)),"FF"===a||"SF"===a){const e=o+g;return`M ${n+(s.value?b:0)},${t}\n C ${e},${t}\n ${e},${r}\n ${o+(i.value?v:0)},${r}`}{let l,d;switch(a){case"FS":default:l=n+e,d=o-e;break;case"SS":l=n-e,d=o-e}return`M ${n+(s.value?b:0)},${t}\n C ${l},${t}\n ${d},${r}\n ${o-(i.value?v:0)},${r}`}}})),f=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""}})),h=g.computed((()=>e.isSelected&&t.value?1.5*e.strokeWidth:e.strokeWidth)),m=g.computed((()=>{const{sourceX:n,sourceY:e,targetX:t,targetY:o}=u.value;return{source:{x:n,y:e},target:{x:t,y:o}}}));return(n,e)=>(g.openBlock(),g.createElementBlock("svg",hn,[g.createElementVNode("defs",null,[g.createElementVNode("marker",{id:a.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,bn)],8,mn),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,wn),g.createElementVNode("stop",{offset:"45%","stop-color":n.color,"stop-opacity":"1"},null,8,yn),g.createElementVNode("stop",{offset:"55%","stop-color":n.color,"stop-opacity":"1"},null,8,xn),g.createElementVNode("stop",{offset:"100%","stop-color":n.color,"stop-opacity":"0.3"},null,8,kn),g.createElementVNode("animate",{attributeName:"x1",from:"-100%",to:"100%",dur:"slow"===n.animationSpeed?"4s":"fast"===n.animationSpeed?"1s":"2s",repeatCount:"indefinite"},null,8,Cn),g.createElementVNode("animate",{attributeName:"x2",from:"0%",to:"200%",dur:"slow"===n.animationSpeed?"4s":"fast"===n.animationSpeed?"1s":"2s",repeatCount:"indefinite"},null,8,Sn)],8,vn)):g.createCommentVNode("",!0)]),g.createElementVNode("path",{ref_key:"pathRef",ref:o,d:p.value,fill:"none",stroke:n.animated&&"solid"===n.pattern?`url(#gradient-${n.sourceBar.id}-${n.targetBar.id})`:n.color,"stroke-width":h.value,"stroke-dasharray":f.value,class:g.normalizeClass(["connector-path",r.value,{selected:n.isSelected&&g.unref(t)},`connector-relation-${n.relation||"FS"}`]),style:g.normalizeStyle({markerStart:s.value?`url(#${a.value})`:"none",markerEnd:i.value?`url(#${a.value})`:"none",cursor:g.unref(t)?"pointer":"inherit",pointerEvents:g.unref(t)?"all":"none"})},null,14,Mn),d.value?(g.openBlock(),g.createElementBlock("text",{key:0,x:(m.value.source.x+m.value.target.x)/2-50,y:(m.value.source.y+m.value.target.y)/2-20,class:"connection-label-container","text-anchor":"middle",style:g.normalizeStyle({pointerEvents:"none",...c.value})},g.toDisplayString(n.label),13,$n)):g.createCommentVNode("",!0),n.isSelected&&g.unref(t)?(g.openBlock(),g.createElementBlock(g.Fragment,{key:1},[g.createElementVNode("circle",{cx:m.value.source.x,cy:m.value.source.y,r:"6",fill:"white",class:"connection-endpoint"},null,8,Dn),g.createElementVNode("circle",{cx:m.value.target.x,cy:m.value.target.y,r:"6",fill:"white",class:"connection-endpoint"},null,8,En)],64)):g.createCommentVNode("",!0)]))}})),jn={class:"g-gantt-milestone-tooltip-title"},Bn={class:"g-gantt-milestone-tooltip-date"},zn={class:"g-gantt-milestone-tooltip-description"},Yn=g.defineComponent({t:"GGanttMilestone",props:{milestone:{}},setup(n){const t=n,{mapTimeToPosition:o}=pn(),{colors:r}=B(),a=g.ref(!1),i=g.ref({x:0,y:0}),s=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")})),l=g.computed((()=>o(s.value))),d=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:r.value.primary,color:r.value.text,border:"none"},marker:{borderLeft:`2px solid ${r.value.markerCurrentTime}`}})),c=n=>{const e=n.target.getBoundingClientRect();i.value={x:e.left,y:e.top+10},a.value=!0},u=()=>{a.value=!1};return(n,e)=>(g.openBlock(),g.createElementBlock("div",{class:"g-gantt-milestone",style:g.normalizeStyle({left:`${l.value}px`}),onMouseenter:c,onMouseleave:u},[g.renderSlot(n.$slots,`milestone-${n.milestone.id}`,{milestone:n.milestone,styleConfig:d.value,position:l.value},(()=>[g.renderSlot(n.$slots,"milestone",{milestone:n.milestone,styleConfig:d.value,position:l.value},(()=>[g.createElementVNode("div",{class:"g-gantt-milestone-label",style:g.normalizeStyle(d.value.label)},g.toDisplayString(n.milestone.name),5)]))])),g.createElementVNode("div",{class:"g-gantt-milestone-marker",style:g.normalizeStyle(d.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((()=>[a.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(r).primary,color:g.unref(r).text})},[g.createElementVNode("div",jn,g.toDisplayString(n.milestone.name),1),g.createElementVNode("div",Bn,g.toDisplayString(n.milestone.date),1),g.createElementVNode("div",zn,g.toDisplayString(n.milestone.description),1)],4)):g.createCommentVNode("",!0)])),o:1})]))],36))}});function Rn(){const n=g.inject($);if(!n)throw Error("Failed to inject emitBarEvent!");return n}function Fn(){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 Hn(n,t,o){const{barStart:r,barEnd:a,dateFormat:i,pushOnOverlap:s,pushOnConnect:l}=n,d=new Set,c=n=>{const e=o.format(n,i.value);return"string"==typeof e?e:e.toISOString()},u=(t,r)=>{if(!t.ganttBarConfig.milestoneId||!n.milestones.value)return!0;const a=n.milestones.value.find((n=>n.id===t.ganttBarConfig.milestoneId));if(!a)return!0;const i=o.toDayjs(r),s=e(a.date);let l=s;return s.hour()||s.minute()||(l=o.toDayjs(s.hour(23).minute(59).format("YYYY-MM-DD HH:mm"))),i.isSameOrBefore(l)},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(d.has(n.ganttBarConfig.id))return{success:!0,affectedBars:new Set};if(!u(n,t))return{success:!1,affectedBars:new Set};d.add(n.ganttBarConfig.id);const s=new Set,l=n[r.value],h=n[a.value];if(n[r.value]=e,n[a.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(l),"minutes");for(const e of t){const t=c(o.toDayjs(e[r.value]).add(i,"minutes")),u=c(o.toDayjs(e[a.value]).add(i,"minutes")),g=p(e,t,u,!1);if(!g.success)return n[r.value]=l,n[a.value]=h,d.delete(n.ganttBarConfig.id),{success:!1,affectedBars:new Set};g.affectedBars.forEach((n=>s.add(n)))}}return f(n,s).success?(i&&d.clear(),s.add(n),{success:!0,affectedBars:s}):(n[r.value]=l,n[a.value]=h,d.delete(n.ganttBarConfig.id),{success:!1,affectedBars:new Set})},f=(n,e)=>{const t=s.value?m(n):[],i=l.value?b(n):[],d=[...new Set([...t,...i])];for(const s of d){if(s.ganttBarConfig.immobile)return{success:!1};const{shouldMove:t,minutesToMove:i,direction:l}=h(n,s);if(!t)continue;const d=c("left"===l?o.toDayjs(s[r.value]).subtract(i,"minutes"):o.toDayjs(s[r.value]).add(i,"minutes")),g=c("left"===l?o.toDayjs(s[a.value]).subtract(i,"minutes"):o.toDayjs(s[a.value]).add(i,"minutes"));if(!u(s,g))return{success:!1};const f=p(s,d,g,!1);if(!f.success)return{success:!1};e.add(s),f.affectedBars.forEach((n=>e.add(n)))}return{success:!0}},h=(n,e)=>{const t=o.toDayjs(n[r.value]),i=o.toDayjs(n[a.value]),s=o.toDayjs(e[r.value]),l=o.toDayjs(e[a.value]);if(e.ganttBarConfig.immobile&&(t.isBefore(l)&&i.isAfter(s)||i.isAfter(s)&&t.isBefore(l)))return{shouldMove:!1,minutesToMove:0,direction:"right"};if(i.isSameOrBefore(s)||t.isSameOrAfter(l))return{shouldMove:!1,minutesToMove:0,direction:"right"};const d=t.isBefore(s)?"right":"left";let c=0;return c="right"===d?i.diff(s,"minutes",!0):l.diff(t,"minutes",!0),{shouldMove:!0,minutesToMove:Math.abs(c),direction:d}},m=n=>{const e=(n,t)=>{var o;for(const r of t){if(r.bars.includes(n))return r;if(null==(o=r.children)?void 0:o.length){const t=e(n,r.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[r.value]),i=o.toDayjs(n[a.value]),s=o.toDayjs(e[r.value]),l=o.toDayjs(e[a.value]);return t.isBefore(l)&&i.isAfter(s)||s.isBefore(i)&&l.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:m,findConnectedBars:b,getAllBars:g}}const In=()=>{const n=B(),e=Rn(),t=Y(n),{barStart:o,barEnd:r}=n,a=g.inject("useRows"),i=g.inject(j),s=Hn(n,a,t),l={movedBars:new Map,isDragging:!1},d=(n,t)=>{const o=n.ganttBarConfig.bundle;if(!o)return;const r=(n=>{const e=[];return null!=n&&s.getAllBars().forEach((t=>{t.ganttBarConfig.bundle===n&&e.push(t)})),e})(o);r.forEach((e=>{c(e,e===n).initiateDrag(t),f(e)})),e({...t,type:"dragstart"},n)},c=(e,t=!0)=>({initiateDrag:o=>{const{initDrag:r}=function(n,e=()=>null,t=()=>null,o,r,a){const{findBarElement:i}=Fn(),{barStart:s,barEnd:l}=o,d=g.ref(!1);let c,u=0,p=0;const{mapPositionToTime:f}=pn(o),{toDayjs:h}=Y(o),m=()=>{const e=i(a,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:a}=m();if(!o||!a)return;const i=o.getBoundingClientRect().width,d=Math.max(0,t.clientX-u-a.left),c=d+i,g=f(d),p=f(c),h=n[s.value],b=n[l.value];if(!r.moveBar(n,g,p).success)return n[s.value]=h,n[l.value]=b,void y(t);e(t,n)},v=t=>{const{barContainer:o}=m();if(!o)return;const a=f(t.clientX-o.left);h(a).isSameOrAfter(h(n[l.value]))||r.moveBar(n,a,n[l.value]).success&&e(t,n)},w=t=>{const{barContainer:o}=m();if(!o)return;const a=f(t.clientX-o.left);h(a).isSameOrBefore(h(n[s.value]))||r.moveBar(n,n[s.value],a).success&&e(t,n)},y=e=>{d.value=!1,document.body.style.cursor="",window.removeEventListener("mousemove",c),window.removeEventListener("mouseup",y),t(e,n)};return{isDragging:d,initDrag:e=>{if(n.ganttBarConfig.immobile)return;const t=i(a,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",c=v;break;case"g-gantt-bar-handle-right":document.body.style.cursor="ew-resize",c=w;break;default:c=b}d.value=!0,window.addEventListener("mousemove",c),window.addEventListener("mouseup",y)}}}(e,(n=>u(n,e)),t?p:()=>null,n,s,i);r(o)}}),u=(n,t)=>{e({...n,type:"drag"},t);const a=s.moveBar(t,t[o.value],t[r.value]);a.success?a.affectedBars.forEach((n=>{l.movedBars.has(n)||f(n)})):h()},p=(n,t)=>{e({...n,type:"dragend"},t,void 0,new Map(l.movedBars)),l.movedBars.clear(),l.isDragging=!1},f=n=>{l.movedBars.has(n)||l.movedBars.set(n,{oldStart:n[o.value],oldEnd:n[r.value]})},h=()=>{l.movedBars.forEach((({oldStart:n,oldEnd:e},t)=>{t[o.value]=n,t[r.value]=e}))};return{initDragOfBar:(n,t)=>{n.ganttBarConfig.bundle?d(n,t):(c(n).initiateDrag(t),f(n),e({...t,type:"dragstart"},n))},initDragOfBundle:d,snapBackMovedBars:h,handleDrag:u,getConnectedBars:s.findConnectedBars}};const _n=["id","aria-label","aria-grabbed","aria-describedby"],An={key:0,class:"progress-text"},Pn=["width","height"],On=["d","fill"],Gn={key:3,class:"g-gantt-bar-label"},Ln={key:0},qn={key:0,class:"g-gantt-bar-label-edit"},Un={key:1},Wn=["innerHTML"],Xn=g.defineComponent({t:"GGanttBar",props:{bar:{}},setup(n){const e=n,t=g.inject(j),o=g.inject("connectionCreation"),r=Rn(),a=B(),{rowHeight:i}=a,{bar:s}=g.toRefs(e),{mapTimeToPosition:l,mapPositionToTime:d}=pn(),{initDragOfBar:c,initDragOfBundle:u}=In(),{setDragLimitsOfGanttBar:p}=function(){const{pushOnOverlap:n,pushOnConnect:e}=B(),{getConnectedBars:t}=In(),o=g.inject("useRows"),r=g.inject(j),{findBarElement:a}=Fn(),i=n=>{const e=[];return null!=n&&o.rows.value.forEach((t=>{t.bars.forEach((t=>{t.ganttBarConfig.bundle===n&&e.push(t)}))})),e},s=(n,e=0,t)=>{const o=n.ganttBarConfig.bundle?[{bar:n,gapDistance:e}]:[];let i=n,s=l(i,t);if("left"===t)for(;s;){const n=a(r,i.ganttBarConfig.id),t=a(r,s.ganttBarConfig.id);if(e+=n.offsetLeft-(t.offsetLeft+t.offsetWidth),s.ganttBarConfig.immobile)return{gapDistanceSoFar:e,bundleBarsAndGapDist:o};s.ganttBarConfig.bundle&&o.push({bar:s,gapDistance:e}),i=s,s=l(s,"left")}if("right"===t)for(;s;){const n=a(r,i.ganttBarConfig.id);if(e+=a(r,s.ganttBarConfig.id).offsetLeft-(n.offsetLeft+n.offsetWidth),s.ganttBarConfig.immobile)return{gapDistanceSoFar:e,bundleBarsAndGapDist:o};s.ganttBarConfig.bundle&&o.push({bar:s,gapDistance:e}),i=s,s=l(s,"right")}return{gapDistanceSoFar:null,bundleBarsAndGapDist:o}},l=(i,s)=>{var l;const d=a(r,i.ganttBarConfig.id);let c=[];n.value&&(c=(null==(l=o.rows.value.find((n=>n.bars.includes(i))))?void 0:l.bars)||[]),e.value&&(c=[...c,...t(i)]);let u=[];return u=c.filter("left"===s?n=>{const e=a(r,n.ganttBarConfig.id);return e&&e.offsetLeft<d.offsetLeft&&!1!==n.ganttBarConfig.pushOnOverlap&&!1!==n.ganttBarConfig.pushOnConnect}:n=>{const e=a(r,n.ganttBarConfig.id);return e&&e.offsetLeft>d.offsetLeft&&!1!==n.ganttBarConfig.pushOnOverlap&&!1!==n.ganttBarConfig.pushOnConnect}),u.length>0?u.reduce(((n,e)=>{const t=a(r,n.ganttBarConfig.id),o=a(r,e.ganttBarConfig.id);return Math.abs(t.offsetLeft-d.offsetLeft)<Math.abs(o.offsetLeft-d.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:l}=s(t,0,e);let d=o;const c=l;if(!c)continue;for(let n=0;n<c.length;n++){const t=c[n].bar,o=c[n].gapDistance;i(t.ganttBarConfig.bundle).filter((n=>n!==t)).forEach((n=>{const t=s(n,o,e),r=t.gapDistanceSoFar;null!=r&&(!d||r<d)&&(d=r),t.bundleBarsAndGapDist.forEach((n=>{c.find((e=>e.bar===n.bar))||c.push(n)}))}))}const u=a(r,t.ganttBarConfig.id);null!=d&&"left"===e?t.ganttBarConfig.dragLimitLeft=u.offsetLeft-d:null!=d&&"right"===e&&(t.ganttBarConfig.dragLimitRight=u.offsetLeft+u.offsetWidth+d)}i(t.ganttBarConfig.bundle).forEach((n=>{n.ganttBarConfig.dragLimitLeft=t.ganttBarConfig.dragLimitLeft,n.ganttBarConfig.dragLimitRight=t.ganttBarConfig.dragLimitRight}))}}}}(),f=g.ref(!1),h=g.ref(!1),m=g.ref(""),b=g.ref(null),{barStart:v,barEnd:w,width:y,chartStart:x,chartEnd:k,chartSize:C,showLabel:S,showProgress:M,defaultProgressResizable:$,enableConnectionCreation:E,barLabelEditable:T}=a,z=g.ref(0),R=g.ref(0),F=g.computed((()=>s.value.ganttBarConfig)),H=g.computed((()=>s.value.ganttBarConfig.id.startsWith("group-"))),I=g.computed((()=>{var n;const t=e.bar.ganttBarConfig.progress??0,o=e.bar.ganttBarConfig.progressStyle||{},r=(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||vn(r),transition:"width 0.3s ease",borderRadius:"inherit",height:"100%"}})),_=g.computed((()=>({width:"12px",height:"12px",borderRadius:"50%",cursor:"pointer",background:O.value?"#00ff00":"#ff0000",transition:"all 0.2s ease",opacity:(null==o?void 0:o.connectionState.value.isCreating)||an.value||on.value||rn.value?1:0,zIndex:1e3}))),A=g.computed((()=>({..._.value,left:0,top:"50%",transform:"translate(-50%, -50%)"}))),P=g.computed((()=>({..._.value,right:0,top:"50%",transform:"translate(50%, -50%)"}))),O=g.computed((()=>!!(null==o?void 0:o.connectionState.value.isCreating)&&o.canBeConnectionTarget.value(e.bar))),G=n=>{null!=F.value.bundle?u(s.value,n):c(s.value,n),f.value=!0},L=n=>{var e;n.preventDefault(),"mousedown"===n.type&&(p(s.value),F.value.immobile||(window.addEventListener("mousemove",G,{once:!0}),window.addEventListener("mouseup",(()=>{window.removeEventListener("mousemove",G),f.value=!1}),{once:!0})));const t=null==(e=null==q?void 0:q.value)?void 0:e.getBoundingClientRect();if(!t)return;const o=d(n.clientX-t.left);r(n,s.value,o)},q=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,r=0)=>{const a=new MouseEvent(e,{bubbles:!0,cancelable:!0,clientX:n.clientX,clientY:n.clientY,movementX:o,movementY:r,view:window});if(t.value.currentBar){const n=document.querySelector(`#${t.value.currentBar.ganttBarConfig.id}`);n&&Object.defineProperty(a,"target",{value:n})}return a},r=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,r)=>{const a=e.touches[0];if(!a||!r)return;const i=e.target;if(!i)return;const s=(l=i).classList.contains("g-gantt-bar-handle-left")?"leftHandle":l.classList.contains("g-gantt-bar-handle-right")?"rightHandle":l.classList.contains("g-gantt-bar")||l.closest(".g-gantt-bar")?"bar":null;var l;if(!s)return;e.preventDefault(),t.value={isDragging:!1,startX:a.clientX,startY:a.clientY,lastX:a.clientX,lastY:a.clientY,currentBar:r,dragTarget:s};const d=o(a,"mousedown");n(r,d)},handleTouchMove:n=>{const r=n.touches[0];if(!r||!t.value.currentBar)return;const a=Math.abs(r.clientX-t.value.startX),i=Math.abs(r.clientY-t.value.startY);if(!t.value.isDragging&&(a>e||i>e)&&(t.value.isDragging=!0),t.value.isDragging){n.preventDefault();const e=r.clientX-t.value.lastX,a=r.clientY-t.value.lastY;t.value.lastX=r.clientX,t.value.lastY=r.clientY;const i=o(r,"mousemove",e,a);window.dispatchEvent(i)}},handleTouchEnd:r,handleTouchCancel:r}}(((n,e)=>{G(e),f.value=!0})),V=n=>{if(s.value.ganttBarConfig.immobile)return;let e;switch(n.type){case"touchstart":e=U(n,s.value);break;case"touchmove":e=W(n);break;case"touchend":e=X(n);break;case"touchcancel":e=N(n)}e&&L(e)},Z=g.ref(!1),K=g.ref(0),J=g.ref(0),Q=n=>{(e.bar.ganttBarConfig.progressResizable||$.value)&&(n.stopPropagation(),Z.value=!0,K.value=n.clientX,J.value=e.bar.ganttBarConfig.progress??0,window.addEventListener("mousemove",en),window.addEventListener("mouseup",tn),r({...n,type:"progress-drag-start"},e.bar))},{findBarElement:nn}=Fn(),en=n=>{if(!Z.value)return;const o=nn(t,e.bar.ganttBarConfig.id);if(!o)return;const a=o.getBoundingClientRect(),i=Math.min(Math.max(J.value+(n.clientX-K.value)/a.width*100,0),100);s.value.ganttBarConfig.progress=Math.round(i),r({...n,type:"progress-change"},e.bar)},tn=n=>{Z.value&&(Z.value=!1,window.removeEventListener("mousemove",en),window.removeEventListener("mouseup",tn),r({...n,type:"progress-drag-end"},e.bar))},on=g.ref(!1),rn=g.ref(!1),an=g.ref(!1),sn=n=>{E.value&&("start"===n?on.value=!0:rn.value=!0,null==o||o.handleConnectionPointHover(e.bar.ganttBarConfig.id,n,!0))},ln=n=>{E.value&&("start"===n?on.value=!1:rn.value=!1,null==o||o.handleConnectionPointHover(e.bar.ganttBarConfig.id,n,!1))},dn=(n,t)=>{E.value&&(n.stopPropagation(),null==o||o.startConnectionCreation(e.bar,t,n))},cn=(n,t)=>{E.value&&(n.stopPropagation(),null==o||o.completeConnection(e.bar,t,n))},un=n=>{an.value=!0,L(n)},gn=n=>{an.value=!1,L(n)},fn=n=>{T.value&&!H.value&&(n.stopPropagation(),s.value.ganttBarConfig.l=F.value.label||"",h.value=!0,m.value=F.value.label||"",setTimeout((()=>{b.value&&(b.value.focus(),b.value.select())}),0))},hn=()=>{h.value&&(s.value.ganttBarConfig.label=m.value,r({type:"label-edit",preventDefault:()=>{},stopPropagation:()=>{}},s.value),h.value=!1)},mn=n=>{"Enter"===n.key?hn():"Escape"===n.key&&(h.value=!1)},bn=()=>{hn()},vn=n=>{const e=n.startsWith("#")?wn(n):yn(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}},yn=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:r,barEnd:a,dateFormat:i,precision:s}=e,l=g.inject("useRows"),d=Hn(e,l,o),c={hour:5,day:120,week:840,month:3600},u=n=>{const e=c[s.value]||c.hour;return n?12*e:e},p=(t,s)=>{const l="forward"===t?1:-1,c=u(s),g=o.toDayjs(n[r.value]),p=o.toDayjs(n[a.value]),f=g.add(c*l,"minutes"),m=p.add(c*l,"minutes");if(f.isBefore(e.chartStart.value)||m.isAfter(e.chartEnd.value))return;const b=o.format(f,i.value),v=o.format(m,i.value);d.moveBar(n,b,v).success&&h()},f=(t,s)=>{const l=o.toDayjs(n[r.value]),c=o.toDayjs(n[a.value]);let g=u(s);5===g&&(g=10);const p=g/2;let f,m;if("expand"===t)f=o.format(l.subtract(p,"minutes"),i.value),m=o.format(c.add(p,"minutes"),i.value);else{if(c.diff(l,"minutes")<=g)return;f=o.format(l.add(p,"minutes"),i.value),m=o.format(c.subtract(p,"minutes"),i.value)}const b=o.toDayjs(f),v=o.toDayjs(m);b.isBefore(e.chartStart.value)||v.isAfter(e.chartEnd.value)||d.moveBar(n,f,m).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(),f("expand",e.shiftKey);break;case"ArrowDown":e.preventDefault(),f("shrink",e.shiftKey)}}}}(s.value,a,r);return g.onMounted((()=>{z.value=l(s.value[v.value]),R.value=l(s.value[w.value]),g.watch([()=>s.value,y,x,k,C.width],(()=>{const n=l(s.value[v.value]),e=l(s.value[w.value]);z.value=n,R.value=e}),{deep:!0,immediate:!0})})),(n,e)=>(g.openBlock(),g.createElementBlock("div",{id:F.value.id,class:g.normalizeClass(["g-gantt-bar",F.value.class||""]),style:g.normalizeStyle({...F.value.style,position:"absolute",top:.15*g.unref(i)+"px",left:`${z.value}px`,width:R.value-z.value+"px",height:.7*g.unref(i)+"px",zIndex:f.value?3:2,cursor:g.unref(s).ganttBarConfig.immobile?"":"grab"}),onMousedown:L,onClick:L,onMouseenter:un,onMouseleave:gn,onContextmenu:L,onTouchstart:V,onTouchmove:V,onTouchend:V,onTouchcancel:V,onKeydown:e[9]||(e[9]=(...n)=>g.unref(kn)&&g.unref(kn)(...n)),onDblclick:fn,role:"listitem","aria-label":`Activity ${F.value.label}`,"aria-grabbed":f.value,tabindex:"0","aria-describedby":`tooltip-${F.value.id}`},[g.unref(E)?(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=>sn("start")),onMouseleave:e[1]||(e[1]=n=>ln("start")),onMousedown:e[2]||(e[2]=n=>dn(n,"start")),onMouseup:e[3]||(e[3]=n=>cn(n,"start"))},null,36),g.createElementVNode("div",{class:"connection-point end",style:g.normalizeStyle([P.value,{position:"absolute"}]),onMouseenter:e[4]||(e[4]=n=>sn("end")),onMouseleave:e[5]||(e[5]=n=>ln("end")),onMousedown:e[6]||(e[6]=n=>dn(n,"end")),onMouseup:e[7]||(e[7]=n=>cn(n,"end"))},null,36)],64)):g.createCommentVNode("",!0),void 0!==F.value.progress?(g.openBlock(),g.createElementBlock("div",{key:1,class:"g-gantt-progress-bar",style:g.normalizeStyle(I.value)},[g.unref(M)?(g.openBlock(),g.createElementBlock("span",An,g.toDisplayString(Math.round(F.value.progress))+"%",1)):g.createCommentVNode("",!0),F.value.progressResizable||g.unref($)?(g.openBlock(),g.createElementBlock("div",{key:1,class:"g-gantt-progress-handle",style:g.normalizeStyle({right:0===g.unref(s).ganttBarConfig.progress?0:"-4px"}),onMousedown:Q},null,36)):g.createCommentVNode("",!0)],4)):g.createCommentVNode("",!0),H.value?g.renderSlot(n.$slots,"group-bar",{key:2,width:R.value-z.value,height:.7*g.unref(i),bar:g.unref(s)},(()=>[(g.openBlock(),g.createElementBlock("svg",{class:"group-bar-decoration",width:R.value-z.value,height:.7*g.unref(i)},[g.createElementVNode("path",{d:xn(R.value-z.value,.65*g.unref(i)),fill:g.unref(a).colors.value.barContainer},null,8,On)],8,Pn))])):(g.openBlock(),g.createElementBlock("div",Gn,[g.renderSlot(n.$slots,"bar-label",{bar:g.unref(s)},(()=>[!H.value&&g.unref(S)?(g.openBlock(),g.createElementBlock("div",Ln,[h.value&&g.unref(T)?(g.openBlock(),g.createElementBlock("div",qn,[g.withDirectives(g.createElementVNode("input",{ref_key:"labelInput",ref:b,"onUpdate:modelValue":e[8]||(e[8]=n=>m.value=n),onKeydown:mn,onBlur:bn,class:"g-gantt-bar-label-input"},null,544),[[g.vModelText,m.value]])])):(g.openBlock(),g.createElementBlock("div",Un,g.toDisplayString(F.value.label||""),1))])):g.createCommentVNode("",!0),F.value.html?(g.openBlock(),g.createElementBlock("div",{key:1,innerHTML:F.value.html},null,8,Wn)):g.createCommentVNode("",!0)]))])),F.value.hasHandles?(g.openBlock(),g.createElementBlock(g.Fragment,{key:4},[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,_n))}}),Nn={key:0,class:"g-gantt-row-children"},Vn=g.defineComponent({t:"GGanttRow",props:{label:{},bars:{},highlightOnHover:{type:Boolean},id:{},children:{},connections:{}},emits:["drop","range-selection"],setup(n,{emit:e}){const t=n,o=e,r=g.inject("useRows"),{rowHeight:a,colors:i,labelColumnTitle:s,rowClass:l}=B(),{highlightOnHover:d}=g.toRefs(t),c=g.ref(null),u=g.ref(!1),h=g.ref(!1),m=g.ref(0),b=g.ref(0),v=g.ref(!1),w=g.computed((()=>{var n;return Boolean(null==(n=t.children)?void 0:n.length)})),y=g.computed((()=>!(!w.value||!t.id)&&r.isGroupExpanded(t.id))),x=g.computed((()=>{const n={height:`${a.value}px`,borderBottom:`1px solid ${i.value.gridAndBorder}`,background:(null==d?void 0:d.value)&&u.value?i.value.hoverHighlight:void 0};return w.value?{...n,background:(null==d?void 0:d.value)&&u.value?i.value.hoverHighlight:void 0}:n})),k=g.computed((()=>{const n=["g-gantt-row"];return l.value&&t&&n.push(l.value(t)),w.value&&n.push("g-gantt-row-group"),n})),C=g.computed((()=>w.value&&y.value&&t.children||[])),S=g.computed((()=>v.value?{position:"absolute",left:`${Math.min(m.value,b.value)}px`,width:`${Math.abs(b.value-m.value)}px`,height:a.value-4+"px",background:i.value.rangeHighlight,opacity:.6,pointerEvents:"none",zIndex:1,margin:"auto 0",top:"1px"}:{display:"none"})),{mapPositionToTime:M}=pn(),$=n=>{n.stopPropagation(),t.id&&r.toggleGroupExpansion(t.id)},E=n=>{var e;if(w.value)return;if(n.target.closest(".g-gantt-bar"))return;const t=null==(e=c.value)?void 0:e.getBoundingClientRect();if(!t)return;const o=n.clientX-t.left;h.value=!0,m.value=o,b.value=o,v.value=!1,n.preventDefault(),document.addEventListener("mousemove",T),document.addEventListener("mouseup",j)},T=n=>{if(!h.value||!c.value)return;const e=c.value.getBoundingClientRect(),t=Math.max(0,n.clientX-e.left);b.value=t,v.value=Math.abs(b.value-m.value)>5},j=n=>{if(document.removeEventListener("mousemove",T),document.removeEventListener("mouseup",j),!h.value||!v.value)return void z();const e=M(Math.min(m.value,b.value)),r=M(Math.max(m.value,b.value));o("range-selection",{row:{id:t.id,label:t.label,bars:t.bars,children:t.children,connections:t.connections},startDate:e,endDate:r,e:n}),z()},z=()=>{h.value=!1,v.value=!1,m.value=0,b.value=0};return g.provide(D,c),(n,e)=>{const t=g.resolveComponent("g-gantt-row",!0);return g.openBlock(),g.createElementBlock(g.Fragment,null,[g.createElementVNode("div",{class:g.normalizeClass(k.value),style:g.normalizeStyle(x.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(w.value)return;const t=null==(e=c.value)?void 0:e.getBoundingClientRect();if(!t)return;const r=M(n.clientX-t.left);o("drop",{e:n,datetime:r})})(n)),onMouseover:e[5]||(e[5]=n=>u.value=!0),onMouseleave:e[6]||(e[6]=n=>u.value=!1),role:"list",onMousedown:E},[(r=n.label,!r||/^\s*$/.test(r)||g.unref(s)?g.createCommentVNode("",!0):(g.openBlock(),g.createElementBlock("div",{key:0,class:g.normalizeClass(["g-gantt-row-label",{"g-gantt-row-group-label":w.value}]),style:g.normalizeStyle({background:g.unref(i).primary,color:g.unref(i).text}),onClick:e[1]||(e[1]=n=>w.value?$(n):void 0)},[w.value?(g.openBlock(),g.createElementBlock("button",{key:0,class:"group-toggle-button",onClick:e[0]||(e[0]=n=>$(n))},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(y.value?f.faChevronDown:f.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:c,class:"g-gantt-row-bars-container"},n.$attrs),[v.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-range-selection",style:g.normalizeStyle(S.value)},null,4)):g.createCommentVNode("",!0),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(Xn,{key:e.ganttBarConfig.id,bar:e,class:g.normalizeClass({"g-gantt-group-bar":w.value})},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))]))})))]),1032,["bar","class"])))),128))])),o:3})],16)],38),w.value&&y.value?(g.openBlock(),g.createElementBlock("div",Nn,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(C.value,(o=>(g.openBlock(),g.createBlock(t,g.mergeProps({key:o.id||o.label,ref_for:!0},o,{highlightOnHover:g.unref(d),onRangeSelection:e[7]||(e[7]=e=>n.$emit("range-selection",e))}),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 r}}}),Zn={style:{"font-weight":"bold"}},Kn=g.defineComponent({t:"GGanttPointerMarker",setup(n){const e=g.inject(E),t=g.inject(T),o=g.ref([]),r=g.useTemplateRef("tooltip"),{colors:a,barStart:i,barEnd:s}=B(),{mapPositionToTime:l}=pn(),d=g.inject("useRows"),{toDayjs:c}=Y(),{elementX:u}=h.useMouseInElement(e),{isOutside:p,x:f}=h.useMouseInElement(t),{width:m,height:b}=h.useElementBounding(r),{top:v,bottom:w}=h.useElementBounding(t),y=g.computed((n=>p.value?n??0:u.value)),x=g.computed((()=>l(y.value))),k=h.computedWithControl(d.getFlattenedRows,(()=>d.getFlattenedRows().flatMap((n=>n.bars)))),C=g.computed((()=>v.value-b.value>0?{top:`${v.value}px`,transform:"translateY(-100%)",left:f.value-m.value/2+"px"}:{top:`${w.value}px`,left:f.value-m.value/2+"px"}));return h.watchThrottled(y,(()=>{const n=[],e=c(x.value);for(let t=0;t<k.value.length;t++){const o=k.value[t],r=c(o[i.value]),a=c(o[s.value]);e.isBetween(r,a)&&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:`${y.value}px`})},[g.createElementVNode("div",{class:"g-grid-pointer-marker-marker",style:g.normalizeStyle({border:`1px dashed ${g.unref(a).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(C.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(a).primary,color:g.unref(a).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 Jn(n){return n&&n.u&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Qn,ne={exports:{}},ee=(Qn||(Qn=1,ne.exports=function n(){var e,t="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:{},o=!t.document&&!!t.postMessage,r=t.IS_PAPA_WORKER||!1,a={},i=0,s={};function l(n){this.p=null,this.m=!1,this.v=!1,this.k=!1,this.C=null,this.S=0,this.M="",this.$=0,this.D=0,this.T=null,this.isFirstChunk=!0,this.j={data:[],errors:[],meta:{}},function(n){var e=w(n);e.chunkSize=parseInt(e.chunkSize),n.step||n.chunk||(e.chunkSize=null),this.p=new p(e),(this.p.streamer=this).B=e}.call(this,n),this.parseChunk=function(n,e){var o=parseInt(this.B.skipFirstNLines)||0;if(this.isFirstChunk&&0<o){let e=this.B.newline;e||(e=this.p.guessLineEndings(n,a=this.B.quoteChar||'"')),n=[...n.split(e).slice(o)].join(e)}this.isFirstChunk&&x(this.B.beforeFirstChunk)&&void 0!==(a=this.B.beforeFirstChunk(n))&&(n=a),this.isFirstChunk=!1,this.k=!1,o=this.M+n;var a=(this.M="",this.p.parse(o,this.S,!this.m));if(!this.p.paused()&&!this.p.aborted()){if(n=a.meta.cursor,this.m||(this.M=o.substring(n-this.S),this.S=n),a&&a.data&&(this.$+=a.data.length),o=this.m||this.B.preview&&this.$>=this.B.preview,r)t.postMessage({results:a,workerId:s.WORKER_ID,finished:o});else if(x(this.B.chunk)&&!e){if(this.B.chunk(a,this.p),this.p.paused()||this.p.aborted())return void(this.k=!0);this.j=a=void 0}return this.B.step||this.B.chunk||(this.j.data=this.j.data.concat(a.data),this.j.errors=this.j.errors.concat(a.errors),this.j.meta=a.meta),this.v||!o||!x(this.B.complete)||a&&a.meta.aborted||(this.B.complete(this.j,this.C),this.v=!0),o||a&&a.meta.paused||this.T(),a}this.k=!0},this.Y=function(n){x(this.B.error)?this.B.error(n):r&&this.B.error&&t.postMessage({workerId:s.WORKER_ID,error:n,finished:!1})}}function d(n){var e;(n=n||{}).chunkSize||(n.chunkSize=s.RemoteChunkSize),l.call(this,n),this.T=o?function(){this.R(),this.F()}:function(){this.R()},this.stream=function(n){this.C=n,this.T()},this.R=function(){if(this.m)this.F();else{if(e=new XMLHttpRequest,this.B.withCredentials&&(e.withCredentials=this.B.withCredentials),o||(e.onload=y(this.F,this),e.onerror=y(this.H,this)),e.open(this.B.downloadRequestBody?"POST":"GET",this.C,!o),this.B.downloadRequestHeaders){var n,t=this.B.downloadRequestHeaders;for(n in t)e.setRequestHeader(n,t[n])}this.B.chunkSize&&e.setRequestHeader("Range","bytes="+this.D+"-"+(this.D+this.B.chunkSize-1));try{e.send(this.B.downloadRequestBody)}catch(r){this.H(r.message)}o&&0===e.status&&this.H()}},this.F=function(){var n;4===e.readyState&&(e.status<200||400<=e.status?this.H():(this.D+=this.B.chunkSize||e.responseText.length,this.m=!this.B.chunkSize||this.D>=(null!==(n=(n=e).getResponseHeader("Content-Range"))?parseInt(n.substring(n.lastIndexOf("/")+1)):-1),this.parseChunk(e.responseText)))},this.H=function(n){n=e.statusText||n,this.Y(new Error(n))}}function c(n){(n=n||{}).chunkSize||(n.chunkSize=s.LocalChunkSize),l.call(this,n);var e,t,o="undefined"!=typeof FileReader;this.stream=function(n){this.C=n,t=n.slice||n.webkitSlice||n.mozSlice,o?((e=new FileReader).onload=y(this.F,this),e.onerror=y(this.H,this)):e=new FileReaderSync,this.T()},this.T=function(){this.m||this.B.preview&&!(this.$<this.B.preview)||this.R()},this.R=function(){var n=this.C,r=(this.B.chunkSize&&(r=Math.min(this.D+this.B.chunkSize,this.C.size),n=t.call(n,this.D,r)),e.readAsText(n,this.B.encoding));o||this.F({target:{result:r}})},this.F=function(n){this.D+=this.B.chunkSize,this.m=!this.B.chunkSize||this.D>=this.C.size,this.parseChunk(n.target.result)},this.H=function(){this.Y(e.error)}}function u(n){var e;l.call(this,n=n||{}),this.stream=function(n){return e=n,this.T()},this.T=function(){var n,t;if(!this.m)return e=(n=this.B.chunkSize)?(t=e.substring(0,n),e.substring(n)):(t=e,""),this.m=!e,this.parseChunk(t)}}function g(n){l.call(this,n=n||{});var e=[],t=!0,o=!1;this.pause=function(){l.prototype.pause.apply(this,arguments),this.C.pause()},this.resume=function(){l.prototype.resume.apply(this,arguments),this.C.resume()},this.stream=function(n){this.C=n,this.C.on("data",this.I),this.C.on("end",this._),this.C.on("error",this.A)},this.P=function(){o&&1===e.length&&(this.m=!0)},this.T=function(){this.P(),e.length?this.parseChunk(e.shift()):t=!0},this.I=y((function(n){try{e.push("string"==typeof n?n:n.toString(this.B.encoding)),t&&(t=!1,this.P(),this.parseChunk(e.shift()))}catch(o){this.A(o)}}),this),this.A=y((function(n){this.O(),this.Y(n)}),this),this._=y((function(){this.O(),o=!0,this.I("")}),this),this.O=y((function(){this.C.removeListener("data",this.I),this.C.removeListener("end",this._),this.C.removeListener("error",this.A)}),this)}function p(n){var e,t,o,r,a=Math.pow(2,53),i=-a,l=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,d=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,c=this,u=0,g=0,p=!1,m=!1,b=[],v={data:[],errors:[],meta:{}};function y(e){return"greedy"===n.skipEmptyLines?""===e.join("").trim():1===e.length&&0===e[0].length}function k(){if(v&&o&&(S("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+s.DefaultDelimiter+"'"),o=!1),n.skipEmptyLines&&(v.data=v.data.filter((function(n){return!y(n)}))),C()){let t=function(e,t){x(n.transformHeader)&&(e=n.transformHeader(e,t)),b.push(e)};if(v)if(Array.isArray(v.data[0])){for(var e=0;C()&&e<v.data.length;e++)v.data[e].forEach(t);v.data.splice(0,1)}else v.data.forEach(t)}function t(e,t){for(var o=n.header?{}:[],r=0;r<e.length;r++){var s=r,c=e[r];u=s=n.header?r>=b.length?"__parsed_extra":b[r]:s,p=c=n.transform?n.transform(c,s):c,void 0,f=u,n.dynamicTypingFunction&&void 0===n.dynamicTyping[f]&&(n.dynamicTyping[f]=n.dynamicTypingFunction(f)),c=!0===(n.dynamicTyping[f]||n.dynamicTyping)?"true"===p||"TRUE"===p||"false"!==p&&"FALSE"!==p&&((n=>{if(l.test(n)&&(n=parseFloat(n),i<n&&n<a))return 1})(p)?parseFloat(p):d.test(p)?new Date(p):""===p?null:p):p,"__parsed_extra"===s?(o[s]=o[s]||[],o[s].push(c)):o[s]=c}var u,p,f;return n.header&&(r>b.length?S("FieldMismatch","TooManyFields","Too many fields: expected "+b.length+" fields but parsed "+r,g+t):r<b.length&&S("FieldMismatch","TooFewFields","Too few fields: expected "+b.length+" fields but parsed "+r,g+t)),o}var r;v&&(n.header||n.dynamicTyping||n.transform)&&(r=1,!v.data.length||Array.isArray(v.data[0])?(v.data=v.data.map(t),r=v.data.length):v.data=t(v.data,0),n.header&&v.meta&&(v.meta.fields=b),g+=r)}function C(){return n.header&&0===b.length}function S(n,e,t,o){n={type:n,code:e,message:t},void 0!==o&&(n.row=o),v.errors.push(n)}x(n.step)&&(r=n.step,n.step=function(e){v=e,C()?k():(k(),0!==v.data.length&&(u+=e.data.length,n.preview&&u>n.preview?t.abort():(v.data=v.data[0],r(v,c))))}),this.parse=function(r,a,i){var l=n.quoteChar||'"';return n.newline||(n.newline=this.guessLineEndings(r,l)),o=!1,n.delimiter?x(n.delimiter)&&(n.delimiter=n.delimiter(r),v.meta.delimiter=n.delimiter):((l=((e,t,o,r,a)=>{var i,l,d,c;a=a||[",","\t","|",";",s.RECORD_SEP,s.UNIT_SEP];for(var u=0;u<a.length;u++){for(var g,p=a[u],f=0,m=0,b=0,v=(d=void 0,new h({comments:r,delimiter:p,newline:t,preview:10}).parse(e)),w=0;w<v.data.length;w++)o&&y(v.data[w])?b++:(m+=g=v.data[w].length,void 0===d?d=g:0<g&&(f+=Math.abs(g-d),d=g));0<v.data.length&&(m/=v.data.length-b),(void 0===l||f<=l)&&(void 0===c||c<m)&&1.99<m&&(l=f,i=p,c=m)}return{successful:!!(n.delimiter=i),bestDelimiter:i}})(r,n.newline,n.skipEmptyLines,n.comments,n.delimitersToGuess)).successful?n.delimiter=l.bestDelimiter:(o=!0,n.delimiter=s.DefaultDelimiter),v.meta.delimiter=n.delimiter),l=w(n),n.preview&&n.header&&l.preview++,e=r,t=new h(l),v=t.parse(e,a,i),k(),p?{meta:{paused:!0}}:v||{meta:{paused:!1}}},this.paused=function(){return p},this.pause=function(){p=!0,t.abort(),e=x(n.chunk)?"":e.substring(t.getCharIndex())},this.resume=function(){c.streamer.k?(p=!1,c.streamer.parseChunk(e,!0)):setTimeout(c.resume,3)},this.aborted=function(){return m},this.abort=function(){m=!0,t.abort(),v.meta.aborted=!0,x(n.complete)&&n.complete(v),e=""},this.guessLineEndings=function(n,e){n=n.substring(0,1048576),e=new RegExp(f(e)+"([^]*?)"+f(e),"gm");var t=(n=n.replace(e,"")).split("\r");if(n=1<(e=n.split("\n")).length&&e[0].length<t[0].length,1===t.length||n)return"\n";for(var o=0,r=0;r<t.length;r++)"\n"===t[r][0]&&o++;return o>=t.length/2?"\r\n":"\r"}}function f(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function h(n){var e=(n=n||{}).delimiter,t=n.newline,o=n.comments,r=n.step,a=n.preview,i=n.fastMode,l=null,d=!1,c=null==n.quoteChar?'"':n.quoteChar,u=c;if(void 0!==n.escapeChar&&(u=n.escapeChar),("string"!=typeof e||-1<s.BAD_DELIMITERS.indexOf(e))&&(e=","),o===e)throw new Error("Comment character same as delimiter");!0===o?o="#":("string"!=typeof o||-1<s.BAD_DELIMITERS.indexOf(o))&&(o=!1),"\n"!==t&&"\r"!==t&&"\r\n"!==t&&(t="\n");var g=0,p=!1;this.parse=function(s,h,m){if("string"!=typeof s)throw new Error("Input must be a string");var b=s.length,v=e.length,w=t.length,y=o.length,k=x(r),C=[],S=[],M=[],$=g=0;if(!s)return _();if(i||!1!==i&&-1===s.indexOf(c)){for(var D=s.split(t),E=0;E<D.length;E++){if(g+=(M=D[E]).length,E!==D.length-1)g+=t.length;else if(m)return _();if(!o||M.substring(0,y)!==o){if(k){if(C=[],R(M.split(e)),A(),p)return _()}else R(M.split(e));if(a&&a<=E)return C=C.slice(0,a),_(!0)}}return _()}for(var T=s.indexOf(e,g),j=s.indexOf(t,g),B=new RegExp(f(u)+f(c),"g"),z=s.indexOf(c,g);;)if(s[g]===c)for(z=g,g++;;){if(-1===(z=s.indexOf(c,z+1)))return m||S.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:C.length,index:g}),H();if(z===b-1)return H(s.substring(g,z).replace(B,c));if(c===u&&s[z+1]===u)z++;else if(c===u||0===z||s[z-1]!==u){-1!==T&&T<z+1&&(T=s.indexOf(e,z+1));var Y=F(-1===(j=-1!==j&&j<z+1?s.indexOf(t,z+1):j)?T:Math.min(T,j));if(s.substr(z+1+Y,v)===e){M.push(s.substring(g,z).replace(B,c)),s[g=z+1+Y+v]!==c&&(z=s.indexOf(c,g)),T=s.indexOf(e,g),j=s.indexOf(t,g);break}if(Y=F(j),s.substring(z+1+Y,z+1+Y+w)===t){if(M.push(s.substring(g,z).replace(B,c)),I(z+1+Y+w),T=s.indexOf(e,g),z=s.indexOf(c,g),k&&(A(),p))return _();if(a&&C.length>=a)return _(!0);break}S.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:C.length,index:g}),z++}}else if(o&&0===M.length&&s.substring(g,g+y)===o){if(-1===j)return _();j=s.indexOf(t,g=j+w),T=s.indexOf(e,g)}else if(-1!==T&&(T<j||-1===j))M.push(s.substring(g,T)),T=s.indexOf(e,g=T+v);else{if(-1===j)break;if(M.push(s.substring(g,j)),I(j+w),k&&(A(),p))return _();if(a&&C.length>=a)return _(!0)}return H();function R(n){C.push(n),$=g}function F(n){return-1!==n&&(n=s.substring(z+1,n))&&""===n.trim()?n.length:0}function H(n){return m||(void 0===n&&(n=s.substring(g)),M.push(n),g=b,R(M),k&&A()),_()}function I(n){g=n,R(M),M=[],j=s.indexOf(t,g)}function _(o){if(n.header&&!h&&C.length&&!d){var r=C[0],a={},i=new Set(r);let e=!1;for(let t=0;t<r.length;t++){let o=r[t];if(a[o=x(n.transformHeader)?n.transformHeader(o,t):o]){let n,s=a[o];for(;n=o+"_"+s,s++,i.has(n););i.add(n),r[t]=n,a[o]++,e=!0,(l=null===l?{}:l)[n]=o}else a[o]=1,r[t]=o;i.add(o)}d=!0}return{data:C,errors:S,meta:{delimiter:e,linebreak:t,aborted:p,truncated:!!o,cursor:$+(h||0),renamedHeaders:l}}}function A(){r(_()),C=[],S=[]}},this.abort=function(){p=!0},this.getCharIndex=function(){return g}}function m(n){var e=n.data,t=a[e.workerId],o=!1;if(e.error)t.userError(e.error,e.file);else if(e.results&&e.results.data){var r={abort:function(){o=!0,b(e.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:v,resume:v};if(x(t.userStep)){for(var i=0;i<e.results.data.length&&(t.userStep({data:e.results.data[i],errors:e.results.errors,meta:e.results.meta},r),!o);i++);delete e.results}else x(t.userChunk)&&(t.userChunk(e.results,r,e.file),delete e.results)}e.finished&&!o&&b(e.workerId,e.results)}function b(n,e){var t=a[n];x(t.userComplete)&&t.userComplete(e),t.terminate(),delete a[n]}function v(){throw new Error("Not implemented.")}function w(n){if("object"!=typeof n||null===n)return n;var e,t=Array.isArray(n)?[]:{};for(e in n)t[e]=w(n[e]);return t}function y(n,e){return function(){n.apply(e,arguments)}}function x(n){return"function"==typeof n}return s.parse=function(e,o){var r,l=(o=o||{}).dynamicTyping||!1;if(x(l)&&(o.dynamicTypingFunction=l,l={}),o.dynamicTyping=l,o.transform=!!x(o.transform)&&o.transform,!o.worker||!s.WORKERS_SUPPORTED)return l=null,"string"==typeof e?(e=65279!==(r=e).charCodeAt(0)?r:r.slice(1),l=new(o.download?d:u)(o)):!0===e.readable&&x(e.read)&&x(e.on)?l=new g(o):(t.File&&e instanceof File||e instanceof Object)&&(l=new c(o)),l.stream(e);(l=(()=>{var e,o,r;return!!s.WORKERS_SUPPORTED&&(o=t.URL||t.webkitURL||null,r=n.toString(),e=s.BLOB_URL||(s.BLOB_URL=o.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ","(",r,")();"],{type:"text/javascript"}))),(e=new t.Worker(e)).onmessage=m,e.id=i++,a[e.id]=e)})()).userStep=o.step,l.userChunk=o.chunk,l.userComplete=o.complete,l.userError=o.error,o.step=x(o.step),o.chunk=x(o.chunk),o.complete=x(o.complete),o.error=x(o.error),delete o.worker,l.postMessage({input:e,config:o,workerId:l.id})},s.unparse=function(n,e){var t=!1,o=!0,r=",",a="\r\n",i='"',l=i+i,d=!1,c=null,u=!1,g=((()=>{if("object"==typeof e){if("string"!=typeof e.delimiter||s.BAD_DELIMITERS.filter((function(n){return-1!==e.delimiter.indexOf(n)})).length||(r=e.delimiter),"boolean"!=typeof e.quotes&&"function"!=typeof e.quotes&&!Array.isArray(e.quotes)||(t=e.quotes),"boolean"!=typeof e.skipEmptyLines&&"string"!=typeof e.skipEmptyLines||(d=e.skipEmptyLines),"string"==typeof e.newline&&(a=e.newline),"string"==typeof e.quoteChar&&(i=e.quoteChar),"boolean"==typeof e.header&&(o=e.header),Array.isArray(e.columns)){if(0===e.columns.length)throw new Error("Option columns is empty");c=e.columns}void 0!==e.escapeChar&&(l=e.escapeChar+i),e.escapeFormulae instanceof RegExp?u=e.escapeFormulae:"boolean"==typeof e.escapeFormulae&&e.escapeFormulae&&(u=/^[=+\-@\t\r].*$/)}})(),new RegExp(f(i),"g"));if("string"==typeof n&&(n=JSON.parse(n)),Array.isArray(n)){if(!n.length||Array.isArray(n[0]))return p(null,n,d);if("object"==typeof n[0])return p(c||Object.keys(n[0]),n,d)}else if("object"==typeof n)return"string"==typeof n.data&&(n.data=JSON.parse(n.data)),Array.isArray(n.data)&&(n.fields||(n.fields=n.meta&&n.meta.fields||c),n.fields||(n.fields=Array.isArray(n.data[0])?n.fields:"object"==typeof n.data[0]?Object.keys(n.data[0]):[]),Array.isArray(n.data[0])||"object"==typeof n.data[0]||(n.data=[n.data])),p(n.fields||[],n.data||[],d);throw new Error("Unable to serialize unrecognized input");function p(n,e,t){var i="",s=("string"==typeof n&&(n=JSON.parse(n)),"string"==typeof e&&(e=JSON.parse(e)),Array.isArray(n)&&0<n.length),l=!Array.isArray(e[0]);if(s&&o){for(var d=0;d<n.length;d++)0<d&&(i+=r),i+=h(n[d],d);0<e.length&&(i+=a)}for(var c=0;c<e.length;c++){var u=(s?n:e[c]).length,g=!1,p=s?0===Object.keys(e[c]).length:0===e[c].length;if(t&&!s&&(g="greedy"===t?""===e[c].join("").trim():1===e[c].length&&0===e[c][0].length),"greedy"===t&&s){for(var f=[],m=0;m<u;m++)f.push(e[c][l?n[m]:m]);g=""===f.join("").trim()}if(!g){for(var b=0;b<u;b++)0<b&&!p&&(i+=r),i+=h(e[c][s&&l?n[b]:b],b);c<e.length-1&&(!t||0<u&&!p)&&(i+=a)}}return i}function h(n,e){var o,a;return null==n?"":n.constructor===Date?JSON.stringify(n).slice(1,25):(a=!1,u&&"string"==typeof n&&u.test(n)&&(n="'"+n,a=!0),o=n.toString().replace(g,l),(a=a||!0===t||"function"==typeof t&&t(n,e)||Array.isArray(t)&&t[e]||((n,e)=>{for(var t=0;t<e.length;t++)if(-1<n.indexOf(e[t]))return!0;return!1})(o,s.BAD_DELIMITERS)||-1<o.indexOf(r)||" "===o.charAt(0)||" "===o.charAt(o.length-1))?i+o+i:o)}},s.RECORD_SEP=String.fromCharCode(30),s.UNIT_SEP=String.fromCharCode(31),s.BYTE_ORDER_MARK="\ufeff",s.BAD_DELIMITERS=["\r","\n",'"',s.BYTE_ORDER_MARK],s.WORKERS_SUPPORTED=!o&&!!t.Worker,s.NODE_STREAM_INPUT=1,s.LocalChunkSize=10485760,s.RemoteChunkSize=5242880,s.DefaultDelimiter=",",s.Parser=h,s.ParserHandle=p,s.NetworkStreamer=d,s.FileStreamer=c,s.StringStreamer=u,s.ReadableStreamStreamer=g,t.jQuery&&((e=t.jQuery).fn.parse=function(n){var o=n.config||{},r=[];return this.each((function(n){if("INPUT"!==e(this).prop("tagName").toUpperCase()||"file"!==e(this).attr("type").toLowerCase()||!t.FileReader||!this.files||0===this.files.length)return!0;for(var a=0;a<this.files.length;a++)r.push({file:this.files[a],inputElem:this,instanceConfig:e.extend({},o)})})),a(),this;function a(){if(0===r.length)x(n.complete)&&n.complete();else{var t,o,a,l=r[0];if(x(n.before)){var d=n.before(l.file,l.inputElem);if("object"==typeof d){if("abort"===d.action)return t=l.file,o=l.inputElem,a=d.reason,void(x(n.error)&&n.error({name:"AbortError"},t,o,a));if("skip"===d.action)return void i();"object"==typeof d.config&&(l.instanceConfig=e.extend(l.instanceConfig,d.config))}else if("skip"===d)return void i()}var c=l.instanceConfig.complete;l.instanceConfig.complete=function(n){x(c)&&c(n,l.file,l.inputElem),i()},s.parse(l.file,l.instanceConfig)}}function i(){r.splice(0,1),a()}}),r&&(t.onmessage=function(n){n=n.data,void 0===s.WORKER_ID&&n&&(s.WORKER_ID=n.workerId),"string"==typeof n.input?t.postMessage({workerId:s.WORKER_ID,results:s.parse(n.input,n.config),finished:!0}):(t.File&&n.input instanceof File||n.input instanceof Object)&&(n=s.parse(n.input,n.config))&&t.postMessage({workerId:s.WORKER_ID,results:n,finished:!0})}),(d.prototype=Object.create(l.prototype)).constructor=d,(c.prototype=Object.create(l.prototype)).constructor=c,(u.prototype=Object.create(u.prototype)).constructor=u,(g.prototype=Object.create(l.prototype)).constructor=g,s}()),ne.exports);const te=Jn(ee);function oe(){const n=g.ref(!1),t=g.ref(null),o=g.ref(0);function r(n){if(!n)return 0;switch(n.name.toLowerCase()){case"to do":case"open":case"nuovo":return 0;case"in progress":case"in corso":return 50;case"done":case"closed":case"resolved":case"completato":return 100;default:return n.name.toLowerCase().includes("progress")?50:0}}function a(n){if(!n)return"straight";const e=n.toLowerCase();return e.includes("block")?"squared":e.includes("depend")||e.includes("relate")?"bezier":"straight"}const i=n=>{if(!n)return e().format("YYYY-MM-DD HH:mm:ss");const t=e(n);return t.isValid()?0!==t.hour()||0!==t.minute()||0!==t.second()||/\d{1,2}[:hHT]/.test(n)?t.format("YYYY-MM-DD HH:mm:ss"):`${t.format("YYYY-MM-DD")} 00:00:00`:e().format("YYYY-MM-DD HH:mm:ss")},s=n=>{let t=null,o=null;const r=n=>{n.forEach((n=>{n.bars.forEach((n=>{const r=e(n.start||n.begin||n.startDate),a=e(n.end||n.finish||n.endDate);t&&!r.isBefore(t)||(t=r),o&&!a.isAfter(o)||(o=a)})),n.children&&r(n.children)}))};if(r(n),t&&o){const n=o.diff(t,"day"),e=Math.max(1,Math.ceil(.1*n));return{chartStart:t.subtract(e,"day").toDate(),chartEnd:o.add(e,"day").toDate()}}return{}};return{importFromFile:async(l,d)=>{n.value=!0,o.value=0,t.value=null;try{let n=d.format;n||(n=(n=>{const e=n.name.toLowerCase();if(e.endsWith(".json"))return"jira";if(e.endsWith(".csv"))return"csv";throw new Error(`Could not determine format from file: ${n.name}`)})(l));const t=await(async n=>new Promise(((e,t)=>{const o=new FileReader;o.onload=n=>{var o;(null==(o=n.target)?void 0:o.result)?e(n.target.result):t(new Error("Failed to read file"))},o.onerror=()=>{t(new Error("Error reading file"))},o.readAsText(n)})))(l);o.value=20;const c=await(async(n,e)=>{try{switch(e){case"jira":return JSON.parse(n.toString());case"csv":return(n=>{const e=te.parse(n,{header:!0,skipEmptyLines:!0,dynamicTyping:!0,transformHeader:n=>n.trim().toLowerCase().replace(/\s+/g,"_")});if(e.errors&&e.errors.length>0){const n=e.errors.map((n=>n.message)).join("; ");throw new Error(`CSV parsing errors: ${n}`)}return e.data})(n.toString());default:throw new Error(`Format not supported: ${e}`)}}catch(t){const n=t instanceof Error?t.message:"Unknown error during parsing";throw new Error(`Failed to parse file: ${n}`)}})(t,n);o.value=50;const{rows:u,warnings:g,chartStart:p,chartEnd:f}=await(async(n,t,o)=>{let l;switch(t){case"jira":l=((n,t)=>{const o=[],i=n.issues||[],s=new Map,l=new Map,d=new Map;i.forEach((n=>{s.set(n.id,n);const e={id:`issue-${n.key}`,label:n.fields.summary,progress:r(n.fields.status),connections:[]};n.fields.issuetype&&(e.class=n.fields.issuetype.name.toLowerCase().replace(/\s+/g,"-")),l.set(n.key,e)})),i.forEach((n=>{n.fields.issuelinks&&Array.isArray(n.fields.issuelinks)&&n.fields.issuelinks.forEach((e=>{var t,o,r,i;if(e.outwardIssue){const r=n.key,i=e.outwardIssue.key;d.has(r)||d.set(r,[]);const s={targetId:`issue-${i}`,type:a(null==(t=e.type)?void 0:t.name)};null==(o=d.get(r))||o.push(s)}if(e.inwardIssue){const t=e.inwardIssue.key,o=n.key;d.has(t)||d.set(t,[]);const s={targetId:`issue-${o}`,type:a(null==(r=e.type)?void 0:r.name)};null==(i=d.get(t))||i.push(s)}}))}));const c=new Map;i.forEach((n=>{n.fields.subtasks&&Array.isArray(n.fields.subtasks)&&n.fields.subtasks.length>0&&n.fields.subtasks.forEach((e=>{var t;const o=i.find((n=>n.id===e.id))||e;c.has(n.id)||c.set(n.id,[]),null==(t=c.get(n.id))||t.push(o)}))})),i.forEach((n=>{var e;if(n.fields.parent&&n.fields.parent.id){const t=n.fields.parent.id;i.some((e=>{var o;return e.id===t&&(null==(o=e.fields.subtasks)?void 0:o.some((e=>e.id===n.id)))}))||(c.has(t)||c.set(t,[]),null==(e=c.get(t))||e.push(n))}}));const u=i.filter((n=>!n.fields.parent||!s.has(n.fields.parent.id))),g=n=>n.map((n=>{var a,i;const{fields:s}=n;let u=s.created,p=s.duedate||s.updated;p&&u||(o.push(`Issue "${s.summary}" has missing date information`),u=e().format("YYYY-MM-DD"),p=e().add(7,"day").format("YYYY-MM-DD"));const f=l.get(n.key)||{id:`issue-${n.key}`,label:s.summary,progress:r(s.status),connections:[]},h=d.get(n.key)||[];f.connections=h;const m={[(null==(a=t.mapFields)?void 0:a.startDate)||"start"]:u,[(null==(i=t.mapFields)?void 0:i.endDate)||"end"]:p,ganttBarConfig:f},b={id:n.id,label:s.summary,bars:[m]},v=c.get(n.id)||[];return v.length>0&&(b.children=g(v)),b}));return{rows:g(u),warnings:o}})(n,o);break;case"csv":l=((n,t)=>{const o=[],r={id:["id","taskid","task_id","key"],name:["name","task","taskname","task_name","summary","title"],startDate:["start","startdate","start_date","begins","begin_date"],endDate:["end","enddate","end_date","finish","finishdate","finish_date","due","duedate","due_date"],progress:["progress","percent","completion","complete","percent_complete"],parentId:["parent","parentid","parent_id","parent_task"],dependencies:["dependencies","depends","predecessors","links"],milestone:["milestone","is_milestone","ismilestone"],...t.mapFields},a=(n,e)=>{const t=Object.keys(n);for(const o of e){const n=t.find((n=>n.toLowerCase()===o.toLowerCase()));if(void 0!==n)return n}},s=new Map;n.forEach((n=>{const e=a(n,r.id),t=e?n[e]:void 0;t?s.set(t,{...n,children:[],barConfig:{id:`task-${t}`,connections:[]}}):o.push(`Row is missing an ID field: ${JSON.stringify(n)}`)})),n.forEach((n=>{const e=a(n,r.id),t=e?n[e]:void 0;if(!t)return;const i=a(n,r.parentId),l=i?n[i]:void 0;if(l&&s.has(l)){const n=s.get(l);n&&n.children.push(t)}const d=a(n,r.dependencies);d&&n[d]&&String(n[d]).split(/[,;]\s*/).forEach((n=>{const e=Number(n),r=String(n),a=s.has(e)||s.has(r),i=s.get(e)||s.get(r);a&&i?i.barConfig&&(i.barConfig.connections=i.barConfig.connections||[],i.barConfig.connections.push({targetId:`task-${t}`,type:"straight"})):o.push(`Task ${t} refers to a dependency ${n} that doesn't exist`)}))}));const l=Array.from(s.keys()).filter((n=>{const e=s.get(n);if(!e)return!1;const t=a(e,r.parentId),o=t?e[t]:void 0;return!o||!s.has(o)})),d=n=>n.map((n=>{var l,c;const u=s.get(n);if(!u)return o.push(`Referenced ID ${n} not found in data`),{id:String(n),label:`Unknown Task (${n})`,bars:[]};const g=a(u,r.name),p=g?String(u[g]||""):`Task ${n}`;let f=a(u,r.startDate);!f&&"start_date"in u&&(f="start_date");let h=f?u[f]:void 0,m=a(u,r.endDate);!m&&"end_date"in u&&(m="end_date");let b=m?u[m]:void 0;const v=a(u,r.progress);let w=v?u[v]:void 0;void 0!==w&&("string"==typeof w&&(w=parseFloat(w.replace("%",""))),w=Math.max(0,Math.min(100,Number(w))),isNaN(w)&&(w=0));const y=a(u,r.milestone),x=!!y&&(!0===u[y]||"true"===u[y]||1===u[y]);let k=h?i(String(h)):e().format("YYYY-MM-DD HH:mm:ss"),C=b?i(String(b)):e().add(1,"day").format("YYYY-MM-DD HH:mm:ss");x&&(C=k);const S={...u.barConfig,id:`task-${n}`,label:p,progress:w,immobile:!1};x&&(S.class="milestone");const M={id:n,label:p,bars:[{[(null==(l=t.mapFields)?void 0:l.startDate)||"start"]:k,[(null==(c=t.mapFields)?void 0:c.endDate)||"end"]:C,ganttBarConfig:S}]};return u.children.length>0&&(M.children=d(u.children)),M}));return{rows:d(l),warnings:o}})(n,o);break;default:throw new Error(`Conversion not implemented for format: ${t}`)}const{chartStart:d,chartEnd:c}=s(l.rows);return{...l,chartStart:d,chartEnd:c}})(c,n,d);return o.value=80,d.skipValidation||((n,e)=>{const t=(n,o)=>{n.id||e.push(`Row at ${o} is missing an ID`),n.label||e.push(`Row at ${o} is missing a label`),n.bars&&0!==n.bars.length?n.bars.forEach(((n,t)=>{n.ganttBarConfig.id||e.push(`Bar ${t} at ${o} is missing an ID`),n.ganttBarConfig.connections&&n.ganttBarConfig.connections.forEach(((n,r)=>{n.targetId||e.push(`Connection ${r} in bar ${t} at ${o} is missing a target ID`)}))})):e.push(`Row at ${o} has no bars`),n.children&&n.children.forEach(((n,e)=>{t(n,`${o} > child[${e}]`)}))};n.forEach(((n,e)=>{t(n,`root[${e}]`)}))})(u,g),o.value=100,d.onProgress&&d.onProgress(100),{success:!0,data:{rows:u,chartStart:p,chartEnd:f},warnings:g}}catch(c){const n=c instanceof Error?c.message:"Unknown error during import";return t.value=n,{success:!1,error:n}}finally{n.value=!1}},isImporting:n,importProgress:o,lastError:t}}const re={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"}},ae={key:0,class:"g-gantt-importer-overlay"},ie={class:"g-gantt-importer-content"},se={class:"g-gantt-importer-stepper"},le={key:0},de={key:0},ce={key:0},ue={key:0,class:"g-gantt-importer-step"},ge={class:"g-gantt-file-upload"},pe=["accept"],fe={key:1,class:"g-gantt-importer-step"},he={key:0,class:"g-gantt-selected-file"},me={class:"g-gantt-import-options"},be={class:"g-gantt-option-group"},ve=["value"],we={class:"g-gantt-option-toggle"},ye={class:"g-gantt-option-group"},xe={class:"g-gantt-option-group"},ke={class:"g-gantt-import-actions"},Ce=["disabled"],Se={key:1},Me={key:2,class:"g-gantt-importer-step"},$e={class:"g-gantt-import-result"},De={key:0,class:"g-gantt-result-success"},Ee={style:{color:"#aa8700"}},Te={key:1,class:"g-gantt-result-error"},je={class:"g-gantt-result-actions"},Be=g.defineComponent({t:"GGanttImporter",props:{modelValue:{type:Boolean},title:{},defaultFormat:{},allowedFormats:{}},emits:["update:modelValue","import","close"],setup(n,{emit:e}){const t=n,o=e,r=g.inject(S);if(!r)throw Error("GGanttImporter must be used as a child of GGanttChart!");const a=g.computed((()=>r.dateFormat.value)),i=g.computed((()=>r.font.value)),s=g.computed((()=>r.colorScheme.value)),l=g.computed((()=>r.barStart.value)),d=g.computed((()=>r.barEnd.value)),{importFromFile:c,isImporting:u,importProgress:h,lastError:m}=oe(),b=g.ref(t.modelValue||!1),v=g.ref(t.defaultFormat||"csv"),w=g.ref(null),y=g.ref(null),x=g.ref(l.value),k=g.ref(d.value),C=g.ref([]),M=g.ref(null),$=g.ref(!1),D=g.ref(1),E=g.computed((()=>i.value||"inherit")),T=g.computed((()=>"string"==typeof s.value?re[s.value]||re.default:s.value||re.default)),j=g.computed((()=>T.value.text)),B=g.computed((()=>T.value.background)),z=g.computed((()=>T.value.primary)),Y=g.computed((()=>T.value.secondary)),R=g.computed((()=>T.value.ternary)),F=g.computed((()=>T.value.rangeHighlight||"#4a9eff")),H=g.computed((()=>"#4caf50")),I=g.computed((()=>"#f44336")),_=g.computed((()=>"#ffc107")),A=g.computed((()=>{const n=[{value:"jira",label:"Jira (JSON)"},{value:"csv",label:"CSV"}];return t.allowedFormats&&t.allowedFormats.length>0?n.filter((n=>t.allowedFormats.includes(n.value))):n}));g.watch((()=>t.modelValue),(n=>{b.value=n||!1})),g.watch(b,(n=>{o("update:modelValue",n)})),g.watch(l,(n=>{n&&(x.value=n)})),g.watch(d,(n=>{n&&(k.value=n)}));const P=()=>{var n;null==(n=y.value)||n.click()},O=n=>{const e=n.target;if(e.files&&e.files.length>0){w.value=e.files[0];const n=w.value.name.toLowerCase();n.endsWith(".json")?v.value="jira":n.endsWith(".csv")&&(v.value="csv"),D.value=2}},G=async()=>{if(!w.value)return;C.value=[],M.value=null;const n={format:v.value,dateFormat:a.value,mapFields:{startDate:x.value,endDate:k.value},colorScheme:T.value,onProgress:n=>{h.value=n}},e=await c(w.value,n);e.success?(M.value=!0,e.warnings&&(C.value=e.warnings),D.value=3,o("import",e)):M.value=!1},L=()=>{w.value=null,M.value=null,C.value=[],D.value=1,y.value&&(y.value.value="")},q=()=>{b.value=!1,L(),o("close")};return(n,e)=>(g.openBlock(),g.createBlock(g.Teleport,{to:"body"},[g.createVNode(g.Transition,{name:"g-fade"},{default:g.withCtx((()=>[b.value?(g.openBlock(),g.createElementBlock("div",ae,[g.createElementVNode("div",{class:"g-gantt-importer-modal",style:g.normalizeStyle({fontFamily:E.value,color:j.value,background:B.value})},[g.createElementVNode("div",{class:"g-gantt-importer-header",style:g.normalizeStyle({background:z.value})},[g.createElementVNode("h3",null,g.toDisplayString(n.title||"Import Data"),1),g.createElementVNode("button",{class:"g-gantt-importer-close-btn",onClick:q,style:g.normalizeStyle({color:j.value})},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faXmark)},null,8,["icon"])],4)],4),g.createElementVNode("div",ie,[g.createElementVNode("div",se,[g.createElementVNode("div",{class:g.normalizeClass(["g-gantt-stepper-step",{active:1===D.value,completed:D.value>1}])},[g.createElementVNode("div",{class:"g-gantt-step-number",style:g.normalizeStyle({backgroundColor:1===D.value?F.value:D.value>1?H.value:"#e0e0e0",color:D.value>=1?"white":j.value})},[D.value<=1?(g.openBlock(),g.createElementBlock("span",le,"1")):(g.openBlock(),g.createBlock(g.unref(p.FontAwesomeIcon),{key:1,icon:g.unref(f.faCheck)},null,8,["icon"]))],4),g.createElementVNode("div",{class:"g-gantt-step-label",style:g.normalizeStyle({color:1===D.value?j.value:Y.value})}," Select File ",4)],2),g.createElementVNode("div",{class:"g-gantt-step-connector",style:g.normalizeStyle({backgroundColor:T.value.gridAndBorder})},null,4),g.createElementVNode("div",{class:g.normalizeClass(["g-gantt-stepper-step",{active:2===D.value,completed:D.value>2}])},[g.createElementVNode("div",{class:"g-gantt-step-number",style:g.normalizeStyle({backgroundColor:2===D.value?F.value:D.value>2?H.value:"#e0e0e0",color:D.value>=2?"white":j.value})},[D.value<=2?(g.openBlock(),g.createElementBlock("span",de,"2")):(g.openBlock(),g.createBlock(g.unref(p.FontAwesomeIcon),{key:1,icon:g.unref(f.faCheck)},null,8,["icon"]))],4),g.createElementVNode("div",{class:"g-gantt-step-label",style:g.normalizeStyle({color:2===D.value?j.value:Y.value})}," Configure ",4)],2),g.createElementVNode("div",{class:"g-gantt-step-connector",style:g.normalizeStyle({backgroundColor:T.value.gridAndBorder})},null,4),g.createElementVNode("div",{class:g.normalizeClass(["g-gantt-stepper-step",{active:3===D.value,completed:D.value>3}])},[g.createElementVNode("div",{class:"g-gantt-step-number",style:g.normalizeStyle({backgroundColor:3===D.value?F.value:D.value>3?H.value:"#e0e0e0",color:D.value>=3?"white":j.value})},[D.value<=3?(g.openBlock(),g.createElementBlock("span",ce,"3")):(g.openBlock(),g.createBlock(g.unref(p.FontAwesomeIcon),{key:1,icon:g.unref(f.faCheck)},null,8,["icon"]))],4),g.createElementVNode("div",{class:"g-gantt-step-label",style:g.normalizeStyle({color:3===D.value?j.value:Y.value})}," Result ",4)],2)]),1===D.value?(g.openBlock(),g.createElementBlock("div",ue,[g.createElementVNode("div",ge,[g.createElementVNode("div",{class:"g-gantt-file-dropzone",onClick:P,onDragover:e[0]||(e[0]=g.withModifiers((()=>{}),["prevent"])),onDrop:e[1]||(e[1]=g.withModifiers((n=>{var e;const t=null==(e=n.dataTransfer)?void 0:e.files;t&&t.length>0&&(w.value=t[0],D.value=2)}),["prevent"])),style:g.normalizeStyle({borderColor:T.value.gridAndBorder})},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faFileImport),class:"file-icon",style:g.normalizeStyle({color:F.value})},null,8,["icon","style"]),e[7]||(e[7]=g.createElementVNode("p",null,"Click or drag a file here to import",-1)),g.createElementVNode("small",null,"Supported formats: "+g.toDisplayString(A.value.map((n=>n.label)).join(", ")),1)],36),g.createElementVNode("input",{type:"file",ref_key:"fileInput",ref:y,onChange:O,class:"g-gantt-file-input",accept:A.value.map((n=>{switch(n.value){case"jira":return".json";case"csv":return".csv";default:return""}})).filter(Boolean).join(",")},null,40,pe)])])):2===D.value?(g.openBlock(),g.createElementBlock("div",fe,[w.value?(g.openBlock(),g.createElementBlock("div",he,[g.createElementVNode("div",{class:"g-gantt-file-info",style:g.normalizeStyle({backgroundColor:R.value})},[g.createElementVNode("div",null,[e[8]||(e[8]=g.createElementVNode("strong",null,"Selected file:",-1)),g.createTextVNode(" "+g.toDisplayString(w.value.name),1)]),g.createElementVNode("div",null,[e[9]||(e[9]=g.createElementVNode("strong",null,"Size:",-1)),g.createTextVNode(" "+g.toDisplayString((w.value.size/1024).toFixed(2))+" KB",1)])],4),g.createElementVNode("div",me,[g.createElementVNode("div",be,[e[10]||(e[10]=g.createElementVNode("label",null,"Format",-1)),g.withDirectives(g.createElementVNode("select",{"onUpdate:modelValue":e[2]||(e[2]=n=>v.value=n),style:g.normalizeStyle({borderColor:T.value.gridAndBorder})},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(A.value,(n=>(g.openBlock(),g.createElementBlock("option",{key:n.value,value:n.value},g.toDisplayString(n.label),9,ve)))),128))],4),[[g.vModelSelect,v.value]])]),g.createElementVNode("div",we,[g.createElementVNode("button",{class:"g-gantt-toggle-btn",onClick:e[3]||(e[3]=n=>$.value=!$.value),style:g.normalizeStyle({color:F.value})},g.toDisplayString($.value?"Hide advanced options":"Show advanced options"),5)]),$.value?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-advanced-options",style:g.normalizeStyle({borderTopColor:T.value.gridAndBorder})},[g.createElementVNode("div",ye,[e[11]||(e[11]=g.createElementVNode("label",null,"Start date field",-1)),g.withDirectives(g.createElementVNode("input",{type:"text","onUpdate:modelValue":e[4]||(e[4]=n=>x.value=n),style:g.normalizeStyle({borderColor:T.value.gridAndBorder})},null,4),[[g.vModelText,x.value]])]),g.createElementVNode("div",xe,[e[12]||(e[12]=g.createElementVNode("label",null,"End date field",-1)),g.withDirectives(g.createElementVNode("input",{type:"text","onUpdate:modelValue":e[5]||(e[5]=n=>k.value=n),style:g.normalizeStyle({borderColor:T.value.gridAndBorder})},null,4),[[g.vModelText,k.value]])])],4)):g.createCommentVNode("",!0)]),g.createElementVNode("div",ke,[g.createElementVNode("button",{class:"g-gantt-button secondary",onClick:e[6]||(e[6]=n=>D.value=1),style:g.normalizeStyle({backgroundColor:Y.value,color:j.value})}," Back ",4),g.createElementVNode("button",{class:"g-gantt-button primary",onClick:G,disabled:g.unref(u),style:g.normalizeStyle({backgroundColor:F.value,color:"white"})},[g.unref(u)?(g.openBlock(),g.createBlock(g.unref(p.FontAwesomeIcon),{key:0,icon:g.unref(f.faSpinner),class:"fa-spin"},null,8,["icon"])):(g.openBlock(),g.createElementBlock("span",Se,"Import"))],12,Ce)])])):g.createCommentVNode("",!0)])):3===D.value?(g.openBlock(),g.createElementBlock("div",Me,[g.createElementVNode("div",$e,[M.value?(g.openBlock(),g.createElementBlock("div",De,[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faCheck),class:"result-icon success",style:g.normalizeStyle({color:H.value,backgroundColor:`rgba(${parseInt(H.value.slice(1,3),16)}, \n ${parseInt(H.value.slice(3,5),16)}, \n ${parseInt(H.value.slice(5,7),16)}, 0.1)`})},null,8,["icon","style"]),e[13]||(e[13]=g.createElementVNode("h4",null,"Import completed successfully",-1)),C.value.length>0?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-warnings",style:g.normalizeStyle({backgroundColor:`rgba(${parseInt(_.value.slice(1,3),16)}, \n ${parseInt(_.value.slice(3,5),16)}, \n ${parseInt(_.value.slice(5,7),16)}, 0.1)`,borderLeftColor:_.value})},[g.createElementVNode("h5",Ee,[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faExclamationTriangle)},null,8,["icon"]),g.createTextVNode(" Warnings ("+g.toDisplayString(C.value.length)+") ",1)]),g.createElementVNode("ul",null,[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(C.value,((n,e)=>(g.openBlock(),g.createElementBlock("li",{key:e,style:{color:"#aa8700"}},g.toDisplayString(n),1)))),128))])],4)):g.createCommentVNode("",!0)])):!1===M.value?(g.openBlock(),g.createElementBlock("div",Te,[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faXmark),class:"result-icon error",style:g.normalizeStyle({color:I.value,backgroundColor:`rgba(${parseInt(I.value.slice(1,3),16)}, \n ${parseInt(I.value.slice(3,5),16)}, \n ${parseInt(I.value.slice(5,7),16)}, 0.1)`})},null,8,["icon","style"]),e[14]||(e[14]=g.createElementVNode("h4",null,"Error during import",-1)),g.createElementVNode("p",null,g.toDisplayString(g.unref(m)),1)])):g.createCommentVNode("",!0),g.createElementVNode("div",je,[g.createElementVNode("button",{class:"g-gantt-button secondary",onClick:L,style:g.normalizeStyle({backgroundColor:Y.value,color:j.value})}," Import another file ",4),g.createElementVNode("button",{class:"g-gantt-button primary",onClick:q,style:g.normalizeStyle({backgroundColor:F.value,color:"white"})}," Close ",4)])])])):g.createCommentVNode("",!0)])],4)])):g.createCommentVNode("",!0)])),o:1})]))}});function ze(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)}},r=n.map(o);return{rows:v.cloneDeep(r),expandedGroups:new Set(e),customOrder:new Map(t),timestamp:Date.now()}}function Ye(n,e){const t=(n,e)=>{const o=v.cloneDeep(n);return e&&(o.G=e.G),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 Re(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 Fe(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=Fe(t.children,e);if(n)return n}}return null}function He(n,e){for(const t of n){if(t.id===e)return t;if(t.children){const n=He(t.children,e);if(n)return n}}return null}function Ie(n,e){for(let t=0;t<n.length;t++){if(n[t].id===e)return[t];if(n[t].children){const o=Ie(n[t].children,e);if(o.length)return[t,...o]}}return[]}function _e(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 Ae(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 Pe(n,e,t,o,r){const a=[];!function t(o){for(const r of o){if(!r.id)continue;const o=Ie(n.rows,r.id),i=Ie(e.rows,r.id);if(o.length!==i.length||!o.every(((n,e)=>n===i[e]))){const t=o.length>1?Re(n.rows,o):void 0,s=i.length>1?Re(e.rows,i):void 0;a.push({type:t!==s?"group":"reorder",sourceRow:r,oldIndex:o[o.length-1],newIndex:i[i.length-1],oldParentId:t,newParentId:s})}if(r.children){const n=He(e.rows,r.id);(null==n?void 0:n.children)&&t(r.children)}}}(n.rows);const i=function(n,e,t,o,r){const a=[],i=Ae(n),s=Ae(e);return i.forEach(((n,e)=>{const i=s.get(e);if(i){const e=function(n,e,t,o,r){return n[t.value]===e[t.value]&&n[o.value]===e[o.value]?null:{barId:n.ganttBarConfig.id,rowId:_e(n.ganttBarConfig.id,r.value),oldStart:n[t.value],newStart:e[t.value],oldEnd:n[o.value],newEnd:e[o.value]}}(n,i,t,o,r);e&&a.push(e)}})),a}(n,e,t,o,r);return{rowChanges:a,barChanges:i}}const Oe=["id"],Ge={class:"g-gantt-main-layout","aria-controls":"gantt-controls"},Le={key:0,class:"connection-preview",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",zIndex:2e3,overflow:"visible"}},qe={class:"g-gantt-command-block"},Ue={key:0,class:"g-gantt-command-vertical"},We=["disabled"],Xe=["disabled"],Ne={key:1,class:"g-gantt-command-groups"},Ve=["disabled"],Ze=["disabled"],Ke={class:"g-gantt-command-fixed"},Je={class:"g-gantt-command-slider"},Qe=["disabled"],nt=["disabled"],et=["aria-valuenow"],tt=["disabled"],ot=["disabled"],rt={class:"g-gantt-command-block"},at={class:"g-gantt-command-zoom"},it=["disabled"],st=["disabled"],lt={class:"g-gantt-command-history"},dt=["disabled"],ct=["disabled"],ut={class:"g-gantt-command-block"},gt={key:0,class:"g-gantt-command-export"},pt={class:"g-gantt-export-container"},ft=["disabled"],ht=["disabled"],mt={key:0,class:"g-gantt-export-loading"},bt=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"},defaultConnectionRelation:{default:"FS"},defaultConnectionLabel:{default:""},defaultConnectionLabelAlwaysVisible:{type:Boolean,default:!1},defaultConnectionLabelStyle:{default:()=>({})},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:!1},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})},showImporter:{type:Boolean,default:!1},importerTitle:{default:"Import data"},importerDefaultFormat:{default:"csv"},importerAllowedFormats:{default:()=>["jira","csv"]},importerBarStartField:{default:"start"},importerBarEndField:{default:"end"},baseUnitWidth:{default:24},defaultZoom:{default:3}},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","import-data","range-selection"],setup(n,{expose:t,emit:o}){g.useCssVars((n=>({"1fed23a5":an.value.rangeHighlight,"787ffb4a":an.value.text,"31d9cbd8":an.value.primary})));const r=n,a=o,i=g.ref(m.v4()),s=g.useSlots(),l=g.ref(!1),d=g.ref(!1),c=g.ref(0),u=g.ref(r.showImporter),b=g.ref(null),v=g.ref(null),x=g.ref(null),k=g.ref(null),D=g.ref(null),B=g.ref(null),z=g.ref(null),Y=g.ref(Math.min(50,Math.max(20,r.baseUnitWidth))),R=g.ref(Math.min(10,Math.max(1,r.defaultZoom))),H=()=>r.labelColumnWidth*(0===r.multiColumnLabel.length?1:r.multiColumnLabel.length+(r.multiColumnLabel.some((n=>"Label"===n.field))?0:1)),I=g.ref(H());g.watch((()=>r.multiColumnLabel),(()=>{I.value=H()}));const _=h.useElementSize(v),A={startX:0,isDragging:!1},P=function(n,{barStart:t,barEnd:o,dateFormat:r,multiColumnLabel:a,onSort:i,initialSort:s,onGroupExpansion:l},d){const c=g.ref({column:s.column,direction:s.direction}),u=g.ref(new Set),p=g.ref(new Set),f=g.ref(new Set),h=g.ref(new Map),m=g.ref([]),b=g.ref([]),v=g.ref(-1),w=()=>{b.value=[ze(m.value,p.value,h.value)],v.value=0};g.onMounted((()=>{w()}));const y=g.computed((()=>v.value>0&&b.value.length>1)),x=g.computed((()=>b.value.length>1&&v.value<b.value.length-1)),k=()=>{if(v.value<b.value.length-1&&(b.value=b.value.slice(0,v.value+1)),b.value.push(ze(m.value,p.value,h.value)),v.value++,b.value.length>50){const n=b.value.length-50;b.value=b.value.slice(n),v.value=Math.max(0,v.value-n)}},C=()=>{var e;return(null==(e=null==d?void 0:d.value)?void 0:e.length)?d.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:r=[],id:a,connections:i=[]}=n.props;o.push({id:a,label:e,bars:t,children:r,connections:i,G:n})}else Array.isArray(n.children)&&n.children.forEach((n=>{var e,t;const r=n;if((null==(e=null==r?void 0:r.props)?void 0:e.bars)||(null==(t=null==r?void 0:r.props)?void 0:t.children)){const{label:n,bars:e=[],children:t=[],id:a,connections:i=[]}=r.props;o.push({id:a,label:n,bars:e,children:t,connections:i,G:r})}}))})),o):o})()};m.value=C(),g.watch((()=>C()),(n=>{m.value=n}));const S=n=>{var e;if(!(null==(e=n.children)?void 0:e.length))return n.bars||[];const a=n.children.flatMap((n=>[...S(n),...n.bars||[]]));if(!a.length)return[];const i=a.reduce(((n,e)=>{const o=M(e[t.value]);return!n||o.isBefore(n)?o:n}),null),s=a.reduce(((n,e)=>{const t=M(e[o.value]);return!n||t.isAfter(n)?t:n}),null);if(!i||!s)return[];const l="string"==typeof r.value?r.value:"YYYY-MM-DD HH:mm";return[{[t.value]:i.format(l),[o.value]:s.format(l),ganttBarConfig:{id:`group-${n.id||n.label}`,immobile:!0,label:n.label,style:{background:"transparent"},connections:n.connections||[]}}]},M=n=>"string"==typeof n||n instanceof Date?e(n):e(),$=n=>{var e;if(null==(e=n.children)?void 0:e.length){const e=n.children.map((n=>$(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=M(e[t.value]);return!n||o.isBefore(n)?o:n}),null),E=n=>{var e;if(null==(e=n.children)?void 0:e.length){const e=n.children.map((n=>E(n))).filter((n=>null!==n));return 0===e.length?T(n.bars):e.reduce(((n,e)=>!n||e.isAfter(n)?e:n))}return T(n.bars)},T=n=>0===n.length?null:n.reduce(((n,e)=>{const t=M(e[o.value]);return!n||t.isAfter(n)?t:n}),null),j=n=>{const e=$(n),t=E(n);return e&&t?t.diff(e,"minutes"):0},B=g.computed((()=>{let n=[...m.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:S(n)}}return n}));return n=e(n),"none"!==c.value.direction?z(n,c.value.column,c.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 r=((n,e,t)=>{var o,r,i,s,l;if(((null==(o=n.children)?void 0:o.length)||0)!==((null==(r=e.children)?void 0:r.length)||0))return((null==(i=e.children)?void 0:i.length)||0)-((null==(s=n.children)?void 0:s.length)||0);const d=null==(l=a.value)?void 0:l.find((n=>n.field===t));if((null==d?void 0:d.sortFn)&&!["Id","Label","StartDate","EndDate","Duration"].includes(t))return d.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=$(n),o=$(e);return t||o?t?o?t.valueOf()-o.valueOf():-1:1:0}case"EndDate":{const t=E(n),o=E(e);return t||o?t?o?t.valueOf()-o.valueOf():-1:1:0}case"Duration":return j(n)-j(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),r=t(e);return-1===o&&-1===r?0:-1===o?1:-1===r?-1:o-r}default:if(null==d?void 0:d.valueGetter){const t=d.valueGetter(n),o=d.valueGetter(e);return String(t).localeCompare(String(o))}return 0}})(n,o,e);return"asc"===t?r:-r})),Y=n=>p.value.has(n),R=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)})),F=g.computed((()=>{if(!R.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)})),H=g.computed((()=>{if(!R.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=>{m.value=n,k()},sortState:c,toggleSort:n=>{const e=c.value.direction;if(c.value.column!==n)c.value={column:n,direction:"asc"};else switch(c.value.direction){case"none":c.value.direction="asc";break;case"asc":c.value.direction="desc";break;case"desc":c.value.direction="none"}var t;i(c.value),u.value.forEach((n=>n())),"none"!==e&&"none"===c.value.direction&&(t=B.value,0===h.value.size||"none"!==c.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),l(n),f.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=>(f.value.add(n),()=>{f.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(C()),f.value.forEach((n=>n()))},collapseAllGroups:()=>{p.value.clear(),f.value.forEach((n=>n()))},canUndo:y,canRedo:x,undo:()=>{const n=b.value[v.value];v.value--;const e=b.value[v.value],r=Pe(n,e,t,o,B),a=Ye(e,m.value);return m.value=a.rows,h.value=a.customOrder,r},redo:()=>{const n=b.value[v.value];v.value++;const e=b.value[v.value],r=Pe(n,e,t,o,B),a=Ye(e,m.value);return m.value=a.rows,h.value=a.customOrder,r},clearHistory:()=>{w()},onBarMove:()=>{k()},areAllGroupsExpanded:F,areAllGroupsCollapsed:H}}(s,{barStart:g.toRef(r,"barStart"),barEnd:g.toRef(r,"barEnd"),dateFormat:g.toRef(r,"dateFormat"),multiColumnLabel:g.toRef(r,"multiColumnLabel"),onSort:n=>a("sort",{sortState:n}),initialSort:r.initialSort,onGroupExpansion:n=>a("group-expansion",{rowId:n})},r.initialRows?g.toRef(r,"initialRows"):void 0);g.provide("useRows",P);const{connections:O,barPositions:G,getConnectorProps:L,initializeConnections:W,updateBarPositions:X,handleConnectionClick:V,selectedConnection:Z,deleteSelectedConnection:K}=function(n,e,t,o){const r=g.ref([]),a=g.ref(new Map),i=g.ref(null),s=g.computed((()=>n=>{var t,o;const r=a.value.get(n.sourceId),s=a.value.get(n.targetId);return r&&s?{sourceBar:r,targetBar:s,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,relation:n.relation??e.defaultConnectionRelation,label:n.label??e.defaultConnectionLabel,labelAlwaysVisible:n.labelAlwaysVisible??e.defaultConnectionLabelAlwaysVisible,labelStyle:n.labelStyle??e.defaultConnectionLabelStyle,isSelected:(null==(t=i.value)?void 0:t.sourceId)===n.sourceId&&(null==(o=i.value)?void 0:o.targetId)===n.targetId}:null})),l=n=>n.flatMap((n=>{var e;const t=[...n.bars];return(null==(e=n.children)?void 0:e.length)?[...t,...l(n.children)]:t})),d=()=>{r.value=[],l(n.rows.value).forEach((n=>{var e;(null==(e=n.ganttBarConfig.connections)?void 0:e.length)&&n.ganttBarConfig.connections.forEach((e=>{r.value.push({sourceId:n.ganttBarConfig.id,targetId:e.targetId,type:e.type,color:e.color,pattern:e.pattern,animated:e.animated,animationSpeed:e.animationSpeed,relation:e.relation,label:e.label,labelAlwaysVisible:e.labelAlwaysVisible,labelStyle:e.labelStyle})}))}))};return g.watch((()=>n.rows.value),(()=>{d()}),{deep:!0}),{connections:r,barPositions:a,getConnectorProps:s,initializeConnections:d,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,r=e.scrollLeft,i=e.getBoundingClientRect(),s=n.querySelectorAll(".g-gantt-bar");a.value.clear(),s.forEach((n=>{const e=n.getBoundingClientRect(),t=n.getAttribute("id");t&&a.value.set(t,{id:t,x:e.left-i.left+r,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=l(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 r=e.find((n=>{var e;return n.ganttBarConfig.id===(null==(e=i.value)?void 0:e.targetId)}));o("connection-delete",{sourceBar:t,targetBar:r,e:new MouseEvent("mouseup")}),i.value=null,d(),n.onBarMove()}}}}(P,r,i,a),{showTooltip:J,tooltipBar:Q,initTooltip:en,clearTooltip:tn}=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:on,colorScheme:rn}=g.toRefs(r),an=g.computed((()=>me(rn.value))),{timeaxisUnits:sn,internalPrecision:ln,zoomLevel:dn,adjustZoomAndPrecision:cn}=N({...g.toRefs(r),baseUnitWidth:Y,defaultZoom:R}),{scrollPosition:un,handleStep:pn,handleScroll:hn,handleWheel:mn,handleContentScroll:bn,handleLabelScroll:vn,handleZoomUpdate:wn,scrollRowUp:yn,scrollRowDown:xn,isAtTop:kn,isAtBottom:Cn}=function(n,e){const{scrollRefs:t,updateBarPositions:o,timeaxisUnits:r}=n,{adjustZoomAndPrecision:a}=r,i=g.ref(0),s=g.ref(!0),l=g.ref(!1),d=g.computed((()=>r.timeaxisUnits.value.result.lowerUnits.reduce(((n,e)=>n+parseInt(e.width)),0))),c=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;s.value=0===n,l.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:s,isAtBottom:l,handleStep:(n,e)=>{e.scrollLeft=(d.value-e.clientWidth)*n/100,i.value=n},handleScroll:n=>{n.scrollLeft=(d.value-n.clientWidth)*i.value/100},handleWheel:(n,t)=>{0===e?(t.scrollLeft+=n.deltaX||n.deltaY,i.value=t.scrollLeft/(d.value-t.clientWidth)*100):0!==n.deltaX&&n.preventDefault()},handleContentScroll:c,handleLabelScroll:n=>{t.rowsContainer.value&&(t.rowsContainer.value.scrollTop=n,u())},handleZoomUpdate:async n=>{a(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),c(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),c(p(t.rowsContainer.value))}}}({scrollRefs:{rowsContainer:B,labelColumn:z},updateBarPositions:X,timeaxisUnits:{timeaxisUnits:sn,internalPrecision:ln,zoomLevel:dn,adjustZoomAndPrecision:cn}},r.maxRows),{handleKeyDown:Sn}=function(n,e,t,o,r){const{handleStep:a,handleZoomUpdate:i,scrollPosition:s}=n,{selectedConnection:l,deleteSelectedConnection:d}=o;return{handleKeyDown:n=>{if(t.value&&n.target===t.value){if(l.value&&r.value)switch(n.key){case"Delete":return void d();case"Escape":return void(l.value=null)}switch(n.key){case"ArrowLeft":e.value&&s.value>0&&a(Math.max(0,s.value-10),e.value);break;case"ArrowRight":e.value&&s.value<100&&a(Math.min(100,s.value+10),e.value);break;case"+":i(!0);break;case"-":i(!1);break;case"Home":e.value&&a(0,e.value);break;case"End":e.value&&a(100,e.value);break;case"PageUp":e.value&&s.value>=10?a(s.value-10,e.value):e.value&&a(0,e.value);break;case"PageDown":e.value&&s.value<=90?a(s.value+10,e.value):e.value&&a(100,e.value)}}}}}({scrollPosition:un,handleStep:pn,handleZoomUpdate:wn},x,D,{selectedConnection:Z,deleteSelectedConnection:K},g.toRef(r.enableConnectionDeletion)),{handleResizeStart:Mn,handleResizeMove:$n,handleResizeEnd:Dn,handleTouchStart:En,handleTouchMove:jn,resetResizeState:Bn}=(()=>{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:zn,hoverState:Rn,startConnectionCreation:Hn,updateConnectionDrag:In,completeConnection:_n,cancelConnectionCreation:An,handleConnectionPointHover:Pn,canBeConnectionTarget:On}=function(n,e,t,o){const r=g.ref({isCreating:!1,sourceBar:null,sourcePoint:null,mouseX:0,mouseY:0}),a=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}},s=()=>{r.value={isCreating:!1,sourceBar:null,sourcePoint:null,mouseX:0,mouseY:0}},l=g.computed((()=>n=>!!r.value.sourceBar&&i(r.value.sourceBar,n).isValid));return{connectionState:r,hoverState:a,startConnectionCreation:(n,e,o)=>{r.value={isCreating:!0,sourceBar:n,sourcePoint:e,mouseX:o.clientX,mouseY:o.clientY},t("connection-start",{sourceBar:n,connectionPoint:e,e:o})},updateConnectionDrag:n=>{r.value.isCreating&&(r.value.mouseX=n.clientX,r.value.mouseY=n.clientY,t("connection-drag",{sourceBar:r.value.sourceBar,connectionPoint:r.value.sourcePoint,currentX:n.clientX,currentY:n.clientY,e:n}))},completeConnection:(a,l,d)=>{var c,u,g;if(r.value.sourceBar&&r.value.sourcePoint){if(i(r.value.sourceBar,a).isValid){const i=((n,e)=>"end"===n&&"start"===e?"FS":"start"===n&&"start"===e?"SS":"end"===n&&"end"===e?"FF":"start"===n&&"end"===e?"SF":"FS")(r.value.sourcePoint,l),s={targetId:a.ganttBarConfig.id,type:n.defaultConnectionType.value,color:n.defaultConnectionColor.value,pattern:n.defaultConnectionPattern.value,animated:n.defaultConnectionAnimated.value,animationSpeed:n.defaultConnectionAnimationSpeed.value,relation:i,label:null==(c=n.defaultConnectionLabel)?void 0:c.value,labelAlwaysVisible:null==(u=n.defaultConnectionLabelAlwaysVisible)?void 0:u.value,labelStyle:null==(g=n.defaultConnectionLabelStyle)?void 0:g.value};r.value.sourceBar.ganttBarConfig.connections||(r.value.sourceBar.ganttBarConfig.connections=[]),r.value.sourceBar.ganttBarConfig.connections.push(s);const p=[...e.rows.value];e.updateRows(p),o(),t("connection-complete",{sourceBar:r.value.sourceBar,targetBar:a,sourcePoint:r.value.sourcePoint,targetPoint:l,e:d})}s()}},cancelConnectionCreation:n=>{r.value.sourceBar&&r.value.sourcePoint&&t("connection-cancel",{sourceBar:r.value.sourceBar,connectionPoint:r.value.sourcePoint,e:n}),s()},handleConnectionPointHover:(n,e,t)=>{a.value={isVisible:t,barId:t?n:null,point:t?e:null}},canBeConnectionTarget:l}}({...g.toRefs(r)},P,a,W);g.provide("connectionCreation",{connectionState:zn,hoverState:Rn,startConnectionCreation:Hn,updateConnectionDrag:In,completeConnection:_n,cancelConnectionCreation:An,handleConnectionPointHover:Pn,canBeConnectionTarget:On});const Gn=n=>{zn.value.isCreating&&In(n)},Ln=n=>{zn.value.isCreating&&An(n)},{findBarElement:qn}=Fn(),Un=g.computed((()=>{if(!zn.value.isCreating||!zn.value.sourceBar)return null;const n=qn(i.value,zn.value.sourceBar.ganttBarConfig.id);if(!n)return null;const e=n.getBoundingClientRect(),t=D.value,o=null==t?void 0:t.querySelector(".g-gantt-rows-container");if(!o)return null;const r=o.getBoundingClientRect(),a=o.scrollLeft,s=o.scrollTop;return{x1:"start"===zn.value.sourcePoint?e.left-r.left+a:e.right-r.left+a,y1:e.top-r.top+s+e.height/2,x2:zn.value.mouseX-r.left+a,y2:zn.value.mouseY-r.top+s}}));g.watch((()=>un.value),(()=>{var n;zn.value.isCreating&&(null==(n=D.value)?void 0:n.querySelector(".g-gantt-rows-container"))&&(zn.value.mouseX=zn.value.mouseX)}));const{exportChart:Wn,downloadExport:Xn,isExporting:Nn}=function(n,t,o,r){const a=g.ref(!1),i=g.ref(null),s=(n,e,t)=>{const o=e.cloneNode(!0);o.style.width=n.offsetWidth+"px",o.style.height=n.offsetHeight+"px";const r=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"),r.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=>{a.value=!0,i.value=null;try{const t=v.value,a=b.value;if(!t||!a)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=s(n,e,t),r=document.createElement("div");r.style.position="absolute",r.style.left="-9999px",r.style.width=n.offsetWidth+"px",r.style.height=n.offsetHeight+"px",r.style.overflow="hidden",r.appendChild(o),document.body.appendChild(r),await new Promise((n=>setTimeout(n,100)));const a=t.orientation||"landscape",i=t.scale||1,l=void 0!==t.margin?t.margin:10,d=new y({orientation:a,unit:"mm",format:t.paperSize||"a4"}),c=await w(o,{scale:i,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});document.body.removeChild(r);const u="landscape"===a?d.internal.pageSize.getHeight():d.internal.pageSize.getWidth(),g="landscape"===a?d.internal.pageSize.getWidth():d.internal.pageSize.getHeight(),p=u-2*l,f=c.width,h=c.height,m=p/(f/h);if(m>g-2*l){let n=0;for(;n<h;){n>0&&d.addPage();const e=Math.min(h-n,f/p*(g-2*l)),o=e/h*h;d.addImage(c.toDataURL("image/jpeg",t.quality||.95),"JPEG",l,l,p,p*(o/f),"","FAST",n/h),n+=e}}else d.addImage(c.toDataURL("image/jpeg",t.quality||.95),"JPEG",l,l,p,m,"","FAST");return{success:!0,data:d.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,a,{...n,filename:i+".pdf"});case"png":return await(async(n,e,t)=>{try{const o=s(n,e,t),r=document.createElement("div");r.style.position="absolute",r.style.left="-9999px",r.style.width=n.offsetWidth+"px",r.style.height=n.offsetHeight+"px",r.style.overflow="hidden",r.appendChild(o),document.body.appendChild(r),await new Promise((n=>setTimeout(n,100)));const a=t.scale||2,i=await w(o,{scale:a,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});return document.body.removeChild(r),{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,a,{...n,filename:i+".png"});case"svg":return await(async(n,e,t)=>{try{const o=s(n,e,t),r=document.createElement("div");r.style.position="absolute",r.style.left="-9999px",r.style.width=n.offsetWidth+"px",r.style.height=n.offsetHeight+"px",r.style.overflow="hidden",r.appendChild(o),document.body.appendChild(r),await new Promise((n=>setTimeout(n,100)));const a=await w(o,{scale:t.scale||2,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});document.body.removeChild(r);const i=a.width,l=a.height,d="http://www.w3.org/2000/svg",c=document.createElementNS(d,"svg");c.setAttribute("width",i.toString()),c.setAttribute("height",l.toString()),c.setAttribute("viewBox",`0 0 ${i} ${l}`),c.setAttribute("xmlns",d),c.setAttribute("version","1.1");const u=document.createElementNS(d,"image");u.setAttribute("width",i.toString()),u.setAttribute("height",l.toString()),u.setAttribute("x","0"),u.setAttribute("y","0"),u.setAttribute("href",a.toDataURL("image/png",t.quality||.95)),c.appendChild(u);const g=(new XMLSerializer).serializeToString(c);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,a,{...n,filename:i+".svg"});case"excel":return await(async n=>{try{const t=C.utils.book_new(),a=n=>n.flatMap((n=>{var e;return(null==(e=n.children)?void 0:e.length)?[n,...a(n.children)]:[n]})),i=a(o.rows.value),s=[];s.push(["ID","Task","Start Date","End Date","Duration","Progress (%)"]),i.forEach(((n,t)=>{let o="-",a="-",i="-",l="-";if(n.bars&&n.bars.length>0){const t=n.bars.reduce(((n,t)=>{const o=e(t[r.barStart.value]);return!n||o.isBefore(n)?o:n}),null),s=n.bars.reduce(((n,t)=>{const o=e(t[r.barEnd.value]);return!n||o.isAfter(n)?o:n}),null);t&&(o=t.format(r.dateFormat.value||"YYYY-MM-DD HH:mm")),s&&(a=s.format(r.dateFormat.value||"YYYY-MM-DD HH:mm")),t&&s&&(i=`${s.diff(t,r.precision.value)}${r.precision.value.charAt(0)}`);const d=n.bars.map((n=>n.ganttBarConfig.progress)).filter((n=>void 0!==n));if(d.length>0){const n=d.reduce(((n,e)=>n+e),0)/d.length;l=`${Math.round(n)}%`}}s.push([n.id||t+1,n.label,o,a,i,l])}));const l=C.utils.aoa_to_sheet(s);C.utils.book_append_sheet(t,l,"Gantt Rows");const d=[];d.push(["Bar ID","Label","Parent Row","Row ID","Start Date","End Date","Duration","Progress (%)","Connections","Milestone"]);const c=new Set,u=[],g=n=>{n.forEach((n=>{n.bars.forEach((e=>{c.has(e.ganttBarConfig.id)||(c.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:a}=n,i=t.ganttBarConfig,s=e(t[r.barStart.value]).format(r.dateFormat.value||"YYYY-MM-DD HH:mm"),l=e(t[r.barEnd.value]).format(r.dateFormat.value||"YYYY-MM-DD HH:mm"),c=`${e(t[r.barEnd.value]).diff(e(t[r.barStart.value]),r.precision.value)}${r.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(", "):"-";d.push([i.id,i.label||"",o,a,s,l,c,u,g,i.milestoneId?i.milestoneId:"-"])}));const p=C.utils.aoa_to_sheet(d);C.utils.book_append_sheet(t,p,"Bars Detail"),[l,p].forEach((n=>{const e=C.utils.decode_range(n["!ref"]||"A1");for(let t=e.s.c;t<=e.e.c;t++){const e=C.utils.encode_cell({r:0,c:t});n[e]||(n[e]={}),n[e].s={font:{bold:!0}}}})),l["!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 f=C.write(t,{bookType:"xlsx",type:"array"});return{success:!0,data:new Blob([f],{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{a.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:a,lastError:i}}(0,0,P,{barStart:g.toRef(r,"barStart"),barEnd:g.toRef(r,"barEnd"),dateFormat:g.toRef(r,"dateFormat"),precision:g.toRef(r,"precision")}),Zn=g.ref(""),Jn=async()=>{if(!Zn.value||Nn.value)return;const n={...r.exportOptions,format:Zn.value};try{const e=await(async n=>{const e={format:r.exportOptions.format||"pdf",quality:r.exportOptions.quality,filename:r.exportOptions.filename,paperSize:r.exportOptions.paperSize,orientation:r.exportOptions.orientation,scale:r.exportOptions.scale,margin:r.exportOptions.margin,...n};a("export-start",e.format);try{const n=await Wn(e);return n.success?a("export-success",n):a("export-error",n.error||"Unknown error"),n}catch(t){const n=t instanceof Error?t.message:"Unknown error";return a("export-error",n),{success:!1,data:null,error:n,filename:e.filename||"export-error"}}})(n);Xn(e),Zn.value=""}catch(e){}},Qn=n=>{n.success&&n.data&&(n.data.rows&&n.data.rows.length>0&&P.updateRows(n.data.rows),a("import-data",n))},ne=()=>{u.value=!1},ee=g.computed((()=>P.rows.value)),te=g.computed((()=>0===r.maxRows?{}:{"max-height":r.maxRows*r.rowHeight+"px","overflow-y":"auto"})),oe=g.computed((()=>sn.value.result.lowerUnits.reduce(((n,e)=>n+parseInt(e.width)),0))),ae=g.computed((()=>{const n=e=>e.some((e=>e.children&&e.children.length>0||e.children&&n(e.children)));return n(ee.value)})),ie=g.computed((()=>({width:`${I.value}px`,maxWidth:`${I.value}px`,position:"relative",flexShrink:0,flexGrow:0}))),se=n=>{d.value=!0,c.value=n.clientX},le=n=>{if(!d.value||!x.value)return;const e=n.clientX-c.value;c.value=n.clientX,x.value.scrollLeft-=e,un.value=x.value.scrollLeft/(x.value.scrollWidth-x.value.clientWidth)*100},de=()=>{d.value=!1},ce=n=>{const e=n.touches[0];e&&(A.isDragging=!0,A.startX=e.clientX,n.preventDefault())},ue=n=>{if(!A.isDragging||!x.value)return;const e=n.touches[0];if(!e)return;const t=e.clientX-A.startX;A.startX=e.clientX,x.value.scrollLeft-=t,un.value=x.value.scrollLeft/(x.value.scrollWidth-x.value.clientWidth)*100,n.preventDefault()},ge=()=>{A.isDragging=!1},pe=n=>{I.value=n},fe=n=>{a("row-drop",n),X()},he=n=>{a("range-selection",n)},me=n=>"string"!=typeof n?n:re[n]||re.default;g.watch((()=>oe.value),(()=>{U.value=oe.value}),{immediate:!0});const be=()=>{const n=document.getElementById(i.value).querySelector(".g-gantt-scroller");n&&n.style.setProperty("--value",`${un.value}%`)},ve=()=>{const n=P.undo();n&&(n.rowChanges.forEach((n=>{a("row-drop",{sourceRow:n.sourceRow,targetRow:void 0,newIndex:n.newIndex,parentId:n.newParentId})})),n.barChanges.forEach((n=>{const e=Fe(P.rows.value,n.barId);e&&a("dragend-bar",{bar:e,e:new MouseEvent("mouseup"),movedBars:new Map([[e,{oldStart:n.newStart,oldEnd:n.newEnd}]])})})),X())},we=()=>{const n=P.redo();n&&(n.rowChanges.forEach((n=>{a("row-drop",{sourceRow:n.sourceRow,targetRow:void 0,newIndex:n.newIndex,parentId:n.newParentId})})),n.barChanges.forEach((n=>{const e=Fe(P.rows.value,n.barId);e&&a("dragend-bar",{bar:e,e:new MouseEvent("mouseup"),movedBars:new Map([[e,{oldStart:n.oldStart,oldEnd:n.oldEnd}]])})})),X())},ye=n=>{(n.ctrlKey||n.metaKey)&&"KeyZ"===n.code&&(n.preventDefault(),n.shiftKey?P.canRedo.value&&we():P.canUndo.value&&ve())};let xe;return g.onMounted((()=>{const n=P.onSortChange(X),e=P.onGroupExpansionChange(X);g.onUnmounted(n),g.onUnmounted(e),x.value&&x.value.addEventListener("wheel",(n=>mn(n,x.value))),window.addEventListener("mousemove",le),window.addEventListener("mouseup",de),window.addEventListener("mousemove",(n=>$n(n,pe))),window.addEventListener("mouseup",Dn),window.addEventListener("keydown",ye),xe=new ResizeObserver(X);const t=document.querySelector(".g-gantt-chart");t&&xe.observe(t),window.addEventListener("resize",X),W(),g.nextTick((()=>{X()})),g.watch(un,be,{immediate:!0})})),g.onUnmounted((()=>{x.value&&x.value.removeEventListener("wheel",(n=>mn(n,x.value))),window.removeEventListener("mousemove",le),window.removeEventListener("mouseup",de),window.removeEventListener("mousemove",(n=>$n(n,pe))),window.removeEventListener("mouseup",Dn),window.removeEventListener("keydown",ye),xe&&xe.disconnect(),window.removeEventListener("resize",X)})),g.watch([()=>r.chartStart,()=>r.chartEnd],(()=>{X()})),g.watch((()=>r.showImporter),(n=>{u.value=n})),g.watch((()=>r.baseUnitWidth),(n=>{Y.value=Math.max(20,n)})),g.watch((()=>r.defaultZoom),(n=>{R.value=Math.min(10,Math.max(1,n))})),g.provide(S,{...g.toRefs(r),baseUnitWidth:Y,defaultZoom:R,colors:an,chartSize:_}),g.provide($,((n,e,t,o)=>{switch(n.type){case"click":a("click-bar",{bar:e,e:n,datetime:t});break;case"mousedown":a("mousedown-bar",{bar:e,e:n,datetime:t});break;case"mouseup":a("mouseup-bar",{bar:e,e:n,datetime:t});break;case"dblclick":a("dblclick-bar",{bar:e,e:n,datetime:t});break;case"mouseenter":en(e),a("mouseenter-bar",{bar:e,e:n});break;case"mouseleave":tn(),a("mouseleave-bar",{bar:e,e:n});break;case"dragstart":l.value=!0,a("dragstart-bar",{bar:e,e:n}),X();break;case"drag":a("drag-bar",{bar:e,e:n}),X();break;case"dragend":l.value=!1,a("dragend-bar",{bar:e,e:n,movedBars:o}),X(),P.onBarMove();break;case"contextmenu":a("contextmenu-bar",{bar:e,e:n,datetime:t});break;case"progress-drag-start":en(e),a("progress-drag-start",{bar:e,e:n});break;case"progress-change":en(e),a("progress-change",{bar:e,e:n});break;case"progress-drag-end":en(e),a("progress-drag-end",{bar:e,e:n}),P.onBarMove();break;case"label-edit":a("label-edit",{bar:e,e:n,oldValue:e.ganttBarConfig.l||"",newValue:e.ganttBarConfig.label||""}),P.onBarMove()}})),g.provide(M,{...r}),g.provide(j,i.value),g.provide(E,v),g.provide(T,x),t({exportChart:Wn,isExporting:Nn}),(n,e)=>(g.openBlock(),g.createElementBlock("div",{class:"g-gantt-container",role:"application","aria-label":"Interactive Gantt",tabindex:"0",onKeydown:e[20]||(e[20]=(...n)=>g.unref(Sn)&&g.unref(Sn)(...n)),onMousemove:Gn,onMouseup:Ln,ref_key:"ganttContainer",ref:D,id:i.value},[g.createElementVNode("div",{class:"g-gantt-rounded-wrapper",ref_key:"gGantt",ref:b},[g.createElementVNode("div",Ge,[n.labelColumnTitle?(g.openBlock(),g.createElementBlock("div",{key:0,class:"g-gantt-label-section",style:g.normalizeStyle(ie.value)},[g.createVNode(q,{ref_key:"labelColumn",ref:z,onScroll:g.unref(vn),onRowDrop:fe},g.createSlots({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(Mn)(n,I.value)),onTouchstart:e[1]||(e[1]=n=>g.unref(En)(n,I.value)),onTouchmove:e[2]||(e[2]=n=>g.unref(jn)(n,pe)),onTouchend:e[3]||(e[3]=(...n)=>g.unref(Bn)&&g.unref(Bn)(...n)),onTouchcancel:e[4]||(e[4]=(...n)=>g.unref(Bn)&&g.unref(Bn)(...n))},null,32)],4)):g.createCommentVNode("",!0),g.createElementVNode("div",{ref_key:"ganttWrapper",ref:x,class:"gantt-wrapper",style:g.normalizeStyle({width:"100%","overflow-x":n.commands?"hidden":"auto"})},[g.createElementVNode("div",{ref_key:"ganttChart",ref:v,class:"g-gantt-chart",style:g.normalizeStyle({width:`${oe.value}px`,background:an.value.background,fontFamily:g.unref(on)})},[n.hideTimeaxis?g.createCommentVNode("",!0):(g.openBlock(),g.createBlock(gn,{key:0,ref_key:"timeaxisComponent",ref:k,onDragStart:se,onTouchstart:ce,onTouchmove:ue,onTouchend:ge,onTouchcancel:ge,timeaxisUnits:g.unref(sn),internalPrecision:g.unref(ln)},{"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)))])),"holiday-tooltip":g.withCtx((e=>[g.renderSlot(n.$slots,"holiday-tooltip",g.normalizeProps(g.guardReactiveProps(e)))])),"event-tooltip":g.withCtx((e=>[g.renderSlot(n.$slots,"event-tooltip",g.normalizeProps(g.guardReactiveProps(e)))])),"timeaxis-event":g.withCtx((e=>[g.renderSlot(n.$slots,"timeaxis-event",g.normalizeProps(g.guardReactiveProps(e)))])),o:3},8,["timeaxisUnits","internalPrecision"])),n.grid?(g.openBlock(),g.createBlock(F,{key:1,timeaxisUnits:g.unref(sn),internalPrecision:g.unref(ln)},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(Kn,{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(Yn,{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(te.value),ref_key:"rowsContainer",ref:B,onScroll:e[5]||(e[5]=(...n)=>g.unref(bn)&&g.unref(bn)(...n))},[(g.openBlock(!0),g.createElementBlock(g.Fragment,null,g.renderList(ee.value,(n=>(g.openBlock(),g.createBlock(g.resolveDynamicComponent((n=>n.G?g.h(Vn,{...n.G.props,label:n.label,bars:n.bars,children:n.children,id:n.id,key:n.id||n.label,onRangeSelection:he},n.G.children||{}):g.h(Vn,{label:n.label,bars:n.bars,id:n.id,key:n.id||n.label,children:n.children,connections:n.connections,onRangeSelection:he}))(n)),{key:n.id||n.label})))),128)),g.unref(zn).isCreating&&Un.value?(g.openBlock(),g.createElementBlock("svg",Le,[Un.value?(g.openBlock(),g.createBlock(Tn,{key:0,"source-bar":{id:g.unref(zn).sourceBar.ganttBarConfig.id,x:Un.value.x1,y:Un.value.y1,width:0,height:0},"target-bar":{id:"preview",x:Un.value.x2,y:Un.value.y2,width:0,height:0},type:"straight",color:n.defaultConnectionColor,pattern:n.defaultConnectionPattern,animated:n.defaultConnectionAnimated,"animation-speed":n.defaultConnectionAnimationSpeed,relation:n.defaultConnectionRelation,style:{opacity:.6},marker:n.markerConnection},null,8,["source-bar","target-bar","color","pattern","animated","animation-speed","relation","marker"])):g.createCommentVNode("",!0)])):g.createCommentVNode("",!0),n.enableConnections?(g.openBlock(!0),g.createElementBlock(g.Fragment,{key:1},g.renderList(g.unref(O),(e=>(g.openBlock(),g.createElementBlock(g.Fragment,{key:`${e.sourceId}-${e.targetId}`},[g.unref(G).get(e.sourceId)&&g.unref(G).get(e.targetId)?(g.openBlock(),g.createBlock(Tn,g.mergeProps({key:0,ref_for:!0},g.unref(L)(e),{marker:n.markerConnection,onClick:n=>g.unref(V)(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:an.value.commands,fontFamily:g.unref(on)}),"aria-label":"Gantt Commands"},[g.renderSlot(n.$slots,"commands",{zoomIn:()=>g.unref(wn)(!0),zoomOut:()=>g.unref(wn)(!1),scrollRowUp:()=>g.unref(yn)(),scrollRowDown:()=>g.unref(xn)(),expandAllGroups:()=>g.unref(P).expandAllGroups(),collapseAllGroups:()=>g.unref(P).collapseAllGroups(),handleToStart:()=>g.unref(pn)(0,x.value),handleBack:()=>g.unref(pn)(g.unref(un)-10,x.value),handleScroll:()=>g.unref(hn)(x.value),handleForward:()=>g.unref(pn)(g.unref(un)+10,x.value),handleToEnd:()=>g.unref(pn)(100,x.value),undo:()=>ve(),redo:()=>we(),canUndo:g.unref(P).canUndo,canRedo:g.unref(P).canRedo,isAtTop:g.unref(kn),isAtBottom:g.unref(Cn),zoomLevel:g.unref(dn),export:()=>Jn()},(()=>[g.createElementVNode("div",qe,[n.maxRows>0?(g.openBlock(),g.createElementBlock("div",Ue,[g.createElementVNode("button",{onClick:e[6]||(e[6]=(...n)=>g.unref(yn)&&g.unref(yn)(...n)),"aria-label":"Scroll row up",disabled:g.unref(kn)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faAngleUp),class:"command-icon"},null,8,["icon"])],8,We),g.createElementVNode("button",{onClick:e[7]||(e[7]=(...n)=>g.unref(xn)&&g.unref(xn)(...n)),"aria-label":"Scroll row down",disabled:g.unref(Cn)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faAngleDown),class:"command-icon"},null,8,["icon"])],8,Xe)])):g.createCommentVNode("",!0),ae.value?(g.openBlock(),g.createElementBlock("div",Ne,[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(f.faExpandAlt),class:"command-icon"},null,8,["icon"])],8,Ve),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(f.faCompressAlt),class:"command-icon"},null,8,["icon"])],8,Ze)])):g.createCommentVNode("",!0)]),g.createElementVNode("div",Ke,[g.createElementVNode("div",Je,[g.createElementVNode("button",{disabled:0===g.unref(un),onClick:e[10]||(e[10]=n=>g.unref(pn)(0,x.value)),"aria-label":"Scroll to start"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faAnglesLeft),class:"command-icon"},null,8,["icon"])],8,Qe),g.createElementVNode("button",{disabled:0===g.unref(un),onClick:e[11]||(e[11]=n=>g.unref(pn)(g.unref(un)-10,x.value)),"aria-label":"Scroll back"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faAngleLeft),class:"command-icon"},null,8,["icon"])],8,nt),g.withDirectives(g.createElementVNode("input",{"onUpdate:modelValue":e[12]||(e[12]=n=>g.isRef(un)?un.value=n:null),type:"range",min:"0",max:"100",class:"g-gantt-scroller",style:g.normalizeStyle({"--value":`${g.unref(un)}%`}),onInput:e[13]||(e[13]=n=>g.unref(hn)(x.value)),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":g.unref(un),"aria-label":"Gantt scroll position"},null,44,et),[[g.vModelText,g.unref(un)]]),g.createElementVNode("button",{disabled:100===g.unref(un),onClick:e[14]||(e[14]=n=>g.unref(pn)(g.unref(un)+10,x.value)),"aria-label":"Scroll up"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faAngleRight),class:"command-icon"},null,8,["icon"])],8,tt),g.createElementVNode("button",{disabled:100===g.unref(un),onClick:e[15]||(e[15]=n=>g.unref(pn)(100,x.value)),"aria-label":"Scroll to end"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faAnglesRight),class:"command-icon"},null,8,["icon"])],8,ot)])]),g.createElementVNode("div",rt,[g.createElementVNode("div",at,[g.createElementVNode("button",{onClick:e[16]||(e[16]=()=>g.unref(wn)(!1)),"aria-label":"Zoom-out Gantt",disabled:1===g.unref(dn)&&"month"===g.unref(ln)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faMagnifyingGlassMinus),class:"command-icon"},null,8,["icon"])],8,it),g.createElementVNode("button",{onClick:e[17]||(e[17]=()=>g.unref(wn)(!0)),"aria-label":"Zoom-out Gantt",disabled:10===g.unref(dn)&&g.unref(ln)===n.precision},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faMagnifyingGlassPlus),class:"command-icon"},null,8,["icon"])],8,st)]),g.createElementVNode("div",lt,[g.createElementVNode("button",{onClick:ve,disabled:!g.unref(P).canUndo.value,"aria-label":"Undo last action"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faUndo),class:"command-icon"},null,8,["icon"])],8,dt),g.createElementVNode("button",{onClick:we,disabled:!g.unref(P).canRedo.value,"aria-label":"Redo action"},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faRedo),class:"command-icon"},null,8,["icon"])],8,ct)])]),g.createElementVNode("div",ut,[n.exportEnabled?(g.openBlock(),g.createElementBlock("div",gt,[g.createElementVNode("div",pt,[g.withDirectives(g.createElementVNode("select",{"onUpdate:modelValue":e[18]||(e[18]=n=>Zn.value=n),class:"g-gantt-export-select",disabled:g.unref(Nn)},e[21]||(e[21]=[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,ft),[[g.vModelSelect,Zn.value]]),g.createElementVNode("button",{onClick:Jn,disabled:!Zn.value||g.unref(Nn)},[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faFileExport),class:"command-icon"},null,8,["icon"]),g.unref(Nn)?(g.openBlock(),g.createElementBlock("span",mt,[g.createVNode(g.unref(p.FontAwesomeIcon),{icon:g.unref(f.faSpinner),class:"fa-spin"},null,8,["icon"])])):g.createCommentVNode("",!0)],8,ht)])])):g.createCommentVNode("",!0)])]))],4)):g.createCommentVNode("",!0)],512),g.createVNode(nn,{type:"bar","model-value":g.unref(J)||l.value,bar:g.unref(Q)},{default:g.withCtx((e=>[g.renderSlot(n.$slots,"bar-tooltip",g.normalizeProps(g.guardReactiveProps(e)))])),o:3},8,["model-value","bar"]),g.createVNode(Be,{modelValue:u.value,"onUpdate:modelValue":e[19]||(e[19]=n=>u.value=n),title:r.importerTitle,"default-format":r.importerDefaultFormat,"allowed-formats":r.importerAllowedFormats,onImport:Qn,onClose:ne},null,8,["modelValue","title","default-format","allowed-formats"])],40,Oe))}});function vt(){e.extend(o),e.extend(r),e.extend(a),e.extend(l),e.extend(i),e.extend(t),e.extend(s),e.extend(d),e.extend(c),e.extend(u)}const wt={install(n){vt(),n.component("GGanttChart",bt),n.component("GGanttRow",Vn)}};n.GGanttChart=bt,n.GGanttRow=Vn,n.default=wt,n.extendDayjs=vt,n.hyvuegantt=wt,Object.defineProperties(n,{u:{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(--1fed23a5) 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(--1fed23a5);\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(--1fed23a5);\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(--1fed23a5);\n}\n.g-gantt-scroller::-moz-range-thumb:hover {\n background: var(--1fed23a5);\n}\n\n/* Icon Styles */\n.command-icon {\n background: var(--1fed23a5);\n padding: 4px;\n margin: 2px;\n width: 14px;\n height: 14px;\n border-radius: 4px;\n}\nbutton {\n display: flex;\n padding: 0;\n background-color: transparent;\n background-image: none;\n border: 0;\n color: var(--787ffb4a);\n}\n.g-gantt-chart:focus-within {\n outline: 2px solid var(--31d9cbd8);\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.g-gantt-range-selection {\n border-radius: 2px;\n box-sizing: border-box;\n}\n.g-gantt-row-bars-container {\n cursor: crosshair;\n}\n.g-gantt-row-bars-container:has(.g-gantt-bar) {\n cursor: default;\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.progress-text {\n padding-right: 10px;\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-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-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/* Bar Tooltip Styles */\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\n/* Event Tooltip Styles */\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\n/* Holiday Tooltip Styles */\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\n/* Transition Animations */\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.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-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-importer-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n}\n.g-gantt-importer-modal {\n width: 650px;\n max-width: 95%;\n max-height: 90vh;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.g-gantt-importer-header {\n padding: 10px 14px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.g-gantt-importer-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 500;\n}\n.g-gantt-importer-close-btn {\n background: none;\n border: none;\n font-size: 18px;\n cursor: pointer;\n padding: 4px 8px;\n border-radius: 4px;\n transition: background-color 0.2s;\n}\n.g-gantt-importer-close-btn:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n.g-gantt-importer-content {\n padding: 20px;\n overflow-y: auto;\n}\n\n/* Stepper styles */\n.g-gantt-importer-stepper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 14px;\n}\n.g-gantt-stepper-step {\n display: flex;\n flex-direction: column;\n align-items: center;\n position: relative;\n}\n.g-gantt-step-number {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 8px;\n font-weight: 500;\n transition: all 0.3s;\n}\n.g-gantt-step-label {\n font-size: 14px;\n transition: color 0.3s;\n}\n.g-gantt-step-connector {\n flex-grow: 1;\n height: 2px;\n margin: 0 10px;\n margin-bottom: 30px;\n}\n\n/* File upload styles */\n.g-gantt-file-upload {\n width: 100%;\n}\n.g-gantt-file-dropzone {\n border: 2px dashed;\n border-radius: 8px;\n padding: 40px;\n text-align: center;\n cursor: pointer;\n transition: all 0.3s;\n}\n.g-gantt-file-dropzone:hover {\n border-color: currentColor;\n background-color: rgba(0, 0, 0, 0.03);\n}\n.g-gantt-file-dropzone .file-icon {\n font-size: 48px;\n margin-bottom: 16px;\n}\n.g-gantt-file-dropzone p {\n margin: 0 0 8px;\n font-size: 16px;\n}\n.g-gantt-file-dropzone small {\n color: #666;\n}\n.g-gantt-file-input {\n display: none;\n}\n\n/* Configuration styles */\n.g-gantt-selected-file {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.g-gantt-file-info {\n padding: 12px;\n border-radius: 8px;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.g-gantt-import-options {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n.g-gantt-option-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.g-gantt-option-group label {\n font-weight: 500;\n font-size: 14px;\n}\n.g-gantt-option-group select,\n.g-gantt-option-group input {\n padding: 8px 12px;\n border: 1px solid;\n border-radius: 4px;\n font-size: 14px;\n}\n.g-gantt-toggle-btn {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n font-size: 14px;\n -webkit-text-decoration: underline;\n text-decoration: underline;\n}\n.g-gantt-advanced-options {\n border-top: 1px solid;\n padding-top: 16px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n.g-gantt-import-actions {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n margin-top: 10px;\n}\n\n/* Result styles */\n.g-gantt-import-result {\n display: flex;\n flex-direction: column;\n gap: 24px;\n align-items: center;\n text-align: center;\n}\n.g-gantt-result-success,\n.g-gantt-result-error {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n}\n.result-icon {\n font-size: 48px;\n border-radius: 50%;\n padding: 16px;\n margin-bottom: 8px;\n}\n.g-gantt-warnings {\n margin-top: 16px;\n text-align: left;\n padding: 16px;\n border-radius: 8px;\n border-left: 4px solid;\n width: 100%;\n}\n.g-gantt-warnings h5 {\n margin-top: 0;\n margin-bottom: 6px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.g-gantt-warnings ul {\n margin: 0;\n padding-left: 14px;\n max-height: 150px;\n overflow-y: overlay;\n}\n\n/* Button styles */\n.g-gantt-button {\n padding: 8px 16px;\n border-radius: 4px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n border: none;\n font-weight: 500;\n}\n.g-gantt-result-actions {\n display: flex;\n gap: 4px;\n}\n.g-gantt-button:hover {\n filter: brightness(0.95);\n}\n.g-gantt-button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* Animations */\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.gantt-connector[data-v-652d5ef8] {\n overflow: visible;\n pointer-events: none;\n}\n.connector-path[data-v-652d5ef8] {\n transition: d 0.3s ease;\n}\n.connector-path.selected[data-v-652d5ef8] {\n filter: drop-shadow(0 0 5px rgba(33, 150, 243, 0.6));\n}\n.relation-indicator[data-v-652d5ef8] {\n font-weight: bold;\n pointer-events: none;\n}\n\n/* Animation for dash pattern */\n.connector-animated-dash-slow[data-v-652d5ef8] {\n animation: dashFlow-652d5ef8 4s linear infinite;\n}\n.connector-animated-dash-normal[data-v-652d5ef8] {\n animation: dashFlow-652d5ef8 2s linear infinite;\n}\n.connector-animated-dash-fast[data-v-652d5ef8] {\n animation: dashFlow-652d5ef8 1s linear infinite;\n}\n\n/* Animation for dot pattern */\n.connector-animated-dot-slow[data-v-652d5ef8] {\n animation: dotFlow-652d5ef8 4s linear infinite;\n}\n.connector-animated-dot-normal[data-v-652d5ef8] {\n animation: dotFlow-652d5ef8 2s linear infinite;\n}\n.connector-animated-dot-fast[data-v-652d5ef8] {\n animation: dotFlow-652d5ef8 1s linear infinite;\n}\n\n/* Animation for dashdot pattern */\n.connector-animated-dashdot-slow[data-v-652d5ef8] {\n animation: dashdotFlow-652d5ef8 4s linear infinite;\n}\n.connector-animated-dashdot-normal[data-v-652d5ef8] {\n animation: dashdotFlow-652d5ef8 2s linear infinite;\n}\n.connector-animated-dashdot-fast[data-v-652d5ef8] {\n animation: dashdotFlow-652d5ef8 1s linear infinite;\n}\n.connector-path[data-v-652d5ef8] {\n marker-start: none;\n transition:\n d 0.3s ease, marker-start 0.3s ease;\n}\n.connection-endpoint[data-v-652d5ef8] {\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-652d5ef8]:hover {\n r: 8;\n}\n@keyframes dashFlow-652d5ef8 {\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-652d5ef8 {\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-652d5ef8 {\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',"top");