@timelinekit/core 1.0.8 → 1.0.10
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/README.md +28 -14
- package/dist/ganttchart/model/task-list-adapter.d.ts +2 -0
- package/dist/ganttchart/model/task-list.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/resourcescheduler/model/scheduler-data-adapter.d.ts +1 -0
- package/dist/styles/gc.css +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/table/table-data-source.d.ts +1 -0
- package/dist/table/table.d.ts +1 -0
- package/package.json +1 -1
- package/styles/gc.scss +1 -1
package/dist/index.js
CHANGED
|
@@ -3,4 +3,4 @@ import{Subject as e,BehaviorSubject as t,Subscription as r,merge as i}from"rxjs"
|
|
|
3
3
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function De(e,t){if(t<=ve)throw new Error("mod: expected positive modulus, got "+t);const r=e%t;return r>=ve?r:t+r}function Se(e,t,r){if(t<ve)throw new Error("pow2: expected non-negative exponent, got "+t);let i=e;for(;t-- >ve;)i*=i,i%=r;return i}function $e(e,t){if(e===ve)throw new Error("invert: expected non-zero number");if(t<=ve)throw new Error("invert: expected positive modulus, got "+t);let r=De(e,t),i=t,s=ve,n=fe;for(;r!==ve;){const e=i/r,t=i-r*e,a=s-n*e;i=r,r=t,s=n,n=a}if(i!==fe)throw new Error("invert: does not exist");return De(s,t)}function Re(e,t,r){const i=e;if(!i.eql(i.sqr(t),r))throw new Error("Cannot find square root")}function Me(e,t){const r=e,i=(r.ORDER+fe)/we,s=r.pow(t,i);return Re(r,s,t),s}function Le(e,t){const r=e,i=(r.ORDER-Te)/xe,s=r.mul(t,ye),n=r.pow(s,i),a=r.mul(t,n),o=r.mul(r.mul(a,ye),n),l=r.mul(a,r.sub(o,r.ONE));return Re(r,l,t),l}function Ie(e){if(e<be)throw new Error("sqrt is not defined for small field");let t=e-fe,r=0;for(;t%ye===ve;)t/=ye,r++;let i=ye;const s=Ne(e);for(;1===Be(s,i);)if(i++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(1===r)return Me;let n=s.pow(i,t);const a=(t+fe)/ye;return function(e,i){const s=e;if(s.is0(i))return i;if(1!==Be(s,i))throw new Error("Cannot find square root");let o=r,l=s.mul(s.ONE,n),h=s.pow(i,t),d=s.pow(i,a);for(;!s.eql(h,s.ONE);){if(s.is0(h))return s.ZERO;let e=1,t=s.sqr(h);for(;!s.eql(t,s.ONE);)if(e++,t=s.sqr(t),e===o)throw new Error("Cannot find square root");const r=fe<<BigInt(o-e-1),i=s.pow(l,r);o=e,l=s.sqr(i),h=s.mul(h,l),d=s.mul(d,i)}return d}}function Pe(e){return e%we===be?Me:e%xe===Te?Le:e%Ee===ke?function(e){const t=Ne(e),r=Ie(e),i=r(t,t.neg(t.ONE)),s=r(t,i),n=r(t,t.neg(i)),a=(e+Ce)/Ee;return(e,t)=>{const r=e;let o=r.pow(t,a),l=r.mul(o,i);const h=r.mul(o,s),d=r.mul(o,n),c=r.eql(r.sqr(l),t),u=r.eql(r.sqr(h),t);o=r.cmov(o,l,c),l=r.cmov(d,h,u);const g=r.eql(r.sqr(l),t),m=r.cmov(o,l,g);return Re(r,m,t),m}}(e):Ie(e)}const Ae=(e,t)=>(De(e,t)&fe)===fe,He=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ve(e,t,r=!1){const i=e,s=new Array(t.length).fill(r?i.ZERO:void 0),n=t.reduce((e,t,r)=>i.is0(t)?e:(s[r]=e,i.mul(e,t)),i.ONE),a=i.inv(n);return t.reduceRight((e,t,r)=>i.is0(t)?e:(s[r]=i.mul(e,s[r]),i.mul(e,t)),a),s}function Be(e,t){const r=e,i=(r.ORDER-fe)/ye,s=r.pow(t,i),n=r.eql(s,r.ONE),a=r.eql(s,r.ZERO),o=r.eql(s,r.neg(r.ONE));if(!n&&!a&&!o)throw new Error("invalid Legendre symbol result");return n?1:a?0:-1}function Fe(e,t){if(void 0!==t&&Q(t),e<=ve)throw new Error("invalid n length: expected positive n, got "+e);if(void 0!==t&&t<1)throw new Error("invalid n length: expected positive bit length, got "+t);const r=function(e){if(e<se)throw new Error("expected non-negative bigint, got "+e);let t;for(t=0;e>se;e>>=ne,t+=1);return t}(e);if(void 0!==t&&t<r)throw new Error(`invalid n length: expected bit length (${r}) >= n.length (${t})`);const i=void 0!==t?t:r;return{nBitLength:i,nByteLength:Math.ceil(i/8)}}const ze=new WeakMap;class Oe{ORDER;BITS;BYTES;isLE;ZERO=ve;ONE=fe;_lengths;_mod;constructor(e,t={}){if(e<=fe)throw new Error("invalid field: expected ORDER > 1, got "+e);let r;this.isLE=!1,null!=t&&"object"==typeof t&&("number"==typeof t.BITS&&(r=t.BITS),"function"==typeof t.sqrt&&Object.defineProperty(this,"sqrt",{value:t.sqrt,enumerable:!0}),"boolean"==typeof t.isLE&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=Object.freeze(t.allowedLengths.slice())),"boolean"==typeof t.modFromBytes&&(this._mod=t.modFromBytes));const{nBitLength:i,nByteLength:s}=Fe(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=i,this.BYTES=s,Object.freeze(this)}create(e){return De(e,this.ORDER)}isValid(e){if("bigint"!=typeof e)throw new TypeError("invalid field element: expected bigint, got "+typeof e);return ve<=e&&e<this.ORDER}is0(e){return e===ve}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&fe)===fe}neg(e){return De(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return De(e*e,this.ORDER)}add(e,t){return De(e+t,this.ORDER)}sub(e,t){return De(e-t,this.ORDER)}mul(e,t){return De(e*t,this.ORDER)}pow(e,t){return function(e,t,r){const i=e;if(r<ve)throw new Error("invalid exponent, negatives unsupported");if(r===ve)return i.ONE;if(r===fe)return t;let s=i.ONE,n=t;for(;r>ve;)r&fe&&(s=i.mul(s,n)),n=i.sqr(n),r>>=fe;return s}(this,e,t)}div(e,t){return De(e*$e(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return $e(e,this.ORDER)}sqrt(e){let t=ze.get(this);return t||ze.set(this,t=Pe(this.ORDER)),t(this,e)}toBytes(e){return this.isLE?(t=e,r=this.BYTES,de(t,r).reverse()):de(e,this.BYTES);var t,r}fromBytes(e,t=!1){J(e);const{_lengths:r,BYTES:i,isLE:s,ORDER:n,_mod:a}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>i)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const t=new Uint8Array(i);t.set(e,s?0:t.length-e.length),e=t}if(e.length!==i)throw new Error("Field.fromBytes: expected "+i+" bytes, got "+e.length);let o=s?he(e):function(e){return le(p(e))}(e);if(a&&(o=De(o,n)),!t&&!this.isValid(o))throw new Error("invalid field element: outside of range 0..ORDER");return o}invertBatch(e){return Ve(this,e)}cmov(e,t,r){return ae(r,"condition"),r?t:e}}function Ne(e,t={}){return new Oe(e,t)}
|
|
4
4
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */Object.freeze(Oe.prototype);const We=BigInt(0),Ue=BigInt(1);function je(e,t){const r=t.negate();return e?r:t}function Xe(e,t){const r=Ve(e.Fp,t.map(e=>e.Z));return t.map((t,i)=>e.fromAffine(t.toAffine(r[i])))}function Ye(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+e)}function Ke(e,t){Ye(e,t);const r=2**e;return{windows:Math.ceil(t/e)+1,windowSize:2**(e-1),mask:(ne<<BigInt(e))-ne,maxNumber:r,shiftBy:BigInt(e)}}function Ze(e,t,r){const{windowSize:i,mask:s,maxNumber:n,shiftBy:a}=r;let o=Number(e&s),l=e>>a;o>i&&(o-=n,l+=Ue);const h=t*i;return{nextN:l,offset:h+Math.abs(o)-1,isZero:0===o,isNeg:o<0,isNegF:t%2!=0,offsetF:h}}const Ge=new WeakMap,qe=new WeakMap;function _e(e){return qe.get(e)||1}function Je(e){if(e!==We)throw new Error("invalid wNAF")}class Qe{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,r=this.ZERO){let i=e;for(;t>We;)t&Ue&&(r=r.add(i)),i=i.double(),t>>=Ue;return r}precomputeWindow(e,t){const{windows:r,windowSize:i}=Ke(t,this.bits),s=[];let n=e,a=n;for(let e=0;e<r;e++){a=n,s.push(a);for(let e=1;e<i;e++)a=a.add(n),s.push(a);n=a.double()}return s}wNAF(e,t,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let i=this.ZERO,s=this.BASE;const n=Ke(e,this.bits);for(let e=0;e<n.windows;e++){const{nextN:a,offset:o,isZero:l,isNeg:h,isNegF:d,offsetF:c}=Ze(r,e,n);r=a,l?s=s.add(je(d,t[c])):i=i.add(je(h,t[o]))}return Je(r),{p:i,f:s}}wNAFUnsafe(e,t,r,i=this.ZERO){const s=Ke(e,this.bits);for(let e=0;e<s.windows&&r!==We;e++){const{nextN:n,offset:a,isZero:o,isNeg:l}=Ze(r,e,s);if(r=n,!o){const e=t[a];i=i.add(l?e.negate():e)}}return Je(r),i}getPrecomputes(e,t,r){let i=Ge.get(t);return i||(i=this.precomputeWindow(t,e),1!==e&&("function"==typeof r&&(i=r(i)),Ge.set(t,i))),i}cached(e,t,r){const i=_e(e);return this.wNAF(i,this.getPrecomputes(i,e,r),t)}unsafe(e,t,r,i){const s=_e(e);return 1===s?this._unsafeLadder(e,t,i):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),t,i)}createCache(e,t){Ye(t,this.bits),qe.set(e,t),Ge.delete(e)}hasCache(e){return 1!==_e(e)}}function et(e,t,r){if(t){if(t.ORDER!==e)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return function(e){if(me(e,He.reduce((e,t)=>(e[t]="function",e),{ORDER:"bigint",BYTES:"number",BITS:"number"})),oe(e.BYTES,"BYTES"),oe(e.BITS,"BITS"),e.BYTES<1||e.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(e.ORDER<=fe)throw new Error("invalid field: expected ORDER > 1, got "+e.ORDER)}(t),t}return Ne(e,{isLE:r})}function tt(e,t){return function(r){const i=e(r);return{secretKey:i,publicKey:t(i)}}}
|
|
5
5
|
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const rt=BigInt(0),it=BigInt(1),st=BigInt(2),nt=BigInt(8);function at(e,t={}){const r=t,i=function(e,t,r={},i){if(void 0===i&&(i="edwards"===e),!t||"object"!=typeof t)throw new Error(`expected valid ${e} CURVE object`);for(const e of["p","n","h"]){const r=t[e];if(!("bigint"==typeof r&&r>We))throw new Error(`CURVE.${e} must be positive bigint`)}const s=et(t.p,r.Fp,i),n=et(t.n,r.Fn,i),a=["Gx","Gy","a","d"];for(const e of a)if(!s.isValid(t[e]))throw new Error(`CURVE.${e} must be valid field element of CURVE.Fp`);return{CURVE:t=Object.freeze(Object.assign({},t)),Fp:s,Fn:n}}("edwards",e,r,r.FpFnLE),{Fp:s,Fn:n}=i;let a=i.CURVE;const{h:o}=a;me(r,{},{uvRatio:"function"});const l=st<<BigInt(8*n.BYTES)-it,h=e=>s.create(e),d=void 0===r.uvRatio?(e,t)=>{try{return{isValid:!0,value:s.sqrt(s.div(e,t))}}catch(e){return{isValid:!1,value:rt}}}:r.uvRatio;if(!function(e,t,r,i){const s=e.sqr(r),n=e.sqr(i),a=e.add(e.mul(t.a,s),n),o=e.add(e.ONE,e.mul(t.d,e.mul(s,n)));return e.eql(a,o)}(s,a,a.Gx,a.Gy))throw new Error("bad curve params: generator point");function c(e,t,r=!1){return ge("coordinate "+e,t,r?it:rt,l),t}function u(e){if(!(e instanceof g))throw new Error("EdwardsPoint expected")}class g{static BASE=new g(a.Gx,a.Gy,it,h(a.Gx*a.Gy));static ZERO=new g(rt,it,it,rt);static Fp=s;static Fn=n;X;Y;Z;T;constructor(e,t,r,i){this.X=c("x",e),this.Y=c("y",t),this.Z=c("z",r,!0),this.T=c("t",i),Object.freeze(this)}static CURVE(){return a}static fromAffine(e){if(e instanceof g)throw new Error("extended point not allowed");const{x:t,y:r}=e||{};return c("x",t),c("y",r),new g(t,r,it,h(t*r))}static fromBytes(e,t=!1){const r=s.BYTES,{a:i,d:n}=a;e=ce(J(e,r,"point")),ae(t,"zip215");const o=ce(e),c=e[r-1];o[r-1]=-129&c;const u=he(o),m=t?l:s.ORDER;ge("point.y",u,rt,m);const p=h(u*u),v=h(p-it),f=h(n*p-i);let{isValid:y,value:b}=d(v,f);if(!y)throw new Error("bad point: invalid y coordinate");const w=(b&it)===it,T=!!(128&c);if(!t&&b===rt&&T)throw new Error("bad point: x=0 and x_0=1");return T!==w&&(b=h(-b)),g.fromAffine({x:b,y:u})}static fromHex(e,t=!1){return g.fromBytes((e=>x(e))(e),t)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(e=8,t=!0){return m.createCache(this,e),t||this.multiply(st),this}assertValidity(){const{a:e,d:t}=a;if(this.is0())throw new Error("bad point: ZERO");const{X:r,Y:i,Z:s,T:n}=this,o=h(r*r),l=h(i*i),d=h(s*s),c=h(d*d),u=h(o*e);if(h(d*h(u+l))!==h(c+h(t*h(o*l))))throw new Error("bad point: equation left != right (1)");if(h(r*i)!==h(s*n))throw new Error("bad point: equation left != right (2)")}equals(e){u(e);const{X:t,Y:r,Z:i}=this,{X:s,Y:n,Z:a}=e,o=h(t*a),l=h(s*i),d=h(r*a),c=h(n*i);return o===l&&d===c}is0(){return this.equals(g.ZERO)}negate(){return new g(h(-this.X),this.Y,this.Z,h(-this.T))}double(){const{a:e}=a,{X:t,Y:r,Z:i}=this,s=h(t*t),n=h(r*r),o=h(st*h(i*i)),l=h(e*s),d=t+r,c=h(h(d*d)-s-n),u=l+n,m=u-o,p=l-n,v=h(c*m),f=h(u*p),y=h(c*p),b=h(m*u);return new g(v,f,b,y)}add(e){u(e);const{a:t,d:r}=a,{X:i,Y:s,Z:n,T:o}=this,{X:l,Y:d,Z:c,T:m}=e,p=h(i*l),v=h(s*d),f=h(o*r*m),y=h(n*c),b=h((i+s)*(l+d)-p-v),w=y-f,T=y+f,C=h(v-t*p),x=h(b*w),k=h(T*C),E=h(b*C),D=h(w*T);return new g(x,k,D,E)}subtract(e){return u(e),this.add(e.negate())}multiply(e){if(!n.isValidNot0(e))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:t,f:r}=m.cached(this,e,e=>Xe(g,e));return Xe(g,[t,r])[0]}multiplyUnsafe(e){if(!n.isValid(e))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return e===rt?g.ZERO:this.is0()||e===it?this:m.unsafe(this,e,e=>Xe(g,e))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return m.unsafe(this,a.n).is0()}toAffine(e){let t=e;const{X:r,Y:i,Z:n}=this,a=this.is0();null==t&&(t=a?nt:s.inv(n));const o=h(r*t),l=h(i*t),d=s.mul(n,t);if(a)return{x:rt,y:it};if(d!==it)throw new Error("invZ was invalid");return{x:o,y:l}}clearCofactor(){return o===it?this:this.multiplyUnsafe(o)}toBytes(){const{x:e,y:t}=this.toAffine(),r=s.toBytes(t);return r[r.length-1]|=e&it?128:0,r}toHex(){return ee(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const m=new Qe(g,n.BITS);return n.BITS>=8&&g.BASE.precompute(8),Object.freeze(g.prototype),Object.freeze(g),g}class ot{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){this.ep=e}static fromBytes(e){pe()}static fromHex(e){pe()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(e){return this.ep.toAffine(e)}toHex(){return ee(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,t){return this.ep.precompute(e,t),this}}function lt(e,t,r={}){if("function"!=typeof t)throw new Error('"hash" function param is required');const i=t,s=r;me(s,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",zip215:"boolean",mapToCurve:"function"});const{prehash:n}=s,{BASE:a,Fp:o,Fn:l}=e,h=i.outputLen,d=2*o.BYTES;if(void 0!==h&&(oe(h,"hash.outputLen"),h!==d))throw new Error(`hash.outputLen must be ${d}, got ${h}`);const c=void 0===s.randomBytes?ie:s.randomBytes,u=void 0===s.adjustScalarBytes?e=>e:s.adjustScalarBytes,g=void 0===s.domain?(e,t,r)=>{if(ae(r,"phflag"),t.length||r)throw new Error("Contexts/pre-hash are not supported");return e}:s.domain;function m(e){return l.create(he(e))}function p(e){const{head:t,prefix:r,scalar:s}=function(e){const t=w.secretKey;J(e,w.secretKey,"secretKey");const r=J(i(e),2*t,"hashedSecretKey"),s=u(r.slice(0,t));return{head:s,prefix:r.slice(t,2*t),scalar:m(s)}}(e),n=a.multiply(s),o=n.toBytes();return{head:t,prefix:r,scalar:s,point:n,pointBytes:o}}function v(e){return p(e).pointBytes}function f(e=Uint8Array.of(),...t){const r=te(...t);return m(i(g(r,J(e,void 0,"context"),!!n)))}const y={zip215:s.zip215};const b=o.BYTES,w={secretKey:b,publicKey:b,signature:2*b,seed:b};function T(e){return e=void 0===e?c(w.seed):e,J(e,w.seed,"seed")}const C={getExtendedPublicKey:p,randomSecretKey:T,isValidSecretKey:function(e){return re(e)&&e.length===w.secretKey},isValidPublicKey:function(t,r){try{return!!e.fromBytes(t,void 0===r?y.zip215:r)}catch(e){return!1}},toMontgomery(t){const{y:r}=e.fromBytes(t),i=w.publicKey,s=32===i;if(!s&&57!==i)throw new Error("only defined for 25519 and 448");const n=s?o.div(it+r,it-r):o.div(r-it,r+it);return o.toBytes(n)},toMontgomerySecret(e){const t=w.secretKey;J(e,t);const r=i(e.subarray(0,t));return u(r).subarray(0,t)}};return Object.freeze(w),Object.freeze(C),Object.freeze({keygen:tt(T,v),getPublicKey:v,sign:function(e,t,r={}){e=J(e,void 0,"message"),n&&(e=n(e));const{prefix:i,scalar:s,pointBytes:o}=p(t),h=f(r.context,i,e),d=a.multiply(h).toBytes(),c=f(r.context,d,o,e),u=l.create(h+c*s);if(!l.isValid(u))throw new Error("sign failed: invalid s");const g=te(d,l.toBytes(u));return J(g,w.signature,"result")},verify:function(t,r,i,s=y){const{context:o}=s,l=void 0===s.zip215?!!y.zip215:s.zip215,h=w.signature;t=J(t,h,"signature"),r=J(r,void 0,"message"),i=J(i,w.publicKey,"publicKey"),void 0!==l&&ae(l,"zip215"),n&&(r=n(r));const d=h/2,c=t.subarray(0,d),u=he(t.subarray(d,h));let g,m,p;try{g=e.fromBytes(i,l),m=e.fromBytes(c,l),p=a.multiplyUnsafe(u)}catch(e){return!1}if(!l&&g.isSmallOrder())return!1;const v=f(o,c,i,r);return m.add(g.multiplyUnsafe(v)).subtract(p).clearCofactor().is0()},utils:C,Point:e,lengths:w})}
|
|
6
|
-
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const ht=BigInt(0),dt=BigInt(1),ct=BigInt(2),ut=BigInt(5),gt=BigInt(8),mt=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),pt=(()=>({p:mt,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:gt,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")}))();function vt(e){return e[0]&=248,e[31]&=127,e[31]|=64,e}const ft=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function yt(e,t){const r=mt,i=De(t*t*t,r),s=function(e){const t=BigInt(10),r=BigInt(20),i=BigInt(40),s=BigInt(80),n=mt,a=e*e%n*e%n,o=Se(a,ct,n)*a%n,l=Se(o,dt,n)*e%n,h=Se(l,ut,n)*l%n,d=Se(h,t,n)*h%n,c=Se(d,r,n)*d%n,u=Se(c,i,n)*c%n,g=Se(u,s,n)*u%n,m=Se(g,s,n)*u%n,p=Se(m,t,n)*h%n;return{pow_p_5_8:Se(p,ct,n)*e%n,b2:a}}(e*De(i*i*t,r)).pow_p_5_8;let n=De(e*i*s,r);const a=De(t*n*n,r),o=n,l=De(n*ft,r),h=a===e,d=a===De(-e,r),c=a===De(-e*ft,r);return h&&(n=o),(d||c)&&(n=l),Ae(n,r)&&(n=De(-n,r)),{isValid:h||d,value:n}}const bt=at(pt,{uvRatio:yt}),wt=(()=>bt.Fp)(),Tt=(()=>bt.Fn)();function Ct(e){return lt(bt,_,Object.assign({adjustScalarBytes:vt,zip215:!0},e))}const xt=Ct({}),kt=ft,Et=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Dt=e=>yt(dt,e),St=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class $t extends ot{static BASE=(()=>new $t(bt.BASE))();static ZERO=(()=>new $t(bt.ZERO))();static Fp=(()=>wt)();static Fn=(()=>Tt)();constructor(e){super(e)}static fromAffine(e){return new $t(bt.fromAffine(e))}assertSame(e){if(!(e instanceof $t))throw new Error("RistrettoPoint expected")}init(e){return new $t(e)}static fromBytes(e){h(e,32);const{a:t,d:r}=pt,i=mt,s=e=>wt.create(e),n=(e=>wt.create(he(e)&St))(e);if(!function(e,t){if(e=J(e),t=J(t),e.length!==t.length)return!1;let r=0;for(let i=0;i<e.length;i++)r|=e[i]^t[i];return 0===r}(wt.toBytes(n),e)||Ae(n,i))throw new Error("invalid ristretto255 encoding 1");const a=s(n*n),o=s(dt+t*a),l=s(dt-t*a),d=s(o*o),c=s(l*l),u=s(t*r*d-c),{isValid:g,value:m}=Dt(s(u*c)),p=s(m*l),v=s(m*p*u);let f=s((n+n)*p);Ae(f,i)&&(f=s(-f));const y=s(o*v),b=s(f*y);if(!g||Ae(b,i)||y===ht)throw new Error("invalid ristretto255 encoding 2");return new $t(new bt(f,y,dt,b))}static fromHex(e){return $t.fromBytes(x(e))}toBytes(){let{X:e,Y:t,Z:r,T:i}=this.ep;const s=mt,n=e=>wt.create(e),a=n(n(r+t)*n(r-t)),o=n(e*t),l=n(o*o),{value:h}=Dt(n(a*l)),d=n(h*a),c=n(h*o),u=n(d*c*i);let g;if(Ae(i*u,s)){let r=n(t*kt),i=n(e*kt);e=r,t=i,g=n(d*Et)}else g=c;Ae(e*u,s)&&(t=n(-t));let m=n((r-t)*g);return Ae(m,s)&&(m=n(-m)),wt.toBytes(m)}equals(e){this.assertSame(e);const{X:t,Y:r}=this.ep,{X:i,Y:s}=e.ep,n=e=>wt.create(e),a=n(t*s)===n(r*i),o=n(r*s)===n(t*i);return a||o}is0(){return this.equals($t.ZERO)}}Object.freeze($t.BASE),Object.freeze($t.ZERO),Object.freeze($t.prototype),Object.freeze($t);function Rt(e){if(!e.startsWith("TK-"))return null;var t=e.substring(3),r=t.lastIndexOf(".");if(-1===r)return null;var i=t.substring(0,r),s=Lt(t.substring(r+1)),n=Lt("rDZAxa9-lLKBmLtt6IZXQpmb6zPwuIcTI6BXpCVsnU8"),a=function(e){for(var t=[],r=0;r<e.length;r++){var i=e.charCodeAt(r);i<128?t.push(i):i<2048?t.push(192|i>>6,128|63&i):t.push(224|i>>12,128|i>>6&63,128|63&i)}return new Uint8Array(t)}(i);if(64!==s.length||32!==n.length||0===a.length)return null;try{if(!xt.verify(s,a,n))return null}catch{return null}try{for(var o=Lt(i),l="",h=0;h<o.length;h++)l+=String.fromCharCode(o[h]);var d=JSON.parse(l);return"number"!=typeof d.t||"number"!=typeof d.e||"string"!=typeof d.v||"string"!=typeof d.h||void 0!==d.s&&"string"!=typeof d.s?null:d}catch{return null}}var Mt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function Lt(e){e=e.replace(/=+$/,"");for(var t=[],r=0,i=0,s=0;s<e.length;s++){var n=Mt.indexOf(e[s]);if(-1===n)return new Uint8Array(0);r=r<<6|n,(i+=6)>=8&&(i-=8,t.push(r>>i&255))}return new Uint8Array(t)}var It=Math.floor(new Date("2025-05-12").getTime()/1e3),Pt=["suite","gantt","scheduler","calendar"];class At{static#e;#t=s.Free;#r="suite";#i=!1;#s=new e;static get(){return At.#e||(At.#e=new At),At.#e}setLicenseKey(e){var t=Rt(e);return t?"1"!==t.v&&t.e<It?(console.warn("[TimelineKit] License key does not cover this major version. Please renew your subscription to use v1."),this.#t=s.Free,this.#r="suite",this.#i=!1,void this.#s.next()):(this.#t=t.t,this.#r=t.s&&-1!==Pt.indexOf(t.s)?t.s:"suite",this.#i=!0,void this.#s.next()):(console.warn("[TimelineKit] Invalid license key."),this.#t=s.Free,this.#r="suite",this.#i=!1,void this.#s.next())}isAvailable(e){return function(e,t,r){if(t<s.Pro)return!1;if(!r||"suite"===r)return!0;var i=a[e];return null===i||i===r}(e,this.#t,this.#r)}get currentTier(){return this.#t}get scope(){return this.#r}get isValid(){return this.#i}get showWatermark(){return this.#t<s.Pro}showWatermarkFor(e){return this.#t<s.Pro||"suite"!==this.#r&&this.#r!==e}get licenseChanged$(){return this.#s}}function Ht(e){At.get().setLicenseKey(e)}function Vt(){return At.get()}function Bt(){const e=new Date;return e.setHours(0,0,0,0),e}function Ft(e){var t=Bt();const r=new Date(t);return r.setDate(t.getDate()+e),r}function zt(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function Ot(e){const t=new Date(e);return t.setDate(t.getDate()+1),t.setHours(0,0,0,0),t}function Nt(e){const t=new Date(e);return t.setDate(t.getDate()-1),t.setHours(23,59,59,0),t}function Wt(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Ut(e,t){return(null===e||null!==t)&&((null!==e||null===t)&&(null===e&&null===t||e.getTime()==t.getTime()))}function jt(e,t,r,i){const s=Math.max(e.getTime(),r.getTime()),n=Math.min(t.getTime(),i.getTime()),a=Math.max(0,n-s);return Math.floor(a/6e4)}function Xt(e,t){var r=12*(t.getFullYear()-e.getFullYear())+t.getMonth()-e.getMonth(),i=new Date(e.getFullYear(),e.getMonth()+1,0).getDate(),s=new Date(t.getFullYear(),t.getMonth()+1,0).getDate();return r-(e.getDate()-1+(60*e.getHours()+e.getMinutes())/1440)/i+(t.getDate()-1+(60*t.getHours()+t.getMinutes())/1440)/s}function Yt(e,t,r){const i=e.children;r>=0&&r<i.length?e.insertBefore(t,i[r]):r>=i.length?e.appendChild(t):e.insertBefore(t,i[0])}function Kt(e,t){return new Intl.DateTimeFormat(t,{dateStyle:"short"}).format(e)}function Zt(e,t,r){return new Intl.DateTimeFormat(t,r).format(e)}function Gt(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),r=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-r);var i=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-i.getTime())/864e5+1)/7)}function qt(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}T${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}function _t(e){var t=e.match(/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2}))?$/);if(!t)throw new Error("Invalid date and time value: "+e);return new Date(parseInt(t[1]),parseInt(t[2])-1,parseInt(t[3]),t[4]?parseInt(t[4]):0,t[5]?parseInt(t[5]):0,t[6]?parseInt(t[6]):0)}function Jt(e,t){return e.getTime()>t.getTime()?e:t}function Qt(e,t){return e.getTime()<t.getTime()?e:t}function er(e){const t="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";let r="";const i=new Uint8Array(e);(globalThis.crypto??crypto).getRandomValues(i);for(let s=0;s<e;s++){r+=t[i[s]%62]}return r}function tr(e){switch(e.keyCode){case 46:case 8:return!0}return!1}class rr{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){if(t<0)throw new Error("Length value must be greater or equal to zero.");this.#n=e,this.#a=t}getEndTime(e,t){var r=this.#a,i=new Date(e),s=0,n=this.unit;if("week"==n&&(r*=t.workingDays.length,n="day"),"day"==n){for(;r>=1;)i=new Date(i),t.isWorkingDay(i)?(r--,i.setDate(i.getDate()+1)):i=Ot(i);s=r*t.getHoursPerDay()*60}if("month"==n){for(;r>=1;){(i=new Date(i)).setMonth(i.getMonth()+1);break}s=30*r*t.getHoursPerDay()*60}if("hour"==n&&(s=60*this.#a),"minute"==n&&(s=this.#a),s>0)for(i=t.moveToStartShift(i,!0);s>0;)i.setMinutes(i.getMinutes()+1),i=t.moveToStartShift(i,!0),s--;return t.moveToEndShift(i,!0)}static getLength(e,t,r,i){var s=new Date(e),n=0,a=0;if("month"==r)for(;;){var o=new Date(s);o.setMonth(o.getMonth()+1);var l=t;if(i.isEndOfDay(l)&&(l=Ot(l)),o<=l&&(a++,s=o),o>=l)break}for(;s<t;){var h=Wt(s=new Date(s),t)?t:Ot(s);n+=i.getHoursBetween(s,h)/i.getHoursPerDay(),s=Ot(s)}switch(r){case"day":return new rr(r,n);case"week":return new rr(r,n/i.workingDays.length);case"minute":return new rr(r,n*i.getHoursPerDay()*60);case"hour":return new rr(r,n*i.getHoursPerDay());case"month":return new rr(r,a+n/30);default:throw new Error}}equals(e){return this.#n==e.unit&&this.#a==e.value}#o(){switch(this.unit){case"minute":return"m";case"hour":return"h";case"day":return"d";case"week":return"w";case"month":return"M"}}toString(){return this.value.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2})+this.#o()}static tryParse(e){const t=e.match(/^(\d+(\.\d+)?)([mhdwM])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(r>1e3)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day";break;case"w":s="week";break;case"M":s="month"}return new rr(s,r)}static parse(e){var t=rr.tryParse(e);if(!t)throw new Error("Failed to parse length "+e);return t}static fromAny(e){var t=e.unit,r=e.value;return new rr(t,r)}toAny(){return{unit:this.unit,value:this.value}}}class ir{#l;get startTime(){return this.#l}set startTime(e){e!=this.#l&&(this.startTimeChanging.next({part:this,value:e}),this.#l=this.calendar.moveToStartShift(e,!0),this.#h=this.#d.getEndTime(this.#l,this.calendar),this.startTimeChanged.next())}#h;get endTime(){return this.#h}set endTime(e){e!=this.#h&&(this.#c(this.startTime,e),this.endTimeChanging.next({part:this,value:e}),this.#h=this.calendar.moveToEndShift(e,!0),this.#d=rr.getLength(this.#l,this.#h,this.length.unit,this.calendar),this.endTimeChanged.next())}#d;get length(){return this.#d}set length(e){e.equals(this.#d)||(this.lengthChanging.next({part:this,value:e}),this.#d=e,this.#h=e.getEndTime(this.#l,this.calendar),this.lengthChanged.next())}#u=null;get task(){return this.#u}set task(e){if(this.#u)throw new Error("Once assigned the task cannot be changed");e!=this.#u&&(this.#u=e)}#g;get calendar(){return this.#g.getValue()}startTimeChanging=new e;endTimeChanging=new e;lengthChanging=new e;startTimeChanged=new e;endTimeChanged=new e;lengthChanged=new e;progressChanged=new e;constructor(e,t,r){this.#l=e,this.#d=t,this.#g=r,this.#h=t.getEndTime(e,this.calendar)}#c(e,t){if(e>t)throw new sr("Start time needs to be less or equal to end time")}get lengthInHours(){return this.calendar.getHoursBetween(this.startTime,this.endTime)}get progress(){if(!this.#u)return null;var e=this.#u.progress;if(null==e)return null;for(var t=this.#u.partsLengthInHours*((this.#u.progress??0)/100),r=0;r<this.#u.partsLength;r++){var i=this.#u.getPart(r),s=i.lengthInHours;if(t>=s){if(i==this)return 100;t-=s}else{if(t>0){if(i==this)return t/s*100;break}if(t<=0)break}}return 0}toAny(){var e={};return e.startTime=qt(this.#l),e.endTime=qt(this.#h),e.length=this.#d.toAny(),e}static fromAny(e,t){var r=_t(e.startTime),i=rr.fromAny(e.length);return new ir(r,i,t)}}class sr extends Error{constructor(e){super(e),this.name="ValidationError"}}class nr{#m;get id(){return this.#m}#p;get resource(){return this.#p}#v;get capacity(){return this.#v}set capacity(e){if(e!=this.#v){if(e<=0)throw new Error("Invalid resource capacity");this.#v=e,this.#f()}}changed$=new e;#y;constructor(e,t,r){if(r<=0)throw new Error("Invalid resource capacity");this.#m=e||er(30),this.#p=t,this.#v=r,this.#y=this.#p.changed$.subscribe(()=>{this.#f()})}destroy(){this.#y.unsubscribe()}#f(){this.changed$.next({resource:this})}formatCapacity(){return this.#v/100==Math.floor(this.#v/100)?(this.#v/100).toString()+"x":this.#v+"%"}toAny(){return{id:this.id,resourceId:this.resource.id,capacity:this.capacity}}static fromAny(e,t){var r=t.getResourceById(e.resourceId);if(!r)throw new Error("Resource not found in the list: "+e.resourceId);return new nr(e.id,r,e.capacity)}}class ar{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){if(t<0)throw new Error("Work value must be greater or equal to zero.");this.#n=e,this.#a=t}static tryParse(e){const t=e.match(/^(\d+(\.\d+)?)([mhd])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(r>9999)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day"}return new ar(s,r)}#o(){switch(this.unit){case"minute":return"m";case"hour":return"h";case"day":return"d"}}toString(){return this.value.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2})+this.#o()}toHours(e){switch(this.#n){case"minute":return this.#a/60;case"hour":return this.#a;case"day":return this.#a*e.getHoursPerDay()}}static maxUnit(e,t){return"day"==e||"day"==t?"day":"hour"==e||"hour"==t?"hour":"minute"}static fromHours(e,t,r){switch(t){case"minute":return new ar(t,60*e);case"hour":return new ar(t,e);case"day":return new ar(t,e/r.getHoursPerDay())}}static sum(e,t){if(e.unit!=t.unit)throw new Error;return new ar(e.unit,e.value+t.value)}toAny(){return{unit:this.#n,value:this.#a}}static fromAny(e){return new ar(e.unit,e.value)}clone(){return new ar(this.unit,this.value)}}class or{#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e)}#a=null;get value(){return this.#a}set value(e){e!=this.#a&&(this.#a=e,this.#f())}changed$=new e;constructor(e,t){this.#b=e,this.#a=t}#f(){this.changed$.next()}toAny(){return{name:this.#b,value:this.#a}}static fromAny(e){return new or(e.name,e.value)}}class lr{#w=[];#T=new Map;#C;constructor(e){this.#C=e}addProperty(e){if(this.#w.find(t=>t.name==e.name))throw new Error(`Property ${e.name} has already been added`);this.#w.push(e),this.#x(e),this.#C(e)}removeProperty(e){var t=this.#w.indexOf(e);if(t<0)throw new Error("Property not found");this.#w.splice(t,1),this.#k(e)}renameProperty(e,t){var r=this.#w.find(t=>t.name==e);r&&(r.name=t)}getPropertyByName(e){return this.#w.find(t=>t.name==e)??null}getPropertyValue(e){return this.getPropertyByName(e)?.value??null}setPropertyValue(e,t){var r=this.getPropertyByName(e);r?r.value=t:this.addProperty(new or(e,t))}get hasProperties(){return this.#w.length>0}serializeProperties(){return this.#w.map(e=>e.toAny())}loadProperties(e){if(this.#E(),this.#w=[],e)for(var t of e){var r=or.fromAny(t);this.#w.push(r),this.#x(r)}}#x(e){var t=e.changed$.subscribe(()=>{this.#C(e)});this.#T.set(e,t)}#k(e){var t=this.#T.get(e);t&&(t.unsubscribe(),this.#T.delete(e))}#E(){for(var[e,t]of this.#T)t.unsubscribe();this.#T.clear()}}class hr{#D=new Map;add(e,t){var r=this.#D.get(e);r||(r=[],this.#D.set(e,r)),r.push(t)}remove(e){var t=this.#D.get(e);if(t){for(var r of t)r.unsubscribe();this.#D.delete(e)}}clear(){for(var e of this.#D.values())for(var t of e)t.unsubscribe();this.#D.clear()}}class dr{#S=[];#T=new hr;#$;constructor(e){this.#$=e}get length(){return this.#S.length}get(e){return this.#S[e]}get last(){return this.#S[this.#S.length-1]}get startTime(){return this.#S[0].startTime}get endTime(){return this.last.endTime}indexOf(e){return this.#S.indexOf(e)}includes(e){return this.#S.includes(e)}get lengthUnit(){return this.#S.length>0?this.#S[0].length.unit:null}totalLengthInHours(e){var t=0;for(let e of this.#S)t+=e.lengthInHours;return t}forEach(e){for(var t=0;t<this.#S.length;t++)e(this.#S[t],t)}insertSorted(e){for(var t=0;t<=this.#S.length;t++){if(!(t<this.#S.length))return void this.#S.splice(t,0,e);if(e.startTime<=this.#S[t].startTime)return void this.#S.splice(t,0,e)}}remove(e){var t=this.#S.indexOf(e);return t>=0&&(this.#S.splice(t,1),this.#T.remove(e)),t}clear(){this.#T.clear(),this.#S=[]}assign(e){this.clear(),this.#S=e;for(let e of this.#S)this.#x(e)}subscribe(e){this.#x(e)}unsubscribe(e){this.#T.remove(e)}tryCombineAdjacent(e){for(var t=0;t<this.#S.length-1;){var r=this.#S[t],i=this.#S[t+1],s=!1;(this.#R(r,i)||r.endTime<=i.startTime&&0==e.getHoursBetween(r.endTime,i.startTime)||i.endTime<=r.startTime&&0==e.getHoursBetween(i.endTime,r.startTime))&&(s=!0),s?(this.#S.splice(t+1,1),r.startTime=Qt(r.startTime,i.startTime),r.endTime=Jt(r.endTime,i.endTime)):t++}}removeEmpty(){for(var e=!1,t=this.#S.length-1;t>=0;t--){var r=this.#S[t];0==r.length.value&&(this.#S.splice(t,1),this.#T.remove(r),e=!0)}return{changed:e,allRemoved:0==this.#S.length}}#R(e,t){return e.startTime<=t.endTime&&t.startTime<=e.endTime}#x(e){this.#T.add(e,e.startTimeChanged.subscribe(()=>{this.#$.onPartStartTimeChanged()})),this.#T.add(e,e.endTimeChanged.subscribe(()=>{this.#$.onPartEndTimeChanged()})),this.#T.add(e,e.lengthChanged.subscribe(()=>{this.#$.onPartLengthChanged()}))}}let cr=class{#m;get id(){return this.#m}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#b=null;get name(){return this.#b}set name(e){e!=this.#b&&this.#L(e)}#l=null;get startTime(){return this.#l}set startTime(e){this.#I(e)}#h=null;get endTime(){return this.#h}set endTime(e){this.#P(e)}get calendar(){return this.#g.getValue()}get length(){switch(this.type){case"empty":return null;case"milestone":return new rr(this.#A??this.calendar.defaultLengthUnit,0);case"task":return rr.getLength(this.startTime,this.endTime,this.#H.get(0).length.unit,this.calendar);case"summary":return rr.getLength(this.startTime,this.endTime,this.#A??this.calendar.defaultLengthUnit,this.calendar)}}set length(e){this.#V(e)}#A=null;get customLengthUnit(){return this.#A}set customLengthUnit(e){e!=this.#A&&this.#B(e)}#F=null;get baseStartTime(){return this.#F}#z=[];#H;get lastPart(){return this.#H.last}#O="empty";get type(){return this.#O}set type(e){this.#O!=e&&this.#N(e)}#W=null;get parent(){return this.#W}#U=null;get progress(){return this.#U}set progress(e){e!=this.#U&&this.#j(e)}#X=!1;get collapsed(){return this.#X}set collapsed(e){"summary"==this.type&&this.#X!=e&&(this.#X=e,this.collapsedChanged$.next({task:this}))}#Y=[];get resourcesLength(){return this.#Y.length}getResource(e){return this.#Y[e]}getResourceByResourceId(e){return this.#Y.find(t=>t.resource.id==e)??null}getResourceById(e){return this.#Y.find(t=>t.id==e)??null}#K=null;get customWork(){return this.#K}get work(){switch(this.#O){case"empty":case"milestone":return null;case"task":return this.#Z();case"summary":return this.#G()}}set work(e){this.#q(e)}#_=null;get customCost(){return this.#_}get cost(){switch(this.#O){case"empty":case"milestone":return null;case"task":return this.#J();case"summary":return this.#Q()}}set cost(e){this.#ee(e)}#te=null;get note(){return this.#te}set note(e){this.#te!=e&&(this.#te=e,this.#f())}warnings=[];#re="asap";get constraintType(){return this.#re}set constraintType(e){this.#re!=e&&(this.#re=e,"asap"!==e&&"alap"!==e||(this.#ie=null),this.#f())}#ie=null;get constraintDate(){return this.#ie}set constraintDate(e){this.#ie?.getTime()!=e?.getTime()&&(this.#ie=e,this.#f())}#se=null;get baselineStartTime(){return this.#se}set baselineStartTime(e){this.#se=e}#ne=null;get baselineEndTime(){return this.#ne}set baselineEndTime(e){this.#ne=e}earlyStart=null;earlyFinish=null;lateStart=null;lateFinish=null;totalFloat=null;freeFloat=null;isCritical=!1;#ae;#g;#oe;#le;changed$=new e;typeChanged$=new e;startTimeChanged$=new e;endTimeChanged$=new e;collapsedChanged$=new e;subtaskAdded$=new e;resourceAdding$=new e;#he=new hr;#de=new hr;constructor(e,t,r,i){this.#g=t,this.#oe=r,this.#le=i??null,this.#m=e||er(30),this.#H=new dr({onPartStartTimeChanged:()=>{this.#ce(),this.#H.tryCombineAdjacent(this.calendar)},onPartEndTimeChanged:()=>{this.#ue(),this.#ce(),this.#H.tryCombineAdjacent(this.calendar)},onPartLengthChanged:()=>{this.#ue(),"task"==this.type&&(this.#ce(),this.#H.tryCombineAdjacent(this.calendar))}}),this.#ae=new lr(e=>{null!==e.value&&this.#ge(),this.#f()})}#f(){this.changed$.next({task:this})}#me(e){Ut(this.#l,e)||this.startTimeChanged$.next({task:this})}#pe(e){Ut(this.#h,e)||this.endTimeChanged$.next({task:this})}#ue(){var e=this.#H.removeEmpty();e.allRemoved&&(this.#l=this.#h,this.type="milestone"),e.changed&&this.#f()}#ve(e,t){this.#he.add(e,t)}#fe(e){this.#he.remove(e)}addPart(e,t){var r=this.#O,i=new ir(e,t,this.#g);if("summary"==this.type||"milestone"==this.type)throw new Error("Cannot add a part to a task of type "+this.type);var s=this.#H.lengthUnit;if(null!==s&&s!=i.length.unit)throw new Error("Length unit of the part is different than length unit of the task");return i.startTime=this.calendar.moveToStartShift(i.startTime,!0),this.#H.insertSorted(i),this.#H.tryCombineAdjacent(this.calendar),this.#H.includes(i)&&(i.task=this,this.#H.subscribe(i),"empty"==this.#O&&(this.#O="task",this.#U=0)),this.#ce(),this.#f(),r!=this.#O&&this.typeChanged$.next({task:this,oldType:r,newType:this.#O}),i}removePart(e){if("summary"==this.type||"milestone"==this.type)throw new Error("Cannot remove a part from a task of type "+this.type);if(this.#H.remove(e)<0)throw new Error("Task part not found");0==this.#H.length&&(this.type="empty"),this.#f()}#ce(){var e=this.#l,t=this.#h;this.#l=this.#H.startTime,this.#h=this.#H.endTime,this.#ye(),this.#me(e),this.#pe(t),this.#f()}#be(){var e=this.#l,t=this.#h,r=null,i=null;for(let e of this.#z)(!r||e.startTime&&r>e.startTime)&&e.startTime&&(r=new Date(e.startTime)),(!i||e.endTime&&i<e.endTime)&&e.endTime&&(i=new Date(e.endTime));this.#l=r,this.#h=i,this.#ye();var s=0,n=0;for(let e of this.#z){var a=e.partsLengthInHours;s+=a,n+=(e.progress??0)*a}this.#U=s>0?n/s:null,this.#me(e),this.#pe(t),this.#f()}get partsLength(){return this.#H.length}getPart(e){return this.#H.get(e)}#we(e){var t=this.#z.indexOf(e);if(t<0)throw new Error("Subtask is not included in the task");return t}get subtasksLength(){return this.#z.length}getSubtask(e){return this.#z[e]}addSubtask(e){var t=this.#O;if(e.parent)throw new Error(`Task '${e.name}' (${e.id}) is already a subtask of '${e.parent.name}' (${e.parent.id})`);e.#W=this,"summary"!=this.#O&&(this.#X=!1),this.#O="summary",this.#K=null,this.#_=null,this.#Y=[],this.#z.push(e),this.subtaskAdded$.next({task:e}),this.#Te(e),e.#f(),this.#be(),t!=this.#O&&this.typeChanged$.next({task:this,oldType:t,newType:this.#O})}#Te(e){this.#ve(e,e.changed$.subscribe(e=>{this.#Ce(e.task)}))}#Ce(e){this.#be()}removeSubtask(e){var t=this.#we(e);if(this.#z.splice(t,1),this.#fe(e),e.#W=null,0==this.#z.length){var r=new Date(this.#l);this.#xe(!0),this.addPart(r,new rr("day",1))}else this.#be();this.#z.length>0&&this.#z[this.#z.length-1].#f(),this.#f()}get level(){for(var e=0,t=this.parent;t;)e++,t=t.parent;return e}#L(e){this.#b=e,null!==e&&this.#ge(),this.#f()}#ge(){if("empty"==this.type){var e=Bt(),t=this.#oe.getValue();t.startDate.getTime()>e.getTime()&&(e=new Date(t.startDate)),this.addPart(e,new rr("day",1))}}#N(e){var t,r=this.#O,i=this.#l,s=this.#h;if("milestone"==e)t=this.#h?this.calendar.getEndOfWorkingDay(this.#h):this.calendar.getEndOfWorkingDay(Bt()),this.#l=t,this.#h=t,this.#H.clear(),this.#z=[],this.#U=null,this.#X=!1,this.#K=null,this.#_=null,this.#Y=[];else if("task"==e){this.#z=[],this.#H.clear(),this.#O="empty",this.#U=0,this.#X=!1;var n=zt(this.#l??Bt()),a=new rr("day",1);this.addPart(n,a)}else{if("summary"==e)throw new Error("Add a subtask to change type to Summary.");"empty"==e&&this.#xe()}this.#O=e,this.#ye(),this.#me(i),this.#pe(s),this.#f(),r!=this.#O&&this.typeChanged$.next({task:this,oldType:r,newType:this.#O})}#xe(e){var t=this.#O;e||(this.#b=null),this.#z=[],this.#H.clear(),this.#O="empty",this.#l=null,this.#h=null,this.#U=null,this.#F=null,this.#X=!1,this.#K=null,this.#_=null,this.#Y=[],this.#re="asap",this.#ie=null,t!=this.#O&&this.typeChanged$.next({task:this,oldType:t,newType:this.#O})}#B(e){this.#A=e,this.#f()}#I(e){var t=this.#l,r=this.#h;if("empty"!=this.type){var i="milestone"==this.type?e:this.calendar.moveToStartShift(e,!0);if(i.getTime()!=this.#l.getTime()){if("task"==this.type){var s=0;if(i.getTime()>this.#l.getTime()){s=this.calendar.getHoursBetween(this.#l,i);for(var n=this.#H.length-1;n>=0;n--){(a=this.#H.get(n)).startTime=this.calendar.addHours(a.startTime,s,!0)}}else if(i.getTime()<this.#l.getTime())for(s=this.calendar.getHoursBetween(i,this.#l),n=0;n<this.#H.length;n++){var a;(a=this.#H.get(n)).startTime=this.calendar.addHours(a.startTime,-s)}}else{if("summary"==this.type)throw new Error("Cannot change the start date of a summary");if("milestone"==this.type){var o=this.calendar.getEndOfWorkingDay(i);this.#l=o,this.#h=o}}this.#ye(),this.#me(t),this.#pe(r),this.#f()}}else this.addPart(e,new rr(this.calendar.defaultLengthUnit,1))}#P(e){var t=this.#l,r=this.#h;if("empty"!=this.type){if("task"==this.type){if(1!=this.#H.length)throw new Error("Cannot change end date of a task consisting of multiple parts");this.#H.get(0).endTime=e}else{if("summary"==this.type)throw new Error("Cannot change the end date of a summary");if("milestone"==this.type){var i=this.calendar.moveToEndShift(e,!0);this.#l=i,this.#h=i}}this.#me(t),this.#pe(r),this.#f()}else{var s=this.calendar.moveToStartShift(zt(e),!0);this.addPart(s,new rr(this.calendar.defaultLengthUnit,1))}}#ye(){this.#le?.()||(this.#F=this.#l?new Date(this.#l):null)}#j(e){switch(this.type){case"task":if(null==e)throw new Error("Invalid value");if(e<0||e>100)throw new Error("Value out of range");this.#U=e,this.#f();break;case"empty":this.addPart(Bt(),new rr(this.calendar.defaultLengthUnit,1)),this.#U=e,this.#f();break;case"milestone":case"summary":throw new Error("Cannot set progress of task of type "+this.type)}}get partsLengthInHours(){return this.#H.totalLengthInHours(this.calendar)}indexOf(e){return this.#H.indexOf(e)}isDescendantOf(e){for(var t=this.#W;null!=t;){if(t==e)return!0;t=t.#W}return!1}toggleCollapsed(){this.collapsed=!this.collapsed}#ke=!1;get filtered(){return this.#ke}set filtered(e){this.#ke=e}get hidden(){if(this.#ke)return!0;if(this.#W){for(var e=this.#W;e;){if(e.#X)return!0;e=e.parent}return!1}return!1}#V(e){if("empty"!=this.type){if("task"!=this.type){if("milestone"==this.type){if(0==e.value)return;var t=this.startTime;return this.#xe(!0),void this.addPart(t,e)}throw new Error("Invalid operation")}if(0==e.value)return void(this.type="milestone");if(1!=this.#H.length)throw new Error("Cannot set length of a task consisting of multiple parts");this.#H.get(0).length=e}else this.addPart(Bt(),e)}get isLengthEditable(){return"empty"==this.type||"task"==this.type&&1==this.#H.length||"milestone"==this.type}get isStartTimeEditable(){return"empty"==this.type||"task"==this.type||"milestone"==this.type}get isEndTimeEditable(){return"empty"==this.type||"task"==this.type&&1==this.#H.length||"milestone"==this.type}get isProgressEditable(){return"empty"==this.type||"task"==this.type}get isResourcesEditable(){return"task"==this.type}get isWorkEditable(){return"empty"==this.type||"task"==this.type&&0==this.#Y.length}get isCostEditable(){return"empty"==this.type||"task"==this.type&&0==this.#Y.length}deserializeProperties(e,t){var r;if(this.#m=e.id,this.#M=e.color??0,this.#b=e.name??null,this.#l=e.startTime?_t(e.startTime):null,this.#h=e.endTime?_t(e.endTime):null,this.#A=e.customLengthUnit??null,this.#F=e.baseStartTime?_t(e.baseStartTime):null,this.#O=e.type,e.parts&&e.parts.length>0)r=e.parts.map(e=>ir.fromAny(e,this.#g));else if(this.#l&&this.#h&&"task"===this.#O){var i=rr.getLength(this.#l,this.#h,this.calendar.defaultLengthUnit,this.calendar);r=[new ir(this.#l,i,this.#g)]}else r=this.#l&&"milestone"===this.#O?[new ir(this.#l,new rr(this.calendar.defaultLengthUnit,0),this.#g)]:[];this.#H.assign(r),this.#U=e.progress??null,this.#X=e.collapsed??!1,this.#Y=e.resources?e.resources.map(e=>nr.fromAny(e,t)):[],this.#K=e.customWork?ar.fromAny(e.customWork):null,this.#_=e.customCost??null,this.#te=e.note??null,this.#se=e.baselineStartTime?_t(e.baselineStartTime):null,this.#ne=e.baselineEndTime?_t(e.baselineEndTime):null,this.#re=e.constraintType??"asap",this.#ie=e.constraintDate?_t(e.constraintDate):null,this.#ae.loadProperties(e.properties);for(let e of this.#Y)this.#Ee(e)}deserializePropertiesHierarchy(e,t){var r=e.parent;if(r){var i=t.find(e=>e.id==r);if(!i)throw new Error("Parent task not found: "+r);this.#W=i}this.#z=[],(e.subtasks??[]).map(e=>{var r=t.find(t=>t.id==e);if(!r)throw new Error("Subtask not found: "+e);this.#z.push(r),this.#Te(r)}),this.#z.length>0&&this.#be()}#De(e,t){this.#de.add(e,t)}#Se(e){this.#de.remove(e)}addResource(e,t,r){if(!this.isResourcesEditable)throw new Error("A resource cannot be added to a task of type "+this.type);this.resourceAdding$.next({task:this,resource:t});var i=new nr(e,t,r);return this.#Y.push(i),this.#K=null,this.#_=null,this.#Ee(i),this.#f(),i}#Ee(e){this.#De(e,e.changed$.subscribe(()=>{this.#f()}))}removeResource(e){var t=this.#Y.indexOf(e);if(t<0)throw new Error("Task resource not found");this.#Y.splice(t,1),this.#Se(e),e.destroy(),this.#f()}#$e(e){switch(e){case"minute":return"minute";case"hour":return"hour";default:return"day"}}#Z(){if(this.#K)return this.#K;if(0==this.#Y.length)return null;var e=this.#$e(this.length.unit),t=new ar(e,0);return this.#H.forEach(r=>{var i=this.calendar.getHoursBetween(r.startTime,r.endTime);for(let r of this.#Y)if(r.resource.rate){var s=r.capacity/100*i,n=ar.fromHours(s,e,this.calendar);t=ar.sum(t,n)}}),t}#G(){var e=0,t=null;for(let i of this.#z){var r=i.work;r&&(e+=r.toHours(this.calendar),t=t?ar.maxUnit(t,r.unit):r.unit)}return t?ar.fromHours(e,t,this.calendar):null}#q(e){if(!this.isWorkEditable)throw new Error("Cannot assign work to this task, either it is not of type Task or it has assigned resources");e!=this.#K&&(this.#K=e,null!==e&&this.#ge(),this.#f())}#J(){if(this.#_)return this.#_;if(0==this.#Y.length)return null;var e=0;return this.#H.forEach(t=>{var r=this.calendar.getHoursBetween(t.startTime,t.endTime);for(let t of this.#Y){var i=t.resource.rate;if(i){var s=t.capacity/100*r;"perHour"==i.type?e+=i.value*s:"perDay"==i.type&&(e+=i.value*(s/this.calendar.getHoursPerDay()))}e+=t.resource.fixedCostPerUse}}),e}#Q(){var e=null;for(let r of this.#z){var t=r.cost;null!==t&&(null===e?e=t:e+=t)}return e}#ee(e){if(!this.isCostEditable)throw new Error("Cannot assign cost to this task, either it is not of type Task or it has assigned resources");e!=this.#_&&(this.#_=e,null!==e&&this.#ge(),this.#f())}serializeCustomProperties(){return this.#ae.serializeProperties()}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}renameProperty(e,t){this.#ae.renameProperty(e,t)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){for(var e=[],t=0;t<this.subtasksLength;t++)e.push(this.getSubtask(t).id);var r=[];for(t=0;t<this.partsLength;t++)r.push(this.getPart(t).toAny());var i=[];for(t=0;t<this.resourcesLength;t++)i.push(this.getResource(t).toAny());return{id:this.id,color:this.color,name:this.name,startTime:this.startTime?qt(this.startTime):null,endTime:this.endTime?qt(this.endTime):null,customLengthUnit:this.customLengthUnit,baseStartTime:this.baseStartTime?qt(this.baseStartTime):null,subtasks:e,parts:r,type:this.type,parent:this.parent?this.parent.id:null,progress:this.progress,collapsed:this.collapsed,resources:i,customWork:this.customWork?this.customWork.toAny():null,customCost:this.customCost,note:this.note,baselineStartTime:this.baselineStartTime?qt(this.baselineStartTime):null,baselineEndTime:this.baselineEndTime?qt(this.baselineEndTime):null,constraintType:"asap"!==this.constraintType?this.constraintType:null,constraintDate:this.constraintDate?qt(this.constraintDate):null,properties:this.serializeCustomProperties()}}};class ur{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){this.#n=e,this.#a=t}toHours(e){var t=e.getHoursPerDay();switch(this.#n){case"minute":return this.#a/60;case"hour":return this.#a;case"day":return this.#a*t;case"week":return this.#a*e.workingDays.length*t;case"month":return 30*this.#a*t}}#o(){switch(this.#n){case"minute":return"m";case"hour":return"h";case"day":return"d";case"week":return"w";case"month":return"M"}}toString(){var e=this.#a.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2});return this.#a>0?"+"+e+this.#o():e+this.#o()}equals(e){return this.#n==e.unit&&this.#a==e.value}static zero(){return new ur("day",0)}static tryParse(e){const t=e.match(/^([+-]?\d+(\.\d+)?)([mhdwM])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(Math.abs(r)>1e3)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day";break;case"w":s="week";break;case"M":s="month"}return new ur(s,r)}static parse(e){var t=ur.tryParse(e);if(!t)throw new Error("Failed to parse lag "+e);return t}toAny(){return{unit:this.#n,value:this.#a}}static fromAny(e){var t=e.unit,r=e.value;return new ur(t,r)}}class gr{#m;get id(){return this.#m}#Re;get from(){return this.#Re}#Me;get to(){return this.#Me}#O;get type(){return this.#O}#Le;get lag(){return this.#Le}#Ie=null;get list(){return this.#Ie}set list(e){if(this.#Ie)throw new Error("Once assigned the list cannot be changed");e!=this.#Ie&&(this.#Ie=e)}constructor(e,t,r,i,s){this.#Re=t,this.#Me=r,this.#O=i,this.#Le=s??ur.zero(),this.#m=e||er(30)}toAny(){var e={};return e.id=this.#m,e.type=this.#O,e.from=this.#Re.id,e.to=this.#Me.id,0!==this.#Le.value&&(e.lag=this.#Le.toAny()),e}static fromAny(e,t){var r=e.id,i=t.find(t=>t.id==e.from),s=t.find(t=>t.id==e.to);if(!i||!s)throw new Error("Task used in a link not found");var n=e.type,a=e.lag?ur.fromAny(e.lag):void 0;return new gr(r,i,s,n,a)}}function mr(e,t){return"finish"===e&&"start"===t?"finishToStart":"start"===e&&"start"===t?"startToStart":"finish"===e&&"finish"===t?"finishToFinish":"startToFinish"}class pr{#Ie;#g;#Pe;get calendar(){return this.#g.getValue()}constructor(e,t,r){this.#Ie=e,this.#g=t,this.#Pe=r}getTotalLength(e){for(var t=0,r=0;r<e.partsLength;r++)t+=e.length.value;return t}getProgressTime(e){for(var t=this.getTotalLength(e),r=e.progress/100*t,i=null,s=0;s<e.partsLength;s++){var n=e.getPart(s);if(null===i&&(i=n.startTime),Math.abs(r)<=1e-4)break;if(r>=n.length.value)i=n.endTime,r-=n.length.value;else i=new rr(n.length.unit,r).getEndTime(n.startTime,this.calendar),r=0}return i}update(e){var t=new Date;if("task"==e.type||"milestone"==e.type){var r=[];if("task"==e.type&&e.progress<100){var i=this.getProgressTime(e);if(i.getTime()<t.getTime()){var s=function(e,t){const r=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()),i=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),s=864e5;return Math.abs((i-r)/s)}(i,t);s>0&&r.push(this.formatDelayedMessage(s))}}this.#Ae(e,r),e.warnings=r}else e.warnings=[]}#Ae(e,t){var r=e.constraintDate;if(r){var i=this.#Pe.getValue(),s=r.toLocaleDateString(i.language);switch(e.constraintType){case"snlt":e.startTime&&e.startTime.getTime()>r.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.snlt,s));break;case"fnlt":e.endTime&&e.endTime.getTime()>r.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.fnlt,s));break;case"mso":var n=this.calendar.moveToStartShift(new Date(r),!0),a=e.startTime?this.calendar.moveToStartShift(new Date(e.startTime),!0):null;a&&a.getTime()!==n.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.mso,s));break;case"mfo":n=this.calendar.getEndOfWorkingDay(new Date(r));var o=e.endTime?this.calendar.getEndOfWorkingDay(new Date(e.endTime)):null;o&&o.getTime()!==n.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.mfo,s))}}}updateAll(){for(var e=0;e<this.#Ie.length;e++)this.update(this.#Ie.getTask(e))}formatDelayedMessage(e){var t=this.#Pe.getValue(),r=t.warnings.behindSchedule;return 1==e?r+=" "+t.warnings.behindScheduleByOneDay:e>1&&(r+=" "+t.warnings.behindScheduleByDays(e)),r}}class vr{#He=!1;#Ve=new Set;#Be;#g;get evaluatingDependencies(){return this.#He}evaluatingDependenciesFinished$=new e;constructor(e,t){this.#Be=e,this.#g=t}onTaskStartTimeChanged(e){if(!this.#Ve.has(e)){this.#Ve.add(e);var t=!1;this.#He||(this.#He=!0,t=!0),this.#Fe(e);var r=this.#Be(),i=r.filter(t=>t.to==e);for(let t of i){var s=this.#ze(t);s&&e.startTime.getTime()<s.getTime()&&(e.startTime=s)}var n=r.filter(t=>t.from==e&&("startToStart"==t.type||"startToFinish"==t.type));for(let e of n)this.evaluateLinkDependency(e);t&&(this.#He=!1,this.evaluatingDependenciesFinished$.next()),queueMicrotask(()=>this.#Ve.delete(e))}}onTaskEndTimeChanged(e){var t=!1;this.#He||(this.#He=!0,t=!0);var r=this.#Be().filter(t=>t.from==e&&("finishToStart"==t.type||"finishToFinish"==t.type));for(let e of r)this.evaluateLinkDependency(e);t&&(this.#He=!1)}evaluateLinkDependency(e){var t=e.to,r=e.from,i=this.#g.getValue(),s=e.lag.toHours(i);switch(e.type){case"finishToStart":var n=i.addHours(new Date(r.endTime),s);if(t.startTime.getTime()<n.getTime())t.startTime=new Date(n);else if(t.startTime.getTime()>n.getTime()){var a=new Date(n);t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"startToStart":n=i.addHours(new Date(r.startTime),s);if(t.startTime.getTime()<n.getTime())t.startTime=new Date(n);else if(t.startTime.getTime()>n.getTime()){a=new Date(n);t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"finishToFinish":var o=i.addHours(new Date(r.endTime),s),l=t.endTime.getTime()-t.startTime.getTime(),h=new Date(o.getTime()-l);if(t.startTime.getTime()<h.getTime())t.startTime=h;else if(t.startTime.getTime()>h.getTime()){a=h;t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"startToFinish":o=i.addHours(new Date(r.startTime),s),l=t.endTime.getTime()-t.startTime.getTime(),h=new Date(o.getTime()-l);if(t.startTime.getTime()<h.getTime())t.startTime=h;else if(t.startTime.getTime()>h.getTime()){a=h;t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}}}#ze(e){var t=this.#g.getValue(),r=e.lag.toHours(t);switch(e.type){case"finishToStart":return e.from.endTime?t.addHours(new Date(e.from.endTime),r):null;case"startToStart":return e.from.startTime?t.addHours(new Date(e.from.startTime),r):null;case"finishToFinish":case"startToFinish":return null}}#Fe(e){var t=this.#g.getValue();switch(e.constraintType){case"asap":break;case"snet":e.constraintDate&&e.startTime&&e.startTime.getTime()<e.constraintDate.getTime()&&(e.startTime=new Date(e.constraintDate));break;case"fnet":if(e.constraintDate&&e.endTime&&e.endTime.getTime()<e.constraintDate.getTime()){var r=t.getHoursBetween(e.endTime,e.constraintDate);e.startTime=t.addHours(new Date(e.startTime),r)}break;case"mso":if(!e.constraintDate||!e.startTime)break;var i=t.moveToStartShift(e.constraintDate,!0);e.startTime.getTime()!==i.getTime()&&(e.startTime=i);break;case"mfo":if(!e.constraintDate||!e.endTime||!e.startTime)break;if(e.endTime.getTime()!==e.constraintDate.getTime()){r=e.endTime.getTime()-e.constraintDate.getTime()>0?-t.getHoursBetween(e.constraintDate,e.endTime):t.getHoursBetween(e.endTime,e.constraintDate);e.startTime=t.addHours(new Date(e.startTime),r)}break;case"snlt":e.constraintDate&&e.startTime&&e.startTime.getTime()>e.constraintDate.getTime()&&(e.startTime=new Date(e.constraintDate));break;case"fnlt":if(e.constraintDate&&e.endTime&&e.endTime.getTime()>e.constraintDate.getTime()){r=-t.getHoursBetween(e.constraintDate,e.endTime);e.startTime=t.addHours(new Date(e.startTime),r)}}}}class fr{#Oe=[];#Ne=new Set;#We=[];#Ue;taskAdded$=new e;taskChanged$=new e;taskRemoved$=new e;taskCollapsedChanged$=new e;taskTypeChanged$=new e;linkAdded$=new e;linkRemoved$=new e;resourceAdding$=new e;filterChanged$=new e;#g;#oe;#je=!1;#Xe=!1;#Ye=null;#Ke;constructor(e,r,i){this.#g=e,this.#oe=r,this.#Ke=new vr(()=>this.#We,e),this.#Ze(),this.#Ue=new pr(this,this.#g,i??new t({language:"en-US"}))}get length(){return this.#Oe.length}get linksLength(){return this.#We.length}get evaluatingDependencies(){return this.#Ke.evaluatingDependencies}get evaluatingDependenciesFinished$(){return this.#Ke.evaluatingDependenciesFinished$}complexOperationFinished$=new e;get filter(){return this.#Ye}set filter(e){this.#Ye=e,this.#Ge()}#Ge(){for(var e=this.#Ye,t=0;t<this.#Oe.length;t++)this.#Oe[t].filtered=!1;if(e){for(t=0;t<this.#Oe.length;t++){"empty"===(r=this.#Oe[t]).type?r.filtered=!0:"summary"!==r.type&&(r.filtered=!e(r))}for(t=this.#Oe.length-1;t>=0;t--){var r;"summary"===(r=this.#Oe[t]).type&&(r.filtered=!this.#qe(r))}this.filterChanged$.next()}else this.filterChanged$.next()}#qe(e){for(var t=0;t<e.subtasksLength;t++){if(!e.getSubtask(t).filtered)return!0}return!1}#_e=new hr;getTask(e){if(e<0||e>=this.#Oe.length)throw new Error("Index out of range");return this.#Oe[e]}getTaskById(e){return this.#Oe.find(t=>t.id==e)??null}getLink(e){if(e<0||e>=this.#We.length)throw new Error("Index out of range");return this.#We[e]}indexOf(e){return this.#Oe.indexOf(e)}#Ze(){this.#je=!0;for(var e=0;e<100;e++)this.addEmptyTask();this.#je=!1}#Je(e,t){this.#_e.add(e,t)}#Qe(e){this.#_e.remove(e)}addEmptyTask(){var e=new cr(null,this.#g,this.#oe,()=>this.evaluatingDependencies);return this.#et(e,this.#Oe.length)}insertEmptyTask(e){var t=new cr(null,this.#g,this.#oe,()=>this.evaluatingDependencies);return this.#et(t,e)}addTask(e){if(this.#Ne.has(e))throw new Error("The task is already included in a list of tasks");return this.#et(e,this.#Oe.length)}insertTask(e,t){if(this.#Ne.has(t))throw new Error("The task is already included in a list of tasks");return this.#et(t,e)}#et(e,t){return this.#Ne.add(e),this.#Oe.splice(t,0,e),this.#tt(e),this.#je||this.#Xe||(this.taskAdded$.next({task:e}),this.#Ue.update(e),this.complexOperationFinished$.next()),e}getFirstTaskIndex(e){var t=null;for(let i of e){var r=this.indexOf(i);(null===t||t>r)&&(t=r)}return t}#tt(e){this.#Je(e,e.typeChanged$.subscribe(e=>{this.#rt(e)})),this.#Je(e,e.changed$.subscribe(e=>{this.#it(e.task)})),this.#Je(e,e.startTimeChanged$.subscribe(e=>{this.#st(e.task)})),this.#Je(e,e.endTimeChanged$.subscribe(e=>{this.#nt(e.task)})),this.#Je(e,e.collapsedChanged$.subscribe(e=>{this.#at(e.task)})),this.#Je(e,e.subtaskAdded$.subscribe(e=>{this.#ot(e.task)})),this.#Je(e,e.resourceAdding$.subscribe(e=>{this.#lt(e)}))}#ht(e){var t=this.#Oe.indexOf(e);if(t<0)throw new Error("Task is not included in the task sheet");return t}#it(e){"empty"!=e.type&&"summary"!=e.type||(this.#We=this.#We.filter(t=>t.from!=e&&t.to!=e)),this.taskChanged$.next({task:e}),this.#Ue.update(e),this.#Ye&&this.#Ge()}#st(e){this.#Ke.onTaskStartTimeChanged(e)}#nt(e){this.#Ke.onTaskEndTimeChanged(e)}#rt(e){if("empty"==e.oldType&&"empty"!=e.newType){var t=this.#dt(e.task);if(!t)return;"summary"==t.type?t.addSubtask(e.task):t.parent&&t.parent.addSubtask(e.task)}this.taskTypeChanged$.next(e)}#at(e){this.taskCollapsedChanged$.next({task:e})}#ot(e){this.#We=this.#We.filter(t=>!(t.from==e&&t.to==e.parent||t.to==e&&t.from==e.parent))}#lt(e){this.resourceAdding$.next(e)}#ct(e){var t=[...e];return t.sort((e,t)=>this.#Oe.indexOf(e)-this.#Oe.indexOf(t)),t}#ut(e){return this.getPreviousNonEmpty(e,e.level)}getLastNonEmpty(e=!0){for(var t=this.#Oe.length-1;t>=0;){var r=this.#Oe[t];if("empty"!=r.type&&(e||!r.hidden))return r;t--}return null}getPreviousNonEmpty(e,t){for(var r=this.#ht(e);;){if(--r<0)return null;if("empty"!=this.#Oe[r].type){if(null===t)return this.#Oe[r];if(this.#Oe[r].level<t)return null;if(this.#Oe[r].level==t)return this.#Oe[r]}}}#dt(e){var t=this.#ht(e);return t>0?this.#Oe[t-1]:null}getNextVisible(e){var t=this.#ht(e);for(t++;t<this.#Oe.length;t++)if(!this.#Oe[t].hidden)return this.#Oe[t];return null}getPreviousVisible(e){var t=this.#ht(e);for(t--;t>=0;t--)if(!this.#Oe[t].hidden)return this.#Oe[t];return null}getNextNonEmpty(e){for(var t=this.#ht(e);;){if(++t>=this.#Oe.length)return null;if("empty"!=this.#Oe[t].type)return this.#Oe[t]}}#gt(e){var t=this.#ht(e);return t<this.#Oe.length-1?this.#Oe[t+1]:null}#mt(e){var t=[],r=null,i=null;for(let n of e){var s=this.getTaskNumber(n);null!==r&&s-1==r||(i&&i.tasks.length>0&&t.push(i),i={tasks:[]}),r=s,"empty"!=n.type&&i.tasks.push(n)}return i&&!t.includes(i)&&i.tasks.length>0&&t.push(i),t}#pt(e){var t=null;for(let r of e)if(null===t)t=r.level;else if(t!=r.level)return!1;return!0}indent(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=this.#ut(i);if(s)for(let t of e.tasks)t.parent&&t.parent.removeSubtask(t),s.addSubtask(t)}this.complexOperationFinished$.next()}}outdent(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1];if(0!=i.level){var n=this.getPreviousNonEmpty(i,i.level-1);if(n){var a=this.getNextSiblings(s),o=[...e.tasks,...a];for(let e of o)e.parent.removeSubtask(e),n.parent&&n.parent.addSubtask(e)}}}this.complexOperationFinished$.next()}}getTaskNumber(e){return this.#Oe.indexOf(e)+1}getNextSibling(e){return this.getNextAtLevel(e,e.level)}getNextSiblings(e){for(var t=[];;){var r=this.getNextSibling(e);if(!r)break;t.push(r),e=r}return t}getNextAtLevel(e,t){for(var r=null,i=this.#Oe.indexOf(e)+1;i<this.#Oe.length;){var s=this.#Oe[i],n=s.level;if(n==t){r=s;break}if(n<t&&"empty"!=s.type)break;i++}return r}getLastDescendant(e){if(0==e.subtasksLength)return e;for(var t=null,r=null,i=0;i<e.subtasksLength;i++){var s=e.getSubtask(i),n=this.indexOf(s);(null===t||t<n)&&(t=n,r=s)}return this.getLastDescendant(r)}existsLinkBetween(e,t){return null!=this.#We.find(r=>r.from==e&&r.to==t||r.from==t&&r.to==e)}isValidTypeForLink(e){return"task"==e.type||"milestone"==e.type}wouldCreateCycle(e,t){var r=new Set,i=[t];for(r.add(t);i.length>0;){var s=i.shift();if(s===e)return!0;for(var n of this.#We)n.from!==s||r.has(n.to)||(r.add(n.to),i.push(n.to))}return!1}addLink(e,t,r,i){if(e==t)throw new Error("Cannot create a self link");if(this.existsLinkBetween(e,t))throw new Error("A link between the tasks already exists");if(!this.isValidTypeForLink(e))throw new Error("Unsupported task type for adding a link: "+e.type);if(!this.isValidTypeForLink(t))throw new Error("Unsupported task type for adding a link: "+t.type);if(e.isDescendantOf(t)||t.isDescendantOf(e))throw new Error("Cannot create a link between a task and its nested task");if(this.wouldCreateCycle(e,t))throw new Error("Cannot create a link that would create a cycle");var s=new gr(null,e,t,r,i);return this.#We.push(s),s.list=this,this.#Ke.evaluateLinkDependency(s),this.linkAdded$.next({link:s}),s}removeTask(e){var t=this.#Oe.indexOf(e);if(t<0)throw new Error("Task is not in the list of tasks");var r=this.#We.filter(t=>t.from==e||t.to==e);for(let e of r)this.removeLink(e);e.parent&&e.parent.removeSubtask(e),this.#Oe.splice(t,1),this.#Ne.delete(e),this.#Qe(e),this.taskRemoved$.next({task:e}),this.complexOperationFinished$.next()}removeTasks(e){for(let t of e)this.removeTask(t)}removeLink(e){var t=this.#We.indexOf(e);if(t<0)throw new Error("Link is not in the list of links");this.#We.splice(t,1),e.to.baseStartTime&&(e.to.startTime=e.to.baseStartTime),this.linkRemoved$.next({link:e})}moveUp(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1],n=this.#dt(i);if(n){n&&n.level>i.level&&(n=this.#ut(i));var a=this.getLastDescendant(s),o=this.indexOf(a),l=this.indexOf(i),h=this.#Oe.slice(l,o+1),d=this.indexOf(n);if(this.#Oe.splice(l,o-l+1),this.#Oe.splice(d,0,...h),"empty"!=n.type&&n.level!=i.level)for(let t of e.tasks)t.parent&&t.parent.removeSubtask(t),n.parent&&n.parent.addSubtask(t)}}this.complexOperationFinished$.next()}}moveDown(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1],n=this.getLastDescendant(s),a=this.getNextSibling(s);if(a||(a=this.#gt(n)),a){var o=this.indexOf(n),l=this.indexOf(i),h=this.#Oe.slice(l,o+1);this.#Oe.splice(l,o-l+1);var d=this.getLastDescendant(a),c=this.indexOf(d);this.#Oe.splice(c+1,0,...h);for(let t of e.tasks)t.parent&&"empty"!=a.type&&t.parent.removeSubtask(t),a.parent&&a.parent.addSubtask(t)}}this.complexOperationFinished$.next()}}get minStartTime(){var e=null;for(let t of this.#Oe)"empty"!=t.type&&t.startTime&&(null===e||t.startTime.getTime()<e.getTime())&&(e=new Date(t.startTime));return e}get maxEndTime(){var e=null;for(let t of this.#Oe)"empty"!=t.type&&t.endTime&&(null===e||t.endTime.getTime()>e.getTime())&&(e=new Date(t.endTime));return e}clear(){for(let e of this.#Oe)this.#Qe(e);this.#Oe=[],this.#Ne.clear(),this.#We=[],this.#Xe||this.complexOperationFinished$.next()}assign(e,t){this.#Xe=!0,this.clear();for(let t of e)this.addTask(t);for(let e of t)this.#We.push(e),e.list=this;this.#Xe=!1,this.#Ue.updateAll(),this.complexOperationFinished$.next()}getTasksUsingResource(e){var t=[];for(let r of this.#Oe)r.getResourceByResourceId(e.id)&&t.push(r);return t}renameTaskProperty(e,t){for(let r of this.#Oe)r.renameProperty(e,t)}}class yr{workingDays;nationalHolidays;shifts;startOfWeek;defaultLengthUnit="day";constructor(){this.workingDays=["monday","tuesday","wednesday","thursday","friday"],this.nationalHolidays=[],this.shifts=[],this.shifts.push(new br(new wr(8,0),new wr(12,0))),this.shifts.push(new br(new wr(13,0),new wr(17,0))),this.startOfWeek="sunday"}#vt(e){switch(e){case"sunday":return 0;case"monday":return 1;case"tuesday":return 2;case"wednesday":return 3;case"thursday":return 4;case"friday":return 5;case"saturday":return 6}}isWorkingDay(e){for(let t of this.nationalHolidays)if(Wt(t,e))return!1;for(let t of this.workingDays)if(this.#vt(t)==e.getDay())return!0;return!1}#ft(e){for(var t=0;t<this.shifts.length;t++){var r=this.shifts[t];if(r.contains(e))return r;var i=new Date(e);if(i.setHours(r.start.hour,r.start.minute,0,0),i.getTime()>=e.getTime())return r}return null}#yt(e,t){for(var r=this.shifts.length-1;r>=0;r--){var i=this.shifts[r];if(i.contains(e,t))return i;var s=new Date(e);if(s.setHours(i.end.hour,i.end.minute,0,0),s.getTime()<=e.getTime())return i}return null}moveToStartShift(e,t){for(var r=null;!this.isWorkingDay(e)||!(r=this.#ft(e));)e=Ot(e);return r.contains(e)&&t||(e=new Date(e)).setHours(r.start.hour,r.start.minute,0,0),e}moveToEndShift(e,t){var r=null;for(0==e.getHours()&&0==e.getMinutes()&&(e=Nt(e));!this.isWorkingDay(e)||!(r=this.#yt(e,!0));)e=Nt(e);return r.contains(e)&&t||(e=new Date(e)).setHours(r.end.hour,r.end.minute,0,0),e}getHoursPerDay(){var e=0;for(let t of this.shifts)e+=t.getLengthInMinutes();return e/60}isEndOfDay(e){var t=this.shifts[this.shifts.length-1];return t.end.hour==e.getHours()&&t.end.minute==e.getMinutes()}getEndOfWorkingDay(e){for(e=zt(e);!this.isWorkingDay(e);)e=Ot(e);var t=this.shifts[this.shifts.length-1];return e.setHours(t.end.hour,t.end.minute),e}#bt(e,t){if(!this.isWorkingDay(e))return 0;var r=0;for(let n of this.shifts){var i=new Date(e);i.setHours(n.start.hour),i.setMinutes(n.start.minute);var s=new Date(e);s.setHours(n.end.hour),s.setMinutes(n.end.minute),r+=jt(e,t,i,s)}return r/60}getHoursBetween(e,t){if(e.getTime()>t.getTime())return-this.getHoursBetween(t,e)||0;for(var r=0,i=new Date(e);;){if(Wt(i,t)){r+=this.#bt(i,t);break}var s=new Date(i);s.setHours(0,0,0),s.setDate(i.getDate()+1),r+=this.#bt(i,t),i=s}return r}getStartOfWeek(e){(e=new Date(e)).setHours(0,0,0,0);for(var t=this.#vt(this.startOfWeek);e.getDay()!=t;)(e=new Date(e)).setDate(e.getDate()-1);return e}addHours(e,t,r){var i=this.getHoursPerDay();if(t>0)for(;t>=i;){var s=Ot(e);t-=this.getHoursBetween(e,s),e=s}else if(t<0)for(;t<=-i;){var n=zt(e);n.getTime()==e.getTime()&&n.setDate(n.getDate()-1),t+=this.getHoursBetween(n,e),e=n}var a=Math.round(60*t);if(a>0||r&&0==a)for(e=this.moveToStartShift(e,!0);a>0;)e.setMinutes(e.getMinutes()+1),e=this.moveToStartShift(e,!0),a--;else if(a<0)for(e=this.moveToEndShift(e,!0);a<0;)e.setMinutes(e.getMinutes()-1,0),e=this.moveToEndShift(e,!0),a++;return e}}class br{start;end;constructor(e,t){this.start=e,this.end=t}contains(e,t){var r=60*this.start.hour+this.start.minute,i=60*this.end.hour+this.end.minute,s=60*e.getHours()+e.getMinutes();return(!t&&s>=r||!0===t&&s>r)&&i>s}getLengthInMinutes(){var e=0;return this.start.hour==this.end.hour?this.end.minute-this.start.minute:(e+=60-this.start.minute,this.end.hour-this.start.hour>1&&(e+=60*(this.end.hour-this.start.hour-1)),e+=this.end.minute)}}class wr{hour;minute;constructor(e,t){this.hour=e,this.minute=t}}class Tr{#wt;constructor(e){this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue(),i=r.contentTop,s=this.getContentBottom(e.height);t.beginPath(),t.rect(0,i,e.width,e.height-i),t.fillStyle=r.chart.content.backgroundColor,t.fill(),this.#Tt(e,t,s),this.#Ct(e,t,s),this.#wt.showGridLines$.getValue()&&(this.#xt(e,t,s),this.drawHorizontalGridLines(e,t))}#Tt(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=this.#wt.calendar,o=s.getCellStartTime(n),l=s.getCellStartX(o,n,i),h=this.#wt.theme$.getValue().contentTop;!(l>e.width);){var d=s.getAdd(o,1),c=s.getCellStartX(d,n,i),u=!1;"day"==s.unit&&(u=!a.isWorkingDay(o)),"hour"!=s.unit&&"minute"!=s.unit||(u=0==a.getHoursBetween(o,d)),u&&(t.beginPath(),t.rect(l,h,c-l,r-h),t.fillStyle=this.#wt.theme$.getValue().chart.content.nonWorkingTimeStyle,t.fill()),o=d,l=c}}#Ct(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[1],n=this.#wt.timeline.visibleStartTime$.getValue(),a=s.getCellStartTime(n),o=this.#wt.theme$.getValue().contentTop;;){var l=s.getCellStartX(a,n,i);if(l>e.width)break;t.beginPath(),t.moveTo(l+.5,o),t.lineTo(l+.5,r),t.strokeStyle=this.#wt.theme$.getValue().chart.content.tier2SeparatorLineStyle,t.setLineDash([2,2]),t.stroke(),a=s.getAdd(a,1)}t.setLineDash([])}#xt(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=s.getCellStartTime(n),o=s.getCellStartX(a,n,i),l=this.#wt.theme$.getValue(),h=l.contentTop,d=l.chart.content.gridLineColor;!(o>e.width);)t.beginPath(),t.moveTo(o+.5,h),t.lineTo(o+.5,r),t.strokeStyle=d,t.stroke(),a=s.getAdd(a,1),o=s.getCellStartX(a,n,i)}}class Cr extends Tr{#kt;constructor(e){super(e),this.#kt=e}getContentBottom(e){return this.#kt.getContentBottom(e)}drawHorizontalGridLines(e,t){var r=this.#kt.theme$.getValue(),i=r.contentTop,s=r.chart.content.gridLineColor,n=r.rowHeight+1;i-=this.#kt.sheetScrollTop$.getValue();for(var a=0;a<this.#kt.list.length;a++){if(!this.#kt.list.getTask(a).hidden){var o=Math.floor(i)-.5;t.beginPath(),t.moveTo(0,o),t.lineTo(e.width,o),t.strokeStyle=s,t.stroke(),i+=n}}}}class xr{x=0;y=0;constructor(e,t){this.x=e,this.y=t}isWithin(e,t){return Math.abs(this.x-e.x)<=t&&Math.abs(this.y-e.y)<=t}isZero(){return 0==this.x&&0==this.y}clone(){return new xr(this.x,this.y)}scaled(e){return new xr(this.x*e,this.y*e)}toString(){return`${this.x};${this.y}`}static fromString(e){var t=e.split(";");return new xr(parseFloat(t[0]),parseFloat(t[1]))}moveToRaster(){return this.x=Math.floor(this.x)+.5,this.y=Math.floor(this.y)+.5,this}}class kr{x;y;width;height;constructor(e,t,r,i){this.x=e,this.y=t,this.width=r,this.height=i}contains(e){return e.x>=this.x&&e.y>=this.y&&e.x<=this.right&&e.y<=this.bottom}fullyContains(e){return this.x<=e.x&&this.y<=e.y&&this.bottom>=e.bottom&&this.right>=e.right}get middle(){return new xr(this.x+this.width/2,this.y+this.height/2)}get bottom(){return this.y+this.height}get right(){return this.x+this.width}clone(){return new kr(this.x,this.y,this.width,this.height)}equals(e){return this.x==e.x&&this.y==e.y&&this.height==e.height&&this.width==e.width}scaled(e){return new kr(this.x*e,this.y*e,this.width*e,this.height*e)}scaledAt(e){return new kr(this.x*e,this.y*e,this.width,this.height)}toString(){return`${this.x};${this.y};${this.width};${this.height}`}static fromString(e){var t=e.split(";");return new kr(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3]))}moveToRaster(){return this.x=Math.floor(this.x)+.5,this.y=Math.floor(this.y)+.5,this}}const Er="Arial";class Dr{name=Er;size=11;weight=null;italic=!1;toString(e){var t=this.name;return t.indexOf(" ")>0&&(t='"'+t+'"'),(this.italic?"italic ":"")+(this.weight?this.weight.toString()+" ":"")+`${this.size*e}pt ${t}`}static fromObject(e){var t=new Dr;return t.name=e.name,t.size=e.size,t.weight=e.weight,t.italic=e.italic,t}static from(e,t){var r=new Dr;return r.name=e??Er,r.size=t??11,r}clone(){var e=new Dr;return e.name=this.name,e.size=this.size,e.weight=this.weight,e.italic=this.italic,e}}class Sr{#Et;#Dt;get startDate(){return this.#Et}get endDate(){return this.#Dt}constructor(e,t){this.#Et=e,this.#Dt=t}}function $r(e){var t=e.measureText("gŇ");return t.fontBoundingBoxAscent+t.fontBoundingBoxDescent}function Rr(e,t,r,i,s,n=null,a=!1){var o=Mr(e,t,r.width),l=r.x,h=r.y,d=$r(e),c=o.measure.width;h=r.y+(r.height-d)/2,h+=o.measure.fontBoundingBoxAscent,"center"==i&&(l=r.x+(r.width-c)/2),"right"==i&&(l=r.right-c),e.textAlign="left",e.textBaseline="top",e.fillStyle=n??"#000000",e.fillText(o.text,l,h),a&&(e.beginPath(),e.moveTo(l,h+d-.26*d),e.lineTo(l+c,h+d-.26*d),e.stroke())}function Mr(e,t,r){e.textBaseline="top";var i=t.split(" "),s=i[0],n=!1;if(1==i.length)e.measureText(t).width>r&&(n=!0);else for(var a=1;a<i.length;a++){if(s+=" "+i[a],e.measureText(s).width>r){n=!0;break}}if(n)for(;;){var o=s+"...";if(e.measureText(o).width<=r){s=o;break}if(0==s.length){s="...";break}s=s.substring(0,s.length-1)}return{text:s,measure:e.measureText(s)}}class Lr{#wt;constructor(e){this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue().headerHeight,i=new kr(1,1,e.width,r);t.beginPath(),t.rect(i.x,i.y,i.width,i.height),t.fillStyle=this.#wt.theme$.getValue().chart.header.backgroundColor,t.fill(),t.beginPath(),t.moveTo(0,.5),t.lineTo(e.width+.5,.5),t.moveTo(0,r+1.5),t.lineTo(e.width+.5,r+1.5),t.strokeStyle=this.#wt.theme$.getValue().chart.header.cellBorderColor,t.stroke();var s=Math.floor((r+1)/2)+.5;t.beginPath(),t.moveTo(0,s),t.lineTo(e.width,s),t.stroke();var n=this.#wt.timeline.currentZoom;this.#St(e,n.axis[0],1),this.#St(e,n.axis[1],0)}#St(e,t,r){var i=e.getContext("2d"),s=this.#wt.timeline.visibleStartTime$.getValue(),n=t.getCellStartTime(s),a=this.#wt.timeline.currentZoom,o=this.#wt.settings.theme,l=o.chart.header,h=this.#wt.theme$.getValue().headerHeight,d=r*h/2+1,c=l.cellDividerPadding;i.beginPath();var u=t.getCellStartX(n,s,a);i.font=o.font.toString(1),i.fillStyle=l.textColor;for(var g=l.cellDividerColor??l.cellBorderColor;!(u>e.width);){i.moveTo(u+.5,d+c),i.lineTo(u+.5,d+h/2-c);var m=t.formatter(n);n=t.getAdd(n,1);var p=t.getCellStartX(n,s,a);Rr(i,m,new kr(u+5,d,p-u-10,h/2),"left",0,l.textColor),u=p}i.strokeStyle=g,i.stroke()}}class Ir{#kt;constructor(e){this.#kt=e}get rowHeight(){return this.#kt.theme$.getValue().rowHeight+1}getRowY(e){return this.#kt.getRowY(e)}getContentBottom(e){return this.#kt.getContentBottom(e)}drawRowHighlight(e,t,r,i){e.beginPath(),e.rect(0,r,t,i),e.fillStyle="rgba(0, 0, 0, 0.02)",e.fill()}}class Pr extends Ir{#$t;constructor(e){super(e),this.#$t=new Lr(e)}render(e){this.#$t.render(e)}}class Ar{#Rt;#Mt;#Lt;#wt;#It;#Pt;#At=null;#Ht=null;#Vt=!1;#Bt=!1;#T=new r;#Ft;#zt;#Ot;#Nt;#Wt;constructor(e,t,r,i,s){this.#Rt=t,this.#Lt=i,this.#wt=e,this.#It=s,this.#Pt={isMoving:!1,originalX:null,originalStart:null},this.#Ft=()=>this.#Ut(),this.#zt=e=>this.#jt(e),this.#Ot=e=>this.#Xt(e),this.#Nt=()=>this.#Yt(),this.#Wt=()=>this.#Kt(),this.#Rt.addEventListener("scroll",this.#Ft),this.#T.add(e.dividerResizing$.subscribe(e=>{this.#Bt=e,e||this.#Zt()})),this.#Rt.addEventListener("mousedown",this.#zt),this.#Rt.addEventListener("mousemove",this.#Ot),this.#Rt.addEventListener("mouseup",this.#Nt),this.#Rt.addEventListener("mouseleave",this.#Wt),this.#T.add(this.#wt.timeline.zoomIndex$.subscribe(()=>{this.#Gt()})),this.#T.add(this.#wt.timeline.visibleStartTime$.subscribe(()=>{this.#qt()})),this.#T.add(this.#wt.projectTimeline$.subscribe(()=>{this.#_t()})),this.#Zt(),this.#Mt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#Jt())}),this.#Mt.observe(this.#Rt)}#Jt(){this.#Qt()}#jt(e){var t=this.#wt.theme$.getValue();e.offsetY<=t.contentTop&&(this.#Pt.isMoving=!0,this.#Pt.originalX=e.offsetX,this.#Pt.originalStart=this.#wt.timeline.visibleStartTime$.getValue(),this.#Rt.style.cursor="grabbing")}#Xt(e){if(this.#Pt.isMoving){var t=this.#wt.timeline.currentZoom,r=t.axis[0],i=e.offsetX-this.#Pt.originalX,s=this.#er(r,t),n=new Date(this.#Pt.originalStart.getTime()-i*s);this.#tr(n),this.#Zt()}}#er(e,t){var r=this.#Pt.originalStart,i=e.getCellStartTime(r);return(e.getAdd(i,1).getTime()-i.getTime())/t.baseCellWidth}#Yt(){this.#rr()}#Kt(){this.#rr()}#tr(e){this.#Vt=!0,this.#wt.timeline.visibleStartTime$.next(e),this.#Vt=!1}#rr(){this.#Pt.isMoving=!1,this.#Rt.style.cursor="default";var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.timeline.visibleStartTime$.getValue();this.#tr(e.getCellStartTime(t)),this.#Zt(),this.#Qt()}#Qt(){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=this.#Rt.offsetWidth/e.baseCellWidth,s=Math.round(i/2);this.#At=t.getAdd(r,s)}#Gt(){null===this.#At&&this.#Qt();var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$,i=this.#Rt.offsetWidth/e.baseCellWidth,s=Math.round(-i/2),n=t.getCellStartTime(t.getAdd(this.#At,s));r.next(n),this.#Zt()}#qt(){this.#Vt||(this.#Qt(),this.#Zt())}#Zt(){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=this.#ir(),s=this.#sr(),n=t.getCellStartX(s,r,e)-t.getCellStartX(i,r,e),a=-t.getCellStartX(i,r,e),o=a+this.#Rt.clientWidth;o>n&&(n=o),this.#Lt.style.width=n+"px",this.#Rt.scrollLeft=a,this.#Ht=this.#Rt.scrollLeft}#ir(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue().startDate,r=new Date(t);r.setDate(r.getDate()-30);var i=e.getAdd(e.getCellStartTime(t),-3),s=e.getCellStartTime(r),n=this.#It.getMinStartTime();return n?(n=zt(n),n=e.getAdd(e.getCellStartTime(n),-3)):n=i,new Date(Math.min(i.getTime(),s.getTime(),n.getTime()))}#sr(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue().endDate,r=e.getAdd(e.getCellStartTime(t),3),i=this.#It.getMaxEndTime();return i?(i=zt(i),i=e.getAdd(e.getCellStartTime(i),3)):i=r,e.getAdd(new Date(Math.max(r.getTime(),i.getTime())),1)}handleResize(){this.#Zt()}#Ut(){if(!(this.#Bt||this.#wt.autoScrolling||null!==this.#Ht&&Math.abs(this.#Rt.scrollLeft-this.#Ht)<1)){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#Rt.scrollLeft,i=Math.round(r/e.baseCellWidth),s=this.#ir();this.#tr(t.getAdd(s,i)),this.#Qt()}}#_t(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue(),r=new Date(t.startDate),i=Bt();i.getTime()>r.getTime()&&(r=i),r.setDate(r.getDate()-1),this.#tr(e.getCellStartTime(r)),this.#Zt()}destroy(){this.#T.unsubscribe(),this.#Mt.disconnect(),this.#Rt.removeEventListener("scroll",this.#Ft),this.#Rt.removeEventListener("mousedown",this.#zt),this.#Rt.removeEventListener("mousemove",this.#Ot),this.#Rt.removeEventListener("mouseup",this.#Nt),this.#Rt.removeEventListener("mouseleave",this.#Wt)}}class Hr extends Ar{constructor(e,t,r,i){super(e,t,r,i,{getMinStartTime:()=>e.list.minStartTime,getMaxEndTime:()=>e.list.maxEndTime})}}class Vr{listeners=[];observer=null;startWatching(e){this.observer=new MutationObserver(t=>{for(const r of t)Array.from(r.removedNodes).forEach(t=>{(t===e||t.contains(e))&&this.destroy()})}),this.observer.observe(document.body,{childList:!0,subtree:!0})}addDocumentListener(e,t){const r=t.bind(this);document.addEventListener(e,r),this.listeners.push({type:e,handler:r})}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null);for(const{type:e,handler:t}of this.listeners)document.removeEventListener(e,t);this.listeners=[]}}const Br=40;class Fr{#nr;#ar=null;#or=!1;#lr=0;#hr=0;#Ut;#dr;#cr;constructor(e,t,r){this.#nr=e,this.#Ut=t,this.#dr=r?.enableVertical??!1,this.#cr=r?.getContentTop??(()=>0)}start(){this.#or||(this.#or=!0,this.#ur())}stop(){this.#or=!1,null!==this.#ar&&(cancelAnimationFrame(this.#ar),this.#ar=null)}updateMousePosition(e,t){this.#lr=e,this.#hr=t}#ur(){if(this.#or){var e=this.#nr.getBoundingClientRect(),t=this.#gr(this.#lr,e.left,e.right),r=0;if(this.#dr){var i=e.top+this.#cr();r=this.#gr(this.#hr,i,e.bottom)}0===t&&0===r||this.#Ut(t,r),this.#ar=requestAnimationFrame(()=>this.#ur())}}#gr(e,t,r){return e<t?-this.#mr(t-e+Br):e<t+Br?-this.#mr(t+Br-e):e>r?this.#mr(e-r+Br):e>r-Br?this.#mr(e-(r-Br)):0}#mr(e){return Math.min(10,Math.ceil(e/Br*10))}}var zr=null;function Or(){return null===zr&&(zr=function(){if("undefined"==typeof document)return 17;var e=document.createElement("div");e.style.visibility="hidden",e.style.overflow="scroll",e.style.position="absolute",e.style.top="-9999px",e.style.width="100px",e.style.height="100px",document.body.appendChild(e);var t=document.createElement("div");t.style.width="100%",t.style.height="100%",e.appendChild(t);var r=e.offsetHeight-t.offsetHeight;return document.body.removeChild(e),Math.max(r,6)}()),zr}class Nr extends Vr{#pr=[];#wt;#Rt;#vr=null;#T=new r;#fr;#yr;#br;#wr;#Tr;#Cr;operationComplete$=new e;redraw$=new e;constructor(e,t){super(),this.startWatching(t),this.#wt=e}get chartElement(){return this.#Rt}addHandler(e){this.#pr.push(e)}addSubscription(e){this.#T.add(e)}wireHandlers(){for(let e of this.#pr)this.#T.add(e.operationComplete$.subscribe(()=>{this.operationComplete$.next()}));this.#T.add(this.#wt.chartRedrawn$.subscribe(()=>{for(let e of this.#pr)e.onRedrawn()})),this.#T.add(this.#wt.chartBackgroundRedrawn$.subscribe(()=>{for(let e of this.#pr)e.onBackgroundRedrawn()}))}getMousePosition(e){return new xr(e.offsetX,e.offsetY)}init(e,t){this.#Rt=e,this.#vr=this.createAutoScroll(e);for(let e of this.#pr)e.init(t);this.#fr=e=>{this.#xr(e)},this.#yr=e=>{this.#kr(e)},this.#br=e=>{this.#Er(e)},this.#wr=e=>{this.#Dr(e)},this.#Tr=e=>{this.#Sr(e)},this.#Cr=e=>{this.#$r(e)},e.addEventListener("mousedown",this.#fr,!1),e.addEventListener("mouseup",this.#yr,!1),e.addEventListener("mousemove",this.#br,!1),e.addEventListener("mouseleave",this.#wr,!1),this.registerKeydownListener(e),e.addEventListener("contextmenu",this.#Tr,!1),e.addEventListener("dblclick",this.#Cr,!1),this.addDocumentListener("mousemove",this.#Rr),this.addDocumentListener("mouseup",this.#Mr)}createAutoScroll(e){return new Fr(e,(e,t)=>this.onAutoScroll(e,t))}onAutoScroll(e,t){if(0!==e){var r=this.#wt.timeline.currentZoom,i=r.axis[0],s=this.#wt.timeline.visibleStartTime$.getValue(),n=i.getCellStartTime(s),a=(i.getAdd(n,1).getTime()-n.getTime())/r.baseCellWidth,o=new Date(s.getTime()+e*a);this.#wt.timeline.visibleStartTime$.next(o)}}registerKeydownListener(e){this.addDocumentListener("keydown",e=>{this.handleKeyDown(e)})}async handleKeyDown(e){await this.#Lr(e,async t=>await t.onKeyDown(e.key,e))}#Ir(){return this.#pr.find(e=>e.isInOperation)??null}async#Lr(e,t){var r=this.#Ir(),i=!1;if(r){var s=await t(r);i=i||s.needsRedraw}for(let n of this.#pr)if((!r||n.alwaysHandleEvents)&&(!n.ignoreWhenCannotEdit||this.#wt.canEdit)&&(!("button"in e)||2!=e.button||!n.ignoreRightButton)){s=await t(n);if(i=i||s.needsRedraw,s.handled)break}i&&this.redraw$.next()}async#Er(e){e.preventDefault(),this.#vr?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);await this.#Lr(e,async r=>await r.onMouseMove(t,e))}async#Dr(e){e.preventDefault();var t=this.getMousePosition(e);await this.#Lr(e,async r=>await r.onMouseLeave(t,e))}async#xr(e){if(e.preventDefault(),!this.#Pr(e)){this.onBeforeMouseDown();var t=this.getMousePosition(e),r=e.ctrlKey;await this.#Lr(e,async i=>await i.onMouseDown(t,r,e)),this.#Ir()&&(this.#wt.autoScrolling=!0,this.#vr?.updateMousePosition(e.clientX,e.clientY),this.#vr?.start())}}onBeforeMouseDown(){}async#kr(e){e.preventDefault(),this.#Ar();var t=this.getMousePosition(e),r=e.ctrlKey;await this.#Lr(e,async i=>await i.onMouseUp(t,r,e))}#Sr(e){e.preventDefault();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onContextMenu(t,e)),this.onAfterContextMenu(t,e)}onAfterContextMenu(e,t){}#$r(e){e.preventDefault();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDblClick(t,e))}#Mr(e){e.preventDefault(),this.#Ar();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDocumentMouseUp(t,e))}#Rr(e){e.preventDefault(),this.#vr?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDocumentMouseMove(t,e))}#Ar(){this.#vr?.stop(),this.#wt.autoScrolling=!1}destroy(){this.#T.unsubscribe(),this.#Rt&&(this.#Rt.removeEventListener("mousedown",this.#fr,!1),this.#Rt.removeEventListener("mouseup",this.#yr,!1),this.#Rt.removeEventListener("mousemove",this.#br,!1),this.#Rt.removeEventListener("mouseleave",this.#wr,!1),this.#Rt.removeEventListener("contextmenu",this.#Tr,!1),this.#Rt.removeEventListener("dblclick",this.#Cr,!1)),super.destroy()}clear(){this.#Ar();for(let e of this.#pr)e.clear()}#Pr(e){return function(e,t){var r=t.getBoundingClientRect();return e.clientY-r.top>=r.height-Or()}(e,this.#Rt)}}class Wr{handled;needsRedraw;static handled=new Wr(!0,!0);static notHandled=new Wr(!1,!1);static notHandledNeedsRedraw=new Wr(!1,!0);constructor(e,t){this.handled=e,this.needsRedraw=t}}class Ur{#wt;ignoreRightButton=!0;ignoreWhenCannotEdit=!0;alwaysHandleEvents=!1;canvas;operationComplete$=new e;get canEdit(){return this.#wt.canEdit}constructor(e){this.#wt=e}#Hr=!1;set isInOperation(e){this.#Hr&&!e&&this.operationComplete$.next(),this.#Hr=e}get isInOperation(){return this.#Hr}async onMouseMove(e,t){return Wr.notHandled}async onMouseDown(e,t,r){return Wr.notHandled}async onMouseUp(e,t,r){return Wr.notHandled}async onKeyDown(e,t){return this.isInOperation&&"Escape"===t.key?(this.isInOperation=!1,this.setCursor("default"),Wr.handled):Wr.notHandled}async onMouseLeave(e,t){return Wr.notHandled}onContextMenu(e,t){return Wr.notHandled}onDblClick(e,t){return Wr.notHandled}onDocumentMouseMove(e,t){return Wr.notHandled}onDocumentMouseUp(e,t){return Wr.notHandled}clear(){}init(e){this.canvas=e}onRedrawn(){}onBackgroundRedrawn(){}dateToX(e){var t=this.#wt.timeline.currentZoom,r=t.axis[0],i=this.#wt.timeline.visibleStartTime$.getValue();return Math.floor(r.getX(e,i,t))}getCellAt(e){var t=this.#wt.timeline.currentZoom;return e.x/t.baseCellWidth}getCellEndAligned(e){var t=this.getCellAt(e);return"day"==this.#wt.timeline.currentZoom.axis[0].unit?Math.round(2*t)/2:Math.round(t)}getEndTimeAligned(e){var t=this.#wt.timeline.currentZoom.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=t.getAdd(r,Math.floor(e));if("day"==t.unit&&(e-Math.floor(e)>0&&this.#wt.calendar.isWorkingDay(i))){var s=this.#wt.calendar.getHoursPerDay();i=this.#wt.calendar.addHours(i,s/2)}return i}cellToDate(e){var t=this.#wt.timeline.currentZoom.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue();return t.getAdd(r,Math.round(e))}setCursor(e){this.#wt.chartCursor$.next(e)}}class jr{borderColor=null;color1="#aabbff";color2="#6677dd";highlightColor="rgba(50, 70, 200, 0.4)";static create(e){return Object.assign(new this,e)}}function Xr(e,t){if("number"==typeof e)return t[e%t.length];var r=t[0];return Object.assign(Object.create(Object.getPrototypeOf(r)),r,e)}class Yr{backgroundColor="#f8f8f8";cellBorderColor="#a0a0a0";cellDividerColor=null;textColor="#000000"}class Kr{header=new Yr;backgroundColor="#ffffff";textColor="#000000";hoverBackgroundColor="#f8f8f8";selectedBackgroundColor="#f8f8f8";selectedRowHeaderColor="#e8e8e8";focusBorderColor="#4a7cf6";highlightBorderColor="#647ee8";treeIconColor="#606060";editorBackgroundColor="#ffffff";editorTextColor="#000000";scrollbarThumbColor="#c1c1c1";scrollbarTrackColor="#f1f1f1";gridLineColor="#e0e0e0";colorScheme="light"}class Zr{backgroundColor="#f8f8f8";cellBorderColor="#a0a0a0";cellDividerColor=null;cellDividerPadding=0;textColor="#000000"}class Gr{backgroundColor="#ffffff";taskHeight=16;taskBorderRadius=0;taskColors;nonWorkingTimeStyle="#f8f8f8";tier2SeparatorLineStyle="#d0d0d0";gridLineColor="#f0f0f0";tooltipFont=Dr.from(null,10);tooltipTextColor="#606060";tooltipBackgroundColor1="#ffffff";tooltipBackgroundColor2="#f4f4f4";tooltipBorderColor="#606060";todayLineColor="#555555";todayLineWidth=1;todayLineStyle="dotted";markerLineColor="#555555";markerLineWidth=1;markerLineStyle="dotted";markerLabelColor="#555555";markerLabelFont=Dr.from(null,9);taskLabelPosition="none";taskLabelContent="name";taskLabelColor="#333333";taskLabelFont=Dr.from(null,10);taskLabelPadding=4;taskLabelOutsideMargin=6;constructor(){this.taskColors=[new jr,jr.create({color1:"#ffcccc",color2:"#dd9999",highlightColor:"rgba(200, 70, 70, 0.4)"}),jr.create({color1:"#bbeebb",color2:"#88cc88",highlightColor:"rgba(70, 160, 70, 0.4)"}),jr.create({color1:"#f8f8aa",color2:"#e8e899",highlightColor:"rgba(180, 180, 50, 0.4)"}),jr.create({color1:"#ddbbff",color2:"#bb99dd",highlightColor:"rgba(140, 90, 180, 0.4)"}),jr.create({color1:"#ffd8a8",color2:"#eebb88",highlightColor:"rgba(180, 130, 60, 0.4)"}),jr.create({color1:"#a8e8e8",color2:"#77cccc",highlightColor:"rgba(60, 160, 160, 0.4)"}),jr.create({color1:"#ffbbdd",color2:"#ee99bb",highlightColor:"rgba(200, 80, 140, 0.4)"})]}}class qr{header=new Zr;content=new Gr}class _r{font=new Dr;rowHeight=30;headerHeight=50;get contentTop(){return this.headerHeight+2}sheet=new Kr;chart=new qr}class Jr extends jr{progressColor1="#7788cc";progressColor2="#223399";progressHighlightColor="rgba(50, 70, 200, 0.4)";separatorColor="#6677dd";linkLineColor="#6677dd";linkArrowColor="#6677dd"}class Qr extends Gr{taskProgressHeight=16;summaryHeight=16;summaryColor1="#e0e0e0";summaryColor2="#b0b0b0";summaryMarkColor1="#e0e0e0";summaryMarkColor2="#808080";summaryProgressHeight=16;summaryProgressColor1="#a0a0a0";summaryProgressColor2="#707070";summaryMarkProgressColor1="#a0a0a0";summaryMarkProgressColor2="#404040";summaryBorderColor=null;summaryMarkWidth=14;summaryMarkType="half";summaryHighlightColor="rgba(70, 70, 70, 0.4)";milestoneSize=16;milestoneColor1="#b0b0b0";milestoneColor2="#606060";milestoneBorderColor=null;milestoneHighlightColor="rgba(50, 50, 50, 0.5)";connectorDotRadius=7;connectorDotColor="#4a90d9";connectorDotBorderColor="#2a6ab0";connectorDotHoverColor="#2a6ab0";linkLineStyle="sharp";linkFromMilestoneLineColor="#909090";linkFromMilestoneArrowColor="#909090";baselineColor="#d8d8d8";baselineHeight=6;baselineSummaryHeight=8;baselineMilestoneSize=8;baselineOffset=3;baselineBorderRadius=1;criticalTaskBorderColor="#cc0000";criticalTaskBorderWidth=2;criticalMilestoneBorderColor="#cc0000";criticalSummaryBorderColor="#cc0000";constraintFixedColor="#cc4444";constraintAlapColor="#888888";constraintBoundaryColor="#4a7cf6";summaryLabelPosition="none";summaryLabelContent="name";summaryLabelColor="#333333";milestoneLabelPosition="none";milestoneLabelContent="name";milestoneLabelColor="#333333";constructor(){super(),this.taskColors=[new Jr,Jr.create({color1:"#ffcccc",color2:"#dd9999",progressColor1:"#eeaaaa",progressColor2:"#cc7777",separatorColor:"#cc7777",linkLineColor:"#cc7777",linkArrowColor:"#cc7777"}),Jr.create({color1:"#bbeebb",color2:"#88cc88",progressColor1:"#88cc88",progressColor2:"#55aa55",separatorColor:"#55aa55",linkLineColor:"#55aa55",linkArrowColor:"#55aa55"}),Jr.create({color1:"#f8f8aa",color2:"#e8e899",progressColor1:"#e8e899",progressColor2:"#d0d077",separatorColor:"#cccc66",linkLineColor:"#cccc66",linkArrowColor:"#cccc66"}),Jr.create({color1:"#ddbbff",color2:"#bb99dd",progressColor1:"#cc99ee",progressColor2:"#aa77cc",separatorColor:"#aa77cc",linkLineColor:"#aa77cc",linkArrowColor:"#aa77cc"}),Jr.create({color1:"#ffd8a8",color2:"#eebb88",progressColor1:"#eebb88",progressColor2:"#cc9966",separatorColor:"#cc9966",linkLineColor:"#cc9966",linkArrowColor:"#cc9966"}),Jr.create({color1:"#a8e8e8",color2:"#77cccc",progressColor1:"#77cccc",progressColor2:"#55aaaa",separatorColor:"#55aaaa",linkLineColor:"#55aaaa",linkArrowColor:"#55aaaa"}),Jr.create({color1:"#ffbbdd",color2:"#ee99bb",progressColor1:"#ee99bb",progressColor2:"#cc7799",separatorColor:"#cc7799",linkLineColor:"#cc7799",linkArrowColor:"#cc7799"})]}}class ei extends qr{constructor(){super(),this.content=new Qr}}class ti extends _r{constructor(){super(),this.chart=new ei}}function ri(e,t){switch(e){case"task":return t.taskHeight;case"milestone":return t.milestoneSize;case"summary":return t.summaryHeight;default:return 0}}function ii(e,t,r){var i=t.theme$.getValue(),s=t.sheetScrollTop$.getValue()+e.y-i.contentTop;if(s<0)return null;for(var n=0,a=0;a<t.list.length;a++){var o=t.list.getTask(a);if(!o.hidden){var l=n+i.rowHeight+1;if(s>=n&&s<l)return!r||r(o)?o:null;n=l}}return null}class si extends Ur{#kt;#Vr;#Br;constructor(e,t,r){super(e),this.#kt=e,this.#Vr=t,this.#Br=r}getTaskRowAt(e){return ii(e,this.#kt)}getTaskAt(e){var t=this.getTaskRowAt(e);if(t){var r=null;if(!this.containsVertically(t,e))return null;var i=this.#kt.theme$.getValue(),s=0,n=0;switch(t.type){case"empty":return null;case"task":var a=this.getTaskPartAt(t,e);if(!a)return null;r=a.taskPart,s=a.x1,n=a.x2;break;case"milestone":var o=this.dateToX(t.endTime),l=i.chart.content.milestoneSize;if(s=o-l/2,n=o+l/2,!(e.x>=s&&e.x<=n))return null;break;case"summary":if(s=this.dateToX(t.startTime),n=this.dateToX(t.endTime),!(e.x>=s&&e.x<=n))return null}return{task:t,taskPart:r,x1:s,x2:n}}return null}getShapeHeight(e){var t=this.#kt.theme$.getValue();return ri(e.type,t.chart.content)}containsVertically(e,t){var r=this.getShapeHeight(e),i=this.getRowY(e)+(this.#kt.theme$.getValue().rowHeight+1)/2-r/2;return t.y>=i&&t.y<i+r}getTaskPartAt(e,t,r){for(var i=0;i<e.partsLength;i++){var s=e.getPart(i),n=this.dateToX(s.startTime),a=this.dateToX(s.endTime);if(r=r??0,t.x>=n&&t.x<=a+r)return{taskPart:s,x1:n,x2:a}}return null}getRowY(e){return this.#kt.getRowY(e)}drawTaskProgressHighlight(e,t,r){var i=this.canvas.getContext("2d");this.#Vr.drawTaskProgressHighlight(i,e,t,r)}drawTaskHighlightX1X2(e,t,r){var i=this.canvas.getContext("2d");this.#Vr.drawTaskHighlightX1X2(i,e,t,r)}drawTaskHighlight(e){var t=this.canvas.getContext("2d");this.#Vr.drawTaskHighlight(t,e)}drawTooltip(e,t,r,i){this.#Br.drawTooltip(this.canvas,e,t,r,i)}}class ni extends si{startX=0;lastP=new xr(0,0);target=null;dragCursor="all-scroll";enableHoverDetection=!1;hoverCursor="ew-resize";constructor(e,t,r){super(e,t,r)}onDragStart(e,t){}async onMouseMove(e,t){if(this.isInOperation)return this.lastP=e,Wr.handled;if(this.enableHoverDetection){var r=this.hitTest(e);if(r)return this.target=r,this.setCursor(this.hoverCursor),Wr.handled;this.target&&(this.target=null,this.setCursor("default"))}return Wr.notHandled}async onMouseDown(e,t,r){if(0!==r.button||this.isInOperation)return Wr.notHandled;var i=this.hitTest(e);return i?(this.target=i,this.isInOperation=!0,this.startX=e.x,this.lastP=e,this.onDragStart(i,e),this.setCursor(this.dragCursor),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,this.setCursor("default"),this.onDragEnd(this.target,e),Wr.handled):Wr.notHandled}onRedrawn(){this.isInOperation&&this.target&&this.onDragDraw(this.target)}}class ai extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e,this.dragCursor="crosshair"}hitTest(e){var t=this.getTaskRowAt(e);if(!t)return null;if("empty"!=t.type&&"task"!=t.type)return null;for(var r=0;r<t.partsLength;r++){var i=t.getPart(r),s=this.dateToX(i.startTime),n=this.dateToX(i.endTime);if(e.x>=s&&e.x<=n)return null}return{task:t,startCell:this.getCellAt(e)}}onDragEnd(e,t){var r=this.#Fr(t);r&&r.length.value>0&&e.task.addPart(r.startTime,r.length)}onDragDraw(e){this.drawTaskHighlightX1X2(e.task,this.startX,this.lastP.x);var t=this.#Fr(this.lastP);if(t){var r=this.#kt.locale$.getValue(),i=[];i.push({name:r.labels.start,value:Kt(t.startTime,r.language)}),i.push({name:r.labels.end,value:Kt(t.endTime,r.language)}),i.push({name:r.labels.length,value:t.length.toString()}),this.drawTooltip([e.task],this.startX,"empty"==e.task.type?r.tooltips.addTask:r.tooltips.addTaskPart,i)}}#Fr(e){var t=this.target,r=Math.round(t.startCell),i=this.getCellEndAligned(e);if(i<=r)return null;var s=this.cellToDate(t.startCell),n=this.getEndTimeAligned(i);if(s=this.#kt.calendar.moveToStartShift(s,!0),n=this.#kt.calendar.moveToEndShift(n,!0),s.getTime()>=n.getTime())return null;var a=t.task.length?.unit??"day";return{startTime:s,endTime:n,length:rr.getLength(s,n,a,this.#kt.calendar)}}}class oi extends si{#kt;#zr=null;dblClick$=new e;contextMenu$=new e;constructor(e,t,r){super(e,t,r),this.ignoreRightButton=!1,this.ignoreWhenCannotEdit=!1,this.#kt=e}async onMouseMove(e,t){var r=this.getTaskRowAt(e);return r!=this.#zr&&(this.#zr=r,this.#kt.chartTaskHover$.next(r)),Wr.notHandled}async onMouseDown(e,t,r){return Wr.notHandled}async onMouseUp(e,t,r){return Wr.notHandled}async onKeyDown(e,t){return Wr.notHandled}async onMouseLeave(e,t){return this.#zr=null,this.#kt.chartTaskHover$.next(null),Wr.notHandled}onContextMenu(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getTaskAt(e);return r?(this.contextMenu$.next({mouseEvent:t,task:r.task}),Wr.handled):Wr.notHandled}onDblClick(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getTaskAt(e);return r?(this.dblClick$.next(r.task),Wr.handled):Wr.notHandled}}class li extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e}hitTest(e){var t=this.getTaskAt(e);return t&&"task"==t.task.type?t:null}onDragEnd(e,t){var r=this.#Fr(t),i=e.task,s=e.taskPart,n=i.indexOf(s);0==n?i.startTime=r.startTime:n>0&&(s.startTime=r.startTime)}onDragDraw(e){var t=this.lastP.x-this.startX;this.drawTaskHighlightX1X2(e.task,e.x1+t,e.x2+t);var r=this.#kt.locale$.getValue(),i=this.#Fr(this.lastP),s=[];s.push({name:r.labels.start,value:Kt(i.startTime,r.language)}),this.drawTooltip([e.task],this.startX,1==e.task.partsLength?r.tooltips.moveTask:r.tooltips.moveTaskPart,s)}#Fr(e){var t=e.x-this.startX,r=this.getCellAt(new xr(this.target.x1+t,e.y));return{startTime:this.cellToDate(r)}}}class hi extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e,this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getTaskRowAt(e);if(t){if(!this.containsVertically(t,e))return null;if("task"==t.type){var r=this.getTaskPartAt(t,e,3);if(!r)return null;if(Math.abs(e.x-r.x2)<=3)return{task:t,taskPart:r.taskPart,x1:r.x1,x2:r.x2,deltaX:e.x-r.x2}}}return null}onDragEnd(e,t){var r=this.#Fr(t);r.length.value>0?e.taskPart.endTime=r.endTime:e.taskPart.length=new rr(r.lengthUnit,0)}onDragDraw(e){var t=this.lastP.x-this.startX-e.deltaX,r=e.x1,i=e.x2+t;this.drawTaskHighlightX1X2(e.task,r,i);var s=this.#kt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];a.push({name:s.labels.end,value:Kt(n.endTime,s.language)}),a.push({name:s.labels.length,value:n.length.toString()});var o=e.task;this.drawTooltip([e.task],this.startX,1==o.partsLength?s.tooltips.resizeTask:s.tooltips.resizeTaskPart,a)}#Fr(e){var t=this.target,r=this.lastP.x-this.startX-t.deltaX,i=t.x2+r,s=this.getCellEndAligned(new xr(i,e.y)),n=this.getEndTimeAligned(s);n=this.#kt.calendar.moveToEndShift(n,!0);var a=t.task.length?.unit??"day";return{endTime:n,length:rr.getLength(t.taskPart.startTime,n,a,this.#kt.calendar),lengthUnit:a}}}class di extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e}hitTest(e){var t=this.getTaskAt(e);return t&&"milestone"==t.task.type?t:null}onDragEnd(e,t){var r=this.#Fr(t);e.task.startTime=r.startTime}onDragDraw(e){var t=this.lastP.x-this.startX,r=e.x1+t,i=(e.x2+t+r)/2;this.#Or(i,e);var s=this.#kt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];a.push({name:s.labels.start,value:Kt(n.startTime,s.language)}),a.push({name:s.labels.end,value:Kt(n.startTime,s.language)}),this.drawTooltip([e.task],this.startX,s.tooltips.moveMilestone,a)}#Fr(e){var t=e.x-this.startX,r=(this.target.x1+this.target.x2)/2+t,i=this.getCellAt(new xr(r,e.y)),s=this.cellToDate(i),n=this.#kt.timeline.currentZoom.axis[0];if("minute"!=n.unit&&"hour"!=n.unit){var a=this.#kt.calendar.getHoursPerDay();s=this.#kt.calendar.addHours(s,-a)}return{startTime:s}}#Or(e,t){var r=this.canvas.getContext("2d"),i=t.task,s=this.getRowY(i),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.milestoneSize;s=s+a/2-o/2,e-=o/2,r.beginPath(),r.moveTo(e,s+o/2),r.lineTo(e+o/2,s),r.lineTo(e+o,s+o/2),r.lineTo(e+o/2,s+o),r.lineTo(e,s+o/2),r.fillStyle="rgba(100, 120, 200, 0.3)",r.fill()}}function ci(e,t,r,i){return null!=function(e,t,r,i){var s=function(e,t,r){var i=((r.x-e.x)*(t.x-e.x)+(r.y-e.y)*(t.y-e.y))/((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y));if(i<0||i>1)return null;return i}(e,t,i);if(null===s||s<0||s>1)return null;var n=Math.pow(i.x-e.x-s*(t.x-e.x),2)+Math.pow(i.y-e.y-s*(t.y-e.y),2);if(n>1/4*r*r)return null;return new xr(e.x+(t.x-e.x)*s,e.y+(t.y-e.y)*s)}(e,t,r,i)}function ui(e,t,r="#ffffff"){e.lineWidth=1,e.beginPath(),e.roundRect(t.x-Math.ceil(3.5)+.5,t.y-Math.ceil(3.5)+.5,7,7,2),e.fillStyle=r,e.fill(),e.strokeStyle="#606060",e.stroke()}function gi(e,t,r,i){var s=e.createLinearGradient(t.x,t.y,t.x,t.bottom);return s.addColorStop(0,r),s.addColorStop(1,i),s}function mi(e,t,r){r>0?e.roundRect(t.x,t.y,t.width,t.height,r):e.rect(t.x,t.y,t.width,t.height)}function pi(e,t,r,i=0){e.beginPath(),mi(e,t,i),e.strokeStyle=r,e.stroke()}class vi{#kt;constructor(e){this.#kt=e}get rowHeight(){return this.#kt.theme$.getValue().rowHeight+1}getCoords(e){var t,r,i=this.#kt.timeline.currentZoom,s=i.axis[0],n=this.#kt.timeline.visibleStartTime$.getValue(),a=this.#kt.theme$.getValue();switch(e.type){case"finishToStart":case"finishToFinish":t=Math.floor(s.getX(e.from.endTime,n,i)),"milestone"==e.from.type&&(t+=a.chart.content.milestoneSize/2);break;case"startToStart":case"startToFinish":t=Math.floor(s.getX(e.from.startTime,n,i)),"milestone"==e.from.type&&(t-=a.chart.content.milestoneSize/2)}switch(e.type){case"finishToStart":case"startToStart":r=Math.floor(s.getX(e.to.startTime,n,i)),"milestone"==e.to.type&&(r-=a.chart.content.milestoneSize/2);break;case"finishToFinish":case"startToFinish":r=Math.floor(s.getX(e.to.endTime,n,i)),"milestone"==e.to.type&&(r+=a.chart.content.milestoneSize/2)}var o,l=this.#kt.getRowY(e.from)+this.rowHeight/2,h=this.#kt.list.indexOf(e.from)<this.#kt.list.indexOf(e.to)?1:-1;switch(e.type){case"finishToStart":case"startToFinish":var d=this.#Nr(e.to,a);o=h>0?this.#kt.getRowY(e.to)+this.rowHeight/2-d/2:this.#kt.getRowY(e.to)+this.rowHeight/2+d/2;break;default:o=this.#kt.getRowY(e.to)+this.rowHeight/2}return{x1:t,y1:l,x2:r,y2:o,sign:h,type:e.type}}#Nr(e,t){return ri(e.type,t.chart.content)||t.chart.content.taskHeight}}class fi extends si{#kt;#Wr;#Ur=null;#jr=null;constructor(e,t,r){super(e,t,r),this.#kt=e,this.#Wr=new vi(e)}async onMouseDown(e,t,r){for(var i=0;i<this.#kt.list.linksLength;i++){var s=this.#kt.list.getLink(i);if(!s.from.hidden&&!s.to.hidden){var n=this.#Wr.getCoords(s);if(this.#Xr(n,e,s))return this.#Ur=s,this.#jr=n,this.isInOperation=!0,Wr.handled}}return this.#Ur=null,this.#jr=null,Wr.notHandled}#Xr(e,t,r){for(var i=this.#Yr(e,r),s=0;s<i.length-1;s++)if(ci(i[s],i[s+1],5,t))return!0;return!1}#Yr(e,t){var r=e.x1,i=e.y1,s=e.x2,n=e.y2;switch(t.type){case"finishToStart":var a=Math.max(s,r+10);return[new xr(r,i),new xr(a,i),new xr(a,n)];case"startToFinish":a=Math.min(s,r-10);return[new xr(r,i),new xr(a,i),new xr(a,n)];case"startToStart":a=Math.min(r,s)-10;return[new xr(r,i),new xr(a,i),new xr(a,n),new xr(s,n)];case"finishToFinish":a=Math.max(r,s)+10;return[new xr(r,i),new xr(a,i),new xr(a,n),new xr(s,n)]}return[]}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,Wr.handled):Wr.notHandled}async onKeyDown(e,t){return this.#Ur&&tr(t)?(this.#kt.list.removeLink(this.#Ur),this.#Ur=null,this.#jr=null,Wr.handled):Wr.notHandled}onRedrawn(){if(this.#Ur){this.#jr=this.#Wr.getCoords(this.#Ur);var e=this.#jr,t=this.canvas.getContext("2d");ui(t,new xr(e.x1,e.y1)),ui(t,new xr(e.x2,e.y2))}}}class yi{#kt;constructor(e){this.#kt=e}getTotalWidth(e){for(var t=this.#kt.timeline.currentZoom,r=t.axis[0],i=this.#kt.timeline.visibleStartTime$.getValue(),s=0,n=0;n<e.partsLength;n++){var a=e.getPart(n),o=r.getX(a.startTime,i,t);s+=r.getX(a.endTime,i,t)-o}return s}getProgressAt(e,t){for(var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=this.getTotalWidth(e),a=0,o=0;o<e.partsLength;o++){var l=e.getPart(o),h=i.getX(l.startTime,s,r),d=i.getX(l.endTime,s,r);if(h>=t)break;t>=Math.floor(h)&&t<=Math.ceil(d)?a+=(t-h)/n:a+=(d-h)/n}return Math.round(100*a)}getProgressX(e,t){for(var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=t/100*this.getTotalWidth(e),a=null,o=0;o<e.partsLength;o++){var l=e.getPart(o),h=i.getX(l.startTime,s,r),d=i.getX(l.endTime,s,r);if(null===a&&(a=h),Math.abs(n)<=1e-4)break;n>=d-h?(a=d,n-=d-h):(a=h+n,n=0)}return a}}class bi extends ni{#kt;#Wr;constructor(e,t,r){super(e,t,r),this.#kt=e,this.#Wr=new yi(e),this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getTaskRowAt(e);if(t){if(!this.containsVertically(t,e))return null;if("task"==t.type){var r=this.#Wr.getProgressX(t,t.progress);if(Math.abs(e.x-r)<=3)return{task:t,deltaX:e.x-r}}}return null}onDragEnd(e,t){var r=this.#Wr.getProgressAt(e.task,t.x-e.deltaX);e.task.progress=r}onDragDraw(e){for(var t=e.task,r=this.#Wr.getProgressAt(t,this.lastP.x-e.deltaX),i=this.#Wr.getProgressX(t,r),s=0;s<t.partsLength;s++){var n=t.getPart(s),a=this.dateToX(n.startTime),o=this.dateToX(n.endTime);if(a>=i)break;this.drawTaskProgressHighlight(t,a,Math.min(o,i))}var l=this.#kt.locale$.getValue(),h=[];h.push({name:l.labels.progress,value:r.toString()}),this.drawTooltip([t],this.startX,l.tooltips.setProgress,h)}}class wi extends si{#kt;#Kr=null;#Zr=null;#Gr=!1;#qr=null;#_r=null;#Jr=null;#Qr=null;#ei=null;connectorDotsTask$=new t(null);constructor(e,t,r){super(e,t,r),this.#kt=e}async onMouseMove(e,t){if(this.#Gr)return this.#Jr=e,this.#ti(e),Wr.handled;var r=this.getTaskRowAt(e);if(r&&("task"===r.type||"milestone"===r.type)){var i=this.#ri(r,e);if(i)return this.#Kr=r,this.#Zr=i.side,this.connectorDotsTask$.next(r),this.setCursor("pointer"),new Wr(!0,!0);if(this.containsVertically(r,e)){var s=this.#ii(r);if(s&&e.x>=s.x1-10&&e.x<=s.x2+10)return this.#Kr===r&&null===this.#Zr||(this.#Kr=r,this.#Zr=null,this.connectorDotsTask$.next(r),this.setCursor("default")),Wr.notHandledNeedsRedraw}}return this.#Kr?(this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),this.setCursor("default"),Wr.notHandledNeedsRedraw):Wr.notHandled}async onMouseDown(e,t,r){return 0!==r.button?Wr.notHandled:this.#Kr&&this.#Zr?(this.#Gr=!0,this.isInOperation=!0,this.#qr=this.#Kr,this.#_r=this.#Zr,this.#Jr=e,this.setCursor("grabbing"),Wr.handled):Wr.notHandled}async onKeyDown(e,t){return this.#Gr&&"Escape"===t.key?(this.#Gr=!1,this.isInOperation=!1,this.setCursor("default"),this.#qr=null,this.#_r=null,this.#Qr=null,this.#ei=null,this.#Jr=null,this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){if(this.#Gr){if(this.#Gr=!1,this.isInOperation=!1,this.setCursor("default"),this.#Qr&&this.#ei){var i=mr(this.#_r,this.#ei);try{this.#kt.list.addLink(this.#qr,this.#Qr,i)}catch(e){}}return this.#qr=null,this.#_r=null,this.#Qr=null,this.#ei=null,this.#Jr=null,Wr.handled}return Wr.notHandled}async onMouseLeave(e,t){return!this.#Gr&&this.#Kr?(this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),Wr.notHandledNeedsRedraw):Wr.notHandled}onRedrawn(){var e=this.canvas.getContext("2d"),t=this.#kt.theme$.getValue(),r=t.chart.content.connectorDotRadius,i=this.#Kr;if(i){var s=this.#ii(i);if(s){var n=this.getRowY(i)+(t.rowHeight+1)/2;this.#si(e,s.x1-r,n,r,"start"===this.#Zr,t,i),this.#si(e,s.x2+r,n,r,"finish"===this.#Zr,t,i)}}if(this.#Gr&&this.#qr&&this.#Jr){var a=this.#ii(this.#qr);if(a){var o=this.getRowY(this.#qr)+(t.rowHeight+1)/2,l="start"===this.#_r?a.x1-r:a.x2+r,h=this.#Jr.x,d=this.#Jr.y;if(this.#Qr&&this.#ei){var c=this.#ii(this.#Qr);if(c){var u=this.getRowY(this.#Qr);h="start"===this.#ei?c.x1-r:c.x2+r,d=u+(t.rowHeight+1)/2,this.#si(e,c.x1-r,d,r,"start"===this.#ei,t,this.#Qr),this.#si(e,c.x2+r,d,r,"finish"===this.#ei,t,this.#Qr)}}var g=Xr(this.#qr.color,t.chart.content.taskColors);if(e.beginPath(),e.moveTo(l,o),e.lineTo(h,d),e.strokeStyle=g.linkLineColor,e.lineWidth=2,e.stroke(),e.lineWidth=1,this.#si(e,l,o,r,!0,t,this.#qr),this.#Qr&&this.#ei){var m=mr(this.#_r,this.#ei),p=this.#kt.locale$.getValue(),v=[];v.push({name:p.labels.from,value:this.#qr.name??""}),v.push({name:p.labels.to,value:this.#Qr.name??""}),v.push({name:p.labels.type,value:p.linkTypes[m]}),v.push({name:p.labels.lag,value:"0d"}),this.drawTooltip([this.#qr,this.#Qr],l,p.tooltips.addLink,v)}}}}#si(e,t,r,i,s,n,a){var o=Xr(a.color,n.chart.content.taskColors);e.beginPath(),e.arc(t,r+.5,i,0,2*Math.PI),e.fillStyle=s?o.color2:o.color1,e.fill(),e.strokeStyle=o.color2,e.stroke()}#ii(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":if(0===e.partsLength)return null;var r=e.getPart(0),i=e.getPart(e.partsLength-1);return{x1:this.dateToX(r.startTime),x2:this.dateToX(i.endTime)};case"milestone":var s=this.dateToX(e.startTime),n=t.chart.content.milestoneSize;return{x1:s-n/2,x2:s+n/2};default:return null}}#ri(e,t){var r=this.#ii(e);if(!r)return null;var i=this.#kt.theme$.getValue(),s=this.getRowY(e)+(i.rowHeight+1)/2,n=i.chart.content.connectorDotRadius,a=n+3,o=r.x1-n,l=r.x2+n,h=Math.sqrt((t.x-o)**2+(t.y-s)**2),d=Math.sqrt((t.x-l)**2+(t.y-s)**2);return h<=a?{side:"start"}:d<=a?{side:"finish"}:null}#ti(e){this.#Qr=null,this.#ei=null;var t=this.getTaskRowAt(e);if(t&&t!==this.#qr&&("task"===t.type||"milestone"===t.type)){var r=this.#ri(t,e);if(r)return this.#Qr=t,void(this.#ei=r.side);if(this.containsVertically(t,e)){var i=this.#ii(t);if(i&&e.x>=i.x1-10&&e.x<=i.x2+10){var s=Math.abs(e.x-i.x1),n=Math.abs(e.x-i.x2);this.#Qr=t,this.#ei=s<n?"start":"finish"}}}}}class Ti extends Ir{#kt;#Wr;constructor(e){super(e),this.#kt=e,this.#Wr=new yi(e)}#ni(e){var t=this.#kt.timeline.currentZoom,r=t.axis[0],i=this.#kt.timeline.visibleStartTime$.getValue(),s=this.#kt.theme$.getValue(),n=this.#kt.showCriticalPath$.getValue()&&e.isCritical,a=this.#kt.showBaseline$.getValue()&&!!e.baselineStartTime;return{zoom:t,axis:r,visibleStart:i,theme:s,isCritical:n,showBaseline:a,baselineOffset:a?s.chart.content.baselineOffset:0}}render(e){var t=e.getContext("2d");this.#ai(e,t),this.#oi(e,t),this.#li(e,t)}#ai(e,t){var r=this.#kt.sheetSelectedTasks$.getValue();if(0!==r.length){var i=this.#kt.theme$.getValue().rowHeight+1;for(var s of r)this.drawRowHighlight(t,e.width,this.getRowY(s),i)}}#li(e,t){var r=this.#kt.chartTaskHover$.getValue();if(!r){var i=this.#kt.sheetRowMouseOver$.getValue();i&&(r=i.task)}if(r){var s=this.#kt.theme$.getValue().rowHeight+1;this.drawRowHighlight(t,e.width,this.getRowY(r),s)}}#oi(e,t){var r=this.#kt.theme$.getValue().contentTop;r-=this.#kt.sheetScrollTop$.getValue();for(var i=0;i<this.#kt.list.length;i++){var s=this.#kt.list.getTask(i);if(!s.hidden){switch(s.type){case"task":this.#hi(t,s,r);break;case"milestone":this.#di(t,s,r);break;case"summary":this.#ci(t,s,r)}r+=this.rowHeight}}}#hi(e,t,r){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,baselineOffset:h}=i,d=i.showBaseline&&!!t.baselineEndTime,c=0,u=o.chart.content.taskHeight,g=o.chart.content.taskProgressHeight,m=o.chart.content.taskBorderRadius,p=Xr(t.color,o.chart.content.taskColors),v=p.color1,f=p.color2,y=p.borderColor,b=p.progressColor1,w=p.progressColor2,T=p.separatorColor,C=t.progress;if(d){var x=Math.floor(n.getX(t.baselineStartTime,a,s)),k=Math.floor(n.getX(t.baselineEndTime,a,s)),E=o.chart.content.baselineHeight,D=r+this.rowHeight/2-u/2-h+u+1,S=new kr(x,D,k-x,E);e.beginPath(),mi(e,S,o.chart.content.baselineBorderRadius),e.fillStyle=o.chart.content.baselineColor,e.fill()}for(var $=0;$<t.partsLength;$++){var R=t.getPart($),M=Math.floor(n.getX(R.startTime,a,s)),L=Math.floor(n.getX(R.endTime,a,s));e.beginPath();var I=new kr(M+(y||l?.5:0),r+this.rowHeight/2-u/2-h+(y||l?0:.5),L-M,u);if(mi(e,I,m),e.fillStyle=gi(e,I,v,f),e.fill(),null!==C&&C>0){var P=this.#Wr.getProgressX(t,C);(P=Math.min(L,P))>M&&(e.save(),e.clip(),e.beginPath(),e.rect(I.x,I.y+u/2-g/2,P-M,g),e.fillStyle=gi(e,I,b,w),e.fill(),e.restore())}l?(e.lineWidth=o.chart.content.criticalTaskBorderWidth,pi(e,I,o.chart.content.criticalTaskBorderColor,m),e.lineWidth=1):y&&pi(e,I,y,m),$>0&&this.#ui(e,c,M,r,u,T),c=L}if("asap"!==t.constraintType&&t.constraintDate&&this.#gi(e,t,r,u,i),"none"!==o.chart.content.taskLabelPosition){var A=t.getPart(0),H=t.getPart(t.partsLength-1),V=Math.floor(n.getX(A.startTime,a,s)),B=Math.floor(n.getX(H.endTime,a,s)),F=new kr(V,r+this.rowHeight/2-u/2-h,B-V,u);this.#mi(e,t,F,o.chart.content.taskLabelPosition,o.chart.content.taskLabelContent,o.chart.content.taskLabelColor)}}#ui(e,t,r,i,s,n){e.beginPath();for(var a=i+this.rowHeight/2+s/2,o=t+4;!(o>=r);)e.moveTo(o,a-3),e.lineTo(o,a),o+=5;e.strokeStyle=n,e.stroke()}#pi(e,t,r,i=0){var s=this.#kt.timeline.currentZoom,n=s.axis[0],a=this.#kt.timeline.visibleStartTime$.getValue(),o=this.#kt.theme$.getValue().chart.content.milestoneSize,l=Math.floor(n.getX(t.startTime,a,s)),h=r+this.rowHeight/2-o/2+i;return e.beginPath(),e.moveTo(l,h),e.lineTo(l+o/2,h+o/2),e.lineTo(l,h+o),e.lineTo(l-o/2,h+o/2),e.lineTo(l,h),new kr(l-o/2,h,o,o)}#di(e,t,r){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,showBaseline:h,baselineOffset:d}=i,c=o.chart.content.milestoneColor1,u=o.chart.content.milestoneColor2,g=o.chart.content.milestoneBorderColor;if(h){var m=o.chart.content.baselineMilestoneSize,p=Math.floor(n.getX(t.baselineStartTime,a,s)),v=o.chart.content.milestoneSize,f=r+this.rowHeight/2-v/2-d+v+1+m/2;e.beginPath(),e.moveTo(p,f-m/2),e.lineTo(p+m/2,f),e.lineTo(p,f+m/2),e.lineTo(p-m/2,f),e.lineTo(p,f-m/2),e.fillStyle=o.chart.content.baselineColor,e.fill()}var y=this.#pi(e,t,r,-d);if(e.fillStyle=gi(e,y,c,u),e.fill(),l?(e.strokeStyle=o.chart.content.criticalMilestoneBorderColor,e.lineWidth=o.chart.content.criticalTaskBorderWidth,e.stroke(),e.lineWidth=1):g&&(e.strokeStyle=g,e.stroke()),"asap"!==t.constraintType&&"alap"!==t.constraintType&&t.constraintDate&&this.#gi(e,t,r,o.chart.content.milestoneSize,i),"none"!==o.chart.content.milestoneLabelPosition){var b=o.chart.content.milestoneSize,w=o.chart.content.taskLabelOutsideMargin,T=new kr(y.right+w,r+this.rowHeight/2-b/2-d,300,b);this.#mi(e,t,T,"right",o.chart.content.milestoneLabelContent,o.chart.content.milestoneLabelColor)}}#ci(e,t,r){if(t.startTime&&t.endTime){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,baselineOffset:h}=i,d=i.showBaseline&&!!t.baselineEndTime,c=o.chart.content.summaryHeight;if(d){var u=Math.floor(n.getX(t.baselineStartTime,a,s)),g=Math.floor(n.getX(t.baselineEndTime,a,s)),m=o.chart.content.baselineSummaryHeight,p=r+this.rowHeight/2-c/2-h+c/2+1,v=o.chart.content.summaryMarkType,f=Math.round(o.chart.content.summaryMarkWidth*m/c);e.beginPath(),e.rect(u,p,g-u,m/2),"full"==v?(e.moveTo(u-f/2,p),e.lineTo(u+f/2,p),e.lineTo(u+f/2,p+m/2),e.lineTo(u,p+m),e.lineTo(u-f/2,p+m/2)):(e.moveTo(u,p),e.lineTo(u+f/2,p),e.lineTo(u+f/2,p+m/2),e.lineTo(u,p+m)),"full"==v?(e.moveTo(g-f/2,p),e.lineTo(g+f/2,p),e.lineTo(g+f/2,p+m/2),e.lineTo(g,p+m),e.lineTo(g-f/2,p+m/2)):(e.moveTo(g,p),e.lineTo(g-f/2,p),e.lineTo(g-f/2,p+m/2),e.lineTo(g,p+m)),e.fillStyle=o.chart.content.baselineColor,e.fill()}var y=Math.floor(n.getX(t.startTime,a,s)),b=Math.floor(n.getX(t.endTime,a,s)),w=o.chart.content.summaryColor1,T=o.chart.content.summaryColor2,C=o.chart.content.summaryProgressColor1,x=o.chart.content.summaryProgressColor2,k=o.chart.content.summaryBorderColor,E=o.chart.content.summaryMarkType;e.beginPath();var D=new kr(y+.5,r+this.rowHeight/2-c/2-h,b-y,c/2);e.rect(D.x,D.y,D.width,D.height),e.fillStyle=gi(e,D,w,T),e.fill();var S=t.progress??0;if(S>0){e.beginPath();var $=new kr(D.x,D.y,D.width*(S/100),D.height);e.rect($.x,$.y,$.width,$.height),e.fillStyle=gi(e,$,C,x),e.fill()}if(l?(e.lineWidth=o.chart.content.criticalTaskBorderWidth,pi(e,D,o.chart.content.criticalSummaryBorderColor),e.lineWidth=1):k&&pi(e,D,k),this.#vi(e,y,r-h,S>0,c,E,"left"),this.#vi(e,b,r-h,S>=100,c,E,"right"),"none"!==o.chart.content.summaryLabelPosition){var R=new kr(y,r+this.rowHeight/2-c/2-h,b-y,c);this.#mi(e,t,R,o.chart.content.summaryLabelPosition,o.chart.content.summaryLabelContent,o.chart.content.summaryLabelColor)}}}#fi(e,t,r,i,s,n){var a,o=this.#kt.theme$.getValue().chart.content.summaryMarkWidth;return"full"==s?(a=new kr(t-o/2+.5,r+this.rowHeight/2-i/2,o,i),e.moveTo(a.x,a.y),e.lineTo(a.right,a.y),e.lineTo(a.right,a.middle.y),e.lineTo(a.middle.x,a.bottom),e.lineTo(a.x,a.middle.y),e.lineTo(a.x,a.y)):"left"==n?(a=new kr(t,r+this.rowHeight/2-i/2,o/2,i),e.moveTo(a.x,a.y),e.lineTo(a.right,a.y),e.lineTo(a.right,a.middle.y),e.lineTo(a.x,a.bottom),e.lineTo(a.x,a.y)):(a=new kr(t-o/2+1,r+this.rowHeight/2-i/2,o/2,i),e.moveTo(a.right,a.y),e.lineTo(a.x,a.y),e.lineTo(a.x,a.middle.y),e.lineTo(a.right,a.bottom),e.lineTo(a.right,a.y)),a}#vi(e,t,r,i,s,n,a){e.beginPath();var o=this.#kt.theme$.getValue(),l=o.chart.content.summaryMarkColor1,h=o.chart.content.summaryMarkColor2,d=o.chart.content.summaryMarkProgressColor1,c=o.chart.content.summaryMarkProgressColor2,u=o.chart.content.summaryBorderColor,g=this.#fi(e,t,r,s,n,a);e.fillStyle=i?gi(e,g,d,c):gi(e,g,l,h),e.fill(),u&&(e.strokeStyle=u,e.stroke())}#gi(e,t,r,i,s){var n,a=t.constraintDate,o=Math.floor(s.axis.getX(a,s.visibleStart,s.zoom)),l=s.theme.chart.content,h=r+this.rowHeight/2-i/2-s.baselineOffset-5-2;switch(t.constraintType){case"mso":case"mfo":n=l.constraintFixedColor;break;case"alap":n=l.constraintAlapColor;break;default:n=l.constraintBoundaryColor}e.beginPath(),e.moveTo(o,h),e.lineTo(o+5,h+5),e.lineTo(o,h+10),e.lineTo(o-5,h+5),e.closePath(),e.fillStyle=n,e.fill()}#mi(e,t,r,i,s,n){var a=function(e,t){switch(t){case"name":return e.name;case"resource":if(0===e.resourcesLength)return null;for(var r=[],i=0;i<e.resourcesLength;i++)r.push(e.getResource(i).resource.name);return r.join(", ");case"progress":return null!==e.progress?Math.round(e.progress)+"%":null;case"nameAndProgress":var s=null!==e.progress?" ("+Math.round(e.progress)+"%)":"";return(e.name??"")+s;case"nameAndResource":var n=null;if(e.resourcesLength>0){var a=[];for(i=0;i<e.resourcesLength;i++)a.push(e.getResource(i).resource.name);n=a.join(", ")}return n?(e.name??"")+" — "+n:e.name;default:return null}}(t,s);if(a){var o=this.#kt.theme$.getValue(),l=o.chart.content.taskLabelFont.clone();l.name=o.font.name;var h=e.font;e.font=l.toString(1);var d=o.chart.content.taskLabelPadding,c=e.measureText(a),u=c.width+2*d<=r.width;if("inside"===i||"insideOrRight"===i&&u)e.save(),e.beginPath(),e.rect(r.x,r.y,r.width,r.height),e.clip(),Rr(e,a,new kr(r.x+d,r.y,r.width-2*d,r.height),"left",0,n),e.restore();else if("right"===i||"insideOrRight"===i){var g=o.chart.content.taskLabelOutsideMargin,m=r.right+g,p=$r(e);e.fillStyle=o.chart.content.backgroundColor,e.fillRect(m-2,r.y+(r.height-p)/2-2,c.width+4,p+4),Rr(e,a,new kr(m,r.y,300,r.height),"left",0,n)}e.font=h}}drawTaskHighlightX1X2(e,t,r,i){var s=this.getRowY(t),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.taskHeight,l=n.chart.content.taskBorderRadius,h=Xr(t.color,n.chart.content.taskColors);e.beginPath(),mi(e,new kr(r,s+a/2-o/2,i-r,o),l),e.fillStyle=h.highlightColor,e.fill()}drawTaskProgressHighlight(e,t,r,i){var s=this.getRowY(t),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.taskHeight,l=n.chart.content.taskProgressHeight,h=n.chart.content.taskBorderRadius,d=Xr(t.color,n.chart.content.taskColors);e.beginPath(),mi(e,new kr(r,s+a/2-o/2,i-r,o),h),e.save(),e.clip(),e.beginPath(),e.rect(r,s+a/2-l/2+.5,i-r,l),e.fillStyle=d.progressHighlightColor,e.fill(),e.restore()}drawTaskHighlight(e,t){var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=this.#kt.theme$.getValue(),a=this.getRowY(t);switch(t.type){case"task":for(var o=0;o<t.partsLength;o++){var l=t.getPart(o),h=Math.floor(i.getX(l.startTime,s,r)),d=Math.floor(i.getX(l.endTime,s,r));this.drawTaskHighlightX1X2(e,t,h,d)}break;case"milestone":this.#pi(e,t,a),e.fillStyle=n.chart.content.milestoneHighlightColor,e.fill();break;case"summary":h=Math.floor(i.getX(t.startTime,s,r)),d=Math.floor(i.getX(t.endTime,s,r));e.beginPath();var c=this.#fi(e,h,a,n.chart.content.summaryHeight,n.chart.content.summaryMarkType,"left"),u=this.#fi(e,d,a,n.chart.content.summaryHeight,n.chart.content.summaryMarkType,"right"),g=new kr(c.right,c.y,u.x-c.right,n.chart.content.summaryHeight/2);g.width>0&&e.rect(g.x,g.y,g.width,g.height),e.fillStyle=n.chart.content.summaryHighlightColor,e.fill()}}}function Ci(e,t,r,i,s,n,a){var o=t+r,l=e.getContext("2d"),h=a.chart.content.tooltipFont.clone();h.name=a.font.name,l.font=h.toString(1);var d=function(e,t){var r=$r(e);return 35+r*(t.length+1)+2*(t.length-1)}(l,n),c=null,u=t-d-20;if(u>=a.contentTop+20?c="Above":(u=o+20)+d+20<e.height&&(c="Below"),null!==c){var g=function(e,t){var r=null,i=null;for(let a of t){var s=Mr(e,a.name,200);(null===r||s.measure.width>r)&&(r=s.measure.width);var n=Mr(e,a.value,200);(null===i||n.measure.width>i)&&(i=n.measure.width)}return r=Math.min(100,r),i=Math.min(100,i),{nameWidth:r,valueWidth:i,totalWidth:Math.round(30+r+i+30)}}(l,n);u=Math.floor(u)+.5,i=Math.floor(i)+.5;var m=new kr(i,u,g.totalWidth,d);l.beginPath(),l.rect(i,u,g.totalWidth,d),l.fillStyle=function(e,t,r,i){var s=e.createLinearGradient(t.x,t.y,t.right,t.y);return s.addColorStop(0,r),s.addColorStop(1,i),s}(l,m,a.chart.content.tooltipBackgroundColor1,a.chart.content.tooltipBackgroundColor2),l.fill(),l.strokeStyle=a.chart.content.tooltipBorderColor,l.stroke();var p=g.totalWidth-30,v=i+15,f=h.clone(),y=$r(l),b=new kr(v,u+15,p,y);f.weight=600,l.font=f.toString(1),Rr(l,s,b,"left",0,a.chart.content.tooltipTextColor);var w=u+15+y+5,T=h.clone(),C=$r(l);l.font=T.toString(1);for(let e of n){var x=new kr(v,w,g.nameWidth+1,C);Rr(l,e.name,x,"left",0,a.chart.content.tooltipTextColor);var k=new kr(v+g.nameWidth+30,w,g.valueWidth+1,C);Rr(l,e.value,k,"left",0,a.chart.content.tooltipTextColor),w+=C+2}}}class xi{#kt;constructor(e){this.#kt=e}drawTooltip(e,t,r,i,s){var n=this.#kt.theme$.getValue(),a=null,o=null;for(let e of t){var l=this.#kt.getRowY(e);(null===a||l<a)&&(a=l);var h=l+n.rowHeight;(null===o||h>o)&&(o=h)}Ci(e,a,o-a,r,i,s,n)}}class ki extends Nr{#kt;constructor(e,t){super(e,t),this.#kt=e;var r=new Ti(e),i=new xi(e),s=new oi(e,r,i);this.addSubscription(s.dblClick$.subscribe(e=>{this.#kt.taskDblClick$.next({task:e})})),this.addSubscription(s.contextMenu$.subscribe(e=>{this.#kt.taskContextMenu$.next(e)})),this.addHandler(s),this.addHandler(new fi(e,r,i)),this.addHandler(new hi(e,r,i)),this.addHandler(new bi(e,r,i)),this.addHandler(new wi(e,r,i)),this.addHandler(new ai(e,r,i)),this.addHandler(new li(e,r,i)),this.addHandler(new di(e,r,i)),this.wireHandlers()}onAfterContextMenu(e,t){var r=this.#kt.theme$.getValue().contentTop,i=e.y<r?"header":"content",s=this.#kt.timeline.currentZoom,n=s.axis[0],a=this.#kt.timeline.visibleStartTime$.getValue(),o=Math.floor(e.x/s.baseCellWidth),l=n.getAdd(a,o),h=null;"content"===i&&(h=ii(e,this.#kt,e=>"empty"!==e.type)),this.#kt.chartContextMenu$.next({date:l,area:i,task:h,mouseEvent:t})}}class Ei extends Ir{#kt;#Wr;constructor(e){super(e),this.#kt=e,this.#Wr=new vi(e)}render(e){for(var t=e.getContext("2d"),r=0;r<this.#kt.list.linksLength;r++){var i=this.#kt.list.getLink(r);i.from.hidden||i.to.hidden||this.#yi(i,t)}}#bi(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":return Xr(e.color,t.chart.content.taskColors).linkLineColor;case"milestone":return t.chart.content.linkFromMilestoneLineColor}return null}#wi(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":return Xr(e.color,t.chart.content.taskColors).linkArrowColor;case"milestone":return t.chart.content.linkFromMilestoneArrowColor}return null}#yi(e,t){var r=this.#Wr.getCoords(e),i="rounded"===this.#kt.theme$.getValue().chart.content.linkLineStyle;switch(e.type){case"finishToStart":this.#Ti(e,t,r,i);break;case"startToStart":this.#Ci(e,t,r,i);break;case"finishToFinish":this.#xi(e,t,r,i);break;case"startToFinish":this.#ki(e,t,r,i)}0!==e.lag.value&&this.#Ei(e,t,r)}#Ei(e,t,r){var i=this.#kt.theme$.getValue(),s=(r.x1+r.x2)/2,n=(r.y1+r.y2)/2,a=e.lag.toString();t.font=i.chart.content.tooltipFont.toString(1);var o=t.measureText(a).width;t.fillStyle=i.chart.header.backgroundColor,t.fillRect(s-o/2-2,n-7,o+4,14),t.fillStyle=this.#bi(e.from)??"#000000",t.textAlign="center",t.textBaseline="middle",t.fillText(a,s,n),t.textAlign="start",t.textBaseline="alphabetic"}#Ti(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=r.sign,h=Math.max(a,s+10);this.#Di(t,[{x:s,y:n},{x:h,y:n},{x:h,y:o-l}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#Si(t,h,o,l,e)}#Ci(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=Math.min(s,a)-10;this.#Di(t,[{x:s,y:n},{x:l,y:n},{x:l,y:o},{x:a,y:o}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#$i(t,a,o,1,e)}#xi(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=Math.max(s,a)+10;this.#Di(t,[{x:s,y:n},{x:l,y:n},{x:l,y:o},{x:a,y:o}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#$i(t,a,o,-1,e)}#ki(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=r.sign,h=Math.min(a,s-10);this.#Di(t,[{x:s,y:n},{x:h,y:n},{x:h,y:o-l}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#Si(t,h,o,l,e)}#Di(e,t,r){if(e.beginPath(),e.moveTo(t[0].x,t[0].y),r)for(i=1;i<t.length;i++)i<t.length-1?e.arcTo(t[i].x,t[i].y,t[i+1].x,t[i+1].y,3):e.lineTo(t[i].x,t[i].y);else for(var i=1;i<t.length;i++)e.lineTo(t[i].x,t[i].y)}#Si(e,t,r,i,s){e.beginPath(),e.moveTo(t-5,r-6*i),e.lineTo(t+5,r-6*i),e.lineTo(t,r),e.lineTo(t-5,r-6*i),e.fillStyle=this.#wi(s.from)??"#000000",e.fill()}#$i(e,t,r,i,s){e.beginPath(),e.moveTo(t-6*i,r-5),e.lineTo(t-6*i,r+5),e.lineTo(t,r),e.lineTo(t-6*i,r-5),e.fillStyle=this.#wi(s.from)??"#000000",e.fill()}}class Di{#wt;#Ri;constructor(e,t){this.#wt=e,this.#Ri=t}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue(),i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=r.contentTop,o=this.#Ri(e),l=r.chart.content;if(this.#wt.showTodayLine$.getValue()){var h=Math.floor(s.getX(new Date,n,i));h>=0&&h<=e.width&&this.#Mi(t,h,a,o,l.todayLineColor,l.todayLineWidth,l.todayLineStyle)}var d=this.#wt.markers$.getValue();for(var c of d){var u=Math.floor(s.getX(c.date,n,i));if(u>=0&&u<=e.width){var g=c.color??l.markerLineColor,m=c.lineWidth??l.markerLineWidth,p=c.lineStyle??l.markerLineStyle;this.#Mi(t,u,a,o,g,m,p),c.label&&this.#mi(t,c.label,u,a,g,l)}}}#Mi(e,t,r,i,s,n,a){e.beginPath(),e.moveTo(t+.5,r),e.lineTo(t+.5,i),e.strokeStyle=s,e.lineWidth=n,"dashed"===a?e.setLineDash([5,3]):"dotted"===a&&e.setLineDash([1,3]),e.stroke(),e.setLineDash([]),e.lineWidth=1}#mi(e,t,r,i,s,n){var a=n.markerLabelFont;e.font=a.toString(1);var o=e.measureText(t).width,l=a.size+8,h=o+8,d=r+4,c=i+4;e.fillStyle=s,e.globalAlpha=.15,e.fillRect(d,c,h,l),e.globalAlpha=1;var u=n.markerLabelColor;Rr(e,t,new kr(d+4,c,o,l),"left",0,u)}}class Si extends Ir{#Li;constructor(e){super(e),this.#Li=new Di(e,e=>e.height)}render(e){this.#Li.render(e)}}var $i="TimelineKit.com";function Ri(e,t,r){t<=0||r<=0||(e.save(),e.globalAlpha=.12,e.fillStyle="#000000",e.textAlign="right",e.textBaseline="bottom",e.font="bold 14px sans-serif",e.fillText($i,t-20,r-20),e.restore())}class Mi{#wt;#Ii;#Rt;#Mt;#Pi;#Lt;#Ai=!1;#T=new r;#Hi="default";get ctx(){return this.#wt}get canvas(){return this.#Pi}constructor(e,t,r){this.#wt=e,this.#Ii=r,this.#Rt=t,this.#Rt.classList.add("gc-chart"),this.#Pi=document.createElement("canvas"),this.#Pi.classList.add("canvas"),this.#Rt.appendChild(this.#Pi),this.#Lt=document.createElement("div"),this.#Lt.classList.add("inner"),this.#Rt.appendChild(this.#Lt)}init(){if(this.initComponents(this.#Rt,this.#Pi,this.#Lt),this.#Mt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#Jt())}),this.#Mt.observe(this.#Rt),this.#Rt.addEventListener("wheel",e=>(e.preventDefault(),e.stopPropagation(),this.#Vi(e),this.#wt.chartMouseWheel$.next(e),!1)),this.#T.add(i(...this.getRedrawObservables()).subscribe(()=>{this.scheduleRedraw()})),this.#T.add(this.#wt.chartCursor$.subscribe(e=>{"default"!==this.#Hi&&this.#Rt.classList.remove("cursor-"+this.#Hi),"default"!==e&&this.#Rt.classList.add("cursor-"+e),this.#Hi=e})),this.#T.add(this.#wt.dividerResizing$.subscribe(e=>{e?this.#Rt.classList.add("no-pointer-events"):this.#Rt.classList.remove("no-pointer-events")})),document.fonts){var e=this.#wt.theme$.getValue().font.name;document.fonts.load(`1rem "${e}"`).then(()=>{this.scheduleRedraw()})}}canRedraw(){return!0}renderPipeline(e,t,r,i,s){t.render(this.#Pi);var n=this.#wt.theme$.getValue().contentTop,a=this.#Rt.clientHeight;e.save(),e.beginPath(),e.rect(0,n,this.#Pi.width,a-n),e.clip(),r.render(this.#Pi),i.render(this.#Pi),this.#wt.chartBackgroundRedrawn$.next(),s(),e.restore()}scheduleRedraw(){this.#Ai||(this.#Ai=!0,requestAnimationFrame(()=>{this.#Ai=!1,this.#Bi()}))}#Bi(){if(this.canRedraw()){var e;try{e=this.#Pi.getContext("2d")}catch{}e&&(e.clearRect(0,0,this.#Pi.width,this.#Pi.height),this.onRedraw(e),Vt().showWatermarkFor(this.#Ii)&&Ri(e,this.#Pi.width,this.#Pi.height),this.#wt.chartRedrawn$.next())}}#Fi(){var e=this.#Rt.offsetWidth,t=this.#Rt.offsetHeight;this.#Pi.width=e,this.#Pi.height=t,this.#Pi.style.width=e+"px",this.#Pi.style.height=t+"px"}#Jt(){this.#Fi(),this.onResize(),this.#Bi()}onResize(){}#Vi(e){e.ctrlKey&&(e.deltaY>0?this.#wt.timeline.zoomOut():this.#wt.timeline.zoomIn())}get chartElement(){return this.#Rt}get chartWidth(){return this.#Rt.offsetWidth}destroy(){this.#T.unsubscribe(),this.#Mt.disconnect(),this.destroyComponents()}}class Li extends Mi{#$t;#zi;#Li;#Vr;#Oi;#Ni;#pr;constructor(e,t){super(e,t,"gantt"),this.init()}initComponents(e,t,r){this.#$t=new Pr(this.ctx),this.#zi=new Cr(this.ctx),this.#Li=new Si(this.ctx),this.#Vr=new Ti(this.ctx),this.#Oi=new Ei(this.ctx),this.#Ni=new Hr(this.ctx,e,t,r),this.#pr=new ki(this.ctx,e),this.#pr.init(e,t)}getRedrawObservables(){var e=this.ctx;return[e.timeline.zoomIndex$,e.timeline.visibleStartTime$,e.sheetScrollTop$,e.chartTaskHover$,e.list.taskChanged$,e.list.taskRemoved$,e.list.linkAdded$,e.list.linkRemoved$,e.list.taskCollapsedChanged$,e.list.evaluatingDependenciesFinished$,e.list.complexOperationFinished$,e.sheetRowMouseOver$,e.sheetSelectedTasks$,e.settings.changed$,e.showGridLines$,e.showCriticalPath$,e.showBaseline$,e.showTodayLine$,e.markers$,this.#pr.redraw$]}canRedraw(){return!this.ctx.list.evaluatingDependencies}onRedraw(e){this.renderPipeline(e,this.#$t,this.#zi,this.#Li,()=>{this.#Oi.render(this.canvas),this.#Vr.render(this.canvas)})}onResize(){this.#Ni.handleResize()}destroyComponents(){this.#Ni.destroy(),this.#pr.destroy()}}class Ii{#g;#Pe;#Wi=[];zoomIndex$=new t(0);visibleStartTime$=new t(Ft(-1));get currentZoom(){return this.#Wi[this.zoomIndex$.getValue()]}constructor(e,t){this.#g=e,this.#Pe=t,this.assignZooms(this.createDefaultZooms(),4)}createDefaultZooms(){var e=this.#Pe,t=()=>e.getValue().language,r=new Ai("minute",15,this.#g,e=>String(e.getMinutes())),i=new Ai("hour",1,this.#g,e=>String(e.getHours())),s=new Ai("hour",6,this.#g,e=>String(e.getHours())),n=new Ai("hour",1,this.#g,e=>Zt(e,t(),{hour:"numeric",hour12:!0})+", "+Zt(e,t(),{month:"short",day:"numeric"})),a=new Ai("day",1,this.#g,e=>Zt(e,t(),{weekday:"narrow"})),o=new Ai("day",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric",year:"numeric"})),l=new Ai("week",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric",year:"numeric"})+", W "+Gt(e)),h=new Ai("week",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric"})+", W "+Gt(e)),d=new Ai("week",1,this.#g,e=>"W "+Gt(e)),c=new Ai("month",1,this.#g,e=>Zt(e,t(),{month:"short",year:"numeric"})),u=new Ai("month",1,this.#g,e=>Zt(e,t(),{month:"short"})),g=new Ai("quarter",1,this.#g,e=>Zt(e,t(),{month:"short"})),m=new Ai("year",1,this.#g,e=>String(e.getFullYear())),p=[];return p.push(new Pi([r,n],50)),p.push(new Pi([i,o],28)),p.push(new Pi([s,o],50)),p.push(new Pi([a,l],60)),p.push(new Pi([a,l],28)),p.push(new Pi([h,c],110)),p.push(new Pi([d,c],50)),p.push(new Pi([u,m],70)),p.push(new Pi([g,m],60)),p}assignZooms(e,t){if(0==e.length)throw new Error("No zooms assigned");if(t<0||t>=e.length)throw new Error("Default zoom index is out of range");this.#Wi=e,this.zoomIndex$.next(t)}zoomIn(){return this.zoomIndex$.getValue()>0&&(this.zoomIndex$.next(this.zoomIndex$.getValue()-1),!0)}zoomOut(){return this.zoomIndex$.getValue()<this.#Wi.length-1&&(this.zoomIndex$.next(this.zoomIndex$.getValue()+1),!0)}findBestZoomIndex(e,t,r){for(var i=0;i<this.#Wi.length;i++){var s=this.#Wi[i];if(s.axis[0].getCellStartX(t,e,s)<=r)return i}return this.#Wi.length-1}}class Pi{axis;baseCellWidth;constructor(e,t){this.axis=e,this.baseCellWidth=t}}class Ai{#g;unit;unitsPerCell;formatter;constructor(e,t,r,i){this.#g=r,this.unit=e,this.unitsPerCell=t,this.formatter=i}getCellStartTime(e){var t=new Date(e);switch(this.unit){case"minute":var r=Math.floor(e.getMinutes()/this.unitsPerCell)*this.unitsPerCell;return t.setHours(t.getHours(),r,0,0),t;case"hour":var i=Math.floor(t.getHours()/this.unitsPerCell)*this.unitsPerCell;return t.setHours(i,0,0,0),t;case"day":return t.setHours(0,0,0,0),t;case"week":return this.#g.getValue().getStartOfWeek(t);case"month":return t.setHours(0,0,0,0),t.setDate(1),t;case"quarter":t.setHours(0,0,0,0),t.setDate(1);for(var s=[0,3,6,9];!s.includes(t.getMonth());)t.setMonth(t.getMonth()-1);return t;case"half":t.setHours(0,0,0,0),t.setDate(1);for(var n=[0,6];!n.includes(t.getMonth());)t.setMonth(t.getMonth()-1);return t;case"year":return t.setHours(0,0,0,0),t.setDate(1),t.setMonth(0),t}}#Ui(e,t,r){var i=(e.getTime()-t.getTime())/6e4;switch(r.unit){case"minute":return i/r.unitsPerCell;case"hour":return i/60/r.unitsPerCell;case"day":return i/1440/r.unitsPerCell;case"week":return i/10080/r.unitsPerCell;case"month":return Xt(t,e);case"quarter":return Xt(t,e)/3;case"half":return Xt(t,e)/6;case"year":return Xt(t,e)/12}}getCellStartX(e,t,r){var i=this.getCellStartTime(e),s=this.#Ui(i,t,r.axis[0]);return Math.round(r.baseCellWidth*s)}getAdd(e,t){e=new Date(e);switch(this.unit){case"minute":return e.setMinutes(e.getMinutes()+t*this.unitsPerCell),e;case"hour":return e.setHours(e.getHours()+t*this.unitsPerCell),e;case"day":return e.setDate(e.getDate()+t),e;case"week":return e.setDate(e.getDate()+7*t),e;case"month":return e.setMonth(e.getMonth()+t),e;case"quarter":return e.setMonth(e.getMonth()+3*t),e;case"half":return e.setMonth(e.getMonth()+6*t),e;case"year":return e.setMonth(e.getMonth()+12*t),e}}getX(e,t,r){var i=this.getCellStartTime(e),s=this.getCellStartX(e,t,r),n=this.getAdd(i,1);if("minute"==this.unit||"hour"==this.unit)return s+(e.getTime()-i.getTime())/(n.getTime()-i.getTime())*r.baseCellWidth;var a=this.#g.getValue().getHoursPerDay(),o=1;switch(this.unit){case"day":o=1;break;case"week":o=7;break;case"month":o=this.#ji(e);break;case"quarter":o=this.#Xi(e);break;case"half":o=this.#Yi(e);break;case"year":o=this.#Ki(e)}var l=r.baseCellWidth/o,h=new Date(e);h.setHours(0,0,0,0);var d=this.#g.getValue().getHoursBetween(h,e);return s+l*this.#Zi(i,h)+d/a*l}#ji(e){const t=e.getFullYear(),r=e.getMonth();return new Date(t,r+1,0).getDate()}#Xi(e){const t=e.getFullYear(),r=e.getMonth(),i=3*Math.floor(r/3),s=i+2;let n=0;for(let e=i;e<=s;e++)n+=new Date(t,e+1,0).getDate();return n}#Yi(e){const t=e.getFullYear(),r=e.getMonth()<6?0:6,i=r+5;let s=0;for(let e=r;e<=i;e++)s+=new Date(t,e+1,0).getDate();return s}#Ki(e){const t=e.getFullYear();return t%4==0&&t%100!=0||t%400==0?366:365}#Zi(e,t){const r=e.getTime(),i=t.getTime(),s=Math.abs(r-i);return Math.ceil(s/864e5)}}class Hi{}class Vi extends Hi{redraw(e,t,r){e.innerText=t(r)}}class Bi extends Vi{#kt;constructor(e){super(),this.#kt=e}#Gi(e){var t=this.#kt.theme$.getValue().rowHeight;e.style.height=t+"px"}#qi(e,t){e.style.width=t+"px"}redraw(e,t,r){for(;e.firstChild;)e.removeChild(e.firstChild);var i=r.level;if("empty"==r.type){var s=this.#kt.list.getNextNonEmpty(r);s&&(i=s.level)}e.classList.add("tree-with-name"),this.#Gi(e);var n=30*i+12,a=window.document.createElement("span");a.classList.add("tree"),this.#qi(a,n),e.appendChild(a),"summary"==r.type&&a.appendChild(this.#_i(r));var o=window.document.createElement("span");o.classList.add("name"),e.appendChild(o),o.innerText=t(r)}#_i(e){var t=window.document.createElement("div");t.classList.add("gc-tree-icon"),t.classList.add(e.collapsed?"collapsed":"expanded");var r=window.document.createElement("div");return r.classList.add("tree-icon"),t.appendChild(r),t.addEventListener("mousedown",t=>{0==t.button&&(t.stopPropagation(),e.toggleCollapsed())}),t}}class Fi{context=null;#Ji;#Qi;invalidValue$=new e;editEnded$=new e;cell;item=null;#es=null;get columnCode(){return this.#es?.code??null}constructor(e,t){this.#Ji=e,this.#Qi=t}init(e){this.context=e}beginEdit(e,t,r){this.#es=e,this.cell=t,this.item=r,this.beginEditInternal(t,r,this.#Ji(r)),this.context.cellEditing$.next({cell:t,editor:e.editor})}endEdit(e,t="none"){try{this.#Qi(this.item,e)}catch{return this.invalidValue$.next(),void this.cancelEdit()}this.context.cellEditing$.next(null),this.#ts(),this.editEnded$.next(t)}cancelEdit(){this.context.cellEditing$.next(null),this.#ts(),this.editEnded$.next("none")}#ts(){for(;this.cell.firstChild;)this.cell.removeChild(this.cell.firstChild);this.cell.style.backgroundColor=null,this.#es.renderer.redraw(this.cell,this.#es.valueFormatter,this.item)}}class zi extends Fi{#rs;#is=!1;beginEdit$=new e;beginEdit(e,t,r){for(this.#is=!1,t.style.backgroundColor="white";t.firstChild;)t.removeChild(t.firstChild);super.beginEdit(e,t,r)}beginEditInternal(e,t,r){var i=document.createElement("input");i.classList.add("editor"),i.value=this.formatValue(r),i.addEventListener("mousedown",e=>{e.stopPropagation()}),i.addEventListener("mouseup",e=>{e.stopPropagation()}),i.addEventListener("input",e=>{this.#is=!0}),this.onInputCreated(i),e.appendChild(i),setTimeout(()=>{i.focus()},0),this.#ss(i),this.#rs=i,this.beginEdit$.next({item:this.item,input:i,columnCode:this.columnCode,editor:this})}onInputCreated(e){}#ns(e="none"){var t=this.tryParseValue(this.#rs.value);return null!==t?(this.endEdit(t,e),!0):(this.invalidValue$.next(),!1)}#ss(e){e.addEventListener("keydown",e=>{"Enter"===e.key?(e.stopPropagation(),this.#ns("down")):"Escape"===e.key?(e.stopPropagation(),this.cancelEdit()):"Tab"===e.key&&(e.preventDefault(),e.stopPropagation(),this.#ns(e.shiftKey?"left":"right"))})}endEditIfModifiedElseCancel(){this.#is&&this.#ns()||this.cancelEdit()}}class Oi extends zi{formatValue(e){return e}tryParseValue(e){return e??""}}class Ni extends zi{onInputCreated(e){e.addEventListener("keydown",e=>{"ArrowLeft"!==e.key&&"ArrowRight"!==e.key||e.stopPropagation()})}formatValue(e){return Kt(null===e?this.getDefaultDate():e,this.getLocale())}getDefaultDate(){return Bt()}getLocale(){return"en-US"}tryParseValue(e){return function(e,t){if(!e||!e.trim())return null;var r=e.trim().match(/\d+/g);if(!r||r.length<3)return null;for(var i,s,n,a=new Intl.DateTimeFormat(t).formatToParts(new Date(2e3,0,15)).filter(e=>"day"===e.type||"month"===e.type||"year"===e.type).map(e=>e.type),o=0;o<a.length&&o<r.length;o++){var l=parseInt(r[o],10);switch(a[o]){case"day":i=l;break;case"month":s=l;break;case"year":n=l}}if(void 0===i||void 0===s||void 0===n)return null;n<100&&(n+=2e3);var h=new Date(n,s-1,i);return h.setHours(0,0,0,0),h.getDate()!==i||h.getMonth()!==s-1||h.getFullYear()!==n?null:h}(e,this.getLocale())}}class Wi extends zi{#kt=null;constructor(){super(e=>e.length,(e,t)=>e.length=t)}initWithGanttContext(e){this.#kt=e}formatValue(e){if(null===e){var t=this.#kt?.calendar.defaultLengthUnit??"day";return new rr(t,1).toString()}return e.toString()}tryParseValue(e){return rr.tryParse(e)}}class Ui extends zi{onInputCreated(e){e.type="number",e.min="0",e.max="100"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){return parseInt(e)}}class ji extends Fi{beginEdit$=new e;cancelEdit$=new e;endEdit$=new e;constructor(){super(()=>{},()=>{}),this.cancelEdit$.subscribe(()=>{this.cancelEdit()}),this.endEdit$.subscribe(()=>{this.endEdit(null)})}beginEditInternal(e,t,r){this.beginEdit$.next({item:t,columnCode:this.columnCode,cancelEdit$:this.cancelEdit$,endEdit$:this.endEdit$})}endEditIfModifiedElseCancel(){this.cancelEdit()}}class Xi extends Vi{#kt;constructor(e){super(),this.#kt=e}redraw(e,t,r){if(e.innerText="",e.classList.add("resources"),"task"==r.type)for(var i=0;i<r.resourcesLength;i++){var s=r.getResource(i),n=document.createElement("div");if(n.classList.add("wrapper"),100!=s.capacity){var a=document.createElement("div");a.classList.add("capacity"),a.innerText=s.formatCapacity(),n.appendChild(a)}var o=document.createElement("div");o.classList.add("avatar"),s.resource.avatarIconUrl?(o.style.backgroundImage=`url(${s.resource.avatarIconUrl})`,o.style.backgroundSize="cover"):(o.style.backgroundColor=Ki(s.resource.name),o.innerText=Zi(s.resource.name)),o.title=s.resource.name,n.appendChild(o),e.appendChild(n)}}}const Yi=["#66C5CC","#F6CF71","#F89C74","#DCB0F2","#87C55F","#9EB9F3","#FE88B1","#C9DB74","#8BE0A4","#B497E7","#B3B3B3"];function Ki(e){var t=function(e){let t=0;for(let r=0;r<e.length;r++)t=(31*t+e.charCodeAt(r))%2**32;return t}(e);return Yi[t%Yi.length]}function Zi(e){if(!e)return"";const t=e.trim().split(/\s+/);if(1===t.length)return t[0].charAt(0).toUpperCase();return`${t[0].charAt(0).toUpperCase()}${t[1].charAt(0).toUpperCase()}`}class Gi extends zi{constructor(){super(e=>e.work,(e,t)=>e.work=t)}formatValue(e){return null===e?new ar("day",1).toString():e.toString()}tryParseValue(e){return ar.tryParse(e)}}class qi extends zi{onInputCreated(e){e.type="number",e.min="0",e.max="100000000000",e.step="0.01"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){return parseFloat(e)}}class _i extends Vi{#kt;constructor(e){super(),this.#kt=e}addIconToCell(e,t,r){var i=document.createElement("span");i.classList.add("icon"),i.style.color="var(--gc-tree-icon-color, #606060)",i.style.display="inline-flex",i.style.verticalAlign="middle",i.style.marginRight="4px",i.innerHTML=Ji[t],i.title=r,e.appendChild(i)}redraw(e,t,r){if(e.innerText="","asap"!==r.constraintType){var i=this.#kt.locale$.getValue(),s=i.constraints[r.constraintType],n=r.constraintDate?`${s}: ${r.constraintDate.toLocaleDateString(i.language)}`:s;this.addIconToCell(e,"constraint",n)}r.note&&this.addIconToCell(e,"note",r.note);var a=r.warnings.join("\n\n");a&&this.addIconToCell(e,"warning",a)}}const Ji={note:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>',warning:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>',constraint:'<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M16 12V4h1V2H7v2h1v8l-2 2v2h5v6l1 1 1-1v-6h5v-2l-2-2z"/></svg>'},Qi="#606060";function es(e,t,r,i,s,n){var a=t+(i-18)/2,o=r+(s-18)/2;e.save(),e.translate(a,o),e.scale(.75,.75),e.strokeStyle=n,e.lineWidth=1.5,e.lineCap="round",e.lineJoin="round",e.save(),e.translate(12,1.5),e.rotate(Math.PI/4),e.beginPath(),function(e,t,r,i,s,n){e.moveTo(t+n,r),e.lineTo(t+i-n,r),e.arcTo(t+i,r,t+i,r+n,n),e.lineTo(t+i,r+s-n),e.arcTo(t+i,r+s,t+i-n,r+s,n),e.lineTo(t+n,r+s),e.arcTo(t,r+s,t,r+s-n,n),e.lineTo(t,r+n),e.arcTo(t,r,t+n,r,n),e.closePath()}(e,0,0,14.5,14.5,3),e.stroke(),e.restore(),e.beginPath(),e.moveTo(12,16),e.lineTo(12,11),e.stroke(),e.beginPath(),e.moveTo(12,8),e.lineTo(12.01,8),e.stroke(),e.restore()}function ts(e,t,r,i,s,n){var a=i+(n-14)/2,o=r;"asap"!==t.constraintType&&(rs(e,o,a,"constraint"),o+=18),t.note&&(rs(e,o,a,"note"),o+=18),t.warnings?.length>0&&rs(e,o,a,"warning")}function rs(e,t,r,i){var s=14/24;if(e.save(),e.translate(t,r),e.scale(s,s),"constraint"===i){var n=new Path2D("M16 12V4h1V2H7v2h1v8l-2 2v2h5v6l1 1 1-1v-6h5v-2l-2-2z");e.fillStyle=Qi,e.fill(n)}else"note"===i?(e.strokeStyle=Qi,e.lineWidth=2,e.lineCap="round",e.lineJoin="round",e.stroke(new Path2D("M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z")),e.beginPath(),e.moveTo(14,2),e.lineTo(14,8),e.lineTo(20,8),e.stroke(),e.beginPath(),e.moveTo(16,13),e.lineTo(8,13),e.stroke(),e.beginPath(),e.moveTo(16,17),e.lineTo(8,17),e.stroke()):(e.strokeStyle=Qi,e.lineWidth=2,e.lineCap="round",e.lineJoin="round",e.stroke(new Path2D("M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z")),e.beginPath(),e.moveTo(12,9),e.lineTo(12,13),e.stroke(),e.beginPath(),e.moveTo(12,17),e.lineTo(12.01,17),e.stroke());e.restore()}class is{#as;get code(){return this.#as}#b;get name(){return this.#b}set name(e){this.#b=e}#os;get width(){return this.#os}set width(e){e!=this.#os&&(this.#os=e,this.#f())}#ls;get minWidth(){return this.#ls}set minWidth(e){e!=this.#ls&&(this.#ls=e,this.#f())}#hs;get valueFormatter(){return this.#hs}#ds;get renderer(){return this.#ds}#cs=null;get align(){return this.#cs}#us=null;get editor(){return this.#us}#gs;get isEditable(){return this.#gs}#ms=!0;get isVisible(){return this.#ms}set isVisible(e){e!=this.#ms&&(this.#ms=e,this.#f())}#ps=null;get tooltip(){return this.#ps}set tooltip(e){this.#ps=e}#vs=null;get headerHtml(){return this.#vs}set headerHtml(e){this.#vs=e}#fs=null;get exportHeaderRenderer(){return this.#fs}set exportHeaderRenderer(e){this.#fs=e}#ys=null;get exportCellRenderer(){return this.#ys}set exportCellRenderer(e){this.#ys=e}#bs=!1;get isCustom(){return this.#bs}set isCustom(e){this.#bs=e}changed$=new e;constructor(e,t,r,i,s,n,a,o,l,h){this.#as=e,this.#b=t,this.#hs=r,this.#os=a??100,this.#ls=o??100,this.#ds=i,this.#us=s,this.#gs=n,this.#cs=l??null,this.#ps=h??null}#f(){this.changed$.next(this)}}class ss extends zi{onInputCreated(e){e.type="number"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){var t=parseInt(e);return isNaN(t)?null:t}}class ns extends zi{onInputCreated(e){e.type="text"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){var t=parseFloat(e);return isNaN(t)?null:t}}class as{context;content;host;#ws=null;constructor(e,t,r){this.context=e,this.content=t,this.host=r}get focusedCell(){return this.context.focusedCell$.getValue()}onCellMousedown(e,t,r){var i=this.host.getColumns().indexOf(t);this.#Ts(r,i,e),this.content.focus()}onCellDblClick(){this.host.beginEdit()}onEditEnded(e){var t=this.focusedCell;if(t){switch(e){case"down":var r=this.context.dataSource.getNextVisible(t.item);r?this.#Cs(r,t.columnIndex):this.#xs();break;case"up":var i=this.context.dataSource.getPreviousVisible(t.item);i?this.#Cs(i,t.columnIndex):this.#xs();break;case"right":this.#ks(t);break;case"left":this.#Es(t);break;default:this.#xs()}this.content.focus()}}onKeyDown(e){if(!this.context.cellEditing$.getValue())if("Delete"!==e.key&&"Backspace"!==e.key){var t=this.focusedCell;if(t&&!this.handleCustomKeyDown(e,t))switch(e.key){case"Enter":case"F2":e.preventDefault(),this.host.beginEdit();break;case"Escape":e.preventDefault(),this.clearFocus();break;case"ArrowUp":e.preventDefault();var r=this.context.dataSource.getPreviousVisible(t.item);r&&this.#Cs(r,t.columnIndex);break;case"ArrowDown":e.preventDefault();var i=this.context.dataSource.getNextVisible(t.item);i&&this.#Cs(i,t.columnIndex);break;case"ArrowLeft":e.preventDefault();var s=this.#Ds(t.columnIndex);null!==s&&this.#Cs(t.item,s);break;case"ArrowRight":e.preventDefault();var n=this.#Ss(t.columnIndex);null!==n&&this.#Cs(t.item,n);break;case"Tab":e.preventDefault(),e.shiftKey?this.#Es(t):this.#ks(t);break;case"Home":e.preventDefault();var a=this.#$s();null!==a&&this.#Cs(t.item,a);break;case"End":e.preventDefault();var o=this.#Rs();null!==o&&this.#Cs(t.item,o);break;case"Insert":if(!this.context.canEdit)break;e.preventDefault(),this.host.insertItemAfterFocused();break;default:if(!this.context.canEdit)break;1!==e.key.length||e.ctrlKey||e.metaKey||e.altKey||this.host.beginEdit(e.key)}}else{if(!this.context.canEdit)return;this.context.selectedItems$.getValue().length>0&&(e.preventDefault(),this.host.deleteSelectedItems())}}handleCustomKeyDown(e,t){return!1}setFocus(e,t){this.#Cs(e,t)}clearFocus(){this.#ws&&(this.#ws.classList.remove("focused"),this.#ws=null),this.context.focusedCell$.next(null)}#Ts(e,t,r){this.#ws&&this.#ws.classList.remove("focused"),this.#ws=r,r.classList.add("focused"),this.context.focusedCell$.next({item:e,columnIndex:t})}#Cs(e,t){var r=this.host.getItemRow(e),i=r.children[t+1];this.#Ts(e,t,i),this.#Ms(r,i)}#xs(){this.focusedCell&&this.#ws&&(this.#ws.classList.add("focused"),this.content.focus())}#Ms(e,t){var r=this.content.getBoundingClientRect(),i=e.getBoundingClientRect(),s=r.top,n=r.bottom;i.top<s?this.content.scrollTop-=s-i.top:i.bottom>n&&(this.content.scrollTop+=i.bottom-n);var a=t.getBoundingClientRect(),o=e.children[0].getBoundingClientRect().width,l=r.left+o,h=r.right;a.left<l?this.content.scrollLeft-=l-a.left:a.right>h&&(this.content.scrollLeft+=a.right-h)}#ks(e){var t=this.#Ss(e.columnIndex);if(null!==t)this.#Cs(e.item,t);else{var r=this.context.dataSource.getNextVisible(e.item),i=this.#$s();if(null===i)return;r||(r=this.context.dataSource.addEmptyItem()),this.#Cs(r,i)}}#Es(e){var t=this.#Ds(e.columnIndex);if(null!==t)this.#Cs(e.item,t);else{var r=this.context.dataSource.getPreviousVisible(e.item),i=this.#Rs();r&&null!==i&&this.#Cs(r,i)}}#Ss(e){for(var t=this.host.getColumns(),r=e+1;r<t.length;r++)if(t[r].isVisible)return r;return null}#Ds(e){for(var t=this.host.getColumns(),r=e-1;r>=0;r--)if(t[r].isVisible)return r;return null}#$s(){for(var e=this.host.getColumns(),t=0;t<e.length;t++)if(e[t].isVisible)return t;return null}#Rs(){for(var e=this.host.getColumns(),t=e.length-1;t>=0;t--)if(e[t].isVisible)return t;return null}}class os{#Ls;#Is;#T=new r;#Ps=!1;#As=null;#Hs=[];get items(){return this.#Hs}changed$;rowContextMenu$;constructor(t,r){this.#Ls=t,this.#Is=r,this.changed$=new e,this.rowContextMenu$=new e,this.#T.add(t.rowAdded$.subscribe(e=>{this.#Vs(e.item,e.row)})),this.#T.add(t.dataSource.itemRemoved$.subscribe(e=>{this.#Bs(e.item)}))}destroy(){this.#T.unsubscribe()}#Vs(e,t){var r=t.children[0];t.addEventListener("mousedown",async r=>{this.#Fs(e,t,r)},!1),t.addEventListener("contextmenu",async r=>{this.#zs(e,t,r)},!1),r.addEventListener("mousedown",async r=>{this.#Os(e,t,r)},!1),r.addEventListener("mouseup",async r=>{this.#Ns(e,t)},!1),r.addEventListener("mousemove",async t=>{this.#Ws(e)},!1)}#Bs(e){this.#Hs=this.#Hs.filter(t=>t!=e)}#Fs(e,t,r){0==r.button&&(r.ctrlKey||this.clear(),this.#Us(e,t)&&this.changed$.next())}#Os(e,t,r){this.#Ps=!0,this.#As=this.#Ls.dataSource.indexOf(e);var i=r.ctrlKey;0==r.button&&(i||this.clear(),this.#Us(e,t)&&this.changed$.next())}#zs(e,t,r){this.#Hs.includes(e)||(this.clear(),this.#Us(e,t)&&this.changed$.next()),this.rowContextMenu$.next({selectedItems:[...this.#Hs],mouseEvent:r})}#Ns(e,t){this.#Ps=!1}#Ws(e){if(this.#Ps)for(var t=this.#Ls.dataSource.indexOf(e),r=Math.min(this.#As,t);r<=Math.max(this.#As,t);r++){var i=this.#Is.children[r];this.#Us(this.#Ls.dataSource.getItem(r),i)}}#Us(e,t){return!this.#Hs.includes(e)&&(t.classList.add("selected"),this.#Hs.push(e),!0)}cancelRangeSelection(){this.#Ps=!1}clear(){for(var e=0;e<this.#Hs.length;e++){this.#js(this.#Hs[e]).classList.remove("selected")}this.#Hs=[]}updateWithCurrentSelection(){for(var e=0;e<this.#Ls.dataSource.length;e++){var t=this.#Ls.dataSource.getItem(e),r=this.#js(t);this.#Hs.includes(t)?r.classList.add("selected"):r.classList.remove("selected")}}#js(e){var t=this.#Ls.dataSource.indexOf(e);return this.#Is.children[t]}}class ls extends Vr{#Ls;#Xs;#Ys=[];#Ks;#Is;#Zs;#Gs=null;#qs;#_s=null;#Js=null;#Qs=!1;#en;#T=new r;columnsChanged$=new e;get tableContext(){return this.#Ls}get contentElement(){return this.#Is}get headerElement(){return this.#Ks}get navigation(){return this.#en}get selection(){return this.#qs}get rowsContainer(){return this.#Zs}constructor(e,t){super(),this.startWatching(t),this.#Ls=e,this.#Xs=t,this.#Qs=!0,this.#Xs.classList.add("gc-sheet"),this.#Ks=window.document.createElement("div"),this.#Ks.classList.add("header");var r=window.document.createElement("div");r.classList.add("row-header"),r.classList.add("cell"),this.#Ks.appendChild(r),this.#Is=window.document.createElement("div"),this.#Is.classList.add("content"),this.#Is.setAttribute("tabindex","0"),this.#Is.addEventListener("scroll",()=>{this.#tn()}),this.#Is.addEventListener("mousedown",()=>{this.#rn()}),this.#Is.addEventListener("contextmenu",e=>{this.#in(e)}),this.#Is.addEventListener("keydown",e=>{this.#en.onKeyDown(e)}),this.#Xs.appendChild(this.#Is),this.#Is.appendChild(this.#Ks),this.#Zs=window.document.createElement("div"),this.#Zs.classList.add("rows"),this.#Is.appendChild(this.#Zs),this.#en=this.createKeyboardNavigation(),this.#qs=new os(this.#Ls,this.#Zs),this.#T.add(this.#qs.changed$.subscribe(()=>{this.#sn()})),this.#T.add(this.#qs.rowContextMenu$.subscribe(e=>{this.#nn(e)})),this.#T.add(e.dataSource.itemChanged$.subscribe(e=>{this.onItemChanged(e.item)})),this.#T.add(e.dataSource.itemRemoved$.subscribe(e=>{this.onItemRemoved(e.item)})),this.#T.add(e.dataSource.complexOperationFinished$.subscribe(()=>{this.onComplexOperationFinished()})),this.addDocumentListener("mousemove",this.#an),this.addDocumentListener("mouseup",this.#on);for(var i=0;i<e.dataSource.length;i++){var s=e.dataSource.getItem(i);this.#ln(s,i),this.redrawItemRow(s)}this.#Qs=!1}createKeyboardNavigation(){return new as(this.#Ls,this.#Is,this)}getColumns(){return this.#Ys}getItemRow(e){var t=this.#Ls.dataSource.indexOf(e);return this.#Zs.children[t]}beginEdit(e){if(this.#Ls.canEdit){var t=this.#en.focusedCell;if(t){var r=this.#Ys[t.columnIndex],i=this.getItemRow(t.item).children[t.columnIndex+1];r.isEditable(t.item)&&r.editor&&(i.classList.remove("focused"),setTimeout(()=>{r.editor.beginEdit(r,i,t.item);var s=document.createElement("div");if(s.classList.add("highlight"),i.appendChild(s),e&&r.editor instanceof zi){var n=i.querySelector("input.editor");n&&(n.value=e,n.dispatchEvent(new Event("input")))}},10))}}}deleteSelectedItems(){this.#en.clearFocus();var e=this.#Ls.selectedItems$.getValue();this.#Ls.dataSource.removeItems([...e])}insertItemAfterFocused(){var e=this.#en.focusedCell;if(e){var t=this.#Ls.dataSource.indexOf(e.item),r=this.#Ls.dataSource.insertEmptyItem(t+1);this.#en.setFocus(r,e.columnIndex)}}addColumn(e){this.#Ys.push(e);var t=window.document.createElement("div");t.classList.add("cell"),e.isVisible||t.classList.add("hidden"),t.style.width=e.width+"px",e.headerHtml?(t.innerHTML=e.headerHtml,t.style.justifyContent="center"):t.innerText=e.name,t.addEventListener("contextmenu",t=>{this.#hn(e,t)}),t.addEventListener("mousedown",t=>{this.#dn(e,t)}),this.#Ks.appendChild(t),e.tooltip&&(t.title=e.tooltip,t.classList.add("dotted"));var r=window.document.createElement("div");r.classList.add("resizer"),r.addEventListener("mousedown",t=>{this.#cn(e,t)}),t.appendChild(r),e.editor&&(e.editor.init(this.#Ls),e.editor instanceof ji&&this.#T.add(e.editor.beginEdit$.subscribe(e=>{this.#Ls.cellDialogEdit$.next(e)})),e.editor instanceof zi&&this.#T.add(e.editor.beginEdit$.subscribe(e=>{this.#Ls.cellInputEdit$.next(e)})),this.#T.add(e.editor.invalidValue$.subscribe(()=>{this.#Ls.cellInvalidValue$.next()})),this.#T.add(e.editor.editEnded$.subscribe(e=>{this.#en.onEditEnded(e)}))),this.#T.add(e.changed$.subscribe(e=>{this.#un(e)}));for(var i=this.#Ys.indexOf(e),s=0;s<this.#Zs.children.length;s++){var n=this.#Zs.children[s],a=this.#Ls.dataSource.getItem(s);this.#gn(n,a,i)}this.#mn(),this.#Qs||(this.redrawAll(),this.columnsChanged$.next())}get columnsLength(){return this.#Ys.length}getColumn(e){return this.#Ys[e]}getColumnByCode(e){return this.#Ys.find(t=>t.code==e)??null}#un(e){this.#pn(e,e.width),this.#vn(e),this.#mn(),this.columnsChanged$.next()}#fn(e,t){t?e.classList.remove("hidden"):e.classList.add("hidden")}updateColumnVisibility(e){this.#vn(e)}#vn(e){var t=this.#Ys.indexOf(e),r=this.#Ks.children[t+1];this.#fn(r,e.isVisible);for(var i=0;i<this.#Zs.children.length;i++){var s=this.#Zs.children[i].children[t+1];this.#fn(s,e.isVisible)}}#mn(){var e=this.getColumnsContentWidth()+"px";this.#Ks.style.width=e,this.#Zs.style.width=e;for(var t=0;t<this.#Zs.children.length;t++){this.#Zs.children[t].style.width=e}}#pn(e,t){var r=this.#Ys.indexOf(e);this.#Ks.children[r+1].style.width=t+"px",e.width=t;for(var i=0;i<this.#Zs.children.length;i++){this.#Zs.children[i].children[r+1].style.width=t+"px"}}#an(e){if(this.#_s){var t=e.clientX-this.#_s.lastX;this.#_s.lastX=e.clientX;var r=Math.max(this.#_s.column.width+t,this.#_s.column.minWidth);this.#pn(this.#_s.column,r)}else if(this.#Js){t=Math.abs(e.clientX-this.#Js.startX);!this.#Js.isReordering&&t>5&&(this.#Js.isReordering=!0,this.#Js.headerCell.classList.add("dragging"),this.#Ks.classList.add("reordering"),this.#yn(),this.#bn(e.clientX,e.clientY)),this.#Js.isReordering&&(this.#wn(e.clientX),this.#Tn(e.clientX,e.clientY))}}#on(e){if(this.#_s&&(this.#Ls.columnResized$.next({column:this.#_s.column}),this.#_s=null),this.#Js){if(this.#Js.isReordering){var t=this.#Cn(e.clientX),r=this.#Ys.indexOf(this.#Js.column);t!==r&&t!==r+1&&this.#xn(r,t),this.#Js.headerCell.classList.remove("dragging"),this.#kn(),this.#En()}this.#Js=null,this.#Ks.classList.remove("reordering")}}#hn(e,t){t.preventDefault(),this.#Ls.columnHeaderContextMenu$.next({column:e,mouseEvent:t})}#dn(e,t){if(0==t.button){t.preventDefault();var r=this.#Ys.indexOf(e);this.#Js={column:e,startX:t.clientX,lastX:t.clientX,headerCell:this.#Ks.children[r+1],isReordering:!1,indicator:null,ghost:null}}}#cn(e,t){0==t.button&&(this.#_s={column:e,startX:t.clientX,lastX:t.clientX})}#yn(){var e=window.document.createElement("div");e.classList.add("reorder-indicator"),this.#Ks.appendChild(e),this.#Js.indicator=e}#kn(){this.#Js?.indicator&&(this.#Js.indicator.remove(),this.#Js.indicator=null)}#bn(e,t){var r=this.#Js.headerCell,i=r.cloneNode(!0),s=r.getBoundingClientRect(),n=window.getComputedStyle(r);i.classList.add("reorder-ghost"),i.style.width=s.width+"px",i.style.height=s.height+"px",i.style.left=e-s.width/2+"px",i.style.top=t-s.height/2+"px",i.style.font=n.font,i.style.paddingLeft=n.paddingLeft,i.style.paddingRight=n.paddingRight;var a=i.querySelector(".resizer");a&&a.remove(),window.document.body.appendChild(i),this.#Js.ghost=i}#Tn(e,t){var r=this.#Js?.ghost;r&&(r.style.left=e-parseFloat(r.style.width)/2+"px",r.style.top=t-parseFloat(r.style.height)/2+"px")}#En(){this.#Js?.ghost&&(this.#Js.ghost.remove(),this.#Js.ghost=null)}#wn(e){var t=this.#Js.indicator;if(t){var r=this.#Cn(e),i=this.#Ks.children[r+1];if(i){var s=this.#Ks.getBoundingClientRect(),n=i.getBoundingClientRect();t.style.left=n.left-s.left+"px"}else{var a=this.#Ks.children[this.#Ys.length];if(a){s=this.#Ks.getBoundingClientRect();var o=a.getBoundingClientRect();t.style.left=o.right-s.left+"px"}}}}#Cn(e){for(var t=0;t<this.#Ys.length;t++){var r=this.#Ks.children[t+1].getBoundingClientRect();if(e<r.left+r.width/2)return t}return this.#Ys.length}#xn(e,t){var r=t>e?t-1:t,[i]=this.#Ys.splice(e,1);this.#Ys.splice(r,0,i);var s=this.#Ks.children[e+1];this.#Ks.removeChild(s),Yt(this.#Ks,s,r+1);for(var n=0;n<this.#Zs.children.length;n++){var a=this.#Zs.children[n],o=a.children[e+1];a.removeChild(o),Yt(a,o,r+1)}this.#Ls.columnReordered$.next({column:i})}getItemRowHeight(e){return this.#Ls.rowHeight}#Dn(e,t){e.style.height=this.getItemRowHeight(t)+"px"}#ln(e,t){var r=window.document.createElement("div");r.classList.add("row"),r.id=e.id,this.#Dn(r,e),r.addEventListener("mouseover",()=>{this.#Sn(e)}),r.addEventListener("mouseout",()=>{this.#$n(e)}),Yt(this.#Zs,r,t);var i=window.document.createElement("div");i.classList.add("cell"),i.classList.add("row-header"),this.#Dn(i,e),Yt(r,i,0);for(var s=0;s<this.#Ys.length;s++)this.#gn(r,e,s);r.style.width=this.getColumnsContentWidth()+"px",this.#Ls.rowAdded$.next({item:e,row:r})}#gn(e,t,r){const i=this.#Ys[r],s=window.document.createElement("div");s.classList.add("cell"),i.isVisible||s.classList.add("hidden"),s.style.width=i.width+"px",s.addEventListener("mousedown",e=>{this.#Rn(e,s,i,t)}),s.addEventListener("dblclick",e=>{this.#Mn(e)}),Yt(e,s,r+1)}onItemChanged(e){this.redrawItemRow(e)}onItemRemoved(e){}onComplexOperationFinished(){this.#Ln(),this.redrawAll(),this.#qs.updateWithCurrentSelection()}redrawItemRow(e){var t=this.getItemRow(e);t.children[0].innerText=this.#Ls.dataSource.getItemLabel(e);for(var r=0;r<this.#Ys.length;r++){var i=this.#Ys[r],s=t.children[r+1];i.align&&(s.style.justifyContent=i.align.toLowerCase()),i.renderer.redraw(s,i.valueFormatter,e)}}#tn(){this.#Ks.children[0].style.transform=`translateX(${this.#Is.scrollLeft}px)`,this.#Ls.scrollTop$.next(this.#Is.scrollTop)}#rn(){var e=this.#Ls.cellEditing$.getValue();e&&e.editor.cancelEdit()}#in(e){e.preventDefault()}#sn(){this.#Ls.selectedItems$.next(this.#qs.items)}#nn(e){this.#Ls.canEdit&&this.#Ls.rowContextMenu$.next(e)}#Ln(){for(var e=this.#Zs.children.length-1;e>=0;e--){var t=this.#Zs.children[e];this.#Ls.dataSource.getItemById(t.id)||this.#Zs.removeChild(t)}for(e=0;e<this.#Ls.dataSource.length;e++){let i=this.#Ls.dataSource.getItem(e);if(this.#Zs.children.length<=e)this.#ln(i,e);else if((t=this.#Zs.children[e]).id!=i.id){var r=this.#In(i.id);r?Yt(this.#Zs,r,e):this.#ln(i,e)}}}#In(e){for(var t=0;t<this.#Zs.children.length;t++)if(this.#Zs.children[t].id===e)return this.#Zs.children[t];return null}redrawAll(){for(var e=0;e<this.#Ls.dataSource.length;e++)this.redrawItemRow(this.#Ls.dataSource.getItem(e))}updateColumnHeaders(){for(var e=0;e<this.#Ys.length;e++){var t=this.#Ys[e],r=this.#Ks.children[e+1];t.headerHtml||(r.innerText=t.name),t.tooltip&&(r.title=t.tooltip)}}#Rn(e,t,r,i){if(0==e.button){var s=this.#Ls.cellEditing$.getValue();if(s){if(s.cell==t)return;s.editor.endEditIfModifiedElseCancel()}this.#en.onCellMousedown(t,r,i)}}#Mn(e){0==e.button&&this.#en.onCellDblClick()}#Sn(e){this.#Ls.rowMouseOver$.next({item:e})}#$n(e){this.#Ls.rowMouseOver$.next(null)}scrollContentVertically(e){this.#Is.scrollTop+=e}setScrollTop(e){this.#Is.scrollTop=e}setHoverItem(e){this.#Gs&&(this.getItemRow(this.#Gs).classList.remove("hover"),this.#Gs=null);e&&this.getItemRow(e).classList.add("hover");this.#Gs=e}hideColumn(e){var t=this.#Ys.find(t=>t.code==e);t&&(t.isVisible=!1)}removeColumn(e){var t=this.#Ys.find(t=>t.code==e);if(t){var r=this.#Ys.indexOf(t);this.#Ys.splice(r,1);var i=this.#Ks.children[r+1];this.#Ks.removeChild(i);for(var s=0;s<this.#Zs.childElementCount;s++){var n=this.#Zs.children[s],a=n.children[r+1];n.removeChild(a)}this.#mn()}}getColumnsContentWidth(){var e=48;for(var t of this.#Ys)t.isVisible&&(e+=t.width+17);return e}getDefaultColumns(){return this.#Ys.filter(e=>!e.isCustom)}getCustomColumns(){return this.#Ys.filter(e=>e.isCustom)}addCustomStringColumn(e,t){var r=new is(e,t,t=>t.getPropertyValue(e)??null,new Vi,new Oi(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60);return r.isCustom=!0,this.addColumn(r),r}addCustomIntegerColumn(e,t){var r=new is(e,t,t=>t.getPropertyValue(e)??null,new Vi,new ss(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60,"right");return r.isCustom=!0,this.addColumn(r),r}addCustomDecimalColumn(e,t){var r=new is(e,t,t=>t.getPropertyValue(e)??null,new Vi,new ns(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60,"right");return r.isCustom=!0,this.addColumn(r),r}addCustomDateColumn(e,t){var r=new is(e,t,t=>{var r=t.getPropertyValue(e);return r?this.formatCustomDateValue(r):""},new Vi,this.createCustomDateCellEditor(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60);return r.isCustom=!0,this.addColumn(r),r}formatCustomDateValue(e){return Kt(e,"en-US")}createCustomDateCellEditor(e,t){return new Ni(e,t)}saveColumns(){return this.#Ys.map(e=>({code:e.code,width:e.width,isVisible:e.isVisible}))}loadColumns(e){for(var t=new Map,r=0;r<this.#Ys.length;r++)t.set(this.#Ys[r].code,r);var i=[],s=new Set;for(var n of e){void 0!==(a=t.get(n.code))&&(i.push(a),s.add(a))}for(r=0;r<this.#Ys.length;r++)s.has(r)||i.push(r);for(var n of e){var a;void 0!==(a=t.get(n.code))&&(this.#Ys[a].width=n.width,this.#Ys[a].isVisible=n.isVisible)}var o=i.map(e=>this.#Ys[e]);this.#Ys=o;var l=i.map(e=>this.#Ks.children[e+1]);for(var h of l)this.#Ks.appendChild(h);for(var d=0;d<this.#Zs.children.length;d++){var c=this.#Zs.children[d],u=i.map(e=>c.children[e+1]);for(var h of u)c.appendChild(h)}this.redrawAll()}scrollToItem(e){var t=this.getItemRow(e),r=this.#Is.getBoundingClientRect(),i=t.getBoundingClientRect(),s=r.top,n=r.bottom;i.top<s?this.#Is.scrollTop-=s-i.top:i.bottom>n&&(this.#Is.scrollTop+=i.bottom-n)}clearSelection(){this.#qs.clear(),this.#en.clearFocus()}destroy(){this.#T.unsubscribe(),super.destroy()}}class hs extends as{#Pn;constructor(e,t,r){super(e,t,r),this.#Pn=r}handleCustomKeyDown(e,t){if(e.altKey&&e.shiftKey&&this.context.canEdit)switch(e.key){case"ArrowRight":return e.preventDefault(),this.#Pn.indentSelectedItems(),!0;case"ArrowLeft":return e.preventDefault(),this.#Pn.outdentSelectedItems(),!0;case"ArrowUp":return e.preventDefault(),this.#Pn.moveUpSelectedItems(),!0;case"ArrowDown":return e.preventDefault(),this.#Pn.moveDownSelectedItems(),!0}return!(!e.ctrlKey||e.shiftKey||e.altKey||"ArrowUp"!==e.key&&"ArrowDown"!==e.key||!this.#Pn.canToggleCollapsed(t.item))&&(e.preventDefault(),this.#Pn.toggleCollapsed(t.item),!0)}}class ds extends ls{#An=new r;get treeDataSource(){return this.tableContext.dataSource}constructor(e,t){super(e,t),this.#An.add(this.treeDataSource.itemCollapsedChanged$.subscribe(()=>{this.redrawAll()}))}destroy(){this.#An.unsubscribe(),super.destroy()}createKeyboardNavigation(){return new hs(this.tableContext,this.contentElement,this)}redrawItemRow(e){var t=this.getItemRow(e);this.treeDataSource.isItemHidden(e)?t.classList.add("hidden"):t.classList.remove("hidden"),super.redrawItemRow(e)}indentSelectedItems(){this.treeDataSource.indent(this.tableContext.selectedItems$.getValue())}outdentSelectedItems(){this.treeDataSource.outdent(this.tableContext.selectedItems$.getValue())}moveUpSelectedItems(){this.treeDataSource.moveUp(this.tableContext.selectedItems$.getValue())}moveDownSelectedItems(){this.treeDataSource.moveDown(this.tableContext.selectedItems$.getValue())}toggleCollapsed(e){}canToggleCollapsed(e){return!1}}class cs extends Ni{#kt;constructor(e,t,r){super(t,r),this.#kt=e}getDefaultDate(){var e=this.#kt.projectTimeline$.getValue(),t=Bt();return e.startDate.getTime()>t.getTime()&&(t=new Date(e.startDate)),t}getLocale(){return this.#kt.locale$.getValue().language}}class us extends ds{#kt;#Hn=new r;constructor(e,t){super(e.table,t),this.#kt=e,this.#Hn.add(e.settings.changed$.subscribe(()=>{this.redrawAll()})),this.#Hn.add(e.locale$.subscribe(()=>{this.#Vn()})),this.#Hn.add(e.chartMouseWheel$.subscribe(e=>{e.ctrlKey||this.scrollContentVertically(e.deltaY)})),this.#Hn.add(e.chartTaskHover$.subscribe(e=>{this.setHoverItem(e)})),this.#Hn.add(this.tableContext.rowMouseOver$.subscribe(t=>{e.sheetRowMouseOver$.next(t?{task:t.item}:null)})),this.#Bn(e)}destroy(){this.#Hn.unsubscribe(),super.destroy()}#Bn(e){var t=e.locale$.getValue(),r=new is("name",t.columns.name,e=>e.name??"",new Bi(e),new Oi(e=>e.name,(e,t)=>e.name=t),e=>!0,200,100);this.addColumn(r);var i=new is("icons","",e=>"",new _i(e),null,e=>!1,18,18);i.headerHtml='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="12" y="1.5" width="14.5" height="14.5" rx="3" transform="rotate(45 12 1.5)"/><line x1="12" y1="16" x2="12" y2="11"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>',i.exportHeaderRenderer=es,i.exportCellRenderer=ts,this.addColumn(i);var s=new Wi;s.initWithGanttContext(e);var n=new is("length",t.columns.length,e=>e.length?.toString()??"",new Vi,s,e=>e.isLengthEditable,50,50,"right");this.addColumn(n);var a=new is("start",t.columns.start,t=>t.startTime?Kt(t.startTime,e.locale$.getValue().language):"",new Vi,new cs(e,e=>e.startTime,(e,t)=>e.startTime=t),e=>e.isStartTimeEditable,90,90);this.addColumn(a);var o=new is("end",t.columns.end,t=>t.endTime?Kt(t.endTime,e.locale$.getValue().language):"",new Vi,new cs(e,e=>e.endTime,(e,t)=>e.endTime=this.#kt.calendar.getEndOfWorkingDay(t)),e=>e.isEndTimeEditable,90,90);this.addColumn(o);var l=new is("progress",t.columns.progress,t=>null===t.progress||void 0===t.progress?"":new Intl.NumberFormat(e.locale$.getValue().language,{style:"percent",maximumFractionDigits:0}).format(t.progress/100),new Vi,new Ui(e=>e.progress,(e,t)=>e.progress=t),e=>e.isProgressEditable,65,65,"right");this.addColumn(l);var h=new is("resources",t.columns.resources,e=>"",new Xi(e),new ji,e=>e.isResourcesEditable,100,100);this.addColumn(h);var d=new is("work",t.columns.work,e=>e.work?.toString()??"",new Vi,new Gi,e=>e.isWorkEditable,50,50,"right",t.columnTooltips.work);this.addColumn(d);var c=new is("cost",t.columns.cost,t=>{var r=t.cost;return null!==r?function(e,t,r,i){var s=new Intl.NumberFormat(i,{minimumFractionDigits:2,maximumFractionDigits:2}).format(e);switch(r){case"beforeAmount":return t+s;case"beforeAmountWithSpace":return t+" "+s;case"afterAmount":return s+t;case"afterAmountWithSpace":return s+" "+t;default:throw new Error("Unknown display mode")}}(r,this.#kt.settings.currencySymbol,this.#kt.settings.currencySymbolDisplayMode,e.locale$.getValue().language):""},new Vi,new qi(e=>e.cost,(e,t)=>e.cost=t),e=>e.isCostEditable,120,120,"right",t.columnTooltips.cost);this.addColumn(c)}#Vn(){var e=this.#kt.locale$.getValue(),t={name:{name:e.columns.name},length:{name:e.columns.length},start:{name:e.columns.start},end:{name:e.columns.end},progress:{name:e.columns.progress},resources:{name:e.columns.resources},work:{name:e.columns.work,tooltip:e.columnTooltips.work},cost:{name:e.columns.cost,tooltip:e.columnTooltips.cost}};for(var[r,i]of Object.entries(t)){var s=this.getColumnByCode(r);s&&(s.name=i.name,void 0!==i.tooltip&&(s.tooltip=i.tooltip))}this.updateColumnHeaders(),this.redrawAll()}canToggleCollapsed(e){return"summary"===e.type}toggleCollapsed(e){e.toggleCollapsed()}onItemChanged(e){this.#Fn(),e.parent?this.#zn(e.parent):this.redrawItemRow(e)}redrawItemRow(e){super.redrawItemRow(e);for(var t=this.getItemRow(e),r=0;r<this.columnsLength;r++){var i=t.children[r+1];"summary"==e.type?i.classList.add("task-summary"):i.classList.remove("task-summary")}}onComplexOperationFinished(){super.onComplexOperationFinished(),this.#Fn()}#zn(e){this.redrawItemRow(e);for(var t=0;t<e.subtasksLength;t++)this.#zn(e.getSubtask(t))}#Fn(){for(var e=0,t=this.tableContext.dataSource,r=0;r<t.length;r++){var i=t.getItem(r),s=0;"asap"!==i.constraintType&&s++,i.note&&s++,(s+=i.warnings.length)>e&&(e=s)}var n=this.getColumnByCode("icons"),a=e>0?Math.max(18,18*e-4):18;n.minWidth=a,n.width=a}formatCustomDateValue(e){return Kt(e,this.#kt.locale$.getValue().language)}createCustomDateCellEditor(e,t){return new cs(this.#kt,e,t)}}class gs extends ti{constructor(){super(),this.sheet.header.backgroundColor="#ffffff",this.sheet.header.cellBorderColor="#e8e8e8",this.sheet.header.cellDividerColor="#f0f0f0",this.sheet.header.textColor="#555555",this.sheet.gridLineColor="#f2f2f2",this.sheet.scrollbarThumbColor="#d8d8d8",this.chart.header.backgroundColor="#ffffff",this.chart.header.cellBorderColor="#e8e8e8",this.chart.header.cellDividerColor="#f0f0f0",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#555555",this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#f2f2f2",this.chart.content.tier2SeparatorLineStyle="#e8e8e8",this.chart.content.nonWorkingTimeStyle="#fafafa",this.chart.content.linkLineStyle="rounded"}}class ms{#Y=[];#de=new hr;resourceChanged$=new e;resourceRemoved$=new e;resourceRemoving$=new e;constructor(){}get length(){return this.#Y.length}indexOf(e){return this.#Y.indexOf(e)}getResource(e){if(e<0||e>=this.#Y.length)throw new Error("Index out of range");return this.#Y[e]}getResourceById(e){return this.#Y.find(t=>t.id==e)??null}#De(e,t){this.#de.add(e,t)}#Se(e){this.#de.remove(e)}#Ee(e){this.#De(e,e.changed$.subscribe(e=>{this.#On(e.resource)}))}#On(e){this.resourceChanged$.next({resource:e})}addResource(e){if(e.list)throw new Error("The resource is already included in a list of resources");if(this.#Y.includes(e))throw new Error("The resource is already included in this list of resources");return e.list=this,this.#Y.push(e),this.#Ee(e),e}assign(e){for(var t of this.#Y)this.#Se(t);for(var t of(this.#Y=[],e))this.addResource(t)}removeResource(e){var t=this.#Y.indexOf(e);if(t<0)throw new Error("Resource not found");this.resourceRemoving$.next({resource:e}),this.#Y.splice(t,1),this.resourceRemoved$.next({resource:e})}}class ps{#a;get value(){return this.#a}#O;get type(){return this.#O}constructor(e,t){if(e<0)throw new Error("Invalid rate");this.#a=e,this.#O=t}toAny(){return{value:this.#a,type:this.#O}}static fromAny(e){return new ps(e.value,e.type)}}class vs{#m;get id(){return this.#m}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#O;get type(){return this.#O}set type(e){e!=this.#O&&(this.#O=e,this.#f())}#Nn=0;get fixedCostPerUse(){return this.#Nn}set fixedCostPerUse(e){e!=this.#Nn&&(this.#Nn=e,this.#f())}#Wn=0;get fixedCostPerResource(){return this.#Wn}set fixedCostPerResource(e){e!=this.#Wn&&(this.#Wn=e,this.#f())}#Un=null;get avatarIconUrl(){return this.#Un}set avatarIconUrl(e){e!=this.#Un&&(this.#Un=e,this.#f())}#Ie=null;get list(){return this.#Ie}set list(e){if(this.#Ie)throw new Error("Once assigned the list cannot be changed");e!=this.#Ie&&(this.#Ie=e)}#jn=null;get rate(){return this.#jn}set rate(e){e!=this.#jn&&(this.#jn=e,this.#f())}changed$=new e;constructor(e,t,r){this.#b=t,this.#O=r,this.#m=e||er(30)}#f(){this.changed$.next({resource:this})}toAny(){return{id:this.#m,name:this.#b,type:this.#O,fixedCostPerUse:this.#Nn,fixedCostPerResource:this.#Wn,avatarIconUrl:this.#Un,rate:this.#jn?this.#jn.toAny():null}}static fromAny(e){var t=new vs(e.id,e.name,e.type);return t.fixedCostPerUse=e.fixedCostPerUse??0,t.fixedCostPerResource=e.fixedCostPerResource??0,t.avatarIconUrl=e.avatarIconUrl??null,t.rate=e.rate?ps.fromAny(e.rate):null,t}}class fs extends Vr{#wt;#Xn;#Yn;#Kn;#Zn=null;#Gn=null;#qn;#_n=null;#Jn;#Qn;constructor(e,t,r,i,s,n){super(),this.startWatching(s),this.#wt=e,this.#qn=n.getDefaultSheetWidth(),this.#Qn=n.onWrapperResized,this.#Xn=t,this.#Yn=r,this.#Kn=i,this.#Kn.classList.add("gc-divider");var a=window.document.createElement("div");a.classList.add("resizer"),a.addEventListener("mousedown",e=>{this.#ea(e)}),this.#Kn.appendChild(a),this.addDocumentListener("mousemove",this.#an),this.addDocumentListener("mouseup",this.#on),this.#Jn=new ResizeObserver(e=>{requestAnimationFrame(()=>{for(let t of e){const{width:e,height:r}=t.contentRect;this.#ta(e,r)}})}),this.#Jn.observe(this.#Xn)}destroy(){this.#Jn.disconnect(),super.destroy()}#ea(e){0==e.button&&(e.stopPropagation(),this.#wt.dividerResizing$.next(!0),this.#Zn={startX:e.clientX,lastX:e.clientX})}#an(e){if(this.#Zn){e.stopPropagation();var t=e.clientX-this.#Zn.lastX;this.#Zn.lastX=e.clientX,null===this.#Gn?this.#Gn=this.#qn+t:this.#Gn+=t,this.#ra()}}#on(e){this.#Zn&&(e.stopPropagation(),this.#wt.dividerResizing$.next(!1),this.#Zn=null)}#ta(e,t){if(this.#Qn){var r=this.#Qn(e,t);null!==r&&(this.#qn=r)}this.#ra()}updateCalculatedWidth(e){this.#qn=e,this.#ra()}#ra(){var e=this.#Gn??this.#qn;null!==this.#_n&&this.#_n==e||(this.#_n=e,this.#Yn.style.width=e+"px",this.#wt.dividerPositionChanged$.next(),"hidden"===this.#Xn.style.visibility&&(this.#Xn.style.visibility=""))}}class ys extends fs{constructor(e,t,r,i,s){super(e,t,r,i,s,{getDefaultSheetWidth:()=>500,onWrapperResized:e=>Math.floor(e/2)})}}class bs{#ia;constructor(e){this.#ia=e}recalculate(){for(var e=[],t=0;t<this.#ia.list.length;t++){var r=this.#ia.list.getTask(t),i=this.#sa(r);this.#na(e,i).tasks.push(r)}var s=this.#ia.calendar$.getValue();for(let t of e)for(let e of t.tasks)if(e.startTime&&("task"==e.type||"milestone"==e.type)){var n="task"==e.type?s.moveToStartShift(e.startTime,!0):s.moveToEndShift(e.startTime,!0);e.startTime=n}this.#ia.list.complexOperationFinished$.next()}#sa(e,t=new Set){if(t.has(e))return 0;t.add(e);for(var r=0;r<this.#ia.list.linksLength;r++){var i=this.#ia.list.getLink(r);if(i.to==e)return this.#sa(i.from,t)+1}return 0}#na(e,t){for(;e.length<t+1;)e.push({tasks:[]});return e[t]}}class ws{#Ie;#g;constructor(e,t){this.#Ie=e,this.#g=t}calculate(){var{tasks:e,links:t}=this.#aa();if(this.#oa(),0!==e.length){var r=this.#la(e,t);r&&(this.#ha(r,t),this.#da(r,t),this.#ca(r))}}#aa(){for(var e=[],t=new Set,r=0;r<this.#Ie.length;r++){var i=this.#Ie.getTask(r);"task"!==i.type&&"milestone"!==i.type||i.startTime&&i.endTime&&(e.push(i),t.add(i))}var s=[];for(r=0;r<this.#Ie.linksLength;r++){var n=this.#Ie.getLink(r);t.has(n.from)&&t.has(n.to)&&s.push(n)}return{tasks:e,links:s}}#oa(){for(var e=0;e<this.#Ie.length;e++){var t=this.#Ie.getTask(e);t.earlyStart=null,t.earlyFinish=null,t.lateStart=null,t.lateFinish=null,t.totalFloat=null,t.freeFloat=null,t.isCritical=!1}}#la(e,t){var r=new Map,i=new Map;for(var s of e)r.set(s,0),i.set(s,[]);for(var n of t)r.set(n.to,(r.get(n.to)??0)+1),i.get(n.from).push(n.to);var a=[];for(var s of e)0===r.get(s)&&a.push(s);for(var o=[];a.length>0;){var l=a.shift();for(var h of(o.push(l),i.get(l))){var d=r.get(h)-1;r.set(h,d),0===d&&a.push(h)}}return o.length!==e.length?null:o}#ua(e){return"milestone"===e.type?0:e.partsLengthInHours}#ha(e,t){var r=new Map;for(var i of e)r.set(i,[]);for(var s of t)r.get(s.to).push(s);for(var i of e){var n,a=r.get(i);if(0===a.length)n=new Date(i.startTime);else for(var s of(n=new Date(i.startTime),a)){var o,l=s.from,h=s.lag.toHours(this.#g);switch(s.type){case"finishToStart":o=this.#g.addHours(l.earlyFinish,h);break;case"startToStart":o=this.#g.addHours(l.earlyStart,h);break;case"finishToFinish":var d=this.#ua(i);o=this.#g.addHours(l.earlyFinish,h-d);break;case"startToFinish":d=this.#ua(i);o=this.#g.addHours(l.earlyStart,h-d)}o.getTime()>n.getTime()&&(n=o)}n=this.#ga(i,n),i.earlyStart=n;d=this.#ua(i);i.earlyFinish=d>0?this.#g.addHours(n,d):new Date(n)}}#ga(e,t){var r=e.constraintDate;if(!r)return t;switch(e.constraintType){case"mso":return new Date(r);case"snet":return r.getTime()>t.getTime()?new Date(r):t;case"fnet":var i=this.#ua(e),s=this.#g.addHours(new Date(r),-i);return s.getTime()>t.getTime()?s:t;case"mfo":i=this.#ua(e);return this.#g.addHours(new Date(r),-i);default:return t}}#ma(e,t){var r=e.constraintDate;if(!r)return t;switch(e.constraintType){case"mfo":return new Date(r);case"snlt":var i=this.#ua(e),s=this.#g.addHours(new Date(r),i);return s.getTime()<t.getTime()?s:t;case"fnlt":return r.getTime()<t.getTime()?new Date(r):t;case"mso":i=this.#ua(e);return this.#g.addHours(new Date(r),i);default:return t}}#da(e,t){var r=null;for(var i of e)(!r||i.earlyFinish.getTime()>r.getTime())&&(r=new Date(i.earlyFinish));if(r){var s=new Map;for(var i of e)s.set(i,[]);for(var n of t)s.get(n.from).push(n);for(var a=e.length-1;a>=0;a--){i=e[a];var o,l=s.get(i);if(0===l.length)o=new Date(r);else for(var n of(o=new Date(r),l)){var h,d=n.to,c=n.lag.toHours(this.#g);switch(n.type){case"finishToStart":h=this.#g.addHours(d.lateStart,-c);break;case"finishToFinish":case"startToFinish":h=this.#g.addHours(d.lateFinish,-c);break;case"startToStart":var u=this.#ua(i);h=this.#g.addHours(d.lateStart,u-c)}h.getTime()<o.getTime()&&(o=h)}o=this.#ma(i,o),i.lateFinish=o;u=this.#ua(i);i.lateStart=u>0?this.#g.addHours(o,-u):new Date(o)}}}#ca(e){for(var t of e)t.earlyStart&&t.lateStart&&(t.totalFloat=this.#g.getHoursBetween(t.earlyStart,t.lateStart),t.isCritical=Math.abs(t.totalFloat)<.001)}}const Ts=10,Cs=40,xs=96/25.4,ks={A4:[210,297],A3:[297,420],Letter:[215.9,279.4],Legal:[215.9,355.6]};function Es(e,t){return e.map(e=>function(e,t){if(!e)return"";if(e.includes(t)||e.includes('"')||e.includes("\n")||e.includes("\r"))return'"'+e.replace(/"/g,'""')+'"';return e}(e,t)).join(t)}function Ds(e){var t=e.getRow(1);t.font={bold:!0},t.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFF0F0F0"}}}function Ss(e){e.views=[{state:"frozen",ySplit:1}]}async function $s(){try{return await import("exceljs")}catch{throw new Error("ExcelJS is required for Excel export. Install it with: npm install exceljs")}}async function Rs(e){var t=await e.xlsx.writeBuffer();return new Blob([t],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}function Ms(e,t,r,i,s,n,a,o,l){var h=n.getValue(),d=a.getValue();n.next(r.chartStart),a.next(0);try{var c=document.createElement("canvas");c.width=r.chartWidth*i,c.height=r.totalHeight*i;var u=c.getContext("2d");1!==i&&u.scale(i,i),u.fillStyle=s.chart.content.backgroundColor,u.fillRect(0,0,r.chartWidth,r.totalHeight),u.font=s.font.toString(1);var g=1===i?c:{width:r.chartWidth,height:r.totalHeight,getContext:()=>u};for(var m of(o.render(g),u.save(),u.beginPath(),u.rect(0,r.headerHeight,r.chartWidth,r.totalHeight-r.headerHeight),u.clip(),l))m.render(g);u.restore(),e.drawImage(c,0,0,c.width,c.height,t,0,r.chartWidth,r.totalHeight)}finally{n.next(h),a.next(d)}}class Ls{calculateChartLayout(e,t,r,i,s){var n=e.currentZoom,a=n.axis[0],o=function(e){for(var t=[],r=0;r<e.columnsLength;r++){var i=e.getColumn(r);i.isVisible&&t.push({code:i.code,name:i.name,width:i.width,align:i.align,valueFormatter:i.valueFormatter,exportHeaderRenderer:i.exportHeaderRenderer??void 0,exportCellRenderer:i.exportCellRenderer??void 0})}return t}(t),l=Cs+o.reduce((e,t)=>e+t.width+Ts,0),h=r??s.startDate,d=i??s.endDate,c=a.getAdd(a.getCellStartTime(h),-3),u=a.getAdd(a.getCellStartTime(d),4);return{visibleColumns:o,sheetWidth:l,chartStart:c,chartWidth:Math.ceil(a.getX(u,c,n)),headerHeight:this.theme.contentTop}}renderSheet(e,t){this.renderSheetHeader(e,t),this.renderSheetRows(e,t),this.renderSheetRightBorder(e,t)}renderSheetHeader(e,t){var r=this.theme,i=r.font;e.font=i.toString(1),e.fillStyle=r.chart.header.backgroundColor,e.fillRect(0,0,t.sheetWidth,t.headerHeight),e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(0,t.headerHeight-.5),e.lineTo(t.sheetWidth,t.headerHeight-.5),e.stroke();var s=0;for(var n of(Rr(e,"#",new kr(s+5,0,30,t.headerHeight),"center",0,r.chart.header.textColor),s+=Cs,t.visibleColumns))n.exportHeaderRenderer?n.exportHeaderRenderer(e,s,0,n.width+Ts,t.headerHeight,r.chart.header.textColor):Rr(e,n.name,new kr(s+5,0,n.width,t.headerHeight),"left",0,r.chart.header.textColor),e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(s-.5,0),e.lineTo(s-.5,t.headerHeight),e.stroke(),s+=n.width+Ts}renderSheetRightBorder(e,t){var r=this.theme;e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(t.sheetWidth-.5,0),e.lineTo(t.sheetWidth-.5,t.totalHeight),e.stroke()}}class Is extends Ls{#kt;#pa;constructor(e,t){super(),this.#kt=e,this.#pa=t}get theme(){return this.#kt.theme$.getValue()}calculateDimensions(){var e=this.calculateChartLayout(this.#kt.timeline,this.#pa,this.#kt.list.minStartTime,this.#kt.list.maxEndTime,this.#kt.projectTimeline$.getValue()),t=this.#va(),r=e.headerHeight+t*(this.theme.rowHeight+1);return{visibleColumns:e.visibleColumns,visibleRowCount:t,sheetWidth:e.sheetWidth,chartWidth:e.chartWidth,chartStart:e.chartStart,headerHeight:e.headerHeight,totalHeight:r}}renderSheetRows(e,t){for(var r=this.theme,i=r.font,s=r.rowHeight+1,n=t.headerHeight,a=0;a<this.#kt.list.length;a++){var o=this.#kt.list.getTask(a);if(!o.hidden){var l=0,h=this.#kt.list.getTaskNumber(o).toString();for(var d of(Rr(e,h,new kr(l+5,n,30,s),"center",0,"#808080"),l+=Cs,t.visibleColumns)){if(d.exportCellRenderer)d.exportCellRenderer(e,o,l+5,n,d.width,s);else{var c=d.valueFormatter(o),u=l+5,g=d.width;if("name"===d.code){var m=16*o.level;u+=m,g-=m}var p="left";"center"===d.align&&(p="center"),"right"===d.align&&(p="right"),c&&(e.font="summary"===o.type?`bold ${i.toString(1)}`:i.toString(1),Rr(e,c,new kr(u,n,g,s),p,0,r.sheet.textColor),e.font=i.toString(1))}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(l-.5,n),e.lineTo(l-.5,n+s),e.stroke(),l+=d.width+Ts}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(0,n+s-.5),e.lineTo(t.sheetWidth,n+s-.5),e.stroke(),n+=s}}}renderChart(e,t,r,i=1){Ms(e,t,r,i,this.theme,this.#kt.timeline.visibleStartTime$,this.#kt.sheetScrollTop$,new Pr(this.#kt),[new Cr(this.#kt),new Si(this.#kt),new Ei(this.#kt),new Ti(this.#kt)])}#va(){var e=this.#kt.list.getLastNonEmpty(!1);if(!e)return 0;for(var t=0,r=this.#kt.list.indexOf(e);r>=0;r--){this.#kt.list.getTask(r).hidden||t++}return t}}class Ps{#ds;#Ii;constructor(e,t){this.#ds=e,this.#Ii=t}async exportToImage(){await(this.#ds.preload?.());var e=this.#ds.calculateDimensions(),t=this.#ds.theme,r=e.sheetWidth+e.chartWidth,i=document.createElement("canvas");i.width=r,i.height=e.totalHeight;var s=i.getContext("2d");return s.fillStyle=t.sheet.backgroundColor,s.fillRect(0,0,r,e.totalHeight),this.#ds.renderSheet(s,e),this.#ds.renderChart(s,e.sheetWidth,e),Vt().showWatermarkFor(this.#Ii)&&Ri(s,r,e.totalHeight),new Promise((e,t)=>{i.toBlob(r=>{r?e(r):t(new Error("Failed to export image"))},"image/png")})}}class As extends Ps{constructor(e,t){super(new Is(e,t),"gantt")}}class Hs{#kt;#pa;constructor(e,t){this.#kt=e,this.#pa=t}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.columns??null,s=e?.includeLinks??!1,n=this.#fa(i),a=[];r&&a.push(Es(["#",...n.map(e=>e.name)],t));for(var o=0;o<this.#kt.list.length;o++){var l=this.#kt.list.getTask(o);"empty"!==l.type&&a.push(Es([this.#kt.list.getTaskNumber(l).toString(),...n.map(e=>e.valueFormatter(l))],t))}var h=a.join("\n");if(s&&this.#kt.list.linksLength>0){h+="\n\n";var d=this.#kt.locale$.getValue();r&&(h+=Es([d.labels.from,d.labels.to,d.labels.type,d.labels.lag],t)+"\n");for(o=0;o<this.#kt.list.linksLength;o++){var c=this.#kt.list.getLink(o),u=0!==c.lag.value?c.lag.toString():"";h+=Es([this.#kt.list.getTaskNumber(c.from).toString(),this.#kt.list.getTaskNumber(c.to).toString(),c.type,u],t)+"\n"}}return h}#fa(e){for(var t=[],r=0;r<this.#pa.columnsLength;r++){var i=this.#pa.getColumn(r);if("icons"!==i.code){if(e){if(!e.includes(i.code))continue}else if(!i.isVisible)continue;t.push({code:i.code,name:i.name,width:i.width,valueFormatter:i.valueFormatter})}}return t}async exportToExcel(e){var t=await $s(),r=this.#kt.locale$.getValue(),i=e?.sheetName??r.export.tasksSheetName,s=e?.includeLinksSheet??!0,n=e?.includeResourcesSheet??!0,a=e?.includeFormatting??!0,o=e?.columns??null,l=new t.Workbook;return this.#ya(l,i,o,a),s&&this.#kt.list.linksLength>0&&this.#ba(l,a),n&&this.#kt.resources.length>0&&this.#wa(l,a),Rs(l)}#ya(e,t,r,i){var s=this.#fa(r),n=e.addWorksheet(t),a=[{header:"#",key:"number",width:6}];for(var o of s){var l=Math.max(10,Math.round(o.width/7));a.push({header:o.name,key:o.code,width:l})}n.columns=a,i&&Ds(n);for(var h=0;h<this.#kt.list.length;h++){var d=this.#kt.list.getTask(h);if("empty"!==d.type){var c={number:this.#kt.list.getTaskNumber(d)};for(var o of s)c[o.code]=o.valueFormatter(d);var u=n.addRow(c);if(i&&d.level>0){var g=u.getCell("name");g&&(g.alignment={indent:2*d.level})}i&&"summary"===d.type&&(u.font={bold:!0})}}i&&Ss(n)}#ba(e,t){var r=this.#kt.locale$.getValue(),i=e.addWorksheet(r.export.linksSheetName);i.columns=[{header:r.labels.from,key:"from",width:8},{header:r.labels.to,key:"to",width:8},{header:r.labels.type,key:"type",width:18},{header:r.labels.lag,key:"lag",width:12}],t&&Ds(i);for(var s=0;s<this.#kt.list.linksLength;s++){var n=this.#kt.list.getLink(s);i.addRow({from:this.#kt.list.getTaskNumber(n.from),to:this.#kt.list.getTaskNumber(n.to),type:n.type,lag:0!==n.lag.value?n.lag.toString():""})}t&&Ss(i)}#wa(e,t){var r=this.#kt.locale$.getValue(),i=e.addWorksheet(r.export.resourcesSheetName);i.columns=[{header:"Name",key:"name",width:25},{header:"Type",key:"type",width:12},{header:"Rate",key:"rate",width:15}],t&&Ds(i);for(var s=0;s<this.#kt.resources.length;s++){var n=this.#kt.resources.getResource(s),a="";if(n.rate){var o="perHour"===n.rate.type?"/h":"/d";a=n.rate.value+o}i.addRow({name:n.name,type:n.type,rate:a})}t&&Ss(i)}}class Vs{#ds;#Ii;constructor(e,t){this.#ds=e,this.#Ii=t}get renderer(){return this.#ds}async exportToPdf(e){var t;try{t=await import("jspdf")}catch{throw new Error("jsPDF is required for PDF export. Install it with: npm install jspdf")}await(this.#ds.preload?.());var r=e?.pageSize??"A4",i=e?.orientation??"landscape",s=e?.margin??{top:10,right:10,bottom:10,left:10},n=e?.includeSheet??!0,a=e?.includeChart??!0,o=e?.quality??1,[l,h]=ks[r];"landscape"===i&&([l,h]=[h,l]);var d=h,c=l-s.left-s.right,u=d-s.top-s.bottom,g=e?.header?6:0,m=e?.footer?6:0,p=u-g-m,v=this.#ds.calculateDimensions(),f=this.#ds.theme,y=n?v.sheetWidth:0,b=y+(a?v.chartWidth:0),w=document.createElement("canvas");w.width=2*b,w.height=2*v.totalHeight;var T,C=w.getContext("2d");if(C.scale(2,2),C.fillStyle=f.sheet.backgroundColor,C.fillRect(0,0,b,v.totalHeight),n&&this.#ds.renderSheet(C,v),a&&this.#ds.renderChart(C,y,v,2),Vt().showWatermarkFor(this.#Ii)&&Ri(C,b,v.totalHeight),e?.fitToSinglePage){var x=b/xs+s.left+s.right,k=v.totalHeight/xs+s.top+s.bottom+g+m;T=new t.jsPDF({orientation:i,format:[x,k],unit:"mm"});var E=b/xs,D=v.totalHeight/xs,S=s.top+g;T.addImage(w.toDataURL("image/png",o),"PNG",s.left,S,E,D),this.#Ta(T,e,s,1,1,k)}else{for(var $=c*xs,R=p*xs,M=v.headerHeight,L=this.computeVerticalPageBreaks(v,R,M),I=Math.max(1,Math.ceil(b/$)),P=[],A=0;A<L.length;A++)for(var H=0;H<I;H++){var V=H*$,B=Math.min($,b-V),F=L[A].srcY,z=L[A].height;P.push({hPage:H,vPage:A,srcX:V,contentSrcY:F,srcW:B,contentSrcH:z})}T=new t.jsPDF({orientation:i,format:r,unit:"mm"});for(var O=P.length,N=0;N<P.length;N++){var W=P[N];N>0&&T.addPage();var U=Math.ceil(W.srcW),j=Math.ceil(M+W.contentSrcH);if(!(U<=0||j<=0)){var X=document.createElement("canvas");X.width=2*U,X.height=2*j;var Y=X.getContext("2d");Y.fillStyle=f.sheet.backgroundColor,Y.fillRect(0,0,X.width,X.height),Y.drawImage(w,2*W.srcX,0,2*W.srcW,2*M,0,0,2*W.srcW,2*M),W.contentSrcH>0&&Y.drawImage(w,2*W.srcX,2*W.contentSrcY,2*W.srcW,2*W.contentSrcH,0,2*M,2*W.srcW,2*W.contentSrcH);E=W.srcW/xs,D=j/xs,S=s.top+g;T.addImage(X.toDataURL("image/png",o),"PNG",s.left,S,E,D),this.#Ta(T,e,s,N+1,O,d)}}}return T.output("blob")}#Ta(e,t,r,i,s,n){if(t?.header){var a="function"==typeof t.header?t.header(i,s):t.header;e.setFontSize(9),e.setTextColor(128),e.text(a,r.left,r.top+4)}if(t?.footer){var o="function"==typeof t.footer?t.footer(i,s):t.footer;e.setFontSize(9),e.setTextColor(128),e.text(o,r.left,n-r.bottom)}}}class Bs extends Vs{constructor(e,t){super(new Is(e,t),"gantt")}computeVerticalPageBreaks(e,t,r){for(var i=this.renderer.theme.rowHeight+1,s=Math.max(1,Math.floor((t-r)/i)),n=e.visibleRowCount+1,a=Math.max(1,Math.ceil(n/s)),o=[],l=0;l<a;l++){var h=r+l*s*i,d=Math.min(s*i,e.totalHeight-h);d<0&&(d=0),o.push({srcY:h,height:d})}return o}}class Fs{#Ca=[];#xa=-1;#ka=50;#Ea=!1;#Da=0;#Sa=!1;#$a;#Ra;canUndo$=new t(!1);canRedo$=new t(!1);constructor(e,t){this.#$a=e,this.#Ra=t}initialize(){this.#Ca=[this.#$a()],this.#xa=0}requestSnapshot(){this.#Ea||(this.#Da>0?this.#Sa=!0:this.#Ma())}beginBatch(){this.#Da++}endBatch(){this.#Da--,0===this.#Da&&this.#Sa&&(this.#Sa=!1,this.#Ma())}#Ma(){var e=this.#$a();if(!(this.#xa>=0&&e===this.#Ca[this.#xa])){for(this.#Ca.splice(this.#xa+1),this.#Ca.push(e),this.#xa++;this.#Ca.length>this.#ka;)this.#Ca.shift(),this.#xa--;this.#La()}}undo(){this.canUndo$.getValue()&&(this.#Ea=!0,this.#xa--,this.#Ra(this.#Ca[this.#xa]),this.#Ea=!1,this.#La())}redo(){this.canRedo$.getValue()&&(this.#Ea=!0,this.#xa++,this.#Ra(this.#Ca[this.#xa]),this.#Ea=!1,this.#La())}#La(){this.canUndo$.next(this.#xa>0),this.canRedo$.next(this.#xa<this.#Ca.length-1)}}class zs{dataSource;rowHeight;canEdit$;get canEdit(){return this.canEdit$.getValue()}scrollTop$;rowAdded$;selectedItems$;focusedCell$;cellEditing$;cellInvalidValue$;cellDialogEdit$;cellInputEdit$;columnHeaderContextMenu$;columnResized$;columnReordered$;rowContextMenu$;rowMouseOver$;constructor(r,i=32){this.dataSource=r,this.rowHeight=i,this.canEdit$=new t(!0),this.scrollTop$=new t(0),this.rowAdded$=new e,this.selectedItems$=new t([]),this.focusedCell$=new t(null),this.cellEditing$=new t(null),this.cellInvalidValue$=new e,this.cellDialogEdit$=new e,this.cellInputEdit$=new e,this.columnHeaderContextMenu$=new e,this.columnResized$=new e,this.columnReordered$=new e,this.rowContextMenu$=new e,this.rowMouseOver$=new t(null)}}class Os{#Ie;#T=new r;itemChanged$=new e;itemRemoved$=new e;itemCollapsedChanged$=new e;complexOperationFinished$;constructor(e){this.#Ie=e,this.complexOperationFinished$=e.complexOperationFinished$,this.#T.add(e.taskChanged$.subscribe(e=>this.itemChanged$.next({item:e.task}))),this.#T.add(e.taskRemoved$.subscribe(e=>this.itemRemoved$.next({item:e.task}))),this.#T.add(e.taskCollapsedChanged$.subscribe(e=>this.itemCollapsedChanged$.next({item:e.task})))}destroy(){this.#T.unsubscribe()}get list(){return this.#Ie}get length(){return this.#Ie.length}getItem(e){return this.#Ie.getTask(e)}getItemById(e){return this.#Ie.getTaskById(e)}indexOf(e){return this.#Ie.indexOf(e)}addEmptyItem(){return this.#Ie.addEmptyTask()}insertEmptyItem(e){return this.#Ie.insertEmptyTask(e)}removeItems(e){this.#Ie.removeTasks(e)}getItemLabel(e){return this.#Ie.getTaskNumber(e).toString()}isItemHidden(e){return e.hidden}getNextVisible(e){return this.#Ie.getNextVisible(e)}getPreviousVisible(e){return this.#Ie.getPreviousVisible(e)}indent(e){this.#Ie.indent(e)}outdent(e){this.#Ie.outdent(e)}moveUp(e){this.#Ie.moveUp(e)}moveDown(e){this.#Ie.moveDown(e)}}const Ns={language:"en-US",columns:{name:"Name",length:"Length",start:"Start",end:"End",progress:"Progress",resources:"Resources",work:"Work",cost:"Cost"},columnTooltips:{work:"Work days or hours allocated for this task. Calculated automatically when one or more resources are assigned.",cost:"Cost calculated automatically when one or more resources are assigned."},tooltips:{addTask:"Add task",addTaskPart:"Add task part",moveTask:"Move task",moveTaskPart:"Move task part",resizeTask:"Resize task",resizeTaskPart:"Resize task part",moveMilestone:"Move milestone",setProgress:"Set progress",addLink:"Add a link"},labels:{start:"Start",end:"End",length:"Length",progress:"Progress",from:"From",to:"To",type:"Type",lag:"Lag"},constraints:{asap:"As Soon As Possible",alap:"As Late As Possible",mso:"Must Start On",mfo:"Must Finish On",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than"},linkTypes:{finishToStart:"Finish → Start",startToStart:"Start → Start",finishToFinish:"Finish → Finish",startToFinish:"Start → Finish"},warnings:{behindSchedule:"The task is behind schedule",behindScheduleByOneDay:"by one day",behindScheduleByDays:e=>`by ${e} days`,constraintViolation:(e,t)=>`Task violates '${e} ${t}' constraint`},export:{tasksSheetName:"Tasks",linksSheetName:"Links",resourcesSheetName:"Resources",eventsSheetName:"Events",calendarsSheetName:"Calendars"},scheduler:{resource:"Resource",name:"Name",type:"Type",addEvent:"Add event",moveEvent:"Move event",resizeEvent:"Resize event"},calendar:{today:"Today",month:"Month",week:"Week",day:"Day",agenda:"Agenda",allDay:"all-day",noEvents:"No events",more:e=>`+${e} more`,myCalendars:"My Calendars",addCalendar:"Add calendar",ariaCalendar:"Event Calendar",ariaSidebar:"Calendar sidebar",ariaNavigation:"Navigation",ariaViewMode:"View mode",ariaGoToToday:"Go to today",ariaPrevious:"Previous",ariaNext:"Next",ariaAllDayEvents:"All-day events",ariaCalendarGrid:"Calendar grid",ariaAgendaList:"Agenda event list",ariaSelectMonthYear:"Select month and year",ariaToggleCalendar:e=>`Show or hide ${e}`,ariaRemoveCalendar:e=>`Remove ${e}`,ariaMoreEvents:e=>`${e} more events`}};class Ws{#kt;#Ia=null;constructor(e){this.#kt=e}async copy(e){var t=e.filter(e=>"empty"!==e.type);if(0!==t.length){this.#Ia=this.#Pa(t);var r=this.#Aa(t);try{await navigator.clipboard.writeText(r)}catch{}}}async cut(e){await this.copy(e);var t=e.filter(e=>"empty"!==e.type);t.length>0&&this.#kt.list.removeTasks(t)}async paste(){if(this.#Ia)return this.#Ha(this.#Ia);try{var e=await navigator.clipboard.readText();if(e&&e.trim().length>0)return this.#Va(e)}catch{}return null}#Pa(e){var t=new Set(e.map(e=>e.id)),r=[];for(var i of e)r.push(i.toAny());for(var s=[],n=[],a=0;a<this.#kt.list.linksLength;a++){var o=this.#kt.list.getLink(a),l=t.has(o.from.id),h=t.has(o.to.id);if(l||h){var d=o.toAny();n.push(d),l&&h&&s.push(d)}}return{tasks:r,links:s,allLinks:n}}#Ha(e){var t=this.#kt.list,r=this.#Ba(),i=new Map,s=[];for(var n of e.tasks){var a=n.id,o=new cr(null,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies);t.insertTask(r,o),this.#Fa(o,n),i.set(a,o),s.push(o),r++}for(var l=new Set(s),h=0;h<e.tasks.length;h++){var d=s[h],c=(n=e.tasks[h]).parent;d.parent&&!l.has(d.parent)&&c&&i.has(c)&&d.parent.removeSubtask(d)}for(h=0;h<e.tasks.length;h++){n=e.tasks[h],d=s[h];var u=n.parent;if(u&&i.has(u)&&!d.parent)i.get(u).addSubtask(d)}var g=[];for(var m of e.links){var p=i.get(m.from),v=i.get(m.to);if(p&&v&&t.isValidTypeForLink(p)&&t.isValidTypeForLink(v)&&!t.existsLinkBetween(p,v)&&!t.wouldCreateCycle(p,v)){var f=m.lag?ur.fromAny(m.lag):void 0,y=t.addLink(p,v,m.type,f);g.push(y)}}var b=new Set(e.tasks.map(e=>e.id)),w=[];for(var m of e.allLinks){var T=b.has(m.from),C=b.has(m.to);T&&!C?w.push({type:m.type,fromId:m.from,toId:m.to,externalSide:"to"}):!T&&C&&w.push({type:m.type,fromId:m.from,toId:m.to,externalSide:"from"})}return t.complexOperationFinished$.next(),{tasks:s,links:g,taskIdMap:i,droppedLinks:w}}#Fa(e,t){if(t.startTime&&(e.startTime=_t(t.startTime)),t.endTime&&(e.endTime=_t(t.endTime)),t.name&&(e.name=t.name),void 0!==t.color&&(e.color=t.color),t.note&&(e.note=t.note),void 0!==t.progress&&null!==t.progress&&(e.progress=t.progress),t.constraintType&&"asap"!==t.constraintType&&(e.constraintType=t.constraintType,t.constraintDate&&(e.constraintDate=_t(t.constraintDate))),t.resources&&t.resources.length>0)for(var r of t.resources){var i=r.resourceId,s=this.#kt.resources.getResourceById(i);s&&e.addResource(null,s,r.capacity??100)}}#Va(e){var t=this.#kt.list,r=this.#Ba(),i=e.split("\n").filter(e=>e.trim().length>0),s=[],n=new Map;for(var a of i){var o=a.split("\t"),l=o[0]?.trim();if(l){var h=t.insertEmptyTask(r);if(h.name=l,o[1]?.trim())try{h.startTime=new Date(o[1].trim())}catch{}if(o[2]?.trim())try{h.endTime=new Date(o[2].trim())}catch{}if(o[3]?.trim()){var d=parseFloat(o[3].trim());isNaN(d)||(h.progress=Math.min(100,Math.max(0,d)))}var c=er(8);n.set(c,h),s.push(h),r++}}return t.complexOperationFinished$.next(),{tasks:s,links:[],taskIdMap:n,droppedLinks:[]}}#Ba(){var e=this.#kt.sheetSelectedTasks$.getValue();if(e.length>0){var t=e[0];return this.#kt.list.indexOf(t)}var r=this.#kt.list.getLastNonEmpty();return r?this.#kt.list.indexOf(r)+1:0}#Aa(e){var t=[];for(var r of e){var i=r.name??"",s=r.startTime?qt(r.startTime):"",n=r.endTime?qt(r.endTime):"",a=null!==r.progress?r.progress.toString():"";t.push([i,s,n,a].join("\t"))}return t.join("\n")}}class Us{_hostElement;_wrapperElement;_subscriptions=new r;_undoManager;#za;#Oa=null;#Na=!0;constructor(e){this._hostElement=e}createDom(){this._hostElement.classList.add("gc-host");var e=document.createElement("div");e.classList.add("gc-wrapper"),this.addWrapperClasses(e),e.style.visibility="hidden",this._hostElement.appendChild(e),this._wrapperElement=e;var t=document.createElement("div"),r=document.createElement("div"),i=document.createElement("div");return e.appendChild(t),e.appendChild(r),e.appendChild(i),{sheetElement:t,dividerElement:r,chartElement:i}}addWrapperClasses(e){}wireTheme(){this._subscriptions.add(this.subscribeThemeChange(()=>{this.#Wa(),this.#Ua()})),this.#Wa(),this.#Ua()}#Wa(){var e,t;e=this._wrapperElement,t=this.getTheme(),e.style.fontFamily=t.font.name,e.style.fontSize=t.font.size+"pt"}#Ua(){var e,t,r;e=this._wrapperElement,t=this.getTheme(),(r=e.style).setProperty("--gc-sheet-header-bg-color",t.sheet.header.backgroundColor),r.setProperty("--gc-sheet-header-cell-border-color",t.sheet.header.cellBorderColor),r.setProperty("--gc-sheet-header-cell-divider-color",t.sheet.header.cellDividerColor??t.sheet.header.cellBorderColor),r.setProperty("--gc-sheet-grid-line-color",t.sheet.gridLineColor),r.setProperty("--gc-sheet-bg-color",t.sheet.backgroundColor),r.setProperty("--gc-sheet-text-color",t.sheet.textColor),r.setProperty("--gc-sheet-hover-bg-color",t.sheet.hoverBackgroundColor),r.setProperty("--gc-sheet-selected-bg-color",t.sheet.selectedBackgroundColor),r.setProperty("--gc-sheet-selected-row-header-color",t.sheet.selectedRowHeaderColor),r.setProperty("--gc-sheet-focus-border-color",t.sheet.focusBorderColor),r.setProperty("--gc-sheet-highlight-border-color",t.sheet.highlightBorderColor),r.setProperty("--gc-tree-icon-color",t.sheet.treeIconColor),r.setProperty("--gc-editor-bg-color",t.sheet.editorBackgroundColor),r.setProperty("--gc-editor-text-color",t.sheet.editorTextColor),r.setProperty("color-scheme",t.sheet.colorScheme),e.setAttribute("data-color-scheme",t.sheet.colorScheme)}wireKeyboard(){this.#za=e=>{this.#ja(e)},this._wrapperElement.addEventListener("keydown",this.#za,!0)}#ja(e){if(!this.isCellEditing()&&(e.ctrlKey||e.metaKey))switch(e.key){case"z":e.preventDefault(),e.shiftKey?this.redo():this.undo();break;case"y":e.preventDefault(),this.redo();break;case"+":case"=":e.preventDefault(),this.zoomIn();break;case"-":e.preventDefault(),this.zoomOut();break;case"c":e.preventDefault(),this.copy();break;case"x":e.preventDefault(),this.cut();break;case"v":e.preventDefault(),this.paste()}}get markers(){return this.ctx.markers$.getValue()}set markers(e){this.ctx.markers$.next(e)}addMarker(e){var t=[...this.ctx.markers$.getValue(),e];this.ctx.markers$.next(t)}removeMarker(e){var t=this.ctx.markers$.getValue().filter(t=>t!==e);this.ctx.markers$.next(t)}clearMarkers(){this.ctx.markers$.next([])}get canEdit(){return this.ctx.canEdit}set canEdit(e){this.ctx.canEdit$.next(e)}get autoZoomToFit(){return this.#Na}set autoZoomToFit(e){this.#Na=e}get showGridLines(){return this.ctx.showGridLines$.getValue()}set showGridLines(e){this.ctx.showGridLines$.next(e)}get showTodayLine(){return this.ctx.showTodayLine$.getValue()}set showTodayLine(e){this.ctx.showTodayLine$.next(e)}get canUndo$(){return this._undoManager.canUndo$}get canRedo$(){return this._undoManager.canRedo$}undo(){this.ctx.canEdit&&(this._undoManager.undo(),this.engineEvents.undone$.next())}redo(){this.ctx.canEdit&&(this._undoManager.redo(),this.engineEvents.redone$.next())}zoomIn(){return this.ctx.timeline.zoomIn()}zoomOut(){return this.ctx.timeline.zoomOut()}zoomToFitRange(e,t){if(e&&t){var r=this.getChartWidth();if(!(r<=0)){var i=this.ctx.timeline.findBestZoomIndex(e,t,r);this.ctx.timeline.zoomIndex$.next(i);var s=this.ctx.timeline.currentZoom.axis[0];this.ctx.timeline.visibleStartTime$.next(s.getAdd(s.getCellStartTime(e),-1))}}}goToProjectStart(){var e=this.ctx.timeline.currentZoom.axis[0],t=new Date(this.projectTimeline.startDate);t.setDate(t.getDate()-1),this.ctx.timeline.visibleStartTime$.next(e.getCellStartTime(t))}scrollToDate(e){var t=this.ctx.timeline.currentZoom.axis[0],r=t.getAdd(t.getCellStartTime(e),-1);this.ctx.timeline.visibleStartTime$.next(r)}get projectTimeline(){return this.ctx.projectTimeline$.getValue()}set projectTimeline(e){var t=e.startDate,r=e.endDate;if(t.getTime()>r.getTime())throw new Error("Invalid project date range");t=zt(t),r=zt(r),this.ctx.projectTimeline$.next(new Sr(t,r)),this.#Na&&this.#Xa()}get calendar$(){return this.ctx.calendar$}set calendar$(e){this.ctx.calendar$.next(e)}saveColumns(){return this.saveColumnsImpl()}loadColumns(e){this.loadColumnsImpl(e)}load(e){this.restoreState(e),this.#Na&&this.hasData()&&this.#Xa()}#Xa(){this.getChartWidth()>0?this.zoomToFit():(this.#Oa?.disconnect(),this.#Oa=new ResizeObserver(()=>{this.getChartWidth()>0&&(this.#Oa.disconnect(),this.#Oa=null,this.zoomToFit())}),this.#Oa.observe(this.getChartElement()))}destroy(){this.#Oa?.disconnect(),this.#Oa=null,this._subscriptions.unsubscribe(),this.engineEvents.destroy(),this.destroyComponents(),this._wrapperElement.removeEventListener("keydown",this.#za,!0),this._wrapperElement.parentNode&&this._wrapperElement.parentNode.removeChild(this._wrapperElement),this._hostElement.classList.remove("gc-host")}}class js extends Us{#kt;#pa;#Ya;#Ka;#Za;#Ga;#qa;get ctx(){return this.#kt}get engineEvents(){return this.#qa}getChartWidth(){return this.#Ka.chartWidth}getChartElement(){return this.#Ka.chartElement}getTheme(){return this.#kt.theme$.getValue()}subscribeThemeChange(e){return this.#kt.theme$.subscribe(e)}isCellEditing(){return null!==this.#kt.sheetCellEditing$.getValue()}saveColumnsImpl(){return this.#pa.saveColumns()}loadColumnsImpl(e){this.#pa.loadColumns(e)}hasData(){return this.list.length>0}destroyComponents(){this.#Ka.destroy(),this.#pa.destroy(),this.#Ya.destroy()}get list(){return this.#kt.list}get resources(){return this.#kt.resources}get events(){return this.#qa}get sheet(){return this.#pa}get selectedTasks(){return this.#kt.sheetSelectedTasks$.getValue()}get showCriticalPath(){return this.#kt.showCriticalPath$.getValue()}set showCriticalPath(e){e?this.#_a():this.#Ja(),this.#kt.showCriticalPath$.next(e)}get showBaseline(){return this.#kt.showBaseline$.getValue()}set showBaseline(e){this.#kt.showBaseline$.next(e)}get filter(){return this.#kt.list.filter}set filter(e){this.#kt.list.filter=e}clearFilter(){this.#kt.list.filter=null}get hasBaseline(){for(var e=0;e<this.#kt.list.length;e++){if(this.#kt.list.getTask(e).baselineStartTime)return!0}return!1}saveBaseline(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);"empty"!==t.type&&(t.baselineStartTime=t.startTime?new Date(t.startTime):null,t.baselineEndTime=t.endTime?new Date(t.endTime):null)}this.#kt.showBaseline$.next(!0),this.#Za.requestSnapshot()}clearBaseline(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);t.baselineStartTime=null,t.baselineEndTime=null}this.#kt.showBaseline$.next(!1),this.#Za.requestSnapshot()}constructor(e){super(e),this.#kt=new Xs,this._subscriptions.add(this.#kt.list.resourceAdding$.subscribe(e=>{this.#lt(e)})),this._subscriptions.add(this.#kt.resources.resourceRemoving$.subscribe(e=>{this.#Qa(e)})),this._subscriptions.add(this.#kt.calendar$.subscribe(()=>{this.#eo()}));var{sheetElement:t,dividerElement:r,chartElement:i}=this.createDom();this.#pa=new us(this.#kt,t),this.#Ya=new ys(this.#kt,this._wrapperElement,t,r,i),this.#Ka=new Li(this.#kt,i),this.#qa=new Ys(this.#kt),this.wireTheme(),this._subscriptions.add(this.#kt.list.evaluatingDependenciesFinished$.subscribe(()=>this.#to())),this._subscriptions.add(this.#kt.list.complexOperationFinished$.subscribe(()=>this.#to())),this._subscriptions.add(this.#kt.list.filterChanged$.subscribe(()=>this.#kt.list.complexOperationFinished$.next())),this.#Ga=new Ws(this.#kt),this.#Za=new Fs(()=>this.save(),e=>this.restoreState(e)),this._undoManager=this.#Za,this._subscriptions.add(this.#kt.list.taskAdded$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.taskChanged$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.taskRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.linkAdded$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.linkRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.complexOperationFinished$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.evaluatingDependenciesFinished$.subscribe(()=>this.#Za.requestSnapshot())),this.#Za.initialize(),this.wireKeyboard()}#lt(e){if(!this.#kt.resources.getResourceById(e.resource.id))throw new Error("The resource is not in the list of resources");if(e.task.getResourceByResourceId(e.resource.id))throw new Error("The resource is already assigned to the task")}#Qa(e){if(this.#kt.list.getTasksUsingResource(e.resource).length>0)throw new Error("The resource cannot be removed, because is used by one or more tasks")}indent(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.indent(e)}outdent(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.outdent(e)}moveUp(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.moveUp(e)}moveDown(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.moveDown(e)}async copy(){var e=this.#kt.sheetSelectedTasks$.getValue();await this.#Ga.copy(e)}async cut(){if(this.canEdit){var e=this.#kt.sheetSelectedTasks$.getValue();await this.#Ga.cut(e)}}async paste(){if(!this.canEdit)return null;this._undoManager.beginBatch();try{var e=await this.#Ga.paste();return e&&this.#qa.tasksPasted$.next(e),e}finally{this._undoManager.endBatch()}}scrollToTask(e){if("empty"!==e.type){for(var t=e.parent;t;)t.collapsed&&t.toggleCollapsed(),t=t.parent;e.startTime&&this.scrollToDate(e.startTime),this.#pa.scrollToItem(e)}}zoomToFit(e){var t=null,r=null;if(e&&e.length>0)for(var i of e)i.startTime&&(!t||i.startTime.getTime()<t.getTime())&&(t=i.startTime),i.endTime&&(!r||i.endTime.getTime()>r.getTime())&&(r=i.endTime);else t=this.#kt.list.minStartTime,r=this.#kt.list.maxEndTime;this.zoomToFitRange(t,r)}get settings(){return this.#kt.settings}save(){for(var e=-1,t=0;t<this.list.length;t++){"empty"!=(i=this.list.getTask(t)).type&&(e=t)}var r=[];for(t=0;t<=e;t++){var i=this.list.getTask(t);r.push(i.toAny())}var s=[];for(t=0;t<this.list.linksLength;t++){var n=this.list.getLink(t);s.push(n.toAny())}var a={startDate:qt(this.projectTimeline.startDate),endDate:qt(this.projectTimeline.endDate)},o=[];for(t=0;t<this.resources.length;t++)o.push(this.resources.getResource(t).toAny());var l=this.markers.map(e=>({date:qt(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})),h={tasks:r,links:s,resources:o,projectTimeline:a,taskCount:this.list.length,showTodayLine:this.showTodayLine,markers:l};return JSON.stringify(h,(e,t)=>null===t?void 0:t)}restoreState(e){this.sheet.clearSelection();var t=JSON.parse(e);if(t.resources){for(var r=[],i=0;i<t.resources.length;i++)r.push(vs.fromAny(t.resources[i]));this.#kt.resources.assign(r)}var s=[];for(i=0;i<t.tasks.length;i++){var n=(o=t.tasks[i]).id;(a=new cr(n,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies)).deserializeProperties(o,this.#kt.resources),s.push(a)}if(void 0!==t.taskCount&&null!==t.taskCount)for(;s.length<t.taskCount;)s.push(new cr(null,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies));for(i=0;i<t.tasks.length;i++){var a,o=t.tasks[i];(a=s[i]).deserializePropertiesHierarchy(o,s)}var l=[];for(i=0;i<t.links.length;i++){o=t.links[i];var h=gr.fromAny(o,s);l.push(h)}if(this.list.assign(s,l),t.projectTimeline)this.#kt.projectTimeline$.next(new Sr(new Date(t.projectTimeline.startDate),new Date(t.projectTimeline.endDate)));else{var d=this.list.minStartTime,c=this.list.maxEndTime;d&&c&&this.#kt.projectTimeline$.next(new Sr(d,c))}if(void 0!==t.showTodayLine&&this.#kt.showTodayLine$.next(t.showTodayLine),t.markers){var u=t.markers.map(e=>({date:new Date(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle}));this.#kt.markers$.next(u)}}async exportToImage(){return new As(this.#kt,this.#pa).exportToImage()}exportToCsv(e){return new Hs(this.#kt,this.#pa).exportToCsv(e)}async exportToPdf(e){return new Bs(this.#kt,this.#pa).exportToPdf(e)}async exportToExcel(e){return new Hs(this.#kt,this.#pa).exportToExcel(e)}#eo(){new bs(this).recalculate(),this.#to()}#to(){this.#kt.showCriticalPath$.getValue()&&this.#_a()}#_a(){new ws(this.#kt.list,this.#kt.calendar).calculate()}#Ja(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);t.earlyStart=null,t.earlyFinish=null,t.lateStart=null,t.lateFinish=null,t.totalFloat=null,t.freeFloat=null,t.isCritical=!1}}}class Xs{table;settings;locale$;calendar$;list;resources;timeline;get sheetScrollTop$(){return this.table.scrollTop$}get sheetRowAdded$(){return this.table.rowAdded$}get sheetSelectedTasks$(){return this.table.selectedItems$}get sheetFocusedCell$(){return this.table.focusedCell$}get sheetCellEditing$(){return this.table.cellEditing$}get sheetCellDialogEdit$(){return this.table.cellDialogEdit$}get sheetCellInputEdit$(){return this.table.cellInputEdit$}get sheetCellInvalidValue$(){return this.table.cellInvalidValue$}get sheetRowContextMenu$(){return this.table.rowContextMenu$}get sheetColumnHeaderContextMenu$(){return this.table.columnHeaderContextMenu$}get sheetColumnResized$(){return this.table.columnResized$}get sheetColumnReordered$(){return this.table.columnReordered$}get canEdit$(){return this.table.canEdit$}get canEdit(){return this.table.canEdit}sheetRowMouseOver$=new t(null);autoScrolling=!1;chartMouseWheel$;chartRedrawn$;chartBackgroundRedrawn$;chartCursor$;chartTaskHover$;theme$;showGridLines$=new t(!0);showCriticalPath$=new t(!1);showBaseline$=new t(!1);showTodayLine$=new t(!0);markers$=new t([]);taskDblClick$=new e;taskContextMenu$=new e;chartContextMenu$=new e;projectTimeline$;dividerPositionChanged$=new e;dividerResizing$=new t(!1);constructor(){this.projectTimeline$=new t(new Sr(Bt(),Ft(180))),this.locale$=new t(Ns),this.settings=new Ks(this),this.calendar$=new t(new yr),this.timeline=new Ii(this.calendar$,this.locale$),this.list=new fr(this.calendar$,this.projectTimeline$,this.locale$),this.resources=new ms,this.theme$=new t(this.#ro());var r=new Os(this.list);this.table=new zs(r,this.theme$.getValue().rowHeight),this.chartMouseWheel$=new e,this.chartRedrawn$=new e,this.chartBackgroundRedrawn$=new e,this.chartCursor$=new e,this.chartTaskHover$=new t(null)}#ro(){return new gs}getContentBottom(e){for(var t=this.theme$.getValue(),r=t.rowHeight+1,i=0,s=0;s<this.list.length;s++)this.list.getTask(s).hidden||i++;var n=t.contentTop+i*r;return Math.min(n,e)}getRowY(e){for(var t=this.theme$.getValue(),r=t.rowHeight+1,i=this.list.indexOf(e),s=0,n=0;n<i;n++){this.list.getTask(n).hidden||s++}return t.contentTop-this.sheetScrollTop$.getValue()+r*s}get calendar(){return this.calendar$.getValue()}}class Ys{#T=new r;taskAdded$=new e;taskChanged$=new e;taskRemoved$=new e;taskDblClick$=new e;taskContextMenu$=new e;chartContextMenu$=new e;sheetRowContextMenu$=new e;sheetColumnHeaderContextMenu$=new e;sheetColumnResized$=new e;sheetColumnReordered$=new e;sheetCellDialogEdit$=new e;sheetCellInputEdit$=new e;sheetCellEditing$=new e;sheetCellInvalidValue$=new e;projectTimeline$=new e;linkAdded$=new e;linkRemoved$=new e;tasksPasted$=new e;undone$=new e;redone$=new e;constructor(e){this.#T.add(e.taskDblClick$.subscribe(e=>{this.taskDblClick$.next(e)})),this.#T.add(e.taskContextMenu$.subscribe(e=>{this.taskContextMenu$.next(e)})),this.#T.add(e.chartContextMenu$.subscribe(e=>{this.chartContextMenu$.next(e)})),this.#T.add(e.sheetRowContextMenu$.subscribe(e=>{this.sheetRowContextMenu$.next(e)})),this.#T.add(e.sheetColumnHeaderContextMenu$.subscribe(e=>{this.sheetColumnHeaderContextMenu$.next(e)})),this.#T.add(e.sheetColumnResized$.subscribe(e=>{this.sheetColumnResized$.next(e)})),this.#T.add(e.sheetColumnReordered$.subscribe(e=>{this.sheetColumnReordered$.next(e)})),this.#T.add(e.sheetCellDialogEdit$.subscribe(e=>{this.sheetCellDialogEdit$.next(e)})),this.#T.add(e.sheetCellInputEdit$.subscribe(e=>{this.sheetCellInputEdit$.next(e)})),this.#T.add(e.sheetCellEditing$.subscribe(e=>{this.sheetCellEditing$.next(e)})),this.#T.add(e.sheetCellInvalidValue$.subscribe(()=>{this.sheetCellInvalidValue$.next()})),this.#T.add(e.list.taskAdded$.subscribe(e=>{this.taskAdded$.next(e)})),this.#T.add(e.list.taskChanged$.subscribe(e=>{this.taskChanged$.next(e)})),this.#T.add(e.list.taskRemoved$.subscribe(e=>{this.taskRemoved$.next(e)})),this.#T.add(e.list.linkAdded$.subscribe(e=>{this.linkAdded$.next(e)})),this.#T.add(e.list.linkRemoved$.subscribe(e=>{this.linkRemoved$.next(e)})),this.#T.add(e.projectTimeline$.subscribe(e=>{this.projectTimeline$.next(e)}))}destroy(){this.#T.unsubscribe()}}class Ks{ctx;#io;get currencySymbol(){return this.#io}set currencySymbol(e){e!=this.#io&&(this.#io=e,this.#f())}#so;get currencySymbolDisplayMode(){return this.#so}set currencySymbolDisplayMode(e){e!=this.#so&&(this.#so=e,this.#f())}get locale(){return this.ctx.locale$.getValue()}set locale(e){this.ctx.locale$.next(e),this.#f()}get theme(){return this.ctx.theme$.getValue()}set theme(e){this.ctx.theme$.next(e),this.#f()}changed$=new e;constructor(e){this.ctx=e,this.#io="$",this.#so="beforeAmountWithSpace"}#f(){this.changed$.next()}}const Zs=Ns,Gs={language:"cs-CZ",columns:{name:"Název",length:"Délka",start:"Začátek",end:"Konec",progress:"Průběh",resources:"Zdroje",work:"Práce",cost:"Náklady"},columnTooltips:{work:"Pracovní dny nebo hodiny přidělené tomuto úkolu. Vypočítáno automaticky při přiřazení jednoho nebo více zdrojů.",cost:"Náklady vypočítané automaticky při přiřazení jednoho nebo více zdrojů."},tooltips:{addTask:"Přidat úkol",addTaskPart:"Přidat část úkolu",moveTask:"Přesunout úkol",moveTaskPart:"Přesunout část úkolu",resizeTask:"Změnit velikost úkolu",resizeTaskPart:"Změnit velikost části úkolu",moveMilestone:"Přesunout milník",setProgress:"Nastavit průběh",addLink:"Přidat vazbu"},labels:{start:"Začátek",end:"Konec",length:"Délka",progress:"Průběh",from:"Od",to:"Do",type:"Typ",lag:"Prodleva"},constraints:{asap:"Co nejdříve",alap:"Co nejpozději",mso:"Musí začít v",mfo:"Musí skončit v",snet:"Začít ne dříve než",snlt:"Začít ne později než",fnet:"Skončit ne dříve než",fnlt:"Skončit ne později než"},linkTypes:{finishToStart:"Konec → Začátek",startToStart:"Začátek → Začátek",finishToFinish:"Konec → Konec",startToFinish:"Začátek → Konec"},warnings:{behindSchedule:"Úkol je pozadu za plánem",behindScheduleByOneDay:"o jeden den",behindScheduleByDays:e=>`o ${e} dní`,constraintViolation:(e,t)=>`Úkol porušuje omezení '${e} ${t}'`},export:{tasksSheetName:"Úkoly",linksSheetName:"Vazby",resourcesSheetName:"Zdroje",eventsSheetName:"Události",calendarsSheetName:"Kalendáře"},scheduler:{resource:"Zdroj",name:"Název",type:"Typ",addEvent:"Přidat událost",moveEvent:"Přesunout událost",resizeEvent:"Změnit velikost události"},calendar:{today:"Dnes",month:"Měsíc",week:"Týden",day:"Den",agenda:"Agenda",allDay:"celý den",noEvents:"Žádné události",more:e=>`+${e} dalších`,myCalendars:"Moje kalendáře",addCalendar:"Přidat kalendář",ariaCalendar:"Kalendář událostí",ariaSidebar:"Postranní panel kalendáře",ariaNavigation:"Navigace",ariaViewMode:"Režim zobrazení",ariaGoToToday:"Přejít na dnešek",ariaPrevious:"Předchozí",ariaNext:"Další",ariaAllDayEvents:"Celodenní události",ariaCalendarGrid:"Mřížka kalendáře",ariaSelectMonthYear:"Vybrat měsíc a rok",ariaToggleCalendar:e=>`Zobrazit nebo skrýt ${e}`,ariaRemoveCalendar:e=>`Odebrat ${e}`,ariaMoreEvents:e=>`${e} dalších událostí`}},qs={language:"de-DE",columns:{name:"Name",length:"Dauer",start:"Anfang",end:"Ende",progress:"Fortschritt",resources:"Ressourcen",work:"Arbeit",cost:"Kosten"},columnTooltips:{work:"Arbeitstage oder -stunden für diese Aufgabe. Wird automatisch berechnet, wenn eine oder mehrere Ressourcen zugewiesen sind.",cost:"Kosten werden automatisch berechnet, wenn eine oder mehrere Ressourcen zugewiesen sind."},tooltips:{addTask:"Aufgabe hinzufügen",addTaskPart:"Aufgabenteil hinzufügen",moveTask:"Aufgabe verschieben",moveTaskPart:"Aufgabenteil verschieben",resizeTask:"Aufgabe skalieren",resizeTaskPart:"Aufgabenteil skalieren",moveMilestone:"Meilenstein verschieben",setProgress:"Fortschritt festlegen",addLink:"Verknüpfung hinzufügen"},labels:{start:"Anfang",end:"Ende",length:"Dauer",progress:"Fortschritt",from:"Von",to:"Nach",type:"Typ",lag:"Verzögerung"},constraints:{asap:"So früh wie möglich",alap:"So spät wie möglich",mso:"Muss anfangen am",mfo:"Muss enden am",snet:"Anfang nicht früher als",snlt:"Anfang nicht später als",fnet:"Ende nicht früher als",fnlt:"Ende nicht später als"},linkTypes:{finishToStart:"Ende → Anfang",startToStart:"Anfang → Anfang",finishToFinish:"Ende → Ende",startToFinish:"Anfang → Ende"},warnings:{behindSchedule:"Die Aufgabe ist im Verzug",behindScheduleByOneDay:"um einen Tag",behindScheduleByDays:e=>`um ${e} Tage`,constraintViolation:(e,t)=>`Aufgabe verletzt Einschränkung '${e} ${t}'`},export:{tasksSheetName:"Aufgaben",linksSheetName:"Verknüpfungen",resourcesSheetName:"Ressourcen",eventsSheetName:"Ereignisse",calendarsSheetName:"Kalender"},scheduler:{resource:"Ressource",name:"Name",type:"Typ",addEvent:"Ereignis hinzufügen",moveEvent:"Ereignis verschieben",resizeEvent:"Ereignisgröße ändern"},calendar:{today:"Heute",month:"Monat",week:"Woche",day:"Tag",agenda:"Agenda",allDay:"Ganztägig",noEvents:"Keine Ereignisse",more:e=>`+${e} weitere`,myCalendars:"Meine Kalender",addCalendar:"Kalender hinzufügen",ariaCalendar:"Terminkalender",ariaSidebar:"Kalender-Seitenleiste",ariaNavigation:"Navigation",ariaViewMode:"Ansichtsmodus",ariaGoToToday:"Gehe zu heute",ariaPrevious:"Zurück",ariaNext:"Weiter",ariaAllDayEvents:"Ganztägige Termine",ariaCalendarGrid:"Kalenderraster",ariaSelectMonthYear:"Monat und Jahr auswählen",ariaToggleCalendar:e=>`${e} ein-/ausblenden`,ariaRemoveCalendar:e=>`${e} entfernen`,ariaMoreEvents:e=>`${e} weitere Termine`}},_s={language:"es-ES",columns:{name:"Nombre",length:"Duración",start:"Inicio",end:"Fin",progress:"Progreso",resources:"Recursos",work:"Trabajo",cost:"Costo"},columnTooltips:{work:"Días u horas de trabajo asignados a esta tarea. Se calcula automáticamente cuando se asignan uno o más recursos.",cost:"Costo calculado automáticamente cuando se asignan uno o más recursos."},tooltips:{addTask:"Agregar tarea",addTaskPart:"Agregar parte de tarea",moveTask:"Mover tarea",moveTaskPart:"Mover parte de tarea",resizeTask:"Redimensionar tarea",resizeTaskPart:"Redimensionar parte de tarea",moveMilestone:"Mover hito",setProgress:"Establecer progreso",addLink:"Agregar vínculo"},labels:{start:"Inicio",end:"Fin",length:"Duración",progress:"Progreso",from:"Desde",to:"Hasta",type:"Tipo",lag:"Retardo"},constraints:{asap:"Lo antes posible",alap:"Lo más tarde posible",mso:"Debe comenzar el",mfo:"Debe finalizar el",snet:"No comenzar antes del",snlt:"No comenzar después del",fnet:"No finalizar antes del",fnlt:"No finalizar después del"},linkTypes:{finishToStart:"Fin → Inicio",startToStart:"Inicio → Inicio",finishToFinish:"Fin → Fin",startToFinish:"Inicio → Fin"},warnings:{behindSchedule:"La tarea está retrasada",behindScheduleByOneDay:"por un día",behindScheduleByDays:e=>`por ${e} días`,constraintViolation:(e,t)=>`La tarea viola la restricción '${e} ${t}'`},export:{tasksSheetName:"Tareas",linksSheetName:"Vínculos",resourcesSheetName:"Recursos",eventsSheetName:"Eventos",calendarsSheetName:"Calendarios"},scheduler:{resource:"Recurso",name:"Nombre",type:"Tipo",addEvent:"Añadir evento",moveEvent:"Mover evento",resizeEvent:"Redimensionar evento"},calendar:{today:"Hoy",month:"Mes",week:"Semana",day:"Día",agenda:"Agenda",allDay:"Todo el día",noEvents:"Sin eventos",more:e=>`+${e} más`,myCalendars:"Mis calendarios",addCalendar:"Añadir calendario",ariaCalendar:"Calendario de eventos",ariaSidebar:"Panel lateral del calendario",ariaNavigation:"Navegación",ariaViewMode:"Modo de vista",ariaGoToToday:"Ir a hoy",ariaPrevious:"Anterior",ariaNext:"Siguiente",ariaAllDayEvents:"Eventos de todo el día",ariaCalendarGrid:"Cuadrícula del calendario",ariaSelectMonthYear:"Seleccionar mes y año",ariaToggleCalendar:e=>`Mostrar u ocultar ${e}`,ariaRemoveCalendar:e=>`Eliminar ${e}`,ariaMoreEvents:e=>`${e} eventos más`}},Js={language:"fr-FR",columns:{name:"Nom",length:"Durée",start:"Début",end:"Fin",progress:"Avancement",resources:"Ressources",work:"Travail",cost:"Coût"},columnTooltips:{work:"Jours ou heures de travail alloués à cette tâche. Calculé automatiquement lorsqu'une ou plusieurs ressources sont affectées.",cost:"Coût calculé automatiquement lorsqu'une ou plusieurs ressources sont affectées."},tooltips:{addTask:"Ajouter une tâche",addTaskPart:"Ajouter une partie de tâche",moveTask:"Déplacer la tâche",moveTaskPart:"Déplacer la partie de tâche",resizeTask:"Redimensionner la tâche",resizeTaskPart:"Redimensionner la partie de tâche",moveMilestone:"Déplacer le jalon",setProgress:"Définir l'avancement",addLink:"Ajouter un lien"},labels:{start:"Début",end:"Fin",length:"Durée",progress:"Avancement",from:"De",to:"À",type:"Type",lag:"Décalage"},constraints:{asap:"Dès que possible",alap:"Le plus tard possible",mso:"Doit commencer le",mfo:"Doit finir le",snet:"Début au plus tôt le",snlt:"Début au plus tard le",fnet:"Fin au plus tôt le",fnlt:"Fin au plus tard le"},linkTypes:{finishToStart:"Fin → Début",startToStart:"Début → Début",finishToFinish:"Fin → Fin",startToFinish:"Début → Fin"},warnings:{behindSchedule:"La tâche est en retard",behindScheduleByOneDay:"d'un jour",behindScheduleByDays:e=>`de ${e} jours`,constraintViolation:(e,t)=>`La tâche viole la contrainte '${e} ${t}'`},export:{tasksSheetName:"Tâches",linksSheetName:"Liens",resourcesSheetName:"Ressources",eventsSheetName:"Événements",calendarsSheetName:"Calendriers"},scheduler:{resource:"Ressource",name:"Nom",type:"Type",addEvent:"Ajouter un événement",moveEvent:"Déplacer l'événement",resizeEvent:"Redimensionner l'événement"},calendar:{today:"Aujourd'hui",month:"Mois",week:"Semaine",day:"Jour",agenda:"Agenda",allDay:"Journée",noEvents:"Aucun événement",more:e=>`+${e} de plus`,myCalendars:"Mes agendas",addCalendar:"Ajouter un agenda",ariaCalendar:"Calendrier d'événements",ariaSidebar:"Panneau latéral du calendrier",ariaNavigation:"Navigation",ariaViewMode:"Mode d'affichage",ariaGoToToday:"Aller à aujourd'hui",ariaPrevious:"Précédent",ariaNext:"Suivant",ariaAllDayEvents:"Événements toute la journée",ariaCalendarGrid:"Grille du calendrier",ariaSelectMonthYear:"Sélectionner mois et année",ariaToggleCalendar:e=>`Afficher ou masquer ${e}`,ariaRemoveCalendar:e=>`Supprimer ${e}`,ariaMoreEvents:e=>`${e} événements de plus`}},Qs={language:"it-IT",columns:{name:"Nome",length:"Durata",start:"Inizio",end:"Fine",progress:"Avanzamento",resources:"Risorse",work:"Lavoro",cost:"Costo"},columnTooltips:{work:"Giorni o ore di lavoro assegnati a questa attività. Calcolato automaticamente quando vengono assegnate una o più risorse.",cost:"Costo calcolato automaticamente quando vengono assegnate una o più risorse."},tooltips:{addTask:"Aggiungi attività",addTaskPart:"Aggiungi parte dell'attività",moveTask:"Sposta attività",moveTaskPart:"Sposta parte dell'attività",resizeTask:"Ridimensiona attività",resizeTaskPart:"Ridimensiona parte dell'attività",moveMilestone:"Sposta milestone",setProgress:"Imposta avanzamento",addLink:"Aggiungi collegamento"},labels:{start:"Inizio",end:"Fine",length:"Durata",progress:"Avanzamento",from:"Da",to:"A",type:"Tipo",lag:"Ritardo"},constraints:{asap:"Il prima possibile",alap:"Il più tardi possibile",mso:"Deve iniziare il",mfo:"Deve finire il",snet:"Non iniziare prima del",snlt:"Non iniziare dopo il",fnet:"Non finire prima del",fnlt:"Non finire dopo il"},linkTypes:{finishToStart:"Fine → Inizio",startToStart:"Inizio → Inizio",finishToFinish:"Fine → Fine",startToFinish:"Inizio → Fine"},warnings:{behindSchedule:"L'attività è in ritardo",behindScheduleByOneDay:"di un giorno",behindScheduleByDays:e=>`di ${e} giorni`,constraintViolation:(e,t)=>`L'attività viola il vincolo '${e} ${t}'`},export:{tasksSheetName:"Attività",linksSheetName:"Collegamenti",resourcesSheetName:"Risorse",eventsSheetName:"Eventi",calendarsSheetName:"Calendari"},scheduler:{resource:"Risorsa",name:"Nome",type:"Tipo",addEvent:"Aggiungi evento",moveEvent:"Sposta evento",resizeEvent:"Ridimensiona evento"},calendar:{today:"Oggi",month:"Mese",week:"Settimana",day:"Giorno",agenda:"Agenda",allDay:"Tutto il giorno",noEvents:"Nessun evento",more:e=>`+${e} altri`,myCalendars:"I miei calendari",addCalendar:"Aggiungi calendario",ariaCalendar:"Calendario eventi",ariaSidebar:"Pannello laterale del calendario",ariaNavigation:"Navigazione",ariaViewMode:"Modalità di visualizzazione",ariaGoToToday:"Vai a oggi",ariaPrevious:"Precedente",ariaNext:"Successivo",ariaAllDayEvents:"Eventi per tutto il giorno",ariaCalendarGrid:"Griglia del calendario",ariaSelectMonthYear:"Seleziona mese e anno",ariaToggleCalendar:e=>`Mostra o nascondi ${e}`,ariaRemoveCalendar:e=>`Rimuovi ${e}`,ariaMoreEvents:e=>`altri ${e} eventi`}},en={language:"ja-JP",columns:{name:"タスク名",length:"期間",start:"開始日",end:"終了日",progress:"進捗",resources:"リソース",work:"作業量",cost:"コスト"},columnTooltips:{work:"このタスクに割り当てられた作業日数または時間。リソースが割り当てられると自動的に計算されます。",cost:"リソースが割り当てられると自動的に計算されるコスト。"},tooltips:{addTask:"タスクを追加",addTaskPart:"タスク部分を追加",moveTask:"タスクを移動",moveTaskPart:"タスク部分を移動",resizeTask:"タスクのサイズを変更",resizeTaskPart:"タスク部分のサイズを変更",moveMilestone:"マイルストーンを移動",setProgress:"進捗を設定",addLink:"リンクを追加"},labels:{start:"開始",end:"終了",length:"期間",progress:"進捗",from:"開始タスク",to:"終了タスク",type:"種類",lag:"ラグ"},constraints:{asap:"できるだけ早く",alap:"できるだけ遅く",mso:"指定日に開始",mfo:"指定日に終了",snet:"指定日以降に開始",snlt:"指定日までに開始",fnet:"指定日以降に終了",fnlt:"指定日までに終了"},linkTypes:{finishToStart:"終了 → 開始",startToStart:"開始 → 開始",finishToFinish:"終了 → 終了",startToFinish:"開始 → 終了"},warnings:{behindSchedule:"タスクが遅延しています",behindScheduleByOneDay:"1日",behindScheduleByDays:e=>`${e}日`,constraintViolation:(e,t)=>`タスクが制約「${e} ${t}」に違反しています`},export:{tasksSheetName:"タスク",linksSheetName:"リンク",resourcesSheetName:"リソース",eventsSheetName:"イベント",calendarsSheetName:"カレンダー"},scheduler:{resource:"リソース",name:"名前",type:"タイプ",addEvent:"イベントを追加",moveEvent:"イベントを移動",resizeEvent:"イベントのサイズ変更"},calendar:{today:"今日",month:"月",week:"週",day:"日",agenda:"アジェンダ",allDay:"終日",noEvents:"イベントはありません",more:e=>`他${e}件`,myCalendars:"マイカレンダー",addCalendar:"カレンダーを追加",ariaCalendar:"イベントカレンダー",ariaSidebar:"カレンダーサイドバー",ariaNavigation:"ナビゲーション",ariaViewMode:"表示モード",ariaGoToToday:"今日に移動",ariaPrevious:"前へ",ariaNext:"次へ",ariaAllDayEvents:"終日イベント",ariaCalendarGrid:"カレンダーグリッド",ariaSelectMonthYear:"月と年を選択",ariaToggleCalendar:e=>`${e}の表示切替`,ariaRemoveCalendar:e=>`${e}を削除`,ariaMoreEvents:e=>`他${e}件のイベント`}},tn={language:"ko-KR",columns:{name:"작업명",length:"기간",start:"시작일",end:"종료일",progress:"진행률",resources:"자원",work:"작업량",cost:"비용"},columnTooltips:{work:"이 작업에 할당된 작업 일수 또는 시간. 하나 이상의 자원이 배정되면 자동으로 계산됩니다.",cost:"하나 이상의 자원이 배정되면 자동으로 계산되는 비용."},tooltips:{addTask:"작업 추가",addTaskPart:"작업 부분 추가",moveTask:"작업 이동",moveTaskPart:"작업 부분 이동",resizeTask:"작업 크기 조정",resizeTaskPart:"작업 부분 크기 조정",moveMilestone:"마일스톤 이동",setProgress:"진행률 설정",addLink:"링크 추가"},labels:{start:"시작",end:"종료",length:"기간",progress:"진행률",from:"시작 작업",to:"종료 작업",type:"유형",lag:"지연"},constraints:{asap:"가능한 빨리",alap:"가능한 늦게",mso:"지정일에 시작",mfo:"지정일에 완료",snet:"지정일 이후 시작",snlt:"지정일 이전 시작",fnet:"지정일 이후 완료",fnlt:"지정일 이전 완료"},linkTypes:{finishToStart:"완료 → 시작",startToStart:"시작 → 시작",finishToFinish:"완료 → 완료",startToFinish:"시작 → 완료"},warnings:{behindSchedule:"작업이 지연되고 있습니다",behindScheduleByOneDay:"1일",behindScheduleByDays:e=>`${e}일`,constraintViolation:(e,t)=>`작업이 제약 조건 '${e} ${t}'을(를) 위반합니다`},export:{tasksSheetName:"작업",linksSheetName:"링크",resourcesSheetName:"자원",eventsSheetName:"이벤트",calendarsSheetName:"캘린더"},scheduler:{resource:"자원",name:"이름",type:"유형",addEvent:"이벤트 추가",moveEvent:"이벤트 이동",resizeEvent:"이벤트 크기 조정"},calendar:{today:"오늘",month:"월",week:"주",day:"일",agenda:"일정",allDay:"종일",noEvents:"일정 없음",more:e=>`+${e}개 더보기`,myCalendars:"내 캘린더",addCalendar:"캘린더 추가",ariaCalendar:"이벤트 캘린더",ariaSidebar:"캘린더 사이드바",ariaNavigation:"탐색",ariaViewMode:"보기 모드",ariaGoToToday:"오늘로 이동",ariaPrevious:"이전",ariaNext:"다음",ariaAllDayEvents:"종일 이벤트",ariaCalendarGrid:"캘린더 격자",ariaSelectMonthYear:"월 및 연도 선택",ariaToggleCalendar:e=>`${e} 표시/숨기기`,ariaRemoveCalendar:e=>`${e} 삭제`,ariaMoreEvents:e=>`${e}개 더 많은 이벤트`}},rn={language:"nl-NL",columns:{name:"Naam",length:"Duur",start:"Start",end:"Einde",progress:"Voortgang",resources:"Resources",work:"Werk",cost:"Kosten"},columnTooltips:{work:"Werkdagen of -uren voor deze taak. Wordt automatisch berekend wanneer een of meer resources zijn toegewezen.",cost:"Kosten worden automatisch berekend wanneer een of meer resources zijn toegewezen."},tooltips:{addTask:"Taak toevoegen",addTaskPart:"Taakonderdeel toevoegen",moveTask:"Taak verplaatsen",moveTaskPart:"Taakonderdeel verplaatsen",resizeTask:"Taak schalen",resizeTaskPart:"Taakonderdeel schalen",moveMilestone:"Mijlpaal verplaatsen",setProgress:"Voortgang instellen",addLink:"Koppeling toevoegen"},labels:{start:"Start",end:"Einde",length:"Duur",progress:"Voortgang",from:"Van",to:"Naar",type:"Type",lag:"Vertraging"},constraints:{asap:"Zo snel mogelijk",alap:"Zo laat mogelijk",mso:"Moet starten op",mfo:"Moet eindigen op",snet:"Start niet eerder dan",snlt:"Start niet later dan",fnet:"Einde niet eerder dan",fnlt:"Einde niet later dan"},linkTypes:{finishToStart:"Einde → Start",startToStart:"Start → Start",finishToFinish:"Einde → Einde",startToFinish:"Start → Einde"},warnings:{behindSchedule:"De taak loopt achter op schema",behindScheduleByOneDay:"met één dag",behindScheduleByDays:e=>`met ${e} dagen`,constraintViolation:(e,t)=>`Taak schendt beperking '${e} ${t}'`},export:{tasksSheetName:"Taken",linksSheetName:"Koppelingen",resourcesSheetName:"Resources",eventsSheetName:"Evenementen",calendarsSheetName:"Agenda's"},scheduler:{resource:"Resource",name:"Naam",type:"Type",addEvent:"Gebeurtenis toevoegen",moveEvent:"Gebeurtenis verplaatsen",resizeEvent:"Gebeurtenis formaat wijzigen"},calendar:{today:"Vandaag",month:"Maand",week:"Week",day:"Dag",agenda:"Agenda",allDay:"Hele dag",noEvents:"Geen evenementen",more:e=>`+${e} meer`,myCalendars:"Mijn agenda's",addCalendar:"Agenda toevoegen",ariaCalendar:"Evenementenagenda",ariaSidebar:"Zijpaneel agenda",ariaNavigation:"Navigatie",ariaViewMode:"Weergavemodus",ariaGoToToday:"Ga naar vandaag",ariaPrevious:"Vorige",ariaNext:"Volgende",ariaAllDayEvents:"Hele dag evenementen",ariaCalendarGrid:"Agendaraster",ariaSelectMonthYear:"Maand en jaar selecteren",ariaToggleCalendar:e=>`${e} tonen of verbergen`,ariaRemoveCalendar:e=>`${e} verwijderen`,ariaMoreEvents:e=>`${e} meer evenementen`}},sn={language:"pl-PL",columns:{name:"Nazwa",length:"Czas trwania",start:"Początek",end:"Koniec",progress:"Postęp",resources:"Zasoby",work:"Praca",cost:"Koszt"},columnTooltips:{work:"Dni lub godziny pracy przydzielone do tego zadania. Obliczane automatycznie po przypisaniu zasobów.",cost:"Koszt obliczany automatycznie po przypisaniu zasobów."},tooltips:{addTask:"Dodaj zadanie",addTaskPart:"Dodaj część zadania",moveTask:"Przenieś zadanie",moveTaskPart:"Przenieś część zadania",resizeTask:"Zmień rozmiar zadania",resizeTaskPart:"Zmień rozmiar części zadania",moveMilestone:"Przenieś kamień milowy",setProgress:"Ustaw postęp",addLink:"Dodaj powiązanie"},labels:{start:"Początek",end:"Koniec",length:"Czas trwania",progress:"Postęp",from:"Od",to:"Do",type:"Typ",lag:"Opóźnienie"},constraints:{asap:"Jak najwcześniej",alap:"Jak najpóźniej",mso:"Musi się rozpocząć",mfo:"Musi się zakończyć",snet:"Początek nie wcześniej niż",snlt:"Początek nie później niż",fnet:"Koniec nie wcześniej niż",fnlt:"Koniec nie później niż"},linkTypes:{finishToStart:"Koniec → Początek",startToStart:"Początek → Początek",finishToFinish:"Koniec → Koniec",startToFinish:"Początek → Koniec"},warnings:{behindSchedule:"Zadanie jest opóźnione",behindScheduleByOneDay:"o jeden dzień",behindScheduleByDays:e=>`o ${e} dni`,constraintViolation:(e,t)=>`Zadanie narusza ograniczenie '${e} ${t}'`},export:{tasksSheetName:"Zadania",linksSheetName:"Powiązania",resourcesSheetName:"Zasoby",eventsSheetName:"Zdarzenia",calendarsSheetName:"Kalendarze"},scheduler:{resource:"Zasób",name:"Nazwa",type:"Typ",addEvent:"Dodaj wydarzenie",moveEvent:"Przenieś wydarzenie",resizeEvent:"Zmień rozmiar wydarzenia"},calendar:{today:"Dzisiaj",month:"Miesiąc",week:"Tydzień",day:"Dzień",agenda:"Agenda",allDay:"Cały dzień",noEvents:"Brak wydarzeń",more:e=>`+${e} więcej`,myCalendars:"Moje kalendarze",addCalendar:"Dodaj kalendarz",ariaCalendar:"Kalendarz wydarzeń",ariaSidebar:"Panel boczny kalendarza",ariaNavigation:"Nawigacja",ariaViewMode:"Tryb widoku",ariaGoToToday:"Przejdź do dzisiaj",ariaPrevious:"Poprzedni",ariaNext:"Następny",ariaAllDayEvents:"Wydarzenia całodniowe",ariaCalendarGrid:"Siatka kalendarza",ariaSelectMonthYear:"Wybierz miesiąc i rok",ariaToggleCalendar:e=>`Pokaż lub ukryj ${e}`,ariaRemoveCalendar:e=>`Usuń ${e}`,ariaMoreEvents:e=>`jeszcze ${e} wydarzeń`}},nn={language:"pt",columns:{name:"Nome",length:"Duração",start:"Início",end:"Fim",progress:"Progresso",resources:"Recursos",work:"Trabalho",cost:"Custo"},columnTooltips:{work:"Dias ou horas de trabalho alocados a esta tarefa. Calculado automaticamente quando um ou mais recursos são atribuídos.",cost:"Custo calculado automaticamente quando um ou mais recursos são atribuídos."},tooltips:{addTask:"Adicionar tarefa",addTaskPart:"Adicionar parte da tarefa",moveTask:"Mover tarefa",moveTaskPart:"Mover parte da tarefa",resizeTask:"Redimensionar tarefa",resizeTaskPart:"Redimensionar parte da tarefa",moveMilestone:"Mover marco",setProgress:"Definir progresso",addLink:"Adicionar ligação"},labels:{start:"Início",end:"Fim",length:"Duração",progress:"Progresso",from:"De",to:"Para",type:"Tipo",lag:"Atraso"},constraints:{asap:"O mais cedo possível",alap:"O mais tarde possível",mso:"Deve iniciar em",mfo:"Deve terminar em",snet:"Não iniciar antes de",snlt:"Não iniciar depois de",fnet:"Não terminar antes de",fnlt:"Não terminar depois de"},linkTypes:{finishToStart:"Fim → Início",startToStart:"Início → Início",finishToFinish:"Fim → Fim",startToFinish:"Início → Fim"},warnings:{behindSchedule:"A tarefa está atrasada",behindScheduleByOneDay:"um dia",behindScheduleByDays:e=>`${e} dias`,constraintViolation:(e,t)=>`A tarefa viola a restrição '${e} ${t}'`},export:{tasksSheetName:"Tarefas",linksSheetName:"Ligações",resourcesSheetName:"Recursos",eventsSheetName:"Eventos",calendarsSheetName:"Calendários"},scheduler:{resource:"Recurso",name:"Nome",type:"Tipo",addEvent:"Adicionar evento",moveEvent:"Mover evento",resizeEvent:"Redimensionar evento"},calendar:{today:"Hoje",month:"Mês",week:"Semana",day:"Dia",agenda:"Agenda",allDay:"Dia inteiro",noEvents:"Sem eventos",more:e=>`+${e} mais`,myCalendars:"Meus calendários",addCalendar:"Adicionar calendário",ariaCalendar:"Calendário de eventos",ariaSidebar:"Painel lateral do calendário",ariaNavigation:"Navegação",ariaViewMode:"Modo de visualização",ariaGoToToday:"Ir para hoje",ariaPrevious:"Anterior",ariaNext:"Próximo",ariaAllDayEvents:"Eventos de dia inteiro",ariaCalendarGrid:"Grade do calendário",ariaSelectMonthYear:"Selecionar mês e ano",ariaToggleCalendar:e=>`Mostrar ou ocultar ${e}`,ariaRemoveCalendar:e=>`Remover ${e}`,ariaMoreEvents:e=>`mais ${e} eventos`}},an={language:"ru-RU",columns:{name:"Название",length:"Длительность",start:"Начало",end:"Окончание",progress:"Прогресс",resources:"Ресурсы",work:"Трудозатраты",cost:"Стоимость"},columnTooltips:{work:"Рабочие дни или часы, выделенные на задачу. Рассчитываются автоматически при назначении ресурсов.",cost:"Стоимость рассчитывается автоматически при назначении ресурсов."},tooltips:{addTask:"Добавить задачу",addTaskPart:"Добавить часть задачи",moveTask:"Переместить задачу",moveTaskPart:"Переместить часть задачи",resizeTask:"Изменить размер задачи",resizeTaskPart:"Изменить размер части задачи",moveMilestone:"Переместить веху",setProgress:"Установить прогресс",addLink:"Добавить связь"},labels:{start:"Начало",end:"Окончание",length:"Длительность",progress:"Прогресс",from:"От",to:"До",type:"Тип",lag:"Задержка"},constraints:{asap:"Как можно раньше",alap:"Как можно позже",mso:"Начало не ранее",mfo:"Окончание не ранее",snet:"Начало не раньше чем",snlt:"Начало не позже чем",fnet:"Окончание не раньше чем",fnlt:"Окончание не позже чем"},linkTypes:{finishToStart:"Окончание → Начало",startToStart:"Начало → Начало",finishToFinish:"Окончание → Окончание",startToFinish:"Начало → Окончание"},warnings:{behindSchedule:"Задача отстаёт от графика",behindScheduleByOneDay:"на один день",behindScheduleByDays:e=>`на ${e} дн.`,constraintViolation:(e,t)=>`Задача нарушает ограничение '${e} ${t}'`},export:{tasksSheetName:"Задачи",linksSheetName:"Связи",resourcesSheetName:"Ресурсы",eventsSheetName:"События",calendarsSheetName:"Календари"},scheduler:{resource:"Ресурс",name:"Имя",type:"Тип",addEvent:"Добавить событие",moveEvent:"Переместить событие",resizeEvent:"Изменить размер события"},calendar:{today:"Сегодня",month:"Месяц",week:"Неделя",day:"День",agenda:"Повестка",allDay:"Весь день",noEvents:"Нет событий",more:e=>`ещё ${e}`,myCalendars:"Мои календари",addCalendar:"Добавить календарь",ariaCalendar:"Календарь событий",ariaSidebar:"Боковая панель календаря",ariaNavigation:"Навигация",ariaViewMode:"Режим просмотра",ariaGoToToday:"Перейти к сегодня",ariaPrevious:"Назад",ariaNext:"Вперёд",ariaAllDayEvents:"События на весь день",ariaCalendarGrid:"Сетка календаря",ariaSelectMonthYear:"Выбрать месяц и год",ariaToggleCalendar:e=>`Показать или скрыть ${e}`,ariaRemoveCalendar:e=>`Удалить ${e}`,ariaMoreEvents:e=>`ещё ${e} событий`}},on={language:"sv-SE",columns:{name:"Namn",length:"Varaktighet",start:"Start",end:"Slut",progress:"Förlopp",resources:"Resurser",work:"Arbete",cost:"Kostnad"},columnTooltips:{work:"Arbetsdagar eller timmar för denna uppgift. Beräknas automatiskt när en eller flera resurser är tilldelade.",cost:"Kostnad beräknas automatiskt när en eller flera resurser är tilldelade."},tooltips:{addTask:"Lägg till uppgift",addTaskPart:"Lägg till uppgiftsdel",moveTask:"Flytta uppgift",moveTaskPart:"Flytta uppgiftsdel",resizeTask:"Ändra storlek på uppgift",resizeTaskPart:"Ändra storlek på uppgiftsdel",moveMilestone:"Flytta milstolpe",setProgress:"Ange förlopp",addLink:"Lägg till koppling"},labels:{start:"Start",end:"Slut",length:"Varaktighet",progress:"Förlopp",from:"Från",to:"Till",type:"Typ",lag:"Fördröjning"},constraints:{asap:"Så snart som möjligt",alap:"Så sent som möjligt",mso:"Måste starta den",mfo:"Måste sluta den",snet:"Start inte tidigare än",snlt:"Start inte senare än",fnet:"Slut inte tidigare än",fnlt:"Slut inte senare än"},linkTypes:{finishToStart:"Slut → Start",startToStart:"Start → Start",finishToFinish:"Slut → Slut",startToFinish:"Start → Slut"},warnings:{behindSchedule:"Uppgiften ligger efter schemat",behindScheduleByOneDay:"med en dag",behindScheduleByDays:e=>`med ${e} dagar`,constraintViolation:(e,t)=>`Uppgiften bryter mot begränsningen '${e} ${t}'`},export:{tasksSheetName:"Uppgifter",linksSheetName:"Kopplingar",resourcesSheetName:"Resurser",eventsSheetName:"Händelser",calendarsSheetName:"Kalendrar"},scheduler:{resource:"Resurs",name:"Namn",type:"Typ",addEvent:"Lägg till händelse",moveEvent:"Flytta händelse",resizeEvent:"Ändra storlek på händelse"},calendar:{today:"Idag",month:"Månad",week:"Vecka",day:"Dag",agenda:"Agenda",allDay:"Heldag",noEvents:"Inga händelser",more:e=>`+${e} fler`,myCalendars:"Mina kalendrar",addCalendar:"Lägg till kalender",ariaCalendar:"Händelsekalender",ariaSidebar:"Sidopanel för kalender",ariaNavigation:"Navigering",ariaViewMode:"Visningsläge",ariaGoToToday:"Gå till idag",ariaPrevious:"Föregående",ariaNext:"Nästa",ariaAllDayEvents:"Heldagshändelser",ariaCalendarGrid:"Kalenderrutnät",ariaSelectMonthYear:"Välj månad och år",ariaToggleCalendar:e=>`Visa eller dölj ${e}`,ariaRemoveCalendar:e=>`Ta bort ${e}`,ariaMoreEvents:e=>`${e} fler händelser`}},ln={language:"zh-CN",columns:{name:"任务名称",length:"工期",start:"开始日期",end:"结束日期",progress:"进度",resources:"资源",work:"工时",cost:"成本"},columnTooltips:{work:"分配给此任务的工作天数或小时数。分配一个或多个资源后自动计算。",cost:"分配一个或多个资源后自动计算的成本。"},tooltips:{addTask:"添加任务",addTaskPart:"添加任务部分",moveTask:"移动任务",moveTaskPart:"移动任务部分",resizeTask:"调整任务大小",resizeTaskPart:"调整任务部分大小",moveMilestone:"移动里程碑",setProgress:"设置进度",addLink:"添加链接"},labels:{start:"开始",end:"结束",length:"工期",progress:"进度",from:"从",to:"到",type:"类型",lag:"延迟"},constraints:{asap:"尽早",alap:"尽晚",mso:"必须开始于",mfo:"必须完成于",snet:"不早于…开始",snlt:"不晚于…开始",fnet:"不早于…完成",fnlt:"不晚于…完成"},linkTypes:{finishToStart:"完成 → 开始",startToStart:"开始 → 开始",finishToFinish:"完成 → 完成",startToFinish:"开始 → 完成"},warnings:{behindSchedule:"任务已延迟",behindScheduleByOneDay:"1天",behindScheduleByDays:e=>`${e}天`,constraintViolation:(e,t)=>`任务违反约束"${e} ${t}"`},export:{tasksSheetName:"任务",linksSheetName:"链接",resourcesSheetName:"资源",eventsSheetName:"事件",calendarsSheetName:"日历"},scheduler:{resource:"资源",name:"名称",type:"类型",addEvent:"添加事件",moveEvent:"移动事件",resizeEvent:"调整事件大小"},calendar:{today:"今天",month:"月",week:"周",day:"日",agenda:"日程",allDay:"全天",noEvents:"无事件",more:e=>`还有${e}项`,myCalendars:"我的日历",addCalendar:"添加日历",ariaCalendar:"事件日历",ariaSidebar:"日历侧边栏",ariaNavigation:"导航",ariaViewMode:"视图模式",ariaGoToToday:"转到今天",ariaPrevious:"上一个",ariaNext:"下一个",ariaAllDayEvents:"全天事件",ariaCalendarGrid:"日历网格",ariaSelectMonthYear:"选择月份和年份",ariaToggleCalendar:e=>`显示或隐藏${e}`,ariaRemoveCalendar:e=>`移除${e}`,ariaMoreEvents:e=>`还有${e}个事件`}},hn={criticalPath:e=>e.isCritical,incomplete:e=>(e.progress??0)<100,complete:e=>100===e.progress,behindSchedule:e=>{if("task"!==e.type||!e.endTime)return!1;var t=new Date;return e.endTime.getTime()<t.getTime()&&(e.progress??0)<100},milestones:e=>"milestone"===e.type,byResource:e=>t=>null!==t.getResourceByResourceId(e.id),byDateRange:(e,t)=>{var r=e.getTime(),i=t.getTime();return e=>!(!e.startTime||!e.endTime)&&(e.startTime.getTime()<=i&&e.endTime.getTime()>=r)},byName:e=>{var t=e.toLowerCase();return e=>e.name?.toLowerCase().includes(t)??!1},combine:(...e)=>t=>e.every(e=>e(t))};class dn extends ti{constructor(){super()}}class cn extends ti{constructor(){super(),this.chart.content.taskProgressHeight=5,this.chart.content.milestoneBorderColor="#606060",this.chart.content.milestoneColor1="#909090",this.chart.content.milestoneColor2="#909090",this.chart.content.summaryColor1="#d0d0d0",this.chart.content.summaryColor2="#d0d0d0",this.chart.content.summaryProgressColor1="#a0a0a0",this.chart.content.summaryProgressColor2="#a0a0a0",this.chart.content.summaryBorderColor="#606060",this.chart.content.summaryMarkColor1="#d0d0d0",this.chart.content.summaryMarkColor2="#d0d0d0",this.chart.content.summaryMarkProgressColor1="#a0a0a0",this.chart.content.summaryMarkProgressColor2="#a0a0a0",this.chart.content.summaryMarkType="full";var e={progressColor1:"#606060",progressColor2:"#606060",progressHighlightColor:"rgba(100, 100, 100, 0.5)"};this.chart.content.taskColors=[Jr.create({borderColor:"#4455dd",color1:"#a0b0ff",color2:"#a0b0ff",...e}),Jr.create({borderColor:"#cc8888",color1:"#ffcccc",color2:"#ffcccc",...e,separatorColor:"#cc7777",linkLineColor:"#cc7777",linkArrowColor:"#cc7777"}),Jr.create({borderColor:"#77bb77",color1:"#bbeebb",color2:"#bbeebb",...e,separatorColor:"#55aa55",linkLineColor:"#55aa55",linkArrowColor:"#55aa55"}),Jr.create({borderColor:"#dddd88",color1:"#f8f8aa",color2:"#f8f8aa",...e,separatorColor:"#cccc66",linkLineColor:"#cccc66",linkArrowColor:"#cccc66"}),Jr.create({borderColor:"#aa88cc",color1:"#ddbbff",color2:"#ddbbff",...e,separatorColor:"#aa77cc",linkLineColor:"#aa77cc",linkArrowColor:"#aa77cc"}),Jr.create({borderColor:"#ddaa77",color1:"#ffd8a8",color2:"#ffd8a8",...e,separatorColor:"#cc9966",linkLineColor:"#cc9966",linkArrowColor:"#cc9966"}),Jr.create({borderColor:"#66bbbb",color1:"#a8e8e8",color2:"#a8e8e8",...e,separatorColor:"#55aaaa",linkLineColor:"#55aaaa",linkArrowColor:"#55aaaa"}),Jr.create({borderColor:"#dd88aa",color1:"#ffbbdd",color2:"#ffbbdd",...e,separatorColor:"#cc7799",linkLineColor:"#cc7799",linkArrowColor:"#cc7799"})]}}class un extends ti{constructor(){super(),this.sheet.header.backgroundColor="#252526",this.sheet.header.cellBorderColor="#3c3c3c",this.sheet.header.cellDividerColor="#333333",this.sheet.header.textColor="#d4d4d4",this.sheet.backgroundColor="#1e1e1e",this.sheet.textColor="#d4d4d4",this.sheet.hoverBackgroundColor="#2a2d2e",this.sheet.selectedBackgroundColor="#2a2d2e",this.sheet.selectedRowHeaderColor="#3c3c3c",this.sheet.focusBorderColor="#007acc",this.sheet.highlightBorderColor="#264f78",this.sheet.treeIconColor="#999999",this.sheet.editorBackgroundColor="#1e1e1e",this.sheet.editorTextColor="#d4d4d4",this.sheet.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.sheet.scrollbarTrackColor="transparent",this.sheet.gridLineColor="#343434",this.sheet.colorScheme="dark",this.chart.header.backgroundColor="#252526",this.chart.header.cellBorderColor="#3c3c3c",this.chart.header.cellDividerColor="#333333",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#d4d4d4",this.chart.content.backgroundColor="#1e1e1e",this.chart.content.taskBorderRadius=4,this.chart.content.linkLineStyle="rounded",this.chart.content.gridLineColor="#343434",this.chart.content.tier2SeparatorLineStyle="#444444",this.chart.content.nonWorkingTimeStyle="#181818",this.chart.content.summaryColor1="#707070",this.chart.content.summaryColor2="#585858",this.chart.content.summaryMarkColor1="#707070",this.chart.content.summaryMarkColor2="#585858",this.chart.content.summaryProgressColor1="#888888",this.chart.content.summaryProgressColor2="#707070",this.chart.content.summaryMarkProgressColor1="#888888",this.chart.content.summaryMarkProgressColor2="#707070",this.chart.content.summaryBorderColor="#686868",this.chart.content.summaryHighlightColor="rgba(180, 180, 180, 0.3)",this.chart.content.milestoneColor1="#888888",this.chart.content.milestoneColor2="#6a6a6a",this.chart.content.milestoneBorderColor="#787878",this.chart.content.milestoneHighlightColor="rgba(180, 180, 180, 0.4)",this.chart.content.linkFromMilestoneLineColor="#808080",this.chart.content.linkFromMilestoneArrowColor="#808080",this.chart.content.connectorDotColor="#007acc",this.chart.content.connectorDotBorderColor="#0098ff",this.chart.content.connectorDotHoverColor="#0098ff",this.chart.content.baselineColor="#585858",this.chart.content.criticalTaskBorderColor="#f14c4c",this.chart.content.criticalMilestoneBorderColor="#f14c4c",this.chart.content.criticalSummaryBorderColor="#f14c4c",this.chart.content.tooltipTextColor="#d4d4d4",this.chart.content.tooltipBackgroundColor1="#252526",this.chart.content.tooltipBackgroundColor2="#1e1e1e",this.chart.content.tooltipBorderColor="#3c3c3c",this.chart.content.todayLineColor="#aaaaaa",this.chart.content.markerLineColor="#aaaaaa",this.chart.content.markerLabelColor="#aaaaaa",this.chart.content.taskLabelColor="#d4d4d4",this.chart.content.summaryLabelColor="#d4d4d4",this.chart.content.milestoneLabelColor="#d4d4d4",this.chart.content.taskColors=[Jr.create({color1:"#7b90d8",color2:"#5a72c0",highlightColor:"rgba(123, 144, 216, 0.4)",progressColor1:"#4a60a8",progressColor2:"#3a4e90",progressHighlightColor:"rgba(123, 144, 216, 0.4)",separatorColor:"#4258a0",linkLineColor:"#5a72c0",linkArrowColor:"#5a72c0"}),Jr.create({color1:"#e09090",color2:"#c06868",highlightColor:"rgba(224, 144, 144, 0.4)",progressColor1:"#b05858",progressColor2:"#904848",progressHighlightColor:"rgba(224, 144, 144, 0.4)",separatorColor:"#a05050",linkLineColor:"#c06868",linkArrowColor:"#c06868"}),Jr.create({color1:"#80c080",color2:"#60a060",highlightColor:"rgba(128, 192, 128, 0.4)",progressColor1:"#509050",progressColor2:"#407840",progressHighlightColor:"rgba(128, 192, 128, 0.4)",separatorColor:"#488848",linkLineColor:"#60a060",linkArrowColor:"#60a060"}),Jr.create({color1:"#e0c070",color2:"#c0a050",highlightColor:"rgba(224, 192, 112, 0.4)",progressColor1:"#b09040",progressColor2:"#907830",progressHighlightColor:"rgba(224, 192, 112, 0.4)",separatorColor:"#a08838",linkLineColor:"#c0a050",linkArrowColor:"#c0a050"}),Jr.create({color1:"#9070b0",color2:"#705890",highlightColor:"rgba(144, 112, 176, 0.4)",progressColor1:"#604878",progressColor2:"#503868",progressHighlightColor:"rgba(144, 112, 176, 0.4)",separatorColor:"#685080",linkLineColor:"#705890",linkArrowColor:"#705890"}),Jr.create({color1:"#c08850",color2:"#a07040",highlightColor:"rgba(192, 136, 80, 0.4)",progressColor1:"#906030",progressColor2:"#785028",progressHighlightColor:"rgba(192, 136, 80, 0.4)",separatorColor:"#986838",linkLineColor:"#a07040",linkArrowColor:"#a07040"}),Jr.create({color1:"#508888",color2:"#407070",highlightColor:"rgba(80, 136, 136, 0.4)",progressColor1:"#306060",progressColor2:"#285050",progressHighlightColor:"rgba(80, 136, 136, 0.4)",separatorColor:"#386868",linkLineColor:"#407070",linkArrowColor:"#407070"}),Jr.create({color1:"#b06888",color2:"#904868",highlightColor:"rgba(176, 104, 136, 0.4)",progressColor1:"#803858",progressColor2:"#682848",progressHighlightColor:"rgba(176, 104, 136, 0.4)",separatorColor:"#884060",linkLineColor:"#904868",linkArrowColor:"#904868"})]}}class gn extends _r{constructor(){super(),this.rowHeight=38,this.sheet.header.backgroundColor="#ffffff",this.sheet.header.cellBorderColor="#e8e8e8",this.sheet.header.cellDividerColor="#f0f0f0",this.sheet.header.textColor="#555555",this.sheet.gridLineColor="#f2f2f2",this.sheet.scrollbarThumbColor="#d8d8d8",this.chart.header.backgroundColor="#ffffff",this.chart.header.cellBorderColor="#e8e8e8",this.chart.header.cellDividerColor="#f0f0f0",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#555555",this.chart.content.taskHeight=22,this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#f2f2f2",this.chart.content.tier2SeparatorLineStyle="#e8e8e8",this.chart.content.nonWorkingTimeStyle="#fafafa"}}class mn extends _r{constructor(){super(),this.rowHeight=38,this.sheet.header.backgroundColor="#252526",this.sheet.header.cellBorderColor="#3c3c3c",this.sheet.header.cellDividerColor="#333333",this.sheet.header.textColor="#d4d4d4",this.sheet.backgroundColor="#1e1e1e",this.sheet.textColor="#d4d4d4",this.sheet.hoverBackgroundColor="#2a2d2e",this.sheet.selectedBackgroundColor="#2a2d2e",this.sheet.selectedRowHeaderColor="#3c3c3c",this.sheet.focusBorderColor="#007acc",this.sheet.highlightBorderColor="#264f78",this.sheet.treeIconColor="#999999",this.sheet.editorBackgroundColor="#1e1e1e",this.sheet.editorTextColor="#d4d4d4",this.sheet.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.sheet.scrollbarTrackColor="transparent",this.sheet.gridLineColor="#343434",this.sheet.colorScheme="dark",this.chart.header.backgroundColor="#252526",this.chart.header.cellBorderColor="#3c3c3c",this.chart.header.cellDividerColor="#333333",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#d4d4d4",this.chart.content.backgroundColor="#1e1e1e",this.chart.content.taskHeight=22,this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#343434",this.chart.content.tier2SeparatorLineStyle="#444444",this.chart.content.nonWorkingTimeStyle="#181818",this.chart.content.tooltipTextColor="#d4d4d4",this.chart.content.tooltipBackgroundColor1="#252526",this.chart.content.tooltipBackgroundColor2="#1e1e1e",this.chart.content.tooltipBorderColor="#3c3c3c",this.chart.content.todayLineColor="#aaaaaa",this.chart.content.markerLineColor="#aaaaaa",this.chart.content.markerLabelColor="#aaaaaa",this.chart.content.taskLabelColor="#d4d4d4",this.chart.content.taskColors=[jr.create({color1:"#7b90d8",color2:"#5a72c0",highlightColor:"rgba(123, 144, 216, 0.4)"}),jr.create({color1:"#e09090",color2:"#c06868",highlightColor:"rgba(224, 144, 144, 0.4)"}),jr.create({color1:"#80c080",color2:"#60a060",highlightColor:"rgba(128, 192, 128, 0.4)"}),jr.create({color1:"#e0c070",color2:"#c0a050",highlightColor:"rgba(224, 192, 112, 0.4)"}),jr.create({color1:"#9070b0",color2:"#705890",highlightColor:"rgba(144, 112, 176, 0.4)"}),jr.create({color1:"#c08850",color2:"#a07040",highlightColor:"rgba(192, 136, 80, 0.4)"}),jr.create({color1:"#508888",color2:"#407070",highlightColor:"rgba(80, 136, 136, 0.4)"}),jr.create({color1:"#b06888",color2:"#904868",highlightColor:"rgba(176, 104, 136, 0.4)"})]}}class pn extends _r{constructor(){super(),this.rowHeight=38,this.chart.content.taskHeight=22}}class vn extends _r{constructor(){super(),this.rowHeight=38,this.chart.content.taskHeight=22,this.chart.content.taskColors=[jr.create({borderColor:"#4455dd",color1:"#a0b0ff",color2:"#a0b0ff"}),jr.create({borderColor:"#cc8888",color1:"#ffcccc",color2:"#ffcccc"}),jr.create({borderColor:"#77bb77",color1:"#bbeebb",color2:"#bbeebb"}),jr.create({borderColor:"#dddd88",color1:"#f8f8aa",color2:"#f8f8aa"}),jr.create({borderColor:"#aa88cc",color1:"#ddbbff",color2:"#ddbbff"}),jr.create({borderColor:"#ddaa77",color1:"#ffd8a8",color2:"#ffd8a8"}),jr.create({borderColor:"#66bbbb",color1:"#a8e8e8",color2:"#a8e8e8"}),jr.create({borderColor:"#dd88aa",color1:"#ffbbdd",color2:"#ffbbdd"})]}}class fn{#Y=[];#qa=[];#de=new Map;#no=new Map;#ao=new Set;#oo=new Map;#Ye=null;resourceAdded$=new e;resourceChanged$=new e;resourceRemoved$=new e;eventAdded$=new e;eventChanged$=new e;eventRemoved$=new e;frozenChanged$=new e;filterChanged$=new e;complexOperationFinished$=new e;get resourcesLength(){return this.#Y.length}getResource(e){return this.#Y[e]}getResourceById(e){return this.#Y.find(t=>t.id===e)??null}indexOfResource(e){return this.#Y.indexOf(e)}get filter(){return this.#Ye}set filter(e){this.#Ye=e,this.#Ge()}#Ge(){var e=this.#Ye;for(var t of this.#Y)t.filtered=!!e&&!e(t);this.filterChanged$.next()}addResource(e){if(this.getResourceById(e.id))throw new Error(`SchedulerData.addResource: resource with id "${e.id}" already exists`);this.#Y.push(e),this.#lo(e),this.resourceAdded$.next({resource:e})}insertResource(e,t){if(e<0||e>this.#Y.length)throw new RangeError(`SchedulerData.insertResource: index ${e} out of range [0, ${this.#Y.length}]`);if(this.getResourceById(t.id))throw new Error(`SchedulerData.insertResource: resource with id "${t.id}" already exists`);this.#Y.splice(e,0,t),this.#lo(t),this.resourceAdded$.next({resource:t})}removeResource(e){var t=this.#Y.indexOf(e);if(t>=0){this.#Y.splice(t,1),this.#ho(e),this.#ao.delete(e.id);var r=this.#qa.filter(t=>t.resourceId===e.id);for(var i of r)this.removeEvent(i);this.resourceRemoved$.next({resource:e})}}moveResource(e,t){var r=this.#Y.indexOf(e);r<0||r===t||(this.#Y.splice(r,1),t>r&&t--,this.#Y.splice(t,0,e),this.complexOperationFinished$.next())}removeResources(e){for(var t of e)this.removeResource(t);this.complexOperationFinished$.next()}sortResources(e){this.#Y.sort(e),this.complexOperationFinished$.next()}assignResources(e){for(var t of this.#de.values())t.unsubscribe();for(var r of(this.#de.clear(),this.#ao.clear(),this.#Y=[...e],this.#Y))this.#lo(r);this.complexOperationFinished$.next()}#lo(e){var t=e.changed$.subscribe(e=>this.resourceChanged$.next(e));this.#de.set(e.id,t)}#ho(e){var t=this.#de.get(e.id);t&&(t.unsubscribe(),this.#de.delete(e.id))}freezeResource(e){this.#ao.has(e.id)||(this.#ao.add(e.id),this.frozenChanged$.next(),this.complexOperationFinished$.next())}unfreezeResource(e){this.#ao.has(e.id)&&(this.#ao.delete(e.id),this.frozenChanged$.next(),this.complexOperationFinished$.next())}isResourceFrozen(e){return this.#ao.has(e.id)}get frozenResourceIds(){return this.#ao}get frozenResourcesCount(){var e=0;for(var t of this.#Y)this.#ao.has(t.id)&&e++;return e}get orderedResources(){var e=[],t=[];for(var r of this.#Y)r.filtered||(this.#ao.has(r.id)?e.push(r):t.push(r));return e.concat(t)}orderedIndexOf(e){return this.orderedResources.indexOf(e)}get eventsLength(){return this.#qa.length}getEvent(e){return this.#qa[e]}getEventById(e){return this.#qa.find(t=>t.id===e)??null}getEventsForResource(e){return this.#qa.filter(t=>t.resourceId===e)}addEvent(e){if(e.startTime.getTime()>=e.endTime.getTime())throw new Error("SchedulerData.addEvent: startTime must be before endTime");if(!this.getResourceById(e.resourceId))throw new Error(`SchedulerData.addEvent: resource "${e.resourceId}" not found`);if(this.getEventById(e.id))throw new Error(`SchedulerData.addEvent: event with id "${e.id}" already exists`);this.#qa.push(e),this.#do(e),this.#oo.delete(e.resourceId),this.eventAdded$.next({event:e})}removeEvent(e){var t=this.#qa.indexOf(e);t>=0&&(this.#qa.splice(t,1),this.#co(e),this.#oo.delete(e.resourceId),this.eventRemoved$.next({event:e}))}assignEvents(e){for(var t of this.#no.values())t.unsubscribe();for(var r of(this.#no.clear(),this.#oo.clear(),this.#qa=[...e],this.#qa))this.#do(r);this.complexOperationFinished$.next()}#do(e){var t=e.changed$.subscribe(e=>{this.#oo.clear(),this.eventChanged$.next(e)});this.#no.set(e.id,t)}#co(e){var t=this.#no.get(e.id);t&&(t.unsubscribe(),this.#no.delete(e.id))}getEventColor(e){if(null!==e.color)return e.color;var t=this.getResourceById(e.resourceId);return t&&null!==t.color?t.color:t?this.orderedIndexOf(t):0}#uo(e){var t=this.#oo.get(e);if(t)return t;var r=this.getEventsForResource(e);r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime());var i=[],s=new Map;for(var n of r){for(var a=n.startTime.getTime(),o=!1,l=0;l<i.length;l++)if(a>=i[l]){i[l]=n.endTime.getTime(),s.set(n.id,l),o=!0;break}o||(i.push(n.endTime.getTime()),s.set(n.id,i.length-1))}var h={laneCount:Math.max(1,i.length),eventLanes:s};return this.#oo.set(e,h),h}getLaneCount(e){return this.#uo(e).laneCount}getEventLane(e){return this.#uo(e.resourceId).eventLanes.get(e.id)??0}getOverlappingEvents(e,t,r,i){var s=t.getTime(),n=r.getTime(),a=[];for(var o of this.#qa)o.resourceId===e&&(i&&o.id===i||o.startTime.getTime()<n&&o.endTime.getTime()>s&&a.push(o));return a}hasConflict(e){return this.getOverlappingEvents(e.resourceId,e.startTime,e.endTime,e.id).length>0}get minStartTime(){var e=null;for(var t of this.#qa)(!e||t.startTime.getTime()<e.getTime())&&(e=t.startTime);return e}get maxEndTime(){var e=null;for(var t of this.#qa)(!e||t.endTime.getTime()>e.getTime())&&(e=t.endTime);return e}}const yn={Person:"person",Room:"room",Equipment:"equipment",Vehicle:"vehicle"};class bn{#m;get id(){return this.#m}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#M=null;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#go=null;get avatarUrl(){return this.#go}set avatarUrl(e){e!=this.#go&&(this.#go=e,this.#f())}#O=null;get type(){return this.#O}set type(e){e!=this.#O&&(this.#O=e,this.#f())}#ke=!1;get filtered(){return this.#ke}set filtered(e){this.#ke=e}#ae;changed$=new e;constructor(e,t){this.#b=t,this.#m=e??er(30),this.#ae=new lr(()=>this.#f())}#f(){this.changed$.next({resource:this})}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){return{id:this.#m,name:this.#b,color:this.#M,avatarUrl:this.#go,type:this.#O,properties:this.#ae.hasProperties?this.#ae.serializeProperties():void 0}}static fromAny(e){if(void 0===e.name||null===e.name)throw new Error("SchedulerResource.fromAny: missing name");var t=new bn(e.id,e.name);return t.color=e.color??null,t.avatarUrl=e.avatarUrl??null,t.type=e.type??null,e.properties&&t.#ae.loadProperties(e.properties),t}}class wn{#mo;#T=new r;itemChanged$=new e;itemRemoved$=new e;complexOperationFinished$;constructor(e){this.#mo=e,this.#T.add(e.resourceChanged$.subscribe(e=>{this.itemChanged$.next({item:e.resource})})),this.#T.add(e.resourceRemoved$.subscribe(e=>{this.itemRemoved$.next({item:e.resource})})),this.complexOperationFinished$=e.complexOperationFinished$}destroy(){this.#T.unsubscribe()}get length(){return this.#mo.orderedResources.length}getItem(e){return this.#mo.orderedResources[e]}getItemById(e){var t=this.#mo.getResourceById(e);return t&&!t.filtered?t:null}indexOf(e){return this.#mo.orderedIndexOf(e)}getItemLabel(e){var t=this.indexOf(e);return t>=0?(t+1).toString():""}getNextVisible(e){var t=this.indexOf(e);return t>=0&&t<this.length-1?this.getItem(t+1):null}getPreviousVisible(e){var t=this.indexOf(e);return t>0?this.getItem(t-1):null}addEmptyItem(){var e=new bn(null,"New Resource");return this.#mo.addResource(e),e}insertEmptyItem(e){var t=new bn(null,"New Resource");return this.#mo.insertResource(e,t),t}removeItems(e){this.#mo.removeResources(e)}}class Tn{#wt;constructor(e){this.#wt=e}get ctx(){return this.#wt}getRowY(e){return this.#wt.getRowY(e)}getContentBottom(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=t;for(var s of r)i+=this.#wt.getRowHeight(s);return Math.min(i,e)}drawRowHighlight(e,t,r,i){e.beginPath(),e.rect(0,r,t,i),e.fillStyle="rgba(0, 0, 0, 0.02)",e.fill()}}class Cn extends Tn{#$t;constructor(e){super(e),this.#$t=new Lr(e)}render(e){this.#$t.render(e)}}class xn extends Tr{#wt;constructor(e){super(e),this.#wt=e}getContentBottom(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=t;for(var s of r)i+=this.#wt.getRowHeight(s);return Math.min(i,e)}drawHorizontalGridLines(e,t){for(var r=this.#wt.theme$.getValue(),i=r.chart.content.gridLineColor,s=this.#wt.data.orderedResources,n=0;n<s.length;n++){var a=s[n],o=this.#wt.getRowY(a),l=Math.floor(o)-.5;t.beginPath(),t.moveTo(0,l),t.lineTo(e.width,l),t.strokeStyle=i,t.stroke()}if(s.length>0){var h=s[s.length-1],d=Math.floor(this.#wt.getRowY(h)+this.#wt.getRowHeight(h))-.5;t.beginPath(),t.moveTo(0,d),t.lineTo(e.width,d),t.strokeStyle=i,t.stroke()}if(this.#wt.data.frozenResourcesCount>0){var c=Math.floor(this.#wt.frozenSectionBottom)-.5;t.beginPath(),t.moveTo(0,c),t.lineTo(e.width,c),t.strokeStyle=r.chart.content.gridLineColor,t.lineWidth=2,t.stroke(),t.lineWidth=1}}}class kn extends Tn{#wt;constructor(e){super(e),this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.data.frozenResourcesCount,i=this.#wt.frozenSectionBottom,s=this.#wt.theme$.getValue().contentTop;t.save(),t.beginPath(),t.rect(0,i,e.width,e.height-i),t.clip(),this.#ai(e,t),this.#po(e,t,!1),this.#vo(e,t),t.restore(),r>0&&(t.save(),t.beginPath(),t.rect(0,s,e.width,i-s),t.clip(),this.#ai(e,t),this.#po(e,t,!0),this.#vo(e,t),t.restore())}#ai(e,t){var r=this.#wt.selectedResources$.getValue();if(0!==r.length)for(var i of r)this.drawRowHighlight(t,e.width,this.getRowY(i),this.#wt.getRowHeight(i))}#vo(e,t){var r=this.#wt.sheetRowMouseOver$.getValue();r&&this.drawRowHighlight(t,e.width,this.getRowY(r.resource),this.#wt.getRowHeight(r.resource))}#po(e,t,r){for(var i=this.#wt.theme$.getValue(),s=this.#wt.timeline.currentZoom,n=s.axis[0],a=this.#wt.timeline.visibleStartTime$.getValue(),o=i.chart.content.taskHeight,l=i.chart.content.taskBorderRadius,h=this.#wt.data.orderedResources,d=this.#wt.selectedEvents$.getValue(),c=new Set(d.map(e=>e.id)),u=this.#wt.eventRendering$.getValue(),g=0;g<h.length;g++){var m=h[g];if(r===this.#wt.data.isResourceFrozen(m)){var p=this.#wt.data.getEventsForResource(m.id);for(var v of p){var f=Math.floor(n.getX(v.startTime,a,s)),y=Math.floor(n.getX(v.endTime,a,s));if(!(y<0||f>e.width)){var b=this.#wt.data.getEventColor(v),w=this.#wt.getEventY(m,v),T=new kr(f,w,y-f,o),C=c.has(v.id);if(u)if(u({event:v,resource:m,rect:T,ctx:t,isSelected:C,color:b}))continue;this.#fo(t,v,T,b,l,i)}}}}}#fo(e,t,r,i,s,n){var a=Xr(i,n.chart.content.taskColors);if(function(e,t,r,i,s=0){e.beginPath(),mi(e,t,s),e.fillStyle=gi(e,t,r,i),e.fill()}(e,r,a.color1,a.color2,s),a.borderColor&&pi(e,r,a.borderColor,s),t.name&&r.width>20){var o=n.font.clone();o.size=n.chart.content.taskLabelFont.size,function(e,t,r,i,s,n=4){!t||r.width<=2*n||(e.save(),e.beginPath(),e.rect(r.x,r.y,r.width,r.height),e.clip(),e.font=i,Rr(e,t,new kr(r.x+n,r.y,r.width-2*n,r.height),"left",0,s),e.restore())}(e,t.name,r,o.toString(1),"#ffffff")}}}class En extends Tn{#Li;constructor(e){super(e),this.#Li=new Di(e,e=>this.getContentBottom(e.height))}render(e){this.#Li.render(e)}}const Dn={[yn.Person]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="4"/><path d="M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1"/></svg>',[yn.Room]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z"/><path d="M14 12h.01"/></svg>',[yn.Equipment]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>',[yn.Vehicle]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2"/><circle cx="7" cy="17" r="2"/><path d="M9 17h6"/><circle cx="17" cy="17" r="2"/></svg>'};class Sn extends Hi{redraw(e,t,r){e.innerText="",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center";var i=document.createElement("span");if(i.classList.add("resource-icon"),i.style.display="inline-flex",i.style.alignItems="center",i.style.justifyContent="center",i.style.flexShrink="0",i.style.width="26px",i.style.height="26px",i.style.minWidth="26px",r.avatarUrl)i.style.borderRadius="50%",i.style.backgroundImage=`url(${r.avatarUrl})`,i.style.backgroundSize="cover",i.style.backgroundPosition="center";else{i.style.color="#999";var s=r.type||yn.Person;i.innerHTML=Dn[s]??'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"/><path d="m3.3 7 8.7 5 8.7-5"/><path d="M12 22V12"/></svg>'}e.appendChild(i)}}const $n=26;var Rn=new Map;function Mn(e){return function(e){return new Promise((t,r)=>{var i=new Image;i.crossOrigin="anonymous",i.onload=()=>t(i),i.onerror=r,i.src=e})}(e).then(t=>{Rn.set(e,t)},()=>{Rn.delete(e)})}function Ln(e,t,r,i,s,n){if(t.avatarUrl){var a=Rn.get(t.avatarUrl);if(a)return void function(e,t,r,i,s,n){var a=r+s/2,o=i+n/2,l=13;e.save(),e.beginPath(),e.arc(a,o,l,0,2*Math.PI),e.closePath(),e.clip(),e.drawImage(t,a-l,o-l,$n,$n),e.restore()}(e,a,r,i,s,n)}var o=r+(s-22)/2,l=i+(n-22)/2,h=22/24;e.save(),e.translate(o,l),e.scale(h,h),e.strokeStyle="#999",e.lineWidth=1.8,e.lineCap="round",e.lineJoin="round",function(e,t){switch(t){case yn.Person:e.beginPath(),e.arc(12,8,4,0,2*Math.PI),e.stroke(),e.stroke(new Path2D("M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1"));break;case yn.Room:e.stroke(new Path2D("M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z")),e.beginPath(),e.moveTo(14,12),e.lineTo(14.01,12),e.stroke();break;case yn.Equipment:e.stroke(new Path2D("M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"));break;case yn.Vehicle:e.stroke(new Path2D("M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2")),e.beginPath(),e.arc(7,17,2,0,2*Math.PI),e.stroke(),e.beginPath(),e.moveTo(9,17),e.lineTo(15,17),e.stroke(),e.beginPath(),e.arc(17,17,2,0,2*Math.PI),e.stroke();break;default:e.stroke(new Path2D("M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z")),e.stroke(new Path2D("M3.3 7l8.7 5 8.7-5")),e.beginPath(),e.moveTo(12,22),e.lineTo(12,12),e.stroke()}}(e,t.type||yn.Person),e.restore()}class In extends Ls{#wt;#pa;constructor(e,t){super(),this.#wt=e,this.#pa=t}get theme(){return this.#wt.theme$.getValue()}async preload(){await function(e){Rn=new Map;var t=[];for(var r of e){var i=r.avatarUrl;i&&!Rn.has(i)&&(Rn.set(i,null),t.push(Mn(i)))}return t.length>0?Promise.all(t).then(()=>{}):Promise.resolve()}(this.#wt.data.orderedResources)}calculateDimensions(){var e=this.calculateChartLayout(this.#wt.timeline,this.#pa,this.#wt.data.minStartTime,this.#wt.data.maxEndTime,this.#wt.projectTimeline$.getValue()),t=this.#wt.data.orderedResources,r=[],i=0;for(var s of t){var n=this.#wt.getRowHeight(s);r.push(n),i+=n}var a=e.headerHeight+i;return{visibleColumns:e.visibleColumns,sheetWidth:e.sheetWidth,chartWidth:e.chartWidth,chartStart:e.chartStart,headerHeight:e.headerHeight,totalHeight:a,rowHeights:r}}renderSheetRows(e,t){for(var r=this.theme,i=this.#wt.data.orderedResources,s=t.headerHeight,n=0;n<i.length;n++){var a=i[n],o=this.#wt.getRowHeight(a),l=0;for(var h of(Rr(e,(n+1).toString(),new kr(l+5,s,30,o),"center",0,"#808080"),l+=Cs,t.visibleColumns)){if(h.exportCellRenderer)h.exportCellRenderer(e,a,l+5,s,h.width,o);else{var d=h.valueFormatter(a),c="left";"center"===h.align&&(c="center"),"right"===h.align&&(c="right"),d&&Rr(e,d,new kr(l+5,s,h.width,o),c,0,r.sheet.textColor)}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(l-.5,s),e.lineTo(l-.5,s+o),e.stroke(),l+=h.width+Ts}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(0,s+o-.5),e.lineTo(t.sheetWidth,s+o-.5),e.stroke(),s+=o}}renderChart(e,t,r,i=1){Ms(e,t,r,i,this.theme,this.#wt.timeline.visibleStartTime$,this.#wt.scrollTop$,new Cn(this.#wt),[new xn(this.#wt),new En(this.#wt),new kn(this.#wt)])}}class Pn extends Ps{constructor(e,t){super(new In(e,t),"scheduler")}}class An{#wt;constructor(e){this.#wt=e}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.includeResources??!1,s=this.#wt.locale$.getValue(),n=[];r&&n.push(Es([s.scheduler.resource,s.columns.name,s.labels.start,s.labels.end],t));var a=this.#wt.data.orderedResources;for(var o of a){var l=this.#yo(o.id);for(var h of l)n.push(Es([o.name,h.name,this.#bo(h.startTime),this.#bo(h.endTime)],t))}var d=n.join("\n");if(i)for(var o of(d+="\n\n",r&&(d+=Es([s.columns.name,s.labels.type],t)+"\n"),a))d+=Es([o.name,o.type??""],t)+"\n";return d}async exportToExcel(e){var t=await $s(),r=this.#wt.locale$.getValue(),i=e?.eventsSheetName??r.export.eventsSheetName,s=e?.includeResourcesSheet??!0,n=e?.includeFormatting??!0,a=new t.Workbook;return this.#wo(a,i,n),s&&this.#wt.data.resourcesLength>0&&this.#wa(a,n),Rs(a)}#wo(e,t,r){var i=this.#wt.locale$.getValue(),s=e.addWorksheet(t);s.columns=[{header:i.scheduler.resource,key:"resource",width:25},{header:i.columns.name,key:"name",width:30},{header:i.labels.start,key:"start",width:20},{header:i.labels.end,key:"end",width:20}],r&&Ds(s);var n=this.#wt.data.orderedResources;for(var a of n){var o=this.#yo(a.id);for(var l of o)s.addRow({resource:a.name,name:l.name,start:this.#bo(l.startTime),end:this.#bo(l.endTime)})}r&&Ss(s)}#wa(e,t){var r=this.#wt.locale$.getValue(),i=e.addWorksheet(r.export.resourcesSheetName);i.columns=[{header:r.columns.name,key:"name",width:25},{header:r.labels.type,key:"type",width:15}],t&&Ds(i);var s=this.#wt.data.orderedResources;for(var n of s)i.addRow({name:n.name,type:n.type??""});t&&Ss(i)}#yo(e){var t=this.#wt.data.getEventsForResource(e);return t.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()),t}#bo(e){return Zt(e,this.#wt.locale$.getValue().language,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}}class Hn extends Vs{constructor(e,t){super(new In(e,t),"scheduler")}computeVerticalPageBreaks(e,t,r){var i=t-r;i<=0&&(i=e.rowHeights[0]??40);for(var s=[],n=r,a=0,o=0;o<e.rowHeights.length;o++){var l=e.rowHeights[o];a>0&&a+l>i&&(s.push({srcY:n-a,height:a}),a=0),a+=l,n=r+this.#To(e.rowHeights,o+1)}return a>0&&s.push({srcY:n-a,height:a}),0===s.length&&s.push({srcY:r,height:0}),s}#To(e,t){for(var r=0,i=0;i<t&&i<e.length;i++)r+=e[i];return r}}class Vn{#m;get id(){return this.#m}#Co;get resourceId(){return this.#Co}set resourceId(e){if(!e)throw new Error("SchedulerEvent: resourceId cannot be empty");e!=this.#Co&&(this.#Co=e,this.#f())}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#l;get startTime(){return this.#l}set startTime(e){if(!(e instanceof Date)||isNaN(e.getTime()))throw new Error("SchedulerEvent: invalid startTime");e.getTime()!=this.#l.getTime()&&(this.#l=e,this.#f())}#h;get endTime(){return this.#h}set endTime(e){if(!(e instanceof Date)||isNaN(e.getTime()))throw new Error("SchedulerEvent: invalid endTime");e.getTime()!=this.#h.getTime()&&(this.#h=e,this.#f())}#M=null;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}data=void 0;#ae;changed$=new e;constructor(e,t,r,i,s){if(!t)throw new Error("SchedulerEvent: resourceId is required");if(!(i instanceof Date)||isNaN(i.getTime()))throw new Error("SchedulerEvent: invalid startTime");if(!(s instanceof Date)||isNaN(s.getTime()))throw new Error("SchedulerEvent: invalid endTime");if(i.getTime()>=s.getTime())throw new Error("SchedulerEvent: startTime must be before endTime");this.#m=e??er(30),this.#Co=t,this.#b=r,this.#l=i,this.#h=s,this.#ae=new lr(()=>this.#f())}get durationMs(){return this.#h.getTime()-this.#l.getTime()}get durationHours(){return this.durationMs/36e5}#f(){this.changed$.next({event:this})}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){return{id:this.#m,resourceId:this.#Co,name:this.#b,startTime:this.#l.toISOString(),endTime:this.#h.toISOString(),color:this.#M,properties:this.#ae.serializeProperties()}}static fromAny(e){if(!e.resourceId)throw new Error("SchedulerEvent.fromAny: missing resourceId");if(!e.startTime)throw new Error("SchedulerEvent.fromAny: missing startTime");if(!e.endTime)throw new Error("SchedulerEvent.fromAny: missing endTime");var t=new Date(e.startTime),r=new Date(e.endTime);if(isNaN(t.getTime()))throw new Error("SchedulerEvent.fromAny: invalid startTime");if(isNaN(r.getTime()))throw new Error("SchedulerEvent.fromAny: invalid endTime");var i=new Vn(e.id,e.resourceId,e.name??"",t,r);return i.color=e.color??null,e.properties&&i.#ae.loadProperties(e.properties),i}}class Bn{#mo;#xo;#ko;constructor(e,t,r){this.#mo=e,this.#xo=t,this.#ko=r}getRowHeight(e){var t=this.#xo.getValue(),r=this.#mo.getLaneCount(e.id);if(r<=1)return t.rowHeight+1;var i=t.chart.content.taskHeight,s=(t.rowHeight-i)/2;return Math.ceil(2*s+r*i+5*(r-1))+1}getEventY(e,t){var r=this.#xo.getValue(),i=r.chart.content.taskHeight,s=this.getRowY(e);if(this.#mo.getLaneCount(e.id)<=1)return s+this.getRowHeight(e)/2-i/2;var n=this.#mo.getEventLane(t);return s+(r.rowHeight-i)/2+n*(i+5)}getRowY(e){var t=this.#xo.getValue(),r=this.#mo.orderedResources,i=this.#mo.orderedIndexOf(e),s=this.#mo.frozenResourcesCount,n=t.contentTop;if(this.#mo.isResourceFrozen(e)){for(var a=n,o=0;o<i;o++)a+=this.getRowHeight(r[o]);return a}var l=0;for(o=0;o<s;o++)l+=this.getRowHeight(r[o]);var h=0;for(o=s;o<i;o++)h+=this.getRowHeight(r[o]);return n+l-this.#ko.getValue()+h}getTotalContentHeight(){var e=this.#mo.orderedResources,t=0;for(var r of e)t+=this.getRowHeight(r);return t}get frozenSectionBottom(){for(var e=this.#xo.getValue().contentTop,t=this.#mo.orderedResources,r=this.#mo.frozenResourcesCount,i=e,s=0;s<r;s++)i+=this.getRowHeight(t[s]);return i}}const Fn={[yn.Person]:"Person",[yn.Room]:"Room",[yn.Equipment]:"Equipment",[yn.Vehicle]:"Vehicle"};class zn extends Ni{#wt;constructor(e,t,r){super(t,r),this.#wt=e}getDefaultDate(){var e=this.#wt.projectTimeline$.getValue(),t=Bt();return e.startDate.getTime()>t.getTime()&&(t=new Date(e.startDate)),t}getLocale(){return this.#wt.locale$.getValue().language}}class On extends ls{#wt;#Hn=new r;#Eo=null;#Do=null;rowContextMenu$=new e;rowMouseOver$=new e;constructor(e,t){super(e.table,t),this.#wt=e,this.#So(),e.defaultSheetWidth=this.getColumnsContentWidth(),this.#Hn.add(e.locale$.subscribe(()=>{this.#$o(),this.redrawAll()})),this.#Hn.add(e.chartEventHover$.subscribe(t=>{var r=t?e.data.getResourceById(t.resourceId):null;this.setHoverItem(r)})),this.#Ro(),this.#Mo(),this.#Hn.add(this.tableContext.rowMouseOver$.subscribe(t=>{var r=t?{resource:t.item}:null;this.rowMouseOver$.next(r),e.sheetRowMouseOver$.next(r)})),this.#Hn.add(this.tableContext.rowContextMenu$.subscribe(e=>{this.rowContextMenu$.next({selectedResources:e.selectedItems,mouseEvent:e.mouseEvent})})),this.#Lo()}destroy(){this.#Hn.unsubscribe(),super.destroy()}#So(){var e=this.#wt.locale$.getValue(),t=new is("name",e.scheduler.name,e=>e.name??"",new Vi,new Oi(e=>e.name,(e,t)=>e.name=t),()=>!0,200,80);this.addColumn(t);var r=new is("icons","",()=>"",new Sn,null,()=>!1,36,36);r.exportCellRenderer=Ln,this.addColumn(r);var i=new is("type",e.scheduler.type,e=>{var t=e.type;return t?Fn[t]??t:""},new Vi,null,()=>!1,80,60);i.isVisible=!1,this.addColumn(i)}#$o(){var e=this.#wt.locale$.getValue(),t=this.getColumnByCode("name");t&&(t.name=e.scheduler.name);var r=this.getColumnByCode("type");r&&(r.name=e.scheduler.type),this.updateColumnHeaders()}getItemRowHeight(e){return this.#wt.getRowHeight(e)-1}redrawItemRow(e){super.redrawItemRow(e);var t=this.getItemRow(e);if(t){var r=this.#wt.getRowHeight(e)-1;t.style.height=r+"px",t.children[0].style.height=r+"px",this.#Io(t,e)}}#Io(e,t){var r=this.getColumns().findIndex(e=>"name"===e.code);if(!(r<0)){var i=e.children[r+1];if(i){var s=i.querySelector(".pin-icon");if(this.#wt.data.isResourceFrozen(t)){if(!s){var n=document.createElement("span");n.classList.add("pin-icon"),n.style.display="inline-flex",n.style.flexShrink="0",n.style.marginLeft="4px",n.innerHTML='<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 17v5"/><path d="M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16h14v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1h1V4H7v2h1a1 1 0 0 1 1 1z"/></svg>',i.appendChild(n)}}else s&&s.remove()}}}onComplexOperationFinished(){super.onComplexOperationFinished(),this.#Lo()}#Lo(){for(var e=this.#wt.data.orderedResources,t=0,r=0;r<e.length;r++){var i=e[r],s=this.getItemRow(i);if(s){var n=this.#wt.getRowHeight(i),a=n-1;s.style.height=a+"px",this.#wt.data.isResourceFrozen(i)?(s.style.position="sticky",s.style.top=t+"px",s.style.zIndex="3",s.classList.add("frozen"),t+=n):(s.style.position="",s.style.top="",s.style.zIndex="",s.classList.remove("frozen"))}}}#Mo(){this.#Hn.add(this.tableContext.rowAdded$.subscribe(({item:e,row:t})=>{t.addEventListener("mousedown",r=>{this.#Po(e,t,r)})})),this.addDocumentListener("mousemove",this.#Ao),this.addDocumentListener("mouseup",this.#Ho)}#Po(e,t,r){0===r.button&&this.#wt.canEdit&&!this.#wt.data.isResourceFrozen(e)&&(this.#Eo={resource:e,row:t,startX:r.clientX,startY:r.clientY})}#Ao(e){if(this.#Eo){if(!this.#Do){var t=e.clientX-this.#Eo.startX,r=e.clientY-this.#Eo.startY;Math.sqrt(t*t+r*r)>5&&(this.selection.cancelRangeSelection(),this.#Vo(this.#Eo))}this.#Do&&this.#Bo(e.clientY)}}#Ho(e){this.#Do&&this.#Fo(e.clientY),this.#Eo=null}#Vo(e){var t=e.row.cloneNode(!0);t.classList.add("reorder-ghost"),t.style.width=e.row.offsetWidth+"px",t.style.height=e.row.offsetHeight+"px",t.style.left=e.row.getBoundingClientRect().left+"px",window.document.body.appendChild(t);var r=window.document.createElement("div");r.classList.add("row-reorder-indicator"),r.style.display="none",this.rowsContainer.appendChild(r),e.row.style.opacity="0.3",this.#Do={resource:e.resource,ghost:t,indicator:r,sourceRow:e.row}}#Bo(e){var t=this.#Do;t.ghost.style.top=e-t.sourceRow.offsetHeight/2+"px";var r=this.#zo(e);if(r){var i=r.row.getBoundingClientRect(),s=e<i.top+i.height/2,n=this.rowsContainer.getBoundingClientRect(),a=(s?i.top:i.bottom)-n.top;t.indicator.style.top=a+"px",t.indicator.style.display="block"}else t.indicator.style.display="none"}#Fo(e){var t=this.#Do,r=this.#zo(e);if(r&&r.resource!==t.resource){var i=r.row.getBoundingClientRect(),s=e<i.top+i.height/2,n=this.#wt.data.indexOfResource(r.resource);s||n++,this.#wt.data.moveResource(t.resource,n)}t.ghost.remove(),t.indicator.remove(),t.sourceRow.style.opacity="",this.#Do=null}#zo(e){for(var t=this.#wt.data.orderedResources,r=this.#wt.data.frozenResourcesCount,i=r;i<t.length;i++){var s=t[i],n=this.getItemRow(s);if(n){var a=n.getBoundingClientRect();if(e>=a.top&&e<=a.bottom)return{resource:s,row:n}}}if(t.length>r){var o=t[t.length-1],l=this.getItemRow(o);if(l&&e>l.getBoundingClientRect().bottom)return{resource:o,row:l}}return null}#Ro(){this.#Hn.add(this.#wt.data.eventAdded$.subscribe(()=>this.#Oo())),this.#Hn.add(this.#wt.data.eventRemoved$.subscribe(()=>this.#Oo())),this.#Hn.add(this.#wt.data.eventChanged$.subscribe(()=>this.#Oo())),this.#Hn.add(this.#wt.data.frozenChanged$.subscribe(()=>this.#Lo())),this.#Hn.add(this.#wt.settings.changed$.subscribe(()=>{this.#$o(),this.redrawAll()})),this.#Hn.add(this.#wt.chartMouseWheel$.subscribe(e=>{e.ctrlKey||this.scrollContentVertically(e.deltaY)}))}#Oo(){var e=this.#wt.data.orderedResources;for(var t of e){var r=this.getItemRow(t);if(r){var i=this.#wt.getRowHeight(t)-1;r.style.height=i+"px",r.children[0].style.height=i+"px"}}}formatCustomDateValue(e){return Kt(e,this.#wt.locale$.getValue().language)}createCustomDateCellEditor(e,t){return new zn(this.#wt,e,t)}clearSelection(){super.clearSelection(),this.#wt.selectedResources$.next([])}}class Nn extends Ar{constructor(e,t,r,i){super(e,t,r,i,{getMinStartTime:()=>e.data.minStartTime,getMaxEndTime:()=>e.data.maxEndTime})}}class Wn extends Ur{#wt;#No;#Br;constructor(e,t,r){super(e),this.#wt=e,this.#No=t,this.#Br=r}getResourceRowAt(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=this.#wt.data.frozenResourcesCount,s=this.#wt.frozenSectionBottom;if(e.y<t)return null;if(i>0&&e.y<s){for(var n=t,a=0;a<i;a++){var o=this.#wt.getRowHeight(r[a]);if(e.y>=n&&e.y<n+o)return r[a];n+=o}return null}var l=this.#wt.scrollTop$.getValue()+e.y-s;for(n=0,a=i;a<r.length;a++){o=this.#wt.getRowHeight(r[a]);if(l>=n&&l<n+o)return r[a];n+=o}return null}getEventAt(e){var t=this.getResourceRowAt(e);if(!t)return null;var r=this.#wt.theme$.getValue().chart.content.taskHeight,i=this.#wt.data.getEventsForResource(t.id);for(var s of i){var n=this.#wt.getEventY(t,s);if(!(e.y<n||e.y>n+r)){var a=this.dateToX(s.startTime),o=this.dateToX(s.endTime);if(e.x>=a&&e.x<=o)return{event:s,resource:t,x1:a,x2:o}}}return null}drawEventHighlight(e,t,r){var i=this.#wt.data.getResourceById(e.resourceId);if(i){var s=this.#wt.theme$.getValue().chart.content.taskHeight,n=this.#wt.getEventY(i,e),a=new kr(t,n,r-t,s),o=this.#wt.data.getEventColor(e);this.#Wo(a,o)}}drawTooltip(e,t,r,i){this.#Br.drawTooltip(this.canvas,e,t,r,i)}drawHighlightForResource(e,t,r,i){var s=this.#wt.theme$.getValue().chart.content.taskHeight,n=this.#wt.getRowY(e),a=this.#wt.getRowHeight(e),o=Math.min(t,r),l=Math.max(t,r),h=new kr(o,n+a/2-s/2,l-o,s),d=i??this.#wt.data.orderedIndexOf(e);this.#Wo(h,d)}drawTooltipForResource(e,t,r,i){this.#Br.drawTooltipForResource(this.canvas,e,t,r,i)}#Wo(e,t){var r=this.#wt.theme$.getValue(),i=r.chart.content.taskBorderRadius,s=Xr(t,r.chart.content.taskColors),n=this.canvas.getContext("2d");n.globalAlpha=.5,n.beginPath(),i>0?n.roundRect(e.x,e.y,e.width,e.height,i):n.rect(e.x,e.y,e.width,e.height);var a=n.createLinearGradient(e.x,e.y,e.x,e.bottom);a.addColorStop(0,s.color1),a.addColorStop(1,s.color2),n.fillStyle=a,n.fill(),s.borderColor&&(n.beginPath(),i>0?n.roundRect(e.x,e.y,e.width,e.height,i):n.rect(e.x,e.y,e.width,e.height),n.strokeStyle=s.borderColor,n.stroke()),n.globalAlpha=1}}class Un extends Wn{#wt;#Uo=null;#jo=null;dblClick$=new e;contextMenu$=new e;constructor(e,t,r){super(e,t,r),this.ignoreRightButton=!1,this.ignoreWhenCannotEdit=!1,this.alwaysHandleEvents=!0,this.#wt=e}async onMouseDown(e,t,r){if(0!==r.button)return Wr.notHandled;var i=this.getEventAt(e);if(i){var s=this.#wt.selectedEvents$.getValue();if(t)return s.find(e=>e.id===i.event.id)?this.#wt.selectedEvents$.next(s.filter(e=>e.id!==i.event.id)):this.#wt.selectedEvents$.next([...s,i.event]),Wr.handled;if(r.shiftKey&&s.length>0){var n=s[s.length-1];if(n.resourceId===i.event.resourceId){var a=this.#wt.data.getEventsForResource(n.resourceId);a.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()||e.id.localeCompare(t.id));var o=a.findIndex(e=>e.id===n.id),l=a.findIndex(e=>e.id===i.event.id),h=Math.min(o,l),d=Math.max(o,l);this.#wt.selectedEvents$.next(a.slice(h,d+1))}else this.#wt.selectedEvents$.next([i.event]);return Wr.handled}return this.#wt.selectedEvents$.next([i.event]),Wr.notHandled}return this.#wt.selectedEvents$.getValue().length>0&&this.#wt.selectedEvents$.next([]),Wr.notHandled}async onMouseMove(e,t){this.#jo=e;var r=this.getEventAt(e),i=r?.event??null;return i!=this.#Uo&&(this.#Uo=i,this.#wt.chartEventHover$.next(i)),Wr.notHandled}async onMouseLeave(e,t){return this.#Uo=null,this.#jo=null,this.#wt.chartEventHover$.next(null),Wr.notHandled}async onKeyDown(e,t){var r=this.#wt.selectedEvents$.getValue();if(0===r.length)return Wr.notHandled;if(tr(t)&&this.canEdit){var i=[...r];for(var s of i){var n={event:s,cancel:!1};this.#wt.eventDeleting$.next(n),n.cancel||this.#wt.data.removeEvent(s)}return Wr.handled}var a=r[r.length-1],o="ArrowLeft"===t.key||"ArrowRight"===t.key||"ArrowUp"===t.key||"ArrowDown"===t.key;if(t.ctrlKey&&t.shiftKey&&o&&this.canEdit)return this.#Xo(a,t,"left");if(t.ctrlKey&&!t.shiftKey&&o&&this.canEdit)return this.#Yo(r,a,t);if(t.shiftKey&&!t.ctrlKey&&o&&this.canEdit)return this.#Xo(a,t,"right");var l=null;switch(t.key){case"ArrowLeft":l=this.#Ko(a,-1);break;case"ArrowRight":l=this.#Ko(a,1);break;case"ArrowUp":l=this.#Zo(a,-1);break;case"ArrowDown":l=this.#Zo(a,1)}return l?(t.preventDefault(),this.#wt.selectedEvents$.next([l]),this.#Go(l),Wr.handled):Wr.notHandled}#Yo(e,t,r){var i=this.#wt.timeline.currentZoom.axis[0];if("ArrowLeft"===r.key||"ArrowRight"===r.key){var s="ArrowRight"===r.key?1:-1;for(var n of e){var a=i.getCellStartTime(n.startTime),o=i.getAdd(a,s),l=n.endTime.getTime()-n.startTime.getTime(),h=new Date(o.getTime()+l);if(u=this.#wt.data.getResourceById(n.resourceId)){var d={event:n,newStartTime:o,newEndTime:h,newResource:u,cancel:!1};this.#wt.eventMoving$.next(d),d.cancel||(n.startTime=d.adjustedStartTime??d.newStartTime,n.endTime=d.adjustedEndTime??d.newEndTime)}}return r.preventDefault(),this.#Go(t),Wr.handled}if("ArrowUp"===r.key||"ArrowDown"===r.key){var c=t.resourceId;if(!e.every(e=>e.resourceId===c))return Wr.notHandled;var u,g=this.#wt.data.orderedResources;if(!(u=this.#wt.data.getResourceById(c)))return Wr.notHandled;var m=g.indexOf(u);if(m<0)return Wr.notHandled;var p=m+("ArrowDown"===r.key?1:-1);if(p<0||p>=g.length)return Wr.notHandled;var v=g[p];for(var n of e){d={event:n,newStartTime:n.startTime,newEndTime:n.endTime,newResource:v,cancel:!1};this.#wt.eventMoving$.next(d),d.cancel||(n.startTime=d.adjustedStartTime??d.newStartTime,n.endTime=d.adjustedEndTime??d.newEndTime,n.resourceId=d.newResource.id)}return r.preventDefault(),this.#Go(t),Wr.handled}return Wr.notHandled}#Xo(e,t,r){if("ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return Wr.notHandled;var i,s=this.#wt.timeline.currentZoom.axis[0],n="ArrowRight"===t.key?1:-1,a=e.startTime,o=e.endTime;if("right"===r){i="right";var l=s.getCellStartTime(e.endTime);if((o=s.getAdd(l,n)).getTime()<=e.startTime.getTime())return Wr.notHandled}else{i="left";var h=s.getCellStartTime(e.startTime);if(a=s.getAdd(h,n),(a=this.#wt.calendar$.getValue().moveToStartShift(a,!0)).getTime()>=e.endTime.getTime())return Wr.notHandled}var d={event:e,edge:i,newStartTime:a,newEndTime:o,cancel:!1};if(this.#wt.eventResizing$.next(d),!d.cancel){var c=d.adjustedStartTime??d.newStartTime,u=d.adjustedEndTime??d.newEndTime;c.getTime()<u.getTime()&&("left"===i?e.startTime=c:e.endTime=u)}return t.preventDefault(),this.#Go(e),Wr.handled}#Ko(e,t){var r=this.#wt.data.getEventsForResource(e.resourceId);r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()||e.id.localeCompare(t.id));var i=r.findIndex(t=>t.id===e.id);if(i<0)return null;var s=i+t;return s<0||s>=r.length?null:r[s]}#Zo(e,t){var r=this.#wt.data.orderedResources,i=this.#wt.data.getResourceById(e.resourceId);if(!i)return null;var s=r.indexOf(i);if(s<0)return null;for(var n=(e.startTime.getTime()+e.endTime.getTime())/2,a=s+t;a>=0&&a<r.length;a+=t){var o=this.#wt.data.getEventsForResource(r[a].id);if(0!==o.length){var l=null,h=1/0;for(var d of o){var c=(d.startTime.getTime()+d.endTime.getTime())/2,u=Math.abs(c-n);u<h&&(h=u,l=d)}return l}}return null}#Go(e){var t=this.dateToX(e.startTime),r=this.dateToX(e.endTime);if(t<0||r>this.canvas.width){var i=this.#wt.timeline.currentZoom.axis[0],s=i.getAdd(i.getCellStartTime(e.startTime),-1);this.#wt.timeline.visibleStartTime$.next(s)}}onRedrawn(){this.#qo();var e=this.#wt.chartEventHover$.getValue();if(e&&this.#jo){var t=this.#wt.data.getResourceById(e.resourceId);if(!t)return;var r=this.#wt.eventTooltip$.getValue();if(r){var i=r({event:e,resource:t});i&&this.drawTooltip(e,this.#jo.x,i.title,i.lines)}else{var s=this.#wt.locale$.getValue(),n=[];n.push({name:s.labels.start,value:Kt(e.startTime,s.language)}),n.push({name:s.labels.end,value:Kt(e.endTime,s.language)}),this.drawTooltip(e,this.#jo.x,e.name,n)}}}#qo(){var e=this.#wt.selectedEvents$.getValue();if(0!==e.length){var t=this.#wt.theme$.getValue().chart.content.taskHeight,r=this.canvas.getContext("2d");for(var i of e){var s=this.#wt.data.getResourceById(i.resourceId);if(s){var n=this.dateToX(i.startTime),a=this.dateToX(i.endTime);if(!(a<0||n>this.canvas.width)){var o=this.#wt.getEventY(s,i);if(ui(r,new xr(n,o)),ui(r,new xr(a,o)),ui(r,new xr(n,o+t)),ui(r,new xr(a,o+t)),a-n>=60){var l=Math.floor((n+a)/2);ui(r,new xr(l,o)),ui(r,new xr(l,o+t))}}}}}}onContextMenu(e,t){var r=this.getResourceRowAt(e);if(!r)return Wr.notHandled;var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=Math.floor(e.x/i.baseCellWidth),o=s.getAdd(n,a),l=this.getEventAt(e);return this.contextMenu$.next({date:o,resource:r,event:l?.event??null,mouseEvent:t}),Wr.handled}onDblClick(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getEventAt(e);return r?(this.dblClick$.next(r.event),Wr.handled):Wr.notHandled}}class jn extends Wn{startX=0;lastP=new xr(0,0);target=null;dragCursor="all-scroll";enableHoverDetection=!1;hoverCursor="ew-resize";constructor(e,t,r){super(e,t,r)}onDragStart(e,t){}async onMouseMove(e,t){if(this.isInOperation)return this.lastP=e,Wr.handled;if(this.enableHoverDetection){var r=this.hitTest(e);if(r)return this.target=r,this.setCursor(this.hoverCursor),Wr.handled;this.target&&(this.target=null,this.setCursor("default"))}return Wr.notHandled}async onMouseDown(e,t,r){if(0!==r.button||this.isInOperation)return Wr.notHandled;var i=this.hitTest(e);return i?(this.target=i,this.isInOperation=!0,this.startX=e.x,this.lastP=e,this.onDragStart(i,e),this.setCursor(this.dragCursor),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,this.setCursor("default"),this.onDragEnd(this.target,e),Wr.handled):Wr.notHandled}onRedrawn(){this.isInOperation&&this.target&&this.onDragDraw(this.target)}}class Xn extends jn{#wt;#_o=0;constructor(e,t,r){super(e,t,r),this.#wt=e}hitTest(e){return this.getEventAt(e)}onDragStart(e,t){this.#_o=e.event.endTime.getTime()-e.event.startTime.getTime(),this.#wt.chartEventHover$.next(null)}onDragEnd(e,t){var r=this.#Fr(t),i=e.event,s={event:i,newStartTime:r.startTime,newEndTime:r.endTime,newResource:r.targetResource,cancel:!1};this.#wt.eventMoving$.next(s),s.cancel||(i.startTime=s.adjustedStartTime??s.newStartTime,i.endTime=s.adjustedEndTime??s.newEndTime,i.resourceId=s.newResource.id),this.#wt.selectedEvents$.next([i])}onDragDraw(e){var t=this.#Fr(this.lastP),r=this.lastP.x-this.startX,i=e.x1+r,s=e.x2+r;if(t.targetResource.id===e.resource.id)this.drawEventHighlight(e.event,i,s);else{var n=this.#wt.data.getEventColor(e.event);this.drawHighlightForResource(t.targetResource,i,s,n)}var a=this.#wt.locale$.getValue(),o=[];o.push({name:a.labels.start,value:Kt(t.startTime,a.language)}),o.push({name:a.labels.end,value:Kt(t.endTime,a.language)}),this.drawTooltipForResource(t.targetResource,this.startX,a.scheduler.moveEvent,o)}#Jo(e){return this.getResourceRowAt(e)??this.target.resource}#Fr(e){var t=e.x-this.startX,r=this.getCellAt(new xr(this.target.x1+t,e.y)),i=this.cellToDate(r),s=new Date(i.getTime()+this.#_o);return{startTime:i,endTime:s,targetResource:this.#Jo(e)}}}class Yn extends jn{#wt;constructor(e,t,r){super(e,t,r),this.#wt=e,this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getResourceRowAt(e);if(!t)return null;var r=this.#wt.theme$.getValue().chart.content.taskHeight,i=this.#wt.data.getEventsForResource(t.id);for(var s of i){var n=this.#wt.getEventY(t,s);if(!(e.y<n||e.y>n+r)){var a=this.dateToX(s.startTime),o=this.dateToX(s.endTime);if(Math.abs(e.x-o)<=3)return{event:s,resource:t,edge:"right",x1:a,x2:o,deltaX:e.x-o};if(Math.abs(e.x-a)<=3)return{event:s,resource:t,edge:"left",x1:a,x2:o,deltaX:e.x-a}}}return null}onDragStart(e,t){this.#wt.chartEventHover$.next(null),this.#wt.selectedEvents$.next([])}onDragEnd(e,t){var r=this.#Fr(t),i=e.event;if(r.startTime.getTime()<r.endTime.getTime()){var s={event:i,edge:e.edge,newStartTime:r.startTime,newEndTime:r.endTime,cancel:!1};if(this.#wt.eventResizing$.next(s),!s.cancel){var n=s.adjustedStartTime??s.newStartTime,a=s.adjustedEndTime??s.newEndTime;n.getTime()<a.getTime()&&("left"===e.edge?i.startTime=n:i.endTime=a)}}this.#wt.selectedEvents$.next([i])}onDragDraw(e){var t,r,i=this.lastP.x-this.startX-e.deltaX;"left"===e.edge?(t=e.x1+i,r=e.x2):(t=e.x1,r=e.x2+i),this.drawEventHighlight(e.event,t,r);var s=this.#wt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];"left"===e.edge?a.push({name:s.labels.start,value:Kt(n.startTime,s.language)}):a.push({name:s.labels.end,value:Kt(n.endTime,s.language)}),this.drawTooltip(e.event,this.startX,s.scheduler.resizeEvent,a)}#Fr(e){var t=this.target,r=this.lastP.x-this.startX-t.deltaX;if("left"===t.edge){var i=t.x1+r,s=this.getCellAt(new xr(i,e.y)),n=this.cellToDate(s);return{startTime:n=this.#wt.calendar.moveToStartShift(n,!0),endTime:t.event.endTime}}var a=t.x2+r,o=this.getCellEndAligned(new xr(a,e.y)),l=this.getEndTimeAligned(o);return{startTime:t.event.startTime,endTime:l}}}class Kn extends jn{#wt;constructor(e,t,r){super(e,t,r),this.#wt=e,this.dragCursor="crosshair"}hitTest(e){var t=this.getResourceRowAt(e);return t?this.getEventAt(e)?null:{resource:t,startCell:this.getCellAt(e)}:null}onDragStart(e,t){this.#wt.chartEventHover$.next(null)}onDragEnd(e,t){var r=this.#Fr(t);if(r){var i={resource:e.resource,startTime:r.startTime,endTime:r.endTime,cancel:!1};if(this.#wt.eventCreating$.next(i),!i.cancel){var s=i.adjustedStartTime??i.startTime,n=i.adjustedEndTime??i.endTime;if(n.getTime()>s.getTime()){var a=new Vn(null,e.resource.id,"",s,n);this.#wt.data.addEvent(a),this.#wt.selectedEvents$.next([a])}}}}onDragDraw(e){this.drawHighlightForResource(e.resource,this.startX,this.lastP.x);var t=this.#Fr(this.lastP);if(t){var r=this.#wt.locale$.getValue(),i=[];i.push({name:r.labels.start,value:Kt(t.startTime,r.language)}),i.push({name:r.labels.end,value:Kt(t.endTime,r.language)}),this.drawTooltipForResource(e.resource,this.startX,r.scheduler.addEvent,i)}}#Fr(e){var t=this.target,r=Math.round(t.startCell),i=this.getCellEndAligned(e);if(i<=r)return null;var s=this.cellToDate(t.startCell),n=this.getEndTimeAligned(i);return s=this.#wt.calendar.moveToStartShift(s,!0),n=this.#wt.calendar.moveToEndShift(n,!0),s.getTime()>=n.getTime()?null:{startTime:s,endTime:n}}}class Zn{#wt;constructor(e){this.#wt=e}drawTooltipForResource(e,t,r,i,s){Ci(e,this.#wt.getRowY(t),this.#wt.getRowHeight(t),r,i,s,this.#wt.theme$.getValue())}drawTooltip(e,t,r,i,s){var n=this.#wt.data.getResourceById(t.resourceId);n&&Ci(e,this.#wt.getEventY(n,t),this.#wt.theme$.getValue().chart.content.taskHeight,r,i,s,this.#wt.theme$.getValue())}}class Gn extends Nr{#wt;eventDblClick$=new e;eventContextMenu$=new e;constructor(e,t){super(e,t),this.#wt=e;var r=new kn(e),i=new Zn(e),s=new Un(e,r,i);this.addSubscription(s.dblClick$.subscribe(e=>{this.eventDblClick$.next(e)})),this.addSubscription(s.contextMenu$.subscribe(e=>{this.eventContextMenu$.next(e)})),this.addHandler(s),this.addHandler(new Yn(e,r,i)),this.addHandler(new Xn(e,r,i)),this.addHandler(new Kn(e,r,i)),this.wireHandlers()}createAutoScroll(e){return new Fr(e,(e,t)=>this.onAutoScroll(e,t),{enableVertical:!0,getContentTop:()=>this.#wt.theme$.getValue().contentTop})}onAutoScroll(e,t){if(super.onAutoScroll(e,t),0!==t){var r=this.#wt.scrollTop$.getValue(),i=this.#wt.theme$.getValue().contentTop,s=this.chartElement.clientHeight-i,n=Math.max(0,this.#wt.getTotalContentHeight()-s);this.#wt.scrollTop$.next(Math.max(0,Math.min(n,r+t)))}}registerKeydownListener(e){e.addEventListener("keydown",async e=>{await this.handleKeyDown(e)},!1)}onBeforeMouseDown(){this.chartElement.focus({preventScroll:!0})}}class qn extends Mi{#$t;#zi;#No;#Li;#Ni;#pr;constructor(e,t){super(e,t,"scheduler"),this.init(),t.setAttribute("tabindex","0")}initComponents(e,t,r){this.#$t=new Cn(this.ctx),this.#zi=new xn(this.ctx),this.#No=new kn(this.ctx),this.#Li=new En(this.ctx),this.#Ni=new Nn(this.ctx,e,t,r),this.#pr=new Gn(this.ctx,e),this.#pr.init(e,t)}getRedrawObservables(){var e=this.ctx;return[this.#pr.redraw$,e.timeline.zoomIndex$,e.timeline.visibleStartTime$,e.scrollTop$,e.data.resourceChanged$,e.data.resourceRemoved$,e.data.eventAdded$,e.data.eventChanged$,e.data.eventRemoved$,e.data.complexOperationFinished$,e.data.frozenChanged$,e.sheetRowMouseOver$,e.chartEventHover$,e.selectedEvents$,e.selectedResources$,e.settings.changed$,e.showGridLines$,e.showTodayLine$,e.markers$]}onRedraw(e){this.renderPipeline(e,this.#$t,this.#zi,this.#Li,()=>{this.#No.render(this.canvas)})}onResize(){this.#Ni.handleResize()}get handlers(){return this.#pr}destroyComponents(){this.#Ni.destroy(),this.#pr.destroy()}}class _n extends fs{constructor(e,t,r,i,s){super(e,t,r,i,s,{getDefaultSheetWidth:()=>e.defaultSheetWidth})}}class Jn{#wt;#Ia=null;constructor(e){this.#wt=e}async copy(e){if(0!==e.length){this.#Ia=this.#Pa(e);var t=this.#Aa(e);try{await navigator.clipboard.writeText(t)}catch{}}}async cut(e){if(await this.copy(e),e.length>0)for(var t of e)this.#wt.data.removeEvent(t)}async paste(){if(this.#Ia)return this.#Ha(this.#Ia);try{var e=await navigator.clipboard.readText();if(e&&e.trim().length>0)return this.#Va(e)}catch{}return null}#Pa(e){var t=[];for(var r of e)t.push(r.toAny());return{events:t}}#Ha(e){var t=new Map,r=[];for(var i of e.events){var s=i.id,n=i.resourceId;if(this.#wt.data.getResourceById(n)){var a=new Vn(null,n,i.name??"",new Date(i.startTime),new Date(i.endTime));if(void 0!==i.color&&null!==i.color&&(a.color=i.color),i.properties)for(var o of i.properties)a.addProperty(or.fromAny(o));this.#wt.data.addEvent(a),t.set(s,a),r.push(a)}}return this.#wt.data.complexOperationFinished$.next(),{events:r,eventIdMap:t}}#Va(e){var t=e.split("\n").filter(e=>e.trim().length>0),r=[],i=new Map,s=this.#wt.selectedEvents$.getValue(),n=null;if(s.length>0)n=s[s.length-1].resourceId;else{var a=this.#wt.data.orderedResources;a.length>0&&(n=a[0].id)}if(!n)return{events:[],eventIdMap:i};if(!this.#wt.data.getResourceById(n))return{events:[],eventIdMap:i};for(var o of t){var l=o.split("\t"),h=l[0]?.trim();if(h){var d=null,c=null;if(l[1]?.trim())try{d=new Date(l[1].trim())}catch{}if(l[2]?.trim())try{c=new Date(l[2].trim())}catch{}if(d&&!isNaN(d.getTime())&&c&&!isNaN(c.getTime())&&!(d.getTime()>=c.getTime())){var u=new Vn(null,n,h,d,c);this.#wt.data.addEvent(u);var g=er(8);i.set(g,u),r.push(u)}}}return this.#wt.data.complexOperationFinished$.next(),{events:r,eventIdMap:i}}#Aa(e){var t=[];for(var r of e){var i=r.name??"",s=qt(r.startTime),n=qt(r.endTime),a="",o=this.#wt.data.getResourceById(r.resourceId);o&&(a=o.name),t.push([i,s,n,a].join("\t"))}return t.join("\n")}}class Qn{data;dataAdapter;table;timeline;locale$;calendar$;theme$;projectTimeline$;settings;get scrollTop$(){return this.table.scrollTop$}autoScrolling=!1;selectedResources$=new t([]);canEdit$=new t(!0);get canEdit(){return this.canEdit$.getValue()}showGridLines$=new t(!0);showTodayLine$=new t(!0);markers$=new t([]);defaultSheetWidth=0;dividerPositionChanged$=new e;dividerResizing$=new t(!1);chartMouseWheel$=new e;chartRedrawn$=new e;chartBackgroundRedrawn$=new e;chartCursor$=new e;chartEventHover$=new t(null);selectedEvents$=new t([]);sheetRowMouseOver$=new t(null);eventMoving$=new e;eventResizing$=new e;eventCreating$=new e;eventDeleting$=new e;eventRendering$=new t(null);eventTooltip$=new t(null);layout;constructor(){this.projectTimeline$=new t(new Sr(Bt(),Ft(180))),this.locale$=new t(Ns),this.calendar$=new t(new yr),this.timeline=new Ii(this.calendar$,this.locale$),this.data=new fn;var e=new gn;this.theme$=new t(e),this.dataAdapter=new wn(this.data),this.table=new zs(this.dataAdapter,e.rowHeight),this.canEdit$.subscribe(e=>this.table.canEdit$.next(e)),this.table.selectedItems$.subscribe(e=>this.selectedResources$.next(e)),this.layout=new Bn(this.data,this.theme$,this.scrollTop$)}get calendar(){return this.calendar$.getValue()}getRowHeight(e){return this.layout.getRowHeight(e)}getEventY(e,t){return this.layout.getEventY(e,t)}getRowY(e){return this.layout.getRowY(e)}getTotalContentHeight(){return this.layout.getTotalContentHeight()}get frozenSectionBottom(){return this.layout.frozenSectionBottom}}class ea extends Us{#wt;#pa;#Ya;#Ka;#Qo;#Za;#Ga;#qa;#el;get ctx(){return this.#wt}get engineEvents(){return this.#qa}getChartWidth(){return this.#Ka.chartWidth}getChartElement(){return this.#Ka.chartElement}getTheme(){return this.#wt.theme$.getValue()}subscribeThemeChange(e){return this.#wt.theme$.subscribe(e)}isCellEditing(){return null!==this.#wt.table.cellEditing$.getValue()}saveColumnsImpl(){return this.#pa.saveColumns()}loadColumnsImpl(e){this.#pa.loadColumns(e)}hasData(){return this.data.eventsLength>0}destroyComponents(){this.#Ka.destroy(),this.#pa.destroy(),this.#Ya.destroy(),this.#Qo.destroy()}addWrapperClasses(e){e.classList.add("gc-scheduler")}get data(){return this.#wt.data}get sheet(){return this.#pa}get events(){return this.#qa}get selectedResources(){return this.#wt.selectedResources$.getValue()}get selectedEvents(){return this.#wt.selectedEvents$.getValue()}set selectedEvents(e){this.#wt.selectedEvents$.next(e)}get selectedEvent(){var e=this.#wt.selectedEvents$.getValue();return e.length>0?e[e.length-1]:null}set selectedEvent(e){this.#wt.selectedEvents$.next(e?[e]:[])}get eventRendering(){return this.#wt.eventRendering$.getValue()}set eventRendering(e){this.#wt.eventRendering$.next(e)}get eventTooltip(){return this.#wt.eventTooltip$.getValue()}set eventTooltip(e){this.#wt.eventTooltip$.next(e)}get filter(){return this.#wt.data.filter}set filter(e){this.#wt.data.filter=e}clearFilter(){this.#wt.data.filter=null}get settings(){return this.#el}constructor(e){super(e),this.#wt=new Qn,this.#el=new ra(this.#wt),this.#wt.settings=this.#el;var{sheetElement:t,dividerElement:r,chartElement:i}=this.createDom();this.#pa=new On(this.#wt,t),this.#Ya=new _n(this.#wt,this._wrapperElement,t,r,i),this.#Ka=new qn(this.#wt,i),this._subscriptions.add(this.#pa.columnsChanged$.subscribe(()=>{this.#Ya.updateCalculatedWidth(this.#pa.getColumnsContentWidth())})),this.#Qo=new ia(this.#wt,this._wrapperElement,this.#pa),this.#qa=new ta(this.#wt,this.#pa),this.#qa._bindChartHandlers(this.#Ka),this.#Ga=new Jn(this.#wt),this.#Za=new Fs(()=>this.save(),e=>this.restoreState(e)),this._undoManager=this.#Za,this._subscriptions.add(this.#wt.data.resourceAdded$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.resourceChanged$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.resourceRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventAdded$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventChanged$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.complexOperationFinished$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventRemoved$.subscribe(e=>{var t=this.#wt.selectedEvents$.getValue(),r=t.filter(t=>t.id!==e.event.id);r.length!==t.length&&this.#wt.selectedEvents$.next(r)})),this._subscriptions.add(this.#wt.data.filterChanged$.subscribe(()=>{var e=this.#wt.selectedEvents$.getValue(),t=e.filter(e=>{var t=this.#wt.data.getResourceById(e.resourceId);return t&&!t.filtered});t.length!==e.length&&this.#wt.selectedEvents$.next(t),this.#wt.data.complexOperationFinished$.next()})),this.#Za.initialize(),this.wireTheme(),this.wireKeyboard()}async copy(){var e=this.#wt.selectedEvents$.getValue();await this.#Ga.copy(e)}async cut(){if(this.canEdit){var e=this.#wt.selectedEvents$.getValue();await this.#Ga.cut(e)}}async paste(){if(!this.canEdit)return null;this._undoManager.beginBatch();try{var e=await this.#Ga.paste();return e&&this.#qa.eventsPasted$.next(e),e}finally{this._undoManager.endBatch()}}scrollToResource(e){this.#pa.scrollToItem(e)}scrollToEvent(e){var t=this.#wt.data.getResourceById(e.resourceId);t&&this.#pa.scrollToItem(t),this.scrollToDate(e.startTime)}zoomToFit(e){var t=null,r=null;if(e&&e.length>0)for(var i of e)(!t||i.startTime.getTime()<t.getTime())&&(t=i.startTime),(!r||i.endTime.getTime()>r.getTime())&&(r=i.endTime);else t=this.#wt.data.minStartTime,r=this.#wt.data.maxEndTime;this.zoomToFitRange(t,r)}async exportToImage(){return new Pn(this.#wt,this.#pa).exportToImage()}exportToCsv(e){return new An(this.#wt).exportToCsv(e)}async exportToExcel(e){return new An(this.#wt).exportToExcel(e)}async exportToPdf(e){return new Hn(this.#wt,this.#pa).exportToPdf(e)}sortResources(e){this.#wt.data.sortResources(e)}freezeResource(e){this.#wt.data.freezeResource(e)}unfreezeResource(e){this.#wt.data.unfreezeResource(e)}isResourceFrozen(e){return this.#wt.data.isResourceFrozen(e)}save(){for(var e=[],t=0;t<this.data.resourcesLength;t++)e.push(this.data.getResource(t).toAny());var r=[];for(t=0;t<this.data.eventsLength;t++)r.push(this.data.getEvent(t).toAny());var i=[...this.data.frozenResourceIds],s=this.markers.map(e=>({date:qt(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})),n={resources:e,events:r,projectTimeline:{startDate:qt(this.projectTimeline.startDate),endDate:qt(this.projectTimeline.endDate)},showTodayLine:this.showTodayLine,frozenResourceIds:i.length>0?i:void 0,markers:s.length>0?s:void 0};return JSON.stringify(n,(e,t)=>null===t?void 0:t)}restoreState(e){this.sheet.clearSelection(),this.#wt.selectedEvents$.next([]),this.#wt.data.filter=null;for(var t=JSON.parse(e),r=[],i=0;i<t.resources.length;i++)r.push(bn.fromAny(t.resources[i]));this.data.assignResources(r);var s=[];for(i=0;i<t.events.length;i++)s.push(Vn.fromAny(t.events[i]));if(this.data.assignEvents(s),t.projectTimeline&&this.#wt.projectTimeline$.next(new Sr(new Date(t.projectTimeline.startDate),new Date(t.projectTimeline.endDate))),void 0!==t.showTodayLine&&this.#wt.showTodayLine$.next(t.showTodayLine),t.frozenResourceIds)for(var n of t.frozenResourceIds){var a=this.data.getResourceById(n);a&&this.data.freezeResource(a)}t.markers?this.markers=t.markers.map(e=>({date:new Date(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})):this.markers=[]}}class ta{#T=new r;resourceAdded$=new e;resourceChanged$=new e;resourceRemoved$=new e;eventAdded$=new e;eventChanged$=new e;eventRemoved$=new e;eventSelected$=new e;eventDblClick$=new e;eventDeleting$=new e;eventsPasted$=new e;chartContextMenu$=new e;eventMoving$=new e;eventResizing$=new e;eventCreating$=new e;sheetRowContextMenu$=new e;sheetCellEditing$=new e;projectTimeline$=new e;undone$=new e;redone$=new e;constructor(e,t){this.#T.add(e.data.resourceAdded$.subscribe(e=>this.resourceAdded$.next(e))),this.#T.add(e.data.resourceChanged$.subscribe(e=>this.resourceChanged$.next(e))),this.#T.add(e.data.resourceRemoved$.subscribe(e=>this.resourceRemoved$.next(e))),this.#T.add(e.data.eventAdded$.subscribe(e=>this.eventAdded$.next(e))),this.#T.add(e.data.eventChanged$.subscribe(e=>this.eventChanged$.next(e))),this.#T.add(e.data.eventRemoved$.subscribe(e=>this.eventRemoved$.next(e))),this.#T.add(e.selectedEvents$.subscribe(e=>{var t=e.length>0?e[e.length-1]:null;this.eventSelected$.next(t?{event:t}:null)})),this.#T.add(e.eventDeleting$.subscribe(e=>this.eventDeleting$.next(e))),this.#T.add(t.rowContextMenu$.subscribe(e=>this.sheetRowContextMenu$.next(e))),this.#T.add(e.table.cellEditing$.subscribe(e=>this.sheetCellEditing$.next(null!==e))),this.#T.add(e.projectTimeline$.subscribe(e=>this.projectTimeline$.next(e))),this.#T.add(e.eventMoving$.subscribe(e=>this.eventMoving$.next(e))),this.#T.add(e.eventResizing$.subscribe(e=>this.eventResizing$.next(e))),this.#T.add(e.eventCreating$.subscribe(e=>this.eventCreating$.next(e)))}_bindChartHandlers(e){this.#T.add(e.handlers.eventDblClick$.subscribe(e=>this.eventDblClick$.next({event:e}))),this.#T.add(e.handlers.eventContextMenu$.subscribe(e=>this.chartContextMenu$.next(e)))}destroy(){this.#T.unsubscribe()}}class ra{get locale(){return this.#wt.locale$.getValue()}set locale(e){this.#wt.locale$.next(e),this.changed$.next()}get theme(){return this.#wt.theme$.getValue()}set theme(e){this.#wt.theme$.next(e),this.#wt.table.rowHeight=e.rowHeight,this.changed$.next()}changed$=new e;#wt;constructor(e){this.#wt=e}}class ia{#wt;#nr;#Lt;#pa;#tl=!1;#T=new r;constructor(e,t,r){this.#wt=e,this.#pa=r,this.#nr=document.createElement("div"),this.#nr.classList.add("gc-scrollbar"),t.appendChild(this.#nr),this.#Lt=document.createElement("div"),this.#nr.appendChild(this.#Lt),this.#nr.addEventListener("scroll",()=>{this.#tl||(this.#tl=!0,this.#pa.setScrollTop(this.#nr.scrollTop),this.#tl=!1)}),this.#T.add(e.scrollTop$.subscribe(()=>{this.#tl||(this.#tl=!0,this.#nr.scrollTop=e.scrollTop$.getValue(),this.#tl=!1),this.#rl()})),this.#T.add(e.data.resourceAdded$.subscribe(()=>this.#rl())),this.#T.add(e.data.resourceRemoved$.subscribe(()=>this.#rl())),this.#T.add(e.data.eventAdded$.subscribe(()=>this.#rl())),this.#T.add(e.data.eventRemoved$.subscribe(()=>this.#rl())),this.#T.add(e.data.eventChanged$.subscribe(()=>this.#rl())),this.#T.add(e.data.complexOperationFinished$.subscribe(()=>this.#rl()))}#rl(){var e=this.#wt.theme$.getValue().contentTop+this.#wt.getTotalContentHeight();this.#Lt.style.height=e+"px"}destroy(){this.#T.unsubscribe(),this.#nr.parentNode&&this.#nr.parentNode.removeChild(this.#nr)}}class sa{#m;get id(){return this.#m}#b="";get name(){return this.#b}set name(e){e!==this.#b&&(this.#b=e,this.#f())}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#ms=!0;get isVisible(){return this.#ms}set isVisible(e){e!==this.#ms&&(this.#ms=e,this.visibilityChanged$.next({calendar:this}),this.#f())}#il=!1;get isDefault(){return this.#il}set isDefault(e){e!==this.#il&&(this.#il=e,this.#f())}#sl=!1;get isReadOnly(){return this.#sl}set isReadOnly(e){e!==this.#sl&&(this.#sl=e,this.#f())}#nl=null;get timeZone(){return this.#nl}set timeZone(e){e!==this.#nl&&(this.#nl=e,this.#f())}#al=null;get description(){return this.#al}set description(e){e!==this.#al&&(this.#al=e,this.#f())}changed$=new e;visibilityChanged$=new e;constructor(e){this.#m=e??er(30)}toAny(){return{id:this.#m,name:this.#b,color:this.#M,isVisible:this.#ms,isDefault:this.#il,isReadOnly:this.#sl,timeZone:this.#nl,description:this.#al}}static fromAny(e){var t=new sa(e.id??null);return t.#b=e.name??"",t.#M=e.color??0,t.#ms=e.isVisible??!0,t.#il=e.isDefault??!1,t.#sl=e.isReadOnly??!1,t.#nl=e.timeZone??null,t.#al=e.description??null,t}#f(){this.changed$.next({calendar:this})}}const na={su:0,mo:1,tu:2,we:3,th:4,fr:5,sa:6};class aa{frequency;interval;until;count;byDay;byMonthDay;byMonth;bySetPos;weekStart;constructor(e){if(this.frequency=e.frequency,this.interval=e.interval??1,this.until=e.until??null,this.count=e.count??null,this.byDay=Object.freeze([...e.byDay??[]]),this.byMonthDay=Object.freeze([...e.byMonthDay??[]]),this.byMonth=Object.freeze([...e.byMonth??[]]),this.bySetPos=Object.freeze([...e.bySetPos??[]]),this.weekStart=e.weekStart??"mo",this.interval<1)throw new Error("RecurrenceRule: interval must be >= 1");if(this.until&&this.count)throw new Error("RecurrenceRule: until and count are mutually exclusive")}static fromString(e){var t=(e.startsWith("RRULE:")?e.substring(6):e).split(";"),r={frequency:"daily"};for(var i of t){var[s,n]=i.split("=");switch(s){case"FREQ":r.frequency=n.toLowerCase();break;case"INTERVAL":r.interval=parseInt(n,10);break;case"UNTIL":r.until=da(n);break;case"COUNT":r.count=parseInt(n,10);break;case"BYDAY":r.byDay=n.split(",").map(la);break;case"BYMONTHDAY":r.byMonthDay=n.split(",").map(e=>parseInt(e,10));break;case"BYMONTH":r.byMonth=n.split(",").map(e=>parseInt(e,10));break;case"BYSETPOS":r.bySetPos=n.split(",").map(e=>parseInt(e,10));break;case"WKST":r.weekStart=n.toLowerCase()}}return new aa(r)}toString(){var e,t,r,i,s,n,a,o=[];return o.push("FREQ="+this.frequency.toUpperCase()),this.interval>1&&o.push("INTERVAL="+this.interval),this.until&&o.push("UNTIL="+(e=this.until,t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),i=String(e.getUTCDate()).padStart(2,"0"),s=String(e.getUTCHours()).padStart(2,"0"),n=String(e.getUTCMinutes()).padStart(2,"0"),a=String(e.getUTCSeconds()).padStart(2,"0"),`${t}${r}${i}T${s}${n}${a}Z`)),null!==this.count&&o.push("COUNT="+this.count),this.byDay.length>0&&o.push("BYDAY="+this.byDay.map(ha).join(",")),this.byMonthDay.length>0&&o.push("BYMONTHDAY="+this.byMonthDay.join(",")),this.byMonth.length>0&&o.push("BYMONTH="+this.byMonth.join(",")),this.bySetPos.length>0&&o.push("BYSETPOS="+this.bySetPos.join(",")),"mo"!==this.weekStart&&o.push("WKST="+this.weekStart.toUpperCase()),o.join(";")}toAny(){return{frequency:this.frequency,interval:this.interval,until:this.until?.toISOString()??null,count:this.count,byDay:this.byDay.length>0?[...this.byDay]:null,byMonthDay:this.byMonthDay.length>0?[...this.byMonthDay]:null,byMonth:this.byMonth.length>0?[...this.byMonth]:null,bySetPos:this.bySetPos.length>0?[...this.bySetPos]:null,weekStart:this.weekStart}}static fromAny(e){var t=[];return e.byDay&&(t=e.byDay.map(e=>"string"==typeof e?la(e):e)),new aa({frequency:e.frequency,interval:e.interval??1,until:e.until?new Date(e.until):null,count:e.count??null,byDay:t,byMonthDay:e.byMonthDay??[],byMonth:e.byMonth??[],bySetPos:e.bySetPos??[],weekStart:e.weekStart??"mo"})}expandBetween(e,t,r){var i=[],s=this.count??oa,n=0,a=new Date(e);if(null===this.count&&a.getTime()<t.getTime()){var o=t.getTime()-a.getTime();switch(this.frequency){case"daily":var l=864e5*this.interval;(h=Math.floor(o/l))>1&&(a=new Date(a.getTime()+(h-1)*l));break;case"weekly":var h;l=7*this.interval*864e5;(h=Math.floor(o/l))>1&&(a=new Date(a.getTime()+(h-1)*l))}}for(var d=oa;d-- >0;){var c=this.#ol(a,e);for(var u of c)if(!(u<e)){if(this.until&&u>this.until)return i;if(n>=s)return i;if(u>r)return i;n++,u>=t&&i.push(u)}a=this.#ll(a)}return i}#ol(e,t){var r;switch(this.frequency){case"daily":r=[new Date(e)];break;case"weekly":r=this.#hl(e,t);break;case"monthly":r=this.#dl(e,t);break;case"yearly":r=this.#cl(e,t)}this.bySetPos.length>0&&(r=function(e,t){e.sort((e,t)=>e.getTime()-t.getTime());var r=[];for(var i of t){var s=i>0?i-1:e.length+i;s>=0&&s<e.length&&r.push(e[s])}return r}(r,this.bySetPos));for(var i=t.getHours(),s=t.getMinutes(),n=t.getSeconds(),a=t.getMilliseconds(),o=0;o<r.length;o++)r[o].setHours(i,s,n,a);return r.sort((e,t)=>e.getTime()-t.getTime()),r}#hl(e,t){if(0===this.byDay.length)return[new Date(e)];var r=[],i=na[this.weekStart],s=(e.getDay()-i+7)%7,n=new Date(e);for(var a of(n.setDate(n.getDate()-s),this.byDay)){var o=(na[a.day]-i+7)%7,l=new Date(n);l.setDate(n.getDate()+o),r.push(l)}return r}#dl(e,t){var r=e.getFullYear(),i=e.getMonth(),s=[];if(this.byMonthDay.length>0){var n=new Date(r,i+1,0).getDate();for(var a of this.byMonthDay){var o=a>0?a:n+a+1;o>=1&&o<=n&&s.push(new Date(r,i,o))}}else if(this.byDay.length>0)s=this.#ul(r,i);else{var l=t.getDate();l<=new Date(r,i+1,0).getDate()&&s.push(new Date(r,i,l))}return s}#cl(e,t){var r=e.getFullYear(),i=[],s=this.byMonth.length>0?this.byMonth.map(e=>e-1):[t.getMonth()];for(var n of s)if(this.byMonthDay.length>0){var a=new Date(r,n+1,0).getDate();for(var o of this.byMonthDay){var l=o>0?o:a+o+1;l>=1&&l<=a&&i.push(new Date(r,n,l))}}else if(this.byDay.length>0)i.push(...this.#ul(r,n));else{var h=t.getDate();h<=new Date(r,n+1,0).getDate()&&i.push(new Date(r,n,h))}return i}#ul(e,t){var r=[],i=new Date(e,t+1,0).getDate();for(var s of this.byDay){var n,a=na[s.day];if(void 0!==s.ordinal&&0!==s.ordinal)if(s.ordinal>0)(n=1+(a-new Date(e,t,1).getDay()+7)%7+7*(s.ordinal-1))<=i&&r.push(new Date(e,t,n));else(n=i-(new Date(e,t,i).getDay()-a+7)%7+7*(s.ordinal+1))>=1&&r.push(new Date(e,t,n));else for(var o=1+(a-new Date(e,t,1).getDay()+7)%7;o<=i;)r.push(new Date(e,t,o)),o+=7}return r}#ll(e){var t=new Date(e);switch(this.frequency){case"daily":t.setDate(t.getDate()+this.interval);break;case"weekly":t.setDate(t.getDate()+7*this.interval);break;case"monthly":t.setDate(1),t.setMonth(t.getMonth()+this.interval);break;case"yearly":t.setDate(1),t.setFullYear(t.getFullYear()+this.interval)}return t}}const oa=1e4;function la(e){var t=e.match(/^(-?\d+)?([A-Z]{2})$/);if(!t)throw new Error(`Invalid BYDAY value: ${e}`);return{day:t[2].toLowerCase(),ordinal:t[1]?parseInt(t[1],10):void 0}}function ha(e){return(void 0!==e.ordinal?String(e.ordinal):"")+e.day.toUpperCase()}function da(e){var t=e.match(/^(\d{4})(\d{2})(\d{2})(?:T(\d{2})(\d{2})(\d{2})(Z)?)?$/);if(!t)throw new Error(`Invalid RRULE date: ${e}`);if(t[4]){var r=parseInt(t[1]),i=parseInt(t[2])-1,s=parseInt(t[3]),n=parseInt(t[4]),a=parseInt(t[5]),o=parseInt(t[6]);return"Z"===t[7]?new Date(Date.UTC(r,i,s,n,a,o)):new Date(r,i,s,n,a,o)}return new Date(parseInt(t[1]),parseInt(t[2])-1,parseInt(t[3]))}function ca(e){return{originalStartTime:e.originalStartTime.toISOString(),isCancelled:e.isCancelled,overrides:e.overrides?ga(e.overrides):null}}function ua(e){return{originalStartTime:new Date(e.originalStartTime),isCancelled:e.isCancelled??!1,overrides:e.overrides?ma(e.overrides):null}}function ga(e){var t={};return void 0!==e.startTime&&(t.startTime=e.startTime.toISOString()),void 0!==e.endTime&&(t.endTime=e.endTime.toISOString()),void 0!==e.title&&(t.title=e.title),void 0!==e.description&&(t.description=e.description),void 0!==e.location&&(t.location=e.location),void 0!==e.color&&(t.color=e.color),void 0!==e.isAllDay&&(t.isAllDay=e.isAllDay),void 0!==e.timeZone&&(t.timeZone=e.timeZone),void 0!==e.tags&&(t.tags=e.tags),void 0!==e.responseStatus&&(t.responseStatus=e.responseStatus),void 0!==e.isCompleted&&(t.isCompleted=e.isCompleted),void 0!==e.completedAt&&(t.completedAt=e.completedAt?.toISOString()??null),t}function ma(e){var t={};return void 0!==e.startTime&&(t.startTime=new Date(e.startTime)),void 0!==e.endTime&&(t.endTime=new Date(e.endTime)),void 0!==e.title&&(t.title=e.title),void 0!==e.description&&(t.description=e.description),void 0!==e.location&&(t.location=e.location),void 0!==e.color&&(t.color=e.color),void 0!==e.isAllDay&&(t.isAllDay=e.isAllDay),void 0!==e.timeZone&&(t.timeZone=e.timeZone),void 0!==e.tags&&(t.tags=e.tags),void 0!==e.responseStatus&&(t.responseStatus=e.responseStatus),void 0!==e.isCompleted&&(t.isCompleted=e.isCompleted),void 0!==e.completedAt&&(t.completedAt=e.completedAt?new Date(e.completedAt):null),t}class pa{#m;get id(){return this.#m}#gl=null;get calendarId(){return this.#gl}set calendarId(e){e!=this.#gl&&(this.#gl=e,this.emitChanged())}#l=null;get startTime(){return this.#l}set startTime(e){if(!Ut(this.#l,e)){if(e&&this.#h&&e>this.#h)throw new RangeError(`startTime (${e.toISOString()}) must be <= endTime (${this.#h.toISOString()})`);this.#l=e,this.emitChanged(),this.startTimeChanged$.next({item:this})}}#h=null;get endTime(){return this.#h}set endTime(e){if(!Ut(this.#h,e)){if(e&&this.#l&&e<this.#l)throw new RangeError(`endTime (${e.toISOString()}) must be >= startTime (${this.#l.toISOString()})`);this.#h=e,this.emitChanged(),this.endTimeChanged$.next({item:this})}}#nl=null;get timeZone(){return this.#nl}set timeZone(e){e!=this.#nl&&(this.#nl=e,this.emitChanged())}#ml=!1;get isAllDay(){return this.#ml}set isAllDay(e){this.#ml!=e&&(this.#ml=e,this.emitChanged())}#pl=null;get title(){return this.#pl}set title(e){e!=this.#pl&&(this.#pl=e,this.emitChanged())}#al=null;get description(){return this.#al}set description(e){e!=this.#al&&(this.#al=e,this.emitChanged())}#vl=null;get location(){return this.#vl}set location(e){e!=this.#vl&&(this.#vl=e,this.emitChanged())}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.emitChanged())}#fl="public";get visibility(){return this.#fl}set visibility(e){this.#fl!=e&&(this.#fl=e,this.emitChanged())}#yl=null;get recurrenceRule(){return this.#yl}set recurrenceRule(e){e!==this.#yl&&(this.#yl=e,this.emitChanged())}#bl=[];get recurrenceExceptions(){return this.#bl}get isRecurring(){return null!==this.#yl}#wl=!1;get hasReminders(){return this.#wl}set hasReminders(e){this.#wl!=e&&(this.#wl=e,this.emitChanged())}#Tl=null;get externalSource(){return this.#Tl}set externalSource(e){e!=this.#Tl&&(this.#Tl=e,this.emitChanged())}#Cl=null;get tags(){return this.#Cl}set tags(e){e!=this.#Cl&&(this.#Cl=e,this.emitChanged())}setException(e){var t=this.#bl.findIndex(t=>t.originalStartTime.getTime()===e.originalStartTime.getTime());t>=0?this.#bl[t]=e:this.#bl.push(e),this.emitChanged()}removeException(e){var t=this.#bl.findIndex(t=>t.originalStartTime.getTime()===e.getTime());t>=0&&(this.#bl.splice(t,1),this.emitChanged())}cancelOccurrence(e){this.setException({originalStartTime:e,isCancelled:!0,overrides:null})}getException(e){return this.#bl.find(t=>t.originalStartTime.getTime()===e.getTime())??null}clearExceptions(){this.#bl.length>0&&(this.#bl=[],this.emitChanged())}data=void 0;#ae;changed$=new e;startTimeChanged$=new e;endTimeChanged$=new e;constructor(e){this.#m=e||er(30),this.#ae=new lr(()=>this.emitChanged())}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}applyFromAny(e){if(this.#gl=e.calendarId??null,this.#l=e.startTime?new Date(e.startTime):null,this.#h=e.endTime?new Date(e.endTime):null,this.#nl=e.timeZone??null,this.#ml=e.isAllDay??!1,this.#pl=e.title??null,this.#al=e.description??null,this.#vl=e.location??null,this.#M=e.color??0,this.#fl=e.visibility??"public",this.#yl=e.recurrenceRule?aa.fromAny(e.recurrenceRule):null,this.#bl=(e.recurrenceExceptions??[]).map(ua),this.#wl=e.hasReminders??!1,this.#Tl=e.externalSource??null,this.#Cl=e.tags??null,e.properties)for(const t of e.properties)this.setPropertyValue(t.name,t.value)}toAny(){return{type:this.type,id:this.#m,calendarId:this.#gl,startTime:this.#l?.toISOString()??null,endTime:this.#h?.toISOString()??null,timeZone:this.#nl,isAllDay:this.#ml,title:this.#pl,description:this.#al,location:this.#vl,color:this.#M,visibility:this.#fl,recurrenceRule:this.#yl?.toAny()??null,recurrenceExceptions:this.#bl.length>0?this.#bl.map(ca):null,hasReminders:this.#wl,externalSource:this.#Tl,tags:this.#Cl,properties:this.#ae.serializeProperties()}}emitChanged(){this.changed$.next({item:this})}}class va extends pa{type="meeting";#xl="needsAction";get responseStatus(){return this.#xl}set responseStatus(e){e!==this.#xl&&(this.#xl=e,this.emitChanged())}#kl=0;get attendeeCount(){return this.#kl}set attendeeCount(e){e!==this.#kl&&(this.#kl=e,this.emitChanged())}#El=!1;get hasConference(){return this.#El}set hasConference(e){e!==this.#El&&(this.#El=e,this.emitChanged())}#Dl=null;get organizer(){return this.#Dl}set organizer(e){e!==this.#Dl&&(this.#Dl=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#xl=e.responseStatus??"needsAction",this.#kl=e.attendeeCount??0,this.#El=e.hasConference??!1,this.#Dl=e.organizer??null}toAny(){return{...super.toAny(),responseStatus:this.#xl,attendeeCount:this.#kl,hasConference:this.#El,organizer:this.#Dl}}clone(e){var t=this.toAny();return t.id=e,va.fromAny(t)}static fromAny(e){const t=new va(e.id??null);return t.applyFromAny(e),t}}class fa extends pa{type="appointment";clone(e){var t=this.toAny();return t.id=e,fa.fromAny(t)}static fromAny(e){const t=new fa(e.id??null);return t.applyFromAny(e),t}}class ya extends pa{type="task";#Sl=!1;get isCompleted(){return this.#Sl}set isCompleted(e){e!==this.#Sl&&(this.#Sl=e,this.emitChanged())}#$l=null;get completedAt(){return this.#$l}set completedAt(e){e!==this.#$l&&(this.#$l=e,this.emitChanged())}#Rl=0;get priority(){return this.#Rl}set priority(e){e!==this.#Rl&&(this.#Rl=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Sl=e.isCompleted??!1,this.#$l=e.completedAt?new Date(e.completedAt):null,this.#Rl=e.priority??0}toAny(){return{...super.toAny(),isCompleted:this.#Sl,completedAt:this.#$l?.toISOString()??null,priority:this.#Rl}}clone(e){var t=this.toAny();return t.id=e,ya.fromAny(t)}static fromAny(e){const t=new ya(e.id??null);return t.applyFromAny(e),t}}class ba extends pa{type="deadline";clone(e){var t=this.toAny();return t.id=e,ba.fromAny(t)}static fromAny(e){const t=new ba(e.id??null);return t.applyFromAny(e),t}}class wa extends pa{type="holiday";clone(e){var t=this.toAny();return t.id=e,wa.fromAny(t)}static fromAny(e){const t=new wa(e.id??null);return t.applyFromAny(e),t}}class Ta extends pa{type="availabilityBlock";#Ml="busy";get availabilityStatus(){return this.#Ml}set availabilityStatus(e){e!==this.#Ml&&(this.#Ml=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Ml=e.availabilityStatus??"busy"}toAny(){return{...super.toAny(),availabilityStatus:this.#Ml}}clone(e){var t=this.toAny();return t.id=e,Ta.fromAny(t)}static fromAny(e){const t=new Ta(e.id??null);return t.applyFromAny(e),t}}class Ca extends pa{type="birthday";#Ll=null;get contactName(){return this.#Ll}set contactName(e){e!==this.#Ll&&(this.#Ll=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Ll=e.contactName??null}toAny(){return{...super.toAny(),contactName:this.#Ll}}clone(e){var t=this.toAny();return t.id=e,Ca.fromAny(t)}static fromAny(e){const t=new Ca(e.id??null);return t.applyFromAny(e),t}}class xa extends pa{type="reminder";clone(e){var t=this.toAny();return t.id=e,xa.fromAny(t)}static fromAny(e){const t=new xa(e.id??null);return t.applyFromAny(e),t}}class ka extends pa{type="resourceBooking";#Co=null;get resourceId(){return this.#Co}set resourceId(e){e!==this.#Co&&(this.#Co=e,this.emitChanged())}#Il=null;get resourceName(){return this.#Il}set resourceName(e){e!==this.#Il&&(this.#Il=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Co=e.resourceId??null,this.#Il=e.resourceName??null}toAny(){return{...super.toAny(),resourceId:this.#Co,resourceName:this.#Il}}clone(e){var t=this.toAny();return t.id=e,ka.fromAny(t)}static fromAny(e){const t=new ka(e.id??null);return t.applyFromAny(e),t}}const Ea={meeting:va.fromAny,appointment:fa.fromAny,task:ya.fromAny,deadline:ba.fromAny,holiday:wa.fromAny,availabilityBlock:Ta.fromAny,birthday:Ca.fromAny,reminder:xa.fromAny,resourceBooking:ka.fromAny};function Da(e){if(!e.type)throw new Error("calendarItemFromAny: missing type");const t=Ea[e.type];if(!t)throw new Error(`calendarItemFromAny: unknown type '${e.type}'`);return t(e)}class Sa{static applyEdit(e,t,r,i){switch(i){case"this":return e.setException({originalStartTime:t.originalStartTime,isCancelled:!1,overrides:r}),{newMaster:null,removeMaster:!1};case"all":return $a(e,r),{newMaster:null,removeMaster:!1};case"thisAndFollowing":return{newMaster:this.#Pl(e,t,r),removeMaster:!1}}}static applyDelete(e,t,r){switch(r){case"this":return e.cancelOccurrence(t.originalStartTime),{newMaster:null,removeMaster:!1};case"all":return{newMaster:null,removeMaster:!0};case"thisAndFollowing":if(e.recurrenceRule){var i=new Date(t.originalStartTime.getTime()-1);e.recurrenceRule=new aa({...Ma(e.recurrenceRule),until:i,count:null}),Ra(e,t.originalStartTime)}return{newMaster:null,removeMaster:!1}}}static#Pl(e,t,r){var i=t.originalStartTime,s=Ma(e.recurrenceRule),n=new Date(i.getTime()-1);e.recurrenceRule=new aa({...s,until:n,count:null});var a=e.recurrenceExceptions.filter(e=>e.originalStartTime.getTime()>=i.getTime());Ra(e,i);var o=e.clone(null);o.clearExceptions();var l=r.startTime??i,h=r.endTime??o.endTime;if(h&&l&&l>h){var d=(e.endTime?.getTime()??0)-(e.startTime?.getTime()??0);h=new Date(l.getTime()+d)}o.endTime=null,o.startTime=l,o.endTime=h,o.recurrenceRule=new aa({...s});var c={...r};for(var u of(delete c.startTime,delete c.endTime,$a(o,c),a))o.setException(u);return o}}function $a(e,t){void 0!==t.startTime&&(e.startTime=t.startTime),void 0!==t.endTime&&(e.endTime=t.endTime),void 0!==t.title&&(e.title=t.title),void 0!==t.description&&(e.description=t.description),void 0!==t.location&&(e.location=t.location),void 0!==t.color&&(e.color=t.color),void 0!==t.isAllDay&&(e.isAllDay=t.isAllDay),void 0!==t.timeZone&&(e.timeZone=t.timeZone),void 0!==t.tags&&(e.tags=t.tags),void 0!==t.responseStatus&&e instanceof va&&(e.responseStatus=t.responseStatus),void 0!==t.isCompleted&&e instanceof ya&&(e.isCompleted=t.isCompleted),void 0!==t.completedAt&&e instanceof ya&&(e.completedAt=t.completedAt)}function Ra(e,t){var r=t.getTime(),i=e.recurrenceExceptions.filter(e=>e.originalStartTime.getTime()>=r);for(var s of i)e.removeException(s.originalStartTime)}function Ma(e){return{frequency:e.frequency,interval:e.interval,until:e.until,count:e.count,byDay:[...e.byDay],byMonthDay:[...e.byMonthDay],byMonth:[...e.byMonth],bySetPos:[...e.bySetPos],weekStart:e.weekStart}}class La{item;originalStartTime;exception;constructor(e,t,r){this.item=e,this.originalStartTime=t,this.exception=r}get id(){return this.item.isRecurring?`${this.item.id}_${this.originalStartTime.toISOString()}`:this.item.id}get type(){return this.item.type}get calendarId(){return this.item.calendarId}get startTime(){return this.exception?.overrides?.startTime??this.originalStartTime}get endTime(){if(this.exception?.overrides?.endTime)return this.exception.overrides.endTime;var e=this.item.startTime?.getTime()??0,t=(this.item.endTime?.getTime()??e)-e;return new Date(this.startTime.getTime()+t)}get title(){return void 0!==this.exception?.overrides?.title?this.exception.overrides.title:this.item.title}get description(){return void 0!==this.exception?.overrides?.description?this.exception.overrides.description:this.item.description}get location(){return void 0!==this.exception?.overrides?.location?this.exception.overrides.location:this.item.location}get color(){return void 0!==this.exception?.overrides?.color?this.exception.overrides.color:this.item.color}get isAllDay(){return void 0!==this.exception?.overrides?.isAllDay?this.exception.overrides.isAllDay:this.item.isAllDay}get timeZone(){return void 0!==this.exception?.overrides?.timeZone?this.exception.overrides.timeZone:this.item.timeZone}get tags(){return void 0!==this.exception?.overrides?.tags?this.exception.overrides.tags:this.item.tags}get visibility(){return this.item.visibility}get hasReminders(){return this.item.hasReminders}get externalSource(){return this.item.externalSource}get data(){return this.item.data}get isRecurring(){return this.item.isRecurring}get isException(){return null!==this.exception&&!this.exception.isCancelled}get isCancelled(){return this.exception?.isCancelled??!1}get responseStatus(){return void 0!==this.exception?.overrides?.responseStatus?this.exception.overrides.responseStatus:this.item instanceof va?this.item.responseStatus:"needsAction"}get isCompleted(){return void 0!==this.exception?.overrides?.isCompleted?this.exception.overrides.isCompleted:this.item instanceof ya&&this.item.isCompleted}get completedAt(){return void 0!==this.exception?.overrides?.completedAt?this.exception.overrides.completedAt:this.item instanceof ya?this.item.completedAt:null}getPropertyValue(e){return this.item.getPropertyValue(e)}}class Ia{expand(e,t){var r=[];for(var i of e)if(i.startTime)if(i.recurrenceRule){var s=i.recurrenceRule.expandBetween(i.startTime,t.start,t.end);for(var n of s){var a=i.getException(n);a?.isCancelled||r.push(new La(i,n,a))}}else this.#Al(i,t)&&r.push(new La(i,i.startTime,null));else!i.recurrenceRule&&i.endTime&&i.endTime>=t.start&&i.endTime<=t.end&&r.push(new La(i,i.endTime,null));return r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()),r}#Al(e,t){return!!e.startTime&&((e.endTime??e.startTime)>=t.start&&e.startTime<=t.end)}}class Pa{#Hl=[];#Hs=[];#Vl=new Map;#Bl=new Map;#Fl=new Ia;calendarAdded$=new e;calendarChanged$=new e;calendarRemoved$=new e;calendarVisibilityChanged$=new e;itemAdded$=new e;itemChanged$=new e;itemRemoved$=new e;get calendarsLength(){return this.#Hl.length}getCalendar(e){return this.#Hl[e]}getCalendarById(e){return this.#Hl.find(t=>t.id===e)??null}addCalendar(e){if(this.getCalendarById(e.id))throw new Error(`CalendarData.addCalendar: calendar with id "${e.id}" already exists`);this.#Hl.push(e),this.#zl(e),this.calendarAdded$.next({calendar:e})}removeCalendar(e){if(e.isDefault)throw new Error("CalendarData.removeCalendar: cannot remove the default calendar");var t=this.#Hl.indexOf(e);if(t>=0){this.#Hl.splice(t,1),this.#Ol(e);var r=this.#Hs.filter(t=>t.calendarId===e.id);for(var i of r)this.removeItem(i);this.calendarRemoved$.next({calendar:e})}}get defaultCalendar(){return this.#Hl.find(e=>e.isDefault)??this.#Hl[0]??null}assignCalendars(e){if(e.length>0&&!e.some(e=>e.isDefault))throw new Error("CalendarData.assignCalendars: at least one calendar must be marked as default");for(var t of this.#Vl.values())for(var r of t)r.unsubscribe();for(var i of(this.#Vl.clear(),this.#Hl=[...e],this.#Hl))this.#zl(i);var s=this.#Hl[this.#Hl.length-1];s&&this.calendarAdded$.next({calendar:s})}#zl(e){var t=[e.changed$.subscribe(e=>this.calendarChanged$.next(e)),e.visibilityChanged$.subscribe(e=>this.calendarVisibilityChanged$.next(e))];this.#Vl.set(e.id,t)}#Ol(e){var t=this.#Vl.get(e.id);if(t){for(var r of t)r.unsubscribe();this.#Vl.delete(e.id)}}get itemsLength(){return this.#Hs.length}getItem(e){return this.#Hs[e]}getItemById(e){return this.#Hs.find(t=>t.id===e)??null}getItemsForCalendar(e){return this.#Hs.filter(t=>t.calendarId===e)}addItem(e){if(this.getItemById(e.id))throw new Error(`CalendarData.addItem: item with id "${e.id}" already exists`);this.#Hs.push(e),this.#Nl(e),this.itemAdded$.next({item:e})}removeItem(e){var t=this.#Hs.indexOf(e);t>=0&&(this.#Hs.splice(t,1),this.#Wl(e),this.itemRemoved$.next({item:e}))}assignItems(e){for(var t of this.#Bl.values())t.unsubscribe();for(var r of(this.#Bl.clear(),this.#Hs=[...e],this.#Hs))this.#Nl(r);var i=this.#Hs[this.#Hs.length-1];i&&this.itemAdded$.next({item:i})}#Nl(e){var t=e.changed$.subscribe(e=>this.itemChanged$.next(e));this.#Bl.set(e.id,t)}#Wl(e){var t=this.#Bl.get(e.id);t&&(t.unsubscribe(),this.#Bl.delete(e.id))}clear(){for(var e of this.#Bl.values())e.unsubscribe();for(var t of(this.#Bl.clear(),this.#Hs=[],this.#Vl.values()))for(var e of t)e.unsubscribe();this.#Vl.clear(),this.#Hl=[]}getEntries(e){var t=this.#Ul(),r=this.#Hs.filter(e=>null===e.calendarId||t.has(e.calendarId));return this.#Fl.expand(r,e)}#Ul(){var e=new Set;for(var t of this.#Hl)t.isVisible&&e.add(t.id);return e}getItemColor(e){if(0!==e.color)return e.color;var t=e.calendarId?this.getCalendarById(e.calendarId):null;return t?t.color:0}getEntryColor(e){if(0!==e.color)return e.color;var t=e.calendarId,r=t?this.getCalendarById(t):null;return r?r.color:0}}class Aa extends jr{chipBackgroundColor="#d3e3fd";chipTextColor="#1b4fa3";textColor="#1b4fa3"}class Ha{backgroundColor="#ffffff";textColor="#333333";borderColor="#e0e0e0";buttonColor="#555555";buttonHoverBackgroundColor="#f0f0f0";activeViewButtonBackgroundColor="#e8f0fe";activeViewButtonTextColor="#1a73e8";height=48}class Va{backgroundColor="#ffffff";textColor="#555555";borderColor="#e0e0e0";todayTextColor="#ffffff";todayBackgroundColor="#1a73e8";weekendTextColor="#777777"}class Ba{backgroundColor="#ffffff";textColor="#333333";gridLineColor="#e0e0e0";todayBackgroundColor="#e8f0fe";weekendBackgroundColor="#f8f8f8";otherMonthBackgroundColor="#fafafa";otherMonthTextColor="#b0b0b0";hourLineColor="#e0e0e0";halfHourLineColor="#e0e0e0";currentTimeLineColor="#ea4335";currentTimeLineHeight=2;slotHeight=48;dayHeaderHeight=24;entryHeight=22;entryGap=2;entryBorderRadius=4;entryAccentBorderWidth=3;entryMinHeight=20;declinedOpacity=.55;moreTextColor="#555555";entryColors;hoverBackgroundColor="rgba(0, 0, 0, 0.04)";selectedEntryOutlineColor="#1a73e8";dragHighlightColor="rgba(3, 155, 229, 0.15)";scrollbarThumbColor="#c1c1c1";scrollbarTrackColor="#f1f1f1";agendaDayHeaderBackgroundColor="#f8f9fa";agendaDayHeaderTextColor="#333333";agendaEntryHeight=48;agendaEntryGap=1;agendaEntryHoverBackgroundColor="rgba(0, 0, 0, 0.04)";agendaEmptyTextColor="#999999";agendaTimeWidth=80;focusOutlineColor="#1a73e8";focusOutlineWidth=2;focusOutlineOffset=1;constructor(){this.entryColors=[Aa.create({color1:"#a8c7fa",color2:"#1b66c9",textColor:"#1b4fa3",chipBackgroundColor:"#d3e3fd",chipTextColor:"#1b4fa3"}),Aa.create({color1:"#d4b4f0",color2:"#7b1fa2",textColor:"#4a1d6e",chipBackgroundColor:"#e8d5f5",chipTextColor:"#6a1b9a"}),Aa.create({color1:"#a8dab5",color2:"#1e8e3e",textColor:"#1a5c2d",chipBackgroundColor:"#ceead6",chipTextColor:"#137333"}),Aa.create({color1:"#f4b8c8",color2:"#c2185b",textColor:"#7b1140",chipBackgroundColor:"#fad2de",chipTextColor:"#b31650"}),Aa.create({color1:"#f5c89a",color2:"#e8710a",textColor:"#7a3b00",chipBackgroundColor:"#fae0c3",chipTextColor:"#c45e08"}),Aa.create({color1:"#a0d8d8",color2:"#00897b",textColor:"#004d44",chipBackgroundColor:"#c8ecec",chipTextColor:"#00796b"}),Aa.create({color1:"#f4ada8",color2:"#c62828",textColor:"#7f1d1d",chipBackgroundColor:"#fad2cf",chipTextColor:"#b71c1c"}),Aa.create({color1:"#c8c8c8",color2:"#616161",textColor:"#3b3b3b",chipBackgroundColor:"#e0e0e0",chipTextColor:"#424242"})]}}class Fa{backgroundColor="#ffffff";textColor="#333333";borderColor="#e0e0e0";width=256;miniCalendarTodayTextColor="#ffffff";miniCalendarTodayBackgroundColor="#1a73e8";miniCalendarTodayDotColor="#ffffff";miniCalendarSelectedBackgroundColor="#e8f0fe";miniCalendarSelectedTextColor="#1a73e8";miniCalendarOtherMonthTextColor="#b0b0b0";miniCalendarWeekendTextColor="#777777";miniCalendarHoverBackgroundColor="#f0f0f0";miniCalendarDayWithEventsColor="#1a73e8";calendarListHeaderTextColor="#555555";calendarListCheckboxColor="#1a73e8"}class za{backgroundColor="#ffffff";borderColor="#e0e0e0";textColor="#555555";minHeight=28;maxHeight=120;maxVisibleRows=3;rowHeight=24}class Oa{backgroundColor="#ffffff";textColor="#777777";borderColor="#e0e0e0";width=56;fontSize=10}class Na{font=new Dr;colorScheme="light";toolbar;header;content;sidebar;allDay;timeGutter;constructor(){this.toolbar=new Ha,this.header=new Va,this.content=new Ba,this.sidebar=new Fa,this.allDay=new za,this.timeGutter=new Oa}}class Wa extends Na{constructor(){super()}}class Ua{#wt;changed$=new e;constructor(e){this.#wt=e}get locale(){return this.#wt.locale$.getValue()}set locale(e){this.#wt.locale$.next(e),this.#f()}get theme(){return this.#wt.theme$.getValue()}set theme(e){this.#wt.theme$.next(e),this.#f()}get firstDayOfWeek(){return this.#wt.firstDayOfWeek$.getValue()}set firstDayOfWeek(e){if(!Number.isInteger(e)||e<0||e>6)throw new RangeError(`firstDayOfWeek must be an integer between 0 and 6, got ${e}`);this.#wt.firstDayOfWeek$.next(e),this.#f()}get showWeekNumbers(){return this.#wt.showWeekNumbers$.getValue()}set showWeekNumbers(e){this.#wt.showWeekNumbers$.next(e),this.#f()}get slotDuration(){return this.#wt.slotDuration$.getValue()}set slotDuration(e){if(!Number.isInteger(e)||e<=0||60%e!=0)throw new RangeError(`slotDuration must be a positive divisor of 60 (5, 10, 15, 20, 30, or 60), got ${e}`);this.#wt.slotDuration$.next(e),this.#f()}get workingHours(){return this.#wt.workingHours$.getValue()}set workingHours(e){if(!Number.isInteger(e.start)||!Number.isInteger(e.end)||e.start<0||e.end>24||e.start>=e.end)throw new RangeError(`workingHours: start must be 0–23, end must be 1–24, start < end. Got ${e.start}–${e.end}`);this.#wt.workingHours$.next(e),this.#f()}get agendaDays(){return this.#wt.agendaDays$.getValue()}set agendaDays(e){if(!Number.isInteger(e)||e<1||e>90)throw new RangeError(`agendaDays must be an integer between 1 and 90, got ${e}`);this.#wt.agendaDays$.next(e),this.#f()}#f(){this.changed$.next()}}class ja{data;currentDate$;viewMode$;locale$;theme$;firstDayOfWeek$;workingHours$;slotDuration$;showWeekNumbers$;agendaDays$;canEdit$;sidebarVisible$;selectedEntries$;hoveredEntry$;entryRendering$;entryTooltip$;entryClick$=new e;entryDblClick$=new e;entryContextMenu$=new e;dateClick$=new e;dateContextMenu$=new e;moreClick$=new e;entryMoving$=new e;entryResizing$=new e;entryCreating$=new e;entryDeleting$=new e;calendarAddRequested$=new e;calendarRemoving$=new e;viewDateRangeChanged$=new e;settings;constructor(){this.data=new Pa,this.currentDate$=new t(Bt()),this.viewMode$=new t("week");this.locale$=new t({language:"en-US"}),this.theme$=new t(new Wa),this.firstDayOfWeek$=new t(1),this.workingHours$=new t({start:8,end:17}),this.slotDuration$=new t(30),this.showWeekNumbers$=new t(!1),this.agendaDays$=new t(14),this.canEdit$=new t(!0),this.sidebarVisible$=new t(!0),this.selectedEntries$=new t([]),this.hoveredEntry$=new t(null),this.entryRendering$=new t(null),this.entryTooltip$=new t(null),this.settings=new Ua(this)}}class Xa{#T=new r;calendarAdded$=new e;calendarChanged$=new e;calendarRemoved$=new e;calendarAddRequested$=new e;calendarRemoving$=new e;itemAdded$=new e;itemChanged$=new e;itemRemoved$=new e;entryClick$=new e;entryDblClick$=new e;entryContextMenu$=new e;dateClick$=new e;dateContextMenu$=new e;moreClick$=new e;entryMoving$=new e;entryResizing$=new e;entryCreating$=new e;entryDeleting$=new e;viewModeChanged$=new e;currentDateChanged$=new e;viewDateRangeChanged$=new e;selectedEntriesChanged$=new e;selectedEntryChanged$=new e;undone$=new e;redone$=new e;constructor(e){this.#T.add(e.data.calendarAdded$.subscribe(e=>this.calendarAdded$.next(e))),this.#T.add(e.data.calendarChanged$.subscribe(e=>this.calendarChanged$.next(e))),this.#T.add(e.data.calendarRemoved$.subscribe(e=>this.calendarRemoved$.next(e))),this.#T.add(e.calendarAddRequested$.subscribe(()=>this.calendarAddRequested$.next())),this.#T.add(e.calendarRemoving$.subscribe(e=>this.calendarRemoving$.next(e))),this.#T.add(e.data.itemAdded$.subscribe(e=>this.itemAdded$.next(e))),this.#T.add(e.data.itemChanged$.subscribe(e=>this.itemChanged$.next(e))),this.#T.add(e.data.itemRemoved$.subscribe(e=>this.itemRemoved$.next(e))),this.#T.add(e.entryClick$.subscribe(e=>this.entryClick$.next(e))),this.#T.add(e.entryDblClick$.subscribe(e=>this.entryDblClick$.next(e))),this.#T.add(e.entryContextMenu$.subscribe(e=>this.entryContextMenu$.next(e))),this.#T.add(e.dateClick$.subscribe(e=>this.dateClick$.next(e))),this.#T.add(e.dateContextMenu$.subscribe(e=>this.dateContextMenu$.next(e))),this.#T.add(e.moreClick$.subscribe(e=>this.moreClick$.next(e))),this.#T.add(e.entryMoving$.subscribe(e=>this.entryMoving$.next(e))),this.#T.add(e.entryResizing$.subscribe(e=>this.entryResizing$.next(e))),this.#T.add(e.entryCreating$.subscribe(e=>this.entryCreating$.next(e))),this.#T.add(e.entryDeleting$.subscribe(e=>this.entryDeleting$.next(e))),this.#T.add(e.viewMode$.subscribe(e=>this.viewModeChanged$.next(e))),this.#T.add(e.currentDate$.subscribe(e=>this.currentDateChanged$.next(e))),this.#T.add(e.viewDateRangeChanged$.subscribe(e=>this.viewDateRangeChanged$.next(e))),this.#T.add(e.selectedEntries$.subscribe(e=>{this.selectedEntriesChanged$.next(e),this.selectedEntryChanged$.next(e.length>0?e[e.length-1]:null)}))}destroy(){this.#T.unsubscribe()}}class Ya{ec;element;subscriptions=new r;constructor(e,t){this.ec=e,this.element=document.createElement("div"),this.element.style.display="none",t.appendChild(this.element)}show(){this.element.style.display="",this.render()}hide(){this.element.style.display="none"}get isVisible(){return"none"!==this.element.style.display}destroy(){this.subscriptions.unsubscribe(),this.element.remove()}}class Ka{#jl;#Xl=null;#Yl=null;#Kl=[];#As=-1;#Zl=-1;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}attach(e,t){this.#Xl=e,this.#Yl=t,this.#Kl=[];for(var r=e.children,i=0;i<r.length;i++)for(var s=r[i],n=0;n<s.children.length;n++){var a=s.children[n];a.dataset.cellIndex=String(this.#Kl.length),a.style.touchAction="none",this.#Kl.push(a),a.addEventListener("pointerdown",e=>{var t=parseInt(e.currentTarget.dataset.cellIndex,10);this.#th(e,t)})}}cancel(){this.#rh(),this.#ih(),this.#As=-1,this.#Zl=-1,this.#ql=-1}destroy(){this.cancel()}#th(e,t){0===e.button&&(e.target.closest(".ec-entry")||this.#jl.canEdit$.getValue()&&(e.preventDefault(),this.#ql=e.pointerId,this.#Gl=!1,this.#As=t,this.#Zl=t,this.#sh(),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>this.#ja(e),document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh)))}#nh(e){if(e.pointerId===this.#ql&&!(this.#As<0)){var t=this.#lh(e.clientX,e.clientY);t>=0&&t!==this.#Zl&&(this.#Zl=t,this.#Zl!==this.#As&&(this.#Gl=!0),this.#sh())}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#As<0||!this.#Yl)this.cancel();else{var t=Math.min(this.#As,this.#Zl),r=Math.max(this.#As,this.#Zl),i=new Date(this.#Yl);i.setDate(i.getDate()+t),i.setHours(0,0,0,0);var s=new Date(this.#Yl);s.setDate(s.getDate()+r+1),s.setHours(0,0,0,0),this.#ih();var n=this.#Gl;if(this.#As=-1,this.#Zl=-1,this.#ql=-1,n){var a={startTime:i,endTime:s,isAllDay:!0,cancel:!1};this.#jl.entryCreating$.next(a)}}}#oh(e){e.pointerId===this.#ql&&this.cancel()}#ja(e){"Escape"===e.key&&this.cancel()}#sh(){for(var e=Math.min(this.#As,this.#Zl),t=Math.max(this.#As,this.#Zl),r=0;r<this.#Kl.length;r++)this.#Kl[r].classList.toggle("ec-month-day-drag",r>=e&&r<=t)}#ih(){for(var e of this.#Kl)e.classList.remove("ec-month-day-drag")}#lh(e,t){for(var r=0;r<this.#Kl.length;r++){var i=this.#Kl[r].getBoundingClientRect();if(e>=i.left&&e<=i.right&&t>=i.top&&t<=i.bottom)return r}if(0===this.#Kl.length)return-1;for(r=0;r<this.#Kl.length;r+=7){var s=this.#Kl[r].getBoundingClientRect();if(this.#Kl[Math.min(r+6,this.#Kl.length-1)].getBoundingClientRect(),t>=s.top&&t<=s.bottom)return e<s.left?r:Math.min(r+6,this.#Kl.length-1)}return t<this.#Kl[0].getBoundingClientRect().top?0:this.#Kl.length-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class Za{#jl;#hh=null;#dh=null;#ch=null;#Kl=[];#Yl=null;#As=-1;#Zl=-1;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}startDrag(e,t,r,i,s){if(0===e.button&&this.#jl.canEdit$.getValue()){e.preventDefault(),e.stopPropagation(),this.#ql=e.pointerId,this.#hh=t,this.#dh=r,this.#Kl=i,this.#Yl=s,this.#Gl=!1;var n=this.#lh(e.clientX,e.clientY);n<0||(this.#As=n,this.#Zl=n,r.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh))}}cancel(){this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),this.#ih(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#rh(),this.#gh()}destroy(){this.cancel()}#nh(e){if(e.pointerId===this.#ql&&!(this.#As<0)){var t=this.#lh(e.clientX,e.clientY);t>=0&&t!==this.#Zl&&(this.#Zl=t,this.#Zl!==this.#As&&(this.#Gl=!0),this.#mh())}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),!this.#hh||!this.#Yl||this.#As<0)this.cancel();else{var t=this.#Zl-this.#As;if(this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),this.#ih(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==t){var r=this.#hh,i=24*t*60*60*1e3,s=new Date(r.startTime.getTime()+i),n=new Date(r.endTime.getTime()+i),a={entry:r,newStartTime:s,newEndTime:n,cancel:!1};this.#jl.entryMoving$.next(a),a.cancel||(r.item.startTime=a.newStartTime,r.item.endTime=a.newEndTime),this.#gh()}else this.#gh()}}#oh(e){e.pointerId===this.#ql&&this.cancel()}#sh(){for(var e=0;e<this.#Kl.length;e++)this.#Kl[e].classList.toggle("ec-month-day-drag",e===this.#Zl)}#ih(){for(var e of this.#Kl)e.classList.remove("ec-month-day-drag")}#mh(){if(this.#dh&&this.#Zl!==this.#As){this.#ch||(this.#ch=this.#dh.cloneNode(!0),this.#ch.classList.remove("ec-entry-dragging"),this.#ch.classList.add("ec-entry-drag-preview"));var e=this.#Kl[this.#Zl];if(e){var t=e.querySelector(".ec-month-day-entries")??e;this.#ch.parentElement!==t&&t.appendChild(this.#ch)}}else this.#uh()}#uh(){this.#ch&&(this.#ch.remove(),this.#ch=null)}#lh(e,t){for(var r=0;r<this.#Kl.length;r++){var i=this.#Kl[r].getBoundingClientRect();if(e>=i.left&&e<=i.right&&t>=i.top&&t<=i.bottom)return r}if(0===this.#Kl.length)return-1;for(r=0;r<this.#Kl.length;r+=7){var s=this.#Kl[r].getBoundingClientRect();if(t>=s.top&&t<=s.bottom)return e<s.left?r:Math.min(r+6,this.#Kl.length-1)}return t<this.#Kl[0].getBoundingClientRect().top?0:this.#Kl.length-1}#gh(){this.#hh=null,this.#dh=null,this.#As=-1,this.#Zl=-1,this.#Gl=!1,this.#ql=-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}function Ga(e,t,r){return Xr(t.getEntryColor(e),r.content.entryColors)}function qa(e,t,r){var i,s,n,a,o;if("meeting"===t.type&&"accepted"!==t.responseStatus)switch(t.responseStatus){case"tentative":e.classList.add("ec-entry-tentative"),e.style.setProperty("--ec-entry-stripe-color",(i=r.chipBackgroundColor,s=.55,n=parseInt(i.slice(1,3),16),a=parseInt(i.slice(3,5),16),o=parseInt(i.slice(5,7),16),`rgba(${n}, ${a}, ${o}, ${s})`));break;case"needsAction":e.classList.add("ec-entry-needs-action"),e.style.setProperty("--ec-entry-status-color",r.color2);break;case"declined":e.classList.add("ec-entry-declined")}}function _a(e){var t=document.createElement("span");return t.className="ec-entry-icon",t.setAttribute("aria-hidden","true"),t.innerHTML=e,t}function Ja(e,t,r,i){var s=i.entryRendering$.getValue();if(s){var n=i.theme$.getValue(),a=Ga(t,i.data,n);s({entry:t,element:e,isAllDay:r,viewMode:i.viewMode$.getValue(),color:a})}}function Qa(e,t){"meeting"===t.type?e.appendChild(_a('<svg viewBox="0 0 20 20" fill="currentColor"><circle cx="7" cy="6" r="2.5"/><path d="M2 14c0-2.2 2.2-4 5-4s5 1.8 5 4"/><circle cx="14" cy="6.5" r="2"/><path d="M13 10.2c.3-.05.6-.08 1-.08 2.2 0 4 1.4 4 3.2"/></svg>')):"birthday"===t.type?e.appendChild(_a('<svg viewBox="0 0 20 20" fill="currentColor"><rect x="3" y="10" width="14" height="7" rx="1.5"/><rect x="5" y="7" width="10" height="3" rx="1"/><rect x="9" y="4" width="2" height="3"/><circle cx="10" cy="3" r="1.5"/></svg>')):"reminder"===t.type&&e.appendChild(_a('<svg viewBox="0 0 20 20" fill="currentColor"><path d="M10 2a1 1 0 0 1 1 1v.5a5 5 0 0 1 4 4.9V12l1.7 2.6a.5.5 0 0 1-.4.8H3.7a.5.5 0 0 1-.4-.8L5 12V8.4a5 5 0 0 1 4-4.9V3a1 1 0 0 1 1-1z"/><path d="M8 16a2 2 0 1 0 4 0"/></svg>')),t.isRecurring&&e.appendChild(_a('<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10a6.5 6.5 0 0 1 11-4.7"/><polyline points="15 2 15 6 11 6"/><path d="M16.5 10a6.5 6.5 0 0 1-11 4.7"/><polyline points="5 18 5 14 9 14"/></svg>')),e.appendChild(document.createTextNode(t.title??""))}function eo(e){e.addEventListener("focus",()=>{"true"!==e.getAttribute("aria-selected")&&(e.style.outline="var(--ec-focus-outline-width, 2px) solid var(--ec-focus-outline, #1a73e8)",e.style.outlineOffset="var(--ec-focus-outline-offset, 1px)")}),e.addEventListener("blur",()=>{"true"!==e.getAttribute("aria-selected")&&(e.style.outline="",e.style.outlineOffset="")})}function to(e,t){for(var r=new Set(t.map(e=>e.id)),i=e.querySelectorAll(".ec-entry"),s=0;s<i.length;s++){var n=i[s],a=n.dataset.entryId,o=void 0!==a&&r.has(a);n.setAttribute("aria-selected",String(o)),o?(n.style.outline="2px solid var(--ec-selected-outline, #1a73e8)",n.style.outlineOffset="1px"):(n.style.outline="",n.style.outlineOffset="")}}class ro extends Ya{#ph;#Xl;#vh;#fh;#yh=[];#Jn;#bh=0;constructor(e,t){super(e,t),this.element.classList.add("ec-month-view"),this.#vh=new Ka(e),this.#fh=new Za(e),this.#Jn=new ResizeObserver(()=>{if(this.isVisible){var e=this.#wh();e!==this.#bh&&(this.#bh=e,this.render())}}),this.#Th(),this.#x()}#Th(){this.#ph=document.createElement("div"),this.#ph.classList.add("ec-month-header"),this.#ph.setAttribute("role","row"),this.element.appendChild(this.#ph),this.#Xl=document.createElement("div"),this.#Xl.classList.add("ec-month-grid"),this.#Xl.setAttribute("role","grid"),this.#Xl.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaCalendarGrid??"Calendar grid"),this.element.appendChild(this.#Xl),this.#Jn.observe(this.#Xl),this.#Ch()}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.firstDayOfWeek$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&to(this.element,e)}))}getVisibleRange(e){var t=this.ec.firstDayOfWeek$.getValue(),r=e.getFullYear(),i=e.getMonth(),s=new Date(r,i,1).getDay(),n=new Date(r,i,1-(s-t+7)%7),a=new Date(n);return a.setDate(n.getDate()+42),{start:n,end:a}}render(){this.#vh.cancel(),this.#fh.cancel();var e=this.ec.currentDate$.getValue(),t=this.ec.firstDayOfWeek$.getValue(),r=this.ec.locale$.getValue(),i=this.ec.theme$.getValue();this.#xh(t,r.language);var s=this.getVisibleRange(e),n=this.ec.data.getEntries({start:s.start,end:s.end});this.#kh(s.start,e,n,i),this.#vh.attach(this.#Xl,s.start),this.ec.viewDateRangeChanged$.next(s)}#xh(e,t){if(this.#ph.innerHTML="",this.ec.showWeekNumbers$.getValue()){var r=document.createElement("div");r.classList.add("ec-month-header-cell","ec-month-wn-header"),r.setAttribute("role","columnheader");var i=this.ec.locale$.getValue().calendar;r.textContent=i?.weekNumberShort??"Wk",this.#ph.appendChild(r)}for(var s=new Intl.DateTimeFormat(t,{weekday:"short"}),n=0;n<7;n++){var a=new Date(2024,0,7+(e+n)%7),o=document.createElement("div");o.classList.add("ec-month-header-cell"),o.setAttribute("role","columnheader"),o.textContent=s.format(a),this.#ph.appendChild(o)}}#kh(e,t,r,i){this.#Xl.innerHTML="",this.#yh=[];var s=new Date;s.setHours(0,0,0,0);for(var n=t.getMonth(),a=this.ec.locale$.getValue().language,o=new Intl.DateTimeFormat(a,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),l=[],h=this.ec.showWeekNumbers$.getValue(),d=0;d<6;d++){var c=document.createElement("div");if(c.classList.add("ec-month-week"),c.setAttribute("role","row"),h){var u=new Date(e);u.setDate(e.getDate()+7*d);var g=document.createElement("div");g.classList.add("ec-month-wn"),g.setAttribute("role","rowheader"),g.textContent=Gt(u).toString(),c.appendChild(g)}for(var m=0;m<7;m++){var p=new Date(e);p.setDate(e.getDate()+7*d+m);var v=document.createElement("div");v.classList.add("ec-month-day"),v.setAttribute("role","gridcell"),v.setAttribute("aria-label",o.format(p)),p.getMonth()!==n&&v.classList.add("ec-other-month"),p.getTime()===s.getTime()&&(v.classList.add("ec-today"),v.setAttribute("aria-current","date"));var f=document.createElement("div");f.classList.add("ec-month-day-header"),f.textContent=p.getDate().toString(),v.appendChild(f);var y=document.createElement("div");y.classList.add("ec-month-day-entries"),v.appendChild(y);var b=this.#Eh(r,p);l.push({container:y,entries:b,cellDate:p}),this.#Dh(v,p),v.tabIndex=-1,this.#yh.push(v),c.appendChild(v)}this.#Xl.appendChild(c)}var w=this.#wh();for(var T of l)this.#Sh(T.container,T.entries,T.cellDate,i,e,w)}#wh(){if(0===this.#yh.length)return 3;var e=this.#yh[0],t=e.offsetHeight;if(0===t)return 3;var r=e.querySelector(".ec-month-day-header"),i=r?.offsetHeight??24,s=getComputedStyle(e),n=t-i+7,a=(parseInt(s.getPropertyValue("--ec-entry-height"))||22)+(parseInt(s.getPropertyValue("--ec-entry-gap"))||2);return Math.max(1,Math.floor(n/a))}#Eh(e,t){var r=new Date(t);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+1),e.filter(e=>{var t=e.startTime,s=e.endTime;return t<i&&s>r})}#Sh(e,t,r,i,s,n){var a=t.length<=n?t.length:Math.max(1,n-1),o=t.slice(0,a),l=this.ec.locale$.getValue().language,h=new Intl.DateTimeFormat(l,{hour:"numeric",minute:"2-digit"});for(var d of o){var c=document.createElement("div");c.classList.add("ec-entry"),c.tabIndex=0,c.setAttribute("role","button"),c.setAttribute("aria-selected","false"),eo(c);var u=d.title??"";d.isAllDay?u+=", "+(this.ec.locale$.getValue().calendar?.allDay??"all-day"):d.startTime&&d.endTime&&(u+=", "+h.format(d.startTime)+" – "+h.format(d.endTime)),c.setAttribute("aria-label",u),Qa(c,d),c.dataset.entryId=d.id;var g=new Date(d.startTime);g.setHours(0,0,0,0);var m=new Date(d.endTime);m.setHours(0,0,0,0);var p=m.getTime()>g.getTime()+864e5||d.isAllDay;p?c.classList.add("ec-entry-multiday"):c.classList.add("ec-entry-single");var v=Ga(d,this.ec.data,i);p?(c.style.backgroundColor=v.chipBackgroundColor,c.style.color=v.chipTextColor):(c.style.backgroundColor=v.chipBackgroundColor,c.style.color=v.chipTextColor,c.style.borderLeft=`var(--ec-entry-accent-width, 3px) solid ${v.color2}`),qa(c,d,v),Ja(c,d,!0,this.ec),this.#$h(c,d,s),e.appendChild(c)}if(t.length>a){var f=t.length-a,y=this.ec.locale$.getValue().calendar,b=document.createElement("div");b.classList.add("ec-month-day-more"),b.setAttribute("role","button"),b.tabIndex=0,b.textContent=y?.more?y.more(f):`+${f} more`,b.setAttribute("aria-label",y?.ariaMoreEvents?y.ariaMoreEvents(f):`${f} more events`),b.addEventListener("click",e=>{e.stopPropagation(),this.ec.moreClick$.next({date:new Date(r),entries:t})}),e.appendChild(b)}}#Ch(){this.#Xl.addEventListener("keydown",e=>{var t=e.target;if(t.classList.contains("ec-month-day")){var r=this.#yh.indexOf(t);if(!(r<0)){var i=-1;switch(e.key){case"ArrowLeft":i=r-1;break;case"ArrowRight":i=r+1;break;case"ArrowUp":i=r-7;break;case"ArrowDown":i=r+7;break;default:return}i>=0&&i<this.#yh.length&&(e.preventDefault(),this.#yh[i].tabIndex=0,this.#yh[i].focus(),t.tabIndex=-1)}}})}#Dh(e,t){e.addEventListener("click",e=>{e.target.closest(".ec-entry")||this.#vh.didDrag||(this.ec.selectedEntries$.next([]),this.ec.dateClick$.next({date:new Date(t),isAllDay:!0,domEvent:e}))}),e.addEventListener("contextmenu",e=>{e.preventDefault(),this.ec.dateContextMenu$.next({date:new Date(t),isAllDay:!0,entry:null,domEvent:e})})}#$h(e,t,r){e.style.touchAction="none",e.addEventListener("pointerdown",i=>{0===i.button&&this.ec.canEdit$.getValue()&&this.#fh.startDrag(i,t,e,this.#yh,r)}),e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),!this.#fh.didDrag){if(e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}destroy(){this.#Jn.disconnect(),this.#vh.destroy(),this.#fh.destroy(),super.destroy()}}class io{static getHourLabels(e){for(var t=new Intl.DateTimeFormat(e,{hour:"numeric"}),r=[],i=0;i<24;i++){var s=new Date(2024,0,1,i,0);r.push(t.format(s))}return r}static timeToY(e,t){return(60*e.getHours()+e.getMinutes())*t}static durationToHeight(e,t,r){var i=60*e.getHours()+e.getMinutes(),s=60*t.getHours()+t.getMinutes();return s<i&&(s=1440),(s-i)*r}static splitByDay(e,t){var r=t.map(e=>({date:new Date(e),allDay:[],timed:[]}));for(var i of e)for(var s=i.startTime,n=i.endTime,a=n.getTime()-s.getTime(),o=i.isAllDay||a>=864e5,l=0;l<t.length;l++){var h=new Date(t[l]);h.setHours(0,0,0,0);var d=new Date(h);d.setDate(d.getDate()+1),s<d&&n>h&&(o?r[l].allDay.push(i):r[l].timed.push(i))}return r}static resolveOverlaps(e){if(0===e.length)return[];for(var t=[...e].sort((e,t)=>{var r=e.startTime.getTime()-t.startTime.getTime();return 0!==r?r:t.endTime.getTime()-t.startTime.getTime()-(e.endTime.getTime()-e.startTime.getTime())}),r=[],i=[t[0]],s=t[0].endTime.getTime(),n=1;n<t.length;n++){(d=t[n]).startTime.getTime()<s?(i.push(d),d.endTime.getTime()>s&&(s=d.endTime.getTime())):(r.push(i),i=[d],s=d.endTime.getTime())}r.push(i);var a=[];for(var o of r){var l=[],h=new Map;for(var d of o){for(var c=!1,u=0;u<l.length;u++)if(d.startTime.getTime()>=l[u].endTime){l[u].endTime=d.endTime.getTime(),h.set(d,u),c=!0;break}c||(h.set(d,l.length),l.push({endTime:d.endTime.getTime()}))}var g=l.length;for(var d of o)a.push({entry:d,column:h.get(d),totalColumns:g})}return a}}class so{#jl;#Rh=null;#Mh=null;#Lh=0;#Ih=0;#Ph=null;#Ah=0;#Hh=30;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}attach(e,t,r,i){e.style.touchAction="none",e.addEventListener("pointerdown",s=>{if(0===s.button&&!s.target.closest(".ec-tg-entry")&&this.#jl.canEdit$.getValue()){s.preventDefault(),this.#ql=s.pointerId,this.#Rh=e,this.#Mh=t,this.#Ah=r,this.#Hh=i;var n=e.getBoundingClientRect(),a=(s.clientY-n.top+e.scrollTop)/r;this.#Lh=this.#Vh(a,i),this.#Ih=this.#Lh+i,this.#Gl=!1,this.#Ph=document.createElement("div"),this.#Ph.classList.add("ec-tg-drag-preview"),e.appendChild(this.#Ph),this.#mh(),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>this.#ja(e),document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh)}})}cancel(){this.#rh(),this.#uh()}destroy(){this.cancel()}#nh(e){if(e.pointerId===this.#ql&&this.#Rh&&this.#Ph){var t=this.#Rh.getBoundingClientRect(),r=(e.clientY-t.top+this.#Rh.scrollTop)/this.#Ah;this.#Ih=this.#Vh(r,this.#Hh),this.#Ih!==this.#Lh&&this.#Ih!==this.#Lh+this.#Hh&&(this.#Gl=!0),this.#Ih===this.#Lh&&(this.#Ih=this.#Lh+this.#Hh),this.#Ih=Math.max(0,Math.min(1440,this.#Ih)),this.#mh()}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#Rh&&this.#Mh&&this.#Ph){var t=Math.min(this.#Lh,this.#Ih),r=Math.max(this.#Lh,this.#Ih),i=new Date(this.#Mh);i.setHours(Math.floor(t/60),t%60,0,0);var s=new Date(this.#Mh);if(s.setHours(Math.floor(r/60),r%60,0,0),this.#uh(),this.#Gl){var n={startTime:i,endTime:s,isAllDay:!1,cancel:!1};this.#jl.entryCreating$.next(n)}}else this.#uh()}#oh(e){e.pointerId===this.#ql&&this.cancel()}#ja(e){"Escape"===e.key&&this.cancel()}#mh(){if(this.#Ph){var e=Math.min(this.#Lh,this.#Ih),t=Math.max(this.#Lh,this.#Ih);this.#Ph.style.top=e*this.#Ah+"px",this.#Ph.style.height=(t-e)*this.#Ah+"px";var r=this.#jl.locale$.getValue().language,i=new Intl.DateTimeFormat(r,{hour:"numeric",minute:"2-digit"}),s=new Date(2024,0,1);s.setHours(Math.floor(e/60),e%60);var n=i.format(s);s.setHours(Math.floor(t/60),t%60);var a=i.format(s);this.#Ph.textContent=n+" – "+a}}#Vh(e,t){return Math.round(e/t)*t}#uh(){this.#Ph&&(this.#Ph.remove(),this.#Ph=null),this.#Rh=null,this.#Mh=null,this.#ql=-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class no{#jl;#Bh=null;#Fh=[];#As=-1;#Zl=-1;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}attach(e,t){this.#Bh=e,this.#Fh=t;for(var r=0;r<e.children.length;r++){var i=e.children[r];i.dataset.cellIndex=String(r),i.style.touchAction="none",i.addEventListener("pointerdown",e=>{var t=parseInt(e.currentTarget.dataset.cellIndex,10);this.#th(e,t)})}}cancel(){this.#rh(),this.#ih(),this.#As=-1,this.#Zl=-1,this.#Gl=!1,this.#ql=-1}destroy(){this.cancel()}#th(e,t){0===e.button&&(e.target.closest(".ec-entry")||this.#jl.canEdit$.getValue()&&(e.preventDefault(),this.#ql=e.pointerId,this.#Gl=!1,this.#As=t,this.#Zl=t,this.#sh(),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>this.#ja(e),document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh)))}#nh(e){if(e.pointerId===this.#ql&&this.#Bh&&!(this.#As<0)){var t=this.#lh(e.clientX,e.clientY);t>=0&&t!==this.#Zl&&(this.#Zl=t,this.#Zl!==this.#As&&(this.#Gl=!0),this.#sh())}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#As<0)this.cancel();else{var t=Math.min(this.#As,this.#Zl),r=Math.max(this.#As,this.#Zl),i=new Date(this.#Fh[t]);i.setHours(0,0,0,0);var s=new Date(this.#Fh[r]);s.setDate(s.getDate()+1),s.setHours(0,0,0,0),this.#ih();var n=this.#Gl;if(this.#As=-1,this.#Zl=-1,this.#Gl=!1,this.#ql=-1,n){var a={startTime:i,endTime:s,isAllDay:!0,cancel:!1};this.#jl.entryCreating$.next(a)}}}#oh(e){e.pointerId===this.#ql&&this.cancel()}#ja(e){"Escape"===e.key&&this.cancel()}#sh(){if(this.#Bh)for(var e=Math.min(this.#As,this.#Zl),t=Math.max(this.#As,this.#Zl),r=0;r<this.#Bh.children.length;r++){this.#Bh.children[r].classList.toggle("ec-tg-allday-drag",r>=e&&r<=t)}}#ih(){if(this.#Bh)for(var e=0;e<this.#Bh.children.length;e++)this.#Bh.children[e].classList.remove("ec-tg-allday-drag")}#lh(e,t){if(!this.#Bh)return-1;for(var r=0;r<this.#Bh.children.length;r++){var i=this.#Bh.children[r].getBoundingClientRect();if(e>=i.left&&e<=i.right)return r}return this.#Bh.children.length>0?e<this.#Bh.children[0].getBoundingClientRect().left?0:this.#Bh.children.length-1:-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class ao{#jl;#hh=null;#zh=null;#dh=null;#ch=null;#es=null;#Oh=null;#Nh=[];#Wh=[];#Uh=-1;#jh=-1;#Xh=0;#Yh=30;#Kh=0;#Zh=0;#Gh=0;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}attach(e,t,r,i,s,n,a,o){var l=document.createElement("div");l.classList.add("ec-tg-entry-resize-handle","ec-tg-entry-resize-handle-top"),l.style.touchAction="none",e.appendChild(l);var h=document.createElement("div");h.classList.add("ec-tg-entry-resize-handle","ec-tg-entry-resize-handle-bottom"),h.style.touchAction="none",e.appendChild(h);var d=a??[r],c=o??[i];l.addEventListener("pointerdown",a=>{a.stopPropagation(),0===a.button&&this.#jl.canEdit$.getValue()&&this.#Vo(a,e,t,r,i,s,n,"resize-start",d,c)}),h.addEventListener("pointerdown",a=>{a.stopPropagation(),0===a.button&&this.#jl.canEdit$.getValue()&&this.#Vo(a,e,t,r,i,s,n,"resize-end",d,c)}),e.style.touchAction="none",e.addEventListener("pointerdown",a=>{0===a.button&&(a.target.closest(".ec-tg-entry-resize-handle")||this.#jl.canEdit$.getValue()&&this.#Vo(a,e,t,r,i,s,n,"move",d,c))})}cancel(){this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#rh(),this.#gh()}destroy(){this.cancel()}#Vo(e,t,r,i,s,n,a,o,l,h){e.preventDefault(),this.#ql=e.pointerId,this.#hh=r,this.#zh=o,this.#dh=t,this.#es=i,this.#Oh=s,this.#Nh=l,this.#Wh=h,this.#Uh=l.indexOf(i),this.#jh=this.#Uh,this.#Xh=n,this.#Yh=a,this.#Kh=parseFloat(t.style.top),this.#Zh=parseFloat(t.style.height),this.#Gh=e.clientY,t.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh)}#nh(e){if(e.pointerId===this.#ql&&this.#dh){var t=e.clientY-this.#Gh,r=this.#Vh(t/this.#Xh,this.#Yh)*this.#Xh;if("move"===this.#zh){var i=Math.max(0,this.#Kh+r),s=this.#qh(e.clientX);s<0&&(s=this.#jh),this.#jh=s,this.#_h(),this.#ch.style.top=i+"px";var n=this.#Nh[s];this.#ch.parentElement!==n&&n.appendChild(this.#ch)}else if("resize-start"===this.#zh){var a=this.#Yh*this.#Xh,o=this.#Zh-a,l=Math.min(r,o),h=Math.max(0,this.#Kh+l),d=Math.max(a,this.#Zh-l);this.#_h(),this.#ch.style.top=h+"px",this.#ch.style.height=d+"px"}else if("resize-end"===this.#zh){var c=Math.max(this.#Yh*this.#Xh,this.#Zh+r);this.#_h(),this.#ch.style.height=c+"px"}}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#hh&&this.#dh&&this.#Oh){var t=e.clientY-this.#Gh,r=this.#Vh(t/this.#Xh,this.#Yh),i=this.#jh-this.#Uh;if(this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==r||0!==i){var s=this.#hh,n=s.startTime,a=s.endTime;if("move"===this.#zh){var o=6e4*r+24*i*60*60*1e3,l=new Date(n.getTime()+o),h=new Date(a.getTime()+o);if(60*l.getHours()+l.getMinutes()<0){var d=this.#Wh[this.#jh]??this.#Oh;(l=new Date(d)).setHours(0,0,0,0),h=new Date(l.getTime()+(a.getTime()-n.getTime()))}var c={entry:s,newStartTime:l,newEndTime:h,cancel:!1};this.#jl.entryMoving$.next(c),c.cancel||(s.item.startTime=c.newStartTime,s.item.endTime=c.newEndTime)}else if("resize-start"===this.#zh){var u=new Date(n.getTime()+6e4*r);a.getTime()-u.getTime()<6e4*this.#Yh&&(u=new Date(a.getTime()-6e4*this.#Yh));var g=new Date(this.#Oh);g.setHours(0,0,0,0),u.getTime()<g.getTime()&&(u=g);var m={entry:s,newStartTime:u,newEndTime:a,edge:"start",cancel:!1};this.#jl.entryResizing$.next(m),m.cancel||(s.item.startTime=m.newStartTime)}else if("resize-end"===this.#zh){var p=new Date(a.getTime()+6e4*r);p.getTime()-n.getTime()<6e4*this.#Yh&&(p=new Date(n.getTime()+6e4*this.#Yh));var v={entry:s,newStartTime:n,newEndTime:p,edge:"end",cancel:!1};this.#jl.entryResizing$.next(v),v.cancel||(s.item.endTime=v.newEndTime)}this.#gh()}else this.#gh()}else this.cancel()}#oh(e){e.pointerId===this.#ql&&this.cancel()}#_h(){!this.#ch&&this.#dh&&(this.#ch=this.#dh.cloneNode(!0),this.#ch.classList.remove("ec-entry-dragging"),this.#ch.classList.add("ec-entry-drag-preview"),this.#ch.style.top=this.#Kh+"px",this.#ch.style.height=this.#Zh+"px",this.#es.appendChild(this.#ch))}#uh(){this.#ch&&(this.#ch.remove(),this.#ch=null)}#Vh(e,t){return Math.round(e/t)*t}#qh(e){for(var t=0;t<this.#Nh.length;t++){var r=this.#Nh[t].getBoundingClientRect();if(e>=r.left&&e<=r.right)return t}return 0===this.#Nh.length?-1:e<this.#Nh[0].getBoundingClientRect().left?0:this.#Nh.length-1}#gh(){this.#hh=null,this.#zh=null,this.#dh=null,this.#es=null,this.#Oh=null,this.#Nh=[],this.#Wh=[],this.#Uh=-1,this.#jh=-1,this.#ql=-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class oo{#jl;#hh=null;#dh=null;#ch=null;#Kl=[];#Fh=[];#As=-1;#Zl=-1;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}startDrag(e,t,r,i,s){if(0===e.button&&this.#jl.canEdit$.getValue()){e.preventDefault(),e.stopPropagation(),this.#ql=e.pointerId,this.#hh=t,this.#dh=r,this.#Fh=s,this.#Gl=!1,this.#Kl=[];for(var n=0;n<i.children.length;n++)this.#Kl.push(i.children[n]);var a=this.#lh(e.clientX);a<0||(this.#As=a,this.#Zl=a,r.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh))}}cancel(){this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),this.#ih(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#rh(),this.#gh()}destroy(){this.cancel()}#nh(e){if(e.pointerId===this.#ql&&!(this.#As<0)){var t=this.#lh(e.clientX);t>=0&&t!==this.#Zl&&(this.#Zl=t,this.#Zl!==this.#As&&(this.#Gl=!0),this.#mh())}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),!this.#hh||this.#As<0)this.cancel();else{var t=this.#Zl-this.#As;if(this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),this.#ih(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==t){var r=this.#hh,i=24*t*60*60*1e3,s=new Date(r.startTime.getTime()+i),n=new Date(r.endTime.getTime()+i),a={entry:r,newStartTime:s,newEndTime:n,cancel:!1};this.#jl.entryMoving$.next(a),a.cancel||(r.item.startTime=a.newStartTime,r.item.endTime=a.newEndTime),this.#gh()}else this.#gh()}}#oh(e){e.pointerId===this.#ql&&this.cancel()}#sh(){for(var e=0;e<this.#Kl.length;e++)this.#Kl[e].classList.toggle("ec-tg-allday-drag",e===this.#Zl)}#ih(){for(var e of this.#Kl)e.classList.remove("ec-tg-allday-drag")}#mh(){if(this.#dh&&this.#Zl!==this.#As){this.#ch||(this.#ch=this.#dh.cloneNode(!0),this.#ch.classList.remove("ec-entry-dragging"),this.#ch.classList.add("ec-entry-drag-preview"));var e=this.#Kl[this.#Zl];e&&this.#ch.parentElement!==e&&e.appendChild(this.#ch)}else this.#uh()}#uh(){this.#ch&&(this.#ch.remove(),this.#ch=null)}#lh(e){for(var t=0;t<this.#Kl.length;t++){var r=this.#Kl[t].getBoundingClientRect();if(e>=r.left&&e<=r.right)return t}return 0===this.#Kl.length?-1:e<this.#Kl[0].getBoundingClientRect().left?0:this.#Kl.length-1}#gh(){this.#hh=null,this.#dh=null,this.#Kl=[],this.#As=-1,this.#Zl=-1,this.#Gl=!1,this.#ql=-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class lo extends Ya{#Jh;#ph;#Qh;#ed;#Bh;#td;#rd;#id;#sd=null;#nd=null;#ad="";#vh;#od;#ld;#fh;constructor(e,t){super(e,t),this.element.classList.add("ec-week-view"),this.#vh=new so(e),this.#od=new no(e),this.#ld=new oo(e),this.#fh=new ao(e),this.#Th(),this.#x()}get dayCount(){return 7}getDays(e){for(var t=this.getVisibleRange(e),r=[],i=0;i<this.dayCount;i++){var s=new Date(t.start);s.setDate(t.start.getDate()+i),r.push(s)}return r}#Th(){this.#Jh=document.createElement("div"),this.#Jh.classList.add("ec-tg-scroll"),this.element.appendChild(this.#Jh),this.#ph=document.createElement("div"),this.#ph.classList.add("ec-tg-header"),this.#Jh.appendChild(this.#ph),this.#Qh=document.createElement("div"),this.#Qh.classList.add("ec-tg-allday"),this.#Qh.setAttribute("role","region"),this.#Qh.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaAllDayEvents??"All-day events"),this.#ed=document.createElement("div"),this.#ed.classList.add("ec-tg-gutter-corner"),this.#Qh.appendChild(this.#ed),this.#Bh=document.createElement("div"),this.#Bh.classList.add("ec-tg-allday-row"),this.#Qh.appendChild(this.#Bh),this.#Jh.appendChild(this.#Qh),this.#td=document.createElement("div"),this.#td.classList.add("ec-tg-body"),this.#rd=document.createElement("div"),this.#rd.classList.add("ec-tg-gutter"),this.#td.appendChild(this.#rd),this.#id=document.createElement("div"),this.#id.classList.add("ec-tg-content"),this.#td.appendChild(this.#id),this.#Jh.appendChild(this.#td)}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.firstDayOfWeek$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.slotDuration$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.workingHours$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&to(this.element,e)}))}show(){this.#ad="",super.show()}getVisibleRange(e){var t=this.ec.firstDayOfWeek$.getValue(),r=(e.getDay()-t+7)%7,i=new Date(e);i.setDate(e.getDate()-r),i.setHours(0,0,0,0);var s=new Date(i);return s.setDate(i.getDate()+7),{start:i,end:s}}render(){this.#vh.cancel(),this.#od.cancel(),this.#ld.cancel(),this.#fh.cancel();var e=this.ec.currentDate$.getValue(),t=this.ec.locale$.getValue(),r=this.ec.slotDuration$.getValue(),i=this.ec.workingHours$.getValue(),s=this.getDays(e),n=this.getVisibleRange(e),a=this.ec.data.getEntries({start:n.start,end:n.end}),o=io.splitByDay(a,s),l=48/r;this.#xh(s,t.language),this.#hd(o,s),this.#dd(t.language,r,48),this.#cd(s,o,l,r,48),this.#ud(s,l),this.ec.viewDateRangeChanged$.next(n);var h=n.start.getTime().toString();this.#ad!==h&&(this.#ad=h,requestAnimationFrame(()=>{var e,t=new Date,r=new Date(t.getFullYear(),t.getMonth(),t.getDate());e=r>=n.start&&r<n.end?Math.max(0,t.getHours()-1):i.start,this.#Jh.scrollTop=60*e*l}))}#xh(e,t){this.#ph.innerHTML="";var r=document.createElement("div");if(r.classList.add("ec-tg-gutter-corner"),this.ec.showWeekNumbers$.getValue()&&e.length>0){r.classList.add("ec-tg-week-number");var i=this.ec.locale$.getValue().calendar,s=i?.weekNumberShort??"Wk";r.textContent=s+" "+Gt(e[0]),r.setAttribute("aria-label",(i?.weekNumber??"Week")+" "+Gt(e[0]))}this.#ph.appendChild(r);var n=new Date;n.setHours(0,0,0,0);var a=new Intl.DateTimeFormat(t,{weekday:"short"}),o=new Intl.DateTimeFormat(t,{day:"numeric"}),l=new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric"});for(var h of e){var d=document.createElement("div");d.classList.add("ec-tg-day-header"),d.setAttribute("role","columnheader"),d.setAttribute("aria-label",l.format(h)),h.getTime()===n.getTime()&&(d.classList.add("ec-tg-today"),d.setAttribute("aria-current","date"));var c=document.createElement("span");c.classList.add("ec-tg-day-name"),c.textContent=a.format(h);var u=document.createElement("span");u.classList.add("ec-tg-day-number"),u.textContent=o.format(h),h.getTime()===n.getTime()&&u.classList.add("ec-tg-today-number"),d.appendChild(c),d.appendChild(u),this.#ph.appendChild(d)}}#hd(e,t){for(var r of(this.#Bh.innerHTML="",e)){var i=document.createElement("div");for(var s of(i.classList.add("ec-tg-allday-cell"),r.allDay)){var n=document.createElement("div");n.classList.add("ec-entry","ec-entry-multiday"),n.tabIndex=0,n.setAttribute("role","button"),n.setAttribute("aria-selected","false"),eo(n);var a=(s.title??"")+", "+(this.ec.locale$.getValue().calendar?.allDay??"all-day");n.setAttribute("aria-label",a),n.dataset.entryId=s.id,Qa(n,s);var o=this.ec.theme$.getValue(),l=Ga(s,this.ec.data,o);n.style.backgroundColor=l.chipBackgroundColor,n.style.color=l.chipTextColor,qa(n,s,l),Ja(n,s,!0,this.ec),this.#gd(n,s),this.#md(n,s,t),i.appendChild(n)}this.#Bh.appendChild(i)}this.#od.attach(this.#Bh,t);var h=this.#ph.offsetHeight;this.#Qh.style.top=h+"px"}#dd(e,t,r){this.#rd.innerHTML="";for(var i=io.getHourLabels(e),s=60/t,n=0;n<24;n++)for(var a=0;a<s;a++){var o=document.createElement("div");if(o.classList.add("ec-tg-gutter-slot"),o.style.height=r+"px",0===a){o.classList.add("ec-tg-gutter-hour"),o.setAttribute("role","rowheader");var l=document.createElement("span");l.classList.add("ec-tg-gutter-label"),l.textContent=i[n],o.appendChild(l)}else o.classList.add("ec-tg-gutter-sub");this.#rd.appendChild(o)}}#cd(e,t,r,i,s){this.#id.innerHTML="";var n=new Date;n.setHours(0,0,0,0);for(var a=60/i,o=24*a,l=[],h=0;h<e.length;h++){var d=document.createElement("div");d.classList.add("ec-tg-column"),e[h].getTime()===n.getTime()&&d.classList.add("ec-tg-today");for(var c=0;c<o;c++){var u=document.createElement("div");u.classList.add("ec-tg-slot"),u.style.height=s+"px",c%a===0?u.classList.add("ec-tg-slot-hour"):u.classList.add("ec-tg-slot-sub");var g=c*i;this.#pd(u,e[h],g),d.appendChild(u)}l.push(d),this.#id.appendChild(d)}for(h=0;h<e.length;h++){var m=io.resolveOverlaps(t[h].timed);this.#vd(l[h],m,e[h],r,i,l,e),this.#vh.attach(l[h],e[h],r,i)}}#vd(e,t,r,i,s,n,a){var o=new Date(r);o.setHours(0,0,0,0);var l=new Date(o);for(var h of(l.setDate(l.getDate()+1),t)){var d=h.entry,c=d.startTime<o?o:d.startTime,u=d.endTime>l?l:d.endTime,g=io.timeToY(c,i),m=io.durationToHeight(c,u,i),p=15*i;m<p&&(m=p);var v=100/h.totalColumns,f=h.column*v,y=document.createElement("div");y.classList.add("ec-entry","ec-tg-entry"),y.tabIndex=0,y.setAttribute("role","button"),y.setAttribute("aria-selected","false"),eo(y);var b=(d.title??"")+", "+this.#fd(d);y.setAttribute("aria-label",b),y.dataset.entryId=d.id,y.style.top=g+"px",y.style.height=m+"px",y.style.left=f+"%",y.style.width=v+"%";var w=this.ec.theme$.getValue(),T=Ga(d,this.ec.data,w);y.style.backgroundColor=T.chipBackgroundColor,y.style.borderLeft=`var(--ec-entry-accent-width, 3px) solid ${T.color2}`,y.style.color=T.chipTextColor,qa(y,d,T);var C=document.createElement("div");C.classList.add("ec-tg-entry-title"),Qa(C,d);var x=document.createElement("div");x.classList.add("ec-tg-entry-time"),x.textContent=this.#fd(d),y.appendChild(C),y.appendChild(x),Ja(y,d,!1,this.ec),this.#gd(y,d),this.#fh.attach(y,d,e,r,i,s,n,a),e.appendChild(y)}}#fd(e){var t=this.ec.locale$.getValue().language,r=new Intl.DateTimeFormat(t,{hour:"numeric",minute:"2-digit"});return r.format(e.startTime)+" – "+r.format(e.endTime)}#ud(e,t){null!==this.#nd&&(clearInterval(this.#nd),this.#nd=null),this.#sd&&(this.#sd.remove(),this.#sd=null);var r=new Date;r.setHours(0,0,0,0);for(var i=-1,s=0;s<e.length;s++){var n=new Date(e[s]);if(n.setHours(0,0,0,0),n.getTime()===r.getTime()){i=s;break}}if(!(i<0)){var a=this.#id.children[i];if(a){this.#sd=document.createElement("div"),this.#sd.classList.add("ec-tg-now-line"),this.#sd.setAttribute("role","presentation"),this.#sd.setAttribute("aria-hidden","true"),a.appendChild(this.#sd);var o=()=>{if(this.#sd){var e=new Date,r=io.timeToY(e,t);this.#sd.style.top=r+"px"}};o(),this.#nd=setInterval(o,6e4)}}}#md(e,t,r){e.style.touchAction="none",e.addEventListener("pointerdown",i=>{0===i.button&&this.ec.canEdit$.getValue()&&this.#ld.startDrag(i,t,e,this.#Bh,r)})}#pd(e,t,r){e.addEventListener("click",e=>{if(!e.target.closest(".ec-tg-entry")){this.ec.selectedEntries$.next([]);var i=new Date(t);i.setHours(Math.floor(r/60),r%60,0,0),this.ec.dateClick$.next({date:i,isAllDay:!1,domEvent:e})}}),e.addEventListener("contextmenu",e=>{e.preventDefault();var i=new Date(t);i.setHours(Math.floor(r/60),r%60,0,0),this.ec.dateContextMenu$.next({date:i,isAllDay:!1,entry:null,domEvent:e})})}#gd(e,t){e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}destroy(){null!==this.#nd&&(clearInterval(this.#nd),this.#nd=null),this.#vh.destroy(),this.#od.destroy(),this.#ld.destroy(),this.#fh.destroy(),super.destroy()}}class ho extends lo{constructor(e,t){super(e,t),this.element.classList.remove("ec-week-view"),this.element.classList.add("ec-day-view")}get dayCount(){return 1}getVisibleRange(e){var t=new Date(e);t.setHours(0,0,0,0);var r=new Date(t);return r.setDate(t.getDate()+1),{start:t,end:r}}}class co extends Ya{#Jh;#yd=[];constructor(e,t){super(e,t),this.element.classList.add("ec-agenda-view"),this.#Th(),this.#x()}#Th(){this.#Jh=document.createElement("div"),this.#Jh.classList.add("ec-agenda-scroll"),this.#Jh.setAttribute("role","list"),this.#Jh.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaAgendaList??"Agenda event list"),this.element.appendChild(this.#Jh),this.#bd()}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.agendaDays$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&to(this.element,e)}))}getVisibleRange(e){var t=this.ec.agendaDays$.getValue(),r=new Date(e);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+t),{start:r,end:i}}render(){var e=this.ec.currentDate$.getValue(),t=this.ec.locale$.getValue(),r=this.ec.theme$.getValue(),i=t.language,s=t.calendar,n=this.getVisibleRange(e),a=this.ec.data.getEntries({start:n.start,end:n.end});this.#Jh.innerHTML="",this.#Jh.setAttribute("aria-label",s?.ariaAgendaList??"Agenda event list"),this.#yd=[];var o=new Date;o.setHours(0,0,0,0);for(var l=new Intl.DateTimeFormat(i,{weekday:"long"}),h=new Intl.DateTimeFormat(i,{year:"numeric",month:"long",day:"numeric"}),d=new Intl.DateTimeFormat(i,{hour:"numeric",minute:"2-digit"}),c=this.ec.agendaDays$.getValue(),u=!1,g=0;g<c;g++){var m=new Date(n.start);m.setDate(m.getDate()+g);var p=this.#Eh(a,m);if(0!==p.length){u=!0;var v=document.createElement("div");v.classList.add("ec-agenda-day"),v.setAttribute("role","listitem");var f=document.createElement("div");f.classList.add("ec-agenda-day-header");var y=document.createElement("span");y.classList.add("ec-agenda-day-name"),y.textContent=l.format(m),f.appendChild(y);var b=document.createElement("span");if(b.classList.add("ec-agenda-day-date"),b.textContent=h.format(m),f.appendChild(b),m.getTime()===o.getTime()){f.classList.add("ec-agenda-today"),f.setAttribute("aria-current","date");var w=document.createElement("span");w.classList.add("ec-agenda-today-badge"),w.textContent=s?.today??"Today",f.appendChild(w)}v.appendChild(f);var T=document.createElement("div");for(var C of(T.classList.add("ec-agenda-entries"),p)){var x=this.#wd(C,r,i,d,s);T.appendChild(x),this.#yd.push(x)}v.appendChild(T),this.#Jh.appendChild(v)}}if(!u){var k=document.createElement("div");k.classList.add("ec-agenda-empty"),k.textContent=s?.noEvents??"No events",this.#Jh.appendChild(k)}this.ec.viewDateRangeChanged$.next(n)}#Eh(e,t){var r=new Date(t);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+1),e.filter(e=>e.startTime<i&&e.endTime>r)}#wd(e,t,r,i,s){var n=document.createElement("div");n.classList.add("ec-entry","ec-agenda-entry"),n.tabIndex=0,n.setAttribute("role","button"),n.setAttribute("aria-selected","false"),n.dataset.entryId=e.id,eo(n);var a=Ga(e,this.ec.data,t),o=document.createElement("span");o.classList.add("ec-agenda-entry-dot"),o.style.backgroundColor=a.color2,n.appendChild(o);var l=document.createElement("span");l.classList.add("ec-agenda-entry-time"),e.isAllDay?l.textContent=s?.allDay??"all-day":l.textContent=i.format(e.startTime)+" – "+i.format(e.endTime),n.appendChild(l);var h=document.createElement("span");if(h.classList.add("ec-agenda-entry-title"),Qa(h,e),n.appendChild(h),e.location){var d=document.createElement("span");d.classList.add("ec-agenda-entry-location"),d.textContent=e.location,n.appendChild(d)}qa(n,e,a),Ja(n,e,e.isAllDay,this.ec);var c=e.title??"";return e.isAllDay?c+=", "+(s?.allDay??"all-day"):e.startTime&&e.endTime&&(c+=", "+i.format(e.startTime)+" – "+i.format(e.endTime)),n.setAttribute("aria-label",c),this.#gd(n,e),n}#gd(e,t){e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}#bd(){this.#Jh.addEventListener("keydown",e=>{var t=e.target;if(t.classList.contains("ec-agenda-entry")){var r=this.#yd.indexOf(t);if(!(r<0)){var i=-1;switch(e.key){case"ArrowDown":i=r+1;break;case"ArrowUp":i=r-1;break;case"Home":i=0;break;case"End":i=this.#yd.length-1;break;default:return}if(i>=0&&i<this.#yd.length){e.preventDefault(),this.#yd[i].focus();var s=this.#yd[i].dataset.entryId;if(s){var n=this.getVisibleRange(this.ec.currentDate$.getValue()),a=this.ec.data.getEntries({start:n.start,end:n.end}).find(e=>e.id===s);a&&this.ec.selectedEntries$.next([a])}}}}})}}class uo{#jl;#nr;#T=new r;#Td;#Cd;#xd=!1;#ph;#kd;#Ed;#Dd;#Sd;#Xl;#yh=new Map;#$d=[];constructor(e,t){this.#jl=e;var r=e.currentDate$.getValue();this.#Td=r.getFullYear(),this.#Cd=r.getMonth(),this.#nr=document.createElement("div"),this.#nr.classList.add("ec-mini-calendar"),t.appendChild(this.#nr),this.#Th(),this.#x(),this.render()}render(){this.#xh(),this.#xd?(this.#Sd.style.display="none",this.#Rd()):(this.#Sd.style.display="",this.#Md())}navigateToMonth(e,t){this.#Td=e,this.#Cd=t,this.render()}destroy(){this.#T.unsubscribe(),this.#nr.remove()}#Th(){var e=this.#jl.locale$.getValue().calendar;this.#ph=document.createElement("div"),this.#ph.classList.add("ec-mini-header"),this.#ph.setAttribute("role","toolbar"),this.#kd=document.createElement("button"),this.#kd.classList.add("ec-mini-nav-btn"),this.#kd.textContent="‹",this.#kd.addEventListener("click",()=>this.#Ld()),this.#Dd=document.createElement("button"),this.#Dd.classList.add("ec-mini-title"),this.#Dd.setAttribute("aria-label",e?.ariaSelectMonthYear??"Select month and year"),this.#Dd.setAttribute("aria-expanded","false"),this.#Dd.addEventListener("click",()=>this.#Id()),this.#Ed=document.createElement("button"),this.#Ed.classList.add("ec-mini-nav-btn"),this.#Ed.textContent="›",this.#Ed.addEventListener("click",()=>this.#Pd()),this.#ph.appendChild(this.#kd),this.#ph.appendChild(this.#Dd),this.#ph.appendChild(this.#Ed),this.#nr.appendChild(this.#ph),this.#Sd=document.createElement("div"),this.#Sd.classList.add("ec-mini-daynames"),this.#Sd.setAttribute("role","row"),this.#nr.appendChild(this.#Sd),this.#Xl=document.createElement("div"),this.#Xl.classList.add("ec-mini-grid"),this.#Xl.setAttribute("role","grid"),this.#nr.appendChild(this.#Xl)}#x(){this.#T.add(this.#jl.currentDate$.subscribe(e=>{var t=e.getMonth(),r=e.getFullYear();t!==this.#Cd||r!==this.#Td?(this.#Cd=t,this.#Td=r,this.#xd&&(this.#xd=!1),this.render()):this.#Ad()})),this.#T.add(this.#jl.viewMode$.subscribe(()=>{this.#xd||this.#Ad()})),this.#T.add(this.#jl.firstDayOfWeek$.subscribe(()=>{this.#xd||this.render()})),this.#T.add(this.#jl.locale$.subscribe(()=>{this.render()})),this.#T.add(this.#jl.settings.changed$.subscribe(()=>{this.render()})),this.#T.add(this.#jl.data.itemAdded$.subscribe(()=>this.#Hd())),this.#T.add(this.#jl.data.itemChanged$.subscribe(()=>this.#Hd())),this.#T.add(this.#jl.data.itemRemoved$.subscribe(()=>this.#Hd())),this.#T.add(this.#jl.data.calendarVisibilityChanged$.subscribe(()=>this.#Hd()))}#xh(){var e=this.#jl.locale$.getValue().language,t=this.#jl.locale$.getValue().calendar,r=t?.ariaPrevious??"Previous",i=t?.ariaNext??"Next";if(this.#xd)this.#Dd.textContent=this.#Td.toString(),this.#Dd.setAttribute("aria-expanded","true"),this.#kd.setAttribute("aria-label",r+" year"),this.#Ed.setAttribute("aria-label",i+" year");else{var s=new Date(this.#Td,this.#Cd,1),n=new Intl.DateTimeFormat(e,{year:"numeric",month:"long"});this.#Dd.textContent=n.format(s),this.#Dd.setAttribute("aria-expanded","false"),this.#kd.setAttribute("aria-label",r+" "+(t?.month??"month").toLowerCase()),this.#Ed.setAttribute("aria-label",i+" "+(t?.month??"month").toLowerCase()),this.#Xl.setAttribute("aria-label",n.format(s))}}#Vd(){this.#Sd.innerHTML="";for(var e=this.#jl.locale$.getValue().language,t=this.#jl.firstDayOfWeek$.getValue(),r=new Intl.DateTimeFormat(e,{weekday:"narrow"}),i=0;i<7;i++){var s=(t+i)%7,n=new Date(2024,0,7+s),a=document.createElement("span");a.classList.add("ec-mini-dayname"),a.setAttribute("role","columnheader"),0!==s&&6!==s||a.classList.add("ec-mini-weekend"),a.textContent=r.format(n),this.#Sd.appendChild(a)}}#Md(){this.#Vd(),this.#Xl.innerHTML="",this.#Xl.classList.remove("ec-mini-grid-months"),this.#yh.clear(),this.#$d=[];var e=this.#jl.firstDayOfWeek$.getValue(),t=this.#Bd(this.#Td,this.#Cd,e),r=new Date;r.setHours(0,0,0,0);for(var i=this.#jl.locale$.getValue().language,s=new Intl.DateTimeFormat(i,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),n=0;n<6;n++){var a=document.createElement("div");a.classList.add("ec-mini-row"),a.setAttribute("role","row"),this.#$d.push(a);for(var o=0;o<7;o++){var l=new Date(t);l.setDate(t.getDate()+7*n+o);var h=document.createElement("button");h.classList.add("ec-mini-day"),h.textContent=l.getDate().toString(),h.setAttribute("aria-label",s.format(l));var d=this.#Fd(l);h.dataset.date=d,this.#yh.set(d,h),l.getMonth()!==this.#Cd&&h.classList.add("ec-mini-other-month"),l.getTime()===r.getTime()&&(h.classList.add("ec-mini-today"),h.setAttribute("aria-current","date"));var c=l.getDay();0!==c&&6!==c||h.classList.add("ec-mini-weekend");var u=new Date(l);h.addEventListener("click",(e=>()=>this.#zd(e))(u)),a.appendChild(h)}this.#Xl.appendChild(a)}this.#Ad(),this.#Hd()}#Rd(){this.#Xl.innerHTML="",this.#Xl.classList.add("ec-mini-grid-months"),this.#yh.clear();for(var e=this.#jl.locale$.getValue().language,t=new Intl.DateTimeFormat(e,{month:"short"}),r=new Intl.DateTimeFormat(e,{month:"long",year:"numeric"}),i=this.#jl.currentDate$.getValue(),s=this.#Td===i.getFullYear(),n=0;n<4;n++){var a=document.createElement("div");a.classList.add("ec-mini-row"),a.setAttribute("role","row");for(var o=0;o<3;o++){var l=3*n+o,h=document.createElement("button");h.classList.add("ec-mini-month");var d=new Date(this.#Td,l,1);h.textContent=t.format(d),h.setAttribute("aria-label",r.format(d)),s&&l===i.getMonth()&&(h.classList.add("ec-mini-selected"),h.setAttribute("aria-current","date")),h.addEventListener("click",(e=>()=>this.#Od(e))(l)),a.appendChild(h)}this.#Xl.appendChild(a)}}#Ad(){for(var e of this.#yh.values())e.classList.remove("ec-mini-selected"),e.removeAttribute("aria-pressed");for(var t of this.#$d)t.classList.remove("ec-mini-week-selected");var r=this.#jl.currentDate$.getValue();switch(this.#jl.viewMode$.getValue()){case"day":var i=this.#Fd(r),s=this.#yh.get(i);s&&(s.classList.add("ec-mini-selected"),s.setAttribute("aria-pressed","true"));break;case"week":var n=this.#Nd(r),a=this.#Fd(n);for(var t of this.#$d){var o=t.firstElementChild;if(o&&o.dataset.date===a){t.classList.add("ec-mini-week-selected");break}}}}#Hd(){if(!this.#xd){for(var e of this.#yh.values())e.classList.remove("ec-mini-has-events");var t=this.#Wd(),r=this.#jl.data.getEntries(t),i=new Set;for(var s of r){var n=new Date(s.startTime);n.setHours(0,0,0,0);for(var a=new Date(s.endTime),o=new Date(n);o<a;)i.add(this.#Fd(o)),o.setDate(o.getDate()+1)}for(var l of i){var h=this.#yh.get(l);h&&h.classList.add("ec-mini-has-events")}}}#Ld(){this.#xd?this.#Td--:(this.#Cd--,this.#Cd<0&&(this.#Cd=11,this.#Td--)),this.render()}#Pd(){this.#xd?this.#Td++:(this.#Cd++,this.#Cd>11&&(this.#Cd=0,this.#Td++)),this.render()}#Id(){this.#xd=!this.#xd,this.render()}#zd(e){this.#jl.currentDate$.next(e)}#Od(e){this.#Cd=e,this.#xd=!1,this.render()}#Bd(e,t,r){var i=new Date(e,t,1).getDay();return new Date(e,t,1-(i-r+7)%7)}#Wd(){var e=this.#jl.firstDayOfWeek$.getValue(),t=this.#Bd(this.#Td,this.#Cd,e),r=new Date(t);return r.setDate(t.getDate()+42),{start:t,end:r}}#Nd(e){var t=this.#jl.firstDayOfWeek$.getValue(),r=new Date(e);r.setHours(0,0,0,0);var i=(r.getDay()-t+7)%7;return r.setDate(r.getDate()-i),r}#Fd(e){var t=e.getFullYear(),r=e.getMonth()+1,i=e.getDate();return t+"-"+(r<10?"0":"")+r+"-"+(i<10?"0":"")+i}}class go{#jl;#nr;#T=new r;#ph;#Ud;#jd;constructor(e,t){this.#jl=e,this.#nr=document.createElement("div"),this.#nr.classList.add("ec-calendar-list"),t.appendChild(this.#nr),this.#Th(),this.#x(),this.render()}render(){this.#xh(),this.#Xd()}destroy(){this.#T.unsubscribe(),this.#nr.remove()}#Th(){this.#ph=document.createElement("div"),this.#ph.classList.add("ec-calendar-list-header"),this.#nr.appendChild(this.#ph),this.#Ud=document.createElement("div"),this.#Ud.classList.add("ec-calendar-list-items"),this.#Ud.setAttribute("role","list"),this.#nr.appendChild(this.#Ud),this.#jd=document.createElement("button"),this.#jd.classList.add("ec-calendar-list-add"),this.#jd.addEventListener("click",()=>{this.#jl.calendarAddRequested$.next()}),this.#nr.appendChild(this.#jd)}#x(){this.#T.add(this.#jl.data.calendarAdded$.subscribe(()=>this.render())),this.#T.add(this.#jl.data.calendarRemoved$.subscribe(()=>this.render())),this.#T.add(this.#jl.data.calendarChanged$.subscribe(()=>this.render())),this.#T.add(this.#jl.data.calendarVisibilityChanged$.subscribe(()=>this.#Yd())),this.#T.add(this.#jl.locale$.subscribe(()=>this.render())),this.#T.add(this.#jl.theme$.subscribe(()=>this.render()))}#xh(){var e=this.#jl.locale$.getValue().calendar;this.#ph.textContent=e?.myCalendars??"My Calendars"}#Xd(){this.#Ud.innerHTML="";for(var e=this.#jl.data,t=0;t<e.calendarsLength;t++){var r=e.getCalendar(t);this.#Ud.appendChild(this.#Kd(r))}var i=this.#jl.locale$.getValue().calendar;this.#jd.textContent="+ "+(i?.addCalendar??"Add calendar")}#Kd(e){var t=this.#jl.locale$.getValue().calendar,r=e.name||e.id,i=document.createElement("div");i.classList.add("ec-calendar-list-item"),i.setAttribute("role","listitem"),i.dataset.calendarId=e.id;var s=document.createElement("button");s.classList.add("ec-calendar-list-checkbox"),s.type="button",s.setAttribute("role","checkbox"),s.setAttribute("aria-checked",String(e.isVisible)),s.setAttribute("aria-label",t?.ariaToggleCalendar?t.ariaToggleCalendar(r):`Show or hide ${r}`),this.#Zd(s,e),s.addEventListener("click",()=>{e.isVisible=!e.isVisible}),i.appendChild(s);var n=document.createElement("span");if(n.classList.add("ec-calendar-list-name"),n.textContent=r,i.appendChild(n),!e.isDefault){var a=document.createElement("button");a.classList.add("ec-calendar-list-remove"),a.type="button",a.textContent="×",a.setAttribute("aria-label",t?.ariaRemoveCalendar?t.ariaRemoveCalendar(r):`Remove ${r}`),a.addEventListener("click",t=>{t.stopPropagation(),this.#Gd(e)}),i.appendChild(a)}return i}#Zd(e,t){var r=this.#jl.theme$.getValue().content.entryColors,i=Xr(t.color,r).color1;e.setAttribute("aria-checked",String(t.isVisible)),t.isVisible?(e.style.backgroundColor=i,e.style.borderColor=i,e.classList.add("ec-checked"),e.classList.remove("ec-unchecked")):(e.style.backgroundColor="transparent",e.style.borderColor=i,e.classList.remove("ec-checked"),e.classList.add("ec-unchecked"))}#Yd(){for(var e=this.#jl.data,t=this.#Ud.querySelectorAll(".ec-calendar-list-item"),r=0;r<t.length;r++){var i=t[r],s=i.dataset.calendarId;if(s){var n=e.getCalendarById(s);if(n){var a=i.querySelector(".ec-calendar-list-checkbox");a&&this.#Zd(a,n)}}}}#Gd(e){var t={calendar:e,cancel:!1};this.#jl.calendarRemoving$.next(t),t.cancel||this.#jl.data.removeCalendar(e)}}class mo{#jl;#Ia=null;constructor(e){this.#jl=e}async copy(e){if(0!==e.length){this.#Ia=this.#Pa(e);var t=this.#Aa(e);try{await navigator.clipboard.writeText(t)}catch{}}}async cut(e){for(var t of(await this.copy(e),e))this.#jl.data.removeItem(t.item);this.#jl.selectedEntries$.next([])}async paste(e){return this.#Ia?this.#Ha(this.#Ia,e):null}#Pa(e){var t=new Set,r=[];for(var i of e){var s=i.item;t.has(s.id)||(t.add(s.id),r.push(s.toAny()))}return{items:r}}#Ha(e,t){var r=[],i=null;for(var s of e.items){if(s.startTime){i=new Date(s.startTime);break}if(s.endTime){i=new Date(s.endTime);break}}var n=i?t.getTime()-i.getTime():0;for(var s of e.items){var a=JSON.parse(JSON.stringify(s));if(a.id=er(12),a.startTime){var o=new Date(new Date(a.startTime).getTime()+n);a.startTime=o.toISOString()}if(a.endTime){var l=new Date(new Date(a.endTime).getTime()+n);a.endTime=l.toISOString()}a.recurrenceExceptions=[];var h=a.calendarId;if(h&&!this.#jl.data.getCalendarById(h)){var d=this.#jl.data.defaultCalendar;a.calendarId=d?d.id:null}var c=Da(a);this.#jl.data.addItem(c),r.push(c)}return{items:r}}#Aa(e){var t=[],r=new Set;for(var i of e)if(!r.has(i.item.id)){r.add(i.item.id);var s=i.title??"",n=i.startTime?qt(i.startTime):"",a=i.endTime?qt(i.endTime):"",o=i.location??"";t.push([s,n,a,o].join("\t"))}return t.join("\n")}}class po{#jl;#qd;#_d=null;#Jd=null;#Qd=null;#T=new r;constructor(e,t){this.#jl=e,this.#qd=t,this.#qd.addEventListener("mouseenter",this.#ec,!0),this.#qd.addEventListener("mouseleave",this.#Kt,!0),this.#T.add(e.entryMoving$.subscribe(()=>this.hide())),this.#T.add(e.entryResizing$.subscribe(()=>this.hide())),this.#T.add(e.entryCreating$.subscribe(()=>this.hide()))}hide(){if(this.#tc(),this.#Qd=null,this.#_d){var e=this.#qd.querySelector('[aria-describedby="'+this.#_d.id+'"]');e&&e.removeAttribute("aria-describedby"),this.#_d.remove(),this.#_d=null}}destroy(){this.hide(),this.#T.unsubscribe(),this.#qd.removeEventListener("mouseenter",this.#ec,!0),this.#qd.removeEventListener("mouseleave",this.#Kt,!0)}#tc(){null!==this.#Jd&&(clearTimeout(this.#Jd),this.#Jd=null)}#ec=e=>{if(!this.#qd.closest?.(".ec-mobile")){var t=e.target,r=t.closest?.(".ec-entry");if(r){var i=r.dataset.entryId;if(i){var s=this.#rc(i);if(s&&(!this.#Qd||this.#Qd.id!==s.id)){this.hide(),this.#Qd=s;var n=s,a=r;this.#Jd=setTimeout(()=>{this.#Jd=null,this.#Qd?.id===n.id&&this.#ic(n,a)},350)}}}}};#Kt=e=>{var t=e.target,r=t.closest?.(".ec-entry");r&&this.hide()};async#ic(e,t){var r=this.#jl.viewMode$.getValue(),i=await this.#sc(e,r);if(i&&this.#Qd?.id===e.id){var s=document.createElement("div");s.classList.add("ec-tooltip"),s.setAttribute("role","tooltip"),s.id="ec-tooltip-"+e.id;var n=document.createElement("div");if(n.classList.add("ec-tooltip-title"),n.textContent=i.title,s.appendChild(n),i.rows&&i.rows.length>0)for(var a of i.rows){var o=document.createElement("div");o.classList.add("ec-tooltip-row");var l=document.createElement("span");l.classList.add("ec-tooltip-label"),l.textContent=a.label;var h=document.createElement("span");h.classList.add("ec-tooltip-value"),h.textContent=a.value,o.appendChild(l),o.appendChild(h),s.appendChild(o)}this.#qd.appendChild(s),this.#_d=s,t.setAttribute("aria-describedby",s.id),this.#nc(s,t)}}async#sc(e,t){var r=this.#jl.entryTooltip$.getValue();if(r)return r({entry:e,viewMode:t});var i=e.title??"",s=[],n=this.#jl.locale$.getValue().language;if(e.startTime&&e.endTime)if(e.isAllDay){var a=new Intl.DateTimeFormat(n,{dateStyle:"medium"});s.push({label:"",value:a.formatRange(e.startTime,e.endTime)})}else{var o=new Intl.DateTimeFormat(n,{dateStyle:"medium",timeStyle:"short"});s.push({label:"",value:o.formatRange(e.startTime,e.endTime)})}return e.location&&s.push({label:"",value:e.location}),{title:i,rows:s}}#nc(e,t){var r=this.#qd.getBoundingClientRect(),i=t.getBoundingClientRect(),s=i.bottom-r.top+8,n=i.left-r.left,a=e.offsetWidth,o=e.offsetHeight;s+o>r.height&&(s=i.top-r.top-o-8),n+a>r.width&&(n=r.width-a-8),n<8&&(n=8),s<8&&(s=8),e.style.top=s+"px",e.style.left=n+"px"}#rc(e){var t,r=this.#jl.viewMode$.getValue(),i=this.#jl.currentDate$.getValue(),s=this.#jl.firstDayOfWeek$.getValue();switch(r){case"day":(h=new Date(i)).setHours(0,0,0,0),(a=new Date(h)).setDate(a.getDate()+1),t={start:h,end:a};break;case"week":var n=(i.getDay()-s+7)%7;(h=new Date(i)).setDate(i.getDate()-n),h.setHours(0,0,0,0),(a=new Date(h)).setDate(h.getDate()+7),t={start:h,end:a};break;default:var a,o=i.getFullYear(),l=i.getMonth(),h=(n=(new Date(o,l,1).getDay()-s+7)%7,new Date(o,l,1-n));(a=new Date(h)).setDate(h.getDate()+42),t={start:h,end:a}}return this.#jl.data.getEntries(t).find(t=>t.id===e)??null}}class vo{#jl;#ac;constructor(e,t){this.#jl=e,this.#ac=t}async exportToImage(e){var t;try{t=(await import("html2canvas")).default??await import("html2canvas")}catch{throw new Error("html2canvas is required for image export. Install it with: npm install html2canvas")}var r=e?.format??"png",i=e?.quality??.92,s=e?.scale??2,n=e?.includeSidebar??!1,a=this.#ac.querySelector(".ec-wrapper");if(!a)throw new Error("Calendar is not rendered");if(!n){var o=this.#ac.querySelector(".ec-main");o&&(a=o)}var l=await t(a,{scale:s,useCORS:!0,logging:!1,backgroundColor:null}),h="jpeg"===r?"image/jpeg":"image/png";return new Promise((e,t)=>{l.toBlob(r=>{r?e(r):t(new Error("Failed to export image"))},h,"jpeg"===r?i:void 0)})}}const fo={A4:[210,297],A3:[297,420],Letter:[215.9,279.4],Legal:[215.9,355.6]};class yo{#jl;#oc;constructor(e,t){this.#jl=e,this.#oc=new vo(e,t)}async exportToPdf(e){var t;try{t=await import("jspdf")}catch{throw new Error("jsPDF is required for PDF export. Install it with: npm install jspdf")}var r,i=e?.pageSize??"A4",s=e?.orientation??"landscape",n=e?.margin??{top:10,right:10,bottom:10,left:10},a=e?.scale??2,o=await this.#oc.exportToImage({format:"png",scale:a,includeSidebar:e?.includeSidebar??!1}),l=await(r=o,new Promise((e,t)=>{var i=new FileReader;i.onload=()=>e(i.result),i.onerror=t,i.readAsDataURL(r)})),[h,d]=fo[i]??fo.A4;"landscape"===s&&([h,d]=[d,h]);var c,u=h-n.left-n.right,g=d-n.top-n.bottom,m=e?.header?6:0,p=g-m-(e?.footer?6:0),v=await(c=l,new Promise((e,t)=>{var r=new Image;r.onload=()=>e(r),r.onerror=t,r.src=c})),f=v.width/v.height,y=u,b=y/f;b>p&&(y=(b=p)*f);var w=n.top+m,T=new t.jsPDF({orientation:s,format:i,unit:"mm"});if(T.addImage(l,"PNG",n.left,w,y,b),e?.header){var C="function"==typeof e.header?e.header(1,1):e.header;T.setFontSize(9),T.setTextColor(128),T.text(C,n.left,n.top+4)}if(e?.footer){var x="function"==typeof e.footer?e.footer(1,1):e.footer;T.setFontSize(9),T.setTextColor(128),T.text(x,n.left,d-n.bottom)}return T.output("blob")}}class bo{#mo;constructor(e){this.#mo=e}exportToIcs(e){var t=this.exportToIcsText(e);return new Blob([t],{type:"text/calendar;charset=utf-8"})}exportToIcsText(e){var t=e?.prodId??"-//TimelineKit//EventCalendar//EN",r=e?.includeCustomType??!0,i=e?.calendarIds??null,s=[];s.push("BEGIN:VCALENDAR"),s.push("VERSION:2.0"),s.push("PRODID:"+t),s.push("CALSCALE:GREGORIAN"),s.push("METHOD:PUBLISH");for(var n=[],a=0;a<this.#mo.calendarsLength;a++){var o=this.#mo.getCalendar(a);i&&!i.includes(o.id)||n.push(o)}1===n.length&&n[0].name&&s.push("X-WR-CALNAME:"+Eo(n[0].name));for(var l=[],h=0;h<this.#mo.itemsLength;h++){var d=this.#mo.getItem(h);(!i||d.calendarId&&i.includes(d.calendarId))&&l.push(d)}for(var d of l){var c=Co(d.type);s.push("BEGIN:"+c),s.push("UID:"+d.id),wo(s,d,r),d.recurrenceRule&&s.push("RRULE:"+d.recurrenceRule.toString());var u=d.recurrenceExceptions.filter(e=>e.isCancelled).map(e=>xo(e.originalStartTime));u.length>0&&s.push("EXDATE:"+u.join(",")),s.push("END:"+c);var g=d.recurrenceExceptions.filter(e=>!e.isCancelled&&e.overrides);for(var m of g)s.push("BEGIN:"+c),s.push("UID:"+d.id),s.push("RECURRENCE-ID:"+xo(m.originalStartTime)),To(s,d,m,r),s.push("END:"+c)}return s.push("END:VCALENDAR"),function(e){var t=[];for(var r of e)if(r.length<=75)t.push(r);else{t.push(r.substring(0,75));for(var i=r.substring(75);i.length>0;){var s=i.substring(0,74);t.push(" "+s),i=i.substring(74)}}return t}(s).join("\r\n")+"\r\n"}}function wo(e,t,r){t.startTime&&(t.isAllDay?e.push("DTSTART;VALUE=DATE:"+ko(t.startTime)):e.push("DTSTART:"+xo(t.startTime))),t.endTime&&(t.isAllDay?e.push("DTEND;VALUE=DATE:"+ko(t.endTime)):e.push("DTEND:"+xo(t.endTime))),t.title&&e.push("SUMMARY:"+Eo(t.title)),t.description&&e.push("DESCRIPTION:"+Eo(t.description)),t.location&&e.push("LOCATION:"+Eo(t.location)),"public"!==t.visibility&&e.push("CLASS:"+t.visibility.toUpperCase()),t instanceof ya&&(t.isCompleted?(e.push("STATUS:COMPLETED"),t.completedAt&&e.push("COMPLETED:"+xo(t.completedAt))):e.push("STATUS:NEEDS-ACTION"),t.priority>0&&e.push("PRIORITY:"+t.priority)),t instanceof va&&(t.organizer&&e.push("ORGANIZER:"+Eo(t.organizer)),"needsAction"!==t.responseStatus&&e.push("X-TIMELINEKIT-RESPONSE:"+function(e){switch(e){case"accepted":return"ACCEPTED";case"tentative":return"TENTATIVE";case"declined":return"DECLINED";case"needsAction":return"NEEDS-ACTION"}}(t.responseStatus))),t instanceof Ta&&(e.push("TRANSP:"+("free"===t.availabilityStatus?"TRANSPARENT":"OPAQUE")),e.push("X-TIMELINEKIT-AVAILABILITY:"+t.availabilityStatus.toUpperCase())),t.hasReminders&&(e.push("BEGIN:VALARM"),e.push("ACTION:DISPLAY"),e.push("DESCRIPTION:Reminder"),e.push("TRIGGER:-PT15M"),e.push("END:VALARM")),t.tags&&t.tags.length>0&&e.push("CATEGORIES:"+t.tags.map(Eo).join(",")),r&&e.push("X-TIMELINEKIT-TYPE:"+t.type),t.calendarId&&e.push("X-TIMELINEKIT-CALENDAR:"+t.calendarId),t.timeZone&&e.push("X-TIMELINEKIT-TIMEZONE:"+t.timeZone),e.push("DTSTAMP:"+xo(new Date))}function To(e,t,r,i){var s=r.overrides,n=s.startTime??t.startTime,a=s.endTime??t.endTime,o=s.isAllDay??t.isAllDay;n&&(o?e.push("DTSTART;VALUE=DATE:"+ko(n)):e.push("DTSTART:"+xo(n))),a&&(o?e.push("DTEND;VALUE=DATE:"+ko(a)):e.push("DTEND:"+xo(a)));var l=void 0!==s.title?s.title:t.title;l&&e.push("SUMMARY:"+Eo(l));var h=void 0!==s.description?s.description:t.description;h&&e.push("DESCRIPTION:"+Eo(h));var d=void 0!==s.location?s.location:t.location;d&&e.push("LOCATION:"+Eo(d)),i&&e.push("X-TIMELINEKIT-TYPE:"+t.type),e.push("DTSTAMP:"+xo(new Date))}function Co(e){return"task"===e?"VTODO":"VEVENT"}function xo(e){return`${e.getUTCFullYear()}${String(e.getUTCMonth()+1).padStart(2,"0")}${String(e.getUTCDate()).padStart(2,"0")}T${String(e.getUTCHours()).padStart(2,"0")}${String(e.getUTCMinutes()).padStart(2,"0")}${String(e.getUTCSeconds()).padStart(2,"0")}Z`}function ko(e){return`${e.getFullYear()}${String(e.getMonth()+1).padStart(2,"0")}${String(e.getDate()).padStart(2,"0")}`}function Eo(e){return e.replace(/\\/g,"\\\\").replace(/;/g,"\\;").replace(/,/g,"\\,").replace(/\n/g,"\\n")}class Do{importFromIcs(e,t){var r=t?.calendarId??null,i=t?.createCalendar??!0,s=t?.defaultType??"appointment",n=[],a=0,o=function(e){return e.replace(/\r?\n[ \t]/g,"")}(e),l=o.split(/\r?\n/).filter(e=>e.length>0),h=null;for(var d of l)d.startsWith("X-WR-CALNAME:")&&(h=Lo(d.substring(13)));var c=function(e){var t=[],r=0;for(;r<e.length;){var i=e[r];if("BEGIN:VEVENT"===i||"BEGIN:VTODO"===i){var s="BEGIN:VEVENT"===i?"VEVENT":"VTODO",n="END:"+s,a=new Map,o=!1,l=[],h=!1;for(r++;r<e.length&&e[r]!==n;)if("BEGIN:VALARM"!==e[r])if("END:VALARM"!==e[r])if(h)r++;else{var d=So(e[r]);if(d)if("EXDATE"===d.name){var c=d.pv.value.split(",").map(e=>Mo(e.trim()));l.push(...c.filter(e=>null!==e))}else a.set(d.name,d.pv);r++}else h=!1,r++;else h=!0,o=!0,r++;r++;var u=a.get("UID")?.value??"";if(!u)continue;var g=a.get("RECURRENCE-ID")?.value??null;t.push({type:s,uid:u,properties:a,recurrenceId:g,hasValarm:o,exdates:l})}else r++}return t}(l),u=new Map,g=[];for(var m of c)if(m.recurrenceId)g.push(m);else try{var p=$o(m,r,s);u.set(m.uid,p)}catch(e){n.push(`Skipped UID ${m.uid}: ${e.message}`),a++}for(var v of g){var f=u.get(v.uid);if(f)try{var y=Ro(v,f);f.setException(y)}catch(e){n.push(`Skipped exception for UID ${v.uid}: ${e.message}`),a++}else n.push(`Skipped exception for unknown UID ${v.uid}`),a++}var b=null;return i&&((b=new sa(null)).name=h??"Imported Calendar",b.isDefault=!0),{calendar:b,items:Array.from(u.values()),warnings:n,skippedCount:a}}}function So(e){var t=function(e){for(var t=!1,r=0;r<e.length;r++){var i=e[r];if('"'===i)t=!t;else if(":"===i&&!t)return r}return-1}(e);if(t<0)return null;for(var r=e.substring(0,t),i=e.substring(t+1),s=r.split(";"),n=s[0].toUpperCase(),a=new Map,o=1;o<s.length;o++){var l=s[o].indexOf("=");l>0&&a.set(s[o].substring(0,l).toUpperCase(),s[o].substring(l+1))}return{name:n,pv:{value:i,params:a}}}function $o(e,t,r){var i,s,n=e.properties,a=n.get("X-TIMELINEKIT-TYPE")?.value;i=a&&(s=a,Po.has(s))?a:"VTODO"===e.type?"task":function(e,t){return e.has("ORGANIZER")?"meeting":e.has("X-TIMELINEKIT-AVAILABILITY")?"availabilityBlock":t}(n,r);var o=function(e,t){switch(e){case"meeting":return new va(t);case"appointment":return new fa(t);case"task":return new ya(t);case"deadline":return new ba(t);case"holiday":return new wa(t);case"availabilityBlock":return new Ta(t);case"birthday":return new Ca(t);case"reminder":return new xa(t);case"resourceBooking":return new ka(t)}}(i,e.uid),l=t??n.get("X-TIMELINEKIT-CALENDAR")?.value??null;o.calendarId=l;var h=n.get("DTSTART"),d=n.get("DTEND"),c="DATE"===h?.params.get("VALUE");h&&(o.startTime=Mo(h.value,h.params.get("TZID"))),d&&(o.endTime=Mo(d.value,d.params.get("TZID"))),o.isAllDay=c;var u=h?.params.get("TZID")??n.get("X-TIMELINEKIT-TIMEZONE")?.value??null;u&&(o.timeZone=u);var g=n.get("SUMMARY");g&&(o.title=Lo(g.value));var m=n.get("DESCRIPTION");m&&(o.description=Lo(m.value));var p=n.get("LOCATION");p&&(o.location=Lo(p.value));var v=n.get("CLASS");if(v){var f=v.value.toLowerCase();"private"!==f&&"confidential"!==f||(o.visibility=f)}var y=n.get("CATEGORIES");y&&(o.tags=y.value.split(",").map(e=>Lo(e.trim())));var b=n.get("RRULE");for(var w of(b&&(o.recurrenceRule=aa.fromString(b.value)),e.exdates))o.cancelOccurrence(w);if(e.hasValarm&&(o.hasReminders=!0),o instanceof ya){var T=n.get("STATUS");"COMPLETED"===T?.value&&(o.isCompleted=!0);var C=n.get("COMPLETED");C&&(o.completedAt=Mo(C.value));var x=n.get("PRIORITY");x&&(o.priority=parseInt(x.value,10)||0)}if(o instanceof va){var k=n.get("ORGANIZER");k&&(o.organizer=Lo(k.value));var E=n.get("X-TIMELINEKIT-RESPONSE");E&&(o.responseStatus=function(e){switch(e.toUpperCase()){case"ACCEPTED":return"accepted";case"TENTATIVE":return"tentative";case"DECLINED":return"declined";default:return"needsAction"}}(E.value))}if(o instanceof Ta){var D=n.get("X-TIMELINEKIT-AVAILABILITY");D&&(o.availabilityStatus=D.value.toLowerCase())}return o.externalSource="ical",o}function Ro(e,t){var r=e.properties,i=Mo(e.recurrenceId);if(!i)throw new Error("Invalid RECURRENCE-ID");var s={},n=r.get("DTSTART");n&&(s.startTime=Mo(n.value,n.params.get("TZID"))??void 0);var a=r.get("DTEND");a&&(s.endTime=Mo(a.value,a.params.get("TZID"))??void 0);var o=r.get("SUMMARY");if(o){var l=Lo(o.value);l!==t.title&&(s.title=l)}var h=r.get("DESCRIPTION");if(h){var d=Lo(h.value);d!==t.description&&(s.description=d)}var c=r.get("LOCATION");if(c){var u=Lo(c.value);u!==t.location&&(s.location=u)}var g="DATE"===n?.params.get("VALUE");return g!==t.isAllDay&&(s.isAllDay=g),{originalStartTime:i,isCancelled:!1,overrides:s}}function Mo(e,t){if(!e)return null;var r=e.match(/^(\d{4})(\d{2})(\d{2})$/);if(r)return new Date(parseInt(r[1]),parseInt(r[2])-1,parseInt(r[3]));var i=e.match(/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(Z)?$/);if(i){var s=parseInt(i[1]),n=parseInt(i[2])-1,a=parseInt(i[3]),o=parseInt(i[4]),l=parseInt(i[5]),h=parseInt(i[6]);return"Z"===i[7]?new Date(Date.UTC(s,n,a,o,l,h)):new Date(s,n,a,o,l,h)}return null}function Lo(e){return e.replace(/\\n/gi,"\n").replace(/\\,/g,",").replace(/\\;/g,";").replace(/\\\\/g,"\\")}var Io,Po=new Set(["meeting","appointment","task","deadline","holiday","availabilityBlock","birthday","reminder","resourceBooking"]);class Ao{#wt;constructor(e){this.#wt=e}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.includeCalendars??!1,s=this.#wt.locale$.getValue(),n=[];r&&n.push(Es(["Calendar",s.columns.name,s.labels.type,s.labels.start,s.labels.end,s.calendar.allDay,"Location","Description"],t));var a=this.#lc(e?.calendarIds);for(var o of a)n.push(Es([this.#hc(o.calendarId),o.title??"",o.type,this.#bo(o.startTime),this.#bo(o.endTime),o.isAllDay?"Yes":"No",o.location??"",o.description??""],t));var l=n.join("\n");if(i){l+="\n\n",r&&(l+=Es([s.columns.name],t)+"\n");for(var h=0;h<this.#wt.data.calendarsLength;h++){l+=Es([this.#wt.data.getCalendar(h).name],t)+"\n"}}return l}async exportToExcel(e){var t=await $s(),r=this.#wt.locale$.getValue(),i=e?.eventsSheetName??r.export.eventsSheetName,s=e?.includeCalendarsSheet??!0,n=e?.includeFormatting??!0,a=new t.Workbook;return this.#wo(a,i,n,e?.calendarIds),s&&this.#wt.data.calendarsLength>0&&this.#dc(a,n),Rs(a)}#wo(e,t,r,i){var s=this.#wt.locale$.getValue(),n=e.addWorksheet(t);n.columns=[{header:"Calendar",key:"calendar",width:20},{header:s.columns.name,key:"title",width:30},{header:s.labels.type,key:"type",width:15},{header:s.labels.start,key:"start",width:20},{header:s.labels.end,key:"end",width:20},{header:s.calendar.allDay,key:"allDay",width:10},{header:"Location",key:"location",width:20},{header:"Description",key:"description",width:30}],r&&Ds(n);var a=this.#lc(i);for(var o of a)n.addRow({calendar:this.#hc(o.calendarId),title:o.title??"",type:o.type,start:this.#bo(o.startTime),end:this.#bo(o.endTime),allDay:o.isAllDay?"Yes":"No",location:o.location??"",description:o.description??""});r&&Ss(n)}#dc(e,t){var r=this.#wt.locale$.getValue(),i=e.addWorksheet(r.export.calendarsSheetName);i.columns=[{header:r.columns.name,key:"name",width:25}],t&&Ds(i);for(var s=0;s<this.#wt.data.calendarsLength;s++){var n=this.#wt.data.getCalendar(s);i.addRow({name:n.name})}t&&Ss(i)}#lc(e){for(var t=[],r=0;r<this.#wt.data.itemsLength;r++){var i=this.#wt.data.getItem(r);e&&i.calendarId&&!e.includes(i.calendarId)||t.push(i)}return t.sort((e,t)=>(e.startTime?.getTime()??0)-(t.startTime?.getTime()??0)),t}#hc(e){if(!e)return"";var t=this.#wt.data.getCalendarById(e);return t?.name??""}#bo(e){return e?Zt(e,this.#wt.locale$.getValue().language,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):""}}class Ho{#nr;#cc;#uc;#ql=-1;#gc=0;#mc=0;#l=0;#pc=!1;#vc;#fc=null;#yc=null;#bc=null;static SWIPE_THRESHOLD=50;static MAX_VERTICAL_RATIO=.5;static MAX_DURATION=500;static PEEK_MAX=30;constructor(e,t,r){this.#nr=e,this.#cc=t,this.#uc=r,this.#vc=e=>this.#wc(e),e.addEventListener("pointerdown",this.#vc)}destroy(){this.#nr.removeEventListener("pointerdown",this.#vc),this.#rh(),this.#nr.style.transform="",this.#nr.classList.remove("ec-swipe-transition")}#wc(e){"touch"===e.pointerType&&(this.#ql>=0||(this.#ql=e.pointerId,this.#gc=e.clientX,this.#mc=e.clientY,this.#l=Date.now(),this.#pc=!1,this.#fc=e=>this.#nh(e),this.#yc=e=>this.#ah(e),this.#bc=e=>this.#oh(e),document.addEventListener("pointermove",this.#fc),document.addEventListener("pointerup",this.#yc),document.addEventListener("pointercancel",this.#bc)))}#nh(e){if(e.pointerId===this.#ql&&!this.#pc){var t=e.clientX-this.#gc,r=e.clientY-this.#mc;if(Math.abs(r)>2*Math.abs(t)&&Math.abs(r)>10)this.#Tc();else{var i=Math.sign(t)*Math.min(.3*Math.abs(t),Io.PEEK_MAX);this.#nr.style.transform="translateX("+i+"px)"}}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#pc)this.#gh();else if(this.#Cc(),document.body.classList.contains("ec-dragging"))this.#gh();else{var t=e.clientX-this.#gc,r=e.clientY-this.#mc,i=Date.now()-this.#l,s=Math.abs(t),n=Math.abs(r);s>=Io.SWIPE_THRESHOLD&&n<=s*Io.MAX_VERTICAL_RATIO&&i<=Io.MAX_DURATION&&(t<0?this.#cc():this.#uc()),this.#gh()}}#oh(e){e.pointerId===this.#ql&&this.#Tc()}#Tc(){this.#rh(),this.#pc=!0,this.#Cc(),this.#gh()}#Cc(){this.#nr.style.transform&&(this.#nr.classList.add("ec-swipe-transition"),this.#nr.style.transform="",setTimeout(()=>{this.#nr.classList.remove("ec-swipe-transition")},200))}#gh(){this.#ql=-1}#rh(){this.#fc&&(document.removeEventListener("pointermove",this.#fc),this.#fc=null),this.#yc&&(document.removeEventListener("pointerup",this.#yc),this.#yc=null),this.#bc&&(document.removeEventListener("pointercancel",this.#bc),this.#bc=null)}}Io=Ho;class Vo{#jl;#ac;#Xn;#xc;#kc;#Ec;#Dc;#Sc;#$c;#Rc;#Mc;#Lc;#Ic;#Pc;#qa;#Za;#Ga;#Br;#oc;#Ac;#Hc;#Vc;#T=new r;#Bc=null;#Fc=null;#Jn=null;#zc=!1;#Oc=null;#Nc=null;#Wc=768;#Uc;constructor(e){this.#jl=new ja,this.#ac=e,e.classList.add("ec-host"),this.#Xn=document.createElement("div"),this.#Xn.classList.add("ec-wrapper"),this.#Xn.style.visibility="hidden",this.#Xn.tabIndex=0,this.#Xn.setAttribute("role","application"),e.appendChild(this.#Xn),this.#xc=document.createElement("div"),this.#xc.classList.add("ec-sidebar"),this.#xc.setAttribute("role","complementary"),this.#Xn.appendChild(this.#xc),this.#kc=document.createElement("div"),this.#kc.classList.add("ec-main"),this.#kc.setAttribute("role","main"),this.#Xn.appendChild(this.#kc),this.#Ec=document.createElement("div"),this.#Ec.classList.add("ec-toolbar"),this.#Ec.setAttribute("role","toolbar"),this.#kc.appendChild(this.#Ec),this.#Dc=document.createElement("div"),this.#Dc.classList.add("ec-view-container"),this.#Dc.setAttribute("role","region"),this.#kc.appendChild(this.#Dc),this.#jc(),this.#Sc=new uo(this.#jl,this.#xc),this.#$c=new go(this.#jl,this.#xc),this.#Rc=new ro(this.#jl,this.#Dc),this.#Mc=new lo(this.#jl,this.#Dc),this.#Lc=new ho(this.#jl,this.#Dc),this.#Ic=new co(this.#jl,this.#Dc),this.#Pc=this.#Mc,this.#qa=new Xa(this.#jl),this.#Ga=new mo(this.#jl),this.#Br=new po(this.#jl,this.#Dc),this.#oc=new vo(this.#jl,this.#ac),this.#Ac=new yo(this.#jl,this.#ac),this.#Hc=new bo(this.#jl.data),this.#Vc=new Do,this.#T.add(this.#jl.theme$.subscribe(()=>{this.#Ua(),this.#Wa()})),this.#Ua(),this.#Wa(),this.#T.add(this.#jl.viewMode$.subscribe(e=>{this.#Xc(e),this.#Yc(),this.#Kc()})),this.#T.add(this.#jl.sidebarVisible$.subscribe(e=>{this.#zc?e?this.#Zc():this.#Gc():this.#xc.style.display=e?"":"none"})),this.#T.add(this.#jl.currentDate$.subscribe(()=>{this.#Kc()})),this.#T.add(this.#jl.locale$.subscribe(()=>{this.#Kc(),this.#jc()})),this.#Za=new Fs(()=>this.save(),e=>this.#qc(e)),this.#T.add(this.#jl.data.itemAdded$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.itemChanged$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.itemRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.calendarAdded$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.calendarChanged$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.calendarRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this.#Za.initialize(),this.#T.add(this.#jl.data.itemRemoved$.subscribe(e=>{var t=this.#jl.selectedEntries$.getValue(),r=t.filter(t=>t.item.id!==e.item.id);r.length!==t.length&&this.#jl.selectedEntries$.next(r)})),this.#Xn.addEventListener("keydown",e=>this.#ja(e),!0),this.#_c(),this.#T.add(Vt().licenseChanged$.subscribe(()=>this.#_c())),this.#T.add(this.#jl.theme$.subscribe(()=>this.#_c())),this.#Jn=new ResizeObserver(e=>{var t=e[0].contentRect.width;this.#Jc(t<this.#Wc)}),this.#Jn.observe(this.#Xn),this.#Uc=new Ho(this.#Dc,()=>this.next(),()=>this.previous()),this.#Xc(this.#jl.viewMode$.getValue()),this.#Xn.style.visibility=""}get data(){return this.#jl.data}get events(){return this.#qa}get settings(){return this.#jl.settings}get viewMode(){return this.#jl.viewMode$.getValue()}set viewMode(e){this.#jl.viewMode$.next(e)}get currentDate(){return this.#jl.currentDate$.getValue()}set currentDate(e){this.#jl.currentDate$.next(e)}get selectedEntries(){return this.#jl.selectedEntries$.getValue()}set selectedEntries(e){this.#jl.selectedEntries$.next(e)}get selectedEntry(){var e=this.#jl.selectedEntries$.getValue();return e.length>0?e[e.length-1]:null}set selectedEntry(e){this.#jl.selectedEntries$.next(e?[e]:[])}get canEdit(){return this.#jl.canEdit$.getValue()}set canEdit(e){this.#jl.canEdit$.next(e)}get sidebarVisible(){return this.#jl.sidebarVisible$.getValue()}set sidebarVisible(e){this.#jl.sidebarVisible$.next(e)}get entryRendering(){return this.#jl.entryRendering$.getValue()}set entryRendering(e){this.#jl.entryRendering$.next(e)}get entryTooltip(){return this.#jl.entryTooltip$.getValue()}set entryTooltip(e){this.#jl.entryTooltip$.next(e)}async copyEntries(e){await this.#Ga.copy(e??this.selectedEntries)}async cutEntries(e){this.#Za.beginBatch(),await this.#Ga.cut(e??this.selectedEntries),this.#Za.endBatch()}async pasteEntries(){this.#Za.beginBatch(),await this.#Ga.paste(this.currentDate),this.#Za.endBatch()}async exportToImage(e){return this.#oc.exportToImage(e)}async exportToPdf(e){return this.#Ac.exportToPdf(e)}exportToIcs(e){return this.#Hc.exportToIcs(e)}exportToIcsText(e){return this.#Hc.exportToIcsText(e)}importFromIcs(e,t){if(!e||"string"!=typeof e)throw new Error("importFromIcs() requires a non-empty string argument.");if(!e.includes("BEGIN:VCALENDAR"))throw new Error("Invalid iCalendar format: missing BEGIN:VCALENDAR.");return this.#Vc.importFromIcs(e,t)}exportToCsv(e){return new Ao(this.#jl).exportToCsv(e)}async exportToExcel(e){return new Ao(this.#jl).exportToExcel(e)}static async checkExportDependencies(){var e={html2canvas:!1,jspdf:!1,exceljs:!1};try{await import("html2canvas"),e.html2canvas=!0}catch{}try{await import("jspdf"),e.jspdf=!0}catch{}try{await import("exceljs"),e.exceljs=!0}catch{}return e}today(){this.#jl.currentDate$.next(Bt())}next(){var e=new Date(this.currentDate);switch(this.viewMode){case"month":e.setMonth(e.getMonth()+1);break;case"week":e.setDate(e.getDate()+7);break;case"day":e.setDate(e.getDate()+1);break;case"agenda":e.setDate(e.getDate()+this.#jl.agendaDays$.getValue())}this.#jl.currentDate$.next(e)}previous(){var e=new Date(this.currentDate);switch(this.viewMode){case"month":e.setMonth(e.getMonth()-1);break;case"week":e.setDate(e.getDate()-7);break;case"day":e.setDate(e.getDate()-1);break;case"agenda":e.setDate(e.getDate()-this.#jl.agendaDays$.getValue())}this.#jl.currentDate$.next(e)}goToDate(e){this.#jl.currentDate$.next(e)}undo(){this.#Za.undo(),this.#qa.undone$.next()}redo(){this.#Za.redo(),this.#qa.redone$.next()}get canUndo$(){return this.#Za.canUndo$}get canRedo$(){return this.#Za.canRedo$}save(){for(var e={calendars:[],items:[],currentDate:this.currentDate.toISOString(),viewMode:this.viewMode},t=0;t<this.#jl.data.calendarsLength;t++)e.calendars.push(this.#jl.data.getCalendar(t).toAny());for(var r=0;r<this.#jl.data.itemsLength;r++)e.items.push(this.#jl.data.getItem(r).toAny());return JSON.stringify(e)}load(e){if(!e||"string"!=typeof e)throw new Error("load() requires a non-empty JSON string.");try{this.#qc(e)}catch(e){throw new Error(`Failed to load calendar state: ${e.message}`)}this.#Za.initialize()}destroy(){this.#Uc.destroy(),this.#Jn?.disconnect(),this.#T.unsubscribe(),this.#qa.destroy(),this.#Br.destroy(),this.#Sc.destroy(),this.#$c.destroy(),this.#Rc.destroy(),this.#Mc.destroy(),this.#Lc.destroy(),this.#Ic.destroy(),this.#Qc(),this.#eu(),this.#Xn.remove(),this.#ac.classList.remove("ec-host")}#Xc(e){switch(this.#Rc.hide(),this.#Mc.hide(),this.#Lc.hide(),this.#Ic.hide(),e){case"month":this.#Pc=this.#Rc;break;case"week":this.#Pc=this.#Mc;break;case"day":this.#Pc=this.#Lc;break;case"agenda":this.#Pc=this.#Ic}this.#Pc.show()}#tu=null;#ru=new Map;#iu=null;#su=null;#jc(){this.#Ec.innerHTML="",this.#ru.clear();var e=this.#jl.locale$.getValue().calendar;this.#Xn.setAttribute("aria-label",e?.ariaCalendar??"Event Calendar"),this.#xc.setAttribute("aria-label",e?.ariaSidebar??"Calendar sidebar"),this.#Ec.setAttribute("aria-label",e?.ariaNavigation??"Navigation"),this.#Oc=document.createElement("button"),this.#Oc.classList.add("ec-toolbar-btn","ec-toolbar-sidebar-toggle"),this.#Oc.innerHTML="☰",this.#Oc.setAttribute("aria-label",e?.ariaSidebar??"Calendar sidebar"),this.#Oc.addEventListener("click",()=>this.#nu()),this.#Ec.appendChild(this.#Oc);var t=document.createElement("div");t.classList.add("ec-toolbar-nav"),t.setAttribute("role","group"),t.setAttribute("aria-label",e?.ariaNavigation??"Navigation");var r=document.createElement("button");r.classList.add("ec-toolbar-btn","ec-toolbar-nav-btn"),r.textContent="‹",r.addEventListener("click",()=>this.previous()),this.#iu=r,t.appendChild(r);var i=document.createElement("button");i.classList.add("ec-toolbar-btn","ec-toolbar-today"),i.textContent=e?.today??"Today",i.setAttribute("aria-label",e?.ariaGoToToday??"Go to today"),i.addEventListener("click",()=>this.today()),t.appendChild(i);var s=document.createElement("button");s.classList.add("ec-toolbar-btn","ec-toolbar-nav-btn"),s.textContent="›",s.addEventListener("click",()=>this.next()),this.#su=s,t.appendChild(s),this.#tu=document.createElement("div"),this.#tu.classList.add("ec-toolbar-title"),this.#tu.setAttribute("aria-live","polite"),this.#tu.setAttribute("aria-atomic","true"),this.#Ec.appendChild(this.#tu),this.#Kc(),this.#Ec.appendChild(t);var n=document.createElement("div");n.classList.add("ec-toolbar-views"),n.setAttribute("role","group"),n.setAttribute("aria-label",e?.ariaViewMode??"View mode");var a=[{mode:"month",label:e?.month??"Month"},{mode:"week",label:e?.week??"Week"},{mode:"day",label:e?.day??"Day"},{mode:"agenda",label:e?.agenda??"Agenda"}];for(var o of a){var l=document.createElement("button");l.classList.add("ec-toolbar-btn","ec-toolbar-view-btn"),l.textContent=o.label,l.dataset.viewMode=o.mode,l.addEventListener("click",e=>{var t=e.currentTarget;this.viewMode=t.dataset.viewMode}),this.#ru.set(o.mode,l),n.appendChild(l)}this.#Ec.appendChild(n),this.#Yc(),this.#au()}#Kc(){if(this.#tu){var e=this.currentDate,t=this.#jl.locale$.getValue().language,r=this.viewMode;if("day"===r){var i=new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric"});this.#tu.textContent=i.format(e)}else if("week"===r&&this.#Pc){var s=this.#Pc.getVisibleRange(e);(n=new Date(s.end)).setDate(n.getDate()-1);i=new Intl.DateTimeFormat(t,{year:"numeric",month:"long",day:"numeric"});this.#tu.textContent=i.formatRange(s.start,n)}else if("agenda"===r&&this.#Pc){var n;s=this.#Pc.getVisibleRange(e);(n=new Date(s.end)).setDate(n.getDate()-1);i=new Intl.DateTimeFormat(t,{year:"numeric",month:"short",day:"numeric"});this.#tu.textContent=i.formatRange(s.start,n)}else{i=new Intl.DateTimeFormat(t,{year:"numeric",month:"long"});this.#tu.textContent=i.format(e)}}}#Yc(){var e=this.viewMode;for(var[t,r]of this.#ru){var i=t===e;r.classList.toggle("ec-active",i),r.setAttribute("aria-pressed",String(i))}this.#au()}#au(){var e=this.#jl.locale$.getValue().calendar,t=e?.ariaPrevious??"Previous",r=e?.ariaNext??"Next",i="";switch(this.viewMode){case"month":i=e?.month??"Month";break;case"week":i=e?.week??"Week";break;case"day":i=e?.day??"Day";break;case"agenda":i=e?.agenda??"Agenda"}this.#iu&&this.#iu.setAttribute("aria-label",t+" "+i.toLowerCase()),this.#su&&this.#su.setAttribute("aria-label",r+" "+i.toLowerCase()),this.#Dc.setAttribute("aria-label",i)}#Ua(){var e=this.#jl.theme$.getValue(),t=this.#Xn.style;t.setProperty("--ec-toolbar-bg",e.toolbar.backgroundColor),t.setProperty("--ec-toolbar-text",e.toolbar.textColor),t.setProperty("--ec-toolbar-border",e.toolbar.borderColor),t.setProperty("--ec-toolbar-btn-color",e.toolbar.buttonColor),t.setProperty("--ec-toolbar-btn-hover-bg",e.toolbar.buttonHoverBackgroundColor),t.setProperty("--ec-toolbar-active-bg",e.toolbar.activeViewButtonBackgroundColor),t.setProperty("--ec-toolbar-active-text",e.toolbar.activeViewButtonTextColor),t.setProperty("--ec-toolbar-height",e.toolbar.height+"px"),t.setProperty("--ec-header-bg",e.header.backgroundColor),t.setProperty("--ec-header-text",e.header.textColor),t.setProperty("--ec-header-border",e.header.borderColor),t.setProperty("--ec-header-weekend-text",e.header.weekendTextColor),t.setProperty("--ec-tg-today-text",e.header.todayBackgroundColor),t.setProperty("--ec-tg-today-circle",e.header.todayBackgroundColor),t.setProperty("--ec-tg-today-circle-text",e.header.todayTextColor),t.setProperty("--ec-content-bg",e.content.backgroundColor),t.setProperty("--ec-content-text",e.content.textColor),t.setProperty("--ec-grid-line",e.content.gridLineColor),t.setProperty("--ec-today-bg",e.content.todayBackgroundColor),t.setProperty("--ec-weekend-bg",e.content.weekendBackgroundColor),t.setProperty("--ec-other-month-bg",e.content.otherMonthBackgroundColor),t.setProperty("--ec-other-month-text",e.content.otherMonthTextColor),t.setProperty("--ec-tg-slot-hour-border",e.content.hourLineColor),t.setProperty("--ec-tg-slot-border",e.content.halfHourLineColor),t.setProperty("--ec-tg-now-line",e.content.currentTimeLineColor),t.setProperty("--ec-tg-now-line-height",e.content.currentTimeLineHeight+"px"),t.setProperty("--ec-day-header-height",e.content.dayHeaderHeight+"px"),t.setProperty("--ec-entry-height",e.content.entryHeight+"px"),t.setProperty("--ec-entry-gap",e.content.entryGap+"px"),t.setProperty("--ec-entry-radius",e.content.entryBorderRadius+"px"),t.setProperty("--ec-entry-accent-width",e.content.entryAccentBorderWidth+"px"),t.setProperty("--ec-declined-opacity",String(e.content.declinedOpacity)),t.setProperty("--ec-more-text",e.content.moreTextColor),t.setProperty("--ec-hover-bg",e.content.hoverBackgroundColor),t.setProperty("--ec-selected-outline",e.content.selectedEntryOutlineColor),t.setProperty("--ec-drag-highlight",e.content.dragHighlightColor),t.setProperty("--ec-scrollbar-thumb",e.content.scrollbarThumbColor),t.setProperty("--ec-scrollbar-track",e.content.scrollbarTrackColor),t.setProperty("--ec-focus-outline",e.content.focusOutlineColor),t.setProperty("--ec-focus-outline-width",e.content.focusOutlineWidth+"px"),t.setProperty("--ec-focus-outline-offset",e.content.focusOutlineOffset+"px"),t.setProperty("--ec-agenda-day-header-bg",e.content.agendaDayHeaderBackgroundColor),t.setProperty("--ec-agenda-day-header-text",e.content.agendaDayHeaderTextColor),t.setProperty("--ec-agenda-entry-height",e.content.agendaEntryHeight+"px"),t.setProperty("--ec-agenda-entry-gap",e.content.agendaEntryGap+"px"),t.setProperty("--ec-agenda-entry-hover-bg",e.content.agendaEntryHoverBackgroundColor),t.setProperty("--ec-agenda-empty-text",e.content.agendaEmptyTextColor),t.setProperty("--ec-agenda-time-width",e.content.agendaTimeWidth+"px");var r=e.content.entryColors[0];r&&(t.setProperty("--ec-tg-entry-accent",r.color2),t.setProperty("--ec-entry-chip-bg",r.chipBackgroundColor),t.setProperty("--ec-entry-chip-text",r.chipTextColor)),t.setProperty("--ec-sidebar-bg",e.sidebar.backgroundColor),t.setProperty("--ec-sidebar-text",e.sidebar.textColor),t.setProperty("--ec-sidebar-border",e.sidebar.borderColor),t.setProperty("--ec-sidebar-width",e.sidebar.width+"px"),t.setProperty("--ec-allday-bg",e.allDay.backgroundColor),t.setProperty("--ec-allday-border",e.allDay.borderColor),t.setProperty("--ec-allday-text",e.allDay.textColor),t.setProperty("--ec-tg-allday-min-height",e.allDay.minHeight+"px"),t.setProperty("--ec-tg-allday-max-height",e.allDay.maxHeight+"px"),t.setProperty("--ec-tg-gutter-bg",e.timeGutter.backgroundColor),t.setProperty("--ec-tg-gutter-text",e.timeGutter.textColor),t.setProperty("--ec-tg-gutter-border",e.timeGutter.borderColor),t.setProperty("--ec-tg-gutter-width",e.timeGutter.width+"px"),t.setProperty("--ec-mini-today-bg",e.sidebar.miniCalendarTodayBackgroundColor),t.setProperty("--ec-mini-today-text",e.sidebar.miniCalendarTodayTextColor),t.setProperty("--ec-mini-today-dot",e.sidebar.miniCalendarTodayDotColor),t.setProperty("--ec-mini-selected-bg",e.sidebar.miniCalendarSelectedBackgroundColor),t.setProperty("--ec-mini-selected-text",e.sidebar.miniCalendarSelectedTextColor),t.setProperty("--ec-mini-other-month-text",e.sidebar.miniCalendarOtherMonthTextColor),t.setProperty("--ec-mini-weekend-text",e.sidebar.miniCalendarWeekendTextColor),t.setProperty("--ec-mini-hover-bg",e.sidebar.miniCalendarHoverBackgroundColor),t.setProperty("--ec-mini-dot-color",e.sidebar.miniCalendarDayWithEventsColor),t.setProperty("--ec-cal-list-header-text",e.sidebar.calendarListHeaderTextColor),this.#Xn.setAttribute("data-color-scheme",e.colorScheme)}#Wa(){var e=this.#jl.theme$.getValue().font,t=e.name.indexOf(" ")>0?`"${e.name}"`:e.name;this.#Xn.style.fontFamily=t,this.#Xn.style.fontSize=e.size+"pt"}#Jc(e){if(this.#zc!==e)if(this.#zc=e,this.#Xn.classList.toggle("ec-mobile",e),e)"week"===this.viewMode&&(this.viewMode="day"),this.#xc.style.display="",this.#Gc();else{this.#Gc();var t=this.#jl.sidebarVisible$.getValue();this.#xc.style.display=t?"":"none"}}#nu(){this.#xc.classList.contains("ec-sidebar-open")?this.#Gc():this.#Zc()}#Zc(){this.#xc.classList.add("ec-sidebar-open"),this.#ou()}#Gc(){this.#xc.classList.remove("ec-sidebar-open"),this.#Qc()}#ou(){if(!this.#Nc){var e=document.createElement("div");e.classList.add("ec-sidebar-backdrop"),e.addEventListener("click",()=>this.#Gc()),this.#Xn.insertBefore(e,this.#kc),this.#Nc=e}}#Qc(){this.#Nc?.remove(),this.#Nc=null}#_c(){if(Vt().showWatermarkFor("calendar")){var e=this.#jl.theme$.getValue().colorScheme;this.#eu(),this.#Bc=function(e="light"){var t=document.createElement("div");t.className="tk-watermark",t.style.position="absolute",t.style.right="20px",t.style.bottom="20px",t.style.pointerEvents="none",t.style.zIndex="100";var r=t.attachShadow({mode:"closed"}),i=document.createElement("span");i.textContent=$i,i.style.fontFamily="sans-serif",i.style.fontSize="14px",i.style.fontWeight="bold",i.style.color="dark"===e?"#ffffff":"#000000",i.style.opacity=String(.12),r.appendChild(i);var s=new MutationObserver(function(){t.parentNode?r.contains(i)||r.appendChild(i):s.disconnect()});return s.observe(r,{childList:!0}),t}(e),this.#Dc.appendChild(this.#Bc),this.#Fc=new MutationObserver(()=>{this.#Bc&&!this.#Dc.contains(this.#Bc)&&this.#Dc.appendChild(this.#Bc)}),this.#Fc.observe(this.#Dc,{childList:!0})}else this.#eu()}#eu(){this.#Fc?.disconnect(),this.#Fc=null,this.#Bc?.remove(),this.#Bc=null}#ja(e){if(e.ctrlKey||e.metaKey)switch(e.key){case"z":case"Z":return e.preventDefault(),void(e.shiftKey?this.redo():this.undo());case"y":return e.preventDefault(),void this.redo();case"c":return e.preventDefault(),void this.copyEntries();case"x":if(!this.canEdit)return;return e.preventDefault(),void this.cutEntries();case"v":if(!this.canEdit)return;return e.preventDefault(),void this.pasteEntries()}switch(e.key){case"Delete":this.#lu(),e.preventDefault();break;case"Escape":this.#jl.selectedEntries$.getValue().length>0&&(this.#jl.selectedEntries$.next([]),e.preventDefault())}}#lu(){var e=this.#jl.selectedEntries$.getValue();if(0!==e.length&&this.canEdit){for(var t of e){var r=t.item,i=r.isRecurring,s={entry:t,isRecurring:i,scope:"all",cancel:!1};if(this.#jl.entryDeleting$.next(s),!s.cancel)if(i)Sa.applyDelete(r,t,s.scope).removeMaster&&this.#jl.data.removeItem(r);else this.#jl.data.removeItem(r)}this.#jl.selectedEntries$.next([])}}#qc(e){var t=JSON.parse(e);if(this.#jl.data.clear(),t.calendars)for(var r of t.calendars)this.#jl.data.addCalendar(sa.fromAny(r));if(t.items)for(var i of t.items)this.#jl.data.addItem(Da(i));t.viewMode&&this.#jl.viewMode$.next(t.viewMode),t.currentDate&&this.#jl.currentDate$.next(new Date(t.currentDate))}}class Bo extends Na{constructor(){super(),this.colorScheme="dark",this.toolbar.backgroundColor="#252526",this.toolbar.textColor="#d4d4d4",this.toolbar.borderColor="#3c3c3c",this.toolbar.buttonColor="#d4d4d4",this.toolbar.buttonHoverBackgroundColor="#3c3c3c",this.toolbar.activeViewButtonBackgroundColor="#264f78",this.toolbar.activeViewButtonTextColor="#7cc5ff",this.header.backgroundColor="#252526",this.header.textColor="#d4d4d4",this.header.borderColor="#3c3c3c",this.header.todayTextColor="#ffffff",this.header.todayBackgroundColor="#007acc",this.header.weekendTextColor="#999999",this.content.backgroundColor="#1e1e1e",this.content.textColor="#d4d4d4",this.content.gridLineColor="#343434",this.content.todayBackgroundColor="#1a2a3a",this.content.weekendBackgroundColor="#1a1a1a",this.content.otherMonthBackgroundColor="#181818",this.content.otherMonthTextColor="#555555",this.content.hourLineColor="#343434",this.content.halfHourLineColor="#2a2a2a",this.content.currentTimeLineColor="#f14c4c",this.content.moreTextColor="#999999",this.content.hoverBackgroundColor="rgba(255, 255, 255, 0.05)",this.content.selectedEntryOutlineColor="#007acc",this.content.focusOutlineColor="#7cc5ff",this.content.dragHighlightColor="rgba(0, 122, 204, 0.2)",this.content.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.content.scrollbarTrackColor="transparent",this.content.agendaDayHeaderBackgroundColor="#2d2d2d",this.content.agendaDayHeaderTextColor="#d4d4d4",this.content.agendaEntryHoverBackgroundColor="rgba(255, 255, 255, 0.05)",this.content.agendaEmptyTextColor="#666666",this.content.entryColors=[Aa.create({color1:"#3d5a99",color2:"#6a9bf5",textColor:"#c8dcfa",chipBackgroundColor:"#253a5e",chipTextColor:"#8ab4f8"}),Aa.create({color1:"#6a3d8a",color2:"#b07de0",textColor:"#dcc8f0",chipBackgroundColor:"#3a2058",chipTextColor:"#c49de8"}),Aa.create({color1:"#2e7a48",color2:"#5cb878",textColor:"#c8ecd4",chipBackgroundColor:"#1a3a28",chipTextColor:"#81d498"}),Aa.create({color1:"#8a3060",color2:"#d06898",textColor:"#f0c8da",chipBackgroundColor:"#4a1830",chipTextColor:"#e48ab0"}),Aa.create({color1:"#8a5520",color2:"#d09040",textColor:"#f0dcc0",chipBackgroundColor:"#4a2e10",chipTextColor:"#e0a860"}),Aa.create({color1:"#286868",color2:"#50b0a8",textColor:"#c0e8e4",chipBackgroundColor:"#183838",chipTextColor:"#78cccc"}),Aa.create({color1:"#8a3030",color2:"#d06060",textColor:"#f0c8c8",chipBackgroundColor:"#4a1818",chipTextColor:"#e48888"}),Aa.create({color1:"#585858",color2:"#909090",textColor:"#d8d8d8",chipBackgroundColor:"#333333",chipTextColor:"#b0b0b0"})],this.sidebar.backgroundColor="#252526",this.sidebar.textColor="#d4d4d4",this.sidebar.borderColor="#3c3c3c",this.sidebar.miniCalendarTodayTextColor="#ffffff",this.sidebar.miniCalendarTodayBackgroundColor="#007acc",this.sidebar.miniCalendarTodayDotColor="#ffffff",this.sidebar.miniCalendarSelectedBackgroundColor="#264f78",this.sidebar.miniCalendarSelectedTextColor="#7cc5ff",this.sidebar.miniCalendarOtherMonthTextColor="#555555",this.sidebar.miniCalendarWeekendTextColor="#808080",this.sidebar.miniCalendarHoverBackgroundColor="#3c3c3c",this.sidebar.miniCalendarDayWithEventsColor="#007acc",this.sidebar.calendarListHeaderTextColor="#999999",this.sidebar.calendarListCheckboxColor="#007acc",this.allDay.backgroundColor="#252526",this.allDay.borderColor="#3c3c3c",this.allDay.textColor="#999999",this.timeGutter.backgroundColor="#252526",this.timeGutter.textColor="#808080",this.timeGutter.borderColor="#3c3c3c"}}export{fa as Appointment,Ta as AvailabilityBlock,Gr as BaseChartContentStyle,Zr as BaseChartHeaderStyle,qr as BaseChartStyle,Yr as BaseSheetHeaderStyle,Kr as BaseSheetStyle,jr as BaseTaskColor,_r as BaseTheme,Ca as Birthday,sa as Calendar,Pa as CalendarData,La as CalendarEntry,pa as CalendarItem,ya as CalendarTask,cn as ClassicGanttChartTheme,vn as ClassicSchedulerTheme,qi as CurrencyCellEditor,or as CustomProperty,Bo as DarkEventCalendarTheme,un as DarkGanttChartTheme,mn as DarkSchedulerTheme,Ni as DateCellEditor,Sr as DateRange,ba as Deadline,ns as DecimalCellEditor,Vi as DefaultTableCellRenderer,ji as DialogCellEditor,za as EventCalendarAllDayStyle,Ba as EventCalendarContentStyle,ja as EventCalendarContext,Vo as EventCalendarEngine,Aa as EventCalendarEntryColor,Xa as EventCalendarEvents,Va as EventCalendarHeaderStyle,Ua as EventCalendarSettings,Fa as EventCalendarSidebarStyle,Na as EventCalendarTheme,Oa as EventCalendarTimeGutterStyle,Ha as EventCalendarToolbarStyle,Xs as GanttChartContext,js as GanttChartEngine,Ys as GanttChartEvents,Ks as GanttChartSettings,Jr as GanttChartTaskColor,ti as GanttChartTheme,us as GanttSheet,wa as Holiday,ss as IntegerCellEditor,ur as Lag,rr as Length,Wa as LightEventCalendarTheme,gs as LightGanttChartTheme,gn as LightSchedulerTheme,va as Meeting,dn as ModernGanttChartTheme,pn as ModernSchedulerTheme,Ui as PercentCellEditor,ps as Rate,Sa as RecurrenceEditor,Ia as RecurrenceExpander,aa as RecurrenceRule,xa as Reminder,vs as Resource,ka as ResourceBooking,ms as ResourceList,Qn as ResourceSchedulerContext,ea as ResourceSchedulerEngine,ta as ResourceSchedulerEvents,ra as ResourceSchedulerSettings,yn as ResourceType,fn as SchedulerData,Vn as SchedulerEvent,bn as SchedulerResource,On as SchedulerSheet,ls as Table,Fi as TableCellEditor,Hi as TableCellRenderer,is as TableColumn,zs as TableContext,zi as TableInputCellEditor,cr as Task,hn as TaskFilters,gr as TaskLink,fr as TaskList,ir as TaskPart,nr as TaskResource,Oi as TextCellEditor,wr as TimeOfDay,Gr as TimelineChartContentStyle,Zr as TimelineChartHeaderStyle,qr as TimelineChartStyle,Yr as TimelineSheetHeaderStyle,Kr as TimelineSheetStyle,jr as TimelineTaskColor,_r as TimelineTheme,ds as TreeTable,ar as Work,yr as WorkingCalendar,br as WorkingShift,Da as calendarItemFromAny,Gs as csLocale,qs as deLocale,Ns as defaultLocale,Zs as enLocale,_s as esLocale,Js as frLocale,mr as getLinkType,Qs as itLocale,en as jaLocale,tn as koLocale,rn as nlLocale,sn as plLocale,nn as ptLocale,Xr as resolveTaskColor,an as ruLocale,Ht as setLicense,on as svLocale,ln as zhLocale};
|
|
6
|
+
/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const ht=BigInt(0),dt=BigInt(1),ct=BigInt(2),ut=BigInt(5),gt=BigInt(8),mt=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),pt=(()=>({p:mt,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:gt,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")}))();function vt(e){return e[0]&=248,e[31]&=127,e[31]|=64,e}const ft=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function yt(e,t){const r=mt,i=De(t*t*t,r),s=function(e){const t=BigInt(10),r=BigInt(20),i=BigInt(40),s=BigInt(80),n=mt,a=e*e%n*e%n,o=Se(a,ct,n)*a%n,l=Se(o,dt,n)*e%n,h=Se(l,ut,n)*l%n,d=Se(h,t,n)*h%n,c=Se(d,r,n)*d%n,u=Se(c,i,n)*c%n,g=Se(u,s,n)*u%n,m=Se(g,s,n)*u%n,p=Se(m,t,n)*h%n;return{pow_p_5_8:Se(p,ct,n)*e%n,b2:a}}(e*De(i*i*t,r)).pow_p_5_8;let n=De(e*i*s,r);const a=De(t*n*n,r),o=n,l=De(n*ft,r),h=a===e,d=a===De(-e,r),c=a===De(-e*ft,r);return h&&(n=o),(d||c)&&(n=l),Ae(n,r)&&(n=De(-n,r)),{isValid:h||d,value:n}}const bt=at(pt,{uvRatio:yt}),wt=(()=>bt.Fp)(),Tt=(()=>bt.Fn)();function Ct(e){return lt(bt,_,Object.assign({adjustScalarBytes:vt,zip215:!0},e))}const xt=Ct({}),kt=ft,Et=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Dt=e=>yt(dt,e),St=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class $t extends ot{static BASE=(()=>new $t(bt.BASE))();static ZERO=(()=>new $t(bt.ZERO))();static Fp=(()=>wt)();static Fn=(()=>Tt)();constructor(e){super(e)}static fromAffine(e){return new $t(bt.fromAffine(e))}assertSame(e){if(!(e instanceof $t))throw new Error("RistrettoPoint expected")}init(e){return new $t(e)}static fromBytes(e){h(e,32);const{a:t,d:r}=pt,i=mt,s=e=>wt.create(e),n=(e=>wt.create(he(e)&St))(e);if(!function(e,t){if(e=J(e),t=J(t),e.length!==t.length)return!1;let r=0;for(let i=0;i<e.length;i++)r|=e[i]^t[i];return 0===r}(wt.toBytes(n),e)||Ae(n,i))throw new Error("invalid ristretto255 encoding 1");const a=s(n*n),o=s(dt+t*a),l=s(dt-t*a),d=s(o*o),c=s(l*l),u=s(t*r*d-c),{isValid:g,value:m}=Dt(s(u*c)),p=s(m*l),v=s(m*p*u);let f=s((n+n)*p);Ae(f,i)&&(f=s(-f));const y=s(o*v),b=s(f*y);if(!g||Ae(b,i)||y===ht)throw new Error("invalid ristretto255 encoding 2");return new $t(new bt(f,y,dt,b))}static fromHex(e){return $t.fromBytes(x(e))}toBytes(){let{X:e,Y:t,Z:r,T:i}=this.ep;const s=mt,n=e=>wt.create(e),a=n(n(r+t)*n(r-t)),o=n(e*t),l=n(o*o),{value:h}=Dt(n(a*l)),d=n(h*a),c=n(h*o),u=n(d*c*i);let g;if(Ae(i*u,s)){let r=n(t*kt),i=n(e*kt);e=r,t=i,g=n(d*Et)}else g=c;Ae(e*u,s)&&(t=n(-t));let m=n((r-t)*g);return Ae(m,s)&&(m=n(-m)),wt.toBytes(m)}equals(e){this.assertSame(e);const{X:t,Y:r}=this.ep,{X:i,Y:s}=e.ep,n=e=>wt.create(e),a=n(t*s)===n(r*i),o=n(r*s)===n(t*i);return a||o}is0(){return this.equals($t.ZERO)}}Object.freeze($t.BASE),Object.freeze($t.ZERO),Object.freeze($t.prototype),Object.freeze($t);function Rt(e){if(!e.startsWith("TK-"))return null;var t=e.substring(3),r=t.lastIndexOf(".");if(-1===r)return null;var i=t.substring(0,r),s=Lt(t.substring(r+1)),n=Lt("rDZAxa9-lLKBmLtt6IZXQpmb6zPwuIcTI6BXpCVsnU8"),a=function(e){for(var t=[],r=0;r<e.length;r++){var i=e.charCodeAt(r);i<128?t.push(i):i<2048?t.push(192|i>>6,128|63&i):t.push(224|i>>12,128|i>>6&63,128|63&i)}return new Uint8Array(t)}(i);if(64!==s.length||32!==n.length||0===a.length)return null;try{if(!xt.verify(s,a,n))return null}catch{return null}try{for(var o=Lt(i),l="",h=0;h<o.length;h++)l+=String.fromCharCode(o[h]);var d=JSON.parse(l);return"number"!=typeof d.t||"number"!=typeof d.e||"string"!=typeof d.v||"string"!=typeof d.h||void 0!==d.s&&"string"!=typeof d.s?null:d}catch{return null}}var Mt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function Lt(e){e=e.replace(/=+$/,"");for(var t=[],r=0,i=0,s=0;s<e.length;s++){var n=Mt.indexOf(e[s]);if(-1===n)return new Uint8Array(0);r=r<<6|n,(i+=6)>=8&&(i-=8,t.push(r>>i&255))}return new Uint8Array(t)}var It=Math.floor(new Date("2025-05-12").getTime()/1e3),Pt=["suite","gantt","scheduler","calendar"];class At{static#e;#t=s.Free;#r="suite";#i=!1;#s=new e;static get(){return At.#e||(At.#e=new At),At.#e}setLicenseKey(e){var t=Rt(e);return t?"1"!==t.v&&t.e<It?(console.warn("[TimelineKit] License key does not cover this major version. Please renew your subscription to use v1."),this.#t=s.Free,this.#r="suite",this.#i=!1,void this.#s.next()):(this.#t=t.t,this.#r=t.s&&-1!==Pt.indexOf(t.s)?t.s:"suite",this.#i=!0,void this.#s.next()):(console.warn("[TimelineKit] Invalid license key."),this.#t=s.Free,this.#r="suite",this.#i=!1,void this.#s.next())}isAvailable(e){return function(e,t,r){if(t<s.Pro)return!1;if(!r||"suite"===r)return!0;var i=a[e];return null===i||i===r}(e,this.#t,this.#r)}get currentTier(){return this.#t}get scope(){return this.#r}get isValid(){return this.#i}get showWatermark(){return this.#t<s.Pro}showWatermarkFor(e){return this.#t<s.Pro||"suite"!==this.#r&&this.#r!==e}get licenseChanged$(){return this.#s}}function Ht(e){At.get().setLicenseKey(e)}function Vt(){return At.get()}function Bt(){const e=new Date;return e.setHours(0,0,0,0),e}function Ft(e){var t=Bt();const r=new Date(t);return r.setDate(t.getDate()+e),r}function zt(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function Ot(e){const t=new Date(e);return t.setDate(t.getDate()+1),t.setHours(0,0,0,0),t}function Nt(e){const t=new Date(e);return t.setDate(t.getDate()-1),t.setHours(23,59,59,0),t}function Wt(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Ut(e,t){return(null===e||null!==t)&&((null!==e||null===t)&&(null===e&&null===t||e.getTime()==t.getTime()))}function jt(e,t,r,i){const s=Math.max(e.getTime(),r.getTime()),n=Math.min(t.getTime(),i.getTime()),a=Math.max(0,n-s);return Math.floor(a/6e4)}function Xt(e,t){var r=12*(t.getFullYear()-e.getFullYear())+t.getMonth()-e.getMonth(),i=new Date(e.getFullYear(),e.getMonth()+1,0).getDate(),s=new Date(t.getFullYear(),t.getMonth()+1,0).getDate();return r-(e.getDate()-1+(60*e.getHours()+e.getMinutes())/1440)/i+(t.getDate()-1+(60*t.getHours()+t.getMinutes())/1440)/s}function Yt(e,t,r){const i=e.children;r>=0&&r<i.length?e.insertBefore(t,i[r]):r>=i.length?e.appendChild(t):e.insertBefore(t,i[0])}function Kt(e,t){return new Intl.DateTimeFormat(t,{dateStyle:"short"}).format(e)}function Zt(e,t,r){return new Intl.DateTimeFormat(t,r).format(e)}function Gt(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),r=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-r);var i=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-i.getTime())/864e5+1)/7)}function qt(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}T${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}function _t(e){var t=e.match(/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2}))?$/);if(!t)throw new Error("Invalid date and time value: "+e);return new Date(parseInt(t[1]),parseInt(t[2])-1,parseInt(t[3]),t[4]?parseInt(t[4]):0,t[5]?parseInt(t[5]):0,t[6]?parseInt(t[6]):0)}function Jt(e,t){return e.getTime()>t.getTime()?e:t}function Qt(e,t){return e.getTime()<t.getTime()?e:t}function er(e){const t="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";let r="";const i=new Uint8Array(e);(globalThis.crypto??crypto).getRandomValues(i);for(let s=0;s<e;s++){r+=t[i[s]%62]}return r}function tr(e){switch(e.keyCode){case 46:case 8:return!0}return!1}class rr{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){if(t<0)throw new Error("Length value must be greater or equal to zero.");this.#n=e,this.#a=t}getEndTime(e,t){var r=this.#a,i=new Date(e),s=0,n=this.unit;if("week"==n&&(r*=t.workingDays.length,n="day"),"day"==n){for(;r>=1;)i=new Date(i),t.isWorkingDay(i)?(r--,i.setDate(i.getDate()+1)):i=Ot(i);s=r*t.getHoursPerDay()*60}if("month"==n){for(;r>=1;){(i=new Date(i)).setMonth(i.getMonth()+1);break}s=30*r*t.getHoursPerDay()*60}if("hour"==n&&(s=60*this.#a),"minute"==n&&(s=this.#a),s>0)for(i=t.moveToStartShift(i,!0);s>0;)i.setMinutes(i.getMinutes()+1),i=t.moveToStartShift(i,!0),s--;return t.moveToEndShift(i,!0)}static getLength(e,t,r,i){var s=new Date(e),n=0,a=0;if("month"==r)for(;;){var o=new Date(s);o.setMonth(o.getMonth()+1);var l=t;if(i.isEndOfDay(l)&&(l=Ot(l)),o<=l&&(a++,s=o),o>=l)break}for(;s<t;){var h=Wt(s=new Date(s),t)?t:Ot(s);n+=i.getHoursBetween(s,h)/i.getHoursPerDay(),s=Ot(s)}switch(r){case"day":return new rr(r,n);case"week":return new rr(r,n/i.workingDays.length);case"minute":return new rr(r,n*i.getHoursPerDay()*60);case"hour":return new rr(r,n*i.getHoursPerDay());case"month":return new rr(r,a+n/30);default:throw new Error}}equals(e){return this.#n==e.unit&&this.#a==e.value}#o(){switch(this.unit){case"minute":return"m";case"hour":return"h";case"day":return"d";case"week":return"w";case"month":return"M"}}toString(){return this.value.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2})+this.#o()}static tryParse(e){const t=e.match(/^(\d+(\.\d+)?)([mhdwM])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(r>1e3)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day";break;case"w":s="week";break;case"M":s="month"}return new rr(s,r)}static parse(e){var t=rr.tryParse(e);if(!t)throw new Error("Failed to parse length "+e);return t}static fromAny(e){var t=e.unit,r=e.value;return new rr(t,r)}toAny(){return{unit:this.unit,value:this.value}}}class ir{#l;get startTime(){return this.#l}set startTime(e){e!=this.#l&&(this.startTimeChanging.next({part:this,value:e}),this.#l=this.calendar.moveToStartShift(e,!0),this.#h=this.#d.getEndTime(this.#l,this.calendar),this.startTimeChanged.next())}#h;get endTime(){return this.#h}set endTime(e){e!=this.#h&&(this.#c(this.startTime,e),this.endTimeChanging.next({part:this,value:e}),this.#h=this.calendar.moveToEndShift(e,!0),this.#d=rr.getLength(this.#l,this.#h,this.length.unit,this.calendar),this.endTimeChanged.next())}#d;get length(){return this.#d}set length(e){e.equals(this.#d)||(this.lengthChanging.next({part:this,value:e}),this.#d=e,this.#h=e.getEndTime(this.#l,this.calendar),this.lengthChanged.next())}#u=null;get task(){return this.#u}set task(e){if(this.#u)throw new Error("Once assigned the task cannot be changed");e!=this.#u&&(this.#u=e)}#g;get calendar(){return this.#g.getValue()}startTimeChanging=new e;endTimeChanging=new e;lengthChanging=new e;startTimeChanged=new e;endTimeChanged=new e;lengthChanged=new e;progressChanged=new e;constructor(e,t,r){this.#l=e,this.#d=t,this.#g=r,this.#h=t.getEndTime(e,this.calendar)}#c(e,t){if(e>t)throw new sr("Start time needs to be less or equal to end time")}get lengthInHours(){return this.calendar.getHoursBetween(this.startTime,this.endTime)}get progress(){if(!this.#u)return null;var e=this.#u.progress;if(null==e)return null;for(var t=this.#u.partsLengthInHours*((this.#u.progress??0)/100),r=0;r<this.#u.partsLength;r++){var i=this.#u.getPart(r),s=i.lengthInHours;if(t>=s){if(i==this)return 100;t-=s}else{if(t>0){if(i==this)return t/s*100;break}if(t<=0)break}}return 0}toAny(){var e={};return e.startTime=qt(this.#l),e.endTime=qt(this.#h),e.length=this.#d.toAny(),e}static fromAny(e,t){var r=_t(e.startTime),i=rr.fromAny(e.length);return new ir(r,i,t)}}class sr extends Error{constructor(e){super(e),this.name="ValidationError"}}class nr{#m;get id(){return this.#m}#p;get resource(){return this.#p}#v;get capacity(){return this.#v}set capacity(e){if(e!=this.#v){if(e<=0)throw new Error("Invalid resource capacity");this.#v=e,this.#f()}}changed$=new e;#y;constructor(e,t,r){if(r<=0)throw new Error("Invalid resource capacity");this.#m=e||er(30),this.#p=t,this.#v=r,this.#y=this.#p.changed$.subscribe(()=>{this.#f()})}destroy(){this.#y.unsubscribe()}#f(){this.changed$.next({resource:this})}formatCapacity(){return this.#v/100==Math.floor(this.#v/100)?(this.#v/100).toString()+"x":this.#v+"%"}toAny(){return{id:this.id,resourceId:this.resource.id,capacity:this.capacity}}static fromAny(e,t){var r=t.getResourceById(e.resourceId);if(!r)throw new Error("Resource not found in the list: "+e.resourceId);return new nr(e.id,r,e.capacity)}}class ar{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){if(t<0)throw new Error("Work value must be greater or equal to zero.");this.#n=e,this.#a=t}static tryParse(e){const t=e.match(/^(\d+(\.\d+)?)([mhd])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(r>9999)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day"}return new ar(s,r)}#o(){switch(this.unit){case"minute":return"m";case"hour":return"h";case"day":return"d"}}toString(){return this.value.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2})+this.#o()}toHours(e){switch(this.#n){case"minute":return this.#a/60;case"hour":return this.#a;case"day":return this.#a*e.getHoursPerDay()}}static maxUnit(e,t){return"day"==e||"day"==t?"day":"hour"==e||"hour"==t?"hour":"minute"}static fromHours(e,t,r){switch(t){case"minute":return new ar(t,60*e);case"hour":return new ar(t,e);case"day":return new ar(t,e/r.getHoursPerDay())}}static sum(e,t){if(e.unit!=t.unit)throw new Error;return new ar(e.unit,e.value+t.value)}toAny(){return{unit:this.#n,value:this.#a}}static fromAny(e){return new ar(e.unit,e.value)}clone(){return new ar(this.unit,this.value)}}class or{#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e)}#a=null;get value(){return this.#a}set value(e){e!=this.#a&&(this.#a=e,this.#f())}changed$=new e;constructor(e,t){this.#b=e,this.#a=t}#f(){this.changed$.next()}toAny(){return{name:this.#b,value:this.#a}}static fromAny(e){return new or(e.name,e.value)}}class lr{#w=[];#T=new Map;#C;constructor(e){this.#C=e}addProperty(e){if(this.#w.find(t=>t.name==e.name))throw new Error(`Property ${e.name} has already been added`);this.#w.push(e),this.#x(e),this.#C(e)}removeProperty(e){var t=this.#w.indexOf(e);if(t<0)throw new Error("Property not found");this.#w.splice(t,1),this.#k(e)}renameProperty(e,t){var r=this.#w.find(t=>t.name==e);r&&(r.name=t)}getPropertyByName(e){return this.#w.find(t=>t.name==e)??null}getPropertyValue(e){return this.getPropertyByName(e)?.value??null}setPropertyValue(e,t){var r=this.getPropertyByName(e);r?r.value=t:this.addProperty(new or(e,t))}get hasProperties(){return this.#w.length>0}serializeProperties(){return this.#w.map(e=>e.toAny())}loadProperties(e){if(this.#E(),this.#w=[],e)for(var t of e){var r=or.fromAny(t);this.#w.push(r),this.#x(r)}}#x(e){var t=e.changed$.subscribe(()=>{this.#C(e)});this.#T.set(e,t)}#k(e){var t=this.#T.get(e);t&&(t.unsubscribe(),this.#T.delete(e))}#E(){for(var[e,t]of this.#T)t.unsubscribe();this.#T.clear()}}class hr{#D=new Map;add(e,t){var r=this.#D.get(e);r||(r=[],this.#D.set(e,r)),r.push(t)}remove(e){var t=this.#D.get(e);if(t){for(var r of t)r.unsubscribe();this.#D.delete(e)}}clear(){for(var e of this.#D.values())for(var t of e)t.unsubscribe();this.#D.clear()}}class dr{#S=[];#T=new hr;#$;constructor(e){this.#$=e}get length(){return this.#S.length}get(e){return this.#S[e]}get last(){return this.#S[this.#S.length-1]}get startTime(){return this.#S[0].startTime}get endTime(){return this.last.endTime}indexOf(e){return this.#S.indexOf(e)}includes(e){return this.#S.includes(e)}get lengthUnit(){return this.#S.length>0?this.#S[0].length.unit:null}totalLengthInHours(e){var t=0;for(let e of this.#S)t+=e.lengthInHours;return t}forEach(e){for(var t=0;t<this.#S.length;t++)e(this.#S[t],t)}insertSorted(e){for(var t=0;t<=this.#S.length;t++){if(!(t<this.#S.length))return void this.#S.splice(t,0,e);if(e.startTime<=this.#S[t].startTime)return void this.#S.splice(t,0,e)}}remove(e){var t=this.#S.indexOf(e);return t>=0&&(this.#S.splice(t,1),this.#T.remove(e)),t}clear(){this.#T.clear(),this.#S=[]}assign(e){this.clear(),this.#S=e;for(let e of this.#S)this.#x(e)}subscribe(e){this.#x(e)}unsubscribe(e){this.#T.remove(e)}tryCombineAdjacent(e){for(var t=0;t<this.#S.length-1;){var r=this.#S[t],i=this.#S[t+1],s=!1;(this.#R(r,i)||r.endTime<=i.startTime&&0==e.getHoursBetween(r.endTime,i.startTime)||i.endTime<=r.startTime&&0==e.getHoursBetween(i.endTime,r.startTime))&&(s=!0),s?(this.#S.splice(t+1,1),r.startTime=Qt(r.startTime,i.startTime),r.endTime=Jt(r.endTime,i.endTime)):t++}}removeEmpty(){for(var e=!1,t=this.#S.length-1;t>=0;t--){var r=this.#S[t];0==r.length.value&&(this.#S.splice(t,1),this.#T.remove(r),e=!0)}return{changed:e,allRemoved:0==this.#S.length}}#R(e,t){return e.startTime<=t.endTime&&t.startTime<=e.endTime}#x(e){this.#T.add(e,e.startTimeChanged.subscribe(()=>{this.#$.onPartStartTimeChanged()})),this.#T.add(e,e.endTimeChanged.subscribe(()=>{this.#$.onPartEndTimeChanged()})),this.#T.add(e,e.lengthChanged.subscribe(()=>{this.#$.onPartLengthChanged()}))}}let cr=class{#m;get id(){return this.#m}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#b=null;get name(){return this.#b}set name(e){e!=this.#b&&this.#L(e)}#l=null;get startTime(){return this.#l}set startTime(e){this.#I(e)}#h=null;get endTime(){return this.#h}set endTime(e){this.#P(e)}get calendar(){return this.#g.getValue()}get length(){switch(this.type){case"empty":return null;case"milestone":return new rr(this.#A??this.calendar.defaultLengthUnit,0);case"task":return rr.getLength(this.startTime,this.endTime,this.#H.get(0).length.unit,this.calendar);case"summary":return rr.getLength(this.startTime,this.endTime,this.#A??this.calendar.defaultLengthUnit,this.calendar)}}set length(e){this.#V(e)}#A=null;get customLengthUnit(){return this.#A}set customLengthUnit(e){e!=this.#A&&this.#B(e)}#F=null;get baseStartTime(){return this.#F}#z=[];#H;get lastPart(){return this.#H.last}#O="empty";get type(){return this.#O}set type(e){this.#O!=e&&this.#N(e)}#W=null;get parent(){return this.#W}#U=null;get progress(){return this.#U}set progress(e){e!=this.#U&&this.#j(e)}#X=!1;get collapsed(){return this.#X}set collapsed(e){"summary"==this.type&&this.#X!=e&&(this.#X=e,this.collapsedChanged$.next({task:this}))}#Y=[];get resourcesLength(){return this.#Y.length}getResource(e){return this.#Y[e]}getResourceByResourceId(e){return this.#Y.find(t=>t.resource.id==e)??null}getResourceById(e){return this.#Y.find(t=>t.id==e)??null}#K=null;get customWork(){return this.#K}get work(){switch(this.#O){case"empty":case"milestone":return null;case"task":return this.#Z();case"summary":return this.#G()}}set work(e){this.#q(e)}#_=null;get customCost(){return this.#_}get cost(){switch(this.#O){case"empty":case"milestone":return null;case"task":return this.#J();case"summary":return this.#Q()}}set cost(e){this.#ee(e)}#te=null;get note(){return this.#te}set note(e){this.#te!=e&&(this.#te=e,this.#f())}warnings=[];#re="asap";get constraintType(){return this.#re}set constraintType(e){this.#re!=e&&(this.#re=e,"asap"!==e&&"alap"!==e||(this.#ie=null),this.#f())}#ie=null;get constraintDate(){return this.#ie}set constraintDate(e){this.#ie?.getTime()!=e?.getTime()&&(this.#ie=e,this.#f())}#se=null;get baselineStartTime(){return this.#se}set baselineStartTime(e){this.#se=e}#ne=null;get baselineEndTime(){return this.#ne}set baselineEndTime(e){this.#ne=e}earlyStart=null;earlyFinish=null;lateStart=null;lateFinish=null;totalFloat=null;freeFloat=null;isCritical=!1;#ae;#g;#oe;#le;changed$=new e;typeChanged$=new e;startTimeChanged$=new e;endTimeChanged$=new e;collapsedChanged$=new e;subtaskAdded$=new e;resourceAdding$=new e;#he=new hr;#de=new hr;constructor(e,t,r,i){this.#g=t,this.#oe=r,this.#le=i??null,this.#m=e||er(30),this.#H=new dr({onPartStartTimeChanged:()=>{this.#ce(),this.#H.tryCombineAdjacent(this.calendar)},onPartEndTimeChanged:()=>{this.#ue(),this.#ce(),this.#H.tryCombineAdjacent(this.calendar)},onPartLengthChanged:()=>{this.#ue(),"task"==this.type&&(this.#ce(),this.#H.tryCombineAdjacent(this.calendar))}}),this.#ae=new lr(e=>{null!==e.value&&this.#ge(),this.#f()})}#f(){this.changed$.next({task:this})}#me(e){Ut(this.#l,e)||this.startTimeChanged$.next({task:this})}#pe(e){Ut(this.#h,e)||this.endTimeChanged$.next({task:this})}#ue(){var e=this.#H.removeEmpty();e.allRemoved&&(this.#l=this.#h,this.type="milestone"),e.changed&&this.#f()}#ve(e,t){this.#he.add(e,t)}#fe(e){this.#he.remove(e)}addPart(e,t){var r=this.#O,i=new ir(e,t,this.#g);if("summary"==this.type||"milestone"==this.type)throw new Error("Cannot add a part to a task of type "+this.type);var s=this.#H.lengthUnit;if(null!==s&&s!=i.length.unit)throw new Error("Length unit of the part is different than length unit of the task");return i.startTime=this.calendar.moveToStartShift(i.startTime,!0),this.#H.insertSorted(i),this.#H.tryCombineAdjacent(this.calendar),this.#H.includes(i)&&(i.task=this,this.#H.subscribe(i),"empty"==this.#O&&(this.#O="task",this.#U=0)),this.#ce(),this.#f(),r!=this.#O&&this.typeChanged$.next({task:this,oldType:r,newType:this.#O}),i}removePart(e){if("summary"==this.type||"milestone"==this.type)throw new Error("Cannot remove a part from a task of type "+this.type);if(this.#H.remove(e)<0)throw new Error("Task part not found");0==this.#H.length&&(this.type="empty"),this.#f()}#ce(){var e=this.#l,t=this.#h;this.#l=this.#H.startTime,this.#h=this.#H.endTime,this.#ye(),this.#me(e),this.#pe(t),this.#f()}#be(){var e=this.#l,t=this.#h,r=null,i=null;for(let e of this.#z)(!r||e.startTime&&r>e.startTime)&&e.startTime&&(r=new Date(e.startTime)),(!i||e.endTime&&i<e.endTime)&&e.endTime&&(i=new Date(e.endTime));this.#l=r,this.#h=i,this.#ye();var s=0,n=0;for(let e of this.#z){var a=e.partsLengthInHours;s+=a,n+=(e.progress??0)*a}this.#U=s>0?n/s:null,this.#me(e),this.#pe(t),this.#f()}get partsLength(){return this.#H.length}getPart(e){return this.#H.get(e)}#we(e){var t=this.#z.indexOf(e);if(t<0)throw new Error("Subtask is not included in the task");return t}get subtasksLength(){return this.#z.length}getSubtask(e){return this.#z[e]}addSubtask(e){var t=this.#O;if(e.parent)throw new Error(`Task '${e.name}' (${e.id}) is already a subtask of '${e.parent.name}' (${e.parent.id})`);e.#W=this,"summary"!=this.#O&&(this.#X=!1),this.#O="summary",this.#K=null,this.#_=null,this.#Y=[],this.#z.push(e),this.subtaskAdded$.next({task:e}),this.#Te(e),e.#f(),this.#be(),t!=this.#O&&this.typeChanged$.next({task:this,oldType:t,newType:this.#O})}#Te(e){this.#ve(e,e.changed$.subscribe(e=>{this.#Ce(e.task)}))}#Ce(e){this.#be()}removeSubtask(e){var t=this.#we(e);if(this.#z.splice(t,1),this.#fe(e),e.#W=null,0==this.#z.length){var r=new Date(this.#l);this.#xe(!0),this.addPart(r,new rr("day",1))}else this.#be();this.#z.length>0&&this.#z[this.#z.length-1].#f(),this.#f()}get level(){for(var e=0,t=this.parent;t;)e++,t=t.parent;return e}#L(e){this.#b=e,null!==e&&this.#ge(),this.#f()}#ge(){if("empty"==this.type){var e=Bt(),t=this.#oe.getValue();t.startDate.getTime()>e.getTime()&&(e=new Date(t.startDate)),this.addPart(e,new rr("day",1))}}#N(e){var t,r=this.#O,i=this.#l,s=this.#h;if("milestone"==e)t=this.#h?this.calendar.getEndOfWorkingDay(this.#h):this.calendar.getEndOfWorkingDay(Bt()),this.#l=t,this.#h=t,this.#H.clear(),this.#z=[],this.#U=null,this.#X=!1,this.#K=null,this.#_=null,this.#Y=[];else if("task"==e){this.#z=[],this.#H.clear(),this.#O="empty",this.#U=0,this.#X=!1;var n=zt(this.#l??Bt()),a=new rr("day",1);this.addPart(n,a)}else{if("summary"==e)throw new Error("Add a subtask to change type to Summary.");"empty"==e&&this.#xe()}this.#O=e,this.#ye(),this.#me(i),this.#pe(s),this.#f(),r!=this.#O&&this.typeChanged$.next({task:this,oldType:r,newType:this.#O})}#xe(e){var t=this.#O;e||(this.#b=null),this.#z=[],this.#H.clear(),this.#O="empty",this.#l=null,this.#h=null,this.#U=null,this.#F=null,this.#X=!1,this.#K=null,this.#_=null,this.#Y=[],this.#re="asap",this.#ie=null,t!=this.#O&&this.typeChanged$.next({task:this,oldType:t,newType:this.#O})}#B(e){this.#A=e,this.#f()}#I(e){var t=this.#l,r=this.#h;if("empty"!=this.type){var i="milestone"==this.type?e:this.calendar.moveToStartShift(e,!0);if(i.getTime()!=this.#l.getTime()){if("task"==this.type){var s=0;if(i.getTime()>this.#l.getTime()){s=this.calendar.getHoursBetween(this.#l,i);for(var n=this.#H.length-1;n>=0;n--){(a=this.#H.get(n)).startTime=this.calendar.addHours(a.startTime,s,!0)}}else if(i.getTime()<this.#l.getTime())for(s=this.calendar.getHoursBetween(i,this.#l),n=0;n<this.#H.length;n++){var a;(a=this.#H.get(n)).startTime=this.calendar.addHours(a.startTime,-s)}}else{if("summary"==this.type)throw new Error("Cannot change the start date of a summary");if("milestone"==this.type){var o=this.calendar.getEndOfWorkingDay(i);this.#l=o,this.#h=o}}this.#ye(),this.#me(t),this.#pe(r),this.#f()}}else this.addPart(e,new rr(this.calendar.defaultLengthUnit,1))}#P(e){var t=this.#l,r=this.#h;if("empty"!=this.type){if("task"==this.type){if(1!=this.#H.length)throw new Error("Cannot change end date of a task consisting of multiple parts");this.#H.get(0).endTime=e}else{if("summary"==this.type)throw new Error("Cannot change the end date of a summary");if("milestone"==this.type){var i=this.calendar.moveToEndShift(e,!0);this.#l=i,this.#h=i}}this.#me(t),this.#pe(r),this.#f()}else{var s=this.calendar.moveToStartShift(zt(e),!0);this.addPart(s,new rr(this.calendar.defaultLengthUnit,1))}}#ye(){this.#le?.()||(this.#F=this.#l?new Date(this.#l):null)}#j(e){switch(this.type){case"task":if(null==e)throw new Error("Invalid value");if(e<0||e>100)throw new Error("Value out of range");this.#U=e,this.#f();break;case"empty":this.addPart(Bt(),new rr(this.calendar.defaultLengthUnit,1)),this.#U=e,this.#f();break;case"milestone":case"summary":throw new Error("Cannot set progress of task of type "+this.type)}}get partsLengthInHours(){return this.#H.totalLengthInHours(this.calendar)}indexOf(e){return this.#H.indexOf(e)}isDescendantOf(e){for(var t=this.#W;null!=t;){if(t==e)return!0;t=t.#W}return!1}toggleCollapsed(){this.collapsed=!this.collapsed}#ke=!1;get filtered(){return this.#ke}set filtered(e){this.#ke=e}get hidden(){if(this.#ke)return!0;if(this.#W){for(var e=this.#W;e;){if(e.#X)return!0;e=e.parent}return!1}return!1}#V(e){if("empty"!=this.type){if("task"!=this.type){if("milestone"==this.type){if(0==e.value)return;var t=this.startTime;return this.#xe(!0),void this.addPart(t,e)}throw new Error("Invalid operation")}if(0==e.value)return void(this.type="milestone");if(1!=this.#H.length)throw new Error("Cannot set length of a task consisting of multiple parts");this.#H.get(0).length=e}else this.addPart(Bt(),e)}get isLengthEditable(){return"empty"==this.type||"task"==this.type&&1==this.#H.length||"milestone"==this.type}get isStartTimeEditable(){return"empty"==this.type||"task"==this.type||"milestone"==this.type}get isEndTimeEditable(){return"empty"==this.type||"task"==this.type&&1==this.#H.length||"milestone"==this.type}get isProgressEditable(){return"empty"==this.type||"task"==this.type}get isResourcesEditable(){return"task"==this.type}get isWorkEditable(){return"empty"==this.type||"task"==this.type&&0==this.#Y.length}get isCostEditable(){return"empty"==this.type||"task"==this.type&&0==this.#Y.length}deserializeProperties(e,t){this.#m=e.id,this.#M=e.color??0,this.#b=e.name??null,this.#l=e.startTime?_t(e.startTime):null,this.#h=e.endTime?_t(e.endTime):null,this.#A=e.customLengthUnit??null,this.#F=e.baseStartTime?_t(e.baseStartTime):null,this.#O=e.type,"milestone"===this.#O&&(this.#l&&!this.#h?this.#h=new Date(this.#l):this.#h&&!this.#l&&(this.#l=new Date(this.#h)));var r,i=e.parts&&e.parts.length>0;if(!i&&("task"===this.#O&&(this.#l&&0===this.#l.getHours()&&0===this.#l.getMinutes()&&(this.#l=this.calendar.moveToStartShift(this.#l,!0)),this.#h&&0===this.#h.getHours()&&0===this.#h.getMinutes()&&(this.#h=this.calendar.getEndOfWorkingDay(this.#h))),"milestone"===this.#O&&this.#l&&0===this.#l.getHours()&&0===this.#l.getMinutes())){var s=this.calendar.getEndOfWorkingDay(this.#l);this.#l=s,this.#h=s}if(i)r=e.parts.map(e=>ir.fromAny(e,this.#g));else if(this.#l&&this.#h&&"task"===this.#O){var n=rr.getLength(this.#l,this.#h,this.calendar.defaultLengthUnit,this.calendar);r=[new ir(this.#l,n,this.#g)]}else r=this.#l&&"milestone"===this.#O?[new ir(this.#l,new rr(this.calendar.defaultLengthUnit,0),this.#g)]:[];this.#H.assign(r),this.#U=e.progress??null,this.#X=e.collapsed??!1,this.#Y=e.resources?e.resources.map(e=>nr.fromAny(e,t)):[],this.#K=e.customWork?ar.fromAny(e.customWork):null,this.#_=e.customCost??null,this.#te=e.note??null,this.#se=e.baselineStartTime?_t(e.baselineStartTime):null,this.#ne=e.baselineEndTime?_t(e.baselineEndTime):null,this.#re=e.constraintType??"asap",this.#ie=e.constraintDate?_t(e.constraintDate):null,this.#ae.loadProperties(e.properties);for(let e of this.#Y)this.#Ee(e)}deserializePropertiesHierarchy(e,t){var r=e.parent;if(r){var i=t.find(e=>e.id==r);if(!i)throw new Error("Parent task not found: "+r);this.#W=i}this.#z=[],(e.subtasks??[]).map(e=>{var r=t.find(t=>t.id==e);if(!r)throw new Error("Subtask not found: "+e);this.#z.push(r),this.#Te(r)}),this.#z.length>0&&this.#be()}#De(e,t){this.#de.add(e,t)}#Se(e){this.#de.remove(e)}addResource(e,t,r){if(!this.isResourcesEditable)throw new Error("A resource cannot be added to a task of type "+this.type);this.resourceAdding$.next({task:this,resource:t});var i=new nr(e,t,r);return this.#Y.push(i),this.#K=null,this.#_=null,this.#Ee(i),this.#f(),i}#Ee(e){this.#De(e,e.changed$.subscribe(()=>{this.#f()}))}removeResource(e){var t=this.#Y.indexOf(e);if(t<0)throw new Error("Task resource not found");this.#Y.splice(t,1),this.#Se(e),e.destroy(),this.#f()}#$e(e){switch(e){case"minute":return"minute";case"hour":return"hour";default:return"day"}}#Z(){if(this.#K)return this.#K;if(0==this.#Y.length)return null;var e=this.#$e(this.length.unit),t=new ar(e,0);return this.#H.forEach(r=>{var i=this.calendar.getHoursBetween(r.startTime,r.endTime);for(let r of this.#Y)if(r.resource.rate){var s=r.capacity/100*i,n=ar.fromHours(s,e,this.calendar);t=ar.sum(t,n)}}),t}#G(){var e=0,t=null;for(let i of this.#z){var r=i.work;r&&(e+=r.toHours(this.calendar),t=t?ar.maxUnit(t,r.unit):r.unit)}return t?ar.fromHours(e,t,this.calendar):null}#q(e){if(!this.isWorkEditable)throw new Error("Cannot assign work to this task, either it is not of type Task or it has assigned resources");e!=this.#K&&(this.#K=e,null!==e&&this.#ge(),this.#f())}#J(){if(this.#_)return this.#_;if(0==this.#Y.length)return null;var e=0;return this.#H.forEach(t=>{var r=this.calendar.getHoursBetween(t.startTime,t.endTime);for(let t of this.#Y){var i=t.resource.rate;if(i){var s=t.capacity/100*r;"perHour"==i.type?e+=i.value*s:"perDay"==i.type&&(e+=i.value*(s/this.calendar.getHoursPerDay()))}e+=t.resource.fixedCostPerUse}}),e}#Q(){var e=null;for(let r of this.#z){var t=r.cost;null!==t&&(null===e?e=t:e+=t)}return e}#ee(e){if(!this.isCostEditable)throw new Error("Cannot assign cost to this task, either it is not of type Task or it has assigned resources");e!=this.#_&&(this.#_=e,null!==e&&this.#ge(),this.#f())}serializeCustomProperties(){return this.#ae.serializeProperties()}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}renameProperty(e,t){this.#ae.renameProperty(e,t)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){for(var e=[],t=0;t<this.subtasksLength;t++)e.push(this.getSubtask(t).id);var r=[];for(t=0;t<this.partsLength;t++)r.push(this.getPart(t).toAny());var i=[];for(t=0;t<this.resourcesLength;t++)i.push(this.getResource(t).toAny());return{id:this.id,color:this.color,name:this.name,startTime:this.startTime?qt(this.startTime):null,endTime:this.endTime?qt(this.endTime):null,customLengthUnit:this.customLengthUnit,baseStartTime:this.baseStartTime?qt(this.baseStartTime):null,subtasks:e,parts:r,type:this.type,parent:this.parent?this.parent.id:null,progress:this.progress,collapsed:this.collapsed,resources:i,customWork:this.customWork?this.customWork.toAny():null,customCost:this.customCost,note:this.note,baselineStartTime:this.baselineStartTime?qt(this.baselineStartTime):null,baselineEndTime:this.baselineEndTime?qt(this.baselineEndTime):null,constraintType:"asap"!==this.constraintType?this.constraintType:null,constraintDate:this.constraintDate?qt(this.constraintDate):null,properties:this.serializeCustomProperties()}}};class ur{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){this.#n=e,this.#a=t}toHours(e){var t=e.getHoursPerDay();switch(this.#n){case"minute":return this.#a/60;case"hour":return this.#a;case"day":return this.#a*t;case"week":return this.#a*e.workingDays.length*t;case"month":return 30*this.#a*t}}#o(){switch(this.#n){case"minute":return"m";case"hour":return"h";case"day":return"d";case"week":return"w";case"month":return"M"}}toString(){var e=this.#a.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2});return this.#a>0?"+"+e+this.#o():e+this.#o()}equals(e){return this.#n==e.unit&&this.#a==e.value}static zero(){return new ur("day",0)}static tryParse(e){const t=e.match(/^([+-]?\d+(\.\d+)?)([mhdwM])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(Math.abs(r)>1e3)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day";break;case"w":s="week";break;case"M":s="month"}return new ur(s,r)}static parse(e){var t=ur.tryParse(e);if(!t)throw new Error("Failed to parse lag "+e);return t}toAny(){return{unit:this.#n,value:this.#a}}static fromAny(e){var t=e.unit,r=e.value;return new ur(t,r)}}class gr{#m;get id(){return this.#m}#Re;get from(){return this.#Re}#Me;get to(){return this.#Me}#O;get type(){return this.#O}#Le;get lag(){return this.#Le}#Ie=null;get list(){return this.#Ie}set list(e){if(this.#Ie)throw new Error("Once assigned the list cannot be changed");e!=this.#Ie&&(this.#Ie=e)}constructor(e,t,r,i,s){this.#Re=t,this.#Me=r,this.#O=i,this.#Le=s??ur.zero(),this.#m=e||er(30)}toAny(){var e={};return e.id=this.#m,e.type=this.#O,e.from=this.#Re.id,e.to=this.#Me.id,0!==this.#Le.value&&(e.lag=this.#Le.toAny()),e}static fromAny(e,t){var r=e.id,i=t.find(t=>t.id==e.from),s=t.find(t=>t.id==e.to);if(!i||!s)throw new Error("Task used in a link not found");var n=e.type,a=e.lag?ur.fromAny(e.lag):void 0;return new gr(r,i,s,n,a)}}function mr(e,t){return"finish"===e&&"start"===t?"finishToStart":"start"===e&&"start"===t?"startToStart":"finish"===e&&"finish"===t?"finishToFinish":"startToFinish"}class pr{#Ie;#g;#Pe;get calendar(){return this.#g.getValue()}constructor(e,t,r){this.#Ie=e,this.#g=t,this.#Pe=r}getTotalLength(e){for(var t=0,r=0;r<e.partsLength;r++)t+=e.length.value;return t}getProgressTime(e){for(var t=this.getTotalLength(e),r=e.progress/100*t,i=null,s=0;s<e.partsLength;s++){var n=e.getPart(s);if(null===i&&(i=n.startTime),Math.abs(r)<=1e-4)break;if(r>=n.length.value)i=n.endTime,r-=n.length.value;else i=new rr(n.length.unit,r).getEndTime(n.startTime,this.calendar),r=0}return i}update(e){var t=new Date;if("task"==e.type||"milestone"==e.type){var r=[];if("task"==e.type&&e.progress<100){var i=this.getProgressTime(e);if(i.getTime()<t.getTime()){var s=function(e,t){const r=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()),i=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),s=864e5;return Math.abs((i-r)/s)}(i,t);s>0&&r.push(this.formatDelayedMessage(s))}}this.#Ae(e,r),e.warnings=r}else e.warnings=[]}#Ae(e,t){var r=e.constraintDate;if(r){var i=this.#Pe.getValue(),s=r.toLocaleDateString(i.language);switch(e.constraintType){case"snlt":e.startTime&&e.startTime.getTime()>r.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.snlt,s));break;case"fnlt":e.endTime&&e.endTime.getTime()>r.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.fnlt,s));break;case"mso":var n=this.calendar.moveToStartShift(new Date(r),!0),a=e.startTime?this.calendar.moveToStartShift(new Date(e.startTime),!0):null;a&&a.getTime()!==n.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.mso,s));break;case"mfo":n=this.calendar.getEndOfWorkingDay(new Date(r));var o=e.endTime?this.calendar.getEndOfWorkingDay(new Date(e.endTime)):null;o&&o.getTime()!==n.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.mfo,s))}}}updateAll(){for(var e=0;e<this.#Ie.length;e++)this.update(this.#Ie.getTask(e))}formatDelayedMessage(e){var t=this.#Pe.getValue(),r=t.warnings.behindSchedule;return 1==e?r+=" "+t.warnings.behindScheduleByOneDay:e>1&&(r+=" "+t.warnings.behindScheduleByDays(e)),r}}class vr{#He=!1;#Ve=new Set;#Be;#g;get evaluatingDependencies(){return this.#He}evaluatingDependenciesFinished$=new e;constructor(e,t){this.#Be=e,this.#g=t}onTaskStartTimeChanged(e){if(!this.#Ve.has(e)){this.#Ve.add(e);var t=!1;this.#He||(this.#He=!0,t=!0),this.#Fe(e);var r=this.#Be(),i=r.filter(t=>t.to==e);for(let t of i){var s=this.#ze(t);s&&e.startTime.getTime()<s.getTime()&&(e.startTime=s)}var n=r.filter(t=>t.from==e&&("startToStart"==t.type||"startToFinish"==t.type));for(let e of n)this.evaluateLinkDependency(e);t&&(this.#He=!1,this.evaluatingDependenciesFinished$.next()),queueMicrotask(()=>this.#Ve.delete(e))}}onTaskEndTimeChanged(e){var t=!1;this.#He||(this.#He=!0,t=!0);var r=this.#Be().filter(t=>t.from==e&&("finishToStart"==t.type||"finishToFinish"==t.type));for(let e of r)this.evaluateLinkDependency(e);t&&(this.#He=!1)}evaluateLinkDependency(e){var t=e.to,r=e.from,i=this.#g.getValue(),s=e.lag.toHours(i);switch(e.type){case"finishToStart":var n=i.addHours(new Date(r.endTime),s);if(t.startTime.getTime()<n.getTime())t.startTime=new Date(n);else if(t.startTime.getTime()>n.getTime()){var a=new Date(n);t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"startToStart":n=i.addHours(new Date(r.startTime),s);if(t.startTime.getTime()<n.getTime())t.startTime=new Date(n);else if(t.startTime.getTime()>n.getTime()){a=new Date(n);t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"finishToFinish":var o=i.addHours(new Date(r.endTime),s),l=t.endTime.getTime()-t.startTime.getTime(),h=new Date(o.getTime()-l);if(t.startTime.getTime()<h.getTime())t.startTime=h;else if(t.startTime.getTime()>h.getTime()){a=h;t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"startToFinish":o=i.addHours(new Date(r.startTime),s),l=t.endTime.getTime()-t.startTime.getTime(),h=new Date(o.getTime()-l);if(t.startTime.getTime()<h.getTime())t.startTime=h;else if(t.startTime.getTime()>h.getTime()){a=h;t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}}}#ze(e){var t=this.#g.getValue(),r=e.lag.toHours(t);switch(e.type){case"finishToStart":return e.from.endTime?t.addHours(new Date(e.from.endTime),r):null;case"startToStart":return e.from.startTime?t.addHours(new Date(e.from.startTime),r):null;case"finishToFinish":case"startToFinish":return null}}#Fe(e){var t=this.#g.getValue();switch(e.constraintType){case"asap":break;case"snet":e.constraintDate&&e.startTime&&e.startTime.getTime()<e.constraintDate.getTime()&&(e.startTime=new Date(e.constraintDate));break;case"fnet":if(e.constraintDate&&e.endTime&&e.endTime.getTime()<e.constraintDate.getTime()){var r=t.getHoursBetween(e.endTime,e.constraintDate);e.startTime=t.addHours(new Date(e.startTime),r)}break;case"mso":if(!e.constraintDate||!e.startTime)break;var i=t.moveToStartShift(e.constraintDate,!0);e.startTime.getTime()!==i.getTime()&&(e.startTime=i);break;case"mfo":if(!e.constraintDate||!e.endTime||!e.startTime)break;if(e.endTime.getTime()!==e.constraintDate.getTime()){r=e.endTime.getTime()-e.constraintDate.getTime()>0?-t.getHoursBetween(e.constraintDate,e.endTime):t.getHoursBetween(e.endTime,e.constraintDate);e.startTime=t.addHours(new Date(e.startTime),r)}break;case"snlt":e.constraintDate&&e.startTime&&e.startTime.getTime()>e.constraintDate.getTime()&&(e.startTime=new Date(e.constraintDate));break;case"fnlt":if(e.constraintDate&&e.endTime&&e.endTime.getTime()>e.constraintDate.getTime()){r=-t.getHoursBetween(e.constraintDate,e.endTime);e.startTime=t.addHours(new Date(e.startTime),r)}}}}class fr{#Oe=[];#Ne=new Set;#We=[];#Ue;taskAdded$=new e;taskChanged$=new e;taskRemoved$=new e;taskCollapsedChanged$=new e;taskTypeChanged$=new e;linkAdded$=new e;linkRemoved$=new e;resourceAdding$=new e;filterChanged$=new e;#g;#oe;#je=!1;#Xe=!1;#Ye=null;#Ke;constructor(e,r,i){this.#g=e,this.#oe=r,this.#Ke=new vr(()=>this.#We,e),this.#Ze(),this.#Ue=new pr(this,this.#g,i??new t({language:"en-US"}))}get length(){return this.#Oe.length}get linksLength(){return this.#We.length}get evaluatingDependencies(){return this.#Ke.evaluatingDependencies}get evaluatingDependenciesFinished$(){return this.#Ke.evaluatingDependenciesFinished$}complexOperationFinished$=new e;get filter(){return this.#Ye}set filter(e){this.#Ye=e,this.#Ge()}#Ge(){for(var e=this.#Ye,t=0;t<this.#Oe.length;t++)this.#Oe[t].filtered=!1;if(e){for(t=0;t<this.#Oe.length;t++){"empty"===(r=this.#Oe[t]).type?r.filtered=!0:"summary"!==r.type&&(r.filtered=!e(r))}for(t=this.#Oe.length-1;t>=0;t--){var r;"summary"===(r=this.#Oe[t]).type&&(r.filtered=!this.#qe(r))}this.filterChanged$.next()}else this.filterChanged$.next()}#qe(e){for(var t=0;t<e.subtasksLength;t++){if(!e.getSubtask(t).filtered)return!0}return!1}#_e=new hr;getTask(e){if(e<0||e>=this.#Oe.length)throw new Error("Index out of range");return this.#Oe[e]}getTaskById(e){return this.#Oe.find(t=>t.id==e)??null}getLink(e){if(e<0||e>=this.#We.length)throw new Error("Index out of range");return this.#We[e]}indexOf(e){return this.#Oe.indexOf(e)}#Ze(){this.#je=!0;for(var e=0;e<100;e++)this.addEmptyTask();this.#je=!1}#Je(e,t){this.#_e.add(e,t)}#Qe(e){this.#_e.remove(e)}createTask(e){return new cr(e??null,this.#g,this.#oe,()=>this.evaluatingDependencies)}addEmptyTask(){var e=new cr(null,this.#g,this.#oe,()=>this.evaluatingDependencies);return this.#et(e,this.#Oe.length)}insertEmptyTask(e){var t=new cr(null,this.#g,this.#oe,()=>this.evaluatingDependencies);return this.#et(t,e)}addTask(e){if(this.#Ne.has(e))throw new Error("The task is already included in a list of tasks");return this.#et(e,this.#Oe.length)}insertTask(e,t){if(this.#Ne.has(t))throw new Error("The task is already included in a list of tasks");return this.#et(t,e)}#et(e,t){return this.#Ne.add(e),this.#Oe.splice(t,0,e),this.#tt(e),this.#je||this.#Xe||(this.taskAdded$.next({task:e}),this.#Ue.update(e),this.complexOperationFinished$.next()),e}getFirstTaskIndex(e){var t=null;for(let i of e){var r=this.indexOf(i);(null===t||t>r)&&(t=r)}return t}#tt(e){this.#Je(e,e.typeChanged$.subscribe(e=>{this.#rt(e)})),this.#Je(e,e.changed$.subscribe(e=>{this.#it(e.task)})),this.#Je(e,e.startTimeChanged$.subscribe(e=>{this.#st(e.task)})),this.#Je(e,e.endTimeChanged$.subscribe(e=>{this.#nt(e.task)})),this.#Je(e,e.collapsedChanged$.subscribe(e=>{this.#at(e.task)})),this.#Je(e,e.subtaskAdded$.subscribe(e=>{this.#ot(e.task)})),this.#Je(e,e.resourceAdding$.subscribe(e=>{this.#lt(e)}))}#ht(e){var t=this.#Oe.indexOf(e);if(t<0)throw new Error("Task is not included in the task sheet");return t}#it(e){"empty"!=e.type&&"summary"!=e.type||(this.#We=this.#We.filter(t=>t.from!=e&&t.to!=e)),this.taskChanged$.next({task:e}),this.#Ue.update(e),this.#Ye&&this.#Ge()}#st(e){this.#Ke.onTaskStartTimeChanged(e)}#nt(e){this.#Ke.onTaskEndTimeChanged(e)}#rt(e){if("empty"==e.oldType&&"empty"!=e.newType){var t=this.#dt(e.task);if(!t)return;"summary"==t.type?t.addSubtask(e.task):t.parent&&t.parent.addSubtask(e.task)}this.taskTypeChanged$.next(e)}#at(e){this.taskCollapsedChanged$.next({task:e})}#ot(e){this.#We=this.#We.filter(t=>!(t.from==e&&t.to==e.parent||t.to==e&&t.from==e.parent))}#lt(e){this.resourceAdding$.next(e)}#ct(e){var t=[...e];return t.sort((e,t)=>this.#Oe.indexOf(e)-this.#Oe.indexOf(t)),t}#ut(e){return this.getPreviousNonEmpty(e,e.level)}getLastNonEmpty(e=!0){for(var t=this.#Oe.length-1;t>=0;){var r=this.#Oe[t];if("empty"!=r.type&&(e||!r.hidden))return r;t--}return null}getPreviousNonEmpty(e,t){for(var r=this.#ht(e);;){if(--r<0)return null;if("empty"!=this.#Oe[r].type){if(null===t)return this.#Oe[r];if(this.#Oe[r].level<t)return null;if(this.#Oe[r].level==t)return this.#Oe[r]}}}#dt(e){var t=this.#ht(e);return t>0?this.#Oe[t-1]:null}getNextVisible(e){var t=this.#ht(e);for(t++;t<this.#Oe.length;t++)if(!this.#Oe[t].hidden)return this.#Oe[t];return null}getPreviousVisible(e){var t=this.#ht(e);for(t--;t>=0;t--)if(!this.#Oe[t].hidden)return this.#Oe[t];return null}getNextNonEmpty(e){for(var t=this.#ht(e);;){if(++t>=this.#Oe.length)return null;if("empty"!=this.#Oe[t].type)return this.#Oe[t]}}#gt(e){var t=this.#ht(e);return t<this.#Oe.length-1?this.#Oe[t+1]:null}#mt(e){var t=[],r=null,i=null;for(let n of e){var s=this.getTaskNumber(n);null!==r&&s-1==r||(i&&i.tasks.length>0&&t.push(i),i={tasks:[]}),r=s,"empty"!=n.type&&i.tasks.push(n)}return i&&!t.includes(i)&&i.tasks.length>0&&t.push(i),t}#pt(e){var t=null;for(let r of e)if(null===t)t=r.level;else if(t!=r.level)return!1;return!0}indent(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=this.#ut(i);if(s)for(let t of e.tasks)t.parent&&t.parent.removeSubtask(t),s.addSubtask(t)}this.complexOperationFinished$.next()}}outdent(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1];if(0!=i.level){var n=this.getPreviousNonEmpty(i,i.level-1);if(n){var a=this.getNextSiblings(s),o=[...e.tasks,...a];for(let e of o)e.parent.removeSubtask(e),n.parent&&n.parent.addSubtask(e)}}}this.complexOperationFinished$.next()}}getTaskNumber(e){return this.#Oe.indexOf(e)+1}getNextSibling(e){return this.getNextAtLevel(e,e.level)}getNextSiblings(e){for(var t=[];;){var r=this.getNextSibling(e);if(!r)break;t.push(r),e=r}return t}getNextAtLevel(e,t){for(var r=null,i=this.#Oe.indexOf(e)+1;i<this.#Oe.length;){var s=this.#Oe[i],n=s.level;if(n==t){r=s;break}if(n<t&&"empty"!=s.type)break;i++}return r}getLastDescendant(e){if(0==e.subtasksLength)return e;for(var t=null,r=null,i=0;i<e.subtasksLength;i++){var s=e.getSubtask(i),n=this.indexOf(s);(null===t||t<n)&&(t=n,r=s)}return this.getLastDescendant(r)}existsLinkBetween(e,t){return null!=this.#We.find(r=>r.from==e&&r.to==t||r.from==t&&r.to==e)}isValidTypeForLink(e){return"task"==e.type||"milestone"==e.type}wouldCreateCycle(e,t){var r=new Set,i=[t];for(r.add(t);i.length>0;){var s=i.shift();if(s===e)return!0;for(var n of this.#We)n.from!==s||r.has(n.to)||(r.add(n.to),i.push(n.to))}return!1}addLink(e,t,r,i){if(e==t)throw new Error("Cannot create a self link");if(this.existsLinkBetween(e,t))throw new Error("A link between the tasks already exists");if(!this.isValidTypeForLink(e))throw new Error("Unsupported task type for adding a link: "+e.type);if(!this.isValidTypeForLink(t))throw new Error("Unsupported task type for adding a link: "+t.type);if(e.isDescendantOf(t)||t.isDescendantOf(e))throw new Error("Cannot create a link between a task and its nested task");if(this.wouldCreateCycle(e,t))throw new Error("Cannot create a link that would create a cycle");var s=new gr(null,e,t,r,i);return this.#We.push(s),s.list=this,this.#Ke.evaluateLinkDependency(s),this.linkAdded$.next({link:s}),s}removeTask(e){var t=this.#Oe.indexOf(e);if(t<0)throw new Error("Task is not in the list of tasks");var r=this.#We.filter(t=>t.from==e||t.to==e);for(let e of r)this.removeLink(e);e.parent&&e.parent.removeSubtask(e),this.#Oe.splice(t,1),this.#Ne.delete(e),this.#Qe(e),this.taskRemoved$.next({task:e}),this.complexOperationFinished$.next()}removeTasks(e){for(let t of e)this.removeTask(t)}removeLink(e){var t=this.#We.indexOf(e);if(t<0)throw new Error("Link is not in the list of links");this.#We.splice(t,1),e.to.baseStartTime&&(e.to.startTime=e.to.baseStartTime),this.linkRemoved$.next({link:e})}moveUp(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1],n=this.#dt(i);if(n){n&&n.level>i.level&&(n=this.#ut(i));var a=this.getLastDescendant(s),o=this.indexOf(a),l=this.indexOf(i),h=this.#Oe.slice(l,o+1),d=this.indexOf(n);if(this.#Oe.splice(l,o-l+1),this.#Oe.splice(d,0,...h),"empty"!=n.type&&n.level!=i.level)for(let t of e.tasks)t.parent&&t.parent.removeSubtask(t),n.parent&&n.parent.addSubtask(t)}}this.complexOperationFinished$.next()}}moveDown(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1],n=this.getLastDescendant(s),a=this.getNextSibling(s);if(a||(a=this.#gt(n)),a){var o=this.indexOf(n),l=this.indexOf(i),h=this.#Oe.slice(l,o+1);this.#Oe.splice(l,o-l+1);var d=this.getLastDescendant(a),c=this.indexOf(d);this.#Oe.splice(c+1,0,...h);for(let t of e.tasks)t.parent&&"empty"!=a.type&&t.parent.removeSubtask(t),a.parent&&a.parent.addSubtask(t)}}this.complexOperationFinished$.next()}}get minStartTime(){var e=null;for(let t of this.#Oe)"empty"!=t.type&&t.startTime&&(null===e||t.startTime.getTime()<e.getTime())&&(e=new Date(t.startTime));return e}get maxEndTime(){var e=null;for(let t of this.#Oe)"empty"!=t.type&&t.endTime&&(null===e||t.endTime.getTime()>e.getTime())&&(e=new Date(t.endTime));return e}clear(){for(let e of this.#Oe)this.#Qe(e);this.#Oe=[],this.#Ne.clear(),this.#We=[],this.#Xe||this.complexOperationFinished$.next()}assign(e,t){this.#Xe=!0,this.clear();for(let t of e)this.addTask(t);for(let e of t)this.#We.push(e),e.list=this;this.#Xe=!1,this.#Ue.updateAll(),this.complexOperationFinished$.next()}getTasksUsingResource(e){var t=[];for(let r of this.#Oe)r.getResourceByResourceId(e.id)&&t.push(r);return t}renameTaskProperty(e,t){for(let r of this.#Oe)r.renameProperty(e,t)}}class yr{workingDays;nationalHolidays;shifts;startOfWeek;defaultLengthUnit="day";constructor(){this.workingDays=["monday","tuesday","wednesday","thursday","friday"],this.nationalHolidays=[],this.shifts=[],this.shifts.push(new br(new wr(8,0),new wr(12,0))),this.shifts.push(new br(new wr(13,0),new wr(17,0))),this.startOfWeek="sunday"}#vt(e){switch(e){case"sunday":return 0;case"monday":return 1;case"tuesday":return 2;case"wednesday":return 3;case"thursday":return 4;case"friday":return 5;case"saturday":return 6}}isWorkingDay(e){for(let t of this.nationalHolidays)if(Wt(t,e))return!1;for(let t of this.workingDays)if(this.#vt(t)==e.getDay())return!0;return!1}#ft(e){for(var t=0;t<this.shifts.length;t++){var r=this.shifts[t];if(r.contains(e))return r;var i=new Date(e);if(i.setHours(r.start.hour,r.start.minute,0,0),i.getTime()>=e.getTime())return r}return null}#yt(e,t){for(var r=this.shifts.length-1;r>=0;r--){var i=this.shifts[r];if(i.contains(e,t))return i;var s=new Date(e);if(s.setHours(i.end.hour,i.end.minute,0,0),s.getTime()<=e.getTime())return i}return null}moveToStartShift(e,t){for(var r=null;!this.isWorkingDay(e)||!(r=this.#ft(e));)e=Ot(e);return r.contains(e)&&t||(e=new Date(e)).setHours(r.start.hour,r.start.minute,0,0),e}moveToEndShift(e,t){var r=null;for(0==e.getHours()&&0==e.getMinutes()&&(e=Nt(e));!this.isWorkingDay(e)||!(r=this.#yt(e,!0));)e=Nt(e);return r.contains(e)&&t||(e=new Date(e)).setHours(r.end.hour,r.end.minute,0,0),e}getHoursPerDay(){var e=0;for(let t of this.shifts)e+=t.getLengthInMinutes();return e/60}isEndOfDay(e){var t=this.shifts[this.shifts.length-1];return t.end.hour==e.getHours()&&t.end.minute==e.getMinutes()}getEndOfWorkingDay(e){for(e=zt(e);!this.isWorkingDay(e);)e=Ot(e);var t=this.shifts[this.shifts.length-1];return e.setHours(t.end.hour,t.end.minute),e}#bt(e,t){if(!this.isWorkingDay(e))return 0;var r=0;for(let n of this.shifts){var i=new Date(e);i.setHours(n.start.hour),i.setMinutes(n.start.minute);var s=new Date(e);s.setHours(n.end.hour),s.setMinutes(n.end.minute),r+=jt(e,t,i,s)}return r/60}getHoursBetween(e,t){if(e.getTime()>t.getTime())return-this.getHoursBetween(t,e)||0;for(var r=0,i=new Date(e);;){if(Wt(i,t)){r+=this.#bt(i,t);break}var s=new Date(i);s.setHours(0,0,0),s.setDate(i.getDate()+1),r+=this.#bt(i,t),i=s}return r}getStartOfWeek(e){(e=new Date(e)).setHours(0,0,0,0);for(var t=this.#vt(this.startOfWeek);e.getDay()!=t;)(e=new Date(e)).setDate(e.getDate()-1);return e}addHours(e,t,r){var i=this.getHoursPerDay();if(t>0)for(;t>=i;){var s=Ot(e);t-=this.getHoursBetween(e,s),e=s}else if(t<0)for(;t<=-i;){var n=zt(e);n.getTime()==e.getTime()&&n.setDate(n.getDate()-1),t+=this.getHoursBetween(n,e),e=n}var a=Math.round(60*t);if(a>0||r&&0==a)for(e=this.moveToStartShift(e,!0);a>0;)e.setMinutes(e.getMinutes()+1),e=this.moveToStartShift(e,!0),a--;else if(a<0)for(e=this.moveToEndShift(e,!0);a<0;)e.setMinutes(e.getMinutes()-1,0),e=this.moveToEndShift(e,!0),a++;return e}}class br{start;end;constructor(e,t){this.start=e,this.end=t}contains(e,t){var r=60*this.start.hour+this.start.minute,i=60*this.end.hour+this.end.minute,s=60*e.getHours()+e.getMinutes();return(!t&&s>=r||!0===t&&s>r)&&i>s}getLengthInMinutes(){var e=0;return this.start.hour==this.end.hour?this.end.minute-this.start.minute:(e+=60-this.start.minute,this.end.hour-this.start.hour>1&&(e+=60*(this.end.hour-this.start.hour-1)),e+=this.end.minute)}}class wr{hour;minute;constructor(e,t){this.hour=e,this.minute=t}}class Tr{#wt;constructor(e){this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue(),i=r.contentTop,s=this.getContentBottom(e.height);t.beginPath(),t.rect(0,i,e.width,e.height-i),t.fillStyle=r.chart.content.backgroundColor,t.fill(),this.#Tt(e,t,s),this.#Ct(e,t,s),this.#wt.showGridLines$.getValue()&&(this.#xt(e,t,s),this.drawHorizontalGridLines(e,t))}#Tt(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=this.#wt.calendar,o=s.getCellStartTime(n),l=s.getCellStartX(o,n,i),h=this.#wt.theme$.getValue().contentTop;!(l>e.width);){var d=s.getAdd(o,1),c=s.getCellStartX(d,n,i),u=!1;"day"==s.unit&&(u=!a.isWorkingDay(o)),"hour"!=s.unit&&"minute"!=s.unit||(u=0==a.getHoursBetween(o,d)),u&&(t.beginPath(),t.rect(l,h,c-l,r-h),t.fillStyle=this.#wt.theme$.getValue().chart.content.nonWorkingTimeStyle,t.fill()),o=d,l=c}}#Ct(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[1],n=this.#wt.timeline.visibleStartTime$.getValue(),a=s.getCellStartTime(n),o=this.#wt.theme$.getValue().contentTop;;){var l=s.getCellStartX(a,n,i);if(l>e.width)break;t.beginPath(),t.moveTo(l+.5,o),t.lineTo(l+.5,r),t.strokeStyle=this.#wt.theme$.getValue().chart.content.tier2SeparatorLineStyle,t.setLineDash([2,2]),t.stroke(),a=s.getAdd(a,1)}t.setLineDash([])}#xt(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=s.getCellStartTime(n),o=s.getCellStartX(a,n,i),l=this.#wt.theme$.getValue(),h=l.contentTop,d=l.chart.content.gridLineColor;!(o>e.width);)t.beginPath(),t.moveTo(o+.5,h),t.lineTo(o+.5,r),t.strokeStyle=d,t.stroke(),a=s.getAdd(a,1),o=s.getCellStartX(a,n,i)}}class Cr extends Tr{#kt;constructor(e){super(e),this.#kt=e}getContentBottom(e){return this.#kt.getContentBottom(e)}drawHorizontalGridLines(e,t){var r=this.#kt.theme$.getValue(),i=r.contentTop,s=r.chart.content.gridLineColor,n=r.rowHeight+1;i-=this.#kt.sheetScrollTop$.getValue();for(var a=0;a<this.#kt.list.length;a++){if(!this.#kt.list.getTask(a).hidden){var o=Math.floor(i)-.5;t.beginPath(),t.moveTo(0,o),t.lineTo(e.width,o),t.strokeStyle=s,t.stroke(),i+=n}}}}class xr{x=0;y=0;constructor(e,t){this.x=e,this.y=t}isWithin(e,t){return Math.abs(this.x-e.x)<=t&&Math.abs(this.y-e.y)<=t}isZero(){return 0==this.x&&0==this.y}clone(){return new xr(this.x,this.y)}scaled(e){return new xr(this.x*e,this.y*e)}toString(){return`${this.x};${this.y}`}static fromString(e){var t=e.split(";");return new xr(parseFloat(t[0]),parseFloat(t[1]))}moveToRaster(){return this.x=Math.floor(this.x)+.5,this.y=Math.floor(this.y)+.5,this}}class kr{x;y;width;height;constructor(e,t,r,i){this.x=e,this.y=t,this.width=r,this.height=i}contains(e){return e.x>=this.x&&e.y>=this.y&&e.x<=this.right&&e.y<=this.bottom}fullyContains(e){return this.x<=e.x&&this.y<=e.y&&this.bottom>=e.bottom&&this.right>=e.right}get middle(){return new xr(this.x+this.width/2,this.y+this.height/2)}get bottom(){return this.y+this.height}get right(){return this.x+this.width}clone(){return new kr(this.x,this.y,this.width,this.height)}equals(e){return this.x==e.x&&this.y==e.y&&this.height==e.height&&this.width==e.width}scaled(e){return new kr(this.x*e,this.y*e,this.width*e,this.height*e)}scaledAt(e){return new kr(this.x*e,this.y*e,this.width,this.height)}toString(){return`${this.x};${this.y};${this.width};${this.height}`}static fromString(e){var t=e.split(";");return new kr(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3]))}moveToRaster(){return this.x=Math.floor(this.x)+.5,this.y=Math.floor(this.y)+.5,this}}const Er="Arial";class Dr{name=Er;size=11;weight=null;italic=!1;toString(e){var t=this.name;return t.indexOf(" ")>0&&(t='"'+t+'"'),(this.italic?"italic ":"")+(this.weight?this.weight.toString()+" ":"")+`${this.size*e}pt ${t}`}static fromObject(e){var t=new Dr;return t.name=e.name,t.size=e.size,t.weight=e.weight,t.italic=e.italic,t}static from(e,t){var r=new Dr;return r.name=e??Er,r.size=t??11,r}clone(){var e=new Dr;return e.name=this.name,e.size=this.size,e.weight=this.weight,e.italic=this.italic,e}}class Sr{#Et;#Dt;get startDate(){return this.#Et}get endDate(){return this.#Dt}constructor(e,t){this.#Et=e,this.#Dt=t}}function $r(e){var t=e.measureText("gŇ");return t.fontBoundingBoxAscent+t.fontBoundingBoxDescent}function Rr(e,t,r,i,s,n=null,a=!1){var o=Mr(e,t,r.width),l=r.x,h=r.y,d=$r(e),c=o.measure.width;h=r.y+(r.height-d)/2,h+=o.measure.fontBoundingBoxAscent,"center"==i&&(l=r.x+(r.width-c)/2),"right"==i&&(l=r.right-c),e.textAlign="left",e.textBaseline="top",e.fillStyle=n??"#000000",e.fillText(o.text,l,h),a&&(e.beginPath(),e.moveTo(l,h+d-.26*d),e.lineTo(l+c,h+d-.26*d),e.stroke())}function Mr(e,t,r){e.textBaseline="top";var i=t.split(" "),s=i[0],n=!1;if(1==i.length)e.measureText(t).width>r&&(n=!0);else for(var a=1;a<i.length;a++){if(s+=" "+i[a],e.measureText(s).width>r){n=!0;break}}if(n)for(;;){var o=s+"...";if(e.measureText(o).width<=r){s=o;break}if(0==s.length){s="...";break}s=s.substring(0,s.length-1)}return{text:s,measure:e.measureText(s)}}class Lr{#wt;constructor(e){this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue().headerHeight,i=new kr(1,1,e.width,r);t.beginPath(),t.rect(i.x,i.y,i.width,i.height),t.fillStyle=this.#wt.theme$.getValue().chart.header.backgroundColor,t.fill(),t.beginPath(),t.moveTo(0,.5),t.lineTo(e.width+.5,.5),t.moveTo(0,r+1.5),t.lineTo(e.width+.5,r+1.5),t.strokeStyle=this.#wt.theme$.getValue().chart.header.cellBorderColor,t.stroke();var s=Math.floor((r+1)/2)+.5;t.beginPath(),t.moveTo(0,s),t.lineTo(e.width,s),t.stroke();var n=this.#wt.timeline.currentZoom;this.#St(e,n.axis[0],1),this.#St(e,n.axis[1],0)}#St(e,t,r){var i=e.getContext("2d"),s=this.#wt.timeline.visibleStartTime$.getValue(),n=t.getCellStartTime(s),a=this.#wt.timeline.currentZoom,o=this.#wt.settings.theme,l=o.chart.header,h=this.#wt.theme$.getValue().headerHeight,d=r*h/2+1,c=l.cellDividerPadding;i.beginPath();var u=t.getCellStartX(n,s,a);i.font=o.font.toString(1),i.fillStyle=l.textColor;for(var g=l.cellDividerColor??l.cellBorderColor;!(u>e.width);){i.moveTo(u+.5,d+c),i.lineTo(u+.5,d+h/2-c);var m=t.formatter(n);n=t.getAdd(n,1);var p=t.getCellStartX(n,s,a);Rr(i,m,new kr(u+5,d,p-u-10,h/2),"left",0,l.textColor),u=p}i.strokeStyle=g,i.stroke()}}class Ir{#kt;constructor(e){this.#kt=e}get rowHeight(){return this.#kt.theme$.getValue().rowHeight+1}getRowY(e){return this.#kt.getRowY(e)}getContentBottom(e){return this.#kt.getContentBottom(e)}drawRowHighlight(e,t,r,i){e.beginPath(),e.rect(0,r,t,i),e.fillStyle="rgba(0, 0, 0, 0.02)",e.fill()}}class Pr extends Ir{#$t;constructor(e){super(e),this.#$t=new Lr(e)}render(e){this.#$t.render(e)}}class Ar{#Rt;#Mt;#Lt;#wt;#It;#Pt;#At=null;#Ht=null;#Vt=!1;#Bt=!1;#T=new r;#Ft;#zt;#Ot;#Nt;#Wt;constructor(e,t,r,i,s){this.#Rt=t,this.#Lt=i,this.#wt=e,this.#It=s,this.#Pt={isMoving:!1,originalX:null,originalStart:null},this.#Ft=()=>this.#Ut(),this.#zt=e=>this.#jt(e),this.#Ot=e=>this.#Xt(e),this.#Nt=()=>this.#Yt(),this.#Wt=()=>this.#Kt(),this.#Rt.addEventListener("scroll",this.#Ft),this.#T.add(e.dividerResizing$.subscribe(e=>{this.#Bt=e,e||this.#Zt()})),this.#Rt.addEventListener("mousedown",this.#zt),this.#Rt.addEventListener("mousemove",this.#Ot),this.#Rt.addEventListener("mouseup",this.#Nt),this.#Rt.addEventListener("mouseleave",this.#Wt),this.#T.add(this.#wt.timeline.zoomIndex$.subscribe(()=>{this.#Gt()})),this.#T.add(this.#wt.timeline.visibleStartTime$.subscribe(()=>{this.#qt()})),this.#T.add(this.#wt.projectTimeline$.subscribe(()=>{this.#_t()})),this.#Zt(),this.#Mt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#Jt())}),this.#Mt.observe(this.#Rt)}#Jt(){this.#Qt()}#jt(e){var t=this.#wt.theme$.getValue();e.offsetY<=t.contentTop&&(this.#Pt.isMoving=!0,this.#Pt.originalX=e.offsetX,this.#Pt.originalStart=this.#wt.timeline.visibleStartTime$.getValue(),this.#Rt.style.cursor="grabbing")}#Xt(e){if(this.#Pt.isMoving){var t=this.#wt.timeline.currentZoom,r=t.axis[0],i=e.offsetX-this.#Pt.originalX,s=this.#er(r,t),n=new Date(this.#Pt.originalStart.getTime()-i*s);this.#tr(n),this.#Zt()}}#er(e,t){var r=this.#Pt.originalStart,i=e.getCellStartTime(r);return(e.getAdd(i,1).getTime()-i.getTime())/t.baseCellWidth}#Yt(){this.#rr()}#Kt(){this.#rr()}#tr(e){this.#Vt=!0,this.#wt.timeline.visibleStartTime$.next(e),this.#Vt=!1}#rr(){this.#Pt.isMoving=!1,this.#Rt.style.cursor="default";var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.timeline.visibleStartTime$.getValue();this.#tr(e.getCellStartTime(t)),this.#Zt(),this.#Qt()}#Qt(){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=this.#Rt.offsetWidth/e.baseCellWidth,s=Math.round(i/2);this.#At=t.getAdd(r,s)}#Gt(){null===this.#At&&this.#Qt();var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$,i=this.#Rt.offsetWidth/e.baseCellWidth,s=Math.round(-i/2),n=t.getCellStartTime(t.getAdd(this.#At,s));r.next(n),this.#Zt()}#qt(){this.#Vt||(this.#Qt(),this.#Zt())}#Zt(){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=this.#ir(),s=this.#sr(),n=t.getCellStartX(s,r,e)-t.getCellStartX(i,r,e),a=-t.getCellStartX(i,r,e),o=a+this.#Rt.clientWidth;o>n&&(n=o),this.#Lt.style.width=n+"px",this.#Rt.scrollLeft=a,this.#Ht=this.#Rt.scrollLeft}#ir(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue().startDate,r=new Date(t);r.setDate(r.getDate()-30);var i=e.getAdd(e.getCellStartTime(t),-3),s=e.getCellStartTime(r),n=this.#It.getMinStartTime();return n?(n=zt(n),n=e.getAdd(e.getCellStartTime(n),-3)):n=i,new Date(Math.min(i.getTime(),s.getTime(),n.getTime()))}#sr(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue().endDate,r=e.getAdd(e.getCellStartTime(t),3),i=this.#It.getMaxEndTime();return i?(i=zt(i),i=e.getAdd(e.getCellStartTime(i),3)):i=r,e.getAdd(new Date(Math.max(r.getTime(),i.getTime())),1)}handleResize(){this.#Zt()}#Ut(){if(!(this.#Bt||this.#wt.autoScrolling||null!==this.#Ht&&Math.abs(this.#Rt.scrollLeft-this.#Ht)<1)){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#Rt.scrollLeft,i=Math.round(r/e.baseCellWidth),s=this.#ir();this.#tr(t.getAdd(s,i)),this.#Qt()}}#_t(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue(),r=new Date(t.startDate),i=Bt();i.getTime()>r.getTime()&&(r=i),r.setDate(r.getDate()-1),this.#tr(e.getCellStartTime(r)),this.#Zt()}destroy(){this.#T.unsubscribe(),this.#Mt.disconnect(),this.#Rt.removeEventListener("scroll",this.#Ft),this.#Rt.removeEventListener("mousedown",this.#zt),this.#Rt.removeEventListener("mousemove",this.#Ot),this.#Rt.removeEventListener("mouseup",this.#Nt),this.#Rt.removeEventListener("mouseleave",this.#Wt)}}class Hr extends Ar{constructor(e,t,r,i){super(e,t,r,i,{getMinStartTime:()=>e.list.minStartTime,getMaxEndTime:()=>e.list.maxEndTime})}}class Vr{listeners=[];observer=null;startWatching(e){this.observer=new MutationObserver(t=>{for(const r of t)Array.from(r.removedNodes).forEach(t=>{(t===e||t.contains(e))&&this.destroy()})}),this.observer.observe(document.body,{childList:!0,subtree:!0})}addDocumentListener(e,t){const r=t.bind(this);document.addEventListener(e,r),this.listeners.push({type:e,handler:r})}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null);for(const{type:e,handler:t}of this.listeners)document.removeEventListener(e,t);this.listeners=[]}}const Br=40;class Fr{#nr;#ar=null;#or=!1;#lr=0;#hr=0;#Ut;#dr;#cr;constructor(e,t,r){this.#nr=e,this.#Ut=t,this.#dr=r?.enableVertical??!1,this.#cr=r?.getContentTop??(()=>0)}start(){this.#or||(this.#or=!0,this.#ur())}stop(){this.#or=!1,null!==this.#ar&&(cancelAnimationFrame(this.#ar),this.#ar=null)}updateMousePosition(e,t){this.#lr=e,this.#hr=t}#ur(){if(this.#or){var e=this.#nr.getBoundingClientRect(),t=this.#gr(this.#lr,e.left,e.right),r=0;if(this.#dr){var i=e.top+this.#cr();r=this.#gr(this.#hr,i,e.bottom)}0===t&&0===r||this.#Ut(t,r),this.#ar=requestAnimationFrame(()=>this.#ur())}}#gr(e,t,r){return e<t?-this.#mr(t-e+Br):e<t+Br?-this.#mr(t+Br-e):e>r?this.#mr(e-r+Br):e>r-Br?this.#mr(e-(r-Br)):0}#mr(e){return Math.min(10,Math.ceil(e/Br*10))}}var zr=null;function Or(){return null===zr&&(zr=function(){if("undefined"==typeof document)return 17;var e=document.createElement("div");e.style.visibility="hidden",e.style.overflow="scroll",e.style.position="absolute",e.style.top="-9999px",e.style.width="100px",e.style.height="100px",document.body.appendChild(e);var t=document.createElement("div");t.style.width="100%",t.style.height="100%",e.appendChild(t);var r=e.offsetHeight-t.offsetHeight;return document.body.removeChild(e),Math.max(r,6)}()),zr}class Nr extends Vr{#pr=[];#wt;#Rt;#vr=null;#T=new r;#fr;#yr;#br;#wr;#Tr;#Cr;operationComplete$=new e;redraw$=new e;constructor(e,t){super(),this.startWatching(t),this.#wt=e}get chartElement(){return this.#Rt}addHandler(e){this.#pr.push(e)}addSubscription(e){this.#T.add(e)}wireHandlers(){for(let e of this.#pr)this.#T.add(e.operationComplete$.subscribe(()=>{this.operationComplete$.next()}));this.#T.add(this.#wt.chartRedrawn$.subscribe(()=>{for(let e of this.#pr)e.onRedrawn()})),this.#T.add(this.#wt.chartBackgroundRedrawn$.subscribe(()=>{for(let e of this.#pr)e.onBackgroundRedrawn()}))}getMousePosition(e){return new xr(e.offsetX,e.offsetY)}init(e,t){this.#Rt=e,this.#vr=this.createAutoScroll(e);for(let e of this.#pr)e.init(t);this.#fr=e=>{this.#xr(e)},this.#yr=e=>{this.#kr(e)},this.#br=e=>{this.#Er(e)},this.#wr=e=>{this.#Dr(e)},this.#Tr=e=>{this.#Sr(e)},this.#Cr=e=>{this.#$r(e)},e.addEventListener("mousedown",this.#fr,!1),e.addEventListener("mouseup",this.#yr,!1),e.addEventListener("mousemove",this.#br,!1),e.addEventListener("mouseleave",this.#wr,!1),this.registerKeydownListener(e),e.addEventListener("contextmenu",this.#Tr,!1),e.addEventListener("dblclick",this.#Cr,!1),this.addDocumentListener("mousemove",this.#Rr),this.addDocumentListener("mouseup",this.#Mr)}createAutoScroll(e){return new Fr(e,(e,t)=>this.onAutoScroll(e,t))}onAutoScroll(e,t){if(0!==e){var r=this.#wt.timeline.currentZoom,i=r.axis[0],s=this.#wt.timeline.visibleStartTime$.getValue(),n=i.getCellStartTime(s),a=(i.getAdd(n,1).getTime()-n.getTime())/r.baseCellWidth,o=new Date(s.getTime()+e*a);this.#wt.timeline.visibleStartTime$.next(o)}}registerKeydownListener(e){this.addDocumentListener("keydown",e=>{this.handleKeyDown(e)})}async handleKeyDown(e){await this.#Lr(e,async t=>await t.onKeyDown(e.key,e))}#Ir(){return this.#pr.find(e=>e.isInOperation)??null}async#Lr(e,t){var r=this.#Ir(),i=!1;if(r){var s=await t(r);i=i||s.needsRedraw}for(let n of this.#pr)if((!r||n.alwaysHandleEvents)&&(!n.ignoreWhenCannotEdit||this.#wt.canEdit)&&(!("button"in e)||2!=e.button||!n.ignoreRightButton)){s=await t(n);if(i=i||s.needsRedraw,s.handled)break}i&&this.redraw$.next()}async#Er(e){e.preventDefault(),this.#vr?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);await this.#Lr(e,async r=>await r.onMouseMove(t,e))}async#Dr(e){e.preventDefault();var t=this.getMousePosition(e);await this.#Lr(e,async r=>await r.onMouseLeave(t,e))}async#xr(e){if(e.preventDefault(),!this.#Pr(e)){this.onBeforeMouseDown();var t=this.getMousePosition(e),r=e.ctrlKey;await this.#Lr(e,async i=>await i.onMouseDown(t,r,e)),this.#Ir()&&(this.#wt.autoScrolling=!0,this.#vr?.updateMousePosition(e.clientX,e.clientY),this.#vr?.start())}}onBeforeMouseDown(){}async#kr(e){e.preventDefault(),this.#Ar();var t=this.getMousePosition(e),r=e.ctrlKey;await this.#Lr(e,async i=>await i.onMouseUp(t,r,e))}#Sr(e){e.preventDefault();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onContextMenu(t,e)),this.onAfterContextMenu(t,e)}onAfterContextMenu(e,t){}#$r(e){e.preventDefault();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDblClick(t,e))}#Mr(e){e.preventDefault(),this.#Ar();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDocumentMouseUp(t,e))}#Rr(e){e.preventDefault(),this.#vr?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDocumentMouseMove(t,e))}#Ar(){this.#vr?.stop(),this.#wt.autoScrolling=!1}destroy(){this.#T.unsubscribe(),this.#Rt&&(this.#Rt.removeEventListener("mousedown",this.#fr,!1),this.#Rt.removeEventListener("mouseup",this.#yr,!1),this.#Rt.removeEventListener("mousemove",this.#br,!1),this.#Rt.removeEventListener("mouseleave",this.#wr,!1),this.#Rt.removeEventListener("contextmenu",this.#Tr,!1),this.#Rt.removeEventListener("dblclick",this.#Cr,!1)),super.destroy()}clear(){this.#Ar();for(let e of this.#pr)e.clear()}#Pr(e){return function(e,t){var r=t.getBoundingClientRect();return e.clientY-r.top>=r.height-Or()}(e,this.#Rt)}}class Wr{handled;needsRedraw;static handled=new Wr(!0,!0);static notHandled=new Wr(!1,!1);static notHandledNeedsRedraw=new Wr(!1,!0);constructor(e,t){this.handled=e,this.needsRedraw=t}}class Ur{#wt;ignoreRightButton=!0;ignoreWhenCannotEdit=!0;alwaysHandleEvents=!1;canvas;operationComplete$=new e;get canEdit(){return this.#wt.canEdit}constructor(e){this.#wt=e}#Hr=!1;set isInOperation(e){this.#Hr&&!e&&this.operationComplete$.next(),this.#Hr=e}get isInOperation(){return this.#Hr}async onMouseMove(e,t){return Wr.notHandled}async onMouseDown(e,t,r){return Wr.notHandled}async onMouseUp(e,t,r){return Wr.notHandled}async onKeyDown(e,t){return this.isInOperation&&"Escape"===t.key?(this.isInOperation=!1,this.setCursor("default"),Wr.handled):Wr.notHandled}async onMouseLeave(e,t){return Wr.notHandled}onContextMenu(e,t){return Wr.notHandled}onDblClick(e,t){return Wr.notHandled}onDocumentMouseMove(e,t){return Wr.notHandled}onDocumentMouseUp(e,t){return Wr.notHandled}clear(){}init(e){this.canvas=e}onRedrawn(){}onBackgroundRedrawn(){}dateToX(e){var t=this.#wt.timeline.currentZoom,r=t.axis[0],i=this.#wt.timeline.visibleStartTime$.getValue();return Math.floor(r.getX(e,i,t))}getCellAt(e){var t=this.#wt.timeline.currentZoom;return e.x/t.baseCellWidth}getCellEndAligned(e){var t=this.getCellAt(e);return"day"==this.#wt.timeline.currentZoom.axis[0].unit?Math.round(2*t)/2:Math.round(t)}getEndTimeAligned(e){var t=this.#wt.timeline.currentZoom.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=t.getAdd(r,Math.floor(e));if("day"==t.unit&&(e-Math.floor(e)>0&&this.#wt.calendar.isWorkingDay(i))){var s=this.#wt.calendar.getHoursPerDay();i=this.#wt.calendar.addHours(i,s/2)}return i}cellToDate(e){var t=this.#wt.timeline.currentZoom.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue();return t.getAdd(r,Math.round(e))}setCursor(e){this.#wt.chartCursor$.next(e)}}class jr{borderColor=null;color1="#aabbff";color2="#6677dd";highlightColor="rgba(50, 70, 200, 0.4)";static create(e){return Object.assign(new this,e)}}function Xr(e,t){if("number"==typeof e)return t[e%t.length];var r=t[0];return Object.assign(Object.create(Object.getPrototypeOf(r)),r,e)}class Yr{backgroundColor="#f8f8f8";cellBorderColor="#a0a0a0";cellDividerColor=null;textColor="#000000"}class Kr{header=new Yr;backgroundColor="#ffffff";textColor="#000000";hoverBackgroundColor="#f8f8f8";selectedBackgroundColor="#f8f8f8";selectedRowHeaderColor="#e8e8e8";focusBorderColor="#4a7cf6";highlightBorderColor="#647ee8";treeIconColor="#606060";editorBackgroundColor="#ffffff";editorTextColor="#000000";scrollbarThumbColor="#c1c1c1";scrollbarTrackColor="#f1f1f1";gridLineColor="#e0e0e0";colorScheme="light"}class Zr{backgroundColor="#f8f8f8";cellBorderColor="#a0a0a0";cellDividerColor=null;cellDividerPadding=0;textColor="#000000"}class Gr{backgroundColor="#ffffff";taskHeight=16;taskBorderRadius=0;taskColors;nonWorkingTimeStyle="#f8f8f8";tier2SeparatorLineStyle="#d0d0d0";gridLineColor="#f0f0f0";tooltipFont=Dr.from(null,10);tooltipTextColor="#606060";tooltipBackgroundColor1="#ffffff";tooltipBackgroundColor2="#f4f4f4";tooltipBorderColor="#606060";todayLineColor="#555555";todayLineWidth=1;todayLineStyle="dotted";markerLineColor="#555555";markerLineWidth=1;markerLineStyle="dotted";markerLabelColor="#555555";markerLabelFont=Dr.from(null,9);taskLabelPosition="none";taskLabelContent="name";taskLabelColor="#333333";taskLabelFont=Dr.from(null,10);taskLabelPadding=4;taskLabelOutsideMargin=6;constructor(){this.taskColors=[new jr,jr.create({color1:"#ffcccc",color2:"#dd9999",highlightColor:"rgba(200, 70, 70, 0.4)"}),jr.create({color1:"#bbeebb",color2:"#88cc88",highlightColor:"rgba(70, 160, 70, 0.4)"}),jr.create({color1:"#f8f8aa",color2:"#e8e899",highlightColor:"rgba(180, 180, 50, 0.4)"}),jr.create({color1:"#ddbbff",color2:"#bb99dd",highlightColor:"rgba(140, 90, 180, 0.4)"}),jr.create({color1:"#ffd8a8",color2:"#eebb88",highlightColor:"rgba(180, 130, 60, 0.4)"}),jr.create({color1:"#a8e8e8",color2:"#77cccc",highlightColor:"rgba(60, 160, 160, 0.4)"}),jr.create({color1:"#ffbbdd",color2:"#ee99bb",highlightColor:"rgba(200, 80, 140, 0.4)"})]}}class qr{header=new Zr;content=new Gr}class _r{font=new Dr;rowHeight=30;headerHeight=50;get contentTop(){return this.headerHeight+2}sheet=new Kr;chart=new qr}class Jr extends jr{progressColor1="#7788cc";progressColor2="#223399";progressHighlightColor="rgba(50, 70, 200, 0.4)";separatorColor="#6677dd";linkLineColor="#6677dd";linkArrowColor="#6677dd"}class Qr extends Gr{taskProgressHeight=16;summaryHeight=16;summaryColor1="#e0e0e0";summaryColor2="#b0b0b0";summaryMarkColor1="#e0e0e0";summaryMarkColor2="#808080";summaryProgressHeight=16;summaryProgressColor1="#a0a0a0";summaryProgressColor2="#707070";summaryMarkProgressColor1="#a0a0a0";summaryMarkProgressColor2="#404040";summaryBorderColor=null;summaryMarkWidth=14;summaryMarkType="half";summaryHighlightColor="rgba(70, 70, 70, 0.4)";milestoneSize=16;milestoneColor1="#b0b0b0";milestoneColor2="#606060";milestoneBorderColor=null;milestoneHighlightColor="rgba(50, 50, 50, 0.5)";connectorDotRadius=7;connectorDotColor="#4a90d9";connectorDotBorderColor="#2a6ab0";connectorDotHoverColor="#2a6ab0";linkLineStyle="sharp";linkFromMilestoneLineColor="#909090";linkFromMilestoneArrowColor="#909090";baselineColor="#d8d8d8";baselineHeight=6;baselineSummaryHeight=8;baselineMilestoneSize=8;baselineOffset=3;baselineBorderRadius=1;criticalTaskBorderColor="#cc0000";criticalTaskBorderWidth=2;criticalMilestoneBorderColor="#cc0000";criticalSummaryBorderColor="#cc0000";constraintFixedColor="#cc4444";constraintAlapColor="#888888";constraintBoundaryColor="#4a7cf6";summaryLabelPosition="none";summaryLabelContent="name";summaryLabelColor="#333333";milestoneLabelPosition="none";milestoneLabelContent="name";milestoneLabelColor="#333333";constructor(){super(),this.taskColors=[new Jr,Jr.create({color1:"#ffcccc",color2:"#dd9999",progressColor1:"#eeaaaa",progressColor2:"#cc7777",separatorColor:"#cc7777",linkLineColor:"#cc7777",linkArrowColor:"#cc7777"}),Jr.create({color1:"#bbeebb",color2:"#88cc88",progressColor1:"#88cc88",progressColor2:"#55aa55",separatorColor:"#55aa55",linkLineColor:"#55aa55",linkArrowColor:"#55aa55"}),Jr.create({color1:"#f8f8aa",color2:"#e8e899",progressColor1:"#e8e899",progressColor2:"#d0d077",separatorColor:"#cccc66",linkLineColor:"#cccc66",linkArrowColor:"#cccc66"}),Jr.create({color1:"#ddbbff",color2:"#bb99dd",progressColor1:"#cc99ee",progressColor2:"#aa77cc",separatorColor:"#aa77cc",linkLineColor:"#aa77cc",linkArrowColor:"#aa77cc"}),Jr.create({color1:"#ffd8a8",color2:"#eebb88",progressColor1:"#eebb88",progressColor2:"#cc9966",separatorColor:"#cc9966",linkLineColor:"#cc9966",linkArrowColor:"#cc9966"}),Jr.create({color1:"#a8e8e8",color2:"#77cccc",progressColor1:"#77cccc",progressColor2:"#55aaaa",separatorColor:"#55aaaa",linkLineColor:"#55aaaa",linkArrowColor:"#55aaaa"}),Jr.create({color1:"#ffbbdd",color2:"#ee99bb",progressColor1:"#ee99bb",progressColor2:"#cc7799",separatorColor:"#cc7799",linkLineColor:"#cc7799",linkArrowColor:"#cc7799"})]}}class ei extends qr{constructor(){super(),this.content=new Qr}}class ti extends _r{constructor(){super(),this.chart=new ei}}function ri(e,t){switch(e){case"task":return t.taskHeight;case"milestone":return t.milestoneSize;case"summary":return t.summaryHeight;default:return 0}}function ii(e,t,r){var i=t.theme$.getValue(),s=t.sheetScrollTop$.getValue()+e.y-i.contentTop;if(s<0)return null;for(var n=0,a=0;a<t.list.length;a++){var o=t.list.getTask(a);if(!o.hidden){var l=n+i.rowHeight+1;if(s>=n&&s<l)return!r||r(o)?o:null;n=l}}return null}class si extends Ur{#kt;#Vr;#Br;constructor(e,t,r){super(e),this.#kt=e,this.#Vr=t,this.#Br=r}getTaskRowAt(e){return ii(e,this.#kt)}getTaskAt(e){var t=this.getTaskRowAt(e);if(t){var r=null;if(!this.containsVertically(t,e))return null;var i=this.#kt.theme$.getValue(),s=0,n=0;switch(t.type){case"empty":return null;case"task":var a=this.getTaskPartAt(t,e);if(!a)return null;r=a.taskPart,s=a.x1,n=a.x2;break;case"milestone":var o=this.dateToX(t.endTime),l=i.chart.content.milestoneSize;if(s=o-l/2,n=o+l/2,!(e.x>=s&&e.x<=n))return null;break;case"summary":if(s=this.dateToX(t.startTime),n=this.dateToX(t.endTime),!(e.x>=s&&e.x<=n))return null}return{task:t,taskPart:r,x1:s,x2:n}}return null}getShapeHeight(e){var t=this.#kt.theme$.getValue();return ri(e.type,t.chart.content)}containsVertically(e,t){var r=this.getShapeHeight(e),i=this.getRowY(e)+(this.#kt.theme$.getValue().rowHeight+1)/2-r/2;return t.y>=i&&t.y<i+r}getTaskPartAt(e,t,r){for(var i=0;i<e.partsLength;i++){var s=e.getPart(i),n=this.dateToX(s.startTime),a=this.dateToX(s.endTime);if(r=r??0,t.x>=n&&t.x<=a+r)return{taskPart:s,x1:n,x2:a}}return null}getRowY(e){return this.#kt.getRowY(e)}drawTaskProgressHighlight(e,t,r){var i=this.canvas.getContext("2d");this.#Vr.drawTaskProgressHighlight(i,e,t,r)}drawTaskHighlightX1X2(e,t,r){var i=this.canvas.getContext("2d");this.#Vr.drawTaskHighlightX1X2(i,e,t,r)}drawTaskHighlight(e){var t=this.canvas.getContext("2d");this.#Vr.drawTaskHighlight(t,e)}drawTooltip(e,t,r,i){this.#Br.drawTooltip(this.canvas,e,t,r,i)}}class ni extends si{startX=0;lastP=new xr(0,0);target=null;dragCursor="all-scroll";enableHoverDetection=!1;hoverCursor="ew-resize";constructor(e,t,r){super(e,t,r)}onDragStart(e,t){}async onMouseMove(e,t){if(this.isInOperation)return this.lastP=e,Wr.handled;if(this.enableHoverDetection){var r=this.hitTest(e);if(r)return this.target=r,this.setCursor(this.hoverCursor),Wr.handled;this.target&&(this.target=null,this.setCursor("default"))}return Wr.notHandled}async onMouseDown(e,t,r){if(0!==r.button||this.isInOperation)return Wr.notHandled;var i=this.hitTest(e);return i?(this.target=i,this.isInOperation=!0,this.startX=e.x,this.lastP=e,this.onDragStart(i,e),this.setCursor(this.dragCursor),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,this.setCursor("default"),this.onDragEnd(this.target,e),Wr.handled):Wr.notHandled}onRedrawn(){this.isInOperation&&this.target&&this.onDragDraw(this.target)}}class ai extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e,this.dragCursor="crosshair"}hitTest(e){var t=this.getTaskRowAt(e);if(!t)return null;if("empty"!=t.type&&"task"!=t.type)return null;for(var r=0;r<t.partsLength;r++){var i=t.getPart(r),s=this.dateToX(i.startTime),n=this.dateToX(i.endTime);if(e.x>=s&&e.x<=n)return null}return{task:t,startCell:this.getCellAt(e)}}onDragEnd(e,t){var r=this.#Fr(t);r&&r.length.value>0&&e.task.addPart(r.startTime,r.length)}onDragDraw(e){this.drawTaskHighlightX1X2(e.task,this.startX,this.lastP.x);var t=this.#Fr(this.lastP);if(t){var r=this.#kt.locale$.getValue(),i=[];i.push({name:r.labels.start,value:Kt(t.startTime,r.language)}),i.push({name:r.labels.end,value:Kt(t.endTime,r.language)}),i.push({name:r.labels.length,value:t.length.toString()}),this.drawTooltip([e.task],this.startX,"empty"==e.task.type?r.tooltips.addTask:r.tooltips.addTaskPart,i)}}#Fr(e){var t=this.target,r=Math.round(t.startCell),i=this.getCellEndAligned(e);if(i<=r)return null;var s=this.cellToDate(t.startCell),n=this.getEndTimeAligned(i);if(s=this.#kt.calendar.moveToStartShift(s,!0),n=this.#kt.calendar.moveToEndShift(n,!0),s.getTime()>=n.getTime())return null;var a=t.task.length?.unit??"day";return{startTime:s,endTime:n,length:rr.getLength(s,n,a,this.#kt.calendar)}}}class oi extends si{#kt;#zr=null;dblClick$=new e;contextMenu$=new e;constructor(e,t,r){super(e,t,r),this.ignoreRightButton=!1,this.ignoreWhenCannotEdit=!1,this.#kt=e}async onMouseMove(e,t){var r=this.getTaskRowAt(e);return r!=this.#zr&&(this.#zr=r,this.#kt.chartTaskHover$.next(r)),Wr.notHandled}async onMouseDown(e,t,r){return Wr.notHandled}async onMouseUp(e,t,r){return Wr.notHandled}async onKeyDown(e,t){return Wr.notHandled}async onMouseLeave(e,t){return this.#zr=null,this.#kt.chartTaskHover$.next(null),Wr.notHandled}onContextMenu(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getTaskAt(e);return r?(this.contextMenu$.next({mouseEvent:t,task:r.task}),Wr.handled):Wr.notHandled}onDblClick(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getTaskAt(e);return r?(this.dblClick$.next(r.task),Wr.handled):Wr.notHandled}}class li extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e}hitTest(e){var t=this.getTaskAt(e);return t&&"task"==t.task.type?t:null}onDragEnd(e,t){var r=this.#Fr(t),i=e.task,s=e.taskPart,n=i.indexOf(s);0==n?i.startTime=r.startTime:n>0&&(s.startTime=r.startTime)}onDragDraw(e){var t=this.lastP.x-this.startX;this.drawTaskHighlightX1X2(e.task,e.x1+t,e.x2+t);var r=this.#kt.locale$.getValue(),i=this.#Fr(this.lastP),s=[];s.push({name:r.labels.start,value:Kt(i.startTime,r.language)}),this.drawTooltip([e.task],this.startX,1==e.task.partsLength?r.tooltips.moveTask:r.tooltips.moveTaskPart,s)}#Fr(e){var t=e.x-this.startX,r=this.getCellAt(new xr(this.target.x1+t,e.y));return{startTime:this.cellToDate(r)}}}class hi extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e,this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getTaskRowAt(e);if(t){if(!this.containsVertically(t,e))return null;if("task"==t.type){var r=this.getTaskPartAt(t,e,3);if(!r)return null;if(Math.abs(e.x-r.x2)<=3)return{task:t,taskPart:r.taskPart,x1:r.x1,x2:r.x2,deltaX:e.x-r.x2}}}return null}onDragEnd(e,t){var r=this.#Fr(t);r.length.value>0?e.taskPart.endTime=r.endTime:e.taskPart.length=new rr(r.lengthUnit,0)}onDragDraw(e){var t=this.lastP.x-this.startX-e.deltaX,r=e.x1,i=e.x2+t;this.drawTaskHighlightX1X2(e.task,r,i);var s=this.#kt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];a.push({name:s.labels.end,value:Kt(n.endTime,s.language)}),a.push({name:s.labels.length,value:n.length.toString()});var o=e.task;this.drawTooltip([e.task],this.startX,1==o.partsLength?s.tooltips.resizeTask:s.tooltips.resizeTaskPart,a)}#Fr(e){var t=this.target,r=this.lastP.x-this.startX-t.deltaX,i=t.x2+r,s=this.getCellEndAligned(new xr(i,e.y)),n=this.getEndTimeAligned(s);n=this.#kt.calendar.moveToEndShift(n,!0);var a=t.task.length?.unit??"day";return{endTime:n,length:rr.getLength(t.taskPart.startTime,n,a,this.#kt.calendar),lengthUnit:a}}}class di extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e}hitTest(e){var t=this.getTaskAt(e);return t&&"milestone"==t.task.type?t:null}onDragEnd(e,t){var r=this.#Fr(t);e.task.startTime=r.startTime}onDragDraw(e){var t=this.lastP.x-this.startX,r=e.x1+t,i=(e.x2+t+r)/2;this.#Or(i,e);var s=this.#kt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];a.push({name:s.labels.start,value:Kt(n.startTime,s.language)}),a.push({name:s.labels.end,value:Kt(n.startTime,s.language)}),this.drawTooltip([e.task],this.startX,s.tooltips.moveMilestone,a)}#Fr(e){var t=e.x-this.startX,r=(this.target.x1+this.target.x2)/2+t,i=this.getCellAt(new xr(r,e.y)),s=this.cellToDate(i),n=this.#kt.timeline.currentZoom.axis[0];if("minute"!=n.unit&&"hour"!=n.unit){var a=this.#kt.calendar.getHoursPerDay();s=this.#kt.calendar.addHours(s,-a)}return{startTime:s}}#Or(e,t){var r=this.canvas.getContext("2d"),i=t.task,s=this.getRowY(i),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.milestoneSize;s=s+a/2-o/2,e-=o/2,r.beginPath(),r.moveTo(e,s+o/2),r.lineTo(e+o/2,s),r.lineTo(e+o,s+o/2),r.lineTo(e+o/2,s+o),r.lineTo(e,s+o/2),r.fillStyle="rgba(100, 120, 200, 0.3)",r.fill()}}function ci(e,t,r,i){return null!=function(e,t,r,i){var s=function(e,t,r){var i=((r.x-e.x)*(t.x-e.x)+(r.y-e.y)*(t.y-e.y))/((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y));if(i<0||i>1)return null;return i}(e,t,i);if(null===s||s<0||s>1)return null;var n=Math.pow(i.x-e.x-s*(t.x-e.x),2)+Math.pow(i.y-e.y-s*(t.y-e.y),2);if(n>1/4*r*r)return null;return new xr(e.x+(t.x-e.x)*s,e.y+(t.y-e.y)*s)}(e,t,r,i)}function ui(e,t,r="#ffffff"){e.lineWidth=1,e.beginPath(),e.roundRect(t.x-Math.ceil(3.5)+.5,t.y-Math.ceil(3.5)+.5,7,7,2),e.fillStyle=r,e.fill(),e.strokeStyle="#606060",e.stroke()}function gi(e,t,r,i){var s=e.createLinearGradient(t.x,t.y,t.x,t.bottom);return s.addColorStop(0,r),s.addColorStop(1,i),s}function mi(e,t,r){r>0?e.roundRect(t.x,t.y,t.width,t.height,r):e.rect(t.x,t.y,t.width,t.height)}function pi(e,t,r,i=0){e.beginPath(),mi(e,t,i),e.strokeStyle=r,e.stroke()}class vi{#kt;constructor(e){this.#kt=e}get rowHeight(){return this.#kt.theme$.getValue().rowHeight+1}getCoords(e){var t,r,i=this.#kt.timeline.currentZoom,s=i.axis[0],n=this.#kt.timeline.visibleStartTime$.getValue(),a=this.#kt.theme$.getValue();switch(e.type){case"finishToStart":case"finishToFinish":t=Math.floor(s.getX(e.from.endTime,n,i)),"milestone"==e.from.type&&(t+=a.chart.content.milestoneSize/2);break;case"startToStart":case"startToFinish":t=Math.floor(s.getX(e.from.startTime,n,i)),"milestone"==e.from.type&&(t-=a.chart.content.milestoneSize/2)}switch(e.type){case"finishToStart":case"startToStart":r=Math.floor(s.getX(e.to.startTime,n,i)),"milestone"==e.to.type&&(r-=a.chart.content.milestoneSize/2);break;case"finishToFinish":case"startToFinish":r=Math.floor(s.getX(e.to.endTime,n,i)),"milestone"==e.to.type&&(r+=a.chart.content.milestoneSize/2)}var o,l=this.#kt.getRowY(e.from)+this.rowHeight/2,h=this.#kt.list.indexOf(e.from)<this.#kt.list.indexOf(e.to)?1:-1;switch(e.type){case"finishToStart":case"startToFinish":var d=this.#Nr(e.to,a);o=h>0?this.#kt.getRowY(e.to)+this.rowHeight/2-d/2:this.#kt.getRowY(e.to)+this.rowHeight/2+d/2;break;default:o=this.#kt.getRowY(e.to)+this.rowHeight/2}return{x1:t,y1:l,x2:r,y2:o,sign:h,type:e.type}}#Nr(e,t){return ri(e.type,t.chart.content)||t.chart.content.taskHeight}}class fi extends si{#kt;#Wr;#Ur=null;#jr=null;constructor(e,t,r){super(e,t,r),this.#kt=e,this.#Wr=new vi(e)}async onMouseDown(e,t,r){for(var i=0;i<this.#kt.list.linksLength;i++){var s=this.#kt.list.getLink(i);if(!s.from.hidden&&!s.to.hidden){var n=this.#Wr.getCoords(s);if(this.#Xr(n,e,s))return this.#Ur=s,this.#jr=n,this.isInOperation=!0,Wr.handled}}return this.#Ur=null,this.#jr=null,Wr.notHandled}#Xr(e,t,r){for(var i=this.#Yr(e,r),s=0;s<i.length-1;s++)if(ci(i[s],i[s+1],5,t))return!0;return!1}#Yr(e,t){var r=e.x1,i=e.y1,s=e.x2,n=e.y2;switch(t.type){case"finishToStart":var a=Math.max(s,r+10);return[new xr(r,i),new xr(a,i),new xr(a,n)];case"startToFinish":a=Math.min(s,r-10);return[new xr(r,i),new xr(a,i),new xr(a,n)];case"startToStart":a=Math.min(r,s)-10;return[new xr(r,i),new xr(a,i),new xr(a,n),new xr(s,n)];case"finishToFinish":a=Math.max(r,s)+10;return[new xr(r,i),new xr(a,i),new xr(a,n),new xr(s,n)]}return[]}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,Wr.handled):Wr.notHandled}async onKeyDown(e,t){return this.#Ur&&tr(t)?(this.#kt.list.removeLink(this.#Ur),this.#Ur=null,this.#jr=null,Wr.handled):Wr.notHandled}onRedrawn(){if(this.#Ur){this.#jr=this.#Wr.getCoords(this.#Ur);var e=this.#jr,t=this.canvas.getContext("2d");ui(t,new xr(e.x1,e.y1)),ui(t,new xr(e.x2,e.y2))}}}class yi{#kt;constructor(e){this.#kt=e}getTotalWidth(e){for(var t=this.#kt.timeline.currentZoom,r=t.axis[0],i=this.#kt.timeline.visibleStartTime$.getValue(),s=0,n=0;n<e.partsLength;n++){var a=e.getPart(n),o=r.getX(a.startTime,i,t);s+=r.getX(a.endTime,i,t)-o}return s}getProgressAt(e,t){for(var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=this.getTotalWidth(e),a=0,o=0;o<e.partsLength;o++){var l=e.getPart(o),h=i.getX(l.startTime,s,r),d=i.getX(l.endTime,s,r);if(h>=t)break;t>=Math.floor(h)&&t<=Math.ceil(d)?a+=(t-h)/n:a+=(d-h)/n}return Math.round(100*a)}getProgressX(e,t){for(var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=t/100*this.getTotalWidth(e),a=null,o=0;o<e.partsLength;o++){var l=e.getPart(o),h=i.getX(l.startTime,s,r),d=i.getX(l.endTime,s,r);if(null===a&&(a=h),Math.abs(n)<=1e-4)break;n>=d-h?(a=d,n-=d-h):(a=h+n,n=0)}return a}}class bi extends ni{#kt;#Wr;constructor(e,t,r){super(e,t,r),this.#kt=e,this.#Wr=new yi(e),this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getTaskRowAt(e);if(t){if(!this.containsVertically(t,e))return null;if("task"==t.type){var r=this.#Wr.getProgressX(t,t.progress);if(Math.abs(e.x-r)<=3)return{task:t,deltaX:e.x-r}}}return null}onDragEnd(e,t){var r=this.#Wr.getProgressAt(e.task,t.x-e.deltaX);e.task.progress=r}onDragDraw(e){for(var t=e.task,r=this.#Wr.getProgressAt(t,this.lastP.x-e.deltaX),i=this.#Wr.getProgressX(t,r),s=0;s<t.partsLength;s++){var n=t.getPart(s),a=this.dateToX(n.startTime),o=this.dateToX(n.endTime);if(a>=i)break;this.drawTaskProgressHighlight(t,a,Math.min(o,i))}var l=this.#kt.locale$.getValue(),h=[];h.push({name:l.labels.progress,value:r.toString()}),this.drawTooltip([t],this.startX,l.tooltips.setProgress,h)}}class wi extends si{#kt;#Kr=null;#Zr=null;#Gr=!1;#qr=null;#_r=null;#Jr=null;#Qr=null;#ei=null;connectorDotsTask$=new t(null);constructor(e,t,r){super(e,t,r),this.#kt=e}async onMouseMove(e,t){if(this.#Gr)return this.#Jr=e,this.#ti(e),Wr.handled;var r=this.getTaskRowAt(e);if(r&&("task"===r.type||"milestone"===r.type)){var i=this.#ri(r,e);if(i)return this.#Kr=r,this.#Zr=i.side,this.connectorDotsTask$.next(r),this.setCursor("pointer"),new Wr(!0,!0);if(this.containsVertically(r,e)){var s=this.#ii(r);if(s&&e.x>=s.x1-10&&e.x<=s.x2+10)return this.#Kr===r&&null===this.#Zr||(this.#Kr=r,this.#Zr=null,this.connectorDotsTask$.next(r),this.setCursor("default")),Wr.notHandledNeedsRedraw}}return this.#Kr?(this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),this.setCursor("default"),Wr.notHandledNeedsRedraw):Wr.notHandled}async onMouseDown(e,t,r){return 0!==r.button?Wr.notHandled:this.#Kr&&this.#Zr?(this.#Gr=!0,this.isInOperation=!0,this.#qr=this.#Kr,this.#_r=this.#Zr,this.#Jr=e,this.setCursor("grabbing"),Wr.handled):Wr.notHandled}async onKeyDown(e,t){return this.#Gr&&"Escape"===t.key?(this.#Gr=!1,this.isInOperation=!1,this.setCursor("default"),this.#qr=null,this.#_r=null,this.#Qr=null,this.#ei=null,this.#Jr=null,this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){if(this.#Gr){if(this.#Gr=!1,this.isInOperation=!1,this.setCursor("default"),this.#Qr&&this.#ei){var i=mr(this.#_r,this.#ei);try{this.#kt.list.addLink(this.#qr,this.#Qr,i)}catch(e){}}return this.#qr=null,this.#_r=null,this.#Qr=null,this.#ei=null,this.#Jr=null,Wr.handled}return Wr.notHandled}async onMouseLeave(e,t){return!this.#Gr&&this.#Kr?(this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),Wr.notHandledNeedsRedraw):Wr.notHandled}onRedrawn(){var e=this.canvas.getContext("2d"),t=this.#kt.theme$.getValue(),r=t.chart.content.connectorDotRadius,i=this.#Kr;if(i){var s=this.#ii(i);if(s){var n=this.getRowY(i)+(t.rowHeight+1)/2;this.#si(e,s.x1-r,n,r,"start"===this.#Zr,t,i),this.#si(e,s.x2+r,n,r,"finish"===this.#Zr,t,i)}}if(this.#Gr&&this.#qr&&this.#Jr){var a=this.#ii(this.#qr);if(a){var o=this.getRowY(this.#qr)+(t.rowHeight+1)/2,l="start"===this.#_r?a.x1-r:a.x2+r,h=this.#Jr.x,d=this.#Jr.y;if(this.#Qr&&this.#ei){var c=this.#ii(this.#Qr);if(c){var u=this.getRowY(this.#Qr);h="start"===this.#ei?c.x1-r:c.x2+r,d=u+(t.rowHeight+1)/2,this.#si(e,c.x1-r,d,r,"start"===this.#ei,t,this.#Qr),this.#si(e,c.x2+r,d,r,"finish"===this.#ei,t,this.#Qr)}}var g=Xr(this.#qr.color,t.chart.content.taskColors);if(e.beginPath(),e.moveTo(l,o),e.lineTo(h,d),e.strokeStyle=g.linkLineColor,e.lineWidth=2,e.stroke(),e.lineWidth=1,this.#si(e,l,o,r,!0,t,this.#qr),this.#Qr&&this.#ei){var m=mr(this.#_r,this.#ei),p=this.#kt.locale$.getValue(),v=[];v.push({name:p.labels.from,value:this.#qr.name??""}),v.push({name:p.labels.to,value:this.#Qr.name??""}),v.push({name:p.labels.type,value:p.linkTypes[m]}),v.push({name:p.labels.lag,value:"0d"}),this.drawTooltip([this.#qr,this.#Qr],l,p.tooltips.addLink,v)}}}}#si(e,t,r,i,s,n,a){var o=Xr(a.color,n.chart.content.taskColors);e.beginPath(),e.arc(t,r+.5,i,0,2*Math.PI),e.fillStyle=s?o.color2:o.color1,e.fill(),e.strokeStyle=o.color2,e.stroke()}#ii(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":if(0===e.partsLength)return null;var r=e.getPart(0),i=e.getPart(e.partsLength-1);return{x1:this.dateToX(r.startTime),x2:this.dateToX(i.endTime)};case"milestone":var s=this.dateToX(e.startTime),n=t.chart.content.milestoneSize;return{x1:s-n/2,x2:s+n/2};default:return null}}#ri(e,t){var r=this.#ii(e);if(!r)return null;var i=this.#kt.theme$.getValue(),s=this.getRowY(e)+(i.rowHeight+1)/2,n=i.chart.content.connectorDotRadius,a=n+3,o=r.x1-n,l=r.x2+n,h=Math.sqrt((t.x-o)**2+(t.y-s)**2),d=Math.sqrt((t.x-l)**2+(t.y-s)**2);return h<=a?{side:"start"}:d<=a?{side:"finish"}:null}#ti(e){this.#Qr=null,this.#ei=null;var t=this.getTaskRowAt(e);if(t&&t!==this.#qr&&("task"===t.type||"milestone"===t.type)){var r=this.#ri(t,e);if(r)return this.#Qr=t,void(this.#ei=r.side);if(this.containsVertically(t,e)){var i=this.#ii(t);if(i&&e.x>=i.x1-10&&e.x<=i.x2+10){var s=Math.abs(e.x-i.x1),n=Math.abs(e.x-i.x2);this.#Qr=t,this.#ei=s<n?"start":"finish"}}}}}class Ti extends Ir{#kt;#Wr;constructor(e){super(e),this.#kt=e,this.#Wr=new yi(e)}#ni(e){var t=this.#kt.timeline.currentZoom,r=t.axis[0],i=this.#kt.timeline.visibleStartTime$.getValue(),s=this.#kt.theme$.getValue(),n=this.#kt.showCriticalPath$.getValue()&&e.isCritical,a=this.#kt.showBaseline$.getValue()&&!!e.baselineStartTime;return{zoom:t,axis:r,visibleStart:i,theme:s,isCritical:n,showBaseline:a,baselineOffset:a?s.chart.content.baselineOffset:0}}render(e){var t=e.getContext("2d");this.#ai(e,t),this.#oi(e,t),this.#li(e,t)}#ai(e,t){var r=this.#kt.sheetSelectedTasks$.getValue();if(0!==r.length){var i=this.#kt.theme$.getValue().rowHeight+1;for(var s of r)this.drawRowHighlight(t,e.width,this.getRowY(s),i)}}#li(e,t){var r=this.#kt.chartTaskHover$.getValue();if(!r){var i=this.#kt.sheetRowMouseOver$.getValue();i&&(r=i.task)}if(r){var s=this.#kt.theme$.getValue().rowHeight+1;this.drawRowHighlight(t,e.width,this.getRowY(r),s)}}#oi(e,t){var r=this.#kt.theme$.getValue().contentTop;r-=this.#kt.sheetScrollTop$.getValue();for(var i=0;i<this.#kt.list.length;i++){var s=this.#kt.list.getTask(i);if(!s.hidden){switch(s.type){case"task":this.#hi(t,s,r);break;case"milestone":this.#di(t,s,r);break;case"summary":this.#ci(t,s,r)}r+=this.rowHeight}}}#hi(e,t,r){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,baselineOffset:h}=i,d=i.showBaseline&&!!t.baselineEndTime,c=0,u=o.chart.content.taskHeight,g=o.chart.content.taskProgressHeight,m=o.chart.content.taskBorderRadius,p=Xr(t.color,o.chart.content.taskColors),v=p.color1,f=p.color2,y=p.borderColor,b=p.progressColor1,w=p.progressColor2,T=p.separatorColor,C=t.progress;if(d){var x=Math.floor(n.getX(t.baselineStartTime,a,s)),k=Math.floor(n.getX(t.baselineEndTime,a,s)),E=o.chart.content.baselineHeight,D=r+this.rowHeight/2-u/2-h+u+1,S=new kr(x,D,k-x,E);e.beginPath(),mi(e,S,o.chart.content.baselineBorderRadius),e.fillStyle=o.chart.content.baselineColor,e.fill()}for(var $=0;$<t.partsLength;$++){var R=t.getPart($),M=Math.floor(n.getX(R.startTime,a,s)),L=Math.floor(n.getX(R.endTime,a,s));e.beginPath();var I=new kr(M+(y||l?.5:0),r+this.rowHeight/2-u/2-h+(y||l?0:.5),L-M,u);if(mi(e,I,m),e.fillStyle=gi(e,I,v,f),e.fill(),null!==C&&C>0){var P=this.#Wr.getProgressX(t,C);(P=Math.min(L,P))>M&&(e.save(),e.clip(),e.beginPath(),e.rect(I.x,I.y+u/2-g/2,P-M,g),e.fillStyle=gi(e,I,b,w),e.fill(),e.restore())}l?(e.lineWidth=o.chart.content.criticalTaskBorderWidth,pi(e,I,o.chart.content.criticalTaskBorderColor,m),e.lineWidth=1):y&&pi(e,I,y,m),$>0&&this.#ui(e,c,M,r,u,T),c=L}if("asap"!==t.constraintType&&t.constraintDate&&this.#gi(e,t,r,u,i),"none"!==o.chart.content.taskLabelPosition){var A=t.getPart(0),H=t.getPart(t.partsLength-1),V=Math.floor(n.getX(A.startTime,a,s)),B=Math.floor(n.getX(H.endTime,a,s)),F=new kr(V,r+this.rowHeight/2-u/2-h,B-V,u);this.#mi(e,t,F,o.chart.content.taskLabelPosition,o.chart.content.taskLabelContent,o.chart.content.taskLabelColor)}}#ui(e,t,r,i,s,n){e.beginPath();for(var a=i+this.rowHeight/2+s/2,o=t+4;!(o>=r);)e.moveTo(o,a-3),e.lineTo(o,a),o+=5;e.strokeStyle=n,e.stroke()}#pi(e,t,r,i=0){var s=this.#kt.timeline.currentZoom,n=s.axis[0],a=this.#kt.timeline.visibleStartTime$.getValue(),o=this.#kt.theme$.getValue().chart.content.milestoneSize,l=Math.floor(n.getX(t.startTime,a,s)),h=r+this.rowHeight/2-o/2+i;return e.beginPath(),e.moveTo(l,h),e.lineTo(l+o/2,h+o/2),e.lineTo(l,h+o),e.lineTo(l-o/2,h+o/2),e.lineTo(l,h),new kr(l-o/2,h,o,o)}#di(e,t,r){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,showBaseline:h,baselineOffset:d}=i,c=o.chart.content.milestoneColor1,u=o.chart.content.milestoneColor2,g=o.chart.content.milestoneBorderColor;if(h){var m=o.chart.content.baselineMilestoneSize,p=Math.floor(n.getX(t.baselineStartTime,a,s)),v=o.chart.content.milestoneSize,f=r+this.rowHeight/2-v/2-d+v+1+m/2;e.beginPath(),e.moveTo(p,f-m/2),e.lineTo(p+m/2,f),e.lineTo(p,f+m/2),e.lineTo(p-m/2,f),e.lineTo(p,f-m/2),e.fillStyle=o.chart.content.baselineColor,e.fill()}var y=this.#pi(e,t,r,-d);if(e.fillStyle=gi(e,y,c,u),e.fill(),l?(e.strokeStyle=o.chart.content.criticalMilestoneBorderColor,e.lineWidth=o.chart.content.criticalTaskBorderWidth,e.stroke(),e.lineWidth=1):g&&(e.strokeStyle=g,e.stroke()),"asap"!==t.constraintType&&"alap"!==t.constraintType&&t.constraintDate&&this.#gi(e,t,r,o.chart.content.milestoneSize,i),"none"!==o.chart.content.milestoneLabelPosition){var b=o.chart.content.milestoneSize,w=o.chart.content.taskLabelOutsideMargin,T=new kr(y.right+w,r+this.rowHeight/2-b/2-d,300,b);this.#mi(e,t,T,"right",o.chart.content.milestoneLabelContent,o.chart.content.milestoneLabelColor)}}#ci(e,t,r){if(t.startTime&&t.endTime){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,baselineOffset:h}=i,d=i.showBaseline&&!!t.baselineEndTime,c=o.chart.content.summaryHeight;if(d){var u=Math.floor(n.getX(t.baselineStartTime,a,s)),g=Math.floor(n.getX(t.baselineEndTime,a,s)),m=o.chart.content.baselineSummaryHeight,p=r+this.rowHeight/2-c/2-h+c/2+1,v=o.chart.content.summaryMarkType,f=Math.round(o.chart.content.summaryMarkWidth*m/c);e.beginPath(),e.rect(u,p,g-u,m/2),"full"==v?(e.moveTo(u-f/2,p),e.lineTo(u+f/2,p),e.lineTo(u+f/2,p+m/2),e.lineTo(u,p+m),e.lineTo(u-f/2,p+m/2)):(e.moveTo(u,p),e.lineTo(u+f/2,p),e.lineTo(u+f/2,p+m/2),e.lineTo(u,p+m)),"full"==v?(e.moveTo(g-f/2,p),e.lineTo(g+f/2,p),e.lineTo(g+f/2,p+m/2),e.lineTo(g,p+m),e.lineTo(g-f/2,p+m/2)):(e.moveTo(g,p),e.lineTo(g-f/2,p),e.lineTo(g-f/2,p+m/2),e.lineTo(g,p+m)),e.fillStyle=o.chart.content.baselineColor,e.fill()}var y=Math.floor(n.getX(t.startTime,a,s)),b=Math.floor(n.getX(t.endTime,a,s)),w=o.chart.content.summaryColor1,T=o.chart.content.summaryColor2,C=o.chart.content.summaryProgressColor1,x=o.chart.content.summaryProgressColor2,k=o.chart.content.summaryBorderColor,E=o.chart.content.summaryMarkType;e.beginPath();var D=new kr(y+.5,r+this.rowHeight/2-c/2-h,b-y,c/2);e.rect(D.x,D.y,D.width,D.height),e.fillStyle=gi(e,D,w,T),e.fill();var S=t.progress??0;if(S>0){e.beginPath();var $=new kr(D.x,D.y,D.width*(S/100),D.height);e.rect($.x,$.y,$.width,$.height),e.fillStyle=gi(e,$,C,x),e.fill()}if(l?(e.lineWidth=o.chart.content.criticalTaskBorderWidth,pi(e,D,o.chart.content.criticalSummaryBorderColor),e.lineWidth=1):k&&pi(e,D,k),this.#vi(e,y,r-h,S>0,c,E,"left"),this.#vi(e,b,r-h,S>=100,c,E,"right"),"none"!==o.chart.content.summaryLabelPosition){var R=new kr(y,r+this.rowHeight/2-c/2-h,b-y,c);this.#mi(e,t,R,o.chart.content.summaryLabelPosition,o.chart.content.summaryLabelContent,o.chart.content.summaryLabelColor)}}}#fi(e,t,r,i,s,n){var a,o=this.#kt.theme$.getValue().chart.content.summaryMarkWidth;return"full"==s?(a=new kr(t-o/2+.5,r+this.rowHeight/2-i/2,o,i),e.moveTo(a.x,a.y),e.lineTo(a.right,a.y),e.lineTo(a.right,a.middle.y),e.lineTo(a.middle.x,a.bottom),e.lineTo(a.x,a.middle.y),e.lineTo(a.x,a.y)):"left"==n?(a=new kr(t,r+this.rowHeight/2-i/2,o/2,i),e.moveTo(a.x,a.y),e.lineTo(a.right,a.y),e.lineTo(a.right,a.middle.y),e.lineTo(a.x,a.bottom),e.lineTo(a.x,a.y)):(a=new kr(t-o/2+1,r+this.rowHeight/2-i/2,o/2,i),e.moveTo(a.right,a.y),e.lineTo(a.x,a.y),e.lineTo(a.x,a.middle.y),e.lineTo(a.right,a.bottom),e.lineTo(a.right,a.y)),a}#vi(e,t,r,i,s,n,a){e.beginPath();var o=this.#kt.theme$.getValue(),l=o.chart.content.summaryMarkColor1,h=o.chart.content.summaryMarkColor2,d=o.chart.content.summaryMarkProgressColor1,c=o.chart.content.summaryMarkProgressColor2,u=o.chart.content.summaryBorderColor,g=this.#fi(e,t,r,s,n,a);e.fillStyle=i?gi(e,g,d,c):gi(e,g,l,h),e.fill(),u&&(e.strokeStyle=u,e.stroke())}#gi(e,t,r,i,s){var n,a=t.constraintDate,o=Math.floor(s.axis.getX(a,s.visibleStart,s.zoom)),l=s.theme.chart.content,h=r+this.rowHeight/2-i/2-s.baselineOffset-5-2;switch(t.constraintType){case"mso":case"mfo":n=l.constraintFixedColor;break;case"alap":n=l.constraintAlapColor;break;default:n=l.constraintBoundaryColor}e.beginPath(),e.moveTo(o,h),e.lineTo(o+5,h+5),e.lineTo(o,h+10),e.lineTo(o-5,h+5),e.closePath(),e.fillStyle=n,e.fill()}#mi(e,t,r,i,s,n){var a=function(e,t){switch(t){case"name":return e.name;case"resource":if(0===e.resourcesLength)return null;for(var r=[],i=0;i<e.resourcesLength;i++)r.push(e.getResource(i).resource.name);return r.join(", ");case"progress":return null!==e.progress?Math.round(e.progress)+"%":null;case"nameAndProgress":var s=null!==e.progress?" ("+Math.round(e.progress)+"%)":"";return(e.name??"")+s;case"nameAndResource":var n=null;if(e.resourcesLength>0){var a=[];for(i=0;i<e.resourcesLength;i++)a.push(e.getResource(i).resource.name);n=a.join(", ")}return n?(e.name??"")+" — "+n:e.name;default:return null}}(t,s);if(a){var o=this.#kt.theme$.getValue(),l=o.chart.content.taskLabelFont.clone();l.name=o.font.name;var h=e.font;e.font=l.toString(1);var d=o.chart.content.taskLabelPadding,c=e.measureText(a),u=c.width+2*d<=r.width;if("inside"===i||"insideOrRight"===i&&u)e.save(),e.beginPath(),e.rect(r.x,r.y,r.width,r.height),e.clip(),Rr(e,a,new kr(r.x+d,r.y,r.width-2*d,r.height),"left",0,n),e.restore();else if("right"===i||"insideOrRight"===i){var g=o.chart.content.taskLabelOutsideMargin,m=r.right+g,p=$r(e);e.fillStyle=o.chart.content.backgroundColor,e.fillRect(m-2,r.y+(r.height-p)/2-2,c.width+4,p+4),Rr(e,a,new kr(m,r.y,300,r.height),"left",0,n)}e.font=h}}drawTaskHighlightX1X2(e,t,r,i){var s=this.getRowY(t),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.taskHeight,l=n.chart.content.taskBorderRadius,h=Xr(t.color,n.chart.content.taskColors);e.beginPath(),mi(e,new kr(r,s+a/2-o/2,i-r,o),l),e.fillStyle=h.highlightColor,e.fill()}drawTaskProgressHighlight(e,t,r,i){var s=this.getRowY(t),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.taskHeight,l=n.chart.content.taskProgressHeight,h=n.chart.content.taskBorderRadius,d=Xr(t.color,n.chart.content.taskColors);e.beginPath(),mi(e,new kr(r,s+a/2-o/2,i-r,o),h),e.save(),e.clip(),e.beginPath(),e.rect(r,s+a/2-l/2+.5,i-r,l),e.fillStyle=d.progressHighlightColor,e.fill(),e.restore()}drawTaskHighlight(e,t){var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=this.#kt.theme$.getValue(),a=this.getRowY(t);switch(t.type){case"task":for(var o=0;o<t.partsLength;o++){var l=t.getPart(o),h=Math.floor(i.getX(l.startTime,s,r)),d=Math.floor(i.getX(l.endTime,s,r));this.drawTaskHighlightX1X2(e,t,h,d)}break;case"milestone":this.#pi(e,t,a),e.fillStyle=n.chart.content.milestoneHighlightColor,e.fill();break;case"summary":h=Math.floor(i.getX(t.startTime,s,r)),d=Math.floor(i.getX(t.endTime,s,r));e.beginPath();var c=this.#fi(e,h,a,n.chart.content.summaryHeight,n.chart.content.summaryMarkType,"left"),u=this.#fi(e,d,a,n.chart.content.summaryHeight,n.chart.content.summaryMarkType,"right"),g=new kr(c.right,c.y,u.x-c.right,n.chart.content.summaryHeight/2);g.width>0&&e.rect(g.x,g.y,g.width,g.height),e.fillStyle=n.chart.content.summaryHighlightColor,e.fill()}}}function Ci(e,t,r,i,s,n,a){var o=t+r,l=e.getContext("2d"),h=a.chart.content.tooltipFont.clone();h.name=a.font.name,l.font=h.toString(1);var d=function(e,t){var r=$r(e);return 35+r*(t.length+1)+2*(t.length-1)}(l,n),c=null,u=t-d-20;if(u>=a.contentTop+20?c="Above":(u=o+20)+d+20<e.height&&(c="Below"),null!==c){var g=function(e,t){var r=null,i=null;for(let a of t){var s=Mr(e,a.name,200);(null===r||s.measure.width>r)&&(r=s.measure.width);var n=Mr(e,a.value,200);(null===i||n.measure.width>i)&&(i=n.measure.width)}return r=Math.min(100,r),i=Math.min(100,i),{nameWidth:r,valueWidth:i,totalWidth:Math.round(30+r+i+30)}}(l,n);u=Math.floor(u)+.5,i=Math.floor(i)+.5;var m=new kr(i,u,g.totalWidth,d);l.beginPath(),l.rect(i,u,g.totalWidth,d),l.fillStyle=function(e,t,r,i){var s=e.createLinearGradient(t.x,t.y,t.right,t.y);return s.addColorStop(0,r),s.addColorStop(1,i),s}(l,m,a.chart.content.tooltipBackgroundColor1,a.chart.content.tooltipBackgroundColor2),l.fill(),l.strokeStyle=a.chart.content.tooltipBorderColor,l.stroke();var p=g.totalWidth-30,v=i+15,f=h.clone(),y=$r(l),b=new kr(v,u+15,p,y);f.weight=600,l.font=f.toString(1),Rr(l,s,b,"left",0,a.chart.content.tooltipTextColor);var w=u+15+y+5,T=h.clone(),C=$r(l);l.font=T.toString(1);for(let e of n){var x=new kr(v,w,g.nameWidth+1,C);Rr(l,e.name,x,"left",0,a.chart.content.tooltipTextColor);var k=new kr(v+g.nameWidth+30,w,g.valueWidth+1,C);Rr(l,e.value,k,"left",0,a.chart.content.tooltipTextColor),w+=C+2}}}class xi{#kt;constructor(e){this.#kt=e}drawTooltip(e,t,r,i,s){var n=this.#kt.theme$.getValue(),a=null,o=null;for(let e of t){var l=this.#kt.getRowY(e);(null===a||l<a)&&(a=l);var h=l+n.rowHeight;(null===o||h>o)&&(o=h)}Ci(e,a,o-a,r,i,s,n)}}class ki extends Nr{#kt;constructor(e,t){super(e,t),this.#kt=e;var r=new Ti(e),i=new xi(e),s=new oi(e,r,i);this.addSubscription(s.dblClick$.subscribe(e=>{this.#kt.taskDblClick$.next({task:e})})),this.addSubscription(s.contextMenu$.subscribe(e=>{this.#kt.taskContextMenu$.next(e)})),this.addHandler(s),this.addHandler(new fi(e,r,i)),this.addHandler(new hi(e,r,i)),this.addHandler(new bi(e,r,i)),this.addHandler(new wi(e,r,i)),this.addHandler(new ai(e,r,i)),this.addHandler(new li(e,r,i)),this.addHandler(new di(e,r,i)),this.wireHandlers()}onAfterContextMenu(e,t){var r=this.#kt.theme$.getValue().contentTop,i=e.y<r?"header":"content",s=this.#kt.timeline.currentZoom,n=s.axis[0],a=this.#kt.timeline.visibleStartTime$.getValue(),o=Math.floor(e.x/s.baseCellWidth),l=n.getAdd(a,o),h=null;"content"===i&&(h=ii(e,this.#kt,e=>"empty"!==e.type)),this.#kt.chartContextMenu$.next({date:l,area:i,task:h,mouseEvent:t})}}class Ei extends Ir{#kt;#Wr;constructor(e){super(e),this.#kt=e,this.#Wr=new vi(e)}render(e){for(var t=e.getContext("2d"),r=0;r<this.#kt.list.linksLength;r++){var i=this.#kt.list.getLink(r);i.from.hidden||i.to.hidden||this.#yi(i,t)}}#bi(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":return Xr(e.color,t.chart.content.taskColors).linkLineColor;case"milestone":return t.chart.content.linkFromMilestoneLineColor}return null}#wi(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":return Xr(e.color,t.chart.content.taskColors).linkArrowColor;case"milestone":return t.chart.content.linkFromMilestoneArrowColor}return null}#yi(e,t){var r=this.#Wr.getCoords(e),i="rounded"===this.#kt.theme$.getValue().chart.content.linkLineStyle;switch(e.type){case"finishToStart":this.#Ti(e,t,r,i);break;case"startToStart":this.#Ci(e,t,r,i);break;case"finishToFinish":this.#xi(e,t,r,i);break;case"startToFinish":this.#ki(e,t,r,i)}0!==e.lag.value&&this.#Ei(e,t,r)}#Ei(e,t,r){var i=this.#kt.theme$.getValue(),s=(r.x1+r.x2)/2,n=(r.y1+r.y2)/2,a=e.lag.toString();t.font=i.chart.content.tooltipFont.toString(1);var o=t.measureText(a).width;t.fillStyle=i.chart.header.backgroundColor,t.fillRect(s-o/2-2,n-7,o+4,14),t.fillStyle=this.#bi(e.from)??"#000000",t.textAlign="center",t.textBaseline="middle",t.fillText(a,s,n),t.textAlign="start",t.textBaseline="alphabetic"}#Ti(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=r.sign,h=Math.max(a,s+10);this.#Di(t,[{x:s,y:n},{x:h,y:n},{x:h,y:o-l}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#Si(t,h,o,l,e)}#Ci(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=Math.min(s,a)-10;this.#Di(t,[{x:s,y:n},{x:l,y:n},{x:l,y:o},{x:a,y:o}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#$i(t,a,o,1,e)}#xi(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=Math.max(s,a)+10;this.#Di(t,[{x:s,y:n},{x:l,y:n},{x:l,y:o},{x:a,y:o}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#$i(t,a,o,-1,e)}#ki(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=r.sign,h=Math.min(a,s-10);this.#Di(t,[{x:s,y:n},{x:h,y:n},{x:h,y:o-l}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#Si(t,h,o,l,e)}#Di(e,t,r){if(e.beginPath(),e.moveTo(t[0].x,t[0].y),r)for(i=1;i<t.length;i++)i<t.length-1?e.arcTo(t[i].x,t[i].y,t[i+1].x,t[i+1].y,3):e.lineTo(t[i].x,t[i].y);else for(var i=1;i<t.length;i++)e.lineTo(t[i].x,t[i].y)}#Si(e,t,r,i,s){e.beginPath(),e.moveTo(t-5,r-6*i),e.lineTo(t+5,r-6*i),e.lineTo(t,r),e.lineTo(t-5,r-6*i),e.fillStyle=this.#wi(s.from)??"#000000",e.fill()}#$i(e,t,r,i,s){e.beginPath(),e.moveTo(t-6*i,r-5),e.lineTo(t-6*i,r+5),e.lineTo(t,r),e.lineTo(t-6*i,r-5),e.fillStyle=this.#wi(s.from)??"#000000",e.fill()}}class Di{#wt;#Ri;constructor(e,t){this.#wt=e,this.#Ri=t}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue(),i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=r.contentTop,o=this.#Ri(e),l=r.chart.content;if(this.#wt.showTodayLine$.getValue()){var h=Math.floor(s.getX(new Date,n,i));h>=0&&h<=e.width&&this.#Mi(t,h,a,o,l.todayLineColor,l.todayLineWidth,l.todayLineStyle)}var d=this.#wt.markers$.getValue();for(var c of d){var u=Math.floor(s.getX(c.date,n,i));if(u>=0&&u<=e.width){var g=c.color??l.markerLineColor,m=c.lineWidth??l.markerLineWidth,p=c.lineStyle??l.markerLineStyle;this.#Mi(t,u,a,o,g,m,p),c.label&&this.#mi(t,c.label,u,a,g,l)}}}#Mi(e,t,r,i,s,n,a){e.beginPath(),e.moveTo(t+.5,r),e.lineTo(t+.5,i),e.strokeStyle=s,e.lineWidth=n,"dashed"===a?e.setLineDash([5,3]):"dotted"===a&&e.setLineDash([1,3]),e.stroke(),e.setLineDash([]),e.lineWidth=1}#mi(e,t,r,i,s,n){var a=n.markerLabelFont;e.font=a.toString(1);var o=e.measureText(t).width,l=a.size+8,h=o+8,d=r+4,c=i+4;e.fillStyle=s,e.globalAlpha=.15,e.fillRect(d,c,h,l),e.globalAlpha=1;var u=n.markerLabelColor;Rr(e,t,new kr(d+4,c,o,l),"left",0,u)}}class Si extends Ir{#Li;constructor(e){super(e),this.#Li=new Di(e,e=>e.height)}render(e){this.#Li.render(e)}}var $i=20,Ri=[14,51,55,63,54,51,52,63,17,51,46,116,57,53,55],Mi=()=>Ri.map(e=>String.fromCharCode(90^e)).join("");function Li(e="light"){var t=document.createElement("div");t.className="tk-o",t.style.position="absolute",t.style.right="20px",t.style.bottom="20px",t.style.pointerEvents="none",t.style.zIndex="100";var r=t.attachShadow({mode:"closed"});function i(){var t=document.createElement("span");return t.textContent=Mi(),t.style.fontFamily="sans-serif",t.style.fontSize="14px",t.style.fontWeight="bold",t.style.color="dark"===e?"#ffffff":"#000000",t.style.opacity=String(.12),t}var s=i();r.appendChild(s);var n=new MutationObserver(function(){if(t.parentNode){if(!r.contains(s)||s.textContent!==Mi()){try{r.removeChild(s)}catch(e){}s=i(),r.appendChild(s)}}else n.disconnect()});n.observe(r,{childList:!0,subtree:!0,characterData:!0});var a=setInterval(()=>{if(t.isConnected){if(function(e){if(!e.isConnected)return!1;var t=e.getBoundingClientRect();if(0===t.width||0===t.height)return!1;var r=getComputedStyle(e);return!("none"===r.display||"hidden"===r.visibility||parseFloat(r.opacity)<.01)}(t)||(t.style.display="",t.style.visibility="",t.style.opacity="",t.style.position="absolute",t.style.right="20px",t.style.bottom="20px"),!r.contains(s)||s.textContent!==Mi()){try{r.removeChild(s)}catch(e){}s=i(),r.appendChild(s)}}else clearInterval(a)},3e3);return t}function Ii(e,t,r){t<=0||r<=0||(e.save(),e.globalAlpha=.12,e.fillStyle="#000000",e.textAlign="right",e.textBaseline="bottom",e.font="bold 14px sans-serif",e.fillText(Mi(),t-$i,r-$i),e.restore())}class Pi{#wt;#Ii;#Rt;#Mt;#Pi;#Lt;#Ai=!1;#T=new r;#Hi="default";get ctx(){return this.#wt}get canvas(){return this.#Pi}constructor(e,t,r){this.#wt=e,this.#Ii=r,this.#Rt=t,this.#Rt.classList.add("gc-chart"),this.#Pi=document.createElement("canvas"),this.#Pi.classList.add("canvas"),this.#Rt.appendChild(this.#Pi),this.#Lt=document.createElement("div"),this.#Lt.classList.add("inner"),this.#Rt.appendChild(this.#Lt)}init(){if(this.initComponents(this.#Rt,this.#Pi,this.#Lt),this.#Mt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#Jt())}),this.#Mt.observe(this.#Rt),this.#Rt.addEventListener("wheel",e=>(e.preventDefault(),e.stopPropagation(),this.#Vi(e),this.#wt.chartMouseWheel$.next(e),!1)),this.#T.add(i(...this.getRedrawObservables()).subscribe(()=>{this.scheduleRedraw()})),this.#T.add(this.#wt.chartCursor$.subscribe(e=>{"default"!==this.#Hi&&this.#Rt.classList.remove("cursor-"+this.#Hi),"default"!==e&&this.#Rt.classList.add("cursor-"+e),this.#Hi=e})),this.#T.add(this.#wt.dividerResizing$.subscribe(e=>{e?this.#Rt.classList.add("no-pointer-events"):this.#Rt.classList.remove("no-pointer-events")})),document.fonts){var e=this.#wt.theme$.getValue().font.name;document.fonts.load(`1rem "${e}"`).then(()=>{this.scheduleRedraw()})}}canRedraw(){return!0}renderPipeline(e,t,r,i,s){t.render(this.#Pi);var n=this.#wt.theme$.getValue().contentTop,a=this.#Rt.clientHeight;e.save(),e.beginPath(),e.rect(0,n,this.#Pi.width,a-n),e.clip(),r.render(this.#Pi),i.render(this.#Pi),this.#wt.chartBackgroundRedrawn$.next(),s(),e.restore()}scheduleRedraw(){this.#Ai||(this.#Ai=!0,requestAnimationFrame(()=>{this.#Ai=!1,this.#Bi()}))}#Bi(){if(this.canRedraw()){var e;try{e=this.#Pi.getContext("2d")}catch{}e&&(e.clearRect(0,0,this.#Pi.width,this.#Pi.height),this.onRedraw(e),Vt().showWatermarkFor(this.#Ii)&&Ii(e,this.#Pi.width,this.#Pi.height),this.#wt.chartRedrawn$.next())}}#Fi(){var e=this.#Rt.offsetWidth,t=this.#Rt.offsetHeight;this.#Pi.width=e,this.#Pi.height=t,this.#Pi.style.width=e+"px",this.#Pi.style.height=t+"px"}#Jt(){this.#Fi(),this.onResize(),this.#Bi()}onResize(){}#Vi(e){e.ctrlKey&&(e.deltaY>0?this.#wt.timeline.zoomOut():this.#wt.timeline.zoomIn())}get chartElement(){return this.#Rt}get chartWidth(){return this.#Rt.offsetWidth}destroy(){this.#T.unsubscribe(),this.#Mt.disconnect(),this.destroyComponents()}}class Ai extends Pi{#$t;#zi;#Li;#Vr;#Oi;#Ni;#pr;constructor(e,t){super(e,t,"gantt"),this.init()}initComponents(e,t,r){this.#$t=new Pr(this.ctx),this.#zi=new Cr(this.ctx),this.#Li=new Si(this.ctx),this.#Vr=new Ti(this.ctx),this.#Oi=new Ei(this.ctx),this.#Ni=new Hr(this.ctx,e,t,r),this.#pr=new ki(this.ctx,e),this.#pr.init(e,t)}getRedrawObservables(){var e=this.ctx;return[e.timeline.zoomIndex$,e.timeline.visibleStartTime$,e.sheetScrollTop$,e.chartTaskHover$,e.list.taskChanged$,e.list.taskRemoved$,e.list.linkAdded$,e.list.linkRemoved$,e.list.taskCollapsedChanged$,e.list.evaluatingDependenciesFinished$,e.list.complexOperationFinished$,e.sheetRowMouseOver$,e.sheetSelectedTasks$,e.settings.changed$,e.showGridLines$,e.showCriticalPath$,e.showBaseline$,e.showTodayLine$,e.markers$,this.#pr.redraw$]}canRedraw(){return!this.ctx.list.evaluatingDependencies}onRedraw(e){this.renderPipeline(e,this.#$t,this.#zi,this.#Li,()=>{this.#Oi.render(this.canvas),this.#Vr.render(this.canvas)})}onResize(){this.#Ni.handleResize()}destroyComponents(){this.#Ni.destroy(),this.#pr.destroy()}}class Hi{#g;#Pe;#Wi=[];zoomIndex$=new t(0);visibleStartTime$=new t(Ft(-1));get currentZoom(){return this.#Wi[this.zoomIndex$.getValue()]}constructor(e,t){this.#g=e,this.#Pe=t,this.assignZooms(this.createDefaultZooms(),4)}createDefaultZooms(){var e=this.#Pe,t=()=>e.getValue().language,r=new Bi("minute",15,this.#g,e=>String(e.getMinutes())),i=new Bi("hour",1,this.#g,e=>String(e.getHours())),s=new Bi("hour",6,this.#g,e=>String(e.getHours())),n=new Bi("hour",1,this.#g,e=>Zt(e,t(),{hour:"numeric",hour12:!0})+", "+Zt(e,t(),{month:"short",day:"numeric"})),a=new Bi("day",1,this.#g,e=>Zt(e,t(),{weekday:"narrow"})),o=new Bi("day",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric",year:"numeric"})),l=new Bi("week",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric",year:"numeric"})+", W "+Gt(e)),h=new Bi("week",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric"})+", W "+Gt(e)),d=new Bi("week",1,this.#g,e=>"W "+Gt(e)),c=new Bi("month",1,this.#g,e=>Zt(e,t(),{month:"short",year:"numeric"})),u=new Bi("month",1,this.#g,e=>Zt(e,t(),{month:"short"})),g=new Bi("quarter",1,this.#g,e=>Zt(e,t(),{month:"short"})),m=new Bi("year",1,this.#g,e=>String(e.getFullYear())),p=[];return p.push(new Vi([r,n],50)),p.push(new Vi([i,o],28)),p.push(new Vi([s,o],50)),p.push(new Vi([a,l],60)),p.push(new Vi([a,l],28)),p.push(new Vi([h,c],110)),p.push(new Vi([d,c],50)),p.push(new Vi([u,m],70)),p.push(new Vi([g,m],60)),p}assignZooms(e,t){if(0==e.length)throw new Error("No zooms assigned");if(t<0||t>=e.length)throw new Error("Default zoom index is out of range");this.#Wi=e,this.zoomIndex$.next(t)}zoomIn(){return this.zoomIndex$.getValue()>0&&(this.zoomIndex$.next(this.zoomIndex$.getValue()-1),!0)}zoomOut(){return this.zoomIndex$.getValue()<this.#Wi.length-1&&(this.zoomIndex$.next(this.zoomIndex$.getValue()+1),!0)}findBestZoomIndex(e,t,r){for(var i=0;i<this.#Wi.length;i++){var s=this.#Wi[i];if(s.axis[0].getCellStartX(t,e,s)<=r)return i}return this.#Wi.length-1}}class Vi{axis;baseCellWidth;constructor(e,t){this.axis=e,this.baseCellWidth=t}}class Bi{#g;unit;unitsPerCell;formatter;constructor(e,t,r,i){this.#g=r,this.unit=e,this.unitsPerCell=t,this.formatter=i}getCellStartTime(e){var t=new Date(e);switch(this.unit){case"minute":var r=Math.floor(e.getMinutes()/this.unitsPerCell)*this.unitsPerCell;return t.setHours(t.getHours(),r,0,0),t;case"hour":var i=Math.floor(t.getHours()/this.unitsPerCell)*this.unitsPerCell;return t.setHours(i,0,0,0),t;case"day":return t.setHours(0,0,0,0),t;case"week":return this.#g.getValue().getStartOfWeek(t);case"month":return t.setHours(0,0,0,0),t.setDate(1),t;case"quarter":t.setHours(0,0,0,0),t.setDate(1);for(var s=[0,3,6,9];!s.includes(t.getMonth());)t.setMonth(t.getMonth()-1);return t;case"half":t.setHours(0,0,0,0),t.setDate(1);for(var n=[0,6];!n.includes(t.getMonth());)t.setMonth(t.getMonth()-1);return t;case"year":return t.setHours(0,0,0,0),t.setDate(1),t.setMonth(0),t}}#Ui(e,t,r){var i=(e.getTime()-t.getTime())/6e4;switch(r.unit){case"minute":return i/r.unitsPerCell;case"hour":return i/60/r.unitsPerCell;case"day":return i/1440/r.unitsPerCell;case"week":return i/10080/r.unitsPerCell;case"month":return Xt(t,e);case"quarter":return Xt(t,e)/3;case"half":return Xt(t,e)/6;case"year":return Xt(t,e)/12}}getCellStartX(e,t,r){var i=this.getCellStartTime(e),s=this.#Ui(i,t,r.axis[0]);return Math.round(r.baseCellWidth*s)}getAdd(e,t){e=new Date(e);switch(this.unit){case"minute":return e.setMinutes(e.getMinutes()+t*this.unitsPerCell),e;case"hour":return e.setHours(e.getHours()+t*this.unitsPerCell),e;case"day":return e.setDate(e.getDate()+t),e;case"week":return e.setDate(e.getDate()+7*t),e;case"month":return e.setMonth(e.getMonth()+t),e;case"quarter":return e.setMonth(e.getMonth()+3*t),e;case"half":return e.setMonth(e.getMonth()+6*t),e;case"year":return e.setMonth(e.getMonth()+12*t),e}}getX(e,t,r){var i=this.getCellStartTime(e),s=this.getCellStartX(e,t,r),n=this.getAdd(i,1);if("minute"==this.unit||"hour"==this.unit)return s+(e.getTime()-i.getTime())/(n.getTime()-i.getTime())*r.baseCellWidth;var a=this.#g.getValue().getHoursPerDay(),o=1;switch(this.unit){case"day":o=1;break;case"week":o=7;break;case"month":o=this.#ji(e);break;case"quarter":o=this.#Xi(e);break;case"half":o=this.#Yi(e);break;case"year":o=this.#Ki(e)}var l=r.baseCellWidth/o,h=new Date(e);h.setHours(0,0,0,0);var d=this.#g.getValue().getHoursBetween(h,e);return s+l*this.#Zi(i,h)+d/a*l}#ji(e){const t=e.getFullYear(),r=e.getMonth();return new Date(t,r+1,0).getDate()}#Xi(e){const t=e.getFullYear(),r=e.getMonth(),i=3*Math.floor(r/3),s=i+2;let n=0;for(let e=i;e<=s;e++)n+=new Date(t,e+1,0).getDate();return n}#Yi(e){const t=e.getFullYear(),r=e.getMonth()<6?0:6,i=r+5;let s=0;for(let e=r;e<=i;e++)s+=new Date(t,e+1,0).getDate();return s}#Ki(e){const t=e.getFullYear();return t%4==0&&t%100!=0||t%400==0?366:365}#Zi(e,t){const r=e.getTime(),i=t.getTime(),s=Math.abs(r-i);return Math.ceil(s/864e5)}}class Fi{}class zi extends Fi{redraw(e,t,r){e.innerText=t(r)}}class Oi extends zi{#kt;constructor(e){super(),this.#kt=e}#Gi(e){var t=this.#kt.theme$.getValue().rowHeight;e.style.height=t+"px"}#qi(e,t){e.style.width=t+"px"}redraw(e,t,r){for(;e.firstChild;)e.removeChild(e.firstChild);var i=r.level;if("empty"==r.type){var s=this.#kt.list.getNextNonEmpty(r);s&&(i=s.level)}e.classList.add("tree-with-name"),this.#Gi(e);var n=30*i+12,a=window.document.createElement("span");a.classList.add("tree"),this.#qi(a,n),e.appendChild(a),"summary"==r.type&&a.appendChild(this.#_i(r));var o=window.document.createElement("span");o.classList.add("name"),e.appendChild(o),o.innerText=t(r)}#_i(e){var t=window.document.createElement("div");t.classList.add("gc-tree-icon"),t.classList.add(e.collapsed?"collapsed":"expanded");var r=window.document.createElement("div");return r.classList.add("tree-icon"),t.appendChild(r),t.addEventListener("mousedown",t=>{0==t.button&&(t.stopPropagation(),e.toggleCollapsed())}),t}}class Ni{context=null;#Ji;#Qi;invalidValue$=new e;editEnded$=new e;cell;item=null;#es=null;get columnCode(){return this.#es?.code??null}constructor(e,t){this.#Ji=e,this.#Qi=t}init(e){this.context=e}beginEdit(e,t,r){this.#es=e,this.cell=t,this.item=r,this.beginEditInternal(t,r,this.#Ji(r)),this.context.cellEditing$.next({cell:t,editor:e.editor})}endEdit(e,t="none"){try{this.#Qi(this.item,e)}catch{return this.invalidValue$.next(),void this.cancelEdit()}this.context.cellEditing$.next(null),this.#ts(),this.editEnded$.next(t)}cancelEdit(){this.context.cellEditing$.next(null),this.#ts(),this.editEnded$.next("none")}#ts(){for(;this.cell.firstChild;)this.cell.removeChild(this.cell.firstChild);this.cell.style.backgroundColor=null,this.#es.renderer.redraw(this.cell,this.#es.valueFormatter,this.item)}}class Wi extends Ni{#rs;#is=!1;beginEdit$=new e;beginEdit(e,t,r){for(this.#is=!1,t.style.backgroundColor="white";t.firstChild;)t.removeChild(t.firstChild);super.beginEdit(e,t,r)}beginEditInternal(e,t,r){var i=document.createElement("input");i.classList.add("editor"),i.value=this.formatValue(r),i.addEventListener("mousedown",e=>{e.stopPropagation()}),i.addEventListener("mouseup",e=>{e.stopPropagation()}),i.addEventListener("input",e=>{this.#is=!0}),this.onInputCreated(i),e.appendChild(i),setTimeout(()=>{i.focus()},0),this.#ss(i),this.#rs=i,this.beginEdit$.next({item:this.item,input:i,columnCode:this.columnCode,editor:this})}onInputCreated(e){}#ns(e="none"){var t=this.tryParseValue(this.#rs.value);return null!==t?(this.endEdit(t,e),!0):(this.invalidValue$.next(),!1)}#ss(e){e.addEventListener("keydown",e=>{"Enter"===e.key?(e.stopPropagation(),this.#ns("down")):"Escape"===e.key?(e.stopPropagation(),this.cancelEdit()):"Tab"===e.key&&(e.preventDefault(),e.stopPropagation(),this.#ns(e.shiftKey?"left":"right"))})}endEditIfModifiedElseCancel(){this.#is&&this.#ns()||this.cancelEdit()}}class Ui extends Wi{formatValue(e){return e}tryParseValue(e){return e??""}}class ji extends Wi{onInputCreated(e){e.addEventListener("keydown",e=>{"ArrowLeft"!==e.key&&"ArrowRight"!==e.key||e.stopPropagation()})}formatValue(e){return Kt(null===e?this.getDefaultDate():e,this.getLocale())}getDefaultDate(){return Bt()}getLocale(){return"en-US"}tryParseValue(e){return function(e,t){if(!e||!e.trim())return null;var r=e.trim().match(/\d+/g);if(!r||r.length<3)return null;for(var i,s,n,a=new Intl.DateTimeFormat(t).formatToParts(new Date(2e3,0,15)).filter(e=>"day"===e.type||"month"===e.type||"year"===e.type).map(e=>e.type),o=0;o<a.length&&o<r.length;o++){var l=parseInt(r[o],10);switch(a[o]){case"day":i=l;break;case"month":s=l;break;case"year":n=l}}if(void 0===i||void 0===s||void 0===n)return null;n<100&&(n+=2e3);var h=new Date(n,s-1,i);return h.setHours(0,0,0,0),h.getDate()!==i||h.getMonth()!==s-1||h.getFullYear()!==n?null:h}(e,this.getLocale())}}class Xi extends Wi{#kt=null;constructor(){super(e=>e.length,(e,t)=>e.length=t)}initWithGanttContext(e){this.#kt=e}formatValue(e){if(null===e){var t=this.#kt?.calendar.defaultLengthUnit??"day";return new rr(t,1).toString()}return e.toString()}tryParseValue(e){return rr.tryParse(e)}}class Yi extends Wi{onInputCreated(e){e.type="number",e.min="0",e.max="100"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){return parseInt(e)}}class Ki extends Ni{beginEdit$=new e;cancelEdit$=new e;endEdit$=new e;constructor(){super(()=>{},()=>{}),this.cancelEdit$.subscribe(()=>{this.cancelEdit()}),this.endEdit$.subscribe(()=>{this.endEdit(null)})}beginEditInternal(e,t,r){this.beginEdit$.next({item:t,columnCode:this.columnCode,cancelEdit$:this.cancelEdit$,endEdit$:this.endEdit$})}endEditIfModifiedElseCancel(){this.cancelEdit()}}class Zi extends zi{#kt;constructor(e){super(),this.#kt=e}redraw(e,t,r){if(e.innerText="",e.classList.add("resources"),"task"==r.type)for(var i=0;i<r.resourcesLength;i++){var s=r.getResource(i),n=document.createElement("div");if(n.classList.add("wrapper"),100!=s.capacity){var a=document.createElement("div");a.classList.add("capacity"),a.innerText=s.formatCapacity(),n.appendChild(a)}var o=document.createElement("div");o.classList.add("avatar"),s.resource.avatarIconUrl?(o.style.backgroundImage=`url(${s.resource.avatarIconUrl})`,o.style.backgroundSize="cover"):(o.style.backgroundColor=qi(s.resource.name),o.innerText=_i(s.resource.name)),o.title=s.resource.name,n.appendChild(o),e.appendChild(n)}}}const Gi=["#66C5CC","#F6CF71","#F89C74","#DCB0F2","#87C55F","#9EB9F3","#FE88B1","#C9DB74","#8BE0A4","#B497E7","#B3B3B3"];function qi(e){var t=function(e){let t=0;for(let r=0;r<e.length;r++)t=(31*t+e.charCodeAt(r))%2**32;return t}(e);return Gi[t%Gi.length]}function _i(e){if(!e)return"";const t=e.trim().split(/\s+/);if(1===t.length)return t[0].charAt(0).toUpperCase();return`${t[0].charAt(0).toUpperCase()}${t[1].charAt(0).toUpperCase()}`}class Ji extends Wi{constructor(){super(e=>e.work,(e,t)=>e.work=t)}formatValue(e){return null===e?new ar("day",1).toString():e.toString()}tryParseValue(e){return ar.tryParse(e)}}class Qi extends Wi{onInputCreated(e){e.type="number",e.min="0",e.max="100000000000",e.step="0.01"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){return parseFloat(e)}}class es extends zi{#kt;constructor(e){super(),this.#kt=e}addIconToCell(e,t,r){var i=document.createElement("span");i.classList.add("icon"),i.style.color="var(--gc-tree-icon-color, #606060)",i.style.display="inline-flex",i.style.verticalAlign="middle",i.style.marginRight="4px",i.innerHTML=ts[t],i.title=r,e.appendChild(i)}redraw(e,t,r){if(e.innerText="","asap"!==r.constraintType){var i=this.#kt.locale$.getValue(),s=i.constraints[r.constraintType],n=r.constraintDate?`${s}: ${r.constraintDate.toLocaleDateString(i.language)}`:s;this.addIconToCell(e,"constraint",n)}r.note&&this.addIconToCell(e,"note",r.note);var a=r.warnings.join("\n\n");a&&this.addIconToCell(e,"warning",a)}}const ts={note:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>',warning:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>',constraint:'<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M16 12V4h1V2H7v2h1v8l-2 2v2h5v6l1 1 1-1v-6h5v-2l-2-2z"/></svg>'},rs="#606060";function is(e,t,r,i,s,n){var a=t+(i-18)/2,o=r+(s-18)/2;e.save(),e.translate(a,o),e.scale(.75,.75),e.strokeStyle=n,e.lineWidth=1.5,e.lineCap="round",e.lineJoin="round",e.save(),e.translate(12,1.5),e.rotate(Math.PI/4),e.beginPath(),function(e,t,r,i,s,n){e.moveTo(t+n,r),e.lineTo(t+i-n,r),e.arcTo(t+i,r,t+i,r+n,n),e.lineTo(t+i,r+s-n),e.arcTo(t+i,r+s,t+i-n,r+s,n),e.lineTo(t+n,r+s),e.arcTo(t,r+s,t,r+s-n,n),e.lineTo(t,r+n),e.arcTo(t,r,t+n,r,n),e.closePath()}(e,0,0,14.5,14.5,3),e.stroke(),e.restore(),e.beginPath(),e.moveTo(12,16),e.lineTo(12,11),e.stroke(),e.beginPath(),e.moveTo(12,8),e.lineTo(12.01,8),e.stroke(),e.restore()}function ss(e,t,r,i,s,n){var a=i+(n-14)/2,o=r;"asap"!==t.constraintType&&(ns(e,o,a,"constraint"),o+=18),t.note&&(ns(e,o,a,"note"),o+=18),t.warnings?.length>0&&ns(e,o,a,"warning")}function ns(e,t,r,i){var s=14/24;if(e.save(),e.translate(t,r),e.scale(s,s),"constraint"===i){var n=new Path2D("M16 12V4h1V2H7v2h1v8l-2 2v2h5v6l1 1 1-1v-6h5v-2l-2-2z");e.fillStyle=rs,e.fill(n)}else"note"===i?(e.strokeStyle=rs,e.lineWidth=2,e.lineCap="round",e.lineJoin="round",e.stroke(new Path2D("M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z")),e.beginPath(),e.moveTo(14,2),e.lineTo(14,8),e.lineTo(20,8),e.stroke(),e.beginPath(),e.moveTo(16,13),e.lineTo(8,13),e.stroke(),e.beginPath(),e.moveTo(16,17),e.lineTo(8,17),e.stroke()):(e.strokeStyle=rs,e.lineWidth=2,e.lineCap="round",e.lineJoin="round",e.stroke(new Path2D("M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z")),e.beginPath(),e.moveTo(12,9),e.lineTo(12,13),e.stroke(),e.beginPath(),e.moveTo(12,17),e.lineTo(12.01,17),e.stroke());e.restore()}class as{#as;get code(){return this.#as}#b;get name(){return this.#b}set name(e){this.#b=e}#os;get width(){return this.#os}set width(e){e!=this.#os&&(this.#os=e,this.#f())}#ls;get minWidth(){return this.#ls}set minWidth(e){e!=this.#ls&&(this.#ls=e,this.#f())}#hs;get valueFormatter(){return this.#hs}#ds;get renderer(){return this.#ds}#cs=null;get align(){return this.#cs}#us=null;get editor(){return this.#us}#gs;get isEditable(){return this.#gs}#ms=!0;get isVisible(){return this.#ms}set isVisible(e){e!=this.#ms&&(this.#ms=e,this.#f())}#ps=null;get tooltip(){return this.#ps}set tooltip(e){this.#ps=e}#vs=null;get headerHtml(){return this.#vs}set headerHtml(e){this.#vs=e}#fs=null;get exportHeaderRenderer(){return this.#fs}set exportHeaderRenderer(e){this.#fs=e}#ys=null;get exportCellRenderer(){return this.#ys}set exportCellRenderer(e){this.#ys=e}#bs=!1;get isCustom(){return this.#bs}set isCustom(e){this.#bs=e}changed$=new e;constructor(e,t,r,i,s,n,a,o,l,h){this.#as=e,this.#b=t,this.#hs=r,this.#os=a??100,this.#ls=o??100,this.#ds=i,this.#us=s,this.#gs=n,this.#cs=l??null,this.#ps=h??null}#f(){this.changed$.next(this)}}class os extends Wi{onInputCreated(e){e.type="number"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){var t=parseInt(e);return isNaN(t)?null:t}}class ls extends Wi{onInputCreated(e){e.type="text"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){var t=parseFloat(e);return isNaN(t)?null:t}}class hs{context;content;host;#ws=null;constructor(e,t,r){this.context=e,this.content=t,this.host=r}get focusedCell(){return this.context.focusedCell$.getValue()}onCellMousedown(e,t,r){var i=this.host.getColumns().indexOf(t);this.#Ts(r,i,e),this.content.focus()}onCellDblClick(){this.host.beginEdit()}onEditEnded(e){var t=this.focusedCell;if(t){switch(e){case"down":var r=this.context.dataSource.getNextVisible(t.item);r?this.#Cs(r,t.columnIndex):this.#xs();break;case"up":var i=this.context.dataSource.getPreviousVisible(t.item);i?this.#Cs(i,t.columnIndex):this.#xs();break;case"right":this.#ks(t);break;case"left":this.#Es(t);break;default:this.#xs()}this.content.focus()}}onKeyDown(e){if(!this.context.cellEditing$.getValue())if("Delete"!==e.key&&"Backspace"!==e.key){var t=this.focusedCell;if(t&&!this.handleCustomKeyDown(e,t))switch(e.key){case"Enter":case"F2":e.preventDefault(),this.host.beginEdit();break;case"Escape":e.preventDefault(),this.clearFocus();break;case"ArrowUp":e.preventDefault();var r=this.context.dataSource.getPreviousVisible(t.item);r&&this.#Cs(r,t.columnIndex);break;case"ArrowDown":e.preventDefault();var i=this.context.dataSource.getNextVisible(t.item);i&&this.#Cs(i,t.columnIndex);break;case"ArrowLeft":e.preventDefault();var s=this.#Ds(t.columnIndex);null!==s&&this.#Cs(t.item,s);break;case"ArrowRight":e.preventDefault();var n=this.#Ss(t.columnIndex);null!==n&&this.#Cs(t.item,n);break;case"Tab":e.preventDefault(),e.shiftKey?this.#Es(t):this.#ks(t);break;case"Home":e.preventDefault();var a=this.#$s();null!==a&&this.#Cs(t.item,a);break;case"End":e.preventDefault();var o=this.#Rs();null!==o&&this.#Cs(t.item,o);break;case"Insert":if(!this.context.canEdit)break;e.preventDefault(),this.host.insertItemAfterFocused();break;default:if(!this.context.canEdit)break;1!==e.key.length||e.ctrlKey||e.metaKey||e.altKey||this.host.beginEdit(e.key)}}else{if(!this.context.canEdit)return;this.context.selectedItems$.getValue().length>0&&(e.preventDefault(),this.host.deleteSelectedItems())}}handleCustomKeyDown(e,t){return!1}setFocus(e,t){this.#Cs(e,t)}clearFocus(){this.#ws&&(this.#ws.classList.remove("focused"),this.#ws=null),this.context.focusedCell$.next(null)}#Ts(e,t,r){this.#ws&&this.#ws.classList.remove("focused"),this.#ws=r,r.classList.add("focused"),this.context.focusedCell$.next({item:e,columnIndex:t})}#Cs(e,t){var r=this.host.getItemRow(e),i=r.children[t+1];this.#Ts(e,t,i),this.#Ms(r,i)}#xs(){this.focusedCell&&this.#ws&&(this.#ws.classList.add("focused"),this.content.focus())}#Ms(e,t){var r=this.content.getBoundingClientRect(),i=e.getBoundingClientRect(),s=r.top,n=r.bottom;i.top<s?this.content.scrollTop-=s-i.top:i.bottom>n&&(this.content.scrollTop+=i.bottom-n);var a=t.getBoundingClientRect(),o=e.children[0].getBoundingClientRect().width,l=r.left+o,h=r.right;a.left<l?this.content.scrollLeft-=l-a.left:a.right>h&&(this.content.scrollLeft+=a.right-h)}#ks(e){var t=this.#Ss(e.columnIndex);if(null!==t)this.#Cs(e.item,t);else{var r=this.context.dataSource.getNextVisible(e.item),i=this.#$s();if(null===i)return;r||(r=this.context.dataSource.addEmptyItem()),this.#Cs(r,i)}}#Es(e){var t=this.#Ds(e.columnIndex);if(null!==t)this.#Cs(e.item,t);else{var r=this.context.dataSource.getPreviousVisible(e.item),i=this.#Rs();r&&null!==i&&this.#Cs(r,i)}}#Ss(e){for(var t=this.host.getColumns(),r=e+1;r<t.length;r++)if(t[r].isVisible)return r;return null}#Ds(e){for(var t=this.host.getColumns(),r=e-1;r>=0;r--)if(t[r].isVisible)return r;return null}#$s(){for(var e=this.host.getColumns(),t=0;t<e.length;t++)if(e[t].isVisible)return t;return null}#Rs(){for(var e=this.host.getColumns(),t=e.length-1;t>=0;t--)if(e[t].isVisible)return t;return null}}class ds{#Ls;#Is;#T=new r;#Ps=!1;#As=null;#Hs=[];get items(){return this.#Hs}changed$;rowContextMenu$;constructor(t,r){this.#Ls=t,this.#Is=r,this.changed$=new e,this.rowContextMenu$=new e,this.#T.add(t.rowAdded$.subscribe(e=>{this.#Vs(e.item,e.row)})),this.#T.add(t.dataSource.itemRemoved$.subscribe(e=>{this.#Bs(e.item)}))}destroy(){this.#T.unsubscribe()}#Vs(e,t){var r=t.children[0];t.addEventListener("mousedown",async r=>{this.#Fs(e,t,r)},!1),t.addEventListener("contextmenu",async r=>{this.#zs(e,t,r)},!1),r.addEventListener("mousedown",async r=>{this.#Os(e,t,r)},!1),r.addEventListener("mouseup",async r=>{this.#Ns(e,t)},!1),r.addEventListener("mousemove",async t=>{this.#Ws(e)},!1)}#Bs(e){this.#Hs=this.#Hs.filter(t=>t!=e)}#Fs(e,t,r){0==r.button&&(r.ctrlKey||this.clear(),this.#Us(e,t)&&this.changed$.next())}#Os(e,t,r){this.#Ps=!0,this.#As=this.#Ls.dataSource.indexOf(e);var i=r.ctrlKey;0==r.button&&(i||this.clear(),this.#Us(e,t)&&this.changed$.next())}#zs(e,t,r){this.#Hs.includes(e)||(this.clear(),this.#Us(e,t)&&this.changed$.next()),this.rowContextMenu$.next({selectedItems:[...this.#Hs],mouseEvent:r})}#Ns(e,t){this.#Ps=!1}#Ws(e){if(this.#Ps)for(var t=this.#Ls.dataSource.indexOf(e),r=Math.min(this.#As,t);r<=Math.max(this.#As,t);r++){var i=this.#Is.children[r];this.#Us(this.#Ls.dataSource.getItem(r),i)}}#Us(e,t){return!this.#Hs.includes(e)&&(t.classList.add("selected"),this.#Hs.push(e),!0)}cancelRangeSelection(){this.#Ps=!1}clear(){for(var e=0;e<this.#Hs.length;e++){this.#js(this.#Hs[e]).classList.remove("selected")}this.#Hs=[]}updateWithCurrentSelection(){for(var e=0;e<this.#Ls.dataSource.length;e++){var t=this.#Ls.dataSource.getItem(e),r=this.#js(t);this.#Hs.includes(t)?r.classList.add("selected"):r.classList.remove("selected")}}#js(e){var t=this.#Ls.dataSource.indexOf(e);return this.#Is.children[t]}}class cs extends Vr{#Ls;#Xs;#Ys=[];#Ks;#Is;#Zs;#Gs=null;#qs;#_s=null;#Js=null;#Qs=!1;#en;#T=new r;columnsChanged$=new e;get tableContext(){return this.#Ls}get contentElement(){return this.#Is}get headerElement(){return this.#Ks}get navigation(){return this.#en}get selection(){return this.#qs}get rowsContainer(){return this.#Zs}constructor(e,t){super(),this.startWatching(t),this.#Ls=e,this.#Xs=t,this.#Qs=!0,this.#Xs.classList.add("gc-sheet"),this.#Ks=window.document.createElement("div"),this.#Ks.classList.add("header");var r=window.document.createElement("div");r.classList.add("row-header"),r.classList.add("cell"),this.#Ks.appendChild(r),this.#Is=window.document.createElement("div"),this.#Is.classList.add("content"),this.#Is.setAttribute("tabindex","0"),this.#Is.addEventListener("scroll",()=>{this.#tn()}),this.#Is.addEventListener("mousedown",()=>{this.#rn()}),this.#Is.addEventListener("contextmenu",e=>{this.#in(e)}),this.#Is.addEventListener("keydown",e=>{this.#en.onKeyDown(e)}),this.#Xs.appendChild(this.#Is),this.#Is.appendChild(this.#Ks),this.#Zs=window.document.createElement("div"),this.#Zs.classList.add("rows"),this.#Is.appendChild(this.#Zs),this.#en=this.createKeyboardNavigation(),this.#qs=new ds(this.#Ls,this.#Zs),this.#T.add(this.#qs.changed$.subscribe(()=>{this.#sn()})),this.#T.add(this.#qs.rowContextMenu$.subscribe(e=>{this.#nn(e)})),this.#T.add(e.dataSource.itemAdded$.subscribe(e=>{this.onItemAdded(e.item)})),this.#T.add(e.dataSource.itemChanged$.subscribe(e=>{this.onItemChanged(e.item)})),this.#T.add(e.dataSource.itemRemoved$.subscribe(e=>{this.onItemRemoved(e.item)})),this.#T.add(e.dataSource.complexOperationFinished$.subscribe(()=>{this.onComplexOperationFinished()})),this.addDocumentListener("mousemove",this.#an),this.addDocumentListener("mouseup",this.#on);for(var i=0;i<e.dataSource.length;i++){var s=e.dataSource.getItem(i);this.#ln(s,i),this.redrawItemRow(s)}this.#Qs=!1}createKeyboardNavigation(){return new hs(this.#Ls,this.#Is,this)}getColumns(){return this.#Ys}getItemRow(e){var t=this.#Ls.dataSource.indexOf(e);return this.#Zs.children[t]}beginEdit(e){if(this.#Ls.canEdit){var t=this.#en.focusedCell;if(t){var r=this.#Ys[t.columnIndex],i=this.getItemRow(t.item).children[t.columnIndex+1];r.isEditable(t.item)&&r.editor&&(i.classList.remove("focused"),setTimeout(()=>{r.editor.beginEdit(r,i,t.item);var s=document.createElement("div");if(s.classList.add("highlight"),i.appendChild(s),e&&r.editor instanceof Wi){var n=i.querySelector("input.editor");n&&(n.value=e,n.dispatchEvent(new Event("input")))}},10))}}}deleteSelectedItems(){this.#en.clearFocus();var e=this.#Ls.selectedItems$.getValue();this.#Ls.dataSource.removeItems([...e])}insertItemAfterFocused(){var e=this.#en.focusedCell;if(e){var t=this.#Ls.dataSource.indexOf(e.item),r=this.#Ls.dataSource.insertEmptyItem(t+1);this.#en.setFocus(r,e.columnIndex)}}addColumn(e){this.#Ys.push(e);var t=window.document.createElement("div");t.classList.add("cell"),e.isVisible||t.classList.add("hidden"),t.style.width=e.width+"px",e.headerHtml?(t.innerHTML=e.headerHtml,t.style.justifyContent="center"):t.innerText=e.name,t.addEventListener("contextmenu",t=>{this.#hn(e,t)}),t.addEventListener("mousedown",t=>{this.#dn(e,t)}),this.#Ks.appendChild(t),e.tooltip&&(t.title=e.tooltip,t.classList.add("dotted"));var r=window.document.createElement("div");r.classList.add("resizer"),r.addEventListener("mousedown",t=>{this.#cn(e,t)}),t.appendChild(r),e.editor&&(e.editor.init(this.#Ls),e.editor instanceof Ki&&this.#T.add(e.editor.beginEdit$.subscribe(e=>{this.#Ls.cellDialogEdit$.next(e)})),e.editor instanceof Wi&&this.#T.add(e.editor.beginEdit$.subscribe(e=>{this.#Ls.cellInputEdit$.next(e)})),this.#T.add(e.editor.invalidValue$.subscribe(()=>{this.#Ls.cellInvalidValue$.next()})),this.#T.add(e.editor.editEnded$.subscribe(e=>{this.#en.onEditEnded(e)}))),this.#T.add(e.changed$.subscribe(e=>{this.#un(e)}));for(var i=this.#Ys.indexOf(e),s=0;s<this.#Zs.children.length;s++){var n=this.#Zs.children[s],a=this.#Ls.dataSource.getItem(s);this.#gn(n,a,i)}this.#mn(),this.#Qs||(this.redrawAll(),this.columnsChanged$.next())}get columnsLength(){return this.#Ys.length}getColumn(e){return this.#Ys[e]}getColumnByCode(e){return this.#Ys.find(t=>t.code==e)??null}#un(e){this.#pn(e,e.width),this.#vn(e),this.#mn(),this.columnsChanged$.next()}#fn(e,t){t?e.classList.remove("hidden"):e.classList.add("hidden")}updateColumnVisibility(e){this.#vn(e)}#vn(e){var t=this.#Ys.indexOf(e),r=this.#Ks.children[t+1];this.#fn(r,e.isVisible);for(var i=0;i<this.#Zs.children.length;i++){var s=this.#Zs.children[i].children[t+1];this.#fn(s,e.isVisible)}}#mn(){var e=this.getColumnsContentWidth()+"px";this.#Ks.style.width=e,this.#Zs.style.width=e;for(var t=0;t<this.#Zs.children.length;t++){this.#Zs.children[t].style.width=e}}#pn(e,t){var r=this.#Ys.indexOf(e);this.#Ks.children[r+1].style.width=t+"px",e.width=t;for(var i=0;i<this.#Zs.children.length;i++){this.#Zs.children[i].children[r+1].style.width=t+"px"}}#an(e){if(this.#_s){var t=e.clientX-this.#_s.lastX;this.#_s.lastX=e.clientX;var r=Math.max(this.#_s.column.width+t,this.#_s.column.minWidth);this.#pn(this.#_s.column,r)}else if(this.#Js){t=Math.abs(e.clientX-this.#Js.startX);!this.#Js.isReordering&&t>5&&(this.#Js.isReordering=!0,this.#Js.headerCell.classList.add("dragging"),this.#Ks.classList.add("reordering"),this.#yn(),this.#bn(e.clientX,e.clientY)),this.#Js.isReordering&&(this.#wn(e.clientX),this.#Tn(e.clientX,e.clientY))}}#on(e){if(this.#_s&&(this.#Ls.columnResized$.next({column:this.#_s.column}),this.#_s=null),this.#Js){if(this.#Js.isReordering){var t=this.#Cn(e.clientX),r=this.#Ys.indexOf(this.#Js.column);t!==r&&t!==r+1&&this.#xn(r,t),this.#Js.headerCell.classList.remove("dragging"),this.#kn(),this.#En()}this.#Js=null,this.#Ks.classList.remove("reordering")}}#hn(e,t){t.preventDefault(),this.#Ls.columnHeaderContextMenu$.next({column:e,mouseEvent:t})}#dn(e,t){if(0==t.button){t.preventDefault();var r=this.#Ys.indexOf(e);this.#Js={column:e,startX:t.clientX,lastX:t.clientX,headerCell:this.#Ks.children[r+1],isReordering:!1,indicator:null,ghost:null}}}#cn(e,t){0==t.button&&(this.#_s={column:e,startX:t.clientX,lastX:t.clientX})}#yn(){var e=window.document.createElement("div");e.classList.add("reorder-indicator"),this.#Ks.appendChild(e),this.#Js.indicator=e}#kn(){this.#Js?.indicator&&(this.#Js.indicator.remove(),this.#Js.indicator=null)}#bn(e,t){var r=this.#Js.headerCell,i=r.cloneNode(!0),s=r.getBoundingClientRect(),n=window.getComputedStyle(r);i.classList.add("reorder-ghost"),i.style.width=s.width+"px",i.style.height=s.height+"px",i.style.left=e-s.width/2+"px",i.style.top=t-s.height/2+"px",i.style.font=n.font,i.style.paddingLeft=n.paddingLeft,i.style.paddingRight=n.paddingRight;var a=i.querySelector(".resizer");a&&a.remove(),window.document.body.appendChild(i),this.#Js.ghost=i}#Tn(e,t){var r=this.#Js?.ghost;r&&(r.style.left=e-parseFloat(r.style.width)/2+"px",r.style.top=t-parseFloat(r.style.height)/2+"px")}#En(){this.#Js?.ghost&&(this.#Js.ghost.remove(),this.#Js.ghost=null)}#wn(e){var t=this.#Js.indicator;if(t){var r=this.#Cn(e),i=this.#Ks.children[r+1];if(i){var s=this.#Ks.getBoundingClientRect(),n=i.getBoundingClientRect();t.style.left=n.left-s.left+"px"}else{var a=this.#Ks.children[this.#Ys.length];if(a){s=this.#Ks.getBoundingClientRect();var o=a.getBoundingClientRect();t.style.left=o.right-s.left+"px"}}}}#Cn(e){for(var t=0;t<this.#Ys.length;t++){var r=this.#Ks.children[t+1].getBoundingClientRect();if(e<r.left+r.width/2)return t}return this.#Ys.length}#xn(e,t){var r=t>e?t-1:t,[i]=this.#Ys.splice(e,1);this.#Ys.splice(r,0,i);var s=this.#Ks.children[e+1];this.#Ks.removeChild(s),Yt(this.#Ks,s,r+1);for(var n=0;n<this.#Zs.children.length;n++){var a=this.#Zs.children[n],o=a.children[e+1];a.removeChild(o),Yt(a,o,r+1)}this.#Ls.columnReordered$.next({column:i})}getItemRowHeight(e){return this.#Ls.rowHeight}#Dn(e,t){e.style.height=this.getItemRowHeight(t)+"px"}#ln(e,t){var r=window.document.createElement("div");r.classList.add("row"),r.id=e.id,this.#Dn(r,e),r.addEventListener("mouseover",()=>{this.#Sn(e)}),r.addEventListener("mouseout",()=>{this.#$n(e)}),Yt(this.#Zs,r,t);var i=window.document.createElement("div");i.classList.add("cell"),i.classList.add("row-header"),this.#Dn(i,e),Yt(r,i,0);for(var s=0;s<this.#Ys.length;s++)this.#gn(r,e,s);r.style.width=this.getColumnsContentWidth()+"px",this.#Ls.rowAdded$.next({item:e,row:r})}#gn(e,t,r){const i=this.#Ys[r],s=window.document.createElement("div");s.classList.add("cell"),i.isVisible||s.classList.add("hidden"),s.style.width=i.width+"px",s.addEventListener("mousedown",e=>{this.#Rn(e,s,i,t)}),s.addEventListener("dblclick",e=>{this.#Mn(e)}),Yt(e,s,r+1)}onItemAdded(e){var t=this.#Ls.dataSource.indexOf(e);t>=0&&(this.#ln(e,t),this.redrawItemRow(e))}onItemChanged(e){this.redrawItemRow(e)}onItemRemoved(e){}onComplexOperationFinished(){this.#Ln(),this.redrawAll(),this.#qs.updateWithCurrentSelection()}redrawItemRow(e){var t=this.getItemRow(e);t.children[0].innerText=this.#Ls.dataSource.getItemLabel(e);for(var r=0;r<this.#Ys.length;r++){var i=this.#Ys[r],s=t.children[r+1];i.align&&(s.style.justifyContent=i.align.toLowerCase()),i.renderer.redraw(s,i.valueFormatter,e)}}#tn(){this.#Ks.children[0].style.transform=`translateX(${this.#Is.scrollLeft}px)`,this.#Ls.scrollTop$.next(this.#Is.scrollTop)}#rn(){var e=this.#Ls.cellEditing$.getValue();e&&e.editor.cancelEdit()}#in(e){e.preventDefault()}#sn(){this.#Ls.selectedItems$.next(this.#qs.items)}#nn(e){this.#Ls.canEdit&&this.#Ls.rowContextMenu$.next(e)}#Ln(){for(var e=this.#Zs.children.length-1;e>=0;e--){var t=this.#Zs.children[e];this.#Ls.dataSource.getItemById(t.id)||this.#Zs.removeChild(t)}for(e=0;e<this.#Ls.dataSource.length;e++){let i=this.#Ls.dataSource.getItem(e);if(this.#Zs.children.length<=e)this.#ln(i,e);else if((t=this.#Zs.children[e]).id!=i.id){var r=this.#In(i.id);r?Yt(this.#Zs,r,e):this.#ln(i,e)}}}#In(e){for(var t=0;t<this.#Zs.children.length;t++)if(this.#Zs.children[t].id===e)return this.#Zs.children[t];return null}redrawAll(){for(var e=0;e<this.#Ls.dataSource.length;e++)this.redrawItemRow(this.#Ls.dataSource.getItem(e))}updateColumnHeaders(){for(var e=0;e<this.#Ys.length;e++){var t=this.#Ys[e],r=this.#Ks.children[e+1];t.headerHtml||(r.innerText=t.name),t.tooltip&&(r.title=t.tooltip)}}#Rn(e,t,r,i){if(0==e.button){var s=this.#Ls.cellEditing$.getValue();if(s){if(s.cell==t)return;s.editor.endEditIfModifiedElseCancel()}this.#en.onCellMousedown(t,r,i)}}#Mn(e){0==e.button&&this.#en.onCellDblClick()}#Sn(e){this.#Ls.rowMouseOver$.next({item:e})}#$n(e){this.#Ls.rowMouseOver$.next(null)}scrollContentVertically(e){this.#Is.scrollTop+=e}setScrollTop(e){this.#Is.scrollTop=e}setHoverItem(e){this.#Gs&&(this.getItemRow(this.#Gs).classList.remove("hover"),this.#Gs=null);e&&this.getItemRow(e).classList.add("hover");this.#Gs=e}hideColumn(e){var t=this.#Ys.find(t=>t.code==e);t&&(t.isVisible=!1)}removeColumn(e){var t=this.#Ys.find(t=>t.code==e);if(t){var r=this.#Ys.indexOf(t);this.#Ys.splice(r,1);var i=this.#Ks.children[r+1];this.#Ks.removeChild(i);for(var s=0;s<this.#Zs.childElementCount;s++){var n=this.#Zs.children[s],a=n.children[r+1];n.removeChild(a)}this.#mn()}}getColumnsContentWidth(){var e=48;for(var t of this.#Ys)t.isVisible&&(e+=t.width+17);return e}getDefaultColumns(){return this.#Ys.filter(e=>!e.isCustom)}getCustomColumns(){return this.#Ys.filter(e=>e.isCustom)}addCustomStringColumn(e,t){var r=new as(e,t,t=>t.getPropertyValue(e)??null,new zi,new Ui(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60);return r.isCustom=!0,this.addColumn(r),r}addCustomIntegerColumn(e,t){var r=new as(e,t,t=>t.getPropertyValue(e)??null,new zi,new os(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60,"right");return r.isCustom=!0,this.addColumn(r),r}addCustomDecimalColumn(e,t){var r=new as(e,t,t=>t.getPropertyValue(e)??null,new zi,new ls(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60,"right");return r.isCustom=!0,this.addColumn(r),r}addCustomDateColumn(e,t){var r=new as(e,t,t=>{var r=t.getPropertyValue(e);return r?this.formatCustomDateValue(r):""},new zi,this.createCustomDateCellEditor(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60);return r.isCustom=!0,this.addColumn(r),r}formatCustomDateValue(e){return Kt(e,"en-US")}createCustomDateCellEditor(e,t){return new ji(e,t)}saveColumns(){return this.#Ys.map(e=>({code:e.code,width:e.width,isVisible:e.isVisible}))}loadColumns(e){for(var t=new Map,r=0;r<this.#Ys.length;r++)t.set(this.#Ys[r].code,r);var i=[],s=new Set;for(var n of e){void 0!==(a=t.get(n.code))&&(i.push(a),s.add(a))}for(r=0;r<this.#Ys.length;r++)s.has(r)||i.push(r);for(var n of e){var a;void 0!==(a=t.get(n.code))&&(this.#Ys[a].width=n.width,this.#Ys[a].isVisible=n.isVisible)}var o=i.map(e=>this.#Ys[e]);this.#Ys=o;var l=i.map(e=>this.#Ks.children[e+1]);for(var h of l)this.#Ks.appendChild(h);for(var d=0;d<this.#Zs.children.length;d++){var c=this.#Zs.children[d],u=i.map(e=>c.children[e+1]);for(var h of u)c.appendChild(h)}this.redrawAll()}scrollToItem(e){var t=this.getItemRow(e),r=this.#Is.getBoundingClientRect(),i=t.getBoundingClientRect(),s=r.top,n=r.bottom;i.top<s?this.#Is.scrollTop-=s-i.top:i.bottom>n&&(this.#Is.scrollTop+=i.bottom-n)}clearSelection(){this.#qs.clear(),this.#en.clearFocus()}destroy(){this.#T.unsubscribe(),super.destroy()}}class us extends hs{#Pn;constructor(e,t,r){super(e,t,r),this.#Pn=r}handleCustomKeyDown(e,t){if(e.altKey&&e.shiftKey&&this.context.canEdit)switch(e.key){case"ArrowRight":return e.preventDefault(),this.#Pn.indentSelectedItems(),!0;case"ArrowLeft":return e.preventDefault(),this.#Pn.outdentSelectedItems(),!0;case"ArrowUp":return e.preventDefault(),this.#Pn.moveUpSelectedItems(),!0;case"ArrowDown":return e.preventDefault(),this.#Pn.moveDownSelectedItems(),!0}return!(!e.ctrlKey||e.shiftKey||e.altKey||"ArrowUp"!==e.key&&"ArrowDown"!==e.key||!this.#Pn.canToggleCollapsed(t.item))&&(e.preventDefault(),this.#Pn.toggleCollapsed(t.item),!0)}}class gs extends cs{#An=new r;get treeDataSource(){return this.tableContext.dataSource}constructor(e,t){super(e,t),this.#An.add(this.treeDataSource.itemCollapsedChanged$.subscribe(()=>{this.redrawAll()}))}destroy(){this.#An.unsubscribe(),super.destroy()}createKeyboardNavigation(){return new us(this.tableContext,this.contentElement,this)}redrawItemRow(e){var t=this.getItemRow(e);this.treeDataSource.isItemHidden(e)?t.classList.add("hidden"):t.classList.remove("hidden"),super.redrawItemRow(e)}indentSelectedItems(){this.treeDataSource.indent(this.tableContext.selectedItems$.getValue())}outdentSelectedItems(){this.treeDataSource.outdent(this.tableContext.selectedItems$.getValue())}moveUpSelectedItems(){this.treeDataSource.moveUp(this.tableContext.selectedItems$.getValue())}moveDownSelectedItems(){this.treeDataSource.moveDown(this.tableContext.selectedItems$.getValue())}toggleCollapsed(e){}canToggleCollapsed(e){return!1}}class ms extends ji{#kt;constructor(e,t,r){super(t,r),this.#kt=e}getDefaultDate(){var e=this.#kt.projectTimeline$.getValue(),t=Bt();return e.startDate.getTime()>t.getTime()&&(t=new Date(e.startDate)),t}getLocale(){return this.#kt.locale$.getValue().language}}class ps extends gs{#kt;#Hn=new r;constructor(e,t){super(e.table,t),this.#kt=e,this.#Hn.add(e.settings.changed$.subscribe(()=>{this.redrawAll()})),this.#Hn.add(e.locale$.subscribe(()=>{this.#Vn()})),this.#Hn.add(e.chartMouseWheel$.subscribe(e=>{e.ctrlKey||this.scrollContentVertically(e.deltaY)})),this.#Hn.add(e.chartTaskHover$.subscribe(e=>{this.setHoverItem(e)})),this.#Hn.add(this.tableContext.rowMouseOver$.subscribe(t=>{e.sheetRowMouseOver$.next(t?{task:t.item}:null)})),this.#Bn(e)}destroy(){this.#Hn.unsubscribe(),super.destroy()}#Bn(e){var t=e.locale$.getValue(),r=new as("name",t.columns.name,e=>e.name??"",new Oi(e),new Ui(e=>e.name,(e,t)=>e.name=t),e=>!0,200,100);this.addColumn(r);var i=new as("icons","",e=>"",new es(e),null,e=>!1,18,18);i.headerHtml='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="12" y="1.5" width="14.5" height="14.5" rx="3" transform="rotate(45 12 1.5)"/><line x1="12" y1="16" x2="12" y2="11"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>',i.exportHeaderRenderer=is,i.exportCellRenderer=ss,this.addColumn(i);var s=new Xi;s.initWithGanttContext(e);var n=new as("length",t.columns.length,e=>e.length?.toString()??"",new zi,s,e=>e.isLengthEditable,50,50,"right");this.addColumn(n);var a=new as("start",t.columns.start,t=>t.startTime?Kt(t.startTime,e.locale$.getValue().language):"",new zi,new ms(e,e=>e.startTime,(e,t)=>e.startTime=t),e=>e.isStartTimeEditable,90,90);this.addColumn(a);var o=new as("end",t.columns.end,t=>t.endTime?Kt(t.endTime,e.locale$.getValue().language):"",new zi,new ms(e,e=>e.endTime,(e,t)=>e.endTime=this.#kt.calendar.getEndOfWorkingDay(t)),e=>e.isEndTimeEditable,90,90);this.addColumn(o);var l=new as("progress",t.columns.progress,t=>null===t.progress||void 0===t.progress?"":new Intl.NumberFormat(e.locale$.getValue().language,{style:"percent",maximumFractionDigits:0}).format(t.progress/100),new zi,new Yi(e=>e.progress,(e,t)=>e.progress=t),e=>e.isProgressEditable,65,65,"right");this.addColumn(l);var h=new as("resources",t.columns.resources,e=>"",new Zi(e),new Ki,e=>e.isResourcesEditable,100,100);this.addColumn(h);var d=new as("work",t.columns.work,e=>e.work?.toString()??"",new zi,new Ji,e=>e.isWorkEditable,50,50,"right",t.columnTooltips.work);this.addColumn(d);var c=new as("cost",t.columns.cost,t=>{var r=t.cost;return null!==r?function(e,t,r,i){var s=new Intl.NumberFormat(i,{minimumFractionDigits:2,maximumFractionDigits:2}).format(e);switch(r){case"beforeAmount":return t+s;case"beforeAmountWithSpace":return t+" "+s;case"afterAmount":return s+t;case"afterAmountWithSpace":return s+" "+t;default:throw new Error("Unknown display mode")}}(r,this.#kt.settings.currencySymbol,this.#kt.settings.currencySymbolDisplayMode,e.locale$.getValue().language):""},new zi,new Qi(e=>e.cost,(e,t)=>e.cost=t),e=>e.isCostEditable,120,120,"right",t.columnTooltips.cost);this.addColumn(c)}#Vn(){var e=this.#kt.locale$.getValue(),t={name:{name:e.columns.name},length:{name:e.columns.length},start:{name:e.columns.start},end:{name:e.columns.end},progress:{name:e.columns.progress},resources:{name:e.columns.resources},work:{name:e.columns.work,tooltip:e.columnTooltips.work},cost:{name:e.columns.cost,tooltip:e.columnTooltips.cost}};for(var[r,i]of Object.entries(t)){var s=this.getColumnByCode(r);s&&(s.name=i.name,void 0!==i.tooltip&&(s.tooltip=i.tooltip))}this.updateColumnHeaders(),this.redrawAll()}canToggleCollapsed(e){return"summary"===e.type}toggleCollapsed(e){e.toggleCollapsed()}onItemChanged(e){this.#Fn(),e.parent?this.#zn(e.parent):this.redrawItemRow(e)}redrawItemRow(e){super.redrawItemRow(e);for(var t=this.getItemRow(e),r=0;r<this.columnsLength;r++){var i=t.children[r+1];"summary"==e.type?i.classList.add("task-summary"):i.classList.remove("task-summary")}}onComplexOperationFinished(){super.onComplexOperationFinished(),this.#Fn()}#zn(e){this.redrawItemRow(e);for(var t=0;t<e.subtasksLength;t++)this.#zn(e.getSubtask(t))}#Fn(){for(var e=0,t=this.tableContext.dataSource,r=0;r<t.length;r++){var i=t.getItem(r),s=0;"asap"!==i.constraintType&&s++,i.note&&s++,(s+=i.warnings.length)>e&&(e=s)}var n=this.getColumnByCode("icons"),a=e>0?Math.max(18,18*e-4):18;n.minWidth=a,n.width=a}formatCustomDateValue(e){return Kt(e,this.#kt.locale$.getValue().language)}createCustomDateCellEditor(e,t){return new ms(this.#kt,e,t)}}class vs extends ti{constructor(){super(),this.sheet.header.backgroundColor="#ffffff",this.sheet.header.cellBorderColor="#e8e8e8",this.sheet.header.cellDividerColor="#f0f0f0",this.sheet.header.textColor="#555555",this.sheet.gridLineColor="#f2f2f2",this.sheet.scrollbarThumbColor="#d8d8d8",this.chart.header.backgroundColor="#ffffff",this.chart.header.cellBorderColor="#e8e8e8",this.chart.header.cellDividerColor="#f0f0f0",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#555555",this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#f2f2f2",this.chart.content.tier2SeparatorLineStyle="#e8e8e8",this.chart.content.nonWorkingTimeStyle="#fafafa",this.chart.content.linkLineStyle="rounded"}}class fs{#Y=[];#de=new hr;resourceChanged$=new e;resourceRemoved$=new e;resourceRemoving$=new e;constructor(){}get length(){return this.#Y.length}indexOf(e){return this.#Y.indexOf(e)}getResource(e){if(e<0||e>=this.#Y.length)throw new Error("Index out of range");return this.#Y[e]}getResourceById(e){return this.#Y.find(t=>t.id==e)??null}#De(e,t){this.#de.add(e,t)}#Se(e){this.#de.remove(e)}#Ee(e){this.#De(e,e.changed$.subscribe(e=>{this.#On(e.resource)}))}#On(e){this.resourceChanged$.next({resource:e})}addResource(e){if(e.list)throw new Error("The resource is already included in a list of resources");if(this.#Y.includes(e))throw new Error("The resource is already included in this list of resources");return e.list=this,this.#Y.push(e),this.#Ee(e),e}assign(e){for(var t of this.#Y)this.#Se(t);for(var t of(this.#Y=[],e))this.addResource(t)}removeResource(e){var t=this.#Y.indexOf(e);if(t<0)throw new Error("Resource not found");this.resourceRemoving$.next({resource:e}),this.#Y.splice(t,1),this.resourceRemoved$.next({resource:e})}}class ys{#a;get value(){return this.#a}#O;get type(){return this.#O}constructor(e,t){if(e<0)throw new Error("Invalid rate");this.#a=e,this.#O=t}toAny(){return{value:this.#a,type:this.#O}}static fromAny(e){return new ys(e.value,e.type)}}class bs{#m;get id(){return this.#m}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#O;get type(){return this.#O}set type(e){e!=this.#O&&(this.#O=e,this.#f())}#Nn=0;get fixedCostPerUse(){return this.#Nn}set fixedCostPerUse(e){e!=this.#Nn&&(this.#Nn=e,this.#f())}#Wn=0;get fixedCostPerResource(){return this.#Wn}set fixedCostPerResource(e){e!=this.#Wn&&(this.#Wn=e,this.#f())}#Un=null;get avatarIconUrl(){return this.#Un}set avatarIconUrl(e){e!=this.#Un&&(this.#Un=e,this.#f())}#Ie=null;get list(){return this.#Ie}set list(e){if(this.#Ie)throw new Error("Once assigned the list cannot be changed");e!=this.#Ie&&(this.#Ie=e)}#jn=null;get rate(){return this.#jn}set rate(e){e!=this.#jn&&(this.#jn=e,this.#f())}changed$=new e;constructor(e,t,r){this.#b=t,this.#O=r,this.#m=e||er(30)}#f(){this.changed$.next({resource:this})}toAny(){return{id:this.#m,name:this.#b,type:this.#O,fixedCostPerUse:this.#Nn,fixedCostPerResource:this.#Wn,avatarIconUrl:this.#Un,rate:this.#jn?this.#jn.toAny():null}}static fromAny(e){var t=new bs(e.id,e.name,e.type);return t.fixedCostPerUse=e.fixedCostPerUse??0,t.fixedCostPerResource=e.fixedCostPerResource??0,t.avatarIconUrl=e.avatarIconUrl??null,t.rate=e.rate?ys.fromAny(e.rate):null,t}}class ws extends Vr{#wt;#Xn;#Yn;#Kn;#Zn=null;#Gn=null;#qn;#_n=null;#Jn;#Qn;constructor(e,t,r,i,s,n){super(),this.startWatching(s),this.#wt=e,this.#qn=n.getDefaultSheetWidth(),this.#Qn=n.onWrapperResized,this.#Xn=t,this.#Yn=r,this.#Kn=i,this.#Kn.classList.add("gc-divider");var a=window.document.createElement("div");a.classList.add("resizer"),a.addEventListener("mousedown",e=>{this.#ea(e)}),this.#Kn.appendChild(a),this.addDocumentListener("mousemove",this.#an),this.addDocumentListener("mouseup",this.#on),this.#Jn=new ResizeObserver(e=>{requestAnimationFrame(()=>{for(let t of e){const{width:e,height:r}=t.contentRect;this.#ta(e,r)}})}),this.#Jn.observe(this.#Xn)}destroy(){this.#Jn.disconnect(),super.destroy()}#ea(e){0==e.button&&(e.stopPropagation(),this.#wt.dividerResizing$.next(!0),this.#Zn={startX:e.clientX,lastX:e.clientX})}#an(e){if(this.#Zn){e.stopPropagation();var t=e.clientX-this.#Zn.lastX;this.#Zn.lastX=e.clientX,null===this.#Gn?this.#Gn=this.#qn+t:this.#Gn+=t,this.#ra()}}#on(e){this.#Zn&&(e.stopPropagation(),this.#wt.dividerResizing$.next(!1),this.#Zn=null)}#ta(e,t){if(this.#Qn){var r=this.#Qn(e,t);null!==r&&(this.#qn=r)}this.#ra()}updateCalculatedWidth(e){this.#qn=e,this.#ra()}#ra(){var e=this.#Gn??this.#qn;null!==this.#_n&&this.#_n==e||(this.#_n=e,this.#Yn.style.width=e+"px",this.#wt.dividerPositionChanged$.next(),"hidden"===this.#Xn.style.visibility&&(this.#Xn.style.visibility=""))}}class Ts extends ws{constructor(e,t,r,i,s){super(e,t,r,i,s,{getDefaultSheetWidth:()=>500,onWrapperResized:e=>Math.floor(e/2)})}}class Cs{#ia;constructor(e){this.#ia=e}recalculate(){for(var e=[],t=0;t<this.#ia.list.length;t++){var r=this.#ia.list.getTask(t),i=this.#sa(r);this.#na(e,i).tasks.push(r)}var s=this.#ia.calendar$.getValue();for(let t of e)for(let e of t.tasks)if(e.startTime&&("task"==e.type||"milestone"==e.type)){var n="task"==e.type?s.moveToStartShift(e.startTime,!0):s.moveToEndShift(e.startTime,!0);e.startTime=n}this.#ia.list.complexOperationFinished$.next()}#sa(e,t=new Set){if(t.has(e))return 0;t.add(e);for(var r=0;r<this.#ia.list.linksLength;r++){var i=this.#ia.list.getLink(r);if(i.to==e)return this.#sa(i.from,t)+1}return 0}#na(e,t){for(;e.length<t+1;)e.push({tasks:[]});return e[t]}}class xs{#Ie;#g;constructor(e,t){this.#Ie=e,this.#g=t}calculate(){var{tasks:e,links:t}=this.#aa();if(this.#oa(),0!==e.length){var r=this.#la(e,t);r&&(this.#ha(r,t),this.#da(r,t),this.#ca(r))}}#aa(){for(var e=[],t=new Set,r=0;r<this.#Ie.length;r++){var i=this.#Ie.getTask(r);"task"!==i.type&&"milestone"!==i.type||i.startTime&&i.endTime&&(e.push(i),t.add(i))}var s=[];for(r=0;r<this.#Ie.linksLength;r++){var n=this.#Ie.getLink(r);t.has(n.from)&&t.has(n.to)&&s.push(n)}return{tasks:e,links:s}}#oa(){for(var e=0;e<this.#Ie.length;e++){var t=this.#Ie.getTask(e);t.earlyStart=null,t.earlyFinish=null,t.lateStart=null,t.lateFinish=null,t.totalFloat=null,t.freeFloat=null,t.isCritical=!1}}#la(e,t){var r=new Map,i=new Map;for(var s of e)r.set(s,0),i.set(s,[]);for(var n of t)r.set(n.to,(r.get(n.to)??0)+1),i.get(n.from).push(n.to);var a=[];for(var s of e)0===r.get(s)&&a.push(s);for(var o=[];a.length>0;){var l=a.shift();for(var h of(o.push(l),i.get(l))){var d=r.get(h)-1;r.set(h,d),0===d&&a.push(h)}}return o.length!==e.length?null:o}#ua(e){return"milestone"===e.type?0:e.partsLengthInHours}#ha(e,t){var r=new Map;for(var i of e)r.set(i,[]);for(var s of t)r.get(s.to).push(s);for(var i of e){var n,a=r.get(i);if(0===a.length)n=new Date(i.startTime);else for(var s of(n=new Date(i.startTime),a)){var o,l=s.from,h=s.lag.toHours(this.#g);switch(s.type){case"finishToStart":o=this.#g.addHours(l.earlyFinish,h);break;case"startToStart":o=this.#g.addHours(l.earlyStart,h);break;case"finishToFinish":var d=this.#ua(i);o=this.#g.addHours(l.earlyFinish,h-d);break;case"startToFinish":d=this.#ua(i);o=this.#g.addHours(l.earlyStart,h-d)}o.getTime()>n.getTime()&&(n=o)}n=this.#ga(i,n),i.earlyStart=n;d=this.#ua(i);i.earlyFinish=d>0?this.#g.addHours(n,d):new Date(n)}}#ga(e,t){var r=e.constraintDate;if(!r)return t;switch(e.constraintType){case"mso":return new Date(r);case"snet":return r.getTime()>t.getTime()?new Date(r):t;case"fnet":var i=this.#ua(e),s=this.#g.addHours(new Date(r),-i);return s.getTime()>t.getTime()?s:t;case"mfo":i=this.#ua(e);return this.#g.addHours(new Date(r),-i);default:return t}}#ma(e,t){var r=e.constraintDate;if(!r)return t;switch(e.constraintType){case"mfo":return new Date(r);case"snlt":var i=this.#ua(e),s=this.#g.addHours(new Date(r),i);return s.getTime()<t.getTime()?s:t;case"fnlt":return r.getTime()<t.getTime()?new Date(r):t;case"mso":i=this.#ua(e);return this.#g.addHours(new Date(r),i);default:return t}}#da(e,t){var r=null;for(var i of e)(!r||i.earlyFinish.getTime()>r.getTime())&&(r=new Date(i.earlyFinish));if(r){var s=new Map;for(var i of e)s.set(i,[]);for(var n of t)s.get(n.from).push(n);for(var a=e.length-1;a>=0;a--){i=e[a];var o,l=s.get(i);if(0===l.length)o=new Date(r);else for(var n of(o=new Date(r),l)){var h,d=n.to,c=n.lag.toHours(this.#g);switch(n.type){case"finishToStart":h=this.#g.addHours(d.lateStart,-c);break;case"finishToFinish":case"startToFinish":h=this.#g.addHours(d.lateFinish,-c);break;case"startToStart":var u=this.#ua(i);h=this.#g.addHours(d.lateStart,u-c)}h.getTime()<o.getTime()&&(o=h)}o=this.#ma(i,o),i.lateFinish=o;u=this.#ua(i);i.lateStart=u>0?this.#g.addHours(o,-u):new Date(o)}}}#ca(e){for(var t of e)t.earlyStart&&t.lateStart&&(t.totalFloat=this.#g.getHoursBetween(t.earlyStart,t.lateStart),t.isCritical=Math.abs(t.totalFloat)<.001)}}const ks=10,Es=40,Ds=96/25.4,Ss={A4:[210,297],A3:[297,420],Letter:[215.9,279.4],Legal:[215.9,355.6]};function $s(e,t){return e.map(e=>function(e,t){if(!e)return"";if(e.includes(t)||e.includes('"')||e.includes("\n")||e.includes("\r"))return'"'+e.replace(/"/g,'""')+'"';return e}(e,t)).join(t)}function Rs(e){var t=e.getRow(1);t.font={bold:!0},t.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFF0F0F0"}}}function Ms(e){e.views=[{state:"frozen",ySplit:1}]}async function Ls(){try{return await import("exceljs")}catch{throw new Error("ExcelJS is required for Excel export. Install it with: npm install exceljs")}}async function Is(e){var t=await e.xlsx.writeBuffer();return new Blob([t],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}function Ps(e,t,r,i,s,n,a,o,l){var h=n.getValue(),d=a.getValue();n.next(r.chartStart),a.next(0);try{var c=document.createElement("canvas");c.width=r.chartWidth*i,c.height=r.totalHeight*i;var u=c.getContext("2d");1!==i&&u.scale(i,i),u.fillStyle=s.chart.content.backgroundColor,u.fillRect(0,0,r.chartWidth,r.totalHeight),u.font=s.font.toString(1);var g=1===i?c:{width:r.chartWidth,height:r.totalHeight,getContext:()=>u};for(var m of(o.render(g),u.save(),u.beginPath(),u.rect(0,r.headerHeight,r.chartWidth,r.totalHeight-r.headerHeight),u.clip(),l))m.render(g);u.restore(),e.drawImage(c,0,0,c.width,c.height,t,0,r.chartWidth,r.totalHeight)}finally{n.next(h),a.next(d)}}class As{calculateChartLayout(e,t,r,i,s){var n=e.currentZoom,a=n.axis[0],o=function(e){for(var t=[],r=0;r<e.columnsLength;r++){var i=e.getColumn(r);i.isVisible&&t.push({code:i.code,name:i.name,width:i.width,align:i.align,valueFormatter:i.valueFormatter,exportHeaderRenderer:i.exportHeaderRenderer??void 0,exportCellRenderer:i.exportCellRenderer??void 0})}return t}(t),l=Es+o.reduce((e,t)=>e+t.width+ks,0),h=r??s.startDate,d=i??s.endDate,c=a.getAdd(a.getCellStartTime(h),-3),u=a.getAdd(a.getCellStartTime(d),4);return{visibleColumns:o,sheetWidth:l,chartStart:c,chartWidth:Math.ceil(a.getX(u,c,n)),headerHeight:this.theme.contentTop}}renderSheet(e,t){this.renderSheetHeader(e,t),this.renderSheetRows(e,t),this.renderSheetRightBorder(e,t)}renderSheetHeader(e,t){var r=this.theme,i=r.font;e.font=i.toString(1),e.fillStyle=r.chart.header.backgroundColor,e.fillRect(0,0,t.sheetWidth,t.headerHeight),e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(0,t.headerHeight-.5),e.lineTo(t.sheetWidth,t.headerHeight-.5),e.stroke();var s=0;for(var n of(Rr(e,"#",new kr(s+5,0,30,t.headerHeight),"center",0,r.chart.header.textColor),s+=Es,t.visibleColumns))n.exportHeaderRenderer?n.exportHeaderRenderer(e,s,0,n.width+ks,t.headerHeight,r.chart.header.textColor):Rr(e,n.name,new kr(s+5,0,n.width,t.headerHeight),"left",0,r.chart.header.textColor),e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(s-.5,0),e.lineTo(s-.5,t.headerHeight),e.stroke(),s+=n.width+ks}renderSheetRightBorder(e,t){var r=this.theme;e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(t.sheetWidth-.5,0),e.lineTo(t.sheetWidth-.5,t.totalHeight),e.stroke()}}class Hs extends As{#kt;#pa;constructor(e,t){super(),this.#kt=e,this.#pa=t}get theme(){return this.#kt.theme$.getValue()}calculateDimensions(){var e=this.calculateChartLayout(this.#kt.timeline,this.#pa,this.#kt.list.minStartTime,this.#kt.list.maxEndTime,this.#kt.projectTimeline$.getValue()),t=this.#va(),r=e.headerHeight+t*(this.theme.rowHeight+1);return{visibleColumns:e.visibleColumns,visibleRowCount:t,sheetWidth:e.sheetWidth,chartWidth:e.chartWidth,chartStart:e.chartStart,headerHeight:e.headerHeight,totalHeight:r}}renderSheetRows(e,t){for(var r=this.theme,i=r.font,s=r.rowHeight+1,n=t.headerHeight,a=0;a<this.#kt.list.length;a++){var o=this.#kt.list.getTask(a);if(!o.hidden){var l=0,h=this.#kt.list.getTaskNumber(o).toString();for(var d of(Rr(e,h,new kr(l+5,n,30,s),"center",0,"#808080"),l+=Es,t.visibleColumns)){if(d.exportCellRenderer)d.exportCellRenderer(e,o,l+5,n,d.width,s);else{var c=d.valueFormatter(o),u=l+5,g=d.width;if("name"===d.code){var m=16*o.level;u+=m,g-=m}var p="left";"center"===d.align&&(p="center"),"right"===d.align&&(p="right"),c&&(e.font="summary"===o.type?`bold ${i.toString(1)}`:i.toString(1),Rr(e,c,new kr(u,n,g,s),p,0,r.sheet.textColor),e.font=i.toString(1))}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(l-.5,n),e.lineTo(l-.5,n+s),e.stroke(),l+=d.width+ks}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(0,n+s-.5),e.lineTo(t.sheetWidth,n+s-.5),e.stroke(),n+=s}}}renderChart(e,t,r,i=1){Ps(e,t,r,i,this.theme,this.#kt.timeline.visibleStartTime$,this.#kt.sheetScrollTop$,new Pr(this.#kt),[new Cr(this.#kt),new Si(this.#kt),new Ei(this.#kt),new Ti(this.#kt)])}#va(){var e=this.#kt.list.getLastNonEmpty(!1);if(!e)return 0;for(var t=0,r=this.#kt.list.indexOf(e);r>=0;r--){this.#kt.list.getTask(r).hidden||t++}return t}}class Vs{#ds;#Ii;constructor(e,t){this.#ds=e,this.#Ii=t}async exportToImage(){await(this.#ds.preload?.());var e=this.#ds.calculateDimensions(),t=this.#ds.theme,r=e.sheetWidth+e.chartWidth,i=document.createElement("canvas");i.width=r,i.height=e.totalHeight;var s=i.getContext("2d");return s.fillStyle=t.sheet.backgroundColor,s.fillRect(0,0,r,e.totalHeight),this.#ds.renderSheet(s,e),this.#ds.renderChart(s,e.sheetWidth,e),Vt().showWatermarkFor(this.#Ii)&&Ii(s,r,e.totalHeight),new Promise((e,t)=>{i.toBlob(r=>{r?e(r):t(new Error("Failed to export image"))},"image/png")})}}class Bs extends Vs{constructor(e,t){super(new Hs(e,t),"gantt")}}class Fs{#kt;#pa;constructor(e,t){this.#kt=e,this.#pa=t}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.columns??null,s=e?.includeLinks??!1,n=this.#fa(i),a=[];r&&a.push($s(["#",...n.map(e=>e.name)],t));for(var o=0;o<this.#kt.list.length;o++){var l=this.#kt.list.getTask(o);"empty"!==l.type&&a.push($s([this.#kt.list.getTaskNumber(l).toString(),...n.map(e=>e.valueFormatter(l))],t))}var h=a.join("\n");if(s&&this.#kt.list.linksLength>0){h+="\n\n";var d=this.#kt.locale$.getValue();r&&(h+=$s([d.labels.from,d.labels.to,d.labels.type,d.labels.lag],t)+"\n");for(o=0;o<this.#kt.list.linksLength;o++){var c=this.#kt.list.getLink(o),u=0!==c.lag.value?c.lag.toString():"";h+=$s([this.#kt.list.getTaskNumber(c.from).toString(),this.#kt.list.getTaskNumber(c.to).toString(),c.type,u],t)+"\n"}}return h}#fa(e){for(var t=[],r=0;r<this.#pa.columnsLength;r++){var i=this.#pa.getColumn(r);if("icons"!==i.code){if(e){if(!e.includes(i.code))continue}else if(!i.isVisible)continue;t.push({code:i.code,name:i.name,width:i.width,valueFormatter:i.valueFormatter})}}return t}async exportToExcel(e){var t=await Ls(),r=this.#kt.locale$.getValue(),i=e?.sheetName??r.export.tasksSheetName,s=e?.includeLinksSheet??!0,n=e?.includeResourcesSheet??!0,a=e?.includeFormatting??!0,o=e?.columns??null,l=new t.Workbook;return this.#ya(l,i,o,a),s&&this.#kt.list.linksLength>0&&this.#ba(l,a),n&&this.#kt.resources.length>0&&this.#wa(l,a),Is(l)}#ya(e,t,r,i){var s=this.#fa(r),n=e.addWorksheet(t),a=[{header:"#",key:"number",width:6}];for(var o of s){var l=Math.max(10,Math.round(o.width/7));a.push({header:o.name,key:o.code,width:l})}n.columns=a,i&&Rs(n);for(var h=0;h<this.#kt.list.length;h++){var d=this.#kt.list.getTask(h);if("empty"!==d.type){var c={number:this.#kt.list.getTaskNumber(d)};for(var o of s)c[o.code]=o.valueFormatter(d);var u=n.addRow(c);if(i&&d.level>0){var g=u.getCell("name");g&&(g.alignment={indent:2*d.level})}i&&"summary"===d.type&&(u.font={bold:!0})}}i&&Ms(n)}#ba(e,t){var r=this.#kt.locale$.getValue(),i=e.addWorksheet(r.export.linksSheetName);i.columns=[{header:r.labels.from,key:"from",width:8},{header:r.labels.to,key:"to",width:8},{header:r.labels.type,key:"type",width:18},{header:r.labels.lag,key:"lag",width:12}],t&&Rs(i);for(var s=0;s<this.#kt.list.linksLength;s++){var n=this.#kt.list.getLink(s);i.addRow({from:this.#kt.list.getTaskNumber(n.from),to:this.#kt.list.getTaskNumber(n.to),type:n.type,lag:0!==n.lag.value?n.lag.toString():""})}t&&Ms(i)}#wa(e,t){var r=this.#kt.locale$.getValue(),i=e.addWorksheet(r.export.resourcesSheetName);i.columns=[{header:"Name",key:"name",width:25},{header:"Type",key:"type",width:12},{header:"Rate",key:"rate",width:15}],t&&Rs(i);for(var s=0;s<this.#kt.resources.length;s++){var n=this.#kt.resources.getResource(s),a="";if(n.rate){var o="perHour"===n.rate.type?"/h":"/d";a=n.rate.value+o}i.addRow({name:n.name,type:n.type,rate:a})}t&&Ms(i)}}class zs{#ds;#Ii;constructor(e,t){this.#ds=e,this.#Ii=t}get renderer(){return this.#ds}async exportToPdf(e){var t;try{t=await import("jspdf")}catch{throw new Error("jsPDF is required for PDF export. Install it with: npm install jspdf")}await(this.#ds.preload?.());var r=e?.pageSize??"A4",i=e?.orientation??"landscape",s=e?.margin??{top:10,right:10,bottom:10,left:10},n=e?.includeSheet??!0,a=e?.includeChart??!0,o=e?.quality??1,[l,h]=Ss[r];"landscape"===i&&([l,h]=[h,l]);var d=h,c=l-s.left-s.right,u=d-s.top-s.bottom,g=e?.header?6:0,m=e?.footer?6:0,p=u-g-m,v=this.#ds.calculateDimensions(),f=this.#ds.theme,y=n?v.sheetWidth:0,b=y+(a?v.chartWidth:0),w=document.createElement("canvas");w.width=2*b,w.height=2*v.totalHeight;var T,C=w.getContext("2d");if(C.scale(2,2),C.fillStyle=f.sheet.backgroundColor,C.fillRect(0,0,b,v.totalHeight),n&&this.#ds.renderSheet(C,v),a&&this.#ds.renderChart(C,y,v,2),Vt().showWatermarkFor(this.#Ii)&&Ii(C,b,v.totalHeight),e?.fitToSinglePage){var x=b/Ds+s.left+s.right,k=v.totalHeight/Ds+s.top+s.bottom+g+m;T=new t.jsPDF({orientation:i,format:[x,k],unit:"mm"});var E=b/Ds,D=v.totalHeight/Ds,S=s.top+g;T.addImage(w.toDataURL("image/png",o),"PNG",s.left,S,E,D),this.#Ta(T,e,s,1,1,k)}else{for(var $=c*Ds,R=p*Ds,M=v.headerHeight,L=this.computeVerticalPageBreaks(v,R,M),I=Math.max(1,Math.ceil(b/$)),P=[],A=0;A<L.length;A++)for(var H=0;H<I;H++){var V=H*$,B=Math.min($,b-V),F=L[A].srcY,z=L[A].height;P.push({hPage:H,vPage:A,srcX:V,contentSrcY:F,srcW:B,contentSrcH:z})}T=new t.jsPDF({orientation:i,format:r,unit:"mm"});for(var O=P.length,N=0;N<P.length;N++){var W=P[N];N>0&&T.addPage();var U=Math.ceil(W.srcW),j=Math.ceil(M+W.contentSrcH);if(!(U<=0||j<=0)){var X=document.createElement("canvas");X.width=2*U,X.height=2*j;var Y=X.getContext("2d");Y.fillStyle=f.sheet.backgroundColor,Y.fillRect(0,0,X.width,X.height),Y.drawImage(w,2*W.srcX,0,2*W.srcW,2*M,0,0,2*W.srcW,2*M),W.contentSrcH>0&&Y.drawImage(w,2*W.srcX,2*W.contentSrcY,2*W.srcW,2*W.contentSrcH,0,2*M,2*W.srcW,2*W.contentSrcH);E=W.srcW/Ds,D=j/Ds,S=s.top+g;T.addImage(X.toDataURL("image/png",o),"PNG",s.left,S,E,D),this.#Ta(T,e,s,N+1,O,d)}}}return T.output("blob")}#Ta(e,t,r,i,s,n){if(t?.header){var a="function"==typeof t.header?t.header(i,s):t.header;e.setFontSize(9),e.setTextColor(128),e.text(a,r.left,r.top+4)}if(t?.footer){var o="function"==typeof t.footer?t.footer(i,s):t.footer;e.setFontSize(9),e.setTextColor(128),e.text(o,r.left,n-r.bottom)}}}class Os extends zs{constructor(e,t){super(new Hs(e,t),"gantt")}computeVerticalPageBreaks(e,t,r){for(var i=this.renderer.theme.rowHeight+1,s=Math.max(1,Math.floor((t-r)/i)),n=e.visibleRowCount+1,a=Math.max(1,Math.ceil(n/s)),o=[],l=0;l<a;l++){var h=r+l*s*i,d=Math.min(s*i,e.totalHeight-h);d<0&&(d=0),o.push({srcY:h,height:d})}return o}}class Ns{#Ca=[];#xa=-1;#ka=50;#Ea=!1;#Da=0;#Sa=!1;#$a;#Ra;canUndo$=new t(!1);canRedo$=new t(!1);constructor(e,t){this.#$a=e,this.#Ra=t}initialize(){this.#Ca=[this.#$a()],this.#xa=0}requestSnapshot(){this.#Ea||(this.#Da>0?this.#Sa=!0:this.#Ma())}beginBatch(){this.#Da++}endBatch(){this.#Da--,0===this.#Da&&this.#Sa&&(this.#Sa=!1,this.#Ma())}#Ma(){var e=this.#$a();if(!(this.#xa>=0&&e===this.#Ca[this.#xa])){for(this.#Ca.splice(this.#xa+1),this.#Ca.push(e),this.#xa++;this.#Ca.length>this.#ka;)this.#Ca.shift(),this.#xa--;this.#La()}}undo(){this.canUndo$.getValue()&&(this.#Ea=!0,this.#xa--,this.#Ra(this.#Ca[this.#xa]),this.#Ea=!1,this.#La())}redo(){this.canRedo$.getValue()&&(this.#Ea=!0,this.#xa++,this.#Ra(this.#Ca[this.#xa]),this.#Ea=!1,this.#La())}#La(){this.canUndo$.next(this.#xa>0),this.canRedo$.next(this.#xa<this.#Ca.length-1)}}class Ws{dataSource;rowHeight;canEdit$;get canEdit(){return this.canEdit$.getValue()}scrollTop$;rowAdded$;selectedItems$;focusedCell$;cellEditing$;cellInvalidValue$;cellDialogEdit$;cellInputEdit$;columnHeaderContextMenu$;columnResized$;columnReordered$;rowContextMenu$;rowMouseOver$;constructor(r,i=32){this.dataSource=r,this.rowHeight=i,this.canEdit$=new t(!0),this.scrollTop$=new t(0),this.rowAdded$=new e,this.selectedItems$=new t([]),this.focusedCell$=new t(null),this.cellEditing$=new t(null),this.cellInvalidValue$=new e,this.cellDialogEdit$=new e,this.cellInputEdit$=new e,this.columnHeaderContextMenu$=new e,this.columnResized$=new e,this.columnReordered$=new e,this.rowContextMenu$=new e,this.rowMouseOver$=new t(null)}}class Us{#Ie;#T=new r;itemAdded$=new e;itemChanged$=new e;itemRemoved$=new e;itemCollapsedChanged$=new e;complexOperationFinished$;constructor(e){this.#Ie=e,this.complexOperationFinished$=e.complexOperationFinished$,this.#T.add(e.taskAdded$.subscribe(e=>this.itemAdded$.next({item:e.task}))),this.#T.add(e.taskChanged$.subscribe(e=>this.itemChanged$.next({item:e.task}))),this.#T.add(e.taskRemoved$.subscribe(e=>this.itemRemoved$.next({item:e.task}))),this.#T.add(e.taskCollapsedChanged$.subscribe(e=>this.itemCollapsedChanged$.next({item:e.task})))}destroy(){this.#T.unsubscribe()}get list(){return this.#Ie}get length(){return this.#Ie.length}getItem(e){return this.#Ie.getTask(e)}getItemById(e){return this.#Ie.getTaskById(e)}indexOf(e){return this.#Ie.indexOf(e)}addEmptyItem(){return this.#Ie.addEmptyTask()}insertEmptyItem(e){return this.#Ie.insertEmptyTask(e)}removeItems(e){this.#Ie.removeTasks(e)}getItemLabel(e){return this.#Ie.getTaskNumber(e).toString()}isItemHidden(e){return e.hidden}getNextVisible(e){return this.#Ie.getNextVisible(e)}getPreviousVisible(e){return this.#Ie.getPreviousVisible(e)}indent(e){this.#Ie.indent(e)}outdent(e){this.#Ie.outdent(e)}moveUp(e){this.#Ie.moveUp(e)}moveDown(e){this.#Ie.moveDown(e)}}const js={language:"en-US",columns:{name:"Name",length:"Length",start:"Start",end:"End",progress:"Progress",resources:"Resources",work:"Work",cost:"Cost"},columnTooltips:{work:"Work days or hours allocated for this task. Calculated automatically when one or more resources are assigned.",cost:"Cost calculated automatically when one or more resources are assigned."},tooltips:{addTask:"Add task",addTaskPart:"Add task part",moveTask:"Move task",moveTaskPart:"Move task part",resizeTask:"Resize task",resizeTaskPart:"Resize task part",moveMilestone:"Move milestone",setProgress:"Set progress",addLink:"Add a link"},labels:{start:"Start",end:"End",length:"Length",progress:"Progress",from:"From",to:"To",type:"Type",lag:"Lag"},constraints:{asap:"As Soon As Possible",alap:"As Late As Possible",mso:"Must Start On",mfo:"Must Finish On",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than"},linkTypes:{finishToStart:"Finish → Start",startToStart:"Start → Start",finishToFinish:"Finish → Finish",startToFinish:"Start → Finish"},warnings:{behindSchedule:"The task is behind schedule",behindScheduleByOneDay:"by one day",behindScheduleByDays:e=>`by ${e} days`,constraintViolation:(e,t)=>`Task violates '${e} ${t}' constraint`},export:{tasksSheetName:"Tasks",linksSheetName:"Links",resourcesSheetName:"Resources",eventsSheetName:"Events",calendarsSheetName:"Calendars"},scheduler:{resource:"Resource",name:"Name",type:"Type",addEvent:"Add event",moveEvent:"Move event",resizeEvent:"Resize event"},calendar:{today:"Today",month:"Month",week:"Week",day:"Day",agenda:"Agenda",allDay:"all-day",noEvents:"No events",more:e=>`+${e} more`,myCalendars:"My Calendars",addCalendar:"Add calendar",ariaCalendar:"Event Calendar",ariaSidebar:"Calendar sidebar",ariaNavigation:"Navigation",ariaViewMode:"View mode",ariaGoToToday:"Go to today",ariaPrevious:"Previous",ariaNext:"Next",ariaAllDayEvents:"All-day events",ariaCalendarGrid:"Calendar grid",ariaAgendaList:"Agenda event list",ariaSelectMonthYear:"Select month and year",ariaToggleCalendar:e=>`Show or hide ${e}`,ariaRemoveCalendar:e=>`Remove ${e}`,ariaMoreEvents:e=>`${e} more events`}};class Xs{#kt;#Ia=null;constructor(e){this.#kt=e}async copy(e){var t=e.filter(e=>"empty"!==e.type);if(0!==t.length){this.#Ia=this.#Pa(t);var r=this.#Aa(t);try{await navigator.clipboard.writeText(r)}catch{}}}async cut(e){await this.copy(e);var t=e.filter(e=>"empty"!==e.type);t.length>0&&this.#kt.list.removeTasks(t)}async paste(){if(this.#Ia)return this.#Ha(this.#Ia);try{var e=await navigator.clipboard.readText();if(e&&e.trim().length>0)return this.#Va(e)}catch{}return null}#Pa(e){var t=new Set(e.map(e=>e.id)),r=[];for(var i of e)r.push(i.toAny());for(var s=[],n=[],a=0;a<this.#kt.list.linksLength;a++){var o=this.#kt.list.getLink(a),l=t.has(o.from.id),h=t.has(o.to.id);if(l||h){var d=o.toAny();n.push(d),l&&h&&s.push(d)}}return{tasks:r,links:s,allLinks:n}}#Ha(e){var t=this.#kt.list,r=this.#Ba(),i=new Map,s=[];for(var n of e.tasks){var a=n.id,o=new cr(null,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies);t.insertTask(r,o),this.#Fa(o,n),i.set(a,o),s.push(o),r++}for(var l=new Set(s),h=0;h<e.tasks.length;h++){var d=s[h],c=(n=e.tasks[h]).parent;d.parent&&!l.has(d.parent)&&c&&i.has(c)&&d.parent.removeSubtask(d)}for(h=0;h<e.tasks.length;h++){n=e.tasks[h],d=s[h];var u=n.parent;if(u&&i.has(u)&&!d.parent)i.get(u).addSubtask(d)}var g=[];for(var m of e.links){var p=i.get(m.from),v=i.get(m.to);if(p&&v&&t.isValidTypeForLink(p)&&t.isValidTypeForLink(v)&&!t.existsLinkBetween(p,v)&&!t.wouldCreateCycle(p,v)){var f=m.lag?ur.fromAny(m.lag):void 0,y=t.addLink(p,v,m.type,f);g.push(y)}}var b=new Set(e.tasks.map(e=>e.id)),w=[];for(var m of e.allLinks){var T=b.has(m.from),C=b.has(m.to);T&&!C?w.push({type:m.type,fromId:m.from,toId:m.to,externalSide:"to"}):!T&&C&&w.push({type:m.type,fromId:m.from,toId:m.to,externalSide:"from"})}return t.complexOperationFinished$.next(),{tasks:s,links:g,taskIdMap:i,droppedLinks:w}}#Fa(e,t){if(t.startTime&&(e.startTime=_t(t.startTime)),t.endTime&&(e.endTime=_t(t.endTime)),t.name&&(e.name=t.name),void 0!==t.color&&(e.color=t.color),t.note&&(e.note=t.note),void 0!==t.progress&&null!==t.progress&&(e.progress=t.progress),t.constraintType&&"asap"!==t.constraintType&&(e.constraintType=t.constraintType,t.constraintDate&&(e.constraintDate=_t(t.constraintDate))),t.resources&&t.resources.length>0)for(var r of t.resources){var i=r.resourceId,s=this.#kt.resources.getResourceById(i);s&&e.addResource(null,s,r.capacity??100)}}#Va(e){var t=this.#kt.list,r=this.#Ba(),i=e.split("\n").filter(e=>e.trim().length>0),s=[],n=new Map;for(var a of i){var o=a.split("\t"),l=o[0]?.trim();if(l){var h=t.insertEmptyTask(r);if(h.name=l,o[1]?.trim())try{h.startTime=new Date(o[1].trim())}catch{}if(o[2]?.trim())try{h.endTime=new Date(o[2].trim())}catch{}if(o[3]?.trim()){var d=parseFloat(o[3].trim());isNaN(d)||(h.progress=Math.min(100,Math.max(0,d)))}var c=er(8);n.set(c,h),s.push(h),r++}}return t.complexOperationFinished$.next(),{tasks:s,links:[],taskIdMap:n,droppedLinks:[]}}#Ba(){var e=this.#kt.sheetSelectedTasks$.getValue();if(e.length>0){var t=e[0];return this.#kt.list.indexOf(t)}var r=this.#kt.list.getLastNonEmpty();return r?this.#kt.list.indexOf(r)+1:0}#Aa(e){var t=[];for(var r of e){var i=r.name??"",s=r.startTime?qt(r.startTime):"",n=r.endTime?qt(r.endTime):"",a=null!==r.progress?r.progress.toString():"";t.push([i,s,n,a].join("\t"))}return t.join("\n")}}class Ys{_hostElement;_wrapperElement;_subscriptions=new r;_undoManager;#za;#Oa=null;#Na=!0;constructor(e){this._hostElement=e}createDom(){this._hostElement.classList.add("gc-host");var e=document.createElement("div");e.classList.add("gc-wrapper"),this.addWrapperClasses(e),e.style.visibility="hidden",this._hostElement.appendChild(e),this._wrapperElement=e;var t=document.createElement("div"),r=document.createElement("div"),i=document.createElement("div");return e.appendChild(t),e.appendChild(r),e.appendChild(i),{sheetElement:t,dividerElement:r,chartElement:i}}addWrapperClasses(e){}wireTheme(){this._subscriptions.add(this.subscribeThemeChange(()=>{this.#Wa(),this.#Ua()})),this.#Wa(),this.#Ua()}#Wa(){var e,t;e=this._wrapperElement,t=this.getTheme(),e.style.fontFamily=t.font.name,e.style.fontSize=t.font.size+"pt"}#Ua(){var e,t,r;e=this._wrapperElement,t=this.getTheme(),(r=e.style).setProperty("--gc-sheet-header-bg-color",t.sheet.header.backgroundColor),r.setProperty("--gc-sheet-header-cell-border-color",t.sheet.header.cellBorderColor),r.setProperty("--gc-sheet-header-cell-divider-color",t.sheet.header.cellDividerColor??t.sheet.header.cellBorderColor),r.setProperty("--gc-sheet-grid-line-color",t.sheet.gridLineColor),r.setProperty("--gc-sheet-bg-color",t.sheet.backgroundColor),r.setProperty("--gc-sheet-text-color",t.sheet.textColor),r.setProperty("--gc-sheet-hover-bg-color",t.sheet.hoverBackgroundColor),r.setProperty("--gc-sheet-selected-bg-color",t.sheet.selectedBackgroundColor),r.setProperty("--gc-sheet-selected-row-header-color",t.sheet.selectedRowHeaderColor),r.setProperty("--gc-sheet-focus-border-color",t.sheet.focusBorderColor),r.setProperty("--gc-sheet-highlight-border-color",t.sheet.highlightBorderColor),r.setProperty("--gc-tree-icon-color",t.sheet.treeIconColor),r.setProperty("--gc-editor-bg-color",t.sheet.editorBackgroundColor),r.setProperty("--gc-editor-text-color",t.sheet.editorTextColor),r.setProperty("color-scheme",t.sheet.colorScheme),e.setAttribute("data-color-scheme",t.sheet.colorScheme)}wireKeyboard(){this.#za=e=>{this.#ja(e)},this._wrapperElement.addEventListener("keydown",this.#za,!0)}#ja(e){if(!this.isCellEditing()&&(e.ctrlKey||e.metaKey))switch(e.key){case"z":e.preventDefault(),e.shiftKey?this.redo():this.undo();break;case"y":e.preventDefault(),this.redo();break;case"+":case"=":e.preventDefault(),this.zoomIn();break;case"-":e.preventDefault(),this.zoomOut();break;case"c":e.preventDefault(),this.copy();break;case"x":e.preventDefault(),this.cut();break;case"v":e.preventDefault(),this.paste()}}get markers(){return this.ctx.markers$.getValue()}set markers(e){this.ctx.markers$.next(e)}addMarker(e){var t=[...this.ctx.markers$.getValue(),e];this.ctx.markers$.next(t)}removeMarker(e){var t=this.ctx.markers$.getValue().filter(t=>t!==e);this.ctx.markers$.next(t)}clearMarkers(){this.ctx.markers$.next([])}get canEdit(){return this.ctx.canEdit}set canEdit(e){this.ctx.canEdit$.next(e)}get autoZoomToFit(){return this.#Na}set autoZoomToFit(e){this.#Na=e}get showGridLines(){return this.ctx.showGridLines$.getValue()}set showGridLines(e){this.ctx.showGridLines$.next(e)}get showTodayLine(){return this.ctx.showTodayLine$.getValue()}set showTodayLine(e){this.ctx.showTodayLine$.next(e)}get canUndo$(){return this._undoManager.canUndo$}get canRedo$(){return this._undoManager.canRedo$}undo(){this.ctx.canEdit&&(this._undoManager.undo(),this.engineEvents.undone$.next())}redo(){this.ctx.canEdit&&(this._undoManager.redo(),this.engineEvents.redone$.next())}zoomIn(){return this.ctx.timeline.zoomIn()}zoomOut(){return this.ctx.timeline.zoomOut()}zoomToFitRange(e,t){if(e&&t){var r=this.getChartWidth();if(!(r<=0)){var i=this.ctx.timeline.findBestZoomIndex(e,t,r);this.ctx.timeline.zoomIndex$.next(i);var s=this.ctx.timeline.currentZoom.axis[0];this.ctx.timeline.visibleStartTime$.next(s.getAdd(s.getCellStartTime(e),-1))}}}goToProjectStart(){var e=this.ctx.timeline.currentZoom.axis[0],t=new Date(this.projectTimeline.startDate);t.setDate(t.getDate()-1),this.ctx.timeline.visibleStartTime$.next(e.getCellStartTime(t))}scrollToDate(e){var t=this.ctx.timeline.currentZoom.axis[0],r=t.getAdd(t.getCellStartTime(e),-1);this.ctx.timeline.visibleStartTime$.next(r)}get projectTimeline(){return this.ctx.projectTimeline$.getValue()}set projectTimeline(e){var t=e.startDate,r=e.endDate;if(t.getTime()>r.getTime())throw new Error("Invalid project date range");t=zt(t),r=zt(r),this.ctx.projectTimeline$.next(new Sr(t,r)),this.#Na&&this.#Xa()}get calendar$(){return this.ctx.calendar$}set calendar$(e){this.ctx.calendar$.next(e)}saveColumns(){return this.saveColumnsImpl()}loadColumns(e){this.loadColumnsImpl(e)}load(e){this.restoreState(e),this.#Na&&this.hasData()&&this.#Xa()}#Xa(){this.getChartWidth()>0?this.zoomToFit():(this.#Oa?.disconnect(),this.#Oa=new ResizeObserver(()=>{this.getChartWidth()>0&&(this.#Oa.disconnect(),this.#Oa=null,this.zoomToFit())}),this.#Oa.observe(this.getChartElement()))}destroy(){this.#Oa?.disconnect(),this.#Oa=null,this._subscriptions.unsubscribe(),this.engineEvents.destroy(),this.destroyComponents(),this._wrapperElement.removeEventListener("keydown",this.#za,!0),this._wrapperElement.parentNode&&this._wrapperElement.parentNode.removeChild(this._wrapperElement),this._hostElement.classList.remove("gc-host")}}class Ks extends Ys{#kt;#pa;#Ya;#Ka;#Za;#Ga;#qa;get ctx(){return this.#kt}get engineEvents(){return this.#qa}getChartWidth(){return this.#Ka.chartWidth}getChartElement(){return this.#Ka.chartElement}getTheme(){return this.#kt.theme$.getValue()}subscribeThemeChange(e){return this.#kt.theme$.subscribe(e)}isCellEditing(){return null!==this.#kt.sheetCellEditing$.getValue()}saveColumnsImpl(){return this.#pa.saveColumns()}loadColumnsImpl(e){this.#pa.loadColumns(e)}hasData(){return this.list.length>0}destroyComponents(){this.#Ka.destroy(),this.#pa.destroy(),this.#Ya.destroy()}get list(){return this.#kt.list}get resources(){return this.#kt.resources}get events(){return this.#qa}get sheet(){return this.#pa}get selectedTasks(){return this.#kt.sheetSelectedTasks$.getValue()}get showCriticalPath(){return this.#kt.showCriticalPath$.getValue()}set showCriticalPath(e){e?this.#_a():this.#Ja(),this.#kt.showCriticalPath$.next(e)}get showBaseline(){return this.#kt.showBaseline$.getValue()}set showBaseline(e){this.#kt.showBaseline$.next(e)}get filter(){return this.#kt.list.filter}set filter(e){this.#kt.list.filter=e}clearFilter(){this.#kt.list.filter=null}get hasBaseline(){for(var e=0;e<this.#kt.list.length;e++){if(this.#kt.list.getTask(e).baselineStartTime)return!0}return!1}saveBaseline(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);"empty"!==t.type&&(t.baselineStartTime=t.startTime?new Date(t.startTime):null,t.baselineEndTime=t.endTime?new Date(t.endTime):null)}this.#kt.showBaseline$.next(!0),this.#Za.requestSnapshot()}clearBaseline(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);t.baselineStartTime=null,t.baselineEndTime=null}this.#kt.showBaseline$.next(!1),this.#Za.requestSnapshot()}constructor(e){super(e),this.#kt=new Zs,this._subscriptions.add(this.#kt.list.resourceAdding$.subscribe(e=>{this.#lt(e)})),this._subscriptions.add(this.#kt.resources.resourceRemoving$.subscribe(e=>{this.#Qa(e)})),this._subscriptions.add(this.#kt.calendar$.subscribe(()=>{this.#eo()}));var{sheetElement:t,dividerElement:r,chartElement:i}=this.createDom();this.#pa=new ps(this.#kt,t),this.#Ya=new Ts(this.#kt,this._wrapperElement,t,r,i),this.#Ka=new Ai(this.#kt,i),this.#qa=new Gs(this.#kt),this.wireTheme(),this._subscriptions.add(this.#kt.list.evaluatingDependenciesFinished$.subscribe(()=>this.#to())),this._subscriptions.add(this.#kt.list.complexOperationFinished$.subscribe(()=>this.#to())),this._subscriptions.add(this.#kt.list.filterChanged$.subscribe(()=>this.#kt.list.complexOperationFinished$.next())),this.#Ga=new Xs(this.#kt),this.#Za=new Ns(()=>this.save(),e=>this.restoreState(e)),this._undoManager=this.#Za,this._subscriptions.add(this.#kt.list.taskAdded$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.taskChanged$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.taskRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.linkAdded$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.linkRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.complexOperationFinished$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#kt.list.evaluatingDependenciesFinished$.subscribe(()=>this.#Za.requestSnapshot())),this.#Za.initialize(),this.wireKeyboard()}#lt(e){if(!this.#kt.resources.getResourceById(e.resource.id))throw new Error("The resource is not in the list of resources");if(e.task.getResourceByResourceId(e.resource.id))throw new Error("The resource is already assigned to the task")}#Qa(e){if(this.#kt.list.getTasksUsingResource(e.resource).length>0)throw new Error("The resource cannot be removed, because is used by one or more tasks")}indent(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.indent(e)}outdent(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.outdent(e)}moveUp(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.moveUp(e)}moveDown(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.moveDown(e)}async copy(){var e=this.#kt.sheetSelectedTasks$.getValue();await this.#Ga.copy(e)}async cut(){if(this.canEdit){var e=this.#kt.sheetSelectedTasks$.getValue();await this.#Ga.cut(e)}}async paste(){if(!this.canEdit)return null;this._undoManager.beginBatch();try{var e=await this.#Ga.paste();return e&&this.#qa.tasksPasted$.next(e),e}finally{this._undoManager.endBatch()}}scrollToTask(e){if("empty"!==e.type){for(var t=e.parent;t;)t.collapsed&&t.toggleCollapsed(),t=t.parent;e.startTime&&this.scrollToDate(e.startTime),this.#pa.scrollToItem(e)}}zoomToFit(e){var t=null,r=null;if(e&&e.length>0)for(var i of e)i.startTime&&(!t||i.startTime.getTime()<t.getTime())&&(t=i.startTime),i.endTime&&(!r||i.endTime.getTime()>r.getTime())&&(r=i.endTime);else t=this.#kt.list.minStartTime,r=this.#kt.list.maxEndTime;this.zoomToFitRange(t,r)}get settings(){return this.#kt.settings}save(){for(var e=-1,t=0;t<this.list.length;t++){"empty"!=(i=this.list.getTask(t)).type&&(e=t)}var r=[];for(t=0;t<=e;t++){var i=this.list.getTask(t);r.push(i.toAny())}var s=[];for(t=0;t<this.list.linksLength;t++){var n=this.list.getLink(t);s.push(n.toAny())}var a={startDate:qt(this.projectTimeline.startDate),endDate:qt(this.projectTimeline.endDate)},o=[];for(t=0;t<this.resources.length;t++)o.push(this.resources.getResource(t).toAny());var l=this.markers.map(e=>({date:qt(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})),h={tasks:r,links:s,resources:o,projectTimeline:a,taskCount:this.list.length,showTodayLine:this.showTodayLine,markers:l};return JSON.stringify(h,(e,t)=>null===t?void 0:t)}restoreState(e){this.sheet.clearSelection();var t=JSON.parse(e);if(t.resources){for(var r=[],i=0;i<t.resources.length;i++)r.push(bs.fromAny(t.resources[i]));this.#kt.resources.assign(r)}var s=[];for(i=0;i<t.tasks.length;i++){var n=(o=t.tasks[i]).id;(a=new cr(n,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies)).deserializeProperties(o,this.#kt.resources),s.push(a)}if(void 0!==t.taskCount&&null!==t.taskCount)for(;s.length<t.taskCount;)s.push(new cr(null,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies));for(i=0;i<t.tasks.length;i++){var a,o=t.tasks[i];(a=s[i]).deserializePropertiesHierarchy(o,s)}var l=[];for(i=0;i<t.links.length;i++){o=t.links[i];var h=gr.fromAny(o,s);l.push(h)}if(this.list.assign(s,l),t.projectTimeline)this.#kt.projectTimeline$.next(new Sr(new Date(t.projectTimeline.startDate),new Date(t.projectTimeline.endDate)));else{var d=this.list.minStartTime,c=this.list.maxEndTime;d&&c&&this.#kt.projectTimeline$.next(new Sr(d,c))}if(void 0!==t.showTodayLine&&this.#kt.showTodayLine$.next(t.showTodayLine),t.markers){var u=t.markers.map(e=>({date:new Date(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle}));this.#kt.markers$.next(u)}}async exportToImage(){return new Bs(this.#kt,this.#pa).exportToImage()}exportToCsv(e){return new Fs(this.#kt,this.#pa).exportToCsv(e)}async exportToPdf(e){return new Os(this.#kt,this.#pa).exportToPdf(e)}async exportToExcel(e){return new Fs(this.#kt,this.#pa).exportToExcel(e)}#eo(){new Cs(this).recalculate(),this.#to()}#to(){this.#kt.showCriticalPath$.getValue()&&this.#_a()}#_a(){new xs(this.#kt.list,this.#kt.calendar).calculate()}#Ja(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);t.earlyStart=null,t.earlyFinish=null,t.lateStart=null,t.lateFinish=null,t.totalFloat=null,t.freeFloat=null,t.isCritical=!1}}}class Zs{table;settings;locale$;calendar$;list;resources;timeline;get sheetScrollTop$(){return this.table.scrollTop$}get sheetRowAdded$(){return this.table.rowAdded$}get sheetSelectedTasks$(){return this.table.selectedItems$}get sheetFocusedCell$(){return this.table.focusedCell$}get sheetCellEditing$(){return this.table.cellEditing$}get sheetCellDialogEdit$(){return this.table.cellDialogEdit$}get sheetCellInputEdit$(){return this.table.cellInputEdit$}get sheetCellInvalidValue$(){return this.table.cellInvalidValue$}get sheetRowContextMenu$(){return this.table.rowContextMenu$}get sheetColumnHeaderContextMenu$(){return this.table.columnHeaderContextMenu$}get sheetColumnResized$(){return this.table.columnResized$}get sheetColumnReordered$(){return this.table.columnReordered$}get canEdit$(){return this.table.canEdit$}get canEdit(){return this.table.canEdit}sheetRowMouseOver$=new t(null);autoScrolling=!1;chartMouseWheel$;chartRedrawn$;chartBackgroundRedrawn$;chartCursor$;chartTaskHover$;theme$;showGridLines$=new t(!0);showCriticalPath$=new t(!1);showBaseline$=new t(!1);showTodayLine$=new t(!0);markers$=new t([]);taskDblClick$=new e;taskContextMenu$=new e;chartContextMenu$=new e;projectTimeline$;dividerPositionChanged$=new e;dividerResizing$=new t(!1);constructor(){this.projectTimeline$=new t(new Sr(Bt(),Ft(180))),this.locale$=new t(js),this.settings=new qs(this),this.calendar$=new t(new yr),this.timeline=new Hi(this.calendar$,this.locale$),this.list=new fr(this.calendar$,this.projectTimeline$,this.locale$),this.resources=new fs,this.theme$=new t(this.#ro());var r=new Us(this.list);this.table=new Ws(r,this.theme$.getValue().rowHeight),this.chartMouseWheel$=new e,this.chartRedrawn$=new e,this.chartBackgroundRedrawn$=new e,this.chartCursor$=new e,this.chartTaskHover$=new t(null)}#ro(){return new vs}getContentBottom(e){for(var t=this.theme$.getValue(),r=t.rowHeight+1,i=0,s=0;s<this.list.length;s++)this.list.getTask(s).hidden||i++;var n=t.contentTop+i*r;return Math.min(n,e)}getRowY(e){for(var t=this.theme$.getValue(),r=t.rowHeight+1,i=this.list.indexOf(e),s=0,n=0;n<i;n++){this.list.getTask(n).hidden||s++}return t.contentTop-this.sheetScrollTop$.getValue()+r*s}get calendar(){return this.calendar$.getValue()}}class Gs{#T=new r;taskAdded$=new e;taskChanged$=new e;taskRemoved$=new e;taskDblClick$=new e;taskContextMenu$=new e;chartContextMenu$=new e;sheetRowContextMenu$=new e;sheetColumnHeaderContextMenu$=new e;sheetColumnResized$=new e;sheetColumnReordered$=new e;sheetCellDialogEdit$=new e;sheetCellInputEdit$=new e;sheetCellEditing$=new e;sheetCellInvalidValue$=new e;projectTimeline$=new e;linkAdded$=new e;linkRemoved$=new e;tasksPasted$=new e;undone$=new e;redone$=new e;constructor(e){this.#T.add(e.taskDblClick$.subscribe(e=>{this.taskDblClick$.next(e)})),this.#T.add(e.taskContextMenu$.subscribe(e=>{this.taskContextMenu$.next(e)})),this.#T.add(e.chartContextMenu$.subscribe(e=>{this.chartContextMenu$.next(e)})),this.#T.add(e.sheetRowContextMenu$.subscribe(e=>{this.sheetRowContextMenu$.next(e)})),this.#T.add(e.sheetColumnHeaderContextMenu$.subscribe(e=>{this.sheetColumnHeaderContextMenu$.next(e)})),this.#T.add(e.sheetColumnResized$.subscribe(e=>{this.sheetColumnResized$.next(e)})),this.#T.add(e.sheetColumnReordered$.subscribe(e=>{this.sheetColumnReordered$.next(e)})),this.#T.add(e.sheetCellDialogEdit$.subscribe(e=>{this.sheetCellDialogEdit$.next(e)})),this.#T.add(e.sheetCellInputEdit$.subscribe(e=>{this.sheetCellInputEdit$.next(e)})),this.#T.add(e.sheetCellEditing$.subscribe(e=>{this.sheetCellEditing$.next(e)})),this.#T.add(e.sheetCellInvalidValue$.subscribe(()=>{this.sheetCellInvalidValue$.next()})),this.#T.add(e.list.taskAdded$.subscribe(e=>{this.taskAdded$.next(e)})),this.#T.add(e.list.taskChanged$.subscribe(e=>{this.taskChanged$.next(e)})),this.#T.add(e.list.taskRemoved$.subscribe(e=>{this.taskRemoved$.next(e)})),this.#T.add(e.list.linkAdded$.subscribe(e=>{this.linkAdded$.next(e)})),this.#T.add(e.list.linkRemoved$.subscribe(e=>{this.linkRemoved$.next(e)})),this.#T.add(e.projectTimeline$.subscribe(e=>{this.projectTimeline$.next(e)}))}destroy(){this.#T.unsubscribe()}}class qs{ctx;#io;get currencySymbol(){return this.#io}set currencySymbol(e){e!=this.#io&&(this.#io=e,this.#f())}#so;get currencySymbolDisplayMode(){return this.#so}set currencySymbolDisplayMode(e){e!=this.#so&&(this.#so=e,this.#f())}get locale(){return this.ctx.locale$.getValue()}set locale(e){this.ctx.locale$.next(e),this.#f()}get theme(){return this.ctx.theme$.getValue()}set theme(e){this.ctx.theme$.next(e),this.#f()}changed$=new e;constructor(e){this.ctx=e,this.#io="$",this.#so="beforeAmountWithSpace"}#f(){this.changed$.next()}}const _s=js,Js={language:"cs-CZ",columns:{name:"Název",length:"Délka",start:"Začátek",end:"Konec",progress:"Průběh",resources:"Zdroje",work:"Práce",cost:"Náklady"},columnTooltips:{work:"Pracovní dny nebo hodiny přidělené tomuto úkolu. Vypočítáno automaticky při přiřazení jednoho nebo více zdrojů.",cost:"Náklady vypočítané automaticky při přiřazení jednoho nebo více zdrojů."},tooltips:{addTask:"Přidat úkol",addTaskPart:"Přidat část úkolu",moveTask:"Přesunout úkol",moveTaskPart:"Přesunout část úkolu",resizeTask:"Změnit velikost úkolu",resizeTaskPart:"Změnit velikost části úkolu",moveMilestone:"Přesunout milník",setProgress:"Nastavit průběh",addLink:"Přidat vazbu"},labels:{start:"Začátek",end:"Konec",length:"Délka",progress:"Průběh",from:"Od",to:"Do",type:"Typ",lag:"Prodleva"},constraints:{asap:"Co nejdříve",alap:"Co nejpozději",mso:"Musí začít v",mfo:"Musí skončit v",snet:"Začít ne dříve než",snlt:"Začít ne později než",fnet:"Skončit ne dříve než",fnlt:"Skončit ne později než"},linkTypes:{finishToStart:"Konec → Začátek",startToStart:"Začátek → Začátek",finishToFinish:"Konec → Konec",startToFinish:"Začátek → Konec"},warnings:{behindSchedule:"Úkol je pozadu za plánem",behindScheduleByOneDay:"o jeden den",behindScheduleByDays:e=>`o ${e} dní`,constraintViolation:(e,t)=>`Úkol porušuje omezení '${e} ${t}'`},export:{tasksSheetName:"Úkoly",linksSheetName:"Vazby",resourcesSheetName:"Zdroje",eventsSheetName:"Události",calendarsSheetName:"Kalendáře"},scheduler:{resource:"Zdroj",name:"Název",type:"Typ",addEvent:"Přidat událost",moveEvent:"Přesunout událost",resizeEvent:"Změnit velikost události"},calendar:{today:"Dnes",month:"Měsíc",week:"Týden",day:"Den",agenda:"Agenda",allDay:"celý den",noEvents:"Žádné události",more:e=>`+${e} dalších`,myCalendars:"Moje kalendáře",addCalendar:"Přidat kalendář",ariaCalendar:"Kalendář událostí",ariaSidebar:"Postranní panel kalendáře",ariaNavigation:"Navigace",ariaViewMode:"Režim zobrazení",ariaGoToToday:"Přejít na dnešek",ariaPrevious:"Předchozí",ariaNext:"Další",ariaAllDayEvents:"Celodenní události",ariaCalendarGrid:"Mřížka kalendáře",ariaSelectMonthYear:"Vybrat měsíc a rok",ariaToggleCalendar:e=>`Zobrazit nebo skrýt ${e}`,ariaRemoveCalendar:e=>`Odebrat ${e}`,ariaMoreEvents:e=>`${e} dalších událostí`}},Qs={language:"de-DE",columns:{name:"Name",length:"Dauer",start:"Anfang",end:"Ende",progress:"Fortschritt",resources:"Ressourcen",work:"Arbeit",cost:"Kosten"},columnTooltips:{work:"Arbeitstage oder -stunden für diese Aufgabe. Wird automatisch berechnet, wenn eine oder mehrere Ressourcen zugewiesen sind.",cost:"Kosten werden automatisch berechnet, wenn eine oder mehrere Ressourcen zugewiesen sind."},tooltips:{addTask:"Aufgabe hinzufügen",addTaskPart:"Aufgabenteil hinzufügen",moveTask:"Aufgabe verschieben",moveTaskPart:"Aufgabenteil verschieben",resizeTask:"Aufgabe skalieren",resizeTaskPart:"Aufgabenteil skalieren",moveMilestone:"Meilenstein verschieben",setProgress:"Fortschritt festlegen",addLink:"Verknüpfung hinzufügen"},labels:{start:"Anfang",end:"Ende",length:"Dauer",progress:"Fortschritt",from:"Von",to:"Nach",type:"Typ",lag:"Verzögerung"},constraints:{asap:"So früh wie möglich",alap:"So spät wie möglich",mso:"Muss anfangen am",mfo:"Muss enden am",snet:"Anfang nicht früher als",snlt:"Anfang nicht später als",fnet:"Ende nicht früher als",fnlt:"Ende nicht später als"},linkTypes:{finishToStart:"Ende → Anfang",startToStart:"Anfang → Anfang",finishToFinish:"Ende → Ende",startToFinish:"Anfang → Ende"},warnings:{behindSchedule:"Die Aufgabe ist im Verzug",behindScheduleByOneDay:"um einen Tag",behindScheduleByDays:e=>`um ${e} Tage`,constraintViolation:(e,t)=>`Aufgabe verletzt Einschränkung '${e} ${t}'`},export:{tasksSheetName:"Aufgaben",linksSheetName:"Verknüpfungen",resourcesSheetName:"Ressourcen",eventsSheetName:"Ereignisse",calendarsSheetName:"Kalender"},scheduler:{resource:"Ressource",name:"Name",type:"Typ",addEvent:"Ereignis hinzufügen",moveEvent:"Ereignis verschieben",resizeEvent:"Ereignisgröße ändern"},calendar:{today:"Heute",month:"Monat",week:"Woche",day:"Tag",agenda:"Agenda",allDay:"Ganztägig",noEvents:"Keine Ereignisse",more:e=>`+${e} weitere`,myCalendars:"Meine Kalender",addCalendar:"Kalender hinzufügen",ariaCalendar:"Terminkalender",ariaSidebar:"Kalender-Seitenleiste",ariaNavigation:"Navigation",ariaViewMode:"Ansichtsmodus",ariaGoToToday:"Gehe zu heute",ariaPrevious:"Zurück",ariaNext:"Weiter",ariaAllDayEvents:"Ganztägige Termine",ariaCalendarGrid:"Kalenderraster",ariaSelectMonthYear:"Monat und Jahr auswählen",ariaToggleCalendar:e=>`${e} ein-/ausblenden`,ariaRemoveCalendar:e=>`${e} entfernen`,ariaMoreEvents:e=>`${e} weitere Termine`}},en={language:"es-ES",columns:{name:"Nombre",length:"Duración",start:"Inicio",end:"Fin",progress:"Progreso",resources:"Recursos",work:"Trabajo",cost:"Costo"},columnTooltips:{work:"Días u horas de trabajo asignados a esta tarea. Se calcula automáticamente cuando se asignan uno o más recursos.",cost:"Costo calculado automáticamente cuando se asignan uno o más recursos."},tooltips:{addTask:"Agregar tarea",addTaskPart:"Agregar parte de tarea",moveTask:"Mover tarea",moveTaskPart:"Mover parte de tarea",resizeTask:"Redimensionar tarea",resizeTaskPart:"Redimensionar parte de tarea",moveMilestone:"Mover hito",setProgress:"Establecer progreso",addLink:"Agregar vínculo"},labels:{start:"Inicio",end:"Fin",length:"Duración",progress:"Progreso",from:"Desde",to:"Hasta",type:"Tipo",lag:"Retardo"},constraints:{asap:"Lo antes posible",alap:"Lo más tarde posible",mso:"Debe comenzar el",mfo:"Debe finalizar el",snet:"No comenzar antes del",snlt:"No comenzar después del",fnet:"No finalizar antes del",fnlt:"No finalizar después del"},linkTypes:{finishToStart:"Fin → Inicio",startToStart:"Inicio → Inicio",finishToFinish:"Fin → Fin",startToFinish:"Inicio → Fin"},warnings:{behindSchedule:"La tarea está retrasada",behindScheduleByOneDay:"por un día",behindScheduleByDays:e=>`por ${e} días`,constraintViolation:(e,t)=>`La tarea viola la restricción '${e} ${t}'`},export:{tasksSheetName:"Tareas",linksSheetName:"Vínculos",resourcesSheetName:"Recursos",eventsSheetName:"Eventos",calendarsSheetName:"Calendarios"},scheduler:{resource:"Recurso",name:"Nombre",type:"Tipo",addEvent:"Añadir evento",moveEvent:"Mover evento",resizeEvent:"Redimensionar evento"},calendar:{today:"Hoy",month:"Mes",week:"Semana",day:"Día",agenda:"Agenda",allDay:"Todo el día",noEvents:"Sin eventos",more:e=>`+${e} más`,myCalendars:"Mis calendarios",addCalendar:"Añadir calendario",ariaCalendar:"Calendario de eventos",ariaSidebar:"Panel lateral del calendario",ariaNavigation:"Navegación",ariaViewMode:"Modo de vista",ariaGoToToday:"Ir a hoy",ariaPrevious:"Anterior",ariaNext:"Siguiente",ariaAllDayEvents:"Eventos de todo el día",ariaCalendarGrid:"Cuadrícula del calendario",ariaSelectMonthYear:"Seleccionar mes y año",ariaToggleCalendar:e=>`Mostrar u ocultar ${e}`,ariaRemoveCalendar:e=>`Eliminar ${e}`,ariaMoreEvents:e=>`${e} eventos más`}},tn={language:"fr-FR",columns:{name:"Nom",length:"Durée",start:"Début",end:"Fin",progress:"Avancement",resources:"Ressources",work:"Travail",cost:"Coût"},columnTooltips:{work:"Jours ou heures de travail alloués à cette tâche. Calculé automatiquement lorsqu'une ou plusieurs ressources sont affectées.",cost:"Coût calculé automatiquement lorsqu'une ou plusieurs ressources sont affectées."},tooltips:{addTask:"Ajouter une tâche",addTaskPart:"Ajouter une partie de tâche",moveTask:"Déplacer la tâche",moveTaskPart:"Déplacer la partie de tâche",resizeTask:"Redimensionner la tâche",resizeTaskPart:"Redimensionner la partie de tâche",moveMilestone:"Déplacer le jalon",setProgress:"Définir l'avancement",addLink:"Ajouter un lien"},labels:{start:"Début",end:"Fin",length:"Durée",progress:"Avancement",from:"De",to:"À",type:"Type",lag:"Décalage"},constraints:{asap:"Dès que possible",alap:"Le plus tard possible",mso:"Doit commencer le",mfo:"Doit finir le",snet:"Début au plus tôt le",snlt:"Début au plus tard le",fnet:"Fin au plus tôt le",fnlt:"Fin au plus tard le"},linkTypes:{finishToStart:"Fin → Début",startToStart:"Début → Début",finishToFinish:"Fin → Fin",startToFinish:"Début → Fin"},warnings:{behindSchedule:"La tâche est en retard",behindScheduleByOneDay:"d'un jour",behindScheduleByDays:e=>`de ${e} jours`,constraintViolation:(e,t)=>`La tâche viole la contrainte '${e} ${t}'`},export:{tasksSheetName:"Tâches",linksSheetName:"Liens",resourcesSheetName:"Ressources",eventsSheetName:"Événements",calendarsSheetName:"Calendriers"},scheduler:{resource:"Ressource",name:"Nom",type:"Type",addEvent:"Ajouter un événement",moveEvent:"Déplacer l'événement",resizeEvent:"Redimensionner l'événement"},calendar:{today:"Aujourd'hui",month:"Mois",week:"Semaine",day:"Jour",agenda:"Agenda",allDay:"Journée",noEvents:"Aucun événement",more:e=>`+${e} de plus`,myCalendars:"Mes agendas",addCalendar:"Ajouter un agenda",ariaCalendar:"Calendrier d'événements",ariaSidebar:"Panneau latéral du calendrier",ariaNavigation:"Navigation",ariaViewMode:"Mode d'affichage",ariaGoToToday:"Aller à aujourd'hui",ariaPrevious:"Précédent",ariaNext:"Suivant",ariaAllDayEvents:"Événements toute la journée",ariaCalendarGrid:"Grille du calendrier",ariaSelectMonthYear:"Sélectionner mois et année",ariaToggleCalendar:e=>`Afficher ou masquer ${e}`,ariaRemoveCalendar:e=>`Supprimer ${e}`,ariaMoreEvents:e=>`${e} événements de plus`}},rn={language:"it-IT",columns:{name:"Nome",length:"Durata",start:"Inizio",end:"Fine",progress:"Avanzamento",resources:"Risorse",work:"Lavoro",cost:"Costo"},columnTooltips:{work:"Giorni o ore di lavoro assegnati a questa attività. Calcolato automaticamente quando vengono assegnate una o più risorse.",cost:"Costo calcolato automaticamente quando vengono assegnate una o più risorse."},tooltips:{addTask:"Aggiungi attività",addTaskPart:"Aggiungi parte dell'attività",moveTask:"Sposta attività",moveTaskPart:"Sposta parte dell'attività",resizeTask:"Ridimensiona attività",resizeTaskPart:"Ridimensiona parte dell'attività",moveMilestone:"Sposta milestone",setProgress:"Imposta avanzamento",addLink:"Aggiungi collegamento"},labels:{start:"Inizio",end:"Fine",length:"Durata",progress:"Avanzamento",from:"Da",to:"A",type:"Tipo",lag:"Ritardo"},constraints:{asap:"Il prima possibile",alap:"Il più tardi possibile",mso:"Deve iniziare il",mfo:"Deve finire il",snet:"Non iniziare prima del",snlt:"Non iniziare dopo il",fnet:"Non finire prima del",fnlt:"Non finire dopo il"},linkTypes:{finishToStart:"Fine → Inizio",startToStart:"Inizio → Inizio",finishToFinish:"Fine → Fine",startToFinish:"Inizio → Fine"},warnings:{behindSchedule:"L'attività è in ritardo",behindScheduleByOneDay:"di un giorno",behindScheduleByDays:e=>`di ${e} giorni`,constraintViolation:(e,t)=>`L'attività viola il vincolo '${e} ${t}'`},export:{tasksSheetName:"Attività",linksSheetName:"Collegamenti",resourcesSheetName:"Risorse",eventsSheetName:"Eventi",calendarsSheetName:"Calendari"},scheduler:{resource:"Risorsa",name:"Nome",type:"Tipo",addEvent:"Aggiungi evento",moveEvent:"Sposta evento",resizeEvent:"Ridimensiona evento"},calendar:{today:"Oggi",month:"Mese",week:"Settimana",day:"Giorno",agenda:"Agenda",allDay:"Tutto il giorno",noEvents:"Nessun evento",more:e=>`+${e} altri`,myCalendars:"I miei calendari",addCalendar:"Aggiungi calendario",ariaCalendar:"Calendario eventi",ariaSidebar:"Pannello laterale del calendario",ariaNavigation:"Navigazione",ariaViewMode:"Modalità di visualizzazione",ariaGoToToday:"Vai a oggi",ariaPrevious:"Precedente",ariaNext:"Successivo",ariaAllDayEvents:"Eventi per tutto il giorno",ariaCalendarGrid:"Griglia del calendario",ariaSelectMonthYear:"Seleziona mese e anno",ariaToggleCalendar:e=>`Mostra o nascondi ${e}`,ariaRemoveCalendar:e=>`Rimuovi ${e}`,ariaMoreEvents:e=>`altri ${e} eventi`}},sn={language:"ja-JP",columns:{name:"タスク名",length:"期間",start:"開始日",end:"終了日",progress:"進捗",resources:"リソース",work:"作業量",cost:"コスト"},columnTooltips:{work:"このタスクに割り当てられた作業日数または時間。リソースが割り当てられると自動的に計算されます。",cost:"リソースが割り当てられると自動的に計算されるコスト。"},tooltips:{addTask:"タスクを追加",addTaskPart:"タスク部分を追加",moveTask:"タスクを移動",moveTaskPart:"タスク部分を移動",resizeTask:"タスクのサイズを変更",resizeTaskPart:"タスク部分のサイズを変更",moveMilestone:"マイルストーンを移動",setProgress:"進捗を設定",addLink:"リンクを追加"},labels:{start:"開始",end:"終了",length:"期間",progress:"進捗",from:"開始タスク",to:"終了タスク",type:"種類",lag:"ラグ"},constraints:{asap:"できるだけ早く",alap:"できるだけ遅く",mso:"指定日に開始",mfo:"指定日に終了",snet:"指定日以降に開始",snlt:"指定日までに開始",fnet:"指定日以降に終了",fnlt:"指定日までに終了"},linkTypes:{finishToStart:"終了 → 開始",startToStart:"開始 → 開始",finishToFinish:"終了 → 終了",startToFinish:"開始 → 終了"},warnings:{behindSchedule:"タスクが遅延しています",behindScheduleByOneDay:"1日",behindScheduleByDays:e=>`${e}日`,constraintViolation:(e,t)=>`タスクが制約「${e} ${t}」に違反しています`},export:{tasksSheetName:"タスク",linksSheetName:"リンク",resourcesSheetName:"リソース",eventsSheetName:"イベント",calendarsSheetName:"カレンダー"},scheduler:{resource:"リソース",name:"名前",type:"タイプ",addEvent:"イベントを追加",moveEvent:"イベントを移動",resizeEvent:"イベントのサイズ変更"},calendar:{today:"今日",month:"月",week:"週",day:"日",agenda:"アジェンダ",allDay:"終日",noEvents:"イベントはありません",more:e=>`他${e}件`,myCalendars:"マイカレンダー",addCalendar:"カレンダーを追加",ariaCalendar:"イベントカレンダー",ariaSidebar:"カレンダーサイドバー",ariaNavigation:"ナビゲーション",ariaViewMode:"表示モード",ariaGoToToday:"今日に移動",ariaPrevious:"前へ",ariaNext:"次へ",ariaAllDayEvents:"終日イベント",ariaCalendarGrid:"カレンダーグリッド",ariaSelectMonthYear:"月と年を選択",ariaToggleCalendar:e=>`${e}の表示切替`,ariaRemoveCalendar:e=>`${e}を削除`,ariaMoreEvents:e=>`他${e}件のイベント`}},nn={language:"ko-KR",columns:{name:"작업명",length:"기간",start:"시작일",end:"종료일",progress:"진행률",resources:"자원",work:"작업량",cost:"비용"},columnTooltips:{work:"이 작업에 할당된 작업 일수 또는 시간. 하나 이상의 자원이 배정되면 자동으로 계산됩니다.",cost:"하나 이상의 자원이 배정되면 자동으로 계산되는 비용."},tooltips:{addTask:"작업 추가",addTaskPart:"작업 부분 추가",moveTask:"작업 이동",moveTaskPart:"작업 부분 이동",resizeTask:"작업 크기 조정",resizeTaskPart:"작업 부분 크기 조정",moveMilestone:"마일스톤 이동",setProgress:"진행률 설정",addLink:"링크 추가"},labels:{start:"시작",end:"종료",length:"기간",progress:"진행률",from:"시작 작업",to:"종료 작업",type:"유형",lag:"지연"},constraints:{asap:"가능한 빨리",alap:"가능한 늦게",mso:"지정일에 시작",mfo:"지정일에 완료",snet:"지정일 이후 시작",snlt:"지정일 이전 시작",fnet:"지정일 이후 완료",fnlt:"지정일 이전 완료"},linkTypes:{finishToStart:"완료 → 시작",startToStart:"시작 → 시작",finishToFinish:"완료 → 완료",startToFinish:"시작 → 완료"},warnings:{behindSchedule:"작업이 지연되고 있습니다",behindScheduleByOneDay:"1일",behindScheduleByDays:e=>`${e}일`,constraintViolation:(e,t)=>`작업이 제약 조건 '${e} ${t}'을(를) 위반합니다`},export:{tasksSheetName:"작업",linksSheetName:"링크",resourcesSheetName:"자원",eventsSheetName:"이벤트",calendarsSheetName:"캘린더"},scheduler:{resource:"자원",name:"이름",type:"유형",addEvent:"이벤트 추가",moveEvent:"이벤트 이동",resizeEvent:"이벤트 크기 조정"},calendar:{today:"오늘",month:"월",week:"주",day:"일",agenda:"일정",allDay:"종일",noEvents:"일정 없음",more:e=>`+${e}개 더보기`,myCalendars:"내 캘린더",addCalendar:"캘린더 추가",ariaCalendar:"이벤트 캘린더",ariaSidebar:"캘린더 사이드바",ariaNavigation:"탐색",ariaViewMode:"보기 모드",ariaGoToToday:"오늘로 이동",ariaPrevious:"이전",ariaNext:"다음",ariaAllDayEvents:"종일 이벤트",ariaCalendarGrid:"캘린더 격자",ariaSelectMonthYear:"월 및 연도 선택",ariaToggleCalendar:e=>`${e} 표시/숨기기`,ariaRemoveCalendar:e=>`${e} 삭제`,ariaMoreEvents:e=>`${e}개 더 많은 이벤트`}},an={language:"nl-NL",columns:{name:"Naam",length:"Duur",start:"Start",end:"Einde",progress:"Voortgang",resources:"Resources",work:"Werk",cost:"Kosten"},columnTooltips:{work:"Werkdagen of -uren voor deze taak. Wordt automatisch berekend wanneer een of meer resources zijn toegewezen.",cost:"Kosten worden automatisch berekend wanneer een of meer resources zijn toegewezen."},tooltips:{addTask:"Taak toevoegen",addTaskPart:"Taakonderdeel toevoegen",moveTask:"Taak verplaatsen",moveTaskPart:"Taakonderdeel verplaatsen",resizeTask:"Taak schalen",resizeTaskPart:"Taakonderdeel schalen",moveMilestone:"Mijlpaal verplaatsen",setProgress:"Voortgang instellen",addLink:"Koppeling toevoegen"},labels:{start:"Start",end:"Einde",length:"Duur",progress:"Voortgang",from:"Van",to:"Naar",type:"Type",lag:"Vertraging"},constraints:{asap:"Zo snel mogelijk",alap:"Zo laat mogelijk",mso:"Moet starten op",mfo:"Moet eindigen op",snet:"Start niet eerder dan",snlt:"Start niet later dan",fnet:"Einde niet eerder dan",fnlt:"Einde niet later dan"},linkTypes:{finishToStart:"Einde → Start",startToStart:"Start → Start",finishToFinish:"Einde → Einde",startToFinish:"Start → Einde"},warnings:{behindSchedule:"De taak loopt achter op schema",behindScheduleByOneDay:"met één dag",behindScheduleByDays:e=>`met ${e} dagen`,constraintViolation:(e,t)=>`Taak schendt beperking '${e} ${t}'`},export:{tasksSheetName:"Taken",linksSheetName:"Koppelingen",resourcesSheetName:"Resources",eventsSheetName:"Evenementen",calendarsSheetName:"Agenda's"},scheduler:{resource:"Resource",name:"Naam",type:"Type",addEvent:"Gebeurtenis toevoegen",moveEvent:"Gebeurtenis verplaatsen",resizeEvent:"Gebeurtenis formaat wijzigen"},calendar:{today:"Vandaag",month:"Maand",week:"Week",day:"Dag",agenda:"Agenda",allDay:"Hele dag",noEvents:"Geen evenementen",more:e=>`+${e} meer`,myCalendars:"Mijn agenda's",addCalendar:"Agenda toevoegen",ariaCalendar:"Evenementenagenda",ariaSidebar:"Zijpaneel agenda",ariaNavigation:"Navigatie",ariaViewMode:"Weergavemodus",ariaGoToToday:"Ga naar vandaag",ariaPrevious:"Vorige",ariaNext:"Volgende",ariaAllDayEvents:"Hele dag evenementen",ariaCalendarGrid:"Agendaraster",ariaSelectMonthYear:"Maand en jaar selecteren",ariaToggleCalendar:e=>`${e} tonen of verbergen`,ariaRemoveCalendar:e=>`${e} verwijderen`,ariaMoreEvents:e=>`${e} meer evenementen`}},on={language:"pl-PL",columns:{name:"Nazwa",length:"Czas trwania",start:"Początek",end:"Koniec",progress:"Postęp",resources:"Zasoby",work:"Praca",cost:"Koszt"},columnTooltips:{work:"Dni lub godziny pracy przydzielone do tego zadania. Obliczane automatycznie po przypisaniu zasobów.",cost:"Koszt obliczany automatycznie po przypisaniu zasobów."},tooltips:{addTask:"Dodaj zadanie",addTaskPart:"Dodaj część zadania",moveTask:"Przenieś zadanie",moveTaskPart:"Przenieś część zadania",resizeTask:"Zmień rozmiar zadania",resizeTaskPart:"Zmień rozmiar części zadania",moveMilestone:"Przenieś kamień milowy",setProgress:"Ustaw postęp",addLink:"Dodaj powiązanie"},labels:{start:"Początek",end:"Koniec",length:"Czas trwania",progress:"Postęp",from:"Od",to:"Do",type:"Typ",lag:"Opóźnienie"},constraints:{asap:"Jak najwcześniej",alap:"Jak najpóźniej",mso:"Musi się rozpocząć",mfo:"Musi się zakończyć",snet:"Początek nie wcześniej niż",snlt:"Początek nie później niż",fnet:"Koniec nie wcześniej niż",fnlt:"Koniec nie później niż"},linkTypes:{finishToStart:"Koniec → Początek",startToStart:"Początek → Początek",finishToFinish:"Koniec → Koniec",startToFinish:"Początek → Koniec"},warnings:{behindSchedule:"Zadanie jest opóźnione",behindScheduleByOneDay:"o jeden dzień",behindScheduleByDays:e=>`o ${e} dni`,constraintViolation:(e,t)=>`Zadanie narusza ograniczenie '${e} ${t}'`},export:{tasksSheetName:"Zadania",linksSheetName:"Powiązania",resourcesSheetName:"Zasoby",eventsSheetName:"Zdarzenia",calendarsSheetName:"Kalendarze"},scheduler:{resource:"Zasób",name:"Nazwa",type:"Typ",addEvent:"Dodaj wydarzenie",moveEvent:"Przenieś wydarzenie",resizeEvent:"Zmień rozmiar wydarzenia"},calendar:{today:"Dzisiaj",month:"Miesiąc",week:"Tydzień",day:"Dzień",agenda:"Agenda",allDay:"Cały dzień",noEvents:"Brak wydarzeń",more:e=>`+${e} więcej`,myCalendars:"Moje kalendarze",addCalendar:"Dodaj kalendarz",ariaCalendar:"Kalendarz wydarzeń",ariaSidebar:"Panel boczny kalendarza",ariaNavigation:"Nawigacja",ariaViewMode:"Tryb widoku",ariaGoToToday:"Przejdź do dzisiaj",ariaPrevious:"Poprzedni",ariaNext:"Następny",ariaAllDayEvents:"Wydarzenia całodniowe",ariaCalendarGrid:"Siatka kalendarza",ariaSelectMonthYear:"Wybierz miesiąc i rok",ariaToggleCalendar:e=>`Pokaż lub ukryj ${e}`,ariaRemoveCalendar:e=>`Usuń ${e}`,ariaMoreEvents:e=>`jeszcze ${e} wydarzeń`}},ln={language:"pt",columns:{name:"Nome",length:"Duração",start:"Início",end:"Fim",progress:"Progresso",resources:"Recursos",work:"Trabalho",cost:"Custo"},columnTooltips:{work:"Dias ou horas de trabalho alocados a esta tarefa. Calculado automaticamente quando um ou mais recursos são atribuídos.",cost:"Custo calculado automaticamente quando um ou mais recursos são atribuídos."},tooltips:{addTask:"Adicionar tarefa",addTaskPart:"Adicionar parte da tarefa",moveTask:"Mover tarefa",moveTaskPart:"Mover parte da tarefa",resizeTask:"Redimensionar tarefa",resizeTaskPart:"Redimensionar parte da tarefa",moveMilestone:"Mover marco",setProgress:"Definir progresso",addLink:"Adicionar ligação"},labels:{start:"Início",end:"Fim",length:"Duração",progress:"Progresso",from:"De",to:"Para",type:"Tipo",lag:"Atraso"},constraints:{asap:"O mais cedo possível",alap:"O mais tarde possível",mso:"Deve iniciar em",mfo:"Deve terminar em",snet:"Não iniciar antes de",snlt:"Não iniciar depois de",fnet:"Não terminar antes de",fnlt:"Não terminar depois de"},linkTypes:{finishToStart:"Fim → Início",startToStart:"Início → Início",finishToFinish:"Fim → Fim",startToFinish:"Início → Fim"},warnings:{behindSchedule:"A tarefa está atrasada",behindScheduleByOneDay:"um dia",behindScheduleByDays:e=>`${e} dias`,constraintViolation:(e,t)=>`A tarefa viola a restrição '${e} ${t}'`},export:{tasksSheetName:"Tarefas",linksSheetName:"Ligações",resourcesSheetName:"Recursos",eventsSheetName:"Eventos",calendarsSheetName:"Calendários"},scheduler:{resource:"Recurso",name:"Nome",type:"Tipo",addEvent:"Adicionar evento",moveEvent:"Mover evento",resizeEvent:"Redimensionar evento"},calendar:{today:"Hoje",month:"Mês",week:"Semana",day:"Dia",agenda:"Agenda",allDay:"Dia inteiro",noEvents:"Sem eventos",more:e=>`+${e} mais`,myCalendars:"Meus calendários",addCalendar:"Adicionar calendário",ariaCalendar:"Calendário de eventos",ariaSidebar:"Painel lateral do calendário",ariaNavigation:"Navegação",ariaViewMode:"Modo de visualização",ariaGoToToday:"Ir para hoje",ariaPrevious:"Anterior",ariaNext:"Próximo",ariaAllDayEvents:"Eventos de dia inteiro",ariaCalendarGrid:"Grade do calendário",ariaSelectMonthYear:"Selecionar mês e ano",ariaToggleCalendar:e=>`Mostrar ou ocultar ${e}`,ariaRemoveCalendar:e=>`Remover ${e}`,ariaMoreEvents:e=>`mais ${e} eventos`}},hn={language:"ru-RU",columns:{name:"Название",length:"Длительность",start:"Начало",end:"Окончание",progress:"Прогресс",resources:"Ресурсы",work:"Трудозатраты",cost:"Стоимость"},columnTooltips:{work:"Рабочие дни или часы, выделенные на задачу. Рассчитываются автоматически при назначении ресурсов.",cost:"Стоимость рассчитывается автоматически при назначении ресурсов."},tooltips:{addTask:"Добавить задачу",addTaskPart:"Добавить часть задачи",moveTask:"Переместить задачу",moveTaskPart:"Переместить часть задачи",resizeTask:"Изменить размер задачи",resizeTaskPart:"Изменить размер части задачи",moveMilestone:"Переместить веху",setProgress:"Установить прогресс",addLink:"Добавить связь"},labels:{start:"Начало",end:"Окончание",length:"Длительность",progress:"Прогресс",from:"От",to:"До",type:"Тип",lag:"Задержка"},constraints:{asap:"Как можно раньше",alap:"Как можно позже",mso:"Начало не ранее",mfo:"Окончание не ранее",snet:"Начало не раньше чем",snlt:"Начало не позже чем",fnet:"Окончание не раньше чем",fnlt:"Окончание не позже чем"},linkTypes:{finishToStart:"Окончание → Начало",startToStart:"Начало → Начало",finishToFinish:"Окончание → Окончание",startToFinish:"Начало → Окончание"},warnings:{behindSchedule:"Задача отстаёт от графика",behindScheduleByOneDay:"на один день",behindScheduleByDays:e=>`на ${e} дн.`,constraintViolation:(e,t)=>`Задача нарушает ограничение '${e} ${t}'`},export:{tasksSheetName:"Задачи",linksSheetName:"Связи",resourcesSheetName:"Ресурсы",eventsSheetName:"События",calendarsSheetName:"Календари"},scheduler:{resource:"Ресурс",name:"Имя",type:"Тип",addEvent:"Добавить событие",moveEvent:"Переместить событие",resizeEvent:"Изменить размер события"},calendar:{today:"Сегодня",month:"Месяц",week:"Неделя",day:"День",agenda:"Повестка",allDay:"Весь день",noEvents:"Нет событий",more:e=>`ещё ${e}`,myCalendars:"Мои календари",addCalendar:"Добавить календарь",ariaCalendar:"Календарь событий",ariaSidebar:"Боковая панель календаря",ariaNavigation:"Навигация",ariaViewMode:"Режим просмотра",ariaGoToToday:"Перейти к сегодня",ariaPrevious:"Назад",ariaNext:"Вперёд",ariaAllDayEvents:"События на весь день",ariaCalendarGrid:"Сетка календаря",ariaSelectMonthYear:"Выбрать месяц и год",ariaToggleCalendar:e=>`Показать или скрыть ${e}`,ariaRemoveCalendar:e=>`Удалить ${e}`,ariaMoreEvents:e=>`ещё ${e} событий`}},dn={language:"sv-SE",columns:{name:"Namn",length:"Varaktighet",start:"Start",end:"Slut",progress:"Förlopp",resources:"Resurser",work:"Arbete",cost:"Kostnad"},columnTooltips:{work:"Arbetsdagar eller timmar för denna uppgift. Beräknas automatiskt när en eller flera resurser är tilldelade.",cost:"Kostnad beräknas automatiskt när en eller flera resurser är tilldelade."},tooltips:{addTask:"Lägg till uppgift",addTaskPart:"Lägg till uppgiftsdel",moveTask:"Flytta uppgift",moveTaskPart:"Flytta uppgiftsdel",resizeTask:"Ändra storlek på uppgift",resizeTaskPart:"Ändra storlek på uppgiftsdel",moveMilestone:"Flytta milstolpe",setProgress:"Ange förlopp",addLink:"Lägg till koppling"},labels:{start:"Start",end:"Slut",length:"Varaktighet",progress:"Förlopp",from:"Från",to:"Till",type:"Typ",lag:"Fördröjning"},constraints:{asap:"Så snart som möjligt",alap:"Så sent som möjligt",mso:"Måste starta den",mfo:"Måste sluta den",snet:"Start inte tidigare än",snlt:"Start inte senare än",fnet:"Slut inte tidigare än",fnlt:"Slut inte senare än"},linkTypes:{finishToStart:"Slut → Start",startToStart:"Start → Start",finishToFinish:"Slut → Slut",startToFinish:"Start → Slut"},warnings:{behindSchedule:"Uppgiften ligger efter schemat",behindScheduleByOneDay:"med en dag",behindScheduleByDays:e=>`med ${e} dagar`,constraintViolation:(e,t)=>`Uppgiften bryter mot begränsningen '${e} ${t}'`},export:{tasksSheetName:"Uppgifter",linksSheetName:"Kopplingar",resourcesSheetName:"Resurser",eventsSheetName:"Händelser",calendarsSheetName:"Kalendrar"},scheduler:{resource:"Resurs",name:"Namn",type:"Typ",addEvent:"Lägg till händelse",moveEvent:"Flytta händelse",resizeEvent:"Ändra storlek på händelse"},calendar:{today:"Idag",month:"Månad",week:"Vecka",day:"Dag",agenda:"Agenda",allDay:"Heldag",noEvents:"Inga händelser",more:e=>`+${e} fler`,myCalendars:"Mina kalendrar",addCalendar:"Lägg till kalender",ariaCalendar:"Händelsekalender",ariaSidebar:"Sidopanel för kalender",ariaNavigation:"Navigering",ariaViewMode:"Visningsläge",ariaGoToToday:"Gå till idag",ariaPrevious:"Föregående",ariaNext:"Nästa",ariaAllDayEvents:"Heldagshändelser",ariaCalendarGrid:"Kalenderrutnät",ariaSelectMonthYear:"Välj månad och år",ariaToggleCalendar:e=>`Visa eller dölj ${e}`,ariaRemoveCalendar:e=>`Ta bort ${e}`,ariaMoreEvents:e=>`${e} fler händelser`}},cn={language:"zh-CN",columns:{name:"任务名称",length:"工期",start:"开始日期",end:"结束日期",progress:"进度",resources:"资源",work:"工时",cost:"成本"},columnTooltips:{work:"分配给此任务的工作天数或小时数。分配一个或多个资源后自动计算。",cost:"分配一个或多个资源后自动计算的成本。"},tooltips:{addTask:"添加任务",addTaskPart:"添加任务部分",moveTask:"移动任务",moveTaskPart:"移动任务部分",resizeTask:"调整任务大小",resizeTaskPart:"调整任务部分大小",moveMilestone:"移动里程碑",setProgress:"设置进度",addLink:"添加链接"},labels:{start:"开始",end:"结束",length:"工期",progress:"进度",from:"从",to:"到",type:"类型",lag:"延迟"},constraints:{asap:"尽早",alap:"尽晚",mso:"必须开始于",mfo:"必须完成于",snet:"不早于…开始",snlt:"不晚于…开始",fnet:"不早于…完成",fnlt:"不晚于…完成"},linkTypes:{finishToStart:"完成 → 开始",startToStart:"开始 → 开始",finishToFinish:"完成 → 完成",startToFinish:"开始 → 完成"},warnings:{behindSchedule:"任务已延迟",behindScheduleByOneDay:"1天",behindScheduleByDays:e=>`${e}天`,constraintViolation:(e,t)=>`任务违反约束"${e} ${t}"`},export:{tasksSheetName:"任务",linksSheetName:"链接",resourcesSheetName:"资源",eventsSheetName:"事件",calendarsSheetName:"日历"},scheduler:{resource:"资源",name:"名称",type:"类型",addEvent:"添加事件",moveEvent:"移动事件",resizeEvent:"调整事件大小"},calendar:{today:"今天",month:"月",week:"周",day:"日",agenda:"日程",allDay:"全天",noEvents:"无事件",more:e=>`还有${e}项`,myCalendars:"我的日历",addCalendar:"添加日历",ariaCalendar:"事件日历",ariaSidebar:"日历侧边栏",ariaNavigation:"导航",ariaViewMode:"视图模式",ariaGoToToday:"转到今天",ariaPrevious:"上一个",ariaNext:"下一个",ariaAllDayEvents:"全天事件",ariaCalendarGrid:"日历网格",ariaSelectMonthYear:"选择月份和年份",ariaToggleCalendar:e=>`显示或隐藏${e}`,ariaRemoveCalendar:e=>`移除${e}`,ariaMoreEvents:e=>`还有${e}个事件`}},un={criticalPath:e=>e.isCritical,incomplete:e=>(e.progress??0)<100,complete:e=>100===e.progress,behindSchedule:e=>{if("task"!==e.type||!e.endTime)return!1;var t=new Date;return e.endTime.getTime()<t.getTime()&&(e.progress??0)<100},milestones:e=>"milestone"===e.type,byResource:e=>t=>null!==t.getResourceByResourceId(e.id),byDateRange:(e,t)=>{var r=e.getTime(),i=t.getTime();return e=>!(!e.startTime||!e.endTime)&&(e.startTime.getTime()<=i&&e.endTime.getTime()>=r)},byName:e=>{var t=e.toLowerCase();return e=>e.name?.toLowerCase().includes(t)??!1},combine:(...e)=>t=>e.every(e=>e(t))};class gn extends ti{constructor(){super()}}class mn extends ti{constructor(){super(),this.chart.content.taskProgressHeight=5,this.chart.content.milestoneBorderColor="#606060",this.chart.content.milestoneColor1="#909090",this.chart.content.milestoneColor2="#909090",this.chart.content.summaryColor1="#d0d0d0",this.chart.content.summaryColor2="#d0d0d0",this.chart.content.summaryProgressColor1="#a0a0a0",this.chart.content.summaryProgressColor2="#a0a0a0",this.chart.content.summaryBorderColor="#606060",this.chart.content.summaryMarkColor1="#d0d0d0",this.chart.content.summaryMarkColor2="#d0d0d0",this.chart.content.summaryMarkProgressColor1="#a0a0a0",this.chart.content.summaryMarkProgressColor2="#a0a0a0",this.chart.content.summaryMarkType="full";var e={progressColor1:"#606060",progressColor2:"#606060",progressHighlightColor:"rgba(100, 100, 100, 0.5)"};this.chart.content.taskColors=[Jr.create({borderColor:"#4455dd",color1:"#a0b0ff",color2:"#a0b0ff",...e}),Jr.create({borderColor:"#cc8888",color1:"#ffcccc",color2:"#ffcccc",...e,separatorColor:"#cc7777",linkLineColor:"#cc7777",linkArrowColor:"#cc7777"}),Jr.create({borderColor:"#77bb77",color1:"#bbeebb",color2:"#bbeebb",...e,separatorColor:"#55aa55",linkLineColor:"#55aa55",linkArrowColor:"#55aa55"}),Jr.create({borderColor:"#dddd88",color1:"#f8f8aa",color2:"#f8f8aa",...e,separatorColor:"#cccc66",linkLineColor:"#cccc66",linkArrowColor:"#cccc66"}),Jr.create({borderColor:"#aa88cc",color1:"#ddbbff",color2:"#ddbbff",...e,separatorColor:"#aa77cc",linkLineColor:"#aa77cc",linkArrowColor:"#aa77cc"}),Jr.create({borderColor:"#ddaa77",color1:"#ffd8a8",color2:"#ffd8a8",...e,separatorColor:"#cc9966",linkLineColor:"#cc9966",linkArrowColor:"#cc9966"}),Jr.create({borderColor:"#66bbbb",color1:"#a8e8e8",color2:"#a8e8e8",...e,separatorColor:"#55aaaa",linkLineColor:"#55aaaa",linkArrowColor:"#55aaaa"}),Jr.create({borderColor:"#dd88aa",color1:"#ffbbdd",color2:"#ffbbdd",...e,separatorColor:"#cc7799",linkLineColor:"#cc7799",linkArrowColor:"#cc7799"})]}}class pn extends ti{constructor(){super(),this.sheet.header.backgroundColor="#252526",this.sheet.header.cellBorderColor="#3c3c3c",this.sheet.header.cellDividerColor="#333333",this.sheet.header.textColor="#d4d4d4",this.sheet.backgroundColor="#1e1e1e",this.sheet.textColor="#d4d4d4",this.sheet.hoverBackgroundColor="#2a2d2e",this.sheet.selectedBackgroundColor="#2a2d2e",this.sheet.selectedRowHeaderColor="#3c3c3c",this.sheet.focusBorderColor="#007acc",this.sheet.highlightBorderColor="#264f78",this.sheet.treeIconColor="#999999",this.sheet.editorBackgroundColor="#1e1e1e",this.sheet.editorTextColor="#d4d4d4",this.sheet.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.sheet.scrollbarTrackColor="transparent",this.sheet.gridLineColor="#343434",this.sheet.colorScheme="dark",this.chart.header.backgroundColor="#252526",this.chart.header.cellBorderColor="#3c3c3c",this.chart.header.cellDividerColor="#333333",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#d4d4d4",this.chart.content.backgroundColor="#1e1e1e",this.chart.content.taskBorderRadius=4,this.chart.content.linkLineStyle="rounded",this.chart.content.gridLineColor="#343434",this.chart.content.tier2SeparatorLineStyle="#444444",this.chart.content.nonWorkingTimeStyle="#181818",this.chart.content.summaryColor1="#707070",this.chart.content.summaryColor2="#585858",this.chart.content.summaryMarkColor1="#707070",this.chart.content.summaryMarkColor2="#585858",this.chart.content.summaryProgressColor1="#888888",this.chart.content.summaryProgressColor2="#707070",this.chart.content.summaryMarkProgressColor1="#888888",this.chart.content.summaryMarkProgressColor2="#707070",this.chart.content.summaryBorderColor="#686868",this.chart.content.summaryHighlightColor="rgba(180, 180, 180, 0.3)",this.chart.content.milestoneColor1="#888888",this.chart.content.milestoneColor2="#6a6a6a",this.chart.content.milestoneBorderColor="#787878",this.chart.content.milestoneHighlightColor="rgba(180, 180, 180, 0.4)",this.chart.content.linkFromMilestoneLineColor="#808080",this.chart.content.linkFromMilestoneArrowColor="#808080",this.chart.content.connectorDotColor="#007acc",this.chart.content.connectorDotBorderColor="#0098ff",this.chart.content.connectorDotHoverColor="#0098ff",this.chart.content.baselineColor="#585858",this.chart.content.criticalTaskBorderColor="#f14c4c",this.chart.content.criticalMilestoneBorderColor="#f14c4c",this.chart.content.criticalSummaryBorderColor="#f14c4c",this.chart.content.tooltipTextColor="#d4d4d4",this.chart.content.tooltipBackgroundColor1="#252526",this.chart.content.tooltipBackgroundColor2="#1e1e1e",this.chart.content.tooltipBorderColor="#3c3c3c",this.chart.content.todayLineColor="#aaaaaa",this.chart.content.markerLineColor="#aaaaaa",this.chart.content.markerLabelColor="#aaaaaa",this.chart.content.taskLabelColor="#d4d4d4",this.chart.content.summaryLabelColor="#d4d4d4",this.chart.content.milestoneLabelColor="#d4d4d4",this.chart.content.taskColors=[Jr.create({color1:"#7b90d8",color2:"#5a72c0",highlightColor:"rgba(123, 144, 216, 0.4)",progressColor1:"#4a60a8",progressColor2:"#3a4e90",progressHighlightColor:"rgba(123, 144, 216, 0.4)",separatorColor:"#4258a0",linkLineColor:"#5a72c0",linkArrowColor:"#5a72c0"}),Jr.create({color1:"#e09090",color2:"#c06868",highlightColor:"rgba(224, 144, 144, 0.4)",progressColor1:"#b05858",progressColor2:"#904848",progressHighlightColor:"rgba(224, 144, 144, 0.4)",separatorColor:"#a05050",linkLineColor:"#c06868",linkArrowColor:"#c06868"}),Jr.create({color1:"#80c080",color2:"#60a060",highlightColor:"rgba(128, 192, 128, 0.4)",progressColor1:"#509050",progressColor2:"#407840",progressHighlightColor:"rgba(128, 192, 128, 0.4)",separatorColor:"#488848",linkLineColor:"#60a060",linkArrowColor:"#60a060"}),Jr.create({color1:"#e0c070",color2:"#c0a050",highlightColor:"rgba(224, 192, 112, 0.4)",progressColor1:"#b09040",progressColor2:"#907830",progressHighlightColor:"rgba(224, 192, 112, 0.4)",separatorColor:"#a08838",linkLineColor:"#c0a050",linkArrowColor:"#c0a050"}),Jr.create({color1:"#9070b0",color2:"#705890",highlightColor:"rgba(144, 112, 176, 0.4)",progressColor1:"#604878",progressColor2:"#503868",progressHighlightColor:"rgba(144, 112, 176, 0.4)",separatorColor:"#685080",linkLineColor:"#705890",linkArrowColor:"#705890"}),Jr.create({color1:"#c08850",color2:"#a07040",highlightColor:"rgba(192, 136, 80, 0.4)",progressColor1:"#906030",progressColor2:"#785028",progressHighlightColor:"rgba(192, 136, 80, 0.4)",separatorColor:"#986838",linkLineColor:"#a07040",linkArrowColor:"#a07040"}),Jr.create({color1:"#508888",color2:"#407070",highlightColor:"rgba(80, 136, 136, 0.4)",progressColor1:"#306060",progressColor2:"#285050",progressHighlightColor:"rgba(80, 136, 136, 0.4)",separatorColor:"#386868",linkLineColor:"#407070",linkArrowColor:"#407070"}),Jr.create({color1:"#b06888",color2:"#904868",highlightColor:"rgba(176, 104, 136, 0.4)",progressColor1:"#803858",progressColor2:"#682848",progressHighlightColor:"rgba(176, 104, 136, 0.4)",separatorColor:"#884060",linkLineColor:"#904868",linkArrowColor:"#904868"})]}}class vn extends _r{constructor(){super(),this.rowHeight=38,this.sheet.header.backgroundColor="#ffffff",this.sheet.header.cellBorderColor="#e8e8e8",this.sheet.header.cellDividerColor="#f0f0f0",this.sheet.header.textColor="#555555",this.sheet.gridLineColor="#f2f2f2",this.sheet.scrollbarThumbColor="#d8d8d8",this.chart.header.backgroundColor="#ffffff",this.chart.header.cellBorderColor="#e8e8e8",this.chart.header.cellDividerColor="#f0f0f0",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#555555",this.chart.content.taskHeight=22,this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#f2f2f2",this.chart.content.tier2SeparatorLineStyle="#e8e8e8",this.chart.content.nonWorkingTimeStyle="#fafafa"}}class fn extends _r{constructor(){super(),this.rowHeight=38,this.sheet.header.backgroundColor="#252526",this.sheet.header.cellBorderColor="#3c3c3c",this.sheet.header.cellDividerColor="#333333",this.sheet.header.textColor="#d4d4d4",this.sheet.backgroundColor="#1e1e1e",this.sheet.textColor="#d4d4d4",this.sheet.hoverBackgroundColor="#2a2d2e",this.sheet.selectedBackgroundColor="#2a2d2e",this.sheet.selectedRowHeaderColor="#3c3c3c",this.sheet.focusBorderColor="#007acc",this.sheet.highlightBorderColor="#264f78",this.sheet.treeIconColor="#999999",this.sheet.editorBackgroundColor="#1e1e1e",this.sheet.editorTextColor="#d4d4d4",this.sheet.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.sheet.scrollbarTrackColor="transparent",this.sheet.gridLineColor="#343434",this.sheet.colorScheme="dark",this.chart.header.backgroundColor="#252526",this.chart.header.cellBorderColor="#3c3c3c",this.chart.header.cellDividerColor="#333333",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#d4d4d4",this.chart.content.backgroundColor="#1e1e1e",this.chart.content.taskHeight=22,this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#343434",this.chart.content.tier2SeparatorLineStyle="#444444",this.chart.content.nonWorkingTimeStyle="#181818",this.chart.content.tooltipTextColor="#d4d4d4",this.chart.content.tooltipBackgroundColor1="#252526",this.chart.content.tooltipBackgroundColor2="#1e1e1e",this.chart.content.tooltipBorderColor="#3c3c3c",this.chart.content.todayLineColor="#aaaaaa",this.chart.content.markerLineColor="#aaaaaa",this.chart.content.markerLabelColor="#aaaaaa",this.chart.content.taskLabelColor="#d4d4d4",this.chart.content.taskColors=[jr.create({color1:"#7b90d8",color2:"#5a72c0",highlightColor:"rgba(123, 144, 216, 0.4)"}),jr.create({color1:"#e09090",color2:"#c06868",highlightColor:"rgba(224, 144, 144, 0.4)"}),jr.create({color1:"#80c080",color2:"#60a060",highlightColor:"rgba(128, 192, 128, 0.4)"}),jr.create({color1:"#e0c070",color2:"#c0a050",highlightColor:"rgba(224, 192, 112, 0.4)"}),jr.create({color1:"#9070b0",color2:"#705890",highlightColor:"rgba(144, 112, 176, 0.4)"}),jr.create({color1:"#c08850",color2:"#a07040",highlightColor:"rgba(192, 136, 80, 0.4)"}),jr.create({color1:"#508888",color2:"#407070",highlightColor:"rgba(80, 136, 136, 0.4)"}),jr.create({color1:"#b06888",color2:"#904868",highlightColor:"rgba(176, 104, 136, 0.4)"})]}}class yn extends _r{constructor(){super(),this.rowHeight=38,this.chart.content.taskHeight=22}}class bn extends _r{constructor(){super(),this.rowHeight=38,this.chart.content.taskHeight=22,this.chart.content.taskColors=[jr.create({borderColor:"#4455dd",color1:"#a0b0ff",color2:"#a0b0ff"}),jr.create({borderColor:"#cc8888",color1:"#ffcccc",color2:"#ffcccc"}),jr.create({borderColor:"#77bb77",color1:"#bbeebb",color2:"#bbeebb"}),jr.create({borderColor:"#dddd88",color1:"#f8f8aa",color2:"#f8f8aa"}),jr.create({borderColor:"#aa88cc",color1:"#ddbbff",color2:"#ddbbff"}),jr.create({borderColor:"#ddaa77",color1:"#ffd8a8",color2:"#ffd8a8"}),jr.create({borderColor:"#66bbbb",color1:"#a8e8e8",color2:"#a8e8e8"}),jr.create({borderColor:"#dd88aa",color1:"#ffbbdd",color2:"#ffbbdd"})]}}class wn{#Y=[];#qa=[];#de=new Map;#no=new Map;#ao=new Set;#oo=new Map;#Ye=null;resourceAdded$=new e;resourceChanged$=new e;resourceRemoved$=new e;eventAdded$=new e;eventChanged$=new e;eventRemoved$=new e;frozenChanged$=new e;filterChanged$=new e;complexOperationFinished$=new e;get resourcesLength(){return this.#Y.length}getResource(e){return this.#Y[e]}getResourceById(e){return this.#Y.find(t=>t.id===e)??null}indexOfResource(e){return this.#Y.indexOf(e)}get filter(){return this.#Ye}set filter(e){this.#Ye=e,this.#Ge()}#Ge(){var e=this.#Ye;for(var t of this.#Y)t.filtered=!!e&&!e(t);this.filterChanged$.next()}addResource(e){if(this.getResourceById(e.id))throw new Error(`SchedulerData.addResource: resource with id "${e.id}" already exists`);this.#Y.push(e),this.#lo(e),this.resourceAdded$.next({resource:e})}insertResource(e,t){if(e<0||e>this.#Y.length)throw new RangeError(`SchedulerData.insertResource: index ${e} out of range [0, ${this.#Y.length}]`);if(this.getResourceById(t.id))throw new Error(`SchedulerData.insertResource: resource with id "${t.id}" already exists`);this.#Y.splice(e,0,t),this.#lo(t),this.resourceAdded$.next({resource:t})}removeResource(e){var t=this.#Y.indexOf(e);if(t>=0){this.#Y.splice(t,1),this.#ho(e),this.#ao.delete(e.id);var r=this.#qa.filter(t=>t.resourceId===e.id);for(var i of r)this.removeEvent(i);this.resourceRemoved$.next({resource:e})}}moveResource(e,t){var r=this.#Y.indexOf(e);r<0||r===t||(this.#Y.splice(r,1),t>r&&t--,this.#Y.splice(t,0,e),this.complexOperationFinished$.next())}removeResources(e){for(var t of e)this.removeResource(t);this.complexOperationFinished$.next()}sortResources(e){this.#Y.sort(e),this.complexOperationFinished$.next()}assignResources(e){for(var t of this.#de.values())t.unsubscribe();for(var r of(this.#de.clear(),this.#ao.clear(),this.#Y=[...e],this.#Y))this.#lo(r);this.complexOperationFinished$.next()}#lo(e){var t=e.changed$.subscribe(e=>this.resourceChanged$.next(e));this.#de.set(e.id,t)}#ho(e){var t=this.#de.get(e.id);t&&(t.unsubscribe(),this.#de.delete(e.id))}freezeResource(e){this.#ao.has(e.id)||(this.#ao.add(e.id),this.frozenChanged$.next(),this.complexOperationFinished$.next())}unfreezeResource(e){this.#ao.has(e.id)&&(this.#ao.delete(e.id),this.frozenChanged$.next(),this.complexOperationFinished$.next())}isResourceFrozen(e){return this.#ao.has(e.id)}get frozenResourceIds(){return this.#ao}get frozenResourcesCount(){var e=0;for(var t of this.#Y)this.#ao.has(t.id)&&e++;return e}get orderedResources(){var e=[],t=[];for(var r of this.#Y)r.filtered||(this.#ao.has(r.id)?e.push(r):t.push(r));return e.concat(t)}orderedIndexOf(e){return this.orderedResources.indexOf(e)}get eventsLength(){return this.#qa.length}getEvent(e){return this.#qa[e]}getEventById(e){return this.#qa.find(t=>t.id===e)??null}getEventsForResource(e){return this.#qa.filter(t=>t.resourceId===e)}addEvent(e){if(e.startTime.getTime()>=e.endTime.getTime())throw new Error("SchedulerData.addEvent: startTime must be before endTime");if(!this.getResourceById(e.resourceId))throw new Error(`SchedulerData.addEvent: resource "${e.resourceId}" not found`);if(this.getEventById(e.id))throw new Error(`SchedulerData.addEvent: event with id "${e.id}" already exists`);this.#qa.push(e),this.#do(e),this.#oo.delete(e.resourceId),this.eventAdded$.next({event:e})}removeEvent(e){var t=this.#qa.indexOf(e);t>=0&&(this.#qa.splice(t,1),this.#co(e),this.#oo.delete(e.resourceId),this.eventRemoved$.next({event:e}))}assignEvents(e){for(var t of this.#no.values())t.unsubscribe();for(var r of(this.#no.clear(),this.#oo.clear(),this.#qa=[...e],this.#qa))this.#do(r);this.complexOperationFinished$.next()}#do(e){var t=e.changed$.subscribe(e=>{this.#oo.clear(),this.eventChanged$.next(e)});this.#no.set(e.id,t)}#co(e){var t=this.#no.get(e.id);t&&(t.unsubscribe(),this.#no.delete(e.id))}getEventColor(e){if(null!==e.color)return e.color;var t=this.getResourceById(e.resourceId);return t&&null!==t.color?t.color:t?this.orderedIndexOf(t):0}#uo(e){var t=this.#oo.get(e);if(t)return t;var r=this.getEventsForResource(e);r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime());var i=[],s=new Map;for(var n of r){for(var a=n.startTime.getTime(),o=!1,l=0;l<i.length;l++)if(a>=i[l]){i[l]=n.endTime.getTime(),s.set(n.id,l),o=!0;break}o||(i.push(n.endTime.getTime()),s.set(n.id,i.length-1))}var h={laneCount:Math.max(1,i.length),eventLanes:s};return this.#oo.set(e,h),h}getLaneCount(e){return this.#uo(e).laneCount}getEventLane(e){return this.#uo(e.resourceId).eventLanes.get(e.id)??0}getOverlappingEvents(e,t,r,i){var s=t.getTime(),n=r.getTime(),a=[];for(var o of this.#qa)o.resourceId===e&&(i&&o.id===i||o.startTime.getTime()<n&&o.endTime.getTime()>s&&a.push(o));return a}hasConflict(e){return this.getOverlappingEvents(e.resourceId,e.startTime,e.endTime,e.id).length>0}get minStartTime(){var e=null;for(var t of this.#qa)(!e||t.startTime.getTime()<e.getTime())&&(e=t.startTime);return e}get maxEndTime(){var e=null;for(var t of this.#qa)(!e||t.endTime.getTime()>e.getTime())&&(e=t.endTime);return e}}const Tn={Person:"person",Room:"room",Equipment:"equipment",Vehicle:"vehicle"};class Cn{#m;get id(){return this.#m}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#M=null;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#go=null;get avatarUrl(){return this.#go}set avatarUrl(e){e!=this.#go&&(this.#go=e,this.#f())}#O=null;get type(){return this.#O}set type(e){e!=this.#O&&(this.#O=e,this.#f())}#ke=!1;get filtered(){return this.#ke}set filtered(e){this.#ke=e}#ae;changed$=new e;constructor(e,t){this.#b=t,this.#m=e??er(30),this.#ae=new lr(()=>this.#f())}#f(){this.changed$.next({resource:this})}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){return{id:this.#m,name:this.#b,color:this.#M,avatarUrl:this.#go,type:this.#O,properties:this.#ae.hasProperties?this.#ae.serializeProperties():void 0}}static fromAny(e){if(void 0===e.name||null===e.name)throw new Error("SchedulerResource.fromAny: missing name");var t=new Cn(e.id,e.name);return t.color=e.color??null,t.avatarUrl=e.avatarUrl??null,t.type=e.type??null,e.properties&&t.#ae.loadProperties(e.properties),t}}class xn{#mo;#T=new r;itemAdded$=new e;itemChanged$=new e;itemRemoved$=new e;complexOperationFinished$;constructor(e){this.#mo=e,this.#T.add(e.resourceAdded$.subscribe(e=>{this.itemAdded$.next({item:e.resource})})),this.#T.add(e.resourceChanged$.subscribe(e=>{this.itemChanged$.next({item:e.resource})})),this.#T.add(e.resourceRemoved$.subscribe(e=>{this.itemRemoved$.next({item:e.resource})})),this.complexOperationFinished$=e.complexOperationFinished$}destroy(){this.#T.unsubscribe()}get length(){return this.#mo.orderedResources.length}getItem(e){return this.#mo.orderedResources[e]}getItemById(e){var t=this.#mo.getResourceById(e);return t&&!t.filtered?t:null}indexOf(e){return this.#mo.orderedIndexOf(e)}getItemLabel(e){var t=this.indexOf(e);return t>=0?(t+1).toString():""}getNextVisible(e){var t=this.indexOf(e);return t>=0&&t<this.length-1?this.getItem(t+1):null}getPreviousVisible(e){var t=this.indexOf(e);return t>0?this.getItem(t-1):null}addEmptyItem(){var e=new Cn(null,"New Resource");return this.#mo.addResource(e),e}insertEmptyItem(e){var t=new Cn(null,"New Resource");return this.#mo.insertResource(e,t),t}removeItems(e){this.#mo.removeResources(e)}}class kn{#wt;constructor(e){this.#wt=e}get ctx(){return this.#wt}getRowY(e){return this.#wt.getRowY(e)}getContentBottom(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=t;for(var s of r)i+=this.#wt.getRowHeight(s);return Math.min(i,e)}drawRowHighlight(e,t,r,i){e.beginPath(),e.rect(0,r,t,i),e.fillStyle="rgba(0, 0, 0, 0.02)",e.fill()}}class En extends kn{#$t;constructor(e){super(e),this.#$t=new Lr(e)}render(e){this.#$t.render(e)}}class Dn extends Tr{#wt;constructor(e){super(e),this.#wt=e}getContentBottom(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=t;for(var s of r)i+=this.#wt.getRowHeight(s);return Math.min(i,e)}drawHorizontalGridLines(e,t){for(var r=this.#wt.theme$.getValue(),i=r.chart.content.gridLineColor,s=this.#wt.data.orderedResources,n=0;n<s.length;n++){var a=s[n],o=this.#wt.getRowY(a),l=Math.floor(o)-.5;t.beginPath(),t.moveTo(0,l),t.lineTo(e.width,l),t.strokeStyle=i,t.stroke()}if(s.length>0){var h=s[s.length-1],d=Math.floor(this.#wt.getRowY(h)+this.#wt.getRowHeight(h))-.5;t.beginPath(),t.moveTo(0,d),t.lineTo(e.width,d),t.strokeStyle=i,t.stroke()}if(this.#wt.data.frozenResourcesCount>0){var c=Math.floor(this.#wt.frozenSectionBottom)-.5;t.beginPath(),t.moveTo(0,c),t.lineTo(e.width,c),t.strokeStyle=r.chart.content.gridLineColor,t.lineWidth=2,t.stroke(),t.lineWidth=1}}}class Sn extends kn{#wt;constructor(e){super(e),this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.data.frozenResourcesCount,i=this.#wt.frozenSectionBottom,s=this.#wt.theme$.getValue().contentTop;t.save(),t.beginPath(),t.rect(0,i,e.width,e.height-i),t.clip(),this.#ai(e,t),this.#po(e,t,!1),this.#vo(e,t),t.restore(),r>0&&(t.save(),t.beginPath(),t.rect(0,s,e.width,i-s),t.clip(),this.#ai(e,t),this.#po(e,t,!0),this.#vo(e,t),t.restore())}#ai(e,t){var r=this.#wt.selectedResources$.getValue();if(0!==r.length)for(var i of r)this.drawRowHighlight(t,e.width,this.getRowY(i),this.#wt.getRowHeight(i))}#vo(e,t){var r=this.#wt.sheetRowMouseOver$.getValue();r&&this.drawRowHighlight(t,e.width,this.getRowY(r.resource),this.#wt.getRowHeight(r.resource))}#po(e,t,r){for(var i=this.#wt.theme$.getValue(),s=this.#wt.timeline.currentZoom,n=s.axis[0],a=this.#wt.timeline.visibleStartTime$.getValue(),o=i.chart.content.taskHeight,l=i.chart.content.taskBorderRadius,h=this.#wt.data.orderedResources,d=this.#wt.selectedEvents$.getValue(),c=new Set(d.map(e=>e.id)),u=this.#wt.eventRendering$.getValue(),g=0;g<h.length;g++){var m=h[g];if(r===this.#wt.data.isResourceFrozen(m)){var p=this.#wt.data.getEventsForResource(m.id);for(var v of p){var f=Math.floor(n.getX(v.startTime,a,s)),y=Math.floor(n.getX(v.endTime,a,s));if(!(y<0||f>e.width)){var b=this.#wt.data.getEventColor(v),w=this.#wt.getEventY(m,v),T=new kr(f,w,y-f,o),C=c.has(v.id);if(u)if(u({event:v,resource:m,rect:T,ctx:t,isSelected:C,color:b}))continue;this.#fo(t,v,T,b,l,i)}}}}}#fo(e,t,r,i,s,n){var a=Xr(i,n.chart.content.taskColors);if(function(e,t,r,i,s=0){e.beginPath(),mi(e,t,s),e.fillStyle=gi(e,t,r,i),e.fill()}(e,r,a.color1,a.color2,s),a.borderColor&&pi(e,r,a.borderColor,s),t.name&&r.width>20){var o=n.font.clone();o.size=n.chart.content.taskLabelFont.size,function(e,t,r,i,s,n=4){!t||r.width<=2*n||(e.save(),e.beginPath(),e.rect(r.x,r.y,r.width,r.height),e.clip(),e.font=i,Rr(e,t,new kr(r.x+n,r.y,r.width-2*n,r.height),"left",0,s),e.restore())}(e,t.name,r,o.toString(1),"#ffffff")}}}class $n extends kn{#Li;constructor(e){super(e),this.#Li=new Di(e,e=>this.getContentBottom(e.height))}render(e){this.#Li.render(e)}}const Rn={[Tn.Person]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="4"/><path d="M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1"/></svg>',[Tn.Room]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z"/><path d="M14 12h.01"/></svg>',[Tn.Equipment]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>',[Tn.Vehicle]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2"/><circle cx="7" cy="17" r="2"/><path d="M9 17h6"/><circle cx="17" cy="17" r="2"/></svg>'};class Mn extends Fi{redraw(e,t,r){e.innerText="",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center";var i=document.createElement("span");if(i.classList.add("resource-icon"),i.style.display="inline-flex",i.style.alignItems="center",i.style.justifyContent="center",i.style.flexShrink="0",i.style.width="26px",i.style.height="26px",i.style.minWidth="26px",r.avatarUrl)i.style.borderRadius="50%",i.style.backgroundImage=`url(${r.avatarUrl})`,i.style.backgroundSize="cover",i.style.backgroundPosition="center";else{i.style.color="#999";var s=r.type||Tn.Person;i.innerHTML=Rn[s]??'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"/><path d="m3.3 7 8.7 5 8.7-5"/><path d="M12 22V12"/></svg>'}e.appendChild(i)}}const Ln=26;var In=new Map;function Pn(e){return function(e){return new Promise((t,r)=>{var i=new Image;i.crossOrigin="anonymous",i.onload=()=>t(i),i.onerror=r,i.src=e})}(e).then(t=>{In.set(e,t)},()=>{In.delete(e)})}function An(e,t,r,i,s,n){if(t.avatarUrl){var a=In.get(t.avatarUrl);if(a)return void function(e,t,r,i,s,n){var a=r+s/2,o=i+n/2,l=13;e.save(),e.beginPath(),e.arc(a,o,l,0,2*Math.PI),e.closePath(),e.clip(),e.drawImage(t,a-l,o-l,Ln,Ln),e.restore()}(e,a,r,i,s,n)}var o=r+(s-22)/2,l=i+(n-22)/2,h=22/24;e.save(),e.translate(o,l),e.scale(h,h),e.strokeStyle="#999",e.lineWidth=1.8,e.lineCap="round",e.lineJoin="round",function(e,t){switch(t){case Tn.Person:e.beginPath(),e.arc(12,8,4,0,2*Math.PI),e.stroke(),e.stroke(new Path2D("M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1"));break;case Tn.Room:e.stroke(new Path2D("M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z")),e.beginPath(),e.moveTo(14,12),e.lineTo(14.01,12),e.stroke();break;case Tn.Equipment:e.stroke(new Path2D("M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"));break;case Tn.Vehicle:e.stroke(new Path2D("M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2")),e.beginPath(),e.arc(7,17,2,0,2*Math.PI),e.stroke(),e.beginPath(),e.moveTo(9,17),e.lineTo(15,17),e.stroke(),e.beginPath(),e.arc(17,17,2,0,2*Math.PI),e.stroke();break;default:e.stroke(new Path2D("M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z")),e.stroke(new Path2D("M3.3 7l8.7 5 8.7-5")),e.beginPath(),e.moveTo(12,22),e.lineTo(12,12),e.stroke()}}(e,t.type||Tn.Person),e.restore()}class Hn extends As{#wt;#pa;constructor(e,t){super(),this.#wt=e,this.#pa=t}get theme(){return this.#wt.theme$.getValue()}async preload(){await function(e){In=new Map;var t=[];for(var r of e){var i=r.avatarUrl;i&&!In.has(i)&&(In.set(i,null),t.push(Pn(i)))}return t.length>0?Promise.all(t).then(()=>{}):Promise.resolve()}(this.#wt.data.orderedResources)}calculateDimensions(){var e=this.calculateChartLayout(this.#wt.timeline,this.#pa,this.#wt.data.minStartTime,this.#wt.data.maxEndTime,this.#wt.projectTimeline$.getValue()),t=this.#wt.data.orderedResources,r=[],i=0;for(var s of t){var n=this.#wt.getRowHeight(s);r.push(n),i+=n}var a=e.headerHeight+i;return{visibleColumns:e.visibleColumns,sheetWidth:e.sheetWidth,chartWidth:e.chartWidth,chartStart:e.chartStart,headerHeight:e.headerHeight,totalHeight:a,rowHeights:r}}renderSheetRows(e,t){for(var r=this.theme,i=this.#wt.data.orderedResources,s=t.headerHeight,n=0;n<i.length;n++){var a=i[n],o=this.#wt.getRowHeight(a),l=0;for(var h of(Rr(e,(n+1).toString(),new kr(l+5,s,30,o),"center",0,"#808080"),l+=Es,t.visibleColumns)){if(h.exportCellRenderer)h.exportCellRenderer(e,a,l+5,s,h.width,o);else{var d=h.valueFormatter(a),c="left";"center"===h.align&&(c="center"),"right"===h.align&&(c="right"),d&&Rr(e,d,new kr(l+5,s,h.width,o),c,0,r.sheet.textColor)}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(l-.5,s),e.lineTo(l-.5,s+o),e.stroke(),l+=h.width+ks}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(0,s+o-.5),e.lineTo(t.sheetWidth,s+o-.5),e.stroke(),s+=o}}renderChart(e,t,r,i=1){Ps(e,t,r,i,this.theme,this.#wt.timeline.visibleStartTime$,this.#wt.scrollTop$,new En(this.#wt),[new Dn(this.#wt),new $n(this.#wt),new Sn(this.#wt)])}}class Vn extends Vs{constructor(e,t){super(new Hn(e,t),"scheduler")}}class Bn{#wt;constructor(e){this.#wt=e}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.includeResources??!1,s=this.#wt.locale$.getValue(),n=[];r&&n.push($s([s.scheduler.resource,s.columns.name,s.labels.start,s.labels.end],t));var a=this.#wt.data.orderedResources;for(var o of a){var l=this.#yo(o.id);for(var h of l)n.push($s([o.name,h.name,this.#bo(h.startTime),this.#bo(h.endTime)],t))}var d=n.join("\n");if(i)for(var o of(d+="\n\n",r&&(d+=$s([s.columns.name,s.labels.type],t)+"\n"),a))d+=$s([o.name,o.type??""],t)+"\n";return d}async exportToExcel(e){var t=await Ls(),r=this.#wt.locale$.getValue(),i=e?.eventsSheetName??r.export.eventsSheetName,s=e?.includeResourcesSheet??!0,n=e?.includeFormatting??!0,a=new t.Workbook;return this.#wo(a,i,n),s&&this.#wt.data.resourcesLength>0&&this.#wa(a,n),Is(a)}#wo(e,t,r){var i=this.#wt.locale$.getValue(),s=e.addWorksheet(t);s.columns=[{header:i.scheduler.resource,key:"resource",width:25},{header:i.columns.name,key:"name",width:30},{header:i.labels.start,key:"start",width:20},{header:i.labels.end,key:"end",width:20}],r&&Rs(s);var n=this.#wt.data.orderedResources;for(var a of n){var o=this.#yo(a.id);for(var l of o)s.addRow({resource:a.name,name:l.name,start:this.#bo(l.startTime),end:this.#bo(l.endTime)})}r&&Ms(s)}#wa(e,t){var r=this.#wt.locale$.getValue(),i=e.addWorksheet(r.export.resourcesSheetName);i.columns=[{header:r.columns.name,key:"name",width:25},{header:r.labels.type,key:"type",width:15}],t&&Rs(i);var s=this.#wt.data.orderedResources;for(var n of s)i.addRow({name:n.name,type:n.type??""});t&&Ms(i)}#yo(e){var t=this.#wt.data.getEventsForResource(e);return t.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()),t}#bo(e){return Zt(e,this.#wt.locale$.getValue().language,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}}class Fn extends zs{constructor(e,t){super(new Hn(e,t),"scheduler")}computeVerticalPageBreaks(e,t,r){var i=t-r;i<=0&&(i=e.rowHeights[0]??40);for(var s=[],n=r,a=0,o=0;o<e.rowHeights.length;o++){var l=e.rowHeights[o];a>0&&a+l>i&&(s.push({srcY:n-a,height:a}),a=0),a+=l,n=r+this.#To(e.rowHeights,o+1)}return a>0&&s.push({srcY:n-a,height:a}),0===s.length&&s.push({srcY:r,height:0}),s}#To(e,t){for(var r=0,i=0;i<t&&i<e.length;i++)r+=e[i];return r}}class zn{#m;get id(){return this.#m}#Co;get resourceId(){return this.#Co}set resourceId(e){if(!e)throw new Error("SchedulerEvent: resourceId cannot be empty");e!=this.#Co&&(this.#Co=e,this.#f())}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#l;get startTime(){return this.#l}set startTime(e){if(!(e instanceof Date)||isNaN(e.getTime()))throw new Error("SchedulerEvent: invalid startTime");e.getTime()!=this.#l.getTime()&&(this.#l=e,this.#f())}#h;get endTime(){return this.#h}set endTime(e){if(!(e instanceof Date)||isNaN(e.getTime()))throw new Error("SchedulerEvent: invalid endTime");e.getTime()!=this.#h.getTime()&&(this.#h=e,this.#f())}#M=null;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}data=void 0;#ae;changed$=new e;constructor(e,t,r,i,s){if(!t)throw new Error("SchedulerEvent: resourceId is required");if(!(i instanceof Date)||isNaN(i.getTime()))throw new Error("SchedulerEvent: invalid startTime");if(!(s instanceof Date)||isNaN(s.getTime()))throw new Error("SchedulerEvent: invalid endTime");if(i.getTime()>=s.getTime())throw new Error("SchedulerEvent: startTime must be before endTime");this.#m=e??er(30),this.#Co=t,this.#b=r,this.#l=i,this.#h=s,this.#ae=new lr(()=>this.#f())}get durationMs(){return this.#h.getTime()-this.#l.getTime()}get durationHours(){return this.durationMs/36e5}#f(){this.changed$.next({event:this})}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){return{id:this.#m,resourceId:this.#Co,name:this.#b,startTime:this.#l.toISOString(),endTime:this.#h.toISOString(),color:this.#M,properties:this.#ae.serializeProperties()}}static fromAny(e){if(!e.resourceId)throw new Error("SchedulerEvent.fromAny: missing resourceId");if(!e.startTime)throw new Error("SchedulerEvent.fromAny: missing startTime");if(!e.endTime)throw new Error("SchedulerEvent.fromAny: missing endTime");var t=new Date(e.startTime),r=new Date(e.endTime);if(isNaN(t.getTime()))throw new Error("SchedulerEvent.fromAny: invalid startTime");if(isNaN(r.getTime()))throw new Error("SchedulerEvent.fromAny: invalid endTime");var i=new zn(e.id,e.resourceId,e.name??"",t,r);return i.color=e.color??null,e.properties&&i.#ae.loadProperties(e.properties),i}}class On{#mo;#xo;#ko;constructor(e,t,r){this.#mo=e,this.#xo=t,this.#ko=r}getRowHeight(e){var t=this.#xo.getValue(),r=this.#mo.getLaneCount(e.id);if(r<=1)return t.rowHeight+1;var i=t.chart.content.taskHeight,s=(t.rowHeight-i)/2;return Math.ceil(2*s+r*i+5*(r-1))+1}getEventY(e,t){var r=this.#xo.getValue(),i=r.chart.content.taskHeight,s=this.getRowY(e);if(this.#mo.getLaneCount(e.id)<=1)return s+this.getRowHeight(e)/2-i/2;var n=this.#mo.getEventLane(t);return s+(r.rowHeight-i)/2+n*(i+5)}getRowY(e){var t=this.#xo.getValue(),r=this.#mo.orderedResources,i=this.#mo.orderedIndexOf(e),s=this.#mo.frozenResourcesCount,n=t.contentTop;if(this.#mo.isResourceFrozen(e)){for(var a=n,o=0;o<i;o++)a+=this.getRowHeight(r[o]);return a}var l=0;for(o=0;o<s;o++)l+=this.getRowHeight(r[o]);var h=0;for(o=s;o<i;o++)h+=this.getRowHeight(r[o]);return n+l-this.#ko.getValue()+h}getTotalContentHeight(){var e=this.#mo.orderedResources,t=0;for(var r of e)t+=this.getRowHeight(r);return t}get frozenSectionBottom(){for(var e=this.#xo.getValue().contentTop,t=this.#mo.orderedResources,r=this.#mo.frozenResourcesCount,i=e,s=0;s<r;s++)i+=this.getRowHeight(t[s]);return i}}const Nn={[Tn.Person]:"Person",[Tn.Room]:"Room",[Tn.Equipment]:"Equipment",[Tn.Vehicle]:"Vehicle"};class Wn extends ji{#wt;constructor(e,t,r){super(t,r),this.#wt=e}getDefaultDate(){var e=this.#wt.projectTimeline$.getValue(),t=Bt();return e.startDate.getTime()>t.getTime()&&(t=new Date(e.startDate)),t}getLocale(){return this.#wt.locale$.getValue().language}}class Un extends cs{#wt;#Hn=new r;#Eo=null;#Do=null;rowContextMenu$=new e;rowMouseOver$=new e;constructor(e,t){super(e.table,t),this.#wt=e,this.#So(),e.defaultSheetWidth=this.getColumnsContentWidth(),this.#Hn.add(e.locale$.subscribe(()=>{this.#$o(),this.redrawAll()})),this.#Hn.add(e.chartEventHover$.subscribe(t=>{var r=t?e.data.getResourceById(t.resourceId):null;this.setHoverItem(r)})),this.#Ro(),this.#Mo(),this.#Hn.add(this.tableContext.rowMouseOver$.subscribe(t=>{var r=t?{resource:t.item}:null;this.rowMouseOver$.next(r),e.sheetRowMouseOver$.next(r)})),this.#Hn.add(this.tableContext.rowContextMenu$.subscribe(e=>{this.rowContextMenu$.next({selectedResources:e.selectedItems,mouseEvent:e.mouseEvent})})),this.#Lo()}destroy(){this.#Hn.unsubscribe(),super.destroy()}#So(){var e=this.#wt.locale$.getValue(),t=new as("name",e.scheduler.name,e=>e.name??"",new zi,new Ui(e=>e.name,(e,t)=>e.name=t),()=>!0,200,80);this.addColumn(t);var r=new as("icons","",()=>"",new Mn,null,()=>!1,36,36);r.exportCellRenderer=An,this.addColumn(r);var i=new as("type",e.scheduler.type,e=>{var t=e.type;return t?Nn[t]??t:""},new zi,null,()=>!1,80,60);i.isVisible=!1,this.addColumn(i)}#$o(){var e=this.#wt.locale$.getValue(),t=this.getColumnByCode("name");t&&(t.name=e.scheduler.name);var r=this.getColumnByCode("type");r&&(r.name=e.scheduler.type),this.updateColumnHeaders()}getItemRowHeight(e){return this.#wt.getRowHeight(e)-1}redrawItemRow(e){super.redrawItemRow(e);var t=this.getItemRow(e);if(t){var r=this.#wt.getRowHeight(e)-1;t.style.height=r+"px",t.children[0].style.height=r+"px",this.#Io(t,e)}}#Io(e,t){var r=this.getColumns().findIndex(e=>"name"===e.code);if(!(r<0)){var i=e.children[r+1];if(i){var s=i.querySelector(".pin-icon");if(this.#wt.data.isResourceFrozen(t)){if(!s){var n=document.createElement("span");n.classList.add("pin-icon"),n.style.display="inline-flex",n.style.flexShrink="0",n.style.marginLeft="4px",n.innerHTML='<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 17v5"/><path d="M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16h14v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1h1V4H7v2h1a1 1 0 0 1 1 1z"/></svg>',i.appendChild(n)}}else s&&s.remove()}}}onComplexOperationFinished(){super.onComplexOperationFinished(),this.#Lo()}#Lo(){for(var e=this.#wt.data.orderedResources,t=0,r=0;r<e.length;r++){var i=e[r],s=this.getItemRow(i);if(s){var n=this.#wt.getRowHeight(i),a=n-1;s.style.height=a+"px",this.#wt.data.isResourceFrozen(i)?(s.style.position="sticky",s.style.top=t+"px",s.style.zIndex="3",s.classList.add("frozen"),t+=n):(s.style.position="",s.style.top="",s.style.zIndex="",s.classList.remove("frozen"))}}}#Mo(){this.#Hn.add(this.tableContext.rowAdded$.subscribe(({item:e,row:t})=>{t.addEventListener("mousedown",r=>{this.#Po(e,t,r)})})),this.addDocumentListener("mousemove",this.#Ao),this.addDocumentListener("mouseup",this.#Ho)}#Po(e,t,r){0===r.button&&this.#wt.canEdit&&!this.#wt.data.isResourceFrozen(e)&&(this.#Eo={resource:e,row:t,startX:r.clientX,startY:r.clientY})}#Ao(e){if(this.#Eo){if(!this.#Do){var t=e.clientX-this.#Eo.startX,r=e.clientY-this.#Eo.startY;Math.sqrt(t*t+r*r)>5&&(this.selection.cancelRangeSelection(),this.#Vo(this.#Eo))}this.#Do&&this.#Bo(e.clientY)}}#Ho(e){this.#Do&&this.#Fo(e.clientY),this.#Eo=null}#Vo(e){var t=e.row.cloneNode(!0);t.classList.add("reorder-ghost"),t.style.width=e.row.offsetWidth+"px",t.style.height=e.row.offsetHeight+"px",t.style.left=e.row.getBoundingClientRect().left+"px",window.document.body.appendChild(t);var r=window.document.createElement("div");r.classList.add("row-reorder-indicator"),r.style.display="none",this.rowsContainer.appendChild(r),e.row.style.opacity="0.3",this.#Do={resource:e.resource,ghost:t,indicator:r,sourceRow:e.row}}#Bo(e){var t=this.#Do;t.ghost.style.top=e-t.sourceRow.offsetHeight/2+"px";var r=this.#zo(e);if(r){var i=r.row.getBoundingClientRect(),s=e<i.top+i.height/2,n=this.rowsContainer.getBoundingClientRect(),a=(s?i.top:i.bottom)-n.top;t.indicator.style.top=a+"px",t.indicator.style.display="block"}else t.indicator.style.display="none"}#Fo(e){var t=this.#Do,r=this.#zo(e);if(r&&r.resource!==t.resource){var i=r.row.getBoundingClientRect(),s=e<i.top+i.height/2,n=this.#wt.data.indexOfResource(r.resource);s||n++,this.#wt.data.moveResource(t.resource,n)}t.ghost.remove(),t.indicator.remove(),t.sourceRow.style.opacity="",this.#Do=null}#zo(e){for(var t=this.#wt.data.orderedResources,r=this.#wt.data.frozenResourcesCount,i=r;i<t.length;i++){var s=t[i],n=this.getItemRow(s);if(n){var a=n.getBoundingClientRect();if(e>=a.top&&e<=a.bottom)return{resource:s,row:n}}}if(t.length>r){var o=t[t.length-1],l=this.getItemRow(o);if(l&&e>l.getBoundingClientRect().bottom)return{resource:o,row:l}}return null}#Ro(){this.#Hn.add(this.#wt.data.eventAdded$.subscribe(()=>this.#Oo())),this.#Hn.add(this.#wt.data.eventRemoved$.subscribe(()=>this.#Oo())),this.#Hn.add(this.#wt.data.eventChanged$.subscribe(()=>this.#Oo())),this.#Hn.add(this.#wt.data.frozenChanged$.subscribe(()=>this.#Lo())),this.#Hn.add(this.#wt.settings.changed$.subscribe(()=>{this.#$o(),this.redrawAll()})),this.#Hn.add(this.#wt.chartMouseWheel$.subscribe(e=>{e.ctrlKey||this.scrollContentVertically(e.deltaY)}))}#Oo(){var e=this.#wt.data.orderedResources;for(var t of e){var r=this.getItemRow(t);if(r){var i=this.#wt.getRowHeight(t)-1;r.style.height=i+"px",r.children[0].style.height=i+"px"}}}formatCustomDateValue(e){return Kt(e,this.#wt.locale$.getValue().language)}createCustomDateCellEditor(e,t){return new Wn(this.#wt,e,t)}clearSelection(){super.clearSelection(),this.#wt.selectedResources$.next([])}}class jn extends Ar{constructor(e,t,r,i){super(e,t,r,i,{getMinStartTime:()=>e.data.minStartTime,getMaxEndTime:()=>e.data.maxEndTime})}}class Xn extends Ur{#wt;#No;#Br;constructor(e,t,r){super(e),this.#wt=e,this.#No=t,this.#Br=r}getResourceRowAt(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=this.#wt.data.frozenResourcesCount,s=this.#wt.frozenSectionBottom;if(e.y<t)return null;if(i>0&&e.y<s){for(var n=t,a=0;a<i;a++){var o=this.#wt.getRowHeight(r[a]);if(e.y>=n&&e.y<n+o)return r[a];n+=o}return null}var l=this.#wt.scrollTop$.getValue()+e.y-s;for(n=0,a=i;a<r.length;a++){o=this.#wt.getRowHeight(r[a]);if(l>=n&&l<n+o)return r[a];n+=o}return null}getEventAt(e){var t=this.getResourceRowAt(e);if(!t)return null;var r=this.#wt.theme$.getValue().chart.content.taskHeight,i=this.#wt.data.getEventsForResource(t.id);for(var s of i){var n=this.#wt.getEventY(t,s);if(!(e.y<n||e.y>n+r)){var a=this.dateToX(s.startTime),o=this.dateToX(s.endTime);if(e.x>=a&&e.x<=o)return{event:s,resource:t,x1:a,x2:o}}}return null}drawEventHighlight(e,t,r){var i=this.#wt.data.getResourceById(e.resourceId);if(i){var s=this.#wt.theme$.getValue().chart.content.taskHeight,n=this.#wt.getEventY(i,e),a=new kr(t,n,r-t,s),o=this.#wt.data.getEventColor(e);this.#Wo(a,o)}}drawTooltip(e,t,r,i){this.#Br.drawTooltip(this.canvas,e,t,r,i)}drawHighlightForResource(e,t,r,i){var s=this.#wt.theme$.getValue().chart.content.taskHeight,n=this.#wt.getRowY(e),a=this.#wt.getRowHeight(e),o=Math.min(t,r),l=Math.max(t,r),h=new kr(o,n+a/2-s/2,l-o,s),d=i??this.#wt.data.orderedIndexOf(e);this.#Wo(h,d)}drawTooltipForResource(e,t,r,i){this.#Br.drawTooltipForResource(this.canvas,e,t,r,i)}#Wo(e,t){var r=this.#wt.theme$.getValue(),i=r.chart.content.taskBorderRadius,s=Xr(t,r.chart.content.taskColors),n=this.canvas.getContext("2d");n.globalAlpha=.5,n.beginPath(),i>0?n.roundRect(e.x,e.y,e.width,e.height,i):n.rect(e.x,e.y,e.width,e.height);var a=n.createLinearGradient(e.x,e.y,e.x,e.bottom);a.addColorStop(0,s.color1),a.addColorStop(1,s.color2),n.fillStyle=a,n.fill(),s.borderColor&&(n.beginPath(),i>0?n.roundRect(e.x,e.y,e.width,e.height,i):n.rect(e.x,e.y,e.width,e.height),n.strokeStyle=s.borderColor,n.stroke()),n.globalAlpha=1}}class Yn extends Xn{#wt;#Uo=null;#jo=null;dblClick$=new e;contextMenu$=new e;constructor(e,t,r){super(e,t,r),this.ignoreRightButton=!1,this.ignoreWhenCannotEdit=!1,this.alwaysHandleEvents=!0,this.#wt=e}async onMouseDown(e,t,r){if(0!==r.button)return Wr.notHandled;var i=this.getEventAt(e);if(i){var s=this.#wt.selectedEvents$.getValue();if(t)return s.find(e=>e.id===i.event.id)?this.#wt.selectedEvents$.next(s.filter(e=>e.id!==i.event.id)):this.#wt.selectedEvents$.next([...s,i.event]),Wr.handled;if(r.shiftKey&&s.length>0){var n=s[s.length-1];if(n.resourceId===i.event.resourceId){var a=this.#wt.data.getEventsForResource(n.resourceId);a.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()||e.id.localeCompare(t.id));var o=a.findIndex(e=>e.id===n.id),l=a.findIndex(e=>e.id===i.event.id),h=Math.min(o,l),d=Math.max(o,l);this.#wt.selectedEvents$.next(a.slice(h,d+1))}else this.#wt.selectedEvents$.next([i.event]);return Wr.handled}return this.#wt.selectedEvents$.next([i.event]),Wr.notHandled}return this.#wt.selectedEvents$.getValue().length>0&&this.#wt.selectedEvents$.next([]),Wr.notHandled}async onMouseMove(e,t){this.#jo=e;var r=this.getEventAt(e),i=r?.event??null;return i!=this.#Uo&&(this.#Uo=i,this.#wt.chartEventHover$.next(i)),Wr.notHandled}async onMouseLeave(e,t){return this.#Uo=null,this.#jo=null,this.#wt.chartEventHover$.next(null),Wr.notHandled}async onKeyDown(e,t){var r=this.#wt.selectedEvents$.getValue();if(0===r.length)return Wr.notHandled;if(tr(t)&&this.canEdit){var i=[...r];for(var s of i){var n={event:s,cancel:!1};this.#wt.eventDeleting$.next(n),n.cancel||this.#wt.data.removeEvent(s)}return Wr.handled}var a=r[r.length-1],o="ArrowLeft"===t.key||"ArrowRight"===t.key||"ArrowUp"===t.key||"ArrowDown"===t.key;if(t.ctrlKey&&t.shiftKey&&o&&this.canEdit)return this.#Xo(a,t,"left");if(t.ctrlKey&&!t.shiftKey&&o&&this.canEdit)return this.#Yo(r,a,t);if(t.shiftKey&&!t.ctrlKey&&o&&this.canEdit)return this.#Xo(a,t,"right");var l=null;switch(t.key){case"ArrowLeft":l=this.#Ko(a,-1);break;case"ArrowRight":l=this.#Ko(a,1);break;case"ArrowUp":l=this.#Zo(a,-1);break;case"ArrowDown":l=this.#Zo(a,1)}return l?(t.preventDefault(),this.#wt.selectedEvents$.next([l]),this.#Go(l),Wr.handled):Wr.notHandled}#Yo(e,t,r){var i=this.#wt.timeline.currentZoom.axis[0];if("ArrowLeft"===r.key||"ArrowRight"===r.key){var s="ArrowRight"===r.key?1:-1;for(var n of e){var a=i.getCellStartTime(n.startTime),o=i.getAdd(a,s),l=n.endTime.getTime()-n.startTime.getTime(),h=new Date(o.getTime()+l);if(u=this.#wt.data.getResourceById(n.resourceId)){var d={event:n,newStartTime:o,newEndTime:h,newResource:u,cancel:!1};this.#wt.eventMoving$.next(d),d.cancel||(n.startTime=d.adjustedStartTime??d.newStartTime,n.endTime=d.adjustedEndTime??d.newEndTime)}}return r.preventDefault(),this.#Go(t),Wr.handled}if("ArrowUp"===r.key||"ArrowDown"===r.key){var c=t.resourceId;if(!e.every(e=>e.resourceId===c))return Wr.notHandled;var u,g=this.#wt.data.orderedResources;if(!(u=this.#wt.data.getResourceById(c)))return Wr.notHandled;var m=g.indexOf(u);if(m<0)return Wr.notHandled;var p=m+("ArrowDown"===r.key?1:-1);if(p<0||p>=g.length)return Wr.notHandled;var v=g[p];for(var n of e){d={event:n,newStartTime:n.startTime,newEndTime:n.endTime,newResource:v,cancel:!1};this.#wt.eventMoving$.next(d),d.cancel||(n.startTime=d.adjustedStartTime??d.newStartTime,n.endTime=d.adjustedEndTime??d.newEndTime,n.resourceId=d.newResource.id)}return r.preventDefault(),this.#Go(t),Wr.handled}return Wr.notHandled}#Xo(e,t,r){if("ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return Wr.notHandled;var i,s=this.#wt.timeline.currentZoom.axis[0],n="ArrowRight"===t.key?1:-1,a=e.startTime,o=e.endTime;if("right"===r){i="right";var l=s.getCellStartTime(e.endTime);if((o=s.getAdd(l,n)).getTime()<=e.startTime.getTime())return Wr.notHandled}else{i="left";var h=s.getCellStartTime(e.startTime);if(a=s.getAdd(h,n),(a=this.#wt.calendar$.getValue().moveToStartShift(a,!0)).getTime()>=e.endTime.getTime())return Wr.notHandled}var d={event:e,edge:i,newStartTime:a,newEndTime:o,cancel:!1};if(this.#wt.eventResizing$.next(d),!d.cancel){var c=d.adjustedStartTime??d.newStartTime,u=d.adjustedEndTime??d.newEndTime;c.getTime()<u.getTime()&&("left"===i?e.startTime=c:e.endTime=u)}return t.preventDefault(),this.#Go(e),Wr.handled}#Ko(e,t){var r=this.#wt.data.getEventsForResource(e.resourceId);r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()||e.id.localeCompare(t.id));var i=r.findIndex(t=>t.id===e.id);if(i<0)return null;var s=i+t;return s<0||s>=r.length?null:r[s]}#Zo(e,t){var r=this.#wt.data.orderedResources,i=this.#wt.data.getResourceById(e.resourceId);if(!i)return null;var s=r.indexOf(i);if(s<0)return null;for(var n=(e.startTime.getTime()+e.endTime.getTime())/2,a=s+t;a>=0&&a<r.length;a+=t){var o=this.#wt.data.getEventsForResource(r[a].id);if(0!==o.length){var l=null,h=1/0;for(var d of o){var c=(d.startTime.getTime()+d.endTime.getTime())/2,u=Math.abs(c-n);u<h&&(h=u,l=d)}return l}}return null}#Go(e){var t=this.dateToX(e.startTime),r=this.dateToX(e.endTime);if(t<0||r>this.canvas.width){var i=this.#wt.timeline.currentZoom.axis[0],s=i.getAdd(i.getCellStartTime(e.startTime),-1);this.#wt.timeline.visibleStartTime$.next(s)}}onRedrawn(){this.#qo();var e=this.#wt.chartEventHover$.getValue();if(e&&this.#jo){var t=this.#wt.data.getResourceById(e.resourceId);if(!t)return;var r=this.#wt.eventTooltip$.getValue();if(r){var i=r({event:e,resource:t});i&&this.drawTooltip(e,this.#jo.x,i.title,i.lines)}else{var s=this.#wt.locale$.getValue(),n=[];n.push({name:s.labels.start,value:Kt(e.startTime,s.language)}),n.push({name:s.labels.end,value:Kt(e.endTime,s.language)}),this.drawTooltip(e,this.#jo.x,e.name,n)}}}#qo(){var e=this.#wt.selectedEvents$.getValue();if(0!==e.length){var t=this.#wt.theme$.getValue().chart.content.taskHeight,r=this.canvas.getContext("2d");for(var i of e){var s=this.#wt.data.getResourceById(i.resourceId);if(s){var n=this.dateToX(i.startTime),a=this.dateToX(i.endTime);if(!(a<0||n>this.canvas.width)){var o=this.#wt.getEventY(s,i);if(ui(r,new xr(n,o)),ui(r,new xr(a,o)),ui(r,new xr(n,o+t)),ui(r,new xr(a,o+t)),a-n>=60){var l=Math.floor((n+a)/2);ui(r,new xr(l,o)),ui(r,new xr(l,o+t))}}}}}}onContextMenu(e,t){var r=this.getResourceRowAt(e);if(!r)return Wr.notHandled;var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=Math.floor(e.x/i.baseCellWidth),o=s.getAdd(n,a),l=this.getEventAt(e);return this.contextMenu$.next({date:o,resource:r,event:l?.event??null,mouseEvent:t}),Wr.handled}onDblClick(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getEventAt(e);return r?(this.dblClick$.next(r.event),Wr.handled):Wr.notHandled}}class Kn extends Xn{startX=0;lastP=new xr(0,0);target=null;dragCursor="all-scroll";enableHoverDetection=!1;hoverCursor="ew-resize";constructor(e,t,r){super(e,t,r)}onDragStart(e,t){}async onMouseMove(e,t){if(this.isInOperation)return this.lastP=e,Wr.handled;if(this.enableHoverDetection){var r=this.hitTest(e);if(r)return this.target=r,this.setCursor(this.hoverCursor),Wr.handled;this.target&&(this.target=null,this.setCursor("default"))}return Wr.notHandled}async onMouseDown(e,t,r){if(0!==r.button||this.isInOperation)return Wr.notHandled;var i=this.hitTest(e);return i?(this.target=i,this.isInOperation=!0,this.startX=e.x,this.lastP=e,this.onDragStart(i,e),this.setCursor(this.dragCursor),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,this.setCursor("default"),this.onDragEnd(this.target,e),Wr.handled):Wr.notHandled}onRedrawn(){this.isInOperation&&this.target&&this.onDragDraw(this.target)}}class Zn extends Kn{#wt;#_o=0;constructor(e,t,r){super(e,t,r),this.#wt=e}hitTest(e){return this.getEventAt(e)}onDragStart(e,t){this.#_o=e.event.endTime.getTime()-e.event.startTime.getTime(),this.#wt.chartEventHover$.next(null)}onDragEnd(e,t){var r=this.#Fr(t),i=e.event,s={event:i,newStartTime:r.startTime,newEndTime:r.endTime,newResource:r.targetResource,cancel:!1};this.#wt.eventMoving$.next(s),s.cancel||(i.startTime=s.adjustedStartTime??s.newStartTime,i.endTime=s.adjustedEndTime??s.newEndTime,i.resourceId=s.newResource.id),this.#wt.selectedEvents$.next([i])}onDragDraw(e){var t=this.#Fr(this.lastP),r=this.lastP.x-this.startX,i=e.x1+r,s=e.x2+r;if(t.targetResource.id===e.resource.id)this.drawEventHighlight(e.event,i,s);else{var n=this.#wt.data.getEventColor(e.event);this.drawHighlightForResource(t.targetResource,i,s,n)}var a=this.#wt.locale$.getValue(),o=[];o.push({name:a.labels.start,value:Kt(t.startTime,a.language)}),o.push({name:a.labels.end,value:Kt(t.endTime,a.language)}),this.drawTooltipForResource(t.targetResource,this.startX,a.scheduler.moveEvent,o)}#Jo(e){return this.getResourceRowAt(e)??this.target.resource}#Fr(e){var t=e.x-this.startX,r=this.getCellAt(new xr(this.target.x1+t,e.y)),i=this.cellToDate(r),s=new Date(i.getTime()+this.#_o);return{startTime:i,endTime:s,targetResource:this.#Jo(e)}}}class Gn extends Kn{#wt;constructor(e,t,r){super(e,t,r),this.#wt=e,this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getResourceRowAt(e);if(!t)return null;var r=this.#wt.theme$.getValue().chart.content.taskHeight,i=this.#wt.data.getEventsForResource(t.id);for(var s of i){var n=this.#wt.getEventY(t,s);if(!(e.y<n||e.y>n+r)){var a=this.dateToX(s.startTime),o=this.dateToX(s.endTime);if(Math.abs(e.x-o)<=3)return{event:s,resource:t,edge:"right",x1:a,x2:o,deltaX:e.x-o};if(Math.abs(e.x-a)<=3)return{event:s,resource:t,edge:"left",x1:a,x2:o,deltaX:e.x-a}}}return null}onDragStart(e,t){this.#wt.chartEventHover$.next(null),this.#wt.selectedEvents$.next([])}onDragEnd(e,t){var r=this.#Fr(t),i=e.event;if(r.startTime.getTime()<r.endTime.getTime()){var s={event:i,edge:e.edge,newStartTime:r.startTime,newEndTime:r.endTime,cancel:!1};if(this.#wt.eventResizing$.next(s),!s.cancel){var n=s.adjustedStartTime??s.newStartTime,a=s.adjustedEndTime??s.newEndTime;n.getTime()<a.getTime()&&("left"===e.edge?i.startTime=n:i.endTime=a)}}this.#wt.selectedEvents$.next([i])}onDragDraw(e){var t,r,i=this.lastP.x-this.startX-e.deltaX;"left"===e.edge?(t=e.x1+i,r=e.x2):(t=e.x1,r=e.x2+i),this.drawEventHighlight(e.event,t,r);var s=this.#wt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];"left"===e.edge?a.push({name:s.labels.start,value:Kt(n.startTime,s.language)}):a.push({name:s.labels.end,value:Kt(n.endTime,s.language)}),this.drawTooltip(e.event,this.startX,s.scheduler.resizeEvent,a)}#Fr(e){var t=this.target,r=this.lastP.x-this.startX-t.deltaX;if("left"===t.edge){var i=t.x1+r,s=this.getCellAt(new xr(i,e.y)),n=this.cellToDate(s);return{startTime:n=this.#wt.calendar.moveToStartShift(n,!0),endTime:t.event.endTime}}var a=t.x2+r,o=this.getCellEndAligned(new xr(a,e.y)),l=this.getEndTimeAligned(o);return{startTime:t.event.startTime,endTime:l}}}class qn extends Kn{#wt;constructor(e,t,r){super(e,t,r),this.#wt=e,this.dragCursor="crosshair"}hitTest(e){var t=this.getResourceRowAt(e);return t?this.getEventAt(e)?null:{resource:t,startCell:this.getCellAt(e)}:null}onDragStart(e,t){this.#wt.chartEventHover$.next(null)}onDragEnd(e,t){var r=this.#Fr(t);if(r){var i={resource:e.resource,startTime:r.startTime,endTime:r.endTime,cancel:!1};if(this.#wt.eventCreating$.next(i),!i.cancel){var s=i.adjustedStartTime??i.startTime,n=i.adjustedEndTime??i.endTime;if(n.getTime()>s.getTime()){var a=new zn(null,e.resource.id,"",s,n);this.#wt.data.addEvent(a),this.#wt.selectedEvents$.next([a])}}}}onDragDraw(e){this.drawHighlightForResource(e.resource,this.startX,this.lastP.x);var t=this.#Fr(this.lastP);if(t){var r=this.#wt.locale$.getValue(),i=[];i.push({name:r.labels.start,value:Kt(t.startTime,r.language)}),i.push({name:r.labels.end,value:Kt(t.endTime,r.language)}),this.drawTooltipForResource(e.resource,this.startX,r.scheduler.addEvent,i)}}#Fr(e){var t=this.target,r=Math.round(t.startCell),i=this.getCellEndAligned(e);if(i<=r)return null;var s=this.cellToDate(t.startCell),n=this.getEndTimeAligned(i);return s=this.#wt.calendar.moveToStartShift(s,!0),n=this.#wt.calendar.moveToEndShift(n,!0),s.getTime()>=n.getTime()?null:{startTime:s,endTime:n}}}class _n{#wt;constructor(e){this.#wt=e}drawTooltipForResource(e,t,r,i,s){Ci(e,this.#wt.getRowY(t),this.#wt.getRowHeight(t),r,i,s,this.#wt.theme$.getValue())}drawTooltip(e,t,r,i,s){var n=this.#wt.data.getResourceById(t.resourceId);n&&Ci(e,this.#wt.getEventY(n,t),this.#wt.theme$.getValue().chart.content.taskHeight,r,i,s,this.#wt.theme$.getValue())}}class Jn extends Nr{#wt;eventDblClick$=new e;eventContextMenu$=new e;constructor(e,t){super(e,t),this.#wt=e;var r=new Sn(e),i=new _n(e),s=new Yn(e,r,i);this.addSubscription(s.dblClick$.subscribe(e=>{this.eventDblClick$.next(e)})),this.addSubscription(s.contextMenu$.subscribe(e=>{this.eventContextMenu$.next(e)})),this.addHandler(s),this.addHandler(new Gn(e,r,i)),this.addHandler(new Zn(e,r,i)),this.addHandler(new qn(e,r,i)),this.wireHandlers()}createAutoScroll(e){return new Fr(e,(e,t)=>this.onAutoScroll(e,t),{enableVertical:!0,getContentTop:()=>this.#wt.theme$.getValue().contentTop})}onAutoScroll(e,t){if(super.onAutoScroll(e,t),0!==t){var r=this.#wt.scrollTop$.getValue(),i=this.#wt.theme$.getValue().contentTop,s=this.chartElement.clientHeight-i,n=Math.max(0,this.#wt.getTotalContentHeight()-s);this.#wt.scrollTop$.next(Math.max(0,Math.min(n,r+t)))}}registerKeydownListener(e){e.addEventListener("keydown",async e=>{await this.handleKeyDown(e)},!1)}onBeforeMouseDown(){this.chartElement.focus({preventScroll:!0})}}class Qn extends Pi{#$t;#zi;#No;#Li;#Ni;#pr;constructor(e,t){super(e,t,"scheduler"),this.init(),t.setAttribute("tabindex","0")}initComponents(e,t,r){this.#$t=new En(this.ctx),this.#zi=new Dn(this.ctx),this.#No=new Sn(this.ctx),this.#Li=new $n(this.ctx),this.#Ni=new jn(this.ctx,e,t,r),this.#pr=new Jn(this.ctx,e),this.#pr.init(e,t)}getRedrawObservables(){var e=this.ctx;return[this.#pr.redraw$,e.timeline.zoomIndex$,e.timeline.visibleStartTime$,e.scrollTop$,e.data.resourceChanged$,e.data.resourceRemoved$,e.data.eventAdded$,e.data.eventChanged$,e.data.eventRemoved$,e.data.complexOperationFinished$,e.data.frozenChanged$,e.sheetRowMouseOver$,e.chartEventHover$,e.selectedEvents$,e.selectedResources$,e.settings.changed$,e.showGridLines$,e.showTodayLine$,e.markers$]}onRedraw(e){this.renderPipeline(e,this.#$t,this.#zi,this.#Li,()=>{this.#No.render(this.canvas)})}onResize(){this.#Ni.handleResize()}get handlers(){return this.#pr}destroyComponents(){this.#Ni.destroy(),this.#pr.destroy()}}class ea extends ws{constructor(e,t,r,i,s){super(e,t,r,i,s,{getDefaultSheetWidth:()=>e.defaultSheetWidth})}}class ta{#wt;#Ia=null;constructor(e){this.#wt=e}async copy(e){if(0!==e.length){this.#Ia=this.#Pa(e);var t=this.#Aa(e);try{await navigator.clipboard.writeText(t)}catch{}}}async cut(e){if(await this.copy(e),e.length>0)for(var t of e)this.#wt.data.removeEvent(t)}async paste(){if(this.#Ia)return this.#Ha(this.#Ia);try{var e=await navigator.clipboard.readText();if(e&&e.trim().length>0)return this.#Va(e)}catch{}return null}#Pa(e){var t=[];for(var r of e)t.push(r.toAny());return{events:t}}#Ha(e){var t=new Map,r=[];for(var i of e.events){var s=i.id,n=i.resourceId;if(this.#wt.data.getResourceById(n)){var a=new zn(null,n,i.name??"",new Date(i.startTime),new Date(i.endTime));if(void 0!==i.color&&null!==i.color&&(a.color=i.color),i.properties)for(var o of i.properties)a.addProperty(or.fromAny(o));this.#wt.data.addEvent(a),t.set(s,a),r.push(a)}}return this.#wt.data.complexOperationFinished$.next(),{events:r,eventIdMap:t}}#Va(e){var t=e.split("\n").filter(e=>e.trim().length>0),r=[],i=new Map,s=this.#wt.selectedEvents$.getValue(),n=null;if(s.length>0)n=s[s.length-1].resourceId;else{var a=this.#wt.data.orderedResources;a.length>0&&(n=a[0].id)}if(!n)return{events:[],eventIdMap:i};if(!this.#wt.data.getResourceById(n))return{events:[],eventIdMap:i};for(var o of t){var l=o.split("\t"),h=l[0]?.trim();if(h){var d=null,c=null;if(l[1]?.trim())try{d=new Date(l[1].trim())}catch{}if(l[2]?.trim())try{c=new Date(l[2].trim())}catch{}if(d&&!isNaN(d.getTime())&&c&&!isNaN(c.getTime())&&!(d.getTime()>=c.getTime())){var u=new zn(null,n,h,d,c);this.#wt.data.addEvent(u);var g=er(8);i.set(g,u),r.push(u)}}}return this.#wt.data.complexOperationFinished$.next(),{events:r,eventIdMap:i}}#Aa(e){var t=[];for(var r of e){var i=r.name??"",s=qt(r.startTime),n=qt(r.endTime),a="",o=this.#wt.data.getResourceById(r.resourceId);o&&(a=o.name),t.push([i,s,n,a].join("\t"))}return t.join("\n")}}class ra{data;dataAdapter;table;timeline;locale$;calendar$;theme$;projectTimeline$;settings;get scrollTop$(){return this.table.scrollTop$}autoScrolling=!1;selectedResources$=new t([]);canEdit$=new t(!0);get canEdit(){return this.canEdit$.getValue()}showGridLines$=new t(!0);showTodayLine$=new t(!0);markers$=new t([]);defaultSheetWidth=0;dividerPositionChanged$=new e;dividerResizing$=new t(!1);chartMouseWheel$=new e;chartRedrawn$=new e;chartBackgroundRedrawn$=new e;chartCursor$=new e;chartEventHover$=new t(null);selectedEvents$=new t([]);sheetRowMouseOver$=new t(null);eventMoving$=new e;eventResizing$=new e;eventCreating$=new e;eventDeleting$=new e;eventRendering$=new t(null);eventTooltip$=new t(null);layout;constructor(){this.projectTimeline$=new t(new Sr(Bt(),Ft(180))),this.locale$=new t(js),this.calendar$=new t(new yr),this.timeline=new Hi(this.calendar$,this.locale$),this.data=new wn;var e=new vn;this.theme$=new t(e),this.dataAdapter=new xn(this.data),this.table=new Ws(this.dataAdapter,e.rowHeight),this.canEdit$.subscribe(e=>this.table.canEdit$.next(e)),this.table.selectedItems$.subscribe(e=>this.selectedResources$.next(e)),this.layout=new On(this.data,this.theme$,this.scrollTop$)}get calendar(){return this.calendar$.getValue()}getRowHeight(e){return this.layout.getRowHeight(e)}getEventY(e,t){return this.layout.getEventY(e,t)}getRowY(e){return this.layout.getRowY(e)}getTotalContentHeight(){return this.layout.getTotalContentHeight()}get frozenSectionBottom(){return this.layout.frozenSectionBottom}}class ia extends Ys{#wt;#pa;#Ya;#Ka;#Qo;#Za;#Ga;#qa;#el;get ctx(){return this.#wt}get engineEvents(){return this.#qa}getChartWidth(){return this.#Ka.chartWidth}getChartElement(){return this.#Ka.chartElement}getTheme(){return this.#wt.theme$.getValue()}subscribeThemeChange(e){return this.#wt.theme$.subscribe(e)}isCellEditing(){return null!==this.#wt.table.cellEditing$.getValue()}saveColumnsImpl(){return this.#pa.saveColumns()}loadColumnsImpl(e){this.#pa.loadColumns(e)}hasData(){return this.data.eventsLength>0}destroyComponents(){this.#Ka.destroy(),this.#pa.destroy(),this.#Ya.destroy(),this.#Qo.destroy()}addWrapperClasses(e){e.classList.add("gc-scheduler")}get data(){return this.#wt.data}get sheet(){return this.#pa}get events(){return this.#qa}get selectedResources(){return this.#wt.selectedResources$.getValue()}get selectedEvents(){return this.#wt.selectedEvents$.getValue()}set selectedEvents(e){this.#wt.selectedEvents$.next(e)}get selectedEvent(){var e=this.#wt.selectedEvents$.getValue();return e.length>0?e[e.length-1]:null}set selectedEvent(e){this.#wt.selectedEvents$.next(e?[e]:[])}get eventRendering(){return this.#wt.eventRendering$.getValue()}set eventRendering(e){this.#wt.eventRendering$.next(e)}get eventTooltip(){return this.#wt.eventTooltip$.getValue()}set eventTooltip(e){this.#wt.eventTooltip$.next(e)}get filter(){return this.#wt.data.filter}set filter(e){this.#wt.data.filter=e}clearFilter(){this.#wt.data.filter=null}get settings(){return this.#el}constructor(e){super(e),this.#wt=new ra,this.#el=new na(this.#wt),this.#wt.settings=this.#el;var{sheetElement:t,dividerElement:r,chartElement:i}=this.createDom();this.#pa=new Un(this.#wt,t),this.#Ya=new ea(this.#wt,this._wrapperElement,t,r,i),this.#Ka=new Qn(this.#wt,i),this._subscriptions.add(this.#pa.columnsChanged$.subscribe(()=>{this.#Ya.updateCalculatedWidth(this.#pa.getColumnsContentWidth())})),this.#Qo=new aa(this.#wt,this._wrapperElement,this.#pa),this.#qa=new sa(this.#wt,this.#pa),this.#qa._bindChartHandlers(this.#Ka),this.#Ga=new ta(this.#wt),this.#Za=new Ns(()=>this.save(),e=>this.restoreState(e)),this._undoManager=this.#Za,this._subscriptions.add(this.#wt.data.resourceAdded$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.resourceChanged$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.resourceRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventAdded$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventChanged$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.complexOperationFinished$.subscribe(()=>this.#Za.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventRemoved$.subscribe(e=>{var t=this.#wt.selectedEvents$.getValue(),r=t.filter(t=>t.id!==e.event.id);r.length!==t.length&&this.#wt.selectedEvents$.next(r)})),this._subscriptions.add(this.#wt.data.filterChanged$.subscribe(()=>{var e=this.#wt.selectedEvents$.getValue(),t=e.filter(e=>{var t=this.#wt.data.getResourceById(e.resourceId);return t&&!t.filtered});t.length!==e.length&&this.#wt.selectedEvents$.next(t),this.#wt.data.complexOperationFinished$.next()})),this.#Za.initialize(),this.wireTheme(),this.wireKeyboard()}async copy(){var e=this.#wt.selectedEvents$.getValue();await this.#Ga.copy(e)}async cut(){if(this.canEdit){var e=this.#wt.selectedEvents$.getValue();await this.#Ga.cut(e)}}async paste(){if(!this.canEdit)return null;this._undoManager.beginBatch();try{var e=await this.#Ga.paste();return e&&this.#qa.eventsPasted$.next(e),e}finally{this._undoManager.endBatch()}}scrollToResource(e){this.#pa.scrollToItem(e)}scrollToEvent(e){var t=this.#wt.data.getResourceById(e.resourceId);t&&this.#pa.scrollToItem(t),this.scrollToDate(e.startTime)}zoomToFit(e){var t=null,r=null;if(e&&e.length>0)for(var i of e)(!t||i.startTime.getTime()<t.getTime())&&(t=i.startTime),(!r||i.endTime.getTime()>r.getTime())&&(r=i.endTime);else t=this.#wt.data.minStartTime,r=this.#wt.data.maxEndTime;this.zoomToFitRange(t,r)}async exportToImage(){return new Vn(this.#wt,this.#pa).exportToImage()}exportToCsv(e){return new Bn(this.#wt).exportToCsv(e)}async exportToExcel(e){return new Bn(this.#wt).exportToExcel(e)}async exportToPdf(e){return new Fn(this.#wt,this.#pa).exportToPdf(e)}sortResources(e){this.#wt.data.sortResources(e)}freezeResource(e){this.#wt.data.freezeResource(e)}unfreezeResource(e){this.#wt.data.unfreezeResource(e)}isResourceFrozen(e){return this.#wt.data.isResourceFrozen(e)}save(){for(var e=[],t=0;t<this.data.resourcesLength;t++)e.push(this.data.getResource(t).toAny());var r=[];for(t=0;t<this.data.eventsLength;t++)r.push(this.data.getEvent(t).toAny());var i=[...this.data.frozenResourceIds],s=this.markers.map(e=>({date:qt(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})),n={resources:e,events:r,projectTimeline:{startDate:qt(this.projectTimeline.startDate),endDate:qt(this.projectTimeline.endDate)},showTodayLine:this.showTodayLine,frozenResourceIds:i.length>0?i:void 0,markers:s.length>0?s:void 0};return JSON.stringify(n,(e,t)=>null===t?void 0:t)}restoreState(e){this.sheet.clearSelection(),this.#wt.selectedEvents$.next([]),this.#wt.data.filter=null;for(var t=JSON.parse(e),r=[],i=0;i<t.resources.length;i++)r.push(Cn.fromAny(t.resources[i]));this.data.assignResources(r);var s=[];for(i=0;i<t.events.length;i++)s.push(zn.fromAny(t.events[i]));if(this.data.assignEvents(s),t.projectTimeline&&this.#wt.projectTimeline$.next(new Sr(new Date(t.projectTimeline.startDate),new Date(t.projectTimeline.endDate))),void 0!==t.showTodayLine&&this.#wt.showTodayLine$.next(t.showTodayLine),t.frozenResourceIds)for(var n of t.frozenResourceIds){var a=this.data.getResourceById(n);a&&this.data.freezeResource(a)}t.markers?this.markers=t.markers.map(e=>({date:new Date(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})):this.markers=[]}}class sa{#T=new r;resourceAdded$=new e;resourceChanged$=new e;resourceRemoved$=new e;eventAdded$=new e;eventChanged$=new e;eventRemoved$=new e;eventSelected$=new e;eventDblClick$=new e;eventDeleting$=new e;eventsPasted$=new e;chartContextMenu$=new e;eventMoving$=new e;eventResizing$=new e;eventCreating$=new e;sheetRowContextMenu$=new e;sheetCellEditing$=new e;projectTimeline$=new e;undone$=new e;redone$=new e;constructor(e,t){this.#T.add(e.data.resourceAdded$.subscribe(e=>this.resourceAdded$.next(e))),this.#T.add(e.data.resourceChanged$.subscribe(e=>this.resourceChanged$.next(e))),this.#T.add(e.data.resourceRemoved$.subscribe(e=>this.resourceRemoved$.next(e))),this.#T.add(e.data.eventAdded$.subscribe(e=>this.eventAdded$.next(e))),this.#T.add(e.data.eventChanged$.subscribe(e=>this.eventChanged$.next(e))),this.#T.add(e.data.eventRemoved$.subscribe(e=>this.eventRemoved$.next(e))),this.#T.add(e.selectedEvents$.subscribe(e=>{var t=e.length>0?e[e.length-1]:null;this.eventSelected$.next(t?{event:t}:null)})),this.#T.add(e.eventDeleting$.subscribe(e=>this.eventDeleting$.next(e))),this.#T.add(t.rowContextMenu$.subscribe(e=>this.sheetRowContextMenu$.next(e))),this.#T.add(e.table.cellEditing$.subscribe(e=>this.sheetCellEditing$.next(null!==e))),this.#T.add(e.projectTimeline$.subscribe(e=>this.projectTimeline$.next(e))),this.#T.add(e.eventMoving$.subscribe(e=>this.eventMoving$.next(e))),this.#T.add(e.eventResizing$.subscribe(e=>this.eventResizing$.next(e))),this.#T.add(e.eventCreating$.subscribe(e=>this.eventCreating$.next(e)))}_bindChartHandlers(e){this.#T.add(e.handlers.eventDblClick$.subscribe(e=>this.eventDblClick$.next({event:e}))),this.#T.add(e.handlers.eventContextMenu$.subscribe(e=>this.chartContextMenu$.next(e)))}destroy(){this.#T.unsubscribe()}}class na{get locale(){return this.#wt.locale$.getValue()}set locale(e){this.#wt.locale$.next(e),this.changed$.next()}get theme(){return this.#wt.theme$.getValue()}set theme(e){this.#wt.theme$.next(e),this.#wt.table.rowHeight=e.rowHeight,this.changed$.next()}changed$=new e;#wt;constructor(e){this.#wt=e}}class aa{#wt;#nr;#Lt;#pa;#tl=!1;#T=new r;constructor(e,t,r){this.#wt=e,this.#pa=r,this.#nr=document.createElement("div"),this.#nr.classList.add("gc-scrollbar"),t.appendChild(this.#nr),this.#Lt=document.createElement("div"),this.#nr.appendChild(this.#Lt),this.#nr.addEventListener("scroll",()=>{this.#tl||(this.#tl=!0,this.#pa.setScrollTop(this.#nr.scrollTop),this.#tl=!1)}),this.#T.add(e.scrollTop$.subscribe(()=>{this.#tl||(this.#tl=!0,this.#nr.scrollTop=e.scrollTop$.getValue(),this.#tl=!1),this.#rl()})),this.#T.add(e.data.resourceAdded$.subscribe(()=>this.#rl())),this.#T.add(e.data.resourceRemoved$.subscribe(()=>this.#rl())),this.#T.add(e.data.eventAdded$.subscribe(()=>this.#rl())),this.#T.add(e.data.eventRemoved$.subscribe(()=>this.#rl())),this.#T.add(e.data.eventChanged$.subscribe(()=>this.#rl())),this.#T.add(e.data.complexOperationFinished$.subscribe(()=>this.#rl()))}#rl(){var e=this.#wt.theme$.getValue().contentTop+this.#wt.getTotalContentHeight();this.#Lt.style.height=e+"px"}destroy(){this.#T.unsubscribe(),this.#nr.parentNode&&this.#nr.parentNode.removeChild(this.#nr)}}class oa{#m;get id(){return this.#m}#b="";get name(){return this.#b}set name(e){e!==this.#b&&(this.#b=e,this.#f())}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#ms=!0;get isVisible(){return this.#ms}set isVisible(e){e!==this.#ms&&(this.#ms=e,this.visibilityChanged$.next({calendar:this}),this.#f())}#il=!1;get isDefault(){return this.#il}set isDefault(e){e!==this.#il&&(this.#il=e,this.#f())}#sl=!1;get isReadOnly(){return this.#sl}set isReadOnly(e){e!==this.#sl&&(this.#sl=e,this.#f())}#nl=null;get timeZone(){return this.#nl}set timeZone(e){e!==this.#nl&&(this.#nl=e,this.#f())}#al=null;get description(){return this.#al}set description(e){e!==this.#al&&(this.#al=e,this.#f())}changed$=new e;visibilityChanged$=new e;constructor(e){this.#m=e??er(30)}toAny(){return{id:this.#m,name:this.#b,color:this.#M,isVisible:this.#ms,isDefault:this.#il,isReadOnly:this.#sl,timeZone:this.#nl,description:this.#al}}static fromAny(e){var t=new oa(e.id??null);return t.#b=e.name??"",t.#M=e.color??0,t.#ms=e.isVisible??!0,t.#il=e.isDefault??!1,t.#sl=e.isReadOnly??!1,t.#nl=e.timeZone??null,t.#al=e.description??null,t}#f(){this.changed$.next({calendar:this})}}const la={su:0,mo:1,tu:2,we:3,th:4,fr:5,sa:6};class ha{frequency;interval;until;count;byDay;byMonthDay;byMonth;bySetPos;weekStart;constructor(e){if(this.frequency=e.frequency,this.interval=e.interval??1,this.until=e.until??null,this.count=e.count??null,this.byDay=Object.freeze([...e.byDay??[]]),this.byMonthDay=Object.freeze([...e.byMonthDay??[]]),this.byMonth=Object.freeze([...e.byMonth??[]]),this.bySetPos=Object.freeze([...e.bySetPos??[]]),this.weekStart=e.weekStart??"mo",this.interval<1)throw new Error("RecurrenceRule: interval must be >= 1");if(this.until&&this.count)throw new Error("RecurrenceRule: until and count are mutually exclusive")}static fromString(e){var t=(e.startsWith("RRULE:")?e.substring(6):e).split(";"),r={frequency:"daily"};for(var i of t){var[s,n]=i.split("=");switch(s){case"FREQ":r.frequency=n.toLowerCase();break;case"INTERVAL":r.interval=parseInt(n,10);break;case"UNTIL":r.until=ga(n);break;case"COUNT":r.count=parseInt(n,10);break;case"BYDAY":r.byDay=n.split(",").map(ca);break;case"BYMONTHDAY":r.byMonthDay=n.split(",").map(e=>parseInt(e,10));break;case"BYMONTH":r.byMonth=n.split(",").map(e=>parseInt(e,10));break;case"BYSETPOS":r.bySetPos=n.split(",").map(e=>parseInt(e,10));break;case"WKST":r.weekStart=n.toLowerCase()}}return new ha(r)}toString(){var e,t,r,i,s,n,a,o=[];return o.push("FREQ="+this.frequency.toUpperCase()),this.interval>1&&o.push("INTERVAL="+this.interval),this.until&&o.push("UNTIL="+(e=this.until,t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),i=String(e.getUTCDate()).padStart(2,"0"),s=String(e.getUTCHours()).padStart(2,"0"),n=String(e.getUTCMinutes()).padStart(2,"0"),a=String(e.getUTCSeconds()).padStart(2,"0"),`${t}${r}${i}T${s}${n}${a}Z`)),null!==this.count&&o.push("COUNT="+this.count),this.byDay.length>0&&o.push("BYDAY="+this.byDay.map(ua).join(",")),this.byMonthDay.length>0&&o.push("BYMONTHDAY="+this.byMonthDay.join(",")),this.byMonth.length>0&&o.push("BYMONTH="+this.byMonth.join(",")),this.bySetPos.length>0&&o.push("BYSETPOS="+this.bySetPos.join(",")),"mo"!==this.weekStart&&o.push("WKST="+this.weekStart.toUpperCase()),o.join(";")}toAny(){return{frequency:this.frequency,interval:this.interval,until:this.until?.toISOString()??null,count:this.count,byDay:this.byDay.length>0?[...this.byDay]:null,byMonthDay:this.byMonthDay.length>0?[...this.byMonthDay]:null,byMonth:this.byMonth.length>0?[...this.byMonth]:null,bySetPos:this.bySetPos.length>0?[...this.bySetPos]:null,weekStart:this.weekStart}}static fromAny(e){var t=[];return e.byDay&&(t=e.byDay.map(e=>"string"==typeof e?ca(e):e)),new ha({frequency:e.frequency,interval:e.interval??1,until:e.until?new Date(e.until):null,count:e.count??null,byDay:t,byMonthDay:e.byMonthDay??[],byMonth:e.byMonth??[],bySetPos:e.bySetPos??[],weekStart:e.weekStart??"mo"})}expandBetween(e,t,r){var i=[],s=this.count??da,n=0,a=new Date(e);if(null===this.count&&a.getTime()<t.getTime()){var o=t.getTime()-a.getTime();switch(this.frequency){case"daily":var l=864e5*this.interval;(h=Math.floor(o/l))>1&&(a=new Date(a.getTime()+(h-1)*l));break;case"weekly":var h;l=7*this.interval*864e5;(h=Math.floor(o/l))>1&&(a=new Date(a.getTime()+(h-1)*l))}}for(var d=da;d-- >0;){var c=this.#ol(a,e);for(var u of c)if(!(u<e)){if(this.until&&u>this.until)return i;if(n>=s)return i;if(u>r)return i;n++,u>=t&&i.push(u)}a=this.#ll(a)}return i}#ol(e,t){var r;switch(this.frequency){case"daily":r=[new Date(e)];break;case"weekly":r=this.#hl(e,t);break;case"monthly":r=this.#dl(e,t);break;case"yearly":r=this.#cl(e,t)}this.bySetPos.length>0&&(r=function(e,t){e.sort((e,t)=>e.getTime()-t.getTime());var r=[];for(var i of t){var s=i>0?i-1:e.length+i;s>=0&&s<e.length&&r.push(e[s])}return r}(r,this.bySetPos));for(var i=t.getHours(),s=t.getMinutes(),n=t.getSeconds(),a=t.getMilliseconds(),o=0;o<r.length;o++)r[o].setHours(i,s,n,a);return r.sort((e,t)=>e.getTime()-t.getTime()),r}#hl(e,t){if(0===this.byDay.length)return[new Date(e)];var r=[],i=la[this.weekStart],s=(e.getDay()-i+7)%7,n=new Date(e);for(var a of(n.setDate(n.getDate()-s),this.byDay)){var o=(la[a.day]-i+7)%7,l=new Date(n);l.setDate(n.getDate()+o),r.push(l)}return r}#dl(e,t){var r=e.getFullYear(),i=e.getMonth(),s=[];if(this.byMonthDay.length>0){var n=new Date(r,i+1,0).getDate();for(var a of this.byMonthDay){var o=a>0?a:n+a+1;o>=1&&o<=n&&s.push(new Date(r,i,o))}}else if(this.byDay.length>0)s=this.#ul(r,i);else{var l=t.getDate();l<=new Date(r,i+1,0).getDate()&&s.push(new Date(r,i,l))}return s}#cl(e,t){var r=e.getFullYear(),i=[],s=this.byMonth.length>0?this.byMonth.map(e=>e-1):[t.getMonth()];for(var n of s)if(this.byMonthDay.length>0){var a=new Date(r,n+1,0).getDate();for(var o of this.byMonthDay){var l=o>0?o:a+o+1;l>=1&&l<=a&&i.push(new Date(r,n,l))}}else if(this.byDay.length>0)i.push(...this.#ul(r,n));else{var h=t.getDate();h<=new Date(r,n+1,0).getDate()&&i.push(new Date(r,n,h))}return i}#ul(e,t){var r=[],i=new Date(e,t+1,0).getDate();for(var s of this.byDay){var n,a=la[s.day];if(void 0!==s.ordinal&&0!==s.ordinal)if(s.ordinal>0)(n=1+(a-new Date(e,t,1).getDay()+7)%7+7*(s.ordinal-1))<=i&&r.push(new Date(e,t,n));else(n=i-(new Date(e,t,i).getDay()-a+7)%7+7*(s.ordinal+1))>=1&&r.push(new Date(e,t,n));else for(var o=1+(a-new Date(e,t,1).getDay()+7)%7;o<=i;)r.push(new Date(e,t,o)),o+=7}return r}#ll(e){var t=new Date(e);switch(this.frequency){case"daily":t.setDate(t.getDate()+this.interval);break;case"weekly":t.setDate(t.getDate()+7*this.interval);break;case"monthly":t.setDate(1),t.setMonth(t.getMonth()+this.interval);break;case"yearly":t.setDate(1),t.setFullYear(t.getFullYear()+this.interval)}return t}}const da=1e4;function ca(e){var t=e.match(/^(-?\d+)?([A-Z]{2})$/);if(!t)throw new Error(`Invalid BYDAY value: ${e}`);return{day:t[2].toLowerCase(),ordinal:t[1]?parseInt(t[1],10):void 0}}function ua(e){return(void 0!==e.ordinal?String(e.ordinal):"")+e.day.toUpperCase()}function ga(e){var t=e.match(/^(\d{4})(\d{2})(\d{2})(?:T(\d{2})(\d{2})(\d{2})(Z)?)?$/);if(!t)throw new Error(`Invalid RRULE date: ${e}`);if(t[4]){var r=parseInt(t[1]),i=parseInt(t[2])-1,s=parseInt(t[3]),n=parseInt(t[4]),a=parseInt(t[5]),o=parseInt(t[6]);return"Z"===t[7]?new Date(Date.UTC(r,i,s,n,a,o)):new Date(r,i,s,n,a,o)}return new Date(parseInt(t[1]),parseInt(t[2])-1,parseInt(t[3]))}function ma(e){return{originalStartTime:e.originalStartTime.toISOString(),isCancelled:e.isCancelled,overrides:e.overrides?va(e.overrides):null}}function pa(e){return{originalStartTime:new Date(e.originalStartTime),isCancelled:e.isCancelled??!1,overrides:e.overrides?fa(e.overrides):null}}function va(e){var t={};return void 0!==e.startTime&&(t.startTime=e.startTime.toISOString()),void 0!==e.endTime&&(t.endTime=e.endTime.toISOString()),void 0!==e.title&&(t.title=e.title),void 0!==e.description&&(t.description=e.description),void 0!==e.location&&(t.location=e.location),void 0!==e.color&&(t.color=e.color),void 0!==e.isAllDay&&(t.isAllDay=e.isAllDay),void 0!==e.timeZone&&(t.timeZone=e.timeZone),void 0!==e.tags&&(t.tags=e.tags),void 0!==e.responseStatus&&(t.responseStatus=e.responseStatus),void 0!==e.isCompleted&&(t.isCompleted=e.isCompleted),void 0!==e.completedAt&&(t.completedAt=e.completedAt?.toISOString()??null),t}function fa(e){var t={};return void 0!==e.startTime&&(t.startTime=new Date(e.startTime)),void 0!==e.endTime&&(t.endTime=new Date(e.endTime)),void 0!==e.title&&(t.title=e.title),void 0!==e.description&&(t.description=e.description),void 0!==e.location&&(t.location=e.location),void 0!==e.color&&(t.color=e.color),void 0!==e.isAllDay&&(t.isAllDay=e.isAllDay),void 0!==e.timeZone&&(t.timeZone=e.timeZone),void 0!==e.tags&&(t.tags=e.tags),void 0!==e.responseStatus&&(t.responseStatus=e.responseStatus),void 0!==e.isCompleted&&(t.isCompleted=e.isCompleted),void 0!==e.completedAt&&(t.completedAt=e.completedAt?new Date(e.completedAt):null),t}class ya{#m;get id(){return this.#m}#gl=null;get calendarId(){return this.#gl}set calendarId(e){e!=this.#gl&&(this.#gl=e,this.emitChanged())}#l=null;get startTime(){return this.#l}set startTime(e){if(!Ut(this.#l,e)){if(e&&this.#h&&e>this.#h)throw new RangeError(`startTime (${e.toISOString()}) must be <= endTime (${this.#h.toISOString()})`);this.#l=e,this.emitChanged(),this.startTimeChanged$.next({item:this})}}#h=null;get endTime(){return this.#h}set endTime(e){if(!Ut(this.#h,e)){if(e&&this.#l&&e<this.#l)throw new RangeError(`endTime (${e.toISOString()}) must be >= startTime (${this.#l.toISOString()})`);this.#h=e,this.emitChanged(),this.endTimeChanged$.next({item:this})}}#nl=null;get timeZone(){return this.#nl}set timeZone(e){e!=this.#nl&&(this.#nl=e,this.emitChanged())}#ml=!1;get isAllDay(){return this.#ml}set isAllDay(e){this.#ml!=e&&(this.#ml=e,this.emitChanged())}#pl=null;get title(){return this.#pl}set title(e){e!=this.#pl&&(this.#pl=e,this.emitChanged())}#al=null;get description(){return this.#al}set description(e){e!=this.#al&&(this.#al=e,this.emitChanged())}#vl=null;get location(){return this.#vl}set location(e){e!=this.#vl&&(this.#vl=e,this.emitChanged())}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.emitChanged())}#fl="public";get visibility(){return this.#fl}set visibility(e){this.#fl!=e&&(this.#fl=e,this.emitChanged())}#yl=null;get recurrenceRule(){return this.#yl}set recurrenceRule(e){e!==this.#yl&&(this.#yl=e,this.emitChanged())}#bl=[];get recurrenceExceptions(){return this.#bl}get isRecurring(){return null!==this.#yl}#wl=!1;get hasReminders(){return this.#wl}set hasReminders(e){this.#wl!=e&&(this.#wl=e,this.emitChanged())}#Tl=null;get externalSource(){return this.#Tl}set externalSource(e){e!=this.#Tl&&(this.#Tl=e,this.emitChanged())}#Cl=null;get tags(){return this.#Cl}set tags(e){e!=this.#Cl&&(this.#Cl=e,this.emitChanged())}setException(e){var t=this.#bl.findIndex(t=>t.originalStartTime.getTime()===e.originalStartTime.getTime());t>=0?this.#bl[t]=e:this.#bl.push(e),this.emitChanged()}removeException(e){var t=this.#bl.findIndex(t=>t.originalStartTime.getTime()===e.getTime());t>=0&&(this.#bl.splice(t,1),this.emitChanged())}cancelOccurrence(e){this.setException({originalStartTime:e,isCancelled:!0,overrides:null})}getException(e){return this.#bl.find(t=>t.originalStartTime.getTime()===e.getTime())??null}clearExceptions(){this.#bl.length>0&&(this.#bl=[],this.emitChanged())}data=void 0;#ae;changed$=new e;startTimeChanged$=new e;endTimeChanged$=new e;constructor(e){this.#m=e||er(30),this.#ae=new lr(()=>this.emitChanged())}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}applyFromAny(e){if(this.#gl=e.calendarId??null,this.#l=e.startTime?new Date(e.startTime):null,this.#h=e.endTime?new Date(e.endTime):null,this.#nl=e.timeZone??null,this.#ml=e.isAllDay??!1,this.#pl=e.title??null,this.#al=e.description??null,this.#vl=e.location??null,this.#M=e.color??0,this.#fl=e.visibility??"public",this.#yl=e.recurrenceRule?ha.fromAny(e.recurrenceRule):null,this.#bl=(e.recurrenceExceptions??[]).map(pa),this.#wl=e.hasReminders??!1,this.#Tl=e.externalSource??null,this.#Cl=e.tags??null,e.properties)for(const t of e.properties)this.setPropertyValue(t.name,t.value)}toAny(){return{type:this.type,id:this.#m,calendarId:this.#gl,startTime:this.#l?.toISOString()??null,endTime:this.#h?.toISOString()??null,timeZone:this.#nl,isAllDay:this.#ml,title:this.#pl,description:this.#al,location:this.#vl,color:this.#M,visibility:this.#fl,recurrenceRule:this.#yl?.toAny()??null,recurrenceExceptions:this.#bl.length>0?this.#bl.map(ma):null,hasReminders:this.#wl,externalSource:this.#Tl,tags:this.#Cl,properties:this.#ae.serializeProperties()}}emitChanged(){this.changed$.next({item:this})}}class ba extends ya{type="meeting";#xl="needsAction";get responseStatus(){return this.#xl}set responseStatus(e){e!==this.#xl&&(this.#xl=e,this.emitChanged())}#kl=0;get attendeeCount(){return this.#kl}set attendeeCount(e){e!==this.#kl&&(this.#kl=e,this.emitChanged())}#El=!1;get hasConference(){return this.#El}set hasConference(e){e!==this.#El&&(this.#El=e,this.emitChanged())}#Dl=null;get organizer(){return this.#Dl}set organizer(e){e!==this.#Dl&&(this.#Dl=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#xl=e.responseStatus??"needsAction",this.#kl=e.attendeeCount??0,this.#El=e.hasConference??!1,this.#Dl=e.organizer??null}toAny(){return{...super.toAny(),responseStatus:this.#xl,attendeeCount:this.#kl,hasConference:this.#El,organizer:this.#Dl}}clone(e){var t=this.toAny();return t.id=e,ba.fromAny(t)}static fromAny(e){const t=new ba(e.id??null);return t.applyFromAny(e),t}}class wa extends ya{type="appointment";clone(e){var t=this.toAny();return t.id=e,wa.fromAny(t)}static fromAny(e){const t=new wa(e.id??null);return t.applyFromAny(e),t}}class Ta extends ya{type="task";#Sl=!1;get isCompleted(){return this.#Sl}set isCompleted(e){e!==this.#Sl&&(this.#Sl=e,this.emitChanged())}#$l=null;get completedAt(){return this.#$l}set completedAt(e){e!==this.#$l&&(this.#$l=e,this.emitChanged())}#Rl=0;get priority(){return this.#Rl}set priority(e){e!==this.#Rl&&(this.#Rl=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Sl=e.isCompleted??!1,this.#$l=e.completedAt?new Date(e.completedAt):null,this.#Rl=e.priority??0}toAny(){return{...super.toAny(),isCompleted:this.#Sl,completedAt:this.#$l?.toISOString()??null,priority:this.#Rl}}clone(e){var t=this.toAny();return t.id=e,Ta.fromAny(t)}static fromAny(e){const t=new Ta(e.id??null);return t.applyFromAny(e),t}}class Ca extends ya{type="deadline";clone(e){var t=this.toAny();return t.id=e,Ca.fromAny(t)}static fromAny(e){const t=new Ca(e.id??null);return t.applyFromAny(e),t}}class xa extends ya{type="holiday";clone(e){var t=this.toAny();return t.id=e,xa.fromAny(t)}static fromAny(e){const t=new xa(e.id??null);return t.applyFromAny(e),t}}class ka extends ya{type="availabilityBlock";#Ml="busy";get availabilityStatus(){return this.#Ml}set availabilityStatus(e){e!==this.#Ml&&(this.#Ml=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Ml=e.availabilityStatus??"busy"}toAny(){return{...super.toAny(),availabilityStatus:this.#Ml}}clone(e){var t=this.toAny();return t.id=e,ka.fromAny(t)}static fromAny(e){const t=new ka(e.id??null);return t.applyFromAny(e),t}}class Ea extends ya{type="birthday";#Ll=null;get contactName(){return this.#Ll}set contactName(e){e!==this.#Ll&&(this.#Ll=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Ll=e.contactName??null}toAny(){return{...super.toAny(),contactName:this.#Ll}}clone(e){var t=this.toAny();return t.id=e,Ea.fromAny(t)}static fromAny(e){const t=new Ea(e.id??null);return t.applyFromAny(e),t}}class Da extends ya{type="reminder";clone(e){var t=this.toAny();return t.id=e,Da.fromAny(t)}static fromAny(e){const t=new Da(e.id??null);return t.applyFromAny(e),t}}class Sa extends ya{type="resourceBooking";#Co=null;get resourceId(){return this.#Co}set resourceId(e){e!==this.#Co&&(this.#Co=e,this.emitChanged())}#Il=null;get resourceName(){return this.#Il}set resourceName(e){e!==this.#Il&&(this.#Il=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Co=e.resourceId??null,this.#Il=e.resourceName??null}toAny(){return{...super.toAny(),resourceId:this.#Co,resourceName:this.#Il}}clone(e){var t=this.toAny();return t.id=e,Sa.fromAny(t)}static fromAny(e){const t=new Sa(e.id??null);return t.applyFromAny(e),t}}const $a={meeting:ba.fromAny,appointment:wa.fromAny,task:Ta.fromAny,deadline:Ca.fromAny,holiday:xa.fromAny,availabilityBlock:ka.fromAny,birthday:Ea.fromAny,reminder:Da.fromAny,resourceBooking:Sa.fromAny};function Ra(e){if(!e.type)throw new Error("calendarItemFromAny: missing type");const t=$a[e.type];if(!t)throw new Error(`calendarItemFromAny: unknown type '${e.type}'`);return t(e)}class Ma{static applyEdit(e,t,r,i){switch(i){case"this":return e.setException({originalStartTime:t.originalStartTime,isCancelled:!1,overrides:r}),{newMaster:null,removeMaster:!1};case"all":return La(e,r),{newMaster:null,removeMaster:!1};case"thisAndFollowing":return{newMaster:this.#Pl(e,t,r),removeMaster:!1}}}static applyDelete(e,t,r){switch(r){case"this":return e.cancelOccurrence(t.originalStartTime),{newMaster:null,removeMaster:!1};case"all":return{newMaster:null,removeMaster:!0};case"thisAndFollowing":if(e.recurrenceRule){var i=new Date(t.originalStartTime.getTime()-1);e.recurrenceRule=new ha({...Pa(e.recurrenceRule),until:i,count:null}),Ia(e,t.originalStartTime)}return{newMaster:null,removeMaster:!1}}}static#Pl(e,t,r){var i=t.originalStartTime,s=Pa(e.recurrenceRule),n=new Date(i.getTime()-1);e.recurrenceRule=new ha({...s,until:n,count:null});var a=e.recurrenceExceptions.filter(e=>e.originalStartTime.getTime()>=i.getTime());Ia(e,i);var o=e.clone(null);o.clearExceptions();var l=r.startTime??i,h=r.endTime??o.endTime;if(h&&l&&l>h){var d=(e.endTime?.getTime()??0)-(e.startTime?.getTime()??0);h=new Date(l.getTime()+d)}o.endTime=null,o.startTime=l,o.endTime=h,o.recurrenceRule=new ha({...s});var c={...r};for(var u of(delete c.startTime,delete c.endTime,La(o,c),a))o.setException(u);return o}}function La(e,t){void 0!==t.startTime&&(e.startTime=t.startTime),void 0!==t.endTime&&(e.endTime=t.endTime),void 0!==t.title&&(e.title=t.title),void 0!==t.description&&(e.description=t.description),void 0!==t.location&&(e.location=t.location),void 0!==t.color&&(e.color=t.color),void 0!==t.isAllDay&&(e.isAllDay=t.isAllDay),void 0!==t.timeZone&&(e.timeZone=t.timeZone),void 0!==t.tags&&(e.tags=t.tags),void 0!==t.responseStatus&&e instanceof ba&&(e.responseStatus=t.responseStatus),void 0!==t.isCompleted&&e instanceof Ta&&(e.isCompleted=t.isCompleted),void 0!==t.completedAt&&e instanceof Ta&&(e.completedAt=t.completedAt)}function Ia(e,t){var r=t.getTime(),i=e.recurrenceExceptions.filter(e=>e.originalStartTime.getTime()>=r);for(var s of i)e.removeException(s.originalStartTime)}function Pa(e){return{frequency:e.frequency,interval:e.interval,until:e.until,count:e.count,byDay:[...e.byDay],byMonthDay:[...e.byMonthDay],byMonth:[...e.byMonth],bySetPos:[...e.bySetPos],weekStart:e.weekStart}}class Aa{item;originalStartTime;exception;constructor(e,t,r){this.item=e,this.originalStartTime=t,this.exception=r}get id(){return this.item.isRecurring?`${this.item.id}_${this.originalStartTime.toISOString()}`:this.item.id}get type(){return this.item.type}get calendarId(){return this.item.calendarId}get startTime(){return this.exception?.overrides?.startTime??this.originalStartTime}get endTime(){if(this.exception?.overrides?.endTime)return this.exception.overrides.endTime;var e=this.item.startTime?.getTime()??0,t=(this.item.endTime?.getTime()??e)-e;return new Date(this.startTime.getTime()+t)}get title(){return void 0!==this.exception?.overrides?.title?this.exception.overrides.title:this.item.title}get description(){return void 0!==this.exception?.overrides?.description?this.exception.overrides.description:this.item.description}get location(){return void 0!==this.exception?.overrides?.location?this.exception.overrides.location:this.item.location}get color(){return void 0!==this.exception?.overrides?.color?this.exception.overrides.color:this.item.color}get isAllDay(){return void 0!==this.exception?.overrides?.isAllDay?this.exception.overrides.isAllDay:this.item.isAllDay}get timeZone(){return void 0!==this.exception?.overrides?.timeZone?this.exception.overrides.timeZone:this.item.timeZone}get tags(){return void 0!==this.exception?.overrides?.tags?this.exception.overrides.tags:this.item.tags}get visibility(){return this.item.visibility}get hasReminders(){return this.item.hasReminders}get externalSource(){return this.item.externalSource}get data(){return this.item.data}get isRecurring(){return this.item.isRecurring}get isException(){return null!==this.exception&&!this.exception.isCancelled}get isCancelled(){return this.exception?.isCancelled??!1}get responseStatus(){return void 0!==this.exception?.overrides?.responseStatus?this.exception.overrides.responseStatus:this.item instanceof ba?this.item.responseStatus:"needsAction"}get isCompleted(){return void 0!==this.exception?.overrides?.isCompleted?this.exception.overrides.isCompleted:this.item instanceof Ta&&this.item.isCompleted}get completedAt(){return void 0!==this.exception?.overrides?.completedAt?this.exception.overrides.completedAt:this.item instanceof Ta?this.item.completedAt:null}getPropertyValue(e){return this.item.getPropertyValue(e)}}class Ha{expand(e,t){var r=[];for(var i of e)if(i.startTime)if(i.recurrenceRule){var s=i.recurrenceRule.expandBetween(i.startTime,t.start,t.end);for(var n of s){var a=i.getException(n);a?.isCancelled||r.push(new Aa(i,n,a))}}else this.#Al(i,t)&&r.push(new Aa(i,i.startTime,null));else!i.recurrenceRule&&i.endTime&&i.endTime>=t.start&&i.endTime<=t.end&&r.push(new Aa(i,i.endTime,null));return r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()),r}#Al(e,t){return!!e.startTime&&((e.endTime??e.startTime)>=t.start&&e.startTime<=t.end)}}class Va{#Hl=[];#Hs=[];#Vl=new Map;#Bl=new Map;#Fl=new Ha;calendarAdded$=new e;calendarChanged$=new e;calendarRemoved$=new e;calendarVisibilityChanged$=new e;itemAdded$=new e;itemChanged$=new e;itemRemoved$=new e;get calendarsLength(){return this.#Hl.length}getCalendar(e){return this.#Hl[e]}getCalendarById(e){return this.#Hl.find(t=>t.id===e)??null}addCalendar(e){if(this.getCalendarById(e.id))throw new Error(`CalendarData.addCalendar: calendar with id "${e.id}" already exists`);this.#Hl.push(e),this.#zl(e),this.calendarAdded$.next({calendar:e})}removeCalendar(e){if(e.isDefault)throw new Error("CalendarData.removeCalendar: cannot remove the default calendar");var t=this.#Hl.indexOf(e);if(t>=0){this.#Hl.splice(t,1),this.#Ol(e);var r=this.#Hs.filter(t=>t.calendarId===e.id);for(var i of r)this.removeItem(i);this.calendarRemoved$.next({calendar:e})}}get defaultCalendar(){return this.#Hl.find(e=>e.isDefault)??this.#Hl[0]??null}assignCalendars(e){if(e.length>0&&!e.some(e=>e.isDefault))throw new Error("CalendarData.assignCalendars: at least one calendar must be marked as default");for(var t of this.#Vl.values())for(var r of t)r.unsubscribe();for(var i of(this.#Vl.clear(),this.#Hl=[...e],this.#Hl))this.#zl(i);var s=this.#Hl[this.#Hl.length-1];s&&this.calendarAdded$.next({calendar:s})}#zl(e){var t=[e.changed$.subscribe(e=>this.calendarChanged$.next(e)),e.visibilityChanged$.subscribe(e=>this.calendarVisibilityChanged$.next(e))];this.#Vl.set(e.id,t)}#Ol(e){var t=this.#Vl.get(e.id);if(t){for(var r of t)r.unsubscribe();this.#Vl.delete(e.id)}}get itemsLength(){return this.#Hs.length}getItem(e){return this.#Hs[e]}getItemById(e){return this.#Hs.find(t=>t.id===e)??null}getItemsForCalendar(e){return this.#Hs.filter(t=>t.calendarId===e)}addItem(e){if(this.getItemById(e.id))throw new Error(`CalendarData.addItem: item with id "${e.id}" already exists`);this.#Hs.push(e),this.#Nl(e),this.itemAdded$.next({item:e})}removeItem(e){var t=this.#Hs.indexOf(e);t>=0&&(this.#Hs.splice(t,1),this.#Wl(e),this.itemRemoved$.next({item:e}))}assignItems(e){for(var t of this.#Bl.values())t.unsubscribe();for(var r of(this.#Bl.clear(),this.#Hs=[...e],this.#Hs))this.#Nl(r);var i=this.#Hs[this.#Hs.length-1];i&&this.itemAdded$.next({item:i})}#Nl(e){var t=e.changed$.subscribe(e=>this.itemChanged$.next(e));this.#Bl.set(e.id,t)}#Wl(e){var t=this.#Bl.get(e.id);t&&(t.unsubscribe(),this.#Bl.delete(e.id))}clear(){for(var e of this.#Bl.values())e.unsubscribe();for(var t of(this.#Bl.clear(),this.#Hs=[],this.#Vl.values()))for(var e of t)e.unsubscribe();this.#Vl.clear(),this.#Hl=[]}getEntries(e){var t=this.#Ul(),r=this.#Hs.filter(e=>null===e.calendarId||t.has(e.calendarId));return this.#Fl.expand(r,e)}#Ul(){var e=new Set;for(var t of this.#Hl)t.isVisible&&e.add(t.id);return e}getItemColor(e){if(0!==e.color)return e.color;var t=e.calendarId?this.getCalendarById(e.calendarId):null;return t?t.color:0}getEntryColor(e){if(0!==e.color)return e.color;var t=e.calendarId,r=t?this.getCalendarById(t):null;return r?r.color:0}}class Ba extends jr{chipBackgroundColor="#d3e3fd";chipTextColor="#1b4fa3";textColor="#1b4fa3"}class Fa{backgroundColor="#ffffff";textColor="#333333";borderColor="#e0e0e0";buttonColor="#555555";buttonHoverBackgroundColor="#f0f0f0";activeViewButtonBackgroundColor="#e8f0fe";activeViewButtonTextColor="#1a73e8";height=48}class za{backgroundColor="#ffffff";textColor="#555555";borderColor="#e0e0e0";todayTextColor="#ffffff";todayBackgroundColor="#1a73e8";weekendTextColor="#777777"}class Oa{backgroundColor="#ffffff";textColor="#333333";gridLineColor="#e0e0e0";todayBackgroundColor="#e8f0fe";weekendBackgroundColor="#f8f8f8";otherMonthBackgroundColor="#fafafa";otherMonthTextColor="#b0b0b0";hourLineColor="#e0e0e0";halfHourLineColor="#e0e0e0";currentTimeLineColor="#ea4335";currentTimeLineHeight=2;slotHeight=48;dayHeaderHeight=24;entryHeight=22;entryGap=2;entryBorderRadius=4;entryAccentBorderWidth=3;entryMinHeight=20;declinedOpacity=.55;moreTextColor="#555555";entryColors;hoverBackgroundColor="rgba(0, 0, 0, 0.04)";selectedEntryOutlineColor="#1a73e8";dragHighlightColor="rgba(3, 155, 229, 0.15)";scrollbarThumbColor="#c1c1c1";scrollbarTrackColor="#f1f1f1";agendaDayHeaderBackgroundColor="#f8f9fa";agendaDayHeaderTextColor="#333333";agendaEntryHeight=48;agendaEntryGap=1;agendaEntryHoverBackgroundColor="rgba(0, 0, 0, 0.04)";agendaEmptyTextColor="#999999";agendaTimeWidth=80;focusOutlineColor="#1a73e8";focusOutlineWidth=2;focusOutlineOffset=1;constructor(){this.entryColors=[Ba.create({color1:"#a8c7fa",color2:"#1b66c9",textColor:"#1b4fa3",chipBackgroundColor:"#d3e3fd",chipTextColor:"#1b4fa3"}),Ba.create({color1:"#d4b4f0",color2:"#7b1fa2",textColor:"#4a1d6e",chipBackgroundColor:"#e8d5f5",chipTextColor:"#6a1b9a"}),Ba.create({color1:"#a8dab5",color2:"#1e8e3e",textColor:"#1a5c2d",chipBackgroundColor:"#ceead6",chipTextColor:"#137333"}),Ba.create({color1:"#f4b8c8",color2:"#c2185b",textColor:"#7b1140",chipBackgroundColor:"#fad2de",chipTextColor:"#b31650"}),Ba.create({color1:"#f5c89a",color2:"#e8710a",textColor:"#7a3b00",chipBackgroundColor:"#fae0c3",chipTextColor:"#c45e08"}),Ba.create({color1:"#a0d8d8",color2:"#00897b",textColor:"#004d44",chipBackgroundColor:"#c8ecec",chipTextColor:"#00796b"}),Ba.create({color1:"#f4ada8",color2:"#c62828",textColor:"#7f1d1d",chipBackgroundColor:"#fad2cf",chipTextColor:"#b71c1c"}),Ba.create({color1:"#c8c8c8",color2:"#616161",textColor:"#3b3b3b",chipBackgroundColor:"#e0e0e0",chipTextColor:"#424242"})]}}class Na{backgroundColor="#ffffff";textColor="#333333";borderColor="#e0e0e0";width=256;miniCalendarTodayTextColor="#ffffff";miniCalendarTodayBackgroundColor="#1a73e8";miniCalendarTodayDotColor="#ffffff";miniCalendarSelectedBackgroundColor="#e8f0fe";miniCalendarSelectedTextColor="#1a73e8";miniCalendarOtherMonthTextColor="#b0b0b0";miniCalendarWeekendTextColor="#777777";miniCalendarHoverBackgroundColor="#f0f0f0";miniCalendarDayWithEventsColor="#1a73e8";calendarListHeaderTextColor="#555555";calendarListCheckboxColor="#1a73e8"}class Wa{backgroundColor="#ffffff";borderColor="#e0e0e0";textColor="#555555";minHeight=28;maxHeight=120;maxVisibleRows=3;rowHeight=24}class Ua{backgroundColor="#ffffff";textColor="#777777";borderColor="#e0e0e0";width=56;fontSize=10}class ja{font=new Dr;colorScheme="light";toolbar;header;content;sidebar;allDay;timeGutter;constructor(){this.toolbar=new Fa,this.header=new za,this.content=new Oa,this.sidebar=new Na,this.allDay=new Wa,this.timeGutter=new Ua}}class Xa extends ja{constructor(){super()}}class Ya{#wt;changed$=new e;constructor(e){this.#wt=e}get locale(){return this.#wt.locale$.getValue()}set locale(e){this.#wt.locale$.next(e),this.#f()}get theme(){return this.#wt.theme$.getValue()}set theme(e){this.#wt.theme$.next(e),this.#f()}get firstDayOfWeek(){return this.#wt.firstDayOfWeek$.getValue()}set firstDayOfWeek(e){if(!Number.isInteger(e)||e<0||e>6)throw new RangeError(`firstDayOfWeek must be an integer between 0 and 6, got ${e}`);this.#wt.firstDayOfWeek$.next(e),this.#f()}get showWeekNumbers(){return this.#wt.showWeekNumbers$.getValue()}set showWeekNumbers(e){this.#wt.showWeekNumbers$.next(e),this.#f()}get slotDuration(){return this.#wt.slotDuration$.getValue()}set slotDuration(e){if(!Number.isInteger(e)||e<=0||60%e!=0)throw new RangeError(`slotDuration must be a positive divisor of 60 (5, 10, 15, 20, 30, or 60), got ${e}`);this.#wt.slotDuration$.next(e),this.#f()}get workingHours(){return this.#wt.workingHours$.getValue()}set workingHours(e){if(!Number.isInteger(e.start)||!Number.isInteger(e.end)||e.start<0||e.end>24||e.start>=e.end)throw new RangeError(`workingHours: start must be 0–23, end must be 1–24, start < end. Got ${e.start}–${e.end}`);this.#wt.workingHours$.next(e),this.#f()}get agendaDays(){return this.#wt.agendaDays$.getValue()}set agendaDays(e){if(!Number.isInteger(e)||e<1||e>90)throw new RangeError(`agendaDays must be an integer between 1 and 90, got ${e}`);this.#wt.agendaDays$.next(e),this.#f()}#f(){this.changed$.next()}}class Ka{data;currentDate$;viewMode$;locale$;theme$;firstDayOfWeek$;workingHours$;slotDuration$;showWeekNumbers$;agendaDays$;canEdit$;sidebarVisible$;selectedEntries$;hoveredEntry$;entryRendering$;entryTooltip$;entryClick$=new e;entryDblClick$=new e;entryContextMenu$=new e;dateClick$=new e;dateContextMenu$=new e;moreClick$=new e;entryMoving$=new e;entryResizing$=new e;entryCreating$=new e;entryDeleting$=new e;calendarAddRequested$=new e;calendarRemoving$=new e;viewDateRangeChanged$=new e;settings;constructor(){this.data=new Va,this.currentDate$=new t(Bt()),this.viewMode$=new t("week");this.locale$=new t({language:"en-US"}),this.theme$=new t(new Xa),this.firstDayOfWeek$=new t(1),this.workingHours$=new t({start:8,end:17}),this.slotDuration$=new t(30),this.showWeekNumbers$=new t(!1),this.agendaDays$=new t(14),this.canEdit$=new t(!0),this.sidebarVisible$=new t(!0),this.selectedEntries$=new t([]),this.hoveredEntry$=new t(null),this.entryRendering$=new t(null),this.entryTooltip$=new t(null),this.settings=new Ya(this)}}class Za{#T=new r;calendarAdded$=new e;calendarChanged$=new e;calendarRemoved$=new e;calendarAddRequested$=new e;calendarRemoving$=new e;itemAdded$=new e;itemChanged$=new e;itemRemoved$=new e;entryClick$=new e;entryDblClick$=new e;entryContextMenu$=new e;dateClick$=new e;dateContextMenu$=new e;moreClick$=new e;entryMoving$=new e;entryResizing$=new e;entryCreating$=new e;entryDeleting$=new e;viewModeChanged$=new e;currentDateChanged$=new e;viewDateRangeChanged$=new e;selectedEntriesChanged$=new e;selectedEntryChanged$=new e;undone$=new e;redone$=new e;constructor(e){this.#T.add(e.data.calendarAdded$.subscribe(e=>this.calendarAdded$.next(e))),this.#T.add(e.data.calendarChanged$.subscribe(e=>this.calendarChanged$.next(e))),this.#T.add(e.data.calendarRemoved$.subscribe(e=>this.calendarRemoved$.next(e))),this.#T.add(e.calendarAddRequested$.subscribe(()=>this.calendarAddRequested$.next())),this.#T.add(e.calendarRemoving$.subscribe(e=>this.calendarRemoving$.next(e))),this.#T.add(e.data.itemAdded$.subscribe(e=>this.itemAdded$.next(e))),this.#T.add(e.data.itemChanged$.subscribe(e=>this.itemChanged$.next(e))),this.#T.add(e.data.itemRemoved$.subscribe(e=>this.itemRemoved$.next(e))),this.#T.add(e.entryClick$.subscribe(e=>this.entryClick$.next(e))),this.#T.add(e.entryDblClick$.subscribe(e=>this.entryDblClick$.next(e))),this.#T.add(e.entryContextMenu$.subscribe(e=>this.entryContextMenu$.next(e))),this.#T.add(e.dateClick$.subscribe(e=>this.dateClick$.next(e))),this.#T.add(e.dateContextMenu$.subscribe(e=>this.dateContextMenu$.next(e))),this.#T.add(e.moreClick$.subscribe(e=>this.moreClick$.next(e))),this.#T.add(e.entryMoving$.subscribe(e=>this.entryMoving$.next(e))),this.#T.add(e.entryResizing$.subscribe(e=>this.entryResizing$.next(e))),this.#T.add(e.entryCreating$.subscribe(e=>this.entryCreating$.next(e))),this.#T.add(e.entryDeleting$.subscribe(e=>this.entryDeleting$.next(e))),this.#T.add(e.viewMode$.subscribe(e=>this.viewModeChanged$.next(e))),this.#T.add(e.currentDate$.subscribe(e=>this.currentDateChanged$.next(e))),this.#T.add(e.viewDateRangeChanged$.subscribe(e=>this.viewDateRangeChanged$.next(e))),this.#T.add(e.selectedEntries$.subscribe(e=>{this.selectedEntriesChanged$.next(e),this.selectedEntryChanged$.next(e.length>0?e[e.length-1]:null)}))}destroy(){this.#T.unsubscribe()}}class Ga{ec;element;subscriptions=new r;constructor(e,t){this.ec=e,this.element=document.createElement("div"),this.element.style.display="none",t.appendChild(this.element)}show(){this.element.style.display="",this.render()}hide(){this.element.style.display="none"}get isVisible(){return"none"!==this.element.style.display}destroy(){this.subscriptions.unsubscribe(),this.element.remove()}}class qa{#jl;#Xl=null;#Yl=null;#Kl=[];#As=-1;#Zl=-1;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}attach(e,t){this.#Xl=e,this.#Yl=t,this.#Kl=[];for(var r=e.children,i=0;i<r.length;i++)for(var s=r[i],n=0;n<s.children.length;n++){var a=s.children[n];a.dataset.cellIndex=String(this.#Kl.length),a.style.touchAction="none",this.#Kl.push(a),a.addEventListener("pointerdown",e=>{var t=parseInt(e.currentTarget.dataset.cellIndex,10);this.#th(e,t)})}}cancel(){this.#rh(),this.#ih(),this.#As=-1,this.#Zl=-1,this.#ql=-1}destroy(){this.cancel()}#th(e,t){0===e.button&&(e.target.closest(".ec-entry")||this.#jl.canEdit$.getValue()&&(e.preventDefault(),this.#ql=e.pointerId,this.#Gl=!1,this.#As=t,this.#Zl=t,this.#sh(),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>this.#ja(e),document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh)))}#nh(e){if(e.pointerId===this.#ql&&!(this.#As<0)){var t=this.#lh(e.clientX,e.clientY);t>=0&&t!==this.#Zl&&(this.#Zl=t,this.#Zl!==this.#As&&(this.#Gl=!0),this.#sh())}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#As<0||!this.#Yl)this.cancel();else{var t=Math.min(this.#As,this.#Zl),r=Math.max(this.#As,this.#Zl),i=new Date(this.#Yl);i.setDate(i.getDate()+t),i.setHours(0,0,0,0);var s=new Date(this.#Yl);s.setDate(s.getDate()+r+1),s.setHours(0,0,0,0),this.#ih();var n=this.#Gl;if(this.#As=-1,this.#Zl=-1,this.#ql=-1,n){var a={startTime:i,endTime:s,isAllDay:!0,cancel:!1};this.#jl.entryCreating$.next(a)}}}#oh(e){e.pointerId===this.#ql&&this.cancel()}#ja(e){"Escape"===e.key&&this.cancel()}#sh(){for(var e=Math.min(this.#As,this.#Zl),t=Math.max(this.#As,this.#Zl),r=0;r<this.#Kl.length;r++)this.#Kl[r].classList.toggle("ec-month-day-drag",r>=e&&r<=t)}#ih(){for(var e of this.#Kl)e.classList.remove("ec-month-day-drag")}#lh(e,t){for(var r=0;r<this.#Kl.length;r++){var i=this.#Kl[r].getBoundingClientRect();if(e>=i.left&&e<=i.right&&t>=i.top&&t<=i.bottom)return r}if(0===this.#Kl.length)return-1;for(r=0;r<this.#Kl.length;r+=7){var s=this.#Kl[r].getBoundingClientRect();if(this.#Kl[Math.min(r+6,this.#Kl.length-1)].getBoundingClientRect(),t>=s.top&&t<=s.bottom)return e<s.left?r:Math.min(r+6,this.#Kl.length-1)}return t<this.#Kl[0].getBoundingClientRect().top?0:this.#Kl.length-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class _a{#jl;#hh=null;#dh=null;#ch=null;#Kl=[];#Yl=null;#As=-1;#Zl=-1;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}startDrag(e,t,r,i,s){if(0===e.button&&this.#jl.canEdit$.getValue()){e.preventDefault(),e.stopPropagation(),this.#ql=e.pointerId,this.#hh=t,this.#dh=r,this.#Kl=i,this.#Yl=s,this.#Gl=!1;var n=this.#lh(e.clientX,e.clientY);n<0||(this.#As=n,this.#Zl=n,r.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh))}}cancel(){this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),this.#ih(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#rh(),this.#gh()}destroy(){this.cancel()}#nh(e){if(e.pointerId===this.#ql&&!(this.#As<0)){var t=this.#lh(e.clientX,e.clientY);t>=0&&t!==this.#Zl&&(this.#Zl=t,this.#Zl!==this.#As&&(this.#Gl=!0),this.#mh())}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),!this.#hh||!this.#Yl||this.#As<0)this.cancel();else{var t=this.#Zl-this.#As;if(this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),this.#ih(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==t){var r=this.#hh,i=24*t*60*60*1e3,s=new Date(r.startTime.getTime()+i),n=new Date(r.endTime.getTime()+i),a={entry:r,newStartTime:s,newEndTime:n,cancel:!1};this.#jl.entryMoving$.next(a),a.cancel||(r.item.startTime=a.newStartTime,r.item.endTime=a.newEndTime),this.#gh()}else this.#gh()}}#oh(e){e.pointerId===this.#ql&&this.cancel()}#sh(){for(var e=0;e<this.#Kl.length;e++)this.#Kl[e].classList.toggle("ec-month-day-drag",e===this.#Zl)}#ih(){for(var e of this.#Kl)e.classList.remove("ec-month-day-drag")}#mh(){if(this.#dh&&this.#Zl!==this.#As){this.#ch||(this.#ch=this.#dh.cloneNode(!0),this.#ch.classList.remove("ec-entry-dragging"),this.#ch.classList.add("ec-entry-drag-preview"));var e=this.#Kl[this.#Zl];if(e){var t=e.querySelector(".ec-month-day-entries")??e;this.#ch.parentElement!==t&&t.appendChild(this.#ch)}}else this.#uh()}#uh(){this.#ch&&(this.#ch.remove(),this.#ch=null)}#lh(e,t){for(var r=0;r<this.#Kl.length;r++){var i=this.#Kl[r].getBoundingClientRect();if(e>=i.left&&e<=i.right&&t>=i.top&&t<=i.bottom)return r}if(0===this.#Kl.length)return-1;for(r=0;r<this.#Kl.length;r+=7){var s=this.#Kl[r].getBoundingClientRect();if(t>=s.top&&t<=s.bottom)return e<s.left?r:Math.min(r+6,this.#Kl.length-1)}return t<this.#Kl[0].getBoundingClientRect().top?0:this.#Kl.length-1}#gh(){this.#hh=null,this.#dh=null,this.#As=-1,this.#Zl=-1,this.#Gl=!1,this.#ql=-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}function Ja(e,t,r){return Xr(t.getEntryColor(e),r.content.entryColors)}function Qa(e,t,r){var i,s,n,a,o;if("meeting"===t.type&&"accepted"!==t.responseStatus)switch(t.responseStatus){case"tentative":e.classList.add("ec-entry-tentative"),e.style.setProperty("--ec-entry-stripe-color",(i=r.chipBackgroundColor,s=.55,n=parseInt(i.slice(1,3),16),a=parseInt(i.slice(3,5),16),o=parseInt(i.slice(5,7),16),`rgba(${n}, ${a}, ${o}, ${s})`));break;case"needsAction":e.classList.add("ec-entry-needs-action"),e.style.setProperty("--ec-entry-status-color",r.color2);break;case"declined":e.classList.add("ec-entry-declined")}}function eo(e){var t=document.createElement("span");return t.className="ec-entry-icon",t.setAttribute("aria-hidden","true"),t.innerHTML=e,t}function to(e,t,r,i){var s=i.entryRendering$.getValue();if(s){var n=i.theme$.getValue(),a=Ja(t,i.data,n);s({entry:t,element:e,isAllDay:r,viewMode:i.viewMode$.getValue(),color:a})}}function ro(e,t){"meeting"===t.type?e.appendChild(eo('<svg viewBox="0 0 20 20" fill="currentColor"><circle cx="7" cy="6" r="2.5"/><path d="M2 14c0-2.2 2.2-4 5-4s5 1.8 5 4"/><circle cx="14" cy="6.5" r="2"/><path d="M13 10.2c.3-.05.6-.08 1-.08 2.2 0 4 1.4 4 3.2"/></svg>')):"birthday"===t.type?e.appendChild(eo('<svg viewBox="0 0 20 20" fill="currentColor"><rect x="3" y="10" width="14" height="7" rx="1.5"/><rect x="5" y="7" width="10" height="3" rx="1"/><rect x="9" y="4" width="2" height="3"/><circle cx="10" cy="3" r="1.5"/></svg>')):"reminder"===t.type&&e.appendChild(eo('<svg viewBox="0 0 20 20" fill="currentColor"><path d="M10 2a1 1 0 0 1 1 1v.5a5 5 0 0 1 4 4.9V12l1.7 2.6a.5.5 0 0 1-.4.8H3.7a.5.5 0 0 1-.4-.8L5 12V8.4a5 5 0 0 1 4-4.9V3a1 1 0 0 1 1-1z"/><path d="M8 16a2 2 0 1 0 4 0"/></svg>')),t.isRecurring&&e.appendChild(eo('<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10a6.5 6.5 0 0 1 11-4.7"/><polyline points="15 2 15 6 11 6"/><path d="M16.5 10a6.5 6.5 0 0 1-11 4.7"/><polyline points="5 18 5 14 9 14"/></svg>')),e.appendChild(document.createTextNode(t.title??""))}function io(e){e.addEventListener("focus",()=>{"true"!==e.getAttribute("aria-selected")&&(e.style.outline="var(--ec-focus-outline-width, 2px) solid var(--ec-focus-outline, #1a73e8)",e.style.outlineOffset="var(--ec-focus-outline-offset, 1px)")}),e.addEventListener("blur",()=>{"true"!==e.getAttribute("aria-selected")&&(e.style.outline="",e.style.outlineOffset="")})}function so(e,t){for(var r=new Set(t.map(e=>e.id)),i=e.querySelectorAll(".ec-entry"),s=0;s<i.length;s++){var n=i[s],a=n.dataset.entryId,o=void 0!==a&&r.has(a);n.setAttribute("aria-selected",String(o)),o?(n.style.outline="2px solid var(--ec-selected-outline, #1a73e8)",n.style.outlineOffset="1px"):(n.style.outline="",n.style.outlineOffset="")}}class no extends Ga{#ph;#Xl;#vh;#fh;#yh=[];#Jn;#bh=0;constructor(e,t){super(e,t),this.element.classList.add("ec-month-view"),this.#vh=new qa(e),this.#fh=new _a(e),this.#Jn=new ResizeObserver(()=>{if(this.isVisible){var e=this.#wh();e!==this.#bh&&(this.#bh=e,this.render())}}),this.#Th(),this.#x()}#Th(){this.#ph=document.createElement("div"),this.#ph.classList.add("ec-month-header"),this.#ph.setAttribute("role","row"),this.element.appendChild(this.#ph),this.#Xl=document.createElement("div"),this.#Xl.classList.add("ec-month-grid"),this.#Xl.setAttribute("role","grid"),this.#Xl.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaCalendarGrid??"Calendar grid"),this.element.appendChild(this.#Xl),this.#Jn.observe(this.#Xl),this.#Ch()}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.firstDayOfWeek$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&so(this.element,e)}))}getVisibleRange(e){var t=this.ec.firstDayOfWeek$.getValue(),r=e.getFullYear(),i=e.getMonth(),s=new Date(r,i,1).getDay(),n=new Date(r,i,1-(s-t+7)%7),a=new Date(n);return a.setDate(n.getDate()+42),{start:n,end:a}}render(){this.#vh.cancel(),this.#fh.cancel();var e=this.ec.currentDate$.getValue(),t=this.ec.firstDayOfWeek$.getValue(),r=this.ec.locale$.getValue(),i=this.ec.theme$.getValue();this.#xh(t,r.language);var s=this.getVisibleRange(e),n=this.ec.data.getEntries({start:s.start,end:s.end});this.#kh(s.start,e,n,i),this.#vh.attach(this.#Xl,s.start),this.ec.viewDateRangeChanged$.next(s)}#xh(e,t){if(this.#ph.innerHTML="",this.ec.showWeekNumbers$.getValue()){var r=document.createElement("div");r.classList.add("ec-month-header-cell","ec-month-wn-header"),r.setAttribute("role","columnheader");var i=this.ec.locale$.getValue().calendar;r.textContent=i?.weekNumberShort??"Wk",this.#ph.appendChild(r)}for(var s=new Intl.DateTimeFormat(t,{weekday:"short"}),n=0;n<7;n++){var a=new Date(2024,0,7+(e+n)%7),o=document.createElement("div");o.classList.add("ec-month-header-cell"),o.setAttribute("role","columnheader"),o.textContent=s.format(a),this.#ph.appendChild(o)}}#kh(e,t,r,i){this.#Xl.innerHTML="",this.#yh=[];var s=new Date;s.setHours(0,0,0,0);for(var n=t.getMonth(),a=this.ec.locale$.getValue().language,o=new Intl.DateTimeFormat(a,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),l=[],h=this.ec.showWeekNumbers$.getValue(),d=0;d<6;d++){var c=document.createElement("div");if(c.classList.add("ec-month-week"),c.setAttribute("role","row"),h){var u=new Date(e);u.setDate(e.getDate()+7*d);var g=document.createElement("div");g.classList.add("ec-month-wn"),g.setAttribute("role","rowheader"),g.textContent=Gt(u).toString(),c.appendChild(g)}for(var m=0;m<7;m++){var p=new Date(e);p.setDate(e.getDate()+7*d+m);var v=document.createElement("div");v.classList.add("ec-month-day"),v.setAttribute("role","gridcell"),v.setAttribute("aria-label",o.format(p)),p.getMonth()!==n&&v.classList.add("ec-other-month"),p.getTime()===s.getTime()&&(v.classList.add("ec-today"),v.setAttribute("aria-current","date"));var f=document.createElement("div");f.classList.add("ec-month-day-header"),f.textContent=p.getDate().toString(),v.appendChild(f);var y=document.createElement("div");y.classList.add("ec-month-day-entries"),v.appendChild(y);var b=this.#Eh(r,p);l.push({container:y,entries:b,cellDate:p}),this.#Dh(v,p),v.tabIndex=-1,this.#yh.push(v),c.appendChild(v)}this.#Xl.appendChild(c)}var w=this.#wh();for(var T of l)this.#Sh(T.container,T.entries,T.cellDate,i,e,w)}#wh(){if(0===this.#yh.length)return 3;var e=this.#yh[0],t=e.offsetHeight;if(0===t)return 3;var r=e.querySelector(".ec-month-day-header"),i=r?.offsetHeight??24,s=getComputedStyle(e),n=t-i+7,a=(parseInt(s.getPropertyValue("--ec-entry-height"))||22)+(parseInt(s.getPropertyValue("--ec-entry-gap"))||2);return Math.max(1,Math.floor(n/a))}#Eh(e,t){var r=new Date(t);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+1),e.filter(e=>{var t=e.startTime,s=e.endTime;return t<i&&s>r})}#Sh(e,t,r,i,s,n){var a=t.length<=n?t.length:Math.max(1,n-1),o=t.slice(0,a),l=this.ec.locale$.getValue().language,h=new Intl.DateTimeFormat(l,{hour:"numeric",minute:"2-digit"});for(var d of o){var c=document.createElement("div");c.classList.add("ec-entry"),c.tabIndex=0,c.setAttribute("role","button"),c.setAttribute("aria-selected","false"),io(c);var u=d.title??"";d.isAllDay?u+=", "+(this.ec.locale$.getValue().calendar?.allDay??"all-day"):d.startTime&&d.endTime&&(u+=", "+h.format(d.startTime)+" – "+h.format(d.endTime)),c.setAttribute("aria-label",u),ro(c,d),c.dataset.entryId=d.id;var g=new Date(d.startTime);g.setHours(0,0,0,0);var m=new Date(d.endTime);m.setHours(0,0,0,0);var p=m.getTime()>g.getTime()+864e5||d.isAllDay;p?c.classList.add("ec-entry-multiday"):c.classList.add("ec-entry-single");var v=Ja(d,this.ec.data,i);p?(c.style.backgroundColor=v.chipBackgroundColor,c.style.color=v.chipTextColor):(c.style.backgroundColor=v.chipBackgroundColor,c.style.color=v.chipTextColor,c.style.borderLeft=`var(--ec-entry-accent-width, 3px) solid ${v.color2}`),Qa(c,d,v),to(c,d,!0,this.ec),this.#$h(c,d,s),e.appendChild(c)}if(t.length>a){var f=t.length-a,y=this.ec.locale$.getValue().calendar,b=document.createElement("div");b.classList.add("ec-month-day-more"),b.setAttribute("role","button"),b.tabIndex=0,b.textContent=y?.more?y.more(f):`+${f} more`,b.setAttribute("aria-label",y?.ariaMoreEvents?y.ariaMoreEvents(f):`${f} more events`),b.addEventListener("click",e=>{e.stopPropagation(),this.ec.moreClick$.next({date:new Date(r),entries:t})}),e.appendChild(b)}}#Ch(){this.#Xl.addEventListener("keydown",e=>{var t=e.target;if(t.classList.contains("ec-month-day")){var r=this.#yh.indexOf(t);if(!(r<0)){var i=-1;switch(e.key){case"ArrowLeft":i=r-1;break;case"ArrowRight":i=r+1;break;case"ArrowUp":i=r-7;break;case"ArrowDown":i=r+7;break;default:return}i>=0&&i<this.#yh.length&&(e.preventDefault(),this.#yh[i].tabIndex=0,this.#yh[i].focus(),t.tabIndex=-1)}}})}#Dh(e,t){e.addEventListener("click",e=>{e.target.closest(".ec-entry")||this.#vh.didDrag||(this.ec.selectedEntries$.next([]),this.ec.dateClick$.next({date:new Date(t),isAllDay:!0,domEvent:e}))}),e.addEventListener("contextmenu",e=>{e.preventDefault(),this.ec.dateContextMenu$.next({date:new Date(t),isAllDay:!0,entry:null,domEvent:e})})}#$h(e,t,r){e.style.touchAction="none",e.addEventListener("pointerdown",i=>{0===i.button&&this.ec.canEdit$.getValue()&&this.#fh.startDrag(i,t,e,this.#yh,r)}),e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),!this.#fh.didDrag){if(e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}destroy(){this.#Jn.disconnect(),this.#vh.destroy(),this.#fh.destroy(),super.destroy()}}class ao{static getHourLabels(e){for(var t=new Intl.DateTimeFormat(e,{hour:"numeric"}),r=[],i=0;i<24;i++){var s=new Date(2024,0,1,i,0);r.push(t.format(s))}return r}static timeToY(e,t){return(60*e.getHours()+e.getMinutes())*t}static durationToHeight(e,t,r){var i=60*e.getHours()+e.getMinutes(),s=60*t.getHours()+t.getMinutes();return s<i&&(s=1440),(s-i)*r}static splitByDay(e,t){var r=t.map(e=>({date:new Date(e),allDay:[],timed:[]}));for(var i of e)for(var s=i.startTime,n=i.endTime,a=n.getTime()-s.getTime(),o=i.isAllDay||a>=864e5,l=0;l<t.length;l++){var h=new Date(t[l]);h.setHours(0,0,0,0);var d=new Date(h);d.setDate(d.getDate()+1),s<d&&n>h&&(o?r[l].allDay.push(i):r[l].timed.push(i))}return r}static resolveOverlaps(e){if(0===e.length)return[];for(var t=[...e].sort((e,t)=>{var r=e.startTime.getTime()-t.startTime.getTime();return 0!==r?r:t.endTime.getTime()-t.startTime.getTime()-(e.endTime.getTime()-e.startTime.getTime())}),r=[],i=[t[0]],s=t[0].endTime.getTime(),n=1;n<t.length;n++){(d=t[n]).startTime.getTime()<s?(i.push(d),d.endTime.getTime()>s&&(s=d.endTime.getTime())):(r.push(i),i=[d],s=d.endTime.getTime())}r.push(i);var a=[];for(var o of r){var l=[],h=new Map;for(var d of o){for(var c=!1,u=0;u<l.length;u++)if(d.startTime.getTime()>=l[u].endTime){l[u].endTime=d.endTime.getTime(),h.set(d,u),c=!0;break}c||(h.set(d,l.length),l.push({endTime:d.endTime.getTime()}))}var g=l.length;for(var d of o)a.push({entry:d,column:h.get(d),totalColumns:g})}return a}}class oo{#jl;#Rh=null;#Mh=null;#Lh=0;#Ih=0;#Ph=null;#Ah=0;#Hh=30;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}attach(e,t,r,i){e.style.touchAction="none",e.addEventListener("pointerdown",s=>{if(0===s.button&&!s.target.closest(".ec-tg-entry")&&this.#jl.canEdit$.getValue()){s.preventDefault(),this.#ql=s.pointerId,this.#Rh=e,this.#Mh=t,this.#Ah=r,this.#Hh=i;var n=e.getBoundingClientRect(),a=(s.clientY-n.top+e.scrollTop)/r;this.#Lh=this.#Vh(a,i),this.#Ih=this.#Lh+i,this.#Gl=!1,this.#Ph=document.createElement("div"),this.#Ph.classList.add("ec-tg-drag-preview"),e.appendChild(this.#Ph),this.#mh(),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>this.#ja(e),document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh)}})}cancel(){this.#rh(),this.#uh()}destroy(){this.cancel()}#nh(e){if(e.pointerId===this.#ql&&this.#Rh&&this.#Ph){var t=this.#Rh.getBoundingClientRect(),r=(e.clientY-t.top+this.#Rh.scrollTop)/this.#Ah;this.#Ih=this.#Vh(r,this.#Hh),this.#Ih!==this.#Lh&&this.#Ih!==this.#Lh+this.#Hh&&(this.#Gl=!0),this.#Ih===this.#Lh&&(this.#Ih=this.#Lh+this.#Hh),this.#Ih=Math.max(0,Math.min(1440,this.#Ih)),this.#mh()}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#Rh&&this.#Mh&&this.#Ph){var t=Math.min(this.#Lh,this.#Ih),r=Math.max(this.#Lh,this.#Ih),i=new Date(this.#Mh);i.setHours(Math.floor(t/60),t%60,0,0);var s=new Date(this.#Mh);if(s.setHours(Math.floor(r/60),r%60,0,0),this.#uh(),this.#Gl){var n={startTime:i,endTime:s,isAllDay:!1,cancel:!1};this.#jl.entryCreating$.next(n)}}else this.#uh()}#oh(e){e.pointerId===this.#ql&&this.cancel()}#ja(e){"Escape"===e.key&&this.cancel()}#mh(){if(this.#Ph){var e=Math.min(this.#Lh,this.#Ih),t=Math.max(this.#Lh,this.#Ih);this.#Ph.style.top=e*this.#Ah+"px",this.#Ph.style.height=(t-e)*this.#Ah+"px";var r=this.#jl.locale$.getValue().language,i=new Intl.DateTimeFormat(r,{hour:"numeric",minute:"2-digit"}),s=new Date(2024,0,1);s.setHours(Math.floor(e/60),e%60);var n=i.format(s);s.setHours(Math.floor(t/60),t%60);var a=i.format(s);this.#Ph.textContent=n+" – "+a}}#Vh(e,t){return Math.round(e/t)*t}#uh(){this.#Ph&&(this.#Ph.remove(),this.#Ph=null),this.#Rh=null,this.#Mh=null,this.#ql=-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class lo{#jl;#Bh=null;#Fh=[];#As=-1;#Zl=-1;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}attach(e,t){this.#Bh=e,this.#Fh=t;for(var r=0;r<e.children.length;r++){var i=e.children[r];i.dataset.cellIndex=String(r),i.style.touchAction="none",i.addEventListener("pointerdown",e=>{var t=parseInt(e.currentTarget.dataset.cellIndex,10);this.#th(e,t)})}}cancel(){this.#rh(),this.#ih(),this.#As=-1,this.#Zl=-1,this.#Gl=!1,this.#ql=-1}destroy(){this.cancel()}#th(e,t){0===e.button&&(e.target.closest(".ec-entry")||this.#jl.canEdit$.getValue()&&(e.preventDefault(),this.#ql=e.pointerId,this.#Gl=!1,this.#As=t,this.#Zl=t,this.#sh(),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>this.#ja(e),document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh)))}#nh(e){if(e.pointerId===this.#ql&&this.#Bh&&!(this.#As<0)){var t=this.#lh(e.clientX,e.clientY);t>=0&&t!==this.#Zl&&(this.#Zl=t,this.#Zl!==this.#As&&(this.#Gl=!0),this.#sh())}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#As<0)this.cancel();else{var t=Math.min(this.#As,this.#Zl),r=Math.max(this.#As,this.#Zl),i=new Date(this.#Fh[t]);i.setHours(0,0,0,0);var s=new Date(this.#Fh[r]);s.setDate(s.getDate()+1),s.setHours(0,0,0,0),this.#ih();var n=this.#Gl;if(this.#As=-1,this.#Zl=-1,this.#Gl=!1,this.#ql=-1,n){var a={startTime:i,endTime:s,isAllDay:!0,cancel:!1};this.#jl.entryCreating$.next(a)}}}#oh(e){e.pointerId===this.#ql&&this.cancel()}#ja(e){"Escape"===e.key&&this.cancel()}#sh(){if(this.#Bh)for(var e=Math.min(this.#As,this.#Zl),t=Math.max(this.#As,this.#Zl),r=0;r<this.#Bh.children.length;r++){this.#Bh.children[r].classList.toggle("ec-tg-allday-drag",r>=e&&r<=t)}}#ih(){if(this.#Bh)for(var e=0;e<this.#Bh.children.length;e++)this.#Bh.children[e].classList.remove("ec-tg-allday-drag")}#lh(e,t){if(!this.#Bh)return-1;for(var r=0;r<this.#Bh.children.length;r++){var i=this.#Bh.children[r].getBoundingClientRect();if(e>=i.left&&e<=i.right)return r}return this.#Bh.children.length>0?e<this.#Bh.children[0].getBoundingClientRect().left?0:this.#Bh.children.length-1:-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class ho{#jl;#hh=null;#zh=null;#dh=null;#ch=null;#es=null;#Oh=null;#Nh=[];#Wh=[];#Uh=-1;#jh=-1;#Xh=0;#Yh=30;#Kh=0;#Zh=0;#Gh=0;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}attach(e,t,r,i,s,n,a,o){var l=document.createElement("div");l.classList.add("ec-tg-entry-resize-handle","ec-tg-entry-resize-handle-top"),l.style.touchAction="none",e.appendChild(l);var h=document.createElement("div");h.classList.add("ec-tg-entry-resize-handle","ec-tg-entry-resize-handle-bottom"),h.style.touchAction="none",e.appendChild(h);var d=a??[r],c=o??[i];l.addEventListener("pointerdown",a=>{a.stopPropagation(),0===a.button&&this.#jl.canEdit$.getValue()&&this.#Vo(a,e,t,r,i,s,n,"resize-start",d,c)}),h.addEventListener("pointerdown",a=>{a.stopPropagation(),0===a.button&&this.#jl.canEdit$.getValue()&&this.#Vo(a,e,t,r,i,s,n,"resize-end",d,c)}),e.style.touchAction="none",e.addEventListener("pointerdown",a=>{0===a.button&&(a.target.closest(".ec-tg-entry-resize-handle")||this.#jl.canEdit$.getValue()&&this.#Vo(a,e,t,r,i,s,n,"move",d,c))})}cancel(){this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#rh(),this.#gh()}destroy(){this.cancel()}#Vo(e,t,r,i,s,n,a,o,l,h){e.preventDefault(),this.#ql=e.pointerId,this.#hh=r,this.#zh=o,this.#dh=t,this.#es=i,this.#Oh=s,this.#Nh=l,this.#Wh=h,this.#Uh=l.indexOf(i),this.#jh=this.#Uh,this.#Xh=n,this.#Yh=a,this.#Kh=parseFloat(t.style.top),this.#Zh=parseFloat(t.style.height),this.#Gh=e.clientY,t.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh)}#nh(e){if(e.pointerId===this.#ql&&this.#dh){var t=e.clientY-this.#Gh,r=this.#Vh(t/this.#Xh,this.#Yh)*this.#Xh;if("move"===this.#zh){var i=Math.max(0,this.#Kh+r),s=this.#qh(e.clientX);s<0&&(s=this.#jh),this.#jh=s,this.#_h(),this.#ch.style.top=i+"px";var n=this.#Nh[s];this.#ch.parentElement!==n&&n.appendChild(this.#ch)}else if("resize-start"===this.#zh){var a=this.#Yh*this.#Xh,o=this.#Zh-a,l=Math.min(r,o),h=Math.max(0,this.#Kh+l),d=Math.max(a,this.#Zh-l);this.#_h(),this.#ch.style.top=h+"px",this.#ch.style.height=d+"px"}else if("resize-end"===this.#zh){var c=Math.max(this.#Yh*this.#Xh,this.#Zh+r);this.#_h(),this.#ch.style.height=c+"px"}}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#hh&&this.#dh&&this.#Oh){var t=e.clientY-this.#Gh,r=this.#Vh(t/this.#Xh,this.#Yh),i=this.#jh-this.#Uh;if(this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==r||0!==i){var s=this.#hh,n=s.startTime,a=s.endTime;if("move"===this.#zh){var o=6e4*r+24*i*60*60*1e3,l=new Date(n.getTime()+o),h=new Date(a.getTime()+o);if(60*l.getHours()+l.getMinutes()<0){var d=this.#Wh[this.#jh]??this.#Oh;(l=new Date(d)).setHours(0,0,0,0),h=new Date(l.getTime()+(a.getTime()-n.getTime()))}var c={entry:s,newStartTime:l,newEndTime:h,cancel:!1};this.#jl.entryMoving$.next(c),c.cancel||(s.item.startTime=c.newStartTime,s.item.endTime=c.newEndTime)}else if("resize-start"===this.#zh){var u=new Date(n.getTime()+6e4*r);a.getTime()-u.getTime()<6e4*this.#Yh&&(u=new Date(a.getTime()-6e4*this.#Yh));var g=new Date(this.#Oh);g.setHours(0,0,0,0),u.getTime()<g.getTime()&&(u=g);var m={entry:s,newStartTime:u,newEndTime:a,edge:"start",cancel:!1};this.#jl.entryResizing$.next(m),m.cancel||(s.item.startTime=m.newStartTime)}else if("resize-end"===this.#zh){var p=new Date(a.getTime()+6e4*r);p.getTime()-n.getTime()<6e4*this.#Yh&&(p=new Date(n.getTime()+6e4*this.#Yh));var v={entry:s,newStartTime:n,newEndTime:p,edge:"end",cancel:!1};this.#jl.entryResizing$.next(v),v.cancel||(s.item.endTime=v.newEndTime)}this.#gh()}else this.#gh()}else this.cancel()}#oh(e){e.pointerId===this.#ql&&this.cancel()}#_h(){!this.#ch&&this.#dh&&(this.#ch=this.#dh.cloneNode(!0),this.#ch.classList.remove("ec-entry-dragging"),this.#ch.classList.add("ec-entry-drag-preview"),this.#ch.style.top=this.#Kh+"px",this.#ch.style.height=this.#Zh+"px",this.#es.appendChild(this.#ch))}#uh(){this.#ch&&(this.#ch.remove(),this.#ch=null)}#Vh(e,t){return Math.round(e/t)*t}#qh(e){for(var t=0;t<this.#Nh.length;t++){var r=this.#Nh[t].getBoundingClientRect();if(e>=r.left&&e<=r.right)return t}return 0===this.#Nh.length?-1:e<this.#Nh[0].getBoundingClientRect().left?0:this.#Nh.length-1}#gh(){this.#hh=null,this.#zh=null,this.#dh=null,this.#es=null,this.#Oh=null,this.#Nh=[],this.#Wh=[],this.#Uh=-1,this.#jh=-1,this.#ql=-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class co{#jl;#hh=null;#dh=null;#ch=null;#Kl=[];#Fh=[];#As=-1;#Zl=-1;#Gl=!1;#ql=-1;#_l=null;#Jl=null;#Ql=null;#eh=null;constructor(e){this.#jl=e}get didDrag(){return this.#Gl}startDrag(e,t,r,i,s){if(0===e.button&&this.#jl.canEdit$.getValue()){e.preventDefault(),e.stopPropagation(),this.#ql=e.pointerId,this.#hh=t,this.#dh=r,this.#Fh=s,this.#Gl=!1,this.#Kl=[];for(var n=0;n<i.children.length;n++)this.#Kl.push(i.children[n]);var a=this.#lh(e.clientX);a<0||(this.#As=a,this.#Zl=a,r.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#oh(e),this.#eh=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#_l),document.addEventListener("pointerup",this.#Jl),document.addEventListener("pointercancel",this.#Ql),document.addEventListener("keydown",this.#eh))}}cancel(){this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),this.#ih(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#rh(),this.#gh()}destroy(){this.cancel()}#nh(e){if(e.pointerId===this.#ql&&!(this.#As<0)){var t=this.#lh(e.clientX);t>=0&&t!==this.#Zl&&(this.#Zl=t,this.#Zl!==this.#As&&(this.#Gl=!0),this.#mh())}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),!this.#hh||this.#As<0)this.cancel();else{var t=this.#Zl-this.#As;if(this.#dh&&this.#dh.classList.remove("ec-entry-dragging"),this.#uh(),this.#ih(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==t){var r=this.#hh,i=24*t*60*60*1e3,s=new Date(r.startTime.getTime()+i),n=new Date(r.endTime.getTime()+i),a={entry:r,newStartTime:s,newEndTime:n,cancel:!1};this.#jl.entryMoving$.next(a),a.cancel||(r.item.startTime=a.newStartTime,r.item.endTime=a.newEndTime),this.#gh()}else this.#gh()}}#oh(e){e.pointerId===this.#ql&&this.cancel()}#sh(){for(var e=0;e<this.#Kl.length;e++)this.#Kl[e].classList.toggle("ec-tg-allday-drag",e===this.#Zl)}#ih(){for(var e of this.#Kl)e.classList.remove("ec-tg-allday-drag")}#mh(){if(this.#dh&&this.#Zl!==this.#As){this.#ch||(this.#ch=this.#dh.cloneNode(!0),this.#ch.classList.remove("ec-entry-dragging"),this.#ch.classList.add("ec-entry-drag-preview"));var e=this.#Kl[this.#Zl];e&&this.#ch.parentElement!==e&&e.appendChild(this.#ch)}else this.#uh()}#uh(){this.#ch&&(this.#ch.remove(),this.#ch=null)}#lh(e){for(var t=0;t<this.#Kl.length;t++){var r=this.#Kl[t].getBoundingClientRect();if(e>=r.left&&e<=r.right)return t}return 0===this.#Kl.length?-1:e<this.#Kl[0].getBoundingClientRect().left?0:this.#Kl.length-1}#gh(){this.#hh=null,this.#dh=null,this.#Kl=[],this.#As=-1,this.#Zl=-1,this.#Gl=!1,this.#ql=-1}#rh(){this.#_l&&(document.removeEventListener("pointermove",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointerup",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("pointercancel",this.#Ql),this.#Ql=null),this.#eh&&(document.removeEventListener("keydown",this.#eh),this.#eh=null)}}class uo extends Ga{#Jh;#ph;#Qh;#ed;#Bh;#td;#rd;#id;#sd=null;#nd=null;#ad="";#vh;#od;#ld;#fh;constructor(e,t){super(e,t),this.element.classList.add("ec-week-view"),this.#vh=new oo(e),this.#od=new lo(e),this.#ld=new co(e),this.#fh=new ho(e),this.#Th(),this.#x()}get dayCount(){return 7}getDays(e){for(var t=this.getVisibleRange(e),r=[],i=0;i<this.dayCount;i++){var s=new Date(t.start);s.setDate(t.start.getDate()+i),r.push(s)}return r}#Th(){this.#Jh=document.createElement("div"),this.#Jh.classList.add("ec-tg-scroll"),this.element.appendChild(this.#Jh),this.#ph=document.createElement("div"),this.#ph.classList.add("ec-tg-header"),this.#Jh.appendChild(this.#ph),this.#Qh=document.createElement("div"),this.#Qh.classList.add("ec-tg-allday"),this.#Qh.setAttribute("role","region"),this.#Qh.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaAllDayEvents??"All-day events"),this.#ed=document.createElement("div"),this.#ed.classList.add("ec-tg-gutter-corner"),this.#Qh.appendChild(this.#ed),this.#Bh=document.createElement("div"),this.#Bh.classList.add("ec-tg-allday-row"),this.#Qh.appendChild(this.#Bh),this.#Jh.appendChild(this.#Qh),this.#td=document.createElement("div"),this.#td.classList.add("ec-tg-body"),this.#rd=document.createElement("div"),this.#rd.classList.add("ec-tg-gutter"),this.#td.appendChild(this.#rd),this.#id=document.createElement("div"),this.#id.classList.add("ec-tg-content"),this.#td.appendChild(this.#id),this.#Jh.appendChild(this.#td)}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.firstDayOfWeek$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.slotDuration$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.workingHours$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&so(this.element,e)}))}show(){this.#ad="",super.show()}getVisibleRange(e){var t=this.ec.firstDayOfWeek$.getValue(),r=(e.getDay()-t+7)%7,i=new Date(e);i.setDate(e.getDate()-r),i.setHours(0,0,0,0);var s=new Date(i);return s.setDate(i.getDate()+7),{start:i,end:s}}render(){this.#vh.cancel(),this.#od.cancel(),this.#ld.cancel(),this.#fh.cancel();var e=this.ec.currentDate$.getValue(),t=this.ec.locale$.getValue(),r=this.ec.slotDuration$.getValue(),i=this.ec.workingHours$.getValue(),s=this.getDays(e),n=this.getVisibleRange(e),a=this.ec.data.getEntries({start:n.start,end:n.end}),o=ao.splitByDay(a,s),l=48/r;this.#xh(s,t.language),this.#hd(o,s),this.#dd(t.language,r,48),this.#cd(s,o,l,r,48),this.#ud(s,l),this.ec.viewDateRangeChanged$.next(n);var h=n.start.getTime().toString();this.#ad!==h&&(this.#ad=h,requestAnimationFrame(()=>{var e,t=new Date,r=new Date(t.getFullYear(),t.getMonth(),t.getDate());e=r>=n.start&&r<n.end?Math.max(0,t.getHours()-1):i.start,this.#Jh.scrollTop=60*e*l}))}#xh(e,t){this.#ph.innerHTML="";var r=document.createElement("div");if(r.classList.add("ec-tg-gutter-corner"),this.ec.showWeekNumbers$.getValue()&&e.length>0){r.classList.add("ec-tg-week-number");var i=this.ec.locale$.getValue().calendar,s=i?.weekNumberShort??"Wk";r.textContent=s+" "+Gt(e[0]),r.setAttribute("aria-label",(i?.weekNumber??"Week")+" "+Gt(e[0]))}this.#ph.appendChild(r);var n=new Date;n.setHours(0,0,0,0);var a=new Intl.DateTimeFormat(t,{weekday:"short"}),o=new Intl.DateTimeFormat(t,{day:"numeric"}),l=new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric"});for(var h of e){var d=document.createElement("div");d.classList.add("ec-tg-day-header"),d.setAttribute("role","columnheader"),d.setAttribute("aria-label",l.format(h)),h.getTime()===n.getTime()&&(d.classList.add("ec-tg-today"),d.setAttribute("aria-current","date"));var c=document.createElement("span");c.classList.add("ec-tg-day-name"),c.textContent=a.format(h);var u=document.createElement("span");u.classList.add("ec-tg-day-number"),u.textContent=o.format(h),h.getTime()===n.getTime()&&u.classList.add("ec-tg-today-number"),d.appendChild(c),d.appendChild(u),this.#ph.appendChild(d)}}#hd(e,t){for(var r of(this.#Bh.innerHTML="",e)){var i=document.createElement("div");for(var s of(i.classList.add("ec-tg-allday-cell"),r.allDay)){var n=document.createElement("div");n.classList.add("ec-entry","ec-entry-multiday"),n.tabIndex=0,n.setAttribute("role","button"),n.setAttribute("aria-selected","false"),io(n);var a=(s.title??"")+", "+(this.ec.locale$.getValue().calendar?.allDay??"all-day");n.setAttribute("aria-label",a),n.dataset.entryId=s.id,ro(n,s);var o=this.ec.theme$.getValue(),l=Ja(s,this.ec.data,o);n.style.backgroundColor=l.chipBackgroundColor,n.style.color=l.chipTextColor,Qa(n,s,l),to(n,s,!0,this.ec),this.#gd(n,s),this.#md(n,s,t),i.appendChild(n)}this.#Bh.appendChild(i)}this.#od.attach(this.#Bh,t);var h=this.#ph.offsetHeight;this.#Qh.style.top=h+"px"}#dd(e,t,r){this.#rd.innerHTML="";for(var i=ao.getHourLabels(e),s=60/t,n=0;n<24;n++)for(var a=0;a<s;a++){var o=document.createElement("div");if(o.classList.add("ec-tg-gutter-slot"),o.style.height=r+"px",0===a){o.classList.add("ec-tg-gutter-hour"),o.setAttribute("role","rowheader");var l=document.createElement("span");l.classList.add("ec-tg-gutter-label"),l.textContent=i[n],o.appendChild(l)}else o.classList.add("ec-tg-gutter-sub");this.#rd.appendChild(o)}}#cd(e,t,r,i,s){this.#id.innerHTML="";var n=new Date;n.setHours(0,0,0,0);for(var a=60/i,o=24*a,l=[],h=0;h<e.length;h++){var d=document.createElement("div");d.classList.add("ec-tg-column"),e[h].getTime()===n.getTime()&&d.classList.add("ec-tg-today");for(var c=0;c<o;c++){var u=document.createElement("div");u.classList.add("ec-tg-slot"),u.style.height=s+"px",c%a===0?u.classList.add("ec-tg-slot-hour"):u.classList.add("ec-tg-slot-sub");var g=c*i;this.#pd(u,e[h],g),d.appendChild(u)}l.push(d),this.#id.appendChild(d)}for(h=0;h<e.length;h++){var m=ao.resolveOverlaps(t[h].timed);this.#vd(l[h],m,e[h],r,i,l,e),this.#vh.attach(l[h],e[h],r,i)}}#vd(e,t,r,i,s,n,a){var o=new Date(r);o.setHours(0,0,0,0);var l=new Date(o);for(var h of(l.setDate(l.getDate()+1),t)){var d=h.entry,c=d.startTime<o?o:d.startTime,u=d.endTime>l?l:d.endTime,g=ao.timeToY(c,i),m=ao.durationToHeight(c,u,i),p=15*i;m<p&&(m=p);var v=100/h.totalColumns,f=h.column*v,y=document.createElement("div");y.classList.add("ec-entry","ec-tg-entry"),y.tabIndex=0,y.setAttribute("role","button"),y.setAttribute("aria-selected","false"),io(y);var b=(d.title??"")+", "+this.#fd(d);y.setAttribute("aria-label",b),y.dataset.entryId=d.id,y.style.top=g+"px",y.style.height=m+"px",y.style.left=f+"%",y.style.width=v+"%";var w=this.ec.theme$.getValue(),T=Ja(d,this.ec.data,w);y.style.backgroundColor=T.chipBackgroundColor,y.style.borderLeft=`var(--ec-entry-accent-width, 3px) solid ${T.color2}`,y.style.color=T.chipTextColor,Qa(y,d,T);var C=document.createElement("div");C.classList.add("ec-tg-entry-title"),ro(C,d);var x=document.createElement("div");x.classList.add("ec-tg-entry-time"),x.textContent=this.#fd(d),y.appendChild(C),y.appendChild(x),to(y,d,!1,this.ec),this.#gd(y,d),this.#fh.attach(y,d,e,r,i,s,n,a),e.appendChild(y)}}#fd(e){var t=this.ec.locale$.getValue().language,r=new Intl.DateTimeFormat(t,{hour:"numeric",minute:"2-digit"});return r.format(e.startTime)+" – "+r.format(e.endTime)}#ud(e,t){null!==this.#nd&&(clearInterval(this.#nd),this.#nd=null),this.#sd&&(this.#sd.remove(),this.#sd=null);var r=new Date;r.setHours(0,0,0,0);for(var i=-1,s=0;s<e.length;s++){var n=new Date(e[s]);if(n.setHours(0,0,0,0),n.getTime()===r.getTime()){i=s;break}}if(!(i<0)){var a=this.#id.children[i];if(a){this.#sd=document.createElement("div"),this.#sd.classList.add("ec-tg-now-line"),this.#sd.setAttribute("role","presentation"),this.#sd.setAttribute("aria-hidden","true"),a.appendChild(this.#sd);var o=()=>{if(this.#sd){var e=new Date,r=ao.timeToY(e,t);this.#sd.style.top=r+"px"}};o(),this.#nd=setInterval(o,6e4)}}}#md(e,t,r){e.style.touchAction="none",e.addEventListener("pointerdown",i=>{0===i.button&&this.ec.canEdit$.getValue()&&this.#ld.startDrag(i,t,e,this.#Bh,r)})}#pd(e,t,r){e.addEventListener("click",e=>{if(!e.target.closest(".ec-tg-entry")){this.ec.selectedEntries$.next([]);var i=new Date(t);i.setHours(Math.floor(r/60),r%60,0,0),this.ec.dateClick$.next({date:i,isAllDay:!1,domEvent:e})}}),e.addEventListener("contextmenu",e=>{e.preventDefault();var i=new Date(t);i.setHours(Math.floor(r/60),r%60,0,0),this.ec.dateContextMenu$.next({date:i,isAllDay:!1,entry:null,domEvent:e})})}#gd(e,t){e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}destroy(){null!==this.#nd&&(clearInterval(this.#nd),this.#nd=null),this.#vh.destroy(),this.#od.destroy(),this.#ld.destroy(),this.#fh.destroy(),super.destroy()}}class go extends uo{constructor(e,t){super(e,t),this.element.classList.remove("ec-week-view"),this.element.classList.add("ec-day-view")}get dayCount(){return 1}getVisibleRange(e){var t=new Date(e);t.setHours(0,0,0,0);var r=new Date(t);return r.setDate(t.getDate()+1),{start:t,end:r}}}class mo extends Ga{#Jh;#yd=[];constructor(e,t){super(e,t),this.element.classList.add("ec-agenda-view"),this.#Th(),this.#x()}#Th(){this.#Jh=document.createElement("div"),this.#Jh.classList.add("ec-agenda-scroll"),this.#Jh.setAttribute("role","list"),this.#Jh.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaAgendaList??"Agenda event list"),this.element.appendChild(this.#Jh),this.#bd()}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.agendaDays$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&so(this.element,e)}))}getVisibleRange(e){var t=this.ec.agendaDays$.getValue(),r=new Date(e);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+t),{start:r,end:i}}render(){var e=this.ec.currentDate$.getValue(),t=this.ec.locale$.getValue(),r=this.ec.theme$.getValue(),i=t.language,s=t.calendar,n=this.getVisibleRange(e),a=this.ec.data.getEntries({start:n.start,end:n.end});this.#Jh.innerHTML="",this.#Jh.setAttribute("aria-label",s?.ariaAgendaList??"Agenda event list"),this.#yd=[];var o=new Date;o.setHours(0,0,0,0);for(var l=new Intl.DateTimeFormat(i,{weekday:"long"}),h=new Intl.DateTimeFormat(i,{year:"numeric",month:"long",day:"numeric"}),d=new Intl.DateTimeFormat(i,{hour:"numeric",minute:"2-digit"}),c=this.ec.agendaDays$.getValue(),u=!1,g=0;g<c;g++){var m=new Date(n.start);m.setDate(m.getDate()+g);var p=this.#Eh(a,m);if(0!==p.length){u=!0;var v=document.createElement("div");v.classList.add("ec-agenda-day"),v.setAttribute("role","listitem");var f=document.createElement("div");f.classList.add("ec-agenda-day-header");var y=document.createElement("span");y.classList.add("ec-agenda-day-name"),y.textContent=l.format(m),f.appendChild(y);var b=document.createElement("span");if(b.classList.add("ec-agenda-day-date"),b.textContent=h.format(m),f.appendChild(b),m.getTime()===o.getTime()){f.classList.add("ec-agenda-today"),f.setAttribute("aria-current","date");var w=document.createElement("span");w.classList.add("ec-agenda-today-badge"),w.textContent=s?.today??"Today",f.appendChild(w)}v.appendChild(f);var T=document.createElement("div");for(var C of(T.classList.add("ec-agenda-entries"),p)){var x=this.#wd(C,r,i,d,s);T.appendChild(x),this.#yd.push(x)}v.appendChild(T),this.#Jh.appendChild(v)}}if(!u){var k=document.createElement("div");k.classList.add("ec-agenda-empty"),k.textContent=s?.noEvents??"No events",this.#Jh.appendChild(k)}this.ec.viewDateRangeChanged$.next(n)}#Eh(e,t){var r=new Date(t);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+1),e.filter(e=>e.startTime<i&&e.endTime>r)}#wd(e,t,r,i,s){var n=document.createElement("div");n.classList.add("ec-entry","ec-agenda-entry"),n.tabIndex=0,n.setAttribute("role","button"),n.setAttribute("aria-selected","false"),n.dataset.entryId=e.id,io(n);var a=Ja(e,this.ec.data,t),o=document.createElement("span");o.classList.add("ec-agenda-entry-dot"),o.style.backgroundColor=a.color2,n.appendChild(o);var l=document.createElement("span");l.classList.add("ec-agenda-entry-time"),e.isAllDay?l.textContent=s?.allDay??"all-day":l.textContent=i.format(e.startTime)+" – "+i.format(e.endTime),n.appendChild(l);var h=document.createElement("span");if(h.classList.add("ec-agenda-entry-title"),ro(h,e),n.appendChild(h),e.location){var d=document.createElement("span");d.classList.add("ec-agenda-entry-location"),d.textContent=e.location,n.appendChild(d)}Qa(n,e,a),to(n,e,e.isAllDay,this.ec);var c=e.title??"";return e.isAllDay?c+=", "+(s?.allDay??"all-day"):e.startTime&&e.endTime&&(c+=", "+i.format(e.startTime)+" – "+i.format(e.endTime)),n.setAttribute("aria-label",c),this.#gd(n,e),n}#gd(e,t){e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}#bd(){this.#Jh.addEventListener("keydown",e=>{var t=e.target;if(t.classList.contains("ec-agenda-entry")){var r=this.#yd.indexOf(t);if(!(r<0)){var i=-1;switch(e.key){case"ArrowDown":i=r+1;break;case"ArrowUp":i=r-1;break;case"Home":i=0;break;case"End":i=this.#yd.length-1;break;default:return}if(i>=0&&i<this.#yd.length){e.preventDefault(),this.#yd[i].focus();var s=this.#yd[i].dataset.entryId;if(s){var n=this.getVisibleRange(this.ec.currentDate$.getValue()),a=this.ec.data.getEntries({start:n.start,end:n.end}).find(e=>e.id===s);a&&this.ec.selectedEntries$.next([a])}}}}})}}class po{#jl;#nr;#T=new r;#Td;#Cd;#xd=!1;#ph;#kd;#Ed;#Dd;#Sd;#Xl;#yh=new Map;#$d=[];constructor(e,t){this.#jl=e;var r=e.currentDate$.getValue();this.#Td=r.getFullYear(),this.#Cd=r.getMonth(),this.#nr=document.createElement("div"),this.#nr.classList.add("ec-mini-calendar"),t.appendChild(this.#nr),this.#Th(),this.#x(),this.render()}render(){this.#xh(),this.#xd?(this.#Sd.style.display="none",this.#Rd()):(this.#Sd.style.display="",this.#Md())}navigateToMonth(e,t){this.#Td=e,this.#Cd=t,this.render()}destroy(){this.#T.unsubscribe(),this.#nr.remove()}#Th(){var e=this.#jl.locale$.getValue().calendar;this.#ph=document.createElement("div"),this.#ph.classList.add("ec-mini-header"),this.#ph.setAttribute("role","toolbar"),this.#kd=document.createElement("button"),this.#kd.classList.add("ec-mini-nav-btn"),this.#kd.textContent="‹",this.#kd.addEventListener("click",()=>this.#Ld()),this.#Dd=document.createElement("button"),this.#Dd.classList.add("ec-mini-title"),this.#Dd.setAttribute("aria-label",e?.ariaSelectMonthYear??"Select month and year"),this.#Dd.setAttribute("aria-expanded","false"),this.#Dd.addEventListener("click",()=>this.#Id()),this.#Ed=document.createElement("button"),this.#Ed.classList.add("ec-mini-nav-btn"),this.#Ed.textContent="›",this.#Ed.addEventListener("click",()=>this.#Pd()),this.#ph.appendChild(this.#kd),this.#ph.appendChild(this.#Dd),this.#ph.appendChild(this.#Ed),this.#nr.appendChild(this.#ph),this.#Sd=document.createElement("div"),this.#Sd.classList.add("ec-mini-daynames"),this.#Sd.setAttribute("role","row"),this.#nr.appendChild(this.#Sd),this.#Xl=document.createElement("div"),this.#Xl.classList.add("ec-mini-grid"),this.#Xl.setAttribute("role","grid"),this.#nr.appendChild(this.#Xl)}#x(){this.#T.add(this.#jl.currentDate$.subscribe(e=>{var t=e.getMonth(),r=e.getFullYear();t!==this.#Cd||r!==this.#Td?(this.#Cd=t,this.#Td=r,this.#xd&&(this.#xd=!1),this.render()):this.#Ad()})),this.#T.add(this.#jl.viewMode$.subscribe(()=>{this.#xd||this.#Ad()})),this.#T.add(this.#jl.firstDayOfWeek$.subscribe(()=>{this.#xd||this.render()})),this.#T.add(this.#jl.locale$.subscribe(()=>{this.render()})),this.#T.add(this.#jl.settings.changed$.subscribe(()=>{this.render()})),this.#T.add(this.#jl.data.itemAdded$.subscribe(()=>this.#Hd())),this.#T.add(this.#jl.data.itemChanged$.subscribe(()=>this.#Hd())),this.#T.add(this.#jl.data.itemRemoved$.subscribe(()=>this.#Hd())),this.#T.add(this.#jl.data.calendarVisibilityChanged$.subscribe(()=>this.#Hd()))}#xh(){var e=this.#jl.locale$.getValue().language,t=this.#jl.locale$.getValue().calendar,r=t?.ariaPrevious??"Previous",i=t?.ariaNext??"Next";if(this.#xd)this.#Dd.textContent=this.#Td.toString(),this.#Dd.setAttribute("aria-expanded","true"),this.#kd.setAttribute("aria-label",r+" year"),this.#Ed.setAttribute("aria-label",i+" year");else{var s=new Date(this.#Td,this.#Cd,1),n=new Intl.DateTimeFormat(e,{year:"numeric",month:"long"});this.#Dd.textContent=n.format(s),this.#Dd.setAttribute("aria-expanded","false"),this.#kd.setAttribute("aria-label",r+" "+(t?.month??"month").toLowerCase()),this.#Ed.setAttribute("aria-label",i+" "+(t?.month??"month").toLowerCase()),this.#Xl.setAttribute("aria-label",n.format(s))}}#Vd(){this.#Sd.innerHTML="";for(var e=this.#jl.locale$.getValue().language,t=this.#jl.firstDayOfWeek$.getValue(),r=new Intl.DateTimeFormat(e,{weekday:"narrow"}),i=0;i<7;i++){var s=(t+i)%7,n=new Date(2024,0,7+s),a=document.createElement("span");a.classList.add("ec-mini-dayname"),a.setAttribute("role","columnheader"),0!==s&&6!==s||a.classList.add("ec-mini-weekend"),a.textContent=r.format(n),this.#Sd.appendChild(a)}}#Md(){this.#Vd(),this.#Xl.innerHTML="",this.#Xl.classList.remove("ec-mini-grid-months"),this.#yh.clear(),this.#$d=[];var e=this.#jl.firstDayOfWeek$.getValue(),t=this.#Bd(this.#Td,this.#Cd,e),r=new Date;r.setHours(0,0,0,0);for(var i=this.#jl.locale$.getValue().language,s=new Intl.DateTimeFormat(i,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),n=0;n<6;n++){var a=document.createElement("div");a.classList.add("ec-mini-row"),a.setAttribute("role","row"),this.#$d.push(a);for(var o=0;o<7;o++){var l=new Date(t);l.setDate(t.getDate()+7*n+o);var h=document.createElement("button");h.classList.add("ec-mini-day"),h.textContent=l.getDate().toString(),h.setAttribute("aria-label",s.format(l));var d=this.#Fd(l);h.dataset.date=d,this.#yh.set(d,h),l.getMonth()!==this.#Cd&&h.classList.add("ec-mini-other-month"),l.getTime()===r.getTime()&&(h.classList.add("ec-mini-today"),h.setAttribute("aria-current","date"));var c=l.getDay();0!==c&&6!==c||h.classList.add("ec-mini-weekend");var u=new Date(l);h.addEventListener("click",(e=>()=>this.#zd(e))(u)),a.appendChild(h)}this.#Xl.appendChild(a)}this.#Ad(),this.#Hd()}#Rd(){this.#Xl.innerHTML="",this.#Xl.classList.add("ec-mini-grid-months"),this.#yh.clear();for(var e=this.#jl.locale$.getValue().language,t=new Intl.DateTimeFormat(e,{month:"short"}),r=new Intl.DateTimeFormat(e,{month:"long",year:"numeric"}),i=this.#jl.currentDate$.getValue(),s=this.#Td===i.getFullYear(),n=0;n<4;n++){var a=document.createElement("div");a.classList.add("ec-mini-row"),a.setAttribute("role","row");for(var o=0;o<3;o++){var l=3*n+o,h=document.createElement("button");h.classList.add("ec-mini-month");var d=new Date(this.#Td,l,1);h.textContent=t.format(d),h.setAttribute("aria-label",r.format(d)),s&&l===i.getMonth()&&(h.classList.add("ec-mini-selected"),h.setAttribute("aria-current","date")),h.addEventListener("click",(e=>()=>this.#Od(e))(l)),a.appendChild(h)}this.#Xl.appendChild(a)}}#Ad(){for(var e of this.#yh.values())e.classList.remove("ec-mini-selected"),e.removeAttribute("aria-pressed");for(var t of this.#$d)t.classList.remove("ec-mini-week-selected");var r=this.#jl.currentDate$.getValue();switch(this.#jl.viewMode$.getValue()){case"day":var i=this.#Fd(r),s=this.#yh.get(i);s&&(s.classList.add("ec-mini-selected"),s.setAttribute("aria-pressed","true"));break;case"week":var n=this.#Nd(r),a=this.#Fd(n);for(var t of this.#$d){var o=t.firstElementChild;if(o&&o.dataset.date===a){t.classList.add("ec-mini-week-selected");break}}}}#Hd(){if(!this.#xd){for(var e of this.#yh.values())e.classList.remove("ec-mini-has-events");var t=this.#Wd(),r=this.#jl.data.getEntries(t),i=new Set;for(var s of r){var n=new Date(s.startTime);n.setHours(0,0,0,0);for(var a=new Date(s.endTime),o=new Date(n);o<a;)i.add(this.#Fd(o)),o.setDate(o.getDate()+1)}for(var l of i){var h=this.#yh.get(l);h&&h.classList.add("ec-mini-has-events")}}}#Ld(){this.#xd?this.#Td--:(this.#Cd--,this.#Cd<0&&(this.#Cd=11,this.#Td--)),this.render()}#Pd(){this.#xd?this.#Td++:(this.#Cd++,this.#Cd>11&&(this.#Cd=0,this.#Td++)),this.render()}#Id(){this.#xd=!this.#xd,this.render()}#zd(e){this.#jl.currentDate$.next(e)}#Od(e){this.#Cd=e,this.#xd=!1,this.render()}#Bd(e,t,r){var i=new Date(e,t,1).getDay();return new Date(e,t,1-(i-r+7)%7)}#Wd(){var e=this.#jl.firstDayOfWeek$.getValue(),t=this.#Bd(this.#Td,this.#Cd,e),r=new Date(t);return r.setDate(t.getDate()+42),{start:t,end:r}}#Nd(e){var t=this.#jl.firstDayOfWeek$.getValue(),r=new Date(e);r.setHours(0,0,0,0);var i=(r.getDay()-t+7)%7;return r.setDate(r.getDate()-i),r}#Fd(e){var t=e.getFullYear(),r=e.getMonth()+1,i=e.getDate();return t+"-"+(r<10?"0":"")+r+"-"+(i<10?"0":"")+i}}class vo{#jl;#nr;#T=new r;#ph;#Ud;#jd;constructor(e,t){this.#jl=e,this.#nr=document.createElement("div"),this.#nr.classList.add("ec-calendar-list"),t.appendChild(this.#nr),this.#Th(),this.#x(),this.render()}render(){this.#xh(),this.#Xd()}destroy(){this.#T.unsubscribe(),this.#nr.remove()}#Th(){this.#ph=document.createElement("div"),this.#ph.classList.add("ec-calendar-list-header"),this.#nr.appendChild(this.#ph),this.#Ud=document.createElement("div"),this.#Ud.classList.add("ec-calendar-list-items"),this.#Ud.setAttribute("role","list"),this.#nr.appendChild(this.#Ud),this.#jd=document.createElement("button"),this.#jd.classList.add("ec-calendar-list-add"),this.#jd.addEventListener("click",()=>{this.#jl.calendarAddRequested$.next()}),this.#nr.appendChild(this.#jd)}#x(){this.#T.add(this.#jl.data.calendarAdded$.subscribe(()=>this.render())),this.#T.add(this.#jl.data.calendarRemoved$.subscribe(()=>this.render())),this.#T.add(this.#jl.data.calendarChanged$.subscribe(()=>this.render())),this.#T.add(this.#jl.data.calendarVisibilityChanged$.subscribe(()=>this.#Yd())),this.#T.add(this.#jl.locale$.subscribe(()=>this.render())),this.#T.add(this.#jl.theme$.subscribe(()=>this.render()))}#xh(){var e=this.#jl.locale$.getValue().calendar;this.#ph.textContent=e?.myCalendars??"My Calendars"}#Xd(){this.#Ud.innerHTML="";for(var e=this.#jl.data,t=0;t<e.calendarsLength;t++){var r=e.getCalendar(t);this.#Ud.appendChild(this.#Kd(r))}var i=this.#jl.locale$.getValue().calendar;this.#jd.textContent="+ "+(i?.addCalendar??"Add calendar")}#Kd(e){var t=this.#jl.locale$.getValue().calendar,r=e.name||e.id,i=document.createElement("div");i.classList.add("ec-calendar-list-item"),i.setAttribute("role","listitem"),i.dataset.calendarId=e.id;var s=document.createElement("button");s.classList.add("ec-calendar-list-checkbox"),s.type="button",s.setAttribute("role","checkbox"),s.setAttribute("aria-checked",String(e.isVisible)),s.setAttribute("aria-label",t?.ariaToggleCalendar?t.ariaToggleCalendar(r):`Show or hide ${r}`),this.#Zd(s,e),s.addEventListener("click",()=>{e.isVisible=!e.isVisible}),i.appendChild(s);var n=document.createElement("span");if(n.classList.add("ec-calendar-list-name"),n.textContent=r,i.appendChild(n),!e.isDefault){var a=document.createElement("button");a.classList.add("ec-calendar-list-remove"),a.type="button",a.textContent="×",a.setAttribute("aria-label",t?.ariaRemoveCalendar?t.ariaRemoveCalendar(r):`Remove ${r}`),a.addEventListener("click",t=>{t.stopPropagation(),this.#Gd(e)}),i.appendChild(a)}return i}#Zd(e,t){var r=this.#jl.theme$.getValue().content.entryColors,i=Xr(t.color,r).color1;e.setAttribute("aria-checked",String(t.isVisible)),t.isVisible?(e.style.backgroundColor=i,e.style.borderColor=i,e.classList.add("ec-checked"),e.classList.remove("ec-unchecked")):(e.style.backgroundColor="transparent",e.style.borderColor=i,e.classList.remove("ec-checked"),e.classList.add("ec-unchecked"))}#Yd(){for(var e=this.#jl.data,t=this.#Ud.querySelectorAll(".ec-calendar-list-item"),r=0;r<t.length;r++){var i=t[r],s=i.dataset.calendarId;if(s){var n=e.getCalendarById(s);if(n){var a=i.querySelector(".ec-calendar-list-checkbox");a&&this.#Zd(a,n)}}}}#Gd(e){var t={calendar:e,cancel:!1};this.#jl.calendarRemoving$.next(t),t.cancel||this.#jl.data.removeCalendar(e)}}class fo{#jl;#Ia=null;constructor(e){this.#jl=e}async copy(e){if(0!==e.length){this.#Ia=this.#Pa(e);var t=this.#Aa(e);try{await navigator.clipboard.writeText(t)}catch{}}}async cut(e){for(var t of(await this.copy(e),e))this.#jl.data.removeItem(t.item);this.#jl.selectedEntries$.next([])}async paste(e){return this.#Ia?this.#Ha(this.#Ia,e):null}#Pa(e){var t=new Set,r=[];for(var i of e){var s=i.item;t.has(s.id)||(t.add(s.id),r.push(s.toAny()))}return{items:r}}#Ha(e,t){var r=[],i=null;for(var s of e.items){if(s.startTime){i=new Date(s.startTime);break}if(s.endTime){i=new Date(s.endTime);break}}var n=i?t.getTime()-i.getTime():0;for(var s of e.items){var a=JSON.parse(JSON.stringify(s));if(a.id=er(12),a.startTime){var o=new Date(new Date(a.startTime).getTime()+n);a.startTime=o.toISOString()}if(a.endTime){var l=new Date(new Date(a.endTime).getTime()+n);a.endTime=l.toISOString()}a.recurrenceExceptions=[];var h=a.calendarId;if(h&&!this.#jl.data.getCalendarById(h)){var d=this.#jl.data.defaultCalendar;a.calendarId=d?d.id:null}var c=Ra(a);this.#jl.data.addItem(c),r.push(c)}return{items:r}}#Aa(e){var t=[],r=new Set;for(var i of e)if(!r.has(i.item.id)){r.add(i.item.id);var s=i.title??"",n=i.startTime?qt(i.startTime):"",a=i.endTime?qt(i.endTime):"",o=i.location??"";t.push([s,n,a,o].join("\t"))}return t.join("\n")}}class yo{#jl;#qd;#_d=null;#Jd=null;#Qd=null;#T=new r;constructor(e,t){this.#jl=e,this.#qd=t,this.#qd.addEventListener("mouseenter",this.#ec,!0),this.#qd.addEventListener("mouseleave",this.#Kt,!0),this.#T.add(e.entryMoving$.subscribe(()=>this.hide())),this.#T.add(e.entryResizing$.subscribe(()=>this.hide())),this.#T.add(e.entryCreating$.subscribe(()=>this.hide()))}hide(){if(this.#tc(),this.#Qd=null,this.#_d){var e=this.#qd.querySelector('[aria-describedby="'+this.#_d.id+'"]');e&&e.removeAttribute("aria-describedby"),this.#_d.remove(),this.#_d=null}}destroy(){this.hide(),this.#T.unsubscribe(),this.#qd.removeEventListener("mouseenter",this.#ec,!0),this.#qd.removeEventListener("mouseleave",this.#Kt,!0)}#tc(){null!==this.#Jd&&(clearTimeout(this.#Jd),this.#Jd=null)}#ec=e=>{if(!this.#qd.closest?.(".ec-mobile")){var t=e.target,r=t.closest?.(".ec-entry");if(r){var i=r.dataset.entryId;if(i){var s=this.#rc(i);if(s&&(!this.#Qd||this.#Qd.id!==s.id)){this.hide(),this.#Qd=s;var n=s,a=r;this.#Jd=setTimeout(()=>{this.#Jd=null,this.#Qd?.id===n.id&&this.#ic(n,a)},350)}}}}};#Kt=e=>{var t=e.target,r=t.closest?.(".ec-entry");r&&this.hide()};async#ic(e,t){var r=this.#jl.viewMode$.getValue(),i=await this.#sc(e,r);if(i&&this.#Qd?.id===e.id){var s=document.createElement("div");s.classList.add("ec-tooltip"),s.setAttribute("role","tooltip"),s.id="ec-tooltip-"+e.id;var n=document.createElement("div");if(n.classList.add("ec-tooltip-title"),n.textContent=i.title,s.appendChild(n),i.rows&&i.rows.length>0)for(var a of i.rows){var o=document.createElement("div");o.classList.add("ec-tooltip-row");var l=document.createElement("span");l.classList.add("ec-tooltip-label"),l.textContent=a.label;var h=document.createElement("span");h.classList.add("ec-tooltip-value"),h.textContent=a.value,o.appendChild(l),o.appendChild(h),s.appendChild(o)}this.#qd.appendChild(s),this.#_d=s,t.setAttribute("aria-describedby",s.id),this.#nc(s,t)}}async#sc(e,t){var r=this.#jl.entryTooltip$.getValue();if(r)return r({entry:e,viewMode:t});var i=e.title??"",s=[],n=this.#jl.locale$.getValue().language;if(e.startTime&&e.endTime)if(e.isAllDay){var a=new Intl.DateTimeFormat(n,{dateStyle:"medium"});s.push({label:"",value:a.formatRange(e.startTime,e.endTime)})}else{var o=new Intl.DateTimeFormat(n,{dateStyle:"medium",timeStyle:"short"});s.push({label:"",value:o.formatRange(e.startTime,e.endTime)})}return e.location&&s.push({label:"",value:e.location}),{title:i,rows:s}}#nc(e,t){var r=this.#qd.getBoundingClientRect(),i=t.getBoundingClientRect(),s=i.bottom-r.top+8,n=i.left-r.left,a=e.offsetWidth,o=e.offsetHeight;s+o>r.height&&(s=i.top-r.top-o-8),n+a>r.width&&(n=r.width-a-8),n<8&&(n=8),s<8&&(s=8),e.style.top=s+"px",e.style.left=n+"px"}#rc(e){var t,r=this.#jl.viewMode$.getValue(),i=this.#jl.currentDate$.getValue(),s=this.#jl.firstDayOfWeek$.getValue();switch(r){case"day":(h=new Date(i)).setHours(0,0,0,0),(a=new Date(h)).setDate(a.getDate()+1),t={start:h,end:a};break;case"week":var n=(i.getDay()-s+7)%7;(h=new Date(i)).setDate(i.getDate()-n),h.setHours(0,0,0,0),(a=new Date(h)).setDate(h.getDate()+7),t={start:h,end:a};break;default:var a,o=i.getFullYear(),l=i.getMonth(),h=(n=(new Date(o,l,1).getDay()-s+7)%7,new Date(o,l,1-n));(a=new Date(h)).setDate(h.getDate()+42),t={start:h,end:a}}return this.#jl.data.getEntries(t).find(t=>t.id===e)??null}}class bo{#jl;#ac;constructor(e,t){this.#jl=e,this.#ac=t}async exportToImage(e){var t;try{t=(await import("html2canvas")).default??await import("html2canvas")}catch{throw new Error("html2canvas is required for image export. Install it with: npm install html2canvas")}var r=e?.format??"png",i=e?.quality??.92,s=e?.scale??2,n=e?.includeSidebar??!1,a=this.#ac.querySelector(".ec-wrapper");if(!a)throw new Error("Calendar is not rendered");if(!n){var o=this.#ac.querySelector(".ec-main");o&&(a=o)}var l=await t(a,{scale:s,useCORS:!0,logging:!1,backgroundColor:null}),h="jpeg"===r?"image/jpeg":"image/png";return new Promise((e,t)=>{l.toBlob(r=>{r?e(r):t(new Error("Failed to export image"))},h,"jpeg"===r?i:void 0)})}}const wo={A4:[210,297],A3:[297,420],Letter:[215.9,279.4],Legal:[215.9,355.6]};class To{#jl;#oc;constructor(e,t){this.#jl=e,this.#oc=new bo(e,t)}async exportToPdf(e){var t;try{t=await import("jspdf")}catch{throw new Error("jsPDF is required for PDF export. Install it with: npm install jspdf")}var r,i=e?.pageSize??"A4",s=e?.orientation??"landscape",n=e?.margin??{top:10,right:10,bottom:10,left:10},a=e?.scale??2,o=await this.#oc.exportToImage({format:"png",scale:a,includeSidebar:e?.includeSidebar??!1}),l=await(r=o,new Promise((e,t)=>{var i=new FileReader;i.onload=()=>e(i.result),i.onerror=t,i.readAsDataURL(r)})),[h,d]=wo[i]??wo.A4;"landscape"===s&&([h,d]=[d,h]);var c,u=h-n.left-n.right,g=d-n.top-n.bottom,m=e?.header?6:0,p=g-m-(e?.footer?6:0),v=await(c=l,new Promise((e,t)=>{var r=new Image;r.onload=()=>e(r),r.onerror=t,r.src=c})),f=v.width/v.height,y=u,b=y/f;b>p&&(y=(b=p)*f);var w=n.top+m,T=new t.jsPDF({orientation:s,format:i,unit:"mm"});if(T.addImage(l,"PNG",n.left,w,y,b),e?.header){var C="function"==typeof e.header?e.header(1,1):e.header;T.setFontSize(9),T.setTextColor(128),T.text(C,n.left,n.top+4)}if(e?.footer){var x="function"==typeof e.footer?e.footer(1,1):e.footer;T.setFontSize(9),T.setTextColor(128),T.text(x,n.left,d-n.bottom)}return T.output("blob")}}class Co{#mo;constructor(e){this.#mo=e}exportToIcs(e){var t=this.exportToIcsText(e);return new Blob([t],{type:"text/calendar;charset=utf-8"})}exportToIcsText(e){var t=e?.prodId??"-//TimelineKit//EventCalendar//EN",r=e?.includeCustomType??!0,i=e?.calendarIds??null,s=[];s.push("BEGIN:VCALENDAR"),s.push("VERSION:2.0"),s.push("PRODID:"+t),s.push("CALSCALE:GREGORIAN"),s.push("METHOD:PUBLISH");for(var n=[],a=0;a<this.#mo.calendarsLength;a++){var o=this.#mo.getCalendar(a);i&&!i.includes(o.id)||n.push(o)}1===n.length&&n[0].name&&s.push("X-WR-CALNAME:"+$o(n[0].name));for(var l=[],h=0;h<this.#mo.itemsLength;h++){var d=this.#mo.getItem(h);(!i||d.calendarId&&i.includes(d.calendarId))&&l.push(d)}for(var d of l){var c=Eo(d.type);s.push("BEGIN:"+c),s.push("UID:"+d.id),xo(s,d,r),d.recurrenceRule&&s.push("RRULE:"+d.recurrenceRule.toString());var u=d.recurrenceExceptions.filter(e=>e.isCancelled).map(e=>Do(e.originalStartTime));u.length>0&&s.push("EXDATE:"+u.join(",")),s.push("END:"+c);var g=d.recurrenceExceptions.filter(e=>!e.isCancelled&&e.overrides);for(var m of g)s.push("BEGIN:"+c),s.push("UID:"+d.id),s.push("RECURRENCE-ID:"+Do(m.originalStartTime)),ko(s,d,m,r),s.push("END:"+c)}return s.push("END:VCALENDAR"),function(e){var t=[];for(var r of e)if(r.length<=75)t.push(r);else{t.push(r.substring(0,75));for(var i=r.substring(75);i.length>0;){var s=i.substring(0,74);t.push(" "+s),i=i.substring(74)}}return t}(s).join("\r\n")+"\r\n"}}function xo(e,t,r){t.startTime&&(t.isAllDay?e.push("DTSTART;VALUE=DATE:"+So(t.startTime)):e.push("DTSTART:"+Do(t.startTime))),t.endTime&&(t.isAllDay?e.push("DTEND;VALUE=DATE:"+So(t.endTime)):e.push("DTEND:"+Do(t.endTime))),t.title&&e.push("SUMMARY:"+$o(t.title)),t.description&&e.push("DESCRIPTION:"+$o(t.description)),t.location&&e.push("LOCATION:"+$o(t.location)),"public"!==t.visibility&&e.push("CLASS:"+t.visibility.toUpperCase()),t instanceof Ta&&(t.isCompleted?(e.push("STATUS:COMPLETED"),t.completedAt&&e.push("COMPLETED:"+Do(t.completedAt))):e.push("STATUS:NEEDS-ACTION"),t.priority>0&&e.push("PRIORITY:"+t.priority)),t instanceof ba&&(t.organizer&&e.push("ORGANIZER:"+$o(t.organizer)),"needsAction"!==t.responseStatus&&e.push("X-TIMELINEKIT-RESPONSE:"+function(e){switch(e){case"accepted":return"ACCEPTED";case"tentative":return"TENTATIVE";case"declined":return"DECLINED";case"needsAction":return"NEEDS-ACTION"}}(t.responseStatus))),t instanceof ka&&(e.push("TRANSP:"+("free"===t.availabilityStatus?"TRANSPARENT":"OPAQUE")),e.push("X-TIMELINEKIT-AVAILABILITY:"+t.availabilityStatus.toUpperCase())),t.hasReminders&&(e.push("BEGIN:VALARM"),e.push("ACTION:DISPLAY"),e.push("DESCRIPTION:Reminder"),e.push("TRIGGER:-PT15M"),e.push("END:VALARM")),t.tags&&t.tags.length>0&&e.push("CATEGORIES:"+t.tags.map($o).join(",")),r&&e.push("X-TIMELINEKIT-TYPE:"+t.type),t.calendarId&&e.push("X-TIMELINEKIT-CALENDAR:"+t.calendarId),t.timeZone&&e.push("X-TIMELINEKIT-TIMEZONE:"+t.timeZone),e.push("DTSTAMP:"+Do(new Date))}function ko(e,t,r,i){var s=r.overrides,n=s.startTime??t.startTime,a=s.endTime??t.endTime,o=s.isAllDay??t.isAllDay;n&&(o?e.push("DTSTART;VALUE=DATE:"+So(n)):e.push("DTSTART:"+Do(n))),a&&(o?e.push("DTEND;VALUE=DATE:"+So(a)):e.push("DTEND:"+Do(a)));var l=void 0!==s.title?s.title:t.title;l&&e.push("SUMMARY:"+$o(l));var h=void 0!==s.description?s.description:t.description;h&&e.push("DESCRIPTION:"+$o(h));var d=void 0!==s.location?s.location:t.location;d&&e.push("LOCATION:"+$o(d)),i&&e.push("X-TIMELINEKIT-TYPE:"+t.type),e.push("DTSTAMP:"+Do(new Date))}function Eo(e){return"task"===e?"VTODO":"VEVENT"}function Do(e){return`${e.getUTCFullYear()}${String(e.getUTCMonth()+1).padStart(2,"0")}${String(e.getUTCDate()).padStart(2,"0")}T${String(e.getUTCHours()).padStart(2,"0")}${String(e.getUTCMinutes()).padStart(2,"0")}${String(e.getUTCSeconds()).padStart(2,"0")}Z`}function So(e){return`${e.getFullYear()}${String(e.getMonth()+1).padStart(2,"0")}${String(e.getDate()).padStart(2,"0")}`}function $o(e){return e.replace(/\\/g,"\\\\").replace(/;/g,"\\;").replace(/,/g,"\\,").replace(/\n/g,"\\n")}class Ro{importFromIcs(e,t){var r=t?.calendarId??null,i=t?.createCalendar??!0,s=t?.defaultType??"appointment",n=[],a=0,o=function(e){return e.replace(/\r?\n[ \t]/g,"")}(e),l=o.split(/\r?\n/).filter(e=>e.length>0),h=null;for(var d of l)d.startsWith("X-WR-CALNAME:")&&(h=Ao(d.substring(13)));var c=function(e){var t=[],r=0;for(;r<e.length;){var i=e[r];if("BEGIN:VEVENT"===i||"BEGIN:VTODO"===i){var s="BEGIN:VEVENT"===i?"VEVENT":"VTODO",n="END:"+s,a=new Map,o=!1,l=[],h=!1;for(r++;r<e.length&&e[r]!==n;)if("BEGIN:VALARM"!==e[r])if("END:VALARM"!==e[r])if(h)r++;else{var d=Mo(e[r]);if(d)if("EXDATE"===d.name){var c=d.pv.value.split(",").map(e=>Po(e.trim()));l.push(...c.filter(e=>null!==e))}else a.set(d.name,d.pv);r++}else h=!1,r++;else h=!0,o=!0,r++;r++;var u=a.get("UID")?.value??"";if(!u)continue;var g=a.get("RECURRENCE-ID")?.value??null;t.push({type:s,uid:u,properties:a,recurrenceId:g,hasValarm:o,exdates:l})}else r++}return t}(l),u=new Map,g=[];for(var m of c)if(m.recurrenceId)g.push(m);else try{var p=Lo(m,r,s);u.set(m.uid,p)}catch(e){n.push(`Skipped UID ${m.uid}: ${e.message}`),a++}for(var v of g){var f=u.get(v.uid);if(f)try{var y=Io(v,f);f.setException(y)}catch(e){n.push(`Skipped exception for UID ${v.uid}: ${e.message}`),a++}else n.push(`Skipped exception for unknown UID ${v.uid}`),a++}var b=null;return i&&((b=new oa(null)).name=h??"Imported Calendar",b.isDefault=!0),{calendar:b,items:Array.from(u.values()),warnings:n,skippedCount:a}}}function Mo(e){var t=function(e){for(var t=!1,r=0;r<e.length;r++){var i=e[r];if('"'===i)t=!t;else if(":"===i&&!t)return r}return-1}(e);if(t<0)return null;for(var r=e.substring(0,t),i=e.substring(t+1),s=r.split(";"),n=s[0].toUpperCase(),a=new Map,o=1;o<s.length;o++){var l=s[o].indexOf("=");l>0&&a.set(s[o].substring(0,l).toUpperCase(),s[o].substring(l+1))}return{name:n,pv:{value:i,params:a}}}function Lo(e,t,r){var i,s,n=e.properties,a=n.get("X-TIMELINEKIT-TYPE")?.value;i=a&&(s=a,Vo.has(s))?a:"VTODO"===e.type?"task":function(e,t){return e.has("ORGANIZER")?"meeting":e.has("X-TIMELINEKIT-AVAILABILITY")?"availabilityBlock":t}(n,r);var o=function(e,t){switch(e){case"meeting":return new ba(t);case"appointment":return new wa(t);case"task":return new Ta(t);case"deadline":return new Ca(t);case"holiday":return new xa(t);case"availabilityBlock":return new ka(t);case"birthday":return new Ea(t);case"reminder":return new Da(t);case"resourceBooking":return new Sa(t)}}(i,e.uid),l=t??n.get("X-TIMELINEKIT-CALENDAR")?.value??null;o.calendarId=l;var h=n.get("DTSTART"),d=n.get("DTEND"),c="DATE"===h?.params.get("VALUE");h&&(o.startTime=Po(h.value,h.params.get("TZID"))),d&&(o.endTime=Po(d.value,d.params.get("TZID"))),o.isAllDay=c;var u=h?.params.get("TZID")??n.get("X-TIMELINEKIT-TIMEZONE")?.value??null;u&&(o.timeZone=u);var g=n.get("SUMMARY");g&&(o.title=Ao(g.value));var m=n.get("DESCRIPTION");m&&(o.description=Ao(m.value));var p=n.get("LOCATION");p&&(o.location=Ao(p.value));var v=n.get("CLASS");if(v){var f=v.value.toLowerCase();"private"!==f&&"confidential"!==f||(o.visibility=f)}var y=n.get("CATEGORIES");y&&(o.tags=y.value.split(",").map(e=>Ao(e.trim())));var b=n.get("RRULE");for(var w of(b&&(o.recurrenceRule=ha.fromString(b.value)),e.exdates))o.cancelOccurrence(w);if(e.hasValarm&&(o.hasReminders=!0),o instanceof Ta){var T=n.get("STATUS");"COMPLETED"===T?.value&&(o.isCompleted=!0);var C=n.get("COMPLETED");C&&(o.completedAt=Po(C.value));var x=n.get("PRIORITY");x&&(o.priority=parseInt(x.value,10)||0)}if(o instanceof ba){var k=n.get("ORGANIZER");k&&(o.organizer=Ao(k.value));var E=n.get("X-TIMELINEKIT-RESPONSE");E&&(o.responseStatus=function(e){switch(e.toUpperCase()){case"ACCEPTED":return"accepted";case"TENTATIVE":return"tentative";case"DECLINED":return"declined";default:return"needsAction"}}(E.value))}if(o instanceof ka){var D=n.get("X-TIMELINEKIT-AVAILABILITY");D&&(o.availabilityStatus=D.value.toLowerCase())}return o.externalSource="ical",o}function Io(e,t){var r=e.properties,i=Po(e.recurrenceId);if(!i)throw new Error("Invalid RECURRENCE-ID");var s={},n=r.get("DTSTART");n&&(s.startTime=Po(n.value,n.params.get("TZID"))??void 0);var a=r.get("DTEND");a&&(s.endTime=Po(a.value,a.params.get("TZID"))??void 0);var o=r.get("SUMMARY");if(o){var l=Ao(o.value);l!==t.title&&(s.title=l)}var h=r.get("DESCRIPTION");if(h){var d=Ao(h.value);d!==t.description&&(s.description=d)}var c=r.get("LOCATION");if(c){var u=Ao(c.value);u!==t.location&&(s.location=u)}var g="DATE"===n?.params.get("VALUE");return g!==t.isAllDay&&(s.isAllDay=g),{originalStartTime:i,isCancelled:!1,overrides:s}}function Po(e,t){if(!e)return null;var r=e.match(/^(\d{4})(\d{2})(\d{2})$/);if(r)return new Date(parseInt(r[1]),parseInt(r[2])-1,parseInt(r[3]));var i=e.match(/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(Z)?$/);if(i){var s=parseInt(i[1]),n=parseInt(i[2])-1,a=parseInt(i[3]),o=parseInt(i[4]),l=parseInt(i[5]),h=parseInt(i[6]);return"Z"===i[7]?new Date(Date.UTC(s,n,a,o,l,h)):new Date(s,n,a,o,l,h)}return null}function Ao(e){return e.replace(/\\n/gi,"\n").replace(/\\,/g,",").replace(/\\;/g,";").replace(/\\\\/g,"\\")}var Ho,Vo=new Set(["meeting","appointment","task","deadline","holiday","availabilityBlock","birthday","reminder","resourceBooking"]);class Bo{#wt;constructor(e){this.#wt=e}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.includeCalendars??!1,s=this.#wt.locale$.getValue(),n=[];r&&n.push($s(["Calendar",s.columns.name,s.labels.type,s.labels.start,s.labels.end,s.calendar.allDay,"Location","Description"],t));var a=this.#lc(e?.calendarIds);for(var o of a)n.push($s([this.#hc(o.calendarId),o.title??"",o.type,this.#bo(o.startTime),this.#bo(o.endTime),o.isAllDay?"Yes":"No",o.location??"",o.description??""],t));var l=n.join("\n");if(i){l+="\n\n",r&&(l+=$s([s.columns.name],t)+"\n");for(var h=0;h<this.#wt.data.calendarsLength;h++){l+=$s([this.#wt.data.getCalendar(h).name],t)+"\n"}}return l}async exportToExcel(e){var t=await Ls(),r=this.#wt.locale$.getValue(),i=e?.eventsSheetName??r.export.eventsSheetName,s=e?.includeCalendarsSheet??!0,n=e?.includeFormatting??!0,a=new t.Workbook;return this.#wo(a,i,n,e?.calendarIds),s&&this.#wt.data.calendarsLength>0&&this.#dc(a,n),Is(a)}#wo(e,t,r,i){var s=this.#wt.locale$.getValue(),n=e.addWorksheet(t);n.columns=[{header:"Calendar",key:"calendar",width:20},{header:s.columns.name,key:"title",width:30},{header:s.labels.type,key:"type",width:15},{header:s.labels.start,key:"start",width:20},{header:s.labels.end,key:"end",width:20},{header:s.calendar.allDay,key:"allDay",width:10},{header:"Location",key:"location",width:20},{header:"Description",key:"description",width:30}],r&&Rs(n);var a=this.#lc(i);for(var o of a)n.addRow({calendar:this.#hc(o.calendarId),title:o.title??"",type:o.type,start:this.#bo(o.startTime),end:this.#bo(o.endTime),allDay:o.isAllDay?"Yes":"No",location:o.location??"",description:o.description??""});r&&Ms(n)}#dc(e,t){var r=this.#wt.locale$.getValue(),i=e.addWorksheet(r.export.calendarsSheetName);i.columns=[{header:r.columns.name,key:"name",width:25}],t&&Rs(i);for(var s=0;s<this.#wt.data.calendarsLength;s++){var n=this.#wt.data.getCalendar(s);i.addRow({name:n.name})}t&&Ms(i)}#lc(e){for(var t=[],r=0;r<this.#wt.data.itemsLength;r++){var i=this.#wt.data.getItem(r);e&&i.calendarId&&!e.includes(i.calendarId)||t.push(i)}return t.sort((e,t)=>(e.startTime?.getTime()??0)-(t.startTime?.getTime()??0)),t}#hc(e){if(!e)return"";var t=this.#wt.data.getCalendarById(e);return t?.name??""}#bo(e){return e?Zt(e,this.#wt.locale$.getValue().language,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):""}}class Fo{#nr;#cc;#uc;#ql=-1;#gc=0;#mc=0;#l=0;#pc=!1;#vc;#fc=null;#yc=null;#bc=null;static SWIPE_THRESHOLD=50;static MAX_VERTICAL_RATIO=.5;static MAX_DURATION=500;static PEEK_MAX=30;constructor(e,t,r){this.#nr=e,this.#cc=t,this.#uc=r,this.#vc=e=>this.#wc(e),e.addEventListener("pointerdown",this.#vc)}destroy(){this.#nr.removeEventListener("pointerdown",this.#vc),this.#rh(),this.#nr.style.transform="",this.#nr.classList.remove("ec-swipe-transition")}#wc(e){"touch"===e.pointerType&&(this.#ql>=0||(this.#ql=e.pointerId,this.#gc=e.clientX,this.#mc=e.clientY,this.#l=Date.now(),this.#pc=!1,this.#fc=e=>this.#nh(e),this.#yc=e=>this.#ah(e),this.#bc=e=>this.#oh(e),document.addEventListener("pointermove",this.#fc),document.addEventListener("pointerup",this.#yc),document.addEventListener("pointercancel",this.#bc)))}#nh(e){if(e.pointerId===this.#ql&&!this.#pc){var t=e.clientX-this.#gc,r=e.clientY-this.#mc;if(Math.abs(r)>2*Math.abs(t)&&Math.abs(r)>10)this.#Tc();else{var i=Math.sign(t)*Math.min(.3*Math.abs(t),Ho.PEEK_MAX);this.#nr.style.transform="translateX("+i+"px)"}}}#ah(e){if(e.pointerId===this.#ql)if(this.#rh(),this.#pc)this.#gh();else if(this.#Cc(),document.body.classList.contains("ec-dragging"))this.#gh();else{var t=e.clientX-this.#gc,r=e.clientY-this.#mc,i=Date.now()-this.#l,s=Math.abs(t),n=Math.abs(r);s>=Ho.SWIPE_THRESHOLD&&n<=s*Ho.MAX_VERTICAL_RATIO&&i<=Ho.MAX_DURATION&&(t<0?this.#cc():this.#uc()),this.#gh()}}#oh(e){e.pointerId===this.#ql&&this.#Tc()}#Tc(){this.#rh(),this.#pc=!0,this.#Cc(),this.#gh()}#Cc(){this.#nr.style.transform&&(this.#nr.classList.add("ec-swipe-transition"),this.#nr.style.transform="",setTimeout(()=>{this.#nr.classList.remove("ec-swipe-transition")},200))}#gh(){this.#ql=-1}#rh(){this.#fc&&(document.removeEventListener("pointermove",this.#fc),this.#fc=null),this.#yc&&(document.removeEventListener("pointerup",this.#yc),this.#yc=null),this.#bc&&(document.removeEventListener("pointercancel",this.#bc),this.#bc=null)}}Ho=Fo;class zo{#jl;#ac;#Xn;#xc;#kc;#Ec;#Dc;#Sc;#$c;#Rc;#Mc;#Lc;#Ic;#Pc;#qa;#Za;#Ga;#Br;#oc;#Ac;#Hc;#Vc;#T=new r;#Bc=null;#Fc=null;#Jn=null;#zc=!1;#Oc=null;#Nc=null;#Wc=768;#Uc;constructor(e){this.#jl=new Ka,this.#ac=e,e.classList.add("ec-host"),this.#Xn=document.createElement("div"),this.#Xn.classList.add("ec-wrapper"),this.#Xn.style.visibility="hidden",this.#Xn.tabIndex=0,this.#Xn.setAttribute("role","application"),e.appendChild(this.#Xn),this.#xc=document.createElement("div"),this.#xc.classList.add("ec-sidebar"),this.#xc.setAttribute("role","complementary"),this.#Xn.appendChild(this.#xc),this.#kc=document.createElement("div"),this.#kc.classList.add("ec-main"),this.#kc.setAttribute("role","main"),this.#Xn.appendChild(this.#kc),this.#Ec=document.createElement("div"),this.#Ec.classList.add("ec-toolbar"),this.#Ec.setAttribute("role","toolbar"),this.#kc.appendChild(this.#Ec),this.#Dc=document.createElement("div"),this.#Dc.classList.add("ec-view-container"),this.#Dc.setAttribute("role","region"),this.#kc.appendChild(this.#Dc),this.#jc(),this.#Sc=new po(this.#jl,this.#xc),this.#$c=new vo(this.#jl,this.#xc),this.#Rc=new no(this.#jl,this.#Dc),this.#Mc=new uo(this.#jl,this.#Dc),this.#Lc=new go(this.#jl,this.#Dc),this.#Ic=new mo(this.#jl,this.#Dc),this.#Pc=this.#Mc,this.#qa=new Za(this.#jl),this.#Ga=new fo(this.#jl),this.#Br=new yo(this.#jl,this.#Dc),this.#oc=new bo(this.#jl,this.#ac),this.#Ac=new To(this.#jl,this.#ac),this.#Hc=new Co(this.#jl.data),this.#Vc=new Ro,this.#T.add(this.#jl.theme$.subscribe(()=>{this.#Ua(),this.#Wa()})),this.#Ua(),this.#Wa(),this.#T.add(this.#jl.viewMode$.subscribe(e=>{this.#Xc(e),this.#Yc(),this.#Kc()})),this.#T.add(this.#jl.sidebarVisible$.subscribe(e=>{this.#zc?e?this.#Zc():this.#Gc():this.#xc.style.display=e?"":"none"})),this.#T.add(this.#jl.currentDate$.subscribe(()=>{this.#Kc()})),this.#T.add(this.#jl.locale$.subscribe(()=>{this.#Kc(),this.#jc()})),this.#Za=new Ns(()=>this.save(),e=>this.#qc(e)),this.#T.add(this.#jl.data.itemAdded$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.itemChanged$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.itemRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.calendarAdded$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.calendarChanged$.subscribe(()=>this.#Za.requestSnapshot())),this.#T.add(this.#jl.data.calendarRemoved$.subscribe(()=>this.#Za.requestSnapshot())),this.#Za.initialize(),this.#T.add(this.#jl.data.itemRemoved$.subscribe(e=>{var t=this.#jl.selectedEntries$.getValue(),r=t.filter(t=>t.item.id!==e.item.id);r.length!==t.length&&this.#jl.selectedEntries$.next(r)})),this.#Xn.addEventListener("keydown",e=>this.#ja(e),!0),this.#_c(),this.#T.add(Vt().licenseChanged$.subscribe(()=>this.#_c())),this.#T.add(this.#jl.theme$.subscribe(()=>this.#_c())),this.#Jn=new ResizeObserver(e=>{var t=e[0].contentRect.width;this.#Jc(t<this.#Wc)}),this.#Jn.observe(this.#Xn),this.#Uc=new Fo(this.#Dc,()=>this.next(),()=>this.previous()),this.#Xc(this.#jl.viewMode$.getValue()),this.#Xn.style.visibility=""}get data(){return this.#jl.data}get events(){return this.#qa}get settings(){return this.#jl.settings}get viewMode(){return this.#jl.viewMode$.getValue()}set viewMode(e){this.#jl.viewMode$.next(e)}get currentDate(){return this.#jl.currentDate$.getValue()}set currentDate(e){this.#jl.currentDate$.next(e)}get selectedEntries(){return this.#jl.selectedEntries$.getValue()}set selectedEntries(e){this.#jl.selectedEntries$.next(e)}get selectedEntry(){var e=this.#jl.selectedEntries$.getValue();return e.length>0?e[e.length-1]:null}set selectedEntry(e){this.#jl.selectedEntries$.next(e?[e]:[])}get canEdit(){return this.#jl.canEdit$.getValue()}set canEdit(e){this.#jl.canEdit$.next(e)}get sidebarVisible(){return this.#jl.sidebarVisible$.getValue()}set sidebarVisible(e){this.#jl.sidebarVisible$.next(e)}get entryRendering(){return this.#jl.entryRendering$.getValue()}set entryRendering(e){this.#jl.entryRendering$.next(e)}get entryTooltip(){return this.#jl.entryTooltip$.getValue()}set entryTooltip(e){this.#jl.entryTooltip$.next(e)}async copyEntries(e){await this.#Ga.copy(e??this.selectedEntries)}async cutEntries(e){this.#Za.beginBatch(),await this.#Ga.cut(e??this.selectedEntries),this.#Za.endBatch()}async pasteEntries(){this.#Za.beginBatch(),await this.#Ga.paste(this.currentDate),this.#Za.endBatch()}async exportToImage(e){return this.#oc.exportToImage(e)}async exportToPdf(e){return this.#Ac.exportToPdf(e)}exportToIcs(e){return this.#Hc.exportToIcs(e)}exportToIcsText(e){return this.#Hc.exportToIcsText(e)}importFromIcs(e,t){if(!e||"string"!=typeof e)throw new Error("importFromIcs() requires a non-empty string argument.");if(!e.includes("BEGIN:VCALENDAR"))throw new Error("Invalid iCalendar format: missing BEGIN:VCALENDAR.");return this.#Vc.importFromIcs(e,t)}exportToCsv(e){return new Bo(this.#jl).exportToCsv(e)}async exportToExcel(e){return new Bo(this.#jl).exportToExcel(e)}static async checkExportDependencies(){var e={html2canvas:!1,jspdf:!1,exceljs:!1};try{await import("html2canvas"),e.html2canvas=!0}catch{}try{await import("jspdf"),e.jspdf=!0}catch{}try{await import("exceljs"),e.exceljs=!0}catch{}return e}today(){this.#jl.currentDate$.next(Bt())}next(){var e=new Date(this.currentDate);switch(this.viewMode){case"month":e.setMonth(e.getMonth()+1);break;case"week":e.setDate(e.getDate()+7);break;case"day":e.setDate(e.getDate()+1);break;case"agenda":e.setDate(e.getDate()+this.#jl.agendaDays$.getValue())}this.#jl.currentDate$.next(e)}previous(){var e=new Date(this.currentDate);switch(this.viewMode){case"month":e.setMonth(e.getMonth()-1);break;case"week":e.setDate(e.getDate()-7);break;case"day":e.setDate(e.getDate()-1);break;case"agenda":e.setDate(e.getDate()-this.#jl.agendaDays$.getValue())}this.#jl.currentDate$.next(e)}goToDate(e){this.#jl.currentDate$.next(e)}undo(){this.#Za.undo(),this.#qa.undone$.next()}redo(){this.#Za.redo(),this.#qa.redone$.next()}get canUndo$(){return this.#Za.canUndo$}get canRedo$(){return this.#Za.canRedo$}save(){for(var e={calendars:[],items:[],currentDate:this.currentDate.toISOString(),viewMode:this.viewMode},t=0;t<this.#jl.data.calendarsLength;t++)e.calendars.push(this.#jl.data.getCalendar(t).toAny());for(var r=0;r<this.#jl.data.itemsLength;r++)e.items.push(this.#jl.data.getItem(r).toAny());return JSON.stringify(e)}load(e){if(!e||"string"!=typeof e)throw new Error("load() requires a non-empty JSON string.");try{this.#qc(e)}catch(e){throw new Error(`Failed to load calendar state: ${e.message}`)}this.#Za.initialize()}destroy(){this.#Uc.destroy(),this.#Jn?.disconnect(),this.#T.unsubscribe(),this.#qa.destroy(),this.#Br.destroy(),this.#Sc.destroy(),this.#$c.destroy(),this.#Rc.destroy(),this.#Mc.destroy(),this.#Lc.destroy(),this.#Ic.destroy(),this.#Qc(),this.#eu(),this.#Xn.remove(),this.#ac.classList.remove("ec-host")}#Xc(e){switch(this.#Rc.hide(),this.#Mc.hide(),this.#Lc.hide(),this.#Ic.hide(),e){case"month":this.#Pc=this.#Rc;break;case"week":this.#Pc=this.#Mc;break;case"day":this.#Pc=this.#Lc;break;case"agenda":this.#Pc=this.#Ic}this.#Pc.show()}#tu=null;#ru=new Map;#iu=null;#su=null;#jc(){this.#Ec.innerHTML="",this.#ru.clear();var e=this.#jl.locale$.getValue().calendar;this.#Xn.setAttribute("aria-label",e?.ariaCalendar??"Event Calendar"),this.#xc.setAttribute("aria-label",e?.ariaSidebar??"Calendar sidebar"),this.#Ec.setAttribute("aria-label",e?.ariaNavigation??"Navigation"),this.#Oc=document.createElement("button"),this.#Oc.classList.add("ec-toolbar-btn","ec-toolbar-sidebar-toggle"),this.#Oc.innerHTML="☰",this.#Oc.setAttribute("aria-label",e?.ariaSidebar??"Calendar sidebar"),this.#Oc.addEventListener("click",()=>this.#nu()),this.#Ec.appendChild(this.#Oc);var t=document.createElement("div");t.classList.add("ec-toolbar-nav"),t.setAttribute("role","group"),t.setAttribute("aria-label",e?.ariaNavigation??"Navigation");var r=document.createElement("button");r.classList.add("ec-toolbar-btn","ec-toolbar-nav-btn"),r.textContent="‹",r.addEventListener("click",()=>this.previous()),this.#iu=r,t.appendChild(r);var i=document.createElement("button");i.classList.add("ec-toolbar-btn","ec-toolbar-today"),i.textContent=e?.today??"Today",i.setAttribute("aria-label",e?.ariaGoToToday??"Go to today"),i.addEventListener("click",()=>this.today()),t.appendChild(i);var s=document.createElement("button");s.classList.add("ec-toolbar-btn","ec-toolbar-nav-btn"),s.textContent="›",s.addEventListener("click",()=>this.next()),this.#su=s,t.appendChild(s),this.#tu=document.createElement("div"),this.#tu.classList.add("ec-toolbar-title"),this.#tu.setAttribute("aria-live","polite"),this.#tu.setAttribute("aria-atomic","true"),this.#Ec.appendChild(this.#tu),this.#Kc(),this.#Ec.appendChild(t);var n=document.createElement("div");n.classList.add("ec-toolbar-views"),n.setAttribute("role","group"),n.setAttribute("aria-label",e?.ariaViewMode??"View mode");var a=[{mode:"month",label:e?.month??"Month"},{mode:"week",label:e?.week??"Week"},{mode:"day",label:e?.day??"Day"},{mode:"agenda",label:e?.agenda??"Agenda"}];for(var o of a){var l=document.createElement("button");l.classList.add("ec-toolbar-btn","ec-toolbar-view-btn"),l.textContent=o.label,l.dataset.viewMode=o.mode,l.addEventListener("click",e=>{var t=e.currentTarget;this.viewMode=t.dataset.viewMode}),this.#ru.set(o.mode,l),n.appendChild(l)}this.#Ec.appendChild(n),this.#Yc(),this.#au()}#Kc(){if(this.#tu){var e=this.currentDate,t=this.#jl.locale$.getValue().language,r=this.viewMode;if("day"===r){var i=new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric"});this.#tu.textContent=i.format(e)}else if("week"===r&&this.#Pc){var s=this.#Pc.getVisibleRange(e);(n=new Date(s.end)).setDate(n.getDate()-1);i=new Intl.DateTimeFormat(t,{year:"numeric",month:"long",day:"numeric"});this.#tu.textContent=i.formatRange(s.start,n)}else if("agenda"===r&&this.#Pc){var n;s=this.#Pc.getVisibleRange(e);(n=new Date(s.end)).setDate(n.getDate()-1);i=new Intl.DateTimeFormat(t,{year:"numeric",month:"short",day:"numeric"});this.#tu.textContent=i.formatRange(s.start,n)}else{i=new Intl.DateTimeFormat(t,{year:"numeric",month:"long"});this.#tu.textContent=i.format(e)}}}#Yc(){var e=this.viewMode;for(var[t,r]of this.#ru){var i=t===e;r.classList.toggle("ec-active",i),r.setAttribute("aria-pressed",String(i))}this.#au()}#au(){var e=this.#jl.locale$.getValue().calendar,t=e?.ariaPrevious??"Previous",r=e?.ariaNext??"Next",i="";switch(this.viewMode){case"month":i=e?.month??"Month";break;case"week":i=e?.week??"Week";break;case"day":i=e?.day??"Day";break;case"agenda":i=e?.agenda??"Agenda"}this.#iu&&this.#iu.setAttribute("aria-label",t+" "+i.toLowerCase()),this.#su&&this.#su.setAttribute("aria-label",r+" "+i.toLowerCase()),this.#Dc.setAttribute("aria-label",i)}#Ua(){var e=this.#jl.theme$.getValue(),t=this.#Xn.style;t.setProperty("--ec-toolbar-bg",e.toolbar.backgroundColor),t.setProperty("--ec-toolbar-text",e.toolbar.textColor),t.setProperty("--ec-toolbar-border",e.toolbar.borderColor),t.setProperty("--ec-toolbar-btn-color",e.toolbar.buttonColor),t.setProperty("--ec-toolbar-btn-hover-bg",e.toolbar.buttonHoverBackgroundColor),t.setProperty("--ec-toolbar-active-bg",e.toolbar.activeViewButtonBackgroundColor),t.setProperty("--ec-toolbar-active-text",e.toolbar.activeViewButtonTextColor),t.setProperty("--ec-toolbar-height",e.toolbar.height+"px"),t.setProperty("--ec-header-bg",e.header.backgroundColor),t.setProperty("--ec-header-text",e.header.textColor),t.setProperty("--ec-header-border",e.header.borderColor),t.setProperty("--ec-header-weekend-text",e.header.weekendTextColor),t.setProperty("--ec-tg-today-text",e.header.todayBackgroundColor),t.setProperty("--ec-tg-today-circle",e.header.todayBackgroundColor),t.setProperty("--ec-tg-today-circle-text",e.header.todayTextColor),t.setProperty("--ec-content-bg",e.content.backgroundColor),t.setProperty("--ec-content-text",e.content.textColor),t.setProperty("--ec-grid-line",e.content.gridLineColor),t.setProperty("--ec-today-bg",e.content.todayBackgroundColor),t.setProperty("--ec-weekend-bg",e.content.weekendBackgroundColor),t.setProperty("--ec-other-month-bg",e.content.otherMonthBackgroundColor),t.setProperty("--ec-other-month-text",e.content.otherMonthTextColor),t.setProperty("--ec-tg-slot-hour-border",e.content.hourLineColor),t.setProperty("--ec-tg-slot-border",e.content.halfHourLineColor),t.setProperty("--ec-tg-now-line",e.content.currentTimeLineColor),t.setProperty("--ec-tg-now-line-height",e.content.currentTimeLineHeight+"px"),t.setProperty("--ec-day-header-height",e.content.dayHeaderHeight+"px"),t.setProperty("--ec-entry-height",e.content.entryHeight+"px"),t.setProperty("--ec-entry-gap",e.content.entryGap+"px"),t.setProperty("--ec-entry-radius",e.content.entryBorderRadius+"px"),t.setProperty("--ec-entry-accent-width",e.content.entryAccentBorderWidth+"px"),t.setProperty("--ec-declined-opacity",String(e.content.declinedOpacity)),t.setProperty("--ec-more-text",e.content.moreTextColor),t.setProperty("--ec-hover-bg",e.content.hoverBackgroundColor),t.setProperty("--ec-selected-outline",e.content.selectedEntryOutlineColor),t.setProperty("--ec-drag-highlight",e.content.dragHighlightColor),t.setProperty("--ec-scrollbar-thumb",e.content.scrollbarThumbColor),t.setProperty("--ec-scrollbar-track",e.content.scrollbarTrackColor),t.setProperty("--ec-focus-outline",e.content.focusOutlineColor),t.setProperty("--ec-focus-outline-width",e.content.focusOutlineWidth+"px"),t.setProperty("--ec-focus-outline-offset",e.content.focusOutlineOffset+"px"),t.setProperty("--ec-agenda-day-header-bg",e.content.agendaDayHeaderBackgroundColor),t.setProperty("--ec-agenda-day-header-text",e.content.agendaDayHeaderTextColor),t.setProperty("--ec-agenda-entry-height",e.content.agendaEntryHeight+"px"),t.setProperty("--ec-agenda-entry-gap",e.content.agendaEntryGap+"px"),t.setProperty("--ec-agenda-entry-hover-bg",e.content.agendaEntryHoverBackgroundColor),t.setProperty("--ec-agenda-empty-text",e.content.agendaEmptyTextColor),t.setProperty("--ec-agenda-time-width",e.content.agendaTimeWidth+"px");var r=e.content.entryColors[0];r&&(t.setProperty("--ec-tg-entry-accent",r.color2),t.setProperty("--ec-entry-chip-bg",r.chipBackgroundColor),t.setProperty("--ec-entry-chip-text",r.chipTextColor)),t.setProperty("--ec-sidebar-bg",e.sidebar.backgroundColor),t.setProperty("--ec-sidebar-text",e.sidebar.textColor),t.setProperty("--ec-sidebar-border",e.sidebar.borderColor),t.setProperty("--ec-sidebar-width",e.sidebar.width+"px"),t.setProperty("--ec-allday-bg",e.allDay.backgroundColor),t.setProperty("--ec-allday-border",e.allDay.borderColor),t.setProperty("--ec-allday-text",e.allDay.textColor),t.setProperty("--ec-tg-allday-min-height",e.allDay.minHeight+"px"),t.setProperty("--ec-tg-allday-max-height",e.allDay.maxHeight+"px"),t.setProperty("--ec-tg-gutter-bg",e.timeGutter.backgroundColor),t.setProperty("--ec-tg-gutter-text",e.timeGutter.textColor),t.setProperty("--ec-tg-gutter-border",e.timeGutter.borderColor),t.setProperty("--ec-tg-gutter-width",e.timeGutter.width+"px"),t.setProperty("--ec-mini-today-bg",e.sidebar.miniCalendarTodayBackgroundColor),t.setProperty("--ec-mini-today-text",e.sidebar.miniCalendarTodayTextColor),t.setProperty("--ec-mini-today-dot",e.sidebar.miniCalendarTodayDotColor),t.setProperty("--ec-mini-selected-bg",e.sidebar.miniCalendarSelectedBackgroundColor),t.setProperty("--ec-mini-selected-text",e.sidebar.miniCalendarSelectedTextColor),t.setProperty("--ec-mini-other-month-text",e.sidebar.miniCalendarOtherMonthTextColor),t.setProperty("--ec-mini-weekend-text",e.sidebar.miniCalendarWeekendTextColor),t.setProperty("--ec-mini-hover-bg",e.sidebar.miniCalendarHoverBackgroundColor),t.setProperty("--ec-mini-dot-color",e.sidebar.miniCalendarDayWithEventsColor),t.setProperty("--ec-cal-list-header-text",e.sidebar.calendarListHeaderTextColor),this.#Xn.setAttribute("data-color-scheme",e.colorScheme)}#Wa(){var e=this.#jl.theme$.getValue().font,t=e.name.indexOf(" ")>0?`"${e.name}"`:e.name;this.#Xn.style.fontFamily=t,this.#Xn.style.fontSize=e.size+"pt"}#Jc(e){if(this.#zc!==e)if(this.#zc=e,this.#Xn.classList.toggle("ec-mobile",e),e)"week"===this.viewMode&&(this.viewMode="day"),this.#xc.style.display="",this.#Gc();else{this.#Gc();var t=this.#jl.sidebarVisible$.getValue();this.#xc.style.display=t?"":"none"}}#nu(){this.#xc.classList.contains("ec-sidebar-open")?this.#Gc():this.#Zc()}#Zc(){this.#xc.classList.add("ec-sidebar-open"),this.#ou()}#Gc(){this.#xc.classList.remove("ec-sidebar-open"),this.#Qc()}#ou(){if(!this.#Nc){var e=document.createElement("div");e.classList.add("ec-sidebar-backdrop"),e.addEventListener("click",()=>this.#Gc()),this.#Xn.insertBefore(e,this.#kc),this.#Nc=e}}#Qc(){this.#Nc?.remove(),this.#Nc=null}#_c(){if(Vt().showWatermarkFor("calendar")){var e=this.#jl.theme$.getValue().colorScheme;this.#eu(),this.#Bc=Li(e),this.#Dc.appendChild(this.#Bc),this.#Fc=new MutationObserver(()=>{this.#Bc&&!this.#Dc.contains(this.#Bc)&&this.#Dc.appendChild(this.#Bc)}),this.#Fc.observe(this.#Dc,{childList:!0})}else this.#eu()}#eu(){this.#Fc?.disconnect(),this.#Fc=null,this.#Bc?.remove(),this.#Bc=null}#ja(e){if(e.ctrlKey||e.metaKey)switch(e.key){case"z":case"Z":return e.preventDefault(),void(e.shiftKey?this.redo():this.undo());case"y":return e.preventDefault(),void this.redo();case"c":return e.preventDefault(),void this.copyEntries();case"x":if(!this.canEdit)return;return e.preventDefault(),void this.cutEntries();case"v":if(!this.canEdit)return;return e.preventDefault(),void this.pasteEntries()}switch(e.key){case"Delete":this.#lu(),e.preventDefault();break;case"Escape":this.#jl.selectedEntries$.getValue().length>0&&(this.#jl.selectedEntries$.next([]),e.preventDefault())}}#lu(){var e=this.#jl.selectedEntries$.getValue();if(0!==e.length&&this.canEdit){for(var t of e){var r=t.item,i=r.isRecurring,s={entry:t,isRecurring:i,scope:"all",cancel:!1};if(this.#jl.entryDeleting$.next(s),!s.cancel)if(i)Ma.applyDelete(r,t,s.scope).removeMaster&&this.#jl.data.removeItem(r);else this.#jl.data.removeItem(r)}this.#jl.selectedEntries$.next([])}}#qc(e){var t=JSON.parse(e);if(this.#jl.data.clear(),t.calendars)for(var r of t.calendars)this.#jl.data.addCalendar(oa.fromAny(r));if(t.items)for(var i of t.items)this.#jl.data.addItem(Ra(i));t.viewMode&&this.#jl.viewMode$.next(t.viewMode),t.currentDate&&this.#jl.currentDate$.next(new Date(t.currentDate))}}class Oo extends ja{constructor(){super(),this.colorScheme="dark",this.toolbar.backgroundColor="#252526",this.toolbar.textColor="#d4d4d4",this.toolbar.borderColor="#3c3c3c",this.toolbar.buttonColor="#d4d4d4",this.toolbar.buttonHoverBackgroundColor="#3c3c3c",this.toolbar.activeViewButtonBackgroundColor="#264f78",this.toolbar.activeViewButtonTextColor="#7cc5ff",this.header.backgroundColor="#252526",this.header.textColor="#d4d4d4",this.header.borderColor="#3c3c3c",this.header.todayTextColor="#ffffff",this.header.todayBackgroundColor="#007acc",this.header.weekendTextColor="#999999",this.content.backgroundColor="#1e1e1e",this.content.textColor="#d4d4d4",this.content.gridLineColor="#343434",this.content.todayBackgroundColor="#1a2a3a",this.content.weekendBackgroundColor="#1a1a1a",this.content.otherMonthBackgroundColor="#181818",this.content.otherMonthTextColor="#555555",this.content.hourLineColor="#343434",this.content.halfHourLineColor="#2a2a2a",this.content.currentTimeLineColor="#f14c4c",this.content.moreTextColor="#999999",this.content.hoverBackgroundColor="rgba(255, 255, 255, 0.05)",this.content.selectedEntryOutlineColor="#007acc",this.content.focusOutlineColor="#7cc5ff",this.content.dragHighlightColor="rgba(0, 122, 204, 0.2)",this.content.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.content.scrollbarTrackColor="transparent",this.content.agendaDayHeaderBackgroundColor="#2d2d2d",this.content.agendaDayHeaderTextColor="#d4d4d4",this.content.agendaEntryHoverBackgroundColor="rgba(255, 255, 255, 0.05)",this.content.agendaEmptyTextColor="#666666",this.content.entryColors=[Ba.create({color1:"#3d5a99",color2:"#6a9bf5",textColor:"#c8dcfa",chipBackgroundColor:"#253a5e",chipTextColor:"#8ab4f8"}),Ba.create({color1:"#6a3d8a",color2:"#b07de0",textColor:"#dcc8f0",chipBackgroundColor:"#3a2058",chipTextColor:"#c49de8"}),Ba.create({color1:"#2e7a48",color2:"#5cb878",textColor:"#c8ecd4",chipBackgroundColor:"#1a3a28",chipTextColor:"#81d498"}),Ba.create({color1:"#8a3060",color2:"#d06898",textColor:"#f0c8da",chipBackgroundColor:"#4a1830",chipTextColor:"#e48ab0"}),Ba.create({color1:"#8a5520",color2:"#d09040",textColor:"#f0dcc0",chipBackgroundColor:"#4a2e10",chipTextColor:"#e0a860"}),Ba.create({color1:"#286868",color2:"#50b0a8",textColor:"#c0e8e4",chipBackgroundColor:"#183838",chipTextColor:"#78cccc"}),Ba.create({color1:"#8a3030",color2:"#d06060",textColor:"#f0c8c8",chipBackgroundColor:"#4a1818",chipTextColor:"#e48888"}),Ba.create({color1:"#585858",color2:"#909090",textColor:"#d8d8d8",chipBackgroundColor:"#333333",chipTextColor:"#b0b0b0"})],this.sidebar.backgroundColor="#252526",this.sidebar.textColor="#d4d4d4",this.sidebar.borderColor="#3c3c3c",this.sidebar.miniCalendarTodayTextColor="#ffffff",this.sidebar.miniCalendarTodayBackgroundColor="#007acc",this.sidebar.miniCalendarTodayDotColor="#ffffff",this.sidebar.miniCalendarSelectedBackgroundColor="#264f78",this.sidebar.miniCalendarSelectedTextColor="#7cc5ff",this.sidebar.miniCalendarOtherMonthTextColor="#555555",this.sidebar.miniCalendarWeekendTextColor="#808080",this.sidebar.miniCalendarHoverBackgroundColor="#3c3c3c",this.sidebar.miniCalendarDayWithEventsColor="#007acc",this.sidebar.calendarListHeaderTextColor="#999999",this.sidebar.calendarListCheckboxColor="#007acc",this.allDay.backgroundColor="#252526",this.allDay.borderColor="#3c3c3c",this.allDay.textColor="#999999",this.timeGutter.backgroundColor="#252526",this.timeGutter.textColor="#808080",this.timeGutter.borderColor="#3c3c3c"}}export{wa as Appointment,ka as AvailabilityBlock,Gr as BaseChartContentStyle,Zr as BaseChartHeaderStyle,qr as BaseChartStyle,Yr as BaseSheetHeaderStyle,Kr as BaseSheetStyle,jr as BaseTaskColor,_r as BaseTheme,Ea as Birthday,oa as Calendar,Va as CalendarData,Aa as CalendarEntry,ya as CalendarItem,Ta as CalendarTask,mn as ClassicGanttChartTheme,bn as ClassicSchedulerTheme,Qi as CurrencyCellEditor,or as CustomProperty,Oo as DarkEventCalendarTheme,pn as DarkGanttChartTheme,fn as DarkSchedulerTheme,ji as DateCellEditor,Sr as DateRange,Ca as Deadline,ls as DecimalCellEditor,zi as DefaultTableCellRenderer,Ki as DialogCellEditor,Wa as EventCalendarAllDayStyle,Oa as EventCalendarContentStyle,Ka as EventCalendarContext,zo as EventCalendarEngine,Ba as EventCalendarEntryColor,Za as EventCalendarEvents,za as EventCalendarHeaderStyle,Ya as EventCalendarSettings,Na as EventCalendarSidebarStyle,ja as EventCalendarTheme,Ua as EventCalendarTimeGutterStyle,Fa as EventCalendarToolbarStyle,Zs as GanttChartContext,Ks as GanttChartEngine,Gs as GanttChartEvents,qs as GanttChartSettings,Jr as GanttChartTaskColor,ti as GanttChartTheme,ps as GanttSheet,xa as Holiday,os as IntegerCellEditor,ur as Lag,rr as Length,Xa as LightEventCalendarTheme,vs as LightGanttChartTheme,vn as LightSchedulerTheme,ba as Meeting,gn as ModernGanttChartTheme,yn as ModernSchedulerTheme,Yi as PercentCellEditor,ys as Rate,Ma as RecurrenceEditor,Ha as RecurrenceExpander,ha as RecurrenceRule,Da as Reminder,bs as Resource,Sa as ResourceBooking,fs as ResourceList,ra as ResourceSchedulerContext,ia as ResourceSchedulerEngine,sa as ResourceSchedulerEvents,na as ResourceSchedulerSettings,Tn as ResourceType,wn as SchedulerData,zn as SchedulerEvent,Cn as SchedulerResource,Un as SchedulerSheet,cs as Table,Ni as TableCellEditor,Fi as TableCellRenderer,as as TableColumn,Ws as TableContext,Wi as TableInputCellEditor,cr as Task,un as TaskFilters,gr as TaskLink,fr as TaskList,ir as TaskPart,nr as TaskResource,Ui as TextCellEditor,wr as TimeOfDay,Gr as TimelineChartContentStyle,Zr as TimelineChartHeaderStyle,qr as TimelineChartStyle,Yr as TimelineSheetHeaderStyle,Kr as TimelineSheetStyle,jr as TimelineTaskColor,_r as TimelineTheme,gs as TreeTable,ar as Work,yr as WorkingCalendar,br as WorkingShift,Ra as calendarItemFromAny,Js as csLocale,Qs as deLocale,js as defaultLocale,_s as enLocale,en as esLocale,tn as frLocale,mr as getLinkType,rn as itLocale,sn as jaLocale,nn as koLocale,an as nlLocale,on as plLocale,ln as ptLocale,Xr as resolveTaskColor,hn as ruLocale,Ht as setLicense,dn as svLocale,cn as zhLocale};
|