wx-gantt-store
Version:
1 lines • 56.2 kB
JavaScript
let lt=new Date().valueOf();const ht=()=>lt++;function ft(){return"temp://"+lt++}class mt{constructor(t){this._data=t,this._pool=new Map;for(let e=0;e<t.length;e++){const a=t[e];this._pool.set(a.id,a)}}add(t){t={id:ht(),...t},this._data.push(t),this._pool.set(t.id,t)}update(t,e){const a=this._data.findIndex(s=>s.id==t),r={...this._data[a],...e};this._data[a]=r,this._pool.set(r.id,r)}remove(t){this._data=this._data.filter(e=>e.id!=t),this._pool.delete(t)}filter(t){this._data=this._data.filter(e=>{const a=t(e);return a||this._pool.delete(e.id),a})}byId(t){return this._pool.get(t)}map(t){return this._data.map(t)}forEach(t){this._data.forEach(t)}}class Gt{constructor(t){const e={id:0,$level:0,data:[],parent:null},a=new Map;a.set(0,e),this._pool=a,t&&t.length&&this.parse(t,0)}parse(t,e){const a=this._pool;for(let s=0;s<t.length;s++){const i=t[s];i.parent=i.parent||e,i.data=null,a.set(i.id,i)}for(let s=0;s<t.length;s++){const i=t[s],o=a.get(i.parent);o&&(o.data||(o.data=[]),o.data.push(i))}const r=a.get(e);J(r.data,r.$level+1)}add(t,e){this._pool.set(t.id,t);const a=this._pool.get(t.parent||0);t.$level=a.$level+1,a.data?e===-1?a.data.push(t):a.data.splice(e,-1,t):a.data=[t]}addAfter(t,e){if(!e)return this.add(t,-1);const a=this.byId(e),r=this.byId(a.parent),s=r.data.indexOf(a)+1;t.parent=r.id,t.$level=r.$level+1,this.add(t,s)}remove(t){const e=this._pool.get(t);this._remove(e);const a=this._pool.get(e.parent);a.data=a.data.filter(r=>r.id!=t),this._clearBranch(a)}_remove(t){t.data&&t.data.forEach(e=>this._remove(e)),this._pool.delete(t.id)}update(t,e){let a=this._pool.get(t);const r=this._pool.get(a.parent),s=r.data.indexOf(a);a={...a,...e},r.data[s]=a,this._pool.set(a.id,a)}move(t,e,a){const r=this._pool.get(t),s=e==="child",i=this._pool.get(a),o=i.$level+(s?1:0);if(!r||!i)return;const c=this._pool.get(r.parent),u=s?i:this._pool.get(i.parent);u.data||(u.data=[]);const d=c.data.indexOf(r);c.data.splice(d,1);const h=s?u.data.length:u.data.indexOf(i)+(e==="after"?1:0);if(u.data.splice(h,-1,r),c===u&&d===h)return null;r.parent=u.id,r.$level!==o&&J([r],o),this._clearBranch(c)}_clearBranch(t){t.data&&!t.data.length&&(t.open&&delete t.open,t.data=null)}toArray(){const t=[],e=this._pool.get(0).data;return e&>(e,t),t}byId(t){return this._pool.get(t)}getBranch(t){return this._pool.get(t).data}forEach(t){this._pool.forEach((e,a)=>{a!==0&&t(e)})}eachChild(t,e){const a=this.byId(e);!a||!a.data||a.data.forEach((r,s)=>{t(this.byId(r.id),s),this.eachChild(t,r.id)})}}function gt(n,t){n.forEach(e=>{t.push(e),e.open===!0&>(e.data,t)})}function J(n,t){for(let e=0;e<n.length;e++){const a=n[e];a.$level=t,a.data&&J(a.data,t+1)}}const pt=2;class Jt{constructor(t){t&&(this._writable=t.writable,this._async=t.async),this._values={},this._state={}}setState(t,e=0){const a={};return this._wrapProperties(t,this._state,this._values,"",a,e),a}getState(){return this._values}getReactive(){return this._state}_wrapProperties(t,e,a,r,s,i){for(const o in t){const c=e[o],u=a[o],d=t[o];if(c&&(u===d&&typeof d!="object"||d instanceof Date&&u instanceof Date&&u.getTime()===d.getTime()))continue;const h=r+(r?".":"")+o;c?(c.__parse(d,h,s,i)&&(a[o]=d),i&pt?s[h]=c.__trigger:c.__trigger()):(d&&d.__reactive?e[o]=this._wrapNested(d,d,h,s):e[o]=this._wrapWritable(d),a[o]=d),s[h]=s[h]||null}}_wrapNested(t,e,a,r){const s=this._wrapWritable(t);return this._wrapProperties(t,s,e,a,r,0),s.__parse=(i,o,c,u)=>(this._wrapProperties(i,s,e,o,c,u),!1),s}_wrapWritable(t){const e=[],a=function(){for(let r=0;r<e.length;r++)e[r](t)};return{subscribe:r=>(e.push(r),this._async?setTimeout(r,1,t):r(t),()=>{const s=e.indexOf(r);s>=0&&e.splice(s,1)}),__trigger:()=>{e.length&&(this._async?setTimeout(a,1):a())},__parse:function(r){return t=r,!0}}}}class Rt{constructor(t,e,a,r){typeof t=="function"?this._setter=t:this._setter=t.setState.bind(t),this._routes=e,this._parsers=a,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(s=>{s.in.forEach(i=>{const o=this._triggers.get(i)||[];o.push(s),this._triggers.set(i,o)}),s.out.forEach(i=>{const o=this._sources.get(i)||{};s.in.forEach(c=>o[c]=!0),this._sources.set(i,o)})}),this._routes.forEach(s=>{s.length=Math.max(...s.in.map(i=>yt(i,this._sources,1)))}),this._bus=r}init(t){const e={};for(const a in t)if(this._prev[a]!==t[a]){const r=this._parsers[a];e[a]=r?r(t[a]):t[a]}this._prev=this._prev?{...this._prev,...t}:{...t},this.setState(e),this._bus&&this._bus.exec("init-state",e)}setStateAsync(t){const e=this._setter(t,pt);return this._async?Object.assign(this._async.signals,e):this._async={signals:e,timer:setTimeout(this._applyState.bind(this),1)},e}_applyState(){const t=this._async;if(t){this._async=null,this._triggerUpdates(t.signals,[]);for(const e in t.signals){const a=t.signals[e];a&&a()}}}setState(t,e=[]){const a=this._setter(t);return this._triggerUpdates(a,e),a}_triggerUpdates(t,e){const a=Object.keys(t),r=!e.length;e=e||[];for(let s=0;s<a.length;s++){const i=a[s],o=this._triggers.get(i);o&&o.forEach(c=>{e.indexOf(c)==-1&&e.push(c)})}r&&this._execNext(e)}_execNext(t){for(;t.length;){t.sort((a,r)=>a.length<r.length?1:-1);const e=t[t.length-1];t.splice(t.length-1),e.exec(t)}}}function yt(n,t,e){const a=t.get(n);if(!a)return e;const r=Object.keys(a).map(s=>yt(s,t,e+1));return Math.max(...r)}class Kt{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(t,e,a){let r=this._handlers[t];r?a&&a.intercept?r.unshift(e):r.push(e):r=this._handlers[t]=[e],a&&a.tag&&this._tag.set(e,a.tag)}intercept(t,e,a){this.on(t,e,{...a,intercept:!0})}detach(t){for(const e in this._handlers){const a=this._handlers[e];for(let r=a.length-1;r>=0;r--)this._tag.get(a[r])===t&&a.splice(r,1)}}async exec(t,e){const a=this._handlers[t];if(a)for(let r=0;r<a.length;r++){const s=a[r](e);if(s===!1||s&&s.then&&await s===!1)return}return this._nextHandler&&await this._nextHandler.exec(t,e),e}setNext(t){return this._nextHandler=t}}function Vt(n,t){return n.sort(ee(t))}function Zt(n,t){return typeof n=="string"?n.localeCompare(t,void 0,{numeric:!0}):typeof n=="object"?n.getTime()-t.getTime():(n??0)-(t??0)}function te(n,t){return typeof n=="string"?-n.localeCompare(t,void 0,{numeric:!0}):typeof t=="object"?t.getTime()-n.getTime():(t??0)-(n??0)}function ee({key:n,order:t}){const e=t==="asc"?Zt:te;return(a,r)=>e(a[n],r[n])}function y(n){const t=Object.prototype.toString.call(n);return n instanceof Date||typeof n=="object"&&t==="[object Date]"?new n.constructor(+n):typeof n=="number"||t==="[object Number]"||typeof n=="string"||t==="[object String]"?new Date(n):new Date(NaN)}function S(n,t){return n instanceof Date?new n.constructor(t):new Date(t)}function wt(n,t){const e=y(n);return isNaN(t)?S(n,NaN):(t&&e.setDate(e.getDate()+t),e)}function R(n,t){const e=y(n);if(isNaN(t))return S(n,NaN);if(!t)return e;const a=e.getDate(),r=S(n,e.getTime());r.setMonth(e.getMonth()+t+1,0);const s=r.getDate();return a>=s?r:(e.setFullYear(r.getFullYear(),r.getMonth(),a),e)}function ne(n,t){const e=+y(n);return S(n,e+t)}const B=6048e5,ae=864e5,re=6e4,kt=36e5;function se(n,t){return ne(n,t*kt)}let ie={};function j(){return ie}function W(n,t){const e=j(),a=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??e.weekStartsOn??e.locale?.options?.weekStartsOn??0,r=y(n),s=r.getDay(),i=(s<a?7:0)+s-a;return r.setDate(r.getDate()-i),r.setHours(0,0,0,0),r}function P(n){return W(n,{weekStartsOn:1})}function bt(n){const t=y(n),e=t.getFullYear(),a=S(n,0);a.setFullYear(e+1,0,4),a.setHours(0,0,0,0);const r=P(a),s=S(n,0);s.setFullYear(e,0,4),s.setHours(0,0,0,0);const i=P(s);return t.getTime()>=r.getTime()?e+1:t.getTime()>=i.getTime()?e:e-1}function z(n){const t=y(n);return t.setHours(0,0,0,0),t}function L(n){const t=y(n),e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),+n-+e}function K(n,t){const e=z(n),a=z(t),r=+e-L(e),s=+a-L(a);return Math.round((r-s)/ae)}function V(n){const t=bt(n),e=S(n,0);return e.setFullYear(t,0,4),e.setHours(0,0,0,0),P(e)}function oe(n,t){const e=t*3;return R(n,e)}function xt(n,t){const e=t*7;return wt(n,e)}function ce(n,t){return R(n,t*12)}function Y(n,t){const e=y(n),a=y(t),r=e.getTime()-a.getTime();return r<0?-1:r>0?1:r}function de(n,t){const e=z(n),a=z(t);return+e==+a}function ue(n){return n instanceof Date||typeof n=="object"&&Object.prototype.toString.call(n)==="[object Date]"}function le(n){if(!ue(n)&&typeof n!="number")return!1;const t=y(n);return!isNaN(Number(t))}function Z(n,t){const e=P(n),a=P(t),r=+e-L(e),s=+a-L(a);return Math.round((r-s)/B)}function he(n,t){const e=y(n),a=y(t),r=e.getFullYear()-a.getFullYear(),s=e.getMonth()-a.getMonth();return r*12+s}function fe(n,t){const e=y(n),a=y(t);return e.getFullYear()-a.getFullYear()}function tt(n){return t=>{const e=(n?Math[n]:Math.trunc)(t);return e===0?0:e}}function _t(n,t){return+y(n)-+y(t)}function me(n,t,e){const a=_t(n,t)/kt;return tt(e?.roundingMethod)(a)}function ge(n,t,e){const a=_t(n,t)/re;return tt(e?.roundingMethod)(a)}function vt(n){const t=y(n);return t.setHours(23,59,59,999),t}function et(n){const t=y(n),e=t.getMonth();return t.setFullYear(t.getFullYear(),e+1,0),t.setHours(23,59,59,999),t}function pe(n){const t=y(n);return+vt(t)==+et(t)}function St(n,t){const e=y(n),a=y(t),r=Y(e,a),s=Math.abs(he(e,a));let i;if(s<1)i=0;else{e.getMonth()===1&&e.getDate()>27&&e.setDate(30),e.setMonth(e.getMonth()-r*s);let o=Y(e,a)===-r;pe(y(n))&&s===1&&Y(n,a)===1&&(o=!1),i=r*(s-Number(o))}return i===0?0:i}function ye(n,t,e){const a=St(n,t)/3;return tt(e?.roundingMethod)(a)}function we(n,t){const e=y(n),a=y(t),r=Y(e,a),s=Math.abs(fe(e,a));e.setFullYear(1584),a.setFullYear(1584);const i=Y(e,a)===-r,o=r*(s-+i);return o===0?0:o}function N(n){const t=y(n),e=t.getMonth(),a=e-e%3;return t.setMonth(a,1),t.setHours(0,0,0,0),t}function Mt(n){const t=y(n);return t.setDate(1),t.setHours(0,0,0,0),t}function ke(n){const t=y(n),e=t.getFullYear();return t.setFullYear(e+1,0,0),t.setHours(23,59,59,999),t}function Dt(n){const t=y(n),e=S(n,0);return e.setFullYear(t.getFullYear(),0,1),e.setHours(0,0,0,0),e}function be(n){const t=y(n);return t.setMinutes(59,59,999),t}function xe(n,t){const e=t?.weekStartsOn,a=y(n),r=a.getDay(),s=(r<e?-7:0)+6-(r-e);return a.setDate(a.getDate()+s),a.setHours(23,59,59,999),a}function nt(n){const t=y(n),e=t.getMonth(),a=e-e%3+3;return t.setMonth(a,0),t.setHours(23,59,59,999),t}const _e={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}},ve=(n,t,e)=>{let a;const r=_e[n];return typeof r=="string"?a=r:t===1?a=r.one:a=r.other.replace("{{count}}",t.toString()),e?.addSuffix?e.comparison&&e.comparison>0?"in "+a:a+" ago":a};function at(n){return(t={})=>{const e=t.width?String(t.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}const Se={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Me={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},De={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},We={date:at({formats:Se,defaultWidth:"full"}),time:at({formats:Me,defaultWidth:"full"}),dateTime:at({formats:De,defaultWidth:"full"})},$e={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},Te=(n,t,e,a)=>$e[n];function F(n){return(t,e)=>{const a=e?.context?String(e.context):"standalone";let r;if(a==="formatting"&&n.formattingValues){const i=n.defaultFormattingWidth||n.defaultWidth,o=e?.width?String(e.width):i;r=n.formattingValues[o]||n.formattingValues[i]}else{const i=n.defaultWidth,o=e?.width?String(e.width):n.defaultWidth;r=n.values[o]||n.values[i]}const s=n.argumentCallback?n.argumentCallback(t):t;return r[s]}}const Ie={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Pe={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Ce={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Ee={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},Oe={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},ze={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Ye=(n,t)=>{const e=Number(n),a=e%100;if(a>20||a<10)switch(a%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},Ne={ordinalNumber:Ye,era:F({values:Ie,defaultWidth:"wide"}),quarter:F({values:Pe,defaultWidth:"wide",argumentCallback:n=>n-1}),month:F({values:Ce,defaultWidth:"wide"}),day:F({values:Ee,defaultWidth:"wide"}),dayPeriod:F({values:Oe,defaultWidth:"wide",formattingValues:ze,defaultFormattingWidth:"wide"})};function H(n){return(t,e={})=>{const a=e.width,r=a&&n.matchPatterns[a]||n.matchPatterns[n.defaultMatchWidth],s=t.match(r);if(!s)return null;const i=s[0],o=a&&n.parsePatterns[a]||n.parsePatterns[n.defaultParseWidth],c=Array.isArray(o)?He(o,h=>h.test(i)):Fe(o,h=>h.test(i));let u;u=n.valueCallback?n.valueCallback(c):c,u=e.valueCallback?e.valueCallback(u):u;const d=t.slice(i.length);return{value:u,rest:d}}}function Fe(n,t){for(const e in n)if(Object.prototype.hasOwnProperty.call(n,e)&&t(n[e]))return e}function He(n,t){for(let e=0;e<n.length;e++)if(t(n[e]))return e}function qe(n){return(t,e={})=>{const a=t.match(n.matchPattern);if(!a)return null;const r=a[0],s=t.match(n.parsePattern);if(!s)return null;let i=n.valueCallback?n.valueCallback(s[0]):s[0];i=e.valueCallback?e.valueCallback(i):i;const o=t.slice(r.length);return{value:i,rest:o}}}const Ae=/^(\d+)(th|st|nd|rd)?/i,Be=/\d+/i,je={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Le={any:[/^b/i,/^(a|c)/i]},Ue={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Qe={any:[/1/i,/2/i,/3/i,/4/i]},Xe={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},Ge={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},Je={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},Re={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},Ke={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},Ve={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},Ze={ordinalNumber:qe({matchPattern:Ae,parsePattern:Be,valueCallback:n=>parseInt(n,10)}),era:H({matchPatterns:je,defaultMatchWidth:"wide",parsePatterns:Le,defaultParseWidth:"any"}),quarter:H({matchPatterns:Ue,defaultMatchWidth:"wide",parsePatterns:Qe,defaultParseWidth:"any",valueCallback:n=>n+1}),month:H({matchPatterns:Xe,defaultMatchWidth:"wide",parsePatterns:Ge,defaultParseWidth:"any"}),day:H({matchPatterns:Je,defaultMatchWidth:"wide",parsePatterns:Re,defaultParseWidth:"any"}),dayPeriod:H({matchPatterns:Ke,defaultMatchWidth:"any",parsePatterns:Ve,defaultParseWidth:"any"})},tn={code:"en-US",formatDistance:ve,formatLong:We,formatRelative:Te,localize:Ne,match:Ze,options:{weekStartsOn:0,firstWeekContainsDate:1}};function en(n){const t=y(n);return K(t,Dt(t))+1}function nn(n){const t=y(n),e=+P(t)-+V(t);return Math.round(e/B)+1}function Wt(n,t){const e=y(n),a=e.getFullYear(),r=j(),s=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,i=S(n,0);i.setFullYear(a+1,0,s),i.setHours(0,0,0,0);const o=W(i,t),c=S(n,0);c.setFullYear(a,0,s),c.setHours(0,0,0,0);const u=W(c,t);return e.getTime()>=o.getTime()?a+1:e.getTime()>=u.getTime()?a:a-1}function an(n,t){const e=j(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??e.firstWeekContainsDate??e.locale?.options?.firstWeekContainsDate??1,r=Wt(n,t),s=S(n,0);return s.setFullYear(r,0,a),s.setHours(0,0,0,0),W(s,t)}function rn(n,t){const e=y(n),a=+W(e,t)-+an(e,t);return Math.round(a/B)+1}function x(n,t){const e=n<0?"-":"",a=Math.abs(n).toString().padStart(t,"0");return e+a}const $={y(n,t){const e=n.getFullYear(),a=e>0?e:1-e;return x(t==="yy"?a%100:a,t.length)},M(n,t){const e=n.getMonth();return t==="M"?String(e+1):x(e+1,2)},d(n,t){return x(n.getDate(),t.length)},a(n,t){const e=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.toUpperCase();case"aaa":return e;case"aaaaa":return e[0];case"aaaa":default:return e==="am"?"a.m.":"p.m."}},h(n,t){return x(n.getHours()%12||12,t.length)},H(n,t){return x(n.getHours(),t.length)},m(n,t){return x(n.getMinutes(),t.length)},s(n,t){return x(n.getSeconds(),t.length)},S(n,t){const e=t.length,a=n.getMilliseconds(),r=Math.trunc(a*Math.pow(10,e-3));return x(r,t.length)}},C={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},$t={G:function(n,t,e){const a=n.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return e.era(a,{width:"abbreviated"});case"GGGGG":return e.era(a,{width:"narrow"});case"GGGG":default:return e.era(a,{width:"wide"})}},y:function(n,t,e){if(t==="yo"){const a=n.getFullYear(),r=a>0?a:1-a;return e.ordinalNumber(r,{unit:"year"})}return $.y(n,t)},Y:function(n,t,e,a){const r=Wt(n,a),s=r>0?r:1-r;if(t==="YY"){const i=s%100;return x(i,2)}return t==="Yo"?e.ordinalNumber(s,{unit:"year"}):x(s,t.length)},R:function(n,t){const e=bt(n);return x(e,t.length)},u:function(n,t){const e=n.getFullYear();return x(e,t.length)},Q:function(n,t,e){const a=Math.ceil((n.getMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return x(a,2);case"Qo":return e.ordinalNumber(a,{unit:"quarter"});case"QQQ":return e.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(a,{width:"narrow",context:"formatting"});case"QQQQ":default:return e.quarter(a,{width:"wide",context:"formatting"})}},q:function(n,t,e){const a=Math.ceil((n.getMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return x(a,2);case"qo":return e.ordinalNumber(a,{unit:"quarter"});case"qqq":return e.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(a,{width:"narrow",context:"standalone"});case"qqqq":default:return e.quarter(a,{width:"wide",context:"standalone"})}},M:function(n,t,e){const a=n.getMonth();switch(t){case"M":case"MM":return $.M(n,t);case"Mo":return e.ordinalNumber(a+1,{unit:"month"});case"MMM":return e.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(a,{width:"narrow",context:"formatting"});case"MMMM":default:return e.month(a,{width:"wide",context:"formatting"})}},L:function(n,t,e){const a=n.getMonth();switch(t){case"L":return String(a+1);case"LL":return x(a+1,2);case"Lo":return e.ordinalNumber(a+1,{unit:"month"});case"LLL":return e.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(a,{width:"narrow",context:"standalone"});case"LLLL":default:return e.month(a,{width:"wide",context:"standalone"})}},w:function(n,t,e,a){const r=rn(n,a);return t==="wo"?e.ordinalNumber(r,{unit:"week"}):x(r,t.length)},I:function(n,t,e){const a=nn(n);return t==="Io"?e.ordinalNumber(a,{unit:"week"}):x(a,t.length)},d:function(n,t,e){return t==="do"?e.ordinalNumber(n.getDate(),{unit:"date"}):$.d(n,t)},D:function(n,t,e){const a=en(n);return t==="Do"?e.ordinalNumber(a,{unit:"dayOfYear"}):x(a,t.length)},E:function(n,t,e){const a=n.getDay();switch(t){case"E":case"EE":case"EEE":return e.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(a,{width:"short",context:"formatting"});case"EEEE":default:return e.day(a,{width:"wide",context:"formatting"})}},e:function(n,t,e,a){const r=n.getDay(),s=(r-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(s);case"ee":return x(s,2);case"eo":return e.ordinalNumber(s,{unit:"day"});case"eee":return e.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(r,{width:"short",context:"formatting"});case"eeee":default:return e.day(r,{width:"wide",context:"formatting"})}},c:function(n,t,e,a){const r=n.getDay(),s=(r-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(s);case"cc":return x(s,t.length);case"co":return e.ordinalNumber(s,{unit:"day"});case"ccc":return e.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(r,{width:"narrow",context:"standalone"});case"cccccc":return e.day(r,{width:"short",context:"standalone"});case"cccc":default:return e.day(r,{width:"wide",context:"standalone"})}},i:function(n,t,e){const a=n.getDay(),r=a===0?7:a;switch(t){case"i":return String(r);case"ii":return x(r,t.length);case"io":return e.ordinalNumber(r,{unit:"day"});case"iii":return e.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(a,{width:"short",context:"formatting"});case"iiii":default:return e.day(a,{width:"wide",context:"formatting"})}},a:function(n,t,e){const a=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(a,{width:"narrow",context:"formatting"});case"aaaa":default:return e.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(n,t,e){const a=n.getHours();let r;switch(a===12?r=C.noon:a===0?r=C.midnight:r=a/12>=1?"pm":"am",t){case"b":case"bb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"bbbb":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(n,t,e){const a=n.getHours();let r;switch(a>=17?r=C.evening:a>=12?r=C.afternoon:a>=4?r=C.morning:r=C.night,t){case"B":case"BB":case"BBB":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(r,{width:"narrow",context:"formatting"});case"BBBB":default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(n,t,e){if(t==="ho"){let a=n.getHours()%12;return a===0&&(a=12),e.ordinalNumber(a,{unit:"hour"})}return $.h(n,t)},H:function(n,t,e){return t==="Ho"?e.ordinalNumber(n.getHours(),{unit:"hour"}):$.H(n,t)},K:function(n,t,e){const a=n.getHours()%12;return t==="Ko"?e.ordinalNumber(a,{unit:"hour"}):x(a,t.length)},k:function(n,t,e){let a=n.getHours();return a===0&&(a=24),t==="ko"?e.ordinalNumber(a,{unit:"hour"}):x(a,t.length)},m:function(n,t,e){return t==="mo"?e.ordinalNumber(n.getMinutes(),{unit:"minute"}):$.m(n,t)},s:function(n,t,e){return t==="so"?e.ordinalNumber(n.getSeconds(),{unit:"second"}):$.s(n,t)},S:function(n,t){return $.S(n,t)},X:function(n,t,e){const a=n.getTimezoneOffset();if(a===0)return"Z";switch(t){case"X":return It(a);case"XXXX":case"XX":return I(a);case"XXXXX":case"XXX":default:return I(a,":")}},x:function(n,t,e){const a=n.getTimezoneOffset();switch(t){case"x":return It(a);case"xxxx":case"xx":return I(a);case"xxxxx":case"xxx":default:return I(a,":")}},O:function(n,t,e){const a=n.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+Tt(a,":");case"OOOO":default:return"GMT"+I(a,":")}},z:function(n,t,e){const a=n.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+Tt(a,":");case"zzzz":default:return"GMT"+I(a,":")}},t:function(n,t,e){const a=Math.trunc(n.getTime()/1e3);return x(a,t.length)},T:function(n,t,e){const a=n.getTime();return x(a,t.length)}};function Tt(n,t=""){const e=n>0?"-":"+",a=Math.abs(n),r=Math.trunc(a/60),s=a%60;return s===0?e+String(r):e+String(r)+t+x(s,2)}function It(n,t){return n%60===0?(n>0?"-":"+")+x(Math.abs(n)/60,2):I(n,t)}function I(n,t=""){const e=n>0?"-":"+",a=Math.abs(n),r=x(Math.trunc(a/60),2),s=x(a%60,2);return e+r+t+s}const Pt=(n,t)=>{switch(n){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});case"PPPP":default:return t.date({width:"full"})}},Ct=(n,t)=>{switch(n){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});case"pppp":default:return t.time({width:"full"})}},sn=(n,t)=>{const e=n.match(/(P+)(p+)?/)||[],a=e[1],r=e[2];if(!r)return Pt(n,t);let s;switch(a){case"P":s=t.dateTime({width:"short"});break;case"PP":s=t.dateTime({width:"medium"});break;case"PPP":s=t.dateTime({width:"long"});break;case"PPPP":default:s=t.dateTime({width:"full"});break}return s.replace("{{date}}",Pt(a,t)).replace("{{time}}",Ct(r,t))},on={p:Ct,P:sn},cn=/^D+$/,dn=/^Y+$/,un=["D","DD","YY","YYYY"];function ln(n){return cn.test(n)}function hn(n){return dn.test(n)}function fn(n,t,e){const a=mn(n,t,e);if(console.warn(a),un.includes(n))throw new RangeError(a)}function mn(n,t,e){const a=n[0]==="Y"?"years":"days of the month";return`Use \`${n.toLowerCase()}\` instead of \`${n}\` (in \`${t}\`) for formatting ${a} to the input \`${e}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const gn=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,pn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,yn=/^'([^]*?)'?$/,wn=/''/g,kn=/[a-zA-Z]/;function U(n,t,e){const a=j(),r=e?.locale??a.locale??tn,s=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,i=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,o=y(n);if(!le(o))throw new RangeError("Invalid time value");let c=t.match(pn).map(d=>{const h=d[0];if(h==="p"||h==="P"){const l=on[h];return l(d,r.formatLong)}return d}).join("").match(gn).map(d=>{if(d==="''")return{isToken:!1,value:"'"};const h=d[0];if(h==="'")return{isToken:!1,value:bn(d)};if($t[h])return{isToken:!0,value:d};if(h.match(kn))throw new RangeError("Format string contains an unescaped latin alphabet character `"+h+"`");return{isToken:!1,value:d}});r.localize.preprocessor&&(c=r.localize.preprocessor(o,c));const u={firstWeekContainsDate:s,weekStartsOn:i,locale:r};return c.map(d=>{if(!d.isToken)return d.value;const h=d.value;(!e?.useAdditionalWeekYearTokens&&hn(h)||!e?.useAdditionalDayOfYearTokens&&ln(h))&&fn(h,t,String(n));const l=$t[h[0]];return l(o,h,r.localize,u)}).join("")}function bn(n){const t=n.match(yn);return t?t[1].replace(wn,"'"):n}function Et(n){const t=y(n),e=t.getFullYear(),a=t.getMonth(),r=S(n,0);return r.setFullYear(e,a+1,0),r.setHours(0,0,0,0),r.getDate()}function xn(n){const t=y(n).getFullYear();return t%400===0||t%4===0&&t%100!==0}function Ot(n){const t=y(n);return String(new Date(t))==="Invalid Date"?NaN:xn(t)?366:365}function _n(n){const t=V(n),e=+V(xt(t,60))-+t;return Math.round(e/B)}function E(n,t){const e=y(n),a=y(t);return+e==+a}function vn(n){const t=y(n);return t.setMinutes(0,0,0),t}function Sn(n,t,e){const a=W(n,e),r=W(t,e);return+a==+r}function Mn(n,t){const e=y(n),a=y(t);return e.getFullYear()===a.getFullYear()&&e.getMonth()===a.getMonth()}function Dn(n,t){const e=N(n),a=N(t);return+e==+a}function Wn(n,t){const e=y(n),a=y(t);return e.getFullYear()===a.getFullYear()}const zt={year:we,quarter:ye,month:St,week:Z,day:K,hour:me,minute:ge},q={year:{quarter:4,month:12,week:_n,day:$n,hour:Tn},quarter:{month:3,week:In,day:Yt,hour:Pn},month:{week:Cn,day:En,hour:On},week:{day:7,hour:24*7},day:{hour:24},hour:{minute:60}};function $n(n){return n?Ot(n):365}function Tn(n){return Ot(n)*24}function In(n){const t=N(n),e=nt(n);return Z(e,t)}function Yt(n){if(n){const t=N(n),e=nt(n);return K(e,t)}return 91}function Pn(n){return Yt(n)*24}function Cn(n){if(n){const t=Mt(n),e=et(n);return Z(e,t)}return 5}function En(n){return n?Et(n):30}function On(n){return Et(n)*24}function Q(n,t,e){const a=q[n][t];return a?typeof a=="number"?a:a(e):1}function zn(n,t){return n===t||!!(q[n]&&q[n][t])}const Nt={year:ce,quarter:oe,month:R,week:xt,day:wt,hour:se};function X(n){return(t,e,a,r)=>!q[n][a]||typeof q[n][a]=="number"||Ft(n,t,e)?A(n,t,e,a,r):Yn(t,e,n,a,r)}function A(n,t,e,a,r){const s=a||n;let i=e,o=t;if(r&&(i=D(s,e),o=D(s,t),o<t&&(o=M(s)(o,1))),n!==s){const c=zt[s](o,i),u=Q(n,s,e);return c/u}else return zt[s](o,i)}function Yn(n,t,e,a,r){let s=0;if(t>D(e,t)){const o=Nn(e,t);s=A(e,o,t,a),t=o}let i=0;return Ft(e,t,n)||(i=A(e,D(e,n),t),t=Nt[e](t,i)),i+=s+A(e,n,t,a),!i&&r&&(i=A(e,n,t,a,r)),i}function M(n){return Nt[n]}function D(n,t){switch(n){case"year":return Dt(t);case"quarter":return N(t);case"month":return Mt(t);case"week":return W(t,{weekStartsOn:1});case"day":return z(t);case"hour":return vn(t);default:return new Date(t)}}function Nn(n,t){switch(n){case"year":return ke(t);case"quarter":return nt(t);case"month":return et(t);case"week":return xe(t,{weekStartsOn:1});case"day":return vt(t);case"hour":return be(t);default:return new Date(t)}}function Ft(n,t,e){switch(n){case"year":return Wn(t,e);case"quarter":return Dn(t,e);case"month":return Mn(t,e);case"week":return Sn(t,e,{weekStartsOn:1});case"day":return de(t,e);default:return!1}}const rt=8,Ht=4,Fn=3,qt=7,Hn=rt+Ht;function At(n,t){n.open&&n.data?.forEach(e=>{e.$x+=t,At(e,t)})}function st(n,t,e,a){const r=n.getSummaryId(t.id);if(r){const s=n.byId(r),i={xMin:1/0,xMax:0};Bt(s,i,e,a),s.$x=i.xMin,s.$w=i.xMax-i.xMin,st(n,s,e,a)}}function Bt(n,t,e,a){const{lengthUnit:r,start:s}=e;n.data?.forEach(i=>{typeof i.$x>"u"&&(i.$x=Math.round(e.diff(i.start,s,r)*a),i.$w=Math.round(e.diff(i.end,i.start,r,!0)*a));const o=i.type==="milestone"&&i.$h?i.$h/2:0;t.xMin>i.$x&&(t.xMin=i.$x+o);const c=i.$x+i.$w-o;t.xMax<c&&(t.xMax=c),i.type!=="summary"&&Bt(i,t,e,a)})}function it(n,t){let e;t&&(e=t.filter(r=>r.parent==n.id));const a={data:e,...n};if(a.data?.length)a.data.forEach(r=>{(t||r.type!="summary"&&r.data)&&(r=it(r,t)),(!a.start||a.start>r.start)&&(a.start=new Date(r.start)),(!a.end||a.end<r.end||r.type==="milestone"&&a.end<r.start)&&(a.end=new Date(r.end||r.start))});else if(n.type==="summary")throw Error("Summary tasks must have start and end dates if they have no subtasks");return a}function qn(n,t,e,a,r,s){return jt(n,t,e,a,r,s,!1),s&&jt(n,t,e,a,r,s,!0),n}function jt(n,t,e,a,r,s,i){const{start:o,end:c,lengthUnit:u,diff:d}=r,h=(i?"base_":"")+"start",l=(i?"base_":"")+"end",m="$x"+(i?"_base":""),f="$y"+(i?"_base":""),g="$w"+(i?"_base":""),k="$h"+(i?"_base":""),p="$skip"+(i?"_baseline":"");let w=n[h],b=n[l];if(i&&!w){n[p]=!0;return}n[h]<o&&(n[l]<o||E(n[l],o))?w=b=o:n[h]>c&&(w=b=c),n[m]=Math.round(d(w,o,u)*e),n[f]=i?n.$y+n.$h+Ht:a*t+Fn,n[g]=Math.round(d(b,w,u,!0)*e),n[k]=i?rt:s?a-qt-Hn:a-qt,n.type==="milestone"&&(n[m]=n[m]-n.$h/2,n[g]=n.$h,i&&(n[f]=n.$y+rt,n[g]=n[k]=n.$h)),n[p]=E(w,b)}const An=M("day"),Bn=X("day");class jn extends Gt{_sort;constructor(t){super(),this.parse(t,0)}parse(t,e){if(!t||!t.length)return;const a=t.map(r=>this.normalizeTask(r,t));super.parse(a,e),this._sort&&this.sortBranch(this._sort,e)}getBounds(t,e){return t||(t=new Date(3e3,0,0)),e||(e=new Date(0)),this._pool.forEach(a=>{(!t||a.start<=t)&&(t=a.start),(!e||a.end>=e)&&(e=a.end)}),{start:t,end:e}}getBranch(t){const e=this._pool.get(t);return this._pool.get(e.parent||0).data}contains(t,e){const a=this._pool.get(t).data;let r=!1;if(a)for(let s=0;s<a.length;s++){if(a[s].id===e){r=!0;break}if(a[s].data&&(r=this.contains(a[s].id,e),r))break}return r}getIndexById(t){return this.getBranch(t).findIndex(e=>e.id===t)}add(t,e){const a=this.normalizeTask(t);return super.add(a,e),a}update(t,e){this.fillDates(t,e),this.normalizeDates(e),this.byId(t).base_start&&(this.fillDates(t,e,!0),this.normalizeDates(e,!0)),super.update(t,e)}copy(t,e,a){const r=this.add({...t,id:null,data:null,parent:e},a);let s=[[t.id,r.id]];return t.data?.forEach((i,o)=>{const c=this.copy(i,r.id,o);s=s.concat(c)}),s}normalizeDates(t,e){const{start:a,end:r,duration:s}=this.getFields(e);t.type==="milestone"?t[s]=0:t[a]&&(t[s]?t[r]||(t[r]=An(t[a],t[s])):t[r]?t[s]=Bn(t[r],t[a]):(t[r]=t[a],t[s]=0))}normalizeTask(t,e){const a=t.id||ft(),r=t.parent||0,s=t.text||"",i=t.type||"task",o=t.progress||0,c=t.details||"";this.normalizeDates(t),t.base_start&&this.normalizeDates(t,!0);const u={...t,id:a,text:s,parent:r,progress:o,type:i,details:c};if(this.normalizeDates(u),u.type==="summary"&&!(u.start&&u.end)){const{start:d,end:h}=it({...u},e);u.start=d,u.end=h}return u}getSummaryId(t){const e=this._pool.get(t);if(!e.parent)return null;const a=this._pool.get(e.parent);return a.type==="summary"?a.id:this.getSummaryId(a.id)}fillDates(t,e,a=!1){const r=this.byId(t);e.type=e.type||r.type;const{start:s,end:i,duration:o}=this.getFields(a);e.type!=="milestone"?(r[i]&&e[s]||(e[s]=r[s]),e[s]&&!(e[o]||e[i])?(e[i]=r[i]>e[s]?r[i]:null,e[i]||(e[o]=1)):e[i]&&!(e[o]||e[s])?(e[s]=r[s]<e[i]?r[s]:e[i],e[s]===e[i]&&(e[o]=1,delete e[i])):e[o]&&!(e[s]||e[i])&&(e[s]=r[s])):(e[i]&&delete e[i],r[i]&&delete r[i])}getFields(t){return{start:(t?"base_":"")+"start",end:(t?"base_":"")+"end",duration:(t?"base_":"")+"duration"}}sort(t){this._sort=t,t&&this.sortBranch(t,0)}sortBranch(t,e){const a=this._pool.get(e||0).data;a&&(Vt(a,t),a.forEach(r=>{this.sortBranch(t,r.id)}))}}function O(n){const t=new Date;return n.map(e=>({item:e,len:M(e.unit)(t,1)})).sort((e,a)=>e.len<a.len?-1:1)[0].item}const T=["year","quarter","month","week","day","hour"],Lt={year:"yyyy",quarter:"QQQ",month:"MMM",week:"w",day:"MMM d",hour:"HH:mm"},ot=50,ct=300;function Ln(n,t,e,a){let r=n,s=t,i=!1,o=!1;a&&a.forEach(u=>{!n&&(!r||u.start<=r)&&(r=u.start,i=!0);const d=u.type==="milestone"?u.start:u.end;!t&&(!s||d>=s)&&(s=d,o=!0)});const c=M(e||"day");return r?i&&(r=c(r,-1)):r=new Date,s?o&&(s=c(s,1)):s=c(r,30),{_start:r,_end:s}}function Un(n,t,e,a,r,s){const i=O(s).unit,o=X(i),c=o(t,n,"",!0),u=D(i,t);n=D(i,n),t=u<t?M(i)(u,1):u;const d=c*a,h=r*s.length,l=s.map(f=>{const g=[],k=M(f.unit);let p=D(f.unit,n);for(;p<t;){let w=k(p,f.step);p<n&&(p=n),w>t&&(w=t);const b=o(w,p,"",!0)*a,_=typeof f.format=="function"?f.format(p,w):U(p,f.format,{firstWeekContainsDate:4,weekStartsOn:1});let v="";f.css&&(v+=typeof f.css=="function"?f.css(p):f.css),g.push({width:b,value:_,date:p,css:v,unit:f.unit}),p=w}return{cells:g,add:k,height:r}});let m=a;return i!==e&&(m=Math.round(m/Q(i,e))||1),{rows:l,width:d,height:h,diff:o,start:n,end:t,lengthUnit:e,minUnit:i,lengthUnitWidth:m}}function Qn(n,t,e){const a=typeof n=="boolean"?{}:n,r=T.indexOf(O(t).unit);if(typeof a.level>"u"&&(a.level=r),a.levels)a.levels.forEach(o=>{o.minCellWidth||(o.minCellWidth=G(a.minCellWidth,ot)),o.maxCellWidth||(o.maxCellWidth=G(a.maxCellWidth,ct))});else{const o=[],c=t.length||1,u=G(a.minCellWidth,ot),d=G(a.maxCellWidth,ct);T.forEach((h,l)=>{if(l===r)o.push({minCellWidth:u,maxCellWidth:d,scales:t});else{const m=[];if(l)for(let f=c-1;f>0;f--)T[l-f]&&m.push({unit:T[l-f],step:1,format:Lt[T[l-f]]});m.push({unit:h,step:1,format:Lt[h]}),o.push({minCellWidth:u,maxCellWidth:d,scales:m})}}),a.levels=o}a.levels[a.level]||(a.level=0);const s=a.levels[a.level],i=Math.min(Math.max(e,s.minCellWidth),s.maxCellWidth);return{_zoom:a,scales:s.scales,cellWidth:i}}function Xn(n,t,e,a,r,s,i){n.level=e;let o;const c=a.scales||a,u=O(c).unit,d=Gn(u,r);if(t===-1){const m=Q(u,r);o=i*m}else{const m=Q(O(s).unit,u);o=Math.round(i/m)}const h=a.minCellWidth??ot,l=a.maxCellWidth??ct;return{scales:c,cellWidth:Math.min(l,Math.max(h,o)),lengthUnit:d,zoom:n}}function Gn(n,t){const e=T.indexOf(n),a=T.indexOf(t);return a>=e?n==="hour"?"hour":"day":T[a]}function G(n,t){return n??t}const dt=20,Jn=function(n,t,e,a,r){const s=Math.round(a/2)-3;if(!t||!e||!t.$y||!e.$y||t.$skip||e.$skip)return n.$p="",n;let i=!1,o=!1;switch(n.type){case"e2s":o=!0;break;case"s2s":i=!0,o=!0;break;case"s2e":i=!0;break}const c=i?t.$x:t.$x+t.$w,u=r?t.$y-7:t.$y,d=o?e.$x:e.$x+e.$w,h=r?e.$y-7:e.$y;if(c!==d||u!==h){const l=Rn(c,u+s,d,h+s,i,o,a/2,r),m=Kn(d,h+s,o);n.$p=`${l},${m}`}return n};function Rn(n,t,e,a,r,s,i,o){const c=dt*(r?-1:1),u=dt*(s?-1:1),d=n+c,h=e+u,l=[n,t,d,t,0,0,0,0,h,a,e,a],m=h-d;let f=a-t;const g=s===r;return g||(h<=n+dt-2&&s||h>n&&!s)&&(f=o?f-i+6:f-i),g&&s&&d>h||g&&!s&&d<h?(l[4]=l[2]+m,l[5]=l[3],l[6]=l[4],l[7]=l[5]+f):(l[4]=l[2],l[5]=l[3]+f,l[6]=l[4]+m,l[7]=l[5]),l.join(",")}function Kn(n,t,e){return e?`${n-5},${t-3},${n-5},${t+3},${n},${t}`:`${n+5},${t+3},${n+5},${t-3},${n},${t}`}function Vn(n,t,e){if(t&&e){const a=e.x-t.x,r=e.y-t.y,s=(a>0?t.x:e.x)-n.left,i=(r>0?t.y:e.y)-n.top,o=`${a>0?0:-a},${r>0?0:-r},${a>0?a:0},${r>0?r:0}`;return{width:Math.abs(a),height:Math.abs(r),left:s,top:i,p:o}}else return null}function Zn(n){if(!n||!n.length)return[];const t=n.find(e=>e.id==="action");return t||(n=[...n,ea]),n.map(e=>{const a=e.align||"left",r=e.id==="action",s=!r&&e.flexgrow?e.flexgrow:null,i=s?1:e.width||(r?50:120);let o;e.id==="action"&&(o=t?"add-task":"expand");let c=e.template;if(!c)switch(e.id){case"start":c=u=>U(u,"dd-MM-yyyy");break;case"end":c=u=>U(u,"dd-MM-yyyy");break}return{width:i,align:a,header:e.header,id:e.id,template:c,...s&&{flexgrow:s},...o&&{action:o},cell:e.cell,resize:e.resize??!0,sort:e.sort??!o}})}const ta=[{id:"text",header:"Task name",flexgrow:1,sort:!0},{id:"start",header:"Start date",align:"center",sort:!0},{id:"duration",header:"Duration",width:100,align:"center",sort:!0},{id:"action",header:"",width:50,align:"center",sort:!1,resize:!1}],ea={id:"action",header:"",align:"center",width:50,sort:!1,resize:!1},Ut=[{key:"text",type:"text",label:"Name",config:{placeholder:"Add task name",focus:!0}},{key:"details",type:"textarea",label:"Description",config:{placeholder:"Add description"}},{key:"type",type:"select",label:"Type"},{key:"start",type:"date",label:"Start date"},{key:"end",type:"date",label:"End date"},{key:"duration",type:"counter",label:"Duration",config:{min:1,max:100}},{key:"progress",type:"slider",label:"Progress"},{key:"links",type:"links"}];function na(n){return(n.editorShape||Ut).map(t=>(t.type==="select"&&t.key==="type"&&(t.options=n.taskTypes),t.id=t.id||ht(),t))}class aa extends Jt{in;_router;constructor(t){super(t),this._router=new Rt(super.setState.bind(this),[{in:["tasks","start","end","scales"],out:["_start","_end"],exec:r=>{const{_end:s,_start:i,start:o,end:c,tasks:u,scales:d}=this.getState();if(!o||!c){const h=O(d).unit,l=Ln(o,c,h,u);(l._end!=s||l._start!=i)&&this.setState(l,r)}else this.setState({_start:o,_end:c},r)}},{in:["_start","_end","cellWidth","scaleHeight","scales","lengthUnit"],out:["_scales"],exec:r=>{const s=this.getState();let{lengthUnit:i}=s;const{_start:o,_end:c,cellWidth:u,scaleHeight:d,scales:h}=s,l=O(h).unit;zn(l,i)||(i=l);const m=Un(o,c,i,u,d,h);this.setState({_scales:m},r)}},{in:["_scales","tasks","cellHeight","baselines"],out:["_tasks"],exec:r=>{const{cellWidth:s,cellHeight:i,tasks:o,_scales:c,baselines:u}=this.getState(),d=o.toArray().map((h,l)=>qn(h,l,s,i,c,u));this.setState({_tasks:d},r)}},{in:["_tasks","links","cellHeight"],out:["_links"],exec:r=>{const{tasks:s,links:i,cellHeight:o,baselines:c}=this.getState(),u=i.map(d=>{const h=s.byId(d.source),l=s.byId(d.target);return Jn(d,h,l,o,c)}).filter(d=>d!==null);this.setState({_links:u},r)}},{in:["tasks","activeTask"],out:["_activeTask"],exec:r=>{const{tasks:s,activeTask:i}=this.getState();this.setState({_activeTask:s.byId(i)||null},r)}},{in:["tasks","selected"],out:["_selected"],exec:r=>{const{tasks:s,selected:i,_scrollSelected:o}=this.getState(),c={_selected:i.map(u=>s.byId(u)).filter(u=>!!u)};typeof o>"u"&&(c._scrollSelected=!1),this.setState(c,r)}},{in:["start","end"],out:["cellWidth"],exec:r=>{const{_cellWidth:s,cellWidth:i}=this.getState();s!=i&&this.setState({cellWidth:s},r)}}],{tasks:r=>new jn(r),links:r=>new mt(r),columns:r=>Zn(r)});const e=this.in=new Kt;e.on("show-editor",({id:r})=>{this.setStateAsync({activeTask:r})}),e.on("select-task",({id:r,toggle:s,range:i,show:o})=>{const{selected:c,_tasks:u,activeTask:d}=this.getState();let h=!1,l;if(c.length&&(s||i)){const m=[...c];if(i){const f=m[m.length-1],g=u.findIndex(b=>b.id==f),k=u.findIndex(b=>b.id==r),p=Math.min(g,k),w=Math.max(g,k)+1;u.slice(p,w).map(b=>b.id).forEach(b=>{m.includes(b)||m.push(b)})}else if(s){const f=m.findIndex(g=>g==r);f===-1?m.push(r):(h=!0,m.splice(f,1))}l=m}else l=[r];this.setStateAsync({selected:l,_scrollSelected:!!o}),!h&&d&&d!=r&&e.exec("show-editor",{id:r})}),e.on("delete-link",({id:r})=>{const{links:s}=this.getState();s.remove(r),this.setStateAsync({links:s})}),e.on("update-link",r=>{const{links:s}=this.getState(),{id:i,link:o}=r;s.update(i,o),this.setStateAsync({links:s}),r.link=s.byId(i)}),e.on("add-link",r=>{const{link:s}=r,{links:i}=this.getState();!s.source||!s.target||(s.type||(s.type="e2s"),s.id=s.id||ft(),i.add(s),this.setStateAsync({links:i}),r.id=s.id,r.link=i.byId(s.id))});let a=null;e.on("move-task",r=>{const{tasks:s}=this.getState();let{mode:i,target:o}=r;const{id:c,inProgress:u}=r,d=s.byId(c);if(typeof u>"u"?r.source=d.parent:r.source=a=a??d.parent,u===!1){d.$reorder=!1,s.update(d.id,d),this.setState({tasks:s}),a=null;return}if(o===c||s.contains(c,o)){r.skipProvider=!0;return}if(i==="up"||i==="down"){const h=s.getBranch(c);let l=s.getIndexById(c);if(i==="up"){const m=d.parent===0;if(l===0&&m){r.skipProvider=!0;return}l-=1,i="before"}else if(i==="down"){const m=l===h.length-1,f=d.parent===0;if(m&&f){r.skipProvider=!0;return}l+=1,i="after"}if(o=h[l]&&h[l].id||d.parent,o){const m=s.getBranch(o);let f=s.getIndexById(o),g=m[f];if(g.data){if(i==="before"){if(g.parent===d.parent){for(;g.data;)g.open||e.exec("open-task",{id:g.id,mode:!0}),g=g.data[g.data.length-1];o=g.id}}else if(i==="after"){let w;g.parent===d.parent?(w=g,g=g.data[0],o=g.id,i="before"):m.length-1!==f&&(w=g,f+=1,g=m[f],d.$level>g.$level&&g.data?(w=g,g=g.data[0],o=g.id,i="before"):o=g.id),w&&!w.open&&e.exec("open-task",{id:w.id,mode:!0})}}const k=s.getSummaryId(d.id);s.move(c,i,o);const p=s.getSummaryId(c);k!=p&&(k&&this.resetSummaryDates(k,"move-task"),p&&this.resetSummaryDates(p,"move-task"))}}else{const h=s.byId(o);let l=h,m=!1;for(;l.$level>d.$level;)l=s.byId(l.parent),l.id===c&&(m=!0);if(m)return;const f=s.getSummaryId(d.id);if(s.move(c,i,o),s.update(c,{$level:d.$level}),s.update(o,h),i=="child"){let k=h;for(;k.id!==0&&!k.open;)e.exec("open-task",{id:k.id,mode:!0}),k=s.byId(k.parent)}const g=s.getSummaryId(c);f!=g&&(f&&this.resetSummaryDates(f,"move-task"),g&&this.resetSummaryDates(g,"move-task"))}u?this.setState({tasks:s}):this.setStateAsync({tasks:s}),r.target=o,r.mode=i}),e.on("drag-task",r=>{const{id:s,width:i,left:o,top:c,inProgress:u}=r,d=this.getState(),{tasks:h,_tasks:l,_selected:m,_scales:f,cellWidth:g}=d,k={_tasks:l,_selected:m},p=h.byId(s);typeof i<"u"&&(p.$w=i,st(h,p,f,g)),typeof o<"u"&&(p.type==="summary"&&At(p,o-p.$x),p.$x=o,st(h,p,f,g)),typeof c<"u"&&(p.$y=c+4,p.$reorder=u),typeof i<"u"&&(p.$w=i),typeof o<"u"&&(p.$x=o),typeof c<"u"&&(p.$y=c+4,p.$reorder=u),this.setState(k)}),e.on("update-task",r=>{const{id:s,task:i,eventSource:o}=r;let c=r.diff;const{tasks:u,_scales:d}=this.getState();if(o==="add-task"||o==="copy-task"||o==="move-task"||o==="update-task"||o==="delete-task"){u.update(s,i);return}const h=d.lengthUnit,l=M(h),m=X(h),f=u.byId(s);if(c&&(i.start&&(i.start=l(i.start,c)),i.end&&(i.end=l(i.end,c))),i.start&&i.end){if((!E(i.start,f.start)||!E(i.end,f.end))&&f.type=="summary"&&f.data?.length){if(!c&&(c=m(i.start,f.start),m(i.end,f.end)!==c))return;this.moveSummaryKids(f,k=>l(k,c),"update-task")}}else if(f.type=="summary"&&(i.start&&!i.end||i.end&&!i.start||i.duration))return;u.update(s,i),i.type==="summary"&&f.type!=="summary"&&this.resetSummaryDates(s,"update-task");const g=u.getSummaryId(s);g&&this.resetSummaryDates(g,"update-task"),this.setStateAsync({tasks:u}),r.task=u.byId(s)}),e.on("add-task",r=>{const{tasks:s,_scales:i,baselines:o}=this.getState(),{target:c,mode:u,task:d}=r;let h=-1,l,m;if(c?(m=s.byId(c),u=="child"?(l=m,d.parent=l.id):(m.parent!==null&&(l=s.byId(m.parent),d.parent=l.id),h=s.getIndexById(c),u=="after"&&(h+=1))):d.parent&&(l=s.byId(d.parent)),!d.start){if(l?.start)d.start=new Date(l.start.valueOf());else if(m)d.start=new Date(m.start.valueOf());else{const k=s.getBranch(0);let p;if(k.length){const w=k[k.length-1];if(!w.$skip){const b=new Date(w.start.valueOf());i.start<=b&&(p=b)}}d.start=p||M("day")(i.start,1)}d.duration=1,o&&(d.base_start=d.start,d.base_duration=d.duration)}const f=s.add(d,h);if(l)for(;l&&l.id;)e.exec("open-task",{id:l.id,mode:!0}),l=s.byId(l.parent);r.id=f.id;const g=s.getSummaryId(f.id);g&&this.resetSummaryDates(g,"add-task"),this.setStateAsync({tasks:s}),e.exec("select-task",{id:f.id}),e.exec("show-editor",{id:f.id}),r.id=f.id,r.task=f}),e.on("delete-task",r=>{const{id:s}=r,{tasks:i,links:o,selected:c}=this.getState();r.source=i.byId(s).parent;const u=i.getSummaryId(s),d=[s];i.eachChild(l=>d.push(l.id),s),o.filter(l=>!(d.includes(l.source)||d.includes(l.target))),i.remove(s),u&&this.resetSummaryDates(u,"delete-task");const h={tasks:i,links:o};c.includes(s)&&(h.selected=c.filter(l=>l!==s)),this.setStateAsync(h)}),e.on("indent-task",({id:r,mode:s})=>{const{tasks:i}=this.getState();if(s){const o=i.getBranch(r)[i.getIndexById(r)-1];o&&e.exec("move-task",{id:r,mode:"child",target:o.id})}else{const o=i.byId(r),c=i.byId(o.parent);c&&c.parent!==null&&e.exec("move-task",{id:r,mode:"after",target:o.parent})}}),e.on("copy-task",r=>{const{id:s,target:i,mode:o,eventSource:c}=r;if(c==="copy-task")return;const{tasks:u,links:d}=this.getState();if(u.contains(s,i)){r.skipProvider=!0;return}const h=u.getSummaryId(s),l=u.getSummaryId(i);let m=u.getIndexById(i);o=="before"&&(m-=1);const f=u.byId(s),g=u.copy(f,u.byId(i).parent,m+1);r.source=r.id,r.id=g[0][1],f.lazy&&(r.lazy=!0),h!=l&&l&&this.resetSummaryDates(l,"copy-task");let k=[];for(let p=1;p<g.length;p++){const[w,b]=g[p];d.forEach(_=>{if(_.source===w){const v={..._};delete v.target,k.push({...v,source:b})}else if(_.target===w){const v={..._};delete v.source,k.push({...v,target:b})}})}k=k.reduce((p,w)=>{const b=p.findIndex(_=>_.id===w.id);return b>-1?p[b]={...p[b],...w}:p.push(w),p},[]);for(let p=1;p<g.length;p++){const[w,b]=g[p],_=u.byId(b);e.exec("copy-task",{source:w,id:b,lazy:!!_.lazy,eventSource:"copy-task",target:_.parent,mode:"child"})}k.forEach(p=>{e.exec("add-link",{link:{source:p.source,target:p.target,type:p.type}})}),this.setStateAsync({tasks:u})}),e.on("open-task",({id:r,mode:s})=>{const{tasks:i}=this.getState(),o=i.byId(r);o.lazy?e.exec("request-data",{id:o.id}):(i.toArray().forEach(c=>c.$y=0),i.update(r,{open:s}),this.setState({tasks:i}))}),e.on("scroll-chart",({left:r,top:s})=>{if(!isNaN(r)){const i=this.calcScaleDate(r);this.setState({scrollLeft:r,_scaleDate:i})}isNaN(s)||this.setState({scrollTop:s})}),e.on("render-data",r=>{this.setState({area:r})}),e.on("provide-data",r=>{const{tasks:s,links:i}=this.getState(),o=s.byId(r.id);o.lazy?(o.lazy=!1,o.open=!0):o.data=[],s.parse(r.data.tasks,r.id),this.setStateAsync({tasks:s,links:new mt(i.map(c=>c).concat(r.data.links))})}),e.on("zoom-scale",({dir:r,offset:s})=>{const{zoom:i,cellWidth:o,_cellWidth:c,scrollLeft:u}=this.getState(),d=s+u,h=this.calcScaleDate(d);let l=o;r<0&&(l=c||o);const m=l+r*50,f=i.levels[i.level],g=r<0&&o>f.maxCellWidth;if(m<f.minCellWidth||m>f.maxCellWidth||g){if(!this.changeScale(i,r))return}else this.setState({cellWidth:m,_cellWidth:m});const{_scales:k,_start:p,cellWidth:w}=this.getState(),b=D(k.minUnit,p),_=k.diff(h,b,"hour");typeof s>"u"&&(s=w);let v=Math.round(_*w)-s;v<0&&(v=0),this.setState({scrollLeft:v,_scaleDate:h,_zoomOffset:s})}),e.on("expand-scale",({minWidth:r})=>{const{_start:s,_scales:i,start:o,end:c,_end:u,cellWidth:d,_scaleDate:h,_zoomOffset:l}=this.getState(),m=M(i.minUnit);let f=i.width;if(o&&c){if(f<r&&f){const b=r/f;this.setState({cellWidth:d*b})}return!0}let g=0;for(;f<r;)f+=d,g++;const k=g?c?-g:-1:0,p