@timelinekit/core 1.0.0
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/LICENSE +46 -0
- package/README.md +0 -0
- package/dist/__tests__/common/functions.test.d.ts +1 -0
- package/dist/__tests__/critical-path-calculator.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/clipboard.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/critical-path-calculator.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/export/data-exporter.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/lag.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/length.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/resource-list.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/resource.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/task-list.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/task-part.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/task-resource.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/task-warnings.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/task.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/work.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/model/working-calendar.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/performance.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/scroll-and-zoom.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/task-interactions.test.d.ts +1 -0
- package/dist/__tests__/ganttchart/undo-manager.test.d.ts +1 -0
- package/dist/__tests__/licensing/features.test.d.ts +1 -0
- package/dist/__tests__/licensing/license-key.test.d.ts +1 -0
- package/dist/__tests__/licensing/license-manager.test.d.ts +1 -0
- package/dist/__tests__/licensing/watermark.test.d.ts +1 -0
- package/dist/__tests__/model/lag.test.d.ts +1 -0
- package/dist/__tests__/model/length.test.d.ts +1 -0
- package/dist/__tests__/model/resource-list.test.d.ts +1 -0
- package/dist/__tests__/model/resource.test.d.ts +1 -0
- package/dist/__tests__/model/task-list.test.d.ts +1 -0
- package/dist/__tests__/model/task-part.test.d.ts +1 -0
- package/dist/__tests__/model/task-resource.test.d.ts +1 -0
- package/dist/__tests__/model/task-warnings.test.d.ts +1 -0
- package/dist/__tests__/model/task.test.d.ts +1 -0
- package/dist/__tests__/model/work.test.d.ts +1 -0
- package/dist/__tests__/model/working-calendar.test.d.ts +1 -0
- package/dist/__tests__/resourcescheduler/export/scheduler-data-exporter.test.d.ts +1 -0
- package/dist/__tests__/resourcescheduler/model/scheduler-data.test.d.ts +1 -0
- package/dist/__tests__/resourcescheduler/model/scheduler-event.test.d.ts +1 -0
- package/dist/__tests__/resourcescheduler/model/scheduler-resource.test.d.ts +1 -0
- package/dist/__tests__/resourcescheduler/multi-select.test.d.ts +1 -0
- package/dist/__tests__/resourcescheduler/performance.test.d.ts +1 -0
- package/dist/__tests__/resourcescheduler/serialization.test.d.ts +1 -0
- package/dist/__tests__/undo-manager.test.d.ts +1 -0
- package/dist/common/auto-scroll.d.ts +10 -0
- package/dist/common/base-background-renderer.d.ts +17 -0
- package/dist/common/base-chart-handler.d.ts +53 -0
- package/dist/common/base-chart-scroll-handler.d.ts +45 -0
- package/dist/common/base-divider.d.ts +21 -0
- package/dist/common/base-header-renderer.d.ts +23 -0
- package/dist/common/base-image-exporter.d.ts +6 -0
- package/dist/common/base-markers-renderer.d.ts +15 -0
- package/dist/common/base-pdf-exporter.d.ts +11 -0
- package/dist/common/calc.d.ts +2 -0
- package/dist/common/class-with-listeners.d.ts +7 -0
- package/dist/common/common.d.ts +60 -0
- package/dist/common/custom-property.d.ts +12 -0
- package/dist/common/drawing.d.ts +2 -0
- package/dist/common/export-utils.d.ts +60 -0
- package/dist/common/functions.d.ts +25 -0
- package/dist/common/handler-result.d.ts +8 -0
- package/dist/common/scrollbar-utils.d.ts +5 -0
- package/dist/common/text.d.ts +24 -0
- package/dist/ganttchart/chart/chart-scroll-handler.d.ts +5 -0
- package/dist/ganttchart/chart/chart-time-axis.d.ts +32 -0
- package/dist/ganttchart/chart/chart.d.ts +7 -0
- package/dist/ganttchart/chart/handlers/add-task-part.d.ts +11 -0
- package/dist/ganttchart/chart/handlers/connector-dots-handler.d.ts +16 -0
- package/dist/ganttchart/chart/handlers/handler.d.ts +32 -0
- package/dist/ganttchart/chart/handlers/handlers.d.ts +14 -0
- package/dist/ganttchart/chart/handlers/move-milestone.d.ts +11 -0
- package/dist/ganttchart/chart/handlers/move-task-part.d.ts +11 -0
- package/dist/ganttchart/chart/handlers/resize-task-part.d.ts +11 -0
- package/dist/ganttchart/chart/handlers/select-link.d.ts +11 -0
- package/dist/ganttchart/chart/handlers/select-task.d.ts +22 -0
- package/dist/ganttchart/chart/handlers/set-task-progress.d.ts +11 -0
- package/dist/ganttchart/chart/renderers/chart-background-renderer.d.ts +8 -0
- package/dist/ganttchart/chart/renderers/chart-header-renderer.d.ts +7 -0
- package/dist/ganttchart/chart/renderers/chart-links-renderer.d.ts +7 -0
- package/dist/ganttchart/chart/renderers/chart-markers-renderer.d.ts +7 -0
- package/dist/ganttchart/chart/renderers/chart-tasks-renderer.d.ts +14 -0
- package/dist/ganttchart/chart/renderers/renderer-base.d.ts +9 -0
- package/dist/ganttchart/chart/task-link.calculator.d.ts +16 -0
- package/dist/ganttchart/chart/task-progress-calculator.d.ts +9 -0
- package/dist/ganttchart/chart/tooltip/chart-tooltip-renderer.d.ts +11 -0
- package/dist/ganttchart/clipboard.d.ts +32 -0
- package/dist/ganttchart/critical-path-calculator.d.ts +7 -0
- package/dist/ganttchart/divider/divider.d.ts +5 -0
- package/dist/ganttchart/export/data-exporter.d.ts +30 -0
- package/dist/ganttchart/export/export-common.d.ts +23 -0
- package/dist/ganttchart/export/image-exporter.d.ts +7 -0
- package/dist/ganttchart/export/pdf-exporter.d.ts +12 -0
- package/dist/ganttchart/ganttchart-engine.d.ts +172 -0
- package/dist/ganttchart/locale.d.ts +66 -0
- package/dist/ganttchart/model/custom-property.d.ts +1 -0
- package/dist/ganttchart/model/lag.d.ts +16 -0
- package/dist/ganttchart/model/length.d.ts +16 -0
- package/dist/ganttchart/model/marker.d.ts +7 -0
- package/dist/ganttchart/model/rate.d.ts +9 -0
- package/dist/ganttchart/model/resource-list.d.ts +16 -0
- package/dist/ganttchart/model/resource.d.ts +29 -0
- package/dist/ganttchart/model/sheet-column.d.ts +27 -0
- package/dist/ganttchart/model/task-filters.d.ts +14 -0
- package/dist/ganttchart/model/task-link.d.ts +22 -0
- package/dist/ganttchart/model/task-list-adapter.d.ts +28 -0
- package/dist/ganttchart/model/task-list.d.ts +65 -0
- package/dist/ganttchart/model/task-part.d.ts +39 -0
- package/dist/ganttchart/model/task-resource.d.ts +18 -0
- package/dist/ganttchart/model/task-warnings.d.ts +15 -0
- package/dist/ganttchart/model/task.d.ts +131 -0
- package/dist/ganttchart/model/work.d.ts +17 -0
- package/dist/ganttchart/model/working-calendar.d.ts +32 -0
- package/dist/ganttchart/recalculator.d.ts +6 -0
- package/dist/ganttchart/sheet/editors/cell-editor.d.ts +23 -0
- package/dist/ganttchart/sheet/editors/currency-editor.d.ts +6 -0
- package/dist/ganttchart/sheet/editors/date-editor.d.ts +6 -0
- package/dist/ganttchart/sheet/editors/decimal-editor.d.ts +6 -0
- package/dist/ganttchart/sheet/editors/dialog-editor.d.ts +17 -0
- package/dist/ganttchart/sheet/editors/input-editor.d.ts +19 -0
- package/dist/ganttchart/sheet/editors/integer-editor.d.ts +6 -0
- package/dist/ganttchart/sheet/editors/length-editor.d.ts +10 -0
- package/dist/ganttchart/sheet/editors/percent-editor.d.ts +6 -0
- package/dist/ganttchart/sheet/editors/text-editor.d.ts +5 -0
- package/dist/ganttchart/sheet/editors/work-editor.d.ts +7 -0
- package/dist/ganttchart/sheet/renderers/sheet-cell-renderer.d.ts +5 -0
- package/dist/ganttchart/sheet/renderers/sheet-icons-cell-renderer.d.ts +10 -0
- package/dist/ganttchart/sheet/renderers/sheet-name-cell-renderer.d.ts +9 -0
- package/dist/ganttchart/sheet/renderers/sheet-resources-cell-renderer.d.ts +9 -0
- package/dist/ganttchart/sheet/sheet-keyboard-navigation.d.ts +26 -0
- package/dist/ganttchart/sheet/sheet-rows-selection.d.ts +24 -0
- package/dist/ganttchart/sheet/sheet.d.ts +18 -0
- package/dist/ganttchart/themes/classic-theme.d.ts +4 -0
- package/dist/ganttchart/themes/dark-theme.d.ts +4 -0
- package/dist/ganttchart/themes/light-theme.d.ts +4 -0
- package/dist/ganttchart/themes/modern-theme.d.ts +4 -0
- package/dist/ganttchart/themes/theme.d.ts +129 -0
- package/dist/ganttchart/undo-manager.d.ts +13 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.js +1 -0
- package/dist/licensing/features.d.ts +21 -0
- package/dist/licensing/license-key.d.ts +7 -0
- package/dist/licensing/license-manager.d.ts +13 -0
- package/dist/licensing/watermark.d.ts +1 -0
- package/dist/locales/cs.d.ts +2 -0
- package/dist/locales/de.d.ts +2 -0
- package/dist/locales/en.d.ts +1 -0
- package/dist/locales/es.d.ts +2 -0
- package/dist/locales/fr.d.ts +2 -0
- package/dist/locales/it.d.ts +2 -0
- package/dist/locales/ja.d.ts +2 -0
- package/dist/locales/ko.d.ts +2 -0
- package/dist/locales/nl.d.ts +2 -0
- package/dist/locales/pl.d.ts +2 -0
- package/dist/locales/pt.d.ts +2 -0
- package/dist/locales/ru.d.ts +2 -0
- package/dist/locales/sv.d.ts +2 -0
- package/dist/locales/zh.d.ts +2 -0
- package/dist/resourcescheduler/chart/handlers/add-event.d.ts +12 -0
- package/dist/resourcescheduler/chart/handlers/move-event.d.ts +12 -0
- package/dist/resourcescheduler/chart/handlers/resize-event.d.ts +12 -0
- package/dist/resourcescheduler/chart/handlers/scheduler-handler.d.ts +23 -0
- package/dist/resourcescheduler/chart/handlers/scheduler-handlers.d.ts +18 -0
- package/dist/resourcescheduler/chart/handlers/select-event.d.ts +26 -0
- package/dist/resourcescheduler/chart/renderers/scheduler-background-renderer.d.ts +8 -0
- package/dist/resourcescheduler/chart/renderers/scheduler-events-renderer.d.ts +7 -0
- package/dist/resourcescheduler/chart/renderers/scheduler-header-renderer.d.ts +7 -0
- package/dist/resourcescheduler/chart/renderers/scheduler-markers-renderer.d.ts +7 -0
- package/dist/resourcescheduler/chart/renderers/scheduler-renderer-base.d.ts +9 -0
- package/dist/resourcescheduler/chart/scheduler-chart-scroll-handler.d.ts +5 -0
- package/dist/resourcescheduler/chart/scheduler-chart.d.ts +9 -0
- package/dist/resourcescheduler/chart/tooltip/scheduler-tooltip-renderer.d.ts +13 -0
- package/dist/resourcescheduler/clipboard.d.ts +18 -0
- package/dist/resourcescheduler/divider/scheduler-divider.d.ts +5 -0
- package/dist/resourcescheduler/export/scheduler-data-exporter.d.ts +23 -0
- package/dist/resourcescheduler/export/scheduler-export-common.d.ts +15 -0
- package/dist/resourcescheduler/export/scheduler-image-exporter.d.ts +6 -0
- package/dist/resourcescheduler/export/scheduler-pdf-exporter.d.ts +12 -0
- package/dist/resourcescheduler/model/scheduler-data-adapter.d.ts +21 -0
- package/dist/resourcescheduler/model/scheduler-data.d.ts +52 -0
- package/dist/resourcescheduler/model/scheduler-event.d.ts +31 -0
- package/dist/resourcescheduler/model/scheduler-resource.d.ts +35 -0
- package/dist/resourcescheduler/resourcescheduler-engine.d.ts +211 -0
- package/dist/resourcescheduler/sheet/renderers/scheduler-icon-cell-renderer.d.ts +6 -0
- package/dist/resourcescheduler/sheet/scheduler-sheet.d.ts +21 -0
- package/dist/styles/gc.css +1 -0
- package/dist/table/editors/cell-editor.d.ts +23 -0
- package/dist/table/editors/currency-editor.d.ts +7 -0
- package/dist/table/editors/date-editor.d.ts +9 -0
- package/dist/table/editors/decimal-editor.d.ts +7 -0
- package/dist/table/editors/dialog-editor.d.ts +17 -0
- package/dist/table/editors/input-editor.d.ts +19 -0
- package/dist/table/editors/integer-editor.d.ts +7 -0
- package/dist/table/editors/percent-editor.d.ts +7 -0
- package/dist/table/editors/text-editor.d.ts +6 -0
- package/dist/table/renderers/table-cell-renderer.d.ts +8 -0
- package/dist/table/table-column.d.ts +32 -0
- package/dist/table/table-context.d.ts +49 -0
- package/dist/table/table-data-source.d.ts +30 -0
- package/dist/table/table-keyboard-navigation.d.ts +25 -0
- package/dist/table/table-rows-selection.d.ts +13 -0
- package/dist/table/table.d.ts +51 -0
- package/dist/table/tree-table-keyboard-navigation.d.ts +16 -0
- package/dist/table/tree-table.d.ts +17 -0
- package/package.json +99 -0
- package/styles/_common.scss +405 -0
- package/styles/gc.scss +82 -0
- package/styles/rs.scss +32 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Subject as e,BehaviorSubject as t}from"rxjs";var s,r;!function(e){e[e.Free=0]="Free",e[e.Pro=1]="Pro"}(s||(s={})),function(e){e[e.CriticalPath=0]="CriticalPath",e[e.Baseline=1]="Baseline",e[e.Resources=2]="Resources",e[e.WorkingCalendar=3]="WorkingCalendar",e[e.Markers=4]="Markers",e[e.Filtering=5]="Filtering",e[e.UndoRedo=6]="UndoRedo",e[e.Clipboard=7]="Clipboard",e[e.Constraints=8]="Constraints",e[e.CustomProperties=9]="CustomProperties",e[e.ResourceScheduler=10]="ResourceScheduler",e[e.Export=11]="Export",e[e.AdditionalThemes=12]="AdditionalThemes",e[e.AdditionalLocales=13]="AdditionalLocales"}(r||(r={}));function i(e){if(!e.startsWith("TK-"))return null;var t=e.substring(3),s=t.lastIndexOf(".");if(-1===s)return null;var r=t.substring(0,s),i=t.substring(s+1),o=function(e){for(var t="",s=0,r=0,i=0;i<e.length;i++)for(s=s<<8|e[i],r+=8;r>=6;)t+=n[s>>(r-=6)&63];r>0&&(t+=n[s<<6-r&63]);return t}(function(e,t){var s=64,r=new Uint8Array(s);e.length>s?r.set(h(e)):r.set(e);for(var i=new Uint8Array(s+t.length),n=new Uint8Array(s+32),a=0;a<s;a++)i[a]=54^r[a],n[a]=92^r[a];i.set(t,s);var o=h(i);return n.set(o,s),h(n)}(a("tk_hmac_2025_verify_key_v1"),a(r)));if(i!==o)return null;try{for(var l=function(e){e=e.replace(/=+$/,"");for(var t=[],s=0,r=0,i=0;i<e.length;i++){var a=n.indexOf(e[i]);if(-1===a)return new Uint8Array(0);s=s<<6|a,(r+=6)>=8&&(r-=8,t.push(s>>r&255))}return new Uint8Array(t)}(r),c="",d=0;d<l.length;d++)c+=String.fromCharCode(l[d]);var u=JSON.parse(c);return"number"!=typeof u.t||("number"!=typeof u.e||"string"!=typeof u.v||"string"!=typeof u.h)?null:u}catch{return null}}var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function a(e){for(var t=[],s=0;s<e.length;s++){var r=e.charCodeAt(s);r<128?t.push(r):r<2048?(t.push(192|r>>6),t.push(128|63&r)):(t.push(224|r>>12),t.push(128|r>>6&63),t.push(128|63&r))}return new Uint8Array(t)}var o=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function l(e,t){return e>>>t|e<<32-t}function h(e){var t=1779033703,s=3144134277,r=1013904242,i=2773480762,n=1359893119,a=2600822924,h=528734635,c=1541459225,d=e.length,u=8*d,g=64*Math.ceil((d+9)/64),m=new Uint8Array(g);m.set(e),m[d]=128;var v=new DataView(m.buffer);v.setUint32(g-4,u,!1);for(var p=new Array(64),f=0;f<g;f+=64){for(var w=0;w<16;w++)p[w]=v.getInt32(f+4*w,!1);for(w=16;w<64;w++){var T=l(p[w-15],7)^l(p[w-15],18)^p[w-15]>>>3,y=l(p[w-2],17)^l(p[w-2],19)^p[w-2]>>>10;p[w]=p[w-16]+T+p[w-7]+y|0}var x=t,b=s,C=r,k=i,S=n,$=a,E=h,R=c;for(w=0;w<64;w++){var M=R+(l(S,6)^l(S,11)^l(S,25))+(S&$^~S&E)+o[w]+p[w]|0,D=x&b^x&C^b&C;R=E,E=$,$=S,S=k+M|0,k=C,C=b,b=x,x=M+((l(x,2)^l(x,13)^l(x,22))+D|0)|0}t=t+x|0,s=s+b|0,r=r+C|0,i=i+k|0,n=n+S|0,a=a+$|0,h=h+E|0,c=c+R|0}var H=new Uint8Array(32),P=new DataView(H.buffer);return P.setInt32(0,t,!1),P.setInt32(4,s,!1),P.setInt32(8,r,!1),P.setInt32(12,i,!1),P.setInt32(16,n,!1),P.setInt32(20,a,!1),P.setInt32(24,h,!1),P.setInt32(28,c,!1),H}var c=Math.floor(new Date("2025-05-12").getTime()/1e3);class d{static#e;#t=s.Free;#s=!1;static get(){return d.#e||(d.#e=new d),d.#e}setLicenseKey(e){var t=i(e);return t?"1"!==t.v&&t.e<c?(console.warn("[TimelineKit] License key does not cover this major version. Please renew your subscription to use v1."),this.#t=s.Free,void(this.#s=!1)):(this.#t=t.t,void(this.#s=!0)):(console.warn("[TimelineKit] Invalid license key."),this.#t=s.Free,void(this.#s=!1))}isAvailable(e){return this.#t>=s.Pro}get currentTier(){return this.#t}get isValid(){return this.#s}get showWatermark(){return this.#t<s.Pro}}function u(e){d.get().setLicenseKey(e)}function g(){return d.get()}function m(){const e=new Date;return e.setHours(0,0,0,0),e}function v(e){var t=m();const s=new Date(t);return s.setDate(t.getDate()+e),s}function p(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function f(e){const t=new Date(e);return t.setDate(t.getDate()+1),t.setHours(0,0,0,0),t}function w(e){const t=new Date(e);return t.setDate(t.getDate()-1),t.setHours(23,59,59,0),t}function T(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function y(e,t){return(null===e||null!==t)&&((null!==e||null===t)&&(null===e&&null===t||e.getTime()==t.getTime()))}function x(e,t,s,r){const i=Math.max(e.getTime(),s.getTime()),n=Math.min(t.getTime(),r.getTime()),a=Math.max(0,n-i);return Math.floor(a/6e4)}function b(e,t){var s;return s=12*(t.getFullYear()-e.getFullYear()),s-=e.getMonth(),s+=t.getMonth()}function C(e,t,s){const r=e.children;s>=0&&s<r.length?e.insertBefore(t,r[s]):s>=r.length?e.appendChild(t):e.insertBefore(t,r[0])}function k(e,t){return new Intl.DateTimeFormat(t,{dateStyle:"short"}).format(e)}function S(e,t,s){return new Intl.DateTimeFormat(t,s).format(e)}function $(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),s=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-s);var r=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-r.getTime())/864e5+1)/7)}function E(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 R(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]),parseInt(t[4]),parseInt(t[5]),parseInt(t[6]))}function M(e,t){return e.getTime()>t.getTime()?e:t}function D(e,t){return e.getTime()<t.getTime()?e:t}function H(e){const t="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";let s="";const r=new Uint8Array(e);(globalThis.crypto??crypto).getRandomValues(r);for(let i=0;i<e;i++){s+=t[r[i]%62]}return s}function P(e){switch(e.keyCode){case 46:case 8:return!0}return!1}class L{#r;get unit(){return this.#r}#i;get value(){return this.#i}constructor(e,t){if(t<0)throw new Error("Length value must be greater or equal to zero.");this.#r=e,this.#i=t}getEndTime(e,t){var s=this.#i,r=new Date(e),i=0,n=this.unit;if("Week"==n&&(s*=t.workingDays.length,n="Day"),"Day"==n){for(;s>=1;)r=new Date(r),t.isWorkingDay(r)?(s--,r.setDate(r.getDate()+1)):r=f(r);i=s*t.getHoursPerDay()*60}if("Month"==n){for(;s>=1;){(r=new Date(r)).setMonth(r.getMonth()+1);break}i=30*s*t.getHoursPerDay()*60}if("Hour"==n&&(i=60*this.#i),"Minute"==n&&(i=this.#i),i>0)for(r=t.moveToStartShift(r,!0);i>0;)r.setMinutes(r.getMinutes()+1),r=t.moveToStartShift(r,!0),i--;return t.moveToEndShift(r,!0)}static getLength(e,t,s,r){var i=new Date(e),n=0,a=0;if("Month"==s)for(;;){var o=new Date(i);o.setMonth(o.getMonth()+1);var l=t;if(r.isEndOfDay(l)&&(l=f(l)),o<=l&&(a++,i=o),o>=l)break}for(;i<t;){var h=T(i=new Date(i),t)?t:f(i);n+=r.getHoursBetween(i,h)/r.getHoursPerDay(),i=f(i)}switch(s){case"Day":return new L(s,n);case"Week":return new L(s,n/r.workingDays.length);case"Minute":return new L(s,n*r.getHoursPerDay()*60);case"Hour":return new L(s,n*r.getHoursPerDay());case"Month":return new L(s,a+n/30);default:throw new Error}}equals(e){return this.#r==e.unit&&this.#i==e.value}#n(){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.#n()}static tryParse(e){const t=e.match(/^(\d+(\.\d+)?)([mhdwM])$/);if(!t)return null;const s=parseFloat(t[1]),r=t[3];if(s>1e3)return null;var i="Day";switch(r){case"m":i="Minute";break;case"h":i="Hour";break;case"d":i="Day";break;case"w":i="Week";break;case"M":i="Month"}return new L(i,s)}static parse(e){var t=L.tryParse(e);if(!t)throw new Error("Failed to parse length "+e);return t}static fromAny(e){var t=e.unit,s=e.value;return new L(t,s)}toAny(){return{unit:this.unit,value:this.value}}}class A{#a;get startTime(){return this.#a}set startTime(e){e!=this.#a&&(this.startTimeChanging.next({part:this,value:e}),this.#a=this.calendar.moveToStartShift(e,!0),this.#o=this.#l.getEndTime(this.#a,this.calendar),this.startTimeChanged.next())}#o;get endTime(){return this.#o}set endTime(e){e!=this.#o&&(this.#h(this.startTime,e),this.endTimeChanging.next({part:this,value:e}),this.#o=this.calendar.moveToEndShift(e,!0),this.#l=L.getLength(this.#a,this.#o,this.length.unit,this.calendar),this.endTimeChanged.next())}#l;get length(){return this.#l}set length(e){e.equals(this.#l)||(this.lengthChanging.next({part:this,value:e}),this.#l=e,this.#o=e.getEndTime(this.#a,this.calendar),this.lengthChanged.next())}#c=null;get task(){return this.#c}set task(e){if(this.#c)throw new Error("Once assigned the task cannot be changed");e!=this.#c&&(this.#c=e)}#d;get calendar(){return this.#d.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,s){this.#a=e,this.#l=t,this.#d=s,this.#o=t.getEndTime(e,this.calendar)}#h(e,t){if(e>t)throw new I("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.#c)return null;var e=this.#c.progress;if(null==e)return null;for(var t=this.#c.partsLengthInHours*((this.#c.progress??0)/100),s=0;s<this.#c.partsLength;s++){var r=this.#c.getPart(s),i=r.lengthInHours;if(t>=i){if(r==this)return 100;t-=i}else{if(t>0){if(r==this)return t/i*100;break}if(t<=0)break}}return 0}toAny(){var e={};return e.startTime=E(this.#a),e.endTime=E(this.#o),e.length=this.#l.toAny(),e}static fromAny(e,t){var s=R(e.startTime),r=L.fromAny(e.length);return new A(s,r,t)}}class I extends Error{constructor(e){super(e),this.name="ValidationError"}}class V{#u;get id(){return this.#u}#g;get resource(){return this.#g}#m;get capacity(){return this.#m}set capacity(e){if(e!=this.#m){if(e<=0)throw new Error("Invalid resource capacity");this.#m=e,this.#v()}}changed$=new e;constructor(e,t,s){if(s<=0)throw new Error("Invalid resource capacity");this.#u=e||H(30),this.#g=t,this.#m=s,this.#g.changed$.subscribe(()=>{this.#v()})}#v(){this.changed$.next({resource:this})}formatCapacity(){return this.#m/100==Math.floor(this.#m/100)?(this.#m/100).toString()+"x":this.#m+"%"}toAny(){return{id:this.id,resourceId:this.resource.id,capacity:this.capacity}}static fromAny(e,t){var s=t.getResourceById(e.resourceId);if(!s)throw new Error("Resource not found in the list: "+e.resourceId);return new V(e.id,s,e.capacity)}}class F{#r;get unit(){return this.#r}#i;get value(){return this.#i}constructor(e,t){if(t<0)throw new Error("Work value must be greater or equal to zero.");this.#r=e,this.#i=t}static tryParse(e){const t=e.match(/^(\d+(\.\d+)?)([mhd])$/);if(!t)return null;const s=parseFloat(t[1]),r=t[3];if(s>9999)return null;var i="Day";switch(r){case"m":i="Minute";break;case"h":i="Hour";break;case"d":i="Day"}return new F(i,s)}#n(){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.#n()}toHours(e){switch(this.#r){case"Minute":return this.#i/60;case"Hour":return this.#i;case"Day":return this.#i*e.getHoursPerDay()}}static maxUnit(e,t){return"Day"==e||"Day"==t?"Day":"Hour"==e||"Hour"==t?"Hour":"Minute"}static fromHours(e,t,s){switch(t){case"Minute":return new F(t,60*e);case"Hour":return new F(t,e);case"Day":return new F(t,e/s.getHoursPerDay())}}static sum(e,t){if(e.unit!=t.unit)throw new Error;return new F(e.unit,e.value+t.value)}toAny(){return{unit:this.#r,value:this.#i}}static fromAny(e){return new F(e.unit,e.value)}clone(){return new F(this.unit,this.value)}}class W{#p;get name(){return this.#p}set name(e){e!=this.#p&&(this.#p=e)}#i=null;get value(){return this.#i}set value(e){e!=this.#i&&(this.#i=e,this.#v())}changed$=new e;constructor(e,t){this.#p=e,this.#i=t}#v(){this.changed$.next()}toAny(){return{name:this.#p,value:this.#i}}static fromAny(e){return new W(e.name,e.value)}}class z{#u;get id(){return this.#u}#f=0;get color(){return this.#f}set color(e){this.#f!=e&&(this.#f=e,this.#v())}#p=null;get name(){return this.#p}set name(e){e!=this.#p&&this.#w(e)}#a=null;get startTime(){return this.#a}set startTime(e){this.#T(e)}#o=null;get endTime(){return this.#o}set endTime(e){this.#y(e)}get number(){return this.#x.getTaskNumber(this)}get calendar(){return this.#d.getValue()}get length(){switch(this.type){case"Empty":return null;case"Milestone":return new L(this.#b??this.calendar.defaultLengthUnit,0);case"Task":return L.getLength(this.startTime,this.endTime,this.#C[0].length.unit,this.calendar);case"Summary":return L.getLength(this.startTime,this.endTime,this.#b??this.calendar.defaultLengthUnit,this.calendar)}}set length(e){this.#k(e)}#b=null;get customLengthUnit(){return this.#b}set customLengthUnit(e){e!=this.#b&&this.#S(e)}#$=null;get baseStartTime(){return this.#$}#E=[];#C=[];get lastPart(){return this.#C[this.#C.length-1]}#R="Empty";get type(){return this.#R}set type(e){this.#R!=e&&this.#M(e)}#D=null;get parent(){return this.#D}#x=null;get list(){return this.#x}set list(e){if(this.#x)throw new Error("Once assigned the list cannot be changed");e!=this.#x&&(this.#x=e)}#H=null;get progress(){return this.#H}set progress(e){e!=this.#H&&this.#P(e)}#L=!1;get collapsed(){return this.#L}set collapsed(e){"Summary"==this.type&&this.#L!=e&&(this.#L=e,this.collapsedChanged$.next({task:this}))}#A=[];get resourcesLength(){return this.#A.length}getResource(e){return this.#A[e]}getResourceByResourceId(e){return this.#A.find(t=>t.resource.id==e)??null}getResourceById(e){return this.#A.find(t=>t.id==e)??null}#I=null;get work(){switch(this.#R){case"Empty":case"Milestone":return null;case"Task":return this.#V();case"Summary":return this.#F()}}set work(e){this.#W(e)}#z=null;get cost(){switch(this.#R){case"Empty":case"Milestone":return null;case"Task":return this.#B();case"Summary":return this.#O()}}set cost(e){this.#X(e)}#U=null;get note(){return this.#U}set note(e){this.#U!=e&&(this.#U=e,this.#v())}warnings=[];#N="ASAP";get constraintType(){return this.#N}set constraintType(e){this.#N!=e&&(this.#N=e,"ASAP"!==e&&"ALAP"!==e||(this.#j=null),this.#v())}#j=null;get constraintDate(){return this.#j}set constraintDate(e){this.#j?.getTime()!=e?.getTime()&&(this.#j=e,this.#v())}#K=null;get baselineStartTime(){return this.#K}set baselineStartTime(e){this.#K=e}#Y=null;get baselineEndTime(){return this.#Y}set baselineEndTime(e){this.#Y=e}earlyStart=null;earlyFinish=null;lateStart=null;lateFinish=null;totalFloat=null;freeFloat=null;isCritical=!1;#q=[];#d;#Z;changed$=new e;typeChanged$=new e;startTimeChanged$=new e;endTimeChanged$=new e;collapsedChanged$=new e;subtaskAdded$=new e;resourceAdding$=new e;#G=new Map;#J=new Map;#Q=new Map;#_=new Map;constructor(e,t,s){this.#d=t,this.#Z=s,this.#u=e||H(30)}#v(){this.changed$.next({task:this})}#ee(e){y(this.#a,e)||this.startTimeChanged$.next({task:this})}#te(e){y(this.#o,e)||this.endTimeChanged$.next({task:this})}#se(e,t){var s=this.#G.get(e);s||(s=[],this.#G.set(e,s)),s.push(t)}#re(e){var t=this.#G.get(e);if(t){for(let e of t)e.unsubscribe();this.#G.delete(e)}}#ie(e,t){var s=this.#J.get(e);s||(s=[],this.#J.set(e,s)),s.push(t)}#ne(e){var t=this.#J.get(e);if(t){for(let e of t)e.unsubscribe();this.#J.delete(e)}}addPart(e,t){var s=this.#R,r=new A(e,t,this.#d);if("Summary"==this.type||"Milestone"==this.type)throw new Error("Cannot add a part to a task of type "+this.type);if(this.#C.length>0&&this.#C[0].length.unit!=r.length.unit)throw new Error("Length unit of the part is different than length unit of the task");r.startTime=this.calendar.moveToStartShift(r.startTime,!0);for(var i=0;i<=this.#C.length;i++){if(!(i<this.#C.length)){this.#C.splice(i,0,r);break}if(r.startTime<=this.#C[i].startTime){this.#C.splice(i,0,r);break}}return this.#ae(),this.#C.includes(r)&&(r.task=this,this.#oe(r),"Empty"==this.#R&&(this.#R="Task",this.#H=0)),this.#le(),this.#v(),s!=this.#R&&this.typeChanged$.next({task:this,oldType:s,newType:this.#R}),r}#oe(e){this.#se(e,e.startTimeChanging.subscribe(e=>{})),this.#se(e,e.endTimeChanging.subscribe(e=>{})),this.#se(e,e.lengthChanging.subscribe(e=>{})),this.#se(e,e.startTimeChanged.subscribe(()=>{this.#le(),this.#ae()})),this.#se(e,e.endTimeChanged.subscribe(()=>{this.#he(),this.#le(),this.#ae()})),this.#se(e,e.lengthChanged.subscribe(()=>{this.#he(),"Task"==this.type&&(this.#le(),this.#ae())}))}removePart(e){if("Summary"==this.type||"Milestone"==this.type)throw new Error("Cannot remove a part from a task of type "+this.type);var t=this.#C.indexOf(e);if(t<0)throw new Error("Task part not found");this.#C.splice(t,1),0==this.#C.length&&(this.type="Empty"),this.#re(e),this.#v()}#he(){for(var e=!1,t=this.#C.length-1;t>=0;t--){var s=this.#C[t];0==s.length.value&&(this.#C.splice(t,1),this.#re(s),e=!0)}0==this.#C.length&&(this.#a=this.#o,this.type="Milestone"),e&&this.#v()}#ae(){for(var e=0;e<this.#C.length-1;){var t=this.#C[e],s=this.#C[e+1],r=!1;(this.arePartsOverlappingOrAdjacent(t,s)||t.endTime<=s.startTime&&0==this.calendar.getHoursBetween(t.endTime,s.startTime)||s.endTime<=t.startTime&&0==this.calendar.getHoursBetween(s.endTime,t.startTime))&&(r=!0),r?(this.#C.splice(e+1,1),t.startTime=D(t.startTime,s.startTime),t.endTime=M(t.endTime,s.endTime)):e++}}#le(){var e=this.#a,t=this.#o;this.#a=this.#C[0].startTime,this.#o=this.lastPart.endTime,this.#ce(),this.#ee(e),this.#te(t),this.#v()}#de(){var e=this.#a,t=this.#o,s=null,r=null;for(let e of this.#E)(!s||e.startTime&&s>e.startTime)&&e.startTime&&(s=new Date(e.startTime)),(!r||e.endTime&&r<e.endTime)&&e.endTime&&(r=new Date(e.endTime));this.#a=s,this.#o=r,this.#ce();var i=0,n=0;for(let e of this.#E){var a=e.partsLengthInHours;i+=a,n+=(e.progress??0)*a}this.#H=i>0?n/i:null,this.#ee(e),this.#te(t),this.#v()}get partsLength(){return this.#C.length}getPart(e){return this.#C[e]}#ue(e){var t=this.#E.indexOf(e);if(t<0)throw new Error("Subtask is not included in the task");return t}get subtasksLength(){return this.#E.length}getSubtask(e){return this.#E[e]}addSubtask(e){var t=this.#R;if(e.parent)throw new Error(`Task '${e.name}' (${e.id}) is already a subtask of '${e.parent.name}' (${e.parent.id})`);e.#D=this,"Summary"!=this.#R&&(this.#L=!1),this.#R="Summary",this.#I=null,this.#z=null,this.#A=[],this.#E.push(e),this.subtaskAdded$.next({task:e}),this.#ge(e),e.#v(),this.#de(),t!=this.#R&&this.typeChanged$.next({task:this,oldType:t,newType:this.#R})}#ge(e){this.#ie(e,e.changed$.subscribe(e=>{this.#me(e.task)}))}#me(e){this.#de()}removeSubtask(e){var t=this.#ue(e);if(this.#E.splice(t,1),this.#ne(e),e.#D=null,0==this.#E.length){var s=new Date(this.#a);this.#ve(!0),this.addPart(s,new L("Day",1))}else this.#de();this.#E.length>0&&this.#E[this.#E.length-1].#v(),this.#v()}get level(){for(var e=0,t=this.parent;t;)e++,t=t.parent;return e}#w(e){this.#p=e,null!==e&&this.#pe(),this.#v()}#pe(){if("Empty"==this.type){var e=m(),t=this.#Z.getValue();t.startDate.getTime()>e.getTime()&&(e=new Date(t.startDate)),this.addPart(e,new L("Day",1))}}#M(e){var t,s=this.#R,r=this.#a,i=this.#o;if("Milestone"==e)t=this.#o?this.calendar.getEndOfWorkingDay(this.#o):this.calendar.getEndOfWorkingDay(m()),this.#a=t,this.#o=t,this.#C=[],this.#E=[],this.#H=null,this.#L=!1,this.#I=null,this.#z=null,this.#A=[];else if("Task"==e){this.#E=[],this.#C=[],this.#R="Empty",this.#H=0,this.#L=!1;var n=p(this.#a??m()),a=new L("Day",1);this.addPart(n,a)}else{if("Summary"==e)throw new Error("Add a subtask to change type to Summary.");"Empty"==e&&this.#ve()}this.#R=e,this.#ce(),this.#ee(r),this.#te(i),this.#v(),s!=this.#R&&this.typeChanged$.next({task:this,oldType:s,newType:this.#R})}#ve(e){var t=this.#R;e||(this.#p=null),this.#E=[],this.#C=[],this.#R="Empty",this.#a=null,this.#o=null,this.#H=null,this.#$=null,this.#L=!1,this.#I=null,this.#z=null,this.#A=[],this.#N="ASAP",this.#j=null,t!=this.#R&&this.typeChanged$.next({task:this,oldType:t,newType:this.#R})}#S(e){this.#b=e,this.#v()}#T(e){var t=this.#a,s=this.#o;if("Empty"!=this.type){var r="Milestone"==this.type?e:this.calendar.moveToStartShift(e,!0);if(r.getTime()!=this.#a.getTime()){if("Task"==this.type){var i=0;if(r.getTime()>this.#a.getTime()){i=this.calendar.getHoursBetween(this.#a,r);for(var n=this.#C.length-1;n>=0;n--){(a=this.#C[n]).startTime=this.calendar.addHours(a.startTime,i,!0)}}else if(r.getTime()<this.#a.getTime())for(i=this.calendar.getHoursBetween(r,this.#a),n=0;n<this.#C.length;n++){var a;(a=this.#C[n]).startTime=this.calendar.addHours(a.startTime,-i)}}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(r);this.#a=o,this.#o=o}}this.#ce(),this.#ee(t),this.#te(s),this.#v()}}else this.addPart(e,new L(this.calendar.defaultLengthUnit,1))}#y(e){var t=this.#a,s=this.#o;if("Empty"!=this.type){if("Task"==this.type){if(1!=this.#C.length)throw new Error("Cannot change end date of a task consisting of multiple parts");this.#C[0].endTime=e}else{if("Summary"==this.type)throw new Error("Cannot change the end date of a summary");if("Milestone"==this.type){var r=this.calendar.moveToEndShift(e,!0);this.#a=r,this.#o=r}}this.#ee(t),this.#te(s),this.#v()}else{var i=this.calendar.moveToStartShift(p(e),!0);this.addPart(i,new L(this.calendar.defaultLengthUnit,1))}}#ce(){this.#x.evaluatingDependencies||(this.#$=new Date(this.#a))}getNextSibling(){return this.#x.getNextSibling(this)}getNextAtLevel(e){return this.#x.getNextAtLevel(this,e)}#P(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.#H=e,this.#v();break;case"Empty":this.addPart(m(),new L(this.calendar.defaultLengthUnit,1)),this.#H=e,this.#v();break;case"Milestone":case"Summary":throw new Error("Cannot set progress of task of type "+this.type)}}get partsLengthInHours(){var e=0;for(let t of this.#C)e+=t.lengthInHours;return e}indexOf(e){return this.#C.indexOf(e)}isDescendantOf(e){for(var t=this.#D;null!=t;){if(t==e)return!0;t=t.#D}return!1}toggleCollapsed(){this.collapsed=!this.collapsed}#fe=!1;get filtered(){return this.#fe}set filtered(e){this.#fe=e}get hidden(){if(this.#fe)return!0;if(this.#D){for(var e=this.#D;e;){if(e.#L)return!0;e=e.parent}return!1}return!1}#k(e){if("Empty"!=this.type){if("Task"!=this.type){if("Milestone"==this.type){if(0==e.value)return;var t=this.startTime;return this.#ve(!0),void this.addPart(t,e)}throw new Error("Invalid operation")}if(0==e.value)return void(this.type="Milestone");if(1!=this.#C.length)throw new Error("Cannot set length of a task consisting of multiple parts");this.#C[0].length=e}else this.addPart(m(),e)}get isLengthEditable(){return"Empty"==this.type||"Task"==this.type&&1==this.#C.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.#C.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.#A.length}get isCostEditable(){return"Empty"==this.type||"Task"==this.type&&0==this.#A.length}serializeProperties(e){e.id=this.#u,e.color=this.#f,e.name=this.#p,e.startTime=this.#a?E(this.#a):null,e.endTime=this.#o?E(this.#o):null,e.customLengthUnit=this.#b,e.baseStartTime=this.#$?E(this.#$):null,e.subtasks=this.#E.map(e=>e.id),e.parts=this.#C.map(e=>e.toAny()),e.type=this.#R,e.parent=this.#D?this.#D.id:null,e.progress=this.#H,e.collapsed=this.#L,e.resources=this.#A.map(e=>e.toAny()),e.customWork=this.#I?this.#I.toAny():null,e.customCost=this.#z,e.note=this.#U,e.baselineStartTime=this.#K?E(this.#K):null,e.baselineEndTime=this.#Y?E(this.#Y):null,e.constraintType="ASAP"!==this.#N?this.#N:null,e.constraintDate=this.#j?E(this.#j):null,e.properties=this.#q.map(e=>e.toAny())}deserializeProperties(e,t){this.#u=e.id,this.#f=e.color,this.#p=e.name??null,this.#a=e.startTime?R(e.startTime):null,this.#o=e.endTime?R(e.endTime):null,this.#b=e.customLengthUnit??null,this.#$=e.baseStartTime?R(e.baseStartTime):null,this.#C=e.parts.map(e=>A.fromAny(e,this.#d)),this.#R=e.type,this.#H=e.progress??null,this.#L=e.collapsed,this.#A=e.resources.map(e=>V.fromAny(e,t)),this.#I=e.customWork?F.fromAny(e.customWork):null,this.#z=e.customCost??null,this.#U=e.note??null,this.#K=e.baselineStartTime?R(e.baselineStartTime):null,this.#Y=e.baselineEndTime?R(e.baselineEndTime):null,this.#N=e.constraintType??"ASAP",this.#j=e.constraintDate?R(e.constraintDate):null,this.#q=e.properties.map(e=>W.fromAny(e));for(let e of this.#C)this.#oe(e);for(let e of this.#A)this.#we(e)}deserializePropertiesHierarchy(e,t){var s=e.parent;if(s){var r=t.find(e=>e.id==s);if(!r)throw new Error("Parent task not found: "+s);this.#D=r}this.#E=[],e.subtasks.map(e=>{var s=t.find(t=>t.id==e);if(!s)throw new Error("Subtask not found: "+e);this.#E.push(s),this.#ge(s)})}#Te(e,t){var s=this.#Q.get(e);s||(s=[],this.#Q.set(e,s)),s.push(t)}#ye(e){var t=this.#Q.get(e);if(t){for(let e of t)e.unsubscribe();this.#Q.delete(e)}}addResource(e,t,s){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 r=new V(e,t,s);return this.#A.push(r),this.#I=null,this.#z=null,this.#we(r),this.#v(),r}#we(e){this.#Te(e,e.changed$.subscribe(()=>{this.#v()}))}removeResource(e){var t=this.#A.indexOf(e);if(t<0)throw new Error("Task resource not found");this.#A.splice(t,1),this.#ye(e),this.#v()}#xe(e){switch(e){case"Minute":return"Minute";case"Hour":return"Hour";default:return"Day"}}#V(){if(this.#I)return this.#I;if(0==this.#A.length)return null;var e=this.#xe(this.length.unit),t=new F(e,0);for(let n of this.#C){var s=this.calendar.getHoursBetween(n.startTime,n.endTime);for(let n of this.#A)if(n.resource.rate){var r=n.capacity/100*s,i=F.fromHours(r,e,this.calendar);t=F.sum(t,i)}}return t}#F(){var e=0,t=null;for(let r of this.#E){var s=r.work;s&&(e+=s.toHours(this.calendar),t=t?F.maxUnit(t,s.unit):s.unit)}return t?F.fromHours(e,t,this.calendar):null}#W(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.#I&&(this.#I=e,null!==e&&this.#pe(),this.#v())}#B(){if(this.#z)return this.#z;if(0==this.#A.length)return null;var e=0;for(let i of this.#C){var t=this.calendar.getHoursBetween(i.startTime,i.endTime);for(let i of this.#A){var s=i.resource.rate;if(s){var r=i.capacity/100*t;"PerHour"==s.type?e+=s.value*r:"PerDay"==s.type&&(e+=s.value*(r/this.calendar.getHoursPerDay()))}e+=i.resource.fixedCostPerUse}}return e}#O(){var e=null;for(let s of this.#E){var t=s.cost;null!==t&&(null===e?e=t:e+=t)}return e}#X(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.#z&&(this.#z=e,null!==e&&this.#pe(),this.#v())}addProperty(e){if(this.#q.find(t=>t.name==e.name))throw new Error(`Property ${e.name} has already been added`);this.#q.push(e),this.#be(e,e.changed$.subscribe(()=>{null!==e.value&&this.#pe(),this.#v()})),null!==e.value&&this.#pe(),this.#v()}removeProperty(e){var t=this.#q.indexOf(e);if(t<0)throw new Error("Property not found");this.#q.splice(t,1),this.#Ce(e)}renameProperty(e,t){var s=this.#q.find(t=>t.name==e);s&&(s.name=t)}#be(e,t){var s=this.#_.get(e);s||(s=[],this.#_.set(e,s)),s.push(t)}#Ce(e){var t=this.#_.get(e);if(t){for(let e of t)e.unsubscribe();this.#_.delete(e)}}getPropertyByName(e){var t=this.#q.find(t=>t.name==e);return t||null}getPropertyValue(e){var t=this.getPropertyByName(e);return t?.value??null}setPropertyValue(e,t){var s=this.getPropertyByName(e);s?s.value=t:this.addProperty(new W(e,t))}arePartsOverlappingOrAdjacent(e,t){return e.startTime<=t.endTime&&t.startTime<=e.endTime}}class B{#r;get unit(){return this.#r}#i;get value(){return this.#i}constructor(e,t){this.#r=e,this.#i=t}toHours(e){var t=e.getHoursPerDay();switch(this.#r){case"Minute":return this.#i/60;case"Hour":return this.#i;case"Day":return this.#i*t;case"Week":return this.#i*e.workingDays.length*t;case"Month":return 30*this.#i*t}}#n(){switch(this.#r){case"Minute":return"m";case"Hour":return"h";case"Day":return"d";case"Week":return"w";case"Month":return"M"}}toString(){var e=this.#i.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2});return this.#i>0?"+"+e+this.#n():e+this.#n()}equals(e){return this.#r==e.unit&&this.#i==e.value}static zero(){return new B("Day",0)}static tryParse(e){const t=e.match(/^([+-]?\d+(\.\d+)?)([mhdwM])$/);if(!t)return null;const s=parseFloat(t[1]),r=t[3];if(Math.abs(s)>1e3)return null;var i="Day";switch(r){case"m":i="Minute";break;case"h":i="Hour";break;case"d":i="Day";break;case"w":i="Week";break;case"M":i="Month"}return new B(i,s)}static parse(e){var t=B.tryParse(e);if(!t)throw new Error("Failed to parse lag "+e);return t}toAny(){return{unit:this.#r,value:this.#i}}static fromAny(e){var t=e.unit,s=e.value;return new B(t,s)}}class O{#u;get id(){return this.#u}#ke;get from(){return this.#ke}#Se;get to(){return this.#Se}#R;get type(){return this.#R}#$e;get lag(){return this.#$e}#x=null;get list(){return this.#x}set list(e){if(this.#x)throw new Error("Once assigned the list cannot be changed");e!=this.#x&&(this.#x=e)}constructor(e,t,s,r,i){this.#ke=t,this.#Se=s,this.#R=r,this.#$e=i??B.zero(),this.#u=e||H(30)}toAny(){var e={};return e.id=this.#u,e.type=this.#R,e.from=this.#ke.id,e.to=this.#Se.id,0!==this.#$e.value&&(e.lag=this.#$e.toAny()),e}static fromAny(e,t){var s=e.id,r=t.find(t=>t.id==e.from),i=t.find(t=>t.id==e.to);if(!r||!i)throw new Error("Task used in a link not found");var n=e.type,a=e.lag?B.fromAny(e.lag):void 0;return new O(s,r,i,n,a)}}function X(e,t){return"Finish"===e&&"Start"===t?"FinishToStart":"Start"===e&&"Start"===t?"StartToStart":"Finish"===e&&"Finish"===t?"FinishToFinish":"StartToFinish"}class U{#x;#d;#Ee;get calendar(){return this.#d.getValue()}constructor(e,t,s){this.#x=e,this.#d=t,this.#Ee=s}getTotalLength(e){for(var t=0,s=0;s<e.partsLength;s++)t+=e.length.value;return t}getProgressTime(e){for(var t=this.getTotalLength(e),s=e.progress/100*t,r=null,i=0;i<e.partsLength;i++){var n=e.getPart(i);if(null===r&&(r=n.startTime),Math.abs(s)<=1e-4)break;if(s>=n.length.value)r=n.endTime,s-=n.length.value;else r=new L(n.length.unit,s).getEndTime(n.startTime,this.calendar),s=0}return r}update(e){var t=new Date;if("Task"==e.type||"Milestone"==e.type){var s=[];if("Task"==e.type&&e.progress<100){var r=this.getProgressTime(e);if(r.getTime()<t.getTime()){var i=function(e,t){const s=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()),r=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),i=864e5;return Math.abs((r-s)/i)}(r,t);i>0&&s.push(this.formatDelayedMessage(i))}}this.#Re(e,s),e.warnings=s}else e.warnings=[]}#Re(e,t){var s=e.constraintDate;if(s){var r=this.#Ee.getValue(),i=s.toLocaleDateString(r.language);switch(e.constraintType){case"SNLT":e.startTime&&e.startTime.getTime()>s.getTime()&&t.push(r.warnings.constraintViolation(r.constraints.SNLT,i));break;case"FNLT":e.endTime&&e.endTime.getTime()>s.getTime()&&t.push(r.warnings.constraintViolation(r.constraints.FNLT,i));break;case"MSO":var n=this.calendar.moveToStartShift(new Date(s),!0);e.startTime&&e.startTime.getTime()!==n.getTime()&&t.push(r.warnings.constraintViolation(r.constraints.MSO,i));break;case"MFO":n=this.calendar.getEndOfWorkingDay(new Date(s));e.endTime&&e.endTime.getTime()!==n.getTime()&&t.push(r.warnings.constraintViolation(r.constraints.MFO,i))}}}updateAll(){for(var e=0;e<this.#x.length;e++)this.update(this.#x.getTask(e))}formatDelayedMessage(e){var t=this.#Ee.getValue(),s=t.warnings.behindSchedule;return 1==e?s+=" "+t.warnings.behindScheduleByOneDay:e>1&&(s+=" "+t.warnings.behindScheduleByDays(e)),s}}class N{#Me=[];#De=[];#He;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;#d;#Z;#Pe=!1;#Le=!1;#Ae=null;constructor(e,s,r){this.#d=e,this.#Z=s,this.#Ie(),this.#He=new U(this,this.#d,r??new t({language:"en-US"}))}get length(){return this.#Me.length}get linksLength(){return this.#De.length}#Ve=!1;#Fe=new Set;get evaluatingDependencies(){return this.#Ve}evaluatingDependenciesFinished$=new e;complexOperationFinished$=new e;get filter(){return this.#Ae}set filter(e){this.#Ae=e,this.#We()}#We(){for(var e=this.#Ae,t=0;t<this.#Me.length;t++)this.#Me[t].filtered=!1;if(e){for(t=0;t<this.#Me.length;t++){"Empty"===(s=this.#Me[t]).type?s.filtered=!0:"Summary"!==s.type&&(s.filtered=!e(s))}for(t=this.#Me.length-1;t>=0;t--){var s;"Summary"===(s=this.#Me[t]).type&&(s.filtered=!this.#ze(s))}this.filterChanged$.next()}else this.filterChanged$.next()}#ze(e){for(var t=0;t<e.subtasksLength;t++){if(!e.getSubtask(t).filtered)return!0}return!1}#Be=new Map;getTask(e){if(e<0||e>=this.#Me.length)throw new Error("Index out of range");return this.#Me[e]}getTaskById(e){return this.#Me.find(t=>t.id==e)??null}getLink(e){if(e<0||e>=this.#De.length)throw new Error("Index out of range");return this.#De[e]}indexOf(e){return this.#Me.indexOf(e)}#Ie(){this.#Pe=!0;for(var e=0;e<100;e++)this.addEmptyTask();this.#Pe=!1}#Oe(e,t){var s=this.#Be.get(e);s||(s=[],this.#Be.set(e,s)),s.push(t)}#Xe(e){var t=this.#Be.get(e);if(t){for(let e of t)e.unsubscribe();this.#Be.delete(e)}}addEmptyTask(){var e=new z(null,this.#d,this.#Z);return this.#Ue(e,this.#Me.length)}insertEmptyTask(e){var t=new z(null,this.#d,this.#Z);return this.#Ue(t,e)}addTask(e){if(e.list)throw new Error("The task is already included in a list of tasks");if(this.#Me.includes(e))throw new Error("The task is already included in this list of tasks");return this.#Ue(e,this.#Me.length)}insertTask(e,t){if(t.list)throw new Error("The task is already included in a list of tasks");return this.#Ue(t,e)}#Ue(e,t){return e.list=this,this.#Me.splice(t,0,e),this.#Ne(e),this.#Pe||this.#Le||(this.taskAdded$.next({task:e}),this.#He.update(e),this.complexOperationFinished$.next()),e}getFirstTaskIndex(e){var t=null;for(let r of e){var s=this.indexOf(r);(null===t||t>s)&&(t=s)}return t}#Ne(e){this.#Oe(e,e.typeChanged$.subscribe(e=>{this.#je(e)})),this.#Oe(e,e.changed$.subscribe(e=>{this.#Ke(e.task)})),this.#Oe(e,e.startTimeChanged$.subscribe(e=>{this.#Ye(e.task)})),this.#Oe(e,e.endTimeChanged$.subscribe(e=>{this.#qe(e.task)})),this.#Oe(e,e.collapsedChanged$.subscribe(e=>{this.#Ze(e.task)})),this.#Oe(e,e.subtaskAdded$.subscribe(e=>{this.#Ge(e.task)})),this.#Oe(e,e.resourceAdding$.subscribe(e=>{this.#Je(e)}))}#Qe(e){var t=this.#Me.indexOf(e);if(t<0)throw new Error("Task is not included in the task sheet");return t}#Ke(e){"Empty"!=e.type&&"Summary"!=e.type||(this.#De=this.#De.filter(t=>t.from!=e&&t.to!=e)),this.taskChanged$.next({task:e}),this.#He.update(e),this.#Ae&&this.#We()}#Ye(e){if(!this.#Fe.has(e)){this.#Fe.add(e);var t=!1;this.#Ve||(this.#Ve=!0,t=!0),this.#_e(e);var s=this.#De.filter(t=>t.to==e);for(let t of s){var r=this.#et(t);r&&e.startTime.getTime()<r.getTime()&&(e.startTime=r)}var i=this.#De.filter(t=>t.from==e&&("StartToStart"==t.type||"StartToFinish"==t.type));for(let e of i)this.#tt(e);t&&(this.#Ve=!1,this.evaluatingDependenciesFinished$.next()),queueMicrotask(()=>this.#Fe.delete(e))}}#qe(e){var t=!1;this.#Ve||(this.#Ve=!0,t=!0);var s=this.#De.filter(t=>t.from==e&&("FinishToStart"==t.type||"FinishToFinish"==t.type));for(let e of s)this.#tt(e);t&&(this.#Ve=!1)}#et(e){var t=this.#d.getValue(),s=e.lag.toHours(t);switch(e.type){case"FinishToStart":return e.from.endTime?t.addHours(new Date(e.from.endTime),s):null;case"StartToStart":return e.from.startTime?t.addHours(new Date(e.from.startTime),s):null;case"FinishToFinish":case"StartToFinish":return null}}#_e(e){var t=this.#d.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 s=t.getHoursBetween(e.endTime,e.constraintDate);e.startTime=t.addHours(new Date(e.startTime),s)}break;case"MSO":if(!e.constraintDate||!e.startTime)break;var r=t.moveToStartShift(e.constraintDate,!0);e.startTime.getTime()!==r.getTime()&&(e.startTime=r);break;case"MFO":if(!e.constraintDate||!e.endTime||!e.startTime)break;if(e.endTime.getTime()!==e.constraintDate.getTime()){s=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),s)}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()){s=-t.getHoursBetween(e.constraintDate,e.endTime);e.startTime=t.addHours(new Date(e.startTime),s)}}}#tt(e){var t=e.to,s=e.from,r=this.#d.getValue(),i=e.lag.toHours(r);switch(e.type){case"FinishToStart":var n=r.addHours(new Date(s.endTime),i);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=r.addHours(new Date(s.startTime),i);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=r.addHours(new Date(s.endTime),i),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=r.addHours(new Date(s.startTime),i),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}}}#je(e){if("Empty"==e.oldType&&"Empty"!=e.newType){var t=this.#st(e.task);if(!t)return;"Summary"==t.type?t.addSubtask(e.task):t.parent&&t.parent.addSubtask(e.task)}this.taskTypeChanged$.next(e)}#Ze(e){this.taskCollapsedChanged$.next({task:e})}#Ge(e){this.#De=this.#De.filter(t=>!(t.from==e&&t.to==e.parent||t.to==e&&t.from==e.parent))}#Je(e){this.resourceAdding$.next(e)}#rt(e){var t=[...e];return t.sort((e,t)=>e.number-t.number),t}#it(e){return this.getPreviousNonEmpty(e,e.level)}getLastNonEmpty(e=!0){for(var t=this.#Me.length-1;t>=0;){var s=this.#Me[t];if("Empty"!=s.type&&(e||!s.hidden))return s;t--}return null}getPreviousNonEmpty(e,t){for(var s=this.#Qe(e);;){if(--s<0)return null;if("Empty"!=this.#Me[s].type){if(null===t)return this.#Me[s];if(this.#Me[s].level<t)return null;if(this.#Me[s].level==t)return this.#Me[s]}}}#st(e){var t=this.#Qe(e);return t>0?this.#Me[t-1]:null}getNextVisible(e){var t=this.#Qe(e);for(t++;t<this.#Me.length;t++)if(!this.#Me[t].hidden)return this.#Me[t];return null}getPreviousVisible(e){var t=this.#Qe(e);for(t--;t>=0;t--)if(!this.#Me[t].hidden)return this.#Me[t];return null}getNextNonEmpty(e){for(var t=this.#Qe(e);;){if(++t>=this.#Me.length)return null;if("Empty"!=this.#Me[t].type)return this.#Me[t]}}#nt(e){var t=this.#Qe(e);return t<this.#Me.length-1?this.#Me[t+1]:null}#at(e){var t=[],s=null,r=null;for(let n of e){var i=this.getTaskNumber(n);null!==s&&i-1==s||(r&&r.tasks.length>0&&t.push(r),r={tasks:[]}),s=i,"Empty"!=n.type&&r.tasks.push(n)}return r&&!t.includes(r)&&r.tasks.length>0&&t.push(r),t}#ot(e){var t=null;for(let s of e)if(null===t)t=s.level;else if(t!=s.level)return!1;return!0}indent(e){if(0!=e.length){var t=this.#rt(e),s=this.#at(t);for(let e of s)if(this.#ot(e.tasks)){var r=e.tasks[0],i=this.#it(r);if(i)for(let t of e.tasks)t.parent&&t.parent.removeSubtask(t),i.addSubtask(t)}this.complexOperationFinished$.next()}}outdent(e){if(0!=e.length){var t=this.#rt(e),s=this.#at(t);for(let e of s)if(this.#ot(e.tasks)){var r=e.tasks[0],i=e.tasks[e.tasks.length-1];if(0!=r.level){var n=this.getPreviousNonEmpty(r,r.level-1);if(n){var a=this.getNextSiblings(i),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.#Me.indexOf(e)+1}getNextSibling(e){return this.getNextAtLevel(e,e.level)}getNextSiblings(e){for(var t=[];;){var s=this.getNextSibling(e);if(!s)break;t.push(s),e=s}return t}getNextAtLevel(e,t){for(var s=null,r=this.#Me.indexOf(e)+1;r<this.#Me.length;){var i=this.#Me[r],n=i.level;if(n==t){s=i;break}if(n<t&&"Empty"!=i.type)break;r++}return s}getLastDescendant(e){if(0==e.subtasksLength)return e;for(var t=null,s=null,r=0;r<e.subtasksLength;r++){var i=e.getSubtask(r),n=this.indexOf(i);(null===t||t<n)&&(t=n,s=i)}return this.getLastDescendant(s)}existsLinkBetween(e,t){return null!=this.#De.find(s=>s.from==e&&s.to==t||s.from==t&&s.to==e)}isValidTypeForLink(e){return"Task"==e.type||"Milestone"==e.type}wouldCreateCycle(e,t){var s=new Set,r=[t];for(s.add(t);r.length>0;){var i=r.shift();if(i===e)return!0;for(var n of this.#De)n.from!==i||s.has(n.to)||(s.add(n.to),r.push(n.to))}return!1}addLink(e,t,s,r){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 i=new O(null,e,t,s,r);return this.#De.push(i),i.list=this,this.#tt(i),this.linkAdded$.next({link:i}),i}removeTask(e){var t=this.#Me.indexOf(e);if(t<0)throw new Error("Task is not in the list of tasks");var s=this.#De.filter(t=>t.from==e||t.to==e);for(let e of s)this.removeLink(e);e.parent&&e.parent.removeSubtask(e),this.#Me.splice(t,1),this.#Xe(e),this.taskRemoved$.next({task:e}),this.complexOperationFinished$.next()}removeTasks(e){for(let t of e)this.removeTask(t)}removeLink(e){var t=this.#De.indexOf(e);if(t<0)throw new Error("Link is not in the list of links");this.#De.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.#rt(e),s=this.#at(t);for(let e of s)if(this.#ot(e.tasks)){var r=e.tasks[0],i=e.tasks[e.tasks.length-1],n=this.#st(r);if(n){n&&n.level>r.level&&(n=this.#it(r));var a=this.getLastDescendant(i),o=this.indexOf(a),l=this.indexOf(r),h=this.#Me.slice(l,o+1),c=this.indexOf(n);if(this.#Me.splice(l,o-l+1),this.#Me.splice(c,0,...h),"Empty"!=n.type&&n.level!=r.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.#rt(e),s=this.#at(t);for(let e of s)if(this.#ot(e.tasks)){var r=e.tasks[0],i=e.tasks[e.tasks.length-1],n=this.getLastDescendant(i),a=this.getNextSibling(i);if(a||(a=this.#nt(n)),a){var o=this.indexOf(n),l=this.indexOf(r),h=this.#Me.slice(l,o+1);this.#Me.splice(l,o-l+1);var c=this.getLastDescendant(a),d=this.indexOf(c);this.#Me.splice(d+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.#Me)"Empty"!=t.type&&(null===e||t.startTime.getTime()<e.getTime())&&(e=new Date(t.startTime));return e}get maxEndTime(){var e=null;for(let t of this.#Me)"Empty"!=t.type&&(null===e||t.endTime.getTime()>e.getTime())&&(e=new Date(t.endTime));return e}clear(){for(let e of this.#Me)this.#Xe(e);this.#Me=[],this.#De=[],this.#Le||this.complexOperationFinished$.next()}assign(e,t){this.#Le=!0,this.clear();for(let t of e)this.addTask(t);for(let e of t)this.#De.push(e),e.list=this;this.#Le=!1,this.#He.updateAll(),this.complexOperationFinished$.next()}getTasksUsingResource(e){var t=[];for(let s of this.#Me)s.getResourceByResourceId(e.id)&&t.push(s);return t}renameTaskProperty(e,t){for(let s of this.#Me)s.renameProperty(e,t)}}class j{workingDays;nationalHolidays;shifts;startOfWeek;defaultLengthUnit="Day";constructor(){this.workingDays=["Monday","Tuesday","Wednesday","Thursday","Friday"],this.nationalHolidays=[],this.shifts=[],this.shifts.push(new K(new Y(8,0),new Y(12,0))),this.shifts.push(new K(new Y(13,0),new Y(17,0))),this.startOfWeek="Sunday"}#lt(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(T(t,e))return!1;for(let t of this.workingDays)if(this.#lt(t)==e.getDay())return!0;return!1}#ht(e){for(var t=0;t<this.shifts.length;t++){var s=this.shifts[t];if(s.contains(e))return s;var r=new Date(e);if(r.setHours(s.start.hour,s.start.minute,0,0),r.getTime()>=e.getTime())return s}return null}#ct(e,t){for(var s=this.shifts.length-1;s>=0;s--){var r=this.shifts[s];if(r.contains(e,t))return r;var i=new Date(e);if(i.setHours(r.end.hour,r.end.minute,0,0),i.getTime()<=e.getTime())return r}return null}moveToStartShift(e,t){for(var s=null;!this.isWorkingDay(e)||!(s=this.#ht(e));)e=f(e);return s.contains(e)&&t||(e=new Date(e)).setHours(s.start.hour,s.start.minute,0,0),e}moveToEndShift(e,t){var s=null;for(0==e.getHours()&&0==e.getMinutes()&&(e=w(e));!this.isWorkingDay(e)||!(s=this.#ct(e,!0));)e=w(e);return s.contains(e)&&t||(e=new Date(e)).setHours(s.end.hour,s.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=p(e);!this.isWorkingDay(e);)e=f(e);var t=this.shifts[this.shifts.length-1];return e.setHours(t.end.hour,t.end.minute),e}#dt(e,t){if(!this.isWorkingDay(e))return 0;var s=0;for(let n of this.shifts){var r=new Date(e);r.setHours(n.start.hour),r.setMinutes(n.start.minute);var i=new Date(e);i.setHours(n.end.hour),i.setMinutes(n.end.minute),s+=x(e,t,r,i)}return s/60}getHoursBetween(e,t){for(var s=0,r=new Date(e);;){if(T(r,t)){s+=this.#dt(r,t);break}var i=new Date(r);i.setHours(0,0,0),i.setDate(r.getDate()+1),s+=this.#dt(r,t),r=i}return s}getStartOfWeek(e){(e=new Date(e)).setHours(0,0,0,0);for(var t=this.#lt(this.startOfWeek);e.getDay()!=t;)(e=new Date(e)).setDate(e.getDate()-1);return e}addHours(e,t,s){var r=this.getHoursPerDay();if(t>0)for(;t>=r;){var i=f(e);t-=this.getHoursBetween(e,i),e=i}else if(t<0)for(;t<=-r;){var n=p(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||s&&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 K{start;end;constructor(e,t){this.start=e,this.end=t}contains(e,t){var s=60*this.start.hour+this.start.minute,r=60*this.end.hour+this.end.minute,i=60*e.getHours()+e.getMinutes();return(!t&&i>=s||!0===t&&i>s)&&r>i}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 Y{hour;minute;constructor(e,t){this.hour=e,this.minute=t}}class q{#ut;constructor(e){this.#ut=e}render(e){var t=e.getContext("2d"),s=this.#ut.theme$.getValue(),r=s.headerHeight,i=this.getContentBottom(e.height);t.beginPath(),t.rect(0,r+2,e.width,e.height-r-2),t.fillStyle=s.chart.content.backgroundColor,t.fill(),this.#gt(e,t,i),this.#mt(e,t,i),this.#ut.showGridLines$.getValue()&&(this.#vt(e,t,i),this.drawHorizontalGridLines(e,t))}#gt(e,t,s){for(var r=this.#ut.timeline.currentZoom,i=r.axis[0],n=this.#ut.timeline.visibleStartTime$.getValue(),a=this.#ut.calendar,o=i.getCellStartTime(n),l=i.getCellStartX(o,n,r),h=this.#ut.theme$.getValue().headerHeight;!(l>e.width);){var c=i.getAdd(o,1),d=i.getCellStartX(c,n,r),u=!1;"Day"==i.unit&&(u=!a.isWorkingDay(o)),"Hour"!=i.unit&&"Minute"!=i.unit||(u=0==a.getHoursBetween(o,c)),u&&(t.beginPath(),t.rect(l,h+2,d-l,s-h-2),t.fillStyle=this.#ut.theme$.getValue().chart.content.nonWorkingTimeStyle,t.fill()),o=c,l=d}}#mt(e,t,s){for(var r=this.#ut.timeline.currentZoom,i=r.axis[1],n=this.#ut.timeline.visibleStartTime$.getValue(),a=i.getCellStartTime(n),o=this.#ut.theme$.getValue().headerHeight;;){var l=i.getCellStartX(a,n,r);if(l>e.width)break;t.beginPath(),t.moveTo(l+.5,o+2),t.lineTo(l+.5,s),t.strokeStyle=this.#ut.theme$.getValue().chart.content.tier2SeparatorLineStyle,t.setLineDash([2,2]),t.stroke(),a=i.getAdd(a,1)}t.setLineDash([])}#vt(e,t,s){for(var r=this.#ut.timeline.currentZoom,i=r.axis[0],n=this.#ut.timeline.visibleStartTime$.getValue(),a=i.getCellStartTime(n),o=i.getCellStartX(a,n,r),l=this.#ut.theme$.getValue(),h=l.headerHeight,c=l.chart.content.gridLineColor;!(o>e.width);)t.beginPath(),t.moveTo(o+.5,h+2),t.lineTo(o+.5,s),t.strokeStyle=c,t.stroke(),a=i.getAdd(a,1),o=i.getCellStartX(a,n,r)}}class Z extends q{#pt;constructor(e){super(e),this.#pt=e}getContentBottom(e){for(var t=this.#pt.theme$.getValue(),s=t.rowHeight+1,r=0,i=0;i<this.#pt.list.length;i++)this.#pt.list.getTask(i).hidden||r++;var n=t.headerHeight+2+r*s;return Math.min(n,e)}drawHorizontalGridLines(e,t){var s=this.#pt.theme$.getValue(),r=s.headerHeight+2,i=s.chart.content.gridLineColor,n=s.rowHeight+1;r-=this.#pt.sheetScrollTop$.getValue();for(var a=0;a<this.#pt.list.length;a++){if(!this.#pt.list.getTask(a).hidden){var o=Math.floor(r)-.5;t.beginPath(),t.moveTo(0,o),t.lineTo(e.width,o),t.strokeStyle=i,t.stroke(),r+=n}}}}class G{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 G(this.x,this.y)}scaled(e){return new G(this.x*e,this.y*e)}toString(){return`${this.x};${this.y}`}static fromString(e){var t=e.split(";");return new G(parseFloat(t[0]),parseFloat(t[1]))}moveToRaster(){return this.x=Math.floor(this.x)+.5,this.y=Math.floor(this.y)+.5,this}}class J{x;y;width;height;constructor(e,t,s,r){this.x=e,this.y=t,this.width=s,this.height=r}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 G(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 J(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 J(this.x*e,this.y*e,this.width*e,this.height*e)}scaledAt(e){return new J(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 J(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 Q="Arial";class _{name=Q;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 _;return t.name=e.name,t.size=e.size,t.weight=e.weight,t.italic=e.italic,t}static from(e,t){var s=new _;return s.name=e??Q,s.size=t??11,s}clone(){var e=new _;return e.name=this.name,e.size=this.size,e.weight=this.weight,e.italic=this.italic,e}}class ee{#ft;#wt;get startDate(){return this.#ft}get endDate(){return this.#wt}constructor(e,t){this.#ft=e,this.#wt=t}}function te(e){var t=e.measureText("gŇ");return t.fontBoundingBoxAscent+t.fontBoundingBoxDescent}function se(e,t,s,r,i,n=null,a=!1){var o=re(e,t,s.width),l=s.x,h=s.y,c=te(e),d=o.measure.width;h=s.y+(s.height-c)/2,h+=o.measure.fontBoundingBoxAscent,"Center"==r&&(l=s.x+(s.width-d)/2),"Right"==r&&(l=s.right-d),window.devicePixelRatio=2,e.textAlign="left",e.textBaseline="top",e.fillStyle=n??"#000000",e.fillText(o.text,l,h),a&&(e.beginPath(),e.moveTo(l,h+c-.26*c),e.lineTo(l+d,h+c-.26*c),e.stroke())}function re(e,t,s){e.textBaseline="top";var r=t.split(" "),i=r[0],n=!1;if(1==r.length)e.measureText(t).width>s&&(n=!0);else for(var a=1;a<r.length;a++){if(i+=" "+r[a],e.measureText(i).width>s){n=!0;break}}if(n)for(;;){var o=i+"...";if(e.measureText(o).width<=s){i=o;break}if(0==i.length){i="...";break}i=i.substring(0,i.length-1)}return{text:i,measure:e.measureText(i)}}class ie{#ut;constructor(e){this.#ut=e}render(e){var t=e.getContext("2d"),s=this.#ut.theme$.getValue().headerHeight,r=new J(1,1,e.width,s);t.beginPath(),t.rect(r.x,r.y,r.width,r.height),t.fillStyle=this.#ut.theme$.getValue().chart.header.backgroundColor,t.fill(),t.beginPath(),t.moveTo(0,.5),t.lineTo(e.width+.5,.5),t.moveTo(0,s+1.5),t.lineTo(e.width+.5,s+1.5),t.strokeStyle=this.#ut.theme$.getValue().chart.header.cellBorderColor,t.stroke();var i=Math.floor((s+1)/2)+.5;t.beginPath(),t.moveTo(0,i),t.lineTo(e.width,i),t.stroke();var n=this.#ut.timeline.currentZoom;this.#Tt(e,n.axis[0],1),this.#Tt(e,n.axis[1],0)}#Tt(e,t,s){var r=e.getContext("2d"),i=this.#ut.timeline.visibleStartTime$.getValue(),n=t.getCellStartTime(i),a=this.#ut.timeline.currentZoom,o=this.#ut.settings.theme,l=o.chart.header,h=this.#ut.theme$.getValue().headerHeight,c=s*h/2+1,d=l.cellDividerPadding;r.beginPath();var u=t.getCellStartX(n,i,a);r.font=o.font.toString(1),r.fillStyle=l.textColor;for(var g=l.cellDividerColor??l.cellBorderColor;!(u>e.width);){r.moveTo(u+.5,c+d),r.lineTo(u+.5,c+h/2-d);var m=t.formatter(n);n=t.getAdd(n,1);var v=t.getCellStartX(n,i,a);se(r,m,new J(u+5,c,v-u-10,h/2),"Left",0,l.textColor),u=v}r.strokeStyle=g,r.stroke()}}class ne{#pt;constructor(e){this.#pt=e}get rowHeight(){return this.#pt.theme$.getValue().rowHeight+1}getRowY(e){return this.#pt.getRowY(e)}getContentBottom(e){for(var t=this.#pt.theme$.getValue(),s=0,r=0;r<this.#pt.list.length;r++)this.#pt.list.getTask(r).hidden||s++;var i=t.headerHeight+2+s*this.rowHeight;return Math.min(i,e)}}class ae extends ne{#yt;constructor(e){super(e),this.#yt=new ie(e)}render(e){this.#yt.render(e)}}class oe{#xt;#bt;#Ct;#ut;#kt;#St;#$t=null;#Et=null;#Rt=!1;#Mt=!1;constructor(e,t,s,r,i){this.#xt=t,this.#Ct=r,this.#ut=e,this.#kt=i,this.#St={isMoving:!1,originalX:null,originalStart:null},this.#xt.addEventListener("scroll",()=>{this.#Dt()}),e.dividerResizing$.subscribe(e=>{this.#Mt=e,e||this.#Ht()}),this.#xt.addEventListener("mousedown",e=>{this.#Pt(e)}),this.#xt.addEventListener("mousemove",e=>{this.#Lt(e)}),this.#xt.addEventListener("mouseup",()=>{this.#At()}),this.#xt.addEventListener("mouseleave",()=>{this.#It()}),this.#ut.timeline.zoomIndex$.subscribe(()=>{this.#Vt()}),this.#ut.timeline.visibleStartTime$.subscribe(()=>{this.#Ft()}),this.#ut.projectTimeline$.subscribe(()=>{this.#Wt()}),this.#Ht(),this.#bt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#zt())}),this.#bt.observe(this.#xt)}#zt(){this.#Bt()}#Pt(e){var t=this.#ut.theme$.getValue();e.offsetY<=t.headerHeight+2&&(this.#St.isMoving=!0,this.#St.originalX=e.offsetX,this.#St.originalStart=this.#ut.timeline.visibleStartTime$.getValue(),this.#xt.style.cursor="grabbing")}#Lt(e){if(this.#St.isMoving){var t=this.#ut.timeline.currentZoom,s=t.axis[0],r=e.offsetX-this.#St.originalX,i=this.#Ot(s,t),n=new Date(this.#St.originalStart.getTime()-r*i);this.#Xt(n),this.#Ht()}}#Ot(e,t){var s=this.#St.originalStart,r=e.getCellStartTime(s);return(e.getAdd(r,1).getTime()-r.getTime())/t.baseCellWidth}#At(){this.#Ut()}#It(){this.#Ut()}#Xt(e){this.#Rt=!0,this.#ut.timeline.visibleStartTime$.next(e),this.#Rt=!1}#Ut(){this.#St.isMoving=!1,this.#xt.style.cursor="default";var e=this.#ut.timeline.currentZoom.axis[0],t=this.#ut.timeline.visibleStartTime$.getValue();this.#Xt(e.getCellStartTime(t)),this.#Ht(),this.#Bt()}#Bt(){var e=this.#ut.timeline.currentZoom,t=e.axis[0],s=this.#ut.timeline.visibleStartTime$.getValue(),r=this.#xt.offsetWidth/e.baseCellWidth,i=Math.round(r/2);this.#$t=t.getAdd(s,i)}#Vt(){null===this.#$t&&this.#Bt();var e=this.#ut.timeline.currentZoom,t=e.axis[0],s=this.#ut.timeline.visibleStartTime$,r=this.#xt.offsetWidth/e.baseCellWidth,i=Math.round(-r/2),n=t.getCellStartTime(t.getAdd(this.#$t,i));s.next(n),this.#Ht()}#Ft(){this.#Rt||(this.#Bt(),this.#Ht())}#Ht(){var e=this.#ut.timeline.currentZoom,t=e.axis[0],s=this.#ut.timeline.visibleStartTime$.getValue(),r=this.#Nt(),i=this.#jt(),n=t.getCellStartX(i,s,e)-t.getCellStartX(r,s,e);this.#Ct.style.width=n+"px";var a=-t.getCellStartX(r,s,e);this.#Et=a,this.#xt.scrollLeft=a}#Nt(){var e=this.#ut.timeline.currentZoom.axis[0],t=this.#ut.projectTimeline$.getValue().startDate,s=new Date(t);s.setDate(s.getDate()-30);var r=e.getAdd(e.getCellStartTime(t),-3),i=e.getCellStartTime(s),n=this.#kt.getMinStartTime();return n?(n=p(n),n=e.getAdd(e.getCellStartTime(n),-3)):n=r,new Date(Math.min(r.getTime(),i.getTime(),n.getTime()))}#jt(){var e=this.#ut.timeline.currentZoom.axis[0],t=this.#ut.projectTimeline$.getValue().endDate,s=e.getAdd(e.getCellStartTime(t),3),r=e.getCellStartTime(t),i=this.#kt.getMaxEndTime();return i?(i=p(i),i=e.getAdd(e.getCellStartTime(i),3)):i=s,e.getAdd(new Date(Math.max(s.getTime(),r.getTime(),i.getTime())),1)}handleResize(){this.#Ht()}#Dt(){if(!(this.#Mt||this.#ut.autoScrolling||null!==this.#Et&&Math.abs(this.#xt.scrollLeft-this.#Et)<1)){var e=this.#ut.timeline.currentZoom,t=e.axis[0],s=this.#xt.scrollLeft,r=Math.round(s/e.baseCellWidth),i=this.#Nt();this.#Xt(t.getAdd(i,r)),this.#Bt()}}#Wt(){this.#Ht();var e=this.#ut.timeline.currentZoom.axis[0],t=this.#ut.projectTimeline$.getValue(),s=new Date(t.startDate),r=m();r.getTime()>s.getTime()&&(s=r),s.setDate(s.getDate()-1),this.#Xt(e.getCellStartTime(s)),this.#Ht()}destroy(){this.#bt.disconnect()}}class le extends oe{constructor(e,t,s,r){super(e,t,s,r,{getMinStartTime:()=>e.list.minStartTime,getMaxEndTime:()=>e.list.maxEndTime})}}class he{handled;needsRedraw;static handled=new he(!0,!0);static notHandled=new he(!1,!1);static notHandledNeedsRedraw=new he(!1,!0);constructor(e,t){this.handled=e,this.needsRedraw=t}}class ce{#ut;ignoreRightButton=!0;ignoreWhenCannotEdit=!0;alwaysHandleEvents=!1;canvas;operationComplete$=new e;get canEdit(){return this.#ut.canEdit}constructor(e){this.#ut=e}#Kt=!1;set isInOperation(e){this.#Kt&&!e&&this.operationComplete$.next(),this.#Kt=e}get isInOperation(){return this.#Kt}async onMouseMove(e,t){return he.notHandled}async onMouseDown(e,t,s){return he.notHandled}async onMouseUp(e,t,s){return he.notHandled}async onKeyDown(e,t){return this.isInOperation&&"Escape"===t.key?(this.isInOperation=!1,this.setCursor("default"),he.handled):he.notHandled}async onMouseLeave(e,t){return he.notHandled}onContextMenu(e,t){return he.notHandled}onDblClick(e,t){return he.notHandled}onDocumentMouseMove(e,t){return he.notHandled}onDocumentMouseUp(e,t){return he.notHandled}clear(){}init(e){this.canvas=e}onRedrawn(){}onBackgroundRedrawn(){}getCellAt(e){var t=this.#ut.timeline.currentZoom;return e.x/t.baseCellWidth}getCellEndAligned(e){var t=this.getCellAt(e);return"Day"==this.#ut.timeline.currentZoom.axis[0].unit?Math.round(2*t)/2:Math.round(t)}getEndTimeAligned(e){var t=this.#ut.timeline.currentZoom.axis[0],s=this.#ut.timeline.visibleStartTime$.getValue(),r=t.getAdd(s,Math.floor(e));if("Day"==t.unit&&(e-Math.floor(e)>0&&this.#ut.calendar.isWorkingDay(r))){var i=this.#ut.calendar.getHoursPerDay();r=this.#ut.calendar.addHours(r,i/2)}return r}setCursor(e){this.#ut.chartCursor$.next(e)}}class de{#pt;constructor(e){this.#pt=e}getTotalWidth(e){for(var t=this.#pt.timeline.currentZoom,s=t.axis[0],r=this.#pt.timeline.visibleStartTime$.getValue(),i=0,n=0;n<e.partsLength;n++){var a=e.getPart(n),o=s.getX(a.startTime,r,t);i+=s.getX(a.endTime,r,t)-o}return i}getProgressAt(e,t){for(var s=this.#pt.timeline.currentZoom,r=s.axis[0],i=this.#pt.timeline.visibleStartTime$.getValue(),n=this.getTotalWidth(e),a=0,o=0;o<e.partsLength;o++){var l=e.getPart(o),h=r.getX(l.startTime,i,s),c=r.getX(l.endTime,i,s);if(h>=t)break;t>=Math.floor(h)&&t<=Math.ceil(c)?a+=(t-h)/n:a+=(c-h)/n}return Math.round(100*a)}getProgressX(e,t){for(var s=this.#pt.timeline.currentZoom,r=s.axis[0],i=this.#pt.timeline.visibleStartTime$.getValue(),n=t/100*this.getTotalWidth(e),a=null,o=0;o<e.partsLength;o++){var l=e.getPart(o),h=r.getX(l.startTime,i,s),c=r.getX(l.endTime,i,s);if(null===a&&(a=h),Math.abs(n)<=1e-4)break;n>=c-h?(a=c,n-=c-h):(a=h+n,n=0)}return a}}class ue extends ne{#pt;#Yt;constructor(e){super(e),this.#pt=e,this.#Yt=new de(e)}render(e){var t=e.getContext("2d");this.#qt(e,t),this.#Zt(e,t),this.#Gt(e,t)}#qt(e,t){var s=this.#pt.sheetSelectedTasks$.getValue();if(0!==s.length){var r=this.#pt.theme$.getValue().rowHeight+1;for(var i of s){var n=this.getRowY(i);t.beginPath(),t.rect(0,n,e.width,r),t.fillStyle="rgba(0, 0, 0, 0.02)",t.fill()}}}#Gt(e,t){var s=this.#pt.chartTaskHover$.getValue();if(!s){var r=this.#pt.sheetRowMouseOver$.getValue();r&&(s=r.task)}if(s){var i=this.getRowY(s),n=this.#pt.theme$.getValue().rowHeight+1;t.beginPath(),t.rect(0,i,e.width,n),t.fillStyle="rgba(0, 0, 0, 0.02)",t.fill()}}#Zt(e,t){var s=this.#pt.theme$.getValue().headerHeight+2;s-=this.#pt.sheetScrollTop$.getValue();for(var r=0;r<this.#pt.list.length;r++){var i=this.#pt.list.getTask(r);if(!i.hidden){switch(i.type){case"Task":this.#Jt(t,i,s);break;case"Milestone":this.#Qt(t,i,s);break;case"Summary":this.#_t(t,i,s)}s+=this.rowHeight}}}#Jt(e,t,s){var r=this.#pt.timeline.currentZoom,i=r.axis[0],n=this.#pt.timeline.visibleStartTime$.getValue(),a=this.#pt.theme$.getValue(),o=0,l=a.chart.content.taskHeight,h=a.chart.content.taskProgressHeight,c=a.chart.content.taskBorderRadius,d=a.chart.content.taskColors[t.color],u=d.color1,g=d.color2,m=d.borderColor,v=d.progressColor1,p=d.progressColor2,f=d.separatorColor,w=this.#pt.showCriticalPath$.getValue()&&t.isCritical,T=this.#pt.showBaseline$.getValue()&&t.baselineStartTime&&t.baselineEndTime,y=T?a.chart.content.baselineOffset:0,x=t.progress;if(T){var b=Math.floor(i.getX(t.baselineStartTime,n,r)),C=Math.floor(i.getX(t.baselineEndTime,n,r)),k=a.chart.content.baselineHeight,S=s+this.rowHeight/2-l/2-y+l+1,$=new J(b,S,C-b,k);e.beginPath(),this.#es(e,$,a.chart.content.baselineBorderRadius),e.fillStyle=a.chart.content.baselineColor,e.fill()}for(var E=0;E<t.partsLength;E++){var R=t.getPart(E),M=Math.floor(i.getX(R.startTime,n,r)),D=Math.floor(i.getX(R.endTime,n,r));e.beginPath();var H=new J(M+(m||w?.5:0),s+this.rowHeight/2-l/2-y+(m||w?0:.5),D-M,l);if(this.#es(e,H,c),e.fillStyle=ge(e,H,u,g),e.fill(),null!==x&&x>0){var P=this.#Yt.getProgressX(t,x);(P=Math.min(D,P))>M&&(e.save(),e.clip(),e.beginPath(),e.rect(H.x,H.y+l/2-h/2,P-M,h),e.fillStyle=ge(e,H,v,p),e.fill(),e.restore())}w?(e.beginPath(),this.#es(e,H,c),e.strokeStyle=a.chart.content.criticalTaskBorderColor,e.lineWidth=a.chart.content.criticalTaskBorderWidth,e.stroke(),e.lineWidth=1):m&&(e.beginPath(),this.#es(e,H,c),e.strokeStyle=m,e.stroke()),E>0&&this.#ts(e,o,M,s,l,f),o=D}if("ASAP"!==t.constraintType&&t.constraintDate&&this.#ss(e,t,s,l,y),"None"!==a.chart.content.taskLabelPosition){var L=t.getPart(0),A=t.getPart(t.partsLength-1),I=Math.floor(i.getX(L.startTime,n,r)),V=Math.floor(i.getX(A.endTime,n,r)),F=new J(I,s+this.rowHeight/2-l/2-y,V-I,l);this.#rs(e,t,F,a.chart.content.taskLabelPosition,a.chart.content.taskLabelContent,a.chart.content.taskLabelColor)}}#es(e,t,s){s>0?e.roundRect(t.x,t.y,t.width,t.height,s):e.rect(t.x,t.y,t.width,t.height)}#ts(e,t,s,r,i,n){e.beginPath();for(var a=r+this.rowHeight/2+i/2,o=t+4;!(o>=s);)e.moveTo(o,a-3),e.lineTo(o,a),o+=5;e.strokeStyle=n,e.stroke()}#is(e,t,s,r=0){var i=this.#pt.timeline.currentZoom,n=i.axis[0],a=this.#pt.timeline.visibleStartTime$.getValue(),o=this.#pt.theme$.getValue().chart.content.milestoneSize,l=Math.floor(n.getX(t.startTime,a,i)),h=s+this.rowHeight/2-o/2+r;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 J(l-o/2,h,o,o)}#Qt(e,t,s){var r=this.#pt.theme$.getValue(),i=r.chart.content.milestoneColor1,n=r.chart.content.milestoneColor2,a=r.chart.content.milestoneBorderColor,o=this.#pt.showCriticalPath$.getValue()&&t.isCritical,l=this.#pt.showBaseline$.getValue()&&t.baselineStartTime,h=l?r.chart.content.baselineOffset:0;if(l){var c=this.#pt.timeline.currentZoom,d=c.axis[0],u=this.#pt.timeline.visibleStartTime$.getValue(),g=r.chart.content.baselineMilestoneSize,m=Math.floor(d.getX(t.baselineStartTime,u,c)),v=r.chart.content.milestoneSize,p=s+this.rowHeight/2-v/2-h+v+1+g/2;e.beginPath(),e.moveTo(m,p-g/2),e.lineTo(m+g/2,p),e.lineTo(m,p+g/2),e.lineTo(m-g/2,p),e.lineTo(m,p-g/2),e.fillStyle=r.chart.content.baselineColor,e.fill()}var f=this.#is(e,t,s,-h);if(e.fillStyle=ge(e,f,i,n),e.fill(),o?(e.strokeStyle=r.chart.content.criticalMilestoneBorderColor,e.lineWidth=r.chart.content.criticalTaskBorderWidth,e.stroke(),e.lineWidth=1):a&&(e.strokeStyle=a,e.stroke()),"ASAP"!==t.constraintType&&"ALAP"!==t.constraintType&&t.constraintDate){v=r.chart.content.milestoneSize;this.#ss(e,t,s,v,h)}if("None"!==r.chart.content.milestoneLabelPosition){var w=r.chart.content.milestoneSize,T=r.chart.content.taskLabelOutsideMargin,y=new J(f.right+T,s+this.rowHeight/2-w/2-h,300,w);this.#rs(e,t,y,"Right",r.chart.content.milestoneLabelContent,r.chart.content.milestoneLabelColor)}}#_t(e,t,s){var r=this.#pt.timeline.currentZoom,i=r.axis[0],n=this.#pt.timeline.visibleStartTime$.getValue(),a=this.#pt.theme$.getValue(),o=a.chart.content.summaryHeight,l=this.#pt.showCriticalPath$.getValue()&&t.isCritical,h=this.#pt.showBaseline$.getValue()&&t.baselineStartTime&&t.baselineEndTime,c=h?a.chart.content.baselineOffset:0;if(h){var d=Math.floor(i.getX(t.baselineStartTime,n,r)),u=Math.floor(i.getX(t.baselineEndTime,n,r)),g=a.chart.content.baselineSummaryHeight,m=s+this.rowHeight/2-o/2-c+o/2+1,v=a.chart.content.summaryMarkType,p=Math.round(a.chart.content.summaryMarkWidth*g/o);e.beginPath(),e.rect(d,m,u-d,g/2),"Full"==v?(e.moveTo(d-p/2,m),e.lineTo(d+p/2,m),e.lineTo(d+p/2,m+g/2),e.lineTo(d,m+g),e.lineTo(d-p/2,m+g/2)):(e.moveTo(d,m),e.lineTo(d+p/2,m),e.lineTo(d+p/2,m+g/2),e.lineTo(d,m+g)),"Full"==v?(e.moveTo(u-p/2,m),e.lineTo(u+p/2,m),e.lineTo(u+p/2,m+g/2),e.lineTo(u,m+g),e.lineTo(u-p/2,m+g/2)):(e.moveTo(u,m),e.lineTo(u-p/2,m),e.lineTo(u-p/2,m+g/2),e.lineTo(u,m+g)),e.fillStyle=a.chart.content.baselineColor,e.fill()}var f=Math.floor(i.getX(t.startTime,n,r)),w=Math.floor(i.getX(t.endTime,n,r)),T=a.chart.content.summaryColor1,y=a.chart.content.summaryColor2,x=a.chart.content.summaryProgressColor1,b=a.chart.content.summaryProgressColor2,C=a.chart.content.summaryBorderColor,k=a.chart.content.summaryMarkType;e.beginPath();var S=new J(f+.5,s+this.rowHeight/2-o/2-c,w-f,o/2);e.rect(S.x,S.y,S.width,S.height),e.fillStyle=ge(e,S,T,y),e.fill();var $=t.progress??0;if($>0){e.beginPath();var E=new J(S.x,S.y,S.width*($/100),S.height);e.rect(E.x,E.y,E.width,E.height),e.fillStyle=ge(e,E,x,b),e.fill()}if(l?(e.beginPath(),e.rect(S.x,S.y,S.width,S.height),e.strokeStyle=a.chart.content.criticalSummaryBorderColor,e.lineWidth=a.chart.content.criticalTaskBorderWidth,e.stroke(),e.lineWidth=1):C&&(e.beginPath(),e.rect(S.x,S.y,S.width,S.height),e.strokeStyle=C,e.stroke()),this.#ns(e,f,s-c,$>0,o,k,"Left"),this.#ns(e,w,s-c,$>=100,o,k,"Right"),"None"!==a.chart.content.summaryLabelPosition){var R=new J(f,s+this.rowHeight/2-o/2-c,w-f,o);this.#rs(e,t,R,a.chart.content.summaryLabelPosition,a.chart.content.summaryLabelContent,a.chart.content.summaryLabelColor)}}#as(e,t,s,r,i,n){var a,o=this.#pt.theme$.getValue().chart.content.summaryMarkWidth;return"Full"==i?(a=new J(t-o/2+.5,s+this.rowHeight/2-r/2,o,r),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 J(t,s+this.rowHeight/2-r/2,o/2,r),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 J(t-o/2+1,s+this.rowHeight/2-r/2,o/2,r),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}#ns(e,t,s,r,i,n,a){e.beginPath();var o=this.#pt.theme$.getValue().chart.content.summaryMarkColor1,l=this.#pt.theme$.getValue().chart.content.summaryMarkColor2,h=this.#pt.theme$.getValue().chart.content.summaryMarkProgressColor1,c=this.#pt.theme$.getValue().chart.content.summaryMarkProgressColor2,d=this.#pt.theme$.getValue().chart.content.summaryBorderColor,u=this.#as(e,t,s,i,n,a);e.fillStyle=r?ge(e,u,h,c):ge(e,u,o,l),e.fill(),d&&(e.strokeStyle=d,e.stroke())}#ss(e,t,s,r,i){var n,a=this.#pt.timeline.currentZoom,o=a.axis[0],l=this.#pt.timeline.visibleStartTime$.getValue(),h=t.constraintDate,c=Math.floor(o.getX(h,l,a)),d=s+this.rowHeight/2-r/2-i-5-2;switch(t.constraintType){case"MSO":case"MFO":n="#cc4444";break;case"ALAP":n="#888888";break;default:n="#4a7cf6"}e.beginPath(),e.moveTo(c,d),e.lineTo(c+5,d+5),e.lineTo(c,d+10),e.lineTo(c-5,d+5),e.closePath(),e.fillStyle=n,e.fill()}#os(e,t){switch(t){case"Name":return e.name;case"Resource":if(0===e.resourcesLength)return null;for(var s=[],r=0;r<e.resourcesLength;r++)s.push(e.getResource(r).resource.name);return s.join(", ");case"Progress":return null!==e.progress?Math.round(e.progress)+"%":null;case"NameAndProgress":var i=null!==e.progress?" ("+Math.round(e.progress)+"%)":"";return(e.name??"")+i;case"NameAndResource":var n=null;if(e.resourcesLength>0){var a=[];for(r=0;r<e.resourcesLength;r++)a.push(e.getResource(r).resource.name);n=a.join(", ")}return n?(e.name??"")+" — "+n:e.name;default:return null}}#rs(e,t,s,r,i,n){var a=this.#os(t,i);if(a){var o=this.#pt.theme$.getValue(),l=o.chart.content.taskLabelFont.clone();l.name=o.font.name;var h=e.font;e.font=l.toString(1);var c=o.chart.content.taskLabelPadding,d=e.measureText(a),u=d.width+2*c<=s.width;if("Inside"===r||"InsideOrRight"===r&&u)e.save(),e.beginPath(),e.rect(s.x,s.y,s.width,s.height),e.clip(),se(e,a,new J(s.x+c,s.y,s.width-2*c,s.height),"Left",0,n),e.restore();else if("Right"===r||"InsideOrRight"===r){var g=o.chart.content.taskLabelOutsideMargin,m=s.right+g,v=te(e);e.fillStyle=o.chart.content.backgroundColor,e.fillRect(m-2,s.y+(s.height-v)/2-2,d.width+4,v+4),se(e,a,new J(m,s.y,300,s.height),"Left",0,n)}e.font=h}}drawTaskHighlightX1X2(e,t,s,r){var i=this.getRowY(t),n=this.#pt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.taskHeight,l=n.chart.content.taskBorderRadius,h=n.chart.content.taskColors[t.color];e.beginPath();var c=new J(s,i+a/2-o/2,r-s,o);this.#es(e,c,l),e.fillStyle=h.highlightColor,e.fill()}drawTaskProgressHighlight(e,t,s,r){var i=this.getRowY(t),n=this.#pt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.taskHeight,l=n.chart.content.taskProgressHeight,h=n.chart.content.taskBorderRadius,c=n.chart.content.taskColors[t.color];e.beginPath();var d=new J(s,i+a/2-o/2,r-s,o);this.#es(e,d,h),e.save(),e.clip(),e.beginPath(),e.rect(s,i+a/2-l/2+.5,r-s,l),e.fillStyle=c.progressHighlightColor,e.fill(),e.restore()}drawTaskHighlight(e,t){var s=this.#pt.timeline.currentZoom,r=s.axis[0],i=this.#pt.timeline.visibleStartTime$.getValue(),n=this.#pt.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(r.getX(l.startTime,i,s)),c=Math.floor(r.getX(l.endTime,i,s));this.drawTaskHighlightX1X2(e,t,h,c)}break;case"Milestone":this.#is(e,t,a),e.fillStyle=n.chart.content.milestoneHighlightColor,e.fill();break;case"Summary":h=Math.floor(r.getX(t.startTime,i,s)),c=Math.floor(r.getX(t.endTime,i,s));e.beginPath();var d=this.#as(e,h,a,n.chart.content.summaryHeight,n.chart.content.summaryMarkType,"Left"),u=this.#as(e,c,a,n.chart.content.summaryHeight,n.chart.content.summaryMarkType,"Right"),g=new J(d.right,d.y,u.x-d.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 ge(e,t,s,r){var i=e.createLinearGradient(t.x,t.y,t.x,t.bottom);return i.addColorStop(0,s),i.addColorStop(1,r),i}function me(e,t,s,r){var i=e.createLinearGradient(t.x,t.y,t.right,t.y);return i.addColorStop(0,s),i.addColorStop(1,r),i}class ve{#pt;constructor(e){this.#pt=e}drawTooltip(e,t,s,r,i){var n=this.#pt.theme$.getValue(),a=null,o=null;for(let e of t){var l=this.#pt.getRowY(e);(null===a||l<a)&&(a=l);var h=l+n.rowHeight;(null===o||h>o)&&(o=h)}var c=e.getContext("2d"),d=n.chart.content.tooltipFont.clone();d.name=n.font.name,c.font=d.toString(1);var u=this.#ls(c,i),g=null,m=a-u-20;if(m>=n.headerHeight+2+20?g="Above":(m=o+20)+u+20<e.height&&(g="Below"),null!==g){var v=this.#hs(c,i);m=Math.floor(m)+.5,s=Math.floor(s)+.5;var p=new J(s,m,v.totalWidth,u);c.beginPath(),c.rect(s,m,v.totalWidth,u),c.fillStyle=me(c,p,n.chart.content.tooltipBackgroundColor1,n.chart.content.tooltipBackgroundColor2),c.fill(),c.strokeStyle=n.chart.content.tooltipBorderColor,c.stroke();var f=v.totalWidth-30,w=s+15,T=d.clone(),y=te(c),x=new J(w,m+15,f,y);T.weight=600,c.font=T.toString(1),se(c,r,x,"Left",0,n.chart.content.tooltipTextColor);var b=m+15+y+5,C=d.clone(),k=te(c);c.font=C.toString(1);for(let e of i){var S=new J(w,b,v.nameWidth+1,k);se(c,e.name,S,"Left",0,n.chart.content.tooltipTextColor);var $=new J(w+v.nameWidth+30,b,v.valueWidth+1,k);se(c,e.value,$,"Left",0,n.chart.content.tooltipTextColor),b+=k+2}}}#ls(e,t){return this.#pt.theme$.getValue(),35+te(e)*(t.length+1)+2*(t.length-1)}#hs(e,t){this.#pt.theme$.getValue();var s=null,r=null;for(let a of t){var i=re(e,a.name,200);(null===s||i.measure.width>s)&&(s=i.measure.width);var n=re(e,a.value,200);(null===r||n.measure.width>r)&&(r=n.measure.width)}return{nameWidth:s=Math.min(100,s),valueWidth:r=Math.min(100,r),totalWidth:Math.round(30+s+r+30)}}}class pe extends ce{#pt;#cs;#ds;constructor(e){super(e),this.#pt=e,this.#cs=new ue(this.#pt),this.#ds=new ve(this.#pt)}getTaskRowAt(e){var t=this.#pt.theme$.getValue(),s=this.#pt.sheetScrollTop$.getValue()+e.y-(t.headerHeight+2);if(s<0)return null;for(var r=0,i=0;i<this.#pt.list.length;i++){var n=this.#pt.list.getTask(i);if(!n.hidden){var a=r+t.rowHeight+1;if(s>=r&&s<a)return n;r=a}}return null}getTaskAt(e){var t=this.getTaskRowAt(e);if(t){var s=null;if(!this.containsVertically(t,e))return null;var r=this.#pt.timeline.currentZoom,i=r.axis[0],n=this.#pt.timeline.visibleStartTime$.getValue(),a=this.#pt.theme$.getValue(),o=0,l=0;switch(t.type){case"Empty":return null;case"Task":var h=this.getTaskPartAt(t,e);if(!h)return null;s=h.taskPart,o=h.x1,l=h.x2;break;case"Milestone":var c=Math.floor(i.getX(t.endTime,n,r)),d=a.chart.content.milestoneSize;if(o=c-d/2,l=c+d/2,!(e.x>=o&&e.x<=l))return null;break;case"Summary":if(o=Math.floor(i.getX(t.startTime,n,r)),l=Math.floor(i.getX(t.endTime,n,r)),!(e.x>=o&&e.x<=l))return null}return{task:t,taskPart:s,x1:o,x2:l}}return null}getShapeHeight(e){var t=this.#pt.theme$.getValue();switch(e.type){case"Empty":return 0;case"Task":return t.chart.content.taskHeight;case"Milestone":return t.chart.content.milestoneSize;case"Summary":return t.chart.content.summaryHeight}}containsVertically(e,t){var s=this.getShapeHeight(e),r=this.getRowY(e)+(this.#pt.theme$.getValue().rowHeight+1)/2-s/2;return t.y>=r&&t.y<r+s}getTaskPartAt(e,t,s){for(var r=this.#pt.timeline.currentZoom,i=r.axis[0],n=this.#pt.timeline.visibleStartTime$.getValue(),a=0;a<e.partsLength;a++){var o=e.getPart(a),l=Math.floor(i.getX(o.startTime,n,r)),h=Math.floor(i.getX(o.endTime,n,r));if(s=s??0,t.x>=l&&t.x<=h+s)return{taskPart:o,x1:l,x2:h}}return null}getRowY(e){return this.#pt.getRowY(e)}drawTaskProgressHighlight(e,t,s){var r=this.canvas.getContext("2d");this.#cs.drawTaskProgressHighlight(r,e,t,s)}drawTaskHighlightX1X2(e,t,s){var r=this.canvas.getContext("2d");this.#cs.drawTaskHighlightX1X2(r,e,t,s)}drawTaskHighlight(e){var t=this.canvas.getContext("2d");this.#cs.drawTaskHighlight(t,e)}drawTooltip(e,t,s,r){this.#ds.drawTooltip(this.canvas,e,t,s,r)}}class fe extends pe{#pt;#us=null;#gs=null;#ms=null;#c=null;constructor(e){super(e),this.#pt=e}async onMouseMove(e,t){return this.isInOperation?(this.#ms=e,he.handled):he.notHandled}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;var r=this.getTaskRowAt(e),i=this.getCellAt(e);if(!r)return he.notHandled;if("Empty"!=r.type&&"Task"!=r.type)return he.notHandled;for(var n=this.#pt.timeline.currentZoom,a=n.axis[0],o=this.#pt.timeline.visibleStartTime$.getValue(),l=0;l<r.partsLength;l++){var h=r.getPart(l),c=Math.floor(a.getX(h.startTime,o,n)),d=Math.floor(a.getX(h.endTime,o,n));if(e.x>=c&&e.x<=d)return he.notHandled}return this.isInOperation=!0,this.#us=i,this.#gs=e.x,this.#ms=e,this.#c=r,this.setCursor("crosshair"),he.handled}async onMouseUp(e,t,s){if(this.isInOperation){this.isInOperation=!1,this.setCursor("default");var r=this.#vs(e);return r?(r.length.value>0&&this.#c.addPart(r.startTime,r.length),he.handled):he.handled}return he.notHandled}#vs(e){var t=this.#pt.timeline.currentZoom.axis[0],s=this.#pt.timeline.visibleStartTime$.getValue(),r=Math.round(this.#us),i=this.getCellEndAligned(e);if(i<=r)return null;var n=t.getAdd(s,r),a=this.getEndTimeAligned(i);if(n=this.#pt.calendar.moveToStartShift(n,!0),a=this.#pt.calendar.moveToEndShift(a,!0),n.getTime()>=a.getTime())return null;var o=this.#c.length?.unit??"Day";return{startTime:n,endTime:a,length:L.getLength(n,a,o,this.#pt.calendar)}}onRedrawn(){if(this.isInOperation){var e=this.#c;this.drawTaskHighlightX1X2(e,this.#gs,this.#ms.x);var t=this.#vs(this.#ms);if(t){var s=this.#pt.locale$.getValue(),r=[];r.push({name:s.labels.start,value:k(t.startTime,s.language)}),r.push({name:s.labels.end,value:k(t.endTime,s.language)}),r.push({name:s.labels.length,value:t.length.toString()}),this.drawTooltip([e],this.#gs,"Empty"==e.type?s.tooltips.addTask:s.tooltips.addTaskPart,r)}}}}class we extends pe{#pt;#ps=null;dblClick$=new e;contextMenu$=new e;constructor(e){super(e),this.ignoreRightButton=!1,this.ignoreWhenCannotEdit=!1,this.#pt=e}async onMouseMove(e,t){var s=this.getTaskRowAt(e);return s!=this.#ps&&(this.#ps=s,this.#pt.chartTaskHover$.next(s)),he.notHandled}async onMouseDown(e,t,s){return he.notHandled}async onMouseUp(e,t,s){return he.notHandled}async onKeyDown(e,t){return he.notHandled}async onMouseLeave(e,t){return this.#ps=null,this.#pt.chartTaskHover$.next(null),he.notHandled}onContextMenu(e,t){if(!this.canEdit)return he.notHandled;var s=this.getTaskAt(e);return s?(this.contextMenu$.next({mouseEvent:t,task:s.task}),he.handled):he.notHandled}onDblClick(e,t){if(!this.canEdit)return he.notHandled;var s=this.getTaskAt(e);return s?(this.dblClick$.next(s.task),he.handled):he.notHandled}}class Te extends pe{#pt;#fs=null;#gs=null;#ms=null;constructor(e){super(e),this.#pt=e}async onMouseMove(e,t){return this.isInOperation?(this.#ms=e,he.handled):he.notHandled}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;if(this.isInOperation)return he.notHandled;var r=this.getTaskAt(e);return r&&"Task"==r.task.type?(this.#fs=r,this.isInOperation=!0,this.#gs=e.x,this.#ms=e,this.setCursor("all-scroll"),he.handled):he.notHandled}async onMouseUp(e,t,s){if(this.isInOperation){this.isInOperation=!1,this.setCursor("default");var r=this.#vs(e),i=this.#fs.task,n=this.#fs.taskPart,a=i.indexOf(n);return 0==a?i.startTime=r.startTime:a>0&&(n.startTime=r.startTime),he.handled}return he.notHandled}#vs(e){var t=this.#pt.timeline.currentZoom.axis[0],s=this.#pt.timeline.visibleStartTime$.getValue(),r=e.x-this.#gs,i=this.getCellAt(new G(this.#fs.x1+r,e.y)),n=Math.round(i);return{startTime:t.getAdd(s,n)}}onRedrawn(){if(this.isInOperation){var e=this.#ms.x-this.#gs,t=this.#fs.x1+e,s=this.#fs.x2+e;this.drawTaskHighlightX1X2(this.#fs.task,t,s);var r=this.#fs.task,i=this.#pt.locale$.getValue(),n=this.#vs(this.#ms),a=[];a.push({name:i.labels.start,value:k(n.startTime,i.language)}),this.drawTooltip([r],this.#gs,1==r.partsLength?i.tooltips.moveTask:i.tooltips.moveTaskPart,a)}}}class ye extends pe{#pt;#ws=null;#gs=null;#ms=null;constructor(e){super(e),this.#pt=e}async onMouseMove(e,t){if(this.isInOperation)return this.#ms=e,he.handled;var s=this.#Ts(e);return s?(this.#ws=s,this.setCursor("ew-resize"),he.handled):(this.#ws&&(this.#ws=null,this.setCursor("default")),he.notHandled)}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;if(this.isInOperation)return he.notHandled;var r=this.#Ts(e);return r?(this.#ws=r,this.isInOperation=!0,this.#gs=e.x,this.#ms=e,this.setCursor("ew-resize"),he.handled):he.notHandled}#Ts(e){var t=this.getTaskRowAt(e);if(t){if(!this.containsVertically(t,e))return null;if("Task"==t.type){var s=this.getTaskPartAt(t,e,3);if(!s)return null;if(Math.abs(e.x-s.x2)<=3)return{task:t,taskPart:s.taskPart,x1:s.x1,x2:s.x2,deltaX:e.x-s.x2}}}return null}async onMouseUp(e,t,s){if(this.isInOperation){this.isInOperation=!1,this.setCursor("default");var r=this.#vs(e),i=this.#ws.taskPart;return r.length.value>0?i.endTime=r.endTime:i.length=new L(r.lengthUnit,0),he.handled}return he.notHandled}#vs(e){var t=this.#ms.x-this.#gs-this.#ws.deltaX,s=this.#ws.x2+t,r=this.getCellEndAligned(new G(s,e.y)),i=this.getEndTimeAligned(r);i=this.#pt.calendar.moveToEndShift(i,!0);var n=this.#ws.task,a=this.#ws.taskPart,o=n.length?.unit??"Day";return{endTime:i,length:L.getLength(a.startTime,i,o,this.#pt.calendar),lengthUnit:o}}onRedrawn(){if(this.isInOperation){var e=this.#ms.x-this.#gs-this.#ws.deltaX,t=this.#ws.x1,s=this.#ws.x2+e;this.drawTaskHighlightX1X2(this.#ws.task,t,s);var r=this.#pt.locale$.getValue(),i=this.#vs(this.#ms),n=[];n.push({name:r.labels.end,value:k(i.endTime,r.language)}),n.push({name:r.labels.length,value:i.length.toString()});var a=this.#ws.task;this.drawTooltip([this.#ws.task],this.#gs,1==a.partsLength?r.tooltips.resizeTask:r.tooltips.resizeTaskPart,n)}}}class xe extends pe{#pt;#gs=null;#ms=null;#ys=null;constructor(e){super(e),this.#pt=e}async onMouseMove(e,t){return this.isInOperation?(this.#ms=e,he.handled):he.notHandled}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;if(this.isInOperation)return he.notHandled;var r=this.getTaskAt(e);return r&&"Milestone"==r.task.type?(this.isInOperation=!0,this.#ys=r,this.#gs=e.x,this.#ms=e,this.setCursor("all-scroll"),he.handled):he.notHandled}async onMouseUp(e,t,s){if(this.isInOperation){this.isInOperation=!1,this.setCursor("default");var r=this.#vs(e);return this.#ys.task.startTime=r.startTime,he.handled}return he.notHandled}#vs(e){var t=this.#pt.timeline.currentZoom.axis[0],s=this.#pt.timeline.visibleStartTime$.getValue(),r=e.x-this.#gs,i=(this.#ys.x1+this.#ys.x2)/2+r,n=this.getCellAt(new G(i,e.y)),a=Math.round(n),o=t.getAdd(s,a);if("Minute"!=t.unit&&"Hour"!=t.unit){var l=this.#pt.calendar.getHoursPerDay();o=this.#pt.calendar.addHours(o,-l)}return{startTime:o}}onRedrawn(){if(this.isInOperation){var e=this.#ms.x-this.#gs,t=this.#ys.x1+e,s=(this.#ys.x2+e+t)/2;this.#xs(s);var r=this.#pt.locale$.getValue(),i=this.#vs(this.#ms),n=[];n.push({name:r.labels.start,value:k(i.startTime,r.language)}),n.push({name:r.labels.end,value:k(i.startTime,r.language)}),this.drawTooltip([this.#ys.task],this.#gs,r.tooltips.moveMilestone,n)}}#xs(e){var t=this.canvas.getContext("2d"),s=this.#ys.task,r=this.getRowY(s),i=this.#pt.theme$.getValue(),n=i.rowHeight+1,a=i.chart.content.milestoneSize;r=r+n/2-a/2,e-=a/2,t.beginPath(),t.moveTo(e,r+a/2),t.lineTo(e+a/2,r),t.lineTo(e+a,r+a/2),t.lineTo(e+a/2,r+a),t.lineTo(e,r+a/2),t.fillStyle="rgba(100, 120, 200, 0.3)",t.fill()}}function be(e,t,s,r){return null!=function(e,t,s,r){var i=function(e,t,s){var r=((s.x-e.x)*(t.x-e.x)+(s.y-e.y)*(t.y-e.y))/((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y));if(r<0||r>1)return null;return r}(e,t,r);if(null===i||i<0||i>1)return null;var n=Math.pow(r.x-e.x-i*(t.x-e.x),2)+Math.pow(r.y-e.y-i*(t.y-e.y),2);if(n>1/4*s*s)return null;return new G(e.x+(t.x-e.x)*i,e.y+(t.y-e.y)*i)}(e,t,s,r)}function Ce(e,t,s="#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=s,e.fill(),e.strokeStyle="#606060",e.stroke()}class ke{#pt;constructor(e){this.#pt=e}get rowHeight(){return this.#pt.theme$.getValue().rowHeight+1}getCoords(e){var t,s,r=this.#pt.timeline.currentZoom,i=r.axis[0],n=this.#pt.timeline.visibleStartTime$.getValue(),a=this.#pt.theme$.getValue();switch(e.type){case"FinishToStart":case"FinishToFinish":t=Math.floor(i.getX(e.from.endTime,n,r)),"Milestone"==e.from.type&&(t+=a.chart.content.milestoneSize/2);break;case"StartToStart":case"StartToFinish":t=Math.floor(i.getX(e.from.startTime,n,r)),"Milestone"==e.from.type&&(t-=a.chart.content.milestoneSize/2)}switch(e.type){case"FinishToStart":case"StartToStart":s=Math.floor(i.getX(e.to.startTime,n,r)),"Milestone"==e.to.type&&(s-=a.chart.content.milestoneSize/2);break;case"FinishToFinish":case"StartToFinish":s=Math.floor(i.getX(e.to.endTime,n,r)),"Milestone"==e.to.type&&(s+=a.chart.content.milestoneSize/2)}var o,l=this.#pt.getRowY(e.from)+this.rowHeight/2,h=this.#pt.list.indexOf(e.from)<this.#pt.list.indexOf(e.to)?1:-1;switch(e.type){case"FinishToStart":case"StartToFinish":var c=this.#bs(e.to,a);o=h>0?this.#pt.getRowY(e.to)+this.rowHeight/2-c/2:this.#pt.getRowY(e.to)+this.rowHeight/2+c/2;break;default:o=this.#pt.getRowY(e.to)+this.rowHeight/2}return{x1:t,y1:l,x2:s,y2:o,sign:h,type:e.type}}#bs(e,t){switch(e.type){case"Milestone":return t.chart.content.milestoneSize;case"Summary":return t.chart.content.summaryHeight;default:return t.chart.content.taskHeight}}}class Se extends pe{#pt;#Yt;#Cs=null;#ks=null;constructor(e){super(e),this.#pt=e,this.#Yt=new ke(e)}async onMouseDown(e,t,s){for(var r=0;r<this.#pt.list.linksLength;r++){var i=this.#pt.list.getLink(r);if(!i.from.hidden&&!i.to.hidden){var n=this.#Yt.getCoords(i);if(this.#Ss(n,e,i))return this.#Cs=i,this.#ks=n,this.isInOperation=!0,he.handled}}return this.#Cs=null,this.#ks=null,he.notHandled}#Ss(e,t,s){for(var r=this.#$s(e,s),i=0;i<r.length-1;i++)if(be(r[i],r[i+1],5,t))return!0;return!1}#$s(e,t){var s=e.x1,r=e.y1,i=e.x2,n=e.y2;switch(t.type){case"FinishToStart":var a=Math.max(i,s+10);return[new G(s,r),new G(a,r),new G(a,n)];case"StartToFinish":a=Math.min(i,s-10);return[new G(s,r),new G(a,r),new G(a,n)];case"StartToStart":a=Math.min(s,i)-10;return[new G(s,r),new G(a,r),new G(a,n),new G(i,n)];case"FinishToFinish":a=Math.max(s,i)+10;return[new G(s,r),new G(a,r),new G(a,n),new G(i,n)]}return[]}async onMouseUp(e,t,s){return this.isInOperation?(this.isInOperation=!1,he.handled):he.notHandled}async onKeyDown(e,t){return this.#Cs&&P(t)?(this.#pt.list.removeLink(this.#Cs),this.#Cs=null,this.#ks=null,he.handled):he.notHandled}onRedrawn(){if(this.#Cs){this.#ks=this.#Yt.getCoords(this.#Cs);var e=this.#ks,t=this.canvas.getContext("2d");Ce(t,new G(e.x1,e.y1)),Ce(t,new G(e.x2,e.y2))}}}class $e extends pe{#pt;#Es=null;#gs=null;#ms=null;#Yt;constructor(e){super(e),this.#pt=e,this.#Yt=new de(e)}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;if(this.isInOperation)return he.notHandled;var r=this.#Rs(e);return r?(this.#Es=r,this.isInOperation=!0,this.#gs=e.x,this.#ms=e,this.setCursor("ew-resize"),he.handled):he.notHandled}async onMouseMove(e,t){if(this.isInOperation)return this.#ms=e,he.handled;var s=this.#Rs(e);return s?(this.#Es=s,this.setCursor("ew-resize"),he.handled):(this.#Es&&(this.#Es=null,this.setCursor("default")),he.notHandled)}async onMouseUp(e,t,s){if(this.isInOperation){this.isInOperation=!1,this.setCursor("default");var r=this.#Yt.getProgressAt(this.#Es.task,e.x-this.#Es.deltaX);return this.#Es.task.progress=r,he.handled}return he.notHandled}#Rs(e){var t=this.getTaskRowAt(e);if(t){if(!this.containsVertically(t,e))return null;if("Task"==t.type){var s=this.#Yt.getProgressX(t,t.progress);if(Math.abs(e.x-s)<=3)return{task:t,deltaX:e.x-s}}}return null}onRedrawn(){if(this.isInOperation){for(var e=this.#pt.timeline.currentZoom,t=e.axis[0],s=this.#pt.timeline.visibleStartTime$.getValue(),r=this.#Es.task,i=this.#Yt.getProgressAt(r,this.#ms.x-this.#Es.deltaX),n=this.#Yt.getProgressX(r,i),a=0;a<r.partsLength;a++){var o=r.getPart(a),l=t.getX(o.startTime,s,e),h=t.getX(o.endTime,s,e);if(l>=n)break;this.drawTaskProgressHighlight(r,l,Math.min(h,n))}var c=this.#pt.locale$.getValue(),d=[];d.push({name:c.labels.progress,value:i.toString()}),this.drawTooltip([r],this.#gs,c.tooltips.setProgress,d)}}}class Ee extends pe{#pt;#Ms=null;#Ds=null;#Hs=!1;#Ps=null;#Ls=null;#As=null;#Is=null;#Vs=null;connectorDotsTask$=new t(null);constructor(e){super(e),this.#pt=e}async onMouseMove(e,t){if(this.#Hs)return this.#As=e,this.#Fs(e),he.handled;var s=this.getTaskRowAt(e);if(s&&("Task"===s.type||"Milestone"===s.type)){var r=this.#Ws(s,e);if(r)return this.#Ms=s,this.#Ds=r.side,this.connectorDotsTask$.next(s),this.setCursor("pointer"),new he(!0,!0);if(this.containsVertically(s,e)){var i=this.#zs(s);if(i&&e.x>=i.x1-10&&e.x<=i.x2+10)return this.#Ms===s&&null===this.#Ds||(this.#Ms=s,this.#Ds=null,this.connectorDotsTask$.next(s),this.setCursor("default")),he.notHandledNeedsRedraw}}return this.#Ms?(this.#Ms=null,this.#Ds=null,this.connectorDotsTask$.next(null),this.setCursor("default"),he.notHandledNeedsRedraw):he.notHandled}async onMouseDown(e,t,s){return 0!==s.button?he.notHandled:this.#Ms&&this.#Ds?(this.#Hs=!0,this.isInOperation=!0,this.#Ps=this.#Ms,this.#Ls=this.#Ds,this.#As=e,this.setCursor("grabbing"),he.handled):he.notHandled}async onKeyDown(e,t){return this.#Hs&&"Escape"===t.key?(this.#Hs=!1,this.isInOperation=!1,this.setCursor("default"),this.#Ps=null,this.#Ls=null,this.#Is=null,this.#Vs=null,this.#As=null,this.#Ms=null,this.#Ds=null,this.connectorDotsTask$.next(null),he.handled):he.notHandled}async onMouseUp(e,t,s){if(this.#Hs){if(this.#Hs=!1,this.isInOperation=!1,this.setCursor("default"),this.#Is&&this.#Vs){var r=X(this.#Ls,this.#Vs);try{this.#pt.list.addLink(this.#Ps,this.#Is,r)}catch(e){}}return this.#Ps=null,this.#Ls=null,this.#Is=null,this.#Vs=null,this.#As=null,he.handled}return he.notHandled}async onMouseLeave(e,t){return!this.#Hs&&this.#Ms?(this.#Ms=null,this.#Ds=null,this.connectorDotsTask$.next(null),he.notHandledNeedsRedraw):he.notHandled}onRedrawn(){var e=this.canvas.getContext("2d"),t=this.#pt.theme$.getValue(),s=t.chart.content.connectorDotRadius,r=this.#Ms;if(r){var i=this.#zs(r);if(i){var n=this.getRowY(r)+(t.rowHeight+1)/2;this.#Bs(e,i.x1-s,n,s,"Start"===this.#Ds,t,r),this.#Bs(e,i.x2+s,n,s,"Finish"===this.#Ds,t,r)}}if(this.#Hs&&this.#Ps&&this.#As){var a=this.#zs(this.#Ps);if(a){var o=this.getRowY(this.#Ps)+(t.rowHeight+1)/2,l="Start"===this.#Ls?a.x1-s:a.x2+s,h=this.#As.x,c=this.#As.y;if(this.#Is&&this.#Vs){var d=this.#zs(this.#Is);if(d){var u=this.getRowY(this.#Is);h="Start"===this.#Vs?d.x1-s:d.x2+s,c=u+(t.rowHeight+1)/2,this.#Bs(e,d.x1-s,c,s,"Start"===this.#Vs,t,this.#Is),this.#Bs(e,d.x2+s,c,s,"Finish"===this.#Vs,t,this.#Is)}}var g=t.chart.content.taskColors[this.#Ps.color];if(e.beginPath(),e.moveTo(l,o),e.lineTo(h,c),e.strokeStyle=g.linkLineColor,e.lineWidth=2,e.stroke(),e.lineWidth=1,this.#Bs(e,l,o,s,!0,t,this.#Ps),this.#Is&&this.#Vs){var m=X(this.#Ls,this.#Vs),v=this.#pt.locale$.getValue(),p=[];p.push({name:v.labels.from,value:this.#Ps.name??""}),p.push({name:v.labels.to,value:this.#Is.name??""}),p.push({name:v.labels.type,value:v.linkTypes[m]}),p.push({name:v.labels.lag,value:"0d"}),this.drawTooltip([this.#Ps,this.#Is],l,v.tooltips.addLink,p)}}}}#Bs(e,t,s,r,i,n,a){var o=n.chart.content.taskColors[a.color];e.beginPath(),e.arc(t,s+.5,r,0,2*Math.PI),e.fillStyle=i?o.color2:o.color1,e.fill(),e.strokeStyle=o.color2,e.stroke()}#zs(e){var t=this.#pt.timeline.currentZoom,s=t.axis[0],r=this.#pt.timeline.visibleStartTime$.getValue(),i=this.#pt.theme$.getValue();switch(e.type){case"Task":if(0===e.partsLength)return null;var n=e.getPart(0),a=e.getPart(e.partsLength-1);return{x1:Math.floor(s.getX(n.startTime,r,t)),x2:Math.floor(s.getX(a.endTime,r,t))};case"Milestone":var o=Math.floor(s.getX(e.startTime,r,t)),l=i.chart.content.milestoneSize;return{x1:o-l/2,x2:o+l/2};default:return null}}#Ws(e,t){var s=this.#zs(e);if(!s)return null;var r=this.#pt.theme$.getValue(),i=this.getRowY(e)+(r.rowHeight+1)/2,n=r.chart.content.connectorDotRadius,a=n+3,o=s.x1-n,l=s.x2+n,h=Math.sqrt((t.x-o)**2+(t.y-i)**2),c=Math.sqrt((t.x-l)**2+(t.y-i)**2);return h<=a?{side:"Start"}:c<=a?{side:"Finish"}:null}#Fs(e){this.#Is=null,this.#Vs=null;var t=this.getTaskRowAt(e);if(t&&t!==this.#Ps&&("Task"===t.type||"Milestone"===t.type)){var s=this.#Ws(t,e);if(s)return this.#Is=t,void(this.#Vs=s.side);if(this.containsVertically(t,e)){var r=this.#zs(t);if(r&&e.x>=r.x1-10&&e.x<=r.x2+10){var i=Math.abs(e.x-r.x1),n=Math.abs(e.x-r.x2);this.#Is=t,this.#Vs=i<n?"Start":"Finish"}}}}}class Re{listeners=[];observer=null;startWatching(e){this.observer=new MutationObserver(t=>{for(const s of t)Array.from(s.removedNodes).forEach(t=>{(t===e||t.contains(e))&&this.destroy()})}),this.observer.observe(document.body,{childList:!0,subtree:!0})}addDocumentListener(e,t){const s=t.bind(this);document.addEventListener(e,s),this.listeners.push({type:e,handler:s})}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 Me=40;class De{#Os;#Xs=null;#Us=!1;#Ns=0;#js=0;#Dt;#Ks;#Ys;constructor(e,t,s){this.#Os=e,this.#Dt=t,this.#Ks=s?.enableVertical??!1,this.#Ys=s?.getContentTop??(()=>0)}start(){this.#Us||(this.#Us=!0,this.#qs())}stop(){this.#Us=!1,null!==this.#Xs&&(cancelAnimationFrame(this.#Xs),this.#Xs=null)}updateMousePosition(e,t){this.#Ns=e,this.#js=t}#qs(){if(this.#Us){var e=this.#Os.getBoundingClientRect(),t=this.#Zs(this.#Ns,e.left,e.right),s=0;if(this.#Ks){var r=e.top+this.#Ys();s=this.#Zs(this.#js,r,e.bottom)}0===t&&0===s||this.#Dt(t,s),this.#Xs=requestAnimationFrame(()=>this.#qs())}}#Zs(e,t,s){return e<t?-this.#Gs(t-e+Me):e<t+Me?-this.#Gs(t+Me-e):e>s?this.#Gs(e-s+Me):e>s-Me?this.#Gs(e-(s-Me)):0}#Gs(e){return Math.min(10,Math.ceil(e/Me*10))}}var He=null;function Pe(){return null===He&&(He=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 s=e.offsetHeight-t.offsetHeight;return document.body.removeChild(e),Math.max(s,6)}()),He}function Le(e,t){var s=t.getBoundingClientRect();return e.clientY-s.top>=s.height-Pe()}class Ae extends Re{#Js=[];#pt;#xt;#Qs;#_s=null;operationComplete$=new e;redraw$=new e;constructor(e,t){super(),this.startWatching(t),this.#pt=e;var s=new we(e);s.dblClick$.subscribe(e=>{this.#pt.taskDblClick$.next({task:e})}),s.contextMenu$.subscribe(e=>{this.#pt.taskContextMenu$.next(e)}),this.#Js.push(s),this.#Js.push(new Se(e)),this.#Js.push(new ye(e)),this.#Js.push(new $e(e)),this.#Js.push(new Ee(e)),this.#Js.push(new fe(e)),this.#Js.push(new Te(e)),this.#Js.push(new xe(e));for(let e of this.#Js)e.operationComplete$.subscribe(()=>{this.operationComplete$.next()});this.#pt.chartRedrawn$.subscribe(()=>{for(let e of this.#Js)e.onRedrawn()}),this.#pt.chartBackgroundRedrawn$.subscribe(()=>{for(let e of this.#Js)e.onBackgroundRedrawn()})}getMousePosition(e){return new G(e.offsetX,e.offsetY)}init(e,t){this.#xt=e,this.#Qs=t,this.#_s=new De(e,(e,t)=>this.#er(e));for(let e of this.#Js)e.init(t);e.addEventListener("mousedown",async e=>{await this.#tr(e)},!1),e.addEventListener("mouseup",async e=>{await this.#sr(e)},!1),e.addEventListener("mousemove",async e=>{await this.#rr(e)},!1),e.addEventListener("mouseleave",async e=>{await this.#ir(e)},!1),this.addDocumentListener("keydown",this.#nr),e.addEventListener("contextmenu",e=>{this.#ar(e)},!1),e.addEventListener("dblclick",e=>{this.#or(e)},!1),this.addDocumentListener("mousemove",this.#lr),this.addDocumentListener("mouseup",this.#hr)}#cr(){return this.#Js.find(e=>e.isInOperation)??null}async#dr(e,t){var s=this.#cr(),r=!1;if(s){var i=await t(s);r=r||i.needsRedraw}for(let n of this.#Js)if((!s||n.alwaysHandleEvents)&&(!n.ignoreWhenCannotEdit||this.#pt.canEdit)&&(2!=e.button||!n.ignoreRightButton)){i=await t(n);if(r=r||i.needsRedraw,i.handled)break}r&&this.redraw$.next()}async#rr(e){e.preventDefault(),this.#_s?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);await this.#dr(e,async s=>await s.onMouseMove(t,e))}async#ir(e){e.preventDefault();var t=this.getMousePosition(e);await this.#dr(e,async s=>await s.onMouseLeave(t,e))}async#tr(e){if(e.preventDefault(),!this.isWithinScrollbar(e)){var t=this.getMousePosition(e),s=e.ctrlKey;await this.#dr(e,async r=>await r.onMouseDown(t,s,e)),this.#cr()&&(this.#pt.autoScrolling=!0,this.#_s?.updateMousePosition(e.clientX,e.clientY),this.#_s?.start())}}async#sr(e){e.preventDefault(),this.#ur();var t=this.getMousePosition(e),s=e.ctrlKey;await this.#dr(e,async r=>await r.onMouseUp(t,s,e))}async#nr(e){await this.#dr(e,async t=>await t.onKeyDown(e.key,e))}#ar(e){e.preventDefault();var t=this.getMousePosition(e);this.#dr(e,async s=>s.onContextMenu(t,e)),this.#gr(t,e)}#gr(e,t){var s=this.#pt.theme$.getValue(),r=s.headerHeight+2,i=e.y<r?"header":"content",n=this.#pt.timeline.currentZoom,a=n.axis[0],o=this.#pt.timeline.visibleStartTime$.getValue(),l=Math.floor(e.x/n.baseCellWidth),h=a.getAdd(o,l),c=null;if("content"===i){var d=this.#pt.sheetScrollTop$.getValue()+e.y-r;if(d>=0)for(var u=0,g=0;g<this.#pt.list.length;g++){var m=this.#pt.list.getTask(g);if(!m.hidden){var v=u+s.rowHeight+1;if(d>=u&&d<v&&"Empty"!==m.type){c=m;break}u=v}}}this.#pt.chartContextMenu$.next({date:h,area:i,task:c,mouseEvent:t})}#or(e){e.preventDefault();var t=this.getMousePosition(e);this.#dr(e,async s=>s.onDblClick(t,e))}#hr(e){e.preventDefault(),this.#ur();var t=this.getMousePosition(e);this.#dr(e,async s=>s.onDocumentMouseUp(t,e))}#lr(e){e.preventDefault(),this.#_s?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);this.#dr(e,async s=>s.onDocumentMouseMove(t,e))}#ur(){this.#_s?.stop(),this.#pt.autoScrolling=!1}#er(e){var t=this.#pt.timeline.currentZoom,s=t.axis[0],r=this.#pt.timeline.visibleStartTime$.getValue(),i=s.getCellStartTime(r),n=(s.getAdd(i,1).getTime()-i.getTime())/t.baseCellWidth,a=new Date(r.getTime()+e*n);this.#pt.timeline.visibleStartTime$.next(a)}clear(){this.#ur();for(let e of this.#Js)e.clear()}isWithinScrollbar(e){return Le(e,this.#xt)}}class Ie extends ne{#pt;#Yt;constructor(e){super(e),this.#pt=e,this.#Yt=new ke(e)}render(e){for(var t=e.getContext("2d"),s=0;s<this.#pt.list.linksLength;s++){var r=this.#pt.list.getLink(s);r.from.hidden||r.to.hidden||this.#mr(r,t)}}#vr(e){var t=this.#pt.theme$.getValue();switch(e.type){case"Task":return t.chart.content.taskColors[e.color].linkLineColor;case"Milestone":return t.chart.content.linkFromMilestoneLineColor}return null}#pr(e){var t=this.#pt.theme$.getValue();switch(e.type){case"Task":return t.chart.content.taskColors[e.color].linkArrowColor;case"Milestone":return t.chart.content.linkFromMilestoneArrowColor}return null}#mr(e,t){var s=this.#Yt.getCoords(e),r="rounded"===this.#pt.theme$.getValue().chart.content.linkLineStyle;switch(e.type){case"FinishToStart":this.#fr(e,t,s,r);break;case"StartToStart":this.#wr(e,t,s,r);break;case"FinishToFinish":this.#Tr(e,t,s,r);break;case"StartToFinish":this.#yr(e,t,s,r)}0!==e.lag.value&&this.#xr(e,t,s)}#xr(e,t,s){var r=this.#pt.theme$.getValue(),i=(s.x1+s.x2)/2,n=(s.y1+s.y2)/2,a=e.lag.toString();t.font=r.chart.content.tooltipFont.toString(1);var o=t.measureText(a).width;t.fillStyle=r.chart.header.backgroundColor,t.fillRect(i-o/2-2,n-7,o+4,14),t.fillStyle=this.#vr(e.from),t.textAlign="center",t.textBaseline="middle",t.fillText(a,i,n),t.textAlign="start",t.textBaseline="alphabetic"}#fr(e,t,s,r){var i=s.x1,n=s.y1,a=s.x2,o=s.y2,l=s.sign,h=Math.max(a,i+10);this.#br(t,[{x:i,y:n},{x:h,y:n},{x:h,y:o-l}],r),t.strokeStyle=this.#vr(e.from),t.stroke(),this.#Cr(t,h,o,l,e)}#wr(e,t,s,r){var i=s.x1,n=s.y1,a=s.x2,o=s.y2,l=Math.min(i,a)-10;this.#br(t,[{x:i,y:n},{x:l,y:n},{x:l,y:o},{x:a,y:o}],r),t.strokeStyle=this.#vr(e.from),t.stroke(),this.#kr(t,a,o,1,e)}#Tr(e,t,s,r){var i=s.x1,n=s.y1,a=s.x2,o=s.y2,l=Math.max(i,a)+10;this.#br(t,[{x:i,y:n},{x:l,y:n},{x:l,y:o},{x:a,y:o}],r),t.strokeStyle=this.#vr(e.from),t.stroke(),this.#kr(t,a,o,-1,e)}#yr(e,t,s,r){var i=s.x1,n=s.y1,a=s.x2,o=s.y2,l=s.sign,h=Math.min(a,i-10);this.#br(t,[{x:i,y:n},{x:h,y:n},{x:h,y:o-l}],r),t.strokeStyle=this.#vr(e.from),t.stroke(),this.#Cr(t,h,o,l,e)}#br(e,t,s){if(e.beginPath(),e.moveTo(t[0].x,t[0].y),s)for(r=1;r<t.length;r++)r<t.length-1?e.arcTo(t[r].x,t[r].y,t[r+1].x,t[r+1].y,3):e.lineTo(t[r].x,t[r].y);else for(var r=1;r<t.length;r++)e.lineTo(t[r].x,t[r].y)}#Cr(e,t,s,r,i){e.beginPath(),e.moveTo(t-5,s-6*r),e.lineTo(t+5,s-6*r),e.lineTo(t,s),e.lineTo(t-5,s-6*r),e.fillStyle=this.#pr(i.from),e.fill()}#kr(e,t,s,r,i){e.beginPath(),e.moveTo(t-6*r,s-5),e.lineTo(t-6*r,s+5),e.lineTo(t,s),e.lineTo(t-6*r,s-5),e.fillStyle=this.#pr(i.from),e.fill()}}class Ve{#ut;#Sr;constructor(e,t){this.#ut=e,this.#Sr=t}render(e){var t=e.getContext("2d"),s=this.#ut.theme$.getValue(),r=this.#ut.timeline.currentZoom,i=r.axis[0],n=this.#ut.timeline.visibleStartTime$.getValue(),a=s.headerHeight+2,o=this.#Sr(e),l=s.chart.content;if(this.#ut.showTodayLine$.getValue()){var h=Math.floor(i.getX(new Date,n,r));h>=0&&h<=e.width&&this.#$r(t,h,a,o,l.todayLineColor,l.todayLineWidth,l.todayLineStyle)}var c=this.#ut.markers$.getValue();for(var d of c){var u=Math.floor(i.getX(d.date,n,r));if(u>=0&&u<=e.width){var g=d.color??l.markerLineColor,m=d.lineWidth??l.markerLineWidth,v=d.lineStyle??l.markerLineStyle;this.#$r(t,u,a,o,g,m,v),d.label&&this.#rs(t,d.label,u,a,g,l)}}}#$r(e,t,s,r,i,n,a){e.beginPath(),e.moveTo(t+.5,s),e.lineTo(t+.5,r),e.strokeStyle=i,e.lineWidth=n,"dashed"===a?e.setLineDash([5,3]):"dotted"===a&&e.setLineDash([1,3]),e.stroke(),e.setLineDash([]),e.lineWidth=1}#rs(e,t,s,r,i,n){var a=n.markerLabelFont;e.font=a.toString(1);var o=e.measureText(t).width,l=a.size+8,h=o+8,c=s+4,d=r+4;e.fillStyle=i,e.globalAlpha=.15,e.fillRect(c,d,h,l),e.globalAlpha=1;var u=n.markerLabelColor;se(e,t,new J(c+4,d,o,l),"Left",0,u)}}class Fe extends ne{#Er;constructor(e){super(e),this.#Er=new Ve(e,e=>e.height)}render(e){this.#Er.render(e)}}function We(e,t,s){e.save();e.globalAlpha=.04,e.fillStyle="#000000",e.textAlign="center",e.textBaseline="middle";var r=Math.sqrt(t*t+s*s),i=Math.max(20,Math.min(r/12,48));e.font="bold "+i+"px sans-serif";var n=-Math.atan2(s,t);e.translate(t/2,s/2),e.rotate(n);for(var a=4*i,o=Math.ceil(r/a)+1,l=-o*a/2,h=0;h<o;h++)e.fillText("TimelineKit — Unlicensed",0,l+h*a);e.restore()}class ze{#pt;#xt;#bt;#Qs;#Ct;#Js;#Rr=!1;#yt;#Mr;#Er;#cs;#Dr;#Hr;constructor(e,t){if(this.#pt=e,this.#xt=t,this.#xt.classList.add("gc-chart"),this.#Qs=window.document.createElement("canvas"),this.#Qs.classList.add("canvas"),this.#xt.appendChild(this.#Qs),this.#Ct=window.document.createElement("div"),this.#Ct.classList.add("inner"),this.#xt.appendChild(this.#Ct),this.#yt=new ae(e),this.#Mr=new Z(e),this.#Er=new Fe(e),this.#cs=new ue(e),this.#Dr=new Ie(e),this.#Hr=new le(e,t,this.#Qs,this.#Ct),this.#pt.timeline.zoomIndex$.subscribe(()=>{this.#Vt()}),this.#bt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#zt())}),this.#bt.observe(this.#xt),this.#xt.addEventListener("wheel",e=>(e.preventDefault(),e.stopPropagation(),this.#Pr(e),this.#pt.chartMouseWheel$.next(e),!1)),e.timeline.visibleStartTime$.subscribe(()=>{this.#Lr()}),e.sheetScrollTop$.subscribe(()=>{this.#Lr()}),e.chartTaskHover$.subscribe(()=>{this.#Lr()}),e.list.taskChanged$.subscribe(e=>{this.#Lr()}),e.list.taskRemoved$.subscribe(e=>{this.#Lr()}),e.list.linkAdded$.subscribe(e=>{this.#Lr()}),e.list.linkRemoved$.subscribe(e=>{this.#Lr()}),e.list.taskCollapsedChanged$.subscribe(e=>{this.#Lr()}),e.list.evaluatingDependenciesFinished$.subscribe(()=>{this.#Lr()}),e.list.complexOperationFinished$.subscribe(()=>{this.#Lr()}),e.dividerResizing$.subscribe(e=>{this.#Ar(e)}),e.sheetRowMouseOver$.subscribe(()=>{this.#Lr()}),e.sheetSelectedTasks$.subscribe(()=>{this.#Lr()}),e.chartCursor$.subscribe(e=>{"default"==e?(t.classList.remove("cursor-pointer"),t.classList.remove("cursor-all-scroll"),t.classList.remove("cursor-ew-resize"),t.classList.remove("cursor-ns-resize"),t.classList.remove("cursor-nwse-resize"),t.classList.remove("cursor-nesw-resize"),t.classList.remove("cursor-crosshair")):t.classList.add("cursor-"+e)}),e.settings.changed$.subscribe(()=>{this.#Lr()}),e.showGridLines$.subscribe(()=>{this.#Lr()}),e.showCriticalPath$.subscribe(()=>{this.#Lr()}),e.showBaseline$.subscribe(()=>{this.#Lr()}),e.showTodayLine$.subscribe(()=>{this.#Lr()}),e.markers$.subscribe(()=>{this.#Lr()}),this.#Js=new Ae(this.#pt,t),this.#Js.init(this.#xt,this.#Qs),this.#Js.redraw$.subscribe(()=>{this.#Lr()}),document.fonts){var s=this.#pt.theme$.getValue().font.name;document.fonts.load(`1rem "${s}"`).then(()=>{this.#Lr()})}}#Lr(){this.#Rr||(this.#Rr=!0,requestAnimationFrame(()=>{this.#Rr=!1,this.#Ir()}))}#Vr(){var e=this.#xt.offsetWidth,t=this.#xt.offsetHeight;this.#Qs.width=e,this.#Qs.height=t,this.#Qs.style.width=e+"px",this.#Qs.style.height=t+"px"}#Vt(){this.#Lr()}#zt(){this.#Vr(),this.#Hr.handleResize(),this.#Ir()}#Ir(){if(!this.#pt.list.evaluatingDependencies){var e;try{e=this.#Qs.getContext("2d")}catch{}if(e){e.clearRect(0,0,this.#Qs.width,this.#Qs.height),this.#yt.render(this.#Qs);var t=this.#pt.theme$.getValue().headerHeight+2,s=t,r=this.#xt.clientHeight;e.save(),e.beginPath(),e.rect(0,s,this.#Qs.width,r-t),e.clip(),this.#Mr.render(this.#Qs),this.#Er.render(this.#Qs),this.#pt.chartBackgroundRedrawn$.next(),this.#Dr.render(this.#Qs),this.#cs.render(this.#Qs),e.restore(),g().showWatermark&&We(e,this.#Qs.width,this.#Qs.height),this.#pt.chartRedrawn$.next()}}}#Ar(e){e?this.#xt.classList.add("no-pointer-events"):this.#xt.classList.remove("no-pointer-events")}#Pr(e){e.ctrlKey&&(e.deltaY>0?this.#pt.timeline.zoomOut():this.#pt.timeline.zoomIn())}get chartWidth(){return this.#xt.offsetWidth}destroy(){this.#bt.disconnect(),this.#Hr.destroy(),this.#Js.destroy()}}class Be{#d;#Ee;#Fr=[];zoomIndex$=new t(0);visibleStartTime$=new t(v(-1));get currentZoom(){return this.#Fr[this.zoomIndex$.getValue()]}constructor(e,t){this.#d=e,this.#Ee=t,this.assignZooms(this.createDefaultZooms(),4)}createDefaultZooms(){var e=this.#Ee,t=()=>e.getValue().language,s=new Xe("Minute",15,this.#d,e=>String(e.getMinutes())),r=new Xe("Hour",1,this.#d,e=>String(e.getHours())),i=new Xe("Hour",6,this.#d,e=>String(e.getHours())),n=new Xe("Hour",1,this.#d,e=>S(e,t(),{hour:"numeric",hour12:!0})+", "+S(e,t(),{month:"short",day:"numeric"})),a=new Xe("Day",1,this.#d,e=>S(e,t(),{weekday:"narrow"})),o=new Xe("Day",1,this.#d,e=>S(e,t(),{month:"short",day:"numeric",year:"numeric"})),l=new Xe("Week",1,this.#d,e=>S(e,t(),{month:"short",day:"numeric",year:"numeric"})+", W "+$(e)),h=new Xe("Week",1,this.#d,e=>S(e,t(),{month:"short",day:"numeric"})+", W "+$(e)),c=new Xe("Week",1,this.#d,e=>"W "+$(e)),d=new Xe("Month",1,this.#d,e=>S(e,t(),{month:"short",year:"numeric"})),u=new Xe("Month",1,this.#d,e=>S(e,t(),{month:"short"})),g=new Xe("Quarter",1,this.#d,e=>S(e,t(),{month:"short"})),m=new Xe("Year",1,this.#d,e=>String(e.getFullYear())),v=[];return v.push(new Oe([s,n],50)),v.push(new Oe([r,o],28)),v.push(new Oe([i,o],50)),v.push(new Oe([a,l],60)),v.push(new Oe([a,l],28)),v.push(new Oe([h,d],110)),v.push(new Oe([c,d],50)),v.push(new Oe([u,m],70)),v.push(new Oe([g,m],60)),v}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.#Fr=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.#Fr.length-1&&(this.zoomIndex$.next(this.zoomIndex$.getValue()+1),!0)}findBestZoomIndex(e,t,s){for(var r=0;r<this.#Fr.length;r++){var i=this.#Fr[r];if(i.axis[0].getCellStartX(t,e,i)+2*i.baseCellWidth<=s)return r}return this.#Fr.length-1}}class Oe{axis;baseCellWidth;constructor(e,t){this.axis=e,this.baseCellWidth=t}}class Xe{#d;unit;unitsPerCell;formatter;constructor(e,t,s,r){this.#d=s,this.unit=e,this.unitsPerCell=t,this.formatter=r}getCellStartTime(e){var t=new Date(e);switch(this.unit){case"Minute":var s=Math.floor(e.getMinutes()/this.unitsPerCell)*this.unitsPerCell;return t.setHours(t.getHours(),s,0,0),t;case"Hour":var r=Math.floor(t.getHours()/this.unitsPerCell)*this.unitsPerCell;return t.setHours(r,0,0,0),t;case"Day":return t.setHours(0,0,0,0),t;case"Week":return this.#d.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 i=[0,3,6,9];!i.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}}#Wr(e,t,s){var r=(e.getTime()-t.getTime())/6e4;switch(s.unit){case"Minute":return r/s.unitsPerCell;case"Hour":return r/60/s.unitsPerCell;case"Day":return r/1440/s.unitsPerCell;case"Week":return r/10080/s.unitsPerCell;case"Month":return b(t,e);case"Quarter":return b(t,e)/3;case"Half":return b(t,e)/6;case"Year":return b(t,e)/12}}getCellStartX(e,t,s){var r=this.getCellStartTime(e),i=this.#Wr(r,t,s.axis[0]);return Math.round(s.baseCellWidth*i)}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,s){var r=this.getCellStartTime(e),i=this.getCellStartX(e,t,s),n=this.getAdd(r,1);if("Minute"==this.unit||"Hour"==this.unit)return i+(e.getTime()-r.getTime())/(n.getTime()-r.getTime())*s.baseCellWidth;var a=this.#d.getValue().getHoursPerDay(),o=1;switch(this.unit){case"Day":o=1;break;case"Week":o=7;break;case"Month":o=this.#zr(e);break;case"Quarter":o=this.#Br(e);break;case"Half":o=this.#Or(e);break;case"Year":o=this.#Xr(e)}var l=s.baseCellWidth/o,h=new Date(e);h.setHours(0,0,0,0);var c=this.#d.getValue().getHoursBetween(h,e);return i+l*this.#Ur(r,h)+c/a*l}#zr(e){const t=e.getFullYear(),s=e.getMonth();return new Date(t,s+1,0).getDate()}#Br(e){const t=e.getFullYear(),s=e.getMonth(),r=3*Math.floor(s/3),i=r+2;let n=0;for(let e=r;e<=i;e++)n+=new Date(t,e+1,0).getDate();return n}#Or(e){const t=e.getFullYear(),s=e.getMonth()<6?0:6,r=s+5;let i=0;for(let e=s;e<=r;e++)i+=new Date(t,e+1,0).getDate();return i}#Xr(e){const t=e.getFullYear();return t%4==0&&t%100!=0||t%400==0?366:365}#Ur(e,t){const s=e.getTime(),r=t.getTime(),i=Math.abs(s-r);return Math.ceil(i/864e5)}}class Ue{}class Ne extends Ue{redraw(e,t,s){e.innerText=t(s)}}class je extends Ne{#pt;constructor(e){super(),this.#pt=e}#Nr(e){var t=this.#pt.theme$.getValue().rowHeight;e.style.height=t+"px"}#jr(e,t){e.style.width=t+"px"}redraw(e,t,s){for(;e.firstChild;)e.removeChild(e.firstChild);var r=s.level;if("Empty"==s.type){var i=this.#pt.list.getNextNonEmpty(s);i&&(r=i.level)}e.classList.add("tree-with-name"),this.#Nr(e);var n=30*r+12,a=window.document.createElement("span");a.classList.add("tree"),this.#jr(a,n),e.appendChild(a),"Summary"==s.type&&a.appendChild(this.#Kr(s));var o=window.document.createElement("span");o.classList.add("name"),e.appendChild(o),o.innerText=t(s)}#Kr(e){var t=window.document.createElement("div");t.classList.add("gc-tree-icon"),t.classList.add(e.collapsed?"collapsed":"expanded");var s=window.document.createElement("div");return s.classList.add("tree-icon"),t.appendChild(s),t.addEventListener("mousedown",t=>{0==t.button&&(t.stopPropagation(),e.toggleCollapsed())}),t}}class Ke{context=null;#Yr;#qr;invalidValue$=new e;editEnded$=new e;cell;item=null;#Zr=null;get columnCode(){return this.#Zr?.code??null}constructor(e,t){this.#Yr=e,this.#qr=t}init(e){this.context=e}beginEdit(e,t,s){this.#Zr=e,this.cell=t,this.item=s,this.beginEditInternal(t,s,this.#Yr(s)),this.context.cellEditing$.next({cell:t,editor:e.editor})}endEdit(e,t="none"){this.#qr(this.item,e),this.context.cellEditing$.next(null),this.#Gr(),this.editEnded$.next(t)}cancelEdit(){this.context.cellEditing$.next(null),this.#Gr(),this.editEnded$.next("none")}#Gr(){for(;this.cell.firstChild;)this.cell.removeChild(this.cell.firstChild);this.cell.style.backgroundColor=null,this.#Zr.renderer.redraw(this.cell,this.#Zr.valueFormatter,this.item)}}class Ye extends Ke{#Jr;#Qr=!1;beginEdit$=new e;beginEdit(e,t,s){for(this.#Qr=!1,t.style.backgroundColor="white";t.firstChild;)t.removeChild(t.firstChild);super.beginEdit(e,t,s)}beginEditInternal(e,t,s){var r=document.createElement("input");r.classList.add("editor"),r.value=this.formatValue(s),r.addEventListener("mousedown",e=>{e.stopPropagation()}),r.addEventListener("mouseup",e=>{e.stopPropagation()}),r.addEventListener("input",e=>{this.#Qr=!0}),this.onInputCreated(r),e.appendChild(r),setTimeout(()=>{r.focus()},0),this.#_r(r),this.#Jr=r,this.beginEdit$.next({input:r,columnCode:this.columnCode,editor:this})}onInputCreated(e){}#ei(e="none"){var t=this.tryParseValue(this.#Jr.value);return null!==t?(this.endEdit(t,e),!0):(this.invalidValue$.next(),!1)}#_r(e){e.addEventListener("keydown",e=>{"Enter"===e.key?(e.stopPropagation(),this.#ei("down")):"Escape"===e.key?(e.stopPropagation(),this.cancelEdit()):"Tab"===e.key&&(e.preventDefault(),e.stopPropagation(),this.#ei(e.shiftKey?"left":"right"))})}endEditIfModifiedElseCancel(){this.#Qr&&this.#ei()||this.cancelEdit()}}class qe extends Ye{formatValue(e){return e}tryParseValue(e){return e??""}}class Ze extends Ye{onInputCreated(e){e.addEventListener("keydown",e=>{"ArrowLeft"!==e.key&&"ArrowRight"!==e.key||e.stopPropagation()})}formatValue(e){return k(null===e?this.getDefaultDate():e,this.getLocale())}getDefaultDate(){return m()}getLocale(){return"en-US"}tryParseValue(e){return function(e,t){if(!e||!e.trim())return null;var s=e.trim().match(/\d+/g);if(!s||s.length<3)return null;for(var r,i,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<s.length;o++){var l=parseInt(s[o],10);switch(a[o]){case"day":r=l;break;case"month":i=l;break;case"year":n=l}}if(void 0===r||void 0===i||void 0===n)return null;n<100&&(n+=2e3);var h=new Date(n,i-1,r);return h.setHours(0,0,0,0),h.getDate()!==r||h.getMonth()!==i-1||h.getFullYear()!==n?null:h}(e,this.getLocale())}}class Ge extends Ye{#pt=null;constructor(){super(e=>e.length,(e,t)=>e.length=t)}initWithGanttContext(e){this.#pt=e}formatValue(e){if(null===e){var t=this.#pt?.calendar.defaultLengthUnit??"Day";return new L(t,1).toString()}return e.toString()}tryParseValue(e){return L.tryParse(e)}}class Je extends Ye{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 Qe extends Ke{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,s){this.beginEdit$.next({item:t,columnCode:this.columnCode,cancelEdit$:this.cancelEdit$,endEdit$:this.endEdit$})}endEditIfModifiedElseCancel(){this.cancelEdit()}}class _e extends Ne{#pt;constructor(e){super(),this.#pt=e}redraw(e,t,s){if(e.innerText="",e.classList.add("resources"),"Task"==s.type)for(var r=0;r<s.resourcesLength;r++){var i=s.getResource(r),n=document.createElement("div");if(n.classList.add("wrapper"),100!=i.capacity){var a=document.createElement("div");a.classList.add("capacity"),a.innerText=i.formatCapacity(),n.appendChild(a)}var o=document.createElement("div");o.classList.add("avatar"),i.resource.avatarIconUrl?(o.style.backgroundImage=`url(${i.resource.avatarIconUrl})`,o.style.backgroundSize="cover"):(o.style.backgroundColor=tt(i.resource.name),o.innerText=st(i.resource.name)),o.title=i.resource.name,n.appendChild(o),e.appendChild(n)}}}const et=["#66C5CC","#F6CF71","#F89C74","#DCB0F2","#87C55F","#9EB9F3","#FE88B1","#C9DB74","#8BE0A4","#B497E7","#B3B3B3"];function tt(e){var t=function(e){let t=0;for(let s=0;s<e.length;s++)t=(31*t+e.charCodeAt(s))%2**32;return t}(e);return et[t%et.length]}function st(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 rt extends Ye{constructor(){super(e=>e.work,(e,t)=>e.work=t)}formatValue(e){return null===e?new F("Day",1).toString():e.toString()}tryParseValue(e){return F.tryParse(e)}}class it extends Ye{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 nt extends Ye{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 at extends Ye{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 ot extends Ne{#pt;constructor(e){super(),this.#pt=e}addIconToCell(e,t,s){var r=document.createElement("span");r.classList.add("icon"),r.style.color="var(--gc-tree-icon-color, #606060)",r.style.display="inline-flex",r.style.verticalAlign="middle",r.style.marginRight="4px",r.innerHTML=lt[t],r.title=s,e.appendChild(r)}redraw(e,t,s){if(e.innerText="","ASAP"!==s.constraintType){var r=this.#pt.locale$.getValue(),i=r.constraints[s.constraintType],n=s.constraintDate?`${i}: ${s.constraintDate.toLocaleDateString(r.language)}`:i;this.addIconToCell(e,"Constraint",n)}s.note&&this.addIconToCell(e,"Note",s.note);var a=s.warnings.join("\n\n");a&&this.addIconToCell(e,"Warning",a)}}const lt={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>'};class ht{context;content;host;#ti=null;constructor(e,t,s){this.context=e,this.content=t,this.host=s}get focusedCell(){return this.context.focusedCell$.getValue()}onCellMousedown(e,t,s){var r=this.host.getColumns().indexOf(t);this.#si(s,r,e),this.content.focus()}onCellDblClick(){this.host.beginEdit()}onEditEnded(e){var t=this.focusedCell;if(t){switch(e){case"down":var s=this.context.dataSource.getNextVisible(t.item);s?this.#ri(s,t.columnIndex):this.#ii();break;case"up":var r=this.context.dataSource.getPreviousVisible(t.item);r?this.#ri(r,t.columnIndex):this.#ii();break;case"right":this.#ni(t);break;case"left":this.#ai(t);break;default:this.#ii()}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 s=this.context.dataSource.getPreviousVisible(t.item);s&&this.#ri(s,t.columnIndex);break;case"ArrowDown":e.preventDefault();var r=this.context.dataSource.getNextVisible(t.item);r&&this.#ri(r,t.columnIndex);break;case"ArrowLeft":e.preventDefault();var i=this.#oi(t.columnIndex);null!==i&&this.#ri(t.item,i);break;case"ArrowRight":e.preventDefault();var n=this.#li(t.columnIndex);null!==n&&this.#ri(t.item,n);break;case"Tab":e.preventDefault(),e.shiftKey?this.#ai(t):this.#ni(t);break;case"Home":e.preventDefault();var a=this.#hi();null!==a&&this.#ri(t.item,a);break;case"End":e.preventDefault();var o=this.#ci();null!==o&&this.#ri(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.#ri(e,t)}clearFocus(){this.#ti&&(this.#ti.classList.remove("focused"),this.#ti=null),this.context.focusedCell$.next(null)}#si(e,t,s){this.#ti&&this.#ti.classList.remove("focused"),this.#ti=s,s.classList.add("focused"),this.context.focusedCell$.next({item:e,columnIndex:t})}#ri(e,t){var s=this.host.getItemRow(e),r=s.children[t+1];this.#si(e,t,r),this.#di(s,r)}#ii(){this.focusedCell&&this.#ti&&(this.#ti.classList.add("focused"),this.content.focus())}#di(e,t){var s=this.content.getBoundingClientRect(),r=e.getBoundingClientRect(),i=s.top,n=s.bottom;r.top<i?this.content.scrollTop-=i-r.top:r.bottom>n&&(this.content.scrollTop+=r.bottom-n);var a=t.getBoundingClientRect(),o=e.children[0].getBoundingClientRect().width,l=s.left+o,h=s.right;a.left<l?this.content.scrollLeft-=l-a.left:a.right>h&&(this.content.scrollLeft+=a.right-h)}#ni(e){var t=this.#li(e.columnIndex);if(null!==t)this.#ri(e.item,t);else{var s=this.context.dataSource.getNextVisible(e.item),r=this.#hi();if(null===r)return;s||(s=this.context.dataSource.addEmptyItem()),this.#ri(s,r)}}#ai(e){var t=this.#oi(e.columnIndex);if(null!==t)this.#ri(e.item,t);else{var s=this.context.dataSource.getPreviousVisible(e.item),r=this.#ci();s&&null!==r&&this.#ri(s,r)}}#li(e){for(var t=this.host.getColumns(),s=e+1;s<t.length;s++)if(t[s].isVisible)return s;return null}#oi(e){for(var t=this.host.getColumns(),s=e-1;s>=0;s--)if(t[s].isVisible)return s;return null}#hi(){for(var e=this.host.getColumns(),t=0;t<e.length;t++)if(e[t].isVisible)return t;return null}#ci(){for(var e=this.host.getColumns(),t=e.length-1;t>=0;t--)if(e[t].isVisible)return t;return null}}class ct{#ui;#gi;#mi=!1;#vi=null;#pi=[];get items(){return this.#pi}changed$;rowContextMenu$;constructor(t,s){this.#ui=t,this.#gi=s,this.changed$=new e,this.rowContextMenu$=new e,t.rowAdded$.subscribe(e=>{this.#fi(e.item,e.row)}),t.dataSource.itemRemoved$.subscribe(e=>{this.#wi(e.item)})}#fi(e,t){var s=t.children[0];t.addEventListener("mousedown",async s=>{this.#Ti(e,t,s)},!1),t.addEventListener("contextmenu",async s=>{this.#yi(e,t,s)},!1),s.addEventListener("mousedown",async s=>{this.#xi(e,t,s)},!1),s.addEventListener("mouseup",async s=>{this.#bi(e,t)},!1),s.addEventListener("mousemove",async t=>{this.#Ci(e)},!1)}#wi(e){this.#pi=this.#pi.filter(t=>t!=e)}#Ti(e,t,s){0==s.button&&(s.ctrlKey||this.clear(),this.#ki(e,t)&&this.changed$.next())}#xi(e,t,s){this.#mi=!0,this.#vi=this.#ui.dataSource.indexOf(e);var r=s.ctrlKey;0==s.button&&(r||this.clear(),this.#ki(e,t)&&this.changed$.next())}#yi(e,t,s){this.#pi.includes(e)||(this.clear(),this.#ki(e,t)&&this.changed$.next()),this.rowContextMenu$.next({selectedItems:[...this.#pi],mouseEvent:s})}#bi(e,t){this.#mi=!1}#Ci(e){if(this.#mi)for(var t=this.#ui.dataSource.indexOf(e),s=Math.min(this.#vi,t);s<=Math.max(this.#vi,t);s++){var r=this.#gi.children[s];this.#ki(this.#ui.dataSource.getItem(s),r)}}#ki(e,t){return!this.#pi.includes(e)&&(t.classList.add("selected"),this.#pi.push(e),!0)}cancelRangeSelection(){this.#mi=!1}clear(){for(var e=0;e<this.#pi.length;e++){this.#Si(this.#pi[e]).classList.remove("selected")}this.#pi=[]}updateWithCurrentSelection(){for(var e=0;e<this.#ui.dataSource.length;e++){var t=this.#ui.dataSource.getItem(e),s=this.#Si(t);this.#pi.includes(t)?s.classList.add("selected"):s.classList.remove("selected")}}#Si(e){var t=this.#ui.dataSource.indexOf(e);return this.#gi.children[t]}}class dt extends Re{#ui;#$i;#Ei=[];#Ri;#gi;#Mi;#Di=null;#Hi;#Pi=null;#Li=null;#Ai=!1;#Ii;get tableContext(){return this.#ui}get contentElement(){return this.#gi}get headerElement(){return this.#Ri}get navigation(){return this.#Ii}get selection(){return this.#Hi}get rowsContainer(){return this.#Mi}constructor(e,t){super(),this.startWatching(t),this.#ui=e,this.#$i=t,this.#Ai=!0,this.#$i.classList.add("gc-sheet"),this.#Ri=window.document.createElement("div"),this.#Ri.classList.add("header");var s=window.document.createElement("div");s.classList.add("row-header"),s.classList.add("cell"),this.#Ri.appendChild(s),this.#gi=window.document.createElement("div"),this.#gi.classList.add("content"),this.#gi.setAttribute("tabindex","0"),this.#gi.addEventListener("scroll",()=>{this.#Vi()}),this.#gi.addEventListener("mousedown",()=>{this.#Fi()}),this.#gi.addEventListener("contextmenu",e=>{this.#Wi(e)}),this.#gi.addEventListener("keydown",e=>{this.#Ii.onKeyDown(e)}),this.#$i.appendChild(this.#gi),this.#gi.appendChild(this.#Ri),this.#Mi=window.document.createElement("div"),this.#Mi.classList.add("rows"),this.#gi.appendChild(this.#Mi),this.#Ii=this.createKeyboardNavigation(),this.#Hi=new ct(this.#ui,this.#Mi),this.#Hi.changed$.subscribe(()=>{this.#zi()}),this.#Hi.rowContextMenu$.subscribe(e=>{this.#Bi(e)}),e.dataSource.itemChanged$.subscribe(e=>{this.onItemChanged(e.item)}),e.dataSource.itemRemoved$.subscribe(e=>{this.onItemRemoved(e.item)}),e.dataSource.complexOperationFinished$.subscribe(()=>{this.onComplexOperationFinished()}),this.addDocumentListener("mousemove",this.#Oi),this.addDocumentListener("mouseup",this.#Xi);for(var r=0;r<e.dataSource.length;r++){var i=e.dataSource.getItem(r);this.#Ui(i,r),this.redrawItemRow(i)}this.#Ai=!1}createKeyboardNavigation(){return new ht(this.#ui,this.#gi,this)}getColumns(){return this.#Ei}getItemRow(e){var t=this.#ui.dataSource.indexOf(e);return this.#Mi.children[t]}beginEdit(e){if(this.#ui.canEdit){var t=this.#Ii.focusedCell;if(t){var s=this.#Ei[t.columnIndex],r=this.getItemRow(t.item).children[t.columnIndex+1];s.isEditable(t.item)&&s.editor&&(r.classList.remove("focused"),setTimeout(()=>{s.editor.beginEdit(s,r,t.item);var i=document.createElement("div");if(i.classList.add("highlight"),r.appendChild(i),e&&s.editor instanceof Ye){var n=r.querySelector("input.editor");n&&(n.value=e,n.dispatchEvent(new Event("input")))}},10))}}}deleteSelectedItems(){this.#Ii.clearFocus();var e=this.#ui.selectedItems$.getValue();this.#ui.dataSource.removeItems([...e])}insertItemAfterFocused(){var e=this.#Ii.focusedCell;if(e){var t=this.#ui.dataSource.indexOf(e.item),s=this.#ui.dataSource.insertEmptyItem(t+1);this.#Ii.setFocus(s,e.columnIndex)}}addColumn(e){this.#Ei.push(e);var t=window.document.createElement("div");t.classList.add("cell"),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.#Ni(e,t)}),t.addEventListener("mousedown",t=>{this.#ji(e,t)}),this.#Ri.appendChild(t),e.tooltip&&(t.title=e.tooltip,t.classList.add("dotted"));var s=window.document.createElement("div");s.classList.add("resizer"),s.addEventListener("mousedown",t=>{this.#Ki(e,t)}),t.appendChild(s),e.editor&&(e.editor.init(this.#ui),e.editor instanceof Qe&&e.editor.beginEdit$.subscribe(e=>{this.#ui.cellDialogEdit$.next(e)}),e.editor instanceof Ye&&e.editor.beginEdit$.subscribe(e=>{this.#ui.cellInputEdit$.next(e)}),e.editor.invalidValue$.subscribe(()=>{this.#ui.cellInvalidValue$.next()}),e.editor.editEnded$.subscribe(e=>{this.#Ii.onEditEnded(e)})),e.changed$.subscribe(e=>{this.#Yi(e)});for(var r=this.#Ei.indexOf(e),i=0;i<this.#Mi.children.length;i++){var n=this.#Mi.children[i],a=this.#ui.dataSource.getItem(i);this.#qi(n,a,r)}this.#Zi(),this.#Ai||this.redrawAll()}get columnsLength(){return this.#Ei.length}getColumn(e){return this.#Ei[e]}getColumnByCode(e){return this.#Ei.find(t=>t.code==e)??null}#Yi(e){this.#Gi(e,e.width),this.#Ji(e),this.#Zi()}#Qi(e,t){t?e.classList.remove("hidden"):e.classList.add("hidden")}updateColumnVisibility(e){this.#Ji(e)}#Ji(e){var t=this.#Ei.indexOf(e),s=this.#Ri.children[t+1];this.#Qi(s,e.isVisible);for(var r=0;r<this.#Mi.children.length;r++){var i=this.#Mi.children[r].children[t+1];this.#Qi(i,e.isVisible)}}#Zi(){var e=0;for(let t of this.#Ei)e+=t.width+20;e=Math.max(e,this.#$i.offsetWidth)+200,this.#Ri.style.width=e+"px",this.#Mi.style.width=e+"px";for(var t=0;t<this.#Mi.children.length;t++){this.#Mi.children[t].style.width=e+"px"}}#Gi(e,t){var s=this.#Ei.indexOf(e);this.#Ri.children[s+1].style.width=t+"px",e.width=t;for(var r=0;r<this.#Mi.children.length;r++){this.#Mi.children[r].children[s+1].style.width=t+"px"}}#Oi(e){if(this.#Pi){var t=e.clientX-this.#Pi.lastX;this.#Pi.lastX=e.clientX;var s=Math.max(this.#Pi.column.width+t,this.#Pi.column.minWidth);this.#Gi(this.#Pi.column,s)}else if(this.#Li){t=Math.abs(e.clientX-this.#Li.startX);!this.#Li.isReordering&&t>5&&(this.#Li.isReordering=!0,this.#Li.headerCell.classList.add("dragging"),this.#Ri.classList.add("reordering"),this.#_i(),this.#en(e.clientX,e.clientY)),this.#Li.isReordering&&(this.#tn(e.clientX),this.#sn(e.clientX,e.clientY))}}#Xi(e){if(this.#Pi&&(this.#ui.columnResized$.next({column:this.#Pi.column}),this.#Pi=null),this.#Li){if(this.#Li.isReordering){var t=this.#rn(e.clientX),s=this.#Ei.indexOf(this.#Li.column);t!==s&&t!==s+1&&this.#in(s,t),this.#Li.headerCell.classList.remove("dragging"),this.#nn(),this.#an()}this.#Li=null,this.#Ri.classList.remove("reordering")}}#Ni(e,t){t.preventDefault(),this.#ui.columnHeaderContextMenu$.next({column:e,mouseEvent:t})}#ji(e,t){if(0==t.button){t.preventDefault();var s=this.#Ei.indexOf(e);this.#Li={column:e,startX:t.clientX,lastX:t.clientX,headerCell:this.#Ri.children[s+1],isReordering:!1,indicator:null,ghost:null}}}#Ki(e,t){0==t.button&&(this.#Pi={column:e,startX:t.clientX,lastX:t.clientX})}#_i(){var e=window.document.createElement("div");e.classList.add("reorder-indicator"),this.#Ri.appendChild(e),this.#Li.indicator=e}#nn(){this.#Li?.indicator&&(this.#Li.indicator.remove(),this.#Li.indicator=null)}#en(e,t){var s=this.#Li.headerCell,r=s.cloneNode(!0),i=s.getBoundingClientRect(),n=window.getComputedStyle(s);r.classList.add("reorder-ghost"),r.style.width=i.width+"px",r.style.height=i.height+"px",r.style.left=e-i.width/2+"px",r.style.top=t-i.height/2+"px",r.style.font=n.font,r.style.paddingLeft=n.paddingLeft,r.style.paddingRight=n.paddingRight;var a=r.querySelector(".resizer");a&&a.remove(),window.document.body.appendChild(r),this.#Li.ghost=r}#sn(e,t){var s=this.#Li?.ghost;s&&(s.style.left=e-parseFloat(s.style.width)/2+"px",s.style.top=t-parseFloat(s.style.height)/2+"px")}#an(){this.#Li?.ghost&&(this.#Li.ghost.remove(),this.#Li.ghost=null)}#tn(e){var t=this.#Li.indicator;if(t){var s=this.#rn(e),r=this.#Ri.children[s+1];if(r){var i=this.#Ri.getBoundingClientRect(),n=r.getBoundingClientRect();t.style.left=n.left-i.left+"px"}else{var a=this.#Ri.children[this.#Ei.length];if(a){i=this.#Ri.getBoundingClientRect();var o=a.getBoundingClientRect();t.style.left=o.right-i.left+"px"}}}}#rn(e){for(var t=0;t<this.#Ei.length;t++){var s=this.#Ri.children[t+1].getBoundingClientRect();if(e<s.left+s.width/2)return t}return this.#Ei.length}#in(e,t){var s=t>e?t-1:t,[r]=this.#Ei.splice(e,1);this.#Ei.splice(s,0,r);var i=this.#Ri.children[e+1];this.#Ri.removeChild(i),C(this.#Ri,i,s+1);for(var n=0;n<this.#Mi.children.length;n++){var a=this.#Mi.children[n],o=a.children[e+1];a.removeChild(o),C(a,o,s+1)}this.#ui.columnReordered$.next({column:r})}getItemRowHeight(e){return this.#ui.rowHeight}#on(e,t){e.style.height=this.getItemRowHeight(t)+"px"}#Ui(e,t){var s=window.document.createElement("div");s.classList.add("row"),s.id=e.id,this.#on(s,e),s.addEventListener("mouseover",()=>{this.#ln(e)}),s.addEventListener("mouseout",()=>{this.#hn(e)}),C(this.#Mi,s,t);var r=window.document.createElement("div");r.classList.add("cell"),r.classList.add("row-header"),this.#on(r,e),C(s,r,0);for(var i=0;i<this.#Ei.length;i++)this.#qi(s,e,i);this.#ui.rowAdded$.next({item:e,row:s}),this.#Zi()}#qi(e,t,s){const r=this.#Ei[s],i=window.document.createElement("div");i.classList.add("cell"),i.style.width=r.width+"px",i.addEventListener("mousedown",e=>{this.#cn(e,i,r,t)}),i.addEventListener("dblclick",e=>{this.#dn(e)}),C(e,i,s+1)}onItemChanged(e){this.redrawItemRow(e)}onItemRemoved(e){}onComplexOperationFinished(){this.#un(),this.redrawAll(),this.#Hi.updateWithCurrentSelection()}redrawItemRow(e){var t=this.getItemRow(e);t.children[0].innerText=this.#ui.dataSource.getItemLabel(e);for(var s=0;s<this.#Ei.length;s++){var r=this.#Ei[s],i=t.children[s+1];r.align&&(i.style.justifyContent=r.align.toLowerCase()),r.renderer.redraw(i,r.valueFormatter,e)}}#Vi(){this.#Ri.children[0].style.transform=`translateX(${this.#gi.scrollLeft}px)`,this.#ui.scrollTop$.next(this.#gi.scrollTop)}#Fi(){var e=this.#ui.cellEditing$.getValue();e&&e.editor.cancelEdit()}#Wi(e){e.preventDefault()}#zi(){this.#ui.selectedItems$.next(this.#Hi.items)}#Bi(e){this.#ui.canEdit&&this.#ui.rowContextMenu$.next(e)}#un(){for(var e=this.#Mi.children.length-1;e>=0;e--){var t=this.#Mi.children[e];this.#ui.dataSource.getItemById(t.id)||this.#Mi.removeChild(t)}for(e=0;e<this.#ui.dataSource.length;e++){let r=this.#ui.dataSource.getItem(e);if(this.#Mi.children.length<=e)this.#Ui(r,e);else if((t=this.#Mi.children[e]).id!=r.id){var s=this.#gn(r.id);s?C(this.#Mi,s,e):this.#Ui(r,e)}}}#gn(e){for(var t=0;t<this.#Mi.children.length;t++)if(this.#Mi.children[t].id===e)return this.#Mi.children[t];return null}redrawAll(){for(var e=0;e<this.#ui.dataSource.length;e++)this.redrawItemRow(this.#ui.dataSource.getItem(e))}updateColumnHeaders(){for(var e=0;e<this.#Ei.length;e++){var t=this.#Ei[e],s=this.#Ri.children[e+1];t.headerHtml||(s.innerText=t.name),t.tooltip&&(s.title=t.tooltip)}}#cn(e,t,s,r){if(0==e.button){var i=this.#ui.cellEditing$.getValue();if(i){if(i.cell==t)return;i.editor.endEditIfModifiedElseCancel()}this.#Ii.onCellMousedown(t,s,r)}}#dn(e){0==e.button&&this.#Ii.onCellDblClick()}#ln(e){this.#ui.rowMouseOver$.next({item:e})}#hn(e){this.#ui.rowMouseOver$.next(null)}scrollContentVertically(e){this.#gi.scrollTop+=e}setScrollTop(e){this.#gi.scrollTop=e}setHoverItem(e){this.#Di&&(this.getItemRow(this.#Di).classList.remove("hover"),this.#Di=null);e&&this.getItemRow(e).classList.add("hover");this.#Di=e}hideColumn(e){var t=this.#Ei.find(t=>t.code==e);t&&(t.isVisible=!1)}removeColumn(e){var t=this.#Ei.find(t=>t.code==e);if(t){var s=this.#Ei.indexOf(t);this.#Ei.splice(s,1);var r=this.#Ri.children[s+1];this.#Ri.removeChild(r);for(var i=0;i<this.#Mi.childElementCount;i++){var n=this.#Mi.children[i],a=n.children[s+1];n.removeChild(a)}this.#Zi()}}getColumnsContentWidth(){var e=48;for(var t of this.#Ei)t.isVisible&&(e+=t.width+17);return e}getDefaultColumns(){return this.#Ei.filter(e=>!e.isCustom)}getCustomColumns(){return this.#Ei.filter(e=>e.isCustom)}saveColumns(){return this.#Ei.map(e=>({code:e.code,width:e.width,isVisible:e.isVisible}))}loadColumns(e){for(var t=new Map,s=0;s<this.#Ei.length;s++)t.set(this.#Ei[s].code,s);var r=[],i=new Set;for(var n of e){void 0!==(a=t.get(n.code))&&(r.push(a),i.add(a))}for(s=0;s<this.#Ei.length;s++)i.has(s)||r.push(s);for(var n of e){var a;void 0!==(a=t.get(n.code))&&(this.#Ei[a].width=n.width,this.#Ei[a].isVisible=n.isVisible)}var o=r.map(e=>this.#Ei[e]);this.#Ei=o;var l=r.map(e=>this.#Ri.children[e+1]);for(var h of l)this.#Ri.appendChild(h);for(var c=0;c<this.#Mi.children.length;c++){var d=this.#Mi.children[c],u=r.map(e=>d.children[e+1]);for(var h of u)d.appendChild(h)}this.redrawAll()}scrollToItem(e){var t=this.getItemRow(e),s=this.#gi.getBoundingClientRect(),r=t.getBoundingClientRect(),i=s.top,n=s.bottom;r.top<i?this.#gi.scrollTop-=i-r.top:r.bottom>n&&(this.#gi.scrollTop+=r.bottom-n)}clearSelection(){this.#Hi.clear(),this.#Ii.clearFocus()}}class ut extends ht{#mn;constructor(e,t,s){super(e,t,s),this.#mn=s}handleCustomKeyDown(e,t){if(e.altKey&&e.shiftKey&&this.context.canEdit)switch(e.key){case"ArrowRight":return e.preventDefault(),this.#mn.indentSelectedItems(),!0;case"ArrowLeft":return e.preventDefault(),this.#mn.outdentSelectedItems(),!0;case"ArrowUp":return e.preventDefault(),this.#mn.moveUpSelectedItems(),!0;case"ArrowDown":return e.preventDefault(),this.#mn.moveDownSelectedItems(),!0}return!(!e.ctrlKey||e.shiftKey||e.altKey||"ArrowUp"!==e.key&&"ArrowDown"!==e.key||!this.#mn.canToggleCollapsed(t.item))&&(e.preventDefault(),this.#mn.toggleCollapsed(t.item),!0)}}class gt extends dt{get treeDataSource(){return this.tableContext.dataSource}constructor(e,t){super(e,t),this.treeDataSource.itemCollapsedChanged$.subscribe(()=>{this.redrawAll()})}createKeyboardNavigation(){return new ut(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 mt{#vn;get code(){return this.#vn}#p;get name(){return this.#p}set name(e){this.#p=e}#pn;get width(){return this.#pn}set width(e){e!=this.#pn&&(this.#pn=e,this.#v())}#fn;get minWidth(){return this.#fn}set minWidth(e){e!=this.#fn&&(this.#fn=e,this.#v())}#wn;get valueFormatter(){return this.#wn}#Tn;get renderer(){return this.#Tn}#yn=null;get align(){return this.#yn}#xn=null;get editor(){return this.#xn}#bn;get isEditable(){return this.#bn}#Cn=!0;get isVisible(){return this.#Cn}set isVisible(e){e!=this.#Cn&&(this.#Cn=e,this.#v())}#kn=null;get tooltip(){return this.#kn}set tooltip(e){this.#kn=e}#Sn=null;get headerHtml(){return this.#Sn}set headerHtml(e){this.#Sn=e}#$n=!1;get isCustom(){return this.#$n}set isCustom(e){this.#$n=e}changed$=new e;constructor(e,t,s,r,i,n,a,o,l,h){this.#vn=e,this.#p=t,this.#wn=s,this.#pn=a??100,this.#fn=o??100,this.#Tn=r,this.#xn=i,this.#bn=n,this.#yn=l??null,this.#kn=h??null}#v(){this.changed$.next(this)}}class vt extends Ze{#pt;constructor(e,t,s){super(t,s),this.#pt=e}getDefaultDate(){var e=this.#pt.projectTimeline$.getValue(),t=m();return e.startDate.getTime()>t.getTime()&&(t=new Date(e.startDate)),t}getLocale(){return this.#pt.locale$.getValue().language}}class pt extends gt{#pt;#En=[];constructor(e,t){super(e.table,t),this.#pt=e,e.settings.changed$.subscribe(()=>{this.redrawAll()}),e.locale$.subscribe(()=>{this.#Rn()}),e.chartMouseWheel$.subscribe(e=>{e.ctrlKey||this.scrollContentVertically(e.deltaY)}),e.chartTaskHover$.subscribe(e=>{this.setHoverItem(e)}),e.dividerPositionChanged$.subscribe(()=>{this.redrawAll()}),this.tableContext.rowMouseOver$.subscribe(t=>{e.sheetRowMouseOver$.next(t?{task:t.item}:null)}),this.#Mn(e)}#Mn(e){var t=e.locale$.getValue(),s=new mt("name",t.columns.name,e=>e.name??"",new je(e),new qe(e=>e.name,(e,t)=>e.name=t),e=>!0,200,100);this.addColumn(s);var r=new mt("icons","",e=>"",new ot(e),null,e=>!1,18,18);r.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>',this.addColumn(r);var i=new Ge;i.initWithGanttContext(e);var n=new mt("length",t.columns.length,e=>e.length?.toString()??"",new Ne,i,e=>e.isLengthEditable,55,55,"Right");this.addColumn(n);var a=new mt("start",t.columns.start,t=>t.startTime?k(t.startTime,e.locale$.getValue().language):"",new Ne,new vt(e,e=>e.startTime,(e,t)=>e.startTime=t),e=>e.isStartTimeEditable,90,90);this.addColumn(a);var o=new mt("end",t.columns.end,t=>t.endTime?k(t.endTime,e.locale$.getValue().language):"",new Ne,new vt(e,e=>e.endTime,(e,t)=>e.endTime=this.#pt.calendar.getEndOfWorkingDay(t)),e=>e.isEndTimeEditable,90,90);this.addColumn(o);var l=new mt("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 Ne,new Je(e=>e.progress,(e,t)=>e.progress=t),e=>e.isProgressEditable,70,70,"Right");this.addColumn(l);var h=new mt("resources",t.columns.resources,e=>"",new _e(e),new Qe,e=>e.isResourcesEditable,100,100);this.addColumn(h);var c=new mt("work",t.columns.work,e=>e.work?.toString()??"",new Ne,new rt,e=>e.isWorkEditable,45,45,"Right",t.columnTooltips.work);this.addColumn(c);var d=new mt("cost",t.columns.cost,t=>{var s=t.cost;return null!==s?function(e,t,s,r){var i=new Intl.NumberFormat(r,{minimumFractionDigits:2,maximumFractionDigits:2}).format(e);switch(s){case"BeforeAmount":return t+i;case"BeforeAmountWithSpace":return t+" "+i;case"AfterAmount":return i+t;case"AfterAmountWithSpace":return i+" "+t;default:throw new Error("Unknown display mode")}}(s,this.#pt.settings.currencySymbol,this.#pt.settings.currencySymbolDisplayMode,e.locale$.getValue().language):""},new Ne,new it(e=>e.cost,(e,t)=>e.cost=t),e=>e.isCostEditable,120,120,"Right",t.columnTooltips.cost);this.addColumn(d),this.#En=["name","icons","length","start","end","progress","resources","work","cost"]}#Rn(){var e=this.#pt.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[s,r]of Object.entries(t)){var i=this.getColumnByCode(s);i&&(i.name=r.name,void 0!==r.tooltip&&(i.tooltip=r.tooltip))}this.updateColumnHeaders(),this.redrawAll()}canToggleCollapsed(e){return"Summary"===e.type}toggleCollapsed(e){e.toggleCollapsed()}onItemChanged(e){this.#Dn(),e.parent?this.#Hn(e.parent):this.redrawItemRow(e)}redrawItemRow(e){super.redrawItemRow(e);for(var t=this.getItemRow(e),s=0;s<this.columnsLength;s++){var r=t.children[s+1];"Summary"==e.type?r.classList.add("task-summary"):r.classList.remove("task-summary")}}onComplexOperationFinished(){super.onComplexOperationFinished(),this.#Dn()}#Hn(e){this.redrawItemRow(e);for(var t=0;t<e.subtasksLength;t++)this.#Hn(e.getSubtask(t))}#Dn(){for(var e=0,t=this.tableContext.dataSource,s=0;s<t.length;s++){var r=t.getItem(s),i=0;"ASAP"!==r.constraintType&&i++,r.note&&i++,(i+=r.warnings.length)>e&&(e=i)}var n=this.getColumnByCode("icons"),a=e>0?Math.max(18,18*e-4):18;n.minWidth=a,n.width=a}addCustomStringColumn(e,t){var s=new mt(e,t,t=>t.getPropertyValue(e)??null,new Ne,new qe(t=>t.getPropertyValue(e),(t,s)=>t.setPropertyValue(e,s)),e=>!0,100,60);return s.isCustom=!0,this.addColumn(s),s}addCustomIntegerColumn(e,t){var s=new mt(e,t,t=>t.getPropertyValue(e)??null,new Ne,new nt(t=>t.getPropertyValue(e),(t,s)=>t.setPropertyValue(e,s)),e=>!0,100,60,"Right");return s.isCustom=!0,this.addColumn(s),s}addCustomDecimalColumn(e,t){var s=new mt(e,t,t=>t.getPropertyValue(e)??null,new Ne,new at(t=>t.getPropertyValue(e),(t,s)=>t.setPropertyValue(e,s)),e=>!0,100,60,"Right");return s.isCustom=!0,this.addColumn(s),s}getDefaultColumns(){return this.getColumns().filter(e=>this.#En.includes(e.code))}getCustomColumns(){return this.getColumns().filter(e=>!this.#En.includes(e.code))}}class ft{font=new _;rowHeight=30;headerHeight=50;sheet=new Tt;chart=new yt}class wt{backgroundColor="#f8f8f8";cellBorderColor="#a0a0a0";cellDividerColor=null;textColor="#000000"}class Tt{header=new wt;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 yt{header=new xt;content=new Ct}class xt{backgroundColor="#f8f8f8";cellBorderColor="#a0a0a0";cellDividerColor=null;cellDividerPadding=0;textColor="#000000"}class bt{borderColor=null;color1="#aabbff";color2="#6677dd";highlightColor="rgba(50, 70, 200, 0.4)";progressColor1="#7788cc";progressColor2="#223399";progressHighlightColor="rgba(50, 70, 200, 0.4)";separatorColor="#6677dd";linkLineColor="#6677dd";linkArrowColor="#6677dd"}class Ct{backgroundColor="#ffffff";taskHeight=16;taskBorderRadius=0;taskProgressHeight=16;taskColors;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)";nonWorkingTimeStyle="#f8f8f8";tier2SeparatorLineStyle="#d0d0d0";gridLineColor="#f0f0f0";linkFromMilestoneLineColor="#909090";linkFromMilestoneArrowColor="#909090";connectorDotRadius=7;connectorDotColor="#4a90d9";connectorDotBorderColor="#2a6ab0";connectorDotHoverColor="#2a6ab0";linkLineStyle="sharp";baselineColor="#d8d8d8";baselineHeight=6;baselineSummaryHeight=8;baselineMilestoneSize=8;baselineOffset=3;baselineBorderRadius=1;criticalTaskBorderColor="#cc0000";criticalTaskBorderWidth=2;criticalMilestoneBorderColor="#cc0000";criticalSummaryBorderColor="#cc0000";tooltipFont=_.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=_.from(null,9);taskLabelPosition="None";taskLabelContent="Name";taskLabelColor="#333333";taskLabelFont=_.from(null,10);taskLabelPadding=4;taskLabelOutsideMargin=6;summaryLabelPosition="None";summaryLabelContent="Name";summaryLabelColor="#333333";milestoneLabelPosition="None";milestoneLabelContent="Name";milestoneLabelColor="#333333";constructor(){this.taskColors=[],this.taskColors.push(new bt);var e=new bt;e.color1="#ffcccc",e.color2="#dd9999",e.progressColor1="#eeaaaa",e.progressColor2="#cc7777",e.separatorColor="#cc7777",e.linkLineColor="#cc7777",e.linkArrowColor="#cc7777",this.taskColors.push(e);var t=new bt;t.color1="#bbeebb",t.color2="#88cc88",t.progressColor1="#88cc88",t.progressColor2="#55aa55",t.separatorColor="#55aa55",t.linkLineColor="#55aa55",t.linkArrowColor="#55aa55",this.taskColors.push(t);var s=new bt;s.color1="#f8f8aa",s.color2="#e8e899",s.progressColor1="#e8e899",s.progressColor2="#d0d077",s.separatorColor="#cccc66",s.linkLineColor="#cccc66",s.linkArrowColor="#cccc66",this.taskColors.push(s);var r=new bt;r.color1="#ddbbff",r.color2="#bb99dd",r.progressColor1="#cc99ee",r.progressColor2="#aa77cc",r.separatorColor="#aa77cc",r.linkLineColor="#aa77cc",r.linkArrowColor="#aa77cc",this.taskColors.push(r);var i=new bt;i.color1="#ffd8a8",i.color2="#eebb88",i.progressColor1="#eebb88",i.progressColor2="#cc9966",i.separatorColor="#cc9966",i.linkLineColor="#cc9966",i.linkArrowColor="#cc9966",this.taskColors.push(i);var n=new bt;n.color1="#a8e8e8",n.color2="#77cccc",n.progressColor1="#77cccc",n.progressColor2="#55aaaa",n.separatorColor="#55aaaa",n.linkLineColor="#55aaaa",n.linkArrowColor="#55aaaa",this.taskColors.push(n);var a=new bt;a.color1="#ffbbdd",a.color2="#ee99bb",a.progressColor1="#ee99bb",a.progressColor2="#cc7799",a.separatorColor="#cc7799",a.linkLineColor="#cc7799",a.linkArrowColor="#cc7799",this.taskColors.push(a)}}class kt extends ft{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 St{#A=[];#Q=new Map;resourceChanged$=new e;resourceRemoved$=new e;resourceRemoving$=new e;constructor(){}get length(){return this.#A.length}indexOf(e){return this.#A.indexOf(e)}getResource(e){if(e<0||e>=this.#A.length)throw new Error("Index out of range");return this.#A[e]}getResourceById(e){return this.#A.find(t=>t.id==e)??null}#Te(e,t){var s=this.#Q.get(e);s||(s=[],this.#Q.set(e,s)),s.push(t)}#ye(e){var t=this.#Q.get(e);if(t){for(let e of t)e.unsubscribe();this.#Q.delete(e)}}#we(e){this.#Te(e,e.changed$.subscribe(e=>{this.#Pn(e.resource)}))}#Pn(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.#A.includes(e))throw new Error("The resource is already included in this list of resources");return e.list=this,this.#A.push(e),this.#we(e),e}assign(e){for(var t of this.#A)this.#ye(t);for(var t of(this.#A=[],e))this.addResource(t)}removeResource(e){var t=this.#A.indexOf(e);if(t<0)throw new Error("Resource not found");this.resourceRemoving$.next({resource:e}),this.#A.splice(t,1),this.resourceRemoved$.next({resource:e})}}class $t{#i;get value(){return this.#i}#R;get type(){return this.#R}constructor(e,t){if(e<0)throw new Error("Invalid rate");this.#i=e,this.#R=t}toAny(){return{value:this.#i,type:this.#R}}static fromAny(e){return new $t(e.value,e.type)}}class Et{#u;get id(){return this.#u}#p;get name(){return this.#p}set name(e){e!=this.#p&&(this.#p=e,this.#v())}#R;get type(){return this.#R}set type(e){e!=this.#R&&(this.#R=e,this.#v())}#Ln=0;get fixedCostPerUse(){return this.#Ln}set fixedCostPerUse(e){e!=this.#Ln&&(this.#Ln=e,this.#v())}#An=0;get fixedCostPerResource(){return this.#An}set fixedCostPerResource(e){e!=this.#An&&(this.#An=e,this.#v())}#In=null;get avatarIconUrl(){return this.#In}set avatarIconUrl(e){e!=this.#In&&(this.#In=e,this.#v())}#x=null;get list(){return this.#x}set list(e){if(this.#x)throw new Error("Once assigned the list cannot be changed");e!=this.#x&&(this.#x=e)}#Vn=null;get rate(){return this.#Vn}set rate(e){e!=this.#Vn&&(this.#Vn=e,this.#v)}changed$=new e;constructor(e,t,s){this.#p=t,this.#R=s,this.#u=e||H(30)}#v(){this.changed$.next({resource:this})}toAny(){return{id:this.#u,name:this.#p,type:this.#R,fixedCostPerUse:this.#Ln,fixedCostPerResource:this.#An,avatarIconUrl:this.#In,rate:this.#Vn?this.#Vn.toAny():null}}static fromAny(e){var t=new Et(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?$t.fromAny(e.rate):null,t}}class Rt extends Re{#ut;#Fn;#Wn;#zn;#Bn=null;#On=null;#Xn;#Un=null;#Nn;#jn;constructor(e,t,s,r,i,n){super(),this.startWatching(i),this.#ut=e,this.#Xn=n.getDefaultSheetWidth(),this.#jn=n.onWrapperResized,this.#Fn=t,this.#Wn=s,this.#zn=r,this.#zn.classList.add("gc-divider");var a=window.document.createElement("div");a.classList.add("resizer"),a.addEventListener("mousedown",e=>{this.#Kn(e)}),this.#zn.appendChild(a),this.addDocumentListener("mousemove",this.#Oi),this.addDocumentListener("mouseup",this.#Xi),this.#Nn=new ResizeObserver(e=>{requestAnimationFrame(()=>{for(let t of e){const{width:e,height:s}=t.contentRect;this.#Yn(e,s)}})}),this.#Nn.observe(this.#Fn)}destroy(){this.#Nn.disconnect(),super.destroy()}#Kn(e){0==e.button&&(e.stopPropagation(),this.#ut.dividerResizing$.next(!0),this.#Bn={startX:e.clientX,lastX:e.clientX})}#Oi(e){if(this.#Bn){e.stopPropagation();var t=e.clientX-this.#Bn.lastX;this.#Bn.lastX=e.clientX,null===this.#On?this.#On=this.#Xn+t:this.#On+=t,this.#qn()}}#Xi(e){this.#Bn&&(e.stopPropagation(),this.#ut.dividerResizing$.next(!1),this.#Bn=null)}#Yn(e,t){if(this.#jn){var s=this.#jn(e,t);null!==s&&(this.#Xn=s)}this.#qn()}#qn(){var e=this.#On??this.#Xn;null!==this.#Un&&this.#Un==e||(this.#Un=e,this.#Wn.style.width=e+"px",this.#ut.dividerPositionChanged$.next(),"hidden"===this.#Fn.style.visibility&&(this.#Fn.style.visibility=""))}}class Mt extends Rt{constructor(e,t,s,r,i){super(e,t,s,r,i,{getDefaultSheetWidth:()=>500,onWrapperResized:e=>Math.floor(e/2)})}}class Dt{#Zn;constructor(e){this.#Zn=e}recalculate(){for(var e=[],t=0;t<this.#Zn.list.length;t++){var s=this.#Zn.list.getTask(t),r=this.#Gn(s);this.#Jn(e,r).tasks.push(s)}var i=this.#Zn.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?i.moveToStartShift(e.startTime,!0):i.moveToEndShift(e.startTime,!0);e.startTime=n}this.#Zn.list.complexOperationFinished$.next()}#Gn(e){for(var t=0;t<this.#Zn.list.linksLength;t++){var s=this.#Zn.list.getLink(t);if(s.to==e)return this.#Gn(s.from)+1}return 0}#Jn(e,t){for(;e.length<t+1;)e.push({tasks:[]});return e[t]}}class Ht{#x;#d;constructor(e,t){this.#x=e,this.#d=t}calculate(){var{tasks:e,links:t}=this.#Qn();if(this.#_n(),0!==e.length){var s=this.#ea(e,t);s&&(this.#ta(s,t),this.#sa(s,t),this.#ra(s))}}#Qn(){for(var e=[],t=new Set,s=0;s<this.#x.length;s++){var r=this.#x.getTask(s);"Task"!==r.type&&"Milestone"!==r.type||r.startTime&&r.endTime&&(e.push(r),t.add(r))}var i=[];for(s=0;s<this.#x.linksLength;s++){var n=this.#x.getLink(s);t.has(n.from)&&t.has(n.to)&&i.push(n)}return{tasks:e,links:i}}#_n(){for(var e=0;e<this.#x.length;e++){var t=this.#x.getTask(e);t.earlyStart=null,t.earlyFinish=null,t.lateStart=null,t.lateFinish=null,t.totalFloat=null,t.freeFloat=null,t.isCritical=!1}}#ea(e,t){var s=new Map,r=new Map;for(var i of e)s.set(i,0),r.set(i,[]);for(var n of t)s.set(n.to,(s.get(n.to)??0)+1),r.get(n.from).push(n.to);var a=[];for(var i of e)0===s.get(i)&&a.push(i);for(var o=[];a.length>0;){var l=a.shift();for(var h of(o.push(l),r.get(l))){var c=s.get(h)-1;s.set(h,c),0===c&&a.push(h)}}return o.length!==e.length?null:o}#ia(e){return"Milestone"===e.type?0:e.partsLengthInHours}#ta(e,t){var s=new Map;for(var r of e)s.set(r,[]);for(var i of t)s.get(i.to).push(i);for(var r of e){var n,a=s.get(r);if(0===a.length)n=new Date(r.startTime);else for(var i of(n=new Date(r.startTime),a)){var o,l=i.from,h=i.lag.toHours(this.#d);switch(i.type){case"FinishToStart":o=this.#d.addHours(l.earlyFinish,h);break;case"StartToStart":o=this.#d.addHours(l.earlyStart,h);break;case"FinishToFinish":var c=this.#ia(r);o=this.#d.addHours(l.earlyFinish,h-c);break;case"StartToFinish":c=this.#ia(r);o=this.#d.addHours(l.earlyStart,h-c)}o.getTime()>n.getTime()&&(n=o)}n=this.#na(r,n),r.earlyStart=n;c=this.#ia(r);r.earlyFinish=c>0?this.#d.addHours(n,c):new Date(n)}}#na(e,t){var s=e.constraintDate;if(!s)return t;switch(e.constraintType){case"MSO":return new Date(s);case"SNET":return s.getTime()>t.getTime()?new Date(s):t;case"FNET":var r=this.#ia(e),i=this.#d.addHours(new Date(s),-r);return i.getTime()>t.getTime()?i:t;case"MFO":r=this.#ia(e);return this.#d.addHours(new Date(s),-r);default:return t}}#aa(e,t){var s=e.constraintDate;if(!s)return t;switch(e.constraintType){case"MFO":return new Date(s);case"SNLT":var r=this.#ia(e),i=this.#d.addHours(new Date(s),r);return i.getTime()<t.getTime()?i:t;case"FNLT":return s.getTime()<t.getTime()?new Date(s):t;case"MSO":r=this.#ia(e);return this.#d.addHours(new Date(s),r);default:return t}}#sa(e,t){var s=null;for(var r of e)(!s||r.earlyFinish.getTime()>s.getTime())&&(s=new Date(r.earlyFinish));if(s){var i=new Map;for(var r of e)i.set(r,[]);for(var n of t)i.get(n.from).push(n);for(var a=e.length-1;a>=0;a--){r=e[a];var o,l=i.get(r);if(0===l.length)o=new Date(s);else for(var n of(o=new Date(s),l)){var h,c=n.to,d=n.lag.toHours(this.#d);switch(n.type){case"FinishToStart":h=this.#d.addHours(c.lateStart,-d);break;case"FinishToFinish":case"StartToFinish":h=this.#d.addHours(c.lateFinish,-d);break;case"StartToStart":var u=this.#ia(r);h=this.#d.addHours(c.lateStart,u-d)}h.getTime()<o.getTime()&&(o=h)}o=this.#aa(r,o),r.lateFinish=o;u=this.#ia(r);r.lateStart=u>0?this.#d.addHours(o,-u):new Date(o)}}}#ra(e){for(var t of e)t.earlyStart&&t.lateStart&&(t.totalFloat=this.#d.getHoursBetween(t.earlyStart,t.lateStart),t.isCritical=Math.abs(t.totalFloat)<.001)}}const Pt=96/25.4,Lt={A4:[210,297],A3:[297,420],Letter:[215.9,279.4],Legal:[215.9,355.6]};function At(e,t){return e?e.includes(t)||e.includes('"')||e.includes("\n")||e.includes("\r")?'"'+e.replace(/"/g,'""')+'"':e:""}function It(e){var t=e.getRow(1);t.font={bold:!0},t.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFF0F0F0"}}}function Vt(e){e.views=[{state:"frozen",ySplit:1}]}function Ft(e,t,s,r,i,n,a,o,l){var h=n.getValue(),c=a.getValue();n.next(s.chartStart),a.next(0);try{var d=document.createElement("canvas");d.width=s.chartWidth*r,d.height=s.totalHeight*r;var u=d.getContext("2d");1!==r&&u.scale(r,r),u.fillStyle=i.chart.content.backgroundColor,u.fillRect(0,0,s.chartWidth,s.totalHeight),u.font=i.font.toString(1);var g=1===r?d:{width:s.chartWidth,height:s.totalHeight,getContext:()=>u};for(var m of(o.render(g),u.save(),u.beginPath(),u.rect(0,s.headerHeight,s.chartWidth,s.totalHeight-s.headerHeight),u.clip(),l))m.render(g);u.restore(),e.drawImage(d,0,0,d.width,d.height,t,0,s.chartWidth,s.totalHeight)}finally{n.next(h),a.next(c)}}const Wt=10;class zt{#pt;#oa;constructor(e,t){this.#pt=e,this.#oa=t}get theme(){return this.#pt.theme$.getValue()}calculateDimensions(){var e=this.theme,t=this.#pt.timeline.currentZoom,s=t.axis[0],r=this.#la(),i=40+r.reduce((e,t)=>e+t.width+Wt,0),n=this.#pt.list.minStartTime??this.#pt.projectTimeline$.getValue().startDate,a=this.#pt.list.maxEndTime??this.#pt.projectTimeline$.getValue().endDate,o=s.getAdd(s.getCellStartTime(n),-3),l=s.getAdd(s.getCellStartTime(a),4),h=Math.ceil(s.getX(l,o,t)),c=this.#ha(),d=e.headerHeight+2;return{visibleColumns:r,visibleRowCount:c,sheetWidth:i,chartWidth:h,chartStart:o,headerHeight:d,totalHeight:d+c*(e.rowHeight+1)}}renderSheet(e,t){var s=this.theme,r=s.font;e.font=r.toString(1),e.fillStyle=s.chart.header.backgroundColor,e.fillRect(0,0,t.sheetWidth,t.headerHeight),e.strokeStyle=s.chart.header.cellBorderColor,e.beginPath(),e.moveTo(0,t.headerHeight-.5),e.lineTo(t.sheetWidth,t.headerHeight-.5),e.stroke();var i=0;for(var n of(se(e,"#",new J(i+5,0,30,t.headerHeight),"Center",0,s.chart.header.textColor),i+=40,t.visibleColumns))se(e,n.name,new J(i+5,0,n.width,t.headerHeight),"Left",0,s.chart.header.textColor),e.strokeStyle=s.chart.header.cellBorderColor,e.beginPath(),e.moveTo(i-.5,0),e.lineTo(i-.5,t.headerHeight),e.stroke(),i+=n.width+Wt;for(var a=s.rowHeight+1,o=t.headerHeight,l=0;l<this.#pt.list.length;l++){var h=this.#pt.list.getTask(l);if(!h.hidden){i=0;var c=this.#pt.list.getTaskNumber(h).toString();for(var n of(se(e,c,new J(i+5,o,30,a),"Center",0,"#808080"),i+=40,t.visibleColumns)){var d=n.valueFormatter(h),u=i+5,g=n.width;if("name"===n.code){var m=16*h.level;u+=m,g-=m}var v="Left";"Center"===n.align&&(v="Center"),"Right"===n.align&&(v="Right"),d&&(e.font="Summary"===h.type?`bold ${r.toString(1)}`:r.toString(1),se(e,d,new J(u,o,g,a),v,0,s.sheet.textColor),e.font=r.toString(1)),e.strokeStyle=s.chart.content.gridLineColor,e.beginPath(),e.moveTo(i-.5,o),e.lineTo(i-.5,o+a),e.stroke(),i+=n.width+Wt}e.strokeStyle=s.chart.content.gridLineColor,e.beginPath(),e.moveTo(0,o+a-.5),e.lineTo(t.sheetWidth,o+a-.5),e.stroke(),o+=a}}e.strokeStyle=s.chart.header.cellBorderColor,e.beginPath(),e.moveTo(t.sheetWidth-.5,0),e.lineTo(t.sheetWidth-.5,t.totalHeight),e.stroke()}renderChart(e,t,s,r=1){Ft(e,t,s,r,this.theme,this.#pt.timeline.visibleStartTime$,this.#pt.sheetScrollTop$,new ae(this.#pt),[new Z(this.#pt),new Fe(this.#pt),new Ie(this.#pt),new ue(this.#pt)])}#la(){for(var e=[],t=0;t<this.#oa.columnsLength;t++){var s=this.#oa.getColumn(t);s.isVisible&&e.push({code:s.code,name:s.name,width:s.width,align:s.align,valueFormatter:s.valueFormatter})}return e}#ha(){var e=this.#pt.list.getLastNonEmpty(!1);if(!e)return 0;for(var t=0,s=this.#pt.list.indexOf(e);s>=0;s--){this.#pt.list.getTask(s).hidden||t++}return t}}class Bt{#Tn;constructor(e){this.#Tn=e}async exportToImage(){var e=this.#Tn.calculateDimensions(),t=this.#Tn.theme,s=e.sheetWidth+e.chartWidth,r=document.createElement("canvas");r.width=s,r.height=e.totalHeight;var i=r.getContext("2d");return i.fillStyle=t.sheet.backgroundColor,i.fillRect(0,0,s,e.totalHeight),this.#Tn.renderSheet(i,e),this.#Tn.renderChart(i,e.sheetWidth,e),g().showWatermark&&We(i,s,e.totalHeight),new Promise((e,t)=>{r.toBlob(s=>{s?e(s):t(new Error("Failed to export image"))},"image/png")})}}class Ot extends Bt{constructor(e,t){super(new zt(e,t))}}class Xt{#pt;#oa;constructor(e,t){this.#pt=e,this.#oa=t}exportToCsv(e){var t=e?.delimiter??",",s=e?.includeHeaders??!0,r=e?.columns??null,i=e?.includeLinks??!1,n=this.#ca(r),a=[];if(s){var o=["#",...n.map(e=>At(e.name,t))];a.push(o.join(t))}for(var l=0;l<this.#pt.list.length;l++){var h=this.#pt.list.getTask(l);if("Empty"!==h.type){var c=[];for(var d of(c.push(this.#pt.list.getTaskNumber(h).toString()),n)){var u=d.valueFormatter(h);c.push(At(u,t))}a.push(c.join(t))}}var g=a.join("\n");if(i&&this.#pt.list.linksLength>0){g+="\n\n";var m=this.#pt.locale$.getValue();s&&(g+=[m.labels.from,m.labels.to,m.labels.type,m.labels.lag].map(e=>At(e,t)).join(t)+"\n");for(l=0;l<this.#pt.list.linksLength;l++){var v=this.#pt.list.getLink(l),p=this.#pt.list.getTaskNumber(v.from).toString(),f=this.#pt.list.getTaskNumber(v.to).toString(),w=0!==v.lag.value?v.lag.toString():"";g+=[p,f,v.type,At(w,t)].join(t)+"\n"}}return g}#ca(e){for(var t=[],s=0;s<this.#oa.columnsLength;s++){var r=this.#oa.getColumn(s);if("icons"!==r.code){if(e){if(!e.includes(r.code))continue}else if(!r.isVisible)continue;t.push({code:r.code,name:r.name,width:r.width,valueFormatter:r.valueFormatter})}}return t}async exportToExcel(e){var t;try{t=await import("exceljs")}catch{throw new Error("ExcelJS is required for Excel export. Install it with: npm install exceljs")}var s=this.#pt.locale$.getValue(),r=e?.sheetName??s.export.tasksSheetName,i=e?.includeLinksSheet??!0,n=e?.includeResourcesSheet??!0,a=e?.includeFormatting??!0,o=e?.columns??null,l=new t.Workbook;this.#da(l,r,o,a),i&&this.#pt.list.linksLength>0&&this.#ua(l,a),n&&this.#pt.resources.length>0&&this.#ga(l,a);var h=await l.xlsx.writeBuffer();return new Blob([h],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}#da(e,t,s,r){var i=this.#ca(s),n=e.addWorksheet(t),a=[{header:"#",key:"number",width:6}];for(var o of i){var l=Math.max(10,Math.round(o.width/7));a.push({header:o.name,key:o.code,width:l})}n.columns=a,r&&It(n);for(var h=0;h<this.#pt.list.length;h++){var c=this.#pt.list.getTask(h);if("Empty"!==c.type){var d={number:this.#pt.list.getTaskNumber(c)};for(var o of i)d[o.code]=o.valueFormatter(c);var u=n.addRow(d);if(r&&c.level>0){var g=u.getCell("name");g&&(g.alignment={indent:2*c.level})}r&&"Summary"===c.type&&(u.font={bold:!0})}}r&&Vt(n)}#ua(e,t){var s=this.#pt.locale$.getValue(),r=e.addWorksheet(s.export.linksSheetName);r.columns=[{header:s.labels.from,key:"from",width:8},{header:s.labels.to,key:"to",width:8},{header:s.labels.type,key:"type",width:18},{header:s.labels.lag,key:"lag",width:12}],t&&It(r);for(var i=0;i<this.#pt.list.linksLength;i++){var n=this.#pt.list.getLink(i);r.addRow({from:this.#pt.list.getTaskNumber(n.from),to:this.#pt.list.getTaskNumber(n.to),type:n.type,lag:0!==n.lag.value?n.lag.toString():""})}t&&Vt(r)}#ga(e,t){var s=this.#pt.locale$.getValue(),r=e.addWorksheet(s.export.resourcesSheetName);r.columns=[{header:"Name",key:"name",width:25},{header:"Type",key:"type",width:12},{header:"Rate",key:"rate",width:15}],t&&It(r);for(var i=0;i<this.#pt.resources.length;i++){var n=this.#pt.resources.getResource(i),a="";if(n.rate){var o="PerHour"===n.rate.type?"/h":"/d";a=n.rate.value+o}r.addRow({name:n.name,type:n.type,rate:a})}t&&Vt(r)}}class Ut{#Tn;constructor(e){this.#Tn=e}get renderer(){return this.#Tn}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 s=e?.pageSize??"A4",r=e?.orientation??"landscape",i=e?.margin??{top:10,right:10,bottom:10,left:10},n=e?.includeSheet??!0,a=e?.includeChart??!0,o=e?.quality??1,[l,h]=Lt[s];"landscape"===r&&([l,h]=[h,l]);var c=h,d=l-i.left-i.right,u=c-i.top-i.bottom,m=e?.header?6:0,v=e?.footer?6:0,p=u-m-v,f=this.#Tn.calculateDimensions(),w=this.#Tn.theme,T=n?f.sheetWidth:0,y=T+(a?f.chartWidth:0),x=document.createElement("canvas");x.width=2*y,x.height=2*f.totalHeight;var b,C=x.getContext("2d");if(C.scale(2,2),C.fillStyle=w.sheet.backgroundColor,C.fillRect(0,0,y,f.totalHeight),n&&this.#Tn.renderSheet(C,f),a&&this.#Tn.renderChart(C,T,f,2),g().showWatermark&&We(C,y,f.totalHeight),e?.fitToSinglePage){var k=y/Pt+i.left+i.right,S=f.totalHeight/Pt+i.top+i.bottom+m+v;b=new t.jsPDF({orientation:r,format:[k,S],unit:"mm"});var $=y/Pt,E=f.totalHeight/Pt,R=i.top+m;b.addImage(x.toDataURL("image/png",o),"PNG",i.left,R,$,E),this.#ma(b,e,i,1,1,S)}else{for(var M=d*Pt,D=p*Pt,H=f.headerHeight,P=this.computeVerticalPageBreaks(f,D,H),L=Math.max(1,Math.ceil(y/M)),A=[],I=0;I<P.length;I++)for(var V=0;V<L;V++){var F=V*M,W=Math.min(M,y-F),z=P[I].srcY,B=P[I].height;A.push({hPage:V,vPage:I,srcX:F,contentSrcY:z,srcW:W,contentSrcH:B})}b=new t.jsPDF({orientation:r,format:s,unit:"mm"});for(var O=A.length,X=0;X<A.length;X++){var U=A[X];X>0&&b.addPage();var N=Math.ceil(U.srcW),j=Math.ceil(H+U.contentSrcH);if(!(N<=0||j<=0)){var K=document.createElement("canvas");K.width=2*N,K.height=2*j;var Y=K.getContext("2d");Y.fillStyle=w.sheet.backgroundColor,Y.fillRect(0,0,K.width,K.height),Y.drawImage(x,2*U.srcX,0,2*U.srcW,2*H,0,0,2*U.srcW,2*H),U.contentSrcH>0&&Y.drawImage(x,2*U.srcX,2*U.contentSrcY,2*U.srcW,2*U.contentSrcH,0,2*H,2*U.srcW,2*U.contentSrcH);$=U.srcW/Pt,E=j/Pt,R=i.top+m;b.addImage(K.toDataURL("image/png",o),"PNG",i.left,R,$,E),this.#ma(b,e,i,X+1,O,c)}}}return b.output("blob")}#ma(e,t,s,r,i,n){if(t?.header){var a="function"==typeof t.header?t.header(r,i):t.header;e.setFontSize(9),e.setTextColor(128),e.text(a,s.left,s.top+4)}if(t?.footer){var o="function"==typeof t.footer?t.footer(r,i):t.footer;e.setFontSize(9),e.setTextColor(128),e.text(o,s.left,n-s.bottom)}}}class Nt extends Ut{constructor(e,t){super(new zt(e,t))}computeVerticalPageBreaks(e,t,s){for(var r=this.renderer.theme.rowHeight+1,i=Math.max(1,Math.floor((t-s)/r)),n=e.visibleRowCount+1,a=Math.max(1,Math.ceil(n/i)),o=[],l=0;l<a;l++){var h=s+l*i*r,c=Math.min(i*r,e.totalHeight-h);c<0&&(c=0),o.push({srcY:h,height:c})}return o}}class jt{#va=[];#pa=-1;#fa=50;#wa=!1;#Ta=0;#ya=!1;#xa;#ba;canUndo$=new t(!1);canRedo$=new t(!1);constructor(e,t){this.#xa=e,this.#ba=t}initialize(){this.#va=[this.#xa()],this.#pa=0}requestSnapshot(){this.#wa||(this.#Ta>0?this.#ya=!0:this.#Ca())}beginBatch(){this.#Ta++}endBatch(){this.#Ta--,0===this.#Ta&&this.#ya&&(this.#ya=!1,this.#Ca())}#Ca(){var e=this.#xa();if(!(this.#pa>=0&&e===this.#va[this.#pa])){for(this.#va.splice(this.#pa+1),this.#va.push(e),this.#pa++;this.#va.length>this.#fa;)this.#va.shift(),this.#pa--;this.#ka()}}undo(){this.canUndo$.getValue()&&(this.#wa=!0,this.#pa--,this.#ba(this.#va[this.#pa]),this.#wa=!1,this.#ka())}redo(){this.canRedo$.getValue()&&(this.#wa=!0,this.#pa++,this.#ba(this.#va[this.#pa]),this.#wa=!1,this.#ka())}#ka(){this.canUndo$.next(this.#pa>0),this.canRedo$.next(this.#pa<this.#va.length-1)}}class Kt{dataSource;rowHeight;canEdit$;get canEdit(){return this.canEdit$.getValue()}scrollTop$;rowAdded$;selectedItems$;focusedCell$;cellEditing$;cellInvalidValue$;cellDialogEdit$;cellInputEdit$;columnHeaderContextMenu$;columnResized$;columnReordered$;rowContextMenu$;rowMouseOver$;constructor(s,r=32){this.dataSource=s,this.rowHeight=r,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 Yt{#x;itemChanged$=new e;itemRemoved$=new e;itemCollapsedChanged$=new e;complexOperationFinished$;constructor(e){this.#x=e,this.complexOperationFinished$=e.complexOperationFinished$,e.taskChanged$.subscribe(e=>this.itemChanged$.next({item:e.task})),e.taskRemoved$.subscribe(e=>this.itemRemoved$.next({item:e.task})),e.taskCollapsedChanged$.subscribe(e=>this.itemCollapsedChanged$.next({item:e.task}))}get list(){return this.#x}get length(){return this.#x.length}getItem(e){return this.#x.getTask(e)}getItemById(e){return this.#x.getTaskById(e)}indexOf(e){return this.#x.indexOf(e)}addEmptyItem(){return this.#x.addEmptyTask()}insertEmptyItem(e){return this.#x.insertEmptyTask(e)}removeItems(e){this.#x.removeTasks(e)}getItemLabel(e){return this.#x.getTaskNumber(e).toString()}isItemHidden(e){return e.hidden}getNextVisible(e){return this.#x.getNextVisible(e)}getPreviousVisible(e){return this.#x.getPreviousVisible(e)}indent(e){this.#x.indent(e)}outdent(e){this.#x.outdent(e)}moveUp(e){this.#x.moveUp(e)}moveDown(e){this.#x.moveDown(e)}}const qt={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"},scheduler:{resource:"Resource",name:"Name",type:"Type",addEvent:"Add event",moveEvent:"Move event",resizeEvent:"Resize event"}};class Zt{#pt;#Sa=null;constructor(e){this.#pt=e}async copy(e){var t=e.filter(e=>"Empty"!==e.type);if(0!==t.length){this.#Sa=this.#$a(t);var s=this.#Ea(t);try{await navigator.clipboard.writeText(s)}catch{}}}async cut(e){await this.copy(e);var t=e.filter(e=>"Empty"!==e.type);t.length>0&&this.#pt.list.removeTasks(t)}async paste(){if(this.#Sa)return this.#Ra(this.#Sa);try{var e=await navigator.clipboard.readText();if(e&&e.trim().length>0)return this.#Ma(e)}catch{}return null}#$a(e){var t=new Set(e.map(e=>e.id)),s=[];for(var r of e){var i={};r.serializeProperties(i),s.push(i)}for(var n=[],a=[],o=0;o<this.#pt.list.linksLength;o++){var l=this.#pt.list.getLink(o),h=t.has(l.from.id),c=t.has(l.to.id);if(h||c){var d=l.toAny();a.push(d),h&&c&&n.push(d)}}return{tasks:s,links:n,allLinks:a}}#Ra(e){var t=this.#pt.list,s=this.#Da(),r=new Map,i=[];for(var n of e.tasks){var a=n.id,o=new z(null,this.#pt.calendar$,this.#pt.projectTimeline$);t.insertTask(s,o),this.#Ha(o,n),r.set(a,o),i.push(o),s++}for(var l=new Set(i),h=0;h<e.tasks.length;h++){var c=i[h],d=(n=e.tasks[h]).parent;c.parent&&!l.has(c.parent)&&d&&r.has(d)&&c.parent.removeSubtask(c)}for(h=0;h<e.tasks.length;h++){n=e.tasks[h],c=i[h];var u=n.parent;if(u&&r.has(u)&&!c.parent)r.get(u).addSubtask(c)}var g=[];for(var m of e.links){var v=r.get(m.from),p=r.get(m.to);if(v&&p&&t.isValidTypeForLink(v)&&t.isValidTypeForLink(p)&&!t.existsLinkBetween(v,p)&&!t.wouldCreateCycle(v,p)){var f=m.lag?B.fromAny(m.lag):void 0,w=t.addLink(v,p,m.type,f);g.push(w)}}var T=new Set(e.tasks.map(e=>e.id)),y=[];for(var m of e.allLinks){var x=T.has(m.from),b=T.has(m.to);x&&!b?y.push({type:m.type,fromId:m.from,toId:m.to,externalSide:"to"}):!x&&b&&y.push({type:m.type,fromId:m.from,toId:m.to,externalSide:"from"})}return t.complexOperationFinished$.next(),{tasks:i,links:g,taskIdMap:r,droppedLinks:y}}#Ha(e,t){if(t.startTime&&(e.startTime=R(t.startTime)),t.endTime&&(e.endTime=R(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=R(t.constraintDate))),t.resources&&t.resources.length>0)for(var s of t.resources){var r=s.resourceId,i=this.#pt.resources.getResourceById(r);i&&e.addResource(null,i,s.capacity??100)}}#Ma(e){var t=this.#pt.list,s=this.#Da(),r=e.split("\n").filter(e=>e.trim().length>0),i=[],n=new Map;for(var a of r){var o=a.split("\t"),l=o[0]?.trim();if(l){var h=t.insertEmptyTask(s);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 c=parseFloat(o[3].trim());isNaN(c)||(h.progress=Math.min(100,Math.max(0,c)))}var d=H(8);n.set(d,h),i.push(h),s++}}return t.complexOperationFinished$.next(),{tasks:i,links:[],taskIdMap:n,droppedLinks:[]}}#Da(){var e=this.#pt.sheetSelectedTasks$.getValue();if(e.length>0){var t=e[0];return this.#pt.list.indexOf(t)}var s=this.#pt.list.getLastNonEmpty();return s?this.#pt.list.indexOf(s)+1:0}#Ea(e){var t=[];for(var s of e){var r=s.name??"",i=s.startTime?E(s.startTime):"",n=s.endTime?E(s.endTime):"",a=null!==s.progress?s.progress.toString():"";t.push([r,i,n,a].join("\t"))}return t.join("\n")}}class Gt{#pt;#oa;#Pa;#La;#Aa;#Fn;#Ia;#Va;#Fa;get list(){return this.#pt.list}get resources(){return this.#pt.resources}get calendar$(){return this.#pt.calendar$}set calendar$(e){g().isAvailable(r.WorkingCalendar)?this.#pt.calendar$.next(e):console.warn("[TimelineKit] Working Calendar requires a Pro license.")}#Wa;get events(){return this.#Wa}get sheet(){return this.#oa}get selectedTasks(){return this.#pt.sheetSelectedTasks$.getValue()}get canEdit(){return this.#pt.canEdit}set canEdit(e){this.#pt.canEdit$.next(e)}get showGridLines(){return this.#pt.showGridLines$.getValue()}set showGridLines(e){this.#pt.showGridLines$.next(e)}get showCriticalPath(){return this.#pt.showCriticalPath$.getValue()}set showCriticalPath(e){!e||g().isAvailable(r.CriticalPath)?(e?this.#za():this.#Ba(),this.#pt.showCriticalPath$.next(e)):console.warn("[TimelineKit] Critical Path requires a Pro license.")}get showBaseline(){return this.#pt.showBaseline$.getValue()}set showBaseline(e){!e||g().isAvailable(r.Baseline)?this.#pt.showBaseline$.next(e):console.warn("[TimelineKit] Baseline requires a Pro license.")}get showTodayLine(){return this.#pt.showTodayLine$.getValue()}set showTodayLine(e){this.#pt.showTodayLine$.next(e)}get markers(){return this.#pt.markers$.getValue()}set markers(e){g().isAvailable(r.Markers)?this.#pt.markers$.next(e):console.warn("[TimelineKit] Markers requires a Pro license.")}addMarker(e){if(g().isAvailable(r.Markers)){var t=[...this.#pt.markers$.getValue(),e];this.#pt.markers$.next(t)}else console.warn("[TimelineKit] Markers requires a Pro license.")}removeMarker(e){var t=this.#pt.markers$.getValue().filter(t=>t!==e);this.#pt.markers$.next(t)}clearMarkers(){this.#pt.markers$.next([])}get filter(){return this.#pt.list.filter}set filter(e){null===e||g().isAvailable(r.Filtering)?this.#pt.list.filter=e:console.warn("[TimelineKit] Filtering requires a Pro license.")}clearFilter(){this.#pt.list.filter=null}get hasBaseline(){for(var e=0;e<this.#pt.list.length;e++){if(this.#pt.list.getTask(e).baselineStartTime)return!0}return!1}saveBaseline(){if(g().isAvailable(r.Baseline)){for(var e=0;e<this.#pt.list.length;e++){var t=this.#pt.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.#pt.showBaseline$.next(!0),this.#Ia.requestSnapshot()}else console.warn("[TimelineKit] Baseline requires a Pro license.")}clearBaseline(){for(var e=0;e<this.#pt.list.length;e++){var t=this.#pt.list.getTask(e);t.baselineStartTime=null,t.baselineEndTime=null}this.#pt.showBaseline$.next(!1),this.#Ia.requestSnapshot()}constructor(e){this.#pt=new Jt,this.#Aa=e,this.#pt.list.resourceAdding$.subscribe(e=>{this.#Je(e)}),this.#pt.resources.resourceRemoving$.subscribe(e=>{this.#Oa(e)}),this.#pt.calendar$.subscribe(()=>{this.#Xa()}),e.classList.add("gc-host");var t=window.document.createElement("div");t.classList.add("gc-wrapper"),t.style.visibility="hidden",e.appendChild(t),this.#Fn=t;var s=window.document.createElement("div"),r=window.document.createElement("div"),i=window.document.createElement("div");t.appendChild(s),t.appendChild(r),t.appendChild(i),this.#oa=new pt(this.#pt,s),this.#Pa=new Mt(this.#pt,t,s,r,i),this.#La=new ze(this.#pt,i),this.#Wa=new Qt(this.#pt),this.#pt.theme$.subscribe(()=>{this.#Ua(),this.#Na()}),this.#Ua(),this.#Na(),this.#pt.list.evaluatingDependenciesFinished$.subscribe(()=>this.#ja()),this.#pt.list.complexOperationFinished$.subscribe(()=>this.#ja()),this.#pt.list.filterChanged$.subscribe(()=>this.#pt.list.complexOperationFinished$.next()),this.#Va=new Zt(this.#pt),this.#Ia=new jt(()=>this.save(),e=>this.#Ka(e)),this.#pt.list.taskAdded$.subscribe(()=>this.#Ia.requestSnapshot()),this.#pt.list.taskChanged$.subscribe(()=>this.#Ia.requestSnapshot()),this.#pt.list.taskRemoved$.subscribe(()=>this.#Ia.requestSnapshot()),this.#pt.list.linkAdded$.subscribe(()=>this.#Ia.requestSnapshot()),this.#pt.list.linkRemoved$.subscribe(()=>this.#Ia.requestSnapshot()),this.#pt.list.complexOperationFinished$.subscribe(()=>this.#Ia.requestSnapshot()),this.#pt.list.evaluatingDependenciesFinished$.subscribe(()=>this.#Ia.requestSnapshot()),this.#Ia.initialize(),this.#Fa=e=>{this.#Ya(e)},t.addEventListener("keydown",this.#Fa,!0)}destroy(){this.#La.destroy(),this.#oa.destroy(),this.#Pa.destroy(),this.#Fn.removeEventListener("keydown",this.#Fa,!0),this.#Fn.parentNode&&this.#Fn.parentNode.removeChild(this.#Fn),this.#Aa.classList.remove("gc-host")}#Ya(e){if(!this.#pt.sheetCellEditing$.getValue()&&(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()}}#Ua(){var e=this.#pt.theme$.getValue().font;this.#Fn.style.fontFamily=e.name,this.#Fn.style.fontSize=e.size+"pt"}#Na(){var e=this.#pt.theme$.getValue(),t=this.#Fn.style;t.setProperty("--gc-sheet-header-bg-color",e.sheet.header.backgroundColor),t.setProperty("--gc-sheet-header-cell-border-color",e.sheet.header.cellBorderColor),t.setProperty("--gc-sheet-header-cell-divider-color",e.sheet.header.cellDividerColor??e.sheet.header.cellBorderColor),t.setProperty("--gc-sheet-grid-line-color",e.sheet.gridLineColor),t.setProperty("--gc-sheet-bg-color",e.sheet.backgroundColor),t.setProperty("--gc-sheet-text-color",e.sheet.textColor),t.setProperty("--gc-sheet-hover-bg-color",e.sheet.hoverBackgroundColor),t.setProperty("--gc-sheet-selected-bg-color",e.sheet.selectedBackgroundColor),t.setProperty("--gc-sheet-selected-row-header-color",e.sheet.selectedRowHeaderColor),t.setProperty("--gc-sheet-focus-border-color",e.sheet.focusBorderColor),t.setProperty("--gc-sheet-highlight-border-color",e.sheet.highlightBorderColor),t.setProperty("--gc-tree-icon-color",e.sheet.treeIconColor),t.setProperty("--gc-editor-bg-color",e.sheet.editorBackgroundColor),t.setProperty("--gc-editor-text-color",e.sheet.editorTextColor),t.setProperty("color-scheme",e.sheet.colorScheme),this.#Fn.setAttribute("data-color-scheme",e.sheet.colorScheme)}#Je(e){if(!this.#pt.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")}#Oa(e){if(this.#pt.list.getTasksUsingResource(e.resource).length>0)throw new Error("The resource cannot be removed, because is used by one or more tasks")}get canUndo$(){return this.#Ia.canUndo$}get canRedo$(){return this.#Ia.canRedo$}undo(){this.#pt.canEdit&&(g().isAvailable(r.UndoRedo)?(this.#Ia.undo(),this.#Wa.undone$.next()):console.warn("[TimelineKit] Undo/Redo requires a Pro license."))}redo(){this.#pt.canEdit&&(g().isAvailable(r.UndoRedo)?(this.#Ia.redo(),this.#Wa.redone$.next()):console.warn("[TimelineKit] Undo/Redo requires a Pro license."))}zoomIn(){return this.#pt.timeline.zoomIn()}zoomOut(){return this.#pt.timeline.zoomOut()}indent(){if(!this.#pt.canEdit)return!1;var e=this.#pt.sheetSelectedTasks$.getValue();return this.#pt.list.indent(e)}outdent(){if(!this.#pt.canEdit)return!1;var e=this.#pt.sheetSelectedTasks$.getValue();return this.#pt.list.outdent(e)}moveUp(){if(!this.#pt.canEdit)return!1;var e=this.#pt.sheetSelectedTasks$.getValue();return this.#pt.list.moveUp(e)}moveDown(){if(!this.#pt.canEdit)return!1;var e=this.#pt.sheetSelectedTasks$.getValue();return this.#pt.list.moveDown(e)}async copy(){if(g().isAvailable(r.Clipboard)){var e=this.#pt.sheetSelectedTasks$.getValue();await this.#Va.copy(e)}else console.warn("[TimelineKit] Clipboard requires a Pro license.")}async cut(){if(this.#pt.canEdit)if(g().isAvailable(r.Clipboard)){var e=this.#pt.sheetSelectedTasks$.getValue();await this.#Va.cut(e)}else console.warn("[TimelineKit] Clipboard requires a Pro license.")}async paste(){if(!this.#pt.canEdit)return null;if(!g().isAvailable(r.Clipboard))return console.warn("[TimelineKit] Clipboard requires a Pro license."),null;this.#Ia.beginBatch();try{var e=await this.#Va.paste();return e&&this.#Wa.tasksPasted$.next(e),e}finally{this.#Ia.endBatch()}}goToProjectStart(){var e=this.#pt.timeline.currentZoom.axis[0],t=new Date(this.projectTimeline.startDate);t.setDate(t.getDate()-1),this.#pt.timeline.visibleStartTime$.next(e.getCellStartTime(t))}scrollToDate(e){var t=this.#pt.timeline.currentZoom.axis[0],s=t.getAdd(t.getCellStartTime(e),-1);this.#pt.timeline.visibleStartTime$.next(s)}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.#oa.scrollToItem(e)}}zoomToFit(e){var t=null,s=null;if(e&&e.length>0)for(var r of e)r.startTime&&(!t||r.startTime.getTime()<t.getTime())&&(t=r.startTime),r.endTime&&(!s||r.endTime.getTime()>s.getTime())&&(s=r.endTime);else t=this.#pt.list.minStartTime,s=this.#pt.list.maxEndTime;if(t&&s){var i=this.#La.chartWidth;if(!(i<=0)){var n=this.#pt.timeline.findBestZoomIndex(t,s,i);this.#pt.timeline.zoomIndex$.next(n);var a=this.#pt.timeline.currentZoom.axis[0];this.#pt.timeline.visibleStartTime$.next(a.getAdd(a.getCellStartTime(t),-1))}}}saveColumns(){return this.#oa.saveColumns()}loadColumns(e){this.#oa.loadColumns(e)}get projectTimeline(){return this.#pt.projectTimeline$.getValue()}set projectTimeline(e){var t=e.startDate,s=e.endDate;if(t.getTime()>s.getTime())throw new Error("Invalid project date range");t=p(t),s=p(s),this.#pt.projectTimeline$.next(e)}get settings(){return this.#pt.settings}save(){for(var e=-1,t=0;t<this.list.length;t++){"Empty"!=this.list.getTask(t).type&&(e=t)}var s=[];for(t=0;t<=e;t++){var r={};this.list.getTask(t).serializeProperties(r),s.push(r)}var i=[];for(t=0;t<this.list.linksLength;t++){var n=this.list.getLink(t);i.push(n.toAny())}var a={startDate:E(this.projectTimeline.startDate),endDate:E(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:E(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})),h={tasks:s,links:i,resources:o,projectTimeline:a,taskCount:this.list.length,showTodayLine:this.showTodayLine,markers:l};return JSON.stringify(h,(e,t)=>null===t?void 0:t)}load(e){this.#Ka(e),this.list.length>0&&this.zoomToFit()}#Ka(e){this.sheet.clearSelection();var t=JSON.parse(e);if(t.resources){for(var s=[],r=0;r<t.resources.length;r++)s.push(Et.fromAny(t.resources[r]));this.#pt.resources.assign(s)}var i=[];for(r=0;r<t.tasks.length;r++){var n=(o=t.tasks[r]).id;(a=new z(n,this.#pt.calendar$,this.#pt.projectTimeline$)).deserializeProperties(o,this.#pt.resources),i.push(a)}if(void 0!==t.taskCount&&null!==t.taskCount)for(;i.length<t.taskCount;)i.push(new z(null,this.#pt.calendar$,this.#pt.projectTimeline$));for(r=0;r<t.tasks.length;r++){var a,o=t.tasks[r];(a=i[r]).deserializePropertiesHierarchy(o,i)}var l=[];for(r=0;r<t.links.length;r++){o=t.links[r];var h=O.fromAny(o,i);l.push(h)}if(this.list.assign(i,l),t.projectTimeline&&this.#pt.projectTimeline$.next(new ee(new Date(t.projectTimeline.startDate),new Date(t.projectTimeline.endDate))),void 0!==t.showTodayLine&&this.#pt.showTodayLine$.next(t.showTodayLine),t.markers){var c=t.markers.map(e=>({date:new Date(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle}));this.#pt.markers$.next(c)}}async exportToImage(){if(!g().isAvailable(r.Export))throw new Error("[TimelineKit] Export requires a Pro license.");return new Ot(this.#pt,this.#oa).exportToImage()}exportToCsv(e){if(!g().isAvailable(r.Export))throw new Error("[TimelineKit] Export requires a Pro license.");return new Xt(this.#pt,this.#oa).exportToCsv(e)}async exportToPdf(e){if(!g().isAvailable(r.Export))throw new Error("[TimelineKit] Export requires a Pro license.");return new Nt(this.#pt,this.#oa).exportToPdf(e)}async exportToExcel(e){if(!g().isAvailable(r.Export))throw new Error("[TimelineKit] Export requires a Pro license.");return new Xt(this.#pt,this.#oa).exportToExcel(e)}#Xa(){new Dt(this).recalculate(),this.#ja()}#ja(){this.#pt.showCriticalPath$.getValue()&&this.#za()}#za(){new Ht(this.#pt.list,this.#pt.calendar).calculate()}#Ba(){for(var e=0;e<this.#pt.list.length;e++){var t=this.#pt.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 Jt{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 ee(m(),v(180))),this.locale$=new t(qt),this.settings=new _t(this),this.calendar$=new t(new j),this.timeline=new Be(this.calendar$,this.locale$),this.list=new N(this.calendar$,this.projectTimeline$,this.locale$),this.resources=new St,this.theme$=new t(this.#qa());var s=new Yt(this.list);this.table=new Kt(s,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)}#qa(){return new kt}getRowY(e){for(var t=this.theme$.getValue(),s=t.rowHeight+1,r=this.list.indexOf(e),i=0,n=0;n<r;n++){this.list.getTask(n).hidden||i++}return t.headerHeight+2-this.sheetScrollTop$.getValue()+s*i}get calendar(){return this.calendar$.getValue()}}class Qt{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){e.taskDblClick$.subscribe(e=>{this.taskDblClick$.next(e)}),e.taskContextMenu$.subscribe(e=>{this.taskContextMenu$.next(e)}),e.chartContextMenu$.subscribe(e=>{this.chartContextMenu$.next(e)}),e.sheetRowContextMenu$.subscribe(e=>{this.sheetRowContextMenu$.next(e)}),e.sheetColumnHeaderContextMenu$.subscribe(e=>{this.sheetColumnHeaderContextMenu$.next(e)}),e.sheetColumnResized$.subscribe(e=>{this.sheetColumnResized$.next(e)}),e.sheetColumnReordered$.subscribe(e=>{this.sheetColumnReordered$.next(e)}),e.sheetCellDialogEdit$.subscribe(e=>{this.sheetCellDialogEdit$.next(e)}),e.sheetCellInputEdit$.subscribe(e=>{this.sheetCellInputEdit$.next(e)}),e.sheetCellEditing$.subscribe(e=>{this.sheetCellEditing$.next(e)}),e.sheetCellInvalidValue$.subscribe(()=>{this.sheetCellInvalidValue$.next()}),e.list.taskAdded$.subscribe(e=>{this.taskAdded$.next(e)}),e.list.taskChanged$.subscribe(e=>{this.taskChanged$.next(e)}),e.list.taskRemoved$.subscribe(e=>{this.taskRemoved$.next(e)}),e.list.linkAdded$.subscribe(e=>{this.linkAdded$.next(e)}),e.list.linkRemoved$.subscribe(e=>{this.linkRemoved$.next(e)}),e.projectTimeline$.subscribe(e=>{this.projectTimeline$.next(e)})}}class _t{ctx;#Za;get currencySymbol(){return this.#Za}set currencySymbol(e){e!=this.#Za&&(this.#Za=e,this.#v())}#Ga;get currencySymbolDisplayMode(){return this.#Ga}set currencySymbolDisplayMode(e){e!=this.#Ga&&(this.#Ga=e,this.#v())}get locale(){return this.ctx.locale$.getValue()}set locale(e){"en-US"===e.language||g().isAvailable(r.AdditionalLocales)?(this.ctx.locale$.next(e),this.#v()):console.warn("[TimelineKit] Additional locales require a Pro license. Falling back to English.")}get theme(){return this.ctx.theme$.getValue()}set theme(e){e instanceof kt||g().isAvailable(r.AdditionalThemes)?(this.ctx.theme$.next(e),this.#v()):console.warn("[TimelineKit] Additional themes require a Pro license. Falling back to Light theme.")}changed$=new e;constructor(e){this.ctx=e,this.#Za="$",this.#Ga="BeforeAmountWithSpace"}#v(){this.changed$.next()}}const es={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 s=e.getTime(),r=t.getTime();return e=>!(!e.startTime||!e.endTime)&&(e.startTime.getTime()<=r&&e.endTime.getTime()>=s)},byName:e=>{var t=e.toLowerCase();return e=>e.name?.toLowerCase().includes(t)??!1},combine:(...e)=>t=>e.every(e=>e(t))};class ts extends ft{constructor(){super()}}class ss extends ft{constructor(){super(),this.chart.content.taskProgressHeight=5,this.chart.content.taskColors=[],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=new bt;e.borderColor="#4455dd",e.color1="#a0b0ff",e.color2="#a0b0ff",e.progressColor1="#606060",e.progressColor2="#606060",e.progressHighlightColor="rgba(100, 100, 100, 0.5)",this.chart.content.taskColors.push(e);var t=new bt;t.borderColor="#cc8888",t.color1="#ffcccc",t.color2="#ffcccc",t.progressColor1="#606060",t.progressColor2="#606060",t.progressHighlightColor="rgba(100, 100, 100, 0.5)",t.separatorColor="#cc7777",t.linkLineColor="#cc7777",t.linkArrowColor="#cc7777",this.chart.content.taskColors.push(t);var s=new bt;s.borderColor="#77bb77",s.color1="#bbeebb",s.color2="#bbeebb",s.progressColor1="#606060",s.progressColor2="#606060",s.progressHighlightColor="rgba(100, 100, 100, 0.5)",s.separatorColor="#55aa55",s.linkLineColor="#55aa55",s.linkArrowColor="#55aa55",this.chart.content.taskColors.push(s);var r=new bt;r.borderColor="#dddd88",r.color1="#f8f8aa",r.color2="#f8f8aa",r.progressColor1="#606060",r.progressColor2="#606060",r.progressHighlightColor="rgba(100, 100, 100, 0.5)",r.separatorColor="#cccc66",r.linkLineColor="#cccc66",r.linkArrowColor="#cccc66",this.chart.content.taskColors.push(r);var i=new bt;i.borderColor="#aa88cc",i.color1="#ddbbff",i.color2="#ddbbff",i.progressColor1="#606060",i.progressColor2="#606060",i.progressHighlightColor="rgba(100, 100, 100, 0.5)",i.separatorColor="#aa77cc",i.linkLineColor="#aa77cc",i.linkArrowColor="#aa77cc",this.chart.content.taskColors.push(i);var n=new bt;n.borderColor="#ddaa77",n.color1="#ffd8a8",n.color2="#ffd8a8",n.progressColor1="#606060",n.progressColor2="#606060",n.progressHighlightColor="rgba(100, 100, 100, 0.5)",n.separatorColor="#cc9966",n.linkLineColor="#cc9966",n.linkArrowColor="#cc9966",this.chart.content.taskColors.push(n);var a=new bt;a.borderColor="#66bbbb",a.color1="#a8e8e8",a.color2="#a8e8e8",a.progressColor1="#606060",a.progressColor2="#606060",a.progressHighlightColor="rgba(100, 100, 100, 0.5)",a.separatorColor="#55aaaa",a.linkLineColor="#55aaaa",a.linkArrowColor="#55aaaa",this.chart.content.taskColors.push(a);var o=new bt;o.borderColor="#dd88aa",o.color1="#ffbbdd",o.color2="#ffbbdd",o.progressColor1="#606060",o.progressColor2="#606060",o.progressHighlightColor="rgba(100, 100, 100, 0.5)",o.separatorColor="#cc7799",o.linkLineColor="#cc7799",o.linkArrowColor="#cc7799",this.chart.content.taskColors.push(o)}}class rs extends ft{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=[];var e=new bt;e.color1="#7b90d8",e.color2="#5a72c0",e.highlightColor="rgba(123, 144, 216, 0.4)",e.progressColor1="#4a60a8",e.progressColor2="#3a4e90",e.progressHighlightColor="rgba(123, 144, 216, 0.4)",e.separatorColor="#4258a0",e.linkLineColor="#5a72c0",e.linkArrowColor="#5a72c0",this.chart.content.taskColors.push(e);var t=new bt;t.color1="#e09090",t.color2="#c06868",t.highlightColor="rgba(224, 144, 144, 0.4)",t.progressColor1="#b05858",t.progressColor2="#904848",t.progressHighlightColor="rgba(224, 144, 144, 0.4)",t.separatorColor="#a05050",t.linkLineColor="#c06868",t.linkArrowColor="#c06868",this.chart.content.taskColors.push(t);var s=new bt;s.color1="#80c080",s.color2="#60a060",s.highlightColor="rgba(128, 192, 128, 0.4)",s.progressColor1="#509050",s.progressColor2="#407840",s.progressHighlightColor="rgba(128, 192, 128, 0.4)",s.separatorColor="#488848",s.linkLineColor="#60a060",s.linkArrowColor="#60a060",this.chart.content.taskColors.push(s);var r=new bt;r.color1="#e0c070",r.color2="#c0a050",r.highlightColor="rgba(224, 192, 112, 0.4)",r.progressColor1="#b09040",r.progressColor2="#907830",r.progressHighlightColor="rgba(224, 192, 112, 0.4)",r.separatorColor="#a08838",r.linkLineColor="#c0a050",r.linkArrowColor="#c0a050",this.chart.content.taskColors.push(r);var i=new bt;i.color1="#9070b0",i.color2="#705890",i.highlightColor="rgba(144, 112, 176, 0.4)",i.progressColor1="#604878",i.progressColor2="#503868",i.progressHighlightColor="rgba(144, 112, 176, 0.4)",i.separatorColor="#685080",i.linkLineColor="#705890",i.linkArrowColor="#705890",this.chart.content.taskColors.push(i);var n=new bt;n.color1="#c08850",n.color2="#a07040",n.highlightColor="rgba(192, 136, 80, 0.4)",n.progressColor1="#906030",n.progressColor2="#785028",n.progressHighlightColor="rgba(192, 136, 80, 0.4)",n.separatorColor="#986838",n.linkLineColor="#a07040",n.linkArrowColor="#a07040",this.chart.content.taskColors.push(n);var a=new bt;a.color1="#508888",a.color2="#407070",a.highlightColor="rgba(80, 136, 136, 0.4)",a.progressColor1="#306060",a.progressColor2="#285050",a.progressHighlightColor="rgba(80, 136, 136, 0.4)",a.separatorColor="#386868",a.linkLineColor="#407070",a.linkArrowColor="#407070",this.chart.content.taskColors.push(a);var o=new bt;o.color1="#b06888",o.color2="#904868",o.highlightColor="rgba(176, 104, 136, 0.4)",o.progressColor1="#803858",o.progressColor2="#682848",o.progressHighlightColor="rgba(176, 104, 136, 0.4)",o.separatorColor="#884060",o.linkLineColor="#904868",o.linkArrowColor="#904868",this.chart.content.taskColors.push(o)}}class is{#A=[];#Wa=[];#Q=new Map;#Ja=new Map;#Qa=new Set;#_a=new Map;#Ae=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.#A.length}getResource(e){return this.#A[e]}getResourceById(e){return this.#A.find(t=>t.id===e)??null}indexOfResource(e){return this.#A.indexOf(e)}get filter(){return this.#Ae}set filter(e){this.#Ae=e,this.#We()}#We(){var e=this.#Ae;for(var t of this.#A)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.#A.push(e),this.#eo(e),this.resourceAdded$.next({resource:e})}insertResource(e,t){if(e<0||e>this.#A.length)throw new RangeError(`SchedulerData.insertResource: index ${e} out of range [0, ${this.#A.length}]`);if(this.getResourceById(t.id))throw new Error(`SchedulerData.insertResource: resource with id "${t.id}" already exists`);this.#A.splice(e,0,t),this.#eo(t),this.resourceAdded$.next({resource:t})}removeResource(e){var t=this.#A.indexOf(e);if(t>=0){this.#A.splice(t,1),this.#to(e),this.#Qa.delete(e.id);var s=this.#Wa.filter(t=>t.resourceId===e.id);for(var r of s)this.removeEvent(r);this.resourceRemoved$.next({resource:e})}}moveResource(e,t){var s=this.#A.indexOf(e);s<0||s===t||(this.#A.splice(s,1),t>s&&t--,this.#A.splice(t,0,e),this.complexOperationFinished$.next())}removeResources(e){for(var t of e)this.removeResource(t);this.complexOperationFinished$.next()}assignResources(e){for(var t of this.#Q.values())t.unsubscribe();for(var s of(this.#Q.clear(),this.#Qa.clear(),this.#A=[...e],this.#A))this.#eo(s);this.complexOperationFinished$.next()}#eo(e){var t=e.changed$.subscribe(e=>this.resourceChanged$.next(e));this.#Q.set(e.id,t)}#to(e){var t=this.#Q.get(e.id);t&&(t.unsubscribe(),this.#Q.delete(e.id))}freezeResource(e){this.#Qa.has(e.id)||(this.#Qa.add(e.id),this.frozenChanged$.next(),this.complexOperationFinished$.next())}unfreezeResource(e){this.#Qa.has(e.id)&&(this.#Qa.delete(e.id),this.frozenChanged$.next(),this.complexOperationFinished$.next())}isResourceFrozen(e){return this.#Qa.has(e.id)}get frozenResourceIds(){return this.#Qa}get frozenResourcesCount(){var e=0;for(var t of this.#A)this.#Qa.has(t.id)&&e++;return e}get orderedResources(){var e=[],t=[];for(var s of this.#A)s.filtered||(this.#Qa.has(s.id)?e.push(s):t.push(s));return e.concat(t)}orderedIndexOf(e){return this.orderedResources.indexOf(e)}get eventsLength(){return this.#Wa.length}getEvent(e){return this.#Wa[e]}getEventById(e){return this.#Wa.find(t=>t.id===e)??null}getEventsForResource(e){return this.#Wa.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.#Wa.push(e),this.#so(e),this.#_a.delete(e.resourceId),this.eventAdded$.next({event:e})}removeEvent(e){var t=this.#Wa.indexOf(e);t>=0&&(this.#Wa.splice(t,1),this.#ro(e),this.#_a.delete(e.resourceId),this.eventRemoved$.next({event:e}))}assignEvents(e){for(var t of this.#Ja.values())t.unsubscribe();for(var s of(this.#Ja.clear(),this.#_a.clear(),this.#Wa=[...e],this.#Wa))this.#so(s);this.complexOperationFinished$.next()}#so(e){var t=e.changed$.subscribe(e=>{this.#_a.clear(),this.eventChanged$.next(e)});this.#Ja.set(e.id,t)}#ro(e){var t=this.#Ja.get(e.id);t&&(t.unsubscribe(),this.#Ja.delete(e.id))}getEventColorIndex(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}#io(e){var t=this.#_a.get(e);if(t)return t;var s=this.getEventsForResource(e);s.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime());var r=[],i=new Map;for(var n of s){for(var a=n.startTime.getTime(),o=!1,l=0;l<r.length;l++)if(a>=r[l]){r[l]=n.endTime.getTime(),i.set(n.id,l),o=!0;break}o||(r.push(n.endTime.getTime()),i.set(n.id,r.length-1))}var h={laneCount:Math.max(1,r.length),eventLanes:i};return this.#_a.set(e,h),h}getLaneCount(e){return this.#io(e).laneCount}getEventLane(e){return this.#io(e.resourceId).eventLanes.get(e.id)??0}getOverlappingEvents(e,t,s,r){var i=t.getTime(),n=s.getTime(),a=[];for(var o of this.#Wa)o.resourceId===e&&(r&&o.id===r||o.startTime.getTime()<n&&o.endTime.getTime()>i&&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.#Wa)(!e||t.startTime.getTime()<e.getTime())&&(e=t.startTime);return e}get maxEndTime(){var e=null;for(var t of this.#Wa)(!e||t.endTime.getTime()>e.getTime())&&(e=t.endTime);return e}}const ns={Person:"person",Room:"room",Equipment:"equipment",Vehicle:"vehicle"};class as{#u;get id(){return this.#u}#p;get name(){return this.#p}set name(e){e!=this.#p&&(this.#p=e,this.#v())}#f=null;get color(){return this.#f}set color(e){e!=this.#f&&(this.#f=e,this.#v())}#no=null;get avatarUrl(){return this.#no}set avatarUrl(e){e!=this.#no&&(this.#no=e,this.#v())}#R=null;get type(){return this.#R}set type(e){e!=this.#R&&(this.#R=e,this.#v())}#fe=!1;get filtered(){return this.#fe}set filtered(e){this.#fe=e}#q=[];#_=new Map;changed$=new e;constructor(e,t){this.#p=t,this.#u=e??H(30)}#v(){this.changed$.next({resource:this})}addProperty(e){if(this.#q.find(t=>t.name==e.name))throw new Error(`Property ${e.name} has already been added`);this.#q.push(e);var t=e.changed$.subscribe(()=>{this.#v()});this.#_.set(e,t),this.#v()}removeProperty(e){var t=this.#q.indexOf(e);if(t<0)throw new Error("Property not found");this.#q.splice(t,1);var s=this.#_.get(e);s&&(s.unsubscribe(),this.#_.delete(e))}getPropertyByName(e){return this.#q.find(t=>t.name==e)??null}getPropertyValue(e){return this.getPropertyByName(e)?.value??null}setPropertyValue(e,t){var s=this.getPropertyByName(e);s?s.value=t:this.addProperty(new W(e,t))}toAny(){return{id:this.#u,name:this.#p,color:this.#f,avatarUrl:this.#no,type:this.#R,properties:this.#q.length>0?this.#q.map(e=>e.toAny()):void 0}}static fromAny(e){if(void 0===e.name||null===e.name)throw new Error("SchedulerResource.fromAny: missing name");var t=new as(e.id,e.name);if(t.color=e.color??null,t.avatarUrl=e.avatarUrl??null,t.type=e.type??null,e.properties)for(var s of e.properties)t.addProperty(W.fromAny(s));return t}}class os{#ao;itemChanged$=new e;itemRemoved$=new e;complexOperationFinished$;constructor(e){this.#ao=e,e.resourceChanged$.subscribe(e=>{this.itemChanged$.next({item:e.resource})}),e.resourceRemoved$.subscribe(e=>{this.itemRemoved$.next({item:e.resource})}),this.complexOperationFinished$=e.complexOperationFinished$}get length(){return this.#ao.orderedResources.length}getItem(e){return this.#ao.orderedResources[e]}getItemById(e){var t=this.#ao.getResourceById(e);return t&&!t.filtered?t:null}indexOf(e){return this.#ao.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 as(null,"New Resource");return this.#ao.addResource(e),e}insertEmptyItem(e){var t=new as(null,"New Resource");return this.#ao.insertResource(e,t),t}removeItems(e){this.#ao.removeResources(e)}}class ls{#ut;constructor(e){this.#ut=e}get ctx(){return this.#ut}getRowY(e){return this.#ut.getRowY(e)}getContentBottom(e){var t=this.#ut.theme$.getValue().headerHeight+2,s=this.#ut.data.orderedResources,r=t;for(var i of s)r+=this.#ut.getRowHeight(i);return Math.min(r,e)}}class hs extends ls{#yt;constructor(e){super(e),this.#yt=new ie(e)}render(e){this.#yt.render(e)}}class cs extends q{#ut;constructor(e){super(e),this.#ut=e}getContentBottom(e){var t=this.#ut.theme$.getValue().headerHeight+2,s=this.#ut.data.orderedResources,r=t;for(var i of s)r+=this.#ut.getRowHeight(i);return Math.min(r,e)}drawHorizontalGridLines(e,t){for(var s=this.#ut.theme$.getValue(),r=s.chart.content.gridLineColor,i=this.#ut.data.orderedResources,n=0;n<i.length;n++){var a=i[n],o=this.#ut.getRowY(a),l=Math.floor(o)-.5;t.beginPath(),t.moveTo(0,l),t.lineTo(e.width,l),t.strokeStyle=r,t.stroke()}if(i.length>0){var h=i[i.length-1],c=Math.floor(this.#ut.getRowY(h)+this.#ut.getRowHeight(h))-.5;t.beginPath(),t.moveTo(0,c),t.lineTo(e.width,c),t.strokeStyle=r,t.stroke()}if(this.#ut.data.frozenResourcesCount>0){var d=Math.floor(this.#ut.frozenSectionBottom)-.5;t.beginPath(),t.moveTo(0,d),t.lineTo(e.width,d),t.strokeStyle=s.chart.content.gridLineColor,t.lineWidth=2,t.stroke(),t.lineWidth=1}}}class ds extends ls{#ut;constructor(e){super(e),this.#ut=e}render(e){var t=e.getContext("2d"),s=this.#ut.data.frozenResourcesCount,r=this.#ut.frozenSectionBottom,i=this.#ut.theme$.getValue().headerHeight+2;t.save(),t.beginPath(),t.rect(0,r,e.width,e.height-r),t.clip(),this.#qt(e,t),this.#oo(e,t,!1),this.#lo(e,t),t.restore(),s>0&&(t.save(),t.beginPath(),t.rect(0,i,e.width,r-i),t.clip(),this.#qt(e,t),this.#oo(e,t,!0),this.#lo(e,t),t.restore())}#qt(e,t){var s=this.#ut.selectedResources$.getValue();if(0!==s.length)for(var r of s){var i=this.getRowY(r),n=this.#ut.getRowHeight(r);t.beginPath(),t.rect(0,i,e.width,n),t.fillStyle="rgba(0, 0, 0, 0.02)",t.fill()}}#lo(e,t){var s=this.#ut.sheetRowMouseOver$.getValue();if(s){var r=this.getRowY(s.resource),i=this.#ut.getRowHeight(s.resource);t.beginPath(),t.rect(0,r,e.width,i),t.fillStyle="rgba(0, 0, 0, 0.02)",t.fill()}}#oo(e,t,s){for(var r=this.#ut.theme$.getValue(),i=this.#ut.timeline.currentZoom,n=i.axis[0],a=this.#ut.timeline.visibleStartTime$.getValue(),o=r.chart.content.taskHeight,l=r.chart.content.taskBorderRadius,h=this.#ut.data.orderedResources,c=this.#ut.selectedEvents$.getValue(),d=new Set(c.map(e=>e.id)),u=this.#ut.eventRendering$.getValue(),g=0;g<h.length;g++){var m=h[g];if(s===this.#ut.data.isResourceFrozen(m)){var v=this.#ut.data.getEventsForResource(m.id);for(var p of v){var f=Math.floor(n.getX(p.startTime,a,i)),w=Math.floor(n.getX(p.endTime,a,i));if(!(w<0||f>e.width)){var T=this.#ut.data.getEventColorIndex(p),y=this.#ut.getEventY(m,p),x=new J(f,y,w-f,o),b=d.has(p.id);if(u)if(u({event:p,resource:m,rect:x,ctx:t,isSelected:b,colorIndex:T}))continue;this.#ho(t,p,x,T,l,r)}}}}}#ho(e,t,s,r,i,n){var a=n.chart.content.taskColors,o=a[r%a.length];e.beginPath(),i>0?e.roundRect(s.x,s.y,s.width,s.height,i):e.rect(s.x,s.y,s.width,s.height);var l=e.createLinearGradient(s.x,s.y,s.x,s.bottom);if(l.addColorStop(0,o.color1),l.addColorStop(1,o.color2),e.fillStyle=l,e.fill(),o.borderColor&&(e.beginPath(),i>0?e.roundRect(s.x,s.y,s.width,s.height,i):e.rect(s.x,s.y,s.width,s.height),e.strokeStyle=o.borderColor,e.stroke()),t.name&&s.width>20){e.save(),e.beginPath(),e.rect(s.x,s.y,s.width,s.height),e.clip();var h=n.font.clone();h.size=n.chart.content.taskLabelFont.size,e.font=h.toString(1),se(e,t.name,new J(s.x+4,s.y,s.width-8,s.height),"Left",0,"#ffffff"),e.restore()}}}class us extends ls{#Er;constructor(e){super(e),this.#Er=new Ve(e,e=>this.getContentBottom(e.height))}render(e){this.#Er.render(e)}}class gs{#ut;constructor(e){this.#ut=e}get theme(){return this.#ut.theme$.getValue()}calculateDimensions(){var e=this.theme,t=this.#ut.timeline.currentZoom,s=t.axis[0],r=this.#co(),i=this.#ut.data.minStartTime??this.#ut.projectTimeline$.getValue().startDate,n=this.#ut.data.maxEndTime??this.#ut.projectTimeline$.getValue().endDate,a=s.getAdd(s.getCellStartTime(i),-3),o=s.getAdd(s.getCellStartTime(n),4),l=Math.ceil(s.getX(o,a,t)),h=e.headerHeight+2,c=this.#ut.data.orderedResources,d=[],u=0;for(var g of c){var m=this.#ut.getRowHeight(g);d.push(m),u+=m}return{sheetWidth:r,chartWidth:l,chartStart:a,headerHeight:h,totalHeight:h+u,rowHeights:d}}#co(){var e=document.createElement("canvas").getContext("2d"),t=this.theme;e.font=t.font.toString(1);var s=80,r=this.#ut.data.orderedResources;for(var i of r){var n=e.measureText(i.name??"").width;n>s&&(s=n)}return Math.ceil(s+20+2)}renderSheet(e,t){var s=this.theme,r=s.font;e.font=r.toString(1),e.fillStyle=s.chart.header.backgroundColor,e.fillRect(0,0,t.sheetWidth,t.headerHeight),e.strokeStyle=s.chart.header.cellBorderColor,e.beginPath(),e.moveTo(0,t.headerHeight-.5),e.lineTo(t.sheetWidth,t.headerHeight-.5),e.stroke(),se(e,this.#ut.locale$.getValue().scheduler.resource,new J(10,0,t.sheetWidth-20,t.headerHeight),"Left",0,s.chart.header.textColor);var i=this.#ut.data.orderedResources,n=t.headerHeight;for(var a of i){var o=this.#ut.getRowHeight(a);se(e,a.name??"",new J(10,n,t.sheetWidth-20,o),"Left",0,s.sheet.textColor),e.strokeStyle=s.chart.content.gridLineColor,e.beginPath(),e.moveTo(0,n+o-.5),e.lineTo(t.sheetWidth,n+o-.5),e.stroke(),n+=o}e.strokeStyle=s.chart.header.cellBorderColor,e.beginPath(),e.moveTo(t.sheetWidth-.5,0),e.lineTo(t.sheetWidth-.5,t.totalHeight),e.stroke()}renderChart(e,t,s,r=1){Ft(e,t,s,r,this.theme,this.#ut.timeline.visibleStartTime$,this.#ut.scrollTop$,new hs(this.#ut),[new cs(this.#ut),new us(this.#ut),new ds(this.#ut)])}}class ms extends Bt{constructor(e){super(new gs(e))}}class vs{#ut;constructor(e){this.#ut=e}exportToCsv(e){var t=e?.delimiter??",",s=e?.includeHeaders??!0,r=e?.includeResources??!1,i=this.#ut.locale$.getValue(),n=[];if(s){var a=[At(i.scheduler.resource,t),At(i.columns.name,t),At(i.labels.start,t),At(i.labels.end,t)];n.push(a.join(t))}var o=this.#ut.data.orderedResources;for(var l of o){var h=this.#do(l.id);for(var c of h){var d=[At(l.name,t),At(c.name,t),At(this.#uo(c.startTime),t),At(this.#uo(c.endTime),t)];n.push(d.join(t))}}var u=n.join("\n");if(r)for(var l of(u+="\n\n",s&&(u+=[At(i.columns.name,t),At(i.labels.type,t)].join(t)+"\n"),o))u+=[At(l.name,t),At(l.type??"",t)].join(t)+"\n";return u}async exportToExcel(e){var t;try{t=await import("exceljs")}catch{throw new Error("ExcelJS is required for Excel export. Install it with: npm install exceljs")}var s=this.#ut.locale$.getValue(),r=e?.eventsSheetName??s.export.eventsSheetName,i=e?.includeResourcesSheet??!0,n=e?.includeFormatting??!0,a=new t.Workbook;this.#go(a,r,n),i&&this.#ut.data.resourcesLength>0&&this.#ga(a,n);var o=await a.xlsx.writeBuffer();return new Blob([o],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}#go(e,t,s){var r=this.#ut.locale$.getValue(),i=e.addWorksheet(t);i.columns=[{header:r.scheduler.resource,key:"resource",width:25},{header:r.columns.name,key:"name",width:30},{header:r.labels.start,key:"start",width:20},{header:r.labels.end,key:"end",width:20}],s&&It(i);var n=this.#ut.data.orderedResources;for(var a of n){var o=this.#do(a.id);for(var l of o)i.addRow({resource:a.name,name:l.name,start:this.#uo(l.startTime),end:this.#uo(l.endTime)})}s&&Vt(i)}#ga(e,t){var s=this.#ut.locale$.getValue(),r=e.addWorksheet(s.export.resourcesSheetName);r.columns=[{header:s.columns.name,key:"name",width:25},{header:s.labels.type,key:"type",width:15}],t&&It(r);var i=this.#ut.data.orderedResources;for(var n of i)r.addRow({name:n.name,type:n.type??""});t&&Vt(r)}#do(e){var t=this.#ut.data.getEventsForResource(e);return t.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()),t}#uo(e){return S(e,this.#ut.locale$.getValue().language,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}}class ps extends Ut{constructor(e){super(new gs(e))}computeVerticalPageBreaks(e,t,s){var r=t-s;r<=0&&(r=e.rowHeights[0]??40);for(var i=[],n=s,a=0,o=0;o<e.rowHeights.length;o++){var l=e.rowHeights[o];a>0&&a+l>r&&(i.push({srcY:n-a,height:a}),a=0),a+=l,n=s+this.#mo(e.rowHeights,o+1)}return a>0&&i.push({srcY:n-a,height:a}),0===i.length&&i.push({srcY:s,height:0}),i}#mo(e,t){for(var s=0,r=0;r<t&&r<e.length;r++)s+=e[r];return s}}class fs{#u;get id(){return this.#u}#vo;get resourceId(){return this.#vo}set resourceId(e){if(!e)throw new Error("SchedulerEvent: resourceId cannot be empty");e!=this.#vo&&(this.#vo=e,this.#v())}#p;get name(){return this.#p}set name(e){e!=this.#p&&(this.#p=e,this.#v())}#a;get startTime(){return this.#a}set startTime(e){if(!(e instanceof Date)||isNaN(e.getTime()))throw new Error("SchedulerEvent: invalid startTime");e.getTime()!=this.#a.getTime()&&(this.#a=e,this.#v())}#o;get endTime(){return this.#o}set endTime(e){if(!(e instanceof Date)||isNaN(e.getTime()))throw new Error("SchedulerEvent: invalid endTime");e.getTime()!=this.#o.getTime()&&(this.#o=e,this.#v())}#f=null;get color(){return this.#f}set color(e){e!=this.#f&&(this.#f=e,this.#v())}data=void 0;#q=[];#_=new Map;changed$=new e;constructor(e,t,s,r,i){if(!t)throw new Error("SchedulerEvent: resourceId is required");if(!(r instanceof Date)||isNaN(r.getTime()))throw new Error("SchedulerEvent: invalid startTime");if(!(i instanceof Date)||isNaN(i.getTime()))throw new Error("SchedulerEvent: invalid endTime");if(r.getTime()>=i.getTime())throw new Error("SchedulerEvent: startTime must be before endTime");this.#u=e??H(30),this.#vo=t,this.#p=s,this.#a=r,this.#o=i}get durationMs(){return this.#o.getTime()-this.#a.getTime()}get durationHours(){return this.durationMs/36e5}#v(){this.changed$.next({event:this})}addProperty(e){if(this.#q.find(t=>t.name==e.name))throw new Error(`Property ${e.name} has already been added`);this.#q.push(e);var t=e.changed$.subscribe(()=>{this.#v()});this.#_.set(e,t),this.#v()}removeProperty(e){var t=this.#q.indexOf(e);if(t<0)throw new Error("Property not found");this.#q.splice(t,1);var s=this.#_.get(e);s&&(s.unsubscribe(),this.#_.delete(e))}getPropertyByName(e){return this.#q.find(t=>t.name==e)??null}getPropertyValue(e){return this.getPropertyByName(e)?.value??null}setPropertyValue(e,t){var s=this.getPropertyByName(e);s?s.value=t:this.addProperty(new W(e,t))}toAny(){return{id:this.#u,resourceId:this.#vo,name:this.#p,startTime:this.#a.toISOString(),endTime:this.#o.toISOString(),color:this.#f,properties:this.#q.map(e=>e.toAny())}}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),s=new Date(e.endTime);if(isNaN(t.getTime()))throw new Error("SchedulerEvent.fromAny: invalid startTime");if(isNaN(s.getTime()))throw new Error("SchedulerEvent.fromAny: invalid endTime");var r=new fs(e.id,e.resourceId,e.name??"",t,s);if(r.color=e.color??null,e.properties)for(var i of e.properties)r.addProperty(W.fromAny(i));return r}}const ws={[ns.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>',[ns.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>',[ns.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>',[ns.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 Ts extends Ue{redraw(e,t,s){e.innerText="",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center";var r=document.createElement("span");if(r.classList.add("resource-icon"),r.style.display="inline-flex",r.style.alignItems="center",r.style.justifyContent="center",r.style.flexShrink="0",r.style.width="26px",r.style.height="26px",r.style.minWidth="26px",s.avatarUrl)r.style.borderRadius="50%",r.style.backgroundImage=`url(${s.avatarUrl})`,r.style.backgroundSize="cover",r.style.backgroundPosition="center";else{r.style.color="#999";var i=s.type||ns.Person;r.innerHTML=ws[i]??'<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(r)}}const ys={[ns.Person]:"Person",[ns.Room]:"Room",[ns.Equipment]:"Equipment",[ns.Vehicle]:"Vehicle"};class xs extends dt{#ut;#En=["icon","name","type"];#po=null;#fo=null;rowContextMenu$=new e;rowMouseOver$=new e;constructor(e,t){super(e.table,t),this.#ut=e,this.#wo(),e.defaultSheetWidth=this.getColumnsContentWidth(),this.#To(),this.#yo(),this.tableContext.rowMouseOver$.subscribe(t=>{var s=t?{resource:t.item}:null;this.rowMouseOver$.next(s),e.sheetRowMouseOver$.next(s)}),this.tableContext.rowContextMenu$.subscribe(e=>{this.rowContextMenu$.next({selectedResources:e.selectedItems,mouseEvent:e.mouseEvent})}),this.#xo()}#wo(){var e=this.#ut.locale$.getValue(),t=new mt("icon","",()=>"",new Ts,null,()=>!1,36,36);this.addColumn(t);var s=new mt("name",e.scheduler.name,e=>e.name??"",new Ne,new qe(e=>e.name,(e,t)=>e.name=t),()=>!0,200,80);this.addColumn(s);var r=new mt("type",e.scheduler.type,e=>{var t=e.type;return t?ys[t]??t:""},new Ne,null,()=>!1,80,60);r.isVisible=!1,this.addColumn(r)}#bo(){var e=this.#ut.locale$.getValue(),t=this.getColumnByCode("name");t&&(t.name=e.scheduler.name);var s=this.getColumnByCode("type");s&&(s.name=e.scheduler.type),this.updateColumnHeaders()}getItemRowHeight(e){return this.#ut.getRowHeight(e)-1}redrawItemRow(e){super.redrawItemRow(e);var t=this.getItemRow(e);if(t){var s=this.#ut.getRowHeight(e)-1;t.style.height=s+"px",t.children[0].style.height=s+"px",this.#Co(t,e)}}#Co(e,t){var s=this.getColumns().findIndex(e=>"name"===e.code);if(!(s<0)){var r=e.children[s+1];if(r){var i=r.querySelector(".pin-icon");if(this.#ut.data.isResourceFrozen(t)){if(!i){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>',r.appendChild(n)}}else i&&i.remove()}}}onComplexOperationFinished(){super.onComplexOperationFinished(),this.#xo()}#xo(){for(var e=this.#ut.data.orderedResources,t=0,s=0;s<e.length;s++){var r=e[s],i=this.getItemRow(r);if(i){var n=this.#ut.getRowHeight(r),a=n-1;i.style.height=a+"px",this.#ut.data.isResourceFrozen(r)?(i.style.position="sticky",i.style.top=t+"px",i.style.zIndex="3",i.classList.add("frozen"),t+=n):(i.style.position="",i.style.top="",i.style.zIndex="",i.classList.remove("frozen"))}}}#yo(){this.tableContext.rowAdded$.subscribe(({item:e,row:t})=>{t.addEventListener("mousedown",s=>{this.#ko(e,t,s)})}),this.addDocumentListener("mousemove",this.#So),this.addDocumentListener("mouseup",this.#$o)}#ko(e,t,s){0===s.button&&this.#ut.canEdit&&!this.#ut.data.isResourceFrozen(e)&&(this.#po={resource:e,row:t,startX:s.clientX,startY:s.clientY})}#So(e){if(this.#po){if(!this.#fo){var t=e.clientX-this.#po.startX,s=e.clientY-this.#po.startY;Math.sqrt(t*t+s*s)>5&&(this.selection.cancelRangeSelection(),this.#Eo(this.#po))}this.#fo&&this.#Ro(e.clientY)}}#$o(e){this.#fo&&this.#Mo(e.clientY),this.#po=null}#Eo(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 s=window.document.createElement("div");s.classList.add("row-reorder-indicator"),s.style.display="none",this.rowsContainer.appendChild(s),e.row.style.opacity="0.3",this.#fo={resource:e.resource,ghost:t,indicator:s,sourceRow:e.row}}#Ro(e){var t=this.#fo;t.ghost.style.top=e-t.sourceRow.offsetHeight/2+"px";var s=this.#Do(e);if(s){var r=s.row.getBoundingClientRect(),i=e<r.top+r.height/2,n=this.rowsContainer.getBoundingClientRect(),a=(i?r.top:r.bottom)-n.top;t.indicator.style.top=a+"px",t.indicator.style.display="block"}else t.indicator.style.display="none"}#Mo(e){var t=this.#fo,s=this.#Do(e);if(s&&s.resource!==t.resource){var r=s.row.getBoundingClientRect(),i=e<r.top+r.height/2,n=this.#ut.data.indexOfResource(s.resource);i||n++,this.#ut.data.moveResource(t.resource,n)}t.ghost.remove(),t.indicator.remove(),t.sourceRow.style.opacity="",this.#fo=null}#Do(e){for(var t=this.#ut.data.orderedResources,s=this.#ut.data.frozenResourcesCount,r=s;r<t.length;r++){var i=t[r],n=this.getItemRow(i);if(n){var a=n.getBoundingClientRect();if(e>=a.top&&e<=a.bottom)return{resource:i,row:n}}}if(t.length>s){var o=t[t.length-1],l=this.getItemRow(o);if(l&&e>l.getBoundingClientRect().bottom)return{resource:o,row:l}}return null}#To(){this.#ut.data.eventAdded$.subscribe(()=>this.#Ho()),this.#ut.data.eventRemoved$.subscribe(()=>this.#Ho()),this.#ut.data.eventChanged$.subscribe(()=>this.#Ho()),this.#ut.data.frozenChanged$.subscribe(()=>this.#xo()),this.#ut.settings.changed$.subscribe(()=>{this.#bo(),this.redrawAll()}),this.#ut.chartMouseWheel$.subscribe(e=>{e.ctrlKey||this.scrollContentVertically(e.deltaY)}),this.#ut.dividerPositionChanged$.subscribe(()=>{this.redrawAll()})}#Ho(){var e=this.#ut.data.orderedResources;for(var t of e){var s=this.getItemRow(t);if(s){var r=this.#ut.getRowHeight(t)-1;s.style.height=r+"px",s.children[0].style.height=r+"px"}}}addCustomStringColumn(e,t){var s=new mt(e,t,t=>t.getPropertyValue(e)??null,new Ne,new qe(t=>t.getPropertyValue(e),(t,s)=>t.setPropertyValue(e,s)),()=>!0,100,60);return s.isCustom=!0,this.addColumn(s),s}addCustomIntegerColumn(e,t){var s=new mt(e,t,t=>t.getPropertyValue(e)??null,new Ne,new nt(t=>t.getPropertyValue(e),(t,s)=>t.setPropertyValue(e,s)),()=>!0,100,60,"Right");return s.isCustom=!0,this.addColumn(s),s}addCustomDecimalColumn(e,t){var s=new mt(e,t,t=>t.getPropertyValue(e)??null,new Ne,new at(t=>t.getPropertyValue(e),(t,s)=>t.setPropertyValue(e,s)),()=>!0,100,60,"Right");return s.isCustom=!0,this.addColumn(s),s}getDefaultColumns(){return this.getColumns().filter(e=>this.#En.includes(e.code))}getCustomColumns(){return this.getColumns().filter(e=>!this.#En.includes(e.code))}clearSelection(){super.clearSelection(),this.#ut.selectedResources$.next([])}}class bs extends oe{constructor(e,t,s,r){super(e,t,s,r,{getMinStartTime:()=>e.data.minStartTime,getMaxEndTime:()=>e.data.maxEndTime})}}class Cs{#ut;constructor(e){this.#ut=e}drawTooltipForResource(e,t,s,r,i){var n=this.#ut.getRowY(t),a=this.#ut.getRowHeight(t);this.#Po(e,n,a,s,r,i)}drawTooltip(e,t,s,r,i){var n=this.#ut.data.getResourceById(t.resourceId);if(n){var a=this.#ut.getEventY(n,t),o=this.#ut.theme$.getValue().chart.content.taskHeight;this.#Po(e,a,o,s,r,i)}}#Po(e,t,s,r,i,n){var a=this.#ut.theme$.getValue(),o=t+s,l=e.getContext("2d"),h=a.chart.content.tooltipFont.clone();h.name=a.font.name,l.font=h.toString(1);var c=this.#ls(l,n),d=null,u=t-c-20;if(u>=a.headerHeight+2+20?d="Above":(u=o+20)+c+20<e.height&&(d="Below"),null!==d){var g=this.#hs(l,n);u=Math.floor(u)+.5,r=Math.floor(r)+.5;var m=new J(r,u,g.totalWidth,c);l.beginPath(),l.rect(r,u,g.totalWidth,c),l.fillStyle=me(l,m,a.chart.content.tooltipBackgroundColor1,a.chart.content.tooltipBackgroundColor2),l.fill(),l.strokeStyle=a.chart.content.tooltipBorderColor,l.stroke();var v=g.totalWidth-30,p=r+15,f=h.clone(),w=te(l),T=new J(p,u+15,v,w);f.weight=600,l.font=f.toString(1),se(l,i,T,"Left",0,a.chart.content.tooltipTextColor);var y=u+15+w+5,x=h.clone(),b=te(l);l.font=x.toString(1);for(let e of n){var C=new J(p,y,g.nameWidth+1,b);se(l,e.name,C,"Left",0,a.chart.content.tooltipTextColor);var k=new J(p+g.nameWidth+30,y,g.valueWidth+1,b);se(l,e.value,k,"Left",0,a.chart.content.tooltipTextColor),y+=b+2}}}#ls(e,t){return 35+te(e)*(t.length+1)+2*(t.length-1)}#hs(e,t){var s=null,r=null;for(let a of t){var i=re(e,a.name,200);(null===s||i.measure.width>s)&&(s=i.measure.width);var n=re(e,a.value,200);(null===r||n.measure.width>r)&&(r=n.measure.width)}return{nameWidth:s=Math.min(100,s),valueWidth:r=Math.min(100,r),totalWidth:Math.round(30+s+r+30)}}}class ks extends ce{#ut;#Lo;#ds;constructor(e){super(e),this.#ut=e,this.#Lo=new ds(e),this.#ds=new Cs(e)}getResourceRowAt(e){var t=this.#ut.theme$.getValue().headerHeight+2,s=this.#ut.data.orderedResources,r=this.#ut.data.frozenResourcesCount,i=this.#ut.frozenSectionBottom;if(e.y<t)return null;if(r>0&&e.y<i){for(var n=t,a=0;a<r;a++){var o=this.#ut.getRowHeight(s[a]);if(e.y>=n&&e.y<n+o)return s[a];n+=o}return null}var l=this.#ut.scrollTop$.getValue()+e.y-i;for(n=0,a=r;a<s.length;a++){o=this.#ut.getRowHeight(s[a]);if(l>=n&&l<n+o)return s[a];n+=o}return null}getEventAt(e){var t=this.getResourceRowAt(e);if(!t)return null;var s=this.#ut.theme$.getValue().chart.content.taskHeight,r=this.#ut.timeline.currentZoom,i=r.axis[0],n=this.#ut.timeline.visibleStartTime$.getValue(),a=this.#ut.data.getEventsForResource(t.id);for(var o of a){var l=this.#ut.getEventY(t,o);if(!(e.y<l||e.y>l+s)){var h=Math.floor(i.getX(o.startTime,n,r)),c=Math.floor(i.getX(o.endTime,n,r));if(e.x>=h&&e.x<=c)return{event:o,resource:t,x1:h,x2:c}}}return null}drawEventHighlight(e,t,s){var r=this.#ut.data.getResourceById(e.resourceId);if(r){var i=this.#ut.theme$.getValue().chart.content.taskHeight,n=this.#ut.getEventY(r,e),a=new J(t,n,s-t,i),o=this.#ut.data.getEventColorIndex(e);this.#Ao(a,o)}}drawTooltip(e,t,s,r){this.#ds.drawTooltip(this.canvas,e,t,s,r)}drawHighlightForResource(e,t,s,r){var i=this.#ut.theme$.getValue().chart.content.taskHeight,n=this.#ut.getRowY(e),a=this.#ut.getRowHeight(e),o=Math.min(t,s),l=Math.max(t,s),h=new J(o,n+a/2-i/2,l-o,i),c=r??this.#ut.data.orderedIndexOf(e);this.#Ao(h,c)}drawTooltipForResource(e,t,s,r){this.#ds.drawTooltipForResource(this.canvas,e,t,s,r)}#Ao(e,t){var s=this.#ut.theme$.getValue(),r=s.chart.content.taskBorderRadius,i=s.chart.content.taskColors,n=i[t%i.length],a=this.canvas.getContext("2d");a.globalAlpha=.5,a.beginPath(),r>0?a.roundRect(e.x,e.y,e.width,e.height,r):a.rect(e.x,e.y,e.width,e.height);var o=a.createLinearGradient(e.x,e.y,e.x,e.bottom);o.addColorStop(0,n.color1),o.addColorStop(1,n.color2),a.fillStyle=o,a.fill(),n.borderColor&&(a.beginPath(),r>0?a.roundRect(e.x,e.y,e.width,e.height,r):a.rect(e.x,e.y,e.width,e.height),a.strokeStyle=n.borderColor,a.stroke()),a.globalAlpha=1}}class Ss extends ks{#ut;#Io=null;#ms=null;dblClick$=new e;contextMenu$=new e;constructor(e){super(e),this.ignoreRightButton=!1,this.ignoreWhenCannotEdit=!1,this.alwaysHandleEvents=!0,this.#ut=e}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;var r=this.getEventAt(e);if(r){var i=this.#ut.selectedEvents$.getValue();if(t)return i.find(e=>e.id===r.event.id)?this.#ut.selectedEvents$.next(i.filter(e=>e.id!==r.event.id)):this.#ut.selectedEvents$.next([...i,r.event]),he.handled;if(s.shiftKey&&i.length>0){var n=i[i.length-1];if(n.resourceId===r.event.resourceId){var a=this.#ut.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===r.event.id),h=Math.min(o,l),c=Math.max(o,l);this.#ut.selectedEvents$.next(a.slice(h,c+1))}else this.#ut.selectedEvents$.next([r.event]);return he.handled}return this.#ut.selectedEvents$.next([r.event]),he.notHandled}return this.#ut.selectedEvents$.getValue().length>0&&this.#ut.selectedEvents$.next([]),he.notHandled}async onMouseMove(e,t){this.#ms=e;var s=this.getEventAt(e),r=s?.event??null;return r!=this.#Io&&(this.#Io=r,this.#ut.chartEventHover$.next(r)),he.notHandled}async onMouseLeave(e,t){return this.#Io=null,this.#ms=null,this.#ut.chartEventHover$.next(null),he.notHandled}async onKeyDown(e,t){var s=this.#ut.selectedEvents$.getValue();if(0===s.length)return he.notHandled;if(P(t)&&this.canEdit){var r=[...s];for(var i of r){var n={event:i,cancel:!1};this.#ut.eventDeleting$.next(n),n.cancel||this.#ut.data.removeEvent(i)}return he.handled}var a=s[s.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.#Vo(a,t,"left");if(t.ctrlKey&&!t.shiftKey&&o&&this.canEdit)return this.#Fo(s,a,t);if(t.shiftKey&&!t.ctrlKey&&o&&this.canEdit)return this.#Vo(a,t,"right");var l=null;switch(t.key){case"ArrowLeft":l=this.#Wo(a,-1);break;case"ArrowRight":l=this.#Wo(a,1);break;case"ArrowUp":l=this.#zo(a,-1);break;case"ArrowDown":l=this.#zo(a,1)}return l?(t.preventDefault(),this.#ut.selectedEvents$.next([l]),this.#Bo(l),he.handled):he.notHandled}#Fo(e,t,s){var r=this.#ut.timeline.currentZoom.axis[0];if("ArrowLeft"===s.key||"ArrowRight"===s.key){var i="ArrowRight"===s.key?1:-1;for(var n of e){var a=r.getCellStartTime(n.startTime),o=r.getAdd(a,i),l=n.endTime.getTime()-n.startTime.getTime(),h=new Date(o.getTime()+l);if(u=this.#ut.data.getResourceById(n.resourceId)){var c={event:n,newStartTime:o,newEndTime:h,newResource:u,cancel:!1};this.#ut.eventMoving$.next(c),c.cancel||(n.startTime=c.adjustedStartTime??c.newStartTime,n.endTime=c.adjustedEndTime??c.newEndTime)}}return s.preventDefault(),this.#Bo(t),he.handled}if("ArrowUp"===s.key||"ArrowDown"===s.key){var d=t.resourceId;if(!e.every(e=>e.resourceId===d))return he.notHandled;var u,g=this.#ut.data.orderedResources;if(!(u=this.#ut.data.getResourceById(d)))return he.notHandled;var m=g.indexOf(u);if(m<0)return he.notHandled;var v=m+("ArrowDown"===s.key?1:-1);if(v<0||v>=g.length)return he.notHandled;var p=g[v];for(var n of e){c={event:n,newStartTime:n.startTime,newEndTime:n.endTime,newResource:p,cancel:!1};this.#ut.eventMoving$.next(c),c.cancel||(n.startTime=c.adjustedStartTime??c.newStartTime,n.endTime=c.adjustedEndTime??c.newEndTime,n.resourceId=c.newResource.id)}return s.preventDefault(),this.#Bo(t),he.handled}return he.notHandled}#Vo(e,t,s){if("ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return he.notHandled;var r,i=this.#ut.timeline.currentZoom.axis[0],n="ArrowRight"===t.key?1:-1,a=e.startTime,o=e.endTime;if("right"===s){r="right";var l=i.getCellStartTime(e.endTime);if((o=i.getAdd(l,n)).getTime()<=e.startTime.getTime())return he.notHandled}else{r="left";var h=i.getCellStartTime(e.startTime);if(a=i.getAdd(h,n),(a=this.#ut.calendar$.getValue().moveToStartShift(a,!0)).getTime()>=e.endTime.getTime())return he.notHandled}var c={event:e,edge:r,newStartTime:a,newEndTime:o,cancel:!1};if(this.#ut.eventResizing$.next(c),!c.cancel){var d=c.adjustedStartTime??c.newStartTime,u=c.adjustedEndTime??c.newEndTime;d.getTime()<u.getTime()&&("left"===r?e.startTime=d:e.endTime=u)}return t.preventDefault(),this.#Bo(e),he.handled}#Wo(e,t){var s=this.#ut.data.getEventsForResource(e.resourceId);s.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()||e.id.localeCompare(t.id));var r=s.findIndex(t=>t.id===e.id);if(r<0)return null;var i=r+t;return i<0||i>=s.length?null:s[i]}#zo(e,t){var s=this.#ut.data.orderedResources,r=this.#ut.data.getResourceById(e.resourceId);if(!r)return null;var i=s.indexOf(r);if(i<0)return null;for(var n=(e.startTime.getTime()+e.endTime.getTime())/2,a=i+t;a>=0&&a<s.length;a+=t){var o=this.#ut.data.getEventsForResource(s[a].id);if(0!==o.length){var l=null,h=1/0;for(var c of o){var d=(c.startTime.getTime()+c.endTime.getTime())/2,u=Math.abs(d-n);u<h&&(h=u,l=c)}return l}}return null}#Bo(e){var t=this.#ut.timeline.currentZoom,s=t.axis[0],r=this.#ut.timeline.visibleStartTime$.getValue(),i=s.getX(e.startTime,r,t),n=s.getX(e.endTime,r,t);if(i<0||n>this.canvas.width){var a=s.getAdd(s.getCellStartTime(e.startTime),-1);this.#ut.timeline.visibleStartTime$.next(a)}}onRedrawn(){this.#Oo();var e=this.#ut.chartEventHover$.getValue();if(e&&this.#ms){var t=this.#ut.data.getResourceById(e.resourceId);if(!t)return;var s=this.#ut.eventTooltip$.getValue();if(s){var r=s({event:e,resource:t});r&&this.drawTooltip(e,this.#ms.x,r.title,r.lines)}else{var i=this.#ut.locale$.getValue(),n=[];n.push({name:i.labels.start,value:k(e.startTime,i.language)}),n.push({name:i.labels.end,value:k(e.endTime,i.language)}),this.drawTooltip(e,this.#ms.x,e.name,n)}}}#Oo(){var e=this.#ut.selectedEvents$.getValue();if(0!==e.length){var t=this.#ut.theme$.getValue().chart.content.taskHeight,s=this.#ut.timeline.currentZoom,r=s.axis[0],i=this.#ut.timeline.visibleStartTime$.getValue(),n=this.canvas.getContext("2d");for(var a of e){var o=this.#ut.data.getResourceById(a.resourceId);if(o){var l=Math.floor(r.getX(a.startTime,i,s)),h=Math.floor(r.getX(a.endTime,i,s));if(!(h<0||l>this.canvas.width)){var c=this.#ut.getEventY(o,a);if(Ce(n,new G(l,c)),Ce(n,new G(h,c)),Ce(n,new G(l,c+t)),Ce(n,new G(h,c+t)),h-l>=60){var d=Math.floor((l+h)/2);Ce(n,new G(d,c)),Ce(n,new G(d,c+t))}}}}}}onContextMenu(e,t){var s=this.getResourceRowAt(e);if(!s)return he.notHandled;var r=this.#ut.timeline.currentZoom,i=r.axis[0],n=this.#ut.timeline.visibleStartTime$.getValue(),a=Math.floor(e.x/r.baseCellWidth),o=i.getAdd(n,a),l=this.getEventAt(e);return this.contextMenu$.next({date:o,resource:s,event:l?.event??null,mouseEvent:t}),he.handled}onDblClick(e,t){if(!this.canEdit)return he.notHandled;var s=this.getEventAt(e);return s?(this.dblClick$.next(s.event),he.handled):he.notHandled}}class $s extends ks{#ut;#Xo=null;#gs=null;#ms=null;#Uo=0;constructor(e){super(e),this.#ut=e}async onMouseMove(e,t){return this.isInOperation?(this.#ms=e,he.handled):he.notHandled}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;if(this.isInOperation)return he.notHandled;var r=this.getEventAt(e);return r?(this.#Xo=r,this.isInOperation=!0,this.#gs=e.x,this.#ms=e,this.#Uo=r.event.endTime.getTime()-r.event.startTime.getTime(),this.#ut.chartEventHover$.next(null),this.setCursor("all-scroll"),he.handled):he.notHandled}async onMouseUp(e,t,s){if(this.isInOperation){this.isInOperation=!1,this.setCursor("default");var r=this.#vs(e),i=this.#Xo.event,n={event:i,newStartTime:r.startTime,newEndTime:r.endTime,newResource:r.targetResource,cancel:!1};return this.#ut.eventMoving$.next(n),n.cancel||(i.startTime=n.adjustedStartTime??n.newStartTime,i.endTime=n.adjustedEndTime??n.newEndTime,i.resourceId=n.newResource.id),this.#ut.selectedEvents$.next([i]),he.handled}return he.notHandled}#No(e){return this.getResourceRowAt(e)??this.#Xo.resource}#vs(e){var t=this.#ut.timeline.currentZoom.axis[0],s=this.#ut.timeline.visibleStartTime$.getValue(),r=e.x-this.#gs,i=this.getCellAt(new G(this.#Xo.x1+r,e.y)),n=Math.round(i),a=t.getAdd(s,n),o=new Date(a.getTime()+this.#Uo);return{startTime:a,endTime:o,targetResource:this.#No(e)}}onRedrawn(){if(this.isInOperation){var e=this.#vs(this.#ms),t=this.#ms.x-this.#gs,s=this.#Xo.x1+t,r=this.#Xo.x2+t;if(e.targetResource.id===this.#Xo.resource.id)this.drawEventHighlight(this.#Xo.event,s,r);else{var i=this.#ut.data.getEventColorIndex(this.#Xo.event);this.drawHighlightForResource(e.targetResource,s,r,i)}var n=this.#ut.locale$.getValue(),a=[];a.push({name:n.labels.start,value:k(e.startTime,n.language)}),a.push({name:n.labels.end,value:k(e.endTime,n.language)}),this.drawTooltipForResource(e.targetResource,this.#gs,n.scheduler.moveEvent,a)}}}class Es extends ks{#ut;#jo=null;#gs=null;#ms=null;constructor(e){super(e),this.#ut=e}async onMouseMove(e,t){if(this.isInOperation)return this.#ms=e,he.handled;var s=this.#Ko(e);return s?(this.#jo=s,this.setCursor("ew-resize"),he.handled):(this.#jo&&(this.#jo=null,this.setCursor("default")),he.notHandled)}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;if(this.isInOperation)return he.notHandled;var r=this.#Ko(e);return r?(this.#jo=r,this.isInOperation=!0,this.#gs=e.x,this.#ms=e,this.#ut.chartEventHover$.next(null),this.#ut.selectedEvents$.next([]),this.setCursor("ew-resize"),he.handled):he.notHandled}#Ko(e){var t=this.getResourceRowAt(e);if(!t)return null;var s=this.#ut.theme$.getValue().chart.content.taskHeight,r=this.#ut.timeline.currentZoom,i=r.axis[0],n=this.#ut.timeline.visibleStartTime$.getValue(),a=this.#ut.data.getEventsForResource(t.id);for(var o of a){var l=this.#ut.getEventY(t,o);if(!(e.y<l||e.y>l+s)){var h=Math.floor(i.getX(o.startTime,n,r)),c=Math.floor(i.getX(o.endTime,n,r));if(Math.abs(e.x-c)<=3)return{event:o,resource:t,edge:"right",x1:h,x2:c,deltaX:e.x-c};if(Math.abs(e.x-h)<=3)return{event:o,resource:t,edge:"left",x1:h,x2:c,deltaX:e.x-h}}}return null}async onMouseUp(e,t,s){if(this.isInOperation){this.isInOperation=!1,this.setCursor("default");var r=this.#vs(e),i=this.#jo.event;if(r.startTime.getTime()<r.endTime.getTime()){var n={event:i,edge:this.#jo.edge,newStartTime:r.startTime,newEndTime:r.endTime,cancel:!1};if(this.#ut.eventResizing$.next(n),!n.cancel){var a=n.adjustedStartTime??n.newStartTime,o=n.adjustedEndTime??n.newEndTime;a.getTime()<o.getTime()&&("left"===this.#jo.edge?i.startTime=a:i.endTime=o)}}return this.#ut.selectedEvents$.next([i]),he.handled}return he.notHandled}#vs(e){var t=this.#ut.timeline.currentZoom.axis[0],s=this.#ut.timeline.visibleStartTime$.getValue(),r=this.#ms.x-this.#gs-this.#jo.deltaX;if("left"===this.#jo.edge){var i=this.#jo.x1+r,n=Math.round(this.getCellAt(new G(i,e.y))),a=t.getAdd(s,n);return{startTime:a=this.#ut.calendar.moveToStartShift(a,!0),endTime:this.#jo.event.endTime}}var o=this.#jo.x2+r,l=this.getCellEndAligned(new G(o,e.y)),h=this.getEndTimeAligned(l);return{startTime:this.#jo.event.startTime,endTime:h}}onRedrawn(){if(this.isInOperation){var e,t,s=this.#ms.x-this.#gs-this.#jo.deltaX;"left"===this.#jo.edge?(e=this.#jo.x1+s,t=this.#jo.x2):(e=this.#jo.x1,t=this.#jo.x2+s),this.drawEventHighlight(this.#jo.event,e,t);var r=this.#ut.locale$.getValue(),i=this.#vs(this.#ms),n=[];"left"===this.#jo.edge?n.push({name:r.labels.start,value:k(i.startTime,r.language)}):n.push({name:r.labels.end,value:k(i.endTime,r.language)}),this.drawTooltip(this.#jo.event,this.#gs,r.scheduler.resizeEvent,n)}}}class Rs extends ks{#ut;#us=null;#gs=null;#ms=null;#g=null;constructor(e){super(e),this.#ut=e}async onMouseMove(e,t){return this.isInOperation?(this.#ms=e,he.handled):he.notHandled}async onMouseDown(e,t,s){if(0!==s.button)return he.notHandled;var r=this.getResourceRowAt(e);if(!r)return he.notHandled;if(this.getEventAt(e))return he.notHandled;var i=this.getCellAt(e);return this.isInOperation=!0,this.#us=i,this.#gs=e.x,this.#ms=e,this.#g=r,this.#ut.chartEventHover$.next(null),this.setCursor("crosshair"),he.handled}async onMouseUp(e,t,s){if(this.isInOperation){this.isInOperation=!1,this.setCursor("default");var r=this.#vs(e);if(!r)return he.handled;var i=this.#g,n={resource:i,startTime:r.startTime,endTime:r.endTime,cancel:!1};if(this.#ut.eventCreating$.next(n),!n.cancel){var a=n.adjustedStartTime??n.startTime,o=n.adjustedEndTime??n.endTime;if(o.getTime()>a.getTime()){var l=new fs(null,i.id,"",a,o);this.#ut.data.addEvent(l),this.#ut.selectedEvents$.next([l])}}return he.handled}return he.notHandled}#vs(e){var t=this.#ut.timeline.currentZoom.axis[0],s=this.#ut.timeline.visibleStartTime$.getValue(),r=Math.round(this.#us),i=this.getCellEndAligned(e);if(i<=r)return null;var n=t.getAdd(s,r),a=this.getEndTimeAligned(i);return n=this.#ut.calendar.moveToStartShift(n,!0),a=this.#ut.calendar.moveToEndShift(a,!0),n.getTime()>=a.getTime()?null:{startTime:n,endTime:a}}onRedrawn(){if(this.isInOperation){var e=this.#g;this.drawHighlightForResource(e,this.#gs,this.#ms.x);var t=this.#vs(this.#ms);if(t){var s=this.#ut.locale$.getValue(),r=[];r.push({name:s.labels.start,value:k(t.startTime,s.language)}),r.push({name:s.labels.end,value:k(t.endTime,s.language)}),this.drawTooltipForResource(e,this.#gs,s.scheduler.addEvent,r)}}}}class Ms extends Re{#Js=[];#ut;#xt;#_s=null;operationComplete$=new e;redraw$=new e;eventDblClick$=new e;eventContextMenu$=new e;constructor(e,t){super(),this.startWatching(t),this.#ut=e;var s=new Ss(e);s.dblClick$.subscribe(e=>{this.eventDblClick$.next(e)}),s.contextMenu$.subscribe(e=>{this.eventContextMenu$.next(e)}),this.#Js.push(s),this.#Js.push(new Es(e)),this.#Js.push(new $s(e)),this.#Js.push(new Rs(e));for(let e of this.#Js)e.operationComplete$.subscribe(()=>{this.operationComplete$.next()});this.#ut.chartRedrawn$.subscribe(()=>{for(let e of this.#Js)e.onRedrawn()}),this.#ut.chartBackgroundRedrawn$.subscribe(()=>{for(let e of this.#Js)e.onBackgroundRedrawn()})}getMousePosition(e){return new G(e.offsetX,e.offsetY)}init(e,t){this.#xt=e,this.#_s=new De(e,(e,t)=>this.#er(e,t),{enableVertical:!0,getContentTop:()=>this.#ut.theme$.getValue().headerHeight+2});for(let e of this.#Js)e.init(t);e.addEventListener("mousedown",async e=>{await this.#tr(e)},!1),e.addEventListener("mouseup",async e=>{await this.#sr(e)},!1),e.addEventListener("mousemove",async e=>{await this.#rr(e)},!1),e.addEventListener("mouseleave",async e=>{await this.#ir(e)},!1),e.addEventListener("keydown",async e=>{await this.#nr(e)},!1),e.addEventListener("contextmenu",e=>{this.#ar(e)},!1),e.addEventListener("dblclick",e=>{this.#or(e)},!1),this.addDocumentListener("mousemove",this.#lr),this.addDocumentListener("mouseup",this.#hr)}#cr(){return this.#Js.find(e=>e.isInOperation)??null}async#dr(e,t){var s=this.#cr(),r=!1;if(s){var i=await t(s);r=r||i.needsRedraw}for(let n of this.#Js)if((!s||n.alwaysHandleEvents)&&(!n.ignoreWhenCannotEdit||this.#ut.canEdit)&&(2!=e.button||!n.ignoreRightButton)){i=await t(n);if(r=r||i.needsRedraw,i.handled)break}r&&this.redraw$.next()}async#rr(e){e.preventDefault(),this.#_s?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);await this.#dr(e,async s=>await s.onMouseMove(t,e))}async#ir(e){e.preventDefault();var t=this.getMousePosition(e);await this.#dr(e,async s=>await s.onMouseLeave(t,e))}async#tr(e){if(e.preventDefault(),!this.isWithinScrollbar(e)){this.#xt.focus({preventScroll:!0});var t=this.getMousePosition(e),s=e.ctrlKey;await this.#dr(e,async r=>await r.onMouseDown(t,s,e)),this.#cr()&&(this.#ut.autoScrolling=!0,this.#_s?.updateMousePosition(e.clientX,e.clientY),this.#_s?.start())}}async#sr(e){e.preventDefault(),this.#ur();var t=this.getMousePosition(e),s=e.ctrlKey;await this.#dr(e,async r=>await r.onMouseUp(t,s,e))}async#nr(e){await this.#dr(e,async t=>await t.onKeyDown(e.key,e))}#ar(e){e.preventDefault();var t=this.getMousePosition(e);this.#dr(e,async s=>s.onContextMenu(t,e))}#or(e){e.preventDefault();var t=this.getMousePosition(e);this.#dr(e,async s=>s.onDblClick(t,e))}#hr(e){e.preventDefault(),this.#ur();var t=this.getMousePosition(e);this.#dr(e,async s=>s.onDocumentMouseUp(t,e))}#lr(e){e.preventDefault(),this.#_s?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);this.#dr(e,async s=>s.onDocumentMouseMove(t,e))}#ur(){this.#_s?.stop(),this.#ut.autoScrolling=!1}#er(e,t){if(0!==e){var s=this.#ut.timeline.currentZoom,r=s.axis[0],i=this.#ut.timeline.visibleStartTime$.getValue(),n=r.getCellStartTime(i),a=(r.getAdd(n,1).getTime()-n.getTime())/s.baseCellWidth,o=new Date(i.getTime()+e*a);this.#ut.timeline.visibleStartTime$.next(o)}if(0!==t){var l=this.#ut.scrollTop$.getValue(),h=this.#ut.theme$.getValue().headerHeight+2,c=this.#xt.clientHeight-h,d=Math.max(0,this.#ut.getTotalContentHeight()-c);this.#ut.scrollTop$.next(Math.max(0,Math.min(d,l+t)))}}clear(){this.#ur();for(let e of this.#Js)e.clear()}isWithinScrollbar(e){return Le(e,this.#xt)}}class Ds{#ut;#xt;#bt;#Qs;#Ct;#Rr=!1;#yt;#Mr;#Lo;#Er;#Hr;#Js;constructor(e,t){if(this.#ut=e,this.#xt=t,this.#xt.classList.add("gc-chart"),this.#xt.setAttribute("tabindex","0"),this.#Qs=window.document.createElement("canvas"),this.#Qs.classList.add("canvas"),this.#xt.appendChild(this.#Qs),this.#Ct=window.document.createElement("div"),this.#Ct.classList.add("inner"),this.#xt.appendChild(this.#Ct),this.#yt=new hs(e),this.#Mr=new cs(e),this.#Lo=new ds(e),this.#Er=new us(e),this.#Hr=new bs(e,t,this.#Qs,this.#Ct),this.#Js=new Ms(e,t),this.#Js.init(t,this.#Qs),this.#Js.redraw$.subscribe(()=>{this.#Lr()}),this.#ut.timeline.zoomIndex$.subscribe(()=>{this.#Lr()}),this.#bt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#zt())}),this.#bt.observe(this.#xt),this.#xt.addEventListener("wheel",e=>(e.preventDefault(),e.stopPropagation(),this.#Pr(e),this.#ut.chartMouseWheel$.next(e),!1)),e.timeline.visibleStartTime$.subscribe(()=>{this.#Lr()}),e.scrollTop$.subscribe(()=>{this.#Lr()}),e.data.resourceChanged$.subscribe(()=>{this.#Lr()}),e.data.resourceRemoved$.subscribe(()=>{this.#Lr()}),e.data.eventAdded$.subscribe(()=>{this.#Lr()}),e.data.eventChanged$.subscribe(()=>{this.#Lr()}),e.data.eventRemoved$.subscribe(()=>{this.#Lr()}),e.data.complexOperationFinished$.subscribe(()=>{this.#Lr()}),e.data.frozenChanged$.subscribe(()=>{this.#Lr()}),e.sheetRowMouseOver$.subscribe(()=>{this.#Lr()}),e.chartEventHover$.subscribe(()=>{this.#Lr()}),e.selectedEvents$.subscribe(()=>{this.#Lr()}),e.selectedResources$.subscribe(()=>{this.#Lr()}),e.chartCursor$.subscribe(e=>{"default"==e?(t.classList.remove("cursor-pointer"),t.classList.remove("cursor-all-scroll"),t.classList.remove("cursor-ew-resize"),t.classList.remove("cursor-crosshair")):t.classList.add("cursor-"+e)}),e.dividerResizing$.subscribe(e=>{this.#Ar(e)}),e.settings.changed$.subscribe(()=>{this.#Lr()}),e.showGridLines$.subscribe(()=>{this.#Lr()}),e.showTodayLine$.subscribe(()=>{this.#Lr()}),e.markers$.subscribe(()=>{this.#Lr()}),document.fonts){var s=this.#ut.theme$.getValue().font.name;document.fonts.load(`1rem "${s}"`).then(()=>{this.#Lr()})}}#Lr(){this.#Rr||(this.#Rr=!0,requestAnimationFrame(()=>{this.#Rr=!1,this.#Ir()}))}#Vr(){var e=this.#xt.offsetWidth,t=this.#xt.offsetHeight;this.#Qs.width=e,this.#Qs.height=t,this.#Qs.style.width=e+"px",this.#Qs.style.height=t+"px"}#zt(){this.#Vr(),this.#Hr.handleResize(),this.#Ir()}#Ir(){var e;try{e=this.#Qs.getContext("2d")}catch{}if(e){e.clearRect(0,0,this.#Qs.width,this.#Qs.height),this.#yt.render(this.#Qs);var t=this.#ut.theme$.getValue().headerHeight+2,s=t,r=this.#xt.clientHeight;e.save(),e.beginPath(),e.rect(0,s,this.#Qs.width,r-t),e.clip(),this.#Mr.render(this.#Qs),this.#Er.render(this.#Qs),this.#ut.chartBackgroundRedrawn$.next(),this.#Lo.render(this.#Qs),e.restore(),g().showWatermark&&We(e,this.#Qs.width,this.#Qs.height),this.#ut.chartRedrawn$.next()}}#Ar(e){e?this.#xt.classList.add("no-pointer-events"):this.#xt.classList.remove("no-pointer-events")}#Pr(e){e.ctrlKey&&(e.deltaY>0?this.#ut.timeline.zoomOut():this.#ut.timeline.zoomIn())}get chartWidth(){return this.#xt.offsetWidth}get handlers(){return this.#Js}destroy(){this.#bt.disconnect(),this.#Hr.destroy(),this.#Js.destroy()}}class Hs extends Rt{constructor(e,t,s,r,i){super(e,t,s,r,i,{getDefaultSheetWidth:()=>e.defaultSheetWidth})}}class Ps{#ut;#Sa=null;constructor(e){this.#ut=e}async copy(e){if(0!==e.length){this.#Sa=this.#$a(e);var t=this.#Ea(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.#ut.data.removeEvent(t)}async paste(){if(this.#Sa)return this.#Ra(this.#Sa);try{var e=await navigator.clipboard.readText();if(e&&e.trim().length>0)return this.#Ma(e)}catch{}return null}#$a(e){var t=[];for(var s of e)t.push(s.toAny());return{events:t}}#Ra(e){var t=new Map,s=[];for(var r of e.events){var i=r.id,n=r.resourceId;if(this.#ut.data.getResourceById(n)){var a=new fs(null,n,r.name??"",new Date(r.startTime),new Date(r.endTime));if(void 0!==r.color&&null!==r.color&&(a.color=r.color),r.properties)for(var o of r.properties)a.addProperty(W.fromAny(o));this.#ut.data.addEvent(a),t.set(i,a),s.push(a)}}return this.#ut.data.complexOperationFinished$.next(),{events:s,eventIdMap:t}}#Ma(e){var t=e.split("\n").filter(e=>e.trim().length>0),s=[],r=new Map,i=this.#ut.selectedEvents$.getValue(),n=null;if(i.length>0)n=i[i.length-1].resourceId;else{var a=this.#ut.data.orderedResources;a.length>0&&(n=a[0].id)}if(!n)return{events:[],eventIdMap:r};if(!this.#ut.data.getResourceById(n))return{events:[],eventIdMap:r};for(var o of t){var l=o.split("\t"),h=l[0]?.trim();if(h){var c=null,d=null;if(l[1]?.trim())try{c=new Date(l[1].trim())}catch{}if(l[2]?.trim())try{d=new Date(l[2].trim())}catch{}if(c&&!isNaN(c.getTime())&&d&&!isNaN(d.getTime())&&!(c.getTime()>=d.getTime())){var u=new fs(null,n,h,c,d);this.#ut.data.addEvent(u);var g=H(8);r.set(g,u),s.push(u)}}}return this.#ut.data.complexOperationFinished$.next(),{events:s,eventIdMap:r}}#Ea(e){var t=[];for(var s of e){var r=s.name??"",i=E(s.startTime),n=E(s.endTime),a="",o=this.#ut.data.getResourceById(s.resourceId);o&&(a=o.name),t.push([r,i,n,a].join("\t"))}return t.join("\n")}}class Ls{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);constructor(){this.projectTimeline$=new t(new ee(m(),v(180))),this.locale$=new t(qt),this.calendar$=new t(new j),this.timeline=new Be(this.calendar$,this.locale$),this.data=new is;var e=new kt;e.rowHeight=38,e.chart.content.taskHeight=22,this.theme$=new t(e),this.dataAdapter=new os(this.data),this.table=new Kt(this.dataAdapter,e.rowHeight),this.canEdit$.subscribe(e=>this.table.canEdit$.next(e)),this.table.selectedItems$.subscribe(e=>this.selectedResources$.next(e))}get calendar(){return this.calendar$.getValue()}getRowHeight(e){var t=this.theme$.getValue(),s=this.data.getLaneCount(e.id);if(s<=1)return t.rowHeight+1;var r=t.chart.content.taskHeight,i=(t.rowHeight-r)/2;return Math.ceil(2*i+s*r+5*(s-1))+1}getEventY(e,t){var s=this.theme$.getValue(),r=s.chart.content.taskHeight,i=this.getRowY(e);if(this.data.getLaneCount(e.id)<=1)return i+this.getRowHeight(e)/2-r/2;var n=this.data.getEventLane(t);return i+(s.rowHeight-r)/2+n*(r+5)}getRowY(e){var t=this.theme$.getValue(),s=this.data.orderedResources,r=this.data.orderedIndexOf(e),i=this.data.frozenResourcesCount,n=t.headerHeight+2;if(this.data.isResourceFrozen(e)){for(var a=n,o=0;o<r;o++)a+=this.getRowHeight(s[o]);return a}var l=0;for(o=0;o<i;o++)l+=this.getRowHeight(s[o]);var h=0;for(o=i;o<r;o++)h+=this.getRowHeight(s[o]);return n+l-this.scrollTop$.getValue()+h}getTotalContentHeight(){var e=this.data.orderedResources,t=0;for(var s of e)t+=this.getRowHeight(s);return t}get frozenSectionBottom(){for(var e=this.theme$.getValue().headerHeight+2,t=this.data.orderedResources,s=this.data.frozenResourcesCount,r=e,i=0;i<s;i++)r+=this.getRowHeight(t[i]);return r}}class As{#ut;#oa;#Pa;#La;#Yo;#Ia;#Va;#Aa;#Fn;#Fa;get data(){return this.#ut.data}get sheet(){return this.#oa}get calendar$(){return this.#ut.calendar$}set calendar$(e){this.#ut.calendar$.next(e)}#Wa;get events(){return this.#Wa}get selectedResources(){return this.#ut.selectedResources$.getValue()}get selectedEvents(){return this.#ut.selectedEvents$.getValue()}set selectedEvents(e){this.#ut.selectedEvents$.next(e)}get selectedEvent(){var e=this.#ut.selectedEvents$.getValue();return e.length>0?e[e.length-1]:null}set selectedEvent(e){this.#ut.selectedEvents$.next(e?[e]:[])}get canEdit(){return this.#ut.canEdit}set canEdit(e){this.#ut.canEdit$.next(e)}get canUndo$(){return this.#Ia.canUndo$}get canRedo$(){return this.#Ia.canRedo$}undo(){this.#ut.canEdit&&(g().isAvailable(r.UndoRedo)?(this.#Ia.undo(),this.#Wa.undone$.next()):console.warn("[TimelineKit] Undo/Redo requires a Pro license."))}redo(){this.#ut.canEdit&&(g().isAvailable(r.UndoRedo)?(this.#Ia.redo(),this.#Wa.redone$.next()):console.warn("[TimelineKit] Undo/Redo requires a Pro license."))}get showGridLines(){return this.#ut.showGridLines$.getValue()}set showGridLines(e){this.#ut.showGridLines$.next(e)}get showTodayLine(){return this.#ut.showTodayLine$.getValue()}set showTodayLine(e){this.#ut.showTodayLine$.next(e)}get markers(){return this.#ut.markers$.getValue()}set markers(e){g().isAvailable(r.Markers)?this.#ut.markers$.next(e):console.warn("[TimelineKit] Markers requires a Pro license.")}addMarker(e){if(g().isAvailable(r.Markers)){var t=[...this.#ut.markers$.getValue(),e];this.#ut.markers$.next(t)}else console.warn("[TimelineKit] Markers requires a Pro license.")}removeMarker(e){var t=this.#ut.markers$.getValue().filter(t=>t!==e);this.#ut.markers$.next(t)}clearMarkers(){this.#ut.markers$.next([])}get eventRendering(){return this.#ut.eventRendering$.getValue()}set eventRendering(e){this.#ut.eventRendering$.next(e)}get eventTooltip(){return this.#ut.eventTooltip$.getValue()}set eventTooltip(e){this.#ut.eventTooltip$.next(e)}get filter(){return this.#ut.data.filter}set filter(e){null===e||g().isAvailable(r.Filtering)?this.#ut.data.filter=e:console.warn("[TimelineKit] Filtering requires a Pro license.")}clearFilter(){this.#ut.data.filter=null}get projectTimeline(){return this.#ut.projectTimeline$.getValue()}set projectTimeline(e){var t=e.startDate,s=e.endDate;if(t.getTime()>s.getTime())throw new Error("Invalid project date range");t=p(t),s=p(s),this.#ut.projectTimeline$.next(e)}get settings(){return this.#qo}#qo;constructor(e){g().isAvailable(r.ResourceScheduler)||console.warn("[TimelineKit] Resource Scheduler requires a Pro license. A watermark will be displayed."),this.#ut=new Ls,this.#Aa=e,this.#qo=new Vs(this.#ut),this.#ut.settings=this.#qo,e.classList.add("gc-host");var t=window.document.createElement("div");t.classList.add("gc-wrapper"),t.classList.add("gc-scheduler"),t.style.visibility="hidden",e.appendChild(t),this.#Fn=t;var s=window.document.createElement("div"),i=window.document.createElement("div"),n=window.document.createElement("div");t.appendChild(s),t.appendChild(i),t.appendChild(n),this.#oa=new xs(this.#ut,s),this.#Pa=new Hs(this.#ut,t,s,i,n),this.#La=new Ds(this.#ut,n),this.#Yo=new Fs(this.#ut,t,this.#oa),this.#Wa=new Is(this.#ut,this.#oa),this.#Wa._bindChartHandlers(this.#La),this.#Va=new Ps(this.#ut),this.#Ia=new jt(()=>this.save(),e=>this.#Ka(e)),this.#ut.data.resourceAdded$.subscribe(()=>this.#Ia.requestSnapshot()),this.#ut.data.resourceChanged$.subscribe(()=>this.#Ia.requestSnapshot()),this.#ut.data.resourceRemoved$.subscribe(()=>this.#Ia.requestSnapshot()),this.#ut.data.eventAdded$.subscribe(()=>this.#Ia.requestSnapshot()),this.#ut.data.eventChanged$.subscribe(()=>this.#Ia.requestSnapshot()),this.#ut.data.eventRemoved$.subscribe(()=>this.#Ia.requestSnapshot()),this.#ut.data.complexOperationFinished$.subscribe(()=>this.#Ia.requestSnapshot()),this.#ut.data.eventRemoved$.subscribe(e=>{var t=this.#ut.selectedEvents$.getValue(),s=t.filter(t=>t.id!==e.event.id);s.length!==t.length&&this.#ut.selectedEvents$.next(s)}),this.#ut.data.filterChanged$.subscribe(()=>{var e=this.#ut.selectedEvents$.getValue(),t=e.filter(e=>{var t=this.#ut.data.getResourceById(e.resourceId);return t&&!t.filtered});t.length!==e.length&&this.#ut.selectedEvents$.next(t),this.#ut.data.complexOperationFinished$.next()}),this.#Ia.initialize(),this.#ut.theme$.subscribe(()=>{this.#Ua(),this.#Na()}),this.#Ua(),this.#Na(),this.#Fa=e=>{this.#Ya(e)},t.addEventListener("keydown",this.#Fa,!0)}destroy(){this.#La.destroy(),this.#oa.destroy(),this.#Pa.destroy(),this.#Yo.destroy(),this.#Fn.removeEventListener("keydown",this.#Fa,!0),this.#Fn.parentNode&&this.#Fn.parentNode.removeChild(this.#Fn),this.#Aa.classList.remove("gc-host")}#Ya(e){if(!this.#ut.table.cellEditing$.getValue()&&(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"c":e.preventDefault(),this.copy();break;case"x":e.preventDefault(),this.cut();break;case"v":e.preventDefault(),this.paste();break;case"+":case"=":e.preventDefault(),this.zoomIn();break;case"-":e.preventDefault(),this.zoomOut()}}#Ua(){var e=this.#ut.theme$.getValue().font;this.#Fn.style.fontFamily=e.name,this.#Fn.style.fontSize=e.size+"pt"}#Na(){var e=this.#ut.theme$.getValue(),t=this.#Fn.style;t.setProperty("--gc-sheet-header-bg-color",e.sheet.header.backgroundColor),t.setProperty("--gc-sheet-header-cell-border-color",e.sheet.header.cellBorderColor),t.setProperty("--gc-sheet-header-cell-divider-color",e.sheet.header.cellDividerColor??e.sheet.header.cellBorderColor),t.setProperty("--gc-sheet-grid-line-color",e.sheet.gridLineColor),t.setProperty("--gc-sheet-bg-color",e.sheet.backgroundColor),t.setProperty("--gc-sheet-text-color",e.sheet.textColor),t.setProperty("--gc-sheet-hover-bg-color",e.sheet.hoverBackgroundColor),t.setProperty("--gc-sheet-selected-bg-color",e.sheet.selectedBackgroundColor),t.setProperty("--gc-sheet-selected-row-header-color",e.sheet.selectedRowHeaderColor),t.setProperty("--gc-sheet-focus-border-color",e.sheet.focusBorderColor),t.setProperty("--gc-sheet-highlight-border-color",e.sheet.highlightBorderColor),t.setProperty("--gc-tree-icon-color",e.sheet.treeIconColor),t.setProperty("--gc-editor-bg-color",e.sheet.editorBackgroundColor),t.setProperty("--gc-editor-text-color",e.sheet.editorTextColor),t.setProperty("color-scheme",e.sheet.colorScheme),this.#Fn.setAttribute("data-color-scheme",e.sheet.colorScheme)}async copy(){if(g().isAvailable(r.Clipboard)){var e=this.#ut.selectedEvents$.getValue();await this.#Va.copy(e)}else console.warn("[TimelineKit] Clipboard requires a Pro license.")}async cut(){if(this.#ut.canEdit)if(g().isAvailable(r.Clipboard)){var e=this.#ut.selectedEvents$.getValue();await this.#Va.cut(e)}else console.warn("[TimelineKit] Clipboard requires a Pro license.")}async paste(){if(!this.#ut.canEdit)return null;if(!g().isAvailable(r.Clipboard))return console.warn("[TimelineKit] Clipboard requires a Pro license."),null;this.#Ia.beginBatch();try{var e=await this.#Va.paste();return e&&this.#Wa.eventsPasted$.next(e),e}finally{this.#Ia.endBatch()}}zoomIn(){return this.#ut.timeline.zoomIn()}zoomOut(){return this.#ut.timeline.zoomOut()}scrollToDate(e){var t=this.#ut.timeline.currentZoom.axis[0],s=t.getAdd(t.getCellStartTime(e),-1);this.#ut.timeline.visibleStartTime$.next(s)}scrollToResource(e){this.#oa.scrollToItem(e)}goToProjectStart(){var e=this.#ut.timeline.currentZoom.axis[0],t=new Date(this.projectTimeline.startDate);t.setDate(t.getDate()-1),this.#ut.timeline.visibleStartTime$.next(e.getCellStartTime(t))}zoomToFit(e){var t=null,s=null;if(e&&e.length>0)for(var r of e)(!t||r.startTime.getTime()<t.getTime())&&(t=r.startTime),(!s||r.endTime.getTime()>s.getTime())&&(s=r.endTime);else t=this.#ut.data.minStartTime,s=this.#ut.data.maxEndTime;if(t&&s){var i=this.#La.chartWidth;if(!(i<=0)){var n=this.#ut.timeline.findBestZoomIndex(t,s,i);this.#ut.timeline.zoomIndex$.next(n);var a=this.#ut.timeline.currentZoom.axis[0];this.#ut.timeline.visibleStartTime$.next(a.getAdd(a.getCellStartTime(t),-1))}}}async exportToImage(){if(!g().isAvailable(r.Export))throw new Error("[TimelineKit] Export requires a Pro license.");return new ms(this.#ut).exportToImage()}exportToCsv(e){if(!g().isAvailable(r.Export))throw new Error("[TimelineKit] Export requires a Pro license.");return new vs(this.#ut).exportToCsv(e)}async exportToExcel(e){if(!g().isAvailable(r.Export))throw new Error("[TimelineKit] Export requires a Pro license.");return new vs(this.#ut).exportToExcel(e)}async exportToPdf(e){if(!g().isAvailable(r.Export))throw new Error("[TimelineKit] Export requires a Pro license.");return new ps(this.#ut).exportToPdf(e)}freezeResource(e){this.#ut.data.freezeResource(e)}unfreezeResource(e){this.#ut.data.unfreezeResource(e)}isResourceFrozen(e){return this.#ut.data.isResourceFrozen(e)}save(){for(var e=[],t=0;t<this.data.resourcesLength;t++)e.push(this.data.getResource(t).toAny());var s=[];for(t=0;t<this.data.eventsLength;t++)s.push(this.data.getEvent(t).toAny());var r=[...this.data.frozenResourceIds],i=this.markers.map(e=>({date:e.date.toISOString(),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})),n={resources:e,events:s,projectTimeline:{startDate:E(this.projectTimeline.startDate),endDate:E(this.projectTimeline.endDate)},showTodayLine:this.showTodayLine,frozenResourceIds:r.length>0?r:void 0,markers:i.length>0?i:void 0};return JSON.stringify(n,(e,t)=>null===t?void 0:t)}load(e){this.#Ka(e),this.data.eventsLength>0&&this.zoomToFit()}#Ka(e){this.sheet.clearSelection(),this.#ut.selectedEvents$.next([]),this.#ut.data.filter=null;for(var t=JSON.parse(e),s=[],r=0;r<t.resources.length;r++)s.push(as.fromAny(t.resources[r]));this.data.assignResources(s);var i=[];for(r=0;r<t.events.length;r++)i.push(fs.fromAny(t.events[r]));if(this.data.assignEvents(i),t.projectTimeline&&this.#ut.projectTimeline$.next(new ee(new Date(t.projectTimeline.startDate),new Date(t.projectTimeline.endDate))),void 0!==t.showTodayLine&&this.#ut.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 Is{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){e.data.resourceAdded$.subscribe(e=>this.resourceAdded$.next(e)),e.data.resourceChanged$.subscribe(e=>this.resourceChanged$.next(e)),e.data.resourceRemoved$.subscribe(e=>this.resourceRemoved$.next(e)),e.data.eventAdded$.subscribe(e=>this.eventAdded$.next(e)),e.data.eventChanged$.subscribe(e=>this.eventChanged$.next(e)),e.data.eventRemoved$.subscribe(e=>this.eventRemoved$.next(e)),e.selectedEvents$.subscribe(e=>{var t=e.length>0?e[e.length-1]:null;this.eventSelected$.next(t?{event:t}:null)}),e.eventDeleting$.subscribe(e=>this.eventDeleting$.next(e)),t.rowContextMenu$.subscribe(e=>this.sheetRowContextMenu$.next(e)),e.table.cellEditing$.subscribe(e=>this.sheetCellEditing$.next(null!==e)),e.projectTimeline$.subscribe(e=>this.projectTimeline$.next(e)),e.eventMoving$.subscribe(e=>this.eventMoving$.next(e)),e.eventResizing$.subscribe(e=>this.eventResizing$.next(e)),e.eventCreating$.subscribe(e=>this.eventCreating$.next(e))}_bindChartHandlers(e){e.handlers.eventDblClick$.subscribe(e=>this.eventDblClick$.next({event:e})),e.handlers.eventContextMenu$.subscribe(e=>this.chartContextMenu$.next(e))}}class Vs{get locale(){return this.#ut.locale$.getValue()}set locale(e){"en-US"===e.language||g().isAvailable(r.AdditionalLocales)?(this.#ut.locale$.next(e),this.changed$.next()):console.warn("[TimelineKit] Additional locales require a Pro license. Falling back to English.")}get theme(){return this.#ut.theme$.getValue()}set theme(e){e instanceof kt||g().isAvailable(r.AdditionalThemes)?(this.#ut.theme$.next(e),this.changed$.next()):console.warn("[TimelineKit] Additional themes require a Pro license. Falling back to Light theme.")}changed$=new e;#ut;constructor(e){this.#ut=e}}class Fs{#ut;#Os;#Ct;#oa;#Zo=!1;constructor(e,t,s){this.#ut=e,this.#oa=s,this.#Os=window.document.createElement("div"),this.#Os.classList.add("gc-scrollbar"),t.appendChild(this.#Os),this.#Ct=window.document.createElement("div"),this.#Os.appendChild(this.#Ct),this.#Os.addEventListener("scroll",()=>{this.#Zo||(this.#Zo=!0,this.#oa.setScrollTop(this.#Os.scrollTop),this.#Zo=!1)}),e.scrollTop$.subscribe(()=>{this.#Zo||(this.#Zo=!0,this.#Os.scrollTop=e.scrollTop$.getValue(),this.#Zo=!1),this.#Go()}),e.data.resourceAdded$.subscribe(()=>this.#Go()),e.data.resourceRemoved$.subscribe(()=>this.#Go()),e.data.eventAdded$.subscribe(()=>this.#Go()),e.data.eventRemoved$.subscribe(()=>this.#Go()),e.data.eventChanged$.subscribe(()=>this.#Go()),e.data.complexOperationFinished$.subscribe(()=>this.#Go())}#Go(){var e=this.#ut.theme$.getValue().headerHeight+2+this.#ut.getTotalContentHeight();this.#Ct.style.height=e+"px"}destroy(){this.#Os.parentNode&&this.#Os.parentNode.removeChild(this.#Os)}}export{ss as ClassicGanttChartTheme,it as CurrencyCellEditor,W as CustomProperty,rs as DarkGanttChartTheme,Ze as DateCellEditor,ee as DateRange,at as DecimalCellEditor,Ne as DefaultTableCellRenderer,Qe as DialogCellEditor,Jt as GanttChartContext,Gt as GanttChartEngine,Qt as GanttChartEvents,_t as GanttChartSettings,ft as GanttChartTheme,nt as IntegerCellEditor,B as Lag,kt as LightGanttChartTheme,ts as ModernGanttChartTheme,Je as PercentCellEditor,Et as Resource,St as ResourceList,Ls as ResourceSchedulerContext,As as ResourceSchedulerEngine,Is as ResourceSchedulerEvents,Vs as ResourceSchedulerSettings,ns as ResourceType,is as SchedulerData,fs as SchedulerEvent,as as SchedulerResource,xs as SchedulerSheet,pt as Sheet,dt as Table,Ke as TableCellEditor,Ue as TableCellRenderer,mt as TableColumn,Kt as TableContext,Ye as TableInputCellEditor,z as Task,es as TaskFilters,O as TaskLink,N as TaskList,qe as TextCellEditor,gt as TreeTable,j as WorkingCalendar,qt as defaultLocale,X as getLinkType,u as setLicense};
|