@svar-ui/gantt-store 2.7.1 → 2.7.3

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