@svar-ui/gantt-store 2.8.0 → 2.8.2
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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/DataStore.d.ts +7 -4
- package/dist/types/eventSource.d.ts +3 -0
- package/dist/types/tasks.d.ts +2 -5
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var te=new Date().valueOf(),Wn=()=>te++;function ee(){return"temp://"+te++}function Tn(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const n in e){const s=t[n],a=e[n];if(!dt(s,a))return!1}return!0}function dt(t,e){if(typeof t=="number"||typeof t=="string"||typeof t=="boolean"||t===null)return t===e;if(typeof t!=typeof e||(t===null||e===null)&&t!==e||t instanceof Date&&e instanceof Date&&t.getTime()!==e.getTime())return!1;if(typeof t=="object")if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let n=t.length-1;n>=0;n--)if(!dt(t[n],e[n]))return!1;return!0}else return Tn(t,e);return t===e}var kt=class{constructor(t){this._data=t,this._pool=new Map;for(let e=0;e<t.length;e++){const n=t[e];this._pool.set(n.id,n)}}add(t){t={id:Wn(),...t},this._data.push(t),this._pool.set(t.id,t)}update(t,e){const n=this._data.findIndex(a=>a.id==t),s={...this._data[n],...e};this._data[n]=s,this._pool.set(s.id,s)}remove(t){this._data=this._data.filter(e=>e.id!=t),this._pool.delete(t)}filter(t){this._data=this._data.filter(e=>{const n=t(e);return n||this._pool.delete(e.id),n})}byId(t){return this._pool.get(t)}map(t){return this._data.map(t)}forEach(t){this._data.forEach(t)}},ne=class{constructor(t){const e={id:0,$level:0,data:[],parent:null},n=new Map;n.set(0,e),this._pool=n,t&&t.length&&this.parse(t,0)}parse(t,e){const n=this._pool;for(let a=0;a<t.length;a++){const o=t[a];o.parent=o.parent||e,o.data=null,n.set(o.id,o)}for(let a=0;a<t.length;a++){const o=t[a],r=n.get(o.parent);r&&(r.data||(r.data=[]),r.data.push(o))}const s=n.get(e);this.setLevel(s,s.$level+1,!1)}add(t,e){const n=this._pool.get(t.parent||0);t.$level=n.$level+1,this._pool.set(t.id,t),n.data?e===-1?n.data=[...n.data,t]:ae(n,e,t):n.data=[t]}addAfter(t,e){if(!e)return this.add(t,-1);const n=this.byId(e),s=this.byId(n.parent),a=ct(s,n.id)+1;t.parent=s.id,t.$level=s.$level+1,this.add(t,a)}remove(t){const e=this._pool.get(t);this._remove(e);const n=this._pool.get(e.parent);n.data=n.data.filter(s=>s.id!=t),this._clearBranch(n)}_remove(t){t.data&&t.data.forEach(e=>this._remove(e)),this._pool.delete(t.id)}update(t,e){let n=this._pool.get(t);const s=this._pool.get(n.parent),a=ct(s,n.id);n={...n,...e},s&&a>=0&&(s.data[a]=n,s.data=[...s.data]),this._pool.set(n.id,n)}move(t,e,n){const s=this._pool.get(t),a=e==="child",o=this._pool.get(n),r=o.$level+(a?1:0);if(!s||!o)return;const i=this._pool.get(s.parent),d=a?o:this._pool.get(o.parent);d.data||(d.data=[]);const c=ct(i,s.id);Dn(i,c);const l=a?d.data.length:ct(d,o.id)+(e==="after"?1:0);if(ae(d,l,s),i.id===d.id&&c===l)return null;s.parent=d.id,s.$level!==r&&(s.$level=r,this.setLevel(s,r+1,!0)),this.update(s.id,s),this._clearBranch(i)}_clearBranch(t){t.data&&!t.data.length&&(t.open&&delete t.open,this.update(t.id,{data:null}))}toArray(){return this._flatten(!1)}serialize(){return this._flatten(!0)}_flatten(t){const e=[],n=this._pool.get(0).data;return n&&se(n,e,t),e}byId(t){return this._pool.get(t)}getBranch(t){return this._pool.get(t).data}forEach(t){this._pool.forEach((e,n)=>{n!==0&&t(e)})}eachChild(t,e){const n=this.byId(e);!n||!n.data||n.data.forEach((s,a)=>{t(this.byId(s.id),a),this.eachChild(t,s.id)})}setLevel(t,e,n){t.data&&(t.data=t.data.map(s=>(n&&(s={...s},this._pool.set(s.id,s)),s.$level=e,s.data&&this.setLevel(s,e+1,n),s)))}};function se(t,e,n){t.forEach(s=>{e.push(s),s.data&&(n||s.open)&&se(s.data,e,n)})}function Dn(t,e){const n=[...t.data];n.splice(e,1),t.data=n}function ae(t,e,n){const s=[...t.data];s.splice(e,0,n),t.data=s}function ct(t,e){return t?.data.findIndex(n=>n.id===e)}var re=2,In=class{constructor(t){t&&(this._writable=t.writable,this._async=t.async),this._values={},this._state={}}setState(t,e=0){const n={};return this._wrapProperties(t,this._state,this._values,"",n,e),n}getState(){return this._values}getReactive(){return this._state}_wrapProperties(t,e,n,s,a,o){for(const r in t){const i=e[r],d=n[r],c=t[r];if(i&&(d===c&&typeof c!="object"||c instanceof Date&&d instanceof Date&&d.getTime()===c.getTime()))continue;const l=s+(s?".":"")+r;i?(i.__parse(c,l,a,o)&&(n[r]=c),o&re?a[l]=i.__trigger:i.__trigger()):(c&&c.__reactive?e[r]=this._wrapNested(c,c,l,a):e[r]=this._wrapWritable(c),n[r]=c),a[l]=a[l]||null}}_wrapNested(t,e,n,s){const a=this._wrapWritable(t);return this._wrapProperties(t,a,e,n,s,0),a.__parse=(o,r,i,d)=>(this._wrapProperties(o,a,e,r,i,d),!1),a}_wrapWritable(t){const e=[],n=function(){for(let s=0;s<e.length;s++)e[s](t)};return{subscribe:s=>(e.push(s),this._async?setTimeout(s,1,t):s(t),()=>{const a=e.indexOf(s);a>=0&&e.splice(a,1)}),__trigger:()=>{e.length&&(this._async?setTimeout(n,1):n())},__parse:function(s){return t=s,!0}}}},$n=class{constructor(t,e,n,s){typeof t=="function"?this._setter=t:this._setter=t.setState.bind(t),this._routes=e,this._parsers=n,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(a=>{a.in.forEach(o=>{const r=this._triggers.get(o)||[];r.push(a),this._triggers.set(o,r)}),a.out.forEach(o=>{const r=this._sources.get(o)||{};a.in.forEach(i=>r[i]=!0),this._sources.set(o,r)})}),this._routes.forEach(a=>{a.length=Math.max(...a.in.map(o=>ie(o,this._sources,1)))}),this._bus=s}init(t){const e={};for(const n in t)if(this._prev[n]!==t[n]){const s=this._parsers[n];e[n]=s?s(t[n]):t[n]}this._prev=this._prev?{...this._prev,...t}:{...t},this.setState(e),this._bus&&this._bus.exec("init-state",e)}setStateAsync(t){const e=this._setter(t,re);return this._async?Object.assign(this._async.signals,e):this._async={signals:e,timer:setTimeout(this._applyState.bind(this),1)},e}_applyState(){const t=this._async;if(t){this._async=null,this._triggerUpdates(t.signals,[]);for(const e in t.signals){const n=t.signals[e];n&&n()}}}setState(t,e=[]){const n=this._setter(t);return this._triggerUpdates(n,e),n}_triggerUpdates(t,e){const n=Object.keys(t),s=!e.length;e=e||[];for(let a=0;a<n.length;a++){const o=n[a],r=this._triggers.get(o);r&&r.forEach(i=>{e.indexOf(i)==-1&&e.push(i)})}s&&this._execNext(e)}_execNext(t){for(;t.length;){t.sort((n,s)=>n.length<s.length?1:-1);const e=t[t.length-1];t.splice(t.length-1),e.exec(t)}}};function ie(t,e,n){const s=e.get(t);if(!s)return n;const a=Object.keys(s).map(o=>ie(o,e,n+1));return Math.max(...a)}var Cn=class{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(t,e,n){let s=this._handlers[t];s?n&&n.intercept?s.unshift(e):s.push(e):s=this._handlers[t]=[e],n&&n.tag&&this._tag.set(e,n.tag)}intercept(t,e,n){this.on(t,e,{...n,intercept:!0})}detach(t){for(const e in this._handlers){const n=this._handlers[e];for(let s=n.length-1;s>=0;s--)this._tag.get(n[s])===t&&n.splice(s,1)}}async exec(t,e){const n=this._handlers[t];if(n)for(let s=0;s<n.length;s++){const a=n[s](e);if(a===!1||a&&a.then&&await a===!1)return}return this._nextHandler&&await this._nextHandler.exec(t,e),e}setNext(t){return this._nextHandler=t}};new Date().valueOf();function Pn(t){return e=>e[t]}function bt(t,e){return(e.getter||Pn(e.id))(t)}const En={text:(t,e)=>t?t.toString().toLowerCase().indexOf(e.toLowerCase())!==-1:!e,richselect:(t,e)=>typeof e!="number"&&!e?!0:t==e,datepicker:(t,e)=>e?t&&An(t,e):!0,multiselect:(t,e)=>!e||e?.length===0?!0:Array.isArray(t)?t?.some(n=>e.includes(n)):t&&e.includes(t)};function On(t){return En[t]}function Gn(t,e){const n=[];for(const s in t){const a=e.find(d=>d.id==s),{config:o,type:r}=a.header.find(d=>d.filter).filter,i=t[s];n.push(d=>{const c=bt(d,a);return o?.handler?o.handler(c,i):On(r)(c,i)})}return s=>{for(let a=0;a<n.length;a++)if(!n[a](s))return!1;return!0}}function An(t,e){return t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()}new Date().valueOf(),new Date().valueOf();function Hn(t,e){return typeof t=="string"?t.localeCompare(e,void 0,{numeric:!0}):t instanceof Date||e instanceof Date?t?e?t.getTime()-e.getTime():-1:1:(t??0)-(e??0)}function zn(t,e){return typeof t=="string"?-t.localeCompare(e,void 0,{numeric:!0}):t instanceof Date||e instanceof Date?e?t?e.getTime()-t.getTime():-1:1:(e??0)-(t??0)}function Fn({order:t,key:e},n){if(typeof n?.sort=="function")return function(a,o){const r=n.sort(a,o);return t==="asc"?r:-r};const s=t==="asc"?Hn:zn;return(a,o)=>s(n?bt(a,n):a[e],n?bt(o,n):o[e])}function Bn(t,e){if(!t||!t.length)return;const n=t.map(s=>{const a=e.find(o=>o.id==s.key);return Fn(s,a)});return t.length===1?n[0]:function(s,a){for(let o=0;o<n.length;o++){const r=n[o](s,a);if(r!==0)return r}return 0}}function Ln(t,e,n){return t.sort(Bn(e,n))}function oe(t,e,n,s){const a=t.id===0||e(t);let o=!1;if(Array.isArray(t.data)){for(const r of t.data)oe(r,e,n,s)&&(o=!0);o?(delete t.$empty,s&&(t.open=!0)):t.$empty=!0}return(a||o)&&t.id!==0?(n.add(t.id),!0):!1}function de(t,e,n){t.has(e)&&t.delete(e),n?.length&&n.forEach(s=>de(t,s.id,s.data))}function ce(t){t.id!==0&&delete t.$empty,Array.isArray(t.data)&&t.data.forEach(e=>ce(e))}const le=new WeakMap;class Nn extends ne{_filteredIds;constructor(e){super(),this.parse(e,0)}parse(e,n){if(!e||!e.length)return;const s=e.map(a=>this.normalizeTask(a));super.parse(s,n)}getBranch(e){const n=this._pool.get(e);return this._pool.get(n.parent||0).data}contains(e,n){const s=this._pool.get(e).data;let a=!1;if(s)for(let o=0;o<s.length;o++){if(s[o].id===n){a=!0;break}if(s[o].data&&(a=this.contains(s[o].id,n),a))break}return a}getIndexById(e){return this._indexOf(this.getBranch(e),e)}update(e,n){let s=this._pool.get(e);const a=this._pool.get(s.parent)?.data,o=a?this._indexOf(a,e):-1;s={...s,...n},o>=0&&(a[o]=s),this._pool.set(s.id,s)}_indexOf(e,n){let s=le.get(e);if(s&&s.size===e.length){const o=s.get(n);if(o!==void 0&&e[o].id===n)return o}s=new Map;for(let o=0;o<e.length;o++)s.set(e[o].id,o);le.set(e,s);const a=s.get(n);return a===void 0?-1:a}add(e,n){const s=this.normalizeTask(e);if(super.add(s,n),this._filteredIds&&this._filteredIds.add(s.id),this._filteredIds&&e.parent){const a=this.byId(e.parent);this.hasChildItems(a)&&delete a.$empty}return s}copy(e,n,s){const a=this.add({...e,id:null,data:null,parent:n},s);let o=[[e.id,a.id]];return e.data?.forEach((r,i)=>{const d=this.copy(r,a.id,i);o=o.concat(d)}),o}remove(e){const n=this.byId(e);if(this._filteredIds&&de(this._filteredIds,e,n.data),super.remove(e),this._filteredIds&&n.parent){const s=this.byId(n.parent);this.hasChildItems(s)||(s.$empty=!0)}}normalizeTask(e){const n=e.id||ee(),s=e.parent||0,a=e.text??"",o=e.type||"task",r=e.progress||0,i=e.details||"",d={...e,id:n,text:a,parent:s,progress:r,type:o,details:i};return e.segments&&(d.segments=e.segments.map(c=>({...c}))),e.segments&&(d.segments=e.segments.map(c=>({...c}))),d}getSummaryId(e,n=!1){const s=this._pool.get(e);if(!s.parent)return null;const a=this._pool.get(s.parent);if(n){let o=e,r=this.getSummaryId(o);const i=[];for(;r;)o=r,i.push(r),r=this.getSummaryId(o);return i}return a.type==="summary"?a.id:this.getSummaryId(a.id)}sort(e,n){e&&this.sortBranch(e,0,n)}sortBranch(e,n,s){const a=this._pool.get(n||0).data;a&&(Ln(a,e,s),a.forEach(o=>{this.sortBranch(e,o.id,s)}))}clear(){this.forEach(e=>{this.remove(e.id)})}filterTree(e,n){if(e){const s=this._pool.get(0),a=new Set;oe(s,e,a,n),this._filteredIds=a}else{const s=this._pool.get(0);ce(s),this._filteredIds=null}}toArray(e){let n=super.toArray();return!e&&this._filteredIds&&(n=n.filter(s=>this.isFilteredId(s.id))),n}isFilteredId(e){return this._filteredIds?.has(e)}hasChildItems(e){const n=e.data?.length;return n&&this._filteredIds?e.data.some(s=>this.isFilteredId(s.id)):!!n}}function x(t){const e=Object.prototype.toString.call(t);return t instanceof Date||typeof t=="object"&&e==="[object Date]"?new t.constructor(+t):typeof t=="number"||e==="[object Number]"||typeof t=="string"||e==="[object String]"?new Date(t):new Date(NaN)}function C(t,e){return t instanceof Date?new t.constructor(e):new Date(e)}function E(t,e){const n=x(t);return isNaN(e)?C(t,NaN):(e&&n.setDate(n.getDate()+e),n)}function _t(t,e){const n=x(t);if(isNaN(e))return C(t,NaN);if(!e)return n;const s=n.getDate(),a=C(t,n.getTime());a.setMonth(n.getMonth()+e+1,0);const o=a.getDate();return s>=o?a:(n.setFullYear(a.getFullYear(),a.getMonth(),s),n)}function ue(t,e){const n=+x(t);return C(t,n+e)}const lt=6048e5,Yn=864e5,he=6e4,fe=36e5;function Un(t,e){return ue(t,e*fe)}let jn={};function V(){return jn}function H(t,e){const n=V(),s=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=x(t),o=a.getDay(),r=(o<s?7:0)+o-s;return a.setDate(a.getDate()-r),a.setHours(0,0,0,0),a}function R(t){return H(t,{weekStartsOn:1})}function ge(t){const e=x(t),n=e.getFullYear(),s=C(t,0);s.setFullYear(n+1,0,4),s.setHours(0,0,0,0);const a=R(s),o=C(t,0);o.setFullYear(n,0,4),o.setHours(0,0,0,0);const r=R(o);return e.getTime()>=a.getTime()?n+1:e.getTime()>=r.getTime()?n:n-1}function L(t){const e=x(t);return e.setHours(0,0,0,0),e}function ut(t){const e=x(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function wt(t,e){const n=L(t),s=L(e),a=+n-ut(n),o=+s-ut(s);return Math.round((a-o)/Yn)}function St(t){const e=ge(t),n=C(t,0);return n.setFullYear(e,0,4),n.setHours(0,0,0,0),R(n)}function Rn(t,e){return ue(t,e*he)}function qn(t,e){const n=e*3;return _t(t,n)}function me(t,e){const n=e*7;return E(t,n)}function Xn(t,e){return _t(t,e*12)}function J(t,e){const n=x(t),s=x(e),a=n.getTime()-s.getTime();return a<0?-1:a>0?1:a}function pe(t,e){const n=L(t),s=L(e);return+n==+s}function Qn(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Vn(t){if(!Qn(t)&&typeof t!="number")return!1;const e=x(t);return!isNaN(Number(e))}function xt(t,e){const n=R(t),s=R(e),a=+n-ut(n),o=+s-ut(s);return Math.round((a-o)/lt)}function Jn(t,e){const n=x(t),s=x(e),a=n.getFullYear()-s.getFullYear(),o=n.getMonth()-s.getMonth();return a*12+o}function Kn(t,e){const n=x(t),s=x(e);return n.getFullYear()-s.getFullYear()}function vt(t){return e=>{const n=(t?Math[t]:Math.trunc)(e);return n===0?0:n}}function ye(t,e){return+x(t)-+x(e)}function Zn(t,e,n){const s=ye(t,e)/fe;return vt(n?.roundingMethod)(s)}function ts(t,e,n){const s=ye(t,e)/he;return vt(n?.roundingMethod)(s)}function ke(t){const e=x(t);return e.setHours(23,59,59,999),e}function Mt(t){const e=x(t),n=e.getMonth();return e.setFullYear(e.getFullYear(),n+1,0),e.setHours(23,59,59,999),e}function es(t){const e=x(t);return+ke(e)==+Mt(e)}function be(t,e){const n=x(t),s=x(e),a=J(n,s),o=Math.abs(Jn(n,s));let r;if(o<1)r=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-a*o);let i=J(n,s)===-a;es(x(t))&&o===1&&J(t,s)===1&&(i=!1),r=a*(o-Number(i))}return r===0?0:r}function ns(t,e,n){const s=be(t,e)/3;return vt(n?.roundingMethod)(s)}function ss(t,e){const n=x(t),s=x(e),a=J(n,s),o=Math.abs(Kn(n,s));n.setFullYear(1584),s.setFullYear(1584);const r=J(n,s)===-a,i=a*(o-+r);return i===0?0:i}function K(t){const e=x(t),n=e.getMonth(),s=n-n%3;return e.setMonth(s,1),e.setHours(0,0,0,0),e}function _e(t){const e=x(t);return e.setDate(1),e.setHours(0,0,0,0),e}function as(t){const e=x(t),n=e.getFullYear();return e.setFullYear(n+1,0,0),e.setHours(23,59,59,999),e}function we(t){const e=x(t),n=C(t,0);return n.setFullYear(e.getFullYear(),0,1),n.setHours(0,0,0,0),n}function rs(t){const e=x(t);return e.setMinutes(59,59,999),e}function is(t,e){const n=V(),s=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=x(t),o=a.getDay(),r=(o<s?-7:0)+6-(o-s);return a.setDate(a.getDate()+r),a.setHours(23,59,59,999),a}function Wt(t){const e=x(t),n=e.getMonth(),s=n-n%3+3;return e.setMonth(s,0),e.setHours(23,59,59,999),e}const os={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"}},ds=(t,e,n)=>{let s;const a=os[t];return typeof a=="string"?s=a:e===1?s=a.one:s=a.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+s:s+" ago":s};function Tt(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const cs={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},ls={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},us={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},hs={date:Tt({formats:cs,defaultWidth:"full"}),time:Tt({formats:ls,defaultWidth:"full"}),dateTime:Tt({formats:us,defaultWidth:"full"})},fs={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},gs=(t,e,n,s)=>fs[t];function Z(t){return(e,n)=>{const s=n?.context?String(n.context):"standalone";let a;if(s==="formatting"&&t.formattingValues){const r=t.defaultFormattingWidth||t.defaultWidth,i=n?.width?String(n.width):r;a=t.formattingValues[i]||t.formattingValues[r]}else{const r=t.defaultWidth,i=n?.width?String(n.width):t.defaultWidth;a=t.values[i]||t.values[r]}const o=t.argumentCallback?t.argumentCallback(e):e;return a[o]}}const ms={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},ps={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},ys={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"]},ks={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"]},bs={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"}},_s={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"}},ws=(t,e)=>{const n=Number(t),s=n%100;if(s>20||s<10)switch(s%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},Ss={ordinalNumber:ws,era:Z({values:ms,defaultWidth:"wide"}),quarter:Z({values:ps,defaultWidth:"wide",argumentCallback:t=>t-1}),month:Z({values:ys,defaultWidth:"wide"}),day:Z({values:ks,defaultWidth:"wide"}),dayPeriod:Z({values:bs,defaultWidth:"wide",formattingValues:_s,defaultFormattingWidth:"wide"})};function tt(t){return(e,n={})=>{const s=n.width,a=s&&t.matchPatterns[s]||t.matchPatterns[t.defaultMatchWidth],o=e.match(a);if(!o)return null;const r=o[0],i=s&&t.parsePatterns[s]||t.parsePatterns[t.defaultParseWidth],d=Array.isArray(i)?vs(i,f=>f.test(r)):xs(i,f=>f.test(r));let c;c=t.valueCallback?t.valueCallback(d):d,c=n.valueCallback?n.valueCallback(c):c;const l=e.slice(r.length);return{value:c,rest:l}}}function xs(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function vs(t,e){for(let n=0;n<t.length;n++)if(e(t[n]))return n}function Ms(t){return(e,n={})=>{const s=e.match(t.matchPattern);if(!s)return null;const a=s[0],o=e.match(t.parsePattern);if(!o)return null;let r=t.valueCallback?t.valueCallback(o[0]):o[0];r=n.valueCallback?n.valueCallback(r):r;const i=e.slice(a.length);return{value:r,rest:i}}}const Ws=/^(\d+)(th|st|nd|rd)?/i,Ts=/\d+/i,Ds={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},Is={any:[/^b/i,/^(a|c)/i]},$s={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Cs={any:[/1/i,/2/i,/3/i,/4/i]},Ps={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},Es={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]},Os={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},Gs={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]},As={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},Hs={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}},zs={ordinalNumber:Ms({matchPattern:Ws,parsePattern:Ts,valueCallback:t=>parseInt(t,10)}),era:tt({matchPatterns:Ds,defaultMatchWidth:"wide",parsePatterns:Is,defaultParseWidth:"any"}),quarter:tt({matchPatterns:$s,defaultMatchWidth:"wide",parsePatterns:Cs,defaultParseWidth:"any",valueCallback:t=>t+1}),month:tt({matchPatterns:Ps,defaultMatchWidth:"wide",parsePatterns:Es,defaultParseWidth:"any"}),day:tt({matchPatterns:Os,defaultMatchWidth:"wide",parsePatterns:Gs,defaultParseWidth:"any"}),dayPeriod:tt({matchPatterns:As,defaultMatchWidth:"any",parsePatterns:Hs,defaultParseWidth:"any"})},Fs={code:"en-US",formatDistance:ds,formatLong:hs,formatRelative:gs,localize:Ss,match:zs,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Bs(t){const e=x(t);return wt(e,we(e))+1}function Ls(t){const e=x(t),n=+R(e)-+St(e);return Math.round(n/lt)+1}function Se(t,e){const n=x(t),s=n.getFullYear(),a=V(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,r=C(t,0);r.setFullYear(s+1,0,o),r.setHours(0,0,0,0);const i=H(r,e),d=C(t,0);d.setFullYear(s,0,o),d.setHours(0,0,0,0);const c=H(d,e);return n.getTime()>=i.getTime()?s+1:n.getTime()>=c.getTime()?s:s-1}function Ns(t,e){const n=V(),s=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=Se(t,e),o=C(t,0);return o.setFullYear(a,0,s),o.setHours(0,0,0,0),H(o,e)}function Ys(t,e){const n=x(t),s=+H(n,e)-+Ns(n,e);return Math.round(s/lt)+1}function M(t,e){const n=t<0?"-":"",s=Math.abs(t).toString().padStart(e,"0");return n+s}const z={y(t,e){const n=t.getFullYear(),s=n>0?n:1-n;return M(e==="yy"?s%100:s,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):M(n+1,2)},d(t,e){return M(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return M(t.getHours()%12||12,e.length)},H(t,e){return M(t.getHours(),e.length)},m(t,e){return M(t.getMinutes(),e.length)},s(t,e){return M(t.getSeconds(),e.length)},S(t,e){const n=e.length,s=t.getMilliseconds(),a=Math.trunc(s*Math.pow(10,n-3));return M(a,e.length)}},q={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},xe={G:function(t,e,n){const s=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(s,{width:"abbreviated"});case"GGGGG":return n.era(s,{width:"narrow"});case"GGGG":default:return n.era(s,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const s=t.getFullYear(),a=s>0?s:1-s;return n.ordinalNumber(a,{unit:"year"})}return z.y(t,e)},Y:function(t,e,n,s){const a=Se(t,s),o=a>0?a:1-a;if(e==="YY"){const r=o%100;return M(r,2)}return e==="Yo"?n.ordinalNumber(o,{unit:"year"}):M(o,e.length)},R:function(t,e){const n=ge(t);return M(n,e.length)},u:function(t,e){const n=t.getFullYear();return M(n,e.length)},Q:function(t,e,n){const s=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(s);case"QQ":return M(s,2);case"Qo":return n.ordinalNumber(s,{unit:"quarter"});case"QQQ":return n.quarter(s,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(s,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(s,{width:"wide",context:"formatting"})}},q:function(t,e,n){const s=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(s);case"qq":return M(s,2);case"qo":return n.ordinalNumber(s,{unit:"quarter"});case"qqq":return n.quarter(s,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(s,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(s,{width:"wide",context:"standalone"})}},M:function(t,e,n){const s=t.getMonth();switch(e){case"M":case"MM":return z.M(t,e);case"Mo":return n.ordinalNumber(s+1,{unit:"month"});case"MMM":return n.month(s,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(s,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(s,{width:"wide",context:"formatting"})}},L:function(t,e,n){const s=t.getMonth();switch(e){case"L":return String(s+1);case"LL":return M(s+1,2);case"Lo":return n.ordinalNumber(s+1,{unit:"month"});case"LLL":return n.month(s,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(s,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(s,{width:"wide",context:"standalone"})}},w:function(t,e,n,s){const a=Ys(t,s);return e==="wo"?n.ordinalNumber(a,{unit:"week"}):M(a,e.length)},I:function(t,e,n){const s=Ls(t);return e==="Io"?n.ordinalNumber(s,{unit:"week"}):M(s,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):z.d(t,e)},D:function(t,e,n){const s=Bs(t);return e==="Do"?n.ordinalNumber(s,{unit:"dayOfYear"}):M(s,e.length)},E:function(t,e,n){const s=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(s,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(s,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(s,{width:"short",context:"formatting"});case"EEEE":default:return n.day(s,{width:"wide",context:"formatting"})}},e:function(t,e,n,s){const a=t.getDay(),o=(a-s.weekStartsOn+8)%7||7;switch(e){case"e":return String(o);case"ee":return M(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});case"eeee":default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(t,e,n,s){const a=t.getDay(),o=(a-s.weekStartsOn+8)%7||7;switch(e){case"c":return String(o);case"cc":return M(o,e.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});case"cccc":default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(t,e,n){const s=t.getDay(),a=s===0?7:s;switch(e){case"i":return String(a);case"ii":return M(a,e.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(s,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(s,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(s,{width:"short",context:"formatting"});case"iiii":default:return n.day(s,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const s=t.getHours();let a;switch(s===12?a=q.noon:s===0?a=q.midnight:a=s/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(t,e,n){const s=t.getHours();let a;switch(s>=17?a=q.evening:s>=12?a=q.afternoon:s>=4?a=q.morning:a=q.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let s=t.getHours()%12;return s===0&&(s=12),n.ordinalNumber(s,{unit:"hour"})}return z.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):z.H(t,e)},K:function(t,e,n){const s=t.getHours()%12;return e==="Ko"?n.ordinalNumber(s,{unit:"hour"}):M(s,e.length)},k:function(t,e,n){let s=t.getHours();return s===0&&(s=24),e==="ko"?n.ordinalNumber(s,{unit:"hour"}):M(s,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):z.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):z.s(t,e)},S:function(t,e){return z.S(t,e)},X:function(t,e,n){const s=t.getTimezoneOffset();if(s===0)return"Z";switch(e){case"X":return Me(s);case"XXXX":case"XX":return N(s);case"XXXXX":case"XXX":default:return N(s,":")}},x:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"x":return Me(s);case"xxxx":case"xx":return N(s);case"xxxxx":case"xxx":default:return N(s,":")}},O:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+ve(s,":");case"OOOO":default:return"GMT"+N(s,":")}},z:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+ve(s,":");case"zzzz":default:return"GMT"+N(s,":")}},t:function(t,e,n){const s=Math.trunc(t.getTime()/1e3);return M(s,e.length)},T:function(t,e,n){const s=t.getTime();return M(s,e.length)}};function ve(t,e=""){const n=t>0?"-":"+",s=Math.abs(t),a=Math.trunc(s/60),o=s%60;return o===0?n+String(a):n+String(a)+e+M(o,2)}function Me(t,e){return t%60===0?(t>0?"-":"+")+M(Math.abs(t)/60,2):N(t,e)}function N(t,e=""){const n=t>0?"-":"+",s=Math.abs(t),a=M(Math.trunc(s/60),2),o=M(s%60,2);return n+a+e+o}const We=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},Te=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},Us=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],s=n[1],a=n[2];if(!a)return We(t,e);let o;switch(s){case"P":o=e.dateTime({width:"short"});break;case"PP":o=e.dateTime({width:"medium"});break;case"PPP":o=e.dateTime({width:"long"});break;case"PPPP":default:o=e.dateTime({width:"full"});break}return o.replace("{{date}}",We(s,e)).replace("{{time}}",Te(a,e))},js={p:Te,P:Us},Rs=/^D+$/,qs=/^Y+$/,Xs=["D","DD","YY","YYYY"];function Qs(t){return Rs.test(t)}function Vs(t){return qs.test(t)}function Js(t,e,n){const s=Ks(t,e,n);if(console.warn(s),Xs.includes(t))throw new RangeError(s)}function Ks(t,e,n){const s=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${s} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const Zs=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,ta=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,ea=/^'([^]*?)'?$/,na=/''/g,sa=/[a-zA-Z]/;function De(t,e,n){const s=V(),a=n?.locale??s.locale??Fs,o=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,r=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??s.weekStartsOn??s.locale?.options?.weekStartsOn??0,i=x(t);if(!Vn(i))throw new RangeError("Invalid time value");let d=e.match(ta).map(l=>{const f=l[0];if(f==="p"||f==="P"){const h=js[f];return h(l,a.formatLong)}return l}).join("").match(Zs).map(l=>{if(l==="''")return{isToken:!1,value:"'"};const f=l[0];if(f==="'")return{isToken:!1,value:aa(l)};if(xe[f])return{isToken:!0,value:l};if(f.match(sa))throw new RangeError("Format string contains an unescaped latin alphabet character `"+f+"`");return{isToken:!1,value:l}});a.localize.preprocessor&&(d=a.localize.preprocessor(i,d));const c={firstWeekContainsDate:o,weekStartsOn:r,locale:a};return d.map(l=>{if(!l.isToken)return l.value;const f=l.value;(!n?.useAdditionalWeekYearTokens&&Vs(f)||!n?.useAdditionalDayOfYearTokens&&Qs(f))&&Js(f,e,String(t));const h=xe[f[0]];return h(i,f,a.localize,c)}).join("")}function aa(t){const e=t.match(ea);return e?e[1].replace(na,"'"):t}function Ie(t){const e=x(t),n=e.getFullYear(),s=e.getMonth(),a=C(t,0);return a.setFullYear(n,s+1,0),a.setHours(0,0,0,0),a.getDate()}function ra(t){const e=x(t).getFullYear();return e%400===0||e%4===0&&e%100!==0}function $e(t){const e=x(t);return String(new Date(e))==="Invalid Date"?NaN:ra(e)?366:365}function ia(t){const e=St(t),n=+St(me(e,60))-+e;return Math.round(n/lt)}function F(t,e){const n=x(t),s=x(e);return+n==+s}function oa(t){const e=x(t);return e.setMinutes(0,0,0),e}function da(t,e,n){const s=H(t,n),a=H(e,n);return+s==+a}function ca(t,e){const n=x(t),s=x(e);return n.getFullYear()===s.getFullYear()&&n.getMonth()===s.getMonth()}function la(t,e){const n=K(t),s=K(e);return+n==+s}function ua(t,e){const n=x(t),s=x(e);return n.getFullYear()===s.getFullYear()}const Dt={year:ss,quarter:ns,month:be,week:xt,day:wt,hour:Zn,minute:ts},Y={year:{quarter:4,month:12,week:ia,day:ha,hour:fa},quarter:{month:3,week:ga,day:Ce,hour:ma},month:{week:pa,day:ya,hour:ka},week:{day:7,hour:24*7},day:{hour:24},hour:{minute:60}};function ha(t){return t?$e(t):365}function fa(t){return $e(t)*24}function ga(t){const e=K(t),n=E(L(Wt(t)),1);return xt(n,e)}function Ce(t){if(t){const e=K(t),n=Wt(t);return wt(n,e)+1}return 91}function ma(t){return Ce(t)*24}function pa(t){if(t){const e=_e(t),n=E(L(Mt(t)),1);return xt(n,e)}return 5}function ya(t){return t?Ie(t):30}function ka(t){return Ie(t)*24}function et(t,e,n){const s=Y[t][e];return s?typeof s=="number"?s:s(n):1}function ba(t,e){return t===e||!!(Y[t]&&Y[t][e])}const ht={year:Xn,quarter:qn,month:_t,week:me,day:E,hour:Un,minute:Rn};function ft(t,e,n){if(e){if(t==="day")return(s,a)=>e.getWorkingDays(a,s,!0);if(t==="hour")return(s,a)=>e.getWorkingHours(a,s,!0)}return(s,a,o,r)=>{const i=Y[t]?.[o];return!i||typeof i=="number"||Oe(t,s,a,n)?nt(t,s,a,o,r,n):_a(s,a,t,o,r,n)}}function nt(t,e,n,s,a,o){const r=s||t;let i=n,d=e;if(a&&(i=$(r,n,o),d=$(r,e,o),d<e&&(d=I(r)(d,1))),t!==r){const c=Dt[r](d,i),l=et(t,r,n);return c/l}else return Dt[r](d,i)}function _a(t,e,n,s,a,o){let r=0;const i=$(n,e,o);if(e>i){const c=ht[n](i,1);r=nt(n,c,e,s,void 0,o),e=c}let d=0;return Oe(n,e,t,o)||(d=nt(n,$(n,t,o),e,void 0,void 0,o),e=ht[n](e,d)),d+=r+nt(n,t,e,s,void 0,o),!d&&a&&(d=nt(n,t,e,s,a,o)),d}function I(t,e){if(e){if(t==="day")return(n,s)=>e.addWorkingDays(n,s,!0);if(t==="hour")return(n,s)=>e.addWorkingHours(n,s)}return ht[t]}const Pe={year:we,quarter:K,month:_e,week:(t,e)=>H(t,{weekStartsOn:e}),day:L,hour:oa};function $(t,e,n){const s=Pe[t];return s?s(e,n):new Date(e)}const wa={year:as,quarter:Wt,month:Mt,week:(t,e)=>is(t,{weekStartsOn:e}),day:ke,hour:rs},Ee={year:ua,quarter:la,month:ca,week:(t,e,n)=>da(t,e,{weekStartsOn:n}),day:pe};function Oe(t,e,n,s){const a=Ee[t];return a?a(e,n,s):!1}const Sa={start:Pe,end:wa,add:ht,isSame:Ee,diff:Dt,smallerCount:Y},Ge=t=>typeof t=="function"?t(new Date):t;function xa(t,e){for(const n in e){if(n==="smallerCount"){const s=Object.keys(e[n]).sort((i,d)=>O.indexOf(i)-O.indexOf(d)).shift();let a=O.indexOf(s);const o=e[n][s],r=Ge(o);for(let i=a-1;i>=0;i--){const d=O[i],c=Ge(Y[d][s]);if(r<=c)break;a=i}O.includes(t)||O.splice(a,0,t)}if(n==="biggerCount")for(const s in e[n])Y[s][t]=e[n][s];else Sa[n][t]=e[n]}}function It(t,e=1,n){const s=e>0?n.getNextWorkingDay(E(t,-1)):n.getPreviousWorkingDay(E(t,1));return s&&pe(s,t)?t:s}function va(t){return(e,n)=>{if(n>0)for(let s=0;s<n;s++)e=t.getNextWorkingDay(e);if(n<0)for(let s=0;s>n;s--)e=t.getPreviousWorkingDay(e);return e}}function Ae(t){return De(t,"yyyy-MM-dd")}function st(t,e){for(const n in e)e[n]===void 0&&n[0]!=="$"&&delete t[n]}function $t(t,e,n){const s=Math.max(Math.min(+t,+n),+e);return t instanceof Date?new Date(s):s}function X(t){const e=new Date;return t.map(n=>({item:n,len:I(n.unit)(e,1)})).sort((n,s)=>n.len<s.len?-1:1)[0].item}const O=["year","quarter","month","week","day","hour"],Ct=50,Pt=300;function Ma(t,e,n,s,a,o){const r=!t||n,i=!e||n;let d=t,c=e,l=!1,f=!1;(r||i)&&a?.forEach(u=>{let g=u.start,m=u.type==="milestone"?u.start:u.end;r&&(!d||g<=d)&&(d=g,l=!0),i&&(!c||m>=c)&&(c=m,f=!0)});const h=I(s||"day");return d?l&&(d=h(d,-1)):c?d=h(c,-30):d=new Date,c?f&&(c=h(c,1)):c=h(d,30),{_start:d,_end:c}}function Wa(t,e,n,s,a,o,r,i){const d=X(r).unit,c=ft(d,void 0,o),l=c(e,t,"",!0),f=$(d,e,o);t=$(d,t,o),e=f<e?I(d)(f,1):f;const h=l*s,u=a*Math.max(i,r.length),g=r.map(y=>{const p=[],b=I(y.unit);let k=$(y.unit,t,o);for(;k<e;){const w=b(k,y.step),_=k<t?t:k,v=w>e?e:w,S=c(v,_,"",!0)*s,W=typeof y.format=="function"?y.format(k,w):y.format;let T="";y.css&&(T+=typeof y.css=="function"?y.css(k):y.css),p.push({width:S,value:W,date:_,key:Ae(_),css:T,unit:y.unit}),k=w}return{cells:p,add:b,height:u/r.length}});let m=s;return d!==n&&(m=m/et(d,n)),{rows:g,width:h,height:u,diff:c,start:t,end:e,lengthUnit:n,minUnit:d,lengthUnitWidth:m}}function Ta(t,e,n,s){const a=typeof t=="boolean"?{}:t;n.forEach(c=>{c.format&&!e[c.unit]&&(e[c.unit]=c.format)});const o=O.filter(c=>e[c]||n.some(l=>l.unit===c)),r=o.indexOf(X(n).unit);if(typeof a.level>"u"&&(a.level=r),a.levels)a.levels.forEach(c=>{c.minCellWidth||(c.minCellWidth=gt(a.minCellWidth,Ct)),c.maxCellWidth||(c.maxCellWidth=gt(a.maxCellWidth,Pt))});else{const c=[],l=n.length||1,f=gt(a.minCellWidth,Ct),h=gt(a.maxCellWidth,Pt);o.forEach((u,g)=>{if(g===r)c.push({minCellWidth:f,maxCellWidth:h,scales:n});else{const m=[];if(g)for(let y=l-1;y>0;y--){const p=o[g-y];p&&m.push({unit:p,step:1,format:e[p]})}m.push({unit:u,step:1,format:e[u]}),c.push({minCellWidth:f,maxCellWidth:h,scales:m})}}),a.levels=c}a.levels[a.level]||(a.level=0);const i=a.levels[a.level],d=Math.min(Math.max(s,i.minCellWidth),i.maxCellWidth);return{zoom:a,scales:i.scales,cellWidth:d}}function Da(t,e,n,s,a,o,r){t.level=n;let i;const d=s.scales||s,c=X(d).unit,l=$a(c,a);if(e<0){const u=et(c,a);i=r*u}else{const u=et(X(o).unit,c);i=Math.round(r/u)}const f=s.minCellWidth??Ct,h=s.maxCellWidth??Pt;return{scales:d,cellWidth:$t(i,f,h),lengthUnit:l,zoom:t}}function Ia(t,e){const{_start:n,_scales:s,start:a,end:o,_end:r,cellWidth:i,_scaleDate:d,_zoomOffset:c,_weekStart:l}=e,f=I(s.minUnit);let h=s.width;if(a&&o){if(h<t&&h){const p=t/h;return{cellWidth:Math.ceil(i*p)}}return{}}let u=0;for(;h<t;)h+=i,u++;let g=0;if(u){if(o)g=-u;else if(d&&c!==null){const p=c/i,b=s.diff(d,n,"hour");g=Math.floor(b-p)}}let m=a;a||(m=$(s.minUnit,f(n,g),l));let y=0;if(d){const p=s.diff(d,m,"hour");y=Math.max(0,Math.round(p*i)-(c||0))}return{_start:m,_end:o||f(r,u-g),scrollLeft:y}}function $a(t,e){const n=O.indexOf(t),s=O.indexOf(e);return s>=n?t==="hour"?"hour":"day":O[s]}function gt(t,e){return t??e}function He(t,e){const{_scales:n,_start:s,_weekStart:a}=e,o=n.lengthUnit==="day"?n.lengthUnitWidth/24:n.lengthUnitWidth;return I("hour")($(n.minUnit,s,a),Math.floor(t/o))}function Ca(t,e){const{_scales:n,_weekStart:s,cellWidth:a,durationUnit:o}=e,{minUnit:r,lengthUnit:i,lengthUnitWidth:d}=n,c=$(r,n.start,s);if(a===d){const m=I(i)(c,Math.round(t/d));return o!==r?$(o,m,s):m}const l=Math.trunc(t/a),f=I(r)(c,l),h=t-l*a;if(h<=0)return f;const u=et(r,i,f),g=Math.min(u-1,Math.round(h/d));return I(i)(f,g)}const ze=7,Fe=3,Pa=8,Ea=4,Oa=Pa+Ea;function at(t,e){return t.type==="summary"&&!!t.manual&&!!e?.schedule?.auto}function Be(t,e,n,s){(t.open||t.type!=="summary"||n)&&t.data?.forEach(a=>{s&&a.manual||(a.$x+=e,a.$x_rollup&&(a.$x_rollup+=e),Be(a,e,n,s))})}function Et(t,e,n,s){const a=t.getSummaryId(e.id);if(a){const o=t.byId(a);if(s&&o.manual)return;const r={xMin:1/0,xMax:0};Le(o,r,!!n&&!o.inactive),Number.isFinite(r.xMin)&&(o.$x=r.xMin,o.$w=r.xMax-r.xMin),Et(t,o,n,s)}}function Le(t,e,n){t.data?.forEach(s=>{if(!s.unscheduled&&!(n&&s.inactive)){const a=s.type==="milestone"&&s.$h?s.$h/2:0;e.xMin>s.$x+a&&(e.xMin=s.$x+a);const o=s.$x+s.$w-a;e.xMax<o&&(e.xMax=o)}s.type!=="summary"&&Le(s,e,n)})}function Ot(t,e,n,s){const a={...t};return a.data?.length?a.data.forEach(o=>{const r=!!(s&&o.inactive);if(e&&o.unscheduled&&!o.data||r&&(o.type==="summary"||!o.data))return;o.type!=="summary"&&o.data&&((e&&o.unscheduled||r)&&(o={...o,start:void 0,end:void 0}),o=Ot(o,e,n,s)),o.start&&(!a.start||a.start>o.start)&&(a.start=new Date(o.start));const i=o.end||o.start;i&&(!a.end||a.end<i)&&(a.end=new Date(i))}):t.type==="summary"&&console.warn(`Summary task ${t.id} has no subtasks, so its dates cannot be derived. Provide start and end dates for it.`),a}function Ne(t,e,n){return Ye(t,e,n),t.data&&!t.open&&Ue(t,n),t}function Ye(t,e,n,s){const{cellWidth:a,cellHeight:o,_scales:r,baselines:i,_rollups:d}=n,{start:c,end:l,lengthUnit:f,diff:h}=r,u="start",g="end",m="$x",y="$y",p="$w",b="$h",k="$skip",w=o-ze-(i?Oa:0);let _=t[u],v=t[g];if(n.unscheduledTasks&&t.unscheduled||t.$placeholder){e!==null&&(t[y]=o*e+Fe),t[b]=w,t[k]=!0;return}t[u]<c&&(t[g]<c||F(t[g],c))?_=v=c:t[u]>l&&(_=v=l),t[m]=Math.round(h(_,c,f)*a),t[p]=Math.round(h(v,_,f,!0)*a),e!==null&&(t[y]=o*e+Fe),t[b]=w,t.type==="milestone"&&(t[m]=t[m]-t.$h/2,t[p]=t.$h),n.groupBy&&t.$group?t.$skip=!0:t[k]=F(_,v)}function Ue(t,e,n){n=n??t.type!=="summary",t.data&&!t.$skip&&(n||e._rollups)&&t.data.forEach(s=>{(n||s.rollup)&&Ye(s,null,e),Ue(s,e,n)})}function Ga(t,e){return!1}function Aa(t,e){}function Ha(t,e,n){}function za(t,e){const{tasks:n,durationUnit:s,_scales:a}=t,o=n.getBranch(0);if(o?.length){const r=o[o.length-1];if(!r.$skip&&r.start){const i=new Date(r.start.valueOf());if(a.start<=i)return i}}return I(s,e)(a.start,1)}var je=new Date().valueOf();function Fa(){return je+=1,je}const Gt=20,Ba=function(t,e,n,s){if(!e||!n||!e.$y||!n.$y||e.$skip||n.$skip)return t.$p="",t.$pl=0,t.$x1=t.$x2=t.$y1=t.$y2=0,t;let a=!1,o=!1;switch(t.type){case"e2s":o=!0;break;case"s2s":a=!0,o=!0;break;case"s2e":a=!0;break}const r=a?e.$x:e.$x+e.$w,i=e.$y+e.$h/2,d=o?n.$x:n.$x+n.$w,c=n.$y+n.$h/2,l=(s-ze-n.$h)/2;if(r!==d||i!==c){const{coords:f,pl:h,x1:u,x2:g,y1:m,y2:y}=La(r,i,d,c,a,o,s/2,l),p=Na(d,c,o);t.$p=`${f},${p}`,t.$pl=h,t.$x1=Math.min(u,d-5),t.$x2=Math.max(g,d+5),t.$y1=Math.min(m,c-3),t.$y2=Math.max(y,c+3)}return t};function La(t,e,n,s,a,o,r,i){const d=Gt*(a?-1:1),c=Gt*(o?-1:1),l=t+d,f=n+c,h=[t,e,l,e,0,0,0,0,f,s,n,s],u=f-l;let g=s-e;const m=o===a;m||(f<=t+Gt-2&&o||f>t&&!o)&&(g=g-r+i),m&&o&&l>f||m&&!o&&l<f?(h[4]=h[2]+u,h[5]=h[3],h[6]=h[4],h[7]=h[5]+g):(h[4]=h[2],h[5]=h[3]+g,h[6]=h[4]+u,h[7]=h[5]);let y=1/0,p=-1/0,b=1/0,k=-1/0,w=0;for(let _=0;_<h.length-1;_+=2)h[_]<y&&(y=h[_]),h[_]>p&&(p=h[_]),h[_+1]<b&&(b=h[_+1]),h[_+1]>k&&(k=h[_+1]),_<h.length-3&&(w+=Math.hypot(h[_+2]-h[_],h[_+3]-h[_+1]));return{coords:h.join(","),pl:w,x1:y,x2:p,y1:b,y2:k}}function Na(t,e,n){return n?`${t-5},${e-3},${t-5},${e+3},${t},${e}`:`${t+5},${e+3},${t+5},${e-3},${t},${e}`}function Ya(t,e,n){if(e&&n){const s=n.x-e.x,a=n.y-e.y,o=(s>0?e.x:n.x)-t.left,r=(a>0?e.y:n.y)-t.top,i=`${s>0?0:-s},${a>0?0:-a},${s>0?s:0},${a>0?a:0}`;return{width:Math.abs(s),height:Math.abs(a),left:o,top:r,p:i}}else return null}function At(t){return t?.map(e=>{const n=e.id||Fa(),s=Number(e.lag)||0;return{...e,id:n,lag:s}})}const Ht="wx_placeholder_row";function U(t){return t===Ht}function Ua(t,e){const n={...t};return delete n.id,delete n.unscheduled,Object.keys(n).forEach(s=>{s.startsWith("$")&&delete n[s]}),n.text||(n.text=e),n}function ja(){return null}const rt={end:"start",base_end:"base_start",deadline:null},Ra=["fnlt","fnet","mfo"];function Re(t){const e=t.constraint;return!!e?.date&&Ra.includes(e.type)&&t.type!=="milestone"}function qe(t,e,n){if(n&&t<=n)return n;const s=e?.getPreviousWorkingDay(t)??E(t,-1);return n&&s<n?n:s}function zt(t,e,n){const s=t[e];if(!s)return s;const a=rt[e];return qe(s,n,a&&t[a])}function qa(t,e){const n={...t};for(const s in rt)t[s]&&(n[s]=zt(t,s,e));return Re(t)&&(n.constraint={...t.constraint,date:qe(t.constraint.date,e)}),t.segments&&(n.segments=t.segments.map(s=>s.end?{...s,end:zt(s,"end",e)}:s)),n}const Xa=[...Object.keys(rt),"constraint","segments"];function Qa(t,e,n){const s={...t};for(const o of Xa)o!==e&&o in n&&(s[o]=n[o]);const a=s[e];return a&&(e in rt?s[e]=E(a,1):e==="constraint"&&Re(s)&&(s.constraint={...a,date:E(a.date,1)})),s}function Va(t,e,n){const{id:s,template:a}=t;if(!(s in rt)||t.getter||t.setter)return t;const o={...t,getter:r=>e().inclusiveEnd?zt(r,s,n?.(r)):r[s],setter:(r,i)=>{r[s]=e().inclusiveEnd&&i?E(i,1):i}};return a&&!t._template&&(o.template=(r,i,d)=>a(i[s],i,d)),o}function Xe(t,e="grid"){return t.filter(n=>(n.section||"grid")===e)}const it=37,Ja=120;function Qe(t){return t.width||(t.id==="add-task"?it:Ja)}const Ve=["start","end","duration"];function Je(t,e){return t==="start"&&e?["Unschedule","today"]:["today"]}function Ka(t,e){const{type:n,unscheduled:s}=t;return n==="summary"?!Ve.includes(e):s||n==="milestone"?!["end","duration"].includes(e):!0}function Za(t,e,n){if(typeof e=="function"||!e)return e;const s=Ve.includes(t);if(!s&&t!=="resources")return e;const a=typeof e=="string"?{type:e}:e,o=a.config??={};return s?(r,i)=>{const d=String(i?.id??"");return!r||!Ka(r,d)?null:(a.type==="datepicker"&&(o.buttons=Je(d,!r.$placeholder&&n().unscheduledTasks)),a)}:a}function Ke(t){let e=1;return t?.length&&t.forEach(n=>{if(n.hidden)return;const s=n.header,a=Array.isArray(s)?s.length:s?1:0;e=Math.max(a,e)}),e}function tr(t,e,n){if(!t||!t.length)return[];t=t.filter(a=>a.section!=="subGrid");const s=t.map(a=>{const o=a.align||"left",r=a.id==="add-task",i=r?null:a.flexgrow,d=i?1:Qe(a),c=a.editor&&Za(a.id,a.editor,e);let l=Array.isArray(a.header)?a.header:[a.header];l=l.map(h=>(typeof h!="object"&&(h={text:h}),h.filter&&typeof h.filter!="object"&&(h.filter={type:h.filter}),h));const f={width:d,align:o,header:l,id:a.id,template:a.template,_template:a._template,...i&&{flexgrow:i},...a.hidden&&{hidden:a.hidden},...a.section&&{section:a.section},cell:a.cell,resize:a.resize??!0,sort:a.sort??!r,...c&&{editor:c},...a.options&&{options:a.options},getter:a.getter,setter:a.setter};return Va(f,e,n)});return tn(s),s}function Ze(t,e){const n=Xe(t,e).filter(a=>!a.hidden);if(!n.length||n.some(a=>a.flexgrow))return;const s=n.find(a=>a.id==="text")||n.find(a=>a.id!=="add-task");s&&(s.flexgrow=1)}function tn(t){Ze(t,"grid"),Ze(t,"subGrid")}const en=[{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:it,align:"center",sort:!1,resize:!1}];function nn(t={}){return en.map(e=>({...e}))}function Ft(t,e="grid"){return Xe(t,e).reduce((n,s)=>n+Qe(s),0)}function er(){return[]}function nr(t){if(!t||!t.length)return[];const e=t.map(n=>({...n}));if(!e.some(n=>n.flexgrow)){const n=e.find(s=>s.id==="name")||e[0];n&&(n.flexgrow=1)}return e}function Bt(t){return!1}function Lt(t,e){const n=["grid","chart"];let s;if(Array.isArray(t))s=[...t];else switch(t){case"grid":case"chart":s=[t];break;case"all":default:s=n;break}return s=s.filter(a=>a!=="subGrid"),s.length||(s=n),s}function Nt(t,e){if(t.length<=1)return t.length?t:["grid"];const n=e?.find(s=>t.includes(s));return n?[n]:t.includes("grid")?["grid"]:[t[0]]}function sr(t,e,n=!1){if(n)return t.includes("grid")?["chart"]:["grid"];const s=t.includes("grid"),a=t.includes("chart");return t.includes("subGrid"),s&&a?e==="start"?["chart"]:["grid"]:["grid","chart"]}function ar(t,e,n=!1){return t}const sn=4,Yt=100,rr=650;function an(t,e){return!t||!e?.includes("chart")?sn:2*sn}function ir(t,e,n,s,a=0){const o=n+a+Yt;return or(t,e,o,s)}function or(t,e,n,s=0){const a=Math.max(e-n,0);return Math.max(s,Math.min(t,a))}function Ut(t,e){return t.length===e.length&&t.every(n=>e.includes(n))}function rn(t){const e=["chart"];return t.includes("subGrid")&&e.push("subGrid"),e}function on(t){return t._gridCollapseThreshold??it}function jt(t,e,n){return{ganttWidth:e,gridWidth:t.gridWidth,subGridWidth:t.subGridWidth,hasSubGrid:Bt(t.columns),scrollSize:n??t._scrollSize??0,collapseThreshold:on(t)}}function dn(t,e,n=!1){const{ganttWidth:s,subGridWidth:a,hasSubGrid:o,scrollSize:r=0,collapseThreshold:i}=e;let d=e.gridWidth,c=[...t];const l=c.includes("chart"),f=an(o,c),h=f+r;let u=0,g=s-d-u-h;return l&&g<Yt&&n&&(d=ir(d,s,f,i,r),g=s-d-u-h),l&&g<Yt&&(c=c.filter(m=>m!=="chart")),{gridWidth:d,subGridWidth:a,panels:c}}function dr(t,e){const n=e.width,s=e.scrollSize??t._scrollSize??0,a=n==null||n<=rr,o={compactMode:a,gridWidth:t.gridWidth,subGridWidth:t.subGridWidth};!t._compactMode&&a&&(o.displayPanels=Nt(t.displayMode,t._displayPanels));const r=t.displayMode;if(a||n==null||!r?.includes("grid")||!r.includes("chart"))return o;const i=dn(t.displayMode,jt(t,n,s),!0);o.gridWidth=i.gridWidth,o.subGridWidth=i.subGridWidth;const d=t._displayPanels??t.displayMode;return Ut(i.panels,d)||(o.displayPanels=i.panels),o}function cr(t,e){if(e.gridWidth<=e.collapseThreshold){const n=e.preferredGridWidth;return{gridWidth:n!=null&&n>e.collapseThreshold?n:e.gridWidth,subGridWidth:e.subGridWidth,panels:rn(t)}}return dn(t,e)}function lr(t,e){return{subGridWidth:0,panels:t}}function ur(t,e){const{ganttWidth:n,hasSubGrid:s,scrollSize:a=0,collapseThreshold:o}=e,r=Math.max(0,n-an(s,t)-a-(t.includes("subGrid")?e.subGridWidth:0)),i=Math.min(o,r);return{gridWidth:Math.max(i,Math.min(e.gridWidth,r)),panels:e.gridWidth<=o?rn(t):t}}function hr(t,e){return{subGridWidth:0,panels:t}}function fr(t,e,n){return e}function ot(t,e,n,s){const a=t.getState(),o=a._selected.filter(m=>!U(m.id)).map(m=>m.id);U(n)&&(n=null);const r=o.length,i=["edit-task","paste-task","undo","redo","add-task","add-task:child","add-task:before","add-task:after","show-conflicts"],d=["copy-task","cut-task"],c=["copy-task","cut-task","delete-task","indent-task:remove","move-task:down"],l=["add-task","undo","redo","show-conflicts"],f=["indent-task:add","move-task:down","move-task:up","copy-task","cut-task","delete-task"],h={"indent-task:remove":2},u=!r&&l.includes(e),g={parent:f.includes(e),level:h[e],sort:!d.includes(e)};if(n=n||(r?o[o.length-1]:null),!(!n&&!u)){if(e!=="paste-task"&&(t._temp=null),i.includes(e)||u||o.length===1)cn(t,e,n,s);else if(r){const m=gr(o,g,a);c.includes(e)&&m.reverse();const y=t.getHistory();y&&y.startBatch(),m.forEach((p,b)=>cn(t,e,p,s,b)),y&&y.endBatch()}}}function gr(t,e,n){const{tasks:s,tree:a,groupBy:o}=n;let r=t.map(i=>{let d=i;o?.field&&(d=a.byId(d)?.$id||d);const c=s.byId(d);return{id:d,level:c?.$level,parent:c?.parent,index:s.getIndexById(d)}});return(e.parent||e.level)&&(r=r.filter(i=>e.level&&i.level<=e.level||!t.includes(i.parent))),e.sort&&r.sort((i,d)=>i.level-d.level||i.index-d.index),r.map(i=>i.id)}function cn(t,e,n,s,a){const o=t.exec?t.exec:t.in.exec;let r=e.split(":")[0],i=e.split(":")[1];const d=n?.id||n;let c={id:d},l={},f=!1;if(r==="copy-task"||r==="cut-task"){t._temp||(t._temp=[]),t._temp.push({id:d,cut:r==="cut-task"});return}else if(r==="paste-task"){const{tasks:h}=t.getState(),u=t._temp?.filter(g=>h.byId(g.id));if(u&&u.length){const g=t.getHistory();g&&g.startBatch();const m=new Map;if(u.forEach(y=>{const p={id:y.id,target:d,mode:"after"};o(y.cut?"move-task":"copy-task",p),m.set(y.id,p.id)}),!u[0].cut){const{links:y}=t.getState(),p=u.map(k=>k.id),b=[];y.forEach(k=>{p.includes(k.source)&&p.includes(k.target)&&b.push(k)}),b.forEach(k=>{o("add-link",{link:{...k,id:void 0,source:m.get(k.source),target:m.get(k.target)}})}),u.forEach((k,w)=>{o("select-task",{id:m.get(k.id),toggle:!!w})})}g&&g.endBatch()}t._temp=null;return}else r==="add-task"?(l={task:{type:"task",text:s("New task")},target:d,show:!0,mode:"after",select:!1},c={},f=!0):r==="edit-task"?r="show-editor":r==="convert-task"?(r="update-task",l={task:{type:i}},i=void 0):r==="indent-task"&&(i=i==="add");if(r==="split-task"&&typeof n=="object")l=n;else if(r==="delete-task"&&i==="segment"&&typeof n=="object"){const h=t.getTask(d),{segmentIndex:u}=n,g=h.segments.filter((m,y)=>y!==u);o("update-task",{id:d,task:{segments:g}});return}typeof i<"u"&&(l={...l,mode:i}),c={...c,...l},o(r,c),f&&o("select-task",{id:c.id,toggle:!!a,eventSource:r})}function ln(t,e){return t.some(n=>n.data?ln(n.data,e):n.id===e)}function un(t,e,n,s=1){const a=n[0].width,o=Math.max(0,Math.floor(t/a)-s),r=Math.min(n.length,Math.ceil((t+e)/a)+s);return{from:o*a,to:r*a,start:o,end:r}}const hn=(t,e)=>I(t,e),mr=(t,e)=>ft(t,e);function fn(t,e,n,s=0){const a=o=>{o&&o.forEach(r=>{if(a(r.data),j(r,e,n(r)),r.type!=="summary")return;const i=!(r.start&&r.end),d=e.inactiveTasks&&r.inactive===void 0;if(!i&&!d)return;const c=Ot(r,e.unscheduledTasks,e.inactiveTasks,e.inactiveTasks&&!d?!r.inactive:void 0);d&&c.inactive&&(r.inactive=!0),i&&(r.start=c.start,r.end=c.end,r.duration=void 0,j(r,e,n(r)))})};a(t.byId(s)?.data)}const gn=(t,e,n)=>n in t?t[n]:e?.[n];function pr(t,e){if(gn(t,e,"type")==="summary"){t.unscheduled=!1;return}t.unscheduled=!gn(t,e,"start")}function yr(t,e,n){"type"in t||(t.type=e.type),!t.start&&!(n&&"start"in t)&&(t.start=e.start),!t.end&&!t.duration&&(t.duration=e.duration),!("segments"in t)&&e.segments&&(t.segments=e.segments)}function j(t,e,n,s){s&&yr(t,s,e.unscheduledTasks),t.start&&mn(t,e,n,!1),e.unscheduledTasks&&pr(t,s),t.base_start&&mn(t,e,n,!0)}function mn(t,e,n,s){const{durationUnit:a}=e,o=a||"day",[r,i,d]=pn(s);t.type==="milestone"?(t[d]=0,t[i]=void 0):t[r]&&(t[d]?t[i]=hn(o,n)(t[r],t[d]):t[i]?t[d]=mr(o,n)(t[i],t[r]):(t[i]=hn(o,n)(t[r],1),t[d]=1))}function pn(t){return t?["base_start","base_end","base_duration"]:["start","end","duration"]}function yn(t,e,n){const[s,a,o]=pn(n);(e===o||e===s&&t.start)&&(e===o&&t[o]<1&&(t[o]=1),t[a]=null),e===a&&(t[o]=0,t[s]&&t[s]>=t[a]&&(t[a]=null,t[o]=1))}function kr(t,e,n,s){yn(t,s,!1),t.base_start&&yn(t,s,!0),j(t,e,n)}const Q=[],br=["add-task","update-task","move-task","delete-task","add-link","update-link","delete-link","add-assignment","update-assignment","delete-assignment"],_r={geometry:["tasks","cellHeight","baselines","unscheduledTasks","rollups","groupBy"]};class wr extends In{in;_router;_modules=new Map;_prevConfig={};_pendingGeometry=null;_resizeStart=null;_placeholderRow;constructor(e){super({writable:e,async:!1}),this._router=new $n(super.setState.bind(this),[{in:["tasks","start","end","scales","autoScale","markers","projectStart","projectEnd","baselines","progressLine","deadlines","criticalPath","schedule","unscheduledTasks"],out:["_start","_end"],exec:r=>{const{_end:i,_start:d,start:c,end:l,tasks:f,scales:h,autoScale:u,markers:g,projectStart:m,projectEnd:y,baselines:p,unscheduledTasks:b,progressLine:k,deadlines:w,criticalPath:_,schedule:v}=this.getState();if(this._pendingGeometry!=="meta")if(!c||!l||u){const S=X(h).unit,W=Ma(c,l,u,S,f);(W._end!==i||W._start!==d)&&this.setState(W,r)}else this.setState({_start:c,_end:l},r)}},{in:["_columns"],out:["_headerLength","_gridCollapseThreshold"],exec:r=>{const{_columns:i}=this.getState();let d=it;const c=i.find(l=>l.id==="add-task");c?.width&&(d=c.width),this.setState({_headerLength:Ke(i),_gridCollapseThreshold:d},r)}},{in:["displayMode"],out:["_displayPanels"],exec:r=>{const{displayMode:i,_compactMode:d,_displayPanels:c}=this.getState();this.setState({_displayPanels:d?Nt(i,c):i},r)}},{in:["_displayPanels","_columns","gridWidth"],out:["_columnsWidth"],exec:r=>{const{_columns:i,_displayPanels:d,gridWidth:c}=this.getState();if(!i?.length){this.setState({_columnsWidth:0},r);return}let l=0;d.includes("grid")?l=c:l=i?.find(f=>f.id==="add-task")?.width||it,l&&this.setState({_columnsWidth:l},r)}},{in:["start","end"],out:["cellWidth"],exec:r=>{const{_cellWidth:i,cellWidth:d}=this.getState();i!==d&&this.setState({cellWidth:i},r)}},{in:["_start","_end","cellWidth","scaleHeight","scales","lengthUnit","_weekStart","_headerLength"],out:["_scales"],exec:r=>{const i=this.getState();let{lengthUnit:d}=i;const{_start:c,_end:l,cellWidth:f,scaleHeight:h,scales:u,_weekStart:g,_headerLength:m}=i,y=X(u).unit;ba(y,d)||(d=y);const p=Wa(c,l,d,f,h,g,u,m);this.markGeometry("all"),this.setState({_scales:p},r)}},{in:["assignments"],out:["_assignments"],exec:r=>{const{assignments:i}=this.getState();this.setState({_assignments:this.indexAssignments(i)},r)}},{in:["_scales","scrollLeft","_chartWidth"],out:["xArea"],exec:r=>{const{_scales:i,scrollLeft:d,_chartWidth:c}=this.getState();if(!i||!c){this.setState({xArea:{from:0,to:0,start:0,end:0}},r);return}const l=i.rows[i.rows.length-1].cells;this.setState({xArea:un(d||0,c,l)},r)}},{in:["tasks","_assignments","groupBy","_scales"],out:["tree"],exec:r=>{this.getState();const{tasks:i,_scales:d}=this.getState(),c=this.getGrouping();if(c){if(!d)return;const l=c.buildTree();this.setState({tree:l});return}this.setState({tree:i},r)}},{in:["tree","_scales","_rollups","cellHeight","baselines","unscheduledTasks","deadlines","splitTasks","placeholderRow"],out:["_tasks"],exec:r=>{const{cellWidth:i,cellHeight:d,tree:c,_scales:l,baselines:f,splitTasks:h,unscheduledTasks:u,placeholderRow:g,_rollups:m,groupBy:y,_tasks:p,deadlines:b,tasks:k,durationUnit:w,schedule:_,criticalPath:v}=this.getState(),S=c.toArray();g&&S.push(this.getPlaceholderRow());const W={cellWidth:i,cellHeight:d,_scales:l,baselines:f,unscheduledTasks:u,_rollups:m,groupBy:y},T=this._pendingGeometry;if(this._pendingGeometry=null,(T==="meta"||T instanceof Set)&&p?.length===S.length&&S.every((D,G)=>p[G]?.id===D.id&&(D.$skip||typeof D.$x=="number"))){if(T instanceof Set)for(let D=0;D<S.length;D++)T.has(S[D].id)&&Ne(S[D],D,W);this.setState({_tasks:S},r);return}g&&(this.getPlaceholderRow(),this.getCalendar());const B=S.map((D,G)=>Ne(D,G,W));this.setState({_tasks:B},r)}},{in:["_tasks","links","cellHeight"],out:["_links"],exec:r=>{const{tree:i,links:d,cellHeight:c,criticalPath:l,_isFiltered:f}=this.getState(),h=d.map(u=>{const g=i.byId(u.source),m=i.byId(u.target);return!g||!m?null:Ba(u,g,m,c)}).toSorted((u,g)=>!u||!g?0:l?!!u.critical==!!g.critical?g.$pl-u.$pl:u.critical?1:-1:g.$pl-u.$pl).filter(u=>u&&f?i.isFilteredId(u.source)&&i.isFilteredId(u.target):u!==null);this.setState({_links:h},r)}},{in:["_links"],out:["_linksIndex"],exec:r=>{const{_links:i}=this.getState(),d=new Map;for(const c of i){if(!c.$p)continue;const l=Math.floor(c.$x1/2048),f=Math.floor(c.$x2/2048),h=Math.floor(c.$y1/2048),u=Math.floor(c.$y2/2048);for(let g=h;g<=u;g++)for(let m=l;m<=f;m++){const y=g*65536+m;let p=d.get(y);p||d.set(y,p=[]),p.push(c)}}this.setState({_linksIndex:d},r)}},{in:["_linksIndex","area","xArea","cellHeight"],out:["_visibleLinks"],exec:r=>{const{_linksIndex:i,area:d,xArea:c,cellHeight:l}=this.getState(),f=d.to??d.end*l,h=Math.floor(c.from/2048),u=Math.floor(c.to/2048),g=Math.floor(d.from/2048),m=Math.floor(f/2048);let y;if(h===u&&g===m)y=i.get(g*65536+h)??[];else{const b=new Set;for(let k=g;k<=m;k++)for(let w=h;w<=u;w++){const _=i.get(k*65536+w);if(_)for(const v of _)b.add(v)}y=Array.from(b)}const p=y.filter(b=>b.$y2>=d.from&&b.$y1<=f&&b.$x2>=c.from&&b.$x1<=c.to);this.setState({_visibleLinks:p},r)}},{in:["tasks","activeTask"],out:["_activeTask"],exec:r=>{const{activeTask:i,tasks:d}=this.getState(),c=d.byId(i);this.setState({_activeTask:c||null},r)}},{in:["tree","selected","placeholderRow"],out:["_selected"],exec:r=>{const{tree:i,selected:d,_isFiltered:c,placeholderRow:l}=this.getState(),f=d.map(h=>l&&U(h)?this.getPlaceholderRow():i.byId(h)).filter(h=>h?U(h.id)?!0:!c||i.isFilteredId(h.id):!1);this.setState({_selected:f},r)}},{in:["columns"],out:["_columns"],exec:r=>{const{columns:i}=this.getState();let d=i;this.setState({_columns:d},r)}}],{links:r=>new kt(At(r)),columns:r=>tr(r,()=>this.getState(),i=>this.getTaskCalendar(i))});const n=this.in=new Cn;br.forEach(r=>n.intercept(r,i=>{this.isRemote(i.eventSource)&&(i.skipProvider=!0)})),n.on("show-editor",r=>{this.setStateAsync({activeTask:r.id})}),n.on("select-task",({id:r,toggle:i,range:d,show:c=!0,focus:l,eventSource:f})=>{const{selected:h,_tasks:u,activeTask:g}=this.getState();let m=!1,y;if(h.length&&(i||d)){const b=[...h];if(d){const k=b[b.length-1],w=u.findIndex(T=>T.id===k),_=u.findIndex(T=>T.id===r),v=Math.min(w,_),S=Math.max(w,_)+1,W=u.slice(v,S).map(T=>T.id);w>_&&W.reverse(),W.forEach(T=>{b.includes(T)||b.push(T)})}else if(i){const k=b.findIndex(w=>w===r);k===-1?b.push(r):(m=!0,b.splice(k,1))}y=b}else y=[r];const p={selected:y};if(this.setState(p),y.length&&(l&&(c=l==="chart"?"xy":c||"y"),c)){const b=()=>{const k=y[y.length-1];this.scrollToTask(k,c),l&&this.setStateAsync({focusTask:{id:k,...l!=="chart"?{section:l}:{}}})};f==="add-task"?setTimeout(b,1):b()}!m&&g&&g!==r&&!U(r)&&n.exec("show-editor",{id:r})}),n.on("delete-link",({id:r})=>{const{links:i}=this.getState();i.remove(r),this.setStateAsync({links:i})}),n.on("update-link",r=>{const{links:i}=this.getState(),d=r.id,c=r.link;let l=r.link;i.update(d,l),l=i.byId(d),st(l,c),l.lag=Number(l.lag)||0,this.setStateAsync({links:i}),r.link=l}),n.on("add-link",r=>{const{link:i}=r,{links:d}=this.getState();!i.source||!i.target||(i.type||(i.type="e2s"),i.lag=Number(i.lag)||0,i.id=i.id||ee(),d.add(i),this.setStateAsync({links:d}),r.id=i.id,r.link=d.byId(i.id))});let s=null;const a=new Map;n.on("move-task",r=>{const{tasks:i,tree:d}=this.getState();let{mode:c,target:l}=r;const{id:f,inProgress:h}=r;if(this.isRemote(r.eventSource)){r.source=i.byId(f).parent,i.move(f,c,l),this.setStateAsync({tasks:i});return}const u=d.byId(f),g=this.getGrouping();if(typeof h>"u"?r.source=u.parent:r.source=s=s??u.parent,h===!1){d.update(u.id,{$reorder:!1}),a.forEach((m,y)=>{const p=i.byId(y);p&&(!F(p.start,m.start)||!F(p.end,m.end)||!!p.inactive!=!!m.inactive)&&n.exec("update-task",{id:y,task:{...p},eventSource:"move-task",joinUndo:!0,skipUndo:!0})}),a.clear(),this.setState({tasks:i}),s=null;return}if(l===f||d.contains(f,l)||g&&c!=="before"&&c!=="after"){r.skipProvider=!0;return}if(c==="up"||c==="down"){const m=i.getBranch(f);let y=i.getIndexById(f);if(c==="up"){const p=u.parent===0;if(y===0&&p){r.skipProvider=!0;return}y-=1,c="before"}else if(c==="down"){const p=y===m.length-1,b=u.parent===0;if(p&&b){r.skipProvider=!0;return}y+=1,c="after"}if(l=m[y]&&m[y].id||u.parent,l){const p=i.getBranch(l);let b=i.getIndexById(l),k=p[b];if(k.data){if(c==="before"){if(k.parent===u.parent){for(;k.data;)k.open||n.exec("open-task",{id:k.id,mode:!0}),k=k.data[k.data.length-1];l=k.id}}else if(c==="after"){let v;k.parent===u.parent?(v=k,k=k.data[0],l=k.id,c="before"):p.length-1!==b&&(v=k,b+=1,k=p[b],u.$level>k.$level&&k.data?(v=k,k=k.data[0],l=k.id,c="before"):l=k.id),v&&!v.open&&n.exec("open-task",{id:v.id,mode:!0})}}const w=i.getSummaryId(u.id);i.move(f,c,l);const _=i.getSummaryId(f);w!==_&&(w&&this.resetSummaryDates(w,"move-task"),_&&this.resetSummaryDates(_,"move-task"))}}else{const m=d.byId(l);let y=m,p=!1;for(;y.$level>u.$level;)y=d.byId(y.parent),y.id===f&&(p=!0);if(p)return;const b=!g&&d.getSummaryId(u.id);if(d.move(f,c,l),c==="child"){let k=m;for(;k.id!==0&&!k.open;)n.exec("open-task",{id:k.id,mode:!0}),k=i.byId(k.parent)}if(!g){const k=i.getSummaryId(f);if(b!==k){const w=h?a:null;b&&this.resetSummaryDates(b,"move-task",w),k&&this.resetSummaryDates(k,"move-task",w)}}}h?this.setState({tree:d}):this.setStateAsync({tasks:i}),r.target=l,r.mode=c}),n.on("drag-task",r=>{const i=this.getState(),{tree:d,_tasks:c,_selected:l,rollups:f,slack:h,inactiveTasks:u}=i,g=!!i.schedule?.auto,m=d.byId(r.id),{left:y,top:p,width:b,inProgress:k}=r,w={_tasks:c,_selected:l};if(typeof b<"u"&&(m.$w=b,Et(d,m,u,g)),typeof y<"u"){if(m.type==="summary"&&!at(m,i)){const _=y-m.$x;Be(m,_,!!f,g)}m.$x=y,Et(d,m,u,g)}typeof p<"u"&&(m.$y=p+4,m.$reorder=k),this.setState(w)});const o=new Set(["start","end","duration","type","inactive","base_start","base_end","base_duration","segments","rollup","calendar","deadline","constraint"]);n.on("update-task",r=>{const{id:i,segmentIndex:d,diff:c,eventSource:l}=r,f=this.isHistorySource(l),h=r.task;let{task:u}=r;const g=this.getState(),{tasks:m,_scales:y,durationUnit:p,splitTasks:b,_calendars:k,unscheduledTasks:w,inactiveTasks:_}=g,v={tasks:m},S=m.byId(i);if(this.isRemote(l)){m.update(i,u),st(m.byId(i),h),this.markGeometry(this.editedRows(i,u.type==="summary"||S.type==="summary")),this.setStateAsync(v),r.task=m.byId(i);return}const W=this.getTaskCalendar({...S,...u}),T={durationUnit:p,unscheduledTasks:w};if(l==="add-task"||l==="copy-task"||l==="move-task"||l==="update-task"||l==="delete-task"||l==="provide-data"||l==="schedule-tasks"){l==="schedule-tasks"||j(u,T,W,S),m.update(i,u),st(m.byId(i),h),r.task=m.byId(i);return}if(!(at(S,g)&&"manual"in u&&!u.manual&&(u.type??S.type)==="summary"||c||d>=0||"type"in u&&u.type!==S.type||Object.keys(u).some(P=>{if(!o.has(P)||P==="type")return!1;const A=u[P],yt=S[P];return!dt(A,yt)}))){m.update(i,u),st(m.byId(i),h);const P=m.byId(i),A=!this.getGrouping()&&typeof P.$x=="number";this.markGeometry(A?"meta":"all"),this.setStateAsync({tasks:m}),r.task=P;return}const B=y.lengthUnit;let D=I(B);const G=ft(p,W);c&&(u.start&&(u.start=D(u.start,c)),!d&&d!==0&&(u.start&&u.end?u.duration=S.duration:(u.start?u.end=S.end:(u.end=D(u.end,c),u.start=S.start,u.duration=G(u.end,u.start)),G(u.end,u.start)||(u.duration=1)))),u.type=u.type??S.type;const pt=u.type==="summary",vn=at({type:u.type,manual:"manual"in u?u.manual:S.manual},g),Mn=!!S.data?.length;if(_&&"inactive"in u&&(u.inactive,S.inactive),W&&u.start&&!f&&(u.start=It(u.start,c,W)),u.start&&u.end&&(!F(u.start,S.start)||!F(u.end,S.end))&&pt&&Mn&&!vn){let P=c||G(u.start,S.start);W&&(P=u.start>S.start?G(u.start,S.start):-G(S.start,u.start),D=va(W)),this.moveSummaryKids(S,(A,yt)=>{A=D(A,P);const Zt=k?this.getTaskCalendar(yt):W;return Zt?It(A,c,Zt):A},"update-task")}f||j(u,T,W,S),m.update(i,u),st(m.byId(i),h),pt&&this.deriveSummary(i);const Kt=m.getSummaryId(i);Kt&&this.resetSummaryDates(Kt,"update-task"),this.markGeometry(this.editedRows(i,pt||S.type==="summary")),this.setStateAsync(v),r.task=m.byId(i)}),n.on("add-task",r=>{const{tasks:i,_scales:d,unscheduledTasks:c,durationUnit:l,splitTasks:f,tree:h}=this.getState(),{mode:u,task:g,show:m,select:y=!0}=r,p=U(r.target)?void 0:r.target,b=this.getTaskCalendar(g);let k=-1,w,_;if(p?(_=i.byId(p),u==="child"?(w=_,g.parent=w.id):(_.parent!==null&&(w=i.byId(_.parent),g.parent=w.id),k=i.getIndexById(p),u==="after"&&(k+=1))):g.parent&&(w=i.byId(g.parent)),typeof r.index=="number"&&(!p||u==="child")){const T=i.byId(g.parent||0)?.data,B=T?T.length:0;k=r.index>=0&&r.index<B?r.index:-1}if(this.isRemote(r.eventSource)){const T=i.add(g,k);this.setStateAsync({tasks:i}),r.id=T.id,r.task=T;return}!((!r.eventSource||g.unscheduled)&&c)&&!g.start&&(w?.start?g.start=new Date(w.start.valueOf()):_?g.start=new Date(_.start.valueOf()):g.start=za({tasks:i,durationUnit:l,_scales:d},b),g.duration=g.duration||1),b&&g.start&&(g.start=It(g.start,1,b)),this.getState().baselines&&g.start&&(g.base_start=g.start,g.base_duration=g.duration),j(g,{durationUnit:l,unscheduledTasks:c},b);const v=i.add(g,k),S={tasks:i};if(m)for(;w&&w.id;)n.exec("open-task",{id:w.id,mode:!0}),w=h.byId(w.parent);r.id=v.id;const W=i.getSummaryId(v.id);W&&this.resetSummaryDates(W,"add-task"),this.setStateAsync(S),r.id=v.id,r.task=v,y?n.exec("select-task",{id:v.id,show:m,eventSource:"add-task"}):m&&this.scrollToTask(v.id,m),m&&r.eventSource==="placeholder"&&setTimeout(()=>{this.getState().placeholderRow&&this.scrollToTask(Ht,"y")},1)}),n.on("delete-task",r=>{const{id:i}=r,d=this.getState(),{tasks:c,links:l,selected:f}=d,h=c.byId(i);r.source=h.parent;const u=c.getSummaryId(i),g=[i];c.eachChild(p=>g.push(p.id),i),l.filter(p=>!(g.includes(p.source)||g.includes(p.target)));const m={tasks:c,links:l},y=d.groupBy?.field==="resource";(f.includes(i)||y)&&(m.selected=f.filter(p=>p!==i&&(!y||d.tree.byId(p)?.$id!==i))),c.remove(i),u&&!this.isRemote(r.eventSource)&&this.resetSummaryDates(u,"delete-task"),this.setStateAsync(m)}),n.on("indent-task",({id:r,mode:i})=>{const{tasks:d}=this.getState();if(i){const c=d.getBranch(r)[d.getIndexById(r)-1];c&&n.exec("move-task",{id:r,mode:"child",target:c.id})}else{const c=d.byId(r),l=d.byId(c.parent);l&&l.parent!==null&&n.exec("move-task",{id:r,mode:"after",target:c.parent})}}),n.on("copy-task",r=>{const{id:i,target:d,mode:c,eventSource:l}=r;if(l==="copy-task")return;const{tasks:f,links:h}=this.getState();if(f.contains(i,d)){r.skipProvider=!0;return}const u=f.getSummaryId(i),g=f.getSummaryId(d);let m=f.getIndexById(d);c==="before"&&(m-=1);const y=f.byId(i),p=f.copy(y,f.byId(d).parent,m+1);r.source=r.id,r.id=p[0][1],y.lazy&&(r.lazy=!0),u!==g&&g&&this.resetSummaryDates(g,"copy-task");let b=[];for(let k=1;k<p.length;k++){const[w,_]=p[k];h.forEach(v=>{if(v.source===w){const S={...v};delete S.target,b.push({...S,source:_})}else if(v.target===w){const S={...v};delete S.source,b.push({...S,target:_})}})}b=b.reduce((k,w)=>{const _=k.findIndex(v=>v.id===w.id);return _>-1?k[_]={...k[_],...w}:k.push(w),k},[]);for(let k=1;k<p.length;k++){const[w,_]=p[k],v=f.byId(_),S=f.byId(v.parent)?.data;n.exec("copy-task",{source:w,id:_,lazy:!!v.lazy,eventSource:"copy-task",joinUndo:!0,target:v.parent,mode:"child",index:S?.findIndex(W=>W.id===_),skipUndo:!0})}b.forEach(k=>{n.exec("add-link",{link:{...k,id:void 0},eventSource:"copy-task",joinUndo:!0,skipUndo:!0})}),this.setStateAsync({tasks:f})}),n.on("open-task",({id:r,mode:i})=>{const{tree:d}=this.getState(),c=d.byId(r);c.lazy?n.exec("request-data",{id:c.id}):(d.toArray().forEach(l=>l.$y=0),d.update(r,{open:i}),this.setState({tree:d}))}),n.on("scroll-chart",({left:r,top:i,date:d})=>{const{_chartWidth:c,_chartHeight:l,_tasks:f,cellHeight:h,_scales:u,cellWidth:g,_start:m,_weekStart:y}=this.getState();let p={};if(d){const b=u.diff(d,m,"hour");r=Math.round(b*g)}if(!isNaN(r)){if(typeof c<"u"&&!isNaN(u.width)){const b=u.width-c;r=$t(r,0,b)}p={scrollLeft:r,_scaleDate:He(r,{_scales:u,_start:m,_weekStart:y}),_zoomOffset:null}}if(!isNaN(i)){if(l!=null){const b=u.height+f.length*h-l;i=$t(i,0,b)}p.scrollTop=i}this.setState(p)}),n.on("render-data",r=>{this.setState({area:r})}),n.on("provide-data",r=>{const{tasks:i,links:d,assignments:c,durationUnit:l,splitTasks:f,unscheduledTasks:h,inactiveTasks:u}=this.getState(),g=i.byId(r.id);g.lazy?(g.lazy=!1,g.open=!0):g.data=[],i.parse(r.data.tasks,r.id),fn(i,{durationUnit:l,unscheduledTasks:h,inactiveTasks:u},b=>this.getTaskCalendar(b),r.id);const m=g.type==="summary"?g.id:i.getSummaryId(g.id);m&&this.resetSummaryDates(m,"provide-data");const y=(At(r.data.links)||[]).filter(b=>i.byId(b.source)&&i.byId(b.target)),p={tasks:i,links:new kt(d.map(b=>b).concat(y))};this.setStateAsync(p)}),n.on("zoom-scale",({dir:r,ratio:i,offset:d})=>{const c=this.getState(),{zoom:l,cellWidth:f,_cellWidth:h,scrollLeft:u}=c,g=(d||0)+u,m=He(g,c),y=r<0&&h||f;let p=Math.round(y*(1+r*(i??.15)));const{maxCellWidth:b,minCellWidth:k}=l.levels[l.level],w=r<0&&f>b;if(this.shouldExpandScale(p)){this.changeScale(l,r)&&this.setState({cellWidth:p,_cellWidth:p});return}if(p<k||p>b||w){if(!this.changeScale(l,r))if(p=Math.max(Math.min(p,b),k),p!==f)this.setState({cellWidth:p,_cellWidth:p});else return}else this.setState({cellWidth:p,_cellWidth:p});const{_scales:_,_start:v,cellWidth:S,_weekStart:W}=this.getState(),T=$(_.minUnit,v,W),B=_.diff(m,T,"hour");typeof d>"u"&&(d=S);let D=Math.round(B*S)-d;D<0&&(D=0),this.setState({scrollLeft:D,_scaleDate:m,_zoomOffset:d})}),n.on("sort-tasks",({key:r,order:i,add:d})=>{const c=this.getState(),{tasks:l,tree:f,_columns:h}=c;let u=c._sort;const g={key:r,order:i};let m=u?.length||0;m&&d?(u.forEach((y,p)=>{y.key===r&&(m=p)}),u[m]=g):u=[g],f.sort(u,h),this.setState({_sort:u,tree:f})}),n.on("filter-tasks",r=>{const{open:i,key:d,value:c}=r;let l=r.filter;const f=this.getState(),{tree:h,_columns:u}=f;let g=f.filterValues;d?g={...g,[d]:c}:Object.keys(r).length||(g={}),!l&&Object.values(g).some(m=>m||m===0)&&(l=Gn(g,u)),h.filterTree(l,i??!0),this.setState({tree:h,_isFiltered:!!l,filterValues:g})}),n.on("hotkey",({key:r,event:i,eventSource:d})=>{switch(r){case"arrowup":case"arrowdown":{const{selected:c,_tasks:l}=this.getState();i.preventDefault();const f=c.length;let h;if(r==="arrowup"?h=f?this.getPrevRow(c[f-1])?.id:l[l.length-1]?.id:h=f?this.getNextRow(c[f-1])?.id:l[0]?.id,h){const u=d==="chart"?"xy":!0,g=d;this.in.exec("select-task",{id:h,show:u,focus:g})}break}case"ctrl+c":{ot(this,"copy-task",null,null);break}case"ctrl+x":{ot(this,"cut-task",null,null);break}case"ctrl+v":{ot(this,"paste-task",null,null);break}case"ctrl+d":case"backspace":{i.preventDefault(),ot(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:r,height:i,scrollSize:d,ganttWidth:c})=>{if(c!=null){const h=this.getState();(c!==h._containerWidth||d!=null&&d!==h._scrollSize)&&this.syncLayout(c,d)}let l={};const f=this.getState();r>f._scales?.width&&(l=Ia(r,f)),this.setState({...l,_chartWidth:r,_chartHeight:i,_scrollSize:d})}),n.on("resize-grid",({width:r,section:i="grid",inProgress:d})=>{const c=i==="subGrid",l=this.getState();if(c&&!Bt(l.columns))return;const f=this._resizeStart??={panels:l._displayPanels??l.displayMode,gridWidth:l.gridWidth,subGridWidth:l.subGridWidth};d||(this._resizeStart=null);const h=l._containerWidth;if(h==null){this.setState(c?{subGridWidth:r}:{gridWidth:r});return}const u={...jt(l,h),...c?{subGridWidth:r}:{gridWidth:r},preferredGridWidth:f.gridWidth,preferredSubGridWidth:f.subGridWidth},g=c?d?hr:lr:d?ur:cr,{panels:m,...y}=g(f.panels,u);if(d){this.setState({...y,_displayPanels:m});return}this.setState(y),Ut(m,f.panels)?Ut(l._displayPanels,f.panels)||this.setState({_displayPanels:f.panels}):this.in.exec("set-display-mode",{mode:m})}),n.on("set-columns",({columns:r})=>{const i=this.getState().columns.map(d=>{const c=r.find(l=>l.id===d.id);return c?{...d,width:c.width,hidden:c.hidden,flexgrow:c.flexgrow}:d});tn(i),this.setState({columns:i})}),n.on("set-display-mode",({mode:r})=>{const i=this.getState();Bt(i.columns);let d=Lt(r);if(i._compactMode){this.setState({_displayPanels:Nt(d,i._displayPanels)});return}const c=i._containerWidth;c!=null&&(d=fr(i._displayPanels??i.displayMode,d,jt(i,c)));const l=!(i._displayPanels??i.displayMode).includes("grid")&&d.includes("grid");this.setState({displayMode:d,...l&&i.gridWidth<=on(i)?{gridWidth:Ft(i.columns)}:{}}),this.resyncLayout()})}init(e){const n={...e},s=this.getState(),a=!!s.area,o=a?{}:{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:[],showConflicts:!1,_compactMode:!1,_containerWidth:null,_chartHeight:null};n.cellWidth&&(n._cellWidth=n.cellWidth),n.inclusiveEnd&&(n.durationUnit??"day")!=="day"&&(n.inclusiveEnd=!1);const r=n.columns??s.columns,i=r===!1?void 0:r;this.prepareLayoutConfig(n,s,i,a),n.unscheduledTasks=!1,n.inactiveTasks=!1,n.placeholderRow=!1,n.baselines=!1,n.markers=Q,n._markers=Q,n.undo=!1,n.schedule={},n.criticalPath=null,n.splitTasks=!1,n.summary={},n.rollups=!1,n._rollups={},n.slack=!1,n.resources=null,n._resources=[],n.assignments=[],n.calendar=null,n.calendars=[],n._calendar=null,n._calendars=new Map,n._composites=null,n.groupBy=null,n.wbs=null,n.progressLine=null,n.deadlines=!1,n.sCurve=null,n._sCurve=null,n._sCurvePoints=null,n.conflicts=Q,n.showConflicts=!1,n._conflicts=null;const d=this.changed(n,"tasks"),c=this.changed(n,"inclusiveEnd");this.resolveCalendars(n,s,d),this.changed(n,..._r.geometry)&&this.markGeometry("all");for(const l in n)l[0]!=="_"&&(this._prevConfig[l]=n[l]);if(d&&n.tasks){const l=new Nn(n.tasks),f={};fn(l,{durationUnit:n.durationUnit,splitTasks:n.splitTasks,unscheduledTasks:n.unscheduledTasks,inactiveTasks:n.inactiveTasks},h=>this.resolveTaskCalendar(h,f)),n.tasks=l}else n.tasks&&delete n.tasks;this.resetDatasetState(d),this._router.init({selected:Q,markers:Q,progressLine:!1,sCurve:!1,autoScale:!0,durationUnit:"day",inclusiveEnd:!1,highlightTime:null,focusTask:null,_sort:null,_resourceSort:null,conflicts:Q,...o,...n}),n.displayMode&&this.resyncLayout(),c&&!d&&this.getState()._isFiltered&&this.in.exec("filter-tasks",{open:!0})}isHistorySource(e){return e==="undo"||e==="redo"}isRemote(e){return e==="remote"}resetDatasetState(e,n,s){const a=this.getState();e&&(a._isFiltered&&(a.tree.filterTree(),this.setState({_isFiltered:!1,filterValues:{}})),a._sort&&this.setState({_sort:null}))}changed(e,...n){return n.some(s=>{const[a,o]=s.split(".");if(!(a in e))return!1;let r=this._prevConfig[a],i=e[a];return o&&(r=r?.[o],i=i?.[o]),r!==i&&!dt(r,i)})}prepareLayoutConfig(e,n,s,a){const o=s??nn({resources:e.resources,wbs:e.wbs});!a||this.changed(e,"displayMode")?e.displayMode=Lt(e.displayMode):n.displayMode?.includes("subGrid")?e.displayMode=Lt(n.displayMode):delete e.displayMode,a||(e.gridWidth??=Ft(o),e.subGridWidth??=0)}resyncLayout(){const{_containerWidth:e,_scrollSize:n}=this.getState();e!=null&&this.syncLayout(e,n)}syncLayout(e,n){const s=this.getState(),a=dr(s,{width:e,scrollSize:n}),o={_containerWidth:e};n!=null&&(o._scrollSize=n),a.compactMode!==s._compactMode&&(o._compactMode=a.compactMode),a.displayPanels&&(o._displayPanels=a.displayPanels),a.gridWidth!==s.gridWidth&&(o.gridWidth=a.gridWidth),a.subGridWidth!==s.subGridWidth&&(o.subGridWidth=a.subGridWidth),this.setState(o)}setState(e,n){return this._router.setState(e,n)}setStateAsync(e){this._router.setStateAsync(e)}editedRows(e,n){if(n)return"all";const s=new Set([e]),a=this.getState().tasks.getSummaryId(e,!0);return Array.isArray(a)?a.forEach(o=>s.add(o)):a!=null&&s.add(a),s}markGeometry(e){if(e==="all"){this._pendingGeometry="all";return}if(e==="meta"){this._pendingGeometry===null&&(this._pendingGeometry="meta");return}if(this._pendingGeometry!=="all")if(this._pendingGeometry instanceof Set)for(const n of e)this._pendingGeometry.add(n);else this._pendingGeometry=new Set(e)}getTask(e){const{tree:n}=this.getState();return n.byId(e)}getLinkValidator(){return()=>null}getResource(e){const{resources:n}=this.getState();return n?.byId(e)}getHistory(){return this.getState().undo?this._modules.get("historyManager"):null}getCalendar(e){const{_calendar:n,_calendars:s}=this.getState();return s?.get(e)??n??void 0}buildHighlightTime(){return(e,n)=>{const s=this.getCalendar();return s&&(n==="day"||n==="hour")&&!s.isWorkingDay(e)?"wx-weekend":""}}getTaskCalendar(e){const n=this.getState();if(!(!n._calendar&&!n._calendars?.size))return this.resolveTaskCalendar(e,n)}resolveTaskCalendar(e,n){const{_calendar:s,_calendars:a}=n;return(o=>a?.get(o)??s??void 0)(e?.calendar)}indexAssignments(e){return{byTask:{},byResource:{}}}resolveCalendars(e,n,s){}getResourceCalendar(e){return this.getCalendar(e?.calendar)}getGrouping(){return this.getState().groupBy?.field?this._modules.get("groupManager"):null}serialize(e){const n=e?.data||"tasks";if(n==="calendars"){const{_calendars:a}=this.getState();return[...a.entries()].map(([o,r])=>({...r?.serialize?.()||{},...r?.css?{css:r.css}:{},id:o}))}const s=this.getState()[n];if(s){if(s instanceof ne)return s.serialize();if(s instanceof kt)return s.map(a=>a)}return null}getTaskResources(e){const{_assignments:n,resources:s}=this.getState();if(!s||!n)return[];const a=n.byTask[e];return a?a.map(o=>{const r=s.byId(o.resource),i={...o};return delete i.resource,delete i.task,r?{...i,...r,assignmentId:o.id}:null}).filter(Boolean):[]}getResourceTasks(e){const{_assignments:n,tasks:s}=this.getState();if(!n)return[];const a=n.byResource[e];return a?a.map(o=>s.byId(o.task)||null).filter(Boolean):[]}changeScale(e,n){const s=e.level+n,a=e.levels[s];if(a){const{cellWidth:o,scales:r,_scales:i}=this.getState(),d=Da(e,n,s,a,i.lengthUnit,r,o);return d._cellWidth=d.cellWidth,this.setState(d),!0}return!1}shouldExpandScale(e){const{start:n,end:s,_chartWidth:a,_scales:o,cellWidth:r}=this.getState();return n&&s&&a&&o?.width&&r?o.width/r*e<a:!1}isScheduled(e){return this.getState().unscheduledTasks?e.some(n=>!n.unscheduled||n.data&&this.isScheduled(n.data)):!0}resetSummaryDates(e,n,s){if(this.deriveSummary(e,n,s)){const a=this.getState().tasks.getSummaryId(e);a&&this.resetSummaryDates(a,n,s)}}deriveSummary(e,n,s){const{tasks:a,durationUnit:o,splitTasks:r,unscheduledTasks:i,inactiveTasks:d,schedule:c}=this.getState(),l=a.byId(e),f=l.data;if(l.type!=="summary"||!f?.length)return!1;const h=at(l,{schedule:c})&&!!(l.start&&l.end),u=Ot({...l,start:void 0,end:void 0,duration:void 0},i,d),g=!h&&!!u.start&&this.isScheduled(f)&&(!F(l.start,u.start)||!F(l.end,u.end)),m=!!u.inactive!=!!l.inactive;return!g&&!m?!1:(g||(u.start=l.start,u.end=l.end,u.duration=l.duration),n?(s&&!s.has(e)&&s.set(e,{start:l.start,end:l.end,inactive:l.inactive}),this.in.exec("update-task",{id:e,task:u,eventSource:n,joinUndo:!0,skipUndo:!0,...s?{inProgress:!0,skipProvider:!0}:{}})):(j(u,{durationUnit:o,unscheduledTasks:i},this.getTaskCalendar(u)),a.update(e,u)),!0)}moveSummaryKids(e,n,s){const{unscheduledTasks:a,schedule:o}=this.getState();e.data.forEach(r=>{o?.auto&&r.manual||(a&&r.unscheduled||this.in.exec("update-task",{id:r.id,task:{start:n(r.start,r)},eventSource:s,joinUndo:!0,skipUndo:!0}),r.data?.length&&(this.moveSummaryKids(r,n,s),r.type==="summary"&&this.deriveSummary(r.id,s)))})}getPlaceholderRow(){return this._placeholderRow||(this._placeholderRow=ja()),this._placeholderRow}getNextRow(e){const n=this.getState()._tasks,s=n.findIndex(a=>a.id===e);return n[s+1]}getPrevRow(e){const n=this.getState()._tasks,s=n.findIndex(a=>a.id===e);return n[s-1]}scrollToTask(e,n){const{_chartWidth:s,_chartHeight:a,scrollLeft:o,scrollTop:r,cellWidth:i,cellHeight:d,_tasks:c,_scrollSize:l}=this.getState(),f=c.findIndex(p=>p.id===e||p.$id===e);if(f<0)return;const h=c[f],u=h.$placeholder?h:this.getTask(h.id),g={};if(n?.toString().indexOf("x")!==-1){if(u.$x+u.$w/2<o)g.left=Math.max(u.$x-(i||0),0);else if(u.$x+u.$w/2>=s+o){const p=s<u.$w?i:u.$w;g.left=u.$x-s+p}}const m=f*d;let y=null;m<r?y=m:a!=null&&m+d>r+a&&(y=m-a+d+l),y!==null&&(g.top=Math.max(y,0)),this.in.exec("scroll-chart",g)}}function Sr(t,e,n,s){if(typeof document>"u")return"";const a=document.createElement("canvas");{const o=xr(a,t,e,1,n);vr(o,s,0,t,0,e)}return a.toDataURL()}function xr(t,e,n,s,a){t.setAttribute("width",(e*s).toString()),t.setAttribute("height",(n*s).toString());const o=t.getContext("2d");return o.translate(-.5,-.5),o.strokeStyle=a,o}function vr(t,e,n,s,a,o){t.beginPath(),t.moveTo(s,a),t.lineTo(s,o),e==="full"&&t.lineTo(n,o),t.stroke()}const Rt=[{id:"task",label:"Task"},{id:"summary",label:"Summary task"},{id:"milestone",label:"Milestone"}];function qt(t){return!!t&&!t.$group&&typeof t.$groupValue<"u"}function kn(t){return!!t?.$group}function Mr(t){let e=bn.map(a=>({...a}));const n=t?.taskTypes||Rt,s=e.find(a=>a.id==="convert-task");return s.data=[],n.forEach(a=>{(!t?.summary?.autoConvert||a.id!=="summary")&&s.data.push(s.dataFactory(a))}),e}function Xt(t){return t.map(e=>{switch(e.data&&Xt(e.data),e.id){case"add-task:before":case"move-task:up":e.isDisabled=(n,s)=>Tr(n,s)||qt(n)||kn(n);break;case"move-task:down":e.isDisabled=(n,s)=>Dr(n,s)||qt(n)||kn(n);break;case"indent-task:add":e.isDisabled=(n,s)=>Ir(n,s)===n.parent;break;case"indent-task:remove":e.isDisabled=n=>Wr(n);break}return e})}function Wr(t){return t.parent===0}function Tr(t,e){const{_tasks:n}=e;return n[0]?.id===t.id}function Dr(t,e){const{_tasks:n}=e;return(n[n.length-1]?.$placeholder?n[n.length-2]:n[n.length-1])?.id===t.id}function Ir(t,e){const{_tasks:n}=e,s=n.findIndex(a=>a.id===t.id);return n[s-1]?.id??t.parent}function $r(t){return t&&typeof t=="object"}function Cr(t){return!t.selected||t.selected.length<2}const Pr=t=>e=>e.type===t||t==="summary"&&qt(e),bn=Xt([{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:t=>({id:`convert-task:${t.id}`,text:`${t.label}`,isDisabled:Pr(t.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:(t,e,n)=>Cr(e)&&$r(n)}]);function Er(t){return[..._n]}const _n=Xt([{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 wn(t){return t.type==="summary"}function Qt(t,e){return wn(t)&&!at(t,e)}function Vt(t){return t.type==="milestone"}function mt(t){return typeof t.parent>"u"}function Sn(t,e){return e.unscheduledTasks&&t.unscheduled}function Or(t){const e=xn.map(s=>({...s})),n=e.find(s=>s.key==="type");return n.options=t?.taskTypes||Rt,e}const xn=[{key:"text",comp:"text",label:"Name",config:{placeholder:"Add task name"}},{key:"details",comp:"textarea",label:"Description",config:{placeholder:"Add description"}},{key:"type",comp:"select",label:"Type",isHidden:t=>mt(t)},{key:"start",comp:"date",label:"Start date",config:{format:"%d-%m-%Y"},isHidden:(t,e)=>Qt(t,e)},{key:"end",comp:"date",label:"End date",config:{format:"%d-%m-%Y"},isHidden:(t,e)=>Qt(t,e)||Vt(t),isDisabled:(t,e)=>Sn(t,e)},{key:"duration",comp:"counter",label:"Duration",config:{min:1},isHidden:(t,e)=>Qt(t,e)||Vt(t),isDisabled:(t,e)=>Sn(t,e)},{key:"progress",comp:"slider",label:"Progress",config:{min:1,max:100},isHidden:t=>Vt(t)||mt(t)},{key:"links",comp:"links",label:"",batch:"links",isHidden:t=>mt(t)}];function Jt(t,e){return!t||!Array.isArray(t)?t:t.filter(e).map(n=>n.items&&Array.isArray(n.items)?{...n,items:Jt(n.items,e)}:{...n})}const Gr=[{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 Ar(t){let e=Gr.map(s=>({...s}));t?.autoSave!==!1&&(e=Jt(e,s=>s.id!=="save"));const n=e.find(s=>s.id==="tabs");return n?.options&&(n.options=[...n.options]),t?.resources&&n?.options.push({id:"resources",label:"Resources",isHidden:s=>wn(s)||mt(s)}),t?.splitTasks&&n?.options.push({id:"segments",label:"Segments",isHidden:s=>!s.segments?.length}),e}function Hr(t,e){return 0}function zr(t,e){return null}const Fr=[{id:"snet",label:"Start no earlier than"},{id:"snlt",label:"Start no later than"},{id:"fnet",label:"Finish no earlier than"},{id:"fnlt",label:"Finish no later than"},{id:"mso",label:"Must start on"},{id:"mfo",label:"Must finish on"}];function Br(t,e){return[]}function Lr(t,e,n){return""}function Nr(t,e,n){return[]}function Yr(t,e,n){return[]}function Ur(t,e){return null}function jr(t){return null}export{wr as DataStore,Ht as PLACEHOLDER_ROW_ID,Ca as calcScaleCellDate,un as calculateArea,jr as createCalendar,en as defaultColumns,Fr as defaultConstraintTypes,xn as defaultEditorItems,bn as defaultMenuOptions,Rt as defaultTaskTypes,_n as defaultToolbarButtons,Aa as extendDragOptions,Jt as filterEditorButtons,De as format,Ae as formatDay,Qa as fromInclusiveTask,I as getAdder,Je as getDateEditorButtons,nn as getDefaultColumns,Ft as getDefaultGridWidth,ft as getDiffer,Ar as getEditorButtons,Or as getEditorItems,Ke as getHeaderLength,Br as getHistogramBars,Lr as getHistogramCapacityPath,Mr as getMenuOptions,Ua as getPlaceholderTask,er as getResourceColumns,Yr as getResourceHistogramColumns,Nr as getResourceLoadColumns,Hr as getSegmentProgress,Er as getToolbarButtons,$ as getUnitStart,Sr as grid,ot as handleAction,ln as isHandledAction,U as isPlaceholder,Ga as isSegmentMoveAllowed,At as normalizeLinks,nr as normalizeResourceColumns,Ta as normalizeZoom,Ya as placeLink,kr as prepareEditTask,xa as registerScaleUnit,Ur as resolveResourceHistogramBar,zr as resolveSCurvePoint,Ha as setTaskResources,qa as toInclusiveTask,ar as toggleChartSubGrid,sr as toggleGridChart};
|
|
1
|
+
var ee=new Date().valueOf(),Tn=()=>ee++;function ne(){return"temp://"+ee++}function $n(t,e){if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const n in e){const s=t[n],a=e[n];if(!ct(s,a))return!1}return!0}function ct(t,e){if(typeof t=="number"||typeof t=="string"||typeof t=="boolean"||t===null)return t===e;if(typeof t!=typeof e||(t===null||e===null)&&t!==e||t instanceof Date&&e instanceof Date&&t.getTime()!==e.getTime())return!1;if(typeof t=="object")if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let n=t.length-1;n>=0;n--)if(!ct(t[n],e[n]))return!1;return!0}else return $n(t,e);return t===e}var _t=class{constructor(t){this._data=t,this._pool=new Map;for(let e=0;e<t.length;e++){const n=t[e];this._pool.set(n.id,n)}}add(t){t={id:Tn(),...t},this._data.push(t),this._pool.set(t.id,t)}update(t,e){const n=this._data.findIndex(a=>a.id==t),s={...this._data[n],...e};this._data[n]=s,this._pool.set(s.id,s)}remove(t){this._data=this._data.filter(e=>e.id!=t),this._pool.delete(t)}filter(t){this._data=this._data.filter(e=>{const n=t(e);return n||this._pool.delete(e.id),n})}byId(t){return this._pool.get(t)}map(t){return this._data.map(t)}forEach(t){this._data.forEach(t)}},se=class{constructor(t){const e={id:0,$level:0,data:[],parent:null},n=new Map;n.set(0,e),this._pool=n,t&&t.length&&this.parse(t,0)}parse(t,e){const n=this._pool;for(let a=0;a<t.length;a++){const o=t[a];o.parent=o.parent||e,o.data=null,n.set(o.id,o)}for(let a=0;a<t.length;a++){const o=t[a],r=n.get(o.parent);r&&(r.data||(r.data=[]),r.data.push(o))}const s=n.get(e);this.setLevel(s,s.$level+1,!1)}add(t,e){const n=this._pool.get(t.parent||0);t.$level=n.$level+1,this._pool.set(t.id,t),n.data?e===-1?n.data=[...n.data,t]:re(n,e,t):n.data=[t]}addAfter(t,e){if(!e)return this.add(t,-1);const n=this.byId(e),s=this.byId(n.parent),a=lt(s,n.id)+1;t.parent=s.id,t.$level=s.$level+1,this.add(t,a)}remove(t){const e=this._pool.get(t);this._remove(e);const n=this._pool.get(e.parent);n.data=n.data.filter(s=>s.id!=t),this._clearBranch(n)}_remove(t){t.data&&t.data.forEach(e=>this._remove(e)),this._pool.delete(t.id)}update(t,e){let n=this._pool.get(t);const s=this._pool.get(n.parent),a=lt(s,n.id);n={...n,...e},s&&a>=0&&(s.data[a]=n,s.data=[...s.data]),this._pool.set(n.id,n)}move(t,e,n){const s=this._pool.get(t),a=e==="child",o=this._pool.get(n),r=o.$level+(a?1:0);if(!s||!o)return;const i=this._pool.get(s.parent),d=a?o:this._pool.get(o.parent);d.data||(d.data=[]);const c=lt(i,s.id);In(i,c);const l=a?d.data.length:lt(d,o.id)+(e==="after"?1:0);if(re(d,l,s),i.id===d.id&&c===l)return null;s.parent=d.id,s.$level!==r&&(s.$level=r,this.setLevel(s,r+1,!0)),this.update(s.id,s),this._clearBranch(i)}_clearBranch(t){t.data&&!t.data.length&&(t.open&&delete t.open,this.update(t.id,{data:null}))}toArray(){return this._flatten(!1)}serialize(){return this._flatten(!0)}_flatten(t){const e=[],n=this._pool.get(0).data;return n&&ae(n,e,t),e}byId(t){return this._pool.get(t)}getBranch(t){return this._pool.get(t).data}forEach(t){this._pool.forEach((e,n)=>{n!==0&&t(e)})}eachChild(t,e){const n=this.byId(e);!n||!n.data||n.data.forEach((s,a)=>{t(this.byId(s.id),a),this.eachChild(t,s.id)})}setLevel(t,e,n){t.data&&(t.data=t.data.map(s=>(n&&(s={...s},this._pool.set(s.id,s)),s.$level=e,s.data&&this.setLevel(s,e+1,n),s)))}};function ae(t,e,n){t.forEach(s=>{e.push(s),s.data&&(n||s.open)&&ae(s.data,e,n)})}function In(t,e){const n=[...t.data];n.splice(e,1),t.data=n}function re(t,e,n){const s=[...t.data];s.splice(e,0,n),t.data=s}function lt(t,e){return t?.data.findIndex(n=>n.id===e)}var ie=2,Dn=class{constructor(t){t&&(this._writable=t.writable,this._async=t.async),this._values={},this._state={}}setState(t,e=0){const n={};return this._wrapProperties(t,this._state,this._values,"",n,e),n}getState(){return this._values}getReactive(){return this._state}_wrapProperties(t,e,n,s,a,o){for(const r in t){const i=e[r],d=n[r],c=t[r];if(i&&(d===c&&typeof c!="object"||c instanceof Date&&d instanceof Date&&d.getTime()===c.getTime()))continue;const l=s+(s?".":"")+r;i?(i.__parse(c,l,a,o)&&(n[r]=c),o&ie?a[l]=i.__trigger:i.__trigger()):(c&&c.__reactive?e[r]=this._wrapNested(c,c,l,a):e[r]=this._wrapWritable(c),n[r]=c),a[l]=a[l]||null}}_wrapNested(t,e,n,s){const a=this._wrapWritable(t);return this._wrapProperties(t,a,e,n,s,0),a.__parse=(o,r,i,d)=>(this._wrapProperties(o,a,e,r,i,d),!1),a}_wrapWritable(t){const e=[],n=function(){for(let s=0;s<e.length;s++)e[s](t)};return{subscribe:s=>(e.push(s),this._async?setTimeout(s,1,t):s(t),()=>{const a=e.indexOf(s);a>=0&&e.splice(a,1)}),__trigger:()=>{e.length&&(this._async?setTimeout(n,1):n())},__parse:function(s){return t=s,!0}}}},Cn=class{constructor(t,e,n,s){typeof t=="function"?this._setter=t:this._setter=t.setState.bind(t),this._routes=e,this._parsers=n,this._prev={},this._triggers=new Map,this._sources=new Map,this._routes.forEach(a=>{a.in.forEach(o=>{const r=this._triggers.get(o)||[];r.push(a),this._triggers.set(o,r)}),a.out.forEach(o=>{const r=this._sources.get(o)||{};a.in.forEach(i=>r[i]=!0),this._sources.set(o,r)})}),this._routes.forEach(a=>{a.length=Math.max(...a.in.map(o=>oe(o,this._sources,1)))}),this._bus=s}init(t){const e={};for(const n in t)if(this._prev[n]!==t[n]){const s=this._parsers[n];e[n]=s?s(t[n]):t[n]}this._prev=this._prev?{...this._prev,...t}:{...t},this.setState(e),this._bus&&this._bus.exec("init-state",e)}setStateAsync(t){const e=this._setter(t,ie);return this._async?Object.assign(this._async.signals,e):this._async={signals:e,timer:setTimeout(this._applyState.bind(this),1)},e}_applyState(){const t=this._async;if(t){this._async=null,this._triggerUpdates(t.signals,[]);for(const e in t.signals){const n=t.signals[e];n&&n()}}}setState(t,e=[]){const n=this._setter(t);return this._triggerUpdates(n,e),n}_triggerUpdates(t,e){const n=Object.keys(t),s=!e.length;e=e||[];for(let a=0;a<n.length;a++){const o=n[a],r=this._triggers.get(o);r&&r.forEach(i=>{e.indexOf(i)==-1&&e.push(i)})}s&&this._execNext(e)}_execNext(t){for(;t.length;){t.sort((n,s)=>n.length<s.length?1:-1);const e=t[t.length-1];t.splice(t.length-1),e.exec(t)}}};function oe(t,e,n){const s=e.get(t);if(!s)return n;const a=Object.keys(s).map(o=>oe(o,e,n+1));return Math.max(...a)}var Pn=class{constructor(){this._nextHandler=null,this._handlers={},this._tag=new WeakMap,this.exec=this.exec.bind(this)}on(t,e,n){let s=this._handlers[t];s?n&&n.intercept?s.unshift(e):s.push(e):s=this._handlers[t]=[e],n&&n.tag&&this._tag.set(e,n.tag)}intercept(t,e,n){this.on(t,e,{...n,intercept:!0})}detach(t){for(const e in this._handlers){const n=this._handlers[e];for(let s=n.length-1;s>=0;s--)this._tag.get(n[s])===t&&n.splice(s,1)}}async exec(t,e){const n=this._handlers[t];if(n)for(let s=0;s<n.length;s++){const a=n[s](e);if(a===!1||a&&a.then&&await a===!1)return}return this._nextHandler&&await this._nextHandler.exec(t,e),e}setNext(t){return this._nextHandler=t}};new Date().valueOf();function En(t){return e=>e[t]}function bt(t,e){return(e.getter||En(e.id))(t)}const On={text:(t,e)=>t?t.toString().toLowerCase().indexOf(e.toLowerCase())!==-1:!e,richselect:(t,e)=>typeof e!="number"&&!e?!0:t==e,datepicker:(t,e)=>e?t&&Hn(t,e):!0,multiselect:(t,e)=>!e||e?.length===0?!0:Array.isArray(t)?t?.some(n=>e.includes(n)):t&&e.includes(t)};function An(t){return On[t]}function Gn(t,e){const n=[];for(const s in t){const a=e.find(d=>d.id==s),{config:o,type:r}=a.header.find(d=>d.filter).filter,i=t[s];n.push(d=>{const c=bt(d,a);return o?.handler?o.handler(c,i):An(r)(c,i)})}return s=>{for(let a=0;a<n.length;a++)if(!n[a](s))return!1;return!0}}function Hn(t,e){return t.getFullYear()===e.getFullYear()&&t.getMonth()===e.getMonth()&&t.getDate()===e.getDate()}new Date().valueOf(),new Date().valueOf();function zn(t,e){return typeof t=="string"?t.localeCompare(e,void 0,{numeric:!0}):t instanceof Date||e instanceof Date?t?e?t.getTime()-e.getTime():-1:1:(t??0)-(e??0)}function Fn(t,e){return typeof t=="string"?-t.localeCompare(e,void 0,{numeric:!0}):t instanceof Date||e instanceof Date?e?t?e.getTime()-t.getTime():-1:1:(e??0)-(t??0)}function Ln({order:t,key:e},n){if(typeof n?.sort=="function")return function(a,o){const r=n.sort(a,o);return t==="asc"?r:-r};const s=t==="asc"?zn:Fn;return(a,o)=>s(n?bt(a,n):a[e],n?bt(o,n):o[e])}function Bn(t,e){if(!t||!t.length)return;const n=t.map(s=>{const a=e.find(o=>o.id==s.key);return Ln(s,a)});return t.length===1?n[0]:function(s,a){for(let o=0;o<n.length;o++){const r=n[o](s,a);if(r!==0)return r}return 0}}function Nn(t,e,n){return t.sort(Bn(e,n))}function de(t,e,n,s){const a=t.id===0||e(t);let o=!1;if(Array.isArray(t.data)){for(const r of t.data)de(r,e,n,s)&&(o=!0);o?(delete t.$empty,s&&(t.open=!0)):t.$empty=!0}return(a||o)&&t.id!==0?(n.add(t.id),!0):!1}function ce(t,e,n){t.has(e)&&t.delete(e),n?.length&&n.forEach(s=>ce(t,s.id,s.data))}function le(t){t.id!==0&&delete t.$empty,Array.isArray(t.data)&&t.data.forEach(e=>le(e))}const ue=new WeakMap;class Yn extends se{_filteredIds;constructor(e){super(),this.parse(e,0)}parse(e,n){if(!e||!e.length)return;const s=e.map(a=>this.normalizeTask(a));super.parse(s,n)}getBranch(e){const n=this._pool.get(e);return this._pool.get(n.parent||0).data}contains(e,n){const s=this._pool.get(e).data;let a=!1;if(s)for(let o=0;o<s.length;o++){if(s[o].id===n){a=!0;break}if(s[o].data&&(a=this.contains(s[o].id,n),a))break}return a}getIndexById(e){return this._indexOf(this.getBranch(e),e)}update(e,n){let s=this._pool.get(e);const a=this._pool.get(s.parent)?.data,o=a?this._indexOf(a,e):-1;s={...s,...n},o>=0&&(a[o]=s),this._pool.set(s.id,s)}_indexOf(e,n){let s=ue.get(e);if(s&&s.size===e.length){const o=s.get(n);if(o!==void 0&&e[o].id===n)return o}s=new Map;for(let o=0;o<e.length;o++)s.set(e[o].id,o);ue.set(e,s);const a=s.get(n);return a===void 0?-1:a}add(e,n){const s=this.normalizeTask(e);if(super.add(s,n),this._filteredIds&&this._filteredIds.add(s.id),this._filteredIds&&e.parent){const a=this.byId(e.parent);this.hasChildItems(a)&&delete a.$empty}return s}copy(e,n,s){const a=this.add({...e,id:null,data:null,parent:n},s);let o=[[e.id,a.id]];return e.data?.forEach((r,i)=>{const d=this.copy(r,a.id,i);o=o.concat(d)}),o}remove(e){const n=this.byId(e);if(this._filteredIds&&ce(this._filteredIds,e,n.data),super.remove(e),this._filteredIds&&n.parent){const s=this.byId(n.parent);this.hasChildItems(s)||(s.$empty=!0)}}normalizeTask(e){const n=e.id||ne(),s=e.parent||0,a=e.text??"",o=e.type||"task",r=e.progress||0,i=e.details||"",d={...e,id:n,text:a,parent:s,progress:r,type:o,details:i};return e.segments&&(d.segments=e.segments.map(c=>({...c}))),d}getSummaryId(e,n=!1){const s=this._pool.get(e);if(!s.parent)return null;const a=this._pool.get(s.parent);if(n){let o=e,r=this.getSummaryId(o);const i=[];for(;r;)o=r,i.push(r),r=this.getSummaryId(o);return i}return a.type==="summary"?a.id:this.getSummaryId(a.id)}sort(e,n){e&&this.sortBranch(e,0,n)}sortBranch(e,n,s){const a=this._pool.get(n||0).data;a&&(Nn(a,e,s),a.forEach(o=>{this.sortBranch(e,o.id,s)}))}clear(){this.forEach(e=>{this.remove(e.id)})}filterTree(e,n){if(e){const s=this._pool.get(0),a=new Set;de(s,e,a,n),this._filteredIds=a}else{const s=this._pool.get(0);le(s),this._filteredIds=null}}toArray(e){let n=super.toArray();return!e&&this._filteredIds&&(n=n.filter(s=>this.isFilteredId(s.id))),n}isFilteredId(e){return this._filteredIds?.has(e)}hasChildItems(e){const n=e.data?.length;return n&&this._filteredIds?e.data.some(s=>this.isFilteredId(s.id)):!!n}}const Un=["add-task","update-task","delete-task","copy-task","move-task","indent-task","split-task","schedule-tasks","add-link","update-link","delete-link","add-assignment","update-assignment","delete-assignment","provide-data","import-data"];function jn(t){return!!t&&Un.includes(t)}function he(t){return t==="remote"}function J(t){return he(t)||t==="undo"||t==="redo"}function v(t){const e=Object.prototype.toString.call(t);return t instanceof Date||typeof t=="object"&&e==="[object Date]"?new t.constructor(+t):typeof t=="number"||e==="[object Number]"||typeof t=="string"||e==="[object String]"?new Date(t):new Date(NaN)}function C(t,e){return t instanceof Date?new t.constructor(e):new Date(e)}function E(t,e){const n=v(t);return isNaN(e)?C(t,NaN):(e&&n.setDate(n.getDate()+e),n)}function wt(t,e){const n=v(t);if(isNaN(e))return C(t,NaN);if(!e)return n;const s=n.getDate(),a=C(t,n.getTime());a.setMonth(n.getMonth()+e+1,0);const o=a.getDate();return s>=o?a:(n.setFullYear(a.getFullYear(),a.getMonth(),s),n)}function fe(t,e){const n=+v(t);return C(t,n+e)}const ut=6048e5,qn=864e5,ge=6e4,me=36e5;function Rn(t,e){return fe(t,e*me)}let Xn={};function K(){return Xn}function H(t,e){const n=K(),s=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=v(t),o=a.getDay(),r=(o<s?7:0)+o-s;return a.setDate(a.getDate()-r),a.setHours(0,0,0,0),a}function R(t){return H(t,{weekStartsOn:1})}function pe(t){const e=v(t),n=e.getFullYear(),s=C(t,0);s.setFullYear(n+1,0,4),s.setHours(0,0,0,0);const a=R(s),o=C(t,0);o.setFullYear(n,0,4),o.setHours(0,0,0,0);const r=R(o);return e.getTime()>=a.getTime()?n+1:e.getTime()>=r.getTime()?n:n-1}function B(t){const e=v(t);return e.setHours(0,0,0,0),e}function ht(t){const e=v(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function St(t,e){const n=B(t),s=B(e),a=+n-ht(n),o=+s-ht(s);return Math.round((a-o)/qn)}function vt(t){const e=pe(t),n=C(t,0);return n.setFullYear(e,0,4),n.setHours(0,0,0,0),R(n)}function Qn(t,e){return fe(t,e*ge)}function Vn(t,e){const n=e*3;return wt(t,n)}function ye(t,e){const n=e*7;return E(t,n)}function Jn(t,e){return wt(t,e*12)}function Z(t,e){const n=v(t),s=v(e),a=n.getTime()-s.getTime();return a<0?-1:a>0?1:a}function ke(t,e){const n=B(t),s=B(e);return+n==+s}function Kn(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function Zn(t){if(!Kn(t)&&typeof t!="number")return!1;const e=v(t);return!isNaN(Number(e))}function xt(t,e){const n=R(t),s=R(e),a=+n-ht(n),o=+s-ht(s);return Math.round((a-o)/ut)}function ts(t,e){const n=v(t),s=v(e),a=n.getFullYear()-s.getFullYear(),o=n.getMonth()-s.getMonth();return a*12+o}function es(t,e){const n=v(t),s=v(e);return n.getFullYear()-s.getFullYear()}function Mt(t){return e=>{const n=(t?Math[t]:Math.trunc)(e);return n===0?0:n}}function _e(t,e){return+v(t)-+v(e)}function ns(t,e,n){const s=_e(t,e)/me;return Mt(n?.roundingMethod)(s)}function ss(t,e,n){const s=_e(t,e)/ge;return Mt(n?.roundingMethod)(s)}function be(t){const e=v(t);return e.setHours(23,59,59,999),e}function Wt(t){const e=v(t),n=e.getMonth();return e.setFullYear(e.getFullYear(),n+1,0),e.setHours(23,59,59,999),e}function as(t){const e=v(t);return+be(e)==+Wt(e)}function we(t,e){const n=v(t),s=v(e),a=Z(n,s),o=Math.abs(ts(n,s));let r;if(o<1)r=0;else{n.getMonth()===1&&n.getDate()>27&&n.setDate(30),n.setMonth(n.getMonth()-a*o);let i=Z(n,s)===-a;as(v(t))&&o===1&&Z(t,s)===1&&(i=!1),r=a*(o-Number(i))}return r===0?0:r}function rs(t,e,n){const s=we(t,e)/3;return Mt(n?.roundingMethod)(s)}function is(t,e){const n=v(t),s=v(e),a=Z(n,s),o=Math.abs(es(n,s));n.setFullYear(1584),s.setFullYear(1584);const r=Z(n,s)===-a,i=a*(o-+r);return i===0?0:i}function tt(t){const e=v(t),n=e.getMonth(),s=n-n%3;return e.setMonth(s,1),e.setHours(0,0,0,0),e}function Se(t){const e=v(t);return e.setDate(1),e.setHours(0,0,0,0),e}function os(t){const e=v(t),n=e.getFullYear();return e.setFullYear(n+1,0,0),e.setHours(23,59,59,999),e}function ve(t){const e=v(t),n=C(t,0);return n.setFullYear(e.getFullYear(),0,1),n.setHours(0,0,0,0),n}function ds(t){const e=v(t);return e.setMinutes(59,59,999),e}function cs(t,e){const n=K(),s=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,a=v(t),o=a.getDay(),r=(o<s?-7:0)+6-(o-s);return a.setDate(a.getDate()+r),a.setHours(23,59,59,999),a}function Tt(t){const e=v(t),n=e.getMonth(),s=n-n%3+3;return e.setMonth(s,0),e.setHours(23,59,59,999),e}const ls={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"}},us=(t,e,n)=>{let s;const a=ls[t];return typeof a=="string"?s=a:e===1?s=a.one:s=a.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+s:s+" ago":s};function $t(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const hs={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},fs={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},gs={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},ms={date:$t({formats:hs,defaultWidth:"full"}),time:$t({formats:fs,defaultWidth:"full"}),dateTime:$t({formats:gs,defaultWidth:"full"})},ps={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},ys=(t,e,n,s)=>ps[t];function et(t){return(e,n)=>{const s=n?.context?String(n.context):"standalone";let a;if(s==="formatting"&&t.formattingValues){const r=t.defaultFormattingWidth||t.defaultWidth,i=n?.width?String(n.width):r;a=t.formattingValues[i]||t.formattingValues[r]}else{const r=t.defaultWidth,i=n?.width?String(n.width):t.defaultWidth;a=t.values[i]||t.values[r]}const o=t.argumentCallback?t.argumentCallback(e):e;return a[o]}}const ks={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},_s={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},bs={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"]},ws={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"]},Ss={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"}},vs={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"}},xs=(t,e)=>{const n=Number(t),s=n%100;if(s>20||s<10)switch(s%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},Ms={ordinalNumber:xs,era:et({values:ks,defaultWidth:"wide"}),quarter:et({values:_s,defaultWidth:"wide",argumentCallback:t=>t-1}),month:et({values:bs,defaultWidth:"wide"}),day:et({values:ws,defaultWidth:"wide"}),dayPeriod:et({values:Ss,defaultWidth:"wide",formattingValues:vs,defaultFormattingWidth:"wide"})};function nt(t){return(e,n={})=>{const s=n.width,a=s&&t.matchPatterns[s]||t.matchPatterns[t.defaultMatchWidth],o=e.match(a);if(!o)return null;const r=o[0],i=s&&t.parsePatterns[s]||t.parsePatterns[t.defaultParseWidth],d=Array.isArray(i)?Ts(i,h=>h.test(r)):Ws(i,h=>h.test(r));let c;c=t.valueCallback?t.valueCallback(d):d,c=n.valueCallback?n.valueCallback(c):c;const l=e.slice(r.length);return{value:c,rest:l}}}function Ws(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function Ts(t,e){for(let n=0;n<t.length;n++)if(e(t[n]))return n}function $s(t){return(e,n={})=>{const s=e.match(t.matchPattern);if(!s)return null;const a=s[0],o=e.match(t.parsePattern);if(!o)return null;let r=t.valueCallback?t.valueCallback(o[0]):o[0];r=n.valueCallback?n.valueCallback(r):r;const i=e.slice(a.length);return{value:r,rest:i}}}const Is=/^(\d+)(th|st|nd|rd)?/i,Ds=/\d+/i,Cs={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},Ps={any:[/^b/i,/^(a|c)/i]},Es={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Os={any:[/1/i,/2/i,/3/i,/4/i]},As={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},Gs={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]},Hs={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},zs={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]},Fs={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},Ls={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}},Bs={ordinalNumber:$s({matchPattern:Is,parsePattern:Ds,valueCallback:t=>parseInt(t,10)}),era:nt({matchPatterns:Cs,defaultMatchWidth:"wide",parsePatterns:Ps,defaultParseWidth:"any"}),quarter:nt({matchPatterns:Es,defaultMatchWidth:"wide",parsePatterns:Os,defaultParseWidth:"any",valueCallback:t=>t+1}),month:nt({matchPatterns:As,defaultMatchWidth:"wide",parsePatterns:Gs,defaultParseWidth:"any"}),day:nt({matchPatterns:Hs,defaultMatchWidth:"wide",parsePatterns:zs,defaultParseWidth:"any"}),dayPeriod:nt({matchPatterns:Fs,defaultMatchWidth:"any",parsePatterns:Ls,defaultParseWidth:"any"})},Ns={code:"en-US",formatDistance:us,formatLong:ms,formatRelative:ys,localize:Ms,match:Bs,options:{weekStartsOn:0,firstWeekContainsDate:1}};function Ys(t){const e=v(t);return St(e,ve(e))+1}function Us(t){const e=v(t),n=+R(e)-+vt(e);return Math.round(n/ut)+1}function xe(t,e){const n=v(t),s=n.getFullYear(),a=K(),o=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,r=C(t,0);r.setFullYear(s+1,0,o),r.setHours(0,0,0,0);const i=H(r,e),d=C(t,0);d.setFullYear(s,0,o),d.setHours(0,0,0,0);const c=H(d,e);return n.getTime()>=i.getTime()?s+1:n.getTime()>=c.getTime()?s:s-1}function js(t,e){const n=K(),s=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,a=xe(t,e),o=C(t,0);return o.setFullYear(a,0,s),o.setHours(0,0,0,0),H(o,e)}function qs(t,e){const n=v(t),s=+H(n,e)-+js(n,e);return Math.round(s/ut)+1}function M(t,e){const n=t<0?"-":"",s=Math.abs(t).toString().padStart(e,"0");return n+s}const z={y(t,e){const n=t.getFullYear(),s=n>0?n:1-n;return M(e==="yy"?s%100:s,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):M(n+1,2)},d(t,e){return M(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return M(t.getHours()%12||12,e.length)},H(t,e){return M(t.getHours(),e.length)},m(t,e){return M(t.getMinutes(),e.length)},s(t,e){return M(t.getSeconds(),e.length)},S(t,e){const n=e.length,s=t.getMilliseconds(),a=Math.trunc(s*Math.pow(10,n-3));return M(a,e.length)}},X={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Me={G:function(t,e,n){const s=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(s,{width:"abbreviated"});case"GGGGG":return n.era(s,{width:"narrow"});case"GGGG":default:return n.era(s,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const s=t.getFullYear(),a=s>0?s:1-s;return n.ordinalNumber(a,{unit:"year"})}return z.y(t,e)},Y:function(t,e,n,s){const a=xe(t,s),o=a>0?a:1-a;if(e==="YY"){const r=o%100;return M(r,2)}return e==="Yo"?n.ordinalNumber(o,{unit:"year"}):M(o,e.length)},R:function(t,e){const n=pe(t);return M(n,e.length)},u:function(t,e){const n=t.getFullYear();return M(n,e.length)},Q:function(t,e,n){const s=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(s);case"QQ":return M(s,2);case"Qo":return n.ordinalNumber(s,{unit:"quarter"});case"QQQ":return n.quarter(s,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(s,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(s,{width:"wide",context:"formatting"})}},q:function(t,e,n){const s=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(s);case"qq":return M(s,2);case"qo":return n.ordinalNumber(s,{unit:"quarter"});case"qqq":return n.quarter(s,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(s,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(s,{width:"wide",context:"standalone"})}},M:function(t,e,n){const s=t.getMonth();switch(e){case"M":case"MM":return z.M(t,e);case"Mo":return n.ordinalNumber(s+1,{unit:"month"});case"MMM":return n.month(s,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(s,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(s,{width:"wide",context:"formatting"})}},L:function(t,e,n){const s=t.getMonth();switch(e){case"L":return String(s+1);case"LL":return M(s+1,2);case"Lo":return n.ordinalNumber(s+1,{unit:"month"});case"LLL":return n.month(s,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(s,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(s,{width:"wide",context:"standalone"})}},w:function(t,e,n,s){const a=qs(t,s);return e==="wo"?n.ordinalNumber(a,{unit:"week"}):M(a,e.length)},I:function(t,e,n){const s=Us(t);return e==="Io"?n.ordinalNumber(s,{unit:"week"}):M(s,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):z.d(t,e)},D:function(t,e,n){const s=Ys(t);return e==="Do"?n.ordinalNumber(s,{unit:"dayOfYear"}):M(s,e.length)},E:function(t,e,n){const s=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(s,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(s,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(s,{width:"short",context:"formatting"});case"EEEE":default:return n.day(s,{width:"wide",context:"formatting"})}},e:function(t,e,n,s){const a=t.getDay(),o=(a-s.weekStartsOn+8)%7||7;switch(e){case"e":return String(o);case"ee":return M(o,2);case"eo":return n.ordinalNumber(o,{unit:"day"});case"eee":return n.day(a,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(a,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(a,{width:"short",context:"formatting"});case"eeee":default:return n.day(a,{width:"wide",context:"formatting"})}},c:function(t,e,n,s){const a=t.getDay(),o=(a-s.weekStartsOn+8)%7||7;switch(e){case"c":return String(o);case"cc":return M(o,e.length);case"co":return n.ordinalNumber(o,{unit:"day"});case"ccc":return n.day(a,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(a,{width:"narrow",context:"standalone"});case"cccccc":return n.day(a,{width:"short",context:"standalone"});case"cccc":default:return n.day(a,{width:"wide",context:"standalone"})}},i:function(t,e,n){const s=t.getDay(),a=s===0?7:s;switch(e){case"i":return String(a);case"ii":return M(a,e.length);case"io":return n.ordinalNumber(a,{unit:"day"});case"iii":return n.day(s,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(s,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(s,{width:"short",context:"formatting"});case"iiii":default:return n.day(s,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const s=t.getHours();let a;switch(s===12?a=X.noon:s===0?a=X.midnight:a=s/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(t,e,n){const s=t.getHours();let a;switch(s>=17?a=X.evening:s>=12?a=X.afternoon:s>=4?a=X.morning:a=X.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let s=t.getHours()%12;return s===0&&(s=12),n.ordinalNumber(s,{unit:"hour"})}return z.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):z.H(t,e)},K:function(t,e,n){const s=t.getHours()%12;return e==="Ko"?n.ordinalNumber(s,{unit:"hour"}):M(s,e.length)},k:function(t,e,n){let s=t.getHours();return s===0&&(s=24),e==="ko"?n.ordinalNumber(s,{unit:"hour"}):M(s,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):z.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):z.s(t,e)},S:function(t,e){return z.S(t,e)},X:function(t,e,n){const s=t.getTimezoneOffset();if(s===0)return"Z";switch(e){case"X":return Te(s);case"XXXX":case"XX":return N(s);case"XXXXX":case"XXX":default:return N(s,":")}},x:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"x":return Te(s);case"xxxx":case"xx":return N(s);case"xxxxx":case"xxx":default:return N(s,":")}},O:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+We(s,":");case"OOOO":default:return"GMT"+N(s,":")}},z:function(t,e,n){const s=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+We(s,":");case"zzzz":default:return"GMT"+N(s,":")}},t:function(t,e,n){const s=Math.trunc(t.getTime()/1e3);return M(s,e.length)},T:function(t,e,n){const s=t.getTime();return M(s,e.length)}};function We(t,e=""){const n=t>0?"-":"+",s=Math.abs(t),a=Math.trunc(s/60),o=s%60;return o===0?n+String(a):n+String(a)+e+M(o,2)}function Te(t,e){return t%60===0?(t>0?"-":"+")+M(Math.abs(t)/60,2):N(t,e)}function N(t,e=""){const n=t>0?"-":"+",s=Math.abs(t),a=M(Math.trunc(s/60),2),o=M(s%60,2);return n+a+e+o}const $e=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},Ie=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},Rs=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],s=n[1],a=n[2];if(!a)return $e(t,e);let o;switch(s){case"P":o=e.dateTime({width:"short"});break;case"PP":o=e.dateTime({width:"medium"});break;case"PPP":o=e.dateTime({width:"long"});break;case"PPPP":default:o=e.dateTime({width:"full"});break}return o.replace("{{date}}",$e(s,e)).replace("{{time}}",Ie(a,e))},Xs={p:Ie,P:Rs},Qs=/^D+$/,Vs=/^Y+$/,Js=["D","DD","YY","YYYY"];function Ks(t){return Qs.test(t)}function Zs(t){return Vs.test(t)}function ta(t,e,n){const s=ea(t,e,n);if(console.warn(s),Js.includes(t))throw new RangeError(s)}function ea(t,e,n){const s=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${s} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const na=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,sa=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,aa=/^'([^]*?)'?$/,ra=/''/g,ia=/[a-zA-Z]/;function De(t,e,n){const s=K(),a=n?.locale??s.locale??Ns,o=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,r=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??s.weekStartsOn??s.locale?.options?.weekStartsOn??0,i=v(t);if(!Zn(i))throw new RangeError("Invalid time value");let d=e.match(sa).map(l=>{const h=l[0];if(h==="p"||h==="P"){const f=Xs[h];return f(l,a.formatLong)}return l}).join("").match(na).map(l=>{if(l==="''")return{isToken:!1,value:"'"};const h=l[0];if(h==="'")return{isToken:!1,value:oa(l)};if(Me[h])return{isToken:!0,value:l};if(h.match(ia))throw new RangeError("Format string contains an unescaped latin alphabet character `"+h+"`");return{isToken:!1,value:l}});a.localize.preprocessor&&(d=a.localize.preprocessor(i,d));const c={firstWeekContainsDate:o,weekStartsOn:r,locale:a};return d.map(l=>{if(!l.isToken)return l.value;const h=l.value;(!n?.useAdditionalWeekYearTokens&&Zs(h)||!n?.useAdditionalDayOfYearTokens&&Ks(h))&&ta(h,e,String(t));const f=Me[h[0]];return f(i,h,a.localize,c)}).join("")}function oa(t){const e=t.match(aa);return e?e[1].replace(ra,"'"):t}function Ce(t){const e=v(t),n=e.getFullYear(),s=e.getMonth(),a=C(t,0);return a.setFullYear(n,s+1,0),a.setHours(0,0,0,0),a.getDate()}function da(t){const e=v(t).getFullYear();return e%400===0||e%4===0&&e%100!==0}function Pe(t){const e=v(t);return String(new Date(e))==="Invalid Date"?NaN:da(e)?366:365}function ca(t){const e=vt(t),n=+vt(ye(e,60))-+e;return Math.round(n/ut)}function F(t,e){const n=v(t),s=v(e);return+n==+s}function la(t){const e=v(t);return e.setMinutes(0,0,0),e}function ua(t,e,n){const s=H(t,n),a=H(e,n);return+s==+a}function ha(t,e){const n=v(t),s=v(e);return n.getFullYear()===s.getFullYear()&&n.getMonth()===s.getMonth()}function fa(t,e){const n=tt(t),s=tt(e);return+n==+s}function ga(t,e){const n=v(t),s=v(e);return n.getFullYear()===s.getFullYear()}const It={year:is,quarter:rs,month:we,week:xt,day:St,hour:ns,minute:ss},Y={year:{quarter:4,month:12,week:ca,day:ma,hour:pa},quarter:{month:3,week:ya,day:Ee,hour:ka},month:{week:_a,day:ba,hour:wa},week:{day:7,hour:24*7},day:{hour:24},hour:{minute:60}};function ma(t){return t?Pe(t):365}function pa(t){return Pe(t)*24}function ya(t){const e=tt(t),n=E(B(Tt(t)),1);return xt(n,e)}function Ee(t){if(t){const e=tt(t),n=Tt(t);return St(n,e)+1}return 91}function ka(t){return Ee(t)*24}function _a(t){if(t){const e=Se(t),n=E(B(Wt(t)),1);return xt(n,e)}return 5}function ba(t){return t?Ce(t):30}function wa(t){return Ce(t)*24}function st(t,e,n){const s=Y[t][e];return s?typeof s=="number"?s:s(n):1}function Sa(t,e){return t===e||!!(Y[t]&&Y[t][e])}const ft={year:Jn,quarter:Vn,month:wt,week:ye,day:E,hour:Rn,minute:Qn};function gt(t,e,n){if(e){if(t==="day")return(s,a)=>e.getWorkingDays(a,s,!0);if(t==="hour")return(s,a)=>e.getWorkingHours(a,s,!0)}return(s,a,o,r)=>{const i=Y[t]?.[o];return!i||typeof i=="number"||Ge(t,s,a,n)?at(t,s,a,o,r,n):va(s,a,t,o,r,n)}}function at(t,e,n,s,a,o){const r=s||t;let i=n,d=e;if(a&&(i=D(r,n,o),d=D(r,e,o),d<e&&(d=I(r)(d,1))),t!==r){const c=It[r](d,i),l=st(t,r,n);return c/l}else return It[r](d,i)}function va(t,e,n,s,a,o){let r=0;const i=D(n,e,o);if(e>i){const c=ft[n](i,1);r=at(n,c,e,s,void 0,o),e=c}let d=0;return Ge(n,e,t,o)||(d=at(n,D(n,t,o),e,void 0,void 0,o),e=ft[n](e,d)),d+=r+at(n,t,e,s,void 0,o),!d&&a&&(d=at(n,t,e,s,a,o)),d}function I(t,e){if(e){if(t==="day")return(n,s)=>e.addWorkingDays(n,s,!0);if(t==="hour")return(n,s)=>e.addWorkingHours(n,s)}return ft[t]}const Oe={year:ve,quarter:tt,month:Se,week:(t,e)=>H(t,{weekStartsOn:e}),day:B,hour:la};function D(t,e,n){const s=Oe[t];return s?s(e,n):new Date(e)}const xa={year:os,quarter:Tt,month:Wt,week:(t,e)=>cs(t,{weekStartsOn:e}),day:be,hour:ds},Ae={year:ga,quarter:fa,month:ha,week:(t,e,n)=>ua(t,e,{weekStartsOn:n}),day:ke};function Ge(t,e,n,s){const a=Ae[t];return a?a(e,n,s):!1}const Ma={start:Oe,end:xa,add:ft,isSame:Ae,diff:It,smallerCount:Y},He=t=>typeof t=="function"?t(new Date):t;function Wa(t,e){for(const n in e){if(n==="smallerCount"){const s=Object.keys(e[n]).sort((i,d)=>O.indexOf(i)-O.indexOf(d)).shift();let a=O.indexOf(s);const o=e[n][s],r=He(o);for(let i=a-1;i>=0;i--){const d=O[i],c=He(Y[d][s]);if(r<=c)break;a=i}O.includes(t)||O.splice(a,0,t)}if(n==="biggerCount")for(const s in e[n])Y[s][t]=e[n][s];else Ma[n][t]=e[n]}}function Dt(t,e=1,n){const s=e>0?n.getNextWorkingDay(E(t,-1)):n.getPreviousWorkingDay(E(t,1));return s&&ke(s,t)?t:s}function Ta(t){return(e,n)=>{if(n>0)for(let s=0;s<n;s++)e=t.getNextWorkingDay(e);if(n<0)for(let s=0;s>n;s--)e=t.getPreviousWorkingDay(e);return e}}function ze(t){return De(t,"yyyy-MM-dd")}function rt(t,e){for(const n in e)e[n]===void 0&&n[0]!=="$"&&delete t[n]}function Ct(t,e,n){const s=Math.max(Math.min(+t,+n),+e);return t instanceof Date?new Date(s):s}function Q(t){const e=new Date;return t.map(n=>({item:n,len:I(n.unit)(e,1)})).sort((n,s)=>n.len<s.len?-1:1)[0].item}const O=["year","quarter","month","week","day","hour"],Pt=50,Et=300;function $a(t,e,n,s,a,o){const r=!t||n,i=!e||n;let d=t,c=e,l=!1,h=!1;(r||i)&&a?.forEach(u=>{let g=u.start,m=u.type==="milestone"?u.start:u.end;r&&(!d||g<=d)&&(d=g,l=!0),i&&(!c||m>=c)&&(c=m,h=!0)});const f=I(s||"day");return d?l&&(d=f(d,-1)):c?d=f(c,-30):d=new Date,c?h&&(c=f(c,1)):c=f(d,30),{_start:d,_end:c}}function Ia(t,e,n,s,a,o,r,i){const d=Q(r).unit,c=gt(d,void 0,o),l=c(e,t,"",!0),h=D(d,e,o);t=D(d,t,o),e=h<e?I(d)(h,1):h;const f=l*s,u=a*Math.max(i,r.length),g=r.map(y=>{const k=[],_=I(y.unit);let p=D(y.unit,t,o);for(;p<e;){const w=_(p,y.step),b=p<t?t:p,x=w>e?e:w,S=c(x,b,"",!0)*s,W=typeof y.format=="function"?y.format(p,w):y.format;let T="";y.css&&(T+=typeof y.css=="function"?y.css(p):y.css),k.push({width:S,value:W,date:b,key:ze(b),css:T,unit:y.unit}),p=w}return{cells:k,add:_,height:u/r.length}});let m=s;return d!==n&&(m=m/st(d,n)),{rows:g,width:f,height:u,diff:c,start:t,end:e,lengthUnit:n,minUnit:d,lengthUnitWidth:m}}function Da(t,e,n,s){const a=typeof t=="boolean"?{}:t;n.forEach(c=>{c.format&&!e[c.unit]&&(e[c.unit]=c.format)});const o=O.filter(c=>e[c]||n.some(l=>l.unit===c)),r=o.indexOf(Q(n).unit);if(typeof a.level>"u"&&(a.level=r),a.levels)a.levels.forEach(c=>{c.minCellWidth||(c.minCellWidth=mt(a.minCellWidth,Pt)),c.maxCellWidth||(c.maxCellWidth=mt(a.maxCellWidth,Et))});else{const c=[],l=n.length||1,h=mt(a.minCellWidth,Pt),f=mt(a.maxCellWidth,Et);o.forEach((u,g)=>{if(g===r)c.push({minCellWidth:h,maxCellWidth:f,scales:n});else{const m=[];if(g)for(let y=l-1;y>0;y--){const k=o[g-y];k&&m.push({unit:k,step:1,format:e[k]})}m.push({unit:u,step:1,format:e[u]}),c.push({minCellWidth:h,maxCellWidth:f,scales:m})}}),a.levels=c}a.levels[a.level]||(a.level=0);const i=a.levels[a.level],d=Math.min(Math.max(s,i.minCellWidth),i.maxCellWidth);return{zoom:a,scales:i.scales,cellWidth:d}}function Ca(t,e,n,s,a,o,r){t.level=n;let i;const d=s.scales||s,c=Q(d).unit,l=Ea(c,a);if(e<0){const u=st(c,a);i=r*u}else{const u=st(Q(o).unit,c);i=Math.round(r/u)}const h=s.minCellWidth??Pt,f=s.maxCellWidth??Et;return{scales:d,cellWidth:Ct(i,h,f),lengthUnit:l,zoom:t}}function Pa(t,e){const{_start:n,_scales:s,start:a,end:o,_end:r,cellWidth:i,_scaleDate:d,_zoomOffset:c,_weekStart:l}=e,h=I(s.minUnit);let f=s.width;if(a&&o){if(f<t&&f){const k=t/f;return{cellWidth:Math.ceil(i*k)}}return{}}let u=0;for(;f<t;)f+=i,u++;let g=0;if(u){if(o)g=-u;else if(d&&c!==null){const k=c/i,_=s.diff(d,n,"hour");g=Math.floor(_-k)}}let m=a;a||(m=D(s.minUnit,h(n,g),l));let y=0;if(d){const k=s.diff(d,m,"hour");y=Math.max(0,Math.round(k*i)-(c||0))}return{_start:m,_end:o||h(r,u-g),scrollLeft:y}}function Ea(t,e){const n=O.indexOf(t),s=O.indexOf(e);return s>=n?t==="hour"?"hour":"day":O[s]}function mt(t,e){return t??e}function Fe(t,e){const{_scales:n,_start:s,_weekStart:a}=e,o=n.lengthUnit==="day"?n.lengthUnitWidth/24:n.lengthUnitWidth;return I("hour")(D(n.minUnit,s,a),Math.floor(t/o))}function Oa(t,e){const{_scales:n,_weekStart:s,cellWidth:a,durationUnit:o}=e,{minUnit:r,lengthUnit:i,lengthUnitWidth:d}=n,c=D(r,n.start,s);if(a===d){const m=I(i)(c,Math.round(t/d));return o!==r?D(o,m,s):m}const l=Math.trunc(t/a),h=I(r)(c,l),f=t-l*a;if(f<=0)return h;const u=st(r,i,h),g=Math.min(u-1,Math.round(f/d));return I(i)(h,g)}const Le=7,Be=3,Aa=8,Ga=4,Ha=Aa+Ga;function U(t,e){return t.type==="summary"&&!!t.manual&&!!e?.schedule?.auto}function Ne(t,e,n,s,a){(t.open||t.type!=="summary"||n)&&t.data?.forEach(o=>{s&&o.manual||(o.$x+=e,typeof o.$x_rollup=="number"&&(o.$x_rollup+=e),a&&typeof o.$x_slack=="number"&&(o.$x_slack+=e),Ne(o,e,n,s,a))})}function Ot(t,e,n,s,a){const o=t.getSummaryId(e.id);if(o){const r=t.byId(o);if(s&&r.manual)return;const i={xMin:1/0,xMax:0};Ye(r,i,!!n&&!r.inactive,!!a),Number.isFinite(i.xMin)&&(r.$x=i.xMin,r.$w=i.xMax-i.xMin),Ot(t,r,n,s,a)}}function Ye(t,e,n,s){t.data?.forEach(a=>{if(!(s&&a.unscheduled)&&!(n&&a.inactive)){const o=a.type==="milestone"&&a.$h?a.$h/2:0;e.xMin>a.$x+o&&(e.xMin=a.$x+o);const r=a.$x+a.$w-o;e.xMax<r&&(e.xMax=r)}a.type!=="summary"&&Ye(a,e,n,s)})}function At(t,e,n,s){const a={...t};return a.data?.length?a.data.forEach(o=>{const r=!!(s&&o.inactive);if(e&&o.unscheduled&&!o.data||r&&(o.type==="summary"||!o.data))return;o.type!=="summary"&&o.data&&((e&&o.unscheduled||r)&&(o={...o,start:void 0,end:void 0}),o=At(o,e,n,s)),o.start&&(!a.start||a.start>o.start)&&(a.start=new Date(o.start));const i=o.end||o.start;i&&(!a.end||a.end<i)&&(a.end=new Date(i))}):t.type==="summary"&&console.warn(`Summary task ${t.id} has no subtasks, so its dates cannot be derived. Provide start and end dates for it.`),a}function Ue(t,e,n){return je(t,e,n),t.data&&!t.open&&qe(t,n),t}function je(t,e,n,s){const{cellWidth:a,cellHeight:o,_scales:r,baselines:i,_rollups:d}=n,{start:c,end:l,lengthUnit:h,diff:f}=r,u="start",g="end",m="$x",y="$y",k="$w",_="$h",p="$skip",w=o-Le-(i?Ha:0);let b=t[u],x=t[g];if(n.unscheduledTasks&&t.unscheduled||t.$placeholder){e!==null&&(t[y]=o*e+Be),t[_]=w,t[p]=!0;return}t[u]<c&&(t[g]<c||F(t[g],c))?b=x=c:t[u]>l&&(b=x=l),t[m]=Math.round(f(b,c,h)*a),t[k]=Math.round(f(x,b,h,!0)*a),e!==null&&(t[y]=o*e+Be),t[_]=w,t.type==="milestone"&&(t[m]=t[m]-t.$h/2,t[k]=t.$h),n.groupBy&&t.$group?t.$skip=!0:t[p]=F(b,x)}function qe(t,e,n){n=n??t.type!=="summary",t.data&&!t.$skip&&(n||e._rollups)&&t.data.forEach(s=>{(n||s.rollup)&&je(s,null,e),qe(s,e,n)})}function za(t,e){return!1}function Fa(t,e){}function La(t,e,n){}function Ba(t,e){const{tasks:n,durationUnit:s,_scales:a}=t,o=n.getBranch(0);if(o?.length){const r=o[o.length-1];if(!r.$skip&&r.start){const i=new Date(r.start.valueOf());if(a.start<=i)return i}}return I(s,e)(a.start,1)}var Re=new Date().valueOf();function Na(){return Re+=1,Re}const Gt=20,Ya=function(t,e,n,s){if(!e||!n||!e.$y||!n.$y||e.$skip||n.$skip)return t.$p="",t.$pl=0,t.$x1=t.$x2=t.$y1=t.$y2=0,t;let a=!1,o=!1;switch(t.type){case"e2s":o=!0;break;case"s2s":a=!0,o=!0;break;case"s2e":a=!0;break}const r=a?e.$x:e.$x+e.$w,i=e.$y+e.$h/2,d=o?n.$x:n.$x+n.$w,c=n.$y+n.$h/2,l=(s-Le-n.$h)/2;if(r!==d||i!==c){const{coords:h,pl:f,x1:u,x2:g,y1:m,y2:y}=Ua(r,i,d,c,a,o,s/2,l),k=ja(d,c,o);t.$p=`${h},${k}`,t.$pl=f,t.$x1=Math.min(u,d-5),t.$x2=Math.max(g,d+5),t.$y1=Math.min(m,c-3),t.$y2=Math.max(y,c+3)}return t};function Ua(t,e,n,s,a,o,r,i){const d=Gt*(a?-1:1),c=Gt*(o?-1:1),l=t+d,h=n+c,f=[t,e,l,e,0,0,0,0,h,s,n,s],u=h-l;let g=s-e;const m=o===a;m||(h<=t+Gt-2&&o||h>t&&!o)&&(g=g-r+i),m&&o&&l>h||m&&!o&&l<h?(f[4]=f[2]+u,f[5]=f[3],f[6]=f[4],f[7]=f[5]+g):(f[4]=f[2],f[5]=f[3]+g,f[6]=f[4]+u,f[7]=f[5]);let y=1/0,k=-1/0,_=1/0,p=-1/0,w=0;for(let b=0;b<f.length-1;b+=2)f[b]<y&&(y=f[b]),f[b]>k&&(k=f[b]),f[b+1]<_&&(_=f[b+1]),f[b+1]>p&&(p=f[b+1]),b<f.length-3&&(w+=Math.hypot(f[b+2]-f[b],f[b+3]-f[b+1]));return{coords:f.join(","),pl:w,x1:y,x2:k,y1:_,y2:p}}function ja(t,e,n){return n?`${t-5},${e-3},${t-5},${e+3},${t},${e}`:`${t+5},${e+3},${t+5},${e-3},${t},${e}`}function qa(t,e,n){if(e&&n){const s=n.x-e.x,a=n.y-e.y,o=(s>0?e.x:n.x)-t.left,r=(a>0?e.y:n.y)-t.top,i=`${s>0?0:-s},${a>0?0:-a},${s>0?s:0},${a>0?a:0}`;return{width:Math.abs(s),height:Math.abs(a),left:o,top:r,p:i}}else return null}function Ht(t){return t?.map(e=>{const n=e.id||Na(),s=Number(e.lag)||0;return{...e,id:n,lag:s}})}const zt="wx_placeholder_row";function j(t){return t===zt}function Ra(t,e){const n={...t};return delete n.id,delete n.unscheduled,Object.keys(n).forEach(s=>{s.startsWith("$")&&delete n[s]}),n.text||(n.text=e),n}function Xa(){return null}const it={end:"start",base_end:"base_start",deadline:null},Qa=["fnlt","fnet","mfo"];function Xe(t){const e=t.constraint;return!!e?.date&&Qa.includes(e.type)&&t.type!=="milestone"}function Qe(t,e,n){if(n&&t<=n)return n;const s=e?.getPreviousWorkingDay(t)??E(t,-1);return n&&s<n?n:s}function Ft(t,e,n){const s=t[e];if(!s)return s;const a=it[e];return Qe(s,n,a&&t[a])}function Va(t,e){const n={...t};for(const s in it)t[s]&&(n[s]=Ft(t,s,e));return Xe(t)&&(n.constraint={...t.constraint,date:Qe(t.constraint.date,e)}),t.segments&&(n.segments=t.segments.map(s=>s.end?{...s,end:Ft(s,"end",e)}:s)),n}const Ja=[...Object.keys(it),"constraint","segments"];function Ka(t,e,n){const s={...t};for(const o of Ja)o!==e&&o in n&&(s[o]=n[o]);const a=s[e];return a&&(e in it?s[e]=E(a,1):e==="constraint"&&Xe(s)&&(s.constraint={...a,date:E(a.date,1)})),s}function Za(t,e,n){const{id:s,template:a}=t;if(!(s in it)||t.getter||t.setter)return t;const o={...t,getter:r=>e().inclusiveEnd?Ft(r,s,n?.(r)):r[s],setter:(r,i)=>{r[s]=e().inclusiveEnd&&i?E(i,1):i}};return a&&!t._template&&(o.template=(r,i,d)=>a(i[s],i,d)),o}function Ve(t,e="grid"){return t.filter(n=>(n.section||"grid")===e)}const ot=37,tr=120;function Je(t){return t.width||(t.id==="add-task"?ot:tr)}const Ke=["start","end","duration"];function Ze(t,e){return t==="start"&&e?["Unschedule","today"]:["today"]}function er(t,e,n){const{type:s,unscheduled:a}=t;return s==="summary"&&!U(t,n)?!Ke.includes(e):n.unscheduledTasks&&a||s==="milestone"?!["end","duration"].includes(e):!0}function nr(t,e,n){if(typeof e=="function"||!e)return e;const s=Ke.includes(t);if(!s&&t!=="resources")return e;const a=typeof e=="string"?{type:e}:e,o=a.config??={};return s?(r,i)=>{const d=String(i?.id??"");if(!r)return null;const c=n();return er(r,d,c)?(a.type==="datepicker"&&(o.buttons=Ze(d,!r.$placeholder&&c.unscheduledTasks)),a):null}:a}function tn(t){let e=1;return t?.length&&t.forEach(n=>{if(n.hidden)return;const s=n.header,a=Array.isArray(s)?s.length:s?1:0;e=Math.max(a,e)}),e}function sr(t,e,n){if(!t||!t.length)return[];t=t.filter(a=>a.section!=="subGrid");const s=t.map(a=>{const o=a.align||"left",r=a.id==="add-task",i=r?null:a.flexgrow,d=i?1:Je(a),c=a.editor&&nr(a.id,a.editor,e);let l=Array.isArray(a.header)?a.header:[a.header];l=l.map(f=>(typeof f!="object"&&(f={text:f}),f.filter&&typeof f.filter!="object"&&(f.filter={type:f.filter}),f));const h={width:d,align:o,header:l,id:a.id,template:a.template,_template:a._template,...i&&{flexgrow:i},...a.hidden&&{hidden:a.hidden},...a.section&&{section:a.section},cell:a.cell,resize:a.resize??!0,sort:a.sort??!r,...c&&{editor:c},...a.options&&{options:a.options},getter:a.getter,setter:a.setter};return Za(h,e,n)});return nn(s),s}function en(t,e){const n=Ve(t,e).filter(a=>!a.hidden);if(!n.length||n.some(a=>a.flexgrow))return;const s=n.find(a=>a.id==="text")||n.find(a=>a.id!=="add-task");s&&(s.flexgrow=1)}function nn(t){en(t,"grid"),en(t,"subGrid")}const sn=[{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 an(t={}){return sn.map(e=>({...e}))}function Lt(t,e="grid"){return Ve(t,e).reduce((n,s)=>n+Je(s),0)}function ar(){return[]}function rr(t){if(!t||!t.length)return[];const e=t.map(n=>({...n}));if(!e.some(n=>n.flexgrow)){const n=e.find(s=>s.id==="name")||e[0];n&&(n.flexgrow=1)}return e}function Bt(t){return!1}function Nt(t,e){const n=["grid","chart"];let s;if(Array.isArray(t))s=[...t];else switch(t){case"grid":case"chart":s=[t];break;case"all":default:s=n;break}return s=s.filter(a=>a!=="subGrid"),s.length||(s=n),s}function Yt(t,e){if(t.length<=1)return t.length?t:["grid"];const n=e?.find(s=>t.includes(s));return n?[n]:t.includes("grid")?["grid"]:[t[0]]}function ir(t,e,n=!1){if(n)return t.includes("grid")?["chart"]:["grid"];const s=t.includes("grid"),a=t.includes("chart");return t.includes("subGrid"),s&&a?e==="start"?["chart"]:["grid"]:["grid","chart"]}function or(t,e,n=!1){return t}const rn=4,Ut=100,dr=650;function on(t,e){return!t||!e?.includes("chart")?rn:2*rn}function cr(t,e,n,s,a=0){const o=n+a+Ut;return lr(t,e,o,s)}function lr(t,e,n,s=0){const a=Math.max(e-n,0);return Math.max(s,Math.min(t,a))}function jt(t,e){return t.length===e.length&&t.every(n=>e.includes(n))}function dn(t){const e=["chart"];return t.includes("subGrid")&&e.push("subGrid"),e}function cn(t){return t._gridCollapseThreshold??ot}function qt(t,e,n){return{ganttWidth:e,gridWidth:t.gridWidth,subGridWidth:t.subGridWidth,hasSubGrid:Bt(t.columns),scrollSize:n??t._scrollSize??0,collapseThreshold:cn(t)}}function ln(t,e,n=!1){const{ganttWidth:s,subGridWidth:a,hasSubGrid:o,scrollSize:r=0,collapseThreshold:i}=e;let d=e.gridWidth,c=[...t];const l=c.includes("chart"),h=on(o,c),f=h+r;let u=0,g=s-d-u-f;return l&&g<Ut&&n&&(d=cr(d,s,h,i,r),g=s-d-u-f),l&&g<Ut&&(c=c.filter(m=>m!=="chart")),{gridWidth:d,subGridWidth:a,panels:c}}function ur(t,e){const n=e.width,s=e.scrollSize??t._scrollSize??0,a=n==null||n<=dr,o={compactMode:a,gridWidth:t.gridWidth,subGridWidth:t.subGridWidth};!t._compactMode&&a&&(o.displayPanels=Yt(t.displayMode,t._displayPanels));const r=t.displayMode;if(a||n==null||!r?.includes("grid")||!r.includes("chart"))return o;const i=ln(t.displayMode,qt(t,n,s),!0);o.gridWidth=i.gridWidth,o.subGridWidth=i.subGridWidth;const d=t._displayPanels??t.displayMode;return jt(i.panels,d)||(o.displayPanels=i.panels),o}function hr(t,e){if(e.gridWidth<=e.collapseThreshold){const n=e.preferredGridWidth;return{gridWidth:n!=null&&n>e.collapseThreshold?n:e.gridWidth,subGridWidth:e.subGridWidth,panels:dn(t)}}return ln(t,e)}function fr(t,e){return{subGridWidth:0,panels:t}}function gr(t,e){const{ganttWidth:n,hasSubGrid:s,scrollSize:a=0,collapseThreshold:o}=e,r=Math.max(0,n-on(s,t)-a-(t.includes("subGrid")?e.subGridWidth:0)),i=Math.min(o,r);return{gridWidth:Math.max(i,Math.min(e.gridWidth,r)),panels:e.gridWidth<=o?dn(t):t}}function mr(t,e){return{subGridWidth:0,panels:t}}function pr(t,e,n){return e}function dt(t,e,n,s){const a=t.getState(),o=a._selected.filter(m=>!j(m.id)).map(m=>m.id);j(n)&&(n=null);const r=o.length,i=["edit-task","paste-task","undo","redo","add-task","add-task:child","add-task:before","add-task:after","show-conflicts"],d=["copy-task","cut-task"],c=["copy-task","cut-task","delete-task","indent-task:remove","move-task:down"],l=["add-task","undo","redo","show-conflicts"],h=["indent-task:add","move-task:down","move-task:up","copy-task","cut-task","delete-task"],f={"indent-task:remove":2},u=!r&&l.includes(e),g={parent:h.includes(e),level:f[e],sort:!d.includes(e)};if(n=n||(r?o[o.length-1]:null),!(!n&&!u)){if(e!=="paste-task"&&(t._temp=null),i.includes(e)||u||o.length===1)un(t,e,n,s);else if(r){const m=yr(o,g,a);c.includes(e)&&m.reverse();const y=t.getHistory();y&&y.startBatch(),m.forEach((k,_)=>un(t,e,k,s,_)),y&&y.endBatch()}}}function yr(t,e,n){const{tasks:s,tree:a,groupBy:o}=n;let r=t.map(i=>{let d=i;o?.field&&(d=a.byId(d)?.$id||d);const c=s.byId(d);return{id:d,level:c?.$level,parent:c?.parent,index:s.getIndexById(d)}});return(e.parent||e.level)&&(r=r.filter(i=>e.level&&i.level<=e.level||!t.includes(i.parent))),e.sort&&r.sort((i,d)=>i.level-d.level||i.index-d.index),r.map(i=>i.id)}function un(t,e,n,s,a){const o=t.exec?t.exec:t.in.exec;let r=e.split(":")[0],i=e.split(":")[1];const d=n?.id||n;let c={id:d},l={},h=!1;if(r==="copy-task"||r==="cut-task"){t._temp||(t._temp=[]),t._temp.push({id:d,cut:r==="cut-task"});return}else if(r==="paste-task"){const{tasks:f}=t.getState(),u=t._temp?.filter(g=>f.byId(g.id));if(u&&u.length){const g=t.getHistory();g&&g.startBatch();const m=new Map;if(u.forEach(y=>{const k={id:y.id,target:d,mode:"after"};o(y.cut?"move-task":"copy-task",k),m.set(y.id,k.id)}),!u[0].cut){const{links:y}=t.getState(),k=u.map(p=>p.id),_=[];y.forEach(p=>{k.includes(p.source)&&k.includes(p.target)&&_.push(p)}),_.forEach(p=>{o("add-link",{link:{...p,id:void 0,source:m.get(p.source),target:m.get(p.target)}})}),u.forEach((p,w)=>{o("select-task",{id:m.get(p.id),toggle:!!w})})}g&&g.endBatch()}t._temp=null;return}else r==="add-task"?(l={task:{type:"task",text:s("New task")},target:d,show:!0,mode:"after",select:!1},c={},h=!0):r==="edit-task"?r="show-editor":r==="convert-task"?(r="update-task",l={task:{type:i}},i=void 0):r==="indent-task"&&(i=i==="add");if(r==="split-task"&&typeof n=="object")l=n;else if(r==="delete-task"&&i==="segment"&&typeof n=="object"){const f=t.getTask(d),{segmentIndex:u}=n,g=f.segments.filter((m,y)=>y!==u);o("update-task",{id:d,task:{segments:g}});return}typeof i<"u"&&(l={...l,mode:i}),c={...c,...l},o(r,c),h&&o("select-task",{id:c.id,toggle:!!a,eventSource:r})}function hn(t,e){return t.some(n=>n.data?hn(n.data,e):n.id===e)}function fn(t,e,n,s=1){const a=n[0].width,o=Math.max(0,Math.floor(t/a)-s),r=Math.min(n.length,Math.ceil((t+e)/a)+s);return{from:o*a,to:r*a,start:o,end:r}}const gn=(t,e)=>I(t,e),kr=(t,e)=>gt(t,e);function mn(t,e,n,s=0){const a=o=>{o&&o.forEach(r=>{if(a(r.data),q(r,e,n(r)),r.type!=="summary")return;const i=!(r.start&&r.end)&&!U(r,e),d=e.inactiveTasks&&r.inactive===void 0;if(!i&&!d)return;const c=At(r,e.unscheduledTasks,e.inactiveTasks,e.inactiveTasks&&!d?!r.inactive:void 0);d&&c.inactive&&(r.inactive=!0),i&&(r.start=c.start,r.end=c.end,r.duration=void 0,q(r,e,n(r)))})};a(t.byId(s)?.data)}const _r=(t,e,n)=>n in t?t[n]:e?.[n];function br(t,e){t.unscheduled=!_r(t,e,"start")}function wr(t,e,n){"type"in t||(t.type=e.type),!t.start&&!(n&&"start"in t)&&(t.start=e.start),!t.end&&!t.duration&&(t.duration=e.duration),!("segments"in t)&&e.segments&&(t.segments=e.segments)}function q(t,e,n,s){s&&wr(t,s,e.unscheduledTasks),t.start?pn(t,e,n,!1):e.unscheduledTasks&&(t.start=null,t.end=null,t.type==="summary"&&(t.duration=null)),e.unscheduledTasks&&br(t,s),t.base_start&&pn(t,e,n,!0)}function pn(t,e,n,s){const{durationUnit:a}=e,o=a||"day",[r,i,d]=yn(s);t.type==="milestone"?(t[d]=0,t[i]=void 0):t[r]&&(t[d]?t[i]=gn(o,n)(t[r],t[d]):t[i]?t[d]=kr(o,n)(t[i],t[r]):(t[i]=gn(o,n)(t[r],1),t[d]=1))}function yn(t){return t?["base_start","base_end","base_duration"]:["start","end","duration"]}function kn(t,e,n){const[s,a,o]=yn(n);(e===o||e===s&&t.start)&&(e===o&&t[o]<1&&(t[o]=1),t[a]=null),e===a&&(t[o]=0,t[s]&&t[s]>=t[a]&&(t[a]=null,t[o]=1))}function Sr(t,e,n,s){kn(t,s,!1),t.base_start&&kn(t,s,!0),q(t,e,n)}const V=[],vr=["add-task","update-task","move-task","delete-task","add-link","update-link","delete-link","add-assignment","update-assignment","delete-assignment"],xr={geometry:["tasks","cellHeight","baselines","unscheduledTasks","rollups","groupBy"]};class Mr extends Dn{in;_router;_modules=new Map;_prevConfig={};_pendingGeometry=null;_resizeStart=null;_placeholderRow;constructor(e){super({writable:e,async:!1}),this._router=new Cn(super.setState.bind(this),[{in:["tasks","start","end","scales","autoScale","markers","projectStart","projectEnd","baselines","progressLine","deadlines","criticalPath","schedule","unscheduledTasks"],out:["_start","_end"],exec:r=>{const{_end:i,_start:d,start:c,end:l,tasks:h,scales:f,autoScale:u,markers:g,projectStart:m,projectEnd:y,baselines:k,unscheduledTasks:_,progressLine:p,deadlines:w,criticalPath:b,schedule:x}=this.getState();if(this._pendingGeometry!=="meta")if(!c||!l||u){const S=Q(f).unit,W=$a(c,l,u,S,h);(W._end!==i||W._start!==d)&&this.setState(W,r)}else this.setState({_start:c,_end:l},r)}},{in:["_columns"],out:["_headerLength","_gridCollapseThreshold"],exec:r=>{const{_columns:i}=this.getState();let d=ot;const c=i.find(l=>l.id==="add-task");c?.width&&(d=c.width),this.setState({_headerLength:tn(i),_gridCollapseThreshold:d},r)}},{in:["displayMode"],out:["_displayPanels"],exec:r=>{const{displayMode:i,_compactMode:d,_displayPanels:c}=this.getState();this.setState({_displayPanels:d?Yt(i,c):i},r)}},{in:["_displayPanels","_columns","gridWidth"],out:["_columnsWidth"],exec:r=>{const{_columns:i,_displayPanels:d,gridWidth:c}=this.getState();if(!i?.length){this.setState({_columnsWidth:0},r);return}let l=0;d.includes("grid")?l=c:l=i?.find(h=>h.id==="add-task")?.width||ot,l&&this.setState({_columnsWidth:l},r)}},{in:["start","end"],out:["cellWidth"],exec:r=>{const{_cellWidth:i,cellWidth:d}=this.getState();i!==d&&this.setState({cellWidth:i},r)}},{in:["_start","_end","cellWidth","scaleHeight","scales","lengthUnit","_weekStart","_headerLength"],out:["_scales"],exec:r=>{const i=this.getState();let{lengthUnit:d}=i;const{_start:c,_end:l,cellWidth:h,scaleHeight:f,scales:u,_weekStart:g,_headerLength:m}=i,y=Q(u).unit;Sa(y,d)||(d=y);const k=Ia(c,l,d,h,f,g,u,m);this.markGeometry("all"),this.setState({_scales:k},r)}},{in:["assignments"],out:["_assignments"],exec:r=>{const{assignments:i}=this.getState();this.setState({_assignments:this.indexAssignments(i)},r)}},{in:["_scales","scrollLeft","_chartWidth"],out:["xArea"],exec:r=>{const{_scales:i,scrollLeft:d,_chartWidth:c}=this.getState();if(!i||!c){this.setState({xArea:{from:0,to:0,start:0,end:0}},r);return}const l=i.rows[i.rows.length-1].cells;this.setState({xArea:fn(d||0,c,l)},r)}},{in:["tasks","_assignments","groupBy","_scales"],out:["tree"],exec:r=>{this.getState();const{tasks:i,_scales:d}=this.getState(),c=this.getGrouping();if(c){if(!d)return;const l=c.buildTree();this.setState({tree:l});return}this.setState({tree:i},r)}},{in:["tree","_scales","_rollups","cellHeight","baselines","unscheduledTasks","deadlines","splitTasks","placeholderRow"],out:["_tasks"],exec:r=>{const{cellWidth:i,cellHeight:d,tree:c,_scales:l,baselines:h,splitTasks:f,unscheduledTasks:u,placeholderRow:g,_rollups:m,groupBy:y,_tasks:k,deadlines:_,tasks:p,durationUnit:w,schedule:b,criticalPath:x}=this.getState(),S=c.toArray();g&&S.push(this.getPlaceholderRow());const W={cellWidth:i,cellHeight:d,_scales:l,baselines:h,unscheduledTasks:u,_rollups:m,groupBy:y},T=this._pendingGeometry;if(this._pendingGeometry=null,(T==="meta"||T instanceof Set)&&k?.length===S.length&&S.every(($,A)=>k[A]?.id===$.id&&($.$skip||typeof $.$x=="number"))){if(T instanceof Set)for(let $=0;$<S.length;$++)T.has(S[$].id)&&Ue(S[$],$,W);this.setState({_tasks:S},r);return}g&&(this.getPlaceholderRow(),this.getCalendar()),c.forEach($=>$.$y=0);const L=S.map(($,A)=>Ue($,A,W));this.setState({_tasks:L},r)}},{in:["_tasks","links","cellHeight"],out:["_links"],exec:r=>{const{tree:i,links:d,cellHeight:c,criticalPath:l,_isFiltered:h}=this.getState(),f=d.map(u=>{const g=i.byId(u.source),m=i.byId(u.target);return!g||!m?null:Ya(u,g,m,c)}).toSorted((u,g)=>!u||!g?0:l?!!u.critical==!!g.critical?g.$pl-u.$pl:u.critical?1:-1:g.$pl-u.$pl).filter(u=>u&&h?i.isFilteredId(u.source)&&i.isFilteredId(u.target):u!==null);this.setState({_links:f},r)}},{in:["_links"],out:["_linksIndex"],exec:r=>{const{_links:i}=this.getState(),d=new Map;for(const c of i){if(!c.$p)continue;const l=Math.floor(c.$x1/2048),h=Math.floor(c.$x2/2048),f=Math.floor(c.$y1/2048),u=Math.floor(c.$y2/2048);for(let g=f;g<=u;g++)for(let m=l;m<=h;m++){const y=g*65536+m;let k=d.get(y);k||d.set(y,k=[]),k.push(c)}}this.setState({_linksIndex:d},r)}},{in:["_linksIndex","area","xArea","cellHeight"],out:["_visibleLinks"],exec:r=>{const{_linksIndex:i,area:d,xArea:c,cellHeight:l}=this.getState(),h=d.to??d.end*l,f=Math.floor(c.from/2048),u=Math.floor(c.to/2048),g=Math.floor(d.from/2048),m=Math.floor(h/2048);let y;if(f===u&&g===m)y=i.get(g*65536+f)??[];else{const _=new Set;for(let p=g;p<=m;p++)for(let w=f;w<=u;w++){const b=i.get(p*65536+w);if(b)for(const x of b)_.add(x)}y=Array.from(_)}const k=y.filter(_=>_.$y2>=d.from&&_.$y1<=h&&_.$x2>=c.from&&_.$x1<=c.to);this.setState({_visibleLinks:k},r)}},{in:["tasks","activeTask"],out:["_activeTask"],exec:r=>{const{activeTask:i,tasks:d}=this.getState(),c=d.byId(i);this.setState({_activeTask:c||null},r)}},{in:["tree","selected","placeholderRow"],out:["_selected"],exec:r=>{const{tree:i,selected:d,_isFiltered:c,placeholderRow:l}=this.getState(),h=d.map(f=>l&&j(f)?this.getPlaceholderRow():i.byId(f)).filter(f=>f?j(f.id)?!0:!c||i.isFilteredId(f.id):!1);this.setState({_selected:h},r)}},{in:["columns"],out:["_columns"],exec:r=>{const{columns:i}=this.getState();let d=i;this.setState({_columns:d},r)}}],{links:r=>new _t(Ht(r)),columns:r=>sr(r,()=>this.getState(),i=>this.getTaskCalendar(i))});const n=this.in=new Pn;vr.forEach(r=>n.intercept(r,i=>{he(i.eventSource)&&(i.skipProvider=!0)})),n.on("show-editor",r=>{this.setStateAsync({activeTask:r.id})}),n.on("select-task",({id:r,toggle:i,range:d,show:c=!0,focus:l,eventSource:h})=>{const{selected:f,_tasks:u,activeTask:g}=this.getState();let m=!1,y;if(f.length&&(i||d)){const _=[...f];if(d){const p=_[_.length-1],w=u.findIndex(T=>T.id===p),b=u.findIndex(T=>T.id===r),x=Math.min(w,b),S=Math.max(w,b)+1,W=u.slice(x,S).map(T=>T.id);w>b&&W.reverse(),W.forEach(T=>{_.includes(T)||_.push(T)})}else if(i){const p=_.findIndex(w=>w===r);p===-1?_.push(r):(m=!0,_.splice(p,1))}y=_}else y=[r];const k={selected:y};if(this.setState(k),y.length&&(l&&(c=l==="chart"?"xy":c||"y"),c)){const _=()=>{const p=y[y.length-1];this.scrollToTask(p,c),l&&this.setStateAsync({focusTask:{id:p,...l!=="chart"?{section:l}:{}}})};h==="add-task"?setTimeout(_,1):_()}!m&&g&&g!==r&&!j(r)&&n.exec("show-editor",{id:r})}),n.on("delete-link",({id:r})=>{const{links:i}=this.getState();i.remove(r),this.setStateAsync({links:i})}),n.on("update-link",r=>{const{links:i}=this.getState(),d=r.id,c=r.link;let l=r.link;i.update(d,l),l=i.byId(d),rt(l,c),l.lag=Number(l.lag)||0,this.setStateAsync({links:i}),r.link=l}),n.on("add-link",r=>{const{link:i}=r,{links:d}=this.getState();!i.source||!i.target||(i.type||(i.type="e2s"),i.lag=Number(i.lag)||0,i.id=i.id||ne(),d.add(i),this.setStateAsync({links:d}),r.id=i.id,r.link=d.byId(i.id))});let s=null;const a=new Map;n.on("move-task",r=>{const{tasks:i,tree:d}=this.getState();let{mode:c,target:l}=r;const{id:h,inProgress:f}=r;if(J(r.eventSource)){r.source=i.byId(h).parent,i.move(h,c,l),this.setStateAsync({tasks:i});return}const u=d.byId(h),g=this.getGrouping();if(typeof f>"u"?r.source=u.parent:r.source=s=s??u.parent,f===!1){d.update(u.id,{$reorder:!1}),a.forEach((m,y)=>{const k=i.byId(y);k&&(!F(k.start,m.start)||!F(k.end,m.end)||!!k.inactive!=!!m.inactive)&&n.exec("update-task",{id:y,task:{...k},eventSource:"move-task"})}),a.clear(),this.setState({tasks:i}),s=null;return}if(l===h||d.contains(h,l)||g&&c!=="before"&&c!=="after"){r.skipProvider=!0;return}if(c==="up"||c==="down"){const m=i.getBranch(h);let y=i.getIndexById(h);if(c==="up"){const k=u.parent===0;if(y===0&&k){r.skipProvider=!0;return}y-=1,c="before"}else if(c==="down"){const k=y===m.length-1,_=u.parent===0;if(k&&_){r.skipProvider=!0;return}y+=1,c="after"}if(l=m[y]&&m[y].id||u.parent,l){const k=i.getBranch(l);let _=i.getIndexById(l),p=k[_];if(p.data){if(c==="before"){if(p.parent===u.parent){for(;p.data;)p.open||n.exec("open-task",{id:p.id,mode:!0,eventSource:"move-task"}),p=p.data[p.data.length-1];l=p.id}}else if(c==="after"){let x;p.parent===u.parent?(x=p,p=p.data[0],l=p.id,c="before"):k.length-1!==_&&(x=p,_+=1,p=k[_],u.$level>p.$level&&p.data?(x=p,p=p.data[0],l=p.id,c="before"):l=p.id),x&&!x.open&&n.exec("open-task",{id:x.id,mode:!0,eventSource:"move-task"})}}const w=i.getSummaryId(u.id);i.move(h,c,l);const b=i.getSummaryId(h);w!==b&&(w&&this.resetSummaryDates(w,"move-task"),b&&this.resetSummaryDates(b,"move-task"))}}else{const m=d.byId(l);let y=m,k=!1;for(;y.$level>u.$level;)y=d.byId(y.parent),y.id===h&&(k=!0);if(k)return;const _=!g&&d.getSummaryId(u.id);if(d.move(h,c,l),c==="child"){let p=m;for(;p.id!==0&&!p.open;)n.exec("open-task",{id:p.id,mode:!0,eventSource:"move-task"}),p=i.byId(p.parent)}if(!g){const p=i.getSummaryId(h);if(_!==p){const w=f?a:null;_&&this.resetSummaryDates(_,"move-task",w),p&&this.resetSummaryDates(p,"move-task",w)}}}f?this.setState({tree:d}):this.setStateAsync({tasks:i}),r.target=l,r.mode=c}),n.on("drag-task",r=>{const i=this.getState(),{tree:d,_tasks:c,_selected:l,rollups:h,slack:f,inactiveTasks:u,unscheduledTasks:g}=i,m=!!i.schedule?.auto,y=d.byId(r.id),{left:k,top:_,width:p,inProgress:w}=r,b={_tasks:c,_selected:l};if(typeof p<"u"&&(y.$w=p,Ot(d,y,u,m,g)),typeof k<"u"){if(y.type==="summary"&&!U(y,i)){const x=k-y.$x;Ne(y,x,!!h,m,!!f)}y.$x=k,Ot(d,y,u,m,g)}typeof _<"u"&&(y.$y=_+4,y.$reorder=w),this.setState(b)});const o=new Set(["start","end","duration","type","inactive","base_start","base_end","base_duration","segments","rollup","calendar","deadline","constraint"]);n.on("update-task",r=>{const{id:i,segmentIndex:d,diff:c,eventSource:l,derive:h}=r,f=r.task;let{task:u}=r;const g=this.getState(),{tasks:m,_scales:y,durationUnit:k,splitTasks:_,_calendars:p,unscheduledTasks:w,inactiveTasks:b}=g,x={tasks:m},S=m.byId(i);if(J(l)){m.update(i,u),rt(m.byId(i),f),this.markGeometry(this.editedRows(i,u.type==="summary"||S.type==="summary")),this.setStateAsync(x),r.task=m.byId(i);return}const W=this.getTaskCalendar({...S,...u}),T={durationUnit:k,unscheduledTasks:w};if(!h&&jn(l)){l==="schedule-tasks"||q(u,T,W,S),m.update(i,u),rt(m.byId(i),f),r.task=m.byId(i);return}if(!(U(S,g)&&"manual"in u&&!u.manual&&(u.type??S.type)==="summary"||c||d>=0||"type"in u&&u.type!==S.type||Object.keys(u).some(P=>{if(!o.has(P)||P==="type")return!1;const G=u[P],kt=S[P];return!ct(G,kt)}))){m.update(i,u),rt(m.byId(i),f);const P=m.byId(i),G=!this.getGrouping()&&typeof P.$x=="number";this.markGeometry(G?"meta":"all"),this.setStateAsync({tasks:m}),r.task=P;return}const L=y.lengthUnit;let $=I(L);const A=gt(k,W);c&&(u.start&&(u.start=$(u.start,c)),!d&&d!==0&&(u.start&&u.end?u.duration=S.duration:(u.start?u.end=S.end:(u.end=$(u.end,c),u.start=S.start,u.duration=A(u.end,u.start)),A(u.end,u.start)||(u.duration=1)))),u.type=u.type??S.type;const yt=u.type==="summary",Mn=U({type:u.type,manual:"manual"in u?u.manual:S.manual},g),Wn=!!S.data?.length;if(b&&"inactive"in u&&(u.inactive,S.inactive),W&&u.start&&(u.start=Dt(u.start,c,W)),u.start&&u.end&&(!F(u.start,S.start)||!F(u.end,S.end))&&yt&&Wn&&!Mn){let P=c||A(u.start,S.start);W&&(P=u.start>S.start?A(u.start,S.start):-A(S.start,u.start),$=Ta(W)),this.moveSummaryKids(S,(G,kt)=>{G=$(G,P);const te=p?this.getTaskCalendar(kt):W;return te?Dt(G,c,te):G},"update-task")}q(u,T,W,S),m.update(i,u),rt(m.byId(i),f),yt&&this.deriveSummary(i);const Zt=m.getSummaryId(i);Zt&&this.resetSummaryDates(Zt,"update-task"),this.markGeometry(this.editedRows(i,yt||S.type==="summary")),this.setStateAsync(x),r.task=m.byId(i)}),n.on("add-task",r=>{const{tasks:i,_scales:d,unscheduledTasks:c,durationUnit:l,splitTasks:h,tree:f}=this.getState(),{mode:u,task:g,show:m,select:y=!0}=r,k=j(r.target)?void 0:r.target,_=this.getTaskCalendar(g);let p=-1,w,b;if(k?(b=i.byId(k),u==="child"?(w=b,g.parent=w.id):(b.parent!==null&&(w=i.byId(b.parent),g.parent=w.id),p=i.getIndexById(k),u==="after"&&(p+=1))):g.parent&&(w=i.byId(g.parent)),typeof r.index=="number"&&(!k||u==="child")){const T=i.byId(g.parent||0)?.data,L=T?T.length:0;p=r.index>=0&&r.index<L?r.index:-1}if(J(r.eventSource)){const T=i.add(g,p);this.setStateAsync({tasks:i}),r.id=T.id,r.task=T;return}!((!r.eventSource||g.unscheduled)&&c)&&!g.start&&(w?.start?g.start=new Date(w.start.valueOf()):b?g.start=new Date(b.start.valueOf()):g.start=Ba({tasks:i,durationUnit:l,_scales:d},_),g.duration=g.duration||1),_&&g.start&&(g.start=Dt(g.start,1,_)),this.getState().baselines&&g.start&&(g.base_start=g.start,g.base_duration=g.duration),q(g,{durationUnit:l,unscheduledTasks:c},_);const x=i.add(g,p),S={tasks:i};if(m)for(;w&&w.id;)n.exec("open-task",{id:w.id,mode:!0,eventSource:"add-task"}),w=f.byId(w.parent);r.id=x.id;const W=i.getSummaryId(x.id);W&&this.resetSummaryDates(W,"add-task"),this.setStateAsync(S),r.id=x.id,r.task=x,y?n.exec("select-task",{id:x.id,show:m,eventSource:"add-task"}):m&&this.scrollToTask(x.id,m),m&&r.eventSource==="placeholder"&&setTimeout(()=>{this.getState().placeholderRow&&this.scrollToTask(zt,"y")},1)}),n.on("delete-task",r=>{const{id:i}=r,d=this.getState(),{tasks:c,links:l,selected:h}=d,f=c.byId(i);r.source=f.parent;const u=c.getSummaryId(i),g=[i];c.eachChild(k=>g.push(k.id),i),l.filter(k=>!(g.includes(k.source)||g.includes(k.target)));const m={tasks:c,links:l},y=d.groupBy?.field==="resource";(h.includes(i)||y)&&(m.selected=h.filter(k=>k!==i&&(!y||d.tree.byId(k)?.$id!==i))),c.remove(i),u&&!J(r.eventSource)&&this.resetSummaryDates(u,"delete-task"),this.setStateAsync(m)}),n.on("indent-task",({id:r,mode:i})=>{const{tasks:d}=this.getState();if(i){const c=d.getBranch(r)[d.getIndexById(r)-1];c&&n.exec("move-task",{id:r,mode:"child",target:c.id,eventSource:"indent-task"})}else{const c=d.byId(r),l=d.byId(c.parent);l&&l.parent!==null&&n.exec("move-task",{id:r,mode:"after",target:c.parent,eventSource:"indent-task"})}}),n.on("copy-task",r=>{const{id:i,target:d,mode:c,eventSource:l}=r;if(l==="copy-task")return;const{tasks:h,links:f}=this.getState();if(h.contains(i,d)){r.skipProvider=!0;return}const u=h.getSummaryId(i),g=h.getSummaryId(d);let m=h.getIndexById(d);c==="before"&&(m-=1);const y=h.byId(i),k=h.copy(y,h.byId(d).parent,m+1);r.source=r.id,r.id=k[0][1],y.lazy&&(r.lazy=!0),u!==g&&g&&this.resetSummaryDates(g,"copy-task");let _=[];for(let p=1;p<k.length;p++){const[w,b]=k[p];f.forEach(x=>{if(x.source===w){const S={...x};delete S.target,_.push({...S,source:b})}else if(x.target===w){const S={...x};delete S.source,_.push({...S,target:b})}})}_=_.reduce((p,w)=>{const b=p.findIndex(x=>x.id===w.id);return b>-1?p[b]={...p[b],...w}:p.push(w),p},[]);for(let p=1;p<k.length;p++){const[w,b]=k[p],x=h.byId(b),S=h.byId(x.parent)?.data;n.exec("copy-task",{source:w,id:b,lazy:!!x.lazy,eventSource:"copy-task",target:x.parent,mode:"child",index:S?.findIndex(W=>W.id===b),skipUndo:!0})}_.forEach(p=>{n.exec("add-link",{link:{...p,id:void 0},eventSource:"copy-task"})}),this.setStateAsync({tasks:h})}),n.on("open-task",r=>{const{id:i,mode:d,nested:c}=r,{tasks:l,tree:h}=this.getState();if(J(r.eventSource)){if(!l.byId(i))return;l.update(i,{open:d}),this.setState({tasks:l});return}h.byId(i)&&(i&&this.applyOpen(h.byId(i),d,!!c),c&&h.eachChild(f=>this.applyOpen(f,d,c),i),this.setState({tree:h}))}),n.on("scroll-chart",({left:r,top:i,date:d})=>{const{_chartWidth:c,_chartHeight:l,_tasks:h,cellHeight:f,_scales:u,cellWidth:g,_start:m,_weekStart:y}=this.getState();let k={};if(d){const _=u.diff(d,m,"hour");r=Math.round(_*g)}if(!isNaN(r)){if(typeof c<"u"&&!isNaN(u.width)){const _=u.width-c;r=Ct(r,0,_)}k={scrollLeft:r,_scaleDate:Fe(r,{_scales:u,_start:m,_weekStart:y}),_zoomOffset:null}}if(!isNaN(i)){if(l!=null){const _=u.height+h.length*f-l;i=Ct(i,0,_)}k.scrollTop=i}this.setState(k)}),n.on("render-data",r=>{this.setState({area:r})}),n.on("provide-data",r=>{const{tasks:i,links:d,assignments:c,durationUnit:l,splitTasks:h,unscheduledTasks:f,inactiveTasks:u,schedule:g}=this.getState(),m=i.byId(r.id);m.lazy?m.lazy=!1:m.data=[],i.parse(r.data.tasks,r.id),mn(i,{durationUnit:l,unscheduledTasks:f,inactiveTasks:u,schedule:g},p=>this.getTaskCalendar(p),r.id);const y=m.type==="summary"?m.id:i.getSummaryId(m.id);y&&this.resetSummaryDates(y,"provide-data"),i.eachChild(p=>{p.data?.length&&(p.lazy=!1,r.nested&&(p.open=!0))},r.id);const k=(Ht(r.data.links)||[]).filter(p=>i.byId(p.source)&&i.byId(p.target)),_={tasks:i,links:new _t(d.map(p=>p).concat(k))};this.setStateAsync(_)}),n.on("zoom-scale",({dir:r,ratio:i,offset:d})=>{const c=this.getState(),{zoom:l,cellWidth:h,_cellWidth:f,scrollLeft:u}=c,g=(d||0)+u,m=Fe(g,c),y=r<0&&f||h;let k=Math.round(y*(1+r*(i??.15)));const{maxCellWidth:_,minCellWidth:p}=l.levels[l.level],w=r<0&&h>_;if(this.shouldExpandScale(k)){this.changeScale(l,r)&&this.setState({cellWidth:k,_cellWidth:k});return}if(k<p||k>_||w){if(!this.changeScale(l,r))if(k=Math.max(Math.min(k,_),p),k!==h)this.setState({cellWidth:k,_cellWidth:k});else return}else this.setState({cellWidth:k,_cellWidth:k});const{_scales:b,_start:x,cellWidth:S,_weekStart:W}=this.getState(),T=D(b.minUnit,x,W),L=b.diff(m,T,"hour");typeof d>"u"&&(d=S);let $=Math.round(L*S)-d;$<0&&($=0),this.setState({scrollLeft:$,_scaleDate:m,_zoomOffset:d})}),n.on("sort-tasks",({key:r,order:i,add:d})=>{const c=this.getState(),{tasks:l,tree:h,_columns:f}=c;let u=c._sort;const g={key:r,order:i};let m=u?.length||0;m&&d?(u.forEach((y,k)=>{y.key===r&&(m=k)}),u[m]=g):u=[g],h.sort(u,f),this.setState({_sort:u,tree:h})}),n.on("filter-tasks",r=>{const{open:i,key:d,value:c}=r;let l=r.filter;const h=this.getState(),{tree:f,_columns:u}=h;let g=h.filterValues;d?g={...g,[d]:c}:Object.keys(r).length||(g={}),!l&&Object.values(g).some(m=>m||m===0)&&(l=Gn(g,u)),f.filterTree(l,i??!0),this.setState({tree:f,_isFiltered:!!l,filterValues:g})}),n.on("hotkey",({key:r,event:i,eventSource:d})=>{switch(r){case"arrowup":case"arrowdown":{const{selected:c,_tasks:l}=this.getState();i.preventDefault();const h=c.length;let f;if(r==="arrowup"?f=h?this.getPrevRow(c[h-1])?.id:l[l.length-1]?.id:f=h?this.getNextRow(c[h-1])?.id:l[0]?.id,f){const u=d==="chart"?"xy":!0,g=d;this.in.exec("select-task",{id:f,show:u,focus:g})}break}case"ctrl+c":{dt(this,"copy-task",null,null);break}case"ctrl+x":{dt(this,"cut-task",null,null);break}case"ctrl+v":{dt(this,"paste-task",null,null);break}case"ctrl+d":case"backspace":{i.preventDefault(),dt(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:r,height:i,scrollSize:d,ganttWidth:c})=>{if(c!=null){const f=this.getState();(c!==f._containerWidth||d!=null&&d!==f._scrollSize)&&this.syncLayout(c,d)}let l={};const h=this.getState();r>h._scales?.width&&(l=Pa(r,h)),this.setState({...l,_chartWidth:r,_chartHeight:i,_scrollSize:d})}),n.on("resize-grid",({width:r,section:i="grid",inProgress:d})=>{const c=i==="subGrid",l=this.getState();if(c&&!Bt(l.columns))return;const h=this._resizeStart??={panels:l._displayPanels??l.displayMode,gridWidth:l.gridWidth,subGridWidth:l.subGridWidth};d||(this._resizeStart=null);const f=l._containerWidth;if(f==null){this.setState(c?{subGridWidth:r}:{gridWidth:r});return}const u={...qt(l,f),...c?{subGridWidth:r}:{gridWidth:r},preferredGridWidth:h.gridWidth,preferredSubGridWidth:h.subGridWidth},g=c?d?mr:fr:d?gr:hr,{panels:m,...y}=g(h.panels,u);if(d){this.setState({...y,_displayPanels:m});return}this.setState(y),jt(m,h.panels)?jt(l._displayPanels,h.panels)||this.setState({_displayPanels:h.panels}):this.in.exec("set-display-mode",{mode:m})}),n.on("set-columns",({columns:r})=>{const i=this.getState().columns.map(d=>{const c=r.find(l=>l.id===d.id);return c?{...d,width:c.width,hidden:c.hidden,flexgrow:c.flexgrow}:d});nn(i),this.setState({columns:i})}),n.on("set-display-mode",({mode:r})=>{const i=this.getState();Bt(i.columns);let d=Nt(r);if(i._compactMode){this.setState({_displayPanels:Yt(d,i._displayPanels)});return}const c=i._containerWidth;c!=null&&(d=pr(i._displayPanels??i.displayMode,d,qt(i,c)));const l=!(i._displayPanels??i.displayMode).includes("grid")&&d.includes("grid");this.setState({displayMode:d,...l&&i.gridWidth<=cn(i)?{gridWidth:Lt(i.columns)}:{}}),this.resyncLayout()})}init(e){const n={...e},s=this.getState(),a=!!s.area,o=a?{}:{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:[],showConflicts:!1,_compactMode:!1,_containerWidth:null,_chartHeight:null};n.cellWidth&&(n._cellWidth=n.cellWidth),n.inclusiveEnd&&(n.durationUnit??"day")!=="day"&&(n.inclusiveEnd=!1);const r=n.columns??s.columns,i=r===!1?void 0:r;this.prepareLayoutConfig(n,s,i,a),n.unscheduledTasks=!1,n.inactiveTasks=!1,n.placeholderRow=!1,n.baselines=!1,n.markers=V,n._markers=V,n.undo=!1,n.schedule={},n.criticalPath=null,n.splitTasks=!1,n.summary={},n.rollups=!1,n._rollups={},n.slack=!1,n.resources=null,n._resources=[],n.assignments=[],n.calendar=null,n.calendars=[],n._calendar=null,n._calendars=new Map,n._composites=null,n.groupBy=null,n.wbs=null,n.progressLine=null,n._progressLine=null,n._progressLinePoints=null,n.deadlines=!1,n.sCurve=null,n._sCurve=null,n._sCurvePoints=null,n.conflicts=V,n.showConflicts=!1,n._conflicts=null;const d=this.changed(n,"tasks"),c=this.changed(n,"inclusiveEnd");this.resolveCalendars(n,s,d);const l="schedule"in n?n.schedule:s.schedule;this.changed(n,...xr.geometry)&&this.markGeometry("all");for(const h in n)h[0]!=="_"&&(this._prevConfig[h]=n[h]);if(d&&n.tasks){const h=new Yn(n.tasks),f={};mn(h,{durationUnit:n.durationUnit,splitTasks:n.splitTasks,unscheduledTasks:n.unscheduledTasks,inactiveTasks:n.inactiveTasks,schedule:l},u=>this.resolveTaskCalendar(u,f)),n.tasks=h}else n.tasks&&delete n.tasks;this.resetDatasetState(d),this._router.init({selected:V,markers:V,progressLine:!1,sCurve:!1,autoScale:!0,durationUnit:"day",inclusiveEnd:!1,highlightTime:null,focusTask:null,_sort:null,_resourceSort:null,conflicts:V,...o,...n}),n.displayMode&&this.resyncLayout(),c&&!d&&this.getState()._isFiltered&&this.in.exec("filter-tasks",{open:!0})}resetDatasetState(e,n,s){const a=this.getState();e&&(a._isFiltered&&(a.tree.filterTree(),this.setState({_isFiltered:!1,filterValues:{}})),a._sort&&this.setState({_sort:null}))}changed(e,...n){return n.some(s=>{const[a,o]=s.split(".");if(!(a in e))return!1;let r=this._prevConfig[a],i=e[a];return o&&(r=r?.[o],i=i?.[o]),r!==i&&!ct(r,i)})}prepareLayoutConfig(e,n,s,a){const o=s??an({resources:e.resources,wbs:e.wbs});!a||this.changed(e,"displayMode")?e.displayMode=Nt(e.displayMode):n.displayMode?.includes("subGrid")?e.displayMode=Nt(n.displayMode):delete e.displayMode,a||(e.gridWidth??=Lt(o),e.subGridWidth??=0)}resyncLayout(){const{_containerWidth:e,_scrollSize:n}=this.getState();e!=null&&this.syncLayout(e,n)}syncLayout(e,n){const s=this.getState(),a=ur(s,{width:e,scrollSize:n}),o={_containerWidth:e};n!=null&&(o._scrollSize=n),a.compactMode!==s._compactMode&&(o._compactMode=a.compactMode),a.displayPanels&&(o._displayPanels=a.displayPanels),a.gridWidth!==s.gridWidth&&(o.gridWidth=a.gridWidth),a.subGridWidth!==s.subGridWidth&&(o.subGridWidth=a.subGridWidth),this.setState(o)}setState(e,n){return this._router.setState(e,n)}setStateAsync(e){this._router.setStateAsync(e)}editedRows(e,n){if(n)return"all";const s=new Set([e]),a=this.getState().tasks.getSummaryId(e,!0);return Array.isArray(a)?a.forEach(o=>s.add(o)):a!=null&&s.add(a),s}markGeometry(e){if(e==="all"){this._pendingGeometry="all";return}if(e==="meta"){this._pendingGeometry===null&&(this._pendingGeometry="meta");return}if(this._pendingGeometry!=="all")if(this._pendingGeometry instanceof Set)for(const n of e)this._pendingGeometry.add(n);else this._pendingGeometry=new Set(e)}getTask(e){const{tree:n}=this.getState();return n.byId(e)}getLinkValidator(){return()=>null}getResource(e){const{resources:n}=this.getState();return n?.byId(e)}getHistory(){return this.getState().undo?this._modules.get("historyManager"):null}getCalendar(e){const{_calendar:n,_calendars:s}=this.getState();return s?.get(e)??n??void 0}buildHighlightTime(){return(e,n)=>{const s=this.getCalendar();return s&&(n==="day"||n==="hour")&&!s.isWorkingDay(e)?"wx-weekend":""}}getTaskCalendar(e){const n=this.getState();if(!(!n._calendar&&!n._calendars?.size))return this.resolveTaskCalendar(e,n)}resolveTaskCalendar(e,n){const{_calendar:s,_calendars:a}=n;return(o=>a?.get(o)??s??void 0)(e?.calendar)}indexAssignments(e){return{byTask:{},byResource:{}}}resolveCalendars(e,n,s){}getResourceCalendar(e){return this.getCalendar(e?.calendar)}getGrouping(){return this.getState().groupBy?.field?this._modules.get("groupManager"):null}serialize(e){const n=e?.data||"tasks";if(n==="calendars"){const{_calendars:a}=this.getState();return[...a.entries()].map(([o,r])=>({...r?.serialize?.()||{},...r?.css?{css:r.css}:{},id:o}))}const s=this.getState()[n];if(s){if(s instanceof se)return s.serialize();if(s instanceof _t)return s.map(a=>a)}return null}getTaskResources(e){const{_assignments:n,resources:s}=this.getState();if(!s||!n)return[];const a=n.byTask[e];return a?a.map(o=>{const r=s.byId(o.resource),i={...o};return delete i.resource,delete i.task,r?{...i,...r,assignmentId:o.id}:null}).filter(Boolean):[]}getResourceTasks(e){const{_assignments:n,tasks:s}=this.getState();if(!n)return[];const a=n.byResource[e];return a?a.map(o=>s.byId(o.task)||null).filter(Boolean):[]}changeScale(e,n){const s=e.level+n,a=e.levels[s];if(a){const{cellWidth:o,scales:r,_scales:i}=this.getState(),d=Ca(e,n,s,a,i.lengthUnit,r,o);return d._cellWidth=d.cellWidth,this.setState(d),!0}return!1}shouldExpandScale(e){const{start:n,end:s,_chartWidth:a,_scales:o,cellWidth:r}=this.getState();return n&&s&&a&&o?.width&&r?o.width/r*e<a:!1}applyOpen(e,n,s){e&&(e.lazy?(e.open=n,n&&this.in.exec("request-data",{id:e.id,...s?{nested:!0}:null})):e.data?.length&&(e.open=n))}resetSummaryDates(e,n,s){if(this.deriveSummary(e,n,s)){const a=this.getState().tasks.getSummaryId(e);a&&this.resetSummaryDates(a,n,s)}}deriveSummary(e,n,s){const{tasks:a,durationUnit:o,splitTasks:r,unscheduledTasks:i,inactiveTasks:d,schedule:c}=this.getState(),l=a.byId(e),h=l.data;if(l.type!=="summary"||!h?.length)return!1;const f=U(l,{schedule:c}),u=At({...l,start:void 0,end:void 0,duration:void 0},i,d),g=!f&&(u.start?!F(l.start,u.start)||!F(l.end,u.end):i&&!!l.start),m=!!u.inactive!=!!l.inactive;return!g&&!m?!1:(g||(u.start=l.start,u.end=l.end,u.duration=l.duration),n?(s&&!s.has(e)&&s.set(e,{start:l.start,end:l.end,inactive:l.inactive}),this.in.exec("update-task",{id:e,task:u,eventSource:n,...s?{inProgress:!0,skipProvider:!0}:{}})):(q(u,{durationUnit:o,unscheduledTasks:i},this.getTaskCalendar(u)),a.update(e,u)),!0)}moveSummaryKids(e,n,s){const{unscheduledTasks:a,schedule:o}=this.getState();e.data.forEach(r=>{o?.auto&&r.manual||(a&&r.unscheduled||this.in.exec("update-task",{id:r.id,task:{start:n(r.start,r)},eventSource:s}),r.data?.length&&(this.moveSummaryKids(r,n,s),r.type==="summary"&&this.deriveSummary(r.id,s)))})}getPlaceholderRow(){return this._placeholderRow||(this._placeholderRow=Xa()),this._placeholderRow}getNextRow(e){const n=this.getState()._tasks,s=n.findIndex(a=>a.id===e);return n[s+1]}getPrevRow(e){const n=this.getState()._tasks,s=n.findIndex(a=>a.id===e);return n[s-1]}scrollToTask(e,n){const{_chartWidth:s,_chartHeight:a,scrollLeft:o,scrollTop:r,cellWidth:i,cellHeight:d,_tasks:c,_scrollSize:l}=this.getState(),h=c.findIndex(k=>k.id===e||k.$id===e);if(h<0)return;const f=c[h],u=f.$placeholder?f:this.getTask(f.id),g={};if(n?.toString().indexOf("x")!==-1){if(u.$x+u.$w/2<o)g.left=Math.max(u.$x-(i||0),0);else if(u.$x+u.$w/2>=s+o){const k=s<u.$w?i:u.$w;g.left=u.$x-s+k}}const m=h*d;let y=null;m<r?y=m:a!=null&&m+d>r+a&&(y=m-a+d+l),y!==null&&(g.top=Math.max(y,0)),this.in.exec("scroll-chart",g)}}function Wr(t,e,n,s){if(typeof document>"u")return"";const a=document.createElement("canvas");{const o=Tr(a,t,e,1,n);$r(o,s,0,t,0,e)}return a.toDataURL()}function Tr(t,e,n,s,a){t.setAttribute("width",(e*s).toString()),t.setAttribute("height",(n*s).toString());const o=t.getContext("2d");return o.translate(-.5,-.5),o.strokeStyle=a,o}function $r(t,e,n,s,a,o){t.beginPath(),t.moveTo(s,a),t.lineTo(s,o),e==="full"&&t.lineTo(n,o),t.stroke()}const Rt=[{id:"task",label:"Task"},{id:"summary",label:"Summary task"},{id:"milestone",label:"Milestone"}];function Xt(t){return!!t&&!t.$group&&typeof t.$groupValue<"u"}function _n(t){return!!t?.$group}function Ir(t){let e=bn.map(a=>({...a}));const n=t?.taskTypes||Rt,s=e.find(a=>a.id==="convert-task");return s.data=[],n.forEach(a=>{(!t?.summary?.autoConvert||a.id!=="summary")&&s.data.push(s.dataFactory(a))}),e}function Qt(t){return t.map(e=>{switch(e.data&&Qt(e.data),e.id){case"add-task:before":case"move-task:up":e.isDisabled=(n,s)=>Cr(n,s)||Xt(n)||_n(n);break;case"move-task:down":e.isDisabled=(n,s)=>Pr(n,s)||Xt(n)||_n(n);break;case"indent-task:add":e.isDisabled=(n,s)=>Er(n,s)===n.parent;break;case"indent-task:remove":e.isDisabled=n=>Dr(n);break}return e})}function Dr(t){return t.parent===0}function Cr(t,e){const{_tasks:n}=e;return n[0]?.id===t.id}function Pr(t,e){const{_tasks:n}=e;return(n[n.length-1]?.$placeholder?n[n.length-2]:n[n.length-1])?.id===t.id}function Er(t,e){const{_tasks:n}=e,s=n.findIndex(a=>a.id===t.id);return n[s-1]?.id??t.parent}function Or(t){return t&&typeof t=="object"}function Ar(t){return!t.selected||t.selected.length<2}const Gr=t=>e=>e.type===t||t==="summary"&&Xt(e),bn=Qt([{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:t=>({id:`convert-task:${t.id}`,text:`${t.label}`,isDisabled:Gr(t.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:(t,e,n)=>Ar(e)&&Or(n)}]);function Hr(t){return[...wn]}const wn=Qt([{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 Sn(t){return t.type==="summary"}function Vt(t,e){return Sn(t)&&!U(t,e)}function Jt(t){return t.type==="milestone"}function pt(t){return typeof t.parent>"u"}function vn(t,e){return e.unscheduledTasks&&t.unscheduled}function zr(t){const e=xn.map(s=>({...s})),n=e.find(s=>s.key==="type");return n.options=t?.taskTypes||Rt,e}const xn=[{key:"text",comp:"text",label:"Name",config:{placeholder:"Add task name"}},{key:"details",comp:"textarea",label:"Description",config:{placeholder:"Add description"}},{key:"type",comp:"select",label:"Type",isHidden:t=>pt(t)},{key:"start",comp:"date",label:"Start date",config:{format:"%d-%m-%Y"},isHidden:(t,e)=>Vt(t,e)},{key:"end",comp:"date",label:"End date",config:{format:"%d-%m-%Y"},isHidden:(t,e)=>Vt(t,e)||Jt(t),isDisabled:(t,e)=>vn(t,e)},{key:"duration",comp:"counter",label:"Duration",config:{min:1},isHidden:(t,e)=>Vt(t,e)||Jt(t),isDisabled:(t,e)=>vn(t,e)},{key:"progress",comp:"slider",label:"Progress",config:{min:1,max:100},isHidden:t=>Jt(t)||pt(t)},{key:"links",comp:"links",label:"",batch:"links",isHidden:t=>pt(t)}];function Kt(t,e){return!t||!Array.isArray(t)?t:t.filter(e).map(n=>n.items&&Array.isArray(n.items)?{...n,items:Kt(n.items,e)}:{...n})}const Fr=[{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 Lr(t){let e=Fr.map(s=>({...s}));t?.autoSave!==!1&&(e=Kt(e,s=>s.id!=="save"));const n=e.find(s=>s.id==="tabs");return n?.options&&(n.options=[...n.options]),t?.resources&&n?.options.push({id:"resources",label:"Resources",isHidden:s=>Sn(s)||pt(s)}),t?.splitTasks&&n?.options.push({id:"segments",label:"Segments",isHidden:s=>!s.segments?.length}),e}function Br(t,e){return 0}function Nr(t,e){return null}const Yr=[{id:"snet",label:"Start no earlier than"},{id:"snlt",label:"Start no later than"},{id:"fnet",label:"Finish no earlier than"},{id:"fnlt",label:"Finish no later than"},{id:"mso",label:"Must start on"},{id:"mfo",label:"Must finish on"}];function Ur(t,e){return[]}function jr(t,e,n){return""}function qr(t,e,n){return[]}function Rr(t,e,n){return[]}function Xr(t,e){return null}function Qr(t){return null}export{Mr as DataStore,zt as PLACEHOLDER_ROW_ID,Oa as calcScaleCellDate,fn as calculateArea,Qr as createCalendar,sn as defaultColumns,Yr as defaultConstraintTypes,xn as defaultEditorItems,bn as defaultMenuOptions,Rt as defaultTaskTypes,wn as defaultToolbarButtons,Fa as extendDragOptions,Kt as filterEditorButtons,De as format,ze as formatDay,Ka as fromInclusiveTask,I as getAdder,Ze as getDateEditorButtons,an as getDefaultColumns,Lt as getDefaultGridWidth,gt as getDiffer,Lr as getEditorButtons,zr as getEditorItems,tn as getHeaderLength,Ur as getHistogramBars,jr as getHistogramCapacityPath,Ir as getMenuOptions,Ra as getPlaceholderTask,ar as getResourceColumns,Rr as getResourceHistogramColumns,qr as getResourceLoadColumns,Br as getSegmentProgress,Hr as getToolbarButtons,D as getUnitStart,Wr as grid,dt as handleAction,hn as isHandledAction,j as isPlaceholder,za as isSegmentMoveAllowed,Ht as normalizeLinks,rr as normalizeResourceColumns,Da as normalizeZoom,qa as placeLink,Sr as prepareEditTask,Wa as registerScaleUnit,Xr as resolveResourceHistogramBar,Nr as resolveSCurvePoint,La as setTaskResources,Va as toInclusiveTask,or as toggleChartSubGrid,ir as toggleGridChart};
|