@svar-ui/gantt-store 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.js CHANGED
@@ -1 +1 @@
1
- var $t=new Date().valueOf(),De=()=>$t++;function st(){return"temp://"+$t++}var Pt=class{constructor(t){this._data=t,this._pool=new Map;for(let e=0;e<t.length;e++){const n=t[e];this._pool.set(n.id,n)}}add(t){t={id:De(),...t},this._data.push(t),this._pool.set(t.id,t)}update(t,e){const n=this._data.findIndex(a=>a.id==t),s={...this._data[n],...e};this._data[n]=s,this._pool.set(s.id,s)}remove(t){this._data=this._data.filter(e=>e.id!=t),this._pool.delete(t)}filter(t){this._data=this._data.filter(e=>{const n=t(e);return n||this._pool.delete(e.id),n})}byId(t){return this._pool.get(t)}map(t){return this._data.map(t)}forEach(t){this._data.forEach(t)}},Te=class{constructor(t){const e={id:0,$level:0,data:[],parent:null},n=new Map;n.set(0,e),this._pool=n,t&&t.length&&this.parse(t,0)}parse(t,e){const n=this._pool;for(let a=0;a<t.length;a++){const r=t[a];r.parent=r.parent||e,r.data=null,n.set(r.id,r)}for(let a=0;a<t.length;a++){const r=t[a],i=n.get(r.parent);i&&(i.data||(i.data=[]),i.data.push(r))}const s=n.get(e);this.setLevel(s,s.$level+1,!1)}add(t,e){const n=this._pool.get(t.parent||0);t.$level=n.$level+1,this._pool.set(t.id,t),n.data?e===-1?n.data=[...n.data,t]:Et(n,e,t):n.data=[t]}addAfter(t,e){if(!e)return this.add(t,-1);const n=this.byId(e),s=this.byId(n.parent),a=R(s,n.id)+1;t.parent=s.id,t.$level=s.$level+1,this.add(t,a)}remove(t){const e=this._pool.get(t);this._remove(e);const n=this._pool.get(e.parent);n.data=n.data.filter(s=>s.id!=t),this._clearBranch(n)}_remove(t){t.data&&t.data.forEach(e=>this._remove(e)),this._pool.delete(t.id)}update(t,e){let n=this._pool.get(t);const s=this._pool.get(n.parent),a=R(s,n.id);n={...n,...e},s&&a>=0&&(s.data[a]=n,s.data=[...s.data]),this._pool.set(n.id,n)}move(t,e,n){const s=this._pool.get(t),a=e==="child",r=this._pool.get(n),i=r.$level+(a?1:0);if(!s||!r)return;const o=this._pool.get(s.parent),c=a?r:this._pool.get(r.parent);c.data||(c.data=[]);const d=R(o,s.id);Ie(o,d);const u=a?c.data.length:R(c,r.id)+(e==="after"?1:0);if(Et(c,u,s),o.id===c.id&&d===u)return null;s.parent=c.id,s.$level!==i&&(s.$level=i,this.setLevel(s,i+1,!0)),this.update(s.id,s),this._clearBranch(o)}_clearBranch(t){t.data&&!t.data.length&&(t.open&&delete t.open,this.update(t.id,{data:null}))}toArray(){const t=[],e=this._pool.get(0).data;return e&&Ct(e,t),t}byId(t){return this._pool.get(t)}getBranch(t){return this._pool.get(t).data}forEach(t){this._pool.forEach((e,n)=>{n!==0&&t(e)})}eachChild(t,e){const n=this.byId(e);!n||!n.data||n.data.forEach((s,a)=>{t(this.byId(s.id),a),this.eachChild(t,s.id)})}setLevel(t,e,n){t.data&&(t.data=t.data.map(s=>(n&&(s={...s},this._pool.set(s.id,s)),s.$level=e,s.data&&this.setLevel(s,e+1,n),s)))}};function Ct(t,e){t.forEach(n=>{e.push(n),n.open===!0&&Ct(n.data,e)})}function Ie(t,e){const n=[...t.data];n.splice(e,1),t.data=n}function Et(t,e,n){const s=[...t.data];s.splice(e,0,n),t.data=s}function R(t,e){return t?.data.findIndex(n=>n.id===e)}var Ot=2,We=class{constructor(t){t&&(this._writable=t.writable,this._async=t.async),this._values={},this._state={}}setState(t,e=0){const n={};return this._wrapProperties(t,this._state,this._values,"",n,e),n}getState(){return this._values}getReactive(){return this._state}_wrapProperties(t,e,n,s,a,r){for(const i in t){const o=e[i],c=n[i],d=t[i];if(o&&(c===d&&typeof d!="object"||d instanceof Date&&c instanceof Date&&c.getTime()===d.getTime()))continue;const u=s+(s?".":"")+i;o?(o.__parse(d,u,a,r)&&(n[i]=d),r&Ot?a[u]=o.__trigger:o.__trigger()):(d&&d.__reactive?e[i]=this._wrapNested(d,d,u,a):e[i]=this._wrapWritable(d),n[i]=d),a[u]=a[u]||null}}_wrapNested(t,e,n,s){const a=this._wrapWritable(t);return this._wrapProperties(t,a,e,n,s,0),a.__parse=(r,i,o,c)=>(this._wrapProperties(r,a,e,i,o,c),!1),a}_wrapWritable(t){const e=[],n=function(){for(let s=0;s<e.length;s++)e[s](t)};return{subscribe:s=>(e.push(s),this._async?setTimeout(s,1,t):s(t),()=>{const a=e.indexOf(s);a>=0&&e.splice(a,1)}),__trigger:()=>{e.length&&(this._async?setTimeout(n,1):n())},__parse:function(s){return t=s,!0}}}},$e=class{constructor(t,e,n,s){typeof t=="function"?this._setter=t:this._setter=t.setState.bind(t),this._routes=e,this._parsers=n,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(a=>{a.in.forEach(r=>{const i=this._triggers.get(r)||[];i.push(a),this._triggers.set(r,i)}),a.out.forEach(r=>{const i=this._sources.get(r)||{};a.in.forEach(o=>i[o]=!0),this._sources.set(r,i)})}),this._routes.forEach(a=>{a.length=Math.max(...a.in.map(r=>Ht(r,this._sources,1)))}),this._bus=s}init(t){const e={};for(const n in t)if(this._prev[n]!==t[n]){const s=this._parsers[n];e[n]=s?s(t[n]):t[n]}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,Ot);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 n=t.signals[e];n&&n()}}}setState(t,e=[]){const n=this._setter(t);return this._triggerUpdates(n,e),n}_triggerUpdates(t,e){const n=Object.keys(t),s=!e.length;e=e||[];for(let a=0;a<n.length;a++){const r=n[a],i=this._triggers.get(r);i&&i.forEach(o=>{e.indexOf(o)==-1&&e.push(o)})}s&&this._execNext(e)}_execNext(t){for(;t.length;){t.sort((n,s)=>n.length<s.length?1:-1);const e=t[t.length-1];t.splice(t.length-1),e.exec(t)}}};function Ht(t,e,n){const s=e.get(t);if(!s)return n;const a=Object.keys(s).map(r=>Ht(r,e,n+1));return Math.max(...a)}var Pe=class{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(t,e,n){let s=this._handlers[t];s?n&&n.intercept?s.unshift(e):s.push(e):s=this._handlers[t]=[e],n&&n.tag&&this._tag.set(e,n.tag)}intercept(t,e,n){this.on(t,e,{...n,intercept:!0})}detach(t){for(const e in this._handlers){const n=this._handlers[e];for(let s=n.length-1;s>=0;s--)this._tag.get(n[s])===t&&n.splice(s,1)}}async exec(t,e){const n=this._handlers[t];if(n)for(let s=0;s<n.length;s++){const a=n[s](e);if(a===!1||a&&a.then&&await a===!1)return}return this._nextHandler&&await this._nextHandler.exec(t,e),e}setNext(t){return this._nextHandler=t}};new Date().valueOf();function Ce(t){return e=>e[t]}function at(t,e){return(e.getter||Ce(e.id))(t)}const Ee={text:(t,e)=>t?t.toString().toLowerCase().indexOf(e.toLowerCase())!==-1:!e,richselect:(t,e)=>typeof e!="number"&&!e?!0:t==e,datepicker:(t,e)=>e?t&&Fe(t,e):!0};function Oe(t){return Ee[t]}function He(t,e){const n=[];for(const s in t){const a=e.find(c=>c.id==s),{config:r,type:i}=a.header.find(c=>c.filter).filter,o=t[s];n.push(c=>{const d=at(c,a);return r?.handler?r.handler(d,o):Oe(i)(d,o)})}return s=>{for(let a=0;a<n.length;a++)if(!n[a](s))return!1;return!0}}function Fe(t,e){return t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()}new Date().valueOf(),new Date().valueOf();function Ne(t,e){return typeof t=="string"?t.localeCompare(e,void 0,{numeric:!0}):t instanceof Date||e instanceof Date?t?e?t.getTime()-e.getTime():-1:1:(t??0)-(e??0)}function Ye(t,e){return typeof t=="string"?-t.localeCompare(e,void 0,{numeric:!0}):t instanceof Date||e instanceof Date?e?t?e.getTime()-t.getTime():-1:1:(e??0)-(t??0)}function Ae({order:t,key:e},n){const s=t==="asc"?Ne:Ye;return(a,r)=>s(n?at(a,n):a[e],n?at(r,n):r[e])}function ze(t,e){if(!t||!t.length)return;const n=t.map(s=>{const a=e.find(r=>r.id==s.key);return Ae(s,a)});return t.length===1?n[0]:function(s,a){for(let r=0;r<n.length;r++){const i=n[r](s,a);if(i!==0)return i}return 0}}function Be(t,e,n){return t.sort(ze(e,n))}function Ft(t,e,n,s){const a=t.id===0||e(t);let r=!1;if(Array.isArray(t.data)){for(const i of t.data)Ft(i,e,n,s)&&(r=!0);r?(delete t.$empty,s&&(t.open=!0)):t.$empty=!0}return(a||r)&&t.id!==0?(n.add(t.id),!0):!1}function Nt(t,e,n){t.has(e)&&t.delete(e),n?.length&&n.forEach(s=>Nt(t,s.id,s.data))}class je extends Te{_filteredIds;constructor(e){super(),this.parse(e,0)}parse(e,n){if(!e||!e.length)return;const s=e.map(a=>this.normalizeTask(a));super.parse(s,n)}getBranch(e){const n=this._pool.get(e);return this._pool.get(n.parent||0).data}contains(e,n){const s=this._pool.get(e).data;let a=!1;if(s)for(let r=0;r<s.length;r++){if(s[r].id===n){a=!0;break}if(s[r].data&&(a=this.contains(s[r].id,n),a))break}return a}getIndexById(e){return this.getBranch(e).findIndex(n=>n.id===e)}add(e,n){const s=this.normalizeTask(e);if(super.add(s,n),this._filteredIds&&this._filteredIds.add(s.id),this._filteredIds&&e.parent){const a=this.byId(e.parent);this.hasChildItems(a)&&delete a.$empty}return s}copy(e,n,s){const a=this.add({...e,id:null,data:null,parent:n},s);let r=[[e.id,a.id]];return e.data?.forEach((i,o)=>{const c=this.copy(i,a.id,o);r=r.concat(c)}),r}remove(e){const n=this.byId(e);if(this._filteredIds&&Nt(this._filteredIds,e,n.data),super.remove(e),this._filteredIds&&n.parent){const s=this.byId(n.parent);this.hasChildItems(s)||(s.$empty=!0)}}normalizeTask(e){const n=e.id||st(),s=e.parent||0,a=e.text||"",r=e.type||"task",i=e.progress||0,o=e.details||"",c={...e,id:n,text:a,parent:s,progress:i,type:r,details:o};return e.segments&&(c.segments=e.segments.map(d=>({...d}))),e.segments&&(c.segments=e.segments.map(d=>({...d}))),c}getSummaryId(e,n=!1){const s=this._pool.get(e);if(!s.parent)return null;const a=this._pool.get(s.parent);if(n){let r=e,i=this.getSummaryId(r);const o=[];for(;i;)r=i,o.push(i),i=this.getSummaryId(r);return o}return a.type==="summary"?a.id:this.getSummaryId(a.id)}sort(e,n){e&&this.sortBranch(e,0,n)}sortBranch(e,n,s){const a=this._pool.get(n||0).data;a&&(Be(a,e,s),a.forEach(r=>{this.sortBranch(e,r.id,s)}))}serialize(){const e=[],n=this._pool.get(0).data;return n&&Yt(n,e),e}clear(){this.forEach(e=>{this.remove(e.id)})}filterTree(e,n){if(e){const s=this._pool.get(0),a=new Set;Ft(s,e,a,n),this._filteredIds=a}else this._filteredIds=null}toArray(e){let n=super.toArray();return!e&&this._filteredIds&&(n=n.filter(s=>this.isFilteredId(s.id))),n}isFilteredId(e){return this._filteredIds?.has(e)}hasChildItems(e){const n=e.data?.length;return n&&this._filteredIds?e.data.some(s=>this.isFilteredId(s.id)):!!n}}function Yt(t,e){t.forEach(n=>{e.push(n),n.data&&Yt(n.data,e)})}function w(t){const e=Object.prototype.toString.call(t);return t instanceof Date||typeof t=="object"&&e==="[object Date]"?new t.constructor(+t):typeof t=="number"||e==="[object Number]"||typeof t=="string"||e==="[object String]"?new Date(t):new Date(NaN)}function D(t,e){return t instanceof Date?new t.constructor(e):new Date(e)}function V(t,e){const n=w(t);return isNaN(e)?D(t,NaN):(e&&n.setDate(n.getDate()+e),n)}function rt(t,e){const n=w(t);if(isNaN(e))return D(t,NaN);if(!e)return n;const s=n.getDate(),a=D(t,n.getTime());a.setMonth(n.getMonth()+e+1,0);const r=a.getDate();return s>=r?a:(n.setFullYear(a.getFullYear(),a.getMonth(),s),n)}function At(t,e){const n=+w(t);return D(t,n+e)}const J=6048e5,qe=864e5,zt=6e4,Bt=36e5;function Le(t,e){return At(t,e*Bt)}let Ue={};function j(){return Ue}function C(t,e){const n=j(),s=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=w(t),r=a.getDay(),i=(r<s?7:0)+r-s;return a.setDate(a.getDate()-i),a.setHours(0,0,0,0),a}function Y(t){return C(t,{weekStartsOn:1})}function jt(t){const e=w(t),n=e.getFullYear(),s=D(t,0);s.setFullYear(n+1,0,4),s.setHours(0,0,0,0);const a=Y(s),r=D(t,0);r.setFullYear(n,0,4),r.setHours(0,0,0,0);const i=Y(r);return e.getTime()>=a.getTime()?n+1:e.getTime()>=i.getTime()?n:n-1}function O(t){const e=w(t);return e.setHours(0,0,0,0),e}function K(t){const e=w(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function it(t,e){const n=O(t),s=O(e),a=+n-K(n),r=+s-K(s);return Math.round((a-r)/qe)}function ot(t){const e=jt(t),n=D(t,0);return n.setFullYear(e,0,4),n.setHours(0,0,0,0),Y(n)}function Xe(t,e){return At(t,e*zt)}function Qe(t,e){const n=e*3;return rt(t,n)}function qt(t,e){const n=e*7;return V(t,n)}function Ge(t,e){return rt(t,e*12)}function q(t,e){const n=w(t),s=w(e),a=n.getTime()-s.getTime();return a<0?-1:a>0?1:a}function Re(t,e){const n=O(t),s=O(e);return+n==+s}function Ve(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Je(t){if(!Ve(t)&&typeof t!="number")return!1;const e=w(t);return!isNaN(Number(e))}function ct(t,e){const n=Y(t),s=Y(e),a=+n-K(n),r=+s-K(s);return Math.round((a-r)/J)}function Ke(t,e){const n=w(t),s=w(e),a=n.getFullYear()-s.getFullYear(),r=n.getMonth()-s.getMonth();return a*12+r}function Ze(t,e){const n=w(t),s=w(e);return n.getFullYear()-s.getFullYear()}function dt(t){return e=>{const n=(t?Math[t]:Math.trunc)(e);return n===0?0:n}}function Lt(t,e){return+w(t)-+w(e)}function tn(t,e,n){const s=Lt(t,e)/Bt;return dt(n?.roundingMethod)(s)}function en(t,e,n){const s=Lt(t,e)/zt;return dt(n?.roundingMethod)(s)}function Ut(t){const e=w(t);return e.setHours(23,59,59,999),e}function ut(t){const e=w(t),n=e.getMonth();return e.setFullYear(e.getFullYear(),n+1,0),e.setHours(23,59,59,999),e}function nn(t){const e=w(t);return+Ut(e)==+ut(e)}function Xt(t,e){const n=w(t),s=w(e),a=q(n,s),r=Math.abs(Ke(n,s));let i;if(r<1)i=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-a*r);let o=q(n,s)===-a;nn(w(t))&&r===1&&q(t,s)===1&&(o=!1),i=a*(r-Number(o))}return i===0?0:i}function sn(t,e,n){const s=Xt(t,e)/3;return dt(n?.roundingMethod)(s)}function an(t,e){const n=w(t),s=w(e),a=q(n,s),r=Math.abs(Ze(n,s));n.setFullYear(1584),s.setFullYear(1584);const i=q(n,s)===-a,o=a*(r-+i);return o===0?0:o}function L(t){const e=w(t),n=e.getMonth(),s=n-n%3;return e.setMonth(s,1),e.setHours(0,0,0,0),e}function Qt(t){const e=w(t);return e.setDate(1),e.setHours(0,0,0,0),e}function rn(t){const e=w(t),n=e.getFullYear();return e.setFullYear(n+1,0,0),e.setHours(23,59,59,999),e}function Gt(t){const e=w(t),n=D(t,0);return n.setFullYear(e.getFullYear(),0,1),n.setHours(0,0,0,0),n}function on(t){const e=w(t);return e.setMinutes(59,59,999),e}function cn(t,e){const n=j(),s=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=w(t),r=a.getDay(),i=(r<s?-7:0)+6-(r-s);return a.setDate(a.getDate()+i),a.setHours(23,59,59,999),a}function lt(t){const e=w(t),n=e.getMonth(),s=n-n%3+3;return e.setMonth(s,0),e.setHours(23,59,59,999),e}const dn={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"}},un=(t,e,n)=>{let s;const a=dn[t];return typeof a=="string"?s=a:e===1?s=a.one:s=a.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+s:s+" ago":s};function ht(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const ln={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},hn={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},fn={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},mn={date:ht({formats:ln,defaultWidth:"full"}),time:ht({formats:hn,defaultWidth:"full"}),dateTime:ht({formats:fn,defaultWidth:"full"})},gn={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},pn=(t,e,n,s)=>gn[t];function U(t){return(e,n)=>{const s=n?.context?String(n.context):"standalone";let a;if(s==="formatting"&&t.formattingValues){const i=t.defaultFormattingWidth||t.defaultWidth,o=n?.width?String(n.width):i;a=t.formattingValues[o]||t.formattingValues[i]}else{const i=t.defaultWidth,o=n?.width?String(n.width):t.defaultWidth;a=t.values[o]||t.values[i]}const r=t.argumentCallback?t.argumentCallback(e):e;return a[r]}}const yn={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},kn={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},wn={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"]},bn={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"]},_n={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"}},xn={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"}},vn=(t,e)=>{const n=Number(t),s=n%100;if(s>20||s<10)switch(s%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},Sn={ordinalNumber:vn,era:U({values:yn,defaultWidth:"wide"}),quarter:U({values:kn,defaultWidth:"wide",argumentCallback:t=>t-1}),month:U({values:wn,defaultWidth:"wide"}),day:U({values:bn,defaultWidth:"wide"}),dayPeriod:U({values:_n,defaultWidth:"wide",formattingValues:xn,defaultFormattingWidth:"wide"})};function X(t){return(e,n={})=>{const s=n.width,a=s&&t.matchPatterns[s]||t.matchPatterns[t.defaultMatchWidth],r=e.match(a);if(!r)return null;const i=r[0],o=s&&t.parsePatterns[s]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(o)?Dn(o,h=>h.test(i)):Mn(o,h=>h.test(i));let d;d=t.valueCallback?t.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const u=e.slice(i.length);return{value:d,rest:u}}}function Mn(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function Dn(t,e){for(let n=0;n<t.length;n++)if(e(t[n]))return n}function Tn(t){return(e,n={})=>{const s=e.match(t.matchPattern);if(!s)return null;const a=s[0],r=e.match(t.parsePattern);if(!r)return null;let i=t.valueCallback?t.valueCallback(r[0]):r[0];i=n.valueCallback?n.valueCallback(i):i;const o=e.slice(a.length);return{value:i,rest:o}}}const In=/^(\d+)(th|st|nd|rd)?/i,Wn=/\d+/i,$n={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},Pn={any:[/^b/i,/^(a|c)/i]},Cn={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},En={any:[/1/i,/2/i,/3/i,/4/i]},On={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},Hn={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]},Fn={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},Nn={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]},Yn={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},An={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}},zn={ordinalNumber:Tn({matchPattern:In,parsePattern:Wn,valueCallback:t=>parseInt(t,10)}),era:X({matchPatterns:$n,defaultMatchWidth:"wide",parsePatterns:Pn,defaultParseWidth:"any"}),quarter:X({matchPatterns:Cn,defaultMatchWidth:"wide",parsePatterns:En,defaultParseWidth:"any",valueCallback:t=>t+1}),month:X({matchPatterns:On,defaultMatchWidth:"wide",parsePatterns:Hn,defaultParseWidth:"any"}),day:X({matchPatterns:Fn,defaultMatchWidth:"wide",parsePatterns:Nn,defaultParseWidth:"any"}),dayPeriod:X({matchPatterns:Yn,defaultMatchWidth:"any",parsePatterns:An,defaultParseWidth:"any"})},Bn={code:"en-US",formatDistance:un,formatLong:mn,formatRelative:pn,localize:Sn,match:zn,options:{weekStartsOn:0,firstWeekContainsDate:1}};function jn(t){const e=w(t);return it(e,Gt(e))+1}function qn(t){const e=w(t),n=+Y(e)-+ot(e);return Math.round(n/J)+1}function Rt(t,e){const n=w(t),s=n.getFullYear(),a=j(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,i=D(t,0);i.setFullYear(s+1,0,r),i.setHours(0,0,0,0);const o=C(i,e),c=D(t,0);c.setFullYear(s,0,r),c.setHours(0,0,0,0);const d=C(c,e);return n.getTime()>=o.getTime()?s+1:n.getTime()>=d.getTime()?s:s-1}function Ln(t,e){const n=j(),s=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Rt(t,e),r=D(t,0);return r.setFullYear(a,0,s),r.setHours(0,0,0,0),C(r,e)}function Un(t,e){const n=w(t),s=+C(n,e)-+Ln(n,e);return Math.round(s/J)+1}function x(t,e){const n=t<0?"-":"",s=Math.abs(t).toString().padStart(e,"0");return n+s}const E={y(t,e){const n=t.getFullYear(),s=n>0?n:1-n;return x(e==="yy"?s%100:s,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):x(n+1,2)},d(t,e){return x(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return x(t.getHours()%12||12,e.length)},H(t,e){return x(t.getHours(),e.length)},m(t,e){return x(t.getMinutes(),e.length)},s(t,e){return x(t.getSeconds(),e.length)},S(t,e){const n=e.length,s=t.getMilliseconds(),a=Math.trunc(s*Math.pow(10,n-3));return x(a,e.length)}},A={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Vt={G:function(t,e,n){const s=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(s,{width:"abbreviated"});case"GGGGG":return n.era(s,{width:"narrow"});case"GGGG":default:return n.era(s,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const s=t.getFullYear(),a=s>0?s:1-s;return n.ordinalNumber(a,{unit:"year"})}return E.y(t,e)},Y:function(t,e,n,s){const a=Rt(t,s),r=a>0?a:1-a;if(e==="YY"){const i=r%100;return x(i,2)}return e==="Yo"?n.ordinalNumber(r,{unit:"year"}):x(r,e.length)},R:function(t,e){const n=jt(t);return x(n,e.length)},u:function(t,e){const n=t.getFullYear();return x(n,e.length)},Q:function(t,e,n){const s=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(s);case"QQ":return x(s,2);case"Qo":return n.ordinalNumber(s,{unit:"quarter"});case"QQQ":return n.quarter(s,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(s,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(s,{width:"wide",context:"formatting"})}},q:function(t,e,n){const s=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(s);case"qq":return x(s,2);case"qo":return n.ordinalNumber(s,{unit:"quarter"});case"qqq":return n.quarter(s,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(s,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(s,{width:"wide",context:"standalone"})}},M:function(t,e,n){const s=t.getMonth();switch(e){case"M":case"MM":return E.M(t,e);case"Mo":return n.ordinalNumber(s+1,{unit:"month"});case"MMM":return n.month(s,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(s,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(s,{width:"wide",context:"formatting"})}},L:function(t,e,n){const s=t.getMonth();switch(e){case"L":return String(s+1);case"LL":return x(s+1,2);case"Lo":return n.ordinalNumber(s+1,{unit:"month"});case"LLL":return n.month(s,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(s,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(s,{width:"wide",context:"standalone"})}},w:function(t,e,n,s){const a=Un(t,s);return e==="wo"?n.ordinalNumber(a,{unit:"week"}):x(a,e.length)},I:function(t,e,n){const s=qn(t);return e==="Io"?n.ordinalNumber(s,{unit:"week"}):x(s,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):E.d(t,e)},D:function(t,e,n){const s=jn(t);return e==="Do"?n.ordinalNumber(s,{unit:"dayOfYear"}):x(s,e.length)},E:function(t,e,n){const s=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(s,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(s,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(s,{width:"short",context:"formatting"});case"EEEE":default:return n.day(s,{width:"wide",context:"formatting"})}},e:function(t,e,n,s){const a=t.getDay(),r=(a-s.weekStartsOn+8)%7||7;switch(e){case"e":return String(r);case"ee":return x(r,2);case"eo":return n.ordinalNumber(r,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});case"eeee":default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(t,e,n,s){const a=t.getDay(),r=(a-s.weekStartsOn+8)%7||7;switch(e){case"c":return String(r);case"cc":return x(r,e.length);case"co":return n.ordinalNumber(r,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});case"cccc":default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(t,e,n){const s=t.getDay(),a=s===0?7:s;switch(e){case"i":return String(a);case"ii":return x(a,e.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(s,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(s,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(s,{width:"short",context:"formatting"});case"iiii":default:return n.day(s,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const s=t.getHours();let a;switch(s===12?a=A.noon:s===0?a=A.midnight:a=s/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(t,e,n){const s=t.getHours();let a;switch(s>=17?a=A.evening:s>=12?a=A.afternoon:s>=4?a=A.morning:a=A.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let s=t.getHours()%12;return s===0&&(s=12),n.ordinalNumber(s,{unit:"hour"})}return E.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):E.H(t,e)},K:function(t,e,n){const s=t.getHours()%12;return e==="Ko"?n.ordinalNumber(s,{unit:"hour"}):x(s,e.length)},k:function(t,e,n){let s=t.getHours();return s===0&&(s=24),e==="ko"?n.ordinalNumber(s,{unit:"hour"}):x(s,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):E.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):E.s(t,e)},S:function(t,e){return E.S(t,e)},X:function(t,e,n){const s=t.getTimezoneOffset();if(s===0)return"Z";switch(e){case"X":return Kt(s);case"XXXX":case"XX":return H(s);case"XXXXX":case"XXX":default:return H(s,":")}},x:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"x":return Kt(s);case"xxxx":case"xx":return H(s);case"xxxxx":case"xxx":default:return H(s,":")}},O:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+Jt(s,":");case"OOOO":default:return"GMT"+H(s,":")}},z:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+Jt(s,":");case"zzzz":default:return"GMT"+H(s,":")}},t:function(t,e,n){const s=Math.trunc(t.getTime()/1e3);return x(s,e.length)},T:function(t,e,n){const s=t.getTime();return x(s,e.length)}};function Jt(t,e=""){const n=t>0?"-":"+",s=Math.abs(t),a=Math.trunc(s/60),r=s%60;return r===0?n+String(a):n+String(a)+e+x(r,2)}function Kt(t,e){return t%60===0?(t>0?"-":"+")+x(Math.abs(t)/60,2):H(t,e)}function H(t,e=""){const n=t>0?"-":"+",s=Math.abs(t),a=x(Math.trunc(s/60),2),r=x(s%60,2);return n+a+e+r}const Zt=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},te=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},Xn=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],s=n[1],a=n[2];if(!a)return Zt(t,e);let r;switch(s){case"P":r=e.dateTime({width:"short"});break;case"PP":r=e.dateTime({width:"medium"});break;case"PPP":r=e.dateTime({width:"long"});break;case"PPPP":default:r=e.dateTime({width:"full"});break}return r.replace("{{date}}",Zt(s,e)).replace("{{time}}",te(a,e))},Qn={p:te,P:Xn},Gn=/^D+$/,Rn=/^Y+$/,Vn=["D","DD","YY","YYYY"];function Jn(t){return Gn.test(t)}function Kn(t){return Rn.test(t)}function Zn(t,e,n){const s=ts(t,e,n);if(console.warn(s),Vn.includes(t))throw new RangeError(s)}function ts(t,e,n){const s=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${s} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const es=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,ns=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ss=/^'([^]*?)'?$/,as=/''/g,rs=/[a-zA-Z]/;function is(t,e,n){const s=j(),a=n?.locale??s.locale??Bn,r=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,i=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??s.weekStartsOn??s.locale?.options?.weekStartsOn??0,o=w(t);if(!Je(o))throw new RangeError("Invalid time value");let c=e.match(ns).map(u=>{const h=u[0];if(h==="p"||h==="P"){const l=Qn[h];return l(u,a.formatLong)}return u}).join("").match(es).map(u=>{if(u==="''")return{isToken:!1,value:"'"};const h=u[0];if(h==="'")return{isToken:!1,value:os(u)};if(Vt[h])return{isToken:!0,value:u};if(h.match(rs))throw new RangeError("Format string contains an unescaped latin alphabet character `"+h+"`");return{isToken:!1,value:u}});a.localize.preprocessor&&(c=a.localize.preprocessor(o,c));const d={firstWeekContainsDate:r,weekStartsOn:i,locale:a};return c.map(u=>{if(!u.isToken)return u.value;const h=u.value;(!n?.useAdditionalWeekYearTokens&&Kn(h)||!n?.useAdditionalDayOfYearTokens&&Jn(h))&&Zn(h,e,String(t));const l=Vt[h[0]];return l(o,h,a.localize,d)}).join("")}function os(t){const e=t.match(ss);return e?e[1].replace(as,"'"):t}function ee(t){const e=w(t),n=e.getFullYear(),s=e.getMonth(),a=D(t,0);return a.setFullYear(n,s+1,0),a.setHours(0,0,0,0),a.getDate()}function cs(t){const e=w(t).getFullYear();return e%400===0||e%4===0&&e%100!==0}function ne(t){const e=w(t);return String(new Date(e))==="Invalid Date"?NaN:cs(e)?366:365}function ds(t){const e=ot(t),n=+ot(qt(e,60))-+e;return Math.round(n/J)}function z(t,e){const n=w(t),s=w(e);return+n==+s}function us(t){const e=w(t);return e.setMinutes(0,0,0),e}function ls(t,e,n){const s=C(t,n),a=C(e,n);return+s==+a}function hs(t,e){const n=w(t),s=w(e);return n.getFullYear()===s.getFullYear()&&n.getMonth()===s.getMonth()}function fs(t,e){const n=L(t),s=L(e);return+n==+s}function ms(t,e){const n=w(t),s=w(e);return n.getFullYear()===s.getFullYear()}const ft={year:an,quarter:sn,month:Xt,week:ct,day:it,hour:tn,minute:en},F={year:{quarter:4,month:12,week:ds,day:gs,hour:ps},quarter:{month:3,week:ys,day:se,hour:ks},month:{week:ws,day:bs,hour:_s},week:{day:7,hour:24*7},day:{hour:24},hour:{minute:60}};function gs(t){return t?ne(t):365}function ps(t){return ne(t)*24}function ys(t){const e=L(t),n=V(O(lt(t)),1);return ct(n,e)}function se(t){if(t){const e=L(t),n=lt(t);return it(n,e)+1}return 91}function ks(t){return se(t)*24}function ws(t){if(t){const e=Qt(t),n=V(O(ut(t)),1);return ct(n,e)}return 5}function bs(t){return t?ee(t):30}function _s(t){return ee(t)*24}function Z(t,e,n){const s=F[t][e];return s?typeof s=="number"?s:s(n):1}function xs(t,e){return t===e||!!(F[t]&&F[t][e])}const tt={year:Ge,quarter:Qe,month:rt,week:qt,day:V,hour:Le,minute:Xe};function et(t,e,n){if(e){if(t==="day")return(s,a)=>e.getWorkingDays(a,s,!0);if(t==="hour")return(s,a)=>e.getWorkingHours(a,s,!0)}return(s,a,r,i)=>{const o=F[t]?.[r];return!o||typeof o=="number"||ie(t,s,a,n)?Q(t,s,a,r,i,n):vs(s,a,t,r,i,n)}}function Q(t,e,n,s,a,r){const i=s||t;let o=n,c=e;if(a&&(o=W(i,n,r),c=W(i,e,r),c<e&&(c=I(i)(c,1))),t!==i){const d=ft[i](c,o),u=Z(t,i,n);return d/u}else return ft[i](c,o)}function vs(t,e,n,s,a,r){let i=0;const o=W(n,e,r);if(e>o){const d=tt[n](o,1);i=Q(n,d,e,s,void 0,r),e=d}let c=0;return ie(n,e,t,r)||(c=Q(n,W(n,t,r),e,void 0,void 0,r),e=tt[n](e,c)),c+=i+Q(n,t,e,s,void 0,r),!c&&a&&(c=Q(n,t,e,s,a,r)),c}function I(t,e){if(e){if(t==="day")return(n,s)=>e.addWorkingDays(n,s,!0);if(t==="hour")return(n,s)=>e.addWorkingHours(n,s)}return tt[t]}const ae={year:Gt,quarter:L,month:Qt,week:(t,e)=>C(t,{weekStartsOn:e}),day:O,hour:us};function W(t,e,n){const s=ae[t];return s?s(e,n):new Date(e)}const Ss={year:rn,quarter:lt,month:ut,week:(t,e)=>cn(t,{weekStartsOn:e}),day:Ut,hour:on},re={year:ms,quarter:fs,month:hs,week:(t,e,n)=>ls(t,e,{weekStartsOn:n}),day:Re};function ie(t,e,n,s){const a=re[t];return a?a(e,n,s):!1}const Ms={start:ae,end:Ss,add:tt,isSame:re,diff:ft,smallerCount:F},oe=t=>typeof t=="function"?t(new Date):t;function Ds(t,e){for(const n in e){if(n==="smallerCount"){const s=Object.keys(e[n]).sort((o,c)=>$.indexOf(o)-$.indexOf(c)).shift();let a=$.indexOf(s);const r=e[n][s],i=oe(r);for(let o=a-1;o>=0;o--){const c=$[o],d=oe(F[c][s]);if(i<=d)break;a=o}$.splice(a,0,t)}if(n==="biggerCount")for(const s in e[n])F[s][t]=e[n][s];else Ms[n][t]=e[n]}}function mt(t,e=1,n){return n.isWorkingDay(t)||(t=e>0?n.getNextWorkingDay(t):n.getPreviousWorkingDay(t)),t}function Ts(t){return(e,n)=>{if(n>0)for(let s=0;s<n;s++)e=t.getNextWorkingDay(e);if(n<0)for(let s=0;s>n;s--)e=t.getPreviousWorkingDay(e);return e}}function B(t){const e=new Date;return t.map(n=>({item:n,len:I(n.unit)(e,1)})).sort((n,s)=>n.len<s.len?-1:1)[0].item}const $=["year","quarter","month","week","day","hour"],gt=50,pt=300;function Is(t,e,n,s,a,r,i,o,c){const d=!t||n,u=!e||n;let h=t,l=e,m=!1,g=!1;(d||u)&&a?.forEach(p=>{let y=p.start;c&&p.base_start<p.start&&(y=p.base_start),d&&(!h||y<=h)&&(h=y,m=!0);let k=p.type==="milestone"?p.start:p.end;if(c){const b=p.type==="milestone"?p.base_start:p.base_end;b&&b>k&&(k=b)}u&&(!l||k>=l)&&(l=k,g=!0)});const f=I(s||"day");return h?m&&(h=f(h,-1)):l?h=f(l,-30):h=new Date,l?g&&(l=f(l,1)):l=f(h,30),{_start:h,_end:l}}function Ws(t,e,n,s,a,r,i,o){const c=B(i).unit,d=et(c,void 0,r),u=d(e,t,"",!0),h=W(c,e,r);t=W(c,t,r),e=h<e?I(c)(h,1):h;const l=u*s,m=a*Math.max(o,i.length),g=i.map(p=>{const y=[],k=I(p.unit);let b=W(p.unit,t,r);for(;b<e;){const _=k(b,p.step),v=b<t?t:b,M=_>e?e:_,P=d(M,v,"",!0)*s,T=typeof p.format=="function"?p.format(b,_):p.format;let S="";p.css&&(S+=typeof p.css=="function"?p.css(b):p.css),y.push({width:P,value:T,date:v,css:S,unit:p.unit}),b=_}return{cells:y,add:k,height:m/i.length}});let f=s;return c!==n&&(f=f/Z(c,n)),{rows:g,width:l,height:m,diff:d,start:t,end:e,lengthUnit:n,minUnit:c,lengthUnitWidth:f}}function $s(t,e,n,s){const a=typeof t=="boolean"?{}:t,r=$.indexOf(B(n).unit);if(typeof a.level>"u"&&(a.level=r),a.levels)a.levels.forEach(c=>{c.minCellWidth||(c.minCellWidth=nt(a.minCellWidth,gt)),c.maxCellWidth||(c.maxCellWidth=nt(a.maxCellWidth,pt))});else{const c=[],d=n.length||1,u=nt(a.minCellWidth,gt),h=nt(a.maxCellWidth,pt);n.forEach(l=>{l.format&&!e[l.unit]&&(e[l.unit]=l.format)}),$.forEach((l,m)=>{if(m===r)c.push({minCellWidth:u,maxCellWidth:h,scales:n});else{const g=[];if(m)for(let f=d-1;f>0;f--){const p=$[m-f];p&&g.push({unit:p,step:1,format:e[p]})}g.push({unit:l,step:1,format:e[l]}),c.push({minCellWidth:u,maxCellWidth:h,scales:g})}}),a.levels=c}a.levels[a.level]||(a.level=0);const i=a.levels[a.level],o=Math.min(Math.max(s,i.minCellWidth),i.maxCellWidth);return{zoom:a,scales:i.scales,cellWidth:o}}function Ps(t,e,n,s,a,r,i){t.level=n;let o;const c=s.scales||s,d=B(c).unit,u=Es(d,a);if(e<0){const m=Z(d,a);o=i*m}else{const m=Z(B(r).unit,d);o=Math.round(i/m)}const h=s.minCellWidth??gt,l=s.maxCellWidth??pt;return{scales:c,cellWidth:Math.min(l,Math.max(h,o)),lengthUnit:u,zoom:t}}function Cs(t,e){const{_start:n,_scales:s,start:a,end:r,_end:i,cellWidth:o,_scaleDate:c,_zoomOffset:d,_weekStart:u}=e,h=I(s.minUnit);let l=s.width;if(a&&r){if(l<t&&l){const y=t/l;return{cellWidth:o*y}}return{}}let m=0;for(;l<t;)l+=o,m++;let g=0;if(m){if(r)g=-m;else if(c&&d!==null){const y=d/o,k=s.diff(c,n,"hour");g=Math.floor(k-y)}}let f=a;a||(f=W(s.minUnit,h(n,g),u));let p=0;if(c){const y=s.diff(c,f,"hour");p=Math.max(0,Math.round(y*o)-(d||0))}return{_start:f,_end:r||h(i,m-g),scrollLeft:p}}function Es(t,e){const n=$.indexOf(t),s=$.indexOf(e);return s>=n?t==="hour"?"hour":"day":$[s]}function nt(t,e){return t??e}const yt=7,Os=3,kt=8,ce=4,Hs=kt+ce;function de(t,e,n){(t.open||t.type!=="summary"||n)&&t.data?.forEach(s=>{s.$x+=e,s.$x_rollup&&(s.$x_rollup+=e),de(s,e,n)})}function wt(t,e){const n=t.getSummaryId(e.id);if(n){const s=t.byId(n),a={xMin:1/0,xMax:0};ue(s,a),s.$x=a.xMin,s.$w=a.xMax-a.xMin,wt(t,s)}}function ue(t,e){t.data?.forEach(n=>{if(!n.unscheduled){const s=n.type==="milestone"&&n.$h?n.$h/2:0;e.xMin>n.$x+s&&(e.xMin=n.$x+s);const a=n.$x+n.$w-s;e.xMax<a&&(e.xMax=a)}n.type!=="summary"&&ue(n,e)})}function bt(t,e){let n;e&&(n=e.filter(a=>a.parent===t.id));const s={data:n,...t};if(s.data?.length)s.data.forEach(a=>{if(a.unscheduled&&!a.data)return;(e||a.type!=="summary"&&a.data)&&(a.unscheduled&&(a={...a,start:void 0,end:void 0}),a=bt(a,e)),a.start&&(!s.start||s.start>a.start)&&(s.start=new Date(a.start));const r=a.end||a.start;r&&(!s.end||s.end<r)&&(s.end=new Date(r))});else if(t.type==="summary")throw Error("Summary tasks must have start and end dates if they have no subtasks");return s}function le(t,e,n){return _t(t,e,n,!1),n.splitTasks&&t.segments?.forEach(s=>{le(s,e,{...n,baselines:!1}),s.$x-=t.$x}),n.baselines&&_t(t,e,n,!0),t.data&&!t.open&&he(t,n),t}function _t(t,e,n,s){const{cellWidth:a,cellHeight:r,_scales:i,baselines:o,_rollups:c}=n,{start:d,end:u,lengthUnit:h,diff:l}=i,m=(s?"base_":"")+"start",g=(s?"base_":"")+"end",f="$x"+(s?"_base":""),p="$y"+(s?"_base":""),y="$w"+(s?"_base":""),k="$h"+(s?"_base":""),b="$skip"+(s?"_baseline":"");let _=t[m],v=t[g];if(s&&!_){t[b]=!0;return}t[m]<d&&(t[g]<d||z(t[g],d))?_=v=d:t[m]>u&&(_=v=u),t[f]=Math.round(l(_,d,h)*a),t[y]=Math.round(l(v,_,h,!0)*a),e!==null&&(t[p]=s?t.$y+t.$h+ce:r*e+Os),t[k]=s?kt:o?r-yt-Hs:r-yt,t.type==="milestone"&&(t[f]=t[f]-t.$h/2,t[y]=t.$h,s&&(t[p]=t.$y+kt,t[y]=t[k]=t.$h)),n.unscheduledTasks&&t.unscheduled&&!s?t.$skip=!0:t[b]=z(_,v)}function he(t,e,n){n=n??t.type!=="summary",t.data&&!t.$skip&&(n||e._rollups)&&t.data.forEach(s=>{(n||s.rollup)&&_t(s,null,e,!1),he(s,e,n)})}function Fs(t,e){return!1}function Ns(t,e){}const xt=20,Ys=function(t,e,n,s){if(!e||!n||!e.$y||!n.$y||e.$skip||n.$skip)return t.$p="",t.$pl=0,t;let a=!1,r=!1;switch(t.type){case"e2s":r=!0;break;case"s2s":a=!0,r=!0;break;case"s2e":a=!0;break}const i=a?e.$x:e.$x+e.$w,o=e.$y+e.$h/2,c=r?n.$x:n.$x+n.$w,d=n.$y+n.$h/2,u=(s-yt-n.$h)/2;if(i!==c||o!==d){const h=zs(i,o,c,d,a,r,s/2,u),l=Bs(c,d,r);t.$p=`${h},${l}`,t.$pl=As(t.$p)}return t};function As(t){const e=t.split(",").map(Number),n=[];for(let a=0;a<e.length;a+=2)a+1<e.length&&n.push([e[a],e[a+1]]);let s=0;for(let a=0;a<n.length-1;a++){const[r,i]=n[a],[o,c]=n[a+1];s+=Math.hypot(o-r,c-i)}return s}function zs(t,e,n,s,a,r,i,o){const c=xt*(a?-1:1),d=xt*(r?-1:1),u=t+c,h=n+d,l=[t,e,u,e,0,0,0,0,h,s,n,s],m=h-u;let g=s-e;const f=r===a;return f||(h<=t+xt-2&&r||h>t&&!r)&&(g=g-i+o),f&&r&&u>h||f&&!r&&u<h?(l[4]=l[2]+m,l[5]=l[3],l[6]=l[4],l[7]=l[5]+g):(l[4]=l[2],l[5]=l[3]+g,l[6]=l[4]+m,l[7]=l[5]),l.join(",")}function Bs(t,e,n){return n?`${t-5},${e-3},${t-5},${e+3},${t},${e}`:`${t+5},${e+3},${t+5},${e-3},${t},${e}`}function js(t,e,n){if(e&&n){const s=n.x-e.x,a=n.y-e.y,r=(s>0?e.x:n.x)-t.left,i=(a>0?e.y:n.y)-t.top,o=`${s>0?0:-s},${a>0?0:-a},${s>0?s:0},${a>0?a:0}`;return{width:Math.abs(s),height:Math.abs(a),left:r,top:i,p:o}}else return null}function fe(t){return t.map(e=>{const n=e.id||st();return{...e,id:n}})}const me=["start","end","duration"];function qs(t,e){const{type:n,unscheduled:s}=t;return s||n==="summary"?!me.includes(e):n==="milestone"?!["end","duration"].includes(e):!0}function Ls(t,e){return typeof e=="function"?e:me.includes(t)?(typeof e=="string"&&(e={type:e,config:{}}),e.config||(e.config={}),e.type==="datepicker"&&(e.config.buttons=["today"]),(n,s)=>qs(n,s.id)?e:null):e}function Us(t){return!t||!t.length?[]:t.map(e=>{const n=e.align||"left",s=e.id==="add-task",a=!s&&e.flexgrow?e.flexgrow:null,r=a?1:e.width||(s?50:120),i=e.editor&&Ls(e.id,e.editor);let o=Array.isArray(e.header)?e.header:[e.header];return o=o.map(c=>(typeof c!="object"&&(c={text:c}),c.filter&&typeof c.filter!="object"&&(c.filter={type:c.filter}),c)),{width:r,align:n,header:o,id:e.id,template:e.template,_template:e._template,...a&&{flexgrow:a},cell:e.cell,resize:e.resize??!0,sort:e.sort??!s,...i&&{editor:i},...e.options&&{options:e.options},getter:e.getter}})}const Xs=[{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:"add-task",header:"Add task",width:50,align:"center",sort:!1,resize:!1}];function G(t,e,n,s){const{selected:a,tasks:r}=t.getState(),i=a.length,o=["edit-task","paste-task","edit-task:task","edit-task:segment"],c=["copy-task","cut-task"],d=["copy-task","cut-task","delete-task","indent-task:remove","move-task:down"],u=["add-task","undo","redo"],h=["indent-task:add","move-task:down","move-task:up"],l={"indent-task:remove":2},m=!i&&u.includes(e),g={parent:h.includes(e),level:l[e]};if(n=n||(i?a[a.length-1]:null),!(!n&&!m)){if(e!=="paste-task"&&(t._temp=null),o.includes(e)||m||a.length===1)ge(t,e,n,s);else if(i){const f=c.includes(e)?a:Qs(a,r,g);d.includes(e)&&f.reverse();const p=t.getHistory();p&&p.startBatch(),f.forEach((y,k)=>ge(t,e,y,s,k)),p&&p.endBatch()}}}function Qs(t,e,n){let s=t.map(a=>{const r=e.byId(a);return{id:a,level:r.$level,parent:r.parent,index:e.getIndexById(a)}});return(n.parent||n.level)&&(s=s.filter(a=>n.level&&a.level<=n.level||!t.includes(a.parent))),s.sort((a,r)=>a.level-r.level||a.index-r.index),s.map(a=>a.id)}function ge(t,e,n,s,a){const r=t.exec?t.exec:t.in.exec;let i=e.split(":")[0],o=e.split(":")[1];const c=n?.id||n;let d={id:c},u={},h=!1;if(i==="copy-task"||i==="cut-task"){t._temp||(t._temp=[]),t._temp.push({id:c,cut:i==="cut-task"});return}else if(i==="paste-task"){if(t._temp&&t._temp.length){const l=t.getHistory();l&&l.startBatch();const m=new Map;if(t._temp.forEach(g=>{const f={id:g.id,target:c,mode:"after"};r(g.cut?"move-task":"copy-task",f),m.set(g.id,f.id)}),!t._temp[0].cut){const{links:g}=t.getState(),f=t._temp.map(y=>y.id),p=[];g.forEach(y=>{f.includes(y.source)&&f.includes(y.target)&&p.push(y)}),p.forEach(y=>{r("add-link",{link:{source:m.get(y.source),target:m.get(y.target),type:y.type}})}),t._temp.forEach((y,k)=>{r("select-task",{id:m.get(y.id),toggle:!!k})})}l&&l.endBatch(),t._temp=null}return}else i==="add-task"?(u={task:{type:"task",text:s("New Task")},target:c,show:!0,mode:"after",select:!1},d={},h=!0):i==="edit-task"?(i="show-editor",o==="segment"&&typeof n=="object"&&(u=n)):i==="convert-task"?(i="update-task",u={task:{type:o}},o=void 0):i==="indent-task"&&(o=o==="add");if(i==="split-task"&&typeof n=="object")u=n;else if(i==="delete-task"&&o==="segment"&&typeof n=="object"){const l=t.getTask(c),{segmentIndex:m}=n,g=l.segments.filter((f,p)=>p!==m);r("update-task",{id:c,task:{segments:g}});return}typeof o<"u"&&(u={...u,mode:o}),d={...d,...u},r(i,d),h&&r("select-task",{id:d.id,toggle:!!a})}function pe(t,e){return t.some(n=>n.data?pe(n.data,e):n.id===e)}const ye=(t,e)=>I(t,e),Gs=(t,e)=>et(t,e);function ke(t,e){Array.isArray(t)&&(t.forEach(n=>N(n,e)),t.forEach(n=>{if(n.type==="summary"&&!(n.start&&n.end)){const{start:s,end:a}=bt(n,t);n.start=s,n.end=a,N(n,e)}}))}function N(t,e){t.unscheduled||we(t,e,!1),t.base_start&&we(t,e,!0)}function we(t,e,n){const{calendar:s,durationUnit:a}=e,r=a||"day",[i,o,c]=be(n);t.type==="milestone"?(t[c]=0,t[o]=void 0):t[i]&&(t[c]?t[o]=ye(r,s)(t[i],t[c]):t[o]?t[c]=Gs(r,s)(t[o],t[i]):(t[o]=ye(r,s)(t[i],1),t[c]=1))}function be(t){return t?["base_start","base_end","base_duration"]:["start","end","duration"]}function _e(t,e,n){const[s,a,r]=be(n);(e===r||e===s)&&(t[a]=null),e===a&&(t[r]=0,t[s]&&t[s]>=t[a]&&(t[a]=null,t[r]=1))}function Rs(t,e,n){_e(t,n,!1),t.base_start&&_e(t,n,!0),N(t,e)}class Vs extends We{in;_router;_modules=new Map;constructor(e){super({writable:e,async:!1}),this._router=new $e(super.setState.bind(this),[{in:["tasks","start","end","scales","autoScale","markers","projectStart","projectEnd","baselines"],out:["_start","_end"],exec:a=>{const{_end:r,_start:i,start:o,end:c,tasks:d,scales:u,autoScale:h,markers:l,projectStart:m,projectEnd:g,baselines:f}=this.getState();if(!o||!c||h){const p=B(u).unit,y=Is(o,c,h,p,d,l,m,g,f);(y._end!==r||y._start!==i)&&this.setState(y,a)}else this.setState({_start:o,_end:c},a)}},{in:["columns"],out:["_headerLength"],exec:a=>{const r=this.getState().columns;let i=1;r.length&&r.forEach(o=>{i=Math.max(o.header.length,i)}),this.setState({_headerLength:i},a)}},{in:["_start","_end","cellWidth","scaleHeight","scales","lengthUnit","_weekStart","_headerLength"],out:["_scales"],exec:a=>{const r=this.getState();let{lengthUnit:i}=r;const{_start:o,_end:c,cellWidth:d,scaleHeight:u,scales:h,_weekStart:l,_headerLength:m}=r,g=B(h).unit;xs(g,i)||(i=g);const f=Ws(o,c,i,d,u,l,h,m);this.setState({_scales:f},a)}},{in:["_scales","rollups","tasks","cellHeight","baselines","unscheduledTasks"],out:["_tasks"],exec:a=>{const{cellWidth:r,cellHeight:i,tasks:o,_scales:c,baselines:d,splitTasks:u,unscheduledTasks:h,_rollups:l}=this.getState(),m=o.toArray().map((g,f)=>le(g,f,{cellWidth:r,cellHeight:i,_scales:c,baselines:d,splitTasks:u,unscheduledTasks:h,_rollups:l}));this.setState({_tasks:m},a)}},{in:["_tasks","links","cellHeight"],out:["_links"],exec:a=>{const{tasks:r,links:i,cellHeight:o,criticalPath:c,_isFiltered:d}=this.getState(),u=i.map(h=>{const l=r.byId(h.source),m=r.byId(h.target);return Ys(h,l,m,o)}).toSorted((h,l)=>c?!!h.critical==!!l.critical?l.$pl-h.$pl:h.critical?1:-1:l.$pl-h.$pl).filter(h=>h&&d?r.isFilteredId(h.source)&&r.isFilteredId(h.target):h!==null);this.setState({_links:u},a)}},{in:["tasks","activeTask"],out:["_activeTask"],exec:a=>{const r=this.getState();let{activeTask:i}=r;i&&typeof i=="object"&&(i=i.id);const o=r.tasks.byId(i);this.setState({_activeTask:o||null},a)}},{in:["tasks","selected"],out:["_selected"],exec:a=>{const{tasks:r,selected:i,_isFiltered:o}=this.getState(),c=i.map(d=>r.byId(d)).filter(d=>d?!o||r.isFilteredId(d.id):!1);this.setState({_selected:c},a)}},{in:["start","end"],out:["cellWidth"],exec:a=>{const{_cellWidth:r,cellWidth:i}=this.getState();r!==i&&this.setState({cellWidth:r},a)}}],{tasks:a=>new je(a),links:a=>new Pt(a),columns:a=>Us(a)});const n=this.in=new Pe;n.on("show-editor",a=>{const{splitTasks:r}=this.getState();if(r){const{id:i,segmentIndex:o}=a;if(i&&(o||o===0)){this.setStateAsync({activeTask:{id:i,segmentIndex:o}});return}}this.setStateAsync({activeTask:a.id})}),n.on("select-task",({id:a,toggle:r,range:i,show:o=!0,segmentIndex:c,focus:d,eventSource:u})=>{const{selected:h,_tasks:l,activeTask:m,splitTasks:g}=this.getState();let f=!1,p;if(h.length&&(r||i)){const k=[...h];if(i){const b=k[k.length-1],_=l.findIndex(S=>S.id===b),v=l.findIndex(S=>S.id===a),M=Math.min(_,v),P=Math.max(_,v)+1,T=l.slice(M,P).map(S=>S.id);_>v&&T.reverse(),T.forEach(S=>{k.includes(S)||k.push(S)})}else if(r){const b=k.findIndex(_=>_===a);b===-1?k.push(a):(f=!0,k.splice(b,1))}p=k}else p=[a];const y={selected:p};this.setStateAsync(y),p.length&&(d&&(o=d==="chart"?"xy":o||"y"),o&&(this.scrollToTask(p[0],o,u||"select-task"),d&&this.setStateAsync({focusTask:{id:p[0],column:d==="grid"}}))),!f&&m&&(m!==a||g)&&n.exec("show-editor",{id:a,...g&&{segmentIndex:c}})}),n.on("delete-link",({id:a})=>{const{links:r}=this.getState();r.remove(a),this.setStateAsync({links:r})}),n.on("update-link",a=>{const{links:r}=this.getState(),i=a.id;let o=a.link;r.update(i,o),o=r.byId(i),!o.lag&&o.lag!==0&&delete o.lag,this.setStateAsync({links:r}),a.link=o}),n.on("add-link",a=>{const{link:r}=a,{links:i}=this.getState();!r.source||!r.target||(r.type||(r.type="e2s"),r.id=r.id||st(),i.add(r),this.setStateAsync({links:i}),a.id=r.id,a.link=i.byId(r.id))});let s=null;n.on("move-task",a=>{const{tasks:r}=this.getState();let{mode:i,target:o}=a;const{id:c,inProgress:d}=a,u=r.byId(c);if(typeof d>"u"?a.source=u.parent:a.source=s=s??u.parent,d===!1){r.update(u.id,{$reorder:!1}),this.setState({tasks:r}),s=null;return}if(o===c||r.contains(c,o)){a.skipProvider=!0;return}if(i==="up"||i==="down"){const h=r.getBranch(c);let l=r.getIndexById(c);if(i==="up"){const m=u.parent===0;if(l===0&&m){a.skipProvider=!0;return}l-=1,i="before"}else if(i==="down"){const m=l===h.length-1,g=u.parent===0;if(m&&g){a.skipProvider=!0;return}l+=1,i="after"}if(o=h[l]&&h[l].id||u.parent,o){const m=r.getBranch(o);let g=r.getIndexById(o),f=m[g];if(f.data){if(i==="before"){if(f.parent===u.parent){for(;f.data;)f.open||n.exec("open-task",{id:f.id,mode:!0}),f=f.data[f.data.length-1];o=f.id}}else if(i==="after"){let k;f.parent===u.parent?(k=f,f=f.data[0],o=f.id,i="before"):m.length-1!==g&&(k=f,g+=1,f=m[g],u.$level>f.$level&&f.data?(k=f,f=f.data[0],o=f.id,i="before"):o=f.id),k&&!k.open&&n.exec("open-task",{id:k.id,mode:!0})}}const p=r.getSummaryId(u.id);r.move(c,i,o);const y=r.getSummaryId(c);p!==y&&(p&&this.resetSummaryDates(p,"move-task"),y&&this.resetSummaryDates(y,"move-task"))}}else{const h=r.byId(o);let l=h,m=!1;for(;l.$level>u.$level;)l=r.byId(l.parent),l.id===c&&(m=!0);if(m)return;const g=r.getSummaryId(u.id);if(r.move(c,i,o),i==="child"){let p=h;for(;p.id!==0&&!p.open;)n.exec("open-task",{id:p.id,mode:!0}),p=r.byId(p.parent)}const f=r.getSummaryId(c);g!==f&&(g&&this.resetSummaryDates(g,"move-task"),f&&this.resetSummaryDates(f,"move-task"))}d?this.setState({tasks:r}):this.setStateAsync({tasks:r}),a.target=o,a.mode=i}),n.on("drag-task",a=>{const r=this.getState(),{tasks:i,_tasks:o,_selected:c,rollups:d,slack:u}=r,h=i.byId(a.id),{left:l,top:m,width:g,inProgress:f}=a,p={_tasks:o,_selected:c};if(typeof g<"u"&&(h.$w=g,wt(i,h)),typeof l<"u"){if(h.type==="summary"){const y=l-h.$x;de(h,y,!!d)}h.$x=l,wt(i,h)}typeof m<"u"&&(h.$y=m+4,h.$reorder=f),this.setState(p)}),n.on("update-task",a=>{const{id:r,segmentIndex:i,diff:o,eventSource:c}=a;let{task:d}=a;const{tasks:u,_scales:h,durationUnit:l,splitTasks:m,calendar:g}=this.getState(),f=u.byId(r),p={durationUnit:l,calendar:g};if(c==="add-task"||c==="copy-task"||c==="move-task"||c==="update-task"||c==="delete-task"||c==="provide-data"){N(d,p),u.update(r,d);return}const y=h.lengthUnit;let k=I(y);const b=et(l,g);if(o&&(d.start&&(d.start=k(d.start,o)),!i&&i!==0&&(d.start&&d.end?d.duration=f.duration:(d.start?d.end=f.end:(d.end=k(d.end,o),d.start=f.start,d.duration=b(d.end,d.start)),b(d.end,d.start)||(d.duration=1)))),d.type=d.type??f.type,g&&d.start&&(d.start=mt(d.start,o,g)),d.start&&d.end&&(!z(d.start,f.start)||!z(d.end,f.end))&&d.type==="summary"&&f.data?.length){let v=o||b(d.start,f.start);g&&(v=d.start>f.start?b(d.start,f.start):-b(f.start,d.start),k=Ts(g)),this.moveSummaryKids(f,M=>(M=k(M,v),g?mt(M,o,g):M),"update-task")}d.start||(d.start=f.start),!d.end&&!d.duration&&(d.duration=f.duration),N(d,p),u.update(r,d),(g&&d.type==="summary"||d.type==="summary"&&f.type!=="summary")&&this.resetSummaryDates(r,"update-task",!0);const _=u.getSummaryId(r);_&&this.resetSummaryDates(_,"update-task"),this.setStateAsync({tasks:u}),a.task=u.byId(r)}),n.on("add-task",a=>{const{tasks:r,_scales:i,unscheduledTasks:o,durationUnit:c,splitTasks:d,calendar:u}=this.getState(),{target:h,mode:l,task:m,show:g,select:f=!0,focus:p}=a;!a.eventSource&&o&&(m.unscheduled=!0);let y=-1,k,b;if(h?(b=r.byId(h),l==="child"?(k=b,m.parent=k.id):(b.parent!==null&&(k=r.byId(b.parent),m.parent=k.id),y=r.getIndexById(h),l==="after"&&(y+=1))):m.parent&&(k=r.byId(m.parent)),!m.start){if(k?.start)m.start=new Date(k.start.valueOf());else if(b)m.start=new Date(b.start.valueOf());else{const P=r.getBranch(0);let T;if(P?.length){const S=P[P.length-1];if(!S.$skip){const Wt=new Date(S.start.valueOf());i.start<=Wt&&(T=Wt)}}m.start=T||I(c,u)(i.start,1)}m.duration=1}u&&(m.start=mt(m.start,1,u)),this.getState().baselines&&(m.base_start=m.start,m.base_duration=m.duration),N(m,{durationUnit:c,calendar:u});const _=r.add(m,y),v={tasks:r};if(g)for(;k&&k.id;)n.exec("open-task",{id:k.id,mode:!0}),k=r.byId(k.parent);a.id=_.id;const M=r.getSummaryId(_.id);M&&this.resetSummaryDates(M,"add-task"),this.setStateAsync(v),a.id=_.id,a.task=_,f?n.exec("select-task",{id:_.id,show:g,focus:p,eventSource:"add-task"}):g&&this.scrollToTask(_.id,g,"add-task")}),n.on("delete-task",a=>{const{id:r}=a,{tasks:i,links:o,selected:c}=this.getState(),d=i.byId(r);a.source=d.parent;const u=i.getSummaryId(r),h=[r];i.eachChild(m=>h.push(m.id),r),o.filter(m=>!(h.includes(m.source)||h.includes(m.target)));const l={tasks:i,links:o};c.includes(r)&&(l.selected=c.filter(m=>m!==r)),i.remove(r),u&&this.resetSummaryDates(u,"delete-task"),this.setStateAsync(l)}),n.on("indent-task",({id:a,mode:r})=>{const{tasks:i}=this.getState();if(r){const o=i.getBranch(a)[i.getIndexById(a)-1];o&&n.exec("move-task",{id:a,mode:"child",target:o.id})}else{const o=i.byId(a),c=i.byId(o.parent);c&&c.parent!==null&&n.exec("move-task",{id:a,mode:"after",target:o.parent})}}),n.on("copy-task",a=>{const{id:r,target:i,mode:o,eventSource:c}=a;if(c==="copy-task")return;const{tasks:d,links:u}=this.getState();if(d.contains(r,i)){a.skipProvider=!0;return}const h=d.getSummaryId(r),l=d.getSummaryId(i);let m=d.getIndexById(i);o==="before"&&(m-=1);const g=d.byId(r),f=d.copy(g,d.byId(i).parent,m+1);a.source=a.id,a.id=f[0][1],g.lazy&&(a.lazy=!0),h!==l&&l&&this.resetSummaryDates(l,"copy-task");let p=[];for(let y=1;y<f.length;y++){const[k,b]=f[y];u.forEach(_=>{if(_.source===k){const v={..._};delete v.target,p.push({...v,source:b})}else if(_.target===k){const v={..._};delete v.source,p.push({...v,target:b})}})}p=p.reduce((y,k)=>{const b=y.findIndex(_=>_.id===k.id);return b>-1?y[b]={...y[b],...k}:y.push(k),y},[]);for(let y=1;y<f.length;y++){const[k,b]=f[y],_=d.byId(b);n.exec("copy-task",{source:k,id:b,lazy:!!_.lazy,eventSource:"copy-task",target:_.parent,mode:"child",skipUndo:!0})}p.forEach(y=>{n.exec("add-link",{link:{source:y.source,target:y.target,type:y.type},eventSource:"copy-task",skipUndo:!0})}),this.setStateAsync({tasks:d})}),n.on("open-task",({id:a,mode:r})=>{const{tasks:i}=this.getState(),o=i.byId(a);o.lazy?n.exec("request-data",{id:o.id}):(i.toArray().forEach(c=>c.$y=0),i.update(a,{open:r}),this.setState({tasks:i}))}),n.on("scroll-chart",({left:a,top:r,date:i,eventSource:o})=>{const{_chartWidth:c,_chartHeight:d,_tasks:u,cellHeight:h,_scales:l,cellWidth:m,_start:g}=this.getState();let f={};if(i){const p=l.diff(i,g,"hour");a=Math.round(p*m)}if(!isNaN(a)){if(typeof c<"u"&&!isNaN(l.width)){const p=l.width-c;a=Math.max(Math.min(a,p),0)}f={scrollLeft:a,_scaleDate:this.calcScaleDate(a),_zoomOffset:null}}if(!isNaN(r)){if(typeof d<"u"){const p=l.height+u.length*h-d;r=Math.max(Math.min(r,p),0)}f.scrollTop=r}o==="add-task"?this.setStateAsync(f):this.setState(f)}),n.on("render-data",a=>{this.setState({area:a})}),n.on("provide-data",a=>{const{tasks:r,links:i,durationUnit:o,calendar:c,splitTasks:d}=this.getState(),u=r.byId(a.id);u.lazy?(u.lazy=!1,u.open=!0):u.data=[],ke(a.data.tasks,{durationUnit:o,calendar:c}),r.parse(a.data.tasks,a.id),u.type==="summary"&&this.resetSummaryDates(u.id,"provide-data"),this.setStateAsync({tasks:r,links:new Pt(i.map(h=>h).concat(fe(a.data.links)))})}),n.on("zoom-scale",({dir:a,ratio:r,offset:i})=>{const{zoom:o,cellWidth:c,_cellWidth:d,scrollLeft:u}=this.getState(),h=(i||0)+u,l=this.calcScaleDate(h),m=a<0&&d||c;let g=Math.round(m*(1+a*(r||.15)));const{maxCellWidth:f,minCellWidth:p}=o.levels[o.level],y=a<0&&c>f;if(g<p||g>f||y){if(!this.changeScale(o,a))if(g=Math.max(Math.min(g,f),p),g!==c)this.setState({cellWidth:g,_cellWidth:g});else return}else this.setState({cellWidth:g,_cellWidth:g});const{_scales:k,_start:b,cellWidth:_,_weekStart:v}=this.getState(),M=W(k.minUnit,b,v),P=k.diff(l,M,"hour");typeof i>"u"&&(i=_);let T=Math.round(P*_)-i;T<0&&(T=0),this.setState({scrollLeft:T,_scaleDate:l,_zoomOffset:i})}),n.on("sort-tasks",({key:a,order:r,add:i})=>{const o=this.getState(),{tasks:c,columns:d}=o;let u=o._sort;const h={key:a,order:r};let l=u?.length||0;l&&i?(u.forEach((m,g)=>{m.key===a&&(l=g)}),u[l]=h):u=[h],c.sort(u,d),this.setState({_sort:u,tasks:c})}),n.on("filter-tasks",a=>{const{open:r,key:i,value:o}=a;let c=a.filter;const d=this.getState(),{tasks:u,columns:h}=d;let l=d.filterValues;i?l={...l,[i]:o}:Object.keys(a).length||(l={}),!c&&Object.values(l).some(m=>m||m===0)&&(c=He(l,h)),u.filterTree(c,r??!0),this.setState({tasks:u,_isFiltered:!!c,filterValues:l})}),n.on("hotkey",({key:a,event:r,eventSource:i})=>{switch(a){case"arrowup":case"arrowdown":{const{selected:o,_tasks:c}=this.getState();r.preventDefault();const d=o.length;let u;if(a==="arrowup"?u=d?this.getPrevRow(o[d-1])?.id:c[c.length-1]?.id:u=d?this.getNextRow(o[d-1])?.id:c[0]?.id,u){const h=i==="chart"?"xy":!0,l=i;this.in.exec("select-task",{id:u,show:h,focus:l})}break}case"ctrl+c":{G(this,"copy-task",null,null);break}case"ctrl+x":{G(this,"cut-task",null,null);break}case"ctrl+v":{G(this,"paste-task",null,null);break}case"ctrl+d":case"backspace":{r.preventDefault(),G(this,"delete-task",null,null);break}case"ctrl+z":{this.in.exec("undo",{});break}case"ctrl+y":{this.in.exec("redo",{});break}}}),n.on("resize-chart",({width:a,height:r,scrollSize:i})=>{let o={};const c=this.getState();a>c._scales?.width&&(o=Cs(a,c)),this.setState({...o,_chartWidth:a,_chartHeight:r,_scrollSize:i})})}init(e){const n=this.getState().area?{}:{scrollLeft:0,scrollTop:0,area:{from:0,start:0,end:0},_isFiltered:!1,filterValues:{}};if(e.cellWidth&&(e._cellWidth=e.cellWidth),e._sort=null,e.unscheduledTasks=!1,e.baselines=!1,e.markers=[],e._markers=[],e.undo=!1,e.schedule={},e.criticalPath=null,e.splitTasks=!1,e.summary={},!e.tasks._ready&&Array.isArray(e.tasks)){e.tasks._ready=!0,this.getHistory()?.resetHistory();const s=this.getState();s.tasks&&s._isFiltered&&(this.setState({_isFiltered:!1,filterValues:{}}),s.tasks.filterTree())}this._router.init({selected:[],markers:[],autoScale:!0,durationUnit:"day",focusTask:null,...n,...e})}setState(e,n){return this._router.setState(e,n)}setStateAsync(e){this._router.setStateAsync(e)}getTask(e){const{tasks:n}=this.getState();return n.byId(e)}getHistory(){return this.getState().undo?this._modules.get("historyManager"):null}serialize(){return this.getState().tasks.serialize()}changeScale(e,n){const s=e.level+n,a=e.levels[s];if(a){const{cellWidth:r,scales:i,_scales:o}=this.getState(),c=Ps(e,n,s,a,o.lengthUnit,i,r);return c._cellWidth=c.cellWidth,this.setState(c),!0}return!1}isScheduled(e){return this.getState().unscheduledTasks?e.some(n=>!n.unscheduled||n.data&&this.isScheduled(n.data)):!0}resetSummaryDates(e,n,s){const{tasks:a,durationUnit:r,splitTasks:i,calendar:o}=this.getState(),c=a.byId(e),d=c.data;if(d?.length&&this.isScheduled(d)){const u=bt({...c,start:void 0,end:void 0,duration:void 0});if(!z(c.start,u.start)||!z(c.end,u.end)){s?(N(u,{durationUnit:r,calendar:o}),a.update(e,u)):this.in.exec("update-task",{id:e,task:u,eventSource:n,skipUndo:!0});const h=a.getSummaryId(e);h&&this.resetSummaryDates(h,n)}}}moveSummaryKids(e,n,s){const{tasks:a}=this.getState();e.data.forEach(r=>{const i={...a.byId(r.id),start:n(r.start)};delete i.end,delete i.id,this.in.exec("update-task",{id:r.id,task:i,eventSource:s,skipUndo:!0}),r.data?.length&&this.moveSummaryKids(r,n,s)})}calcScaleDate(e){const{_scales:n,_start:s,_weekStart:a}=this.getState(),r=n.lengthUnit==="day"?n.lengthUnitWidth/24:n.lengthUnitWidth;return I("hour")(W(n.minUnit,s,a),Math.floor(e/r))}getNextRow(e){const n=this.getState()._tasks,s=n.findIndex(a=>a.id===e);return n[s+1]}getPrevRow(e){const n=this.getState()._tasks,s=n.findIndex(a=>a.id===e);return n[s-1]}scrollToTask(e,n,s){const{_chartWidth:a,_chartHeight:r,scrollLeft:i,scrollTop:o,cellWidth:c,cellHeight:d,tasks:u,_tasks:h,_scrollSize:l}=this.getState(),m=this.getTask(e),g={eventSource:s};if(n?.toString().indexOf("x")!==-1){if(m.$x+m.$w/2<i)g.left=Math.max(m.$x-(c||0),0);else if(m.$x+m.$w/2>=a+i){const p=a<m.$w?c:m.$w;g.left=m.$x-a+p}}const f=(s==="add-task"?u.toArray():h).findIndex(p=>p.id===e);if(f>-1){const p=f*d;let y=null;p<o?y=p:p+d>o+r&&(y=p-r+d+l),y!==null&&(g.top=Math.max(y,0)),this.in.exec("scroll-chart",g)}}}function Js(t,e,n,s){if(typeof document>"u")return"";const a=document.createElement("canvas");{const r=Ks(a,t,e,1,n);Zs(r,s,0,t,0,e)}return a.toDataURL()}function Ks(t,e,n,s,a){t.setAttribute("width",(e*s).toString()),t.setAttribute("height",(n*s).toString());const r=t.getContext("2d");return r.translate(-.5,-.5),r.strokeStyle=a,r}function Zs(t,e,n,s,a,r){t.beginPath(),t.moveTo(s,a),t.lineTo(s,r),e==="full"&&t.lineTo(n,r),t.stroke()}const vt=[{id:"task",label:"Task"},{id:"summary",label:"Summary task"},{id:"milestone",label:"Milestone"}];function ta(t){let e=[...ve];const n=t?.taskTypes||vt,s=e.find(a=>a.id==="convert-task");return s.data=[],n.forEach(a=>{(!t?.summary?.autoConvert||a.id!=="summary")&&s.data.push(s.dataFactory(a))}),e}function St(t){return t.map(e=>{switch(e.data&&St(e.data),e.id){case"add-task:before":case"move-task:up":e.isDisabled=(n,s)=>na(n,s);break;case"move-task:down":e.isDisabled=(n,s)=>sa(n,s);break;case"indent-task:add":e.isDisabled=(n,s)=>aa(n,s)===n.parent;break;case"indent-task:remove":e.isDisabled=n=>ea(n);break}return e})}function ea(t){return t.parent===0}function na(t,e){const{_tasks:n}=e;return n[0]?.id===t.id}function sa(t,e){const{_tasks:n}=e;return n[n.length-1]?.id===t.id}function aa(t,e){const{_tasks:n}=e,s=n.findIndex(a=>a.id===t.id);return n[s-1]?.id??t.parent}function xe(t){return t&&typeof t=="object"}function ra(t){return!t.selected||t.selected.length<2}const ia=t=>e=>e.type===t,ve=St([{id:"add-task",text:"Add",icon:"wxi-plus",data:[{id:"add-task:child",text:"Child task"},{id:"add-task:before",text:"Task above"},{id:"add-task:after",text:"Task below"}]},{type:"separator"},{id:"convert-task",text:"Convert to",icon:"wxi-swap-horizontal",dataFactory:t=>({id:`convert-task:${t.id}`,text:`${t.label}`,isDisabled:ia(t.id)})},{id:"edit-task",text:"Edit",icon:"wxi-edit",isHidden:(t,e,n)=>xe(n)},{type:"separator"},{id:"cut-task",text:"Cut",icon:"wxi-content-cut",subtext:"Ctrl+X"},{id:"copy-task",text:"Copy",icon:"wxi-content-copy",subtext:"Ctrl+C"},{id:"paste-task",text:"Paste",icon:"wxi-content-paste",subtext:"Ctrl+V"},{id:"move-task",text:"Move",icon:"wxi-swap-vertical",data:[{id:"move-task:up",text:"Up"},{id:"move-task:down",text:"Down"}]},{type:"separator"},{id:"indent-task:add",text:"Indent",icon:"wxi-indent"},{id:"indent-task:remove",text:"Outdent",icon:"wxi-unindent"},{type:"separator"},{id:"delete-task",icon:"wxi-delete",text:"Delete",subtext:"Ctrl+D / BS",isHidden:(t,e,n)=>ra(e)&&xe(n)}]);function oa(t){return[...Se]}const Se=St([{id:"add-task",comp:"button",icon:"wxi-plus",text:"New task",type:"primary"},{id:"edit-task",comp:"icon",icon:"wxi-edit",menuText:"Edit",text:"Ctrl+E"},{id:"delete-task",comp:"icon",icon:"wxi-delete",menuText:"Delete",text:"Ctrl+D, Backspace"},{comp:"separator"},{id:"move-task:up",comp:"icon",icon:"wxi-angle-up",menuText:"Move up"},{id:"move-task:down",comp:"icon",icon:"wxi-angle-down",menuText:"Move down"},{comp:"separator"},{id:"copy-task",comp:"icon",icon:"wxi-content-copy",menuText:"Copy",text:"Ctrl+V"},{id:"cut-task",comp:"icon",icon:"wxi-content-cut",menuText:"Cut",text:"Ctrl+X"},{id:"paste-task",comp:"icon",icon:"wxi-content-paste",menuText:"Paste",text:"Ctrl+V"},{comp:"separator"},{id:"indent-task:add",comp:"icon",icon:"wxi-indent",menuText:"Indent"},{id:"indent-task:remove",comp:"icon",icon:"wxi-unindent",menuText:"Outdent"}]);function Mt(t){return t.type==="summary"}function Dt(t){return t.type==="milestone"}function Tt(t){return typeof t.parent>"u"}function It(t,e){return e.unscheduledTasks&&t.unscheduled}function ca(t){const e=Me.map(s=>({...s})),n=e.find(s=>s.key==="type");return n.options=t?.taskTypes||vt,e}const Me=[{key:"text",comp:"text",label:"Name",config:{placeholder:"Add task name"}},{key:"details",comp:"textarea",label:"Description",config:{placeholder:"Add description"}},{key:"type",comp:"select",label:"Type",isHidden:t=>Tt(t)},{key:"start",comp:"date",label:"Start date",config:{format:"%d-%m-%Y"},isHidden:t=>Mt(t),isDisabled:It},{key:"end",comp:"date",label:"End date",config:{format:"%d-%m-%Y"},isHidden:t=>Mt(t)||Dt(t),isDisabled:It},{key:"duration",comp:"counter",label:"Duration",config:{min:1},isHidden:t=>Mt(t)||Dt(t),isDisabled:It},{key:"progress",comp:"slider",label:"Progress",config:{min:1,max:100},isHidden:t=>Dt(t)||Tt(t)},{key:"links",comp:"links",label:"",isHidden:t=>Tt(t)}];export{Vs as DataStore,Xs as defaultColumns,Me as defaultEditorItems,ve as defaultMenuOptions,vt as defaultTaskTypes,Se as defaultToolbarButtons,Ns as extendDragOptions,is as format,I as getAdder,et as getDiffer,ca as getEditorItems,ta as getMenuOptions,oa as getToolbarButtons,W as getUnitStart,Js as grid,G as handleAction,pe as isHandledAction,Fs as isSegmentMoveAllowed,fe as normalizeLinks,$s as normalizeZoom,ke as parseTaskDates,js as placeLink,Rs as prepareEditTask,Ds as registerScaleUnit};
1
+ var $t=new Date().valueOf(),De=()=>$t++;function st(){return"temp://"+$t++}var Pt=class{constructor(t){this._data=t,this._pool=new Map;for(let e=0;e<t.length;e++){const n=t[e];this._pool.set(n.id,n)}}add(t){t={id:De(),...t},this._data.push(t),this._pool.set(t.id,t)}update(t,e){const n=this._data.findIndex(a=>a.id==t),s={...this._data[n],...e};this._data[n]=s,this._pool.set(s.id,s)}remove(t){this._data=this._data.filter(e=>e.id!=t),this._pool.delete(t)}filter(t){this._data=this._data.filter(e=>{const n=t(e);return n||this._pool.delete(e.id),n})}byId(t){return this._pool.get(t)}map(t){return this._data.map(t)}forEach(t){this._data.forEach(t)}},Te=class{constructor(t){const e={id:0,$level:0,data:[],parent:null},n=new Map;n.set(0,e),this._pool=n,t&&t.length&&this.parse(t,0)}parse(t,e){const n=this._pool;for(let a=0;a<t.length;a++){const r=t[a];r.parent=r.parent||e,r.data=null,n.set(r.id,r)}for(let a=0;a<t.length;a++){const r=t[a],i=n.get(r.parent);i&&(i.data||(i.data=[]),i.data.push(r))}const s=n.get(e);this.setLevel(s,s.$level+1,!1)}add(t,e){const n=this._pool.get(t.parent||0);t.$level=n.$level+1,this._pool.set(t.id,t),n.data?e===-1?n.data=[...n.data,t]:Et(n,e,t):n.data=[t]}addAfter(t,e){if(!e)return this.add(t,-1);const n=this.byId(e),s=this.byId(n.parent),a=R(s,n.id)+1;t.parent=s.id,t.$level=s.$level+1,this.add(t,a)}remove(t){const e=this._pool.get(t);this._remove(e);const n=this._pool.get(e.parent);n.data=n.data.filter(s=>s.id!=t),this._clearBranch(n)}_remove(t){t.data&&t.data.forEach(e=>this._remove(e)),this._pool.delete(t.id)}update(t,e){let n=this._pool.get(t);const s=this._pool.get(n.parent),a=R(s,n.id);n={...n,...e},s&&a>=0&&(s.data[a]=n,s.data=[...s.data]),this._pool.set(n.id,n)}move(t,e,n){const s=this._pool.get(t),a=e==="child",r=this._pool.get(n),i=r.$level+(a?1:0);if(!s||!r)return;const o=this._pool.get(s.parent),c=a?r:this._pool.get(r.parent);c.data||(c.data=[]);const d=R(o,s.id);Ie(o,d);const u=a?c.data.length:R(c,r.id)+(e==="after"?1:0);if(Et(c,u,s),o.id===c.id&&d===u)return null;s.parent=c.id,s.$level!==i&&(s.$level=i,this.setLevel(s,i+1,!0)),this.update(s.id,s),this._clearBranch(o)}_clearBranch(t){t.data&&!t.data.length&&(t.open&&delete t.open,this.update(t.id,{data:null}))}toArray(){const t=[],e=this._pool.get(0).data;return e&&Ct(e,t),t}byId(t){return this._pool.get(t)}getBranch(t){return this._pool.get(t).data}forEach(t){this._pool.forEach((e,n)=>{n!==0&&t(e)})}eachChild(t,e){const n=this.byId(e);!n||!n.data||n.data.forEach((s,a)=>{t(this.byId(s.id),a),this.eachChild(t,s.id)})}setLevel(t,e,n){t.data&&(t.data=t.data.map(s=>(n&&(s={...s},this._pool.set(s.id,s)),s.$level=e,s.data&&this.setLevel(s,e+1,n),s)))}};function Ct(t,e){t.forEach(n=>{e.push(n),n.open===!0&&Ct(n.data,e)})}function Ie(t,e){const n=[...t.data];n.splice(e,1),t.data=n}function Et(t,e,n){const s=[...t.data];s.splice(e,0,n),t.data=s}function R(t,e){return t?.data.findIndex(n=>n.id===e)}var Ot=2,We=class{constructor(t){t&&(this._writable=t.writable,this._async=t.async),this._values={},this._state={}}setState(t,e=0){const n={};return this._wrapProperties(t,this._state,this._values,"",n,e),n}getState(){return this._values}getReactive(){return this._state}_wrapProperties(t,e,n,s,a,r){for(const i in t){const o=e[i],c=n[i],d=t[i];if(o&&(c===d&&typeof d!="object"||d instanceof Date&&c instanceof Date&&c.getTime()===d.getTime()))continue;const u=s+(s?".":"")+i;o?(o.__parse(d,u,a,r)&&(n[i]=d),r&Ot?a[u]=o.__trigger:o.__trigger()):(d&&d.__reactive?e[i]=this._wrapNested(d,d,u,a):e[i]=this._wrapWritable(d),n[i]=d),a[u]=a[u]||null}}_wrapNested(t,e,n,s){const a=this._wrapWritable(t);return this._wrapProperties(t,a,e,n,s,0),a.__parse=(r,i,o,c)=>(this._wrapProperties(r,a,e,i,o,c),!1),a}_wrapWritable(t){const e=[],n=function(){for(let s=0;s<e.length;s++)e[s](t)};return{subscribe:s=>(e.push(s),this._async?setTimeout(s,1,t):s(t),()=>{const a=e.indexOf(s);a>=0&&e.splice(a,1)}),__trigger:()=>{e.length&&(this._async?setTimeout(n,1):n())},__parse:function(s){return t=s,!0}}}},$e=class{constructor(t,e,n,s){typeof t=="function"?this._setter=t:this._setter=t.setState.bind(t),this._routes=e,this._parsers=n,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(a=>{a.in.forEach(r=>{const i=this._triggers.get(r)||[];i.push(a),this._triggers.set(r,i)}),a.out.forEach(r=>{const i=this._sources.get(r)||{};a.in.forEach(o=>i[o]=!0),this._sources.set(r,i)})}),this._routes.forEach(a=>{a.length=Math.max(...a.in.map(r=>Ht(r,this._sources,1)))}),this._bus=s}init(t){const e={};for(const n in t)if(this._prev[n]!==t[n]){const s=this._parsers[n];e[n]=s?s(t[n]):t[n]}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,Ot);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 n=t.signals[e];n&&n()}}}setState(t,e=[]){const n=this._setter(t);return this._triggerUpdates(n,e),n}_triggerUpdates(t,e){const n=Object.keys(t),s=!e.length;e=e||[];for(let a=0;a<n.length;a++){const r=n[a],i=this._triggers.get(r);i&&i.forEach(o=>{e.indexOf(o)==-1&&e.push(o)})}s&&this._execNext(e)}_execNext(t){for(;t.length;){t.sort((n,s)=>n.length<s.length?1:-1);const e=t[t.length-1];t.splice(t.length-1),e.exec(t)}}};function Ht(t,e,n){const s=e.get(t);if(!s)return n;const a=Object.keys(s).map(r=>Ht(r,e,n+1));return Math.max(...a)}var Pe=class{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(t,e,n){let s=this._handlers[t];s?n&&n.intercept?s.unshift(e):s.push(e):s=this._handlers[t]=[e],n&&n.tag&&this._tag.set(e,n.tag)}intercept(t,e,n){this.on(t,e,{...n,intercept:!0})}detach(t){for(const e in this._handlers){const n=this._handlers[e];for(let s=n.length-1;s>=0;s--)this._tag.get(n[s])===t&&n.splice(s,1)}}async exec(t,e){const n=this._handlers[t];if(n)for(let s=0;s<n.length;s++){const a=n[s](e);if(a===!1||a&&a.then&&await a===!1)return}return this._nextHandler&&await this._nextHandler.exec(t,e),e}setNext(t){return this._nextHandler=t}};new Date().valueOf();function Ce(t){return e=>e[t]}function at(t,e){return(e.getter||Ce(e.id))(t)}const Ee={text:(t,e)=>t?t.toString().toLowerCase().indexOf(e.toLowerCase())!==-1:!e,richselect:(t,e)=>typeof e!="number"&&!e?!0:t==e,datepicker:(t,e)=>e?t&&Fe(t,e):!0};function Oe(t){return Ee[t]}function He(t,e){const n=[];for(const s in t){const a=e.find(c=>c.id==s),{config:r,type:i}=a.header.find(c=>c.filter).filter,o=t[s];n.push(c=>{const d=at(c,a);return r?.handler?r.handler(d,o):Oe(i)(d,o)})}return s=>{for(let a=0;a<n.length;a++)if(!n[a](s))return!1;return!0}}function Fe(t,e){return t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()}new Date().valueOf(),new Date().valueOf();function Ne(t,e){return typeof t=="string"?t.localeCompare(e,void 0,{numeric:!0}):t instanceof Date||e instanceof Date?t?e?t.getTime()-e.getTime():-1:1:(t??0)-(e??0)}function Ye(t,e){return typeof t=="string"?-t.localeCompare(e,void 0,{numeric:!0}):t instanceof Date||e instanceof Date?e?t?e.getTime()-t.getTime():-1:1:(e??0)-(t??0)}function Ae({order:t,key:e},n){const s=t==="asc"?Ne:Ye;return(a,r)=>s(n?at(a,n):a[e],n?at(r,n):r[e])}function ze(t,e){if(!t||!t.length)return;const n=t.map(s=>{const a=e.find(r=>r.id==s.key);return Ae(s,a)});return t.length===1?n[0]:function(s,a){for(let r=0;r<n.length;r++){const i=n[r](s,a);if(i!==0)return i}return 0}}function Be(t,e,n){return t.sort(ze(e,n))}function Ft(t,e,n,s){const a=t.id===0||e(t);let r=!1;if(Array.isArray(t.data)){for(const i of t.data)Ft(i,e,n,s)&&(r=!0);r?(delete t.$empty,s&&(t.open=!0)):t.$empty=!0}return(a||r)&&t.id!==0?(n.add(t.id),!0):!1}function Nt(t,e,n){t.has(e)&&t.delete(e),n?.length&&n.forEach(s=>Nt(t,s.id,s.data))}class je extends Te{_filteredIds;constructor(e){super(),this.parse(e,0)}parse(e,n){if(!e||!e.length)return;const s=e.map(a=>this.normalizeTask(a));super.parse(s,n)}getBranch(e){const n=this._pool.get(e);return this._pool.get(n.parent||0).data}contains(e,n){const s=this._pool.get(e).data;let a=!1;if(s)for(let r=0;r<s.length;r++){if(s[r].id===n){a=!0;break}if(s[r].data&&(a=this.contains(s[r].id,n),a))break}return a}getIndexById(e){return this.getBranch(e).findIndex(n=>n.id===e)}add(e,n){const s=this.normalizeTask(e);if(super.add(s,n),this._filteredIds&&this._filteredIds.add(s.id),this._filteredIds&&e.parent){const a=this.byId(e.parent);this.hasChildItems(a)&&delete a.$empty}return s}copy(e,n,s){const a=this.add({...e,id:null,data:null,parent:n},s);let r=[[e.id,a.id]];return e.data?.forEach((i,o)=>{const c=this.copy(i,a.id,o);r=r.concat(c)}),r}remove(e){const n=this.byId(e);if(this._filteredIds&&Nt(this._filteredIds,e,n.data),super.remove(e),this._filteredIds&&n.parent){const s=this.byId(n.parent);this.hasChildItems(s)||(s.$empty=!0)}}normalizeTask(e){const n=e.id||st(),s=e.parent||0,a=e.text||"",r=e.type||"task",i=e.progress||0,o=e.details||"",c={...e,id:n,text:a,parent:s,progress:i,type:r,details:o};return e.segments&&(c.segments=e.segments.map(d=>({...d}))),e.segments&&(c.segments=e.segments.map(d=>({...d}))),c}getSummaryId(e,n=!1){const s=this._pool.get(e);if(!s.parent)return null;const a=this._pool.get(s.parent);if(n){let r=e,i=this.getSummaryId(r);const o=[];for(;i;)r=i,o.push(i),i=this.getSummaryId(r);return o}return a.type==="summary"?a.id:this.getSummaryId(a.id)}sort(e,n){e&&this.sortBranch(e,0,n)}sortBranch(e,n,s){const a=this._pool.get(n||0).data;a&&(Be(a,e,s),a.forEach(r=>{this.sortBranch(e,r.id,s)}))}serialize(){const e=[],n=this._pool.get(0).data;return n&&Yt(n,e),e}clear(){this.forEach(e=>{this.remove(e.id)})}filterTree(e,n){if(e){const s=this._pool.get(0),a=new Set;Ft(s,e,a,n),this._filteredIds=a}else this._filteredIds=null}toArray(e){let n=super.toArray();return!e&&this._filteredIds&&(n=n.filter(s=>this.isFilteredId(s.id))),n}isFilteredId(e){return this._filteredIds?.has(e)}hasChildItems(e){const n=e.data?.length;return n&&this._filteredIds?e.data.some(s=>this.isFilteredId(s.id)):!!n}}function Yt(t,e){t.forEach(n=>{e.push(n),n.data&&Yt(n.data,e)})}function w(t){const e=Object.prototype.toString.call(t);return t instanceof Date||typeof t=="object"&&e==="[object Date]"?new t.constructor(+t):typeof t=="number"||e==="[object Number]"||typeof t=="string"||e==="[object String]"?new Date(t):new Date(NaN)}function D(t,e){return t instanceof Date?new t.constructor(e):new Date(e)}function V(t,e){const n=w(t);return isNaN(e)?D(t,NaN):(e&&n.setDate(n.getDate()+e),n)}function rt(t,e){const n=w(t);if(isNaN(e))return D(t,NaN);if(!e)return n;const s=n.getDate(),a=D(t,n.getTime());a.setMonth(n.getMonth()+e+1,0);const r=a.getDate();return s>=r?a:(n.setFullYear(a.getFullYear(),a.getMonth(),s),n)}function At(t,e){const n=+w(t);return D(t,n+e)}const J=6048e5,qe=864e5,zt=6e4,Bt=36e5;function Le(t,e){return At(t,e*Bt)}let Ue={};function j(){return Ue}function C(t,e){const n=j(),s=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=w(t),r=a.getDay(),i=(r<s?7:0)+r-s;return a.setDate(a.getDate()-i),a.setHours(0,0,0,0),a}function Y(t){return C(t,{weekStartsOn:1})}function jt(t){const e=w(t),n=e.getFullYear(),s=D(t,0);s.setFullYear(n+1,0,4),s.setHours(0,0,0,0);const a=Y(s),r=D(t,0);r.setFullYear(n,0,4),r.setHours(0,0,0,0);const i=Y(r);return e.getTime()>=a.getTime()?n+1:e.getTime()>=i.getTime()?n:n-1}function O(t){const e=w(t);return e.setHours(0,0,0,0),e}function K(t){const e=w(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function it(t,e){const n=O(t),s=O(e),a=+n-K(n),r=+s-K(s);return Math.round((a-r)/qe)}function ot(t){const e=jt(t),n=D(t,0);return n.setFullYear(e,0,4),n.setHours(0,0,0,0),Y(n)}function Xe(t,e){return At(t,e*zt)}function Qe(t,e){const n=e*3;return rt(t,n)}function qt(t,e){const n=e*7;return V(t,n)}function Ge(t,e){return rt(t,e*12)}function q(t,e){const n=w(t),s=w(e),a=n.getTime()-s.getTime();return a<0?-1:a>0?1:a}function Re(t,e){const n=O(t),s=O(e);return+n==+s}function Ve(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Je(t){if(!Ve(t)&&typeof t!="number")return!1;const e=w(t);return!isNaN(Number(e))}function ct(t,e){const n=Y(t),s=Y(e),a=+n-K(n),r=+s-K(s);return Math.round((a-r)/J)}function Ke(t,e){const n=w(t),s=w(e),a=n.getFullYear()-s.getFullYear(),r=n.getMonth()-s.getMonth();return a*12+r}function Ze(t,e){const n=w(t),s=w(e);return n.getFullYear()-s.getFullYear()}function dt(t){return e=>{const n=(t?Math[t]:Math.trunc)(e);return n===0?0:n}}function Lt(t,e){return+w(t)-+w(e)}function tn(t,e,n){const s=Lt(t,e)/Bt;return dt(n?.roundingMethod)(s)}function en(t,e,n){const s=Lt(t,e)/zt;return dt(n?.roundingMethod)(s)}function Ut(t){const e=w(t);return e.setHours(23,59,59,999),e}function ut(t){const e=w(t),n=e.getMonth();return e.setFullYear(e.getFullYear(),n+1,0),e.setHours(23,59,59,999),e}function nn(t){const e=w(t);return+Ut(e)==+ut(e)}function Xt(t,e){const n=w(t),s=w(e),a=q(n,s),r=Math.abs(Ke(n,s));let i;if(r<1)i=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-a*r);let o=q(n,s)===-a;nn(w(t))&&r===1&&q(t,s)===1&&(o=!1),i=a*(r-Number(o))}return i===0?0:i}function sn(t,e,n){const s=Xt(t,e)/3;return dt(n?.roundingMethod)(s)}function an(t,e){const n=w(t),s=w(e),a=q(n,s),r=Math.abs(Ze(n,s));n.setFullYear(1584),s.setFullYear(1584);const i=q(n,s)===-a,o=a*(r-+i);return o===0?0:o}function L(t){const e=w(t),n=e.getMonth(),s=n-n%3;return e.setMonth(s,1),e.setHours(0,0,0,0),e}function Qt(t){const e=w(t);return e.setDate(1),e.setHours(0,0,0,0),e}function rn(t){const e=w(t),n=e.getFullYear();return e.setFullYear(n+1,0,0),e.setHours(23,59,59,999),e}function Gt(t){const e=w(t),n=D(t,0);return n.setFullYear(e.getFullYear(),0,1),n.setHours(0,0,0,0),n}function on(t){const e=w(t);return e.setMinutes(59,59,999),e}function cn(t,e){const n=j(),s=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=w(t),r=a.getDay(),i=(r<s?-7:0)+6-(r-s);return a.setDate(a.getDate()+i),a.setHours(23,59,59,999),a}function lt(t){const e=w(t),n=e.getMonth(),s=n-n%3+3;return e.setMonth(s,0),e.setHours(23,59,59,999),e}const dn={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"}},un=(t,e,n)=>{let s;const a=dn[t];return typeof a=="string"?s=a:e===1?s=a.one:s=a.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+s:s+" ago":s};function ht(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const ln={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},hn={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},fn={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},mn={date:ht({formats:ln,defaultWidth:"full"}),time:ht({formats:hn,defaultWidth:"full"}),dateTime:ht({formats:fn,defaultWidth:"full"})},gn={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},pn=(t,e,n,s)=>gn[t];function U(t){return(e,n)=>{const s=n?.context?String(n.context):"standalone";let a;if(s==="formatting"&&t.formattingValues){const i=t.defaultFormattingWidth||t.defaultWidth,o=n?.width?String(n.width):i;a=t.formattingValues[o]||t.formattingValues[i]}else{const i=t.defaultWidth,o=n?.width?String(n.width):t.defaultWidth;a=t.values[o]||t.values[i]}const r=t.argumentCallback?t.argumentCallback(e):e;return a[r]}}const yn={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},kn={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},wn={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"]},bn={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"]},_n={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"}},xn={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"}},vn=(t,e)=>{const n=Number(t),s=n%100;if(s>20||s<10)switch(s%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},Sn={ordinalNumber:vn,era:U({values:yn,defaultWidth:"wide"}),quarter:U({values:kn,defaultWidth:"wide",argumentCallback:t=>t-1}),month:U({values:wn,defaultWidth:"wide"}),day:U({values:bn,defaultWidth:"wide"}),dayPeriod:U({values:_n,defaultWidth:"wide",formattingValues:xn,defaultFormattingWidth:"wide"})};function X(t){return(e,n={})=>{const s=n.width,a=s&&t.matchPatterns[s]||t.matchPatterns[t.defaultMatchWidth],r=e.match(a);if(!r)return null;const i=r[0],o=s&&t.parsePatterns[s]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(o)?Dn(o,h=>h.test(i)):Mn(o,h=>h.test(i));let d;d=t.valueCallback?t.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const u=e.slice(i.length);return{value:d,rest:u}}}function Mn(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function Dn(t,e){for(let n=0;n<t.length;n++)if(e(t[n]))return n}function Tn(t){return(e,n={})=>{const s=e.match(t.matchPattern);if(!s)return null;const a=s[0],r=e.match(t.parsePattern);if(!r)return null;let i=t.valueCallback?t.valueCallback(r[0]):r[0];i=n.valueCallback?n.valueCallback(i):i;const o=e.slice(a.length);return{value:i,rest:o}}}const In=/^(\d+)(th|st|nd|rd)?/i,Wn=/\d+/i,$n={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},Pn={any:[/^b/i,/^(a|c)/i]},Cn={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},En={any:[/1/i,/2/i,/3/i,/4/i]},On={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},Hn={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]},Fn={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},Nn={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]},Yn={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},An={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}},zn={ordinalNumber:Tn({matchPattern:In,parsePattern:Wn,valueCallback:t=>parseInt(t,10)}),era:X({matchPatterns:$n,defaultMatchWidth:"wide",parsePatterns:Pn,defaultParseWidth:"any"}),quarter:X({matchPatterns:Cn,defaultMatchWidth:"wide",parsePatterns:En,defaultParseWidth:"any",valueCallback:t=>t+1}),month:X({matchPatterns:On,defaultMatchWidth:"wide",parsePatterns:Hn,defaultParseWidth:"any"}),day:X({matchPatterns:Fn,defaultMatchWidth:"wide",parsePatterns:Nn,defaultParseWidth:"any"}),dayPeriod:X({matchPatterns:Yn,defaultMatchWidth:"any",parsePatterns:An,defaultParseWidth:"any"})},Bn={code:"en-US",formatDistance:un,formatLong:mn,formatRelative:pn,localize:Sn,match:zn,options:{weekStartsOn:0,firstWeekContainsDate:1}};function jn(t){const e=w(t);return it(e,Gt(e))+1}function qn(t){const e=w(t),n=+Y(e)-+ot(e);return Math.round(n/J)+1}function Rt(t,e){const n=w(t),s=n.getFullYear(),a=j(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,i=D(t,0);i.setFullYear(s+1,0,r),i.setHours(0,0,0,0);const o=C(i,e),c=D(t,0);c.setFullYear(s,0,r),c.setHours(0,0,0,0);const d=C(c,e);return n.getTime()>=o.getTime()?s+1:n.getTime()>=d.getTime()?s:s-1}function Ln(t,e){const n=j(),s=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Rt(t,e),r=D(t,0);return r.setFullYear(a,0,s),r.setHours(0,0,0,0),C(r,e)}function Un(t,e){const n=w(t),s=+C(n,e)-+Ln(n,e);return Math.round(s/J)+1}function x(t,e){const n=t<0?"-":"",s=Math.abs(t).toString().padStart(e,"0");return n+s}const E={y(t,e){const n=t.getFullYear(),s=n>0?n:1-n;return x(e==="yy"?s%100:s,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):x(n+1,2)},d(t,e){return x(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return x(t.getHours()%12||12,e.length)},H(t,e){return x(t.getHours(),e.length)},m(t,e){return x(t.getMinutes(),e.length)},s(t,e){return x(t.getSeconds(),e.length)},S(t,e){const n=e.length,s=t.getMilliseconds(),a=Math.trunc(s*Math.pow(10,n-3));return x(a,e.length)}},A={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Vt={G:function(t,e,n){const s=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(s,{width:"abbreviated"});case"GGGGG":return n.era(s,{width:"narrow"});case"GGGG":default:return n.era(s,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const s=t.getFullYear(),a=s>0?s:1-s;return n.ordinalNumber(a,{unit:"year"})}return E.y(t,e)},Y:function(t,e,n,s){const a=Rt(t,s),r=a>0?a:1-a;if(e==="YY"){const i=r%100;return x(i,2)}return e==="Yo"?n.ordinalNumber(r,{unit:"year"}):x(r,e.length)},R:function(t,e){const n=jt(t);return x(n,e.length)},u:function(t,e){const n=t.getFullYear();return x(n,e.length)},Q:function(t,e,n){const s=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(s);case"QQ":return x(s,2);case"Qo":return n.ordinalNumber(s,{unit:"quarter"});case"QQQ":return n.quarter(s,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(s,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(s,{width:"wide",context:"formatting"})}},q:function(t,e,n){const s=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(s);case"qq":return x(s,2);case"qo":return n.ordinalNumber(s,{unit:"quarter"});case"qqq":return n.quarter(s,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(s,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(s,{width:"wide",context:"standalone"})}},M:function(t,e,n){const s=t.getMonth();switch(e){case"M":case"MM":return E.M(t,e);case"Mo":return n.ordinalNumber(s+1,{unit:"month"});case"MMM":return n.month(s,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(s,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(s,{width:"wide",context:"formatting"})}},L:function(t,e,n){const s=t.getMonth();switch(e){case"L":return String(s+1);case"LL":return x(s+1,2);case"Lo":return n.ordinalNumber(s+1,{unit:"month"});case"LLL":return n.month(s,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(s,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(s,{width:"wide",context:"standalone"})}},w:function(t,e,n,s){const a=Un(t,s);return e==="wo"?n.ordinalNumber(a,{unit:"week"}):x(a,e.length)},I:function(t,e,n){const s=qn(t);return e==="Io"?n.ordinalNumber(s,{unit:"week"}):x(s,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):E.d(t,e)},D:function(t,e,n){const s=jn(t);return e==="Do"?n.ordinalNumber(s,{unit:"dayOfYear"}):x(s,e.length)},E:function(t,e,n){const s=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(s,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(s,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(s,{width:"short",context:"formatting"});case"EEEE":default:return n.day(s,{width:"wide",context:"formatting"})}},e:function(t,e,n,s){const a=t.getDay(),r=(a-s.weekStartsOn+8)%7||7;switch(e){case"e":return String(r);case"ee":return x(r,2);case"eo":return n.ordinalNumber(r,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});case"eeee":default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(t,e,n,s){const a=t.getDay(),r=(a-s.weekStartsOn+8)%7||7;switch(e){case"c":return String(r);case"cc":return x(r,e.length);case"co":return n.ordinalNumber(r,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});case"cccc":default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(t,e,n){const s=t.getDay(),a=s===0?7:s;switch(e){case"i":return String(a);case"ii":return x(a,e.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(s,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(s,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(s,{width:"short",context:"formatting"});case"iiii":default:return n.day(s,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const s=t.getHours();let a;switch(s===12?a=A.noon:s===0?a=A.midnight:a=s/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(t,e,n){const s=t.getHours();let a;switch(s>=17?a=A.evening:s>=12?a=A.afternoon:s>=4?a=A.morning:a=A.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let s=t.getHours()%12;return s===0&&(s=12),n.ordinalNumber(s,{unit:"hour"})}return E.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):E.H(t,e)},K:function(t,e,n){const s=t.getHours()%12;return e==="Ko"?n.ordinalNumber(s,{unit:"hour"}):x(s,e.length)},k:function(t,e,n){let s=t.getHours();return s===0&&(s=24),e==="ko"?n.ordinalNumber(s,{unit:"hour"}):x(s,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):E.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):E.s(t,e)},S:function(t,e){return E.S(t,e)},X:function(t,e,n){const s=t.getTimezoneOffset();if(s===0)return"Z";switch(e){case"X":return Kt(s);case"XXXX":case"XX":return H(s);case"XXXXX":case"XXX":default:return H(s,":")}},x:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"x":return Kt(s);case"xxxx":case"xx":return H(s);case"xxxxx":case"xxx":default:return H(s,":")}},O:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+Jt(s,":");case"OOOO":default:return"GMT"+H(s,":")}},z:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+Jt(s,":");case"zzzz":default:return"GMT"+H(s,":")}},t:function(t,e,n){const s=Math.trunc(t.getTime()/1e3);return x(s,e.length)},T:function(t,e,n){const s=t.getTime();return x(s,e.length)}};function Jt(t,e=""){const n=t>0?"-":"+",s=Math.abs(t),a=Math.trunc(s/60),r=s%60;return r===0?n+String(a):n+String(a)+e+x(r,2)}function Kt(t,e){return t%60===0?(t>0?"-":"+")+x(Math.abs(t)/60,2):H(t,e)}function H(t,e=""){const n=t>0?"-":"+",s=Math.abs(t),a=x(Math.trunc(s/60),2),r=x(s%60,2);return n+a+e+r}const Zt=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},te=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},Xn=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],s=n[1],a=n[2];if(!a)return Zt(t,e);let r;switch(s){case"P":r=e.dateTime({width:"short"});break;case"PP":r=e.dateTime({width:"medium"});break;case"PPP":r=e.dateTime({width:"long"});break;case"PPPP":default:r=e.dateTime({width:"full"});break}return r.replace("{{date}}",Zt(s,e)).replace("{{time}}",te(a,e))},Qn={p:te,P:Xn},Gn=/^D+$/,Rn=/^Y+$/,Vn=["D","DD","YY","YYYY"];function Jn(t){return Gn.test(t)}function Kn(t){return Rn.test(t)}function Zn(t,e,n){const s=ts(t,e,n);if(console.warn(s),Vn.includes(t))throw new RangeError(s)}function ts(t,e,n){const s=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${s} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const es=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,ns=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ss=/^'([^]*?)'?$/,as=/''/g,rs=/[a-zA-Z]/;function is(t,e,n){const s=j(),a=n?.locale??s.locale??Bn,r=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,i=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??s.weekStartsOn??s.locale?.options?.weekStartsOn??0,o=w(t);if(!Je(o))throw new RangeError("Invalid time value");let c=e.match(ns).map(u=>{const h=u[0];if(h==="p"||h==="P"){const l=Qn[h];return l(u,a.formatLong)}return u}).join("").match(es).map(u=>{if(u==="''")return{isToken:!1,value:"'"};const h=u[0];if(h==="'")return{isToken:!1,value:os(u)};if(Vt[h])return{isToken:!0,value:u};if(h.match(rs))throw new RangeError("Format string contains an unescaped latin alphabet character `"+h+"`");return{isToken:!1,value:u}});a.localize.preprocessor&&(c=a.localize.preprocessor(o,c));const d={firstWeekContainsDate:r,weekStartsOn:i,locale:a};return c.map(u=>{if(!u.isToken)return u.value;const h=u.value;(!n?.useAdditionalWeekYearTokens&&Kn(h)||!n?.useAdditionalDayOfYearTokens&&Jn(h))&&Zn(h,e,String(t));const l=Vt[h[0]];return l(o,h,a.localize,d)}).join("")}function os(t){const e=t.match(ss);return e?e[1].replace(as,"'"):t}function ee(t){const e=w(t),n=e.getFullYear(),s=e.getMonth(),a=D(t,0);return a.setFullYear(n,s+1,0),a.setHours(0,0,0,0),a.getDate()}function cs(t){const e=w(t).getFullYear();return e%400===0||e%4===0&&e%100!==0}function ne(t){const e=w(t);return String(new Date(e))==="Invalid Date"?NaN:cs(e)?366:365}function ds(t){const e=ot(t),n=+ot(qt(e,60))-+e;return Math.round(n/J)}function z(t,e){const n=w(t),s=w(e);return+n==+s}function us(t){const e=w(t);return e.setMinutes(0,0,0),e}function ls(t,e,n){const s=C(t,n),a=C(e,n);return+s==+a}function hs(t,e){const n=w(t),s=w(e);return n.getFullYear()===s.getFullYear()&&n.getMonth()===s.getMonth()}function fs(t,e){const n=L(t),s=L(e);return+n==+s}function ms(t,e){const n=w(t),s=w(e);return n.getFullYear()===s.getFullYear()}const ft={year:an,quarter:sn,month:Xt,week:ct,day:it,hour:tn,minute:en},F={year:{quarter:4,month:12,week:ds,day:gs,hour:ps},quarter:{month:3,week:ys,day:se,hour:ks},month:{week:ws,day:bs,hour:_s},week:{day:7,hour:24*7},day:{hour:24},hour:{minute:60}};function gs(t){return t?ne(t):365}function ps(t){return ne(t)*24}function ys(t){const e=L(t),n=V(O(lt(t)),1);return ct(n,e)}function se(t){if(t){const e=L(t),n=lt(t);return it(n,e)+1}return 91}function ks(t){return se(t)*24}function ws(t){if(t){const e=Qt(t),n=V(O(ut(t)),1);return ct(n,e)}return 5}function bs(t){return t?ee(t):30}function _s(t){return ee(t)*24}function Z(t,e,n){const s=F[t][e];return s?typeof s=="number"?s:s(n):1}function xs(t,e){return t===e||!!(F[t]&&F[t][e])}const tt={year:Ge,quarter:Qe,month:rt,week:qt,day:V,hour:Le,minute:Xe};function et(t,e,n){if(e){if(t==="day")return(s,a)=>e.getWorkingDays(a,s,!0);if(t==="hour")return(s,a)=>e.getWorkingHours(a,s,!0)}return(s,a,r,i)=>{const o=F[t]?.[r];return!o||typeof o=="number"||ie(t,s,a,n)?Q(t,s,a,r,i,n):vs(s,a,t,r,i,n)}}function Q(t,e,n,s,a,r){const i=s||t;let o=n,c=e;if(a&&(o=W(i,n,r),c=W(i,e,r),c<e&&(c=I(i)(c,1))),t!==i){const d=ft[i](c,o),u=Z(t,i,n);return d/u}else return ft[i](c,o)}function vs(t,e,n,s,a,r){let i=0;const o=W(n,e,r);if(e>o){const d=tt[n](o,1);i=Q(n,d,e,s,void 0,r),e=d}let c=0;return ie(n,e,t,r)||(c=Q(n,W(n,t,r),e,void 0,void 0,r),e=tt[n](e,c)),c+=i+Q(n,t,e,s,void 0,r),!c&&a&&(c=Q(n,t,e,s,a,r)),c}function I(t,e){if(e){if(t==="day")return(n,s)=>e.addWorkingDays(n,s,!0);if(t==="hour")return(n,s)=>e.addWorkingHours(n,s)}return tt[t]}const ae={year:Gt,quarter:L,month:Qt,week:(t,e)=>C(t,{weekStartsOn:e}),day:O,hour:us};function W(t,e,n){const s=ae[t];return s?s(e,n):new Date(e)}const Ss={year:rn,quarter:lt,month:ut,week:(t,e)=>cn(t,{weekStartsOn:e}),day:Ut,hour:on},re={year:ms,quarter:fs,month:hs,week:(t,e,n)=>ls(t,e,{weekStartsOn:n}),day:Re};function ie(t,e,n,s){const a=re[t];return a?a(e,n,s):!1}const Ms={start:ae,end:Ss,add:tt,isSame:re,diff:ft,smallerCount:F},oe=t=>typeof t=="function"?t(new Date):t;function Ds(t,e){for(const n in e){if(n==="smallerCount"){const s=Object.keys(e[n]).sort((o,c)=>$.indexOf(o)-$.indexOf(c)).shift();let a=$.indexOf(s);const r=e[n][s],i=oe(r);for(let o=a-1;o>=0;o--){const c=$[o],d=oe(F[c][s]);if(i<=d)break;a=o}$.splice(a,0,t)}if(n==="biggerCount")for(const s in e[n])F[s][t]=e[n][s];else Ms[n][t]=e[n]}}function mt(t,e=1,n){return n.isWorkingDay(t)||(t=e>0?n.getNextWorkingDay(t):n.getPreviousWorkingDay(t)),t}function Ts(t){return(e,n)=>{if(n>0)for(let s=0;s<n;s++)e=t.getNextWorkingDay(e);if(n<0)for(let s=0;s>n;s--)e=t.getPreviousWorkingDay(e);return e}}function B(t){const e=new Date;return t.map(n=>({item:n,len:I(n.unit)(e,1)})).sort((n,s)=>n.len<s.len?-1:1)[0].item}const $=["year","quarter","month","week","day","hour"],gt=50,pt=300;function Is(t,e,n,s,a,r,i,o,c){const d=!t||n,u=!e||n;let h=t,l=e,m=!1,g=!1;(d||u)&&a?.forEach(p=>{let y=p.start;c&&p.base_start<p.start&&(y=p.base_start),d&&(!h||y<=h)&&(h=y,m=!0);let k=p.type==="milestone"?p.start:p.end;if(c){const b=p.type==="milestone"?p.base_start:p.base_end;b&&b>k&&(k=b)}u&&(!l||k>=l)&&(l=k,g=!0)});const f=I(s||"day");return h?m&&(h=f(h,-1)):l?h=f(l,-30):h=new Date,l?g&&(l=f(l,1)):l=f(h,30),{_start:h,_end:l}}function Ws(t,e,n,s,a,r,i,o){const c=B(i).unit,d=et(c,void 0,r),u=d(e,t,"",!0),h=W(c,e,r);t=W(c,t,r),e=h<e?I(c)(h,1):h;const l=u*s,m=a*Math.max(o,i.length),g=i.map(p=>{const y=[],k=I(p.unit);let b=W(p.unit,t,r);for(;b<e;){const _=k(b,p.step),v=b<t?t:b,M=_>e?e:_,P=d(M,v,"",!0)*s,T=typeof p.format=="function"?p.format(b,_):p.format;let S="";p.css&&(S+=typeof p.css=="function"?p.css(b):p.css),y.push({width:P,value:T,date:v,css:S,unit:p.unit}),b=_}return{cells:y,add:k,height:m/i.length}});let f=s;return c!==n&&(f=f/Z(c,n)),{rows:g,width:l,height:m,diff:d,start:t,end:e,lengthUnit:n,minUnit:c,lengthUnitWidth:f}}function $s(t,e,n,s){const a=typeof t=="boolean"?{}:t,r=$.indexOf(B(n).unit);if(typeof a.level>"u"&&(a.level=r),a.levels)a.levels.forEach(c=>{c.minCellWidth||(c.minCellWidth=nt(a.minCellWidth,gt)),c.maxCellWidth||(c.maxCellWidth=nt(a.maxCellWidth,pt))});else{const c=[],d=n.length||1,u=nt(a.minCellWidth,gt),h=nt(a.maxCellWidth,pt);n.forEach(l=>{l.format&&!e[l.unit]&&(e[l.unit]=l.format)}),$.forEach((l,m)=>{if(m===r)c.push({minCellWidth:u,maxCellWidth:h,scales:n});else{const g=[];if(m)for(let f=d-1;f>0;f--){const p=$[m-f];p&&g.push({unit:p,step:1,format:e[p]})}g.push({unit:l,step:1,format:e[l]}),c.push({minCellWidth:u,maxCellWidth:h,scales:g})}}),a.levels=c}a.levels[a.level]||(a.level=0);const i=a.levels[a.level],o=Math.min(Math.max(s,i.minCellWidth),i.maxCellWidth);return{zoom:a,scales:i.scales,cellWidth:o}}function Ps(t,e,n,s,a,r,i){t.level=n;let o;const c=s.scales||s,d=B(c).unit,u=Es(d,a);if(e<0){const m=Z(d,a);o=i*m}else{const m=Z(B(r).unit,d);o=Math.round(i/m)}const h=s.minCellWidth??gt,l=s.maxCellWidth??pt;return{scales:c,cellWidth:Math.min(l,Math.max(h,o)),lengthUnit:u,zoom:t}}function Cs(t,e){const{_start:n,_scales:s,start:a,end:r,_end:i,cellWidth:o,_scaleDate:c,_zoomOffset:d,_weekStart:u}=e,h=I(s.minUnit);let l=s.width;if(a&&r){if(l<t&&l){const y=t/l;return{cellWidth:o*y}}return{}}let m=0;for(;l<t;)l+=o,m++;let g=0;if(m){if(r)g=-m;else if(c&&d!==null){const y=d/o,k=s.diff(c,n,"hour");g=Math.floor(k-y)}}let f=a;a||(f=W(s.minUnit,h(n,g),u));let p=0;if(c){const y=s.diff(c,f,"hour");p=Math.max(0,Math.round(y*o)-(d||0))}return{_start:f,_end:r||h(i,m-g),scrollLeft:p}}function Es(t,e){const n=$.indexOf(t),s=$.indexOf(e);return s>=n?t==="hour"?"hour":"day":$[s]}function nt(t,e){return t??e}const yt=7,Os=3,kt=8,ce=4,Hs=kt+ce;function de(t,e,n){(t.open||t.type!=="summary"||n)&&t.data?.forEach(s=>{s.$x+=e,s.$x_rollup&&(s.$x_rollup+=e),de(s,e,n)})}function wt(t,e){const n=t.getSummaryId(e.id);if(n){const s=t.byId(n),a={xMin:1/0,xMax:0};ue(s,a),s.$x=a.xMin,s.$w=a.xMax-a.xMin,wt(t,s)}}function ue(t,e){t.data?.forEach(n=>{if(!n.unscheduled){const s=n.type==="milestone"&&n.$h?n.$h/2:0;e.xMin>n.$x+s&&(e.xMin=n.$x+s);const a=n.$x+n.$w-s;e.xMax<a&&(e.xMax=a)}n.type!=="summary"&&ue(n,e)})}function bt(t,e){let n;e&&(n=e.filter(a=>a.parent===t.id));const s={data:n,...t};if(s.data?.length)s.data.forEach(a=>{if(a.unscheduled&&!a.data)return;(e||a.type!=="summary"&&a.data)&&(a.unscheduled&&(a={...a,start:void 0,end:void 0}),a=bt(a,e)),a.start&&(!s.start||s.start>a.start)&&(s.start=new Date(a.start));const r=a.end||a.start;r&&(!s.end||s.end<r)&&(s.end=new Date(r))});else if(t.type==="summary")throw Error("Summary tasks must have start and end dates if they have no subtasks");return s}function le(t,e,n){return _t(t,e,n,!1),n.splitTasks&&t.segments?.forEach(s=>{le(s,e,{...n,baselines:!1}),s.$x-=t.$x}),n.baselines&&_t(t,e,n,!0),t.data&&!t.open&&he(t,n),t}function _t(t,e,n,s){const{cellWidth:a,cellHeight:r,_scales:i,baselines:o,_rollups:c}=n,{start:d,end:u,lengthUnit:h,diff:l}=i,m=(s?"base_":"")+"start",g=(s?"base_":"")+"end",f="$x"+(s?"_base":""),p="$y"+(s?"_base":""),y="$w"+(s?"_base":""),k="$h"+(s?"_base":""),b="$skip"+(s?"_baseline":"");let _=t[m],v=t[g];if(s&&!_){t[b]=!0;return}t[m]<d&&(t[g]<d||z(t[g],d))?_=v=d:t[m]>u&&(_=v=u),t[f]=Math.round(l(_,d,h)*a),t[y]=Math.round(l(v,_,h,!0)*a),e!==null&&(t[p]=s?t.$y+t.$h+ce:r*e+Os),t[k]=s?kt:o?r-yt-Hs:r-yt,t.type==="milestone"&&(t[f]=t[f]-t.$h/2,t[y]=t.$h,s&&(t[p]=t.$y+kt,t[y]=t[k]=t.$h)),n.unscheduledTasks&&t.unscheduled&&!s?t.$skip=!0:t[b]=z(_,v)}function he(t,e,n){n=n??t.type!=="summary",t.data&&!t.$skip&&(n||e._rollups)&&t.data.forEach(s=>{(n||s.rollup)&&_t(s,null,e,!1),he(s,e,n)})}function Fs(t,e){return!1}function Ns(t,e){}const xt=20,Ys=function(t,e,n,s){if(!e||!n||!e.$y||!n.$y||e.$skip||n.$skip)return t.$p="",t.$pl=0,t;let a=!1,r=!1;switch(t.type){case"e2s":r=!0;break;case"s2s":a=!0,r=!0;break;case"s2e":a=!0;break}const i=a?e.$x:e.$x+e.$w,o=e.$y+e.$h/2,c=r?n.$x:n.$x+n.$w,d=n.$y+n.$h/2,u=(s-yt-n.$h)/2;if(i!==c||o!==d){const h=zs(i,o,c,d,a,r,s/2,u),l=Bs(c,d,r);t.$p=`${h},${l}`,t.$pl=As(t.$p)}return t};function As(t){const e=t.split(",").map(Number),n=[];for(let a=0;a<e.length;a+=2)a+1<e.length&&n.push([e[a],e[a+1]]);let s=0;for(let a=0;a<n.length-1;a++){const[r,i]=n[a],[o,c]=n[a+1];s+=Math.hypot(o-r,c-i)}return s}function zs(t,e,n,s,a,r,i,o){const c=xt*(a?-1:1),d=xt*(r?-1:1),u=t+c,h=n+d,l=[t,e,u,e,0,0,0,0,h,s,n,s],m=h-u;let g=s-e;const f=r===a;return f||(h<=t+xt-2&&r||h>t&&!r)&&(g=g-i+o),f&&r&&u>h||f&&!r&&u<h?(l[4]=l[2]+m,l[5]=l[3],l[6]=l[4],l[7]=l[5]+g):(l[4]=l[2],l[5]=l[3]+g,l[6]=l[4]+m,l[7]=l[5]),l.join(",")}function Bs(t,e,n){return n?`${t-5},${e-3},${t-5},${e+3},${t},${e}`:`${t+5},${e+3},${t+5},${e-3},${t},${e}`}function js(t,e,n){if(e&&n){const s=n.x-e.x,a=n.y-e.y,r=(s>0?e.x:n.x)-t.left,i=(a>0?e.y:n.y)-t.top,o=`${s>0?0:-s},${a>0?0:-a},${s>0?s:0},${a>0?a:0}`;return{width:Math.abs(s),height:Math.abs(a),left:r,top:i,p:o}}else return null}function fe(t){return t.map(e=>{const n=e.id||st();return{...e,id:n}})}const me=["start","end","duration"];function qs(t,e){const{type:n,unscheduled:s}=t;return s||n==="summary"?!me.includes(e):n==="milestone"?!["end","duration"].includes(e):!0}function Ls(t,e){return typeof e=="function"?e:me.includes(t)?(typeof e=="string"&&(e={type:e,config:{}}),e.config||(e.config={}),e.type==="datepicker"&&(e.config.buttons=["today"]),(n,s)=>qs(n,s.id)?e:null):e}function Us(t){return!t||!t.length?[]:t.map(e=>{const n=e.align||"left",s=e.id==="add-task",a=!s&&e.flexgrow?e.flexgrow:null,r=a?1:e.width||(s?50:120),i=e.editor&&Ls(e.id,e.editor);let o=Array.isArray(e.header)?e.header:[e.header];return o=o.map(c=>(typeof c!="object"&&(c={text:c}),c.filter&&typeof c.filter!="object"&&(c.filter={type:c.filter}),c)),{width:r,align:n,header:o,id:e.id,template:e.template,_template:e._template,...a&&{flexgrow:a},cell:e.cell,resize:e.resize??!0,sort:e.sort??!s,...i&&{editor:i},...e.options&&{options:e.options},getter:e.getter}})}const Xs=[{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:"add-task",header:"Add task",width:50,align:"center",sort:!1,resize:!1}];function G(t,e,n,s){const{selected:a,tasks:r}=t.getState(),i=a.length,o=["edit-task","paste-task","edit-task:task","edit-task:segment"],c=["copy-task","cut-task"],d=["copy-task","cut-task","delete-task","indent-task:remove","move-task:down"],u=["add-task","undo","redo"],h=["indent-task:add","move-task:down","move-task:up"],l={"indent-task:remove":2},m=!i&&u.includes(e),g={parent:h.includes(e),level:l[e]};if(n=n||(i?a[a.length-1]:null),!(!n&&!m)){if(e!=="paste-task"&&(t._temp=null),o.includes(e)||m||a.length===1)ge(t,e,n,s);else if(i){const f=c.includes(e)?a:Qs(a,r,g);d.includes(e)&&f.reverse();const p=t.getHistory();p&&p.startBatch(),f.forEach((y,k)=>ge(t,e,y,s,k)),p&&p.endBatch()}}}function Qs(t,e,n){let s=t.map(a=>{const r=e.byId(a);return{id:a,level:r.$level,parent:r.parent,index:e.getIndexById(a)}});return(n.parent||n.level)&&(s=s.filter(a=>n.level&&a.level<=n.level||!t.includes(a.parent))),s.sort((a,r)=>a.level-r.level||a.index-r.index),s.map(a=>a.id)}function ge(t,e,n,s,a){const r=t.exec?t.exec:t.in.exec;let i=e.split(":")[0],o=e.split(":")[1];const c=n?.id||n;let d={id:c},u={},h=!1;if(i==="copy-task"||i==="cut-task"){t._temp||(t._temp=[]),t._temp.push({id:c,cut:i==="cut-task"});return}else if(i==="paste-task"){if(t._temp&&t._temp.length){const l=t.getHistory();l&&l.startBatch();const m=new Map;if(t._temp.forEach(g=>{const f={id:g.id,target:c,mode:"after"};r(g.cut?"move-task":"copy-task",f),m.set(g.id,f.id)}),!t._temp[0].cut){const{links:g}=t.getState(),f=t._temp.map(y=>y.id),p=[];g.forEach(y=>{f.includes(y.source)&&f.includes(y.target)&&p.push(y)}),p.forEach(y=>{r("add-link",{link:{source:m.get(y.source),target:m.get(y.target),type:y.type}})}),t._temp.forEach((y,k)=>{r("select-task",{id:m.get(y.id),toggle:!!k})})}l&&l.endBatch(),t._temp=null}return}else i==="add-task"?(u={task:{type:"task",text:s("New Task")},target:c,show:!0,mode:"after",select:!1},d={},h=!0):i==="edit-task"?(i="show-editor",o==="segment"&&typeof n=="object"&&(u=n)):i==="convert-task"?(i="update-task",u={task:{type:o}},o=void 0):i==="indent-task"&&(o=o==="add");if(i==="split-task"&&typeof n=="object")u=n;else if(i==="delete-task"&&o==="segment"&&typeof n=="object"){const l=t.getTask(c),{segmentIndex:m}=n,g=l.segments.filter((f,p)=>p!==m);r("update-task",{id:c,task:{segments:g}});return}typeof o<"u"&&(u={...u,mode:o}),d={...d,...u},r(i,d),h&&r("select-task",{id:d.id,toggle:!!a})}function pe(t,e){return t.some(n=>n.data?pe(n.data,e):n.id===e)}const ye=(t,e)=>I(t,e),Gs=(t,e)=>et(t,e);function ke(t,e){Array.isArray(t)&&(t.forEach(n=>N(n,e)),t.forEach(n=>{if(n.type==="summary"&&!(n.start&&n.end)){const{start:s,end:a}=bt(n,t);n.start=s,n.end=a,N(n,e)}}))}function N(t,e){t.unscheduled||we(t,e,!1),t.base_start&&we(t,e,!0)}function we(t,e,n){const{calendar:s,durationUnit:a}=e,r=a||"day",[i,o,c]=be(n);t.type==="milestone"?(t[c]=0,t[o]=void 0):t[i]&&(t[c]?t[o]=ye(r,s)(t[i],t[c]):t[o]?t[c]=Gs(r,s)(t[o],t[i]):(t[o]=ye(r,s)(t[i],1),t[c]=1))}function be(t){return t?["base_start","base_end","base_duration"]:["start","end","duration"]}function _e(t,e,n){const[s,a,r]=be(n);(e===r||e===s)&&(t[a]=null),e===a&&(t[r]=0,t[s]&&t[s]>=t[a]&&(t[a]=null,t[r]=1))}function Rs(t,e,n){_e(t,n,!1),t.base_start&&_e(t,n,!0),N(t,e)}class Vs extends We{in;_router;_modules=new Map;constructor(e){super({writable:e,async:!1}),this._router=new $e(super.setState.bind(this),[{in:["tasks","start","end","scales","autoScale","markers","projectStart","projectEnd","baselines"],out:["_start","_end"],exec:a=>{const{_end:r,_start:i,start:o,end:c,tasks:d,scales:u,autoScale:h,markers:l,projectStart:m,projectEnd:g,baselines:f}=this.getState();if(!o||!c||h){const p=B(u).unit,y=Is(o,c,h,p,d,l,m,g,f);(y._end!==r||y._start!==i)&&this.setState(y,a)}else this.setState({_start:o,_end:c},a)}},{in:["columns"],out:["_headerLength"],exec:a=>{const r=this.getState().columns;let i=1;r.length&&r.forEach(o=>{i=Math.max(o.header.length,i)}),this.setState({_headerLength:i},a)}},{in:["_start","_end","cellWidth","scaleHeight","scales","lengthUnit","_weekStart","_headerLength"],out:["_scales"],exec:a=>{const r=this.getState();let{lengthUnit:i}=r;const{_start:o,_end:c,cellWidth:d,scaleHeight:u,scales:h,_weekStart:l,_headerLength:m}=r,g=B(h).unit;xs(g,i)||(i=g);const f=Ws(o,c,i,d,u,l,h,m);this.setState({_scales:f},a)}},{in:["_scales","rollups","tasks","cellHeight","baselines","unscheduledTasks"],out:["_tasks"],exec:a=>{const{cellWidth:r,cellHeight:i,tasks:o,_scales:c,baselines:d,splitTasks:u,unscheduledTasks:h,_rollups:l}=this.getState(),m=o.toArray().map((g,f)=>le(g,f,{cellWidth:r,cellHeight:i,_scales:c,baselines:d,splitTasks:u,unscheduledTasks:h,_rollups:l}));this.setState({_tasks:m},a)}},{in:["_tasks","links","cellHeight"],out:["_links"],exec:a=>{const{tasks:r,links:i,cellHeight:o,criticalPath:c,_isFiltered:d}=this.getState(),u=i.map(h=>{const l=r.byId(h.source),m=r.byId(h.target);return Ys(h,l,m,o)}).toSorted((h,l)=>c?!!h.critical==!!l.critical?l.$pl-h.$pl:h.critical?1:-1:l.$pl-h.$pl).filter(h=>h&&d?r.isFilteredId(h.source)&&r.isFilteredId(h.target):h!==null);this.setState({_links:u},a)}},{in:["tasks","activeTask"],out:["_activeTask"],exec:a=>{const r=this.getState();let{activeTask:i}=r;i&&typeof i=="object"&&(i=i.id);const o=r.tasks.byId(i);this.setState({_activeTask:o||null},a)}},{in:["tasks","selected"],out:["_selected"],exec:a=>{const{tasks:r,selected:i,_isFiltered:o}=this.getState(),c=i.map(d=>r.byId(d)).filter(d=>d?!o||r.isFilteredId(d.id):!1);this.setState({_selected:c},a)}},{in:["start","end"],out:["cellWidth"],exec:a=>{const{_cellWidth:r,cellWidth:i}=this.getState();r!==i&&this.setState({cellWidth:r},a)}}],{tasks:a=>new je(a),links:a=>new Pt(a),columns:a=>Us(a)});const n=this.in=new Pe;n.on("show-editor",a=>{const{splitTasks:r}=this.getState();if(r){const{id:i,segmentIndex:o}=a;if(i&&(o||o===0)){this.setStateAsync({activeTask:{id:i,segmentIndex:o}});return}}this.setStateAsync({activeTask:a.id})}),n.on("select-task",({id:a,toggle:r,range:i,show:o=!0,segmentIndex:c,focus:d,eventSource:u})=>{const{selected:h,_tasks:l,activeTask:m,splitTasks:g}=this.getState();let f=!1,p;if(h.length&&(r||i)){const k=[...h];if(i){const b=k[k.length-1],_=l.findIndex(S=>S.id===b),v=l.findIndex(S=>S.id===a),M=Math.min(_,v),P=Math.max(_,v)+1,T=l.slice(M,P).map(S=>S.id);_>v&&T.reverse(),T.forEach(S=>{k.includes(S)||k.push(S)})}else if(r){const b=k.findIndex(_=>_===a);b===-1?k.push(a):(f=!0,k.splice(b,1))}p=k}else p=[a];const y={selected:p};this.setStateAsync(y),p.length&&(d&&(o=d==="chart"?"xy":o||"y"),o&&(this.scrollToTask(p[0],o,u||"select-task"),d&&this.setStateAsync({focusTask:{id:p[0],column:d==="grid"}}))),!f&&m&&(m!==a||g)&&n.exec("show-editor",{id:a,...g&&{segmentIndex:c}})}),n.on("delete-link",({id:a})=>{const{links:r}=this.getState();r.remove(a),this.setStateAsync({links:r})}),n.on("update-link",a=>{const{links:r}=this.getState(),i=a.id;let o=a.link;r.update(i,o),o=r.byId(i),!o.lag&&o.lag!==0&&delete o.lag,this.setStateAsync({links:r}),a.link=o}),n.on("add-link",a=>{const{link:r}=a,{links:i}=this.getState();!r.source||!r.target||(r.type||(r.type="e2s"),r.id=r.id||st(),i.add(r),this.setStateAsync({links:i}),a.id=r.id,a.link=i.byId(r.id))});let s=null;n.on("move-task",a=>{const{tasks:r}=this.getState();let{mode:i,target:o}=a;const{id:c,inProgress:d}=a,u=r.byId(c);if(typeof d>"u"?a.source=u.parent:a.source=s=s??u.parent,d===!1){r.update(u.id,{$reorder:!1}),this.setState({tasks:r}),s=null;return}if(o===c||r.contains(c,o)){a.skipProvider=!0;return}if(i==="up"||i==="down"){const h=r.getBranch(c);let l=r.getIndexById(c);if(i==="up"){const m=u.parent===0;if(l===0&&m){a.skipProvider=!0;return}l-=1,i="before"}else if(i==="down"){const m=l===h.length-1,g=u.parent===0;if(m&&g){a.skipProvider=!0;return}l+=1,i="after"}if(o=h[l]&&h[l].id||u.parent,o){const m=r.getBranch(o);let g=r.getIndexById(o),f=m[g];if(f.data){if(i==="before"){if(f.parent===u.parent){for(;f.data;)f.open||n.exec("open-task",{id:f.id,mode:!0}),f=f.data[f.data.length-1];o=f.id}}else if(i==="after"){let k;f.parent===u.parent?(k=f,f=f.data[0],o=f.id,i="before"):m.length-1!==g&&(k=f,g+=1,f=m[g],u.$level>f.$level&&f.data?(k=f,f=f.data[0],o=f.id,i="before"):o=f.id),k&&!k.open&&n.exec("open-task",{id:k.id,mode:!0})}}const p=r.getSummaryId(u.id);r.move(c,i,o);const y=r.getSummaryId(c);p!==y&&(p&&this.resetSummaryDates(p,"move-task"),y&&this.resetSummaryDates(y,"move-task"))}}else{const h=r.byId(o);let l=h,m=!1;for(;l.$level>u.$level;)l=r.byId(l.parent),l.id===c&&(m=!0);if(m)return;const g=r.getSummaryId(u.id);if(r.move(c,i,o),i==="child"){let p=h;for(;p.id!==0&&!p.open;)n.exec("open-task",{id:p.id,mode:!0}),p=r.byId(p.parent)}const f=r.getSummaryId(c);g!==f&&(g&&this.resetSummaryDates(g,"move-task"),f&&this.resetSummaryDates(f,"move-task"))}d?this.setState({tasks:r}):this.setStateAsync({tasks:r}),a.target=o,a.mode=i}),n.on("drag-task",a=>{const r=this.getState(),{tasks:i,_tasks:o,_selected:c,rollups:d,slack:u}=r,h=i.byId(a.id),{left:l,top:m,width:g,inProgress:f}=a,p={_tasks:o,_selected:c};if(typeof g<"u"&&(h.$w=g,wt(i,h)),typeof l<"u"){if(h.type==="summary"){const y=l-h.$x;de(h,y,!!d)}h.$x=l,wt(i,h)}typeof m<"u"&&(h.$y=m+4,h.$reorder=f),this.setState(p)}),n.on("update-task",a=>{const{id:r,segmentIndex:i,diff:o,eventSource:c}=a;let{task:d}=a;const{tasks:u,_scales:h,durationUnit:l,splitTasks:m,calendar:g}=this.getState(),f=u.byId(r),p={durationUnit:l,calendar:g};if(c==="add-task"||c==="copy-task"||c==="move-task"||c==="update-task"||c==="delete-task"||c==="provide-data"){N(d,p),u.update(r,d);return}const y=h.lengthUnit;let k=I(y);const b=et(l,g);if(o&&(d.start&&(d.start=k(d.start,o)),!i&&i!==0&&(d.start&&d.end?d.duration=f.duration:(d.start?d.end=f.end:(d.end=k(d.end,o),d.start=f.start,d.duration=b(d.end,d.start)),b(d.end,d.start)||(d.duration=1)))),d.type=d.type??f.type,g&&d.start&&(d.start=mt(d.start,o,g)),d.start&&d.end&&(!z(d.start,f.start)||!z(d.end,f.end))&&d.type==="summary"&&f.data?.length){let v=o||b(d.start,f.start);g&&(v=d.start>f.start?b(d.start,f.start):-b(f.start,d.start),k=Ts(g)),this.moveSummaryKids(f,M=>(M=k(M,v),g?mt(M,o,g):M),"update-task")}d.start||(d.start=f.start),!d.end&&!d.duration&&(d.duration=f.duration),N(d,p),u.update(r,d),(g&&d.type==="summary"||d.type==="summary"&&f.type!=="summary")&&this.resetSummaryDates(r,"update-task",!0);const _=u.getSummaryId(r);_&&this.resetSummaryDates(_,"update-task"),this.setStateAsync({tasks:u}),a.task=u.byId(r)}),n.on("add-task",a=>{const{tasks:r,_scales:i,unscheduledTasks:o,durationUnit:c,splitTasks:d,calendar:u}=this.getState(),{target:h,mode:l,task:m,show:g,select:f=!0,focus:p}=a;!a.eventSource&&o&&(m.unscheduled=!0);let y=-1,k,b;if(h?(b=r.byId(h),l==="child"?(k=b,m.parent=k.id):(b.parent!==null&&(k=r.byId(b.parent),m.parent=k.id),y=r.getIndexById(h),l==="after"&&(y+=1))):m.parent&&(k=r.byId(m.parent)),!m.start){if(k?.start)m.start=new Date(k.start.valueOf());else if(b)m.start=new Date(b.start.valueOf());else{const P=r.getBranch(0);let T;if(P?.length){const S=P[P.length-1];if(!S.$skip){const Wt=new Date(S.start.valueOf());i.start<=Wt&&(T=Wt)}}m.start=T||I(c,u)(i.start,1)}m.duration=1}u&&(m.start=mt(m.start,1,u)),this.getState().baselines&&(m.base_start=m.start,m.base_duration=m.duration),N(m,{durationUnit:c,calendar:u});const _=r.add(m,y),v={tasks:r};if(g)for(;k&&k.id;)n.exec("open-task",{id:k.id,mode:!0}),k=r.byId(k.parent);a.id=_.id;const M=r.getSummaryId(_.id);M&&this.resetSummaryDates(M,"add-task"),this.setStateAsync(v),a.id=_.id,a.task=_,f?n.exec("select-task",{id:_.id,show:g,focus:p,eventSource:"add-task"}):g&&this.scrollToTask(_.id,g,"add-task")}),n.on("delete-task",a=>{const{id:r}=a,{tasks:i,links:o,selected:c}=this.getState(),d=i.byId(r);a.source=d.parent;const u=i.getSummaryId(r),h=[r];i.eachChild(m=>h.push(m.id),r),o.filter(m=>!(h.includes(m.source)||h.includes(m.target)));const l={tasks:i,links:o};c.includes(r)&&(l.selected=c.filter(m=>m!==r)),i.remove(r),u&&this.resetSummaryDates(u,"delete-task"),this.setStateAsync(l)}),n.on("indent-task",({id:a,mode:r})=>{const{tasks:i}=this.getState();if(r){const o=i.getBranch(a)[i.getIndexById(a)-1];o&&n.exec("move-task",{id:a,mode:"child",target:o.id})}else{const o=i.byId(a),c=i.byId(o.parent);c&&c.parent!==null&&n.exec("move-task",{id:a,mode:"after",target:o.parent})}}),n.on("copy-task",a=>{const{id:r,target:i,mode:o,eventSource:c}=a;if(c==="copy-task")return;const{tasks:d,links:u}=this.getState();if(d.contains(r,i)){a.skipProvider=!0;return}const h=d.getSummaryId(r),l=d.getSummaryId(i);let m=d.getIndexById(i);o==="before"&&(m-=1);const g=d.byId(r),f=d.copy(g,d.byId(i).parent,m+1);a.source=a.id,a.id=f[0][1],g.lazy&&(a.lazy=!0),h!==l&&l&&this.resetSummaryDates(l,"copy-task");let p=[];for(let y=1;y<f.length;y++){const[k,b]=f[y];u.forEach(_=>{if(_.source===k){const v={..._};delete v.target,p.push({...v,source:b})}else if(_.target===k){const v={..._};delete v.source,p.push({...v,target:b})}})}p=p.reduce((y,k)=>{const b=y.findIndex(_=>_.id===k.id);return b>-1?y[b]={...y[b],...k}:y.push(k),y},[]);for(let y=1;y<f.length;y++){const[k,b]=f[y],_=d.byId(b);n.exec("copy-task",{source:k,id:b,lazy:!!_.lazy,eventSource:"copy-task",target:_.parent,mode:"child",skipUndo:!0})}p.forEach(y=>{n.exec("add-link",{link:{source:y.source,target:y.target,type:y.type},eventSource:"copy-task",skipUndo:!0})}),this.setStateAsync({tasks:d})}),n.on("open-task",({id:a,mode:r})=>{const{tasks:i}=this.getState(),o=i.byId(a);o.lazy?n.exec("request-data",{id:o.id}):(i.toArray().forEach(c=>c.$y=0),i.update(a,{open:r}),this.setState({tasks:i}))}),n.on("scroll-chart",({left:a,top:r,date:i,eventSource:o})=>{const{_chartWidth:c,_chartHeight:d,_tasks:u,cellHeight:h,_scales:l,cellWidth:m,_start:g}=this.getState();let f={};if(i){const p=l.diff(i,g,"hour");a=Math.round(p*m)}if(!isNaN(a)){if(typeof c<"u"&&!isNaN(l.width)){const p=l.width-c;a=Math.max(Math.min(a,p),0)}f={scrollLeft:a,_scaleDate:this.calcScaleDate(a),_zoomOffset:null}}if(!isNaN(r)){if(typeof d<"u"){const p=l.height+u.length*h-d;r=Math.max(Math.min(r,p),0)}f.scrollTop=r}o==="add-task"?this.setStateAsync(f):this.setState(f)}),n.on("render-data",a=>{this.setState({area:a})}),n.on("provide-data",a=>{const{tasks:r,links:i,durationUnit:o,calendar:c,splitTasks:d}=this.getState(),u=r.byId(a.id);u.lazy?(u.lazy=!1,u.open=!0):u.data=[],ke(a.data.tasks,{durationUnit:o,calendar:c}),r.parse(a.data.tasks,a.id),u.type==="summary"&&this.resetSummaryDates(u.id,"provide-data"),this.setStateAsync({tasks:r,links:new Pt(i.map(h=>h).concat(fe(a.data.links)))})}),n.on("zoom-scale",({dir:a,ratio:r,offset:i})=>{const{zoom:o,cellWidth:c,_cellWidth:d,scrollLeft:u}=this.getState(),h=(i||0)+u,l=this.calcScaleDate(h),m=a<0&&d||c;let g=Math.round(m*(1+a*(r||.15)));const{maxCellWidth:f,minCellWidth:p}=o.levels[o.level],y=a<0&&c>f;if(g<p||g>f||y){if(!this.changeScale(o,a))if(g=Math.max(Math.min(g,f),p),g!==c)this.setState({cellWidth:g,_cellWidth:g});else return}else this.setState({cellWidth:g,_cellWidth:g});const{_scales:k,_start:b,cellWidth:_,_weekStart:v}=this.getState(),M=W(k.minUnit,b,v),P=k.diff(l,M,"hour");typeof i>"u"&&(i=_);let T=Math.round(P*_)-i;T<0&&(T=0),this.setState({scrollLeft:T,_scaleDate:l,_zoomOffset:i})}),n.on("sort-tasks",({key:a,order:r,add:i})=>{const o=this.getState(),{tasks:c,columns:d}=o;let u=o._sort;const h={key:a,order:r};let l=u?.length||0;l&&i?(u.forEach((m,g)=>{m.key===a&&(l=g)}),u[l]=h):u=[h],c.sort(u,d),this.setState({_sort:u,tasks:c})}),n.on("filter-tasks",a=>{const{open:r,key:i,value:o}=a;let c=a.filter;const d=this.getState(),{tasks:u,columns:h}=d;let l=d.filterValues;i?l={...l,[i]:o}:Object.keys(a).length||(l={}),!c&&Object.values(l).some(m=>m||m===0)&&(c=He(l,h)),u.filterTree(c,r??!0),this.setState({tasks:u,_isFiltered:!!c,filterValues:l})}),n.on("hotkey",({key:a,event:r,eventSource:i})=>{switch(a){case"arrowup":case"arrowdown":{const{selected:o,_tasks:c}=this.getState();r.preventDefault();const d=o.length;let u;if(a==="arrowup"?u=d?this.getPrevRow(o[d-1])?.id:c[c.length-1]?.id:u=d?this.getNextRow(o[d-1])?.id:c[0]?.id,u){const h=i==="chart"?"xy":!0,l=i;this.in.exec("select-task",{id:u,show:h,focus:l})}break}case"ctrl+c":{G(this,"copy-task",null,null);break}case"ctrl+x":{G(this,"cut-task",null,null);break}case"ctrl+v":{G(this,"paste-task",null,null);break}case"ctrl+d":case"backspace":{r.preventDefault(),G(this,"delete-task",null,null);break}case"ctrl+z":{this.in.exec("undo",{});break}case"ctrl+y":{this.in.exec("redo",{});break}}}),n.on("resize-chart",({width:a,height:r,scrollSize:i})=>{let o={};const c=this.getState();a>c._scales?.width&&(o=Cs(a,c)),this.setState({...o,_chartWidth:a,_chartHeight:r,_scrollSize:i})})}init(e){const n=this.getState().area?{}:{scrollLeft:0,scrollTop:0,area:{from:0,start:0,end:0},_isFiltered:!1,filterValues:{}};if(e.cellWidth&&(e._cellWidth=e.cellWidth),e._sort=null,e.unscheduledTasks=!1,e.baselines=!1,e.markers=[],e._markers=[],e.undo=!1,e.schedule={},e.criticalPath=null,e.splitTasks=!1,e.summary={},e.rollups=!1,e._rollups={},e.slack=!1,!e.tasks._ready&&Array.isArray(e.tasks)){e.tasks._ready=!0,this.getHistory()?.resetHistory();const s=this.getState();s.tasks&&s._isFiltered&&(this.setState({_isFiltered:!1,filterValues:{}}),s.tasks.filterTree())}this._router.init({selected:[],markers:[],autoScale:!0,durationUnit:"day",focusTask:null,...n,...e})}setState(e,n){return this._router.setState(e,n)}setStateAsync(e){this._router.setStateAsync(e)}getTask(e){const{tasks:n}=this.getState();return n.byId(e)}getHistory(){return this.getState().undo?this._modules.get("historyManager"):null}serialize(){return this.getState().tasks.serialize()}changeScale(e,n){const s=e.level+n,a=e.levels[s];if(a){const{cellWidth:r,scales:i,_scales:o}=this.getState(),c=Ps(e,n,s,a,o.lengthUnit,i,r);return c._cellWidth=c.cellWidth,this.setState(c),!0}return!1}isScheduled(e){return this.getState().unscheduledTasks?e.some(n=>!n.unscheduled||n.data&&this.isScheduled(n.data)):!0}resetSummaryDates(e,n,s){const{tasks:a,durationUnit:r,splitTasks:i,calendar:o}=this.getState(),c=a.byId(e),d=c.data;if(d?.length&&this.isScheduled(d)){const u=bt({...c,start:void 0,end:void 0,duration:void 0});if(!z(c.start,u.start)||!z(c.end,u.end)){s?(N(u,{durationUnit:r,calendar:o}),a.update(e,u)):this.in.exec("update-task",{id:e,task:u,eventSource:n,skipUndo:!0});const h=a.getSummaryId(e);h&&this.resetSummaryDates(h,n)}}}moveSummaryKids(e,n,s){const{tasks:a}=this.getState();e.data.forEach(r=>{const i={...a.byId(r.id),start:n(r.start)};delete i.end,delete i.id,this.in.exec("update-task",{id:r.id,task:i,eventSource:s,skipUndo:!0}),r.data?.length&&this.moveSummaryKids(r,n,s)})}calcScaleDate(e){const{_scales:n,_start:s,_weekStart:a}=this.getState(),r=n.lengthUnit==="day"?n.lengthUnitWidth/24:n.lengthUnitWidth;return I("hour")(W(n.minUnit,s,a),Math.floor(e/r))}getNextRow(e){const n=this.getState()._tasks,s=n.findIndex(a=>a.id===e);return n[s+1]}getPrevRow(e){const n=this.getState()._tasks,s=n.findIndex(a=>a.id===e);return n[s-1]}scrollToTask(e,n,s){const{_chartWidth:a,_chartHeight:r,scrollLeft:i,scrollTop:o,cellWidth:c,cellHeight:d,tasks:u,_tasks:h,_scrollSize:l}=this.getState(),m=this.getTask(e),g={eventSource:s};if(n?.toString().indexOf("x")!==-1){if(m.$x+m.$w/2<i)g.left=Math.max(m.$x-(c||0),0);else if(m.$x+m.$w/2>=a+i){const p=a<m.$w?c:m.$w;g.left=m.$x-a+p}}const f=(s==="add-task"?u.toArray():h).findIndex(p=>p.id===e);if(f>-1){const p=f*d;let y=null;p<o?y=p:p+d>o+r&&(y=p-r+d+l),y!==null&&(g.top=Math.max(y,0)),this.in.exec("scroll-chart",g)}}}function Js(t,e,n,s){if(typeof document>"u")return"";const a=document.createElement("canvas");{const r=Ks(a,t,e,1,n);Zs(r,s,0,t,0,e)}return a.toDataURL()}function Ks(t,e,n,s,a){t.setAttribute("width",(e*s).toString()),t.setAttribute("height",(n*s).toString());const r=t.getContext("2d");return r.translate(-.5,-.5),r.strokeStyle=a,r}function Zs(t,e,n,s,a,r){t.beginPath(),t.moveTo(s,a),t.lineTo(s,r),e==="full"&&t.lineTo(n,r),t.stroke()}const vt=[{id:"task",label:"Task"},{id:"summary",label:"Summary task"},{id:"milestone",label:"Milestone"}];function ta(t){let e=[...ve];const n=t?.taskTypes||vt,s=e.find(a=>a.id==="convert-task");return s.data=[],n.forEach(a=>{(!t?.summary?.autoConvert||a.id!=="summary")&&s.data.push(s.dataFactory(a))}),e}function St(t){return t.map(e=>{switch(e.data&&St(e.data),e.id){case"add-task:before":case"move-task:up":e.isDisabled=(n,s)=>na(n,s);break;case"move-task:down":e.isDisabled=(n,s)=>sa(n,s);break;case"indent-task:add":e.isDisabled=(n,s)=>aa(n,s)===n.parent;break;case"indent-task:remove":e.isDisabled=n=>ea(n);break}return e})}function ea(t){return t.parent===0}function na(t,e){const{_tasks:n}=e;return n[0]?.id===t.id}function sa(t,e){const{_tasks:n}=e;return n[n.length-1]?.id===t.id}function aa(t,e){const{_tasks:n}=e,s=n.findIndex(a=>a.id===t.id);return n[s-1]?.id??t.parent}function xe(t){return t&&typeof t=="object"}function ra(t){return!t.selected||t.selected.length<2}const ia=t=>e=>e.type===t,ve=St([{id:"add-task",text:"Add",icon:"wxi-plus",data:[{id:"add-task:child",text:"Child task"},{id:"add-task:before",text:"Task above"},{id:"add-task:after",text:"Task below"}]},{type:"separator"},{id:"convert-task",text:"Convert to",icon:"wxi-swap-horizontal",dataFactory:t=>({id:`convert-task:${t.id}`,text:`${t.label}`,isDisabled:ia(t.id)})},{id:"edit-task",text:"Edit",icon:"wxi-edit",isHidden:(t,e,n)=>xe(n)},{type:"separator"},{id:"cut-task",text:"Cut",icon:"wxi-content-cut",subtext:"Ctrl+X"},{id:"copy-task",text:"Copy",icon:"wxi-content-copy",subtext:"Ctrl+C"},{id:"paste-task",text:"Paste",icon:"wxi-content-paste",subtext:"Ctrl+V"},{id:"move-task",text:"Move",icon:"wxi-swap-vertical",data:[{id:"move-task:up",text:"Up"},{id:"move-task:down",text:"Down"}]},{type:"separator"},{id:"indent-task:add",text:"Indent",icon:"wxi-indent"},{id:"indent-task:remove",text:"Outdent",icon:"wxi-unindent"},{type:"separator"},{id:"delete-task",icon:"wxi-delete",text:"Delete",subtext:"Ctrl+D / BS",isHidden:(t,e,n)=>ra(e)&&xe(n)}]);function oa(t){return[...Se]}const Se=St([{id:"add-task",comp:"button",icon:"wxi-plus",text:"New task",type:"primary"},{id:"edit-task",comp:"icon",icon:"wxi-edit",menuText:"Edit",text:"Ctrl+E"},{id:"delete-task",comp:"icon",icon:"wxi-delete",menuText:"Delete",text:"Ctrl+D, Backspace"},{comp:"separator"},{id:"move-task:up",comp:"icon",icon:"wxi-angle-up",menuText:"Move up"},{id:"move-task:down",comp:"icon",icon:"wxi-angle-down",menuText:"Move down"},{comp:"separator"},{id:"copy-task",comp:"icon",icon:"wxi-content-copy",menuText:"Copy",text:"Ctrl+V"},{id:"cut-task",comp:"icon",icon:"wxi-content-cut",menuText:"Cut",text:"Ctrl+X"},{id:"paste-task",comp:"icon",icon:"wxi-content-paste",menuText:"Paste",text:"Ctrl+V"},{comp:"separator"},{id:"indent-task:add",comp:"icon",icon:"wxi-indent",menuText:"Indent"},{id:"indent-task:remove",comp:"icon",icon:"wxi-unindent",menuText:"Outdent"}]);function Mt(t){return t.type==="summary"}function Dt(t){return t.type==="milestone"}function Tt(t){return typeof t.parent>"u"}function It(t,e){return e.unscheduledTasks&&t.unscheduled}function ca(t){const e=Me.map(s=>({...s})),n=e.find(s=>s.key==="type");return n.options=t?.taskTypes||vt,e}const Me=[{key:"text",comp:"text",label:"Name",config:{placeholder:"Add task name"}},{key:"details",comp:"textarea",label:"Description",config:{placeholder:"Add description"}},{key:"type",comp:"select",label:"Type",isHidden:t=>Tt(t)},{key:"start",comp:"date",label:"Start date",config:{format:"%d-%m-%Y"},isHidden:t=>Mt(t),isDisabled:It},{key:"end",comp:"date",label:"End date",config:{format:"%d-%m-%Y"},isHidden:t=>Mt(t)||Dt(t),isDisabled:It},{key:"duration",comp:"counter",label:"Duration",config:{min:1},isHidden:t=>Mt(t)||Dt(t),isDisabled:It},{key:"progress",comp:"slider",label:"Progress",config:{min:1,max:100},isHidden:t=>Dt(t)||Tt(t)},{key:"links",comp:"links",label:"",isHidden:t=>Tt(t)}];export{Vs as DataStore,Xs as defaultColumns,Me as defaultEditorItems,ve as defaultMenuOptions,vt as defaultTaskTypes,Se as defaultToolbarButtons,Ns as extendDragOptions,is as format,I as getAdder,et as getDiffer,ca as getEditorItems,ta as getMenuOptions,oa as getToolbarButtons,W as getUnitStart,Js as grid,G as handleAction,pe as isHandledAction,Fs as isSegmentMoveAllowed,fe as normalizeLinks,$s as normalizeZoom,ke as parseTaskDates,js as placeLink,Rs as prepareEditTask,Ds as registerScaleUnit};