@svar-ui/vue-gantt 2.6.0 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.es.js +1 -1
- package/package.json +4 -3
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),f=require("@svar-ui/lib-vue"),R=require("@svar-ui/lib-dom"),He=require("@svar-ui/gantt-locales"),qe=require("@svar-ui/core-locales"),at=require("@svar-ui/lib-state"),X=require("@svar-ui/gantt-store"),et=require("@svar-ui/grid-store"),tt=require("@svar-ui/vue-grid"),se=require("@svar-ui/vue-core"),ot=require("@svar-ui/vue-toolbar"),st=require("@svar-ui/vue-menu"),ve=require("@svar-ui/vue-editor"),rt="2.6.0",it={version:rt};function ct(l,n,t){const o=l.getBoundingClientRect(),c=n.querySelector(".wx-body").getBoundingClientRect();return{top:o.top-c.top,left:o.left-c.left,dt:o.bottom-t.clientY,db:t.clientY-o.top}}function Xe(l){return l&&R.getID(l,"data-context-id")}const Ke=5;function ut(l,n){let t,o,c,T,b,m,y,w,V;function _(r){T=r.clientX,b=r.clientY,m={...ct(t,l,r),y:n.getTask(c).$y},document.body.style.userSelect="none"}function W(r){t=R.locate(r),Xe(t)&&(c=R.getID(t),V=setTimeout(()=>{w=!0,n&&n.touchStart&&n.touchStart(),_(r.touches[0])},500),l.addEventListener("touchmove",E),l.addEventListener("contextmenu",d),window.addEventListener("touchend",S))}function d(r){if(w||V)return r.preventDefault(),!1}function C(r){r.which===1&&(t=R.locate(r),Xe(t)&&(c=R.getID(t),l.addEventListener("mousemove",G),window.addEventListener("mouseup",h),_(r)))}function I(r){l.removeEventListener("mousemove",G),l.removeEventListener("touchmove",E),document.body.removeEventListener("mouseup",h),document.body.removeEventListener("touchend",S),document.body.style.userSelect="",r&&(l.removeEventListener("mousedown",C),l.removeEventListener("touchstart",W))}function Y(r){const $=r.clientX-T,F=r.clientY-b;if(!o){if(Math.abs($)<Ke&&Math.abs(F)<Ke||n&&n.start&&n.start({id:c,e:r})===!1)return;o=t.cloneNode(!0),o.style.pointerEvents="none",o.classList.add("wx-reorder-task"),o.style.position="absolute",o.style.left=m.left+"px",o.style.top=m.top+"px",t.style.visibility="hidden",t.parentNode.insertBefore(o,t)}if(o){const A=Math.round(Math.max(0,m.top+F));if(n&&n.move&&n.move({id:c,top:A,detail:y})===!1)return;const K=n.getTask(c),ne=K.$y;if(!m.start&&m.y===ne)return B();m.start=!0,m.y=K.$y-4,o.style.top=A+"px";const le=document.elementFromPoint(r.clientX,r.clientY),te=R.locate(le);if(te&&te!==t){const D=R.getID(te),O=te.getBoundingClientRect(),oe=O.top+O.height/2,ie=r.clientY+m.db>oe&&te.nextElementSibling!==t,L=r.clientY-m.dt<oe&&te.previousElementSibling!==t;y?.after===D||y?.before===D?y=null:ie?y={id:c,after:D}:L&&(y={id:c,before:D})}}}function G(r){Y(r)}function E(r){w?(r.preventDefault(),Y(r.touches[0])):V&&(clearTimeout(V),V=null)}function S(){w=null,V&&(clearTimeout(V),V=null),B()}function h(){B()}function B(){t&&(t.style.visibility=""),o&&(o.parentNode.removeChild(o),n&&n.end&&n.end({id:c,top:m.top})),c=t=o=m=y=null,I()}return l.style.position!=="absolute"&&(l.style.position="relative"),l.addEventListener("mousedown",C),l.addEventListener("touchstart",W),{destroy(){I(!0)}}}const re=(l,n)=>{const t=l.__vccOpts||l;for(const[o,c]of n)t[o]=c;return t},dt={key:1,class:"wx-toggle-placeholder"},ft={class:"wx-text"},mt={__name:"TextCell",props:{row:{},column:{}},setup(l){function n(t,o){return`justify-content:${o.align};padding-left: ${(t.$level-1)*20}px`}return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-content",style:e.normalizeStyle(n(l.row,l.column))},[!l.row.$empty&&(l.row.data||l.row.lazy)?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass("wx-toggle-icon wxi-menu-"+(l.row.open?"down":"right")),"data-action":"open-task"},null,2)):(e.openBlock(),e.createElementBlock("i",dt)),e.createElementVNode("div",ft,[l.column._cell?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.column._cell),{key:0,row:l.row,column:l.column},null,8,["row","column"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(l.row.text),1)],64))])],4))}},pt=re(mt,[["__scopeId","data-v-6381f23e"]]),vt=["data-action"],ht={__name:"ActionCell",props:{column:{},cell:{}},setup(l){const n=l,t=e.computed(()=>n.column.id);return(o,c)=>l.cell||l.column.id==="add-task"?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle({textAlign:l.column.align})},[e.createElementVNode("i",{class:"wx-action-icon wxi-plus","data-action":t.value},null,8,vt)],4)):e.createCommentVNode("",!0)}},Ze=re(ht,[["__scopeId","data-v-abfc4b0a"]]),gt=Object.assign({name:"GanttGridGrid"},{__name:"Grid",props:e.mergeModels({readonly:{},compactMode:{},width:{default:0},columnWidth:{}},{display:{default:"all"},displayModifiers:{},tableAPI:{},tableAPIModifiers:{}}),emits:["update:display","update:tableAPI"],setup(l){const n=f.asDirective(ut),t=l,o=e.useModel(l,"display"),c=e.useModel(l,"tableAPI"),b=e.inject("wx-i18n").getGroup("gantt"),m=e.inject("gantt-store"),{scrollTop:y,cellHeight:w,focusTask:V,_selected:_,area:W,_tasks:d,_scales:C,_headerLength:I,columns:Y,_sort:G,calendar:E,durationUnit:S,splitTasks:h,filterValues:B}=m.getReactiveState(),r=f.subscribe(y),$=f.subscribe(w),F=f.subscribe(_),A=f.subscribe(W),K=f.subscribe(d,!0),ne=f.subscribe(C),le=f.subscribe(I),te=f.subscribe(Y),D=f.subscribe(G),O=f.subscribe(E),oe=f.subscribe(S),ie=f.subscribe(h),L=f.subscribe(B);let U=e.ref(null);function M(u,v){if(v==="add-task")m.exec(v,{target:u,task:{text:b("New Task")},mode:"child",show:!0,focus:u?"grid":null});else if(v==="open-task"){const g=he.value.find(a=>a.id===u);(g.data||g.lazy)&&m.exec(v,{id:u,mode:!g.open})}}function x(u){const v=R.locateID(u),g=u.target.dataset.action;g&&u.preventDefault(),v?g==="add-task"||g==="open-task"?M(v,g):m.exec("select-task",{id:v,toggle:u.ctrlKey||u.metaKey,range:u.shiftKey,show:"xy",focus:"grid"}):g==="add-task"&&M(null,g)}function H(u){if(!t.readonly){const v=R.locateID(u),g=R.locateID(u,"data-col-id");!(g&&ce.value.find(i=>i.id===g))?.editor&&v&&m.exec("show-editor",{id:v})}}let j;function de(u){const v=u.id,{before:g,after:a}=u,i=u.onMove;let s=g||a,k=g?"before":"after";if(i){if(k==="after"){const q=me.value.findIndex(ee=>ee.id===v),Q=me.value.findIndex(ee=>ee.id===s),J=me.value[Q];q-Q===1?k="before":J.data&&J.open&&(k="before",s=J.data[0].id)}j={id:v,[k]:s}}else j=null;m.exec("move-task",{id:v,mode:k,target:s,inProgress:i})}function p({id:u}){if(t.readonly||(m.getTask(u).open&&m.exec("open-task",{id:u,mode:!1}),U.value=he.value.find(v=>v.id===u),!U.value))return!1}function N({id:u,top:v}){j?de({...j,onMove:!1}):m.exec("drag-task",{id:u,top:v+be.value,inProgress:!1}),U.value=null}function P({id:u,top:v,detail:g}){g&&de({...g,onMove:!0}),m.exec("drag-task",{id:u,top:v+be.value,inProgress:!0})}const z=e.ref(0),ae=e.ref(0),Z=e.ref(null),fe=e.ref(null),ke=e.ref(!1);function Oe(u){const{key:v,isInput:g}=u;if(!g&&(v==="arrowup"||v==="arrowdown"))return u.eventSource="grid",m.exec("hotkey",u),!1;if(v==="enter"){const a=c.value.getState().focusCell;if(a){const{row:i,column:s}=a;s==="add-task"?M(i,"add-task"):s==="text"&&M(i,"open-task")}}}function Ie(u){c.value=u,u.intercept("hotkey",Oe),u.intercept("scroll",()=>!1),u.intercept("select-row",()=>!1),u.intercept("sort-rows",v=>{const{key:g,add:a}=v;let i=D.value?D.value.find(k=>k.key===g):null,s="asc";return i&&(s=!i||i.order==="asc"?"desc":"asc"),m.exec("sort-tasks",{key:g,order:s,add:a}),!1}),u.intercept("filter-rows",v=>{const{key:g,value:a}=v;return m.exec("filter-tasks",{key:g,value:a,open:!0}),!1}),u.on("resize-column",()=>{$e(!0)}),u.on("hide-column",v=>{v.mode||Ee(),$e()}),u.intercept("update-cell",v=>{const{id:g,column:a,value:i}=v,s=he.value.find(k=>k.id===g);if(s){const k={...s};let q=i;q&&!isNaN(q)&&!(q instanceof Date)&&(q*=1),k[a]=q,X.prepareEditTask(k,{calendar:O.value,durationUnit:oe.value,splitTasks:ie.value},a),m.exec("update-task",{id:g,task:k})}return!1})}const ce=e.computed(()=>{let u=te.value.map(a=>{a={...a};const i=[...a.header];return i.forEach(s=>{s.text&&(s.text=b(s.text))}),a.header=i,a});const v=u.findIndex(a=>a.id==="text"),g=u.findIndex(a=>a.id==="add-task");if(v!==-1&&(u[v].cell&&(u[v]._cell=u[v].cell),u[v].cell=pt),g!==-1){u[g].cell=u[g].cell||Ze;const a=u[g].header[0];if(u[g].header[0].cell=a.cell||Ze,t.readonly)u.splice(g,1);else if(t.compactMode){const[i]=u.splice(g,1);u.unshift(i)}}return u.length>0&&(u[u.length-1].resize=!1),u}),be=e.computed(()=>A.value.from),Te=e.computed(()=>ne.value.height),Le=e.computed(()=>!t.compactMode&&o.value!=="grid"?t.columnWidth>t.width:t.columnWidth>z.value),Se=e.computed(()=>o.value==="all"?`${t.width}px`:o.value==="grid"?"calc(100% - 4px)":ce.value.find(u=>u.id==="add-task")?"50px":"0"),We=e.computed(()=>`min-height:${ae.value+$.value*4}px;`),ze=e.computed(()=>We.value+(Le.value&&o.value==="all"?`width:${t.columnWidth}px;`:o.value==="grid"?Le.value?`width:${t.columnWidth}px;`:"width:100%;":"")),Pe=e.computed(()=>F.value.map(u=>u.id)),he=e.computed(()=>K.value.slice(A.value.start,A.value.end)),me=e.computed(()=>(U.value&&!he.value.find(v=>v.id===U.value.id)?[...he.value,U.value]:he.value).map(v=>({...v})));function De(){return ce.value.some(u=>u.flexgrow&&!u.hidden)}const Fe=e.computed(()=>(ke.value,De()));function $e(u){if(!De()){const v=_e.value.reduce((g,a)=>(u&&a.$width&&(a.$width=a.width),g+(a.hidden?0:a.width)),0);t.columnWidth}ke.value=!0,ke.value=!1}function Ee(){ce.value.filter(v=>v.flexgrow&&!v.hidden).length===1&&ce.value.forEach(v=>{v.$width&&!v.flexgrow&&!v.hidden&&(v.width=v.$width)})}const Me=e.computed(()=>{if(me.value&&D.value?.length){const u={};return D.value.forEach(({key:v,order:g},a)=>{u[v]={order:g,...D.value.length>1&&{index:a}}}),u}return{}}),Ne=e.computed(()=>Me.value?{...L.value}:L.value),_e=e.computed(()=>{let u=o.value==="chart"?ce.value.filter(g=>g.id==="add-task"):ce.value;const v=o.value==="all"?t.width:z.value;if(!Fe.value){let g=t.columnWidth,a=!1;if(ce.value.some(i=>i.$width)){let i=0;g=ce.value.reduce((s,k)=>(k.hidden||(i+=k.width,s+=k.$width||k.width),s),0),i>g&&g>=v&&(a=!0)}if(a||g<v){let i=1;return a||(i=(v-50)/(g-50||1)),u.map(s=>(s.id!=="add-task"&&!s.hidden&&(s.$width||(s.$width=s.width),s.width=s.$width*i),s))}}return u});function Ce(){Z.value&&me.value!==null&&(Z.value.querySelector(".wx-body").style.top=-(r.value-be.value)+"px")}e.watchEffect(()=>{Z.value&&(r.value,be.value,Ce())}),e.watchEffect(()=>{if(Z.value){_e.value,ze.value,o.value,Se.value,me.value;const u=new ResizeObserver(()=>{Ce()});u.observe(Z.value.querySelector(".wx-table-box .wx-body")),e.onWatcherCleanup(()=>{u.disconnect()})}});let we;e.onMounted(()=>{fe.value&&(we=new ResizeObserver(u=>{for(const v of u)z.value=v.contentRect.width,ae.value=v.contentRect.height}),we.observe(fe.value))}),e.onUnmounted(()=>{we?.disconnect()});let ye=!1;const pe=f.subscribe(V);e.watch(pe,u=>{if(!u)return;const{id:v,column:g}=u;g&&(ye||(ye=!0,requestAnimationFrame(()=>{const a=c.value.getState().focusCell;c.value.exec("focus-cell",{row:v,column:a?.column||ce.value[0]?.id}),ye=!1})))});const je=e.computed(()=>({start:p,end:N,move:P,getTask:m.getTask})),Ae=e.computed(()=>[...Pe.value]),Ue=e.computed(()=>({rowHeight:$.value,headerHeight:Te.value/le.value}));return(u,v)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-table-container",style:e.normalizeStyle({flex:`0 0 ${Se.value}`}),ref_key:"tableContainer",ref:fe},[e.withDirectives((e.openBlock(),e.createElementBlock("div",{ref_key:"table",ref:Z,style:e.normalizeStyle(ze.value),class:"wx-table",onClick:x,onDblclick:H},[e.createVNode(e.unref(tt.Grid),{init:Ie,sizes:Ue.value,rowStyle:g=>g.$reorder?"wx-reorder-task":"",columnStyle:g=>`wx-text-${g.align} ${g.id==="add-task"?"wx-action":""}`,data:me.value,columns:_e.value,selectedRows:Ae.value,sortMarks:Me.value,filterValues:Ne.value},null,8,["sizes","rowStyle","columnStyle","data","columns","selectedRows","sortMarks","filterValues"])],36)),[[e.unref(n),je.value]])],4))}}),kt=re(gt,[["__scopeId","data-v-814ee4d3"]]),yt={__name:"CellGrid",props:e.mergeDefaults({borders:{default:""}},{borders:""}),setup(l){const n=e.inject("gantt-store"),{cellWidth:t,cellHeight:o}=n.getReactiveState(),c=f.subscribe(t),T=f.subscribe(o),b=e.ref(null),m=e.ref("#e4e4e4");return e.watchEffect(()=>{if(typeof getComputedStyle<"u"&&b.value){const y=getComputedStyle(b.value).getPropertyValue("--wx-gantt-border");m.value=y?y.substring(y.indexOf("#")):"#1d1e261a"}}),(y,w)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"node",ref:b,style:e.normalizeStyle(`width:100%; height:100%; background:url(${e.unref(X.grid)(e.unref(c),e.unref(T),m.value,l.borders)}); position: absolute;`)},null,4))}},xt={class:"wx-links"},bt=["points","onclick","data-link-id"],wt=["points"],Bt=Object.assign({name:"GanttChartLinks"},{__name:"Links",props:{onSelectLink:{type:Function},selectedLink:{},readonly:{}},setup(l){const n=f.asDirective(R.clickOutside),t=l,o=e.inject("gantt-store"),{_links:c,criticalPath:T}=o.getReactiveState(),b=f.subscribe(c),m=f.subscribe(T);function y(w){const V=w?.target?.classList;!V?.contains("wx-line")&&!V?.contains("wx-delete-button")&&t.onSelectLink(null)}return(w,V)=>(e.openBlock(),e.createElementBlock("svg",xt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b),_=>(e.openBlock(),e.createElementBlock("polyline",{key:_.id,class:e.normalizeClass(["wx-line",{"wx-critical":e.unref(m)&&_.critical,"wx-line-selectable":!l.readonly}]),points:_.$p,onclick:()=>!l.readonly&&l.onSelectLink(_.id),"data-link-id":e.unref(R.setID)(_.id)},null,10,bt))),128)),!l.readonly&&l.selectedLink?e.withDirectives((e.openBlock(),e.createElementBlock("polyline",{key:0,class:"wx-line wx-line-selected wx-line-selectable wx-delete-link",points:l.selectedLink.$p},null,8,wt)),[[e.unref(n),y]]):e.createCommentVNode("",!0)]))}}),Tt=re(Bt,[["__scopeId","data-v-4939b3a5"]]),St=["data-tooltip-id"],$t=Object.assign({name:"GanttChartRollups"},{__name:"Rollups",props:{rollup:{},parent:{}},setup(l){return(n,t)=>(e.openBlock(),e.createElementBlock("div",{"data-tooltip-id":l.rollup.id,class:e.normalizeClass(`wx-rollup wx-${l.rollup.type}-rollup`),style:e.normalizeStyle(`left:${l.rollup.$x_rollup}px;top:${l.parent.$y+l.parent.$h+l.rollup.$y_rollup_relative}px;width:${l.rollup.$w_rollup}px;height:${l.rollup.$h_rollup}px;`)},null,14,St))}}),Et=re($t,[["__scopeId","data-v-e1e1122e"]]),_t={class:"wx-segments"},Ct=["data-segment"],It={key:0,class:"wx-progress-wrapper"},Lt={class:"wx-content"},zt={__name:"BarSegments",props:{task:{},type:{}},setup(l){const n=l;function t(c){const T=n.task.segments[c];return`left:${T.$x}px;top:0px;width:${T.$w}px;height:100%;`}function o(c){if(!n.task.progress)return 0;const T=n.task.duration*n.task.progress/100,b=n.task.segments;let m=0,y=0,w=null;do{const V=b[y];y===c&&(m>T?w=0:w=Math.min((T-m)/V.duration,1)*100),m+=V.duration,y++}while(w===null&&y<b.length);return w||0}return(c,T)=>(e.openBlock(),e.createElementBlock("div",_t,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.task.segments,(b,m)=>(e.openBlock(),e.createElementBlock("div",{key:m,class:e.normalizeClass(["wx-segment","wx-bar",`wx-${l.type}`]),"data-segment":m,style:e.normalizeStyle(t(m))},[l.task.progress?(e.openBlock(),e.createElementBlock("div",It,[e.createElementVNode("div",{class:"wx-progress-percent",style:e.normalizeStyle(`width:${o(m)}%`)},null,4)])):e.createCommentVNode("",!0),e.createElementVNode("div",Lt,e.toDisplayString(b.text||""),1)],14,Ct))),128))]))}},Dt=re(zt,[["__scopeId","data-v-558dfded"]]),Mt=["data-id","data-tooltip-id","tabindex"],Nt={key:0,class:"wx-progress-wrapper"},Rt={key:4,class:"wx-content"},Vt={key:1,class:"wx-text-out"},Ht=Object.assign({name:"GanttChartBars"},{__name:"Bars",props:{readonly:{},taskTemplate:{}},setup(l){const n=l,t=e.inject("gantt-store"),{_tasks:o,_links:c,area:T,_scales:b,taskTypes:m,baselines:y,_selected:w,rollups:V,_rollups:_,focusTask:W,criticalPath:d,tasks:C,schedule:I,splitTasks:Y,summary:G,slack:E}=t.getReactiveState(),S=f.subscribe(o,!0),h=f.subscribe(c),B=f.subscribe(T),r=f.subscribe(b),$=f.subscribe(m),F=f.subscribe(y),A=f.subscribe(w),K=f.subscribe(V),ne=f.subscribe(_),le=f.subscribe(d),te=f.subscribe(C),D=f.subscribe(I),O=f.subscribe(Y),oe=f.subscribe(G),ie=f.subscribe(E),L=e.computed(()=>S.value.slice(B.value.start,B.value.end).map(a=>({...a}))),U=e.computed(()=>r.value.lengthUnitWidth);let M=!1;const x=e.ref(void 0),H=e.ref(null);let j=null;const de=e.ref(null),p=e.computed(()=>de.value&&{...h.value.find(a=>a.id===de.value)}),N=e.ref(void 0);let P;function z(a){if(a.button!==0)return;const i=R.locate(a);i&&Z(i,a)}function ae(a){const i=R.locate(a);i&&(P=setTimeout(()=>{N.value=!0,Z(i,a.touches[0])},300))}function Z(a,i){const{clientX:s}=i,k=R.getID(a),q=t.getTask(k),Q=i.target.classList;if(!i.target.closest(".wx-delete-button")&&!n.readonly){if(Q.contains("wx-progress-marker")){const{progress:J}=t.getTask(k);j={id:k,x:s,progress:J,dx:0,node:a,marker:i.target},i.target.classList.add("wx-progress-in-drag")}else{const J=fe(a,i,q)||"move";if(H.value={id:k,mode:J,x:s,dx:0,l:q.$x,w:q.$w},O.value&&q.segments?.length){const ee=R.locate(i,"data-segment");ee&&(H.value.segmentIndex=ee.dataset.segment*1,X.extendDragOptions(q,H.value))}}Le()}}function fe(a,i,s){if(i.target.classList.contains("wx-line")||(s||(s=t.getTask(R.getID(a))),s.type==="milestone"||s.type==="summary"))return"";const k=R.locate(i,"data-segment");k&&(a=k);const{left:q,width:Q}=a.getBoundingClientRect(),J=(i.clientX-q)/Q;let ee=.2/(Q>200?Q/200:1);return J<ee?"start":J>1-ee?"end":""}function ke(a){N.value?(a.preventDefault(),Ie(a,a.touches[0])):P&&(clearTimeout(P),P=null)}function Oe(a){Ie(a,a)}function Ie(a,i){const{clientX:s}=i;if(!n.readonly)if(j){const{node:k,x:q,id:Q}=j,J=j.dx=s-q,ee=Math.round(J/k.offsetWidth*100);let ge=j.progress+ee;j.value=ge=Math.min(Math.max(0,ge),100),t.exec("update-task",{id:Q,task:{progress:ge},inProgress:!0})}else if(H.value){Ne(null);const{mode:k,l:q,w:Q,x:J,id:ee,start:ge,segment:Be,index:xe}=H.value,Ge=t.getTask(ee),ue=s-J,Ye=Math.round(U.value)||1;if(!ge&&Math.abs(ue)<20||k==="start"&&Q-ue<Ye||k==="end"&&Q+ue<Ye||k==="move"&&(ue<0&&q+ue<0||ue>0&&q+Q+ue>ye.value)||H.value.segment&&!X.isSegmentMoveAllowed(Ge,H.value))return;H.value.dx=ue;let Re,Ve;if(k==="start"?(Re=q+ue,Ve=Q-ue):k==="end"?(Re=q,Ve=Q+ue):k==="move"&&(Re=q+ue,Ve=Q),t.exec("drag-task",{id:ee,width:Ve,left:Re,inProgress:!0,...Be&&{segmentIndex:xe}}),!H.value.start&&(k==="move"&&Ge.$x===q||k!=="move"&&Ge.$w===Q))return M=!0,Te();H.value.start=!0}else{const k=R.locate(a);if(k){const q=t.getTask(R.getID(k)),J=R.locate(a,"data-segment")||k,ee=fe(J,i,q);J.style.cursor=ee&&!n.readonly?"col-resize":"pointer"}}}function ce(){Te()}function be(){N.value=null,P&&(clearTimeout(P),P=null),Te()}function Te(){if(j){const{dx:a,id:i,marker:s,value:k}=j;j=null,typeof k<"u"&&a&&t.exec("update-task",{id:i,task:{progress:k},inProgress:!1}),s.classList.remove("wx-progress-in-drag"),M=!0,Se()}else if(H.value){const{id:a,mode:i,dx:s,l:k,w:q,start:Q,segment:J,index:ee}=H.value;if(H.value=null,Q){const ge=Math.round(s/U.value);if(!ge)t.exec("drag-task",{id:a,width:q,left:k,inProgress:!1,...J&&{segmentIndex:ee}});else{let Be={},xe=t.getTask(a);J&&(xe=xe.segments[ee]),i==="move"?(Be.start=xe.start,Be.end=xe.end):Be[i]=xe[i],t.exec("update-task",{id:a,diff:ge,task:Be,...J&&{segmentIndex:ee}})}M=!0}Se()}}function Le(){document.body.style.userSelect="none"}function Se(){document.body.style.userSelect=""}function We(a){if(!n.readonly){const i=R.locateID(a.target);if(i&&!a.target.classList.contains("wx-link")){const s=R.locateID(a.target,"data-segment");t.exec("show-editor",{id:i,...s!==null&&{segmentIndex:s}})}}}function ze(a){if(M){M=!1;return}const i=R.locateID(a.target);if(i){const s=a.target.classList;if(s.contains("wx-link")){const k=s.contains("wx-left");if(!x.value){x.value={id:i,start:k};return}x.value.id!==i&&!Ee(i,k)&&t.exec("add-link",{link:{source:x.value.id,target:i,type:$e(x.value.start,k)}})}else if(s.contains("wx-delete-button-icon"))t.exec("delete-link",{id:de.value}),de.value=null;else{const k=R.locateID(a.target,"data-segment");t.exec("select-task",{id:i,toggle:a.ctrlKey||a.metaKey,range:a.shiftKey,...k!==null&&{segmentIndex:k}})}}Me()}function Pe(a){return`left:${a.$x}px;top:${a.$y}px;width:${a.$w}px;height:${a.$h}px;line-height:${a.$h}px;`}function he(a){return`left:${a.$x_base}px;top:${a.$y_base}px;width:${a.$w_base}px;height:${a.$h_base}px;`}function me(a){return`left:${a.$x_slack}px;top:${a.$y}px;width:${a.$w_slack}px;height:${a.$h}px;`}function De(a){if(N.value||P)return a.preventDefault(),!1}const Fe=["e2s","s2s","e2e","s2e"];function $e(a,i){return Fe[(a?1:0)+(i?0:2)]}function Ee(a,i){const s=x.value.id,k=x.value.start;return a===s?!0:h.value.find(q=>q.target===a&&q.source===s&&q.type===$e(k,i))}function Me(){x.value&&(x.value=null)}function Ne(a){de.value=a}const _e=e.computed(()=>$.value.map(a=>a.id));function Ce(a){let i=_e.value.includes(a)?a:"task";return["task","milestone","summary"].includes(a)||(i=`task ${i}`),i}function we(a){t.exec(a.action,a.data)}const ye=e.ref(0),pe=e.ref(null),je=e.computed(()=>A.value.length&&pe.value&&pe.value.contains(document.activeElement)),Ae=e.computed(()=>je.value&&A.value[A.value.length-1].id),Ue=f.subscribe(W);e.watch(Ue,a=>{if(a&&a.column===!1){const{id:i}=a,s=pe.value?.querySelector(`.wx-bar[data-id='${R.setID(i)}']`);s&&s.focus()}});const u=a=>le.value&&a.critical;function v(a){if(D.value.auto){const i=te.value.getSummaryId(a,!0),s=te.value.getSummaryId(x.value.id,!0);return x.value?.id&&!(Array.isArray(i)?i:[i]).includes(x.value.id)&&!(Array.isArray(s)?s:[s]).includes(a)}return x.value}let g;return e.onMounted(()=>{window.addEventListener("mouseup",ce),pe.value&&(ye.value=pe.value.offsetWidth,g=new ResizeObserver(a=>{for(const i of a)ye.value=i.target.offsetWidth}),g.observe(pe.value))}),e.onUnmounted(()=>{window.removeEventListener("mouseup",ce),g?.disconnect()}),(a,i)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"container",ref:pe,class:"wx-bars",style:e.normalizeStyle(`line-height: ${L.value.length?L.value[0].$h:0}px`),onContextmenu:De,onMousedown:z,onMousemove:Oe,onTouchstart:ae,onTouchmove:ke,onTouchend:be,onClick:ze,onDblclick:We,onDragstart:i[0]||(i[0]=e.withModifiers(()=>{},["prevent"]))},[e.unref(ie)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(L.value,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.id},[s.$visibleSlack?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass("wx-slack wx-slack-"+s.type),style:e.normalizeStyle(me(s))},null,6)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),e.createVNode(Tt,{onSelectLink:Ne,selectedLink:p.value,readonly:n.readonly},null,8,["selectedLink","readonly"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.id},[s.$skip?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["wx-bar","wx-"+Ce(s.type),{"wx-touch":N.value&&H.value&&s.id===H.value.id,"wx-selected":x.value&&x.value.id===s.id,"wx-critical":u(s),"wx-reorder-task":s.$reorder,"wx-split":e.unref(O)&&s.segments}]),style:e.normalizeStyle(Pe(s)),"data-id":e.unref(R.setID)(s.id),"data-tooltip-id":e.unref(R.setID)(s.id),tabindex:Ae.value===s.id?"0":"-1"},[n.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.id===p.value?.target&&p.value?.type[2]==="s"?(e.openBlock(),e.createBlock(e.unref(se.Button),{key:0,type:"danger",css:"wx-left wx-delete-button wx-delete-link"},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createElementVNode("i",{class:"wxi-close wx-delete-button-icon"},null,-1)])]),_:1})):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["wx-link","wx-left",{"wx-visible":x.value,"wx-target":!x.value||!Ee(s.id,!0)&&v(s.id),"wx-selected":x.value&&x.value.id===s.id&&x.value.start,"wx-critical":u(s)}])},[...i[2]||(i[2]=[e.createElementVNode("div",{class:"wx-inner"},null,-1)])],2))],64)),s.type!=="milestone"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[s.progress&&!(e.unref(O)&&s.segments)?(e.openBlock(),e.createElementBlock("div",Nt,[e.createElementVNode("div",{class:"wx-progress-percent",style:e.normalizeStyle("width:"+s.progress+"%")},null,4)])):e.createCommentVNode("",!0),!n.readonly&&!(e.unref(O)&&s.segments)&&!(s.type==="summary"&&e.unref(oe)?.autoProgress)?(e.openBlock(),e.createElementBlock("div",{key:1,class:"wx-progress-marker",style:e.normalizeStyle("left:calc("+s.progress+"% - 10px);")},e.toDisplayString(s.progress),5)):e.createCommentVNode("",!0),n.taskTemplate?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.taskTemplate),{key:2,data:s,api:e.unref(t),onaction:we},null,8,["data","api"])):e.unref(O)&&s.segments?(e.openBlock(),e.createBlock(Dt,{key:3,task:s,type:Ce(s.type)},null,8,["task","type"])):(e.openBlock(),e.createElementBlock("div",Rt,e.toDisplayString(s.text||""),1))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[i[3]||(i[3]=e.createElementVNode("div",{class:"wx-content"},null,-1)),n.taskTemplate?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.taskTemplate),{key:0,data:s,api:e.unref(t),onaction:we},null,8,["data","api"])):(e.openBlock(),e.createElementBlock("div",Vt,e.toDisplayString(s.text),1))],64)),n.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[s.id===p.value?.target&&p.value?.type[2]==="e"?(e.openBlock(),e.createBlock(e.unref(se.Button),{key:0,type:"danger",css:"wx-right wx-delete-button wx-delete-link"},{default:e.withCtx(()=>[...i[4]||(i[4]=[e.createElementVNode("i",{class:"wxi-close wx-delete-button-icon"},null,-1)])]),_:1})):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["wx-link","wx-right",{"wx-visible":x.value,"wx-target":!x.value||!Ee(s.id,!1)&&v(s.id),"wx-selected":x.value&&x.value.id===s.id&&!x.value.start,"wx-critical":u(s)}])},[...i[5]||(i[5]=[e.createElementVNode("div",{class:"wx-inner"},null,-1)])],2))],64))],14,Mt)),e.unref(K)&&e.unref(ne)?.[s.id]?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(e.unref(ne)[s.id],k=>(e.openBlock(),e.createBlock(Et,{key:k.id,rollup:k,parent:s},null,8,["rollup","parent"]))),128)):e.createCommentVNode("",!0),e.unref(F)&&!s.$skip_baseline?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["wx-baseline",{"wx-milestone":s.type==="milestone"}]),style:e.normalizeStyle(he(s))},null,6)):e.createCommentVNode("",!0)],64))),128))],36))}}),Ot=re(Ht,[["__scopeId","data-v-a2fa1ccc"]]),Wt={__name:"TimeScale",props:{highlightTime:{type:Function}},setup(l){const n=l,t=e.inject("gantt-store"),{_scales:o}=t.getReactiveState(),c=f.subscribe(o);return(T,b)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-scale",style:e.normalizeStyle({width:e.unref(c).width+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(c).rows,(m,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:"wx-row",style:e.normalizeStyle({height:m.height+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.cells,(w,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:e.normalizeClass(["wx-cell",w.css,n.highlightTime?n.highlightTime(w.date,w.unit):""]),style:e.normalizeStyle({width:w.width+"px"})},e.toDisplayString(w.value),7))),128))],4))),128))],4))}},Pt=re(Wt,[["__scopeId","data-v-3207e419"]]),Ft={class:"wx-content"},jt={key:0,class:"wx-gantt-holidays",style:{height:"100%"}},At=["data-id"],Qe=1,Je=.003,Ut=Object.assign({name:"GanttChartChart"},{__name:"Chart",props:{readonly:{},fullWidth:{},fullHeight:{},taskTemplate:{},cellBorders:{},highlightTime:{}},setup(l){const n=f.asDirective(et.hotkeys),t=l,o=e.inject("gantt-store"),{_selected:c,scrollTop:T,scrollLeft:b,cellHeight:m,_scales:y,zoom:w,_markers:V}=o.getReactiveState(),_=f.subscribe(c,!0),W=f.subscribe(T),d=f.subscribe(b),C=f.subscribe(m),I=f.subscribe(y),Y=f.subscribe(w),G=f.subscribe(V),E=e.ref(0),S=e.ref(null),h=e.computed(()=>{const L=[];return _.value.length&&C.value&&_.value.forEach(U=>{L.push(`height: ${C.value}px;top: ${U.$y-3}px`)}),L});e.watch(E,()=>{F()});const B=e.computed(()=>Math.max(E.value,t.fullHeight));e.watchEffect(()=>{S.value&&(S.value.scrollTop=W.value,S.value.scrollLeft=d.value)});function r(){$(),F()}function $(){const L={};S.value.scrollTop!==W.value&&(L.top=S.value.scrollTop),S.value.scrollLeft!==d.value&&(L.left=S.value.scrollLeft),o.exec("scroll-chart",L)}function F(){const L=E.value||0,U=Math.ceil(L/C.value)+1,M=Math.floor((S.value?.scrollTop||0)/C.value),x=Math.max(0,M-Qe),H=M+U+Qe,j=x*C.value;o.exec("render-data",{start:x,end:H,from:j})}let A=performance.now();function K(L){const M=Math.abs(L)<50?.004:.01,x=performance.now(),H=Math.min(x-A,50);A=x;const j=ne(-L*M,-Je*H,Je*H);return Math.exp(j)}function ne(L,U,M){return Math.max(Math.min(L,M),U)}let le=!1;function te(L){if(Y.value&&(L.ctrlKey||L.metaKey)){L.preventDefault();const U=K(L.deltaY),M=L.clientX-S.value.getBoundingClientRect().left;le||(le=!0,requestAnimationFrame(()=>{o.exec("zoom-scale",{dir:U>1?1:-1,ratio:Math.abs(1-U),offset:M}),le=!1}))}}function D(L){const U=t.highlightTime(L.date,L.unit);return U?{css:U,width:L.width}:null}const O=e.computed(()=>(I.value.minUnit==="hour"||I.value.minUnit==="day")&&t.highlightTime?I.value.rows[I.value.rows.length-1].cells.map(D):null);function oe(L){L.eventSource="chart",o.exec("hotkey",L)}let ie;return e.onMounted(()=>{S.value&&(E.value=S.value.clientHeight,ie=new ResizeObserver(L=>{for(const U of L)E.value=U.target.clientHeight}),ie.observe(S.value))}),e.onUnmounted(()=>{ie?.disconnect()}),(L,U)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:"wx-chart",tabindex:"-1",ref_key:"chart",ref:S,onScroll:r,onWheel:te},[e.createVNode(Pt,{highlightTime:t.highlightTime},null,8,["highlightTime"]),e.unref(G).length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"wx-markers",style:e.normalizeStyle(`height:${B.value}px;`)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(G),M=>(e.openBlock(),e.createElementBlock("div",{key:M.id||M.left,class:e.normalizeClass("wx-marker "+(M.css||"")),style:e.normalizeStyle(`left:${M.left}px`)},[e.createElementVNode("div",Ft,e.toDisplayString(M.text),1)],6))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"wx-area",style:e.normalizeStyle(`width:${t.fullWidth}px;height:${B.value}px`)},[O.value?(e.openBlock(),e.createElementBlock("div",jt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,(M,x)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:x},[M?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(M.css),style:e.normalizeStyle(`width: ${M.width}px; left:${x*M.width}px`)},null,6)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0),e.createVNode(yt,{borders:t.cellBorders},null,8,["borders"]),e.unref(_).length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(e.unref(_),(M,x)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:M.id},[M.$y?(e.openBlock(),e.createElementBlock("div",{key:0,class:"wx-selected","data-id":e.unref(R.setID)(M.id),style:e.normalizeStyle(h.value[x])},null,12,At)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),e.createVNode(Ot,{readonly:t.readonly,taskTemplate:t.taskTemplate},null,8,["readonly","taskTemplate"])],4)],32)),[[e.unref(n),{keys:{arrowup:!0,arrowdown:!0},exec:M=>oe(M)}]])}}),Gt=re(Ut,[["__scopeId","data-v-def875eb"]]),qt=Object.assign({name:"GanttResizer"},{__name:"Resizer",props:e.mergeModels({position:{default:"after"},size:{default:4},dir:{default:"x"},onmove:{type:Function},compactMode:{},containerWidth:{default:0},leftThreshold:{default:50},rightThreshold:{default:50}},{value:{default:0},valueModifiers:{},display:{default:"all"},displayModifiers:{}}),emits:["update:value","update:display"],setup(l){const n=l,t=e.useModel(l,"value"),o=e.useModel(l,"display");function c(h){let B=0;n.position==="center"?B=n.size/2:n.position==="before"&&(B=n.size);const r={size:[n.size+"px","auto"],p:[h-B+"px","0px"],p2:["auto","0px"]};if(n.dir!=="x")for(let $ in r)r[$]=r[$].reverse();return r}let T=0,b;const m=e.ref(!1),y=e.ref(null);e.watchEffect(()=>{y.value===null&&t.value>0&&(y.value=t.value)});function w(h){return n.dir==="x"?h.clientX:h.clientY}function V(h){!n.compactMode&&(o.value==="grid"||o.value==="chart")||(T=w(h),b=t.value,m.value=!0,document.body.style.cursor=S.value,document.body.style.userSelect="none",window.addEventListener("mousemove",W),window.addEventListener("mouseup",d))}let _;function W(h){const B=b+w(h)-T;t.value=B;let r;B<=n.leftThreshold?r="chart":n.containerWidth-B<=n.rightThreshold?r="grid":r="all",o.value!==r&&(o.value=r),_&&clearTimeout(_),_=setTimeout(()=>n.onmove&&n.onmove(t.value),100)}function d(){document.body.style.cursor="",document.body.style.userSelect="",m.value=!1,window.removeEventListener("mousemove",W),window.removeEventListener("mouseup",d)}function C(){o.value="all",y.value!==null&&(t.value=y.value,n.onmove&&n.onmove(y.value))}function I(h){n.compactMode?o.value=o.value==="chart"?"grid":"chart":o.value==="grid"||o.value==="chart"?C():o.value=h==="left"?"chart":"grid"}function Y(){I("left")}function G(){I("right")}const E=e.computed(()=>c(t.value)),S=e.computed(()=>o.value!=="all"?"auto":n.dir==="x"?"ew-resize":"ns-resize");return(h,B)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["wx-resizer",`wx-resizer-${l.dir}`,`wx-resizer-display-${o.value}`,{"wx-resizer-active":m.value}]),onMousedown:V,style:e.normalizeStyle(`width:${E.value.size[0]}; height: ${E.value.size[1]}; cursor:${S.value};`)},[e.createElementVNode("div",{class:"wx-button-expand-box"},[e.createElementVNode("div",{class:"wx-button-expand-content wx-button-expand-left"},[e.createElementVNode("i",{class:"wxi-menu-left",onClick:Y})]),e.createElementVNode("div",{class:"wx-button-expand-content wx-button-expand-right"},[e.createElementVNode("i",{class:"wxi-menu-right",onClick:G})])]),B[0]||(B[0]=e.createElementVNode("div",{class:"wx-resizer-line"},null,-1))],38))}}),Yt=re(qt,[["__scopeId","data-v-206d8277"]]),Xt=650;function nt(l){let n;function t(){n=new ResizeObserver(c=>{for(let T of c)if(T.target===document.body){let b=T.contentRect.width<=Xt;l(b)}}),n.observe(document.body)}function o(){n&&(n.disconnect(),n=null)}return{observe:t,disconnect:o}}const Kt={tabindex:"0",class:"wx-layout"},Zt=Object.assign({name:"GanttLayout"},{__name:"Layout",props:e.mergeModels({taskTemplate:{},readonly:{},cellBorders:{},highlightTime:{}},{tableAPI:{},tableAPIModifiers:{}}),emits:["update:tableAPI"],setup(l){const n=f.asDirective(et.hotkeys),t=e.useModel(l,"tableAPI"),o=e.inject("gantt-store"),{_tasks:c,_scales:T,cellHeight:b,columns:m,scrollTop:y,undo:w}=o.getReactiveState(),V=f.subscribe(c),_=f.subscribe(T),W=f.subscribe(b),d=f.subscribe(m),C=f.subscribe(y),I=f.subscribe(w),Y=e.ref(!1),G=e.ref(0),E=e.ref(void 0),S=e.ref(void 0),h=e.ref(void 0),B=e.ref(null),r=e.ref("all");e.watchEffect(()=>{const x=nt(F);x.observe(),e.onWatcherCleanup(()=>{x.disconnect()})});let $=null;function F(x){x!==Y.value&&(Y.value=x,Y.value?($=r.value,r.value==="all"&&(r.value="grid")):(!$||$==="all")&&(r.value="all"))}const A=e.computed(()=>{let x;return d.value.every(H=>H.width&&!H.flexgrow)?x=d.value.reduce((H,j)=>H+parseInt(j.width),0):r.value==="chart"?x=parseInt(d.value.find(H=>H.id==="action")?.width)||50:x=440,x});e.watchEffect(()=>{G.value=A.value});const K=e.computed(()=>E.value-h.value),ne=e.computed(()=>_.value.width),le=e.computed(()=>V.value.length*W.value),te=e.computed(()=>_.value.height+le.value+K.value);e.watchEffect(()=>{let x;B.value&&(x=new ResizeObserver(D),x.observe(B.value)),e.onWatcherCleanup(()=>{x&&x.disconnect()})});function D(){o.exec("resize-chart",{width:E.value-G.value,height:S.value-_.value.height,scrollSize:K.value})}const O=e.ref(null);function oe(){o.exec("scroll-chart",{top:O.value.scrollTop})}function ie(){O.value&&C.value!==O.value.scrollTop&&(O.value.scrollTop=C.value)}e.watchEffect(()=>{C.value,ie()});let L;e.onMounted(()=>{O.value&&(L=new ResizeObserver(()=>{S.value=O.value?.offsetHeight,E.value=O.value?.offsetWidth}),L.observe(O.value),S.value=O.value.offsetHeight,E.value=O.value.offsetWidth)}),e.onUnmounted(()=>{L?.disconnect()});const U=e.ref(null);let M;return e.onMounted(()=>{U.value&&(M=new ResizeObserver(()=>{h.value=U.value?.offsetWidth}),M.observe(U.value),h.value=U.value.offsetWidth)}),e.onUnmounted(()=>{M?.disconnect()}),(x,H)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-gantt",ref_key:"ganttDiv",ref:O,onScroll:oe},[e.createElementVNode("div",{ref_key:"pseudoRowsDiv",ref:U,class:"wx-pseudo-rows",style:e.normalizeStyle(`height:${te.value}px;width:100%;`)},[e.createElementVNode("div",{class:"wx-stuck",style:e.normalizeStyle(`height:${S.value}px;width:${h.value}px;`)},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Kt,[e.unref(d).length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(kt,{display:r.value,"onUpdate:display":H[0]||(H[0]=j=>r.value=j),compactMode:Y.value,columnWidth:A.value,width:G.value,readonly:l.readonly,fullHeight:le.value,tableAPI:t.value,"onUpdate:tableAPI":H[1]||(H[1]=j=>t.value=j)},null,8,["display","compactMode","columnWidth","width","readonly","fullHeight","tableAPI"]),e.createVNode(Yt,{value:G.value,"onUpdate:value":H[2]||(H[2]=j=>G.value=j),display:r.value,"onUpdate:display":H[3]||(H[3]=j=>r.value=j),compactMode:Y.value,containerWidth:E.value},null,8,["value","display","compactMode","containerWidth"])],64)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"wx-content",ref_key:"chart",ref:B},[e.createVNode(Gt,{readonly:l.readonly,fullWidth:ne.value,fullHeight:le.value,taskTemplate:l.taskTemplate,cellBorders:l.cellBorders,highlightTime:l.highlightTime},null,8,["readonly","fullWidth","fullHeight","taskTemplate","cellBorders","highlightTime"])],512)])),[[e.unref(n),{keys:{"ctrl+c":!0,"ctrl+v":!0,"ctrl+x":!0,"ctrl+d":!0,backspace:!0,"ctrl+z":e.unref(I),"ctrl+y":e.unref(I)},exec:j=>{j.isInput||e.unref(o).exec("hotkey",j)}}]])],4)],4)],544))}}),Qt=re(Zt,[["__scopeId","data-v-b6d88a7d"]]);function Jt(l){return{year:"%Y",quarter:`${l("Q")} %Q`,month:"%M",week:`${l("Week")} %w`,day:"%M %j",hour:"%H:%i"}}function en(l,n){return typeof l=="function"?l:R.dateToString(l,n)}function lt(l,n){return l.map(({format:t,...o})=>({...o,format:en(t,n)}))}function tn(l,n){const t=Jt(n);for(let o in t)t[o]=R.dateToString(t[o],l);return t}function nn(l,n){if(!l||!l.length)return l;const t=R.dateToString("%d-%m-%Y",n);return l.map(o=>o.template?o:o.id==="start"||o.id==="end"?{...o,_template:c=>t(c),template:c=>t(c)}:o.id==="duration"?{...o,_template:c=>c,template:c=>c}:o)}function ln(l,n){return l.levels?{...l,levels:l.levels.map(t=>({...t,scales:lt(t.scales,n)}))}:l}const an=Object.assign({name:"GanttComponentsGantt"},{__name:"Gantt",props:{taskTemplate:{default:null},markers:{default:()=>[]},taskTypes:{default:()=>X.defaultTaskTypes},tasks:{default:()=>[]},selected:{default:()=>[]},activeTask:{default:null},links:{default:()=>[]},scales:{default:()=>[{unit:"month",step:1,format:"%F %Y"},{unit:"day",step:1,format:"%j"}]},columns:{default:()=>X.defaultColumns},start:{default:null},end:{default:null},lengthUnit:{default:"day"},durationUnit:{default:"day"},cellWidth:{default:100},cellHeight:{default:38},scaleHeight:{default:36},readonly:{type:Boolean,default:!1},cellBorders:{default:"full"},zoom:{type:[Boolean,Object,Array],default:!1},baselines:{type:[Boolean,Object],default:!1},rollups:{type:[Boolean,Object],default:!1},highlightTime:{type:Function,default:null},init:{type:Function,default:null},autoScale:{type:Boolean,default:!0},unscheduledTasks:{type:Boolean,default:!1},criticalPath:{default:null},schedule:{default:()=>({type:"forward"})},projectStart:{default:null},projectEnd:{default:null},calendar:{default:null},undo:{type:Boolean,default:!1},splitTasks:{type:Boolean,default:!1},summary:{default:null},slack:{type:Boolean,default:!1},_export:{type:Boolean,default:!1}},setup(l,{expose:n}){const t=l,o=e.useAttrs(),c=new X.DataStore(f.writable),T={...qe.en,...He.en};let b=e.inject("wx-i18n",null);b?b=b.extend(T,!0):b=R.locale(T),e.provide("wx-i18n",b);const{calendar:m}=b.getRaw(),y=e.computed(()=>{let D={zoom:ln(t.zoom,m),scales:lt(t.scales,m),columns:nn(t.columns,m),links:X.normalizeLinks(t.links),cellWidth:t.cellWidth};return D.zoom&&(D={...D,...X.normalizeZoom(D.zoom,tn(m,b.getGroup("gantt")),D.scales,t.cellWidth)}),D});e.watch(()=>[t.tasks,t.durationUnit,t.calendar],()=>{t._export||X.parseTaskDates(t.tasks,{durationUnit:t.durationUnit,splitTasks:t.splitTasks,calendar:t.calendar})},{immediate:!0,flush:"pre"});let w=c.in;const V=/-/g;let _=new at.EventBusRouter((D,O)=>{const oe="on"+D.replace(V,"");o[oe]&&o[oe](O)});w.setNext(_);const W=e.ref(void 0),d=e.ref(null);e.watchEffect(()=>{t.calendar&&t.tasks&&(d.value=(D,O)=>O==="day"&&!t.calendar.getDayHours(D)||O==="hour"&&!t.calendar.getDayHours(D)?"wx-weekend":"")});const C=e.computed(()=>d.value||t.highlightTime),I=c.getState.bind(c),Y=c.getReactive.bind(c),G=()=>({data:c}),E=w.exec,S=D=>_=_.setNext(D),h=w.intercept.bind(w),B=w.on.bind(w),r=w.detach.bind(w),$=D=>c.getTask(D),F=()=>c.serialize(),A=D=>D?new Promise(O=>setTimeout(()=>O(W.value),1)):W.value,K=()=>c.getHistory(),ne={getState:I,getReactiveState:Y,getStores:G,exec:E,setNext:S,intercept:h,on:B,detach:r,getTable:A,getTask:$,serialize:F,getHistory:K};n({getState:I,getReactiveState:Y,getStores:G,exec:E,setNext:S,intercept:h,on:B,detach:r,getTable:A,getTask:$,serialize:F,getHistory:K}),e.provide("gantt-store",{getReactiveState:c.getReactive.bind(c),exec:w.exec.bind(w),getTask:c.getTask.bind(c)});let le=!0;const te=()=>{const D=y.value;c.init({tasks:t.tasks,links:D.links,start:t.start,columns:D.columns,end:t.end,lengthUnit:t.lengthUnit,cellWidth:D.cellWidth,cellHeight:t.cellHeight,scaleHeight:t.scaleHeight,scales:D.scales,taskTypes:t.taskTypes,zoom:D.zoom,selected:t.selected,activeTask:t.activeTask,baselines:t.baselines,rollups:t.rollups===!0?{type:"closest"}:t.rollups,autoScale:t.autoScale,unscheduledTasks:t.unscheduledTasks,markers:t.markers,durationUnit:t.durationUnit,criticalPath:t.criticalPath,schedule:t.schedule,projectStart:t.projectStart,projectEnd:t.projectEnd,calendar:t.calendar,slack:t.slack,undo:t.undo,_weekStart:m.weekStart,splitTasks:t.splitTasks,summary:t.summary}),le&&t.init&&(t.init(ne),le=!1)};return e.watchEffect(te),(D,O)=>(e.openBlock(),e.createBlock(Qt,{taskTemplate:t.taskTemplate,readonly:t.readonly,cellBorders:t.cellBorders,highlightTime:C.value,tableAPI:W.value,"onUpdate:tableAPI":O[0]||(O[0]=oe=>W.value=oe)},null,8,["taskTemplate","readonly","cellBorders","highlightTime","tableAPI"]))}}),on=Object.assign({name:"GanttToolbar"},{__name:"Toolbar",props:{api:{default:null},items:{default:()=>[]}},setup(l){const n=l;let t=e.inject("wx-i18n",null);t||(t=R.locale(He.en),e.provide("wx-i18n",t));const o=e.inject("wx-i18n").getGroup("gantt"),c=f.subscribeLater(()=>n.api?.getReactiveState()?._selected),T=f.subscribeLater(()=>n.api?.getReactiveState()?.undo),b=f.subscribeLater(()=>n.api?.getReactiveState()?.history),m=f.subscribeLater(()=>n.api?.getReactiveState()?.splitTasks),y=["undo","redo"],w=e.computed(()=>{const _=X.getToolbarButtons({undo:!0,splitTasks:!0});return(n.items.length?n.items:X.getToolbarButtons({undo:T().value,splitTasks:m().value})).map(d=>(d={...d,disabled:!1},d.handler=X.isHandledAction(_,d.id)?C=>X.handleAction(n.api,C.id,null,o):d.handler,d.text&&(d.text=o(d.text)),d.menuText&&(d.menuText=o(d.menuText)),d))}),V=e.computed(()=>{const _=c().value,W=[];return w.value.forEach(d=>{const C=d.id;if(C==="add-task")W.push(d);else if(y.includes(C))y.includes(C)&&W.push({...d,disabled:d.isDisabled(b().value)});else{if(!_?.length||!n.api)return;W.push({...d,disabled:d.isDisabled&&_.some(I=>d.isDisabled(I,n.api.getState()))})}}),W.filter((d,C)=>{if(n.api&&d.isHidden)return!_.some(I=>d.isHidden(I,n.api.getState()));if(d.comp==="separator"){const I=W[C+1];if(!I||I.comp==="separator")return!1}return!0})});return(_,W)=>(e.openBlock(),e.createBlock(e.unref(ot.Toolbar),{items:V.value},null,8,["items"]))}}),sn=["oncontextmenu"],rn={__name:"ContextMenu",props:{options:{default:()=>[]},api:{default:null},resolver:{default:null},filter:{default:null},at:{default:"point"},onclick:{type:Function},css:{}},setup(l,{expose:n}){const t=l;let o=null,c=e.inject("wx-i18n",null);c||(c=R.locale({...He.en,...qe.en}),e.provide("wx-i18n",c));const T=e.inject("wx-i18n").getGroup("gantt"),b=f.subscribeLater(()=>t.api?.getReactiveState()?.taskTypes),m=f.subscribeLater(()=>t.api?.getReactiveState()?.selected),y=f.subscribeLater(()=>t.api?.getReactiveState()?._selected),w=f.subscribeLater(()=>t.api?.getReactiveState()?.splitTasks),V=f.subscribeLater(()=>t.api?.getReactiveState()?.summary),_=e.computed(()=>({splitTasks:w().value,taskTypes:b().value,summary:V().value})),W=e.computed(()=>X.getMenuOptions(_.value));function d(){const r=t.options.length?t.options:X.getMenuOptions(_.value);return C(r)}function C(r){return r.map($=>($={...$},$.text&&($.text=T($.text)),$.subtext&&($.subtext=T($.subtext)),$.data&&($.data=C($.data)),$))}function I(r,$){let F=r?t.api.getTask(r):null;if(t.resolver){const A=t.resolver(r,$);F=A===!0?F:A}if(F){const A=R.locateID($.target,"data-segment");A!==null?o={id:F.id,segmentIndex:A}:o=F.id,m().value.includes(F.id)||t.api.exec("select-task",{id:F.id})}return F}function Y(r){const $=r.action;$&&(X.isHandledAction(W.value,$.id)&&X.handleAction(t.api,$.id,o,T),t.onclick&&t.onclick(r))}function G(r,$){const F=y().value?.length?y().value:$?[$]:[];let A=t.filter?F.every(K=>t.filter(r,K)):!0;if(A&&(r.isHidden&&(A=!F.some(K=>r.isHidden(K,t.api.getState(),o))),r.isDisabled)){const K=F.some(ne=>r.isDisabled(ne,t.api.getState(),o));r.disabled=K}return A}let E=!1;e.watchEffect(()=>{t.api&&!E&&(E=!0,t.api.on("scroll-chart",()=>h.value.show()),t.api.on("drag-task",()=>h.value.show()))});const S=e.computed(()=>d()),h=e.ref(null);function B(r,$){h.value.show(r,$)}return n({show:B}),(r,$)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(st.ContextMenu),{filter:G,options:S.value,dataKey:"id",resolver:I,onclick:Y,css:l.css,at:l.at,ref_key:"menu",ref:h},null,8,["options","css","at"]),e.createElementVNode("span",{oncontextmenu:h.value?.show,"data-menu-ignore":"true"},[e.renderSlot(r.$slots,"default",{},void 0,!0)],8,sn)],64))}},cn=re(rn,[["__scopeId","data-v-463453b1"]]),un={key:0,class:"wx-links"},dn={class:"wx-cell"},fn={class:"wx-task-name"},mn={key:0,class:"wx-cell wx-link-lag"},pn={class:"wx-cell"},vn={class:"wx-wrapper"},hn={class:"wx-cell"},gn=["onclick"],kn=Object.assign({name:"GanttEditorLinks"},{__name:"Links",props:{api:{},autoSave:{},onlinkschange:{type:Function},onchange:{type:Function},comp:{type:String},label:{type:String},isHidden:{type:Function},setter:{type:Function},getter:{type:Function},hidden:{type:Boolean},error:{type:String},value:{type:String}},setup(l){const n=e.inject("wx-i18n").getGroup("gantt"),t=l;e.provide("wx-input-id",null);const{activeTask:o,_activeTask:c,_links:T,schedule:b,unscheduledTasks:m}=t.api.getReactiveState(),y=f.subscribe(o),w=f.subscribe(c),V=f.subscribe(T),_=f.subscribe(b),W=f.subscribe(m),d=e.ref();e.watchEffect(()=>{d.value=C()});function C(){if(y.value){const E=V.value.filter(h=>h.target===y.value).map(h=>({link:h,task:t.api.getTask(h.source)})),S=V.value.filter(h=>h.source===y.value).map(h=>({link:h,task:t.api.getTask(h.target)}));return[{title:n("Predecessors"),data:E},{title:n("Successors"),data:S}]}}const I=[{id:"e2s",label:n("End-to-start")},{id:"s2s",label:n("Start-to-start")},{id:"e2e",label:n("End-to-end")},{id:"s2e",label:n("Start-to-end")}];function Y(E){t.autoSave?t.api.exec("delete-link",{id:E}):(d.value=d.value.map(S=>({...S,data:S.data.filter(h=>h.link.id!==E)})),t.onlinkschange?.({id:E,action:"delete-link",data:{id:E}}))}function G(E,S){t.autoSave?t.api.exec("update-link",{id:E,link:S}):(d.value=d.value.map(h=>({...h,data:h.data.map(B=>B.link.id===E?{...B,link:{...B.link,...S}}:B)})),t.onlinkschange?.({id:E,action:"update-link",data:{id:E,link:S}}))}return(E,S)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,h=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:h.title},[h.data.length?(e.openBlock(),e.createElementBlock("div",un,[e.createVNode(e.unref(se.Field),{label:h.title,position:"top"},{default:e.withCtx(()=>[e.createElementVNode("table",null,[e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.data,B=>(e.openBlock(),e.createElementBlock("tr",{key:B.link.id},[e.createElementVNode("td",dn,[e.createElementVNode("div",fn,e.toDisplayString(B.task.text||""),1)]),e.unref(_)?.auto&&B.link.type==="e2s"?(e.openBlock(),e.createElementBlock("td",mn,[e.createVNode(e.unref(se.Text),{type:"number",placeholder:e.unref(n)("Lag"),value:B.link.lag,disabled:e.unref(W)&&e.unref(w).unscheduled,onchange:r=>{r.input||G(B.link.id,{lag:r.value})}},null,8,["placeholder","value","disabled","onchange"])])):e.createCommentVNode("",!0),e.createElementVNode("td",pn,[e.createElementVNode("div",vn,[e.createVNode(e.unref(se.Combo),{value:B.link.type,placeholder:e.unref(n)("Select link type"),options:I,onchange:r=>G(B.link.id,{type:r.value})},{default:e.withCtx(({option:r})=>[e.createTextVNode(e.toDisplayString(r.label),1)]),_:1},8,["value","placeholder","onchange"])])]),e.createElementVNode("td",hn,[e.createElementVNode("i",{class:"wxi-delete wx-delete-icon",onclick:()=>Y(B.link.id),role:"button"},null,8,gn)])]))),128))])])]),_:2},1032,["label"])])):e.createCommentVNode("",!0)],64))),128))}}),yn=re(kn,[["__scopeId","data-v-94a2215a"]]),xn={class:"date-time-controll"},bn={__name:"DateTimePicker",props:{value:{},time:{},format:{},onchange:{type:Function}},setup(l){const n=l,t=e.computed(()=>{const{value:c,time:T,format:b,onchange:m,...y}=n;return y});function o(c){const T=new Date(c.value);T.setHours(n.value.getHours()),T.setMinutes(n.value.getMinutes()),n.onchange?.({value:T})}return(c,T)=>(e.openBlock(),e.createElementBlock("div",xn,[e.createVNode(e.unref(se.DatePicker),e.mergeProps(t.value,{value:l.value,onchange:o,format:l.format,buttons:["today"],clear:!1}),null,16,["value","format"]),l.time?(e.openBlock(),e.createBlock(e.unref(se.TimePicker),{key:0,value:l.value,onchange:l.onchange,format:l.format},null,8,["value","onchange","format"])):e.createCommentVNode("",!0)]))}},wn=re(bn,[["__scopeId","data-v-1f9dfea2"]]),Bn=Object.assign({name:"GanttEditor"},{__name:"Editor",props:{api:{default:null},items:{default:()=>[]},css:{default:""},layout:{default:"default"},readonly:{type:Boolean,default:!1},placement:{default:"sidebar"},bottomBar:{type:[Boolean,Object],default:!0},topBar:{type:[Boolean,Object],default:!0},autoSave:{type:Boolean,default:!0},focus:{type:Boolean,default:!1},hotkeys:{default:()=>({})}},setup(l){ve.registerEditorItem("select",se.RichSelect),ve.registerEditorItem("date",wn),ve.registerEditorItem("twostate",se.TwoState),ve.registerEditorItem("slider",se.Slider),ve.registerEditorItem("counter",se.Counter),ve.registerEditorItem("links",yn),ve.registerEditorItem("checkbox",se.Checkbox);const n=l;let t=e.inject("wx-i18n",null);t||(t=R.locale({...He.en,...qe.en}),e.provide("wx-i18n",t));const o=t.getGroup("gantt"),c=t.getRaw(),T=c.gantt?.dateFormat||c.formats?.dateFormat,b=R.dateToString(T,c.calendar),m=f.subscribeLater(()=>n.api?.getReactiveState()?._activeTask),y=f.subscribeLater(()=>n.api?.getReactiveState()?.activeTask),w=f.subscribeLater(()=>n.api?.getReactiveState()?.unscheduledTasks),V=f.subscribeLater(()=>n.api?.getReactiveState()?.rollups),_=f.subscribeLater(()=>n.api?.getReactiveState()?.summary),W=f.subscribeLater(()=>n.api?.getReactiveState()?.links),d=f.subscribeLater(()=>n.api?.getReactiveState()?.taskTypes),C=f.subscribeLater(()=>n.api?.getReactiveState()?.undo),I=f.subscribeLater(()=>n.api?.getReactiveState()?.segmentIndex),Y=f.subscribeLater(()=>n.api?.getReactiveState()?.isSegment),G=e.computed(()=>{if(n.topBar===!0&&!n.readonly){const p=[{comp:"icon",icon:"wxi-close",id:"close"},{comp:"spacer"},{comp:"button",type:"danger",text:o("Delete"),id:"delete"}];return n.autoSave?{items:p}:{items:[...p,{comp:"button",type:"primary",text:o("Save"),id:"save"}]}}return n.topBar}),E=e.ref(!1),S=e.computed(()=>E.value?"wx-full-screen":"");e.watchEffect(p=>{const N=nt(h);N.observe(),p(()=>{N.disconnect()})});function h(p){E.value=p}const B=e.computed(()=>X.getEditorItems({unscheduledTasks:w().value,rollups:V().value,summary:_().value,taskTypes:d().value})),r=e.ref({}),$=e.ref(null),F=e.ref(void 0),A=e.ref(null),K=e.computed(()=>{const p=m().value;if(!p)return null;let N;if(Y().value&&p.segments?N={...p.segments[I().value]}:N={...p},n.readonly){let P={parent:N.parent};return B.value.forEach(({key:z,comp:ae})=>{if(ae!=="links"){const Z=N[z];ae==="date"&&Z instanceof Date?P[z]=b(Z):ae==="slider"&&z==="progress"?P[z]=`${Z}%`:P[z]=Z}}),P}return N||null});e.watch(K,p=>{F.value=p}),e.watch(y,()=>{r.value={},A.value=null,$.value=null});const ne=e.computed(()=>{let p=n.items.length?n.items:B.value;return p=te(p,F.value),F.value?p.filter(N=>!N.isHidden||!N.isHidden(F.value,n.api.getState())):p}),le=e.computed(()=>ne.value.map(p=>p.key));function te(p,N){return p.map(P=>{const z={...P};if(P.config&&(z.config={...z.config}),z.comp==="links"&&n.api&&(z.api=n.api,z.autoSave=n.autoSave,z.onlinkschange=D),z.comp==="select"&&z.key==="type"){const ae=z.options??[];z.options=ae.map(Z=>({...Z,label:o(Z.label)}))}return z.comp==="slider"&&z.key==="progress"&&(z.labelTemplate=ae=>`${o(z.label)} ${ae}%`),z.label&&(z.label=o(z.label)),z.config?.placeholder&&(z.config.placeholder=o(z.config.placeholder)),N&&(z.isDisabled&&z.isDisabled(N,n.api.getState())?z.disabled=!0:delete z.disabled),z})}function D({id:p,action:N,data:P}){r.value[p]={action:N,data:P}}function O(){for(let p in r.value)if(W().value.byId(p)){const{action:N,data:P}=r.value[p];n.api.exec(N,P)}}function oe(){const p=y().value,N=m().value,P=I().value,z=p.id||p;if(Y().value){if(N.segments){const ae=N.segments.filter((Z,fe)=>fe!==P);n.api.exec("update-task",{id:z,task:{segments:ae}})}}else n.api.exec("delete-task",{id:z})}function ie(){n.api.exec("show-editor",{id:null})}function L(p){const{item:N,changes:P}=p;if(N.id==="delete"&&oe(),N.id==="save")if(!P.length)O();else return;N.comp&&ie()}function U(p){let{update:N,key:P,input:z}=p;if(z&&($.value=!0),p.update=M({...N},P,z),!n.autoSave)F.value=p.update;else if(!A.value&&!z){const ae=ne.value.find(ke=>ke.key===P),Z=N[P];(!ae.validation||ae.validation(Z))&&(!ae.required||Z)&&j(p.update)}}function M(p,N,P){return w().value&&p.type==="summary"&&(p.unscheduled=!1),X.prepareEditTask(p,n.api.getState(),N),P||($.value=!1),p}function x(p){n.autoSave||j(p.values)}function H(p){A.value=p.errors}function j(p){const N=y().value;p={...p,unscheduled:w().value&&p.unscheduled&&p.type!=="summary"},delete p.links,delete p.data,(le.value.indexOf("duration")===-1||p.segments&&!p.duration)&&delete p.duration;const P={id:N.id||N,task:p,...Y().value&&{segmentIndex:I().value}};n.autoSave&&$.value&&(P.inProgress=$.value),n.api.exec("update-task",P),n.autoSave||O()}const de=e.computed(()=>C().value?{"ctrl+z":p=>{p.preventDefault(),n.api.exec("undo")},"ctrl+y":p=>{p.preventDefault(),n.api.exec("redo")}}:{});return(p,N)=>K.value?(e.openBlock(),e.createBlock(e.unref(se.Locale),{key:0},{default:e.withCtx(()=>[e.createVNode(e.unref(ve.Editor),{css:`wx-gantt-editor ${S.value} ${l.css}`,items:ne.value,values:K.value,topBar:G.value,bottomBar:l.bottomBar,placement:l.placement,layout:l.layout,readonly:l.readonly,autoSave:l.autoSave,focus:l.focus,onaction:L,onsave:x,onvalidation:H,onchange:U,hotkeys:l.hotkeys&&{...de.value,...l.hotkeys}},null,8,["css","items","values","topBar","bottomBar","placement","layout","readonly","autoSave","focus","hotkeys"])]),_:1})):e.createCommentVNode("",!0)}}),Tn=re(Bn,[["__scopeId","data-v-004073c2"]]),Sn={__name:"HeaderMenu",props:{columns:{default:null},api:{}},setup(l){const n=l,t=e.computed(()=>n.api?.getTable());return(o,c)=>(e.openBlock(),e.createBlock(e.unref(tt.HeaderMenu),{api:t.value,columns:l.columns},{default:e.withCtx(()=>[o.$slots.default?e.renderSlot(o.$slots,"default",{key:0}):e.createCommentVNode("",!0)]),_:3},8,["api","columns"]))}},$n={key:1,class:"wx-gantt-tooltip-text"},En=300,_n=Object.assign({name:"GanttWidgetsTooltip"},{__name:"Tooltip",props:{api:{},content:{}},setup(l){const n=l,t=e.ref(null),o=e.ref({}),c=e.ref({}),T=e.ref(null),b=e.ref({});function m(d){const C=d;for(;d;){if(d.getAttribute){const I=R.getID(d,"data-tooltip-id"),Y=R.getID(d,"data-tooltip-at"),G=d.getAttribute("data-tooltip");if(I||G){const E=R.locateID(C,"data-segment");return{id:I,tooltip:G,target:d,at:Y,segment:E}}}d=d.parentNode}return{id:null,tooltip:null,target:null,at:null,segment:null}}e.watchEffect(()=>{if(T.value){const d=T.value.getBoundingClientRect();d.right>=o.value.right&&(b.value.left=o.value.width-d.width-5),d.bottom>=o.value.bottom&&(b.value.top-=d.bottom-o.value.bottom+2)}});let y;const w=d=>{clearTimeout(y),y=setTimeout(()=>{d()},En)};function V(d){let{id:C,tooltip:I,target:Y,at:G,segment:E}=m(d.target);if(b.value=null,c.value={},!I)if(C)I=W(C,E);else{clearTimeout(y);return}w(()=>{C&&(c.value={data:_(C)},E!=null&&(c.value.segmentIndex=E));const S=Y.getBoundingClientRect();o.value=t.value.getBoundingClientRect();let h,B;G==="left"?(h=S.top+5-o.value.top,B=S.right+5-o.value.left):(h=S.top+S.height-o.value.top,B=d.clientX-o.value.left),b.value={top:h,left:B,text:I}})}function _(d){return n.api?.getTask(d)||null}function W(d,C){const I=_(d);return C!==null&&I?.segments?I.segments[C]?.text||"":I?.text||""}return(d,C)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-tooltip-area",ref_key:"area",ref:t,onMousemove:V},[b.value&&(b.value.text||l.content)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"wx-gantt-tooltip",ref_key:"tooltipNode",ref:T,style:e.normalizeStyle(`top:${b.value.top}px;left:${b.value.left}px`)},[l.content?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.content),e.normalizeProps(e.mergeProps({key:0},c.value)),null,16)):b.value.text?(e.openBlock(),e.createElementBlock("div",$n,e.toDisplayString(b.value.text),1)):e.createCommentVNode("",!0)],4)):e.createCommentVNode("",!0),e.renderSlot(d.$slots,"default",{},void 0,!0)],544))}}),Cn=re(_n,[["__scopeId","data-v-6476f951"]]),In=Object.assign({name:"GanttThemesWillow"},{__name:"Willow",props:{fonts:{type:Boolean,default:!0}},setup(l){const n=l;return(t,o)=>t.$slots.default?(e.openBlock(),e.createBlock(e.unref(se.Willow),{key:0,fonts:n.fonts},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default",{},void 0,!0)]),_:3},8,["fonts"])):(e.openBlock(),e.createBlock(e.unref(se.Willow),{key:1,fonts:n.fonts},null,8,["fonts"]))}}),Ln=re(In,[["__scopeId","data-v-0c03ac4a"]]),zn={__name:"WillowDark",props:{fonts:{type:Boolean,default:!0}},setup(l){const n=l;return(t,o)=>t.$slots.default?(e.openBlock(),e.createBlock(e.unref(se.WillowDark),{key:0,fonts:n.fonts},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},8,["fonts"])):(e.openBlock(),e.createBlock(e.unref(se.WillowDark),{key:1,fonts:n.fonts},null,8,["fonts"]))}},Dn=it.version;Object.defineProperty(exports,"defaultColumns",{enumerable:!0,get:()=>X.defaultColumns});Object.defineProperty(exports,"defaultEditorItems",{enumerable:!0,get:()=>X.defaultEditorItems});Object.defineProperty(exports,"defaultMenuOptions",{enumerable:!0,get:()=>X.defaultMenuOptions});Object.defineProperty(exports,"defaultTaskTypes",{enumerable:!0,get:()=>X.defaultTaskTypes});Object.defineProperty(exports,"defaultToolbarButtons",{enumerable:!0,get:()=>X.defaultToolbarButtons});Object.defineProperty(exports,"getEditorItems",{enumerable:!0,get:()=>X.getEditorItems});Object.defineProperty(exports,"getMenuOptions",{enumerable:!0,get:()=>X.getMenuOptions});Object.defineProperty(exports,"getToolbarButtons",{enumerable:!0,get:()=>X.getToolbarButtons});Object.defineProperty(exports,"registerScaleUnit",{enumerable:!0,get:()=>X.registerScaleUnit});Object.defineProperty(exports,"registerEditorItem",{enumerable:!0,get:()=>ve.registerEditorItem});exports.ContextMenu=cn;exports.Editor=Tn;exports.Gantt=an;exports.HeaderMenu=Sn;exports.Toolbar=on;exports.Tooltip=Cn;exports.Willow=Ln;exports.WillowDark=zn;exports.version=Dn;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),f=require("@svar-ui/lib-vue"),R=require("@svar-ui/lib-dom"),He=require("@svar-ui/gantt-locales"),qe=require("@svar-ui/core-locales"),at=require("@svar-ui/lib-state"),X=require("@svar-ui/gantt-store"),et=require("@svar-ui/grid-store"),tt=require("@svar-ui/vue-grid"),se=require("@svar-ui/vue-core"),ot=require("@svar-ui/vue-toolbar"),st=require("@svar-ui/vue-menu"),ve=require("@svar-ui/vue-editor"),rt="2.6.1",it={version:rt};function ct(l,n,t){const o=l.getBoundingClientRect(),c=n.querySelector(".wx-body").getBoundingClientRect();return{top:o.top-c.top,left:o.left-c.left,dt:o.bottom-t.clientY,db:t.clientY-o.top}}function Xe(l){return l&&R.getID(l,"data-context-id")}const Ke=5;function ut(l,n){let t,o,c,T,b,m,y,w,V;function _(r){T=r.clientX,b=r.clientY,m={...ct(t,l,r),y:n.getTask(c).$y},document.body.style.userSelect="none"}function W(r){t=R.locate(r),Xe(t)&&(c=R.getID(t),V=setTimeout(()=>{w=!0,n&&n.touchStart&&n.touchStart(),_(r.touches[0])},500),l.addEventListener("touchmove",E),l.addEventListener("contextmenu",d),window.addEventListener("touchend",S))}function d(r){if(w||V)return r.preventDefault(),!1}function C(r){r.which===1&&(t=R.locate(r),Xe(t)&&(c=R.getID(t),l.addEventListener("mousemove",G),window.addEventListener("mouseup",h),_(r)))}function I(r){l.removeEventListener("mousemove",G),l.removeEventListener("touchmove",E),document.body.removeEventListener("mouseup",h),document.body.removeEventListener("touchend",S),document.body.style.userSelect="",r&&(l.removeEventListener("mousedown",C),l.removeEventListener("touchstart",W))}function Y(r){const $=r.clientX-T,F=r.clientY-b;if(!o){if(Math.abs($)<Ke&&Math.abs(F)<Ke||n&&n.start&&n.start({id:c,e:r})===!1)return;o=t.cloneNode(!0),o.style.pointerEvents="none",o.classList.add("wx-reorder-task"),o.style.position="absolute",o.style.left=m.left+"px",o.style.top=m.top+"px",t.style.visibility="hidden",t.parentNode.insertBefore(o,t)}if(o){const A=Math.round(Math.max(0,m.top+F));if(n&&n.move&&n.move({id:c,top:A,detail:y})===!1)return;const K=n.getTask(c),ne=K.$y;if(!m.start&&m.y===ne)return B();m.start=!0,m.y=K.$y-4,o.style.top=A+"px";const le=document.elementFromPoint(r.clientX,r.clientY),te=R.locate(le);if(te&&te!==t){const D=R.getID(te),O=te.getBoundingClientRect(),oe=O.top+O.height/2,ie=r.clientY+m.db>oe&&te.nextElementSibling!==t,L=r.clientY-m.dt<oe&&te.previousElementSibling!==t;y?.after===D||y?.before===D?y=null:ie?y={id:c,after:D}:L&&(y={id:c,before:D})}}}function G(r){Y(r)}function E(r){w?(r.preventDefault(),Y(r.touches[0])):V&&(clearTimeout(V),V=null)}function S(){w=null,V&&(clearTimeout(V),V=null),B()}function h(){B()}function B(){t&&(t.style.visibility=""),o&&(o.parentNode.removeChild(o),n&&n.end&&n.end({id:c,top:m.top})),c=t=o=m=y=null,I()}return l.style.position!=="absolute"&&(l.style.position="relative"),l.addEventListener("mousedown",C),l.addEventListener("touchstart",W),{destroy(){I(!0)}}}const re=(l,n)=>{const t=l.__vccOpts||l;for(const[o,c]of n)t[o]=c;return t},dt={key:1,class:"wx-toggle-placeholder"},ft={class:"wx-text"},mt={__name:"TextCell",props:{row:{},column:{}},setup(l){function n(t,o){return`justify-content:${o.align};padding-left: ${(t.$level-1)*20}px`}return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-content",style:e.normalizeStyle(n(l.row,l.column))},[!l.row.$empty&&(l.row.data||l.row.lazy)?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass("wx-toggle-icon wxi-menu-"+(l.row.open?"down":"right")),"data-action":"open-task"},null,2)):(e.openBlock(),e.createElementBlock("i",dt)),e.createElementVNode("div",ft,[l.column._cell?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.column._cell),{key:0,row:l.row,column:l.column},null,8,["row","column"])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(l.row.text),1)],64))])],4))}},pt=re(mt,[["__scopeId","data-v-6381f23e"]]),vt=["data-action"],ht={__name:"ActionCell",props:{column:{},cell:{}},setup(l){const n=l,t=e.computed(()=>n.column.id);return(o,c)=>l.cell||l.column.id==="add-task"?(e.openBlock(),e.createElementBlock("div",{key:0,style:e.normalizeStyle({textAlign:l.column.align})},[e.createElementVNode("i",{class:"wx-action-icon wxi-plus","data-action":t.value},null,8,vt)],4)):e.createCommentVNode("",!0)}},Ze=re(ht,[["__scopeId","data-v-abfc4b0a"]]),gt=Object.assign({name:"GanttGridGrid"},{__name:"Grid",props:e.mergeModels({readonly:{},compactMode:{},width:{default:0},columnWidth:{}},{display:{default:"all"},displayModifiers:{},tableAPI:{},tableAPIModifiers:{}}),emits:["update:display","update:tableAPI"],setup(l){const n=f.asDirective(ut),t=l,o=e.useModel(l,"display"),c=e.useModel(l,"tableAPI"),b=e.inject("wx-i18n").getGroup("gantt"),m=e.inject("gantt-store"),{scrollTop:y,cellHeight:w,focusTask:V,_selected:_,area:W,_tasks:d,_scales:C,_headerLength:I,columns:Y,_sort:G,calendar:E,durationUnit:S,splitTasks:h,filterValues:B}=m.getReactiveState(),r=f.subscribe(y),$=f.subscribe(w),F=f.subscribe(_),A=f.subscribe(W),K=f.subscribe(d,!0),ne=f.subscribe(C),le=f.subscribe(I),te=f.subscribe(Y),D=f.subscribe(G),O=f.subscribe(E),oe=f.subscribe(S),ie=f.subscribe(h),L=f.subscribe(B);let U=e.ref(null);function M(u,v){if(v==="add-task")m.exec(v,{target:u,task:{text:b("New Task")},mode:"child",show:!0,focus:u?"grid":null});else if(v==="open-task"){const g=he.value.find(a=>a.id===u);(g.data||g.lazy)&&m.exec(v,{id:u,mode:!g.open})}}function x(u){const v=R.locateID(u),g=u.target.dataset.action;g&&u.preventDefault(),v?g==="add-task"||g==="open-task"?M(v,g):m.exec("select-task",{id:v,toggle:u.ctrlKey||u.metaKey,range:u.shiftKey,show:"xy",focus:"grid"}):g==="add-task"&&M(null,g)}function H(u){if(!t.readonly){const v=R.locateID(u),g=R.locateID(u,"data-col-id");!(g&&ce.value.find(i=>i.id===g))?.editor&&v&&m.exec("show-editor",{id:v})}}let j;function de(u){const v=u.id,{before:g,after:a}=u,i=u.onMove;let s=g||a,k=g?"before":"after";if(i){if(k==="after"){const q=me.value.findIndex(ee=>ee.id===v),Q=me.value.findIndex(ee=>ee.id===s),J=me.value[Q];q-Q===1?k="before":J.data&&J.open&&(k="before",s=J.data[0].id)}j={id:v,[k]:s}}else j=null;m.exec("move-task",{id:v,mode:k,target:s,inProgress:i})}function p({id:u}){if(t.readonly||(m.getTask(u).open&&m.exec("open-task",{id:u,mode:!1}),U.value=he.value.find(v=>v.id===u),!U.value))return!1}function N({id:u,top:v}){j?de({...j,onMove:!1}):m.exec("drag-task",{id:u,top:v+be.value,inProgress:!1}),U.value=null}function P({id:u,top:v,detail:g}){g&&de({...g,onMove:!0}),m.exec("drag-task",{id:u,top:v+be.value,inProgress:!0})}const z=e.ref(0),ae=e.ref(0),Z=e.ref(null),fe=e.ref(null),ke=e.ref(!1);function Oe(u){const{key:v,isInput:g}=u;if(!g&&(v==="arrowup"||v==="arrowdown"))return u.eventSource="grid",m.exec("hotkey",u),!1;if(v==="enter"){const a=c.value.getState().focusCell;if(a){const{row:i,column:s}=a;s==="add-task"?M(i,"add-task"):s==="text"&&M(i,"open-task")}}}function Ie(u){c.value=u,u.intercept("hotkey",Oe),u.intercept("scroll",()=>!1),u.intercept("select-row",()=>!1),u.intercept("sort-rows",v=>{const{key:g,add:a}=v;let i=D.value?D.value.find(k=>k.key===g):null,s="asc";return i&&(s=!i||i.order==="asc"?"desc":"asc"),m.exec("sort-tasks",{key:g,order:s,add:a}),!1}),u.intercept("filter-rows",v=>{const{key:g,value:a}=v;return m.exec("filter-tasks",{key:g,value:a,open:!0}),!1}),u.on("resize-column",()=>{$e(!0)}),u.on("hide-column",v=>{v.mode||Ee(),$e()}),u.intercept("update-cell",v=>{const{id:g,column:a,value:i}=v,s=he.value.find(k=>k.id===g);if(s){const k={...s};let q=i;q&&!isNaN(q)&&!(q instanceof Date)&&(q*=1),k[a]=q,X.prepareEditTask(k,{calendar:O.value,durationUnit:oe.value,splitTasks:ie.value},a),m.exec("update-task",{id:g,task:k})}return!1})}const ce=e.computed(()=>{let u=te.value.map(a=>{a={...a};const i=[...a.header];return i.forEach(s=>{s.text&&(s.text=b(s.text))}),a.header=i,a});const v=u.findIndex(a=>a.id==="text"),g=u.findIndex(a=>a.id==="add-task");if(v!==-1&&(u[v].cell&&(u[v]._cell=u[v].cell),u[v].cell=pt),g!==-1){u[g].cell=u[g].cell||Ze;const a=u[g].header[0];if(u[g].header[0].cell=a.cell||Ze,t.readonly)u.splice(g,1);else if(t.compactMode){const[i]=u.splice(g,1);u.unshift(i)}}return u.length>0&&(u[u.length-1].resize=!1),u}),be=e.computed(()=>A.value.from),Te=e.computed(()=>ne.value.height),Le=e.computed(()=>!t.compactMode&&o.value!=="grid"?t.columnWidth>t.width:t.columnWidth>z.value),Se=e.computed(()=>o.value==="all"?`${t.width}px`:o.value==="grid"?"calc(100% - 4px)":ce.value.find(u=>u.id==="add-task")?"50px":"0"),We=e.computed(()=>`min-height:${ae.value+$.value*4}px;`),ze=e.computed(()=>We.value+(Le.value&&o.value==="all"?`width:${t.columnWidth}px;`:o.value==="grid"?Le.value?`width:${t.columnWidth}px;`:"width:100%;":"")),Pe=e.computed(()=>F.value.map(u=>u.id)),he=e.computed(()=>K.value.slice(A.value.start,A.value.end)),me=e.computed(()=>(U.value&&!he.value.find(v=>v.id===U.value.id)?[...he.value,U.value]:he.value).map(v=>({...v})));function De(){return ce.value.some(u=>u.flexgrow&&!u.hidden)}const Fe=e.computed(()=>(ke.value,De()));function $e(u){if(!De()){const v=_e.value.reduce((g,a)=>(u&&a.$width&&(a.$width=a.width),g+(a.hidden?0:a.width)),0);t.columnWidth}ke.value=!0,ke.value=!1}function Ee(){ce.value.filter(v=>v.flexgrow&&!v.hidden).length===1&&ce.value.forEach(v=>{v.$width&&!v.flexgrow&&!v.hidden&&(v.width=v.$width)})}const Me=e.computed(()=>{if(me.value&&D.value?.length){const u={};return D.value.forEach(({key:v,order:g},a)=>{u[v]={order:g,...D.value.length>1&&{index:a}}}),u}return{}}),Ne=e.computed(()=>Me.value?{...L.value}:L.value),_e=e.computed(()=>{let u=o.value==="chart"?ce.value.filter(g=>g.id==="add-task"):ce.value;const v=o.value==="all"?t.width:z.value;if(!Fe.value){let g=t.columnWidth,a=!1;if(ce.value.some(i=>i.$width)){let i=0;g=ce.value.reduce((s,k)=>(k.hidden||(i+=k.width,s+=k.$width||k.width),s),0),i>g&&g>=v&&(a=!0)}if(a||g<v){let i=1;return a||(i=(v-50)/(g-50||1)),u.map(s=>(s.id!=="add-task"&&!s.hidden&&(s.$width||(s.$width=s.width),s.width=s.$width*i),s))}}return u});function Ce(){Z.value&&me.value!==null&&(Z.value.querySelector(".wx-body").style.top=-(r.value-be.value)+"px")}e.watchEffect(()=>{Z.value&&(r.value,be.value,Ce())}),e.watchEffect(()=>{if(Z.value){_e.value,ze.value,o.value,Se.value,me.value;const u=new ResizeObserver(()=>{Ce()});u.observe(Z.value.querySelector(".wx-table-box .wx-body")),e.onWatcherCleanup(()=>{u.disconnect()})}});let we;e.onMounted(()=>{fe.value&&(we=new ResizeObserver(u=>{for(const v of u)z.value=v.contentRect.width,ae.value=v.contentRect.height}),we.observe(fe.value))}),e.onUnmounted(()=>{we?.disconnect()});let ye=!1;const pe=f.subscribe(V);e.watch(pe,u=>{if(!u)return;const{id:v,column:g}=u;g&&(ye||(ye=!0,requestAnimationFrame(()=>{const a=c.value.getState().focusCell;c.value.exec("focus-cell",{row:v,column:a?.column||ce.value[0]?.id}),ye=!1})))});const je=e.computed(()=>({start:p,end:N,move:P,getTask:m.getTask})),Ae=e.computed(()=>[...Pe.value]),Ue=e.computed(()=>({rowHeight:$.value,headerHeight:Te.value/le.value}));return(u,v)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-table-container",style:e.normalizeStyle({flex:`0 0 ${Se.value}`}),ref_key:"tableContainer",ref:fe},[e.withDirectives((e.openBlock(),e.createElementBlock("div",{ref_key:"table",ref:Z,style:e.normalizeStyle(ze.value),class:"wx-table",onClick:x,onDblclick:H},[e.createVNode(e.unref(tt.Grid),{init:Ie,sizes:Ue.value,rowStyle:g=>g.$reorder?"wx-reorder-task":"",columnStyle:g=>`wx-text-${g.align} ${g.id==="add-task"?"wx-action":""}`,data:me.value,columns:_e.value,selectedRows:Ae.value,sortMarks:Me.value,filterValues:Ne.value},null,8,["sizes","rowStyle","columnStyle","data","columns","selectedRows","sortMarks","filterValues"])],36)),[[e.unref(n),je.value]])],4))}}),kt=re(gt,[["__scopeId","data-v-814ee4d3"]]),yt={__name:"CellGrid",props:e.mergeDefaults({borders:{default:""}},{borders:""}),setup(l){const n=e.inject("gantt-store"),{cellWidth:t,cellHeight:o}=n.getReactiveState(),c=f.subscribe(t),T=f.subscribe(o),b=e.ref(null),m=e.ref("#e4e4e4");return e.watchEffect(()=>{if(typeof getComputedStyle<"u"&&b.value){const y=getComputedStyle(b.value).getPropertyValue("--wx-gantt-border");m.value=y?y.substring(y.indexOf("#")):"#1d1e261a"}}),(y,w)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"node",ref:b,style:e.normalizeStyle(`width:100%; height:100%; background:url(${e.unref(X.grid)(e.unref(c),e.unref(T),m.value,l.borders)}); position: absolute;`)},null,4))}},xt={class:"wx-links"},bt=["points","onclick","data-link-id"],wt=["points"],Bt=Object.assign({name:"GanttChartLinks"},{__name:"Links",props:{onSelectLink:{type:Function},selectedLink:{},readonly:{}},setup(l){const n=f.asDirective(R.clickOutside),t=l,o=e.inject("gantt-store"),{_links:c,criticalPath:T}=o.getReactiveState(),b=f.subscribe(c),m=f.subscribe(T);function y(w){const V=w?.target?.classList;!V?.contains("wx-line")&&!V?.contains("wx-delete-button")&&t.onSelectLink(null)}return(w,V)=>(e.openBlock(),e.createElementBlock("svg",xt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b),_=>(e.openBlock(),e.createElementBlock("polyline",{key:_.id,class:e.normalizeClass(["wx-line",{"wx-critical":e.unref(m)&&_.critical,"wx-line-selectable":!l.readonly}]),points:_.$p,onclick:()=>!l.readonly&&l.onSelectLink(_.id),"data-link-id":e.unref(R.setID)(_.id)},null,10,bt))),128)),!l.readonly&&l.selectedLink?e.withDirectives((e.openBlock(),e.createElementBlock("polyline",{key:0,class:"wx-line wx-line-selected wx-line-selectable wx-delete-link",points:l.selectedLink.$p},null,8,wt)),[[e.unref(n),y]]):e.createCommentVNode("",!0)]))}}),Tt=re(Bt,[["__scopeId","data-v-4939b3a5"]]),St=["data-tooltip-id"],$t=Object.assign({name:"GanttChartRollups"},{__name:"Rollups",props:{rollup:{},parent:{}},setup(l){return(n,t)=>(e.openBlock(),e.createElementBlock("div",{"data-tooltip-id":l.rollup.id,class:e.normalizeClass(`wx-rollup wx-${l.rollup.type}-rollup`),style:e.normalizeStyle(`left:${l.rollup.$x_rollup}px;top:${l.parent.$y+l.parent.$h+l.rollup.$y_rollup_relative}px;width:${l.rollup.$w_rollup}px;height:${l.rollup.$h_rollup}px;`)},null,14,St))}}),Et=re($t,[["__scopeId","data-v-e1e1122e"]]),_t={class:"wx-segments"},Ct=["data-segment"],It={key:0,class:"wx-progress-wrapper"},Lt={class:"wx-content"},zt={__name:"BarSegments",props:{task:{},type:{}},setup(l){const n=l;function t(c){const T=n.task.segments[c];return`left:${T.$x}px;top:0px;width:${T.$w}px;height:100%;`}function o(c){if(!n.task.progress)return 0;const T=n.task.duration*n.task.progress/100,b=n.task.segments;let m=0,y=0,w=null;do{const V=b[y];y===c&&(m>T?w=0:w=Math.min((T-m)/V.duration,1)*100),m+=V.duration,y++}while(w===null&&y<b.length);return w||0}return(c,T)=>(e.openBlock(),e.createElementBlock("div",_t,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.task.segments,(b,m)=>(e.openBlock(),e.createElementBlock("div",{key:m,class:e.normalizeClass(["wx-segment","wx-bar",`wx-${l.type}`]),"data-segment":m,style:e.normalizeStyle(t(m))},[l.task.progress?(e.openBlock(),e.createElementBlock("div",It,[e.createElementVNode("div",{class:"wx-progress-percent",style:e.normalizeStyle(`width:${o(m)}%`)},null,4)])):e.createCommentVNode("",!0),e.createElementVNode("div",Lt,e.toDisplayString(b.text||""),1)],14,Ct))),128))]))}},Dt=re(zt,[["__scopeId","data-v-558dfded"]]),Mt=["data-id","data-tooltip-id","tabindex"],Nt={key:0,class:"wx-progress-wrapper"},Rt={key:4,class:"wx-content"},Vt={key:1,class:"wx-text-out"},Ht=Object.assign({name:"GanttChartBars"},{__name:"Bars",props:{readonly:{},taskTemplate:{}},setup(l){const n=l,t=e.inject("gantt-store"),{_tasks:o,_links:c,area:T,_scales:b,taskTypes:m,baselines:y,_selected:w,rollups:V,_rollups:_,focusTask:W,criticalPath:d,tasks:C,schedule:I,splitTasks:Y,summary:G,slack:E}=t.getReactiveState(),S=f.subscribe(o,!0),h=f.subscribe(c),B=f.subscribe(T),r=f.subscribe(b),$=f.subscribe(m),F=f.subscribe(y),A=f.subscribe(w),K=f.subscribe(V),ne=f.subscribe(_),le=f.subscribe(d),te=f.subscribe(C),D=f.subscribe(I),O=f.subscribe(Y),oe=f.subscribe(G),ie=f.subscribe(E),L=e.computed(()=>S.value.slice(B.value.start,B.value.end).map(a=>({...a}))),U=e.computed(()=>r.value.lengthUnitWidth);let M=!1;const x=e.ref(void 0),H=e.ref(null);let j=null;const de=e.ref(null),p=e.computed(()=>de.value&&{...h.value.find(a=>a.id===de.value)}),N=e.ref(void 0);let P;function z(a){if(a.button!==0)return;const i=R.locate(a);i&&Z(i,a)}function ae(a){const i=R.locate(a);i&&(P=setTimeout(()=>{N.value=!0,Z(i,a.touches[0])},300))}function Z(a,i){const{clientX:s}=i,k=R.getID(a),q=t.getTask(k),Q=i.target.classList;if(!i.target.closest(".wx-delete-button")&&!n.readonly){if(Q.contains("wx-progress-marker")){const{progress:J}=t.getTask(k);j={id:k,x:s,progress:J,dx:0,node:a,marker:i.target},i.target.classList.add("wx-progress-in-drag")}else{const J=fe(a,i,q)||"move";if(H.value={id:k,mode:J,x:s,dx:0,l:q.$x,w:q.$w},O.value&&q.segments?.length){const ee=R.locate(i,"data-segment");ee&&(H.value.segmentIndex=ee.dataset.segment*1,X.extendDragOptions(q,H.value))}}Le()}}function fe(a,i,s){if(i.target.classList.contains("wx-line")||(s||(s=t.getTask(R.getID(a))),s.type==="milestone"||s.type==="summary"))return"";const k=R.locate(i,"data-segment");k&&(a=k);const{left:q,width:Q}=a.getBoundingClientRect(),J=(i.clientX-q)/Q;let ee=.2/(Q>200?Q/200:1);return J<ee?"start":J>1-ee?"end":""}function ke(a){N.value?(a.preventDefault(),Ie(a,a.touches[0])):P&&(clearTimeout(P),P=null)}function Oe(a){Ie(a,a)}function Ie(a,i){const{clientX:s}=i;if(!n.readonly)if(j){const{node:k,x:q,id:Q}=j,J=j.dx=s-q,ee=Math.round(J/k.offsetWidth*100);let ge=j.progress+ee;j.value=ge=Math.min(Math.max(0,ge),100),t.exec("update-task",{id:Q,task:{progress:ge},inProgress:!0})}else if(H.value){Ne(null);const{mode:k,l:q,w:Q,x:J,id:ee,start:ge,segment:Be,index:xe}=H.value,Ge=t.getTask(ee),ue=s-J,Ye=Math.round(U.value)||1;if(!ge&&Math.abs(ue)<20||k==="start"&&Q-ue<Ye||k==="end"&&Q+ue<Ye||k==="move"&&(ue<0&&q+ue<0||ue>0&&q+Q+ue>ye.value)||H.value.segment&&!X.isSegmentMoveAllowed(Ge,H.value))return;H.value.dx=ue;let Re,Ve;if(k==="start"?(Re=q+ue,Ve=Q-ue):k==="end"?(Re=q,Ve=Q+ue):k==="move"&&(Re=q+ue,Ve=Q),t.exec("drag-task",{id:ee,width:Ve,left:Re,inProgress:!0,...Be&&{segmentIndex:xe}}),!H.value.start&&(k==="move"&&Ge.$x===q||k!=="move"&&Ge.$w===Q))return M=!0,Te();H.value.start=!0}else{const k=R.locate(a);if(k){const q=t.getTask(R.getID(k)),J=R.locate(a,"data-segment")||k,ee=fe(J,i,q);J.style.cursor=ee&&!n.readonly?"col-resize":"pointer"}}}function ce(){Te()}function be(){N.value=null,P&&(clearTimeout(P),P=null),Te()}function Te(){if(j){const{dx:a,id:i,marker:s,value:k}=j;j=null,typeof k<"u"&&a&&t.exec("update-task",{id:i,task:{progress:k},inProgress:!1}),s.classList.remove("wx-progress-in-drag"),M=!0,Se()}else if(H.value){const{id:a,mode:i,dx:s,l:k,w:q,start:Q,segment:J,index:ee}=H.value;if(H.value=null,Q){const ge=Math.round(s/U.value);if(!ge)t.exec("drag-task",{id:a,width:q,left:k,inProgress:!1,...J&&{segmentIndex:ee}});else{let Be={},xe=t.getTask(a);J&&(xe=xe.segments[ee]),i==="move"?(Be.start=xe.start,Be.end=xe.end):Be[i]=xe[i],t.exec("update-task",{id:a,diff:ge,task:Be,...J&&{segmentIndex:ee}})}M=!0}Se()}}function Le(){document.body.style.userSelect="none"}function Se(){document.body.style.userSelect=""}function We(a){if(!n.readonly){const i=R.locateID(a.target);if(i&&!a.target.classList.contains("wx-link")){const s=R.locateID(a.target,"data-segment");t.exec("show-editor",{id:i,...s!==null&&{segmentIndex:s}})}}}function ze(a){if(M){M=!1;return}const i=R.locateID(a.target);if(i){const s=a.target.classList;if(s.contains("wx-link")){const k=s.contains("wx-left");if(!x.value){x.value={id:i,start:k};return}x.value.id!==i&&!Ee(i,k)&&t.exec("add-link",{link:{source:x.value.id,target:i,type:$e(x.value.start,k)}})}else if(s.contains("wx-delete-button-icon"))t.exec("delete-link",{id:de.value}),de.value=null;else{const k=R.locateID(a.target,"data-segment");t.exec("select-task",{id:i,toggle:a.ctrlKey||a.metaKey,range:a.shiftKey,...k!==null&&{segmentIndex:k}})}}Me()}function Pe(a){return`left:${a.$x}px;top:${a.$y}px;width:${a.$w}px;height:${a.$h}px;line-height:${a.$h}px;`}function he(a){return`left:${a.$x_base}px;top:${a.$y_base}px;width:${a.$w_base}px;height:${a.$h_base}px;`}function me(a){return`left:${a.$x_slack}px;top:${a.$y}px;width:${a.$w_slack}px;height:${a.$h}px;`}function De(a){if(N.value||P)return a.preventDefault(),!1}const Fe=["e2s","s2s","e2e","s2e"];function $e(a,i){return Fe[(a?1:0)+(i?0:2)]}function Ee(a,i){const s=x.value.id,k=x.value.start;return a===s?!0:h.value.find(q=>q.target===a&&q.source===s&&q.type===$e(k,i))}function Me(){x.value&&(x.value=null)}function Ne(a){de.value=a}const _e=e.computed(()=>$.value.map(a=>a.id));function Ce(a){let i=_e.value.includes(a)?a:"task";return["task","milestone","summary"].includes(a)||(i=`task ${i}`),i}function we(a){t.exec(a.action,a.data)}const ye=e.ref(0),pe=e.ref(null),je=e.computed(()=>A.value.length&&pe.value&&pe.value.contains(document.activeElement)),Ae=e.computed(()=>je.value&&A.value[A.value.length-1].id),Ue=f.subscribe(W);e.watch(Ue,a=>{if(a&&a.column===!1){const{id:i}=a,s=pe.value?.querySelector(`.wx-bar[data-id='${R.setID(i)}']`);s&&s.focus()}});const u=a=>le.value&&a.critical;function v(a){if(D.value.auto){const i=te.value.getSummaryId(a,!0),s=te.value.getSummaryId(x.value.id,!0);return x.value?.id&&!(Array.isArray(i)?i:[i]).includes(x.value.id)&&!(Array.isArray(s)?s:[s]).includes(a)}return x.value}let g;return e.onMounted(()=>{window.addEventListener("mouseup",ce),pe.value&&(ye.value=pe.value.offsetWidth,g=new ResizeObserver(a=>{for(const i of a)ye.value=i.target.offsetWidth}),g.observe(pe.value))}),e.onUnmounted(()=>{window.removeEventListener("mouseup",ce),g?.disconnect()}),(a,i)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"container",ref:pe,class:"wx-bars",style:e.normalizeStyle(`line-height: ${L.value.length?L.value[0].$h:0}px`),onContextmenu:De,onMousedown:z,onMousemove:Oe,onTouchstart:ae,onTouchmove:ke,onTouchend:be,onClick:ze,onDblclick:We,onDragstart:i[0]||(i[0]=e.withModifiers(()=>{},["prevent"]))},[e.unref(ie)?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(L.value,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.id},[s.$visibleSlack?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass("wx-slack wx-slack-"+s.type),style:e.normalizeStyle(me(s))},null,6)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),e.createVNode(Tt,{onSelectLink:Ne,selectedLink:p.value,readonly:n.readonly},null,8,["selectedLink","readonly"]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value,s=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:s.id},[s.$skip?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["wx-bar","wx-"+Ce(s.type),{"wx-touch":N.value&&H.value&&s.id===H.value.id,"wx-selected":x.value&&x.value.id===s.id,"wx-critical":u(s),"wx-reorder-task":s.$reorder,"wx-split":e.unref(O)&&s.segments}]),style:e.normalizeStyle(Pe(s)),"data-id":e.unref(R.setID)(s.id),"data-tooltip-id":e.unref(R.setID)(s.id),tabindex:Ae.value===s.id?"0":"-1"},[n.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[s.id===p.value?.target&&p.value?.type[2]==="s"?(e.openBlock(),e.createBlock(e.unref(se.Button),{key:0,type:"danger",css:"wx-left wx-delete-button wx-delete-link"},{default:e.withCtx(()=>[...i[1]||(i[1]=[e.createElementVNode("i",{class:"wxi-close wx-delete-button-icon"},null,-1)])]),_:1})):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["wx-link","wx-left",{"wx-visible":x.value,"wx-target":!x.value||!Ee(s.id,!0)&&v(s.id),"wx-selected":x.value&&x.value.id===s.id&&x.value.start,"wx-critical":u(s)}])},[...i[2]||(i[2]=[e.createElementVNode("div",{class:"wx-inner"},null,-1)])],2))],64)),s.type!=="milestone"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[s.progress&&!(e.unref(O)&&s.segments)?(e.openBlock(),e.createElementBlock("div",Nt,[e.createElementVNode("div",{class:"wx-progress-percent",style:e.normalizeStyle("width:"+s.progress+"%")},null,4)])):e.createCommentVNode("",!0),!n.readonly&&!(e.unref(O)&&s.segments)&&!(s.type==="summary"&&e.unref(oe)?.autoProgress)?(e.openBlock(),e.createElementBlock("div",{key:1,class:"wx-progress-marker",style:e.normalizeStyle("left:calc("+s.progress+"% - 10px);")},e.toDisplayString(s.progress),5)):e.createCommentVNode("",!0),n.taskTemplate?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.taskTemplate),{key:2,data:s,api:e.unref(t),onaction:we},null,8,["data","api"])):e.unref(O)&&s.segments?(e.openBlock(),e.createBlock(Dt,{key:3,task:s,type:Ce(s.type)},null,8,["task","type"])):(e.openBlock(),e.createElementBlock("div",Rt,e.toDisplayString(s.text||""),1))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[i[3]||(i[3]=e.createElementVNode("div",{class:"wx-content"},null,-1)),n.taskTemplate?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.taskTemplate),{key:0,data:s,api:e.unref(t),onaction:we},null,8,["data","api"])):(e.openBlock(),e.createElementBlock("div",Vt,e.toDisplayString(s.text),1))],64)),n.readonly?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[s.id===p.value?.target&&p.value?.type[2]==="e"?(e.openBlock(),e.createBlock(e.unref(se.Button),{key:0,type:"danger",css:"wx-right wx-delete-button wx-delete-link"},{default:e.withCtx(()=>[...i[4]||(i[4]=[e.createElementVNode("i",{class:"wxi-close wx-delete-button-icon"},null,-1)])]),_:1})):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["wx-link","wx-right",{"wx-visible":x.value,"wx-target":!x.value||!Ee(s.id,!1)&&v(s.id),"wx-selected":x.value&&x.value.id===s.id&&!x.value.start,"wx-critical":u(s)}])},[...i[5]||(i[5]=[e.createElementVNode("div",{class:"wx-inner"},null,-1)])],2))],64))],14,Mt)),e.unref(K)&&e.unref(ne)?.[s.id]?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(e.unref(ne)[s.id],k=>(e.openBlock(),e.createBlock(Et,{key:k.id,rollup:k,parent:s},null,8,["rollup","parent"]))),128)):e.createCommentVNode("",!0),e.unref(F)&&!s.$skip_baseline?(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["wx-baseline",{"wx-milestone":s.type==="milestone"}]),style:e.normalizeStyle(he(s))},null,6)):e.createCommentVNode("",!0)],64))),128))],36))}}),Ot=re(Ht,[["__scopeId","data-v-a2fa1ccc"]]),Wt={__name:"TimeScale",props:{highlightTime:{type:Function}},setup(l){const n=l,t=e.inject("gantt-store"),{_scales:o}=t.getReactiveState(),c=f.subscribe(o);return(T,b)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-scale",style:e.normalizeStyle({width:e.unref(c).width+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(c).rows,(m,y)=>(e.openBlock(),e.createElementBlock("div",{key:y,class:"wx-row",style:e.normalizeStyle({height:m.height+"px"})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.cells,(w,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:e.normalizeClass(["wx-cell",w.css,n.highlightTime?n.highlightTime(w.date,w.unit):""]),style:e.normalizeStyle({width:w.width+"px"})},e.toDisplayString(w.value),7))),128))],4))),128))],4))}},Pt=re(Wt,[["__scopeId","data-v-3207e419"]]),Ft={class:"wx-content"},jt={key:0,class:"wx-gantt-holidays",style:{height:"100%"}},At=["data-id"],Qe=1,Je=.003,Ut=Object.assign({name:"GanttChartChart"},{__name:"Chart",props:{readonly:{},fullWidth:{},fullHeight:{},taskTemplate:{},cellBorders:{},highlightTime:{}},setup(l){const n=f.asDirective(et.hotkeys),t=l,o=e.inject("gantt-store"),{_selected:c,scrollTop:T,scrollLeft:b,cellHeight:m,_scales:y,zoom:w,_markers:V}=o.getReactiveState(),_=f.subscribe(c,!0),W=f.subscribe(T),d=f.subscribe(b),C=f.subscribe(m),I=f.subscribe(y),Y=f.subscribe(w),G=f.subscribe(V),E=e.ref(0),S=e.ref(null),h=e.computed(()=>{const L=[];return _.value.length&&C.value&&_.value.forEach(U=>{L.push(`height: ${C.value}px;top: ${U.$y-3}px`)}),L});e.watch(E,()=>{F()});const B=e.computed(()=>Math.max(E.value,t.fullHeight));e.watchEffect(()=>{S.value&&(S.value.scrollTop=W.value,S.value.scrollLeft=d.value)});function r(){$(),F()}function $(){const L={};S.value.scrollTop!==W.value&&(L.top=S.value.scrollTop),S.value.scrollLeft!==d.value&&(L.left=S.value.scrollLeft),o.exec("scroll-chart",L)}function F(){const L=E.value||0,U=Math.ceil(L/C.value)+1,M=Math.floor((S.value?.scrollTop||0)/C.value),x=Math.max(0,M-Qe),H=M+U+Qe,j=x*C.value;o.exec("render-data",{start:x,end:H,from:j})}let A=performance.now();function K(L){const M=Math.abs(L)<50?.004:.01,x=performance.now(),H=Math.min(x-A,50);A=x;const j=ne(-L*M,-Je*H,Je*H);return Math.exp(j)}function ne(L,U,M){return Math.max(Math.min(L,M),U)}let le=!1;function te(L){if(Y.value&&(L.ctrlKey||L.metaKey)){L.preventDefault();const U=K(L.deltaY),M=L.clientX-S.value.getBoundingClientRect().left;le||(le=!0,requestAnimationFrame(()=>{o.exec("zoom-scale",{dir:U>1?1:-1,ratio:Math.abs(1-U),offset:M}),le=!1}))}}function D(L){const U=t.highlightTime(L.date,L.unit);return U?{css:U,width:L.width}:null}const O=e.computed(()=>(I.value.minUnit==="hour"||I.value.minUnit==="day")&&t.highlightTime?I.value.rows[I.value.rows.length-1].cells.map(D):null);function oe(L){L.eventSource="chart",o.exec("hotkey",L)}let ie;return e.onMounted(()=>{S.value&&(E.value=S.value.clientHeight,ie=new ResizeObserver(L=>{for(const U of L)E.value=U.target.clientHeight}),ie.observe(S.value))}),e.onUnmounted(()=>{ie?.disconnect()}),(L,U)=>e.withDirectives((e.openBlock(),e.createElementBlock("div",{class:"wx-chart",tabindex:"-1",ref_key:"chart",ref:S,onScroll:r,onWheel:te},[e.createVNode(Pt,{highlightTime:t.highlightTime},null,8,["highlightTime"]),e.unref(G).length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"wx-markers",style:e.normalizeStyle(`height:${B.value}px;`)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(G),M=>(e.openBlock(),e.createElementBlock("div",{key:M.id||M.left,class:e.normalizeClass("wx-marker "+(M.css||"")),style:e.normalizeStyle(`left:${M.left}px`)},[e.createElementVNode("div",Ft,e.toDisplayString(M.text),1)],6))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"wx-area",style:e.normalizeStyle(`width:${t.fullWidth}px;height:${B.value}px`)},[O.value?(e.openBlock(),e.createElementBlock("div",jt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,(M,x)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:x},[M?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(M.css),style:e.normalizeStyle(`width: ${M.width}px; left:${x*M.width}px`)},null,6)):e.createCommentVNode("",!0)],64))),128))])):e.createCommentVNode("",!0),e.createVNode(yt,{borders:t.cellBorders},null,8,["borders"]),e.unref(_).length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(e.unref(_),(M,x)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:M.id},[M.$y?(e.openBlock(),e.createElementBlock("div",{key:0,class:"wx-selected","data-id":e.unref(R.setID)(M.id),style:e.normalizeStyle(h.value[x])},null,12,At)):e.createCommentVNode("",!0)],64))),128)):e.createCommentVNode("",!0),e.createVNode(Ot,{readonly:t.readonly,taskTemplate:t.taskTemplate},null,8,["readonly","taskTemplate"])],4)],32)),[[e.unref(n),{keys:{arrowup:!0,arrowdown:!0},exec:M=>oe(M)}]])}}),Gt=re(Ut,[["__scopeId","data-v-def875eb"]]),qt=Object.assign({name:"GanttResizer"},{__name:"Resizer",props:e.mergeModels({position:{default:"after"},size:{default:4},dir:{default:"x"},onmove:{type:Function},compactMode:{},containerWidth:{default:0},leftThreshold:{default:50},rightThreshold:{default:50}},{value:{default:0},valueModifiers:{},display:{default:"all"},displayModifiers:{}}),emits:["update:value","update:display"],setup(l){const n=l,t=e.useModel(l,"value"),o=e.useModel(l,"display");function c(h){let B=0;n.position==="center"?B=n.size/2:n.position==="before"&&(B=n.size);const r={size:[n.size+"px","auto"],p:[h-B+"px","0px"],p2:["auto","0px"]};if(n.dir!=="x")for(let $ in r)r[$]=r[$].reverse();return r}let T=0,b;const m=e.ref(!1),y=e.ref(null);e.watchEffect(()=>{y.value===null&&t.value>0&&(y.value=t.value)});function w(h){return n.dir==="x"?h.clientX:h.clientY}function V(h){!n.compactMode&&(o.value==="grid"||o.value==="chart")||(T=w(h),b=t.value,m.value=!0,document.body.style.cursor=S.value,document.body.style.userSelect="none",window.addEventListener("mousemove",W),window.addEventListener("mouseup",d))}let _;function W(h){const B=b+w(h)-T;t.value=B;let r;B<=n.leftThreshold?r="chart":n.containerWidth-B<=n.rightThreshold?r="grid":r="all",o.value!==r&&(o.value=r),_&&clearTimeout(_),_=setTimeout(()=>n.onmove&&n.onmove(t.value),100)}function d(){document.body.style.cursor="",document.body.style.userSelect="",m.value=!1,window.removeEventListener("mousemove",W),window.removeEventListener("mouseup",d)}function C(){o.value="all",y.value!==null&&(t.value=y.value,n.onmove&&n.onmove(y.value))}function I(h){n.compactMode?o.value=o.value==="chart"?"grid":"chart":o.value==="grid"||o.value==="chart"?C():o.value=h==="left"?"chart":"grid"}function Y(){I("left")}function G(){I("right")}const E=e.computed(()=>c(t.value)),S=e.computed(()=>o.value!=="all"?"auto":n.dir==="x"?"ew-resize":"ns-resize");return(h,B)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["wx-resizer",`wx-resizer-${l.dir}`,`wx-resizer-display-${o.value}`,{"wx-resizer-active":m.value}]),onMousedown:V,style:e.normalizeStyle(`width:${E.value.size[0]}; height: ${E.value.size[1]}; cursor:${S.value};`)},[e.createElementVNode("div",{class:"wx-button-expand-box"},[e.createElementVNode("div",{class:"wx-button-expand-content wx-button-expand-left"},[e.createElementVNode("i",{class:"wxi-menu-left",onClick:Y})]),e.createElementVNode("div",{class:"wx-button-expand-content wx-button-expand-right"},[e.createElementVNode("i",{class:"wxi-menu-right",onClick:G})])]),B[0]||(B[0]=e.createElementVNode("div",{class:"wx-resizer-line"},null,-1))],38))}}),Yt=re(qt,[["__scopeId","data-v-206d8277"]]),Xt=650;function nt(l){let n;function t(){n=new ResizeObserver(c=>{for(let T of c)if(T.target===document.body){let b=T.contentRect.width<=Xt;l(b)}}),n.observe(document.body)}function o(){n&&(n.disconnect(),n=null)}return{observe:t,disconnect:o}}const Kt={tabindex:"0",class:"wx-layout"},Zt=Object.assign({name:"GanttLayout"},{__name:"Layout",props:e.mergeModels({taskTemplate:{},readonly:{},cellBorders:{},highlightTime:{}},{tableAPI:{},tableAPIModifiers:{}}),emits:["update:tableAPI"],setup(l){const n=f.asDirective(et.hotkeys),t=e.useModel(l,"tableAPI"),o=e.inject("gantt-store"),{_tasks:c,_scales:T,cellHeight:b,columns:m,scrollTop:y,undo:w}=o.getReactiveState(),V=f.subscribe(c),_=f.subscribe(T),W=f.subscribe(b),d=f.subscribe(m),C=f.subscribe(y),I=f.subscribe(w),Y=e.ref(!1),G=e.ref(0),E=e.ref(void 0),S=e.ref(void 0),h=e.ref(void 0),B=e.ref(null),r=e.ref("all");e.watchEffect(()=>{const x=nt(F);x.observe(),e.onWatcherCleanup(()=>{x.disconnect()})});let $=null;function F(x){x!==Y.value&&(Y.value=x,Y.value?($=r.value,r.value==="all"&&(r.value="grid")):(!$||$==="all")&&(r.value="all"))}const A=e.computed(()=>{let x;return d.value.every(H=>H.width&&!H.flexgrow)?x=d.value.reduce((H,j)=>H+parseInt(j.width),0):r.value==="chart"?x=parseInt(d.value.find(H=>H.id==="action")?.width)||50:x=440,x});e.watchEffect(()=>{G.value=A.value});const K=e.computed(()=>E.value-h.value),ne=e.computed(()=>_.value.width),le=e.computed(()=>V.value.length*W.value),te=e.computed(()=>_.value.height+le.value+K.value);e.watchEffect(()=>{let x;B.value&&(x=new ResizeObserver(D),x.observe(B.value)),e.onWatcherCleanup(()=>{x&&x.disconnect()})});function D(){o.exec("resize-chart",{width:E.value-G.value,height:S.value-_.value.height,scrollSize:K.value})}const O=e.ref(null);function oe(){o.exec("scroll-chart",{top:O.value.scrollTop})}function ie(){O.value&&C.value!==O.value.scrollTop&&(O.value.scrollTop=C.value)}e.watchEffect(()=>{C.value,ie()});let L;e.onMounted(()=>{O.value&&(L=new ResizeObserver(()=>{S.value=O.value?.offsetHeight,E.value=O.value?.offsetWidth}),L.observe(O.value),S.value=O.value.offsetHeight,E.value=O.value.offsetWidth)}),e.onUnmounted(()=>{L?.disconnect()});const U=e.ref(null);let M;return e.onMounted(()=>{U.value&&(M=new ResizeObserver(()=>{h.value=U.value?.offsetWidth}),M.observe(U.value),h.value=U.value.offsetWidth)}),e.onUnmounted(()=>{M?.disconnect()}),(x,H)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-gantt",ref_key:"ganttDiv",ref:O,onScroll:oe},[e.createElementVNode("div",{ref_key:"pseudoRowsDiv",ref:U,class:"wx-pseudo-rows",style:e.normalizeStyle(`height:${te.value}px;width:100%;`)},[e.createElementVNode("div",{class:"wx-stuck",style:e.normalizeStyle(`height:${S.value}px;width:${h.value}px;`)},[e.withDirectives((e.openBlock(),e.createElementBlock("div",Kt,[e.unref(d).length?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(kt,{display:r.value,"onUpdate:display":H[0]||(H[0]=j=>r.value=j),compactMode:Y.value,columnWidth:A.value,width:G.value,readonly:l.readonly,fullHeight:le.value,tableAPI:t.value,"onUpdate:tableAPI":H[1]||(H[1]=j=>t.value=j)},null,8,["display","compactMode","columnWidth","width","readonly","fullHeight","tableAPI"]),e.createVNode(Yt,{value:G.value,"onUpdate:value":H[2]||(H[2]=j=>G.value=j),display:r.value,"onUpdate:display":H[3]||(H[3]=j=>r.value=j),compactMode:Y.value,containerWidth:E.value},null,8,["value","display","compactMode","containerWidth"])],64)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"wx-content",ref_key:"chart",ref:B},[e.createVNode(Gt,{readonly:l.readonly,fullWidth:ne.value,fullHeight:le.value,taskTemplate:l.taskTemplate,cellBorders:l.cellBorders,highlightTime:l.highlightTime},null,8,["readonly","fullWidth","fullHeight","taskTemplate","cellBorders","highlightTime"])],512)])),[[e.unref(n),{keys:{"ctrl+c":!0,"ctrl+v":!0,"ctrl+x":!0,"ctrl+d":!0,backspace:!0,"ctrl+z":e.unref(I),"ctrl+y":e.unref(I)},exec:j=>{j.isInput||e.unref(o).exec("hotkey",j)}}]])],4)],4)],544))}}),Qt=re(Zt,[["__scopeId","data-v-b6d88a7d"]]);function Jt(l){return{year:"%Y",quarter:`${l("Q")} %Q`,month:"%M",week:`${l("Week")} %w`,day:"%M %j",hour:"%H:%i"}}function en(l,n){return typeof l=="function"?l:R.dateToString(l,n)}function lt(l,n){return l.map(({format:t,...o})=>({...o,format:en(t,n)}))}function tn(l,n){const t=Jt(n);for(let o in t)t[o]=R.dateToString(t[o],l);return t}function nn(l,n){if(!l||!l.length)return l;const t=R.dateToString("%d-%m-%Y",n);return l.map(o=>o.template?o:o.id==="start"||o.id==="end"?{...o,_template:c=>t(c),template:c=>t(c)}:o.id==="duration"?{...o,_template:c=>c,template:c=>c}:o)}function ln(l,n){return l.levels?{...l,levels:l.levels.map(t=>({...t,scales:lt(t.scales,n)}))}:l}const an=Object.assign({name:"GanttComponentsGantt"},{__name:"Gantt",props:{taskTemplate:{default:null},markers:{default:()=>[]},taskTypes:{default:()=>X.defaultTaskTypes},tasks:{default:()=>[]},selected:{default:()=>[]},activeTask:{default:null},links:{default:()=>[]},scales:{default:()=>[{unit:"month",step:1,format:"%F %Y"},{unit:"day",step:1,format:"%j"}]},columns:{default:()=>X.defaultColumns},start:{default:null},end:{default:null},lengthUnit:{default:"day"},durationUnit:{default:"day"},cellWidth:{default:100},cellHeight:{default:38},scaleHeight:{default:36},readonly:{type:Boolean,default:!1},cellBorders:{default:"full"},zoom:{type:[Boolean,Object,Array],default:!1},baselines:{type:[Boolean,Object],default:!1},rollups:{type:[Boolean,Object],default:!1},highlightTime:{type:Function,default:null},init:{type:Function,default:null},autoScale:{type:Boolean,default:!0},unscheduledTasks:{type:Boolean,default:!1},criticalPath:{default:null},schedule:{default:()=>({type:"forward"})},projectStart:{default:null},projectEnd:{default:null},calendar:{default:null},undo:{type:Boolean,default:!1},splitTasks:{type:Boolean,default:!1},summary:{default:null},slack:{type:Boolean,default:!1},_export:{type:Boolean,default:!1}},setup(l,{expose:n}){const t=l,o=e.useAttrs(),c=new X.DataStore(f.writable),T={...qe.en,...He.en};let b=e.inject("wx-i18n",null);b?b=b.extend(T,!0):b=R.locale(T),e.provide("wx-i18n",b);const{calendar:m}=b.getRaw(),y=e.computed(()=>{let D={zoom:ln(t.zoom,m),scales:lt(t.scales,m),columns:nn(t.columns,m),links:X.normalizeLinks(t.links),cellWidth:t.cellWidth};return D.zoom&&(D={...D,...X.normalizeZoom(D.zoom,tn(m,b.getGroup("gantt")),D.scales,t.cellWidth)}),D});e.watch(()=>[t.tasks,t.durationUnit,t.calendar],()=>{t._export||X.parseTaskDates(t.tasks,{durationUnit:t.durationUnit,splitTasks:t.splitTasks,calendar:t.calendar})},{immediate:!0,flush:"pre"});let w=c.in;const V=/-/g;let _=new at.EventBusRouter((D,O)=>{const oe="on"+D.replace(V,"");o[oe]&&o[oe](O)});w.setNext(_);const W=e.ref(void 0),d=e.ref(null);e.watchEffect(()=>{t.calendar&&t.tasks&&(d.value=(D,O)=>O==="day"&&!t.calendar.getDayHours(D)||O==="hour"&&!t.calendar.getDayHours(D)?"wx-weekend":"")});const C=e.computed(()=>d.value||t.highlightTime),I=c.getState.bind(c),Y=c.getReactive.bind(c),G=()=>({data:c}),E=w.exec,S=D=>_=_.setNext(D),h=w.intercept.bind(w),B=w.on.bind(w),r=w.detach.bind(w),$=D=>c.getTask(D),F=()=>c.serialize(),A=D=>D?new Promise(O=>setTimeout(()=>O(W.value),1)):W.value,K=()=>c.getHistory(),ne={getState:I,getReactiveState:Y,getStores:G,exec:E,setNext:S,intercept:h,on:B,detach:r,getTable:A,getTask:$,serialize:F,getHistory:K};n({getState:I,getReactiveState:Y,getStores:G,exec:E,setNext:S,intercept:h,on:B,detach:r,getTable:A,getTask:$,serialize:F,getHistory:K}),e.provide("gantt-store",{getReactiveState:c.getReactive.bind(c),exec:w.exec.bind(w),getTask:c.getTask.bind(c)});let le=!0;const te=()=>{const D=y.value;c.init({tasks:t.tasks,links:D.links,start:t.start,columns:D.columns,end:t.end,lengthUnit:t.lengthUnit,cellWidth:D.cellWidth,cellHeight:t.cellHeight,scaleHeight:t.scaleHeight,scales:D.scales,taskTypes:t.taskTypes,zoom:D.zoom,selected:t.selected,activeTask:t.activeTask,baselines:t.baselines,rollups:t.rollups===!0?{type:"closest"}:t.rollups,autoScale:t.autoScale,unscheduledTasks:t.unscheduledTasks,markers:t.markers,durationUnit:t.durationUnit,criticalPath:t.criticalPath,schedule:t.schedule,projectStart:t.projectStart,projectEnd:t.projectEnd,calendar:t.calendar,slack:t.slack,undo:t.undo,_weekStart:m.weekStart,splitTasks:t.splitTasks,summary:t.summary}),le&&t.init&&(t.init(ne),le=!1)};return e.watchEffect(te),(D,O)=>(e.openBlock(),e.createBlock(Qt,{taskTemplate:t.taskTemplate,readonly:t.readonly,cellBorders:t.cellBorders,highlightTime:C.value,tableAPI:W.value,"onUpdate:tableAPI":O[0]||(O[0]=oe=>W.value=oe)},null,8,["taskTemplate","readonly","cellBorders","highlightTime","tableAPI"]))}}),on=Object.assign({name:"GanttToolbar"},{__name:"Toolbar",props:{api:{default:null},items:{default:()=>[]}},setup(l){const n=l;let t=e.inject("wx-i18n",null);t||(t=R.locale(He.en),e.provide("wx-i18n",t));const o=e.inject("wx-i18n").getGroup("gantt"),c=f.subscribeLater(()=>n.api?.getReactiveState()?._selected),T=f.subscribeLater(()=>n.api?.getReactiveState()?.undo),b=f.subscribeLater(()=>n.api?.getReactiveState()?.history),m=f.subscribeLater(()=>n.api?.getReactiveState()?.splitTasks),y=["undo","redo"],w=e.computed(()=>{const _=X.getToolbarButtons({undo:!0,splitTasks:!0});return(n.items.length?n.items:X.getToolbarButtons({undo:T().value,splitTasks:m().value})).map(d=>(d={...d,disabled:!1},d.handler=X.isHandledAction(_,d.id)?C=>X.handleAction(n.api,C.id,null,o):d.handler,d.text&&(d.text=o(d.text)),d.menuText&&(d.menuText=o(d.menuText)),d))}),V=e.computed(()=>{const _=c().value,W=[];return w.value.forEach(d=>{const C=d.id;if(C==="add-task")W.push(d);else if(y.includes(C))y.includes(C)&&W.push({...d,disabled:d.isDisabled(b().value)});else{if(!_?.length||!n.api)return;W.push({...d,disabled:d.isDisabled&&_.some(I=>d.isDisabled(I,n.api.getState()))})}}),W.filter((d,C)=>{if(n.api&&d.isHidden)return!_.some(I=>d.isHidden(I,n.api.getState()));if(d.comp==="separator"){const I=W[C+1];if(!I||I.comp==="separator")return!1}return!0})});return(_,W)=>(e.openBlock(),e.createBlock(e.unref(ot.Toolbar),{items:V.value},null,8,["items"]))}}),sn=["oncontextmenu"],rn={__name:"ContextMenu",props:{options:{default:()=>[]},api:{default:null},resolver:{default:null},filter:{default:null},at:{default:"point"},onclick:{type:Function},css:{}},setup(l,{expose:n}){const t=l;let o=null,c=e.inject("wx-i18n",null);c||(c=R.locale({...He.en,...qe.en}),e.provide("wx-i18n",c));const T=e.inject("wx-i18n").getGroup("gantt"),b=f.subscribeLater(()=>t.api?.getReactiveState()?.taskTypes),m=f.subscribeLater(()=>t.api?.getReactiveState()?.selected),y=f.subscribeLater(()=>t.api?.getReactiveState()?._selected),w=f.subscribeLater(()=>t.api?.getReactiveState()?.splitTasks),V=f.subscribeLater(()=>t.api?.getReactiveState()?.summary),_=e.computed(()=>({splitTasks:w().value,taskTypes:b().value,summary:V().value})),W=e.computed(()=>X.getMenuOptions(_.value));function d(){const r=t.options.length?t.options:X.getMenuOptions(_.value);return C(r)}function C(r){return r.map($=>($={...$},$.text&&($.text=T($.text)),$.subtext&&($.subtext=T($.subtext)),$.data&&($.data=C($.data)),$))}function I(r,$){let F=r?t.api.getTask(r):null;if(t.resolver){const A=t.resolver(r,$);F=A===!0?F:A}if(F){const A=R.locateID($.target,"data-segment");A!==null?o={id:F.id,segmentIndex:A}:o=F.id,m().value.includes(F.id)||t.api.exec("select-task",{id:F.id})}return F}function Y(r){const $=r.action;$&&(X.isHandledAction(W.value,$.id)&&X.handleAction(t.api,$.id,o,T),t.onclick&&t.onclick(r))}function G(r,$){const F=y().value?.length?y().value:$?[$]:[];let A=t.filter?F.every(K=>t.filter(r,K)):!0;if(A&&(r.isHidden&&(A=!F.some(K=>r.isHidden(K,t.api.getState(),o))),r.isDisabled)){const K=F.some(ne=>r.isDisabled(ne,t.api.getState(),o));r.disabled=K}return A}let E=!1;e.watchEffect(()=>{t.api&&!E&&(E=!0,t.api.on("scroll-chart",()=>h.value.show()),t.api.on("drag-task",()=>h.value.show()))});const S=e.computed(()=>d()),h=e.ref(null);function B(r,$){h.value.show(r,$)}return n({show:B}),(r,$)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(st.ContextMenu),{filter:G,options:S.value,dataKey:"id",resolver:I,onclick:Y,css:l.css,at:l.at,ref_key:"menu",ref:h},null,8,["options","css","at"]),e.createElementVNode("span",{oncontextmenu:h.value?.show,"data-menu-ignore":"true"},[e.renderSlot(r.$slots,"default",{},void 0,!0)],8,sn)],64))}},cn=re(rn,[["__scopeId","data-v-463453b1"]]),un={key:0,class:"wx-links"},dn={class:"wx-cell"},fn={class:"wx-task-name"},mn={key:0,class:"wx-cell wx-link-lag"},pn={class:"wx-cell"},vn={class:"wx-wrapper"},hn={class:"wx-cell"},gn=["onclick"],kn=Object.assign({name:"GanttEditorLinks"},{__name:"Links",props:{api:{},autoSave:{},onlinkschange:{type:Function},onchange:{type:Function},comp:{type:String},label:{type:String},isHidden:{type:Function},setter:{type:Function},getter:{type:Function},hidden:{type:Boolean},error:{type:String},value:{type:String}},setup(l){const n=e.inject("wx-i18n").getGroup("gantt"),t=l;e.provide("wx-input-id",null);const{activeTask:o,_activeTask:c,_links:T,schedule:b,unscheduledTasks:m}=t.api.getReactiveState(),y=f.subscribe(o),w=f.subscribe(c),V=f.subscribe(T),_=f.subscribe(b),W=f.subscribe(m),d=e.ref();e.watchEffect(()=>{d.value=C()});function C(){if(y.value){const E=V.value.filter(h=>h.target===y.value).map(h=>({link:h,task:t.api.getTask(h.source)})),S=V.value.filter(h=>h.source===y.value).map(h=>({link:h,task:t.api.getTask(h.target)}));return[{title:n("Predecessors"),data:E},{title:n("Successors"),data:S}]}}const I=[{id:"e2s",label:n("End-to-start")},{id:"s2s",label:n("Start-to-start")},{id:"e2e",label:n("End-to-end")},{id:"s2e",label:n("Start-to-end")}];function Y(E){t.autoSave?t.api.exec("delete-link",{id:E}):(d.value=d.value.map(S=>({...S,data:S.data.filter(h=>h.link.id!==E)})),t.onlinkschange?.({id:E,action:"delete-link",data:{id:E}}))}function G(E,S){t.autoSave?t.api.exec("update-link",{id:E,link:S}):(d.value=d.value.map(h=>({...h,data:h.data.map(B=>B.link.id===E?{...B,link:{...B.link,...S}}:B)})),t.onlinkschange?.({id:E,action:"update-link",data:{id:E,link:S}}))}return(E,S)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,h=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:h.title},[h.data.length?(e.openBlock(),e.createElementBlock("div",un,[e.createVNode(e.unref(se.Field),{label:h.title,position:"top"},{default:e.withCtx(()=>[e.createElementVNode("table",null,[e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.data,B=>(e.openBlock(),e.createElementBlock("tr",{key:B.link.id},[e.createElementVNode("td",dn,[e.createElementVNode("div",fn,e.toDisplayString(B.task.text||""),1)]),e.unref(_)?.auto&&B.link.type==="e2s"?(e.openBlock(),e.createElementBlock("td",mn,[e.createVNode(e.unref(se.Text),{type:"number",placeholder:e.unref(n)("Lag"),value:B.link.lag,disabled:e.unref(W)&&e.unref(w).unscheduled,onchange:r=>{r.input||G(B.link.id,{lag:r.value})}},null,8,["placeholder","value","disabled","onchange"])])):e.createCommentVNode("",!0),e.createElementVNode("td",pn,[e.createElementVNode("div",vn,[e.createVNode(e.unref(se.Combo),{value:B.link.type,placeholder:e.unref(n)("Select link type"),options:I,onchange:r=>G(B.link.id,{type:r.value})},{default:e.withCtx(({option:r})=>[e.createTextVNode(e.toDisplayString(r.label),1)]),_:1},8,["value","placeholder","onchange"])])]),e.createElementVNode("td",hn,[e.createElementVNode("i",{class:"wxi-delete wx-delete-icon",onclick:()=>Y(B.link.id),role:"button"},null,8,gn)])]))),128))])])]),_:2},1032,["label"])])):e.createCommentVNode("",!0)],64))),128))}}),yn=re(kn,[["__scopeId","data-v-94a2215a"]]),xn={class:"date-time-controll"},bn={__name:"DateTimePicker",props:{value:{},time:{},format:{},onchange:{type:Function}},setup(l){const n=l,t=e.computed(()=>{const{value:c,time:T,format:b,onchange:m,...y}=n;return y});function o(c){const T=new Date(c.value);T.setHours(n.value.getHours()),T.setMinutes(n.value.getMinutes()),n.onchange?.({value:T})}return(c,T)=>(e.openBlock(),e.createElementBlock("div",xn,[e.createVNode(e.unref(se.DatePicker),e.mergeProps(t.value,{value:l.value,onchange:o,format:l.format,buttons:["today"],clear:!1}),null,16,["value","format"]),l.time?(e.openBlock(),e.createBlock(e.unref(se.TimePicker),{key:0,value:l.value,onchange:l.onchange,format:l.format},null,8,["value","onchange","format"])):e.createCommentVNode("",!0)]))}},wn=re(bn,[["__scopeId","data-v-1f9dfea2"]]),Bn=Object.assign({name:"GanttEditor"},{__name:"Editor",props:{api:{default:null},items:{default:()=>[]},css:{default:""},layout:{default:"default"},readonly:{type:Boolean,default:!1},placement:{default:"sidebar"},bottomBar:{type:[Boolean,Object],default:!0},topBar:{type:[Boolean,Object],default:!0},autoSave:{type:Boolean,default:!0},focus:{type:Boolean,default:!1},hotkeys:{default:()=>({})}},setup(l){ve.registerEditorItem("select",se.RichSelect),ve.registerEditorItem("date",wn),ve.registerEditorItem("twostate",se.TwoState),ve.registerEditorItem("slider",se.Slider),ve.registerEditorItem("counter",se.Counter),ve.registerEditorItem("links",yn),ve.registerEditorItem("checkbox",se.Checkbox);const n=l;let t=e.inject("wx-i18n",null);t||(t=R.locale({...He.en,...qe.en}),e.provide("wx-i18n",t));const o=t.getGroup("gantt"),c=t.getRaw(),T=c.gantt?.dateFormat||c.formats?.dateFormat,b=R.dateToString(T,c.calendar),m=f.subscribeLater(()=>n.api?.getReactiveState()?._activeTask),y=f.subscribeLater(()=>n.api?.getReactiveState()?.activeTask),w=f.subscribeLater(()=>n.api?.getReactiveState()?.unscheduledTasks),V=f.subscribeLater(()=>n.api?.getReactiveState()?.rollups),_=f.subscribeLater(()=>n.api?.getReactiveState()?.summary),W=f.subscribeLater(()=>n.api?.getReactiveState()?.links),d=f.subscribeLater(()=>n.api?.getReactiveState()?.taskTypes),C=f.subscribeLater(()=>n.api?.getReactiveState()?.undo),I=f.subscribeLater(()=>n.api?.getReactiveState()?.segmentIndex),Y=f.subscribeLater(()=>n.api?.getReactiveState()?.isSegment),G=e.computed(()=>{if(n.topBar===!0&&!n.readonly){const p=[{comp:"icon",icon:"wxi-close",id:"close"},{comp:"spacer"},{comp:"button",type:"danger",text:o("Delete"),id:"delete"}];return n.autoSave?{items:p}:{items:[...p,{comp:"button",type:"primary",text:o("Save"),id:"save"}]}}return n.topBar}),E=e.ref(!1),S=e.computed(()=>E.value?"wx-full-screen":"");e.watchEffect(p=>{const N=nt(h);N.observe(),p(()=>{N.disconnect()})});function h(p){E.value=p}const B=e.computed(()=>X.getEditorItems({unscheduledTasks:w().value,rollups:V().value,summary:_().value,taskTypes:d().value})),r=e.ref({}),$=e.ref(null),F=e.ref(void 0),A=e.ref(null),K=e.computed(()=>{const p=m().value;if(!p)return null;let N;if(Y().value&&p.segments?N={...p.segments[I().value]}:N={...p},n.readonly){let P={parent:N.parent};return B.value.forEach(({key:z,comp:ae})=>{if(ae!=="links"){const Z=N[z];ae==="date"&&Z instanceof Date?P[z]=b(Z):ae==="slider"&&z==="progress"?P[z]=`${Z}%`:P[z]=Z}}),P}return N||null});e.watch(K,p=>{F.value=p}),e.watch(y,()=>{r.value={},A.value=null,$.value=null});const ne=e.computed(()=>{let p=n.items.length?n.items:B.value;return p=te(p,F.value),F.value?p.filter(N=>!N.isHidden||!N.isHidden(F.value,n.api.getState())):p}),le=e.computed(()=>ne.value.map(p=>p.key));function te(p,N){return p.map(P=>{const z={...P};if(P.config&&(z.config={...z.config}),z.comp==="links"&&n.api&&(z.api=n.api,z.autoSave=n.autoSave,z.onlinkschange=D),z.comp==="select"&&z.key==="type"){const ae=z.options??[];z.options=ae.map(Z=>({...Z,label:o(Z.label)}))}return z.comp==="slider"&&z.key==="progress"&&(z.labelTemplate=ae=>`${o(z.label)} ${ae}%`),z.label&&(z.label=o(z.label)),z.config?.placeholder&&(z.config.placeholder=o(z.config.placeholder)),N&&(z.isDisabled&&z.isDisabled(N,n.api.getState())?z.disabled=!0:delete z.disabled),z})}function D({id:p,action:N,data:P}){r.value[p]={action:N,data:P}}function O(){for(let p in r.value)if(W().value.byId(p)){const{action:N,data:P}=r.value[p];n.api.exec(N,P)}}function oe(){const p=y().value,N=m().value,P=I().value,z=p.id||p;if(Y().value){if(N.segments){const ae=N.segments.filter((Z,fe)=>fe!==P);n.api.exec("update-task",{id:z,task:{segments:ae}})}}else n.api.exec("delete-task",{id:z})}function ie(){n.api.exec("show-editor",{id:null})}function L(p){const{item:N,changes:P}=p;if(N.id==="delete"&&oe(),N.id==="save")if(!P.length)O();else return;N.comp&&ie()}function U(p){let{update:N,key:P,input:z}=p;if(z&&($.value=!0),p.update=M({...N},P,z),!n.autoSave)F.value=p.update;else if(!A.value&&!z){const ae=ne.value.find(ke=>ke.key===P),Z=N[P];(!ae.validation||ae.validation(Z))&&(!ae.required||Z)&&j(p.update)}}function M(p,N,P){return w().value&&p.type==="summary"&&(p.unscheduled=!1),X.prepareEditTask(p,n.api.getState(),N),P||($.value=!1),p}function x(p){n.autoSave||j(p.values)}function H(p){A.value=p.errors}function j(p){const N=y().value;p={...p,unscheduled:w().value&&p.unscheduled&&p.type!=="summary"},delete p.links,delete p.data,(le.value.indexOf("duration")===-1||p.segments&&!p.duration)&&delete p.duration;const P={id:N.id||N,task:p,...Y().value&&{segmentIndex:I().value}};n.autoSave&&$.value&&(P.inProgress=$.value),n.api.exec("update-task",P),n.autoSave||O()}const de=e.computed(()=>C().value?{"ctrl+z":p=>{p.preventDefault(),n.api.exec("undo")},"ctrl+y":p=>{p.preventDefault(),n.api.exec("redo")}}:{});return(p,N)=>K.value?(e.openBlock(),e.createBlock(e.unref(se.Locale),{key:0},{default:e.withCtx(()=>[e.createVNode(e.unref(ve.Editor),{css:`wx-gantt-editor ${S.value} ${l.css}`,items:ne.value,values:K.value,topBar:G.value,bottomBar:l.bottomBar,placement:l.placement,layout:l.layout,readonly:l.readonly,autoSave:l.autoSave,focus:l.focus,onaction:L,onsave:x,onvalidation:H,onchange:U,hotkeys:l.hotkeys&&{...de.value,...l.hotkeys}},null,8,["css","items","values","topBar","bottomBar","placement","layout","readonly","autoSave","focus","hotkeys"])]),_:1})):e.createCommentVNode("",!0)}}),Tn=re(Bn,[["__scopeId","data-v-004073c2"]]),Sn={__name:"HeaderMenu",props:{columns:{default:null},api:{}},setup(l){const n=l,t=e.computed(()=>n.api?.getTable());return(o,c)=>(e.openBlock(),e.createBlock(e.unref(tt.HeaderMenu),{api:t.value,columns:l.columns},{default:e.withCtx(()=>[o.$slots.default?e.renderSlot(o.$slots,"default",{key:0}):e.createCommentVNode("",!0)]),_:3},8,["api","columns"]))}},$n={key:1,class:"wx-gantt-tooltip-text"},En=300,_n=Object.assign({name:"GanttWidgetsTooltip"},{__name:"Tooltip",props:{api:{},content:{}},setup(l){const n=l,t=e.ref(null),o=e.ref({}),c=e.ref({}),T=e.ref(null),b=e.ref({});function m(d){const C=d;for(;d;){if(d.getAttribute){const I=R.getID(d,"data-tooltip-id"),Y=R.getID(d,"data-tooltip-at"),G=d.getAttribute("data-tooltip");if(I||G){const E=R.locateID(C,"data-segment");return{id:I,tooltip:G,target:d,at:Y,segment:E}}}d=d.parentNode}return{id:null,tooltip:null,target:null,at:null,segment:null}}e.watchEffect(()=>{if(T.value){const d=T.value.getBoundingClientRect();d.right>=o.value.right&&(b.value.left=o.value.width-d.width-5),d.bottom>=o.value.bottom&&(b.value.top-=d.bottom-o.value.bottom+2)}});let y;const w=d=>{clearTimeout(y),y=setTimeout(()=>{d()},En)};function V(d){let{id:C,tooltip:I,target:Y,at:G,segment:E}=m(d.target);if(b.value=null,c.value={},!I)if(C)I=W(C,E);else{clearTimeout(y);return}w(()=>{C&&(c.value={data:_(C)},E!=null&&(c.value.segmentIndex=E));const S=Y.getBoundingClientRect();o.value=t.value.getBoundingClientRect();let h,B;G==="left"?(h=S.top+5-o.value.top,B=S.right+5-o.value.left):(h=S.top+S.height-o.value.top,B=d.clientX-o.value.left),b.value={top:h,left:B,text:I}})}function _(d){return n.api?.getTask(d)||null}function W(d,C){const I=_(d);return C!==null&&I?.segments?I.segments[C]?.text||"":I?.text||""}return(d,C)=>(e.openBlock(),e.createElementBlock("div",{class:"wx-tooltip-area",ref_key:"area",ref:t,onMousemove:V},[b.value&&(b.value.text||l.content)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"wx-gantt-tooltip",ref_key:"tooltipNode",ref:T,style:e.normalizeStyle(`top:${b.value.top}px;left:${b.value.left}px`)},[l.content?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(l.content),e.normalizeProps(e.mergeProps({key:0},c.value)),null,16)):b.value.text?(e.openBlock(),e.createElementBlock("div",$n,e.toDisplayString(b.value.text),1)):e.createCommentVNode("",!0)],4)):e.createCommentVNode("",!0),e.renderSlot(d.$slots,"default",{},void 0,!0)],544))}}),Cn=re(_n,[["__scopeId","data-v-6476f951"]]),In=Object.assign({name:"GanttThemesWillow"},{__name:"Willow",props:{fonts:{type:Boolean,default:!0}},setup(l){const n=l;return(t,o)=>t.$slots.default?(e.openBlock(),e.createBlock(e.unref(se.Willow),{key:0,fonts:n.fonts},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default",{},void 0,!0)]),_:3},8,["fonts"])):(e.openBlock(),e.createBlock(e.unref(se.Willow),{key:1,fonts:n.fonts},null,8,["fonts"]))}}),Ln=re(In,[["__scopeId","data-v-0c03ac4a"]]),zn={__name:"WillowDark",props:{fonts:{type:Boolean,default:!0}},setup(l){const n=l;return(t,o)=>t.$slots.default?(e.openBlock(),e.createBlock(e.unref(se.WillowDark),{key:0,fonts:n.fonts},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default")]),_:3},8,["fonts"])):(e.openBlock(),e.createBlock(e.unref(se.WillowDark),{key:1,fonts:n.fonts},null,8,["fonts"]))}},Dn=it.version;Object.defineProperty(exports,"defaultColumns",{enumerable:!0,get:()=>X.defaultColumns});Object.defineProperty(exports,"defaultEditorItems",{enumerable:!0,get:()=>X.defaultEditorItems});Object.defineProperty(exports,"defaultMenuOptions",{enumerable:!0,get:()=>X.defaultMenuOptions});Object.defineProperty(exports,"defaultTaskTypes",{enumerable:!0,get:()=>X.defaultTaskTypes});Object.defineProperty(exports,"defaultToolbarButtons",{enumerable:!0,get:()=>X.defaultToolbarButtons});Object.defineProperty(exports,"getEditorItems",{enumerable:!0,get:()=>X.getEditorItems});Object.defineProperty(exports,"getMenuOptions",{enumerable:!0,get:()=>X.getMenuOptions});Object.defineProperty(exports,"getToolbarButtons",{enumerable:!0,get:()=>X.getToolbarButtons});Object.defineProperty(exports,"registerScaleUnit",{enumerable:!0,get:()=>X.registerScaleUnit});Object.defineProperty(exports,"registerEditorItem",{enumerable:!0,get:()=>ve.registerEditorItem});exports.ContextMenu=cn;exports.Editor=Tn;exports.Gantt=an;exports.HeaderMenu=Sn;exports.Toolbar=on;exports.Tooltip=Cn;exports.Willow=Ln;exports.WillowDark=zn;exports.version=Dn;
|
package/dist/index.es.js
CHANGED
|
@@ -13,7 +13,7 @@ import { Toolbar as kl } from "@svar-ui/vue-toolbar";
|
|
|
13
13
|
import { ContextMenu as wl } from "@svar-ui/vue-menu";
|
|
14
14
|
import { registerEditorItem as De, Editor as bl } from "@svar-ui/vue-editor";
|
|
15
15
|
import { registerEditorItem as wa } from "@svar-ui/vue-editor";
|
|
16
|
-
const Tl = "2.6.
|
|
16
|
+
const Tl = "2.6.1", $l = {
|
|
17
17
|
version: Tl
|
|
18
18
|
};
|
|
19
19
|
function _l(l, t, e) {
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svar-ui/vue-gantt",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.1",
|
|
4
4
|
"description": "SVAR Vue Gantt library",
|
|
5
5
|
"productTag": "gantt",
|
|
6
|
+
"productTrial": true,
|
|
6
7
|
"type": "module",
|
|
7
8
|
"license": "MIT",
|
|
8
9
|
"scripts": {
|
|
@@ -36,8 +37,8 @@
|
|
|
36
37
|
],
|
|
37
38
|
"dependencies": {
|
|
38
39
|
"@svar-ui/core-locales": "2.5.0",
|
|
39
|
-
"@svar-ui/gantt-locales": "2.6.
|
|
40
|
-
"@svar-ui/gantt-store": "2.6.
|
|
40
|
+
"@svar-ui/gantt-locales": "2.6.1",
|
|
41
|
+
"@svar-ui/gantt-store": "2.6.1",
|
|
41
42
|
"@svar-ui/grid-store": "2.6.0",
|
|
42
43
|
"@svar-ui/lib-dom": "0.12.1",
|
|
43
44
|
"@svar-ui/lib-state": "1.9.6",
|