UNPKG

hy-vue-gantt

Version:

Evolution of vue-ganttastic package

1 lines 171 kB
import e from"dayjs";import t from"dayjs/plugin/isoWeek";import n from"dayjs/plugin/isSameOrBefore.js";import a from"dayjs/plugin/isSameOrAfter.js";import o from"dayjs/plugin/isBetween.js";import r from"dayjs/plugin/weekOfYear";import l from"dayjs/plugin/advancedFormat";import i from"dayjs/plugin/customParseFormat.js";import s from"dayjs/plugin/dayOfYear.js";import u from"dayjs/plugin/localizedFormat";import d from"dayjs/plugin/utc";import{inject as c,computed as g,defineComponent as p,openBlock as v,createElementBlock as f,unref as m,Fragment as h,renderList as b,normalizeStyle as y,normalizeClass as w,ref as x,reactive as k,onMounted as C,createElementVNode as B,renderSlot as E,createTextVNode as S,toDisplayString as D,createVNode as $,createCommentVNode as M,watch as T,toRefs as A,nextTick as L,createBlock as R,Teleport as z,Transition as Y,withCtx as I,withModifiers as P,createSlots as H,normalizeProps as _,guardReactiveProps as F,mergeProps as G,withDirectives as j,vModelText as O,provide as U,TransitionGroup as X,resolveDynamicComponent as W,useTemplateRef as V,vModelSelect as q,useCssVars as N,createStaticVNode as Z,useSlots as K,toRef as J,onUnmounted as Q,h as ee}from"vue";import{useIntervalFn as te,useMouseInElement as ne,useElementBounding as ae,computedWithControl as oe,watchThrottled as re,useElementSize as le}from"@vueuse/core";import{v4 as ie}from"uuid";import{FontAwesomeIcon as se}from"@fortawesome/vue-fontawesome";import{faChevronDown as ue,faChevronRight as de,faSort as ce,faArrowDownAZ as ge,faArrowDownZA as pe,faXmark as ve,faCheck as fe,faFileImport as me,faSpinner as he,faExclamationTriangle as be,faAngleUp as ye,faAngleDown as we,faExpandAlt as xe,faCompressAlt as ke,faAnglesLeft as Ce,faAngleLeft as Be,faAngleRight as Ee,faAnglesRight as Se,faMagnifyingGlassMinus as De,faMagnifyingGlassPlus as $e,faUndo as Me,faRedo as Te,faFileExport as Ae}from"@fortawesome/free-solid-svg-icons";import Le from"date-holidays";import Re from"papaparse";import{cloneDeep as ze}from"lodash-es";import Ye from"html2canvas";import Ie from"jspdf";const Pe=/* @__PURE__ */Symbol("CONFIG_KEY"),He=/* @__PURE__ */Symbol("BOOLEAN_KEY"),_e=/* @__PURE__ */Symbol("EMIT_BAR_EVENT_KEY"),Fe=/* @__PURE__ */Symbol("BAR_CONTAINER_KEY"),Ge=/* @__PURE__ */Symbol("CHART_AREA_KEY"),je=/* @__PURE__ */Symbol("CHART_WRAPPER_KEY"),Oe=/* @__PURE__ */Symbol("GANTT_ID_KEY"),Ue=/* @__PURE__ */Symbol("INTERNAL_PRECISION_KEY");function Xe(){const e=c(Pe);if(!e)throw Error("Failed to inject config!");return e}const We="YYYY-MM-DD HH:mm";function Ve(t=Xe()){const{chartStart:n,chartEnd:a,barStart:o,barEnd:r,dateFormat:l,locale:i}=t,s=g(()=>d(n.value)),u=g(()=>d(a.value));e.locale(i.value);const d=(t,n)=>{let a;if(void 0===n||"string"==typeof t||t instanceof Date||(a="start"===n?t[o.value]:t[r.value]),"string"==typeof t)a=t;else if(t instanceof Date)return e(t);return e(a,l.value||We,!1)};return{chartStartDayjs:s,chartEndDayjs:u,toDayjs:d,format:(t,n)=>!1===n?t instanceof Date?t:e(t).toDate():("string"==typeof t||t instanceof Date?d(t):t).format(n),diffDates:()=>u.value.diff(s.value,"day")}}const qe={class:"g-grid-container",ref:"time"},Ne=/* @__PURE__ */p({__name:"GGanttGrid",props:{timeaxisUnits:{},internalPrecision:{}},setup(e){const t=e,{toDayjs:n}=Ve(),{colors:a,highlightedHours:o,highlightedDaysInWeek:r,highlightedDaysInMonth:l,highlightedMonths:i,highlightedWeek:s,highlightedDateRanges:u,enableMinutes:d}=Xe(),c=e=>"hour"===t.internalPrecision?g(e)||p(e)||k(e)||x(e):"day"===t.internalPrecision||"date"===t.internalPrecision?p(e)||k(e)||x(e):"week"===t.internalPrecision?x(e)||k(e):"month"===t.internalPrecision&&k(e),g=e=>o?.value.includes(e.getHours()),p=e=>r?.value.includes(e.getDay())||l?.value.includes(e.getDate()),x=e=>s?.value.includes(n(e).week()),k=e=>i?.value.includes(e.getMonth()),C=(e,n)=>{if(!u?.value?.length)return;if("hour"!==t.internalPrecision)return;const o=e.getTime(),r=o+n;for(const t of u.value){const e=t.start instanceof Date?t.start.getTime():new Date(t.start).getTime();if(o<(t.end instanceof Date?t.end.getTime():new Date(t.end).getTime())&&r>e)return t.color||a.value.hoverHighlight}};return(t,n)=>(v(),f("div",qe,[m(d)?(v(!0),f(h,{key:1},b(e.timeaxisUnits.result.lowerUnits,({label:t,date:n,width:o},r)=>(v(),f(h,{key:`${t}_${r}`},[(v(!0),f(h,null,b(e.timeaxisUnits.globalMinuteStep,t=>(v(),f("div",{key:`${n}-${t}`,class:w([t,"g-grid-line step"]),style:y({width:o,borderLeft:`1px solid ${m(a).gridAndBorder}`,background:c(n)?m(a).hoverHighlight:C(n,(e.timeaxisUnits.result.lowerUnits[r+1]?.date??n).getTime()-n.getTime()||(r>0?n.getTime()-e.timeaxisUnits.result.lowerUnits[r-1].date.getTime():36e5))})},null,6))),128))],64))),128)):(v(!0),f(h,{key:0},b(e.timeaxisUnits.result.lowerUnits,({label:t,date:n,width:o},r)=>(v(),f("div",{key:`${t}_${r}`,class:"g-grid-line",style:y({width:o,borderLeft:`1px solid ${m(a).gridAndBorder}`,background:c(n)?m(a).hoverHighlight:C(n,(e.timeaxisUnits.result.lowerUnits[r+1]?.date??n).getTime()-n.getTime()||(r>0?n.getTime()-e.timeaxisUnits.result.lowerUnits[r-1].date.getTime():36e5))})},null,4))),128))],512))}});const Ze=["onClick"],Ke={class:"text-ellipsis"},Je={key:0,class:"sort-icon"},Qe=["onMousedown","onTouchstart"],et=["data-row-id","draggable","onDragstart","onDragover","onTouchstart","onTouchmove"],tt={class:"g-label-column-row-inner"},nt=["onClick"],at={key:1,class:"group-toggle-button group-toggle-placeholder"},ot={class:"text-ellipsis-value"},rt=/* @__PURE__ */p({__name:"GGanttLabelColumn",emits:["scroll","row-drop"],setup(e,{expose:t,emit:n}){const a=n,o=c("useRows");if(!o)throw new Error("useRows does not provide ");const{rows:r,sortState:l,toggleSort:i}=o,{font:s,colors:u,labelColumnTitle:d,labelColumnWidth:p,rowHeight:T,maxRows:A,multiColumnLabel:L,precision:R,barStart:z,barEnd:Y,dateFormat:I,rowLabelClass:P,labelResizable:H,enableRowDragAndDrop:_,hideTimeaxis:F,sortable:G,showEventsAxis:j,eventsAxisHeight:O}=Xe(),{toDayjs:U,format:X}=Ve(),W=k(/* @__PURE__ */new Map),V=x(!1),q=x(0),N=x(null),Z=x(null),{dragState:K,handleDragStart:J,handleDragOver:Q,handleDrop:ee}=function(e,t,n,a){const o=x({isDragging:!1,draggedRow:null,dropTarget:{row:null,position:"before"}}),r=x(/* @__PURE__ */new Map),l=(e,t)=>!!e.children&&e.children.some(e=>e.id===t.id||l(e,t)),i=(e,t)=>{for(let n=0;n<e.length;n++){const a=e[n];if(a){if(a.id===t)return[n,e];if(a.children?.length){const[e,n]=i(a.children,t);if(-1!==e)return[e,n]}}}return[-1,e]};return{dragState:o,handleDragStart:(n,a)=>{t.value||(o.value.isDragging=!0,o.value.draggedRow=n,a.dataTransfer&&(a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain","")),0===r.value.size&&e.value.forEach((e,t)=>{e.id&&r.value.set(e.id,t)}))},handleDragOver:(e,t)=>{if(!o.value.draggedRow||!((e,t)=>{const n=e=>!!e.children?.length&&e.children.some(e=>e===t||n(e));return!n(e)})(o.value.draggedRow,e))return;t.preventDefault();const n=t.currentTarget.getBoundingClientRect(),a=t.clientY-n.top;o.value.dropTarget=e.children?.length?a<.25*n.height?{row:e,position:"before"}:a>.75*n.height?{row:e,position:"after"}:{row:e,position:"child"}:{row:e,position:a<n.height/2?"before":"after"}},handleDrop:()=>{const{draggedRow:r,dropTarget:s}=o.value;if(!r||!s.row||t.value||r===s.row)return;if(l(r,s.row))return;const[u,d]=i(e.value,r.id),[c,g]=i(e.value,s.row.id);if(-1===u||-1===c)return;const[p]=d.splice(u,1);if(!p)return;const v="after"===s.position?c+1:c;g.splice(v,0,p),n([...e.value]),a(0,{sourceRow:r,targetRow:s.row,newIndex:v,parentId:g===e.value?void 0:s.row.id}),o.value={isDragging:!1,draggedRow:null,dropTarget:{row:null,position:"before"}}},resetOrder:()=>{0!==r.value.size&&e.value.sort((e,t)=>(e.id?r.value.get(e.id)??0:0)-(t.id?r.value.get(t.id)??0:0))},isDescendant:l,findRowIndexById:i}}(r,g(()=>"none"!==l.value.direction),o.updateRows,(e,t)=>a("row-drop",t)),{touchState:te,handleTouchStart:ne,handleTouchMove:ae,handleTouchEnd:oe,handleTouchCancel:re}=function(){const e=x({isResizing:!1,startX:0,currentColumn:null,initialWidth:0}),t=()=>{e.value.isResizing&&(e.value={isResizing:!1,startX:0,currentColumn:null,initialWidth:0})};return{touchState:e,handleTouchStart:(t,n,a)=>{const o=t.touches[0];o&&(t.preventDefault(),e.value={isResizing:!0,startX:o.clientX,currentColumn:n,initialWidth:a})},handleTouchMove:(t,n)=>{const a=t.touches[0];if(!a||!e.value.isResizing)return;t.preventDefault();const o=Math.max(50,e.value.initialWidth+(a.clientX-e.value.startX));e.value.currentColumn&&n(e.value.currentColumn,o)},handleTouchEnd:t,handleTouchCancel:t}}(),{touchState:le,handleTouchStart:ie,handleTouchMove:ve,handleTouchEnd:fe,resetTouchState:me}=function(){const e=x({isDragging:!1,startY:0,currentY:0,draggedRow:null,dropTarget:{row:null,position:"before"},dragElement:null,initialTransform:""}),t=()=>{e.value.dragElement&&(e.value.dragElement.style.transform=e.value.initialTransform),e.value={isDragging:!1,startY:0,currentY:0,draggedRow:null,dropTarget:{row:null,position:"before"},dragElement:null,initialTransform:""}};return{touchState:e,handleTouchStart:(t,n,a)=>{const o=t.touches[0];o&&(setTimeout(()=>{e.value.isDragging&&t.preventDefault()},100),e.value={isDragging:!0,startY:o.clientY,currentY:o.clientY,draggedRow:n,dropTarget:{row:null,position:"before"},dragElement:a,initialTransform:a.style.transform||""})},handleTouchMove:(t,n,a)=>{const o=t.touches[0];if(!o||!e.value.isDragging||!e.value.dragElement)return;t.preventDefault(),e.value.currentY=o.clientY,e.value.dragElement.style.transform=`translateY(${o.clientY-e.value.startY}px)`;const r=a.getBoundingClientRect(),l=(o.clientY-r.top)/r.height;e.value.draggedRow!==n&&(e.value.dropTarget=n.children?.length?l<.25?{row:n,position:"before"}:l>.75?{row:n,position:"after"}:{row:n,position:"child"}:{row:n,position:l<.5?"before":"after"})},handleTouchEnd:n=>{if(!e.value.isDragging)return null;if(!n.changedTouches[0])return null;const a={sourceRow:e.value.draggedRow,dropTarget:e.value.dropTarget,dropPosition:e.value.dropTarget.position};return t(),a},resetTouchState:t}}(),he=g(()=>{if(!L.value?.length)return[{field:"Label",sortable:G.value}];const e=L.value.filter(e=>"Label"!==e.field);return[{field:"Label",sortable:G.value},...e]}),be=g(()=>{let e=0;return W.forEach(t=>e+=t),e}),ye=g(()=>{const e=(t,n=0)=>t.flatMap(t=>{const a={...t,indentLevel:n},r=!!t.id&&o.isGroupExpanded(t.id);return Array.isArray(t.children)&&r&&t.children.length?[a,...e(t.children,n+1)]:[a]});return e(r.value)}),we=g(()=>0===A.value?{}:{height:Math.min(A.value,ye.value.length)*T.value+"px","overflow-y":"auto"}),xe=g(()=>he.value.reduce((e,t)=>(e[t.field]=!(!1===t.sortable||!(G.value||!G.value&&t.sortable)||!Se(t.field)&&!t.sortFn),e),{})),ke=g(()=>F.value?0:j.value?80+(O.value||25):80);let Ce=0;const Be=e=>{if(!_.value||"none"!==l.value.direction)return;if(Date.now()-Ce<500){const t=e.target;if(t.closest(".group-toggle-button")){const e=t.closest("[data-row-id]");if(e){const t=e.dataset.rowId;t&&o.toggleGroupExpansion(t)}}return void me()}const t=fe(e);if(t&&t.sourceRow&&t.dropTarget.row){let e=ye.value.findIndex(e=>e===t.dropTarget.row);"after"===t.dropTarget.position&&(e+=1);const n=ye.value.findIndex(e=>e===t.sourceRow);n<e&&(e-=1);const r={sourceRow:t.sourceRow,targetRow:t.dropTarget.row,newIndex:e,parentId:"child"===t.dropTarget.position?t.dropTarget.row.id:void 0},l=[...ye.value];l.splice(n,1),l.splice(e,0,t.sourceRow),o.updateRows(l),a("row-drop",r)}},Ee=e=>{H&&ae(e,(e,t)=>{W.set(e,t)})},Se=e=>["Id","Label","StartDate","EndDate","Duration","Progress"].includes(e),De=e=>e.children&&e.children.length>0?[{field:"Label",sortable:G.value}]:he.value,$e=e=>{const t=["g-label-column-row"];return P.value&&t.push(P.value(e)),Array.isArray(e.children)&&t.push("g-label-column-group"),t},Me=e=>{if(!_.value)return{};const t=K.value.dropTarget.row===e;return{"g-label-column-row-draggable":!0,"g-label-column-row-dragging":K.value.draggedRow===e,"g-label-column-row-drop-target":t,[`g-label-column-row-drop-${K.value.dropTarget.position}`]:t}},Te=(e,t)=>{if(!t)return{display:"flex",alignItems:"center",justifyContent:"center",width:"100%"};const n={display:"flex",alignItems:"center",width:"100%",position:"relative"};return Array.isArray(e.children)||e.indentLevel?e.indentLevel&&(n.paddingLeft=24*e.indentLevel+"px"):n.paddingLeft="24px",n},Ae=e=>{const t={display:"flex",alignItems:"center",width:"100%"};return e||(t.justifyContent="center",t.paddingLeft="0"),t},Le=(e,t)=>t&&"Label"===e?{width:"100%",minWidth:"100%",maxWidth:"100%",position:"relative",flexShrink:0,flexGrow:0}:{width:`${W.get(e)||p.value}px`,minWidth:`${W.get(e)||p.value}px`,maxWidth:`${W.get(e)||p.value}px`,position:"relative",flexShrink:0,flexGrow:0},Re=(e,t,n)=>{if(t.valueGetter)return t.valueGetter(e);switch(t.field){case"Id":return e.id??n+1;case"Label":return e.label;case"StartDate":{if(!e.bars.length)return"-";const t=e.bars.reduce((e,t)=>{const n=t[z.value];return!e||U(n).isBefore(U(e))?n:e},"");return X(t,I.value)}case"EndDate":{if(!e.bars.length)return"-";const t=e.bars.reduce((e,t)=>{const n=t[Y.value];return!e||U(n).isAfter(U(e))?n:e},"");return X(t,I.value)}case"Duration":{if(!e.bars.length)return"-";const t=e.bars.reduce((e,t)=>{const n=t[z.value];return!e||U(n).isBefore(U(e))?n:e},""),n=e.bars.reduce((e,t)=>{const n=t[Y.value];return!e||U(n).isAfter(U(e))?n:e},"");return ze(t,n)}case"Progress":{if(!e.bars.length)return"-";const t=e.bars.map(e=>e.ganttBarConfig.progress).filter(e=>void 0!==e);if(0===t.length)return"-";const n=t.reduce((e,t)=>e+t,0)/t.length;return`${Math.round(n)}%`}default:return""}},ze=(e,t)=>{const n=U(e),a=U(t);switch(R.value){case"hour":return`${a.diff(n,"hour")}h`;case"day":case"date":default:return`${a.diff(n,"day")}d`;case"week":return`${a.diff(n,"week")}w`;case"month":return`${a.diff(n,"month")}m`}},Ye=e=>{a("scroll",e.target.scrollTop)},Ie=e=>{if(!V.value||!N.value)return;const t=e.clientX-q.value,n=W.get(N.value)||p.value,a=Math.max(50,n+t);W.set(N.value,a),q.value=e.clientX},Pe=()=>{V.value=!1,N.value=null,document.removeEventListener("mousemove",Ie),document.removeEventListener("mouseup",Pe)};return C(()=>{he.value.forEach(e=>{W.has(e.field)||W.set(e.field,p.value)})}),t({setScroll:e=>{Z.value&&(Z.value.scrollTop=e)}}),(e,t)=>(v(),f("div",{class:"g-label-column",style:y({fontFamily:m(s),color:m(u).text,background:m(u).background,minWidth:"100%",flex:`0 0 ${be.value}px`,borderRight:`1px solid ${m(u).gridAndBorder}`})},[m(F)?M("",!0):(v(),f("div",{key:0,class:"g-label-column-header",style:y({background:m(u).primary,borderBottom:`1px solid ${m(u).gridAndBorder}`,height:`${ke.value}px`,minHeight:`${ke.value}px`})},[(v(!0),f(h,null,b(he.value,n=>{return v(),f(h,{key:n},[Se(n.field)||n.valueGetter?(v(),f("div",{key:0,class:w(["g-label-column-header-cell",{sortable:xe.value[n.field]}]),role:"columnheader",style:y(Le(n.field,!1))},[B("div",{class:"header-content",onClick:e=>xe.value[n.field]?m(i)(n.field):void 0},[B("span",Ke,[E(e.$slots,`label-column-title-${n.field.toLowerCase()}`,{},()=>[S(D("Label"===n.field&&m(d)?m(d):n.field),1)])]),xe.value[n.field]?(v(),f("span",Je,[$(m(se),{icon:(a=n.field,a!==l.value.column||"none"===l.value.direction?ce:"asc"===l.value.direction?ge:pe)},null,8,["icon"])])):M("",!0)],8,Ze),m(H)?(v(),f("div",{key:0,class:w(["column-resizer",{"is-dragging":V.value&&N.value===n.field,"is-touch-resizing":m(te).isResizing&&m(te).currentColumn===n.field}]),onMousedown:e=>((e,t)=>{V.value=!0,q.value=e.clientX,N.value=t,document.addEventListener("mousemove",Ie),document.addEventListener("mouseup",Pe)})(e,n.field),onTouchstart:e=>((e,t)=>{if(!H)return;const n=W.get(t)||p.value;ne(e,t,n)})(e,n.field),onTouchmove:Ee,onTouchend:t[0]||(t[0]=(...e)=>m(oe)&&m(oe)(...e)),onTouchcancel:t[1]||(t[1]=(...e)=>m(re)&&m(re)(...e))},null,42,Qe)):M("",!0)],6)):M("",!0)],64);var a}),128))],4)),B("div",{class:"g-label-column-rows",style:y(we.value),ref_key:"labelContainer",ref:Z,onScroll:Ye},[(v(!0),f(h,null,b(ye.value,(n,a)=>(v(),f("div",{key:`${n.id||n.label}_${a}`,"data-row-id":n.id,style:y({background:Array.isArray(n.children)?m(u).rowContainer:a%2==0?m(u).ternary:m(u).quartenary,height:`${m(T)}px`,borderBottom:`1px solid ${m(u).gridAndBorder}`,transform:m(le).draggedRow===n?`translateY(${m(le).currentY-m(le).startY}px)`:void 0,zIndex:m(le).draggedRow===n?1e3:void 0}),class:w([$e(n),Me(n),{"is-touch-dragging":m(le).draggedRow===n,"is-touch-drop-target":m(le).dropTarget.row===n,[`is-touch-drop-${m(le).dropTarget.position}`]:m(le).dropTarget.row===n}]),draggable:m(_),onDragstart:e=>m(J)(n,e),onDragover:e=>m(Q)(n,e),onDrop:t[2]||(t[2]=e=>m(ee)()),onTouchstart:e=>((e,t)=>{_.value&&"none"===l.value.direction&&(Ce=Date.now(),ie(e,t,e.currentTarget))})(e,n),onTouchmove:e=>((e,t)=>{_.value&&"none"===l.value.direction&&(Date.now()-Ce<500?me():ve(e,t,e.currentTarget))})(e,n),onTouchend:Be,onTouchcancel:t[3]||(t[3]=(...e)=>m(me)&&m(me)(...e))},[B("div",tt,[(v(!0),f(h,null,b(De(n),t=>(v(),f(h,{key:t.field},[Se(t.field)||t.valueGetter?(v(),f("div",{key:0,class:"g-label-column-cell",style:y(Le(t.field,Array.isArray(n.children)))},[B("div",{style:y(Ae("Label"===t.field))},[B("div",{style:y(Te(n,"Label"===t.field)),class:"cell-content"},["Label"===t.field&&Array.isArray(n.children)?(v(),f(h,{key:0},[n.children.length>0?(v(),f("button",{key:0,class:"group-toggle-button",onClick:e=>((e,t)=>{t.stopPropagation(),e.id&&o.toggleGroupExpansion(e.id)})(n,e)},[$(m(se),{icon:n.id&&m(o).isGroupExpanded(n.id)?m(ue):m(de),class:"group-icon"},null,8,["icon"])],8,nt)):(v(),f("span",at))],64)):M("",!0),B("span",ot,[Array.isArray(n.children)?E(e.$slots,`label-column-${t.field.toLowerCase()}-group`,{key:0,row:n,value:Re(n,t,a)},()=>[E(e.$slots,`label-column-${t.field.toLowerCase()}`,{row:n,value:Re(n,t,a)},()=>[S(D(Re(n,t,a)),1)])]):E(e.$slots,`label-column-${t.field.toLowerCase()}`,{key:1,row:n,value:Re(n,t,a)},()=>[S(D(Re(n,t,a)),1)])])],4)],4)],4)):M("",!0)],64))),128))])],46,et))),128))],36)],4))}});const lt=x(),it=3e5,st=e=>e.split(/(\s+|\.|\,)/).map(e=>new RegExp("^\\p{L}","u").test(e)?(e=>e?e.normalize("NFD").replace(new RegExp("^\\p{L}","u"),e=>e.toLocaleUpperCase()):e)(e):e).join("");function ut(t=Xe()){const{getHolidayInfo:n}=function(e){const{chartStartDayjs:t,chartEndDayjs:n}=Ve(e),a=x([]),o=new Le;return T(()=>e.holidayHighlight.value?.toUpperCase(),e=>{e?(e=>{o.init(e);const r=t.value.toDate(),l=n.value.toDate(),i=o.getHolidays(r),s=o.getHolidays(l),u=i.map(e=>({date:new Date(e.date),name:e.name,type:e.type})),d=s.map(e=>({date:new Date(e.date),name:e.name,type:e.type}));a.value=[...u,...d]})(e):a.value=[]},{immediate:!0}),{holidays:a,getHolidayInfo:e=>{const t=a.value.find(t=>t.date.toDateString()===e.toDateString());return t?{isHoliday:!0,holidayName:t.name,holidayType:t.type}:null}}}(t),{precision:a,holidayHighlight:o,locale:r,timeaxisEvents:l,baseUnitWidth:i,defaultZoom:s}=t,u=g(()=>t.maxZoom?.value??10),d=g(()=>t.minZoom?.value??1),c=g(()=>t.fixedPrecision?.value??!1),p=x(a.value),v=x(s.value),f=x([]),m={lower:/* @__PURE__ */new Map,upper:/* @__PURE__ */new Map,events:/* @__PURE__ */new Map},h={hour:"HH",date:"DD.MMM",day:"DD.MMM",week:"WW",month:"MMMM YYYY",year:"YYYY"},b=e=>"isoWeek"===e?h.week:h[e]||h.day,y=["hour","day","week","month"],w=g(()=>i.value*v.value),k={hour:60,day:1440,date:1440,week:10080,month:43200},C=g(()=>w.value/(k[p.value]??1440)),B=g(()=>({hour:"day",day:"month",date:"month",week:"month",month:"year"}[p.value]||"month")),E=(e,t,n,a)=>`${e.valueOf()}-${t.valueOf()}-${n}-${a}`,S=(e,t)=>{const n=e.get(t);return n?Date.now()-n.timestamp>it?(e.delete(t),null):n.units:null},D=(e,t,n)=>{e.set(t,{timestamp:Date.now(),units:n})},$=e=>({hour:"hour",day:"day",date:"day",week:"week",month:"month",year:"year",isoWeek:"week"}[e]),M=(e,t,a)=>{const r=e.toDate(),l=o.value?n(r):null,i=e.format(t);return{label:st(i),value:String(e),date:r,width:a,isHoliday:l?.isHoliday||!1,holidayName:l?.holidayName,holidayType:l?.holidayType}},A=()=>{if(!l.value?.length)return void(f.value=[]);const{chartStartDayjs:n,chartEndDayjs:a}=Ve(t),o=a.value.diff(n.value,"minutes"),r=(i=a.value,s=v.value,`${n.value.valueOf()}-${i.valueOf()}-${s}`);var i,s;const u=(e=>{const t=m.events.get(e);return t?Date.now()-t.timestamp>it?(m.events.delete(e),null):t.events:null})(r);if(u)return void(f.value=u);const d=l.value.map(t=>{const r=e(t.startDate),l=e(t.endDate);if(l.isBefore(n.value)||r.isAfter(a.value))return{...t,width:"0px",xPosition:0};const i=r.isBefore(n.value)?n.value:r,s=l.isAfter(a.value)?a.value:l,u=i.diff(n.value,"minutes"),d=s.diff(n.value,"minutes"),c=u/o*lt.value,g=Math.max(d/o*lt.value-c,2);return{...t,width:`${g}px`,xPosition:c}});var c;f.value=d,c=d,m.events.set(r,{timestamp:Date.now(),events:c})};T(()=>a.value,()=>{p.value=a.value,v.value=s.value}),T([()=>o.value,()=>r.value],()=>{e.locale(r.value),m.lower.clear(),m.upper.clear()}),T(lt,()=>{A()}),T([()=>l.value,()=>t.chartStart.value,()=>t.chartEnd.value],()=>{A()},{deep:!0});const L=g(()=>{const{chartStartDayjs:e,chartEndDayjs:n}=Ve(t),a=E(e.value,n.value,p.value,v.value);let o=S(m.lower,a);if(!o){o=[];const t="week"===p.value?"isoWeek":$(p.value);let r=e.value.clone();for(;r.isBefore(n.value);){const e=r.startOf(t).add(1,$(p.value)),a=(e.isAfter(n.value)?n.value:e).diff(r,"minute",!0)*C.value;o.push(M(r,b(p.value),`${a}px`)),r=e}D(m.lower,a,o)}const r=E(e.value,n.value,B.value,v.value);let i=S(m.upper,r);if(!i){i=[];let t=e.value.startOf($(B.value));for(;t.isBefore(n.value);){const a=t.add(1,$(B.value)),o=t.isBefore(e.value)?e.value:t,r=(a.isAfter(n.value)?n.value:a).diff(o,"minute",!0)*C.value;r>0&&i.push(M(t,b(B.value),`${r}px`)),t=a}D(m.upper,r,i)}l.value?.length&&0===f.value.length&&A();const s=R();return z(),{result:{upperUnits:i,lowerUnits:o,events:f.value},globalMinuteStep:s}}),R=()=>{if(!t.enableMinutes.value||"hour"!==p.value)return[];const e=Math.floor(w.value/16);let n;if(e>=60)n=1;else if(e>=12)n=5;else if(e>=6)n=10;else if(e>=4)n=15;else{if(!(e>=2))return["00"];n=30}return Array.from({length:60/n},(e,t)=>(t*n).toString().padStart(2,"0"))},z=()=>{const e=Date.now();for(const[t,n]of m.lower.entries())e-n.timestamp>it&&m.lower.delete(t);for(const[t,n]of m.upper.entries())e-n.timestamp>it&&m.upper.delete(t);for(const[t,n]of m.events.entries())e-n.timestamp>it&&m.events.delete(t)},Y=g(()=>c.value?v.value<u.value:!(p.value===a.value&&v.value>=u.value)),I=g(()=>c.value?v.value>d.value:!(v.value<=d.value&&p.value===y[y.length-1]));return T([()=>t.chartStart.value,()=>t.chartEnd.value,p,v,()=>t.timeaxisEvents.value],()=>{m.lower.clear(),m.upper.clear(),m.events.clear(),A()}),A(),{timeaxisUnits:L,internalPrecision:p,zoomLevel:v,adjustZoomAndPrecision:e=>{if(c.value)e&&v.value<u.value?v.value+=1:!e&&v.value>d.value&&(v.value-=1);else if(e)if(v.value>=u.value){const e=(e=>{const t=y.indexOf(e),n=y.indexOf(a.value);return t>0&&t>n?y[t-1]:e})(p.value);e!==p.value&&(p.value=e,v.value=d.value)}else v.value+=1;else if(v.value<=d.value){const e=(e=>{const t=y.indexOf(e);return t<y.length-1?y[t+1]:e})(p.value);e!==p.value&&(p.value=e,v.value=u.value)}else v.value-=1},canZoomIn:Y,canZoomOut:I}}const dt={key:1,class:"g-gantt-event-tooltip-content"},ct={class:"g-gantt-event-tooltip-title"},gt={class:"g-gantt-event-tooltip-time"},pt={key:0,class:"g-gantt-event-tooltip-description"},vt={key:1,class:"g-gantt-holiday-tooltip-content"},ft=/* @__PURE__ */p({__name:"GGanttTooltip",props:{modelValue:{type:Boolean},type:{},bar:{},event:{},unit:{},targetElement:{}},setup(e){const t={hour:"HH:mm",day:"DD. MMM HH:mm",date:"DD. MMMM YYYY",month:"DD. MMMM YYYY",week:"DD. MMMM YYYY (WW)"},n=e,{bar:a,event:o,unit:r,targetElement:l,type:i}=A(n),{precision:s,font:u,barStart:d,barEnd:c,rowHeight:p,milestones:b,colors:k,dateFormat:C,showPlannedBars:P}=Xe(),H=x("0px"),_=x("0px"),{toDayjs:F,format:G}=Ve();T([()=>n.bar,()=>n.event,()=>n.unit,()=>n.targetElement,()=>n.type],async()=>{if(await L(),"bar"===i.value&&a.value){const e=a.value.ganttBarConfig.id||"";if(!e)return;const t=document.getElementById(e),{top:n,left:o}=t?.getBoundingClientRect()||{top:0,left:0},r=Math.max(o,10);H.value=n+p.value-10+"px",_.value=`${r}px`}else if("event"===i.value&&o.value&&l.value){const e=l.value.getBoundingClientRect();H.value=e.top-95+"px",_.value=`${e.left+e.width/2}px`}else if("holiday"===i.value&&r.value?.holidayName&&l.value){const e=l.value.getBoundingClientRect();H.value=e.top-30+"px",_.value=`${e.left+e.width/2}px`}},{deep:!0,immediate:!0});const j=g(()=>a.value?.ganttBarConfig.style?.background||"cadetblue"),O=g(()=>a.value?.[d.value]),U=g(()=>a.value?.[c.value]),X=g(()=>{if(!a.value)return"";const e=b.value.find(e=>e.id===a.value?.ganttBarConfig.milestoneId),n=t[s.value];let o=`${F(O.value).format(n)} – ${F(U.value).format(n)}${e?` - (${e.name})`:""}`;return P.value&&a.value.start_planned&&a.value.end_planned&&(o+=`\nPlanned: ${F(a.value.start_planned).format(n)} – ${F(a.value.end_planned).format(n)}`),o}),W=e=>G(e,C.value),V=g(()=>{switch(i.value){case"bar":default:return"g-gantt-tooltip";case"event":return"g-gantt-event-tooltip";case"holiday":return"g-gantt-holiday-tooltip"}}),q=g(()=>{const e={top:H.value,left:_.value,fontFamily:u.value};switch(i.value){case"bar":case"holiday":default:return e;case"event":return{...e,background:k.value.primary,color:k.value.text}}});return(t,n)=>(v(),R(z,{to:"body"},[$(Y,{name:"g-fade",mode:"out-in"},{default:I(()=>[e.modelValue&&"bar"===m(i)&&m(a)?(v(),f("div",{key:0,class:w(V.value),style:y(q.value)},[B("div",{class:"g-gantt-tooltip-color-dot",style:y({background:j.value})},null,4),t.$slots.default?E(t.$slots,"default",{key:0,bar:m(a),barStart:O.value,barEnd:U.value,barStartPlanned:m(a)?.start_planned,barEndPlanned:m(a)?.end_planned}):(v(),f(h,{key:1},[S(D(X.value),1)],64))],6)):e.modelValue&&"event"===m(i)&&m(o)?(v(),f("div",{key:1,class:w(V.value),style:y(q.value)},[t.$slots["event-tooltip"]?E(t.$slots,"event-tooltip",{key:0,event:m(o),formatDate:W}):(v(),f("div",dt,[B("div",ct,D(m(o).label),1),B("div",gt,D(W(m(o).startDate))+" - "+D(W(m(o).endDate)),1),m(o).description?(v(),f("div",pt,D(m(o).description),1)):M("",!0)]))],6)):e.modelValue&&"holiday"===m(i)&&m(r)?.holidayName?(v(),f("div",{key:2,class:w(V.value),style:y(q.value)},[t.$slots["holiday-tooltip"]?E(t.$slots,"holiday-tooltip",{key:0,unit:m(r)}):(v(),f("div",vt,D(m(r).holidayName),1))],6)):M("",!0)]),_:3})]))}}),mt={class:"g-timeunits-container"},ht=["onMouseenter"],bt={class:"g-timeunits-container"},yt=["onMouseenter"],wt={class:"g-timeunit-min"},xt={class:"label-unit"},kt={key:0,class:"g-timeunit-step"},Ct={class:"label-unit"},Bt=["onMouseenter","onClick"],Et={class:"g-timeaxis-event-label"},St=/* @__PURE__ */p({__name:"GGanttTimeaxis",props:{timeaxisUnits:{},internalPrecision:{}},emits:["dragStart","drag","dragEnd","click-event"],setup(t,{expose:n,emit:a}){const o=t,{timeaxisUnits:r,internalPrecision:l}=A(o),i=a,s=x(null),u=x(),d=x(!1),c=x(null),p=x(),w=x(!1),k=x(null),{precision:C,colors:T,holidayHighlight:L,dayOptionLabel:R,enableMinutes:z,showEventsAxis:Y,eventsAxisHeight:G}=Xe(),{toDayjs:j}=Ve(),O=e=>{i("dragStart",e)},U=g(()=>"hour"===l.value?"upper":"day"===l.value?"lower":null),X=(e,t)=>L.value&&U.value===t&&e.isHoliday?{background:T.value.holidayHighlight||"#ffebee"}:{},W=(e,t,n)=>{L.value&&U.value!==t&&e.isHoliday||(u.value=e,c.value=n.currentTarget,d.value=!0)},V=()=>{d.value=!1,u.value=void 0,c.value=null},q=()=>{w.value=!1,p.value=void 0,k.value=null},N=(e,t)=>{if(U.value!==t||!R.value)return e.label;let n="";for(const a of R.value)switch(n&&(n+=" "),a){case"day":n+=e.label;break;case"doy":n+=`(${j(e.date).dayOfYear()})`;break;case"name":n+=st(j(e.date).format("dd")[0]);break;case"number":n+=j(e.date).date()}return n},Z=g(()=>G.value||25),K=g(()=>Y.value&&r.value.result.events.length>0),J=g(()=>{if(!r.value.result.events.length)return[];const{chartStartDayjs:t,chartEndDayjs:n}=Ve(),a=n.value.diff(t.value,"minutes");return r.value.result.events.map(o=>{const r=e(o.startDate),l=e(o.endDate),i=r.isBefore(t.value)?t.value:r,s=l.isAfter(n.value)?n.value:l,u=i.diff(t.value,"minutes"),d=s.diff(t.value,"minutes"),c=u/a*lt.value,g=Math.max((d-u)/a*lt.value,2);return{...o,calculatedWidth:`${g}px`,calculatedX:c}})});return n({timeaxisElement:s}),(e,t)=>(v(),f("div",{ref_key:"timeaxisElement",ref:s,class:"g-timeaxis",onMousedown:O,role:"tablist","aria-label":"Time Axis",style:y({borderBottom:`1px solid ${m(T).gridAndBorder}`,height:K.value?`${80+Z.value}px`:"80px"})},[B("div",mt,[(v(!0),f(h,null,b(m(r).result.upperUnits,(t,n)=>(v(),f("div",{key:t.date.toISOString(),class:"g-upper-timeunit",style:y({background:n%2==0?m(T).primary:m(T).secondary,...X(t,"upper"),color:m(T).text,width:t.width}),onMouseenter:e=>W(t,"upper",e),onMouseleave:V},[E(e.$slots,"upper-timeunit",{label:N(t,"upper"),value:t.value,date:t.date},()=>[S(D(N(t,"upper")),1)])],44,ht))),128))]),B("div",bt,[(v(!0),f(h,null,b(m(r).result.lowerUnits,(t,n)=>(v(),f("div",{key:t.date.toISOString(),class:"g-timeunit",style:y({background:n%2==0?m(T).ternary:m(T).quartenary,...X(t,"lower"),color:m(T).text,flexDirection:"hour"===m(C)?m(z)?"column":"row-reverse":"row",alignItems:"center",width:t.width}),onMouseenter:e=>W(t,"lower",e),onMouseleave:V},[B("div",wt,[E(e.$slots,"timeunit",{label:N(t,"lower"),value:t.value,date:t.date},()=>[B("div",xt,D(N(t,"lower")),1)]),"hour"===m(C)?(v(),f("div",{key:0,class:"g-timeaxis-hour-pin",style:y({background:m(T).text})},null,4)):M("",!0)]),"hour"===m(C)&&m(z)?(v(),f("div",kt,[(v(!0),f(h,null,b(m(r).globalMinuteStep,e=>(v(),f("div",{key:`${t.label}-${e}`,style:y({background:n%2==0?m(T).ternary:m(T).quartenary,color:m(T).text,display:"flex",flexGrow:1,flexDirection:"row-reverse",alignItems:"center"})},[B("div",Ct,D(e),1),B("div",{class:"g-timeaxis-hour-pin",style:y({background:m(T).text})},null,4)],4))),128))])):M("",!0)],44,yt))),128))]),K.value?(v(),f("div",{key:0,class:"g-events-container",style:y({height:`${Z.value}px`,background:m(T).background})},[(v(!0),f(h,null,b(J.value,t=>(v(),f("div",{key:t.id,class:"g-timeaxis-event",style:y({left:`${t.calculatedX}px`,width:t.calculatedWidth,backgroundColor:t.backgroundColor||m(T).primary,color:t.color||m(T).text,borderColor:t.color||m(T).primary}),onMouseenter:e=>((e,t)=>{p.value=e,k.value=t.currentTarget,w.value=!0})(t,e),onMouseleave:q,onClick:P(e=>(e=>{i("click-event",e)})(t),["stop"])},[B("div",Et,[E(e.$slots,"timeaxis-event",{event:t},()=>[S(D(t.label),1)])])],44,Bt))),128))],4)):M("",!0),$(ft,{type:"holiday","model-value":d.value,unit:u.value,"target-element":c.value},H({_:2},[e.$slots["holiday-tooltip"]?{name:"holiday-tooltip",fn:I(t=>[E(e.$slots,"holiday-tooltip",_(F(t)))]),key:"0"}:void 0]),1032,["model-value","unit","target-element"]),$(ft,{type:"event","model-value":w.value,event:p.value,"target-element":k.value},H({_:2},[e.$slots["event-tooltip"]?{name:"event-tooltip",fn:I(t=>[E(e.$slots,"event-tooltip",_(F(t)))]),key:"0"}:void 0]),1032,["model-value","event","target-element"])],36))}});function Dt(e=Xe()){const{dateFormat:t}=e,{chartStartDayjs:n,chartEndDayjs:a,toDayjs:o,format:r}=Ve(e),l=x(/* @__PURE__ */new Map),i=x(/* @__PURE__ */new Map),s=x(""),u=g(()=>a.value.diff(n.value,"minutes"));return T([n,a,lt],()=>{const e=`${n.value.format()}-${a.value.format()}-${lt.value}`;s.value!==e&&(s.value=e,l.value.clear(),i.value.clear())},{immediate:!0}),{mapTimeToPosition:e=>{const t=l.value.get(e);if(void 0!==t)return t;const a=lt.value||0,r=o(e).diff(n.value,"minutes",!0),i=Math.round(r/u.value*a);if(l.value.set(e,i),l.value.size>1e3){const e=l.value.keys().next().value;e&&l.value.delete(e)}return i},mapPositionToTime:e=>{const a=e.toString(),o=i.value.get(a);if(void 0!==o)return o;const l=r(n.value.add(e/(lt.value||0)*u.value,"minutes"),t.value);if(i.value.set(a,l),i.value.size>1e3){const e=i.value.keys().next().value;e&&i.value.delete(e)}return l}}}const $t=/* @__PURE__ */p({__name:"GGanttCurrentTime",setup(t){const{mapTimeToPosition:n}=Dt(),a=x(e()),{colors:o,dateFormat:r,currentTimeLabel:l,utc:i}=Xe(),s=x();te(()=>{const t=i.value?e().utc():e();a.value=t;const o=r.value||"YYYY-MM-DD HH:mm:ss";s.value=n(e(a.value,o).format(o))},1e3);const u=g(()=>i.value?`${l.value} (UTC)`:l.value);return(e,t)=>(v(),f("div",{class:"g-grid-current-time",style:y({left:`${s.value}px`})},[B("div",{class:"g-grid-current-time-marker",style:y({border:`1px dashed ${m(o).markerCurrentTime}`})},null,4),B("span",{class:"g-grid-current-time-text",style:y({color:m(o).markerCurrentTime})},[E(e.$slots,"current-time-label",{},()=>[S(D(u.value),1)])],4)],4))}}),Mt={class:"gantt-connector",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",zIndex:1001,overflow:"visible"}},Tt=["id"],At=["fill"],Lt=["id"],Rt=["stop-color"],zt=["stop-color"],Yt=["stop-color"],It=["stop-color"],Pt=["dur"],Ht=["dur"],_t=["d","stroke","stroke-width","stroke-dasharray"],Ft=["x","y"],Gt=["cx","cy"],jt=["cx","cy"],Ot=(e,t)=>{const n=e.__vccOpts||e;for(const[a,o]of t)n[a]=o;return n},Ut=/* @__PURE__ */Ot(/* @__PURE__ */p({__name:"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(e){const t=e,{enableConnectionDeletion:n}=Xe(),a=g(()=>t.animated?`connector-animated-${t.pattern}-${t.animationSpeed}`:""),o=g(()=>`marker-${t.sourceBar.id}-${t.targetBar.id}`),r=g(()=>"bidirectional"===t.marker||"forward"===t.marker),l=g(()=>"bidirectional"===t.marker),i=g(()=>4),s=g(()=>t.label&&(t.labelAlwaysVisible||t.isSelected)),u=g(()=>({fill:t.color,fontWeight:"bold",...t.labelStyle})),d=g(()=>{const{sourceBar:e,targetBar:n,relation:a}=t;switch(a){case"FS":default:return{sourceX:e.x+e.width,sourceY:e.y+e.height/2,targetX:n.x,targetY:n.y+n.height/2};case"SS":return{sourceX:e.x,sourceY:e.y+e.height/2,targetX:n.x,targetY:n.y+n.height/2};case"FF":return{sourceX:e.x+e.width,sourceY:e.y+e.height/2,targetX:n.x+n.width,targetY:n.y+n.height/2};case"SF":return{sourceX:e.x,sourceY:e.y+e.height/2,targetX:n.x+n.width,targetY:n.y+n.height/2}}}),c=g(()=>{const{sourceX:e,sourceY:n,targetX:a,targetY:o}=d.value,{relation:s,type:u}=t,c=o-n,g="FF"===s||"SF"===s?20:0,p=a-e,v=Math.abs(p)<20*("FS"===s?1:2),f=v?Math.max(20,Math.abs(p)/2):20,m=0===c&&v?20:0,h=l.value?i.value:0,b=r.value?i.value:0;switch(u){case"straight":if(v){const t=(n+o)/2+m*(n>o?-1:1);return`M ${e+h},${n}\n                Q ${e+f},${t} ${(e+a)/2},${t}\n                Q ${a-f},${t} ${a-b},${o}`}return`M ${e+h},${n} L ${a-b},${o}`;case"squared":return"FS"===s?`M ${e+h},${n}\n                  h ${f/2}\n                  v ${c}\n                  h ${p-f/2-b}`:"SS"===s?`M ${e+h},${n}\n                  h ${-f/2}\n                  v ${c}\n                  h ${p+f/2-b}`:"FF"===s?`M ${e+h},${n}\n                h ${f/2}\n                v ${c/2}\n                h ${p+f/2}\n                v ${c/2}\n                h ${-f/2-b}`:"SF"===s?`M ${e+h},${n}\n                h ${-f/2}\n                v ${c/2}\n                h ${p+1.5*f}\n                v ${c/2}\n                h ${-f/2-b}`:`M ${e+h},${n}\n              h ${f}\n              v ${c}\n              h ${p-f-b}`;default:let t=Math.max(Math.abs(p)/3,1.5*f);if(v&&(t=Math.max(t,2*f)),"FF"===s||"SF"===s){const t=a+g;return`M ${e+(l.value?h:0)},${n}\n                C ${t},${n}\n                  ${t},${o}\n                  ${a+(r.value?b:0)},${o}`}{let i,u;switch(s){case"FS":default:i=e+t,u=a-t;break;case"SS":i=e-t,u=a-t}return`M ${e+(l.value?h:0)},${n}\n                C ${i},${n}\n                  ${u},${o}\n                  ${a-(r.value?b:0)},${o}`}}}),p=g(()=>{if(!t.animated)switch(t.pattern){case"dash":return"8,8";case"dot":return"2,6";case"dashdot":return"12,6,3,6";default:return""}}),b=g(()=>t.isSelected&&n.value?1.5*t.strokeWidth:t.strokeWidth),x=g(()=>{const{sourceX:e,sourceY:t,targetX:n,targetY:a}=d.value;return{source:{x:e,y:t},target:{x:n,y:a}}});return(t,i)=>(v(),f("svg",Mt,[B("defs",null,[B("marker",{id:o.value,viewBox:"0 0 10 10",refX:"5",refY:"5",markerWidth:"6",markerHeight:"6",orient:"auto-start-reverse"},[B("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:e.color},null,8,At)],8,Tt),e.animated&&"solid"===e.pattern?(v(),f("linearGradient",{key:0,id:`gradient-${e.sourceBar.id}-${e.targetBar.id}`,gradientUnits:"userSpaceOnUse",x1:"0%",y1:"0%",x2:"100%",y2:"0%"},[B("stop",{offset:"0%","stop-color":e.color,"stop-opacity":"0.3"},null,8,Rt),B("stop",{offset:"45%","stop-color":e.color,"stop-opacity":"1"},null,8,zt),B("stop",{offset:"55%","stop-color":e.color,"stop-opacity":"1"},null,8,Yt),B("stop",{offset:"100%","stop-color":e.color,"stop-opacity":"0.3"},null,8,It),B("animate",{attributeName:"x1",from:"-100%",to:"100%",dur:"slow"===e.animationSpeed?"4s":"fast"===e.animationSpeed?"1s":"2s",repeatCount:"indefinite"},null,8,Pt),B("animate",{attributeName:"x2",from:"0%",to:"200%",dur:"slow"===e.animationSpeed?"4s":"fast"===e.animationSpeed?"1s":"2s",repeatCount:"indefinite"},null,8,Ht)],8,Lt)):M("",!0)]),B("path",{d:c.value,fill:"none",stroke:e.animated&&"solid"===e.pattern?`url(#gradient-${e.sourceBar.id}-${e.targetBar.id})`:e.color,"stroke-width":b.value,"stroke-dasharray":p.value,class:w(["connector-path",a.value,{selected:e.isSelected&&m(n)},`connector-relation-${e.relation||"FS"}`]),style:y({markerStart:l.value?`url(#${o.value})`:"none",markerEnd:r.value?`url(#${o.value})`:"none",cursor:m(n)?"pointer":"inherit",pointerEvents:m(n)?"all":"none"})},null,14,_t),s.value?(v(),f("text",{key:0,x:(x.value.source.x+x.value.target.x)/2-50,y:(x.value.source.y+x.value.target.y)/2-20,class:"connection-label-container","text-anchor":"middle",style:y({pointerEvents:"none",...u.value})},D(e.label),13,Ft)):M("",!0),e.isSelected&&m(n)?(v(),f(h,{key:1},[B("circle",{cx:x.value.source.x,cy:x.value.source.y,r:"6",fill:"white",class:"connection-endpoint"},null,8,Gt),B("circle",{cx:x.value.target.x,cy:x.value.target.y,r:"6",fill:"white",class:"connection-endpoint"},null,8,jt)],64)):M("",!0)]))}}),[["__scopeId","data-v-c4efb6f2"]]),Xt={class:"g-gantt-milestone-tooltip-title"},Wt={class:"g-gantt-milestone-tooltip-date"},Vt={class:"g-gantt-milestone-tooltip-description"},qt=/* @__PURE__ */p({__name:"GGanttMilestone",props:{milestone:{}},setup(t){const n=t,{mapTimeToPosition:a}=Dt(),{colors:o}=Xe(),r=x(!1),l=x({x:0,y:0}),i=g(()=>{const t=e(n.milestone.date);return t.hour()||t.minute()?n.milestone.date:t.hour(12).minute(0).format("YYYY-MM-DD HH:mm")}),s=g(()=>a(i.value)),u=g(()=>n.milestone.color?{label:{background:n.milestone.color,color:"#000",border:`2px solid ${n.milestone.color}`},marker:{borderLeft:`2px solid ${n.milestone.color}`}}:{label:{background:o.value.primary,color:o.value.text,border:"none"},marker:{borderLeft:`2px solid ${o.value.markerCurrentTime}`}}),d=e=>{const t=e.target.getBoundingClientRect();l.value={x:t.left,y:t.top+10},r.value=!0},c=()=>{r.value=!1};return(e,n)=>(v(),f("div",{class:"g-gantt-milestone",style:y({left:`${s.value}px`}),onMouseenter:d,onMouseleave:c},[E(e.$slots,`milestone-${t.milestone.id}`,{milestone:t.milestone,styleConfig:u.value,position:s.value},()=>[E(e.$slots,"milestone",{milestone:t.milestone,styleConfig:u.value,position:s.value},()=>[B("div",{class:"g-gantt-milestone-label",style:y(u.value.label)},D(t.milestone.name),5)])]),B("div",{class:"g-gantt-milestone-marker",style:y(u.value.marker)},null,4),(v(),R(z,{to:"body"},[$(Y,{name:"g-fade",mode:"out-in"},{default:I(()=>[r.value?(v(),f("div",{key:0,class:"g-gantt-milestone-tooltip",style:y({top:`${l.value.y}px`,left:`${l.value.x}px`,background:m(o).primary,color:m(o).text})},[B("div",Xt,D(t.milestone.name),1),B("div",Wt,D(t.milestone.date),1),B("div",Vt,D(t.milestone.description),1)],4)):M("",!0)]),_:1})]))],36))}});function Nt(){const e=c(_e);if(!e)throw Error("Failed to inject emitBarEvent!");return e}function Zt(){const e=(e,t)=>{const n=document.getElementById(e);return n?n.querySelector(`#${CSS.escape(t)}`):null};return{findBarElement:e,findAllBarElements:e=>{const t=document.getElementById(e);return t?t.querySelectorAll(".g-gantt-bar"):document.querySelectorAll(".non-existent")},barExistsInGantt:(t,n)=>!!e(t,n)}}function Kt(t,n,a){const{barStart:o,barEnd:r,dateFormat:l,pushOnOverlap:i,pushOnConnect:s}=t,u=/* @__PURE__ */new Set,d=e=>{const t=a.format(e,l.value);return"string"==typeof t?t:t.toISOString()},c=(n,o)=>{if(!n.ganttBarConfig.milestoneId||!t.milestones.value)return!0;const r=t.milestones.value.find(e=>e.id===n.ganttBarConfig.milestoneId);if(!r)return!0;const l=a.toDayjs(o),i=e(r.date);let s=i;return i.hour()||i.minute()||(s=a.toDayjs(i.hour(23).minute(59).format("YYYY-MM-DD HH:mm"))),l.isSameOrBefore(s)},g=()=>{const e=t=>{let n=[...t.bars];return t.children?.length&&t.children.forEach(t=>{n=[...n,...e(t)]}),n};return n.rows.value.flatMap(t=>e(t))},p=(e,t,n,l=!0)=>{if(u.has(e.ganttBarConfig.id))return{success:!0,affectedBars:/* @__PURE__ */new Set};if(!c(e,n))return{success:!1,affectedBars:/* @__PURE__ */new Set};u.add(e.ganttBarConfig.id);const i=/* @__PURE__ */new Set,s=e[o.value],f=e[r.value];if(e[o.value]=t,e[r.value]=n,e.ganttBarConfig.bundle&&l){const n=g().filter(t=>t.ganttBarConfig.bundle===e.ganttBarConfig.bundle&&t!==e),l=a.toDayjs(t).diff(a.toDayjs(s),"minutes");for(const t of n){const n=d(a.toDayjs(t[o.value]).add(l,"minutes")),c=d(a.toDayjs(t[r.value]).add(l,"minutes")),g=p(t,n,c,!1);if(!g.success)return e[o.value]=s,e[r.value]=f,u.delete(e.ganttBarConfig.id),{success:!1,affectedBars:/* @__PURE__ */new Set};g.affectedBars.forEach(e=>i.add(e))}}return v(e,i).success?(l&&u.clear(),i.add(e),{success:!0,affectedBars:i}):(e[o.value]=s,e[r.value]=f,u.delete(e.ganttBarConfig.id),{success:!1,affectedBars:/* @__PURE__ */new Set})},v=(e,t)=>{const n=i.value?m(e):[],l=s.value?h(e):[],u=[.../* @__PURE__ */new Set([...n,...l])];for(const i of u){if(i.ganttBarConfig.immobile)return{success:!1};const{shouldMove:n,minutesToMove:l,direction:s}=f(e,i);if(!n)continue;const u=d("left"===s?a.toDayjs(i[o.value]).subtract(l,"minutes"):a.toDayjs(i[o.value]).add(l,"minutes")),g=d("left"===s?a.toDayjs(i[r.value]).subtract(l,"minutes"):a.toDayjs(i[r.value]).add(l,"minutes"));if(!c(i,g))return{success:!1};const v=p(i,u,g,!1);if(!v.success)return{success:!1};t.add(i),v.affectedBars.forEach(e=>t.add(e))}return{success:!0}},f=(e,t)=>{const n=a.toDayjs(e[o.value]),l=a.toDayjs(e[r.value]),i=a.toDayjs(t[o.value]),s=a.toDayjs(t[r.value]);if(t.ganttBarConfig.immobile&&(n.isBefore(s)&&l.isAfter(i)||l.isAfter(i)&&n.isBefore(s)))return{shouldMove:!1,minutesToMove:0,direction:"right"};if(l.isSameOrBefore(i)||n.isSameOrAfter(s))return{shouldMove:!1,minutesToMove:0,direction:"right"};const u=n.isBefore(i)?"right":"left";let d=0;return d="right"===u?l.diff(i,"minutes",!0):s.diff(n,"minutes",!0),{shouldMove:!0,minutesToMove:Math.abs(d),direction:u}},m=e=>{const t=(e,n)=>{for(const a of n){if(a.bars.includes(e))return a;if(a.children?.length){const n=t(e,a.children);if(n)return n}}return null},l=t(e,n.rows.value);return l?l.bars.filter(t=>{if(t===e||!1===t.ganttBarConfig.pushOnOverlap)return!1;if(t.ganttBarConfig.id.startsWith("group-"))return!1;const n=a.toDayjs(e[o.value]),l=a.toDayjs(e[r.value]),i=a.toDayjs(t[o.value]),s=a.toDayjs(t[r.value]);return n.isBefore(s)&&l.isAfter(i)||i.isBefore(l)&&s.isAfter(n)}):[]},h=e=>{const t=g(),n=[];return e.ganttBarConfig.connections?.forEach(e=>{const a=t.find(t=>t.ganttBarConfig.id===e.targetId);a&&!1!==a.ganttBarConfig.pushOnConnect&&n.push(a)}),t.forEach(t=>{t.ganttBarConfig.connections?.forEach(a=>{a.targetId===e.ganttBarConfig.id&&!1!==t.ganttBarConfig.pushOnConnect&&n.push(t)})}),n};return{moveBar:p,findOverlappingBars:m,findConnectedBars:h,getAllBars:g}}const Jt=()=>{const e=Xe(),t=Nt(),n=Ve(e),{barStart:a,barEnd:o}=e,r=c("useRows"),l=c(Oe),i=Kt(e,r,n),s={movedBars:/* @__PURE__ */new Map,isDragging:!1},u=(e,n)=>{const a=e.ganttBarConfig.bundle;if(!a)return;const o=(e=>{const t=[];return null!=e&&i.getAllBars().forEach(n=>{n.ganttBarConfig.bundle===e&&t.push(n)}),t})(a);o.forEach(t=>{d(t,t===e).initiateDrag(n),v(t)}),t({...n,type:"dragstart"},e)},d=(t,n=!0)=>({initiateDrag:a=>{const{initDrag:o}=function(e,t=()=>null,n=()=>null,a,o,r){const{findBarElement:l}=Zt(),{barStart:i,barEnd:s}=a,u=x(!1);let d,c=0,g=0;const{mapPositionToTime:p}=Dt(a),{toDayjs:v}=Ve(a),f=()=>{const t=l(r,e.ganttBarConfig.id);let n=t,a=null;for(;n&&!a;){const e=n.closest(".g-gantt-row-bars-container");e&&(a=e.getBoundingClientRect()),n=n.parentElement}return{barElement:t,barContainer:a}},m=n=>{const{barElement:a,barContainer:r}=f();if(!a||!r)return;const l=a.getBoundingClientRect().width,u=Math.max(0,n.clientX-c-r.left),d=u+l,g=p(u),v=p(d),m=e[i.value],h=e[s.value];if(!o.moveBar(e,g,v).success)return e[i.value]=m,e[s.value]=h,void y(n);t(n,e)},h=n=>{const{barContainer:a}=f();if(!a)return;const r=p(n.clientX-a.left);v(r).isSameOrAfter(v(e[s.value]))||o.moveBar(e,r,e[s.value]).success&&t(n,e)},b=n=>{const{barContainer:a}=f();if(!a)return;const r=p(n.clientX-a.left);v(r).isSameOrBefore(v(e[i.value]))||o.moveBar(e,e[i.value],r).success&&t(n,e)},y=t=>{u.value=!1,document.body.style.cursor="",window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",y),n(t,e)};return{isDragging:u,initDrag:t=>{if(e.ganttBarConfig.immobile)return;const n=l(r,e.ganttBarConfig.id);if(!n)return;const a=n.getBoundingClientRect();switch(g=a.left,c=t.clientX-g,t.target.className){case"g-gantt-bar-handle-left":document.body.style.cursor="ew-resize",d=h;break;case"g-gantt-bar-handle-right":document.body.style.cursor="ew-resize",d=b;break;default:d=m}u.value=!0,window.addEventListener("mousemove",d),window.addEventListener("mouseup",y)}}}(t,e=>g(e,t),n?p:()=>null,e,i,l);o(a)}}),g=(e,n)=>{t({...e,type:"drag"},n);const r=i.moveBar(n,n[a.value],n[o.value]);r.success?r.affectedBars.forEach(e=>{s.movedBars.has(e)||v(e)}):f()},p=(e,n)=>{t({...e,type:"dragend"},n,void 0,new Map(s.movedBars)),s.movedBars.clear(),s.isDragging=!1},v=e=>{s.movedBars.has(e)||s.movedBars.set(e,{oldStart:e[a.value],oldEnd:e[o.value]})},f=()=>{s.movedBars.forEach(({oldStart:e,oldEnd:t},n)=>{n[a.value]=e,n[o.value]=t})};return{initDragOfBar:(e,n)=>{e.ganttBarConfig.bundle?u(e,n):(d(e).initiateDrag(n),v(e),t({...n,type:"dragstart"},e))},initDragOfBundle:u,snapBackMovedBars:f,handleDrag:g,getConnectedBars:i.findConnectedBars}};const Qt=["id"],en=["id","aria-label","aria-grabbed","aria-describedby"],tn={key:0,class:"progress-text"},nn=["width","height"],an=["d","fill"],on={key:0,class:"g-gantt-group-bar-label"},rn=["innerHTML"],ln={key:3,class:"g-gantt-bar-label"},sn={key:0},un={key:0,class:"g-gantt-bar-label-edit"},dn={key:1},cn=["innerHTML"],gn=/* @__PURE__ */p({inheritAttrs:!1,__name:"GGanttBar",props:{bar:{}},setup(e){const t=e,n=c(Oe),a=c("connectionCreation"),o=Nt(),r=Xe(),{rowHeight:l}=r,{bar:i}=A(t),{mapTimeToPosition:s,mapPositionToTime:u}=Dt(),{initDragOfBar:d,initDragOfBundle:p}=Jt(),{setDragLimitsOfGanttBar:b}=function(){const{pushOnOverlap:e,pushOnConnect:t}=Xe(),{getConnectedBars:n}=Jt(),a=c("useRows"),o=c(Oe),{findBarElement:r}=Zt(),l=e=>{const t=[];return null!=e&&a.rows.value.forEach(n=>{n.bars.forEach(n=>{n.ganttBarConfig.bundle===e&&t.push(n)})}),t},i=(e,t=0,n)=>{const a=e.ganttBarConfig.bundle?[{bar:e,gapDistance:t}]:[];let l=e,i=s(l,n);if("left"===n)for(;i;){const e=r(o,l.ganttBarConfig.id),n=r(o,i.ganttBarConfig.id);if(t+=e.offsetLeft-(n.offsetLeft+n.offsetWidth),i.ganttBarConfig.immobile)return{gapDistanceSoFar:t,bundleBarsAndGapDist:a};i.ganttBarConfig.bundle&&a.push({bar:i,gapDistance:t}),l=i,i=s(i,"left")}if("right"===n)for(;i;){const e=r(o,l.ganttBarConfig.id);if(t+=r(o,i.ganttBarConfig.id).offsetLeft-(e.offsetLeft+e.offsetWidth),i.ganttBarConfig.immobile)return{gapDistanceSoFar:t,bundleBarsAndGapDist:a};i.ganttBarConfig.bundle&&a.push({bar:i,gapDistance:t}),l=i,i=s(i,"right")}return{gapDistanceSoFar:null,bundleBarsAndGapDist:a}},s=(l,i)=>{const s=r(o,l.ganttBarConfig.id);let u=[];e.value&&(u=a.rows.value.find(e=>e.bars.includes(l))?.bars||[]),t.value&&(u=[...u,...n(l)]);let d=[];return d=u.filter("left"===i?e=>{const t=r(o,e.ganttBarConfig.id);return t&&t.offsetLeft<s.offsetLeft&&!1!==e.ganttBarConfig.pushOnOverlap&&!1!==e.ganttBarConfig.pushOnConnect}:e=>{const t=r(o,e.ganttBarConfig.id);return t&&t.offsetLeft>s.offsetLeft&&!1!==e.ganttBarConfig.pushOnOverlap&&!1!==e.ganttBarConfig.pushOnConnect}),d.length>0?d.reduce((e,t)=>{const n=r(o,e.ganttBarConfig.id),a=r(o,t.ganttBarConfig.id);return Math.abs(n.offsetLeft-s.offsetLeft)<Math.abs(a.offsetLeft-s.offsetLeft)?e:t},d[0]):null};return{setDragLimitsOfGanttBar:n=>{if(e.value&&!1!==n.ganttBarConfig.pushOnOverlap&&t.value&&!1!==n.ganttBarConfig.pushOnConnect){for(const e of["left","right"]){const t=e,{gapDistanceSoFar:a,bundleBarsAndGapDist:s}=i(n,0,t);let u=a;const d=s;if(!d)continue;for(let e=0;e<d.length;e++){const n=d[e].bar,a=d[e].gapDistance;l(n.ganttBarConfig.bundle).filter(e=>e!==n).forEach(e=>{const n=i(e,a,t),o=n.gapDistanceSoFar;null!=o&&(!u||o<u)&&(u=o),n.bundleBarsAndGapDist.forEach(e=>{d.find(t=>t.bar===e.bar)||d.push(e)})})}const c=r(o,n.ganttBarConfig.id);null!=u&&"left"===t?n.ganttBarConfig.dragLimitLeft=c.offsetLeft-u:null!=u&&"right"===t&&(n.ganttBarConfig.dragLimitRight=c.offsetLeft+c.offsetWidth+u)}l(n.ganttBarConfig.bundle).forEach(e=>{e.ganttBarConfig.dragLimitLeft=n.ganttBarConfig.dragLimitLeft,e.ganttBarConfig.dragLimitRight=n.ganttBarConfig.dragLimitRight})}}}}(),k=x(!1),S=x(!1),$=x(""),L=x(null),{barStart:R,barEnd:z,width:Y,chartStart:I,chartEnd:P,chartSize:H,showLabel:_,showGroupLabel:F,showProgress:U,defaultProgressResizable:X,enableConnectionCreation:W,barLabelEditable:V,showPlannedBars:q}=r,N=x(0),Z=x(0),K=x(0),J=x(0),Q=g(()=>i.value.ganttBarConfig),ee=g(()=>i.value.ganttBarConfig.id.startsWith("group-")),te=g(()=>q.value&&void 0!==i.value.start_planned&&void 0!==i.value.end_planned),ne=g(()=>({background:"#9e9e9e",opacity:.7,...i.value.ganttBarConfig.plannedStyle||{},position:"absolute",top:.85*l.value+"px",left:`${K.value}px`,width:J.value-K.value+"px",height:.15*l.value+"px",zIndex:"1",pointerEvents:"none"})),ae=g(()=>{const e=t.bar.ganttBarConfig.progress??0,n=t.bar.ganttBarConfig.progressStyle||{},a=t.bar.ganttBarConfig.style?.background||"#5F9EA0";return{...n,left:0,width:`${Math.min(Math.max(e,0),100)}%`,backgroundColor:n.backgroundColor||Ie(a),transition:"width 0.3s ease",borderRadius:"inherit",height:"100%"}}),oe=g(()=>({width:"12px",height:"12px",borderRadius:"50%",cursor:"pointer",background:ie.value?"#00ff00":"#ff0000",transition:"all 0.2s ease",opacity:a?.connectionState.value.isCreating||Ee.value||Ce.value||Be.value?1:0,zIndex:1e3})),re=g(()=>({...oe.value,left:0,top:"50%",transform:"translate(-50%, -50%)"})),le=g(()=>({...oe.value,right:0,top:"50%",transform:"translate(50%, -50%)"})),ie=g(()=>!!a?.connectionState.value.isCreating&&a.canBeConnectionTarget.value(t.bar)),se=e=>{null!=Q.value.bundle?p(i.value,e):d(i.value,e),k.value=!0},ue=e=>{e.preventDefault(),"mousedown"===e.type&&(b(i.value),Q.value.immobile||(window.addEventListener("mousemove",se,{once:!0}),window.addEventListener("mouseup",()=>{window.removeEventListener("mousemove",se),k.value=!1},{once:!0})));const t=de?.value?.getBoundingClientRect();if(!t)return;const n=u(e.clientX-t.left);o(e,i.value,n)},de=c(Fe),{handleTouchStart:ce,handleTouchMove:ge,handleTouchEnd:pe,handleTouchCancel:ve}=function(e,t=5){const n=x({isDragging:!1,startX:0,startY:0,lastX:0,lastY:0,currentBar:null,dragTarget:null}),a=(e,t,a=0,o=0)=>{const r=new MouseEvent(t,{bubbles:!0,cancelable:!0,clientX:e.clientX,clientY:e.clientY,movementX:a,movementY:o,view:window});if(n.value.currentBar){const e=document.querySelector(`#${n.value.currentBar.ganttBarConfig.id}`);e&&Object.defineProperty(r,"target",{value:e})}return r},o=e=>{const t=e.changedTouches[0];if(t&&n.value.currentBar){if(n.value.isDragging){e.preventDefault();const n=a(t,"mouseup");window.dispatchEvent(n)}n.value={isDragging:!1,startX:0,startY:0,lastX:0,lastY:0,currentBar:null,dragTarget:null}}};return{handleTouchStart:(t,o)=>{const r=t.touches[0];if(!r||!o)return;const l=t.target;if(!l)return;const i=(s=l).classList.contains("g-gantt-bar-handle-left")?"leftHandle":s.classList.contains("g-gantt-bar-handle-right")?"rightHandle":s.classList.contains("g-gantt-bar")||s.closest(".g-gantt-bar")?"bar":null;var s;if(!i)return;t.preventDefault(),n.value={isDragging:!1,startX:r.clientX,startY:r.clientY,lastX:r.clientX,lastY:r.clientY,currentBar:o,dragTarget:i};const u=a(r,"mousedown");e(o,u)},handleTouchMove:e=>{const o=e.touches[0];if(!o||!n.value.currentBar)return;const r=Math.abs(o.clientX-n.value.startX),l=Math.abs(o.clientY-n.value.startY);if(!n.value.isDragging&&(r>t||l>t)&&(n.value.isDragging=!0),n.value.isDragging){e.preventDefault();const t=o.clientX-n.value.lastX,r=o.clientY-n.value.lastY;n.value.lastX=o.clientX,n.value.lastY=o.clientY;const l=a(o,"mousemove",t,r);window.dispatchEvent(l)}},handleTouchEnd:o,handleTouchCancel:o}}((e,t)=>{se(t),k.value=!0}),fe=e=>{if(i.value.ganttBarConfig.immobile)return;let t;switch(e.type){case"touchstart":t=ce(e,i.value);break;case"touchmove":t=ge(e);break;case"touchend":t=pe(e);break;case"touchcancel":t=ve(e)}t&&ue(t)},me=x(!1),he=x(0),be=x(0),ye=e=>{(t.bar.ganttBarConfig.progressResizable||X.value)&&(e.stopPropagation(),me.value=!0,he.value=e.clientX,be.value=t.bar.ganttBarConfig.progress??0,window.addEventListener("mousemove",xe),window.addEventListener("mouseup",ke),o({...e,type:"progress-drag-start"},t.bar))},{findBarElement:we}=Zt(),xe=e=>{if(!me.value)return;const a=we(n,t.bar.ganttBarConfig.id);if(!a)return;const r=a.getBoundingClientRect(),l=Math.min(Math.max(be.value+(e.clientX-he.value)/r.width*100,0),100);i.value.ganttBarConfig.progress=Math.round(l),o({...e,type:"progress-change"},t.bar)},ke=e=>{me.value&&(me.value=!1,window.removeEventListener("mousemove",xe),window.removeEventListener("mouseup",ke),o({...e,type:"progress-drag-end"},t.bar))},Ce=x(!1),Be=x(!1),Ee=x(!1),Se=e=>{W.value&&("start"===e?Ce.value=!0:Be.value=!0,a?.handleConnectionPointHover(t.bar.ganttBarConfig.id,e,!0))},De=e=>{W.value&&("start"===e?Ce.value=!1:Be.value=!1,a?.handleConnectionPointHover(t.bar.ganttBarConfig.id,e,!1))},$e=(e,n)=>{W.value&&(e.stopPropagation(),a?.startConnectionCreation(t.bar,n,e))},Me=(e,n)=>{W.value&&(e.stopPropagation(),a?.completeConnection(t.bar,n,e))},Te=e=>{Ee.value=!0,ue(e)},Ae=e=>{Ee.value=!1,ue(e)},Le=e=>{V.value&&!ee.value&&(e.stopPropagation(),i.value.ganttBarConfig._previousLabel=Q.value.label||"",S.value=!0,$.value=Q.value.label||"",setTimeout(()=>{L.value&&(L.value.focus(),L.value.select())},0))},Re=()=>{S.value&&(i.value.ganttBarConfig.label=$.value,o({type:"label-edit",preventDefault:()=>{},stopPropagation:()=>{}},i.value),S.value=!1)},ze=e=>{"Enter"===e.key?Re():"Escape"===e.key&&(S.value=!1)},Ye=()=>{Re()},Ie=e=>{const t=e.startsWith("#")?Pe(e):He(e);return`rgba(${Math.max(0,t.r-40)}, ${Math.max(0,t.g-40)}, ${Math.max(0,t.b-40)}, ${t.a})`},Pe=e=>{const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16),a:1}:{r:0,g:0,b:0,a:1}},He=e=>{const t=e.match(/(\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?/);return t?{r:parseInt(t[1]),g:parseInt(t[2]),b:parseInt(t[3]),a:t[4]?parseFloat(t[4]):1}:{r:0,g:0,b:0,a:1}},_e=(e,t)=>{const n=.5*t;return`\n    M 0 0\n    L 0 ${t}\n    L 15 ${n}\n    L ${e-15} ${n}\n    L ${e} ${t}\n    L ${e} 0\n    L 0 0\n  `},{onBarKeyDown:Ge}=function(e,t,n){const a=Ve(t),{barStart:o,barEnd:r,dateFormat:l,precision:i}=t,s=c("useRows"),u=Kt(t,s,a),d={hour:5,day:120,week:840,month:3600},g=e=>{const t=d[i.value]||d.hour;return e?12*t:t},p=(n,i)=>{const s="forward"===n?1:-1,d=g(i),c=a.toDayjs(e[o.value]),p=a.toDayjs(e[r.value]),v=c.add(d*s,"minutes"),m=p.add(d*s,"minutes");if(v.isBefore(t.chartStart.value)||m.isAfter(t.chartEnd.value))return;const h=a.format(v,l.value),b=a.format(m,l.value);u.moveBar(e,h,b).success&&f()},v=(n,i)=>{const s=a.toDayjs(e[o.value]),d=a.toDayjs(e[r.value]);let c=g(i);5===c&&(c=10);const p=c/2;let v,m;if("expand"===n)v=a.format(s.subtract(p,"minutes"),l.value),m=a.format(d.add(p,"minutes"),l.value);else{if(d.diff(s,"minutes")<=c)return;v=a.format(s.add(p,"minutes"),l.value),m=a.format(d.subtract(p,"minutes"),l.value)}const h=a.toDayjs(v),b=a.toDayjs(m);h.isBefore(t.chartStart.value)||b.isAfter(t.chartEnd.value)||u.moveBar(e,v,m).success&&f()},f=()=>{const t=new MouseEvent("drag",{bubbles:!0});n(t,e);const a=new MouseEvent("dragend",{bubbles:!0});n(a,e)};return{onBarKeyDown:t=>{const n=t.target;if(n.id&&n.id===e.ganttBarConfig.id&&!e.ganttBarConfig.immobile)switch(t.key){case"ArrowLeft":t.preventDefault(),p("backward",t.shiftKey);break;case"ArrowRight":t.preventDefault(),p("forward",t.shiftKey);break;case"ArrowUp":t.preventDefault(),v("expand",t.shiftKey);break;case"ArrowDown":t.preventDefault(),v("shrink",t.shiftKey)}}}}(i.value,r,o);return C(()=>{N.value=s(i.value[R.value]),Z.value=s(i.value[z.value]),te.value&&(K.value=s(i.value.start_planned),J.value=s(i.value.end_planned)),T([()=>i.value,Y,I,P,H.width],()=>{const e=s(i.value[R.value]),t=s(i.value[z.value]);N.value=e,Z.value=t,te.value&&(K.value=s(i.value.start_planned),J.value=s(i.value.end_planned))},{deep:!0,immediate:!0})}),(e,t)=>(v(),f("div",G({class:"g-gantt-bar-container"},e.$attrs),[te.value&&!ee.value?(v(),f("div",{key:0,id:`${Q.value.id}-planned`,class:"g-gantt-planned-bar",style:y(ne.value)},null,12,Qt)):M("",!0),B("div",{id:Q.value.id,class:w(["g-gantt-bar",Q.value.class||""]),style:y({...Q.value.style,position:"absolute",top:.15*m(l)+"px",left:`${N.value}px`,width:Z.value-N.value+"px",height:.7*m(l)+"px",zIndex:k.value?3:2,cursor:m(i).ganttBarConfig.immobile?"":"grab"}),onMousedown:ue,onClick:ue,onMouseenter:Te,onMouseleave:Ae,onContextmenu:ue,onTouchstart:fe,onTouchmove:fe,onTouchend:fe,onTouchcancel:fe,onKeydown:t[9]||(t[9]=(...e)=>m(Ge)&&m(Ge)(...e)),onDblclick:Le,role:"listitem","aria-label":`Activity ${Q.value.label}`,"aria-grabbed":k.value,tabindex:"0","aria-describedby":`tooltip-${Q.value.id}`},[m(W)?(v(),f(h,{key:0},[B("div",{class:"connection-point start",style:y([re.value,{position:"absolute"}]),onMouseenter:t[0]||(t[0]=e=>Se("start")),onMouseleave:t[1]||(t[1]=e=>De("start")),onMousedown:t[2]||(t[2]=e=>$e(e,"start")),onMouseup:t[3]||(t[3]=e=>Me(e,"start"))},null,36),B("div",{class:"connection-point end",style:y([le.value,{position:"absolute"}]),onMouseenter:t[4]||(t[4]=e=>Se("end")),onMouseleave:t[5]||(t[5]=e=>De("end")),onMousedown:t[6]||(t[6]=e=>$e(e,"end")),onMouseup:t[7]||(t[7]=e=>Me(e,"end"))},null,36)],64)):M("",!0),void 0!==Q.value.progress?(v(),f("div",{key:1,class:"g-gantt-progress-bar",style:y(ae.value)},[m(U)?(v(),f("span",tn,D(Math.round(Q.value.progress))+"%",1)):M("",!0),Q.value.progressResizable||m(X)?(v(),f("div",{key:1,class:"g-gantt-progress-handle",style:y({right:0===m(i).ganttBarConfig.progress?0:"-4px"}),onMousedown:ye},null,36)):M("",!0)],4)):M("",!0),ee.value?(v(),f(h,{key:2},[E(e.$slots,"group-bar",{width:Z.value-N.value,height:.7*m(l),bar:m(i)},()=>[(v(),f("svg",{class:"group-bar-decoration",width:Z.value-N.value,height:.7*m(l)},[B("path",{d:_e(Z.value-N.value,.65*m(l)),fill:m(r).colors.value.barContainer},null,8,an)],8,nn))]),m(F)?(v(),f("div",on,[E(e.$slots,"group-bar-label",{bar:m(i)},()=>[B("div",{style:y({backgroundColor:m(r).colors.value.barContainer,padding:"0px 6px",borderRadius:"4px",marginTop:"-10px"})},D(Q.value.label||""),5),Q.value.html?(v(),f("div",{key:0,innerHTML:Q.value.html},null,8,rn)):M("",!0)])])):M("",!0)],64)):(v(),f("div",ln,[E(e.$slots,"bar-label",{bar:m(i)},()=>[!ee.value&&m(_)?(v(),f("div",sn,[S.value&&m(V)?(v(),f("div",un,[j(B("input",{ref_key:"labelInput",ref:L,"onUpdate:modelValue":t[8]||(t[8]=e=>$.value=e),onKeydown:ze,onBlur:Ye,class:"g-gantt-bar-label-input"},null,544),[[O,$.value]])])):(v(),f("div",dn,D(Q.value.label||""),1))])):M("",!0),Q.value.html?(v(),f("div",{key:1,innerHTML:Q.value.html},null,8,cn)):M("",!0)])])),Q.value.hasHandles?(v(),f(h,{key:4},[t[10]||(t[10]=B("div",{class:"g-gantt-bar-handle-left"},null,-1)),t[11]||(t[11]=B("div",{class:"g-gantt-bar-handle-right"},null,-1))],64)):M("",!0)],46,en)],16))}}),pn={key:1,class:"group-toggle-button group-toggle-placeholder"},vn={key:0,class:"g-gantt-row-children"},fn={class:"g-gantt-range-tooltip-date"},mn=/* @__PURE__ */p({__name:"GGanttRow",props:{label:{},bars:{},highlightOnHover:{type:Boolean},id:{},children:{},connections:{},groupStartDate:{},groupEndDate:{}},emits:["drop","range-selection"],setup(e,{emit:t}){const n=e,a=t,o=c("useRows"),{rowHeight:r,colors:l,labelColumnTitle:i,rowClass:s,dateFormat:u,tick:d}=Xe(),{highlightOnHover:p}=A(n),k=c(Ue),{mapPositionToTime:C,mapTimeToPosition:T}=Dt(),{format:L,toDayjs:_}=Ve(),F=x(null),j=x(!1),O=x(!1),V=x(0),q=x(0),N=x(!1),Z=x(!1),K=x({x:0,y:0}),J=x(""),Q=x(""),ee=g(()=>Array.isArray(n.children)),te=g(()=>Boolean(n.children?.length)),ne=g(()=>!(!ee.value||!n.id)&&o.isGroupExpanded(n.id)),ae=g(()=>{const e={height:`${r.value}px`,borderBottom:`1px solid ${l.value.gridAndBorder}`,background:p?.value&&j.value?l.value.hoverHighlight:void 0};return ee.value?{...e,background:p?.value&&j.value?l.value.hoverHighlight:void 0}:e}),oe=g(()=>{const e=["g-gantt-row"];return s.value&&n&&e.push(s.value(n)),ee.value&&e.push("g-gantt-row-group"),e}),re=g(()=>ee.value&&ne.value&&n.children||[]),le=g(()=>N.value?{position:"absolute",left:`${Math.min(V.value,q.value)}px`,width:`${Math.abs(q.value-V.value)}px`,height:r.value-4+"px",background:l.value.rangeHighlight,opacity:.6,pointerEvents:"none",zIndex:1,margin:"auto 0",top:"1px"}:{display:"none"}),ie=g(()=>d.value&&d.value>0),ce=()=>{switch(k.value){case"hour":default:return"minute";case"day":return"hour";case"week":return"day";case"month":return"week"}},ge=()=>{if(!F.value)return;const e=F.value.getBoundingClientRect();K.value={x:e.left+(V.value+q.value)/2,y:e.top-10},J.value=C(Math.min(V.value,q.value)),Q.value=C(Math.max(V.value,q.value))},pe=e=>{e.stopPropagation(),n.id&&o.toggleGroupExpansion(n.id)},ve=e=>{if(ee.value)return;if(e.target.closest(".g-gantt-bar"))return;const t=F.value?.getBoundingClientRect();if(!t)return;const n=e.clientX-t.left;O.value=!0,V.value=n,q.value=n,N.value=!1,Z.value=!0,ge(),e.preventDefault(),document.addEventListener("mousemove",fe),document.addEventListener("mouseup",me)},fe=e=>{if(!O.value||!F.value)return;const t=F.value.getBoundingClientRect();let n=Math.max(0,e.clientX-t.left);ie.value&&(n=((e,t)=>{if(!ie.value)return e;const n=C(t),a=C(e),o=_(n),r=_(a);let l,i="minute",s=d.value;switch(k.value){case"hour":default:l=r.diff(o,"minute"),i="minute",s=d.value;break;case"day":l=r.diff(o,"hour"),i="hour",s=d.value;break;case"week":l=r.diff(o,"day"),i="day",s=d.value;break;case"month":l=r.diff(o,"day"),i="day",s=7*d.value}const c=Math.round(Math.abs(l)/s)*s,g=o.add(c,i);return T(L(g,u.value))})(n,V.value)),q.value=n,N.value=Math.abs(q.value-V.value)>5,N.value&&ge()},me=e=>{if(document.removeEventListener("mousemove",fe),document.removeEventListener("mouseup",me),!O.value||!N.value)return void he();const t=C(Math.min(V.value,q.value)),o=C(Math.max(V.value,q.value));a("range-selection",{row:{id:n.id,label:n.label,bars:n.bars,children:n.children,connections:n.connections},startDate:t,endDate:o,e:e}),he()},he=()=>{O.value=!1,N.value=!1,V.value=0,q.value=0,Z.value=!1};return U(Fe,F),(t,n)=>{return v(),f(h,null,[B("div",{class:w(oe.value),style:y(ae.value),onDragover:n[2]||(n[2]=P(e=>j.value=!0,["prevent"])),onDragleave:n[3]||(n[3]=e=>j.value=!1),onDrop:n[4]||(n[4]=e=>(e=>{if(ee.value)return;const t=F.value?.getBoundingClientRect();if(!t)return;const n=C(e.clientX-t.left);a("drop",{e:e,datetime:n})})(e)),onMouseover:n[5]||(n[5]=e=>j.value=!0),onMouseleave:n[6]||(n[6]=e=>j.value=!1),role:"list",onMousedown:ve},[(o=e.label,!o||/^\s*$/.test(o)||m(i)?M("",!0):(v(),f("div",{key:0,class:w(["g-gantt-row-label",{"g-gantt-row-group-label":ee.value}]),style:y({background:m(l).primary,color:m(l).text}),onClick:n[1]||(n[1]=e=>te.value?pe(e):void 0)},[te.value?(v(),f("button",{key:0,class:"group-toggle-button",onClick:n[0]||(n[0]=e=>pe(e))},[$(m(se),{icon:m(ne.value?ue:de),class:"group-icon"},null,8,["icon"])])):ee.value?(v(),f("span",pn)):M("",!0),E(t.$slots,"label",{},()=>[S(D(e.label),1)])],6))),B("div",G({ref_key:"barContainer",ref:F,class:"g-gantt-row-bars-container"},t.$attrs),[N.value?(v(),f("div",{key:0,class:"g-gantt-range-selection",style:y(le.value)},null,4)):M("",!0),$(X,{name:"bar-transition",tag:"div"},{default:I(()=>[(v(!0),f(h,null,b(e.bars,e=>(v(),R(gn,{key:e.ganttBarConfig.id,bar:e,class:w({"g-gantt-group-bar":ee.value})},H({_:2},[b(t.$slots,(e,n)=>({name:n,fn:I(e=>[E(t.$slots,n,G({ref_for:!0},e))])}))]),1032,["bar","class"]))),128))]),_:3})],16)],38),ee.value&&ne.value?(v(),f("div",vn,[(v(!0),f(h,null,b(re.value,e=>(v(),R(W(mn),G({key:e.id||e.label},{ref_for:!0},e,{highlightOnHover:m(p),onRangeSelection:n[7]||(n[7]=e=>t.$emit("range-selection",e))}),H({_:2},[b(t.$slots,(e,n)=>({name:n,fn:I(e=>[E(t.$slots,n,G({ref_for:!0},e))])}))]),1040,["highlightOnHover"]))),128))])):M("",!0),(v(),R(z,{to:"body"},[$(Y,{name:"g-fade",mode:"out-in"},{default:I(()=>[Z.value&&N.value?(v(),f("div",{key:0,class:"g-gantt-range-tooltip g-gantt-range-tooltip-start",style:y({top:`${K.value.y}px`,left:`${K.value.x}px`,background:m(l).primary,color:m(l).text})},[E(t.$slots,"range-selection-tooltip",{startDate:J.value,endDate:Q.value,formattedStartDate:m(L)(J.value,m(u)),formattedEndDate:m(L)(Q.value,m(u)),tick:m(d),tickEnabled:ie.value,tickUnit:ce(),internalPrecision:m(k)},()=>[B("div",fn,D(m(L)(J.value,m(u)))+" - "+D(m(L)(Q.value,m(u))),1)])],4)):M("",!0)]),_:3})]))],64);var o}}}),hn={style:{"font-weight":"bold"}},bn=/* @__PURE__ */p({__name:"GGanttPointerMarker",setup(e){const t=c(Ge),n=c(je),a=x([]),o=V("tooltip"),{colors:r,barStart:l,barEnd:i}=Xe(),{mapPositionToTime:s}=Dt(),u=c("useRows"),{toDayjs:d}=Ve(),{elementX:p}=ne(t),{isOutside:w,x:k}=ne(n),{width:C,height:S}=ae(o),{top:T,bottom:A}=ae(n),L=g(e=>w.value?e??0:p.value),P=g(()=>s(L.value)),H=oe(u.getFlattenedRows,()=>u.getFlattenedRows().flatMap(e=>e.bars)),G=g(()=>T.value-S.value>0?{top:`${T.value}px`,transform:"translateY(-100%)",left:k.value-C.value/2+"px"}:{top:`${A.value}px`,left:k.value-C.value/2+"px"});return re(L,()=>{const e=[],t=d(P.value);for(let n=0;n<H.value.length;n++){const a=H.value[n],o=d(a[l.value]),r=d(a[i.value]);t.isBetween(o,r)&&e.push(a)}a.value=e},{throttle:200}),(e,t)=>(v(),f("div",{class:"g-grid-pointer-marker-container",style:y({left:`${L.value}px`})},[B("div",{class:"g-grid-pointer-marker-marker",style:y({border:`1px dashed ${m(r).markerCurrentTime}`})},null,4),(v(),R(z,{to:"body"},[$(Y,{name:"g-fade",mode:"out-in"},{default:I(()=>[m(w)?M("",!0):(v(),f("div",{key:0,ref:"tooltip",class:"g-grid-pointer-marker-tooltip",style:y(G.value)},[E(e.$slots,"pointer-marker-tooltips",_(F({hitBars:a.value,datetime:P.value})),()=>[B("div",{class:"g-grid-pointer-marker-tooltip-content",style:y({background:m(r).primary,color:m(r).text})},[B("div",hn,"Event at "+D(P.value),1),B("ul",null,[(v(!0),f(h,null,b(a.value,e=>(v(),f("li",{key:e.ganttBarConfig.id},D(e.ganttBarConfig.label??e.ganttBarConfig.id),1))),128))])],4)])],4))]),_:3})]))],4))}});function yn(){const t=x(!1),n=x(null),a=x(0);function o(e){if(!e)return 0;switch(e.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 e.name.toLowerCase().includes("progress")?50:0}}function r(e){if(!e)return"straight";const t=e.toLowerCase();return t.includes("block")?"squared":t.includes("depend")||t.includes("relate")?"bezier":"straight"}const l=t=>{if(!t)return e().format("YYYY-MM-DD HH:mm:ss");const n=e(t);return n.isValid()?0!==n.hour()||0!==n.minute()||0!==n.second()||/\d{1,2}[:hHT]/.test(t)?n.format("YYYY-MM-DD HH:mm:ss"):`${n.format("YYYY-MM-DD")} 00:00:00`:e().format("YYYY-MM-DD HH:mm:ss")},i=t=>{let n=null,a=null;const o=t=>{t.forEach(t=>{t.bars.forEach(t=>{const o=e(t.start||t.begin||t.startDate),r=e(t.end||t.finish||t.endDate);n&&!o.isBefore(n)||(n=o),a&&!r.isAfter(a)||(a=r)}),t.children&&o(t.children)})};if(o(t),n&&a){const e=a.diff(n,"day"),t=Math.max(1,Math.ceil(.1*e));return{chartStart:n.subtract(t,"day").toDate(),chartEnd:a.add(t,"day").toDate()}}return{}};return{importFromFile:async(s,u)=>{t.value=!0,a.value=0,n.value=null;try{let t=u.format;t||(t=(e=>{const t=e.name.toLowerCase();if(t.endsWith(".json"))return"jira";if(t.endsWith(".csv"))return"csv";throw new Error(`Could not determine format from file: ${e.name}`)})(s));const n=await(async e=>new Promise((t,n)=>{const a=new FileReader;a.onload=e=>{e.target?.result?t(e.target.result):n(new Error("Failed to read file"))},a.onerror=()=>{n(new Error("Error reading file"))},a.readAsText(e)}))(s);a.value=20;const d=await(async(e,t)=>{try{switch(t){case"jira":return JSON.parse(e.toString());case"csv":return(e=>{const t=Re.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0,transformHeader:e=>e.trim().toLowerCase().replace(/\s+/g,"_")});if(t.errors&&t.errors.length>0){const e=t.errors.map(e=>e.message).join("; ");throw new Error(`CSV parsing errors: ${e}`)}return t.data})(e.toString());default:throw new Error(`Format not supported: ${t}`)}}catch(n){const e=n instanceof Error?n.message:"Unknown error during parsing";throw new Error(`Failed to parse file: ${e}`)}})(n,t);a.value=50;const{rows:c,warnings:g,chartStart:p,chartEnd:v}=await(async(t,n,a)=>{let s;switch(n){case"jira":s=((t,n)=>{const a=[],l=t.issues||[],i=/* @__PURE__ */new Map,s=/* @__PURE__ */new Map,u=/* @__PURE__ */new Map;l.forEach(e=>{i.set(e.id,e);const t={id:`issue-${e.key}`,label:e.fields.summary,progress:o(e.fields.status),connections:[]};e.fields.issuetype&&(t.class=e.fields.issuetype.name.toLowerCase().replace(/\s+/g,"-")),s.set(e.key,t)}),l.forEach(e=>{e.fields.issuelinks&&Array.isArray(e.fields.issuelinks)&&e.fields.issuelinks.forEach(t=>{if(t.outwardIssue){const n=e.key,a=t.outwardIssue.key;u.has(n)||u.set(n,[]);const o={targetId:`issue-${a}`,type:r(t.type?.name)};u.get(n)?.push(o)}if(t.inwardIssue){const n=t.inwardIssue.key,a=e.key;u.has(n)||u.set(n,[]);const o={targetId:`issue-${a}`,type:r(t.type?.name)};u.get(n)?.push(o)}})});const d=/* @__PURE__ */new Map;l.forEach(e=>{e.fields.subtasks&&Array.isArray(e.fields.subtasks)&&e.fields.subtasks.length>0&&e.fields.subtasks.forEach(t=>{const n=l.find(e=>e.id===t.id)||t;d.has(e.id)||d.set(e.id,[]),d.get(e.id)?.push(n)})}),l.forEach(e=>{if(e.fields.parent&&e.fields.parent.id){const t=e.fields.parent.id;l.some(n=>n.id===t&&n.fields.subtasks?.some(t=>t.id===e.id))||(d.has(t)||d.set(t,[]),d.get(t)?.push(e))}});const c=l.filter(e=>!e.fields.parent||!i.has(e.fields.parent.id)),g=t=>t.map(t=>{const{fields:r}=t;let l=r.created,i=r.duedate||r.updated;i&&l||(a.push(`Issue "${r.summary}" has missing date information`),l=e().format("YYYY-MM-DD"),i=e().add(7,"day").format("YYYY-MM-DD"));const c=s.get(t.key)||{id:`issue-${t.key}`,label:r.summary,progress:o(r.status),connections:[]},p=u.get(t.key)||[];c.connections=p;const v={id:t.id,label:r.summary,bars:[{[n.mapFields?.startDate||"start"]:l,[n.mapFields?.endDate||"end"]:i,ganttBarConfig:c}]},f=d.get(t.id)||[];return f.length>0&&(v.children=g(f)),v});return{rows:g(c),warnings:a}})(t,a);break;case"csv":s=((t,n)=>{const a=[],o={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"],...n.mapFields},r=(e,t)=>{const n=Object.keys(e);for(const a of t){const e=n.find(e=>e.toLowerCase()===a.toLowerCase());if(void 0!==e)return e}},i=/* @__PURE__ */new Map;t.forEach(e=>{const t=r(e,o.id),n=t?e[t]:void 0;n?i.set(n,{...e,children:[],barConfig:{id:`task-${n}`,connections:[]}}):a.push(`Row is missing an ID field: ${JSON.stringify(e)}`)}),t.forEach(e=>{const t=r(e,o.id),n=t?e[t]:void 0;if(!n)return;const l=r(e,o.parentId),s=l?e[l]:void 0;if(s&&i.has(s)){const e=i.get(s);e&&e.children.push(n)}const u=r(e,o.dependencies);u&&e[u]&&String(e[u]).split(/[,;]\s*/).forEach(e=>{const t=Number(e),o=String(e),r=i.has(t)||i.has(o),l=i.get(t)||i.get(o);r&&l?l.barConfig&&(l.barConfig.connections=l.barConfig.connections||[],l.barConfig.connections.push({targetId:`task-${n}`,type:"straight"})):a.push(`Task ${n} refers to a dependency ${e} that doesn't exist`)})});const s=Array.from(i.keys()).filter(e=>{const t=i.get(e);if(!t)return!1;const n=r(t,o.parentId),a=n?t[n]:void 0;return!a||!i.has(a)}),u=t=>t.map(t=>{const s=i.get(t);if(!s)return a.push(`Referenced ID ${t} not found in data`),{id:String(t),label:`Unknown Task (${t})`,bars:[]};const d=r(s,o.name),c=d?String(s[d]||""):`Task ${t}`;let g=r(s,o.startDate);!g&&"start_date"in s&&(g="start_date");let p=g?s[g]:void 0,v=r(s,o.endDate);!v&&"end_date"in s&&(v="end_date");let f=v?s[v]:void 0;const m=r(s,o.progress);let h=m?s[m]:void 0;void 0!==h&&("string"==typeof h&&(h=parseFloat(h.replace("%",""))),h=Math.max(0,Math.min(100,Number(h))),isNaN(h)&&(h=0));const b=r(s,o.milestone),y=!!b&&(!0===s[b]||"true"===s[b]||1===s[b]);let w=p?l(String(p)):e().format("YYYY-MM-DD HH:mm:ss"),x=f?l(String(f)):e().add(1,"day").format("YYYY-MM-DD HH:mm:ss");y&&(x=w);const k={...s.barConfig,id:`task-${t}`,label:c,progress:h,immobile:!1};y&&(k.class="milestone");const C={id:t,label:c,bars:[{[n.mapFields?.startDate||"start"]:w,[n.mapFields?.endDate||"end"]:x,ganttBarConfig:k}]};return s.children.length>0&&(C.children=u(s.children)),C});return{rows:u(s),warnings:a}})(t,a);break;default:throw new Error(`Conversion not implemented for format: ${n}`)}const{chartStart:u,chartEnd:d}=i(s.rows);return{...s,chartStart:u,chartEnd:d}})(d,t,u);return a.value=80,u.skipValidation||((e,t)=>{const n=(e,a)=>{e.id||t.push(`Row at ${a} is missing an ID`),e.label||t.push(`Row at ${a} is missing a label`),e.bars&&0!==e.bars.length?e.bars.forEach((e,n)=>{e.ganttBarConfig.id||t.push(`Bar ${n} at ${a} is missing an ID`),e.ganttBarConfig.connections&&e.ganttBarConfig.connections.forEach((e,o)=>{e.targetId||t.push(`Connection ${o} in bar ${n} at ${a} is missing a target ID`)})}):t.push(`Row at ${a} has no bars`),e.children&&e.children.forEach((e,t)=>{n(e,`${a} > child[${t}]`)})};e.forEach((e,t)=>{n(e,`root[${t}]`)})})(c,g),a.value=100,u.onProgress&&u.onProgress(100),{success:!0,data:{rows:c,chartStart:p,chartEnd:v},warnings:g}}catch(d){const e=d instanceof Error?d.message:"Unknown error during import";return n.value=e,{success:!1,error:e}}finally{t.value=!1}},isImporting:t,importProgress:a,lastError:n}}const wn={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"}},xn={key:0,class:"g-gantt-importer-overlay"},kn={class:"g-gantt-importer-content"},Cn={class:"g-gantt-importer-stepper"},Bn={key:0},En={key:0},Sn={key:0},Dn={key:0,class:"g-gantt-importer-step"},$n={class:"g-gantt-file-upload"},Mn=["accept"],Tn={key:1,class:"g-gantt-importer-step"},An={key:0,class:"g-gantt-selected-file"},Ln={class:"g-gantt-import-options"},Rn={class:"g-gantt-option-group"},zn=["value"],Yn={class:"g-gantt-option-toggle"},In={class:"g-gantt-option-group"},Pn={class:"g-gantt-option-group"},Hn={class:"g-gantt-import-actions"},_n=["disabled"],Fn={key:1},Gn={key:2,class:"g-gantt-importer-step"},jn={class:"g-gantt-import-result"},On={key:0,class:"g-gantt-result-success"},Un={style:{color:"#aa8700"}},Xn={key:1,class:"g-gantt-result-error"},Wn={class:"g-gantt-result-actions"},Vn=/* @__PURE__ */p({__name:"GGanttImporter",props:{modelValue:{type:Boolean},title:{},defaultFormat:{},allowedFormats:{}},emits:["update:modelValue","import","close"],setup(e,{emit:t}){const n=e,a=t,o=c(Pe);if(!o)throw Error("GGanttImporter must be used as a child of GGanttChart!");const r=g(()=>o.dateFormat.value),l=g(()=>o.font.value),i=g(()=>o.colorScheme.value),s=g(()=>o.barStart.value),u=g(()=>o.barEnd.value),{importFromFile:d,isImporting:p,importProgress:k,lastError:C}=yn(),E=x(n.modelValue||!1),A=x(n.defaultFormat||"csv"),L=x(null),H=x(null),_=x(s.value),F=x(u.value),G=x([]),U=x(null),X=x(!1),W=x(1),V=g(()=>l.value||"inherit"),N=g(()=>"string"==typeof i.value?wn[i.value]||wn.default:i.value||wn.default),Z=g(()=>N.value.text),K=g(()=>N.value.background),J=g(()=>N.value.primary),Q=g(()=>N.value.secondary),ee=g(()=>N.value.ternary),te=g(()=>N.value.rangeHighlight||"#4a9eff"),ne=g(()=>"#4caf50"),ae=g(()=>"#f44336"),oe=g(()=>"#ffc107"),re=g(()=>{const e=[{value:"jira",label:"Jira (JSON)"},{value:"csv",label:"CSV"}];return n.allowedFormats&&n.allowedFormats.length>0?e.filter(e=>n.allowedFormats.includes(e.value)):e});T(()=>n.modelValue,e=>{E.value=e||!1}),T(E,e=>{a("update:modelValue",e)}),T(s,e=>{e&&(_.value=e)}),T(u,e=>{e&&(F.value=e)});const le=()=>{H.value?.click()},ie=e=>{const t=e.target;if(t.files&&t.files.length>0){L.value=t.files[0];const e=L.value.name.toLowerCase();e.endsWith(".json")?A.value="jira":e.endsWith(".csv")&&(A.value="csv"),W.value=2}},ue=async()=>{if(!L.value)return;G.value=[],U.value=null;const e={format:A.value,dateFormat:r.value,mapFields:{startDate:_.value,endDate:F.value},colorScheme:N.value,onProgress:e=>{k.value=e}},t=await d(L.value,e);t.success?(U.value=!0,t.warnings&&(G.value=t.warnings),W.value=3,a("import",t)):U.value=!1},de=()=>{L.value=null,U.value=null,G.value=[],W.value=1,H.value&&(H.value.value="")},ce=()=>{E.value=!1,de(),a("close")};return(t,n)=>(v(),R(z,{to:"body"},[$(Y,{name:"g-fade"},{default:I(()=>[E.value?(v(),f("div",xn,[B("div",{class:"g-gantt-importer-modal",style:y({fontFamily:V.value,color:Z.value,background:K.value})},[B("div",{class:"g-gantt-importer-header",style:y({background:J.value})},[B("h3",null,D(e.title||"Import Data"),1),B("button",{class:"g-gantt-importer-close-btn",onClick:ce,style:y({color:Z.value})},[$(m(se),{icon:m(ve)},null,8,["icon"])],4)],4),B("div",kn,[B("div",Cn,[B("div",{class:w(["g-gantt-stepper-step",{active:1===W.value,completed:W.value>1}])},[B("div",{class:"g-gantt-step-number",style:y({backgroundColor:1===W.value?te.value:W.value>1?ne.value:"#e0e0e0",color:W.value>=1?"white":Z.value})},[W.value<=1?(v(),f("span",Bn,"1")):(v(),R(m(se),{key:1,icon:m(fe)},null,8,["icon"]))],4),B("div",{class:"g-gantt-step-label",style:y({color:1===W.value?Z.value:Q.value})}," Select File ",4)],2),B("div",{class:"g-gantt-step-connector",style:y({backgroundColor:N.value.gridAndBorder})},null,4),B("div",{class:w(["g-gantt-stepper-step",{active:2===W.value,completed:W.value>2}])},[B("div",{class:"g-gantt-step-number",style:y({backgroundColor:2===W.value?te.value:W.value>2?ne.value:"#e0e0e0",color:W.value>=2?"white":Z.value})},[W.value<=2?(v(),f("span",En,"2")):(v(),R(m(se),{key:1,icon:m(fe)},null,8,["icon"]))],4),B("div",{class:"g-gantt-step-label",style:y({color:2===W.value?Z.value:Q.value})}," Configure ",4)],2),B("div",{class:"g-gantt-step-connector",style:y({backgroundColor:N.value.gridAndBorder})},null,4),B("div",{class:w(["g-gantt-stepper-step",{active:3===W.value,completed:W.value>3}])},[B("div",{class:"g-gantt-step-number",style:y({backgroundColor:3===W.value?te.value:W.value>3?ne.value:"#e0e0e0",color:W.value>=3?"white":Z.value})},[W.value<=3?(v(),f("span",Sn,"3")):(v(),R(m(se),{key:1,icon:m(fe)},null,8,["icon"]))],4),B("div",{class:"g-gantt-step-label",style:y({color:3===W.value?Z.value:Q.value})}," Result ",4)],2)]),1===W.value?(v(),f("div",Dn,[B("div",$n,[B("div",{class:"g-gantt-file-dropzone",onClick:le,onDragover:n[0]||(n[0]=P(()=>{},["prevent"])),onDrop:n[1]||(n[1]=P(e=>{const t=e.dataTransfer?.files;t&&t.length>0&&(L.value=t[0],W.value=2)},["prevent"])),style:y({borderColor:N.value.gridAndBorder})},[$(m(se),{icon:m(me),class:"file-icon",style:y({color:te.value})},null,8,["icon","style"]),n[7]||(n[7]=B("p",null,"Click or drag a file here to import",-1)),B("small",null,"Supported formats: "+D(re.value.map(e=>e.label).join(", ")),1)],36),B("input",{type:"file",ref_key:"fileInput",ref:H,onChange:ie,class:"g-gantt-file-input",accept:re.value.map(e=>{switch(e.value){case"jira":return".json";case"csv":return".csv";default:return""}}).filter(Boolean).join(",")},null,40,Mn)])])):2===W.value?(v(),f("div",Tn,[L.value?(v(),f("div",An,[B("div",{class:"g-gantt-file-info",style:y({backgroundColor:ee.value})},[B("div",null,[n[8]||(n[8]=B("strong",null,"Selected file:",-1)),S(" "+D(L.value.name),1)]),B("div",null,[n[9]||(n[9]=B("strong",null,"Size:",-1)),S(" "+D((L.value.size/1024).toFixed(2))+" KB",1)])],4),B("div",Ln,[B("div",Rn,[n[10]||(n[10]=B("label",null,"Format",-1)),j(B("select",{"onUpdate:modelValue":n[2]||(n[2]=e=>A.value=e),style:y({borderColor:N.value.gridAndBorder})},[(v(!0),f(h,null,b(re.value,e=>(v(),f("option",{key:e.value,value:e.value},D(e.label),9,zn))),128))],4),[[q,A.value]])]),B("div",Yn,[B("button",{class:"g-gantt-toggle-btn",onClick:n[3]||(n[3]=e=>X.value=!X.value),style:y({color:te.value})},D(X.value?"Hide advanced options":"Show advanced options"),5)]),X.value?(v(),f("div",{key:0,class:"g-gantt-advanced-options",style:y({borderTopColor:N.value.gridAndBorder})},[B("div",In,[n[11]||(n[11]=B("label",null,"Start date field",-1)),j(B("input",{type:"text","onUpdate:modelValue":n[4]||(n[4]=e=>_.value=e),style:y({borderColor:N.value.gridAndBorder})},null,4),[[O,_.value]])]),B("div",Pn,[n[12]||(n[12]=B("label",null,"End date field",-1)),j(B("input",{type:"text","onUpdate:modelValue":n[5]||(n[5]=e=>F.value=e),style:y({borderColor:N.value.gridAndBorder})},null,4),[[O,F.value]])])],4)):M("",!0)]),B("div",Hn,[B("button",{class:"g-gantt-button secondary",onClick:n[6]||(n[6]=e=>W.value=1),style:y({backgroundColor:Q.value,color:Z.value})}," Back ",4),B("button",{class:"g-gantt-button primary",onClick:ue,disabled:m(p),style:y({backgroundColor:te.value,color:"white"})},[m(p)?(v(),R(m(se),{key:0,icon:m(he),class:"fa-spin"},null,8,["icon"])):(v(),f("span",Fn,"Import"))],12,_n)])])):M("",!0)])):3===W.value?(v(),f("div",Gn,[B("div",jn,[U.value?(v(),f("div",On,[$(m(se),{icon:m(fe),class:"result-icon success",style:y({color:ne.value,backgroundColor:`rgba(${parseInt(ne.value.slice(1,3),16)}, \n                                                    ${parseInt(ne.value.slice(3,5),16)}, \n                                                    ${parseInt(ne.value.slice(5,7),16)}, 0.1)`})},null,8,["icon","style"]),n[13]||(n[13]=B("h4",null,"Import completed successfully",-1)),G.value.length>0?(v(),f("div",{key:0,class:"g-gantt-warnings",style:y({backgroundColor:`rgba(${parseInt(oe.value.slice(1,3),16)}, \n                                         ${parseInt(oe.value.slice(3,5),16)}, \n                                         ${parseInt(oe.value.slice(5,7),16)}, 0.1)`,borderLeftColor:oe.value})},[B("h5",Un,[$(m(se),{icon:m(be)},null,8,["icon"]),S(" Warnings ("+D(G.value.length)+") ",1)]),B("ul",null,[(v(!0),f(h,null,b(G.value,(e,t)=>(v(),f("li",{key:t,style:{color:"#aa8700"}},D(e),1))),128))])],4)):M("",!0)])):!1===U.value?(v(),f("div",Xn,[$(m(se),{icon:m(ve),class:"result-icon error",style:y({color:ae.value,backgroundColor:`rgba(${parseInt(ae.value.slice(1,3),16)}, \n                                                    ${parseInt(ae.value.slice(3,5),16)}, \n                                                    ${parseInt(ae.value.slice(5,7),16)}, 0.1)`})},null,8,["icon","style"]),n[14]||(n[14]=B("h4",null,"Error during import",-1)),B("p",null,D(m(C)),1)])):M("",!0),B("div",Wn,[B("button",{class:"g-gantt-button secondary",onClick:de,style:y({backgroundColor:Q.value,color:Z.value})}," Import another file ",4),B("button",{class:"g-gantt-button primary",onClick:ce,style:y({backgroundColor:te.value,color:"white"})}," Close ",4)])])])):M("",!0)])],4)])):M("",!0)]),_:1})]))}}),qn={class:"g-gantt-command-block"},Nn={key:0,class:"g-gantt-command-vertical"},Zn=["disabled"],Kn=["disabled"],Jn={key:1,class:"g-gantt-command-groups"},Qn=["disabled"],ea=["disabled"],ta={class:"g-gantt-command-fixed"},na={class:"g-gantt-command-slider"},aa=["disabled"],oa=["disabled"],ra=["aria-valuenow"],la=["disabled"],ia=["disabled"],sa={class:"g-gantt-command-block"},ua={class:"g-gantt-command-zoom"},da=["disabled"],ca=["disabled"],ga={class:"g-gantt-command-history"},pa=["disabled"],va=["disabled"],fa={class:"g-gantt-command-block"},ma={key:0,class:"g-gantt-command-export"},ha={class:"g-gantt-export-container"},ba=["disabled"],ya=["disabled"],wa={key:0,class:"g-gantt-export-loading"},xa=/* @__PURE__ */Ot(/* @__PURE__ */p({__name:"GGanttCommands",props:{colors:{},font:{},maxRows:{},hasGroupRows:{type:Boolean},isAtTop:{type:Boolean},isAtBottom:{type:Boolean},zoomLevel:{},internalPrecision:{},precision:{},canZoomIn:{type:Boolean},canZoomOut:{type:Boolean},scrollPosition:{},exportEnabled:{type:Boolean},isExporting:{type:Boolean},selectedExportFormat:{},rowManager:{},export:{type:Function}},emits:["scrollRowUp","scrollRowDown","expandAllGroups","collapseAllGroups","handleToStart","handleBack","handleScroll","handleForward","handleToEnd","zoomOut","zoomIn","undo","redo","triggerExport","update:selectedExportFormat","update:scrollPosition"],setup(e,{emit:t}){N(e=>({v1ddcb658:e.colors.rangeHighlight,b7e73b6c:e.colors.text}));const n=e,a=t,o=g({get:()=>n.selectedExportFormat,set:e=>a("update:selectedExportFormat",e)}),r=g({get:()=>n.scrollPosition,set:e=>a("update:scrollPosition",e)}),l=()=>a("scrollRowUp"),i=()=>a("scrollRowDown"),s=()=>a("expandAllGroups"),u=()=>a("collapseAllGroups"),d=()=>a("handleToStart"),c=()=>a("handleBack"),p=()=>a("handleScroll"),h=()=>a("handleForward"),b=()=>a("handleToEnd"),w=()=>a("zoomOut"),x=()=>a("zoomIn"),k=()=>a("undo"),C=()=>a("redo"),S=e=>{a("triggerExport")};return(t,a)=>(v(),f("div",{class:"g-gantt-command",style:y({background:e.colors.commands,fontFamily:e.font}),"aria-label":"Gantt Commands"},[E(t.$slots,"commands",{zoomIn:x,zoomOut:w,scrollRowUp:l,scrollRowDown:i,expandAllGroups:s,collapseAllGroups:u,handleToStart:d,handleBack:c,handleScroll:p,handleForward:h,handleToEnd:b,undo:k,redo:C,canUndo:e.rowManager.canUndo,canRedo:e.rowManager.canRedo,isAtTop:e.isAtTop,isAtBottom:e.isAtBottom,zoomLevel:e.zoomLevel,export:n.export||S},()=>[B("div",qn,[e.maxRows>0?(v(),f("div",Nn,[B("button",{onClick:l,"aria-label":"Scroll row up",disabled:e.isAtTop},[$(m(se),{icon:m(ye),class:"command-icon"},null,8,["icon"])],8,Zn),B("button",{onClick:i,"aria-label":"Scroll row down",disabled:e.isAtBottom},[$(m(se),{icon:m(we),class:"command-icon"},null,8,["icon"])],8,Kn)])):M("",!0),e.hasGroupRows?(v(),f("div",Jn,[B("button",{onClick:s,"aria-label":"Expand all groups",disabled:e.rowManager.areAllGroupsExpanded.value},[$(m(se),{icon:m(xe),class:"command-icon"},null,8,["icon"])],8,Qn),B("button",{onClick:u,"aria-label":"Collapse all groups",disabled:e.rowManager.areAllGroupsCollapsed.value},[$(m(se),{icon:m(ke),class:"command-icon"},null,8,["icon"])],8,ea)])):M("",!0)]),B("div",ta,[B("div",na,[B("button",{disabled:0===e.scrollPosition,onClick:d,"aria-label":"Scroll to start"},[$(m(se),{icon:m(Ce),class:"command-icon"},null,8,["icon"])],8,aa),B("button",{disabled:0===e.scrollPosition,onClick:c,"aria-label":"Scroll back"},[$(m(se),{icon:m(Be),class:"command-icon"},null,8,["icon"])],8,oa),j(B("input",{"onUpdate:modelValue":a[0]||(a[0]=e=>r.value=e),type:"range",min:"0",max:"100",class:"g-gantt-scroller",style:y({"--value":`${e.scrollPosition}%`}),onInput:p,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":e.scrollPosition,"aria-label":"Gantt scroll position"},null,44,ra),[[O,r.value]]),B("button",{disabled:100===e.scrollPosition,onClick:h,"aria-label":"Scroll up"},[$(m(se),{icon:m(Ee),class:"command-icon"},null,8,["icon"])],8,la),B("button",{disabled:100===e.scrollPosition,onClick:b,"aria-label":"Scroll to end"},[$(m(se),{icon:m(Se),class:"command-icon"},null,8,["icon"])],8,ia)])]),B("div",sa,[B("div",ua,[B("button",{onClick:w,"aria-label":"Zoom-out Gantt",disabled:!e.canZoomOut},[$(m(se),{icon:m(De),class:"command-icon"},null,8,["icon"])],8,da),B("button",{onClick:x,"aria-label":"Zoom-in Gantt",disabled:!e.canZoomIn},[$(m(se),{icon:m($e),class:"command-icon"},null,8,["icon"])],8,ca)]),B("div",ga,[B("button",{onClick:k,disabled:!e.rowManager.canUndo.value,"aria-label":"Undo last action"},[$(m(se),{icon:m(Me),class:"command-icon"},null,8,["icon"])],8,pa),B("button",{onClick:C,disabled:!e.rowManager.canRedo.value,"aria-label":"Redo action"},[$(m(se),{icon:m(Te),class:"command-icon"},null,8,["icon"])],8,va)])]),B("div",fa,[e.exportEnabled?(v(),f("div",ma,[B("div",ha,[j(B("select",{"onUpdate:modelValue":a[1]||(a[1]=e=>o.value=e),class:"g-gantt-export-select",disabled:e.isExporting},[...a[3]||(a[3]=[Z('<option value="" disabled data-v-7e8a4e36>Export</option><option value="pdf" data-v-7e8a4e36>PDF</option><option value="png" data-v-7e8a4e36>PNG</option><option value="svg" data-v-7e8a4e36>SVG</option><option value="excel" data-v-7e8a4e36>Excel</option>',5)])],8,ba),[[q,o.value]]),B("button",{onClick:a[2]||(a[2]=()=>S()),disabled:!e.selectedExportFormat||e.isExporting},[$(m(se),{icon:m(Ae),class:"command-icon"},null,8,["icon"]),e.isExporting?(v(),f("span",wa,[$(m(se),{icon:m(he),class:"fa-spin"},null,8,["icon"])])):M("",!0)],8,ya)])])):M("",!0)])],!0)],4))}}),[["__scopeId","data-v-7e8a4e36"]]),ka=(e,t,n)=>{const a=e=>({id:e.id,label:e.label,bars:e.bars?.map(e=>({...e,ganttBarConfig:{id:e.ganttBarConfig.id,label:e.ganttBarConfig.label,html:e.ganttBarConfig.html,hasHandles:e.ganttBarConfig.hasHandles,immobile:e.ganttBarConfig.immobile,bundle:e.ganttBarConfig.bundle,pushOnOverlap:e.ganttBarConfig.pushOnOverlap,pushOnConnect:e.ganttBarConfig.pushOnConnect,style:e.ganttBarConfig.style,class:e.ganttBarConfig.class,connections:e.ganttBarConfig.connections,milestoneId:e.ganttBarConfig.milestoneId,progress:e.ganttBarConfig.progress,progressStyle:e.ganttBarConfig.progressStyle,progressResizable:e.ganttBarConfig.progressResizable}}))||[],connections:e.connections,children:e.children?.map(a)}),o=e.map(a);return{rows:ze(o),expandedGroups:new Set(t),customOrder:new Map(n),timestamp:Date.now()}},Ca=(e,t)=>{const n=(e,t)=>{const a=ze(e);return t&&(a._originalNode=t._originalNode),a.children&&t?.children&&(a.children=a.children.map((e,a)=>n(e,t.children[a]))),a};return{rows:e.rows.map(e=>{const a=t.find(t=>t.id===e.id);return n(e,a)}),expandedGroups:new Set(e.expandedGroups),customOrder:new Map(e.customOrder)}},Ba=(e,t)=>{if(t.length<=1)return;let n=e[t[0]];for(let a=1;a<t.length-1;a++){if(!n?.children)return;n=n.children[t[a]]}return n?.id},Ea=(e,t)=>{for(const n of e){const e=n.bars.find(e=>e.ganttBarConfig.id===t);if(e)return e;if(n.children){const e=Ea(n.children,t);if(e)return e}}return null},Sa=(e,t)=>{for(const n of e){if(n.id===t)return n;if(n.children){const e=Sa(n.children,t);if(e)return e}}return null},Da=(e,t)=>{for(let n=0;n<e.length;n++){if(e[n].id===t)return[n];if(e[n].children){const a=Da(e[n].children,t);if(a.length)return[n,...a]}}return[]},$a=(e,t)=>{const n=t=>{for(const a of t){if(a.bars.some(t=>t.ganttBarConfig.id===e))return a.id;if(a.children){const e=n(a.children);if(e)return e}}return null};return n(t)||""},Ma=e=>{const t=/* @__PURE__ */new Map,n=e=>{e.forEach(e=>{e.bars.forEach(e=>{t.set(e.ganttBarConfig.id,e)}),e.children&&n(e.children)})};return n(e.rows),t},Ta=(e,t,n,a,o)=>{const r=[],l=n=>{for(const a of n){if(!a.id)continue;const n=Da(e.rows,a.id),o=Da(t.rows,a.id);if(n.length!==o.length||!n.every((e,t)=>e===o[t])){const l=n.length>1?Ba(e.rows,n):void 0,i=o.length>1?Ba(t.rows,o):void 0;r.push({type:l!==i?"group":"reorder",sourceRow:a,oldIndex:n[n.length-1],newIndex:o[o.length-1],oldParentId:l,newParentId:i})}if(a.children){const e=Sa(t.rows,a.id);e?.children&&l(a.children)}}};l(e.rows);const i=((e,t,n,a,o)=>{const r=[],l=Ma(e),i=Ma(t);return l.forEach((e,t)=>{const l=i.get(t);if(l){const t=((e,t,n,a,o)=>e[n.value]===t[n.value]&&e[a.value]===t[a.value]?null:{barId:e.ganttBarConfig.id,rowId:$a(e.ganttBarConfig.id,o.value),oldStart:e[n.value],newStart:t[n.value],oldEnd:e[a.value],newEnd:t[a.value]})(e,l,n,a,o);t&&r.push(t)}}),r})(e,t,n,a,o);return{rowChanges:r,barChanges:i}},Aa=["id"],La={class:"g-gantt-main-layout","aria-controls":"gantt-controls"},Ra={key:0,class:"connection-preview",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",zIndex:2e3,overflow:"visible"}},za=/* @__PURE__ */p({__name:"GGanttChart",props:{chartStart:{},chartEnd:{},precision:{default:"day"},fixedPrecision:{type:Boolean,default:!1},barStart:{},barEnd:{},currentTime:{type:Boolean},currentTimeLabel:{default:""},pointerMarker:{type:Boolean},dateFormat:{type:[String,Boolean],default:We},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:()=>[]},highlightedDateRanges:{default:()=>[]},locale:{default:"en"},enableRowDragAndDrop:{type:Boolean,default:!1},markerConnection:{default:"forward"},showLabel:{type:Boolean,default:!0},showGroupLabel:{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},maxZoom:{default:10},minZoom:{default:1},tick:{default:0},autoScrollToToday:{type:Boolean,default:!1},showPlannedBars:{type:Boolean,default:!1}},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","update:importer-visible","click-timeaxis-event","precision-change"],setup(t,{expose:n,emit:a}){const o=t,r=a,l=x(ie()),i=K(),s=x(!1),u=x(!1),d=x(0),c=x(o.showImporter),p=x(null),w=x(null),k=x(null),S=x(null),D=x(null),z=x(null),Y=x(Math.min(50,Math.max(20,o.baseUnitWidth))),P=(e,t,n)=>Math.min(n,Math.max(t,e)),j=x(P(o.maxZoom,1,20)),O=x(P(o.minZoom,1,j.value)),X=x(P(o.defaultZoom,O.value,j.value)),V=()=>o.labelColumnWidth*(0===o.multiColumnLabel.length?1:o.multiColumnLabel.length+(o.multiColumnLabel.some(e=>"Label"===e.field)?0:1)),q=x(V());T(()=>o.multiColumnLabel,()=>{q.value=V()});const N=le(w),Z={startX:0,isDragging:!1},te=((t,{barStart:n,barEnd:a,dateFormat:o,multiColumnLabel:r,onSort:l,initialSort:i,onGroupExpansion:s},u)=>{const d=x({column:i.column,direction:i.direction}),c=x(/* @__PURE__ */new Set),p=x(/* @__PURE__ */new Set),v=x(/* @__PURE__ */new Set),f=x(/* @__PURE__ */new Map),m=x([]),h=x([]),b=x(-1),y=()=>{h.value=[ka(m.value,p.value,f.value)],b.value=0};C(()=>{y()});const w=g(()=>b.value>0&&h.value.length>1),k=g(()=>h.value.length>1&&b.value<h.value.length-1),B=()=>{if(b.value<h.value.length-1&&(h.value=h.value.slice(0,b.value+1)),h.value.push(ka(m.value,p.value,f.value)),b.value++,h.value.length>50){const e=h.value.length-50;h.value=h.value.slice(e),b.value=Math.max(0,b.value-e)}},E=()=>u?.value?.length?u.value:(()=>{const e=t.default?.(),n=[];if(!e)return n;const a=e=>({groupStartDate:e.groupStartDate??e["group-start-date"],groupEndDate:e.groupEndDate??e["group-end-date"]});return e.forEach(e=>{if(e.props?.bars||e.props?.children){const{label:t,bars:o=[],children:r,id:l,connections:i=[]}=e.props;n.push({id:l,label:t,bars:o,children:r,connections:i,...a(e.props),_originalNode:e})}else Array.isArray(e.children)&&e.children.forEach(e=>{const t=e;if(t?.props?.bars||t?.props?.children){const{label:e,bars:o=[],children:r,id:l,connections:i=[]}=t.props;n.push({id:l,label:e,bars:o,children:r,connections:i,...a(t.props),_originalNode:t})}})}),n})();m.value=E(),T(()=>E(),e=>{m.value=e});const S=e=>{if(!e.children)return e.bars||[];const t=e.children.flatMap(e=>[...S(e),...e.bars||[]]),r=t.length?t:e.bars||[];if(!r.length&&!e.groupStartDate&&!e.groupEndDate)return[];const l="string"==typeof o.value?o.value:"YYYY-MM-DD HH:mm";if(!r.length){const t=e.groupStartDate?D(e.groupStartDate):null,o=e.groupEndDate?D(e.groupEndDate):null;return t||o?[{[n.value]:(t||o).format(l),[a.value]:(o||t).format(l),ganttBarConfig:{id:`group-${e.id||e.label}`,immobile:!0,label:e.label,style:{background:"transparent",cursor:"pointer"},connections:e.connections||[]}}]:[]}let i=r.reduce((e,t)=>{const a=D(t[n.value]);return!e||a.isBefore(e)?a:e},null),s=r.reduce((e,t)=>{const n=D(t[a.value]);return!e||n.isAfter(e)?n:e},null);if(!i||!s)return[];if(e.groupStartDate){const t=D(e.groupStartDate);t.isBefore(i)&&(i=t)}if(e.groupEndDate){const t=D(e.groupEndDate);t.isAfter(s)&&(s=t)}return[{[n.value]:i.format(l),[a.value]:s.format(l),ganttBarConfig:{id:`group-${e.id||e.label}`,immobile:!0,label:e.label,style:{background:"transparent",cursor:"pointer"},connections:e.connections||[]}}]},D=t=>"string"==typeof t||t instanceof Date?e(t):e(),$=e=>{if(e.children?.length){const t=e.children.map(e=>$(e)).filter(e=>null!==e);return 0===t.length?M(e.bars):t.reduce((e,t)=>!e||t.isBefore(e)?t:e)}return M(e.bars)},M=e=>0===e.length?null:e.reduce((e,t)=>{const a=D(t[n.value]);return!e||a.isBefore(e)?a:e},null),A=e=>{if(e.children?.length){const t=e.children.map(e=>A(e)).filter(e=>null!==e);return 0===t.length?L(e.bars):t.reduce((e,t)=>!e||t.isAfter(e)?t:e)}return L(e.bars)},L=e=>0===e.length?null:e.reduce((e,t)=>{const n=D(t[a.value]);return!e||n.isAfter(e)?n:e},null),R=e=>{const t=$(e),n=A(e);return t&&n?n.diff(t,"minutes"):0},z=g(()=>{let e=[...m.value];if(!e.length)return e;const t=e=>e.map(e=>{if(Array.isArray(e.children)){const n=e.children.length?t(e.children):[];return{...e,children:n,bars:S(e)}}return e});return e=t(e),"none"!==d.value.direction?Y(e,d.value.column,d.value.direction):f.value.size>0?e.sort((e,t)=>(e.id?f.value.get(e.id)??Number.MAX_VALUE:Number.MAX_VALUE)-(t.id?f.value.get(t.id)??Number.MAX_VALUE:Number.MAX_VALUE)):e}),Y=(e,t,n)=>e.map(e=>e.children?.length?{...e,children:Y(e.children,t,n)}:e).sort((e,a)=>{const o=((e,t,n)=>{if((e.children?.length||0)!==(t.children?.length||0))return(t.children?.length||0)-(e.children?.length||0);const a=r.value?.find(e=>e.field===n);if(a?.sortFn&&!["Id","Label","StartDate","EndDate","Duration"].includes(n))return a.sortFn(e,t);switch(n){case"Id":const n=e.id??0,o=t.id??0;return n<o?-1:n>o?1:0;case"Label":return e.label.localeCompare(t.label,void 0,{numeric:!0,sensitivity:"base"});case"StartDate":{const n=$(e),a=$(t);return n||a?n?a?n.valueOf()-a.valueOf():-1:1:0}case"EndDate":{const n=A(e),a=A(t);return n||a?n?a?n.valueOf()-a.valueOf():-1:1:0}case"Duration":return R(e)-R(t);case"Progress":{const n=e=>{const t=e.bars.map(e=>e.ganttBarConfig.progress).filter(e=>void 0!==e);return 0===t.length?-1:t.reduce((e,t)=>e+t,0)/t.length},a=n(e),o=n(t);return-1===a&&-1===o?0:-1===a?1:-1===o?-1:a-o}default:if(a?.valueGetter){const n=a.valueGetter(e),o=a.valueGetter(t);return String(n).localeCompare(String(o))}return 0}})(e,a,t);return"asc"===n?o:-o}),I=e=>p.value.has(e),P=g(()=>{const e=t=>t.some(t=>Array.isArray(t.children)&&t.children.length>0||t.children&&e(t.children));return e(z.value)}),H=g(()=>{if(!P.value)return!1;const e=t=>t.every(t=>!Array.isArray(t.children)||!!t.id&&p.value.has(t.id)&&(!t.children.length||e(t.children)));return e(z.value)}),_=g(()=>{if(!P.value)return!1;const e=t=>t.every(t=>!Array.isArray(t.children)||(!t.id||!p.value.has(t.id))&&(!t.children.length||e(t.children)));return e(z.value)});return{rows:z,updateRows:e=>{m.value=e,B()},sortState:d,toggleSort:e=>{const t=d.value.direction;if(d.value.column!==e)d.value={column:e,direction:"asc"};else switch(d.value.direction){case"none":d.value.direction="asc";break;case"asc":d.value.direction="desc";break;case"desc":d.value.direction="none"}var n;l(d.value),c.value.forEach(e=>e()),"none"!==t&&"none"===d.value.direction&&(n=z.value,0===f.value.size||"none"!==d.value.direction||[...n].sort((e,t)=>(e.id?f.value.get(e.id)??Number.MAX_VALUE:Number.MAX_VALUE)-(t.id?f.value.get(t.id)??Number.MAX_VALUE:Number.MAX_VALUE)))},getChartRows:()=>z.value,onSortChange:e=>(c.value.add(e),()=>{c.value.delete(e)}),toggleGroupExpansion:e=>{p.value.has(e)?p.value.delete(e):p.value.add(e),s(e),v.value.forEach(e=>e())},isGroupExpanded:I,getFlattenedRows:()=>{const e=t=>t.flatMap(t=>t.children?.length&&I(t.id)?[t,...e(t.children)]:[t]);return e(z.value)},onGroupExpansionChange:e=>(v.value.add(e),()=>{v.value.delete(e)}),customOrder:f,resetCustomOrder:()=>{f.value.clear()},expandAllGroups:()=>{const e=t=>{t.forEach(t=>{Array.isArray(t.children)&&t.id&&(p.value.add(t.id),t.children.length&&e(t.children))})};e(E()),v.value.forEach(e=>e())},collapseAllGroups:()=>{p.value.clear(),v.value.forEach(e=>e())},canUndo:w,canRedo:k,undo:()=>{const e=h.value[b.value];b.value--;const t=h.value[b.value],o=Ta(e,t,n,a,z),r=Ca(t,m.value);return m.value=r.rows,f.value=r.customOrder,o},redo:()=>{const e=h.value[b.value];b.value++;const t=h.value[b.value],o=Ta(e,t,n,a,z),r=Ca(t,m.value);return m.value=r.rows,f.value=r.customOrder,o},clearHistory:()=>{y()},onBarMove:()=>{B()},areAllGroupsExpanded:H,areAllGroupsCollapsed:_,expandedGroups:p}})(i,{barStart:J(o,"barStart"),barEnd:J(o,"barEnd"),dateFormat:J(o,"dateFormat"),multiColumnLabel:J(o,"multiColumnLabel"),onSort:e=>r("sort",{sortState:e}),initialSort:o.initialSort,onGroupExpansion:e=>r("group-expansion",{rowId:e})},o.initialRows?J(o,"initialRows"):void 0);U("useRows",te);const{connections:ne,barPositions:ae,getConnectorProps:oe,initializeConnections:re,updateBarPositions:se,handleConnectionClick:ue,selectedConnection:de,deleteSelectedConnection:ce}=function(e,t,n,a){const o=x([]),r=x(/* @__PURE__ */new Map),l=x(null),i=g(()=>e=>{const n=r.value.get(e.sourceId),a=r.value.get(e.targetId);return n&&a?{sourceBar:n,targetBar:a,type:e.type??t.defaultConnectionType,color:e.color??t.defaultConnectionColor,pattern:e.pattern??t.defaultConnectionPattern,animated:e.animated??t.defaultConnectionAnimated,animationSpeed:e.animationSpeed??t.defaultConnectionAnimationSpeed,relation:e.relation??t.defaultConnectionRelation,label:e.label??t.defaultConnectionLabel,labelAlwaysVisible:e.labelAlwaysVisible??t.defaultConnectionLabelAlwaysVisible,labelStyle:e.labelStyle??t.defaultConnectionLabelStyle,isSelected:l.value?.sourceId===e.sourceId&&l.value?.targetId===e.targetId}:null}),s=e=>e.flatMap(e=>{const t=[...e.bars];return e.children?.length?[...t,...s(e.children)]:t}),u=()=>{o.value=[],s(e.rows.value).forEach(e=>{e.ganttBarConfig.connections?.length&&e.ganttBarConfig.connections.forEach(t=>{o.value.push({sourceId:e.ganttBarConfig.id,targetId:t.targetId,type:t.type,color:t.color,pattern:t.pattern,animated:t.animated,animationSpeed:t.animationSpeed,relation:t.relation,label:t.label,labelAlwaysVisible:t.labelAlwaysVisible,labelStyle:t.labelStyle})})})};return T(()=>e.rows.value,()=>{u()},{deep:!0}),{connections:o,barPositions:r,getConnectorProps:i,initializeConnections:u,updateBarPositions:async()=>{await new Promise(e=>requestAnimationFrame(e));const e=document.getElementById(n.value),t=e?.querySelector(".g-gantt-rows-container");if(!t)return;const a=t.scrollTop,o=t.scrollLeft,l=t.getBoundingClientRect(),i=e?.querySelectorAll(".g-gantt-bar");r.value.clear(),i?.forEach(e=>{const t=e.getBoundingClientRect(),n=e.getAttribute("id");n&&r.value.set(n,{id:n,x:t.left-l.left+o,y:t.top-l.top+a,width:t.width,height:t.height})})},handleConnectionClick:e=>{l.value=l.value?.sourceId===e.sourceId&&l.value?.targetId===e.targetId?null:e},selectedConnection:l,deleteSelectedConnection:()=>{if(!l.value)return;const t=s(e.rows.value),n=t.find(e=>e.ganttBarConfig.id===l.value?.sourceId);if(n&&n.ganttBarConfig.connections){n.ganttBarConfig.connections=n.ganttBarConfig.connections.filter(e=>e.targetId!==l.value?.targetId);const o=t.find(e=>e.ganttBarConfig.id===l.value?.targetId);a("connection-delete",{sourceBar:n,targetBar:o,e:new MouseEvent("mouseup")}),l.value=null,u(),e.onBarMove()}}}}(te,o,l,r),{showTooltip:ge,tooltipBar:pe,initTooltip:ve,clearTooltip:fe}=function(){const e=x(!1),t=x(void 0);let n;return{showTooltip:e,tooltipBar:t,initTooltip:a=>{n&&clearTimeout(n),n=setTimeout(()=>{e.value=!0},800),t.value=a},clearTooltip:()=>{clearTimeout(n),e.value=!1}}}(),{font:me,colorScheme:he}=A(o),be=g(()=>Xt(he.value)),{timeaxisUnits:ye,internalPrecision:we,zoomLevel:xe,adjustZoomAndPrecision:ke,canZoomIn:Ce,canZoomOut:Be}=ut({...A(o),baseUnitWidth:Y,defaultZoom:X,maxZoom:j,minZoom:O}),{toDayjs:Ee,chartStartDayjs:Se,chartEndDayjs:De}=Ve({...A(o)});T(we,(e,t)=>{t&&e!==t&&r("precision-change",{precision:e,previousPrecision:t})});const{scrollPosition:$e,handleStep:Me,handleScroll:Te,handleWheel:Ae,handleContentScroll:Le,handleLabelScroll:Re,handleZoomUpdate:ze,scrollRowUp:Fe,scrollRowDown:Xe,isAtTop:We,isAtBottom:qe}=function(e,t){const{scrollRefs:n,updateBarPositions:a,timeaxisUnits:o}=e,{adjustZoomAndPrecision:r}=o,l=x(0),i=x(!0),s=x(!1),u=g(()=>o.timeaxisUnits.value.result.lowerUnits.reduce((e,t)=>e+parseFloat(t.width),0)),d=e=>{n.labelColumn.value&&n.labelColumn.value.setScroll(e.target.scrollTop),c()},c=()=>{if(!n.rowsContainer.value)return;const{scrollTop:e,scrollHeight:t,clientHeight:a}=n.rowsContainer.value;i.value=0===e,s.value=Math.ceil(e+a)>=t},p=e=>{const t=new Event("scroll",{bubbles:!0,cancelable:!0});return Object.defineProperty(t,"target",{value:e,enumerable:!0}),t};return{scrollPosition:l,isAtTop:i,isAtBottom:s,handleStep:(e,t)=>{t.scrollLeft=(u.value-t.clientWidth)*e/100,l.value=e},handleScroll:e=>{e.scrollLeft=(u.value-e.clientWidth)*l.value/100},handleWheel:(e,n)=>{0===t?0!==e.deltaX&&(e.preventDefault(),n.scrollLeft+=e.deltaX,l.value=n.scrollLeft/(u.value-n.clientWidth)*100):0!==e.deltaX&&e.preventDefault()},handleContentScroll:d,handleLabelScroll:e=>{n.rowsContainer.value&&(n.rowsContainer.value.scrollTop=e,c())},handleZoomUpdate:async e=>{r(e),await L(),a()},scrollRowUp:()=>{n.rowsContainer.value&&(n.rowsContainer.value.scrollTop=Math.max(0,n.rowsContainer.value.scrollTop-(n.rowsContainer.value.firstElementChild?.clientHeight||0)),d(p(n.rowsContainer.value)))},scrollRowDown:()=>{n.rowsContainer.value&&(n.rowsContainer.value.scrollTop=Math.min(n.rowsContainer.value.scrollHeight-n.rowsContainer.value.clientHeight,n.rowsContainer.value.scrollTop+(n.rowsContainer.value.firstElementChild?.clientHeight||0)),d(p(n.rowsContainer.value)))}}}({scrollRefs:{rowsContainer:D,labelColumn:z},updateBarPositions:se,timeaxisUnits:{timeaxisUnits:ye,internalPrecision:we,zoomLevel:xe,adjustZoomAndPrecision:ke,canZoomIn:Ce,canZoomOut:Be}},o.maxRows),{handleKeyDown:Ze}=function(e,t,n,a,o){const{handleStep:r,handleZoomUpdate:l,scrollPosition:i}=e,{selectedConnection:s,deleteSelectedConnection:u}=a;return{handleKeyDown:e=>{if(n.value&&e.target===n.value){if(s.value&&o.value)switch(e.key){case"Delete":return void u();case"Escape":return void(s.value=null)}switch(e.key){case"ArrowLeft":t.value&&i.value>0&&r(Math.max(0,i.value-10),t.value);break;case"ArrowRight":t.value&&i.value<100&&r(Math.min(100,i.value+10),t.value);break;case"+":l(!0);break;case"-":l(!1);break;case"Home":t.value&&r(0,t.value);break;case"End":t.value&&r(100,t.value);break;case"PageUp":t.value&&i.value>=10?r(i.value-10,t.value):t.value&&r(0,t.value);break;case"PageDown":t.value&&i.value<=90?r(i.value+10,t.value):t.value&&r(100,t.value)}}}}}({scrollPosition:$e,handleStep:Me,handleZoomUpdate:ze},k,S,{selectedConnection:de,deleteSelectedConnection:ce},J(o.enableConnectionDeletion)),{handleResizeStart:Ke,handleResizeMove:Je,handleResizeEnd:Qe,handleTouchStart:et,handleTouchMove:tt,resetResizeState:nt}=(()=>{const e=x({isResizing:!1,startX:0,startWidth:0}),t=()=>{e.value={isResizing:!1,startX:0,startWidth:0}};return{resizeState:e,handleResizeStart:(t,n)=>{t.preventDefault(),e.value={isResizing:!0,startX:t.clientX,startWidth:n},document.body.style.cursor="col-resize"},handleResizeMove:(t,n)=>{e.value.isResizing&&(t.preventDefault(),n(Math.max(0,e.value.startWidth+(t.clientX-e.value.startX))))},handleResizeEnd:()=>{e.value.isResizing&&(document.body.style.cursor="",t())},handleTouchStart:(t,n)=>{const a=t.touches[0];a&&(t.preventDefault(),e.value={isResizing:!0,startX:a.clientX,startWidth:n})},handleTouchMove:(t,n)=>{if(!e.value.isResizing)return;const a=t.touches[0];a&&(t.preventDefault(),n(Math.max(0,e.value.startWidth+(a.clientX-e.value.startX))))},resetResizeState:t}})(),{connectionState:at,hoverState:ot,startConnectionCreation:it,updateConnectionDrag:st,completeConnection:dt,cancelConnectionCreation:ct,handleConnectionPointHover:gt,canBeConnectionTarget:pt}=function(e,t,n,a){const o=x({isCreating:!1,sourceBar:null,sourcePoint:null,mouseX:0,mouseY:0}),r=x({isVisible:!1,barId:null,point:null}),l=(e,t)=>{if(e.ganttBarConfig.id===t.ganttBarConfig.id)return{isValid:!1,message:"Cannot connect a bar to itself"};const n=e.ganttBarConfig.connections?.find(e=>e.targetId===t.ganttBarConfig.id);return n?{isValid:!1,message:"Existing connection"}:{isValid:!0}},i=()=>{o.value={isCreating:!1,sourceBar:null,sourcePoint:null,mouseX:0,mouseY:0}},s=g(()=>e=>!!o.value.sourceBar&&l(o.value.sourceBar,e).isValid);return{connectionState:o,hoverState:r,startConnectionCreation:(e,t,a)=>{o.value={isCreating:!0,sourceBar:e,sourcePoint:t,mouseX:a.clientX,mouseY:a.clientY},n("connection-start",{sourceBar:e,connectionPoint:t,e:a})},updateConnectionDrag:e=>{o.value.isCreating&&(o.value.mouseX=e.clientX,o.value.mouseY=e.clientY,n("connection-drag",{sourceBar:o.value.sourceBar,connectionPoint:o.value.sourcePoint,currentX:e.clientX,currentY:e.clientY,e:e}))},completeConnection:(r,s,u)=>{if(o.value.sourceBar&&o.value.sourcePoint){if(l(o.value.sourceBar,r).isValid){const l=((e,t)=>"end"===e&&"start"===t?"FS":"start"===e&&"start"===t?"SS":"end"===e&&"end"===t?"FF":"start"===e&&"end"===t?"SF":"FS")(o.value.sourcePoint,s),i={targetId:r.ganttBarConfig.id,type:e.defaultConnectionType.value,color:e.defaultConnectionColor.value,pattern:e.defaultConnectionPattern.value,animated:e.defaultConnectionAnimated.value,animationSpeed:e.defaultConnectionAnimationSpeed.value,relation:l,label:e.defaultConnectionLabel?.value,labelAlwaysVisible:e.defaultConnectionLabelAlwaysVisible?.value,labelStyle:e.defaultConnectionLabelStyle?.value};o.value.sourceBar.ganttBarConfig.connections||(o.value.sourceBar.ganttBarConfig.connections=[]),o.value.sourceBar.ganttBarConfig.connections.push(i);const d=[...t.rows.value];t.updateRows(d),a(),n("connection-complete",{sourceBar:o.value.sourceBar,targetBar:r,sourcePoint:o.value.sourcePoint,targetPoint:s,e:u})}i()}},cancelConnectionCreation:e=>{o.value.sourceBar&&o.value.sourcePoint&&n("connection-cancel",{sourceBar:o.value.sourceBar,connectionPoint:o.value.sourcePoint,e:e}),i()},handleConnectionPointHover:(e,t,n)=>{r.value={isVisible:n,barId:n?e:null,point:n?t:null}},canBeConnectionTarget:s}}({...A(o)},te,r,re);U("connectionCreation",{connectionState:at,hoverState:ot,startConnectionCreation:it,updateConnectionDrag:st,completeConnection:dt,cancelConnectionCreation:ct,handleConnectionPointHover:gt,canBeConnectionTarget:pt});const vt=e=>{at.value.isCreating&&st(e)},mt=e=>{at.value.isCreating&&ct(e)},{findBarElement:ht}=Zt(),bt=g(()=>{if(!at.value.isCreating||!at.value.sourceBar)return null;const e=ht(l.value,at.value.sourceBar.ganttBarConfig.id);if(!e)return null;const t=e.getBoundingClientRect(),n=S.value,a=n?.querySelector(".g-gantt-rows-container");if(!a)return null;const o=a.getBoundingClientRect(),r=a.scrollLeft,i=a.scrollTop;return{x1:"start"===at.value.sourcePoint?t.left-o.left+r:t.right-o.left+r,y1:t.top-o.top+i+t.height/2,x2:at.value.mouseX-o.left+r,y2:at.value.mouseY-o.top+i}}),{exportChart:yt,downloadExport:wt,isExporting:xt}=function(t,n,a,o){const r=x(!1),l=x(null),i=(e,t,n)=>{const a=t.cloneNode(!0);a.style.width=e.offsetWidth+"px",a.style.height=e.offsetHeight+"px";const o=a.querySelectorAll([".g-gantt-bar-label > div",".g-timeunit-min",".label-unit"].join(", "));return a.querySelector(".g-gantt-command").style.display="none",n.exportColumnLabel||(a.querySelector(".g-gantt-label-section").style.display="none"),o.forEach(e=>{const t=e;t.style.display="flex",t.style.alignItems="center",t.style.justifyContent="center",t.style.textAlign="center",t.style.position="relative",t.style.fontSize="10px",t.style.transform="translateY(-25%)"}),a.querySelectorAll(".cell-content, .text-ellipsis, .text-ellipsis-value").forEach(e=>{const t=e;t.style.overflow="visible",t.style.alignItems="center",t.style.whiteSpace="normal",t.style.textOverflow="ellipsis",t.style.fontSize="10px",t.style.transform="translateY(-1%)"}),a.querySelectorAll(".g-label-column-row").forEach(e=>{const t=e;t.style.overflow="visible",t.style.flexWrap="wrap"}),a.querySelectorAll(".g-gantt-bar-label").forEach(e=>{const t=e;t.style.overflow="hidden",t.style.textOverflow="ellipsis",t.style.whiteSpace="nowrap",t.style.transform="translateY(-15%)"}),a.querySelectorAll(".g-gantt-progress-bar").forEach(e=>{const t=e;t.style.display="",t.style.alignItems="",t.style.justifyContent="",t.style.transform="",t.style.position=""}),a.querySelectorAll(".g-timeunit-min").forEach(e=>{e.style.transform="translateY(-35%)"}),a.querySelectorAll(".progress-text").forEach(e=>{e.style.transform="translateY(-40%)"}),a.querySelectorAll(".g-timeaxis-event-label").forEach(e=>{const t=e;t.style.fontSize="8px",t.style.transform="translateY(-45%)"}),a.querySelectorAll(".g-gantt-milestone-label").forEach(e=>{e.style.transform="translateY(-15%)"}),a.querySelectorAll(".g-gantt-milestone-marker").forEach(e=>{e.style.transform="translateY(-0.2%)"}),a.querySelectorAll(".g-gantt-row-label").forEach(e=>{e.style.transform="translateY(-15%)"}),a};return{exportChart:async t=>{r.value=!0,l.value=null;try{const n=w.value,r=p.value;if(!n||!r)throw new Error("Gantt chart element not found");const l=t.filename||`gantt-export-${/* @__PURE__ */(new Date).toISOString().slice(0,10)}`;switch(t.format){case"pdf":return await(async(e,t,n)=>{try{const a=i(e,t,n),o=document.createElement("div");o.style.position="absolute",o.style.left="-9999px",o.style.width=e.offsetWidth+"px",o.style.height=e.offsetHeight+"px",o.style.overflow="hidden",o.appendChild(a),document.body.appendChild(o),await new Promise(e=>setTimeout(e,100));const r=n.orientation||"landscape",l=n.scale||1,s=void 0!==n.margin?n.margin:10,u=new Ie({orientation:r,unit:"mm",format:n.paperSize||"a4"}),d=await Ye(a,{scale:l,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});document.body.removeChild(o);const c="landscape"===r?u.internal.pageSize.getHeight():u.internal.pageSize.getWidth(),g="landscape"===r?u.internal.pageSize.getWidth():u.internal.pageSize.getHeight(),p=c-2*s,v=d.width,f=d.height,m=p/(v/f);if(m>g-2*s){let e=0;for(;e<f;){e>0&&u.addPage();const t=Math.min(f-e,v/p*(g-2*s)),a=t/f*f;u.addImage(d.toDataURL("image/jpeg",n.quality||.95),"JPEG",s,s,p,p*(a/v),"","FAST",e/f),e+=t}}else u.addImage(d.toDataURL("image/jpeg",n.quality||.95),"JPEG",s,s,p,m,"","FAST");return{success:!0,data:u.output("blob"),filename:n.filename||"gantt-chart.pdf"}}catch(a){return{success:!1,data:null,error:a instanceof Error?a.message:"Error during PDF export",filename:n.filename||"gantt-chart.pdf"}}})(n,r,{...t,filename:l+".pdf"});case"png":return await(async(e,t,n)=>{try{const a=i(e,t,n),o=document.createElement("div");o.style.position="absolute",o.style.left="-9999px",o.style.width=e.offsetWidth+"px",o.style.height=e.offsetHeight+"px",o.style.overflow="hidden",o.appendChild(a),document.body.appendChild(o),await new Promise(e=>setTimeout(e,100));const r=n.scale||2,l=await Ye(a,{scale:r,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});return document.body.removeChild(o),{success:!0,data:await new Promise((e,t)=>{l.toBlob(n=>{n?e(n):t(new Error("Error creating blob PNG"))},"image/png",n.quality||.95)}),filename:n.filename||"gantt-chart.png"}}catch(a){return{success:!1,data:null,error:a instanceof Error?a.message:"Error exporting PNG",filename:n.filename||"gantt-chart.png"}}})(n,r,{...t,filename:l+".png"});case"svg":return await(async(e,t,n)=>{try{const a=i(e,t,n),o=document.createElement("div");o.style.position="absolute",o.style.left="-9999px",o.style.width=e.offsetWidth+"px",o.style.height=e.offsetHeight+"px",o.style.overflow="hidden",o.appendChild(a),document.body.appendChild(o),await new Promise(e=>setTimeout(e,100));const r=await Ye(a,{scale:n.scale||2,logging:!1,allowTaint:!0,useCORS:!0,backgroundColor:"#ffffff",imageTimeout:0,removeContainer:!1,foreignObjectRendering:!1});document.body.removeChild(o);const l=r.width,s=r.height,u="http://www.w3.org/2000/svg",d=document.createElementNS(u,"svg");d.setAttribute("width",l.toString()),d.setAttribute("height",s.toString()),d.setAttribute("viewBox",`0 0 ${l} ${s}`),d.setAttribute("xmlns",u),d.setAttribute("version","1.1");const c=document.createElementNS(u,"image");c.setAttribute("width",l.toString()),c.setAttribute("height",s.toString()),c.setAttribute("x","0"),c.setAttribute("y","0"),c.setAttribute("href",r.toDataURL("image/png",n.quality||.95)),d.appendChild(c);const g=(new XMLSerializer).serializeToString(d);return{success:!0,data:new Blob(['<?xml version="1.0" standalone="no"?>\n'+g],{type:"image/svg+xml;charset=utf-8"}),filename:n.filename||"gantt-chart.svg"}}catch(a){return{success:!1,data:null,error:a instanceof Error?a.message:"Error exporting in SVG",filename:n.filename||"gantt-chart.svg"}}})(n,r,{...t,filename:l+".svg"});case"excel":return await(async t=>{try{const n=await import("@e965/xlsx").catch(()=>{throw new Error('Excel export requires the "@e965/xlsx" peer dependency. Install it to enable this feature.')}),{utils:r,write:l}=n,i=r.book_new(),s=e=>e.flatMap(e=>e.children?.length?[e,...s(e.children)]:[e]),u=s(a.rows.value),d=[];d.push(["ID","Task","Start Date","End Date","Duration","Progress (%)"]),u.forEach((t,n)=>{let a="-",r="-",l="-",i="-";if(t.bars&&t.bars.length>0){const n=t.bars.reduce((t,n)=>{const a=e(n[o.barStart.value]);return!t||a.isBefore(t)?a:t},null),s=t.bars.reduce((t,n)=>{const a=e(n[o.barEnd.value]);return!t||a.isAfter(t)?a:t},null);n&&(a=n.format(o.dateFormat.value||"YYYY-MM-DD HH:mm")),s&&(r=s.format(o.dateFormat.value||"YYYY-MM-DD HH:mm")),n&&s&&(l=`${s.diff(n,o.precision.value)}${o.precision.value.charAt(0)}`);const u=t.bars.map(e=>e.ganttBarConfig.progress).filter(e=>void 0!==e);if(u.length>0){const e=u.reduce((e,t)=>e+t,0)/u.length;i=`${Math.round(e)}%`}}d.push([t.id||n+1,t.label,a,r,l,i])});const c=r.aoa_to_sheet(d);r.book_append_sheet(i,c,"Gantt Rows");const g=[];g.push(["Bar ID","Label","Parent Row","Row ID","Start Date","End Date","Duration","Progress (%)","Connections","Milestone","Start Planned","End Planned"]);const p=/* @__PURE__ */new Set,v=[],f=e=>{e.forEach(e=>{e.bars.forEach(t=>{p.has(t.ganttBarConfig.id)||(p.add(t.ganttBarConfig.id),v.push({bar:t,rowLabel:e.label,rowId:e.id||""}))}),e.children&&e.children.length>0&&f(e.children)})};f(a.rows.value),v.forEach(t=>{const{bar:n,rowLabel:a,rowId:r}=t,l=n.ganttBarConfig,i=e(n[o.barStart.value]).format(o.dateFormat.value||"YYYY-MM-DD HH:mm"),s=e(n[o.barEnd.value]).format(o.dateFormat.value||"YYYY-MM-DD HH:mm"),u=`${e(n[o.barEnd.value]).diff(e(n[o.barStart.value]),o.precision.value)}${o.precision.value.charAt(0)}`,d=void 0!==l.progress?`${Math.round(l.progress)}%`:"-",c=l.connections&&l.connections.length>0?l.connections.map(e=>e.targetId).join(", "):"-",p=l.milestoneId?l.milestoneId:"-",v=n.start_planned?e(n.start_planned).format(o.dateFormat.value||"YYYY-MM-DD HH:mm"):"-",f=n.end_planned?e(n.end_planned).format(o.dateFormat.value||"YYYY-MM-DD HH:mm"):"-";g.push([l.id,l.label||"",a,r,i,s,u,d,c,p,v,f])});const m=r.aoa_to_sheet(g);r.book_append_sheet(i,m,"Bars Detail"),[c,m].forEach(e=>{const t=r.decode_range(e["!ref"]||"A1");for(let n=t.s.c;n<=t.e.c;n++){const t=r.encode_cell({r:0,c:n});e[t]||(e[t]={}),e[t].s={font:{bold:!0}}}}),c["!cols"]=[{wch:10},{wch:40},{wch:20},{wch:20},{wch:10},{wch:15}],m["!cols"]=[{wch:15},{wch:30},{wch:30},{wch:10},{wch:20},{wch:20},{wch:10},{wch:15},{wch:30},{wch:20}];const h=l(i,{bookType:"xlsx",type:"array"});return{success:!0,data:new Blob([h],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),filename:t.filename||"gantt-chart.xlsx"}}catch(n){return{success:!1,data:null,error:n instanceof Error?n.message:"Error exporting to Excel",filename:t.filename||"gantt-chart.xlsx"}}})({filename:l+".xlsx"});default:throw new Error(`Format file export not supported: ${t.format}`)}}catch(n){const e=n instanceof Error?n.message:"Unknown Error";return l.value=e,{success:!1,data:null,error:e,filename:t.filename||"export-error"}}finally{r.value=!1}},downloadExport:e=>{if(e.success&&e.data){const t=URL.createObjectURL(e.data),n=document.createElement("a");n.href=t,n.download=e.filename,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)}},isExporting:r,lastError:l}}(0,0,te,{barStart:J(o,"barStart"),barEnd:J(o,"barEnd"),dateFormat:J(o,"dateFormat"),precision:J(o,"precision")}),kt=e=>{const t=k.value;if(!t)return!1;const n=Ee(e);if(!n.isValid())return!1;if(n.isBefore(Se.value)||n.isAfter(De.value))return!1;const a=De.value.diff(Se.value,"minutes");if(a<=0)return!1;const o=n.diff(Se.value,"minutes",!0)/a*Lt.value,r=Math.max(0,Lt.value-t.clientWidth),l=Math.max(0,Math.min(r,o-t.clientWidth/2));return t.scrollLeft=l,$e.value=r>0?l/r*100:0,!0},Ct=x(""),Bt=async e=>{const t=e||Ct.value;if(!t||xt.value)return;const n={...o.exportOptions,format:t};try{const t=await(async e=>{const t={format:o.exportOptions.format||"pdf",quality:o.exportOptions.quality,filename:o.exportOptions.filename,paperSize:o.exportOptions.paperSize,orientation:o.exportOptions.orientation,scale:o.exportOptions.scale,margin:o.exportOptions.margin,...e};r("export-start",t.format);try{const e=await yt(t);return e.success?r("export-success",e):r("export-error",e.error||"Unknown error"),e}catch(n){const e=n instanceof Error?n.message:"Unknown error";return r("export-error",e),{success:!1,data:null,error:e,filename:t.filename||"export-error"}}})(n);wt(t),e||(Ct.value="")}catch(a){}},Et=e=>{e.success&&e.data&&(e.data.rows&&e.data.rows.length>0&&te.updateRows(e.data.rows),r("import-data",e))},Dt=()=>{c.value=!1,r("update:importer-visible",!1)},Mt=g(()=>te.rows.value),Tt=g(()=>Object.keys(i).filter(e=>e.startsWith("milestone-")||"milestone"===e)),At=g(()=>0===o.maxRows?{}:{"max-height":o.maxRows*o.rowHeight+"px","overflow-y":"auto"}),Lt=g(()=>ye.value.result.lowerUnits.reduce((e,t)=>e+parseFloat(t.width),0)),Rt=g(()=>{const e=t=>t.some(t=>Array.isArray(t.children)||t.children&&e(t.children));return e(Mt.value)}),zt=g(()=>({width:`${q.value}px`,maxWidth:`${q.value}px`,position:"relative",flexShrink:0,flexGrow:0})),Yt=e=>{u.value=!0,d.value=e.clientX},It=e=>{if(!u.value||!k.value)return;const t=e.clientX-d.value;d.value=e.clientX,k.value.scrollLeft-=t,$e.value=k.value.scrollLeft/(k.value.scrollWidth-k.value.clientWidth)*100},Pt=()=>{u.value=!1},Ht=e=>{const t=e.touches[0];t&&(Z.isDragging=!0,Z.startX=t.clientX,e.preventDefault())},_t=e=>{if(!Z.isDragging||!k.value)return;const t=e.touches[0];if(!t)return;const n=t.clientX-Z.startX;Z.startX=t.clientX,k.value.scrollLeft-=n,$e.value=k.value.scrollLeft/(k.value.scrollWidth-k.value.clientWidth)*100,e.preventDefault()},Ft=()=>{Z.isDragging=!1},Gt=e=>{q.value=e},jt=e=>{r("row-drop",e),se()},Ot=e=>{r("range-selection",e)},Xt=e=>"string"!=typeof e?e:wn[e]||wn.default;T(()=>Lt.value,()=>{lt.value=Lt.value},{immediate:!0});const Wt=()=>{const e=document.getElementById(l.value),t=e?.querySelector(".g-gantt-scroller");t&&t.style.setProperty("--value",`${$e.value}%`)},Vt=()=>{const e=te.undo();e&&(e.rowChanges.forEach(e=>{r("row-drop",{sourceRow:e.sourceRow,targetRow:void 0,newIndex:e.newIndex,parentId:e.newParentId})}),e.barChanges.forEach(e=>{const t=Ea(te.rows.value,e.barId);t&&r("dragend-bar",{bar:t,e:new MouseEvent("mouseup"),movedBars:/* @__PURE__ */new Map([[t,{oldStart:e.newStart,oldEnd:e.newEnd}]])})}),se())},Nt=()=>{const e=te.redo();e&&(e.rowChanges.forEach(e=>{r("row-drop",{sourceRow:e.sourceRow,targetRow:void 0,newIndex:e.newIndex,parentId:e.newParentId})}),e.barChanges.forEach(e=>{const t=Ea(te.rows.value,e.barId);t&&r("dragend-bar",{bar:t,e:new MouseEvent("mouseup"),movedBars:/* @__PURE__ */new Map([[t,{oldStart:e.oldStart,oldEnd:e.oldEnd}]])})}),se())},Kt=e=>{(e.ctrlKey||e.metaKey)&&"KeyZ"===e.code&&(e.preventDefault(),e.shiftKey?te.canRedo.value&&Nt():te.canUndo.value&&Vt())};let Jt;return C(()=>{const e=te.onSortChange(se),t=te.onGroupExpansionChange(se);Q(e),Q(t),k.value&&k.value.addEventListener("wheel",e=>Ae(e,k.value)),window.addEventListener("mousemove",It),window.addEventListener("mouseup",Pt),window.addEventListener("mousemove",e=>Je(e,Gt)),window.addEventListener("mouseup",Qe),window.addEventListener("keydown",Kt),Jt=new ResizeObserver(se);const n=document.querySelector(".g-gantt-chart");n&&Jt.observe(n),window.addEventListener("resize",se),re(),L(()=>{se(),o.autoScrollToToday&&kt(/* @__PURE__ */new Date)}),T($e,Wt,{immediate:!0})}),Q(()=>{k.value&&k.value.removeEventListener("wheel",e=>Ae(e,k.value)),window.removeEventListener("mousemove",It),window.removeEventListener("mouseup",Pt),window.removeEventListener("mousemove",e=>Je(e,Gt)),window.removeEventListener("mouseup",Qe),window.removeEventListener("keydown",Kt),Jt&&Jt.disconnect(),window.removeEventListener("resize",se)}),T([()=>o.chartStart,()=>o.chartEnd],()=>{se()}),T(()=>o.showImporter,e=>{c.value=e}),T(()=>o.baseUnitWidth,e=>{Y.value=Math.max(1,e)}),T([()=>o.maxZoom,()=>o.minZoom,()=>o.defaultZoom],([e,t,n])=>{j.value=P(e,1,20),O.value=P(t,1,j.value),X.value=P(n,O.value,j.value)}),U(Pe,{...A(o),baseUnitWidth:Y,defaultZoom:X,maxZoom:j,minZoom:O,colors:be,chartSize:N}),U(_e,(e,t,n,a)=>{switch(e.type){case"click":r("click-bar",{bar:t,e:e,datetime:n});break;case"mousedown":r("mousedown-bar",{bar:t,e:e,datetime:n});break;case"mouseup":r("mouseup-bar",{bar:t,e:e,datetime:n});break;case"dblclick":r("dblclick-bar",{bar:t,e:e,datetime:n});break;case"mouseenter":ve(t),r("mouseenter-bar",{bar:t,e:e});break;case"mouseleave":fe(),r("mouseleave-bar",{bar:t,e:e});break;case"dragstart":s.value=!0,r("dragstart-bar",{bar:t,e:e}),se();break;case"drag":r("drag-bar",{bar:t,e:e}),se();break;case"dragend":s.value=!1,r("dragend-bar",{bar:t,e:e,movedBars:a}),se(),te.onBarMove();break;case"contextmenu":r("contextmenu-bar",{bar:t,e:e,datetime:n});break;case"progress-drag-start":ve(t),r("progress-drag-start",{bar:t,e:e});break;case"progress-change":ve(t),r("progress-change",{bar:t,e:e});break;case"progress-drag-end":ve(t),r("progress-drag-end",{bar:t,e:e}),te.onBarMove();break;case"label-edit":r("label-edit",{bar:t,e:e,oldValue:t.ganttBarConfig._previousLabel||"",newValue:t.ganttBarConfig.label||""}),te.onBarMove()}}),U(He,{...o}),U(Oe,l.value),U(Ge,w),U(je,k),U(Ue,we),n({exportChart:yt,isExporting:xt,scrollPosition:g(()=>$e.value),zoomLevel:g(()=>xe.value),internalPrecision:g(()=>we.value),getExpandedGroupIds:()=>[...te.expandedGroups.value],toggleGroupExpansion:te.toggleGroupExpansion,expandAllGroups:te.expandAllGroups,collapseAllGroups:te.collapseAllGroups,areAllGroupsExpanded:te.areAllGroupsExpanded,areAllGroupsCollapsed:te.areAllGroupsCollapsed,restoreZoom:(e,t)=>{xe.value=P(e,O.value,j.value),we.value=t},restoreScrollPosition:e=>{k.value&&Me(e,k.value)},scrollToDate:kt}),(e,n)=>(v(),f("div",{class:"g-gantt-container",role:"application","aria-label":"Interactive Gantt",tabindex:"0",onKeydown:n[20]||(n[20]=(...e)=>m(Ze)&&m(Ze)(...e)),onMousemove:vt,onMouseup:mt,ref_key:"ganttContainer",ref:S,id:l.value},[B("div",{class:"g-gantt-rounded-wrapper",ref_key:"gGantt",ref:p,style:y({background:be.value.background,"--g-gantt-border-color":be.value.gridAndBorder??"#eaeaea"})},[B("div",La,[t.labelColumnTitle?(v(),f("div",{key:0,class:"g-gantt-label-section",style:y(zt.value)},[$(rt,{ref_key:"labelColumn",ref:z,onScroll:m(Re),onRowDrop:jt},H({_:2},[b(e.$slots,(t,n)=>({name:n,fn:I(t=>[E(e.$slots,n,_(F(t)))])}))]),1032,["onScroll"]),B("div",{class:"g-gantt-section-resizer",onMousedown:n[0]||(n[0]=e=>m(Ke)(e,q.value)),onTouchstart:n[1]||(n[1]=e=>m(et)(e,q.value)),onTouchmove:n[2]||(n[2]=e=>m(tt)(e,Gt)),onTouchend:n[3]||(n[3]=(...e)=>m(nt)&&m(nt)(...e)),onTouchcancel:n[4]||(n[4]=(...e)=>m(nt)&&m(nt)(...e))},null,32)],4)):M("",!0),B("div",{ref_key:"ganttWrapper",ref:k,class:"gantt-wrapper",style:y({width:"100%","overflow-x":t.commands?"hidden":"auto"})},[B("div",{ref_key:"ganttChart",ref:w,class:"g-gantt-chart",style:y({width:`${Lt.value}px`,background:be.value.background,fontFamily:m(me)})},[t.hideTimeaxis?M("",!0):(v(),R(St,{key:0,onClickEvent:n[5]||(n[5]=e=>r("click-timeaxis-event",e)),onDragStart:Yt,onTouchstart:Ht,onTouchmove:_t,onTouchend:Ft,onTouchcancel:Ft,timeaxisUnits:m(ye),internalPrecision:m(we)},H({_:2},[e.$slots["upper-timeunit"]?{name:"upper-timeunit",fn:I(t=>[E(e.$slots,"upper-timeunit",_(F(t)))]),key:"0"}:void 0,e.$slots.timeunit?{name:"timeunit",fn:I(t=>[E(e.$slots,"timeunit",_(F(t)))]),key:"1"}:void 0,e.$slots["holiday-tooltip"]?{name:"holiday-tooltip",fn:I(t=>[E(e.$slots,"holiday-tooltip",_(F(t)))]),key:"2"}:void 0,e.$slots["event-tooltip"]?{name:"event-tooltip",fn:I(t=>[E(e.$slots,"event-tooltip",_(F(t)))]),key:"3"}:void 0,e.$slots["timeaxis-event"]?{name:"timeaxis-event",fn:I(t=>[E(e.$slots,"timeaxis-event",_(F(t)))]),key:"4"}:void 0]),1032,["timeaxisUnits","internalPrecision"])),t.grid?(v(),R(Ne,{key:1,timeaxisUnits:m(ye),internalPrecision:m(we)},null,8,["timeaxisUnits","internalPrecision"])):M("",!0),t.currentTime?(v(),R($t,{key:2},H({_:2},[e.$slots["current-time-label"]?{name:"current-time-label",fn:I(()=>[E(e.$slots,"current-time-label")]),key:"0"}:void 0]),1024)):M("",!0),t.pointerMarker?(v(),R(bn,{key:3},H({_:2},[e.$slots["pointer-marker-tooltips"]?{name:"pointer-marker-tooltips",fn:I(({hitBars:t,datetime:n})=>[E(e.$slots,"pointer-marker-tooltips",_(F({hitBars:t,datetime:n})))]),key:"0"}:void 0]),1024)):M("",!0),(v(!0),f(h,null,b(t.milestones,t=>(v(),R(qt,{key:t.date.toString(),milestone:t},H({_:2},[b(Tt.value,t=>({name:t,fn:I(n=>[E(e.$slots,t,G({ref_for:!0},n))])}))]),1032,["milestone"]))),128)),B("div",{class:"g-gantt-rows-container",style:y(At.value),ref_key:"rowsContainer",ref:D,onScroll:n[6]||(n[6]=(...e)=>m(Le)&&m(Le)(...e))},[(v(!0),f(h,null,b(Mt.value,e=>(v(),R(W((e=>e._originalNode?ee(mn,{...e._originalNode.props,label:e.label,bars:e.bars,children:e.children,id:e.id,key:e.id||e.label,onRangeSelection:Ot},(e=>{if(!e||"object"!=typeof e)return{};const t={};for(const[n,a]of Object.entries(e))t[n]="function"==typeof a?a:()=>a;return t})(e._originalNode.children)):ee(mn,{label:e.label,bars:e.bars,id:e.id,key:e.id||e.label,children:e.children,connections:e.connections,onRangeSelection:Ot}))(e)),{key:e.id||e.label}))),128)),m(at).isCreating&&bt.value?(v(),f("svg",Ra,[bt.value?(v(),R(Ut,{key:0,"source-bar":{id:m(at).sourceBar.ganttBarConfig.id,x:bt.value.x1,y:bt.value.y1,width:0,height:0},"target-bar":{id:"preview",x:bt.value.x2,y:bt.value.y2,width:0,height:0},type:"straight",color:t.defaultConnectionColor,pattern:t.defaultConnectionPattern,animated:t.defaultConnectionAnimated,"animation-speed":t.defaultConnectionAnimationSpeed,relation:t.defaultConnectionRelation,style:{opacity:.6},marker:t.markerConnection},null,8,["source-bar","target-bar","color","pattern","animated","animation-speed","relation","marker"])):M("",!0)])):M("",!0),t.enableConnections?(v(!0),f(h,{key:1},b(m(ne),e=>(v(),f(h,{key:`${e.sourceId}-${e.targetId}`},[m(ae).get(e.sourceId)&&m(ae).get(e.targetId)?(v(),R(Ut,G({key:0,ref_for:!0},m(oe)(e),{marker:t.markerConnection,onClick:t=>m(ue)(e)}),null,16,["marker","onClick"])):M("",!0)],64))),128)):M("",!0)],36)],4)],4)]),t.commands?(v(),f("div",{key:0,class:"g-gantt-command",style:y({background:be.value.commands,fontFamily:m(me)}),"aria-label":"Gantt Commands"},[E(e.$slots,"commands",{zoomIn:()=>m(ze)(!0),zoomOut:()=>m(ze)(!1),scrollRowUp:()=>m(Fe)(),scrollRowDown:()=>m(Xe)(),expandAllGroups:()=>m(te).expandAllGroups(),collapseAllGroups:()=>m(te).collapseAllGroups(),handleToStart:()=>m(Me)(0,k.value),handleBack:()=>m(Me)(m($e)-10,k.value),handleScroll:()=>m(Te)(k.value),handleStep:e=>m(Me)(e,k.value),handleForward:()=>m(Me)(m($e)+10,k.value),handleToEnd:()=>m(Me)(100,k.value),undo:()=>Vt(),redo:()=>Nt(),canUndo:m(te).canUndo,canRedo:m(te).canRedo,isAtTop:m(We),isAtBottom:m(qe),zoomLevel:m(xe),internalPrecision:m(we),canZoomIn:m(Ce),canZoomOut:m(Be),scrollPosition:m($e),areAllGroupsExpanded:m(te).areAllGroupsExpanded,areAllGroupsCollapsed:m(te).areAllGroupsCollapsed,export:Bt},()=>[$(xa,{colors:be.value,font:m(me),"max-rows":t.maxRows,"has-group-rows":Rt.value,"is-at-top":m(We),"is-at-bottom":m(qe),"zoom-level":m(xe),"internal-precision":m(we),precision:t.precision,"can-zoom-in":m(Ce),"can-zoom-out":m(Be),"scroll-position":m($e),"export-enabled":t.exportEnabled,"is-exporting":m(xt),"selected-export-format":Ct.value,"row-manager":m(te),export:Bt,onScrollRowUp:m(Fe),onScrollRowDown:m(Xe),onExpandAllGroups:n[7]||(n[7]=e=>m(te).expandAllGroups()),onCollapseAllGroups:n[8]||(n[8]=e=>m(te).collapseAllGroups()),onHandleToStart:n[9]||(n[9]=e=>m(Me)(0,k.value)),onHandleBack:n[10]||(n[10]=e=>m(Me)(m($e)-10,k.value)),onHandleScroll:n[11]||(n[11]=e=>m(Te)(k.value)),onHandleForward:n[12]||(n[12]=e=>m(Me)(m($e)+10,k.value)),onHandleToEnd:n[13]||(n[13]=e=>m(Me)(100,k.value)),onZoomOut:n[14]||(n[14]=()=>m(ze)(!1)),onZoomIn:n[15]||(n[15]=()=>m(ze)(!0)),onUndo:Vt,onRedo:Nt,onTriggerExport:n[16]||(n[16]=()=>Bt()),"onUpdate:selectedExportFormat":n[17]||(n[17]=e=>Ct.value=e),"onUpdate:scrollPosition":n[18]||(n[18]=e=>$e.value=e)},null,8,["colors","font","max-rows","has-group-rows","is-at-top","is-at-bottom","zoom-level","internal-precision","precision","can-zoom-in","can-zoom-out","scroll-position","export-enabled","is-exporting","selected-export-format","row-manager","onScrollRowUp","onScrollRowDown"])])],4)):M("",!0)],4),$(ft,{type:"bar","model-value":m(ge)||s.value,bar:m(pe)},H({_:2},[e.$slots["bar-tooltip"]?{name:"default",fn:I(t=>[E(e.$slots,"bar-tooltip",_(F(t)))]),key:"0"}:void 0]),1032,["model-value","bar"]),$(Vn,{modelValue:c.value,"onUpdate:modelValue":n[19]||(n[19]=e=>c.value=e),title:o.importerTitle,"default-format":o.importerDefaultFormat,"allowed-formats":o.importerAllowedFormats,onImport:Et,onClose:Dt},null,8,["modelValue","title","default-format","allowed-formats"])],40,Aa))}});function Ya(){e.extend(n),e.extend(a),e.extend(o),e.extend(i),e.extend(r),e.extend(t),e.extend(l),e.extend(s),e.extend(u),e.extend(d)}const Ia={install(e){Ya(),e.component("GGanttChart",za),e.component("GGanttRow",mn)}};!function(e,t="top"){if(!e||"undefined"==typeof document)return;const n=document.head||document.querySelector("head"),a=n.querySelector(":first-child"),o=document.createElement("style");o.appendChild(document.createTextNode(e)),"top"===t&&a?n.insertBefore(o,a):n.appendChild(o)}('\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.g-gantt-range-tooltip {\n  position: fixed;\n  padding: 8px 12px;\n  border-radius: 6px;\n  font-size: 0.6em;\n  z-index: 1000;\n  min-width: 120px;\n  max-width: 240px;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n  transform: translateX(-50%) translateY(-100%);\n  pointer-events: none;\n  border: 1px solid rgba(255, 255, 255, 0.2);\n}\n.g-gantt-range-tooltip-title {\n  font-weight: bold;\n  font-size: 0.9em;\n  margin-bottom: 4px;\n  opacity: 0.9;\n}\n.g-gantt-range-tooltip-date {\n  font-size: 1em;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\n/* AGGIUNTO: Fade transition for tooltips */\n.g-fade-enter-active,\n.g-fade-leave-active {\n  transition: opacity 0.2s ease;\n}\n.g-fade-enter-from,\n.g-fade-leave-to {\n  opacity: 0;\n}\n\n/* Group toggle button styling */\n.group-toggle-button {\n  background: none;\n  border: none;\n  cursor: pointer;\n  margin-right: 8px;\n  padding: 2px;\n  border-radius: 2px;\n  transition: background-color 0.2s;\n}\n.group-toggle-placeholder {\n  pointer-events: none;\n}\n.group-toggle-button:hover {\n  background-color: rgba(0, 0, 0, 0.1);\n}\n.group-icon {\n  font-size: 0.8em;\n}\n\n.g-gantt-container {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  height: 100%;\n}\n/* Layout */\n.g-gantt-main-layout > .gantt-wrapper {\n  flex: 1;\n  min-width: 0;\n  display: flex;\n  flex-direction: column;\n}\n.g-gantt-chart {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  flex: 1;\n  min-height: 0;\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  flex: 1;\n  min-height: 0;\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/* Basic Command Section Styles */\n.g-gantt-command {\n  display: flex;\n  align-items: center;\n  height: 40px;\n  border-top: 1px solid #eaeaea;\n  border-top: 1px solid var(--g-gantt-border-color, #eaeaea);\n  padding: 0px 6px;\n  gap: 8px;\n}\n.g-gantt-chart:focus-within {\n  outline: 2px solid #007bff;\n  outline-offset: 2px;\n}\n.g-gantt-rounded-wrapper {\n  border-radius: 5px;\n  overflow: hidden;\n  border: 1px solid #eaeaea;\n  border: 1px solid var(--g-gantt-border-color, #eaeaea);\n  display: flex;\n  flex-direction: column;\n  flex: 1;\n  min-height: 0;\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  flex: 1;\n  min-height: 0;\n  overflow-y: auto;\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-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  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}\n.group-toggle-placeholder {\n  pointer-events: none;\n  height: 20px;\n  padding: 0;\n  border: none;\n  background: transparent;\n  cursor: pointer;\n  transition: transform 0.2s ease;\n}\n.group-toggle-button:hover {\n  background-color: rgba(0, 0, 0, 0.05);\n  border-radius: 4px;\n}\n.group-icon {\n  width: 12px;\n  height: 12px;\n  transition: transform 0.2s ease;\n}\n.group-label {\n  font-weight: 600;\n}\n.g-label-column-row-draggable {\n  cursor: move;\n}\n.g-label-column-row-dragging {\n  opacity: 0.5;\n  background: #f0f0f0 !important;\n  background: var(--dragging-background, #f0f0f0) !important;\n}\n.g-label-column-row-drop-target {\n  position: relative;\n}\n.g-label-column-row-drop-before::before,\n.g-label-column-row-drop-after::after {\n  content: "";\n  position: absolute;\n  left: 0;\n  right: 0;\n  height: 2px;\n  background: #4a9eff;\n  background: var(--drop-indicator-color, #4a9eff);\n  z-index: 1;\n}\n.g-label-column-row-drop-before::before {\n  top: 0;\n}\n.g-label-column-row-drop-after::after {\n  bottom: 0;\n}\n.g-label-column-row-drop-child {\n  background: rgba(74, 158, 255, 0.1) !important;\n  background: var(--drop-child-background, rgba(74, 158, 255, 0.1)) !important;\n}\n.is-touch-dragging {\n  opacity: 0.8;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n  pointer-events: none;\n}\n@media (max-width: 768px) {\n.group-toggle-button {\n    padding: 12px;\n}\n}\n.g-label-column-header-cell-ex {\n  position: relative;\n  flex-grow: 1;\n}\n\n.g-grid-container {\n  position: absolute;\n  top: 0;\n  left: 0%;\n  width: 100%;\n  height: 100%;\n  display: flex;\n  justify-content: space-between;\n}\n.g-grid-line {\n  width: 1px;\n  height: 100%;\n}\n.g-grid-line:first-child {\n  border-left: 0px !important;\n}\n\n.g-timeaxis {\n  position: sticky;\n  top: 0;\n  width: 100%;\n  height: 80px;\n  background: white;\n  z-index: 4;\n  display: flex;\n  flex-direction: column;\n  cursor: grab;\n}\n.g-timeaxis:active {\n  cursor: grabbing;\n}\n.g-timeunits-container {\n  display: flex;\n  width: 100%;\n  height: 50%;\n}\n.g-timeunit {\n  height: 100%;\n  font-size: 65%;\n  display: flex;\n  justify-content: center;\n}\n.g-upper-timeunit {\n  display: flex;\n  height: 100%;\n  justify-content: center;\n  align-items: center;\n}\n.g-timeaxis-hour-pin {\n  width: 1px;\n  height: 10px;\n}\n.label-unit {\n  flex-grow: 1;\n  text-align: center;\n  line-height: normal;\n}\n.g-timeunit-min {\n  display: flex;\n  flex-direction: row-reverse;\n  align-items: center;\n  width: 100%;\n  line-height: 20px;\n}\n.g-timeunit-step {\n  display: flex;\n  width: 100%;\n  line-height: 20px;\n}\n.g-events-container {\n  display: flex;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  height: 100%;\n}\n.g-timeaxis-event {\n  height: 100%;\n  position: absolute;\n  font-size: 65%;\n  padding: 0 6px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  border: 1px solid;\n  box-sizing: border-box;\n  cursor: pointer;\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n  transition: box-shadow 0.2s ease;\n}\n.g-timeaxis-event:hover {\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n  z-index: 5;\n}\n\n.g-gantt-bar-container {\n  position: relative;\n  width: 100%;\n  height: 100%;\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-group-bar-label {\n  position: absolute;\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  z-index: 3;\n  pointer-events: none;\n  color: inherit;\n}\n.g-gantt-group-bar-label > * {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\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.g-gantt-planned-bar {\n  pointer-events: none;\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/* 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-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-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.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.gantt-connector[data-v-c4efb6f2] {\n  overflow: visible;\n  pointer-events: none;\n}\n.connector-path[data-v-c4efb6f2] {\n  transition: d 0.3s ease;\n}\n.connector-path.selected[data-v-c4efb6f2] {\n  filter: drop-shadow(0 0 5px rgba(33, 150, 243, 0.6));\n}\n.relation-indicator[data-v-c4efb6f2] {\n  font-weight: bold;\n  pointer-events: none;\n}\n\n/* Animation for dash pattern */\n.connector-animated-dash-slow[data-v-c4efb6f2] {\n  animation: dashFlow-c4efb6f2 4s linear infinite;\n}\n.connector-animated-dash-normal[data-v-c4efb6f2] {\n  animation: dashFlow-c4efb6f2 2s linear infinite;\n}\n.connector-animated-dash-fast[data-v-c4efb6f2] {\n  animation: dashFlow-c4efb6f2 1s linear infinite;\n}\n\n/* Animation for dot pattern */\n.connector-animated-dot-slow[data-v-c4efb6f2] {\n  animation: dotFlow-c4efb6f2 4s linear infinite;\n}\n.connector-animated-dot-normal[data-v-c4efb6f2] {\n  animation: dotFlow-c4efb6f2 2s linear infinite;\n}\n.connector-animated-dot-fast[data-v-c4efb6f2] {\n  animation: dotFlow-c4efb6f2 1s linear infinite;\n}\n\n/* Animation for dashdot pattern */\n.connector-animated-dashdot-slow[data-v-c4efb6f2] {\n  animation: dashdotFlow-c4efb6f2 4s linear infinite;\n}\n.connector-animated-dashdot-normal[data-v-c4efb6f2] {\n  animation: dashdotFlow-c4efb6f2 2s linear infinite;\n}\n.connector-animated-dashdot-fast[data-v-c4efb6f2] {\n  animation: dashdotFlow-c4efb6f2 1s linear infinite;\n}\n.connector-path[data-v-c4efb6f2] {\n  marker-start: none;\n  transition:\n    d 0.3s ease, marker-start 0.3s ease;\n}\n.connection-endpoint[data-v-c4efb6f2] {\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-c4efb6f2]:hover {\n  r: 8;\n}\n@keyframes dashFlow-c4efb6f2 {\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-c4efb6f2 {\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-c4efb6f2 {\n0% {\n    stroke-dasharray: 12, 6, 3, 6;\n    stroke-dashoffset: 0;\n}\n100% {\n    stroke-dasharray: 12, 6, 3, 6;\n    stroke-dashoffset: -27;\n}\n}\n\n.g-gantt-command[data-v-7e8a4e36] {\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[data-v-7e8a4e36] {\n  display: flex;\n  gap: 8px;\n}\n.g-gantt-command-fixed[data-v-7e8a4e36],\n.g-gantt-command-slider[data-v-7e8a4e36],\n.g-gantt-command-vertical[data-v-7e8a4e36],\n.g-gantt-command-zoom[data-v-7e8a4e36],\n.g-gantt-command-history[data-v-7e8a4e36],\n.g-gantt-command-groups[data-v-7e8a4e36],\n.g-gantt-export-container[data-v-7e8a4e36] {\n  display: flex;\n  align-items: center;\n  gap: 2px;\n}\n.g-gantt-command-vertical button[data-v-7e8a4e36]:disabled,\n.g-gantt-command-slider button[data-v-7e8a4e36]:disabled,\n.g-gantt-command-zoom button[data-v-7e8a4e36]:disabled,\n.g-gantt-command-groups button[data-v-7e8a4e36]:disabled,\n.g-gantt-command-history button[data-v-7e8a4e36]:disabled,\n.g-gantt-export-container button[data-v-7e8a4e36]:disabled {\n  opacity: 0.5;\n  cursor: not-allowed;\n}\n.g-gantt-export-select[data-v-7e8a4e36] {\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[data-v-7e8a4e36] {\n  margin-left: 4px;\n}\n@media screen and (max-width: 768px) {\n.g-gantt-command[data-v-7e8a4e36] {\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[data-v-7e8a4e36] > * {\n    width: 100%;\n}\n.g-gantt-command-block[data-v-7e8a4e36] {\n    display: flex;\n    justify-content: center;\n    gap: 20px;\n}\n.g-gantt-command-fixed[data-v-7e8a4e36] {\n    flex-direction: column;\n    gap: 8px;\n}\n.g-gantt-command-groups[data-v-7e8a4e36] {\n    justify-content: center;\n    margin-right: 0;\n}\n.g-gantt-command-slider[data-v-7e8a4e36] {\n    width: 100%;\n    justify-content: center;\n}\n.g-gantt-command-vertical[data-v-7e8a4e36] {\n    flex-direction: row;\n    justify-content: center;\n}\n.g-gantt-command-zoom[data-v-7e8a4e36],\n  .g-gantt-command-history[data-v-7e8a4e36] {\n    justify-content: center;\n}\n.g-gantt-command-export[data-v-7e8a4e36] {\n    display: flex;\n    align-items: center;\n}\n.command-icon[data-v-7e8a4e36] {\n    padding: 8px;\n    width: 16px;\n    height: 16px;\n}\n.g-gantt-scroller[data-v-7e8a4e36] {\n    height: 12px;\n}\n.g-gantt-scroller[data-v-7e8a4e36]::-webkit-slider-thumb {\n    width: 24px;\n    height: 24px;\n}\n.g-gantt-scroller[data-v-7e8a4e36]::-moz-range-thumb {\n    width: 24px;\n    height: 24px;\n}\n}\n.g-gantt-scroller[data-v-7e8a4e36] {\n  -webkit-appearance: none;\n  height: 8px;\n  border-radius: 4px;\n  outline: none;\n  background: linear-gradient(\n    to right,\n    var(--v1ddcb658) var(--value),\n    #ddd var(--value)\n  );\n}\n.g-gantt-scroller[data-v-7e8a4e36]::-webkit-slider-thumb {\n  -webkit-appearance: none;\n  appearance: none;\n  width: 16px;\n  height: 16px;\n  background: var(--v1ddcb658);\n  border-radius: 50%;\n  cursor: pointer;\n  border: none;\n}\n.g-gantt-scroller[data-v-7e8a4e36]::-moz-range-thumb {\n  width: 16px;\n  height: 16px;\n  background: var(--v1ddcb658);\n  border-radius: 50%;\n  cursor: pointer;\n  border: none;\n}\n.g-gantt-scroller[data-v-7e8a4e36]::-moz-range-track {\n  height: 8px;\n  background: #ddd;\n  border-radius: 4px;\n  border: none;\n}\n.g-gantt-scroller[data-v-7e8a4e36]::-webkit-slider-thumb:hover,\n.g-gantt-scroller[data-v-7e8a4e36]::-moz-range-thumb:hover {\n  background: var(--v1ddcb658);\n}\n.command-icon[data-v-7e8a4e36] {\n  background: var(--v1ddcb658);\n  padding: 4px;\n  margin: 2px;\n  width: 14px;\n  height: 14px;\n  border-radius: 4px;\n}\nbutton[data-v-7e8a4e36] {\n  display: flex;\n  padding: 0;\n  background-color: transparent;\n  background-image: none;\n  border: 0;\n  color: var(--b7e73b6c);\n}\n',"top");export{za as GGanttChart,mn as GGanttRow,Ia as default,Ya as extendDayjs,Ia as hyvuegantt};