@timelinekit/core 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +200 -0
  3. package/dist/__tests__/calendar/sidebar/calendar-list.test.d.ts +1 -0
  4. package/dist/__tests__/calendar/sidebar/mini-calendar.test.d.ts +1 -0
  5. package/dist/__tests__/calendar/test-helpers.d.ts +169 -0
  6. package/dist/__tests__/calendar/tooltip/calendar-tooltip-renderer.test.d.ts +1 -0
  7. package/dist/__tests__/calendar/validation.test.d.ts +1 -0
  8. package/dist/__tests__/calendar/views/agenda-view.test.d.ts +1 -0
  9. package/dist/__tests__/calendar/views/day-view.test.d.ts +1 -0
  10. package/dist/__tests__/calendar/views/drag-handlers.test.d.ts +1 -0
  11. package/dist/__tests__/calendar/views/keyboard-navigation.test.d.ts +1 -0
  12. package/dist/__tests__/calendar/views/month-view.test.d.ts +1 -0
  13. package/dist/__tests__/calendar/views/swipe-navigation-handler.test.d.ts +1 -0
  14. package/dist/__tests__/calendar/views/time-grid-helper.test.d.ts +1 -0
  15. package/dist/__tests__/calendar/views/view-utils.test.d.ts +1 -0
  16. package/dist/__tests__/calendar/views/week-view.test.d.ts +1 -0
  17. package/dist/__tests__/ganttchart/model/dependency-evaluator.test.d.ts +1 -0
  18. package/dist/__tests__/ganttchart/model/task-filters.test.d.ts +1 -0
  19. package/dist/__tests__/ganttchart/model/task-link.test.d.ts +1 -0
  20. package/dist/calendar/clipboard/calendar-clipboard.d.ts +19 -0
  21. package/dist/calendar/eventcalendar-context.d.ts +157 -0
  22. package/dist/calendar/eventcalendar-engine.d.ts +80 -0
  23. package/dist/calendar/eventcalendar-events.d.ts +40 -0
  24. package/dist/calendar/eventcalendar-settings.d.ts +30 -0
  25. package/dist/calendar/export/calendar-data-exporter.d.ts +32 -0
  26. package/dist/calendar/export/calendar-icalendar-exporter.d.ts +24 -0
  27. package/dist/calendar/export/calendar-image-exporter.d.ts +17 -0
  28. package/dist/calendar/export/calendar-pdf-exporter.d.ts +30 -0
  29. package/dist/calendar/import/calendar-icalendar-importer.d.ts +30 -0
  30. package/dist/calendar/model/calendar-data.d.ts +34 -0
  31. package/dist/calendar/model/calendar-entry.d.ts +44 -0
  32. package/dist/calendar/model/calendar-item.d.ts +151 -0
  33. package/dist/calendar/model/calendar.d.ts +29 -0
  34. package/dist/calendar/model/recurrence-editor.d.ts +25 -0
  35. package/dist/calendar/model/recurrence-exception.d.ts +34 -0
  36. package/dist/calendar/model/recurrence-expander.d.ts +17 -0
  37. package/dist/calendar/model/recurrence-rule.d.ts +42 -0
  38. package/dist/calendar/sidebar/calendar-list.d.ts +13 -0
  39. package/dist/calendar/sidebar/mini-calendar.d.ts +20 -0
  40. package/dist/calendar/themes/dark-theme.d.ts +4 -0
  41. package/dist/calendar/themes/eventcalendar-theme.d.ts +156 -0
  42. package/dist/calendar/themes/light-theme.d.ts +4 -0
  43. package/dist/calendar/tooltip/calendar-tooltip-renderer.d.ts +8 -0
  44. package/dist/calendar/views/agenda-view.d.ts +12 -0
  45. package/dist/calendar/views/base-view.d.ts +23 -0
  46. package/dist/calendar/views/day-view.d.ts +11 -0
  47. package/dist/calendar/views/handlers/allday-drag-handler.d.ts +14 -0
  48. package/dist/calendar/views/handlers/allday-entry-drag-handler.d.ts +18 -0
  49. package/dist/calendar/views/handlers/month-drag-handler.d.ts +14 -0
  50. package/dist/calendar/views/handlers/month-entry-drag-handler.d.ts +18 -0
  51. package/dist/calendar/views/handlers/swipe-navigation-handler.d.ts +14 -0
  52. package/dist/calendar/views/handlers/time-grid-drag-handler.d.ts +14 -0
  53. package/dist/calendar/views/handlers/time-grid-entry-drag-handler.d.ts +18 -0
  54. package/dist/calendar/views/month-view.d.ts +13 -0
  55. package/dist/calendar/views/time-grid-helper.d.ts +36 -0
  56. package/dist/calendar/views/view-utils.d.ts +38 -0
  57. package/dist/calendar/views/week-view.d.ts +16 -0
  58. package/dist/common/base-background-renderer.d.ts +9 -6
  59. package/dist/common/base-chart-handler.d.ts +19 -13
  60. package/dist/common/base-chart-handlers.d.ts +34 -0
  61. package/dist/common/base-chart-scroll-handler.d.ts +5 -3
  62. package/dist/common/base-chart.d.ts +98 -0
  63. package/dist/common/base-divider.d.ts +2 -0
  64. package/dist/common/base-engine.d.ts +112 -0
  65. package/dist/common/base-export-renderer.d.ts +26 -0
  66. package/dist/common/base-header-renderer.d.ts +8 -6
  67. package/dist/common/base-markers-renderer.d.ts +9 -6
  68. package/dist/common/base-theme.d.ts +107 -0
  69. package/dist/common/base-tooltip-renderer.d.ts +7 -0
  70. package/dist/common/chart-time-axis.d.ts +32 -0
  71. package/dist/common/common.d.ts +12 -2
  72. package/dist/common/custom-properties-container.d.ts +14 -0
  73. package/dist/common/drawing.d.ts +8 -2
  74. package/dist/common/export-utils.d.ts +34 -7
  75. package/dist/common/functions.d.ts +1 -1
  76. package/dist/common/locale.d.ts +101 -0
  77. package/dist/common/marker.d.ts +13 -0
  78. package/dist/common/subscription-manager.d.ts +17 -0
  79. package/dist/common/text.d.ts +9 -9
  80. package/dist/common/theme-utils.d.ts +5 -0
  81. package/dist/common/timeline-theme.d.ts +107 -0
  82. package/dist/common/undo-manager.d.ts +22 -0
  83. package/dist/common/working-calendar.d.ts +57 -0
  84. package/dist/ganttchart/chart/chart-scroll-handler.d.ts +1 -1
  85. package/dist/ganttchart/chart/chart-time-axis.d.ts +2 -32
  86. package/dist/ganttchart/chart/chart.d.ts +10 -4
  87. package/dist/ganttchart/chart/handlers/add-task-part.d.ts +14 -7
  88. package/dist/ganttchart/chart/handlers/connector-dots-handler.d.ts +10 -8
  89. package/dist/ganttchart/chart/handlers/gantt-drag-handler.d.ts +32 -0
  90. package/dist/ganttchart/chart/handlers/handler.d.ts +7 -4
  91. package/dist/ganttchart/chart/handlers/handlers.d.ts +5 -10
  92. package/dist/ganttchart/chart/handlers/move-milestone.d.ts +9 -7
  93. package/dist/ganttchart/chart/handlers/move-task-part.d.ts +9 -7
  94. package/dist/ganttchart/chart/handlers/resize-task-part.d.ts +18 -7
  95. package/dist/ganttchart/chart/handlers/select-link.d.ts +8 -6
  96. package/dist/ganttchart/chart/handlers/select-task.d.ts +13 -11
  97. package/dist/ganttchart/chart/handlers/set-task-progress.d.ts +14 -7
  98. package/dist/ganttchart/chart/renderers/chart-background-renderer.d.ts +3 -2
  99. package/dist/ganttchart/chart/renderers/chart-header-renderer.d.ts +2 -2
  100. package/dist/ganttchart/chart/renderers/chart-links-renderer.d.ts +4 -3
  101. package/dist/ganttchart/chart/renderers/chart-markers-renderer.d.ts +2 -2
  102. package/dist/ganttchart/chart/renderers/chart-tasks-renderer.d.ts +9 -9
  103. package/dist/ganttchart/chart/renderers/renderer-base.d.ts +2 -1
  104. package/dist/ganttchart/chart/tooltip/chart-tooltip-renderer.d.ts +4 -6
  105. package/dist/ganttchart/clipboard.d.ts +10 -3
  106. package/dist/ganttchart/divider/divider.d.ts +1 -1
  107. package/dist/ganttchart/export/data-exporter.d.ts +12 -7
  108. package/dist/ganttchart/export/export-common.d.ts +16 -16
  109. package/dist/ganttchart/export/image-exporter.d.ts +5 -4
  110. package/dist/ganttchart/export/pdf-exporter.d.ts +7 -6
  111. package/dist/ganttchart/ganttchart-engine.d.ts +134 -40
  112. package/dist/ganttchart/locale.d.ts +2 -66
  113. package/dist/ganttchart/model/dependency-evaluator.d.ts +16 -0
  114. package/dist/ganttchart/model/lag.d.ts +11 -0
  115. package/dist/ganttchart/model/length.d.ts +13 -2
  116. package/dist/ganttchart/model/marker.d.ts +1 -7
  117. package/dist/ganttchart/model/rate.d.ts +7 -1
  118. package/dist/ganttchart/model/resource-list.d.ts +11 -0
  119. package/dist/ganttchart/model/resource.d.ts +15 -1
  120. package/dist/ganttchart/model/task-filters.d.ts +10 -0
  121. package/dist/ganttchart/model/task-link.d.ts +15 -2
  122. package/dist/ganttchart/model/task-list-adapter.d.ts +22 -0
  123. package/dist/ganttchart/model/task-list.d.ts +55 -2
  124. package/dist/ganttchart/model/task-part.d.ts +20 -0
  125. package/dist/ganttchart/model/task-parts-manager.d.ts +44 -0
  126. package/dist/ganttchart/model/task-resource.d.ts +11 -0
  127. package/dist/ganttchart/model/task-serializer.d.ts +5 -0
  128. package/dist/ganttchart/model/task-warnings.d.ts +4 -0
  129. package/dist/ganttchart/model/task.d.ts +92 -19
  130. package/dist/ganttchart/model/work.d.ts +14 -1
  131. package/dist/ganttchart/model/working-calendar.d.ts +2 -32
  132. package/dist/ganttchart/sheet/renderers/sheet-icons-cell-renderer.d.ts +2 -0
  133. package/dist/ganttchart/sheet/sheet.d.ts +12 -7
  134. package/dist/ganttchart/themes/theme.d.ts +63 -108
  135. package/dist/ganttchart/undo-manager.d.ts +1 -13
  136. package/dist/index.d.ts +77 -8
  137. package/dist/index.js +6 -1
  138. package/dist/licensing/features.d.ts +3 -1
  139. package/dist/licensing/license-key.d.ts +1 -0
  140. package/dist/licensing/license-manager.d.ts +4 -1
  141. package/dist/licensing/watermark.d.ts +1 -0
  142. package/dist/locales/cs.d.ts +1 -1
  143. package/dist/locales/cs.js +1 -0
  144. package/dist/locales/de.d.ts +1 -1
  145. package/dist/locales/de.js +1 -0
  146. package/dist/locales/es.d.ts +1 -1
  147. package/dist/locales/es.js +1 -0
  148. package/dist/locales/fr.d.ts +1 -1
  149. package/dist/locales/fr.js +1 -0
  150. package/dist/locales/it.d.ts +1 -1
  151. package/dist/locales/it.js +1 -0
  152. package/dist/locales/ja.d.ts +1 -1
  153. package/dist/locales/ja.js +1 -0
  154. package/dist/locales/ko.d.ts +1 -1
  155. package/dist/locales/ko.js +1 -0
  156. package/dist/locales/nl.d.ts +1 -1
  157. package/dist/locales/nl.js +1 -0
  158. package/dist/locales/pl.d.ts +1 -1
  159. package/dist/locales/pl.js +1 -0
  160. package/dist/locales/pt.d.ts +1 -1
  161. package/dist/locales/pt.js +1 -0
  162. package/dist/locales/ru.d.ts +1 -1
  163. package/dist/locales/ru.js +1 -0
  164. package/dist/locales/sv.d.ts +1 -1
  165. package/dist/locales/sv.js +1 -0
  166. package/dist/locales/zh.d.ts +1 -1
  167. package/dist/locales/zh.js +1 -0
  168. package/dist/resourcescheduler/chart/handlers/add-event.d.ts +15 -8
  169. package/dist/resourcescheduler/chart/handlers/move-event.d.ts +10 -8
  170. package/dist/resourcescheduler/chart/handlers/resize-event.d.ts +21 -8
  171. package/dist/resourcescheduler/chart/handlers/scheduler-drag-handler.d.ts +32 -0
  172. package/dist/resourcescheduler/chart/handlers/scheduler-handler.d.ts +5 -3
  173. package/dist/resourcescheduler/chart/handlers/scheduler-handlers.d.ts +9 -10
  174. package/dist/resourcescheduler/chart/handlers/select-event.d.ts +10 -8
  175. package/dist/resourcescheduler/chart/renderers/scheduler-background-renderer.d.ts +2 -1
  176. package/dist/resourcescheduler/chart/renderers/scheduler-events-renderer.d.ts +2 -1
  177. package/dist/resourcescheduler/chart/renderers/scheduler-renderer-base.d.ts +1 -0
  178. package/dist/resourcescheduler/chart/scheduler-chart.d.ts +9 -4
  179. package/dist/resourcescheduler/chart/tooltip/scheduler-tooltip-renderer.d.ts +2 -4
  180. package/dist/resourcescheduler/clipboard.d.ts +8 -0
  181. package/dist/resourcescheduler/export/scheduler-data-exporter.d.ts +5 -0
  182. package/dist/resourcescheduler/export/scheduler-export-common.d.ts +12 -7
  183. package/dist/resourcescheduler/export/scheduler-image-exporter.d.ts +2 -1
  184. package/dist/resourcescheduler/export/scheduler-pdf-exporter.d.ts +3 -1
  185. package/dist/resourcescheduler/model/scheduler-data-adapter.d.ts +1 -0
  186. package/dist/resourcescheduler/model/scheduler-data.d.ts +45 -2
  187. package/dist/resourcescheduler/model/scheduler-event.d.ts +22 -2
  188. package/dist/resourcescheduler/model/scheduler-layout-calculator.d.ts +18 -0
  189. package/dist/resourcescheduler/model/scheduler-resource.d.ts +21 -2
  190. package/dist/resourcescheduler/resourcescheduler-engine.d.ts +134 -42
  191. package/dist/resourcescheduler/sheet/renderers/scheduler-icon-cell-renderer.d.ts +2 -0
  192. package/dist/resourcescheduler/sheet/scheduler-sheet.d.ts +11 -6
  193. package/dist/resourcescheduler/themes/scheduler-themes.d.ts +13 -0
  194. package/dist/styles/ec.css +1 -0
  195. package/dist/styles/gc.css +1 -1
  196. package/dist/styles/index.css +1 -0
  197. package/dist/styles/rs.css +1 -0
  198. package/dist/table/editors/input-editor.d.ts +1 -0
  199. package/dist/table/table-column.d.ts +7 -1
  200. package/dist/table/table-data-source.d.ts +2 -0
  201. package/dist/table/table-rows-selection.d.ts +1 -0
  202. package/dist/table/table.d.ts +11 -0
  203. package/dist/table/tree-table.d.ts +2 -0
  204. package/package.json +17 -6
  205. package/styles/_common.scss +12 -1
  206. package/styles/ec.scss +1225 -0
  207. package/styles/index.scss +3 -0
  208. package/dist/ganttchart/model/sheet-column.d.ts +0 -27
  209. package/dist/ganttchart/sheet/editors/cell-editor.d.ts +0 -23
  210. package/dist/ganttchart/sheet/editors/currency-editor.d.ts +0 -6
  211. package/dist/ganttchart/sheet/editors/date-editor.d.ts +0 -6
  212. package/dist/ganttchart/sheet/editors/decimal-editor.d.ts +0 -6
  213. package/dist/ganttchart/sheet/editors/dialog-editor.d.ts +0 -17
  214. package/dist/ganttchart/sheet/editors/input-editor.d.ts +0 -19
  215. package/dist/ganttchart/sheet/editors/integer-editor.d.ts +0 -6
  216. package/dist/ganttchart/sheet/editors/percent-editor.d.ts +0 -6
  217. package/dist/ganttchart/sheet/editors/text-editor.d.ts +0 -5
  218. package/dist/ganttchart/sheet/sheet-keyboard-navigation.d.ts +0 -26
  219. package/dist/ganttchart/sheet/sheet-rows-selection.d.ts +0 -24
  220. /package/dist/__tests__/{critical-path-calculator.test.d.ts → calendar/calendar-clipboard.test.d.ts} +0 -0
  221. /package/dist/__tests__/{model/lag.test.d.ts → calendar/eventcalendar-engine.test.d.ts} +0 -0
  222. /package/dist/__tests__/{model/length.test.d.ts → calendar/export/calendar-data-export.test.d.ts} +0 -0
  223. /package/dist/__tests__/{model/resource-list.test.d.ts → calendar/export/calendar-export.test.d.ts} +0 -0
  224. /package/dist/__tests__/{model/resource.test.d.ts → calendar/export/calendar-icalendar.test.d.ts} +0 -0
  225. /package/dist/__tests__/{model/task-list.test.d.ts → calendar/model/calendar-data.test.d.ts} +0 -0
  226. /package/dist/__tests__/{model/task-part.test.d.ts → calendar/model/calendar-item-recurrence.test.d.ts} +0 -0
  227. /package/dist/__tests__/{model/task-resource.test.d.ts → calendar/model/calendar-item-types.test.d.ts} +0 -0
  228. /package/dist/__tests__/{model/task-warnings.test.d.ts → calendar/model/calendar-occurrence.test.d.ts} +0 -0
  229. /package/dist/__tests__/{model/task.test.d.ts → calendar/model/calendar.test.d.ts} +0 -0
  230. /package/dist/__tests__/{model/work.test.d.ts → calendar/model/recurrence-editor.test.d.ts} +0 -0
  231. /package/dist/__tests__/{model/working-calendar.test.d.ts → calendar/model/recurrence-expander.test.d.ts} +0 -0
  232. /package/dist/__tests__/{undo-manager.test.d.ts → calendar/model/recurrence-rule.test.d.ts} +0 -0
package/dist/index.js CHANGED
@@ -1 +1,6 @@
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};
1
+ import{Subject as e,BehaviorSubject as t,Subscription as r,merge as i}from"rxjs";var s,n;!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"}(n||(n={}));var a={[n.CriticalPath]:"gantt",[n.Baseline]:"gantt",[n.Resources]:"gantt",[n.WorkingCalendar]:"gantt",[n.Markers]:"gantt",[n.Constraints]:"gantt",[n.ResourceScheduler]:"scheduler",[n.Filtering]:null,[n.UndoRedo]:null,[n.Clipboard]:null,[n.CustomProperties]:null,[n.Export]:null,[n.AdditionalThemes]:null,[n.AdditionalLocales]:null};function o(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&"Uint8Array"===e.constructor.name&&"BYTES_PER_ELEMENT"in e&&1===e.BYTES_PER_ELEMENT}function l(e,t=""){if("number"!=typeof e){throw new TypeError(`${t&&`"${t}" `}expected number, got ${typeof e}`)}if(!Number.isSafeInteger(e)||e<0){throw new RangeError(`${t&&`"${t}" `}expected integer >= 0, got ${e}`)}}function h(e,t,r=""){const i=o(e),s=e?.length,n=void 0!==t;if(!i||n&&s!==t){const a=(r&&`"${r}" `)+"expected Uint8Array"+(n?` of length ${t}`:"")+", got "+(i?`length=${s}`:"type="+typeof e);if(!i)throw new TypeError(a);throw new RangeError(a)}return e}function d(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function c(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function u(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}const g=(()=>"function"==typeof Uint8Array.from([]).toHex&&"function"==typeof Uint8Array.fromHex)(),m=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function p(e){if(h(e),g)return e.toHex();let t="";for(let r=0;r<e.length;r++)t+=m[e[r]];return t}const v=48,f=57,y=65,b=70,w=97,T=102;function C(e){return e>=v&&e<=f?e-v:e>=y&&e<=b?e-(y-10):e>=w&&e<=T?e-(w-10):void 0}function x(e){if("string"!=typeof e)throw new TypeError("hex string expected, got "+typeof e);if(g)try{return Uint8Array.fromHex(e)}catch(e){if(e instanceof SyntaxError)throw new RangeError(e.message);throw e}const t=e.length,r=t/2;if(t%2)throw new RangeError("hex string expected, got unpadded hex of length "+t);const i=new Uint8Array(r);for(let t=0,s=0;t<r;t++,s+=2){const r=C(e.charCodeAt(s)),n=C(e.charCodeAt(s+1));if(void 0===r||void 0===n){const t=e[s]+e[s+1];throw new RangeError('hex string expected, got non-hex character "'+t+'" at index '+s)}i[t]=16*r+n}return i}function k(e,t={}){const r=(t,r)=>e(r).update(t).digest(),i=e(void 0);return r.outputLen=i.outputLen,r.blockLen=i.blockLen,r.canXOF=i.canXOF,r.create=t=>e(t),Object.assign(r,t),Object.freeze(r)}const E=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});class D{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,r,i){this.blockLen=e,this.outputLen=t,this.padOffset=r,this.isLE=i,this.buffer=new Uint8Array(e),this.view=u(this.buffer)}update(e){d(this),h(e);const{view:t,buffer:r,blockLen:i}=this,s=e.length;for(let n=0;n<s;){const a=Math.min(i-this.pos,s-n);if(a===i){const t=u(e);for(;i<=s-n;n+=i)this.process(t,n);continue}r.set(e.subarray(n,n+a),this.pos),this.pos+=a,n+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){d(this),function(e,t){h(e,void 0,"digestInto() output");const r=t.outputLen;if(e.length<r)throw new RangeError('"digestInto() output" expected to be of length >='+r)}(e,this),this.finished=!0;const{buffer:t,view:r,blockLen:i,isLE:s}=this;let{pos:n}=this;t[n++]=128,c(this.buffer.subarray(n)),this.padOffset>i-n&&(this.process(r,0),n=0);for(let e=n;e<i;e++)t[e]=0;r.setBigUint64(i-8,BigInt(8*this.length),s),this.process(r,0);const a=u(e),o=this.outputLen;if(o%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const l=o/4,g=this.get();if(l>g.length)throw new Error("_sha2: outputLen bigger than state");for(let e=0;e<l;e++)a.setUint32(4*e,g[e],s)}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const r=e.slice(0,t);return this.destroy(),r}_cloneInto(e){e||=new this.constructor,e.set(...this.get());const{blockLen:t,buffer:r,length:i,finished:s,destroyed:n,pos:a}=this;return e.destroyed=n,e.finished=s,e.length=i,e.pos=a,i%t&&e.buffer.set(r),e}clone(){return this._cloneInto()}}const S=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),$=BigInt(2**32-1),R=BigInt(32);function M(e,t=!1){return t?{h:Number(e&$),l:Number(e>>R&$)}:{h:0|Number(e>>R&$),l:0|Number(e&$)}}const L=(e,t,r)=>e>>>r,I=(e,t,r)=>e<<32-r|t>>>r,P=(e,t,r)=>e>>>r|t<<32-r,A=(e,t,r)=>e<<32-r|t>>>r,H=(e,t,r)=>e<<64-r|t>>>r-32,V=(e,t,r)=>e>>>r-32|t<<64-r;function B(e,t,r,i){const s=(t>>>0)+(i>>>0);return{h:e+r+(s/2**32|0)|0,l:0|s}}const F=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0),z=(e,t,r,i)=>t+r+i+(e/2**32|0)|0,O=(e,t,r,i)=>(e>>>0)+(t>>>0)+(r>>>0)+(i>>>0),N=(e,t,r,i,s)=>t+r+i+s+(e/2**32|0)|0,W=(e,t,r,i,s)=>(e>>>0)+(t>>>0)+(r>>>0)+(i>>>0)+(s>>>0),U=(e,t,r,i,s,n)=>t+r+i+s+n+(e/2**32|0)|0,j=(()=>function(e,t=!1){const r=e.length;let i=new Uint32Array(r),s=new Uint32Array(r);for(let n=0;n<r;n++){const{h:r,l:a}=M(e[n],t);[i[n],s[n]]=[r,a]}return[i,s]}(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(e=>BigInt(e))))(),X=(()=>j[0])(),Y=(()=>j[1])(),K=new Uint32Array(80),Z=new Uint32Array(80);class G extends D{constructor(e){super(128,e,16,!1)}get(){const{Ah:e,Al:t,Bh:r,Bl:i,Ch:s,Cl:n,Dh:a,Dl:o,Eh:l,El:h,Fh:d,Fl:c,Gh:u,Gl:g,Hh:m,Hl:p}=this;return[e,t,r,i,s,n,a,o,l,h,d,c,u,g,m,p]}set(e,t,r,i,s,n,a,o,l,h,d,c,u,g,m,p){this.Ah=0|e,this.Al=0|t,this.Bh=0|r,this.Bl=0|i,this.Ch=0|s,this.Cl=0|n,this.Dh=0|a,this.Dl=0|o,this.Eh=0|l,this.El=0|h,this.Fh=0|d,this.Fl=0|c,this.Gh=0|u,this.Gl=0|g,this.Hh=0|m,this.Hl=0|p}process(e,t){for(let r=0;r<16;r++,t+=4)K[r]=e.getUint32(t),Z[r]=e.getUint32(t+=4);for(let e=16;e<80;e++){const t=0|K[e-15],r=0|Z[e-15],i=P(t,r,1)^P(t,r,8)^L(t,0,7),s=A(t,r,1)^A(t,r,8)^I(t,r,7),n=0|K[e-2],a=0|Z[e-2],o=P(n,a,19)^H(n,a,61)^L(n,0,6),l=A(n,a,19)^V(n,a,61)^I(n,a,6),h=O(s,l,Z[e-7],Z[e-16]),d=N(h,i,o,K[e-7],K[e-16]);K[e]=0|d,Z[e]=0|h}let{Ah:r,Al:i,Bh:s,Bl:n,Ch:a,Cl:o,Dh:l,Dl:h,Eh:d,El:c,Fh:u,Fl:g,Gh:m,Gl:p,Hh:v,Hl:f}=this;for(let e=0;e<80;e++){const t=P(d,c,14)^P(d,c,18)^H(d,c,41),y=A(d,c,14)^A(d,c,18)^V(d,c,41),b=d&u^~d&m,w=W(f,y,c&g^~c&p,Y[e],Z[e]),T=U(w,v,t,b,X[e],K[e]),C=0|w,x=P(r,i,28)^H(r,i,34)^H(r,i,39),k=A(r,i,28)^V(r,i,34)^V(r,i,39),E=r&s^r&a^s&a,D=i&n^i&o^n&o;v=0|m,f=0|p,m=0|u,p=0|g,u=0|d,g=0|c,({h:d,l:c}=B(0|l,0|h,0|T,0|C)),l=0|a,h=0|o,a=0|s,o=0|n,s=0|r,n=0|i;const S=F(C,k,D);r=z(S,T,x,E),i=0|S}({h:r,l:i}=B(0|this.Ah,0|this.Al,0|r,0|i)),({h:s,l:n}=B(0|this.Bh,0|this.Bl,0|s,0|n)),({h:a,l:o}=B(0|this.Ch,0|this.Cl,0|a,0|o)),({h:l,l:h}=B(0|this.Dh,0|this.Dl,0|l,0|h)),({h:d,l:c}=B(0|this.Eh,0|this.El,0|d,0|c)),({h:u,l:g}=B(0|this.Fh,0|this.Fl,0|u,0|g)),({h:m,l:p}=B(0|this.Gh,0|this.Gl,0|m,0|p)),({h:v,l:f}=B(0|this.Hh,0|this.Hl,0|v,0|f)),this.set(r,i,s,n,a,o,l,h,d,c,u,g,m,p,v,f)}roundClean(){c(K,Z)}destroy(){this.destroyed=!0,c(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class q extends G{Ah=0|S[0];Al=0|S[1];Bh=0|S[2];Bl=0|S[3];Ch=0|S[4];Cl=0|S[5];Dh=0|S[6];Dl=0|S[7];Eh=0|S[8];El=0|S[9];Fh=0|S[10];Fl=0|S[11];Gh=0|S[12];Gl=0|S[13];Hh=0|S[14];Hl=0|S[15];constructor(){super(64)}}const _=k(()=>new q,E(3)),J=(e,t,r)=>h(e,t,r),Q=l,ee=p,te=(...e)=>function(...e){let t=0;for(let r=0;r<e.length;r++){const i=e[r];h(i),t+=i.length}const r=new Uint8Array(t);for(let t=0,i=0;t<e.length;t++){const s=e[t];r.set(s,i),i+=s.length}return r}(...e),re=o,ie=e=>function(e=32){l(e,"bytesLength");const t="object"==typeof globalThis?globalThis.crypto:null;if("function"!=typeof t?.getRandomValues)throw new Error("crypto.getRandomValues must be defined");if(e>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${e}`);return t.getRandomValues(new Uint8Array(e))}(e),se=BigInt(0),ne=BigInt(1);
2
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function ae(e,t=""){if("boolean"!=typeof e){throw new TypeError((t&&`"${t}" `)+"expected boolean, got type="+typeof e)}return e}function oe(e,t=""){if("number"!=typeof e){throw new TypeError((t&&`"${t}" `)+"expected number, got type="+typeof e)}if(!Number.isSafeInteger(e)){throw new RangeError((t&&`"${t}" `)+"expected safe integer, got "+e)}}function le(e){if("string"!=typeof e)throw new TypeError("hex string expected, got "+typeof e);return""===e?se:BigInt("0x"+e)}function he(e){return le(p(ce(h(e)).reverse()))}function de(e,t){if(l(t),0===t)throw new RangeError("zero length");const r=(e=function(e){if("bigint"==typeof e){if(!ue(e))throw new RangeError("positive bigint expected, got "+e)}else Q(e);return e}(e)).toString(16);if(r.length>2*t)throw new RangeError("number too large");return x(r.padStart(2*t,"0"))}function ce(e){return Uint8Array.from(J(e))}const ue=e=>"bigint"==typeof e&&se<=e;function ge(e,t,r,i){if(!function(e,t,r){return ue(e)&&ue(t)&&ue(r)&&t<=e&&e<r}(t,r,i))throw new RangeError("expected valid "+e+": "+r+" <= n < "+i+", got "+t)}function me(e,t={},r={}){if("[object Object]"!==Object.prototype.toString.call(e))throw new TypeError("expected valid options object");const i=(t,r)=>Object.entries(t).forEach(([t,i])=>function(t,r,i){if(!i&&"function"!==r&&!Object.hasOwn(e,t))throw new TypeError(`param "${t}" is invalid: expected own property`);const s=e[t];if(i&&void 0===s)return;const n=typeof s;if(n!==r||null===s)throw new TypeError(`param "${t}" is invalid: expected ${r}, got ${n}`)}(t,i,r));i(t,!1),i(r,!0)}const pe=()=>{throw new Error("not implemented")},ve=BigInt(0),fe=BigInt(1),ye=BigInt(2),be=BigInt(3),we=BigInt(4),Te=BigInt(5),Ce=BigInt(7),xe=BigInt(8),ke=BigInt(9),Ee=BigInt(16);
3
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function De(e,t){if(t<=ve)throw new Error("mod: expected positive modulus, got "+t);const r=e%t;return r>=ve?r:t+r}function Se(e,t,r){if(t<ve)throw new Error("pow2: expected non-negative exponent, got "+t);let i=e;for(;t-- >ve;)i*=i,i%=r;return i}function $e(e,t){if(e===ve)throw new Error("invert: expected non-zero number");if(t<=ve)throw new Error("invert: expected positive modulus, got "+t);let r=De(e,t),i=t,s=ve,n=fe;for(;r!==ve;){const e=i/r,t=i-r*e,a=s-n*e;i=r,r=t,s=n,n=a}if(i!==fe)throw new Error("invert: does not exist");return De(s,t)}function Re(e,t,r){const i=e;if(!i.eql(i.sqr(t),r))throw new Error("Cannot find square root")}function Me(e,t){const r=e,i=(r.ORDER+fe)/we,s=r.pow(t,i);return Re(r,s,t),s}function Le(e,t){const r=e,i=(r.ORDER-Te)/xe,s=r.mul(t,ye),n=r.pow(s,i),a=r.mul(t,n),o=r.mul(r.mul(a,ye),n),l=r.mul(a,r.sub(o,r.ONE));return Re(r,l,t),l}function Ie(e){if(e<be)throw new Error("sqrt is not defined for small field");let t=e-fe,r=0;for(;t%ye===ve;)t/=ye,r++;let i=ye;const s=Ne(e);for(;1===Be(s,i);)if(i++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(1===r)return Me;let n=s.pow(i,t);const a=(t+fe)/ye;return function(e,i){const s=e;if(s.is0(i))return i;if(1!==Be(s,i))throw new Error("Cannot find square root");let o=r,l=s.mul(s.ONE,n),h=s.pow(i,t),d=s.pow(i,a);for(;!s.eql(h,s.ONE);){if(s.is0(h))return s.ZERO;let e=1,t=s.sqr(h);for(;!s.eql(t,s.ONE);)if(e++,t=s.sqr(t),e===o)throw new Error("Cannot find square root");const r=fe<<BigInt(o-e-1),i=s.pow(l,r);o=e,l=s.sqr(i),h=s.mul(h,l),d=s.mul(d,i)}return d}}function Pe(e){return e%we===be?Me:e%xe===Te?Le:e%Ee===ke?function(e){const t=Ne(e),r=Ie(e),i=r(t,t.neg(t.ONE)),s=r(t,i),n=r(t,t.neg(i)),a=(e+Ce)/Ee;return(e,t)=>{const r=e;let o=r.pow(t,a),l=r.mul(o,i);const h=r.mul(o,s),d=r.mul(o,n),c=r.eql(r.sqr(l),t),u=r.eql(r.sqr(h),t);o=r.cmov(o,l,c),l=r.cmov(d,h,u);const g=r.eql(r.sqr(l),t),m=r.cmov(o,l,g);return Re(r,m,t),m}}(e):Ie(e)}const Ae=(e,t)=>(De(e,t)&fe)===fe,He=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ve(e,t,r=!1){const i=e,s=new Array(t.length).fill(r?i.ZERO:void 0),n=t.reduce((e,t,r)=>i.is0(t)?e:(s[r]=e,i.mul(e,t)),i.ONE),a=i.inv(n);return t.reduceRight((e,t,r)=>i.is0(t)?e:(s[r]=i.mul(e,s[r]),i.mul(e,t)),a),s}function Be(e,t){const r=e,i=(r.ORDER-fe)/ye,s=r.pow(t,i),n=r.eql(s,r.ONE),a=r.eql(s,r.ZERO),o=r.eql(s,r.neg(r.ONE));if(!n&&!a&&!o)throw new Error("invalid Legendre symbol result");return n?1:a?0:-1}function Fe(e,t){if(void 0!==t&&Q(t),e<=ve)throw new Error("invalid n length: expected positive n, got "+e);if(void 0!==t&&t<1)throw new Error("invalid n length: expected positive bit length, got "+t);const r=function(e){if(e<se)throw new Error("expected non-negative bigint, got "+e);let t;for(t=0;e>se;e>>=ne,t+=1);return t}(e);if(void 0!==t&&t<r)throw new Error(`invalid n length: expected bit length (${r}) >= n.length (${t})`);const i=void 0!==t?t:r;return{nBitLength:i,nByteLength:Math.ceil(i/8)}}const ze=new WeakMap;class Oe{ORDER;BITS;BYTES;isLE;ZERO=ve;ONE=fe;_lengths;_mod;constructor(e,t={}){if(e<=fe)throw new Error("invalid field: expected ORDER > 1, got "+e);let r;this.isLE=!1,null!=t&&"object"==typeof t&&("number"==typeof t.BITS&&(r=t.BITS),"function"==typeof t.sqrt&&Object.defineProperty(this,"sqrt",{value:t.sqrt,enumerable:!0}),"boolean"==typeof t.isLE&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=Object.freeze(t.allowedLengths.slice())),"boolean"==typeof t.modFromBytes&&(this._mod=t.modFromBytes));const{nBitLength:i,nByteLength:s}=Fe(e,r);if(s>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=i,this.BYTES=s,Object.freeze(this)}create(e){return De(e,this.ORDER)}isValid(e){if("bigint"!=typeof e)throw new TypeError("invalid field element: expected bigint, got "+typeof e);return ve<=e&&e<this.ORDER}is0(e){return e===ve}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&fe)===fe}neg(e){return De(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return De(e*e,this.ORDER)}add(e,t){return De(e+t,this.ORDER)}sub(e,t){return De(e-t,this.ORDER)}mul(e,t){return De(e*t,this.ORDER)}pow(e,t){return function(e,t,r){const i=e;if(r<ve)throw new Error("invalid exponent, negatives unsupported");if(r===ve)return i.ONE;if(r===fe)return t;let s=i.ONE,n=t;for(;r>ve;)r&fe&&(s=i.mul(s,n)),n=i.sqr(n),r>>=fe;return s}(this,e,t)}div(e,t){return De(e*$e(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return $e(e,this.ORDER)}sqrt(e){let t=ze.get(this);return t||ze.set(this,t=Pe(this.ORDER)),t(this,e)}toBytes(e){return this.isLE?(t=e,r=this.BYTES,de(t,r).reverse()):de(e,this.BYTES);var t,r}fromBytes(e,t=!1){J(e);const{_lengths:r,BYTES:i,isLE:s,ORDER:n,_mod:a}=this;if(r){if(e.length<1||!r.includes(e.length)||e.length>i)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+e.length);const t=new Uint8Array(i);t.set(e,s?0:t.length-e.length),e=t}if(e.length!==i)throw new Error("Field.fromBytes: expected "+i+" bytes, got "+e.length);let o=s?he(e):function(e){return le(p(e))}(e);if(a&&(o=De(o,n)),!t&&!this.isValid(o))throw new Error("invalid field element: outside of range 0..ORDER");return o}invertBatch(e){return Ve(this,e)}cmov(e,t,r){return ae(r,"condition"),r?t:e}}function Ne(e,t={}){return new Oe(e,t)}
4
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */Object.freeze(Oe.prototype);const We=BigInt(0),Ue=BigInt(1);function je(e,t){const r=t.negate();return e?r:t}function Xe(e,t){const r=Ve(e.Fp,t.map(e=>e.Z));return t.map((t,i)=>e.fromAffine(t.toAffine(r[i])))}function Ye(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+e)}function Ke(e,t){Ye(e,t);const r=2**e;return{windows:Math.ceil(t/e)+1,windowSize:2**(e-1),mask:(ne<<BigInt(e))-ne,maxNumber:r,shiftBy:BigInt(e)}}function Ze(e,t,r){const{windowSize:i,mask:s,maxNumber:n,shiftBy:a}=r;let o=Number(e&s),l=e>>a;o>i&&(o-=n,l+=Ue);const h=t*i;return{nextN:l,offset:h+Math.abs(o)-1,isZero:0===o,isNeg:o<0,isNegF:t%2!=0,offsetF:h}}const Ge=new WeakMap,qe=new WeakMap;function _e(e){return qe.get(e)||1}function Je(e){if(e!==We)throw new Error("invalid wNAF")}class Qe{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,r=this.ZERO){let i=e;for(;t>We;)t&Ue&&(r=r.add(i)),i=i.double(),t>>=Ue;return r}precomputeWindow(e,t){const{windows:r,windowSize:i}=Ke(t,this.bits),s=[];let n=e,a=n;for(let e=0;e<r;e++){a=n,s.push(a);for(let e=1;e<i;e++)a=a.add(n),s.push(a);n=a.double()}return s}wNAF(e,t,r){if(!this.Fn.isValid(r))throw new Error("invalid scalar");let i=this.ZERO,s=this.BASE;const n=Ke(e,this.bits);for(let e=0;e<n.windows;e++){const{nextN:a,offset:o,isZero:l,isNeg:h,isNegF:d,offsetF:c}=Ze(r,e,n);r=a,l?s=s.add(je(d,t[c])):i=i.add(je(h,t[o]))}return Je(r),{p:i,f:s}}wNAFUnsafe(e,t,r,i=this.ZERO){const s=Ke(e,this.bits);for(let e=0;e<s.windows&&r!==We;e++){const{nextN:n,offset:a,isZero:o,isNeg:l}=Ze(r,e,s);if(r=n,!o){const e=t[a];i=i.add(l?e.negate():e)}}return Je(r),i}getPrecomputes(e,t,r){let i=Ge.get(t);return i||(i=this.precomputeWindow(t,e),1!==e&&("function"==typeof r&&(i=r(i)),Ge.set(t,i))),i}cached(e,t,r){const i=_e(e);return this.wNAF(i,this.getPrecomputes(i,e,r),t)}unsafe(e,t,r,i){const s=_e(e);return 1===s?this._unsafeLadder(e,t,i):this.wNAFUnsafe(s,this.getPrecomputes(s,e,r),t,i)}createCache(e,t){Ye(t,this.bits),qe.set(e,t),Ge.delete(e)}hasCache(e){return 1!==_e(e)}}function et(e,t,r){if(t){if(t.ORDER!==e)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return function(e){if(me(e,He.reduce((e,t)=>(e[t]="function",e),{ORDER:"bigint",BYTES:"number",BITS:"number"})),oe(e.BYTES,"BYTES"),oe(e.BITS,"BITS"),e.BYTES<1||e.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(e.ORDER<=fe)throw new Error("invalid field: expected ORDER > 1, got "+e.ORDER)}(t),t}return Ne(e,{isLE:r})}function tt(e,t){return function(r){const i=e(r);return{secretKey:i,publicKey:t(i)}}}
5
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const rt=BigInt(0),it=BigInt(1),st=BigInt(2),nt=BigInt(8);function at(e,t={}){const r=t,i=function(e,t,r={},i){if(void 0===i&&(i="edwards"===e),!t||"object"!=typeof t)throw new Error(`expected valid ${e} CURVE object`);for(const e of["p","n","h"]){const r=t[e];if(!("bigint"==typeof r&&r>We))throw new Error(`CURVE.${e} must be positive bigint`)}const s=et(t.p,r.Fp,i),n=et(t.n,r.Fn,i),a=["Gx","Gy","a","d"];for(const e of a)if(!s.isValid(t[e]))throw new Error(`CURVE.${e} must be valid field element of CURVE.Fp`);return{CURVE:t=Object.freeze(Object.assign({},t)),Fp:s,Fn:n}}("edwards",e,r,r.FpFnLE),{Fp:s,Fn:n}=i;let a=i.CURVE;const{h:o}=a;me(r,{},{uvRatio:"function"});const l=st<<BigInt(8*n.BYTES)-it,h=e=>s.create(e),d=void 0===r.uvRatio?(e,t)=>{try{return{isValid:!0,value:s.sqrt(s.div(e,t))}}catch(e){return{isValid:!1,value:rt}}}:r.uvRatio;if(!function(e,t,r,i){const s=e.sqr(r),n=e.sqr(i),a=e.add(e.mul(t.a,s),n),o=e.add(e.ONE,e.mul(t.d,e.mul(s,n)));return e.eql(a,o)}(s,a,a.Gx,a.Gy))throw new Error("bad curve params: generator point");function c(e,t,r=!1){return ge("coordinate "+e,t,r?it:rt,l),t}function u(e){if(!(e instanceof g))throw new Error("EdwardsPoint expected")}class g{static BASE=new g(a.Gx,a.Gy,it,h(a.Gx*a.Gy));static ZERO=new g(rt,it,it,rt);static Fp=s;static Fn=n;X;Y;Z;T;constructor(e,t,r,i){this.X=c("x",e),this.Y=c("y",t),this.Z=c("z",r,!0),this.T=c("t",i),Object.freeze(this)}static CURVE(){return a}static fromAffine(e){if(e instanceof g)throw new Error("extended point not allowed");const{x:t,y:r}=e||{};return c("x",t),c("y",r),new g(t,r,it,h(t*r))}static fromBytes(e,t=!1){const r=s.BYTES,{a:i,d:n}=a;e=ce(J(e,r,"point")),ae(t,"zip215");const o=ce(e),c=e[r-1];o[r-1]=-129&c;const u=he(o),m=t?l:s.ORDER;ge("point.y",u,rt,m);const p=h(u*u),v=h(p-it),f=h(n*p-i);let{isValid:y,value:b}=d(v,f);if(!y)throw new Error("bad point: invalid y coordinate");const w=(b&it)===it,T=!!(128&c);if(!t&&b===rt&&T)throw new Error("bad point: x=0 and x_0=1");return T!==w&&(b=h(-b)),g.fromAffine({x:b,y:u})}static fromHex(e,t=!1){return g.fromBytes((e=>x(e))(e),t)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(e=8,t=!0){return m.createCache(this,e),t||this.multiply(st),this}assertValidity(){const{a:e,d:t}=a;if(this.is0())throw new Error("bad point: ZERO");const{X:r,Y:i,Z:s,T:n}=this,o=h(r*r),l=h(i*i),d=h(s*s),c=h(d*d),u=h(o*e);if(h(d*h(u+l))!==h(c+h(t*h(o*l))))throw new Error("bad point: equation left != right (1)");if(h(r*i)!==h(s*n))throw new Error("bad point: equation left != right (2)")}equals(e){u(e);const{X:t,Y:r,Z:i}=this,{X:s,Y:n,Z:a}=e,o=h(t*a),l=h(s*i),d=h(r*a),c=h(n*i);return o===l&&d===c}is0(){return this.equals(g.ZERO)}negate(){return new g(h(-this.X),this.Y,this.Z,h(-this.T))}double(){const{a:e}=a,{X:t,Y:r,Z:i}=this,s=h(t*t),n=h(r*r),o=h(st*h(i*i)),l=h(e*s),d=t+r,c=h(h(d*d)-s-n),u=l+n,m=u-o,p=l-n,v=h(c*m),f=h(u*p),y=h(c*p),b=h(m*u);return new g(v,f,b,y)}add(e){u(e);const{a:t,d:r}=a,{X:i,Y:s,Z:n,T:o}=this,{X:l,Y:d,Z:c,T:m}=e,p=h(i*l),v=h(s*d),f=h(o*r*m),y=h(n*c),b=h((i+s)*(l+d)-p-v),w=y-f,T=y+f,C=h(v-t*p),x=h(b*w),k=h(T*C),E=h(b*C),D=h(w*T);return new g(x,k,D,E)}subtract(e){return u(e),this.add(e.negate())}multiply(e){if(!n.isValidNot0(e))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:t,f:r}=m.cached(this,e,e=>Xe(g,e));return Xe(g,[t,r])[0]}multiplyUnsafe(e){if(!n.isValid(e))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return e===rt?g.ZERO:this.is0()||e===it?this:m.unsafe(this,e,e=>Xe(g,e))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return m.unsafe(this,a.n).is0()}toAffine(e){let t=e;const{X:r,Y:i,Z:n}=this,a=this.is0();null==t&&(t=a?nt:s.inv(n));const o=h(r*t),l=h(i*t),d=s.mul(n,t);if(a)return{x:rt,y:it};if(d!==it)throw new Error("invZ was invalid");return{x:o,y:l}}clearCofactor(){return o===it?this:this.multiplyUnsafe(o)}toBytes(){const{x:e,y:t}=this.toAffine(),r=s.toBytes(t);return r[r.length-1]|=e&it?128:0,r}toHex(){return ee(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}const m=new Qe(g,n.BITS);return n.BITS>=8&&g.BASE.precompute(8),Object.freeze(g.prototype),Object.freeze(g),g}class ot{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){this.ep=e}static fromBytes(e){pe()}static fromHex(e){pe()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(e){return this.ep.toAffine(e)}toHex(){return ee(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,t){return this.ep.precompute(e,t),this}}function lt(e,t,r={}){if("function"!=typeof t)throw new Error('"hash" function param is required');const i=t,s=r;me(s,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",zip215:"boolean",mapToCurve:"function"});const{prehash:n}=s,{BASE:a,Fp:o,Fn:l}=e,h=i.outputLen,d=2*o.BYTES;if(void 0!==h&&(oe(h,"hash.outputLen"),h!==d))throw new Error(`hash.outputLen must be ${d}, got ${h}`);const c=void 0===s.randomBytes?ie:s.randomBytes,u=void 0===s.adjustScalarBytes?e=>e:s.adjustScalarBytes,g=void 0===s.domain?(e,t,r)=>{if(ae(r,"phflag"),t.length||r)throw new Error("Contexts/pre-hash are not supported");return e}:s.domain;function m(e){return l.create(he(e))}function p(e){const{head:t,prefix:r,scalar:s}=function(e){const t=w.secretKey;J(e,w.secretKey,"secretKey");const r=J(i(e),2*t,"hashedSecretKey"),s=u(r.slice(0,t));return{head:s,prefix:r.slice(t,2*t),scalar:m(s)}}(e),n=a.multiply(s),o=n.toBytes();return{head:t,prefix:r,scalar:s,point:n,pointBytes:o}}function v(e){return p(e).pointBytes}function f(e=Uint8Array.of(),...t){const r=te(...t);return m(i(g(r,J(e,void 0,"context"),!!n)))}const y={zip215:s.zip215};const b=o.BYTES,w={secretKey:b,publicKey:b,signature:2*b,seed:b};function T(e){return e=void 0===e?c(w.seed):e,J(e,w.seed,"seed")}const C={getExtendedPublicKey:p,randomSecretKey:T,isValidSecretKey:function(e){return re(e)&&e.length===w.secretKey},isValidPublicKey:function(t,r){try{return!!e.fromBytes(t,void 0===r?y.zip215:r)}catch(e){return!1}},toMontgomery(t){const{y:r}=e.fromBytes(t),i=w.publicKey,s=32===i;if(!s&&57!==i)throw new Error("only defined for 25519 and 448");const n=s?o.div(it+r,it-r):o.div(r-it,r+it);return o.toBytes(n)},toMontgomerySecret(e){const t=w.secretKey;J(e,t);const r=i(e.subarray(0,t));return u(r).subarray(0,t)}};return Object.freeze(w),Object.freeze(C),Object.freeze({keygen:tt(T,v),getPublicKey:v,sign:function(e,t,r={}){e=J(e,void 0,"message"),n&&(e=n(e));const{prefix:i,scalar:s,pointBytes:o}=p(t),h=f(r.context,i,e),d=a.multiply(h).toBytes(),c=f(r.context,d,o,e),u=l.create(h+c*s);if(!l.isValid(u))throw new Error("sign failed: invalid s");const g=te(d,l.toBytes(u));return J(g,w.signature,"result")},verify:function(t,r,i,s=y){const{context:o}=s,l=void 0===s.zip215?!!y.zip215:s.zip215,h=w.signature;t=J(t,h,"signature"),r=J(r,void 0,"message"),i=J(i,w.publicKey,"publicKey"),void 0!==l&&ae(l,"zip215"),n&&(r=n(r));const d=h/2,c=t.subarray(0,d),u=he(t.subarray(d,h));let g,m,p;try{g=e.fromBytes(i,l),m=e.fromBytes(c,l),p=a.multiplyUnsafe(u)}catch(e){return!1}if(!l&&g.isSmallOrder())return!1;const v=f(o,c,i,r);return m.add(g.multiplyUnsafe(v)).subtract(p).clearCofactor().is0()},utils:C,Point:e,lengths:w})}
6
+ /*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const ht=BigInt(0),dt=BigInt(1),ct=BigInt(2),ut=BigInt(5),gt=BigInt(8),mt=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),pt=(()=>({p:mt,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:gt,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")}))();function vt(e){return e[0]&=248,e[31]&=127,e[31]|=64,e}const ft=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function yt(e,t){const r=mt,i=De(t*t*t,r),s=function(e){const t=BigInt(10),r=BigInt(20),i=BigInt(40),s=BigInt(80),n=mt,a=e*e%n*e%n,o=Se(a,ct,n)*a%n,l=Se(o,dt,n)*e%n,h=Se(l,ut,n)*l%n,d=Se(h,t,n)*h%n,c=Se(d,r,n)*d%n,u=Se(c,i,n)*c%n,g=Se(u,s,n)*u%n,m=Se(g,s,n)*u%n,p=Se(m,t,n)*h%n;return{pow_p_5_8:Se(p,ct,n)*e%n,b2:a}}(e*De(i*i*t,r)).pow_p_5_8;let n=De(e*i*s,r);const a=De(t*n*n,r),o=n,l=De(n*ft,r),h=a===e,d=a===De(-e,r),c=a===De(-e*ft,r);return h&&(n=o),(d||c)&&(n=l),Ae(n,r)&&(n=De(-n,r)),{isValid:h||d,value:n}}const bt=at(pt,{uvRatio:yt}),wt=(()=>bt.Fp)(),Tt=(()=>bt.Fn)();function Ct(e){return lt(bt,_,Object.assign({adjustScalarBytes:vt,zip215:!0},e))}const xt=Ct({}),kt=ft,Et=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Dt=e=>yt(dt,e),St=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");class $t extends ot{static BASE=(()=>new $t(bt.BASE))();static ZERO=(()=>new $t(bt.ZERO))();static Fp=(()=>wt)();static Fn=(()=>Tt)();constructor(e){super(e)}static fromAffine(e){return new $t(bt.fromAffine(e))}assertSame(e){if(!(e instanceof $t))throw new Error("RistrettoPoint expected")}init(e){return new $t(e)}static fromBytes(e){h(e,32);const{a:t,d:r}=pt,i=mt,s=e=>wt.create(e),n=(e=>wt.create(he(e)&St))(e);if(!function(e,t){if(e=J(e),t=J(t),e.length!==t.length)return!1;let r=0;for(let i=0;i<e.length;i++)r|=e[i]^t[i];return 0===r}(wt.toBytes(n),e)||Ae(n,i))throw new Error("invalid ristretto255 encoding 1");const a=s(n*n),o=s(dt+t*a),l=s(dt-t*a),d=s(o*o),c=s(l*l),u=s(t*r*d-c),{isValid:g,value:m}=Dt(s(u*c)),p=s(m*l),v=s(m*p*u);let f=s((n+n)*p);Ae(f,i)&&(f=s(-f));const y=s(o*v),b=s(f*y);if(!g||Ae(b,i)||y===ht)throw new Error("invalid ristretto255 encoding 2");return new $t(new bt(f,y,dt,b))}static fromHex(e){return $t.fromBytes(x(e))}toBytes(){let{X:e,Y:t,Z:r,T:i}=this.ep;const s=mt,n=e=>wt.create(e),a=n(n(r+t)*n(r-t)),o=n(e*t),l=n(o*o),{value:h}=Dt(n(a*l)),d=n(h*a),c=n(h*o),u=n(d*c*i);let g;if(Ae(i*u,s)){let r=n(t*kt),i=n(e*kt);e=r,t=i,g=n(d*Et)}else g=c;Ae(e*u,s)&&(t=n(-t));let m=n((r-t)*g);return Ae(m,s)&&(m=n(-m)),wt.toBytes(m)}equals(e){this.assertSame(e);const{X:t,Y:r}=this.ep,{X:i,Y:s}=e.ep,n=e=>wt.create(e),a=n(t*s)===n(r*i),o=n(r*s)===n(t*i);return a||o}is0(){return this.equals($t.ZERO)}}Object.freeze($t.BASE),Object.freeze($t.ZERO),Object.freeze($t.prototype),Object.freeze($t);function Rt(e){if(!e.startsWith("TK-"))return null;var t=e.substring(3),r=t.lastIndexOf(".");if(-1===r)return null;var i=t.substring(0,r),s=Lt(t.substring(r+1)),n=Lt("rDZAxa9-lLKBmLtt6IZXQpmb6zPwuIcTI6BXpCVsnU8"),a=function(e){for(var t=[],r=0;r<e.length;r++){var i=e.charCodeAt(r);i<128?t.push(i):i<2048?t.push(192|i>>6,128|63&i):t.push(224|i>>12,128|i>>6&63,128|63&i)}return new Uint8Array(t)}(i);if(64!==s.length||32!==n.length||0===a.length)return null;try{if(!xt.verify(s,a,n))return null}catch{return null}try{for(var o=Lt(i),l="",h=0;h<o.length;h++)l+=String.fromCharCode(o[h]);var d=JSON.parse(l);return"number"!=typeof d.t||"number"!=typeof d.e||"string"!=typeof d.v||"string"!=typeof d.h||void 0!==d.s&&"string"!=typeof d.s?null:d}catch{return null}}var Mt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";function Lt(e){e=e.replace(/=+$/,"");for(var t=[],r=0,i=0,s=0;s<e.length;s++){var n=Mt.indexOf(e[s]);if(-1===n)return new Uint8Array(0);r=r<<6|n,(i+=6)>=8&&(i-=8,t.push(r>>i&255))}return new Uint8Array(t)}var It=Math.floor(new Date("2025-05-12").getTime()/1e3),Pt=["suite","gantt","scheduler","calendar"];class At{static#e;#t=s.Free;#r="suite";#i=!1;#s=new e;static get(){return At.#e||(At.#e=new At),At.#e}setLicenseKey(e){var t=Rt(e);return t?"1"!==t.v&&t.e<It?(console.warn("[TimelineKit] License key does not cover this major version. Please renew your subscription to use v1."),this.#t=s.Free,this.#r="suite",this.#i=!1,void this.#s.next()):(this.#t=t.t,this.#r=t.s&&-1!==Pt.indexOf(t.s)?t.s:"suite",this.#i=!0,void this.#s.next()):(console.warn("[TimelineKit] Invalid license key."),this.#t=s.Free,this.#r="suite",this.#i=!1,void this.#s.next())}isAvailable(e){return function(e,t,r){if(t<s.Pro)return!1;if(!r||"suite"===r)return!0;var i=a[e];return null===i||i===r}(e,this.#t,this.#r)}get currentTier(){return this.#t}get scope(){return this.#r}get isValid(){return this.#i}get showWatermark(){return this.#t<s.Pro}get licenseChanged$(){return this.#s}}function Ht(e){At.get().setLicenseKey(e)}function Vt(){return At.get()}function Bt(){const e=new Date;return e.setHours(0,0,0,0),e}function Ft(e){var t=Bt();const r=new Date(t);return r.setDate(t.getDate()+e),r}function zt(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function Ot(e){const t=new Date(e);return t.setDate(t.getDate()+1),t.setHours(0,0,0,0),t}function Nt(e){const t=new Date(e);return t.setDate(t.getDate()-1),t.setHours(23,59,59,0),t}function Wt(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Ut(e,t){return(null===e||null!==t)&&((null!==e||null===t)&&(null===e&&null===t||e.getTime()==t.getTime()))}function jt(e,t,r,i){const s=Math.max(e.getTime(),r.getTime()),n=Math.min(t.getTime(),i.getTime()),a=Math.max(0,n-s);return Math.floor(a/6e4)}function Xt(e,t){var r=12*(t.getFullYear()-e.getFullYear())+t.getMonth()-e.getMonth(),i=new Date(e.getFullYear(),e.getMonth()+1,0).getDate(),s=new Date(t.getFullYear(),t.getMonth()+1,0).getDate();return r-(e.getDate()-1+(60*e.getHours()+e.getMinutes())/1440)/i+(t.getDate()-1+(60*t.getHours()+t.getMinutes())/1440)/s}function Yt(e,t,r){const i=e.children;r>=0&&r<i.length?e.insertBefore(t,i[r]):r>=i.length?e.appendChild(t):e.insertBefore(t,i[0])}function Kt(e,t){return new Intl.DateTimeFormat(t,{dateStyle:"short"}).format(e)}function Zt(e,t,r){return new Intl.DateTimeFormat(t,r).format(e)}function Gt(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),r=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-r);var i=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-i.getTime())/864e5+1)/7)}function qt(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}T${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`}function _t(e){var t=e.match(/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2}))?$/);if(!t)throw new Error("Invalid date and time value: "+e);return new Date(parseInt(t[1]),parseInt(t[2])-1,parseInt(t[3]),t[4]?parseInt(t[4]):0,t[5]?parseInt(t[5]):0,t[6]?parseInt(t[6]):0)}function Jt(e,t){return e.getTime()>t.getTime()?e:t}function Qt(e,t){return e.getTime()<t.getTime()?e:t}function er(e){const t="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";let r="";const i=new Uint8Array(e);(globalThis.crypto??crypto).getRandomValues(i);for(let s=0;s<e;s++){r+=t[i[s]%62]}return r}function tr(e){switch(e.keyCode){case 46:case 8:return!0}return!1}class rr{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){if(t<0)throw new Error("Length value must be greater or equal to zero.");this.#n=e,this.#a=t}getEndTime(e,t){var r=this.#a,i=new Date(e),s=0,n=this.unit;if("week"==n&&(r*=t.workingDays.length,n="day"),"day"==n){for(;r>=1;)i=new Date(i),t.isWorkingDay(i)?(r--,i.setDate(i.getDate()+1)):i=Ot(i);s=r*t.getHoursPerDay()*60}if("month"==n){for(;r>=1;){(i=new Date(i)).setMonth(i.getMonth()+1);break}s=30*r*t.getHoursPerDay()*60}if("hour"==n&&(s=60*this.#a),"minute"==n&&(s=this.#a),s>0)for(i=t.moveToStartShift(i,!0);s>0;)i.setMinutes(i.getMinutes()+1),i=t.moveToStartShift(i,!0),s--;return t.moveToEndShift(i,!0)}static getLength(e,t,r,i){var s=new Date(e),n=0,a=0;if("month"==r)for(;;){var o=new Date(s);o.setMonth(o.getMonth()+1);var l=t;if(i.isEndOfDay(l)&&(l=Ot(l)),o<=l&&(a++,s=o),o>=l)break}for(;s<t;){var h=Wt(s=new Date(s),t)?t:Ot(s);n+=i.getHoursBetween(s,h)/i.getHoursPerDay(),s=Ot(s)}switch(r){case"day":return new rr(r,n);case"week":return new rr(r,n/i.workingDays.length);case"minute":return new rr(r,n*i.getHoursPerDay()*60);case"hour":return new rr(r,n*i.getHoursPerDay());case"month":return new rr(r,a+n/30);default:throw new Error}}equals(e){return this.#n==e.unit&&this.#a==e.value}#o(){switch(this.unit){case"minute":return"m";case"hour":return"h";case"day":return"d";case"week":return"w";case"month":return"M"}}toString(){return this.value.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2})+this.#o()}static tryParse(e){const t=e.match(/^(\d+(\.\d+)?)([mhdwM])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(r>1e3)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day";break;case"w":s="week";break;case"M":s="month"}return new rr(s,r)}static parse(e){var t=rr.tryParse(e);if(!t)throw new Error("Failed to parse length "+e);return t}static fromAny(e){var t=e.unit,r=e.value;return new rr(t,r)}toAny(){return{unit:this.unit,value:this.value}}}class ir{#l;get startTime(){return this.#l}set startTime(e){e!=this.#l&&(this.startTimeChanging.next({part:this,value:e}),this.#l=this.calendar.moveToStartShift(e,!0),this.#h=this.#d.getEndTime(this.#l,this.calendar),this.startTimeChanged.next())}#h;get endTime(){return this.#h}set endTime(e){e!=this.#h&&(this.#c(this.startTime,e),this.endTimeChanging.next({part:this,value:e}),this.#h=this.calendar.moveToEndShift(e,!0),this.#d=rr.getLength(this.#l,this.#h,this.length.unit,this.calendar),this.endTimeChanged.next())}#d;get length(){return this.#d}set length(e){e.equals(this.#d)||(this.lengthChanging.next({part:this,value:e}),this.#d=e,this.#h=e.getEndTime(this.#l,this.calendar),this.lengthChanged.next())}#u=null;get task(){return this.#u}set task(e){if(this.#u)throw new Error("Once assigned the task cannot be changed");e!=this.#u&&(this.#u=e)}#g;get calendar(){return this.#g.getValue()}startTimeChanging=new e;endTimeChanging=new e;lengthChanging=new e;startTimeChanged=new e;endTimeChanged=new e;lengthChanged=new e;progressChanged=new e;constructor(e,t,r){this.#l=e,this.#d=t,this.#g=r,this.#h=t.getEndTime(e,this.calendar)}#c(e,t){if(e>t)throw new sr("Start time needs to be less or equal to end time")}get lengthInHours(){return this.calendar.getHoursBetween(this.startTime,this.endTime)}get progress(){if(!this.#u)return null;var e=this.#u.progress;if(null==e)return null;for(var t=this.#u.partsLengthInHours*((this.#u.progress??0)/100),r=0;r<this.#u.partsLength;r++){var i=this.#u.getPart(r),s=i.lengthInHours;if(t>=s){if(i==this)return 100;t-=s}else{if(t>0){if(i==this)return t/s*100;break}if(t<=0)break}}return 0}toAny(){var e={};return e.startTime=qt(this.#l),e.endTime=qt(this.#h),e.length=this.#d.toAny(),e}static fromAny(e,t){var r=_t(e.startTime),i=rr.fromAny(e.length);return new ir(r,i,t)}}class sr extends Error{constructor(e){super(e),this.name="ValidationError"}}class nr{#m;get id(){return this.#m}#p;get resource(){return this.#p}#v;get capacity(){return this.#v}set capacity(e){if(e!=this.#v){if(e<=0)throw new Error("Invalid resource capacity");this.#v=e,this.#f()}}changed$=new e;#y;constructor(e,t,r){if(r<=0)throw new Error("Invalid resource capacity");this.#m=e||er(30),this.#p=t,this.#v=r,this.#y=this.#p.changed$.subscribe(()=>{this.#f()})}destroy(){this.#y.unsubscribe()}#f(){this.changed$.next({resource:this})}formatCapacity(){return this.#v/100==Math.floor(this.#v/100)?(this.#v/100).toString()+"x":this.#v+"%"}toAny(){return{id:this.id,resourceId:this.resource.id,capacity:this.capacity}}static fromAny(e,t){var r=t.getResourceById(e.resourceId);if(!r)throw new Error("Resource not found in the list: "+e.resourceId);return new nr(e.id,r,e.capacity)}}class ar{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){if(t<0)throw new Error("Work value must be greater or equal to zero.");this.#n=e,this.#a=t}static tryParse(e){const t=e.match(/^(\d+(\.\d+)?)([mhd])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(r>9999)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day"}return new ar(s,r)}#o(){switch(this.unit){case"minute":return"m";case"hour":return"h";case"day":return"d"}}toString(){return this.value.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2})+this.#o()}toHours(e){switch(this.#n){case"minute":return this.#a/60;case"hour":return this.#a;case"day":return this.#a*e.getHoursPerDay()}}static maxUnit(e,t){return"day"==e||"day"==t?"day":"hour"==e||"hour"==t?"hour":"minute"}static fromHours(e,t,r){switch(t){case"minute":return new ar(t,60*e);case"hour":return new ar(t,e);case"day":return new ar(t,e/r.getHoursPerDay())}}static sum(e,t){if(e.unit!=t.unit)throw new Error;return new ar(e.unit,e.value+t.value)}toAny(){return{unit:this.#n,value:this.#a}}static fromAny(e){return new ar(e.unit,e.value)}clone(){return new ar(this.unit,this.value)}}class or{#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e)}#a=null;get value(){return this.#a}set value(e){e!=this.#a&&(this.#a=e,this.#f())}changed$=new e;constructor(e,t){this.#b=e,this.#a=t}#f(){this.changed$.next()}toAny(){return{name:this.#b,value:this.#a}}static fromAny(e){return new or(e.name,e.value)}}class lr{#w=[];#T=new Map;#C;constructor(e){this.#C=e}addProperty(e){if(this.#w.find(t=>t.name==e.name))throw new Error(`Property ${e.name} has already been added`);this.#w.push(e),this.#x(e),this.#C(e)}removeProperty(e){var t=this.#w.indexOf(e);if(t<0)throw new Error("Property not found");this.#w.splice(t,1),this.#k(e)}renameProperty(e,t){var r=this.#w.find(t=>t.name==e);r&&(r.name=t)}getPropertyByName(e){return this.#w.find(t=>t.name==e)??null}getPropertyValue(e){return this.getPropertyByName(e)?.value??null}setPropertyValue(e,t){var r=this.getPropertyByName(e);r?r.value=t:this.addProperty(new or(e,t))}get hasProperties(){return this.#w.length>0}serializeProperties(){return this.#w.map(e=>e.toAny())}loadProperties(e){if(this.#E(),this.#w=[],e)for(var t of e){var r=or.fromAny(t);this.#w.push(r),this.#x(r)}}#x(e){var t=e.changed$.subscribe(()=>{this.#C(e)});this.#T.set(e,t)}#k(e){var t=this.#T.get(e);t&&(t.unsubscribe(),this.#T.delete(e))}#E(){for(var[e,t]of this.#T)t.unsubscribe();this.#T.clear()}}class hr{#D=new Map;add(e,t){var r=this.#D.get(e);r||(r=[],this.#D.set(e,r)),r.push(t)}remove(e){var t=this.#D.get(e);if(t){for(var r of t)r.unsubscribe();this.#D.delete(e)}}clear(){for(var e of this.#D.values())for(var t of e)t.unsubscribe();this.#D.clear()}}class dr{#S=[];#T=new hr;#$;constructor(e){this.#$=e}get length(){return this.#S.length}get(e){return this.#S[e]}get last(){return this.#S[this.#S.length-1]}get startTime(){return this.#S[0].startTime}get endTime(){return this.last.endTime}indexOf(e){return this.#S.indexOf(e)}includes(e){return this.#S.includes(e)}get lengthUnit(){return this.#S.length>0?this.#S[0].length.unit:null}totalLengthInHours(e){var t=0;for(let e of this.#S)t+=e.lengthInHours;return t}forEach(e){for(var t=0;t<this.#S.length;t++)e(this.#S[t],t)}insertSorted(e){for(var t=0;t<=this.#S.length;t++){if(!(t<this.#S.length))return void this.#S.splice(t,0,e);if(e.startTime<=this.#S[t].startTime)return void this.#S.splice(t,0,e)}}remove(e){var t=this.#S.indexOf(e);return t>=0&&(this.#S.splice(t,1),this.#T.remove(e)),t}clear(){this.#T.clear(),this.#S=[]}assign(e){this.clear(),this.#S=e;for(let e of this.#S)this.#x(e)}subscribe(e){this.#x(e)}unsubscribe(e){this.#T.remove(e)}tryCombineAdjacent(e){for(var t=0;t<this.#S.length-1;){var r=this.#S[t],i=this.#S[t+1],s=!1;(this.#R(r,i)||r.endTime<=i.startTime&&0==e.getHoursBetween(r.endTime,i.startTime)||i.endTime<=r.startTime&&0==e.getHoursBetween(i.endTime,r.startTime))&&(s=!0),s?(this.#S.splice(t+1,1),r.startTime=Qt(r.startTime,i.startTime),r.endTime=Jt(r.endTime,i.endTime)):t++}}removeEmpty(){for(var e=!1,t=this.#S.length-1;t>=0;t--){var r=this.#S[t];0==r.length.value&&(this.#S.splice(t,1),this.#T.remove(r),e=!0)}return{changed:e,allRemoved:0==this.#S.length}}#R(e,t){return e.startTime<=t.endTime&&t.startTime<=e.endTime}#x(e){this.#T.add(e,e.startTimeChanged.subscribe(()=>{this.#$.onPartStartTimeChanged()})),this.#T.add(e,e.endTimeChanged.subscribe(()=>{this.#$.onPartEndTimeChanged()})),this.#T.add(e,e.lengthChanged.subscribe(()=>{this.#$.onPartLengthChanged()}))}}let cr=class{#m;get id(){return this.#m}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#b=null;get name(){return this.#b}set name(e){e!=this.#b&&this.#L(e)}#l=null;get startTime(){return this.#l}set startTime(e){this.#I(e)}#h=null;get endTime(){return this.#h}set endTime(e){this.#P(e)}get calendar(){return this.#g.getValue()}get length(){switch(this.type){case"empty":return null;case"milestone":return new rr(this.#A??this.calendar.defaultLengthUnit,0);case"task":return rr.getLength(this.startTime,this.endTime,this.#H.get(0).length.unit,this.calendar);case"summary":return rr.getLength(this.startTime,this.endTime,this.#A??this.calendar.defaultLengthUnit,this.calendar)}}set length(e){this.#V(e)}#A=null;get customLengthUnit(){return this.#A}set customLengthUnit(e){e!=this.#A&&this.#B(e)}#F=null;get baseStartTime(){return this.#F}#z=[];#H;get lastPart(){return this.#H.last}#O="empty";get type(){return this.#O}set type(e){this.#O!=e&&this.#N(e)}#W=null;get parent(){return this.#W}#U=null;get progress(){return this.#U}set progress(e){e!=this.#U&&this.#j(e)}#X=!1;get collapsed(){return this.#X}set collapsed(e){"summary"==this.type&&this.#X!=e&&(this.#X=e,this.collapsedChanged$.next({task:this}))}#Y=[];get resourcesLength(){return this.#Y.length}getResource(e){return this.#Y[e]}getResourceByResourceId(e){return this.#Y.find(t=>t.resource.id==e)??null}getResourceById(e){return this.#Y.find(t=>t.id==e)??null}#K=null;get customWork(){return this.#K}get work(){switch(this.#O){case"empty":case"milestone":return null;case"task":return this.#Z();case"summary":return this.#G()}}set work(e){this.#q(e)}#_=null;get customCost(){return this.#_}get cost(){switch(this.#O){case"empty":case"milestone":return null;case"task":return this.#J();case"summary":return this.#Q()}}set cost(e){this.#ee(e)}#te=null;get note(){return this.#te}set note(e){this.#te!=e&&(this.#te=e,this.#f())}warnings=[];#re="asap";get constraintType(){return this.#re}set constraintType(e){this.#re!=e&&(this.#re=e,"asap"!==e&&"alap"!==e||(this.#ie=null),this.#f())}#ie=null;get constraintDate(){return this.#ie}set constraintDate(e){this.#ie?.getTime()!=e?.getTime()&&(this.#ie=e,this.#f())}#se=null;get baselineStartTime(){return this.#se}set baselineStartTime(e){this.#se=e}#ne=null;get baselineEndTime(){return this.#ne}set baselineEndTime(e){this.#ne=e}earlyStart=null;earlyFinish=null;lateStart=null;lateFinish=null;totalFloat=null;freeFloat=null;isCritical=!1;#ae;#g;#oe;#le;changed$=new e;typeChanged$=new e;startTimeChanged$=new e;endTimeChanged$=new e;collapsedChanged$=new e;subtaskAdded$=new e;resourceAdding$=new e;#he=new hr;#de=new hr;constructor(e,t,r,i){this.#g=t,this.#oe=r,this.#le=i??null,this.#m=e||er(30),this.#H=new dr({onPartStartTimeChanged:()=>{this.#ce(),this.#H.tryCombineAdjacent(this.calendar)},onPartEndTimeChanged:()=>{this.#ue(),this.#ce(),this.#H.tryCombineAdjacent(this.calendar)},onPartLengthChanged:()=>{this.#ue(),"task"==this.type&&(this.#ce(),this.#H.tryCombineAdjacent(this.calendar))}}),this.#ae=new lr(e=>{null!==e.value&&this.#ge(),this.#f()})}#f(){this.changed$.next({task:this})}#me(e){Ut(this.#l,e)||this.startTimeChanged$.next({task:this})}#pe(e){Ut(this.#h,e)||this.endTimeChanged$.next({task:this})}#ue(){var e=this.#H.removeEmpty();e.allRemoved&&(this.#l=this.#h,this.type="milestone"),e.changed&&this.#f()}#ve(e,t){this.#he.add(e,t)}#fe(e){this.#he.remove(e)}addPart(e,t){var r=this.#O,i=new ir(e,t,this.#g);if("summary"==this.type||"milestone"==this.type)throw new Error("Cannot add a part to a task of type "+this.type);var s=this.#H.lengthUnit;if(null!==s&&s!=i.length.unit)throw new Error("Length unit of the part is different than length unit of the task");return i.startTime=this.calendar.moveToStartShift(i.startTime,!0),this.#H.insertSorted(i),this.#H.tryCombineAdjacent(this.calendar),this.#H.includes(i)&&(i.task=this,this.#H.subscribe(i),"empty"==this.#O&&(this.#O="task",this.#U=0)),this.#ce(),this.#f(),r!=this.#O&&this.typeChanged$.next({task:this,oldType:r,newType:this.#O}),i}removePart(e){if("summary"==this.type||"milestone"==this.type)throw new Error("Cannot remove a part from a task of type "+this.type);if(this.#H.remove(e)<0)throw new Error("Task part not found");0==this.#H.length&&(this.type="empty"),this.#f()}#ce(){var e=this.#l,t=this.#h;this.#l=this.#H.startTime,this.#h=this.#H.endTime,this.#ye(),this.#me(e),this.#pe(t),this.#f()}#be(){var e=this.#l,t=this.#h,r=null,i=null;for(let e of this.#z)(!r||e.startTime&&r>e.startTime)&&e.startTime&&(r=new Date(e.startTime)),(!i||e.endTime&&i<e.endTime)&&e.endTime&&(i=new Date(e.endTime));this.#l=r,this.#h=i,this.#ye();var s=0,n=0;for(let e of this.#z){var a=e.partsLengthInHours;s+=a,n+=(e.progress??0)*a}this.#U=s>0?n/s:null,this.#me(e),this.#pe(t),this.#f()}get partsLength(){return this.#H.length}getPart(e){return this.#H.get(e)}#we(e){var t=this.#z.indexOf(e);if(t<0)throw new Error("Subtask is not included in the task");return t}get subtasksLength(){return this.#z.length}getSubtask(e){return this.#z[e]}addSubtask(e){var t=this.#O;if(e.parent)throw new Error(`Task '${e.name}' (${e.id}) is already a subtask of '${e.parent.name}' (${e.parent.id})`);e.#W=this,"summary"!=this.#O&&(this.#X=!1),this.#O="summary",this.#K=null,this.#_=null,this.#Y=[],this.#z.push(e),this.subtaskAdded$.next({task:e}),this.#Te(e),e.#f(),this.#be(),t!=this.#O&&this.typeChanged$.next({task:this,oldType:t,newType:this.#O})}#Te(e){this.#ve(e,e.changed$.subscribe(e=>{this.#Ce(e.task)}))}#Ce(e){this.#be()}removeSubtask(e){var t=this.#we(e);if(this.#z.splice(t,1),this.#fe(e),e.#W=null,0==this.#z.length){var r=new Date(this.#l);this.#xe(!0),this.addPart(r,new rr("day",1))}else this.#be();this.#z.length>0&&this.#z[this.#z.length-1].#f(),this.#f()}get level(){for(var e=0,t=this.parent;t;)e++,t=t.parent;return e}#L(e){this.#b=e,null!==e&&this.#ge(),this.#f()}#ge(){if("empty"==this.type){var e=Bt(),t=this.#oe.getValue();t.startDate.getTime()>e.getTime()&&(e=new Date(t.startDate)),this.addPart(e,new rr("day",1))}}#N(e){var t,r=this.#O,i=this.#l,s=this.#h;if("milestone"==e)t=this.#h?this.calendar.getEndOfWorkingDay(this.#h):this.calendar.getEndOfWorkingDay(Bt()),this.#l=t,this.#h=t,this.#H.clear(),this.#z=[],this.#U=null,this.#X=!1,this.#K=null,this.#_=null,this.#Y=[];else if("task"==e){this.#z=[],this.#H.clear(),this.#O="empty",this.#U=0,this.#X=!1;var n=zt(this.#l??Bt()),a=new rr("day",1);this.addPart(n,a)}else{if("summary"==e)throw new Error("Add a subtask to change type to Summary.");"empty"==e&&this.#xe()}this.#O=e,this.#ye(),this.#me(i),this.#pe(s),this.#f(),r!=this.#O&&this.typeChanged$.next({task:this,oldType:r,newType:this.#O})}#xe(e){var t=this.#O;e||(this.#b=null),this.#z=[],this.#H.clear(),this.#O="empty",this.#l=null,this.#h=null,this.#U=null,this.#F=null,this.#X=!1,this.#K=null,this.#_=null,this.#Y=[],this.#re="asap",this.#ie=null,t!=this.#O&&this.typeChanged$.next({task:this,oldType:t,newType:this.#O})}#B(e){this.#A=e,this.#f()}#I(e){var t=this.#l,r=this.#h;if("empty"!=this.type){var i="milestone"==this.type?e:this.calendar.moveToStartShift(e,!0);if(i.getTime()!=this.#l.getTime()){if("task"==this.type){var s=0;if(i.getTime()>this.#l.getTime()){s=this.calendar.getHoursBetween(this.#l,i);for(var n=this.#H.length-1;n>=0;n--){(a=this.#H.get(n)).startTime=this.calendar.addHours(a.startTime,s,!0)}}else if(i.getTime()<this.#l.getTime())for(s=this.calendar.getHoursBetween(i,this.#l),n=0;n<this.#H.length;n++){var a;(a=this.#H.get(n)).startTime=this.calendar.addHours(a.startTime,-s)}}else{if("summary"==this.type)throw new Error("Cannot change the start date of a summary");if("milestone"==this.type){var o=this.calendar.getEndOfWorkingDay(i);this.#l=o,this.#h=o}}this.#ye(),this.#me(t),this.#pe(r),this.#f()}}else this.addPart(e,new rr(this.calendar.defaultLengthUnit,1))}#P(e){var t=this.#l,r=this.#h;if("empty"!=this.type){if("task"==this.type){if(1!=this.#H.length)throw new Error("Cannot change end date of a task consisting of multiple parts");this.#H.get(0).endTime=e}else{if("summary"==this.type)throw new Error("Cannot change the end date of a summary");if("milestone"==this.type){var i=this.calendar.moveToEndShift(e,!0);this.#l=i,this.#h=i}}this.#me(t),this.#pe(r),this.#f()}else{var s=this.calendar.moveToStartShift(zt(e),!0);this.addPart(s,new rr(this.calendar.defaultLengthUnit,1))}}#ye(){this.#le?.()||(this.#F=this.#l?new Date(this.#l):null)}#j(e){switch(this.type){case"task":if(null==e)throw new Error("Invalid value");if(e<0||e>100)throw new Error("Value out of range");this.#U=e,this.#f();break;case"empty":this.addPart(Bt(),new rr(this.calendar.defaultLengthUnit,1)),this.#U=e,this.#f();break;case"milestone":case"summary":throw new Error("Cannot set progress of task of type "+this.type)}}get partsLengthInHours(){return this.#H.totalLengthInHours(this.calendar)}indexOf(e){return this.#H.indexOf(e)}isDescendantOf(e){for(var t=this.#W;null!=t;){if(t==e)return!0;t=t.#W}return!1}toggleCollapsed(){this.collapsed=!this.collapsed}#ke=!1;get filtered(){return this.#ke}set filtered(e){this.#ke=e}get hidden(){if(this.#ke)return!0;if(this.#W){for(var e=this.#W;e;){if(e.#X)return!0;e=e.parent}return!1}return!1}#V(e){if("empty"!=this.type){if("task"!=this.type){if("milestone"==this.type){if(0==e.value)return;var t=this.startTime;return this.#xe(!0),void this.addPart(t,e)}throw new Error("Invalid operation")}if(0==e.value)return void(this.type="milestone");if(1!=this.#H.length)throw new Error("Cannot set length of a task consisting of multiple parts");this.#H.get(0).length=e}else this.addPart(Bt(),e)}get isLengthEditable(){return"empty"==this.type||"task"==this.type&&1==this.#H.length||"milestone"==this.type}get isStartTimeEditable(){return"empty"==this.type||"task"==this.type||"milestone"==this.type}get isEndTimeEditable(){return"empty"==this.type||"task"==this.type&&1==this.#H.length||"milestone"==this.type}get isProgressEditable(){return"empty"==this.type||"task"==this.type}get isResourcesEditable(){return"task"==this.type}get isWorkEditable(){return"empty"==this.type||"task"==this.type&&0==this.#Y.length}get isCostEditable(){return"empty"==this.type||"task"==this.type&&0==this.#Y.length}deserializeProperties(e,t){var r;if(this.#m=e.id,this.#M=e.color??0,this.#b=e.name??null,this.#l=e.startTime?_t(e.startTime):null,this.#h=e.endTime?_t(e.endTime):null,this.#A=e.customLengthUnit??null,this.#F=e.baseStartTime?_t(e.baseStartTime):null,this.#O=e.type,e.parts&&e.parts.length>0)r=e.parts.map(e=>ir.fromAny(e,this.#g));else if(this.#l&&this.#h&&"task"===this.#O){var i=rr.getLength(this.#l,this.#h,this.calendar.defaultLengthUnit,this.calendar);r=[new ir(this.#l,i,this.#g)]}else r=this.#l&&"milestone"===this.#O?[new ir(this.#l,new rr(this.calendar.defaultLengthUnit,0),this.#g)]:[];this.#H.assign(r),this.#U=e.progress??null,this.#X=e.collapsed??!1,this.#Y=e.resources?e.resources.map(e=>nr.fromAny(e,t)):[],this.#K=e.customWork?ar.fromAny(e.customWork):null,this.#_=e.customCost??null,this.#te=e.note??null,this.#se=e.baselineStartTime?_t(e.baselineStartTime):null,this.#ne=e.baselineEndTime?_t(e.baselineEndTime):null,this.#re=e.constraintType??"asap",this.#ie=e.constraintDate?_t(e.constraintDate):null,this.#ae.loadProperties(e.properties);for(let e of this.#Y)this.#Ee(e)}deserializePropertiesHierarchy(e,t){var r=e.parent;if(r){var i=t.find(e=>e.id==r);if(!i)throw new Error("Parent task not found: "+r);this.#W=i}this.#z=[],(e.subtasks??[]).map(e=>{var r=t.find(t=>t.id==e);if(!r)throw new Error("Subtask not found: "+e);this.#z.push(r),this.#Te(r)}),this.#z.length>0&&this.#be()}#De(e,t){this.#de.add(e,t)}#Se(e){this.#de.remove(e)}addResource(e,t,r){if(!this.isResourcesEditable)throw new Error("A resource cannot be added to a task of type "+this.type);this.resourceAdding$.next({task:this,resource:t});var i=new nr(e,t,r);return this.#Y.push(i),this.#K=null,this.#_=null,this.#Ee(i),this.#f(),i}#Ee(e){this.#De(e,e.changed$.subscribe(()=>{this.#f()}))}removeResource(e){var t=this.#Y.indexOf(e);if(t<0)throw new Error("Task resource not found");this.#Y.splice(t,1),this.#Se(e),e.destroy(),this.#f()}#$e(e){switch(e){case"minute":return"minute";case"hour":return"hour";default:return"day"}}#Z(){if(this.#K)return this.#K;if(0==this.#Y.length)return null;var e=this.#$e(this.length.unit),t=new ar(e,0);return this.#H.forEach(r=>{var i=this.calendar.getHoursBetween(r.startTime,r.endTime);for(let r of this.#Y)if(r.resource.rate){var s=r.capacity/100*i,n=ar.fromHours(s,e,this.calendar);t=ar.sum(t,n)}}),t}#G(){var e=0,t=null;for(let i of this.#z){var r=i.work;r&&(e+=r.toHours(this.calendar),t=t?ar.maxUnit(t,r.unit):r.unit)}return t?ar.fromHours(e,t,this.calendar):null}#q(e){if(!this.isWorkEditable)throw new Error("Cannot assign work to this task, either it is not of type Task or it has assigned resources");e!=this.#K&&(this.#K=e,null!==e&&this.#ge(),this.#f())}#J(){if(this.#_)return this.#_;if(0==this.#Y.length)return null;var e=0;return this.#H.forEach(t=>{var r=this.calendar.getHoursBetween(t.startTime,t.endTime);for(let t of this.#Y){var i=t.resource.rate;if(i){var s=t.capacity/100*r;"perHour"==i.type?e+=i.value*s:"perDay"==i.type&&(e+=i.value*(s/this.calendar.getHoursPerDay()))}e+=t.resource.fixedCostPerUse}}),e}#Q(){var e=null;for(let r of this.#z){var t=r.cost;null!==t&&(null===e?e=t:e+=t)}return e}#ee(e){if(!this.isCostEditable)throw new Error("Cannot assign cost to this task, either it is not of type Task or it has assigned resources");e!=this.#_&&(this.#_=e,null!==e&&this.#ge(),this.#f())}serializeCustomProperties(){return this.#ae.serializeProperties()}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}renameProperty(e,t){this.#ae.renameProperty(e,t)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){for(var e=[],t=0;t<this.subtasksLength;t++)e.push(this.getSubtask(t).id);var r=[];for(t=0;t<this.partsLength;t++)r.push(this.getPart(t).toAny());var i=[];for(t=0;t<this.resourcesLength;t++)i.push(this.getResource(t).toAny());return{id:this.id,color:this.color,name:this.name,startTime:this.startTime?qt(this.startTime):null,endTime:this.endTime?qt(this.endTime):null,customLengthUnit:this.customLengthUnit,baseStartTime:this.baseStartTime?qt(this.baseStartTime):null,subtasks:e,parts:r,type:this.type,parent:this.parent?this.parent.id:null,progress:this.progress,collapsed:this.collapsed,resources:i,customWork:this.customWork?this.customWork.toAny():null,customCost:this.customCost,note:this.note,baselineStartTime:this.baselineStartTime?qt(this.baselineStartTime):null,baselineEndTime:this.baselineEndTime?qt(this.baselineEndTime):null,constraintType:"asap"!==this.constraintType?this.constraintType:null,constraintDate:this.constraintDate?qt(this.constraintDate):null,properties:this.serializeCustomProperties()}}};class ur{#n;get unit(){return this.#n}#a;get value(){return this.#a}constructor(e,t){this.#n=e,this.#a=t}toHours(e){var t=e.getHoursPerDay();switch(this.#n){case"minute":return this.#a/60;case"hour":return this.#a;case"day":return this.#a*t;case"week":return this.#a*e.workingDays.length*t;case"month":return 30*this.#a*t}}#o(){switch(this.#n){case"minute":return"m";case"hour":return"h";case"day":return"d";case"week":return"w";case"month":return"M"}}toString(){var e=this.#a.toLocaleString(void 0,{minimumFractionDigits:0,maximumFractionDigits:2});return this.#a>0?"+"+e+this.#o():e+this.#o()}equals(e){return this.#n==e.unit&&this.#a==e.value}static zero(){return new ur("day",0)}static tryParse(e){const t=e.match(/^([+-]?\d+(\.\d+)?)([mhdwM])$/);if(!t)return null;const r=parseFloat(t[1]),i=t[3];if(Math.abs(r)>1e3)return null;var s="day";switch(i){case"m":s="minute";break;case"h":s="hour";break;case"d":s="day";break;case"w":s="week";break;case"M":s="month"}return new ur(s,r)}static parse(e){var t=ur.tryParse(e);if(!t)throw new Error("Failed to parse lag "+e);return t}toAny(){return{unit:this.#n,value:this.#a}}static fromAny(e){var t=e.unit,r=e.value;return new ur(t,r)}}class gr{#m;get id(){return this.#m}#Re;get from(){return this.#Re}#Me;get to(){return this.#Me}#O;get type(){return this.#O}#Le;get lag(){return this.#Le}#Ie=null;get list(){return this.#Ie}set list(e){if(this.#Ie)throw new Error("Once assigned the list cannot be changed");e!=this.#Ie&&(this.#Ie=e)}constructor(e,t,r,i,s){this.#Re=t,this.#Me=r,this.#O=i,this.#Le=s??ur.zero(),this.#m=e||er(30)}toAny(){var e={};return e.id=this.#m,e.type=this.#O,e.from=this.#Re.id,e.to=this.#Me.id,0!==this.#Le.value&&(e.lag=this.#Le.toAny()),e}static fromAny(e,t){var r=e.id,i=t.find(t=>t.id==e.from),s=t.find(t=>t.id==e.to);if(!i||!s)throw new Error("Task used in a link not found");var n=e.type,a=e.lag?ur.fromAny(e.lag):void 0;return new gr(r,i,s,n,a)}}function mr(e,t){return"finish"===e&&"start"===t?"finishToStart":"start"===e&&"start"===t?"startToStart":"finish"===e&&"finish"===t?"finishToFinish":"startToFinish"}class pr{#Ie;#g;#Pe;get calendar(){return this.#g.getValue()}constructor(e,t,r){this.#Ie=e,this.#g=t,this.#Pe=r}getTotalLength(e){for(var t=0,r=0;r<e.partsLength;r++)t+=e.length.value;return t}getProgressTime(e){for(var t=this.getTotalLength(e),r=e.progress/100*t,i=null,s=0;s<e.partsLength;s++){var n=e.getPart(s);if(null===i&&(i=n.startTime),Math.abs(r)<=1e-4)break;if(r>=n.length.value)i=n.endTime,r-=n.length.value;else i=new rr(n.length.unit,r).getEndTime(n.startTime,this.calendar),r=0}return i}update(e){var t=new Date;if("task"==e.type||"milestone"==e.type){var r=[];if("task"==e.type&&e.progress<100){var i=this.getProgressTime(e);if(i.getTime()<t.getTime()){var s=function(e,t){const r=Date.UTC(e.getFullYear(),e.getMonth(),e.getDate()),i=Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()),s=864e5;return Math.abs((i-r)/s)}(i,t);s>0&&r.push(this.formatDelayedMessage(s))}}this.#Ae(e,r),e.warnings=r}else e.warnings=[]}#Ae(e,t){var r=e.constraintDate;if(r){var i=this.#Pe.getValue(),s=r.toLocaleDateString(i.language);switch(e.constraintType){case"snlt":e.startTime&&e.startTime.getTime()>r.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.snlt,s));break;case"fnlt":e.endTime&&e.endTime.getTime()>r.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.fnlt,s));break;case"mso":var n=this.calendar.moveToStartShift(new Date(r),!0),a=e.startTime?this.calendar.moveToStartShift(new Date(e.startTime),!0):null;a&&a.getTime()!==n.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.mso,s));break;case"mfo":n=this.calendar.getEndOfWorkingDay(new Date(r));var o=e.endTime?this.calendar.getEndOfWorkingDay(new Date(e.endTime)):null;o&&o.getTime()!==n.getTime()&&t.push(i.warnings.constraintViolation(i.constraints.mfo,s))}}}updateAll(){for(var e=0;e<this.#Ie.length;e++)this.update(this.#Ie.getTask(e))}formatDelayedMessage(e){var t=this.#Pe.getValue(),r=t.warnings.behindSchedule;return 1==e?r+=" "+t.warnings.behindScheduleByOneDay:e>1&&(r+=" "+t.warnings.behindScheduleByDays(e)),r}}class vr{#He=!1;#Ve=new Set;#Be;#g;get evaluatingDependencies(){return this.#He}evaluatingDependenciesFinished$=new e;constructor(e,t){this.#Be=e,this.#g=t}onTaskStartTimeChanged(e){if(!this.#Ve.has(e)){this.#Ve.add(e);var t=!1;this.#He||(this.#He=!0,t=!0),this.#Fe(e);var r=this.#Be(),i=r.filter(t=>t.to==e);for(let t of i){var s=this.#ze(t);s&&e.startTime.getTime()<s.getTime()&&(e.startTime=s)}var n=r.filter(t=>t.from==e&&("startToStart"==t.type||"startToFinish"==t.type));for(let e of n)this.evaluateLinkDependency(e);t&&(this.#He=!1,this.evaluatingDependenciesFinished$.next()),queueMicrotask(()=>this.#Ve.delete(e))}}onTaskEndTimeChanged(e){var t=!1;this.#He||(this.#He=!0,t=!0);var r=this.#Be().filter(t=>t.from==e&&("finishToStart"==t.type||"finishToFinish"==t.type));for(let e of r)this.evaluateLinkDependency(e);t&&(this.#He=!1)}evaluateLinkDependency(e){var t=e.to,r=e.from,i=this.#g.getValue(),s=e.lag.toHours(i);switch(e.type){case"finishToStart":var n=i.addHours(new Date(r.endTime),s);if(t.startTime.getTime()<n.getTime())t.startTime=new Date(n);else if(t.startTime.getTime()>n.getTime()){var a=new Date(n);t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"startToStart":n=i.addHours(new Date(r.startTime),s);if(t.startTime.getTime()<n.getTime())t.startTime=new Date(n);else if(t.startTime.getTime()>n.getTime()){a=new Date(n);t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"finishToFinish":var o=i.addHours(new Date(r.endTime),s),l=t.endTime.getTime()-t.startTime.getTime(),h=new Date(o.getTime()-l);if(t.startTime.getTime()<h.getTime())t.startTime=h;else if(t.startTime.getTime()>h.getTime()){a=h;t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}break;case"startToFinish":o=i.addHours(new Date(r.startTime),s),l=t.endTime.getTime()-t.startTime.getTime(),h=new Date(o.getTime()-l);if(t.startTime.getTime()<h.getTime())t.startTime=h;else if(t.startTime.getTime()>h.getTime()){a=h;t.baseStartTime&&t.baseStartTime.getTime()>a.getTime()&&(a=t.baseStartTime),t.startTime=a}}}#ze(e){var t=this.#g.getValue(),r=e.lag.toHours(t);switch(e.type){case"finishToStart":return e.from.endTime?t.addHours(new Date(e.from.endTime),r):null;case"startToStart":return e.from.startTime?t.addHours(new Date(e.from.startTime),r):null;case"finishToFinish":case"startToFinish":return null}}#Fe(e){var t=this.#g.getValue();switch(e.constraintType){case"asap":break;case"snet":e.constraintDate&&e.startTime&&e.startTime.getTime()<e.constraintDate.getTime()&&(e.startTime=new Date(e.constraintDate));break;case"fnet":if(e.constraintDate&&e.endTime&&e.endTime.getTime()<e.constraintDate.getTime()){var r=t.getHoursBetween(e.endTime,e.constraintDate);e.startTime=t.addHours(new Date(e.startTime),r)}break;case"mso":if(!e.constraintDate||!e.startTime)break;var i=t.moveToStartShift(e.constraintDate,!0);e.startTime.getTime()!==i.getTime()&&(e.startTime=i);break;case"mfo":if(!e.constraintDate||!e.endTime||!e.startTime)break;if(e.endTime.getTime()!==e.constraintDate.getTime()){r=e.endTime.getTime()-e.constraintDate.getTime()>0?-t.getHoursBetween(e.constraintDate,e.endTime):t.getHoursBetween(e.endTime,e.constraintDate);e.startTime=t.addHours(new Date(e.startTime),r)}break;case"snlt":e.constraintDate&&e.startTime&&e.startTime.getTime()>e.constraintDate.getTime()&&(e.startTime=new Date(e.constraintDate));break;case"fnlt":if(e.constraintDate&&e.endTime&&e.endTime.getTime()>e.constraintDate.getTime()){r=-t.getHoursBetween(e.constraintDate,e.endTime);e.startTime=t.addHours(new Date(e.startTime),r)}}}}class fr{#Oe=[];#Ne=new Set;#We=[];#Ue;taskAdded$=new e;taskChanged$=new e;taskRemoved$=new e;taskCollapsedChanged$=new e;taskTypeChanged$=new e;linkAdded$=new e;linkRemoved$=new e;resourceAdding$=new e;filterChanged$=new e;#g;#oe;#je=!1;#Xe=!1;#Ye=null;#Ke;constructor(e,r,i){this.#g=e,this.#oe=r,this.#Ke=new vr(()=>this.#We,e),this.#Ze(),this.#Ue=new pr(this,this.#g,i??new t({language:"en-US"}))}get length(){return this.#Oe.length}get linksLength(){return this.#We.length}get evaluatingDependencies(){return this.#Ke.evaluatingDependencies}get evaluatingDependenciesFinished$(){return this.#Ke.evaluatingDependenciesFinished$}complexOperationFinished$=new e;get filter(){return this.#Ye}set filter(e){this.#Ye=e,this.#Ge()}#Ge(){for(var e=this.#Ye,t=0;t<this.#Oe.length;t++)this.#Oe[t].filtered=!1;if(e){for(t=0;t<this.#Oe.length;t++){"empty"===(r=this.#Oe[t]).type?r.filtered=!0:"summary"!==r.type&&(r.filtered=!e(r))}for(t=this.#Oe.length-1;t>=0;t--){var r;"summary"===(r=this.#Oe[t]).type&&(r.filtered=!this.#qe(r))}this.filterChanged$.next()}else this.filterChanged$.next()}#qe(e){for(var t=0;t<e.subtasksLength;t++){if(!e.getSubtask(t).filtered)return!0}return!1}#_e=new hr;getTask(e){if(e<0||e>=this.#Oe.length)throw new Error("Index out of range");return this.#Oe[e]}getTaskById(e){return this.#Oe.find(t=>t.id==e)??null}getLink(e){if(e<0||e>=this.#We.length)throw new Error("Index out of range");return this.#We[e]}indexOf(e){return this.#Oe.indexOf(e)}#Ze(){this.#je=!0;for(var e=0;e<100;e++)this.addEmptyTask();this.#je=!1}#Je(e,t){this.#_e.add(e,t)}#Qe(e){this.#_e.remove(e)}addEmptyTask(){var e=new cr(null,this.#g,this.#oe,()=>this.evaluatingDependencies);return this.#et(e,this.#Oe.length)}insertEmptyTask(e){var t=new cr(null,this.#g,this.#oe,()=>this.evaluatingDependencies);return this.#et(t,e)}addTask(e){if(this.#Ne.has(e))throw new Error("The task is already included in a list of tasks");return this.#et(e,this.#Oe.length)}insertTask(e,t){if(this.#Ne.has(t))throw new Error("The task is already included in a list of tasks");return this.#et(t,e)}#et(e,t){return this.#Ne.add(e),this.#Oe.splice(t,0,e),this.#tt(e),this.#je||this.#Xe||(this.taskAdded$.next({task:e}),this.#Ue.update(e),this.complexOperationFinished$.next()),e}getFirstTaskIndex(e){var t=null;for(let i of e){var r=this.indexOf(i);(null===t||t>r)&&(t=r)}return t}#tt(e){this.#Je(e,e.typeChanged$.subscribe(e=>{this.#rt(e)})),this.#Je(e,e.changed$.subscribe(e=>{this.#it(e.task)})),this.#Je(e,e.startTimeChanged$.subscribe(e=>{this.#st(e.task)})),this.#Je(e,e.endTimeChanged$.subscribe(e=>{this.#nt(e.task)})),this.#Je(e,e.collapsedChanged$.subscribe(e=>{this.#at(e.task)})),this.#Je(e,e.subtaskAdded$.subscribe(e=>{this.#ot(e.task)})),this.#Je(e,e.resourceAdding$.subscribe(e=>{this.#lt(e)}))}#ht(e){var t=this.#Oe.indexOf(e);if(t<0)throw new Error("Task is not included in the task sheet");return t}#it(e){"empty"!=e.type&&"summary"!=e.type||(this.#We=this.#We.filter(t=>t.from!=e&&t.to!=e)),this.taskChanged$.next({task:e}),this.#Ue.update(e),this.#Ye&&this.#Ge()}#st(e){this.#Ke.onTaskStartTimeChanged(e)}#nt(e){this.#Ke.onTaskEndTimeChanged(e)}#rt(e){if("empty"==e.oldType&&"empty"!=e.newType){var t=this.#dt(e.task);if(!t)return;"summary"==t.type?t.addSubtask(e.task):t.parent&&t.parent.addSubtask(e.task)}this.taskTypeChanged$.next(e)}#at(e){this.taskCollapsedChanged$.next({task:e})}#ot(e){this.#We=this.#We.filter(t=>!(t.from==e&&t.to==e.parent||t.to==e&&t.from==e.parent))}#lt(e){this.resourceAdding$.next(e)}#ct(e){var t=[...e];return t.sort((e,t)=>this.#Oe.indexOf(e)-this.#Oe.indexOf(t)),t}#ut(e){return this.getPreviousNonEmpty(e,e.level)}getLastNonEmpty(e=!0){for(var t=this.#Oe.length-1;t>=0;){var r=this.#Oe[t];if("empty"!=r.type&&(e||!r.hidden))return r;t--}return null}getPreviousNonEmpty(e,t){for(var r=this.#ht(e);;){if(--r<0)return null;if("empty"!=this.#Oe[r].type){if(null===t)return this.#Oe[r];if(this.#Oe[r].level<t)return null;if(this.#Oe[r].level==t)return this.#Oe[r]}}}#dt(e){var t=this.#ht(e);return t>0?this.#Oe[t-1]:null}getNextVisible(e){var t=this.#ht(e);for(t++;t<this.#Oe.length;t++)if(!this.#Oe[t].hidden)return this.#Oe[t];return null}getPreviousVisible(e){var t=this.#ht(e);for(t--;t>=0;t--)if(!this.#Oe[t].hidden)return this.#Oe[t];return null}getNextNonEmpty(e){for(var t=this.#ht(e);;){if(++t>=this.#Oe.length)return null;if("empty"!=this.#Oe[t].type)return this.#Oe[t]}}#gt(e){var t=this.#ht(e);return t<this.#Oe.length-1?this.#Oe[t+1]:null}#mt(e){var t=[],r=null,i=null;for(let n of e){var s=this.getTaskNumber(n);null!==r&&s-1==r||(i&&i.tasks.length>0&&t.push(i),i={tasks:[]}),r=s,"empty"!=n.type&&i.tasks.push(n)}return i&&!t.includes(i)&&i.tasks.length>0&&t.push(i),t}#pt(e){var t=null;for(let r of e)if(null===t)t=r.level;else if(t!=r.level)return!1;return!0}indent(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=this.#ut(i);if(s)for(let t of e.tasks)t.parent&&t.parent.removeSubtask(t),s.addSubtask(t)}this.complexOperationFinished$.next()}}outdent(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1];if(0!=i.level){var n=this.getPreviousNonEmpty(i,i.level-1);if(n){var a=this.getNextSiblings(s),o=[...e.tasks,...a];for(let e of o)e.parent.removeSubtask(e),n.parent&&n.parent.addSubtask(e)}}}this.complexOperationFinished$.next()}}getTaskNumber(e){return this.#Oe.indexOf(e)+1}getNextSibling(e){return this.getNextAtLevel(e,e.level)}getNextSiblings(e){for(var t=[];;){var r=this.getNextSibling(e);if(!r)break;t.push(r),e=r}return t}getNextAtLevel(e,t){for(var r=null,i=this.#Oe.indexOf(e)+1;i<this.#Oe.length;){var s=this.#Oe[i],n=s.level;if(n==t){r=s;break}if(n<t&&"empty"!=s.type)break;i++}return r}getLastDescendant(e){if(0==e.subtasksLength)return e;for(var t=null,r=null,i=0;i<e.subtasksLength;i++){var s=e.getSubtask(i),n=this.indexOf(s);(null===t||t<n)&&(t=n,r=s)}return this.getLastDescendant(r)}existsLinkBetween(e,t){return null!=this.#We.find(r=>r.from==e&&r.to==t||r.from==t&&r.to==e)}isValidTypeForLink(e){return"task"==e.type||"milestone"==e.type}wouldCreateCycle(e,t){var r=new Set,i=[t];for(r.add(t);i.length>0;){var s=i.shift();if(s===e)return!0;for(var n of this.#We)n.from!==s||r.has(n.to)||(r.add(n.to),i.push(n.to))}return!1}addLink(e,t,r,i){if(e==t)throw new Error("Cannot create a self link");if(this.existsLinkBetween(e,t))throw new Error("A link between the tasks already exists");if(!this.isValidTypeForLink(e))throw new Error("Unsupported task type for adding a link: "+e.type);if(!this.isValidTypeForLink(t))throw new Error("Unsupported task type for adding a link: "+t.type);if(e.isDescendantOf(t)||t.isDescendantOf(e))throw new Error("Cannot create a link between a task and its nested task");if(this.wouldCreateCycle(e,t))throw new Error("Cannot create a link that would create a cycle");var s=new gr(null,e,t,r,i);return this.#We.push(s),s.list=this,this.#Ke.evaluateLinkDependency(s),this.linkAdded$.next({link:s}),s}removeTask(e){var t=this.#Oe.indexOf(e);if(t<0)throw new Error("Task is not in the list of tasks");var r=this.#We.filter(t=>t.from==e||t.to==e);for(let e of r)this.removeLink(e);e.parent&&e.parent.removeSubtask(e),this.#Oe.splice(t,1),this.#Ne.delete(e),this.#Qe(e),this.taskRemoved$.next({task:e}),this.complexOperationFinished$.next()}removeTasks(e){for(let t of e)this.removeTask(t)}removeLink(e){var t=this.#We.indexOf(e);if(t<0)throw new Error("Link is not in the list of links");this.#We.splice(t,1),e.to.baseStartTime&&(e.to.startTime=e.to.baseStartTime),this.linkRemoved$.next({link:e})}moveUp(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1],n=this.#dt(i);if(n){n&&n.level>i.level&&(n=this.#ut(i));var a=this.getLastDescendant(s),o=this.indexOf(a),l=this.indexOf(i),h=this.#Oe.slice(l,o+1),d=this.indexOf(n);if(this.#Oe.splice(l,o-l+1),this.#Oe.splice(d,0,...h),"empty"!=n.type&&n.level!=i.level)for(let t of e.tasks)t.parent&&t.parent.removeSubtask(t),n.parent&&n.parent.addSubtask(t)}}this.complexOperationFinished$.next()}}moveDown(e){if(0!=e.length){var t=this.#ct(e),r=this.#mt(t);for(let e of r)if(this.#pt(e.tasks)){var i=e.tasks[0],s=e.tasks[e.tasks.length-1],n=this.getLastDescendant(s),a=this.getNextSibling(s);if(a||(a=this.#gt(n)),a){var o=this.indexOf(n),l=this.indexOf(i),h=this.#Oe.slice(l,o+1);this.#Oe.splice(l,o-l+1);var d=this.getLastDescendant(a),c=this.indexOf(d);this.#Oe.splice(c+1,0,...h);for(let t of e.tasks)t.parent&&"empty"!=a.type&&t.parent.removeSubtask(t),a.parent&&a.parent.addSubtask(t)}}this.complexOperationFinished$.next()}}get minStartTime(){var e=null;for(let t of this.#Oe)"empty"!=t.type&&t.startTime&&(null===e||t.startTime.getTime()<e.getTime())&&(e=new Date(t.startTime));return e}get maxEndTime(){var e=null;for(let t of this.#Oe)"empty"!=t.type&&t.endTime&&(null===e||t.endTime.getTime()>e.getTime())&&(e=new Date(t.endTime));return e}clear(){for(let e of this.#Oe)this.#Qe(e);this.#Oe=[],this.#Ne.clear(),this.#We=[],this.#Xe||this.complexOperationFinished$.next()}assign(e,t){this.#Xe=!0,this.clear();for(let t of e)this.addTask(t);for(let e of t)this.#We.push(e),e.list=this;this.#Xe=!1,this.#Ue.updateAll(),this.complexOperationFinished$.next()}getTasksUsingResource(e){var t=[];for(let r of this.#Oe)r.getResourceByResourceId(e.id)&&t.push(r);return t}renameTaskProperty(e,t){for(let r of this.#Oe)r.renameProperty(e,t)}}class yr{workingDays;nationalHolidays;shifts;startOfWeek;defaultLengthUnit="day";constructor(){this.workingDays=["monday","tuesday","wednesday","thursday","friday"],this.nationalHolidays=[],this.shifts=[],this.shifts.push(new br(new wr(8,0),new wr(12,0))),this.shifts.push(new br(new wr(13,0),new wr(17,0))),this.startOfWeek="sunday"}#vt(e){switch(e){case"sunday":return 0;case"monday":return 1;case"tuesday":return 2;case"wednesday":return 3;case"thursday":return 4;case"friday":return 5;case"saturday":return 6}}isWorkingDay(e){for(let t of this.nationalHolidays)if(Wt(t,e))return!1;for(let t of this.workingDays)if(this.#vt(t)==e.getDay())return!0;return!1}#ft(e){for(var t=0;t<this.shifts.length;t++){var r=this.shifts[t];if(r.contains(e))return r;var i=new Date(e);if(i.setHours(r.start.hour,r.start.minute,0,0),i.getTime()>=e.getTime())return r}return null}#yt(e,t){for(var r=this.shifts.length-1;r>=0;r--){var i=this.shifts[r];if(i.contains(e,t))return i;var s=new Date(e);if(s.setHours(i.end.hour,i.end.minute,0,0),s.getTime()<=e.getTime())return i}return null}moveToStartShift(e,t){for(var r=null;!this.isWorkingDay(e)||!(r=this.#ft(e));)e=Ot(e);return r.contains(e)&&t||(e=new Date(e)).setHours(r.start.hour,r.start.minute,0,0),e}moveToEndShift(e,t){var r=null;for(0==e.getHours()&&0==e.getMinutes()&&(e=Nt(e));!this.isWorkingDay(e)||!(r=this.#yt(e,!0));)e=Nt(e);return r.contains(e)&&t||(e=new Date(e)).setHours(r.end.hour,r.end.minute,0,0),e}getHoursPerDay(){var e=0;for(let t of this.shifts)e+=t.getLengthInMinutes();return e/60}isEndOfDay(e){var t=this.shifts[this.shifts.length-1];return t.end.hour==e.getHours()&&t.end.minute==e.getMinutes()}getEndOfWorkingDay(e){for(e=zt(e);!this.isWorkingDay(e);)e=Ot(e);var t=this.shifts[this.shifts.length-1];return e.setHours(t.end.hour,t.end.minute),e}#bt(e,t){if(!this.isWorkingDay(e))return 0;var r=0;for(let n of this.shifts){var i=new Date(e);i.setHours(n.start.hour),i.setMinutes(n.start.minute);var s=new Date(e);s.setHours(n.end.hour),s.setMinutes(n.end.minute),r+=jt(e,t,i,s)}return r/60}getHoursBetween(e,t){if(e.getTime()>t.getTime())return-this.getHoursBetween(t,e)||0;for(var r=0,i=new Date(e);;){if(Wt(i,t)){r+=this.#bt(i,t);break}var s=new Date(i);s.setHours(0,0,0),s.setDate(i.getDate()+1),r+=this.#bt(i,t),i=s}return r}getStartOfWeek(e){(e=new Date(e)).setHours(0,0,0,0);for(var t=this.#vt(this.startOfWeek);e.getDay()!=t;)(e=new Date(e)).setDate(e.getDate()-1);return e}addHours(e,t,r){var i=this.getHoursPerDay();if(t>0)for(;t>=i;){var s=Ot(e);t-=this.getHoursBetween(e,s),e=s}else if(t<0)for(;t<=-i;){var n=zt(e);n.getTime()==e.getTime()&&n.setDate(n.getDate()-1),t+=this.getHoursBetween(n,e),e=n}var a=Math.round(60*t);if(a>0||r&&0==a)for(e=this.moveToStartShift(e,!0);a>0;)e.setMinutes(e.getMinutes()+1),e=this.moveToStartShift(e,!0),a--;else if(a<0)for(e=this.moveToEndShift(e,!0);a<0;)e.setMinutes(e.getMinutes()-1,0),e=this.moveToEndShift(e,!0),a++;return e}}class br{start;end;constructor(e,t){this.start=e,this.end=t}contains(e,t){var r=60*this.start.hour+this.start.minute,i=60*this.end.hour+this.end.minute,s=60*e.getHours()+e.getMinutes();return(!t&&s>=r||!0===t&&s>r)&&i>s}getLengthInMinutes(){var e=0;return this.start.hour==this.end.hour?this.end.minute-this.start.minute:(e+=60-this.start.minute,this.end.hour-this.start.hour>1&&(e+=60*(this.end.hour-this.start.hour-1)),e+=this.end.minute)}}class wr{hour;minute;constructor(e,t){this.hour=e,this.minute=t}}class Tr{#wt;constructor(e){this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue(),i=r.contentTop,s=this.getContentBottom(e.height);t.beginPath(),t.rect(0,i,e.width,e.height-i),t.fillStyle=r.chart.content.backgroundColor,t.fill(),this.#Tt(e,t,s),this.#Ct(e,t,s),this.#wt.showGridLines$.getValue()&&(this.#xt(e,t,s),this.drawHorizontalGridLines(e,t))}#Tt(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=this.#wt.calendar,o=s.getCellStartTime(n),l=s.getCellStartX(o,n,i),h=this.#wt.theme$.getValue().contentTop;!(l>e.width);){var d=s.getAdd(o,1),c=s.getCellStartX(d,n,i),u=!1;"day"==s.unit&&(u=!a.isWorkingDay(o)),"hour"!=s.unit&&"minute"!=s.unit||(u=0==a.getHoursBetween(o,d)),u&&(t.beginPath(),t.rect(l,h,c-l,r-h),t.fillStyle=this.#wt.theme$.getValue().chart.content.nonWorkingTimeStyle,t.fill()),o=d,l=c}}#Ct(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[1],n=this.#wt.timeline.visibleStartTime$.getValue(),a=s.getCellStartTime(n),o=this.#wt.theme$.getValue().contentTop;;){var l=s.getCellStartX(a,n,i);if(l>e.width)break;t.beginPath(),t.moveTo(l+.5,o),t.lineTo(l+.5,r),t.strokeStyle=this.#wt.theme$.getValue().chart.content.tier2SeparatorLineStyle,t.setLineDash([2,2]),t.stroke(),a=s.getAdd(a,1)}t.setLineDash([])}#xt(e,t,r){for(var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=s.getCellStartTime(n),o=s.getCellStartX(a,n,i),l=this.#wt.theme$.getValue(),h=l.contentTop,d=l.chart.content.gridLineColor;!(o>e.width);)t.beginPath(),t.moveTo(o+.5,h),t.lineTo(o+.5,r),t.strokeStyle=d,t.stroke(),a=s.getAdd(a,1),o=s.getCellStartX(a,n,i)}}class Cr extends Tr{#kt;constructor(e){super(e),this.#kt=e}getContentBottom(e){return this.#kt.getContentBottom(e)}drawHorizontalGridLines(e,t){var r=this.#kt.theme$.getValue(),i=r.contentTop,s=r.chart.content.gridLineColor,n=r.rowHeight+1;i-=this.#kt.sheetScrollTop$.getValue();for(var a=0;a<this.#kt.list.length;a++){if(!this.#kt.list.getTask(a).hidden){var o=Math.floor(i)-.5;t.beginPath(),t.moveTo(0,o),t.lineTo(e.width,o),t.strokeStyle=s,t.stroke(),i+=n}}}}class xr{x=0;y=0;constructor(e,t){this.x=e,this.y=t}isWithin(e,t){return Math.abs(this.x-e.x)<=t&&Math.abs(this.y-e.y)<=t}isZero(){return 0==this.x&&0==this.y}clone(){return new xr(this.x,this.y)}scaled(e){return new xr(this.x*e,this.y*e)}toString(){return`${this.x};${this.y}`}static fromString(e){var t=e.split(";");return new xr(parseFloat(t[0]),parseFloat(t[1]))}moveToRaster(){return this.x=Math.floor(this.x)+.5,this.y=Math.floor(this.y)+.5,this}}class kr{x;y;width;height;constructor(e,t,r,i){this.x=e,this.y=t,this.width=r,this.height=i}contains(e){return e.x>=this.x&&e.y>=this.y&&e.x<=this.right&&e.y<=this.bottom}fullyContains(e){return this.x<=e.x&&this.y<=e.y&&this.bottom>=e.bottom&&this.right>=e.right}get middle(){return new xr(this.x+this.width/2,this.y+this.height/2)}get bottom(){return this.y+this.height}get right(){return this.x+this.width}clone(){return new kr(this.x,this.y,this.width,this.height)}equals(e){return this.x==e.x&&this.y==e.y&&this.height==e.height&&this.width==e.width}scaled(e){return new kr(this.x*e,this.y*e,this.width*e,this.height*e)}scaledAt(e){return new kr(this.x*e,this.y*e,this.width,this.height)}toString(){return`${this.x};${this.y};${this.width};${this.height}`}static fromString(e){var t=e.split(";");return new kr(parseFloat(t[0]),parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3]))}moveToRaster(){return this.x=Math.floor(this.x)+.5,this.y=Math.floor(this.y)+.5,this}}const Er="Arial";class Dr{name=Er;size=11;weight=null;italic=!1;toString(e){var t=this.name;return t.indexOf(" ")>0&&(t='"'+t+'"'),(this.italic?"italic ":"")+(this.weight?this.weight.toString()+" ":"")+`${this.size*e}pt ${t}`}static fromObject(e){var t=new Dr;return t.name=e.name,t.size=e.size,t.weight=e.weight,t.italic=e.italic,t}static from(e,t){var r=new Dr;return r.name=e??Er,r.size=t??11,r}clone(){var e=new Dr;return e.name=this.name,e.size=this.size,e.weight=this.weight,e.italic=this.italic,e}}class Sr{#Et;#Dt;get startDate(){return this.#Et}get endDate(){return this.#Dt}constructor(e,t){this.#Et=e,this.#Dt=t}}function $r(e){var t=e.measureText("gŇ");return t.fontBoundingBoxAscent+t.fontBoundingBoxDescent}function Rr(e,t,r,i,s,n=null,a=!1){var o=Mr(e,t,r.width),l=r.x,h=r.y,d=$r(e),c=o.measure.width;h=r.y+(r.height-d)/2,h+=o.measure.fontBoundingBoxAscent,"center"==i&&(l=r.x+(r.width-c)/2),"right"==i&&(l=r.right-c),e.textAlign="left",e.textBaseline="top",e.fillStyle=n??"#000000",e.fillText(o.text,l,h),a&&(e.beginPath(),e.moveTo(l,h+d-.26*d),e.lineTo(l+c,h+d-.26*d),e.stroke())}function Mr(e,t,r){e.textBaseline="top";var i=t.split(" "),s=i[0],n=!1;if(1==i.length)e.measureText(t).width>r&&(n=!0);else for(var a=1;a<i.length;a++){if(s+=" "+i[a],e.measureText(s).width>r){n=!0;break}}if(n)for(;;){var o=s+"...";if(e.measureText(o).width<=r){s=o;break}if(0==s.length){s="...";break}s=s.substring(0,s.length-1)}return{text:s,measure:e.measureText(s)}}class Lr{#wt;constructor(e){this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue().headerHeight,i=new kr(1,1,e.width,r);t.beginPath(),t.rect(i.x,i.y,i.width,i.height),t.fillStyle=this.#wt.theme$.getValue().chart.header.backgroundColor,t.fill(),t.beginPath(),t.moveTo(0,.5),t.lineTo(e.width+.5,.5),t.moveTo(0,r+1.5),t.lineTo(e.width+.5,r+1.5),t.strokeStyle=this.#wt.theme$.getValue().chart.header.cellBorderColor,t.stroke();var s=Math.floor((r+1)/2)+.5;t.beginPath(),t.moveTo(0,s),t.lineTo(e.width,s),t.stroke();var n=this.#wt.timeline.currentZoom;this.#St(e,n.axis[0],1),this.#St(e,n.axis[1],0)}#St(e,t,r){var i=e.getContext("2d"),s=this.#wt.timeline.visibleStartTime$.getValue(),n=t.getCellStartTime(s),a=this.#wt.timeline.currentZoom,o=this.#wt.settings.theme,l=o.chart.header,h=this.#wt.theme$.getValue().headerHeight,d=r*h/2+1,c=l.cellDividerPadding;i.beginPath();var u=t.getCellStartX(n,s,a);i.font=o.font.toString(1),i.fillStyle=l.textColor;for(var g=l.cellDividerColor??l.cellBorderColor;!(u>e.width);){i.moveTo(u+.5,d+c),i.lineTo(u+.5,d+h/2-c);var m=t.formatter(n);n=t.getAdd(n,1);var p=t.getCellStartX(n,s,a);Rr(i,m,new kr(u+5,d,p-u-10,h/2),"left",0,l.textColor),u=p}i.strokeStyle=g,i.stroke()}}class Ir{#kt;constructor(e){this.#kt=e}get rowHeight(){return this.#kt.theme$.getValue().rowHeight+1}getRowY(e){return this.#kt.getRowY(e)}getContentBottom(e){return this.#kt.getContentBottom(e)}drawRowHighlight(e,t,r,i){e.beginPath(),e.rect(0,r,t,i),e.fillStyle="rgba(0, 0, 0, 0.02)",e.fill()}}class Pr extends Ir{#$t;constructor(e){super(e),this.#$t=new Lr(e)}render(e){this.#$t.render(e)}}class Ar{#Rt;#Mt;#Lt;#wt;#It;#Pt;#At=null;#Ht=null;#Vt=!1;#Bt=!1;#T=new r;#Ft;#zt;#Ot;#Nt;#Wt;constructor(e,t,r,i,s){this.#Rt=t,this.#Lt=i,this.#wt=e,this.#It=s,this.#Pt={isMoving:!1,originalX:null,originalStart:null},this.#Ft=()=>this.#Ut(),this.#zt=e=>this.#jt(e),this.#Ot=e=>this.#Xt(e),this.#Nt=()=>this.#Yt(),this.#Wt=()=>this.#Kt(),this.#Rt.addEventListener("scroll",this.#Ft),this.#T.add(e.dividerResizing$.subscribe(e=>{this.#Bt=e,e||this.#Zt()})),this.#Rt.addEventListener("mousedown",this.#zt),this.#Rt.addEventListener("mousemove",this.#Ot),this.#Rt.addEventListener("mouseup",this.#Nt),this.#Rt.addEventListener("mouseleave",this.#Wt),this.#T.add(this.#wt.timeline.zoomIndex$.subscribe(()=>{this.#Gt()})),this.#T.add(this.#wt.timeline.visibleStartTime$.subscribe(()=>{this.#qt()})),this.#T.add(this.#wt.projectTimeline$.subscribe(()=>{this.#_t()})),this.#Zt(),this.#Mt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#Jt())}),this.#Mt.observe(this.#Rt)}#Jt(){this.#Qt()}#jt(e){var t=this.#wt.theme$.getValue();e.offsetY<=t.contentTop&&(this.#Pt.isMoving=!0,this.#Pt.originalX=e.offsetX,this.#Pt.originalStart=this.#wt.timeline.visibleStartTime$.getValue(),this.#Rt.style.cursor="grabbing")}#Xt(e){if(this.#Pt.isMoving){var t=this.#wt.timeline.currentZoom,r=t.axis[0],i=e.offsetX-this.#Pt.originalX,s=this.#er(r,t),n=new Date(this.#Pt.originalStart.getTime()-i*s);this.#tr(n),this.#Zt()}}#er(e,t){var r=this.#Pt.originalStart,i=e.getCellStartTime(r);return(e.getAdd(i,1).getTime()-i.getTime())/t.baseCellWidth}#Yt(){this.#rr()}#Kt(){this.#rr()}#tr(e){this.#Vt=!0,this.#wt.timeline.visibleStartTime$.next(e),this.#Vt=!1}#rr(){this.#Pt.isMoving=!1,this.#Rt.style.cursor="default";var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.timeline.visibleStartTime$.getValue();this.#tr(e.getCellStartTime(t)),this.#Zt(),this.#Qt()}#Qt(){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=this.#Rt.offsetWidth/e.baseCellWidth,s=Math.round(i/2);this.#At=t.getAdd(r,s)}#Gt(){null===this.#At&&this.#Qt();var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$,i=this.#Rt.offsetWidth/e.baseCellWidth,s=Math.round(-i/2),n=t.getCellStartTime(t.getAdd(this.#At,s));r.next(n),this.#Zt()}#qt(){this.#Vt||(this.#Qt(),this.#Zt())}#Zt(){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=this.#ir(),s=this.#sr(),n=t.getCellStartX(s,r,e)-t.getCellStartX(i,r,e),a=-t.getCellStartX(i,r,e),o=a+this.#Rt.clientWidth;o>n&&(n=o),this.#Lt.style.width=n+"px",this.#Rt.scrollLeft=a,this.#Ht=this.#Rt.scrollLeft}#ir(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue().startDate,r=new Date(t);r.setDate(r.getDate()-30);var i=e.getAdd(e.getCellStartTime(t),-3),s=e.getCellStartTime(r),n=this.#It.getMinStartTime();return n?(n=zt(n),n=e.getAdd(e.getCellStartTime(n),-3)):n=i,new Date(Math.min(i.getTime(),s.getTime(),n.getTime()))}#sr(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue().endDate,r=e.getAdd(e.getCellStartTime(t),3),i=this.#It.getMaxEndTime();return i?(i=zt(i),i=e.getAdd(e.getCellStartTime(i),3)):i=r,e.getAdd(new Date(Math.max(r.getTime(),i.getTime())),1)}handleResize(){this.#Zt()}#Ut(){if(!(this.#Bt||this.#wt.autoScrolling||null!==this.#Ht&&Math.abs(this.#Rt.scrollLeft-this.#Ht)<1)){var e=this.#wt.timeline.currentZoom,t=e.axis[0],r=this.#Rt.scrollLeft,i=Math.round(r/e.baseCellWidth),s=this.#ir();this.#tr(t.getAdd(s,i)),this.#Qt()}}#_t(){var e=this.#wt.timeline.currentZoom.axis[0],t=this.#wt.projectTimeline$.getValue(),r=new Date(t.startDate),i=Bt();i.getTime()>r.getTime()&&(r=i),r.setDate(r.getDate()-1),this.#tr(e.getCellStartTime(r)),this.#Zt()}destroy(){this.#T.unsubscribe(),this.#Mt.disconnect(),this.#Rt.removeEventListener("scroll",this.#Ft),this.#Rt.removeEventListener("mousedown",this.#zt),this.#Rt.removeEventListener("mousemove",this.#Ot),this.#Rt.removeEventListener("mouseup",this.#Nt),this.#Rt.removeEventListener("mouseleave",this.#Wt)}}class Hr extends Ar{constructor(e,t,r,i){super(e,t,r,i,{getMinStartTime:()=>e.list.minStartTime,getMaxEndTime:()=>e.list.maxEndTime})}}class Vr{listeners=[];observer=null;startWatching(e){this.observer=new MutationObserver(t=>{for(const r of t)Array.from(r.removedNodes).forEach(t=>{(t===e||t.contains(e))&&this.destroy()})}),this.observer.observe(document.body,{childList:!0,subtree:!0})}addDocumentListener(e,t){const r=t.bind(this);document.addEventListener(e,r),this.listeners.push({type:e,handler:r})}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null);for(const{type:e,handler:t}of this.listeners)document.removeEventListener(e,t);this.listeners=[]}}const Br=40;class Fr{#nr;#ar=null;#or=!1;#lr=0;#hr=0;#Ut;#dr;#cr;constructor(e,t,r){this.#nr=e,this.#Ut=t,this.#dr=r?.enableVertical??!1,this.#cr=r?.getContentTop??(()=>0)}start(){this.#or||(this.#or=!0,this.#ur())}stop(){this.#or=!1,null!==this.#ar&&(cancelAnimationFrame(this.#ar),this.#ar=null)}updateMousePosition(e,t){this.#lr=e,this.#hr=t}#ur(){if(this.#or){var e=this.#nr.getBoundingClientRect(),t=this.#gr(this.#lr,e.left,e.right),r=0;if(this.#dr){var i=e.top+this.#cr();r=this.#gr(this.#hr,i,e.bottom)}0===t&&0===r||this.#Ut(t,r),this.#ar=requestAnimationFrame(()=>this.#ur())}}#gr(e,t,r){return e<t?-this.#mr(t-e+Br):e<t+Br?-this.#mr(t+Br-e):e>r?this.#mr(e-r+Br):e>r-Br?this.#mr(e-(r-Br)):0}#mr(e){return Math.min(10,Math.ceil(e/Br*10))}}var zr=null;function Or(){return null===zr&&(zr=function(){if("undefined"==typeof document)return 17;var e=document.createElement("div");e.style.visibility="hidden",e.style.overflow="scroll",e.style.position="absolute",e.style.top="-9999px",e.style.width="100px",e.style.height="100px",document.body.appendChild(e);var t=document.createElement("div");t.style.width="100%",t.style.height="100%",e.appendChild(t);var r=e.offsetHeight-t.offsetHeight;return document.body.removeChild(e),Math.max(r,6)}()),zr}class Nr extends Vr{#pr=[];#wt;#Rt;#vr=null;#T=new r;#fr;#yr;#br;#wr;#Tr;#Cr;operationComplete$=new e;redraw$=new e;constructor(e,t){super(),this.startWatching(t),this.#wt=e}get chartElement(){return this.#Rt}addHandler(e){this.#pr.push(e)}addSubscription(e){this.#T.add(e)}wireHandlers(){for(let e of this.#pr)this.#T.add(e.operationComplete$.subscribe(()=>{this.operationComplete$.next()}));this.#T.add(this.#wt.chartRedrawn$.subscribe(()=>{for(let e of this.#pr)e.onRedrawn()})),this.#T.add(this.#wt.chartBackgroundRedrawn$.subscribe(()=>{for(let e of this.#pr)e.onBackgroundRedrawn()}))}getMousePosition(e){return new xr(e.offsetX,e.offsetY)}init(e,t){this.#Rt=e,this.#vr=this.createAutoScroll(e);for(let e of this.#pr)e.init(t);this.#fr=e=>{this.#xr(e)},this.#yr=e=>{this.#kr(e)},this.#br=e=>{this.#Er(e)},this.#wr=e=>{this.#Dr(e)},this.#Tr=e=>{this.#Sr(e)},this.#Cr=e=>{this.#$r(e)},e.addEventListener("mousedown",this.#fr,!1),e.addEventListener("mouseup",this.#yr,!1),e.addEventListener("mousemove",this.#br,!1),e.addEventListener("mouseleave",this.#wr,!1),this.registerKeydownListener(e),e.addEventListener("contextmenu",this.#Tr,!1),e.addEventListener("dblclick",this.#Cr,!1),this.addDocumentListener("mousemove",this.#Rr),this.addDocumentListener("mouseup",this.#Mr)}createAutoScroll(e){return new Fr(e,(e,t)=>this.onAutoScroll(e,t))}onAutoScroll(e,t){if(0!==e){var r=this.#wt.timeline.currentZoom,i=r.axis[0],s=this.#wt.timeline.visibleStartTime$.getValue(),n=i.getCellStartTime(s),a=(i.getAdd(n,1).getTime()-n.getTime())/r.baseCellWidth,o=new Date(s.getTime()+e*a);this.#wt.timeline.visibleStartTime$.next(o)}}registerKeydownListener(e){this.addDocumentListener("keydown",e=>{this.handleKeyDown(e)})}async handleKeyDown(e){await this.#Lr(e,async t=>await t.onKeyDown(e.key,e))}#Ir(){return this.#pr.find(e=>e.isInOperation)??null}async#Lr(e,t){var r=this.#Ir(),i=!1;if(r){var s=await t(r);i=i||s.needsRedraw}for(let n of this.#pr)if((!r||n.alwaysHandleEvents)&&(!n.ignoreWhenCannotEdit||this.#wt.canEdit)&&(!("button"in e)||2!=e.button||!n.ignoreRightButton)){s=await t(n);if(i=i||s.needsRedraw,s.handled)break}i&&this.redraw$.next()}async#Er(e){e.preventDefault(),this.#vr?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);await this.#Lr(e,async r=>await r.onMouseMove(t,e))}async#Dr(e){e.preventDefault();var t=this.getMousePosition(e);await this.#Lr(e,async r=>await r.onMouseLeave(t,e))}async#xr(e){if(e.preventDefault(),!this.#Pr(e)){this.onBeforeMouseDown();var t=this.getMousePosition(e),r=e.ctrlKey;await this.#Lr(e,async i=>await i.onMouseDown(t,r,e)),this.#Ir()&&(this.#wt.autoScrolling=!0,this.#vr?.updateMousePosition(e.clientX,e.clientY),this.#vr?.start())}}onBeforeMouseDown(){}async#kr(e){e.preventDefault(),this.#Ar();var t=this.getMousePosition(e),r=e.ctrlKey;await this.#Lr(e,async i=>await i.onMouseUp(t,r,e))}#Sr(e){e.preventDefault();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onContextMenu(t,e)),this.onAfterContextMenu(t,e)}onAfterContextMenu(e,t){}#$r(e){e.preventDefault();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDblClick(t,e))}#Mr(e){e.preventDefault(),this.#Ar();var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDocumentMouseUp(t,e))}#Rr(e){e.preventDefault(),this.#vr?.updateMousePosition(e.clientX,e.clientY);var t=this.getMousePosition(e);this.#Lr(e,async r=>r.onDocumentMouseMove(t,e))}#Ar(){this.#vr?.stop(),this.#wt.autoScrolling=!1}destroy(){this.#T.unsubscribe(),this.#Rt&&(this.#Rt.removeEventListener("mousedown",this.#fr,!1),this.#Rt.removeEventListener("mouseup",this.#yr,!1),this.#Rt.removeEventListener("mousemove",this.#br,!1),this.#Rt.removeEventListener("mouseleave",this.#wr,!1),this.#Rt.removeEventListener("contextmenu",this.#Tr,!1),this.#Rt.removeEventListener("dblclick",this.#Cr,!1)),super.destroy()}clear(){this.#Ar();for(let e of this.#pr)e.clear()}#Pr(e){return function(e,t){var r=t.getBoundingClientRect();return e.clientY-r.top>=r.height-Or()}(e,this.#Rt)}}class Wr{handled;needsRedraw;static handled=new Wr(!0,!0);static notHandled=new Wr(!1,!1);static notHandledNeedsRedraw=new Wr(!1,!0);constructor(e,t){this.handled=e,this.needsRedraw=t}}class Ur{#wt;ignoreRightButton=!0;ignoreWhenCannotEdit=!0;alwaysHandleEvents=!1;canvas;operationComplete$=new e;get canEdit(){return this.#wt.canEdit}constructor(e){this.#wt=e}#Hr=!1;set isInOperation(e){this.#Hr&&!e&&this.operationComplete$.next(),this.#Hr=e}get isInOperation(){return this.#Hr}async onMouseMove(e,t){return Wr.notHandled}async onMouseDown(e,t,r){return Wr.notHandled}async onMouseUp(e,t,r){return Wr.notHandled}async onKeyDown(e,t){return this.isInOperation&&"Escape"===t.key?(this.isInOperation=!1,this.setCursor("default"),Wr.handled):Wr.notHandled}async onMouseLeave(e,t){return Wr.notHandled}onContextMenu(e,t){return Wr.notHandled}onDblClick(e,t){return Wr.notHandled}onDocumentMouseMove(e,t){return Wr.notHandled}onDocumentMouseUp(e,t){return Wr.notHandled}clear(){}init(e){this.canvas=e}onRedrawn(){}onBackgroundRedrawn(){}dateToX(e){var t=this.#wt.timeline.currentZoom,r=t.axis[0],i=this.#wt.timeline.visibleStartTime$.getValue();return Math.floor(r.getX(e,i,t))}getCellAt(e){var t=this.#wt.timeline.currentZoom;return e.x/t.baseCellWidth}getCellEndAligned(e){var t=this.getCellAt(e);return"day"==this.#wt.timeline.currentZoom.axis[0].unit?Math.round(2*t)/2:Math.round(t)}getEndTimeAligned(e){var t=this.#wt.timeline.currentZoom.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue(),i=t.getAdd(r,Math.floor(e));if("day"==t.unit&&(e-Math.floor(e)>0&&this.#wt.calendar.isWorkingDay(i))){var s=this.#wt.calendar.getHoursPerDay();i=this.#wt.calendar.addHours(i,s/2)}return i}cellToDate(e){var t=this.#wt.timeline.currentZoom.axis[0],r=this.#wt.timeline.visibleStartTime$.getValue();return t.getAdd(r,Math.round(e))}setCursor(e){this.#wt.chartCursor$.next(e)}}class jr{borderColor=null;color1="#aabbff";color2="#6677dd";highlightColor="rgba(50, 70, 200, 0.4)";static create(e){return Object.assign(new this,e)}}function Xr(e,t){if("number"==typeof e)return t[e%t.length];var r=t[0];return Object.assign(Object.create(Object.getPrototypeOf(r)),r,e)}class Yr{backgroundColor="#f8f8f8";cellBorderColor="#a0a0a0";cellDividerColor=null;textColor="#000000"}class Kr{header=new Yr;backgroundColor="#ffffff";textColor="#000000";hoverBackgroundColor="#f8f8f8";selectedBackgroundColor="#f8f8f8";selectedRowHeaderColor="#e8e8e8";focusBorderColor="#4a7cf6";highlightBorderColor="#647ee8";treeIconColor="#606060";editorBackgroundColor="#ffffff";editorTextColor="#000000";scrollbarThumbColor="#c1c1c1";scrollbarTrackColor="#f1f1f1";gridLineColor="#e0e0e0";colorScheme="light"}class Zr{backgroundColor="#f8f8f8";cellBorderColor="#a0a0a0";cellDividerColor=null;cellDividerPadding=0;textColor="#000000"}class Gr{backgroundColor="#ffffff";taskHeight=16;taskBorderRadius=0;taskColors;nonWorkingTimeStyle="#f8f8f8";tier2SeparatorLineStyle="#d0d0d0";gridLineColor="#f0f0f0";tooltipFont=Dr.from(null,10);tooltipTextColor="#606060";tooltipBackgroundColor1="#ffffff";tooltipBackgroundColor2="#f4f4f4";tooltipBorderColor="#606060";todayLineColor="#555555";todayLineWidth=1;todayLineStyle="dotted";markerLineColor="#555555";markerLineWidth=1;markerLineStyle="dotted";markerLabelColor="#555555";markerLabelFont=Dr.from(null,9);taskLabelPosition="none";taskLabelContent="name";taskLabelColor="#333333";taskLabelFont=Dr.from(null,10);taskLabelPadding=4;taskLabelOutsideMargin=6;constructor(){this.taskColors=[new jr,jr.create({color1:"#ffcccc",color2:"#dd9999",highlightColor:"rgba(200, 70, 70, 0.4)"}),jr.create({color1:"#bbeebb",color2:"#88cc88",highlightColor:"rgba(70, 160, 70, 0.4)"}),jr.create({color1:"#f8f8aa",color2:"#e8e899",highlightColor:"rgba(180, 180, 50, 0.4)"}),jr.create({color1:"#ddbbff",color2:"#bb99dd",highlightColor:"rgba(140, 90, 180, 0.4)"}),jr.create({color1:"#ffd8a8",color2:"#eebb88",highlightColor:"rgba(180, 130, 60, 0.4)"}),jr.create({color1:"#a8e8e8",color2:"#77cccc",highlightColor:"rgba(60, 160, 160, 0.4)"}),jr.create({color1:"#ffbbdd",color2:"#ee99bb",highlightColor:"rgba(200, 80, 140, 0.4)"})]}}class qr{header=new Zr;content=new Gr}class _r{font=new Dr;rowHeight=30;headerHeight=50;get contentTop(){return this.headerHeight+2}sheet=new Kr;chart=new qr}class Jr extends jr{progressColor1="#7788cc";progressColor2="#223399";progressHighlightColor="rgba(50, 70, 200, 0.4)";separatorColor="#6677dd";linkLineColor="#6677dd";linkArrowColor="#6677dd"}class Qr extends Gr{taskProgressHeight=16;summaryHeight=16;summaryColor1="#e0e0e0";summaryColor2="#b0b0b0";summaryMarkColor1="#e0e0e0";summaryMarkColor2="#808080";summaryProgressHeight=16;summaryProgressColor1="#a0a0a0";summaryProgressColor2="#707070";summaryMarkProgressColor1="#a0a0a0";summaryMarkProgressColor2="#404040";summaryBorderColor=null;summaryMarkWidth=14;summaryMarkType="half";summaryHighlightColor="rgba(70, 70, 70, 0.4)";milestoneSize=16;milestoneColor1="#b0b0b0";milestoneColor2="#606060";milestoneBorderColor=null;milestoneHighlightColor="rgba(50, 50, 50, 0.5)";connectorDotRadius=7;connectorDotColor="#4a90d9";connectorDotBorderColor="#2a6ab0";connectorDotHoverColor="#2a6ab0";linkLineStyle="sharp";linkFromMilestoneLineColor="#909090";linkFromMilestoneArrowColor="#909090";baselineColor="#d8d8d8";baselineHeight=6;baselineSummaryHeight=8;baselineMilestoneSize=8;baselineOffset=3;baselineBorderRadius=1;criticalTaskBorderColor="#cc0000";criticalTaskBorderWidth=2;criticalMilestoneBorderColor="#cc0000";criticalSummaryBorderColor="#cc0000";constraintFixedColor="#cc4444";constraintAlapColor="#888888";constraintBoundaryColor="#4a7cf6";summaryLabelPosition="none";summaryLabelContent="name";summaryLabelColor="#333333";milestoneLabelPosition="none";milestoneLabelContent="name";milestoneLabelColor="#333333";constructor(){super(),this.taskColors=[new Jr,Jr.create({color1:"#ffcccc",color2:"#dd9999",progressColor1:"#eeaaaa",progressColor2:"#cc7777",separatorColor:"#cc7777",linkLineColor:"#cc7777",linkArrowColor:"#cc7777"}),Jr.create({color1:"#bbeebb",color2:"#88cc88",progressColor1:"#88cc88",progressColor2:"#55aa55",separatorColor:"#55aa55",linkLineColor:"#55aa55",linkArrowColor:"#55aa55"}),Jr.create({color1:"#f8f8aa",color2:"#e8e899",progressColor1:"#e8e899",progressColor2:"#d0d077",separatorColor:"#cccc66",linkLineColor:"#cccc66",linkArrowColor:"#cccc66"}),Jr.create({color1:"#ddbbff",color2:"#bb99dd",progressColor1:"#cc99ee",progressColor2:"#aa77cc",separatorColor:"#aa77cc",linkLineColor:"#aa77cc",linkArrowColor:"#aa77cc"}),Jr.create({color1:"#ffd8a8",color2:"#eebb88",progressColor1:"#eebb88",progressColor2:"#cc9966",separatorColor:"#cc9966",linkLineColor:"#cc9966",linkArrowColor:"#cc9966"}),Jr.create({color1:"#a8e8e8",color2:"#77cccc",progressColor1:"#77cccc",progressColor2:"#55aaaa",separatorColor:"#55aaaa",linkLineColor:"#55aaaa",linkArrowColor:"#55aaaa"}),Jr.create({color1:"#ffbbdd",color2:"#ee99bb",progressColor1:"#ee99bb",progressColor2:"#cc7799",separatorColor:"#cc7799",linkLineColor:"#cc7799",linkArrowColor:"#cc7799"})]}}class ei extends qr{constructor(){super(),this.content=new Qr}}class ti extends _r{constructor(){super(),this.chart=new ei}}function ri(e,t){switch(e){case"task":return t.taskHeight;case"milestone":return t.milestoneSize;case"summary":return t.summaryHeight;default:return 0}}function ii(e,t,r){var i=t.theme$.getValue(),s=t.sheetScrollTop$.getValue()+e.y-i.contentTop;if(s<0)return null;for(var n=0,a=0;a<t.list.length;a++){var o=t.list.getTask(a);if(!o.hidden){var l=n+i.rowHeight+1;if(s>=n&&s<l)return!r||r(o)?o:null;n=l}}return null}class si extends Ur{#kt;#Vr;#Br;constructor(e,t,r){super(e),this.#kt=e,this.#Vr=t,this.#Br=r}getTaskRowAt(e){return ii(e,this.#kt)}getTaskAt(e){var t=this.getTaskRowAt(e);if(t){var r=null;if(!this.containsVertically(t,e))return null;var i=this.#kt.theme$.getValue(),s=0,n=0;switch(t.type){case"empty":return null;case"task":var a=this.getTaskPartAt(t,e);if(!a)return null;r=a.taskPart,s=a.x1,n=a.x2;break;case"milestone":var o=this.dateToX(t.endTime),l=i.chart.content.milestoneSize;if(s=o-l/2,n=o+l/2,!(e.x>=s&&e.x<=n))return null;break;case"summary":if(s=this.dateToX(t.startTime),n=this.dateToX(t.endTime),!(e.x>=s&&e.x<=n))return null}return{task:t,taskPart:r,x1:s,x2:n}}return null}getShapeHeight(e){var t=this.#kt.theme$.getValue();return ri(e.type,t.chart.content)}containsVertically(e,t){var r=this.getShapeHeight(e),i=this.getRowY(e)+(this.#kt.theme$.getValue().rowHeight+1)/2-r/2;return t.y>=i&&t.y<i+r}getTaskPartAt(e,t,r){for(var i=0;i<e.partsLength;i++){var s=e.getPart(i),n=this.dateToX(s.startTime),a=this.dateToX(s.endTime);if(r=r??0,t.x>=n&&t.x<=a+r)return{taskPart:s,x1:n,x2:a}}return null}getRowY(e){return this.#kt.getRowY(e)}drawTaskProgressHighlight(e,t,r){var i=this.canvas.getContext("2d");this.#Vr.drawTaskProgressHighlight(i,e,t,r)}drawTaskHighlightX1X2(e,t,r){var i=this.canvas.getContext("2d");this.#Vr.drawTaskHighlightX1X2(i,e,t,r)}drawTaskHighlight(e){var t=this.canvas.getContext("2d");this.#Vr.drawTaskHighlight(t,e)}drawTooltip(e,t,r,i){this.#Br.drawTooltip(this.canvas,e,t,r,i)}}class ni extends si{startX=0;lastP=new xr(0,0);target=null;dragCursor="all-scroll";enableHoverDetection=!1;hoverCursor="ew-resize";constructor(e,t,r){super(e,t,r)}onDragStart(e,t){}async onMouseMove(e,t){if(this.isInOperation)return this.lastP=e,Wr.handled;if(this.enableHoverDetection){var r=this.hitTest(e);if(r)return this.target=r,this.setCursor(this.hoverCursor),Wr.handled;this.target&&(this.target=null,this.setCursor("default"))}return Wr.notHandled}async onMouseDown(e,t,r){if(0!==r.button||this.isInOperation)return Wr.notHandled;var i=this.hitTest(e);return i?(this.target=i,this.isInOperation=!0,this.startX=e.x,this.lastP=e,this.onDragStart(i,e),this.setCursor(this.dragCursor),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,this.setCursor("default"),this.onDragEnd(this.target,e),Wr.handled):Wr.notHandled}onRedrawn(){this.isInOperation&&this.target&&this.onDragDraw(this.target)}}class ai extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e,this.dragCursor="crosshair"}hitTest(e){var t=this.getTaskRowAt(e);if(!t)return null;if("empty"!=t.type&&"task"!=t.type)return null;for(var r=0;r<t.partsLength;r++){var i=t.getPart(r),s=this.dateToX(i.startTime),n=this.dateToX(i.endTime);if(e.x>=s&&e.x<=n)return null}return{task:t,startCell:this.getCellAt(e)}}onDragEnd(e,t){var r=this.#Fr(t);r&&r.length.value>0&&e.task.addPart(r.startTime,r.length)}onDragDraw(e){this.drawTaskHighlightX1X2(e.task,this.startX,this.lastP.x);var t=this.#Fr(this.lastP);if(t){var r=this.#kt.locale$.getValue(),i=[];i.push({name:r.labels.start,value:Kt(t.startTime,r.language)}),i.push({name:r.labels.end,value:Kt(t.endTime,r.language)}),i.push({name:r.labels.length,value:t.length.toString()}),this.drawTooltip([e.task],this.startX,"empty"==e.task.type?r.tooltips.addTask:r.tooltips.addTaskPart,i)}}#Fr(e){var t=this.target,r=Math.round(t.startCell),i=this.getCellEndAligned(e);if(i<=r)return null;var s=this.cellToDate(t.startCell),n=this.getEndTimeAligned(i);if(s=this.#kt.calendar.moveToStartShift(s,!0),n=this.#kt.calendar.moveToEndShift(n,!0),s.getTime()>=n.getTime())return null;var a=t.task.length?.unit??"day";return{startTime:s,endTime:n,length:rr.getLength(s,n,a,this.#kt.calendar)}}}class oi extends si{#kt;#zr=null;dblClick$=new e;contextMenu$=new e;constructor(e,t,r){super(e,t,r),this.ignoreRightButton=!1,this.ignoreWhenCannotEdit=!1,this.#kt=e}async onMouseMove(e,t){var r=this.getTaskRowAt(e);return r!=this.#zr&&(this.#zr=r,this.#kt.chartTaskHover$.next(r)),Wr.notHandled}async onMouseDown(e,t,r){return Wr.notHandled}async onMouseUp(e,t,r){return Wr.notHandled}async onKeyDown(e,t){return Wr.notHandled}async onMouseLeave(e,t){return this.#zr=null,this.#kt.chartTaskHover$.next(null),Wr.notHandled}onContextMenu(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getTaskAt(e);return r?(this.contextMenu$.next({mouseEvent:t,task:r.task}),Wr.handled):Wr.notHandled}onDblClick(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getTaskAt(e);return r?(this.dblClick$.next(r.task),Wr.handled):Wr.notHandled}}class li extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e}hitTest(e){var t=this.getTaskAt(e);return t&&"task"==t.task.type?t:null}onDragEnd(e,t){var r=this.#Fr(t),i=e.task,s=e.taskPart,n=i.indexOf(s);0==n?i.startTime=r.startTime:n>0&&(s.startTime=r.startTime)}onDragDraw(e){var t=this.lastP.x-this.startX;this.drawTaskHighlightX1X2(e.task,e.x1+t,e.x2+t);var r=this.#kt.locale$.getValue(),i=this.#Fr(this.lastP),s=[];s.push({name:r.labels.start,value:Kt(i.startTime,r.language)}),this.drawTooltip([e.task],this.startX,1==e.task.partsLength?r.tooltips.moveTask:r.tooltips.moveTaskPart,s)}#Fr(e){var t=e.x-this.startX,r=this.getCellAt(new xr(this.target.x1+t,e.y));return{startTime:this.cellToDate(r)}}}class hi extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e,this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getTaskRowAt(e);if(t){if(!this.containsVertically(t,e))return null;if("task"==t.type){var r=this.getTaskPartAt(t,e,3);if(!r)return null;if(Math.abs(e.x-r.x2)<=3)return{task:t,taskPart:r.taskPart,x1:r.x1,x2:r.x2,deltaX:e.x-r.x2}}}return null}onDragEnd(e,t){var r=this.#Fr(t);r.length.value>0?e.taskPart.endTime=r.endTime:e.taskPart.length=new rr(r.lengthUnit,0)}onDragDraw(e){var t=this.lastP.x-this.startX-e.deltaX,r=e.x1,i=e.x2+t;this.drawTaskHighlightX1X2(e.task,r,i);var s=this.#kt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];a.push({name:s.labels.end,value:Kt(n.endTime,s.language)}),a.push({name:s.labels.length,value:n.length.toString()});var o=e.task;this.drawTooltip([e.task],this.startX,1==o.partsLength?s.tooltips.resizeTask:s.tooltips.resizeTaskPart,a)}#Fr(e){var t=this.target,r=this.lastP.x-this.startX-t.deltaX,i=t.x2+r,s=this.getCellEndAligned(new xr(i,e.y)),n=this.getEndTimeAligned(s);n=this.#kt.calendar.moveToEndShift(n,!0);var a=t.task.length?.unit??"day";return{endTime:n,length:rr.getLength(t.taskPart.startTime,n,a,this.#kt.calendar),lengthUnit:a}}}class di extends ni{#kt;constructor(e,t,r){super(e,t,r),this.#kt=e}hitTest(e){var t=this.getTaskAt(e);return t&&"milestone"==t.task.type?t:null}onDragEnd(e,t){var r=this.#Fr(t);e.task.startTime=r.startTime}onDragDraw(e){var t=this.lastP.x-this.startX,r=e.x1+t,i=(e.x2+t+r)/2;this.#Or(i,e);var s=this.#kt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];a.push({name:s.labels.start,value:Kt(n.startTime,s.language)}),a.push({name:s.labels.end,value:Kt(n.startTime,s.language)}),this.drawTooltip([e.task],this.startX,s.tooltips.moveMilestone,a)}#Fr(e){var t=e.x-this.startX,r=(this.target.x1+this.target.x2)/2+t,i=this.getCellAt(new xr(r,e.y)),s=this.cellToDate(i),n=this.#kt.timeline.currentZoom.axis[0];if("minute"!=n.unit&&"hour"!=n.unit){var a=this.#kt.calendar.getHoursPerDay();s=this.#kt.calendar.addHours(s,-a)}return{startTime:s}}#Or(e,t){var r=this.canvas.getContext("2d"),i=t.task,s=this.getRowY(i),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.milestoneSize;s=s+a/2-o/2,e-=o/2,r.beginPath(),r.moveTo(e,s+o/2),r.lineTo(e+o/2,s),r.lineTo(e+o,s+o/2),r.lineTo(e+o/2,s+o),r.lineTo(e,s+o/2),r.fillStyle="rgba(100, 120, 200, 0.3)",r.fill()}}function ci(e,t,r,i){return null!=function(e,t,r,i){var s=function(e,t,r){var i=((r.x-e.x)*(t.x-e.x)+(r.y-e.y)*(t.y-e.y))/((t.x-e.x)*(t.x-e.x)+(t.y-e.y)*(t.y-e.y));if(i<0||i>1)return null;return i}(e,t,i);if(null===s||s<0||s>1)return null;var n=Math.pow(i.x-e.x-s*(t.x-e.x),2)+Math.pow(i.y-e.y-s*(t.y-e.y),2);if(n>1/4*r*r)return null;return new xr(e.x+(t.x-e.x)*s,e.y+(t.y-e.y)*s)}(e,t,r,i)}function ui(e,t,r="#ffffff"){e.lineWidth=1,e.beginPath(),e.roundRect(t.x-Math.ceil(3.5)+.5,t.y-Math.ceil(3.5)+.5,7,7,2),e.fillStyle=r,e.fill(),e.strokeStyle="#606060",e.stroke()}function gi(e,t,r,i){var s=e.createLinearGradient(t.x,t.y,t.x,t.bottom);return s.addColorStop(0,r),s.addColorStop(1,i),s}function mi(e,t,r){r>0?e.roundRect(t.x,t.y,t.width,t.height,r):e.rect(t.x,t.y,t.width,t.height)}function pi(e,t,r,i=0){e.beginPath(),mi(e,t,i),e.strokeStyle=r,e.stroke()}class vi{#kt;constructor(e){this.#kt=e}get rowHeight(){return this.#kt.theme$.getValue().rowHeight+1}getCoords(e){var t,r,i=this.#kt.timeline.currentZoom,s=i.axis[0],n=this.#kt.timeline.visibleStartTime$.getValue(),a=this.#kt.theme$.getValue();switch(e.type){case"finishToStart":case"finishToFinish":t=Math.floor(s.getX(e.from.endTime,n,i)),"milestone"==e.from.type&&(t+=a.chart.content.milestoneSize/2);break;case"startToStart":case"startToFinish":t=Math.floor(s.getX(e.from.startTime,n,i)),"milestone"==e.from.type&&(t-=a.chart.content.milestoneSize/2)}switch(e.type){case"finishToStart":case"startToStart":r=Math.floor(s.getX(e.to.startTime,n,i)),"milestone"==e.to.type&&(r-=a.chart.content.milestoneSize/2);break;case"finishToFinish":case"startToFinish":r=Math.floor(s.getX(e.to.endTime,n,i)),"milestone"==e.to.type&&(r+=a.chart.content.milestoneSize/2)}var o,l=this.#kt.getRowY(e.from)+this.rowHeight/2,h=this.#kt.list.indexOf(e.from)<this.#kt.list.indexOf(e.to)?1:-1;switch(e.type){case"finishToStart":case"startToFinish":var d=this.#Nr(e.to,a);o=h>0?this.#kt.getRowY(e.to)+this.rowHeight/2-d/2:this.#kt.getRowY(e.to)+this.rowHeight/2+d/2;break;default:o=this.#kt.getRowY(e.to)+this.rowHeight/2}return{x1:t,y1:l,x2:r,y2:o,sign:h,type:e.type}}#Nr(e,t){return ri(e.type,t.chart.content)||t.chart.content.taskHeight}}class fi extends si{#kt;#Wr;#Ur=null;#jr=null;constructor(e,t,r){super(e,t,r),this.#kt=e,this.#Wr=new vi(e)}async onMouseDown(e,t,r){for(var i=0;i<this.#kt.list.linksLength;i++){var s=this.#kt.list.getLink(i);if(!s.from.hidden&&!s.to.hidden){var n=this.#Wr.getCoords(s);if(this.#Xr(n,e,s))return this.#Ur=s,this.#jr=n,this.isInOperation=!0,Wr.handled}}return this.#Ur=null,this.#jr=null,Wr.notHandled}#Xr(e,t,r){for(var i=this.#Yr(e,r),s=0;s<i.length-1;s++)if(ci(i[s],i[s+1],5,t))return!0;return!1}#Yr(e,t){var r=e.x1,i=e.y1,s=e.x2,n=e.y2;switch(t.type){case"finishToStart":var a=Math.max(s,r+10);return[new xr(r,i),new xr(a,i),new xr(a,n)];case"startToFinish":a=Math.min(s,r-10);return[new xr(r,i),new xr(a,i),new xr(a,n)];case"startToStart":a=Math.min(r,s)-10;return[new xr(r,i),new xr(a,i),new xr(a,n),new xr(s,n)];case"finishToFinish":a=Math.max(r,s)+10;return[new xr(r,i),new xr(a,i),new xr(a,n),new xr(s,n)]}return[]}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,Wr.handled):Wr.notHandled}async onKeyDown(e,t){return this.#Ur&&tr(t)?(this.#kt.list.removeLink(this.#Ur),this.#Ur=null,this.#jr=null,Wr.handled):Wr.notHandled}onRedrawn(){if(this.#Ur){this.#jr=this.#Wr.getCoords(this.#Ur);var e=this.#jr,t=this.canvas.getContext("2d");ui(t,new xr(e.x1,e.y1)),ui(t,new xr(e.x2,e.y2))}}}class yi{#kt;constructor(e){this.#kt=e}getTotalWidth(e){for(var t=this.#kt.timeline.currentZoom,r=t.axis[0],i=this.#kt.timeline.visibleStartTime$.getValue(),s=0,n=0;n<e.partsLength;n++){var a=e.getPart(n),o=r.getX(a.startTime,i,t);s+=r.getX(a.endTime,i,t)-o}return s}getProgressAt(e,t){for(var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=this.getTotalWidth(e),a=0,o=0;o<e.partsLength;o++){var l=e.getPart(o),h=i.getX(l.startTime,s,r),d=i.getX(l.endTime,s,r);if(h>=t)break;t>=Math.floor(h)&&t<=Math.ceil(d)?a+=(t-h)/n:a+=(d-h)/n}return Math.round(100*a)}getProgressX(e,t){for(var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=t/100*this.getTotalWidth(e),a=null,o=0;o<e.partsLength;o++){var l=e.getPart(o),h=i.getX(l.startTime,s,r),d=i.getX(l.endTime,s,r);if(null===a&&(a=h),Math.abs(n)<=1e-4)break;n>=d-h?(a=d,n-=d-h):(a=h+n,n=0)}return a}}class bi extends ni{#kt;#Wr;constructor(e,t,r){super(e,t,r),this.#kt=e,this.#Wr=new yi(e),this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getTaskRowAt(e);if(t){if(!this.containsVertically(t,e))return null;if("task"==t.type){var r=this.#Wr.getProgressX(t,t.progress);if(Math.abs(e.x-r)<=3)return{task:t,deltaX:e.x-r}}}return null}onDragEnd(e,t){var r=this.#Wr.getProgressAt(e.task,t.x-e.deltaX);e.task.progress=r}onDragDraw(e){for(var t=e.task,r=this.#Wr.getProgressAt(t,this.lastP.x-e.deltaX),i=this.#Wr.getProgressX(t,r),s=0;s<t.partsLength;s++){var n=t.getPart(s),a=this.dateToX(n.startTime),o=this.dateToX(n.endTime);if(a>=i)break;this.drawTaskProgressHighlight(t,a,Math.min(o,i))}var l=this.#kt.locale$.getValue(),h=[];h.push({name:l.labels.progress,value:r.toString()}),this.drawTooltip([t],this.startX,l.tooltips.setProgress,h)}}class wi extends si{#kt;#Kr=null;#Zr=null;#Gr=!1;#qr=null;#_r=null;#Jr=null;#Qr=null;#ei=null;connectorDotsTask$=new t(null);constructor(e,t,r){super(e,t,r),this.#kt=e}async onMouseMove(e,t){if(this.#Gr)return this.#Jr=e,this.#ti(e),Wr.handled;var r=this.getTaskRowAt(e);if(r&&("task"===r.type||"milestone"===r.type)){var i=this.#ri(r,e);if(i)return this.#Kr=r,this.#Zr=i.side,this.connectorDotsTask$.next(r),this.setCursor("pointer"),new Wr(!0,!0);if(this.containsVertically(r,e)){var s=this.#ii(r);if(s&&e.x>=s.x1-10&&e.x<=s.x2+10)return this.#Kr===r&&null===this.#Zr||(this.#Kr=r,this.#Zr=null,this.connectorDotsTask$.next(r),this.setCursor("default")),Wr.notHandledNeedsRedraw}}return this.#Kr?(this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),this.setCursor("default"),Wr.notHandledNeedsRedraw):Wr.notHandled}async onMouseDown(e,t,r){return 0!==r.button?Wr.notHandled:this.#Kr&&this.#Zr?(this.#Gr=!0,this.isInOperation=!0,this.#qr=this.#Kr,this.#_r=this.#Zr,this.#Jr=e,this.setCursor("grabbing"),Wr.handled):Wr.notHandled}async onKeyDown(e,t){return this.#Gr&&"Escape"===t.key?(this.#Gr=!1,this.isInOperation=!1,this.setCursor("default"),this.#qr=null,this.#_r=null,this.#Qr=null,this.#ei=null,this.#Jr=null,this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){if(this.#Gr){if(this.#Gr=!1,this.isInOperation=!1,this.setCursor("default"),this.#Qr&&this.#ei){var i=mr(this.#_r,this.#ei);try{this.#kt.list.addLink(this.#qr,this.#Qr,i)}catch(e){}}return this.#qr=null,this.#_r=null,this.#Qr=null,this.#ei=null,this.#Jr=null,Wr.handled}return Wr.notHandled}async onMouseLeave(e,t){return!this.#Gr&&this.#Kr?(this.#Kr=null,this.#Zr=null,this.connectorDotsTask$.next(null),Wr.notHandledNeedsRedraw):Wr.notHandled}onRedrawn(){var e=this.canvas.getContext("2d"),t=this.#kt.theme$.getValue(),r=t.chart.content.connectorDotRadius,i=this.#Kr;if(i){var s=this.#ii(i);if(s){var n=this.getRowY(i)+(t.rowHeight+1)/2;this.#si(e,s.x1-r,n,r,"start"===this.#Zr,t,i),this.#si(e,s.x2+r,n,r,"finish"===this.#Zr,t,i)}}if(this.#Gr&&this.#qr&&this.#Jr){var a=this.#ii(this.#qr);if(a){var o=this.getRowY(this.#qr)+(t.rowHeight+1)/2,l="start"===this.#_r?a.x1-r:a.x2+r,h=this.#Jr.x,d=this.#Jr.y;if(this.#Qr&&this.#ei){var c=this.#ii(this.#Qr);if(c){var u=this.getRowY(this.#Qr);h="start"===this.#ei?c.x1-r:c.x2+r,d=u+(t.rowHeight+1)/2,this.#si(e,c.x1-r,d,r,"start"===this.#ei,t,this.#Qr),this.#si(e,c.x2+r,d,r,"finish"===this.#ei,t,this.#Qr)}}var g=Xr(this.#qr.color,t.chart.content.taskColors);if(e.beginPath(),e.moveTo(l,o),e.lineTo(h,d),e.strokeStyle=g.linkLineColor,e.lineWidth=2,e.stroke(),e.lineWidth=1,this.#si(e,l,o,r,!0,t,this.#qr),this.#Qr&&this.#ei){var m=mr(this.#_r,this.#ei),p=this.#kt.locale$.getValue(),v=[];v.push({name:p.labels.from,value:this.#qr.name??""}),v.push({name:p.labels.to,value:this.#Qr.name??""}),v.push({name:p.labels.type,value:p.linkTypes[m]}),v.push({name:p.labels.lag,value:"0d"}),this.drawTooltip([this.#qr,this.#Qr],l,p.tooltips.addLink,v)}}}}#si(e,t,r,i,s,n,a){var o=Xr(a.color,n.chart.content.taskColors);e.beginPath(),e.arc(t,r+.5,i,0,2*Math.PI),e.fillStyle=s?o.color2:o.color1,e.fill(),e.strokeStyle=o.color2,e.stroke()}#ii(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":if(0===e.partsLength)return null;var r=e.getPart(0),i=e.getPart(e.partsLength-1);return{x1:this.dateToX(r.startTime),x2:this.dateToX(i.endTime)};case"milestone":var s=this.dateToX(e.startTime),n=t.chart.content.milestoneSize;return{x1:s-n/2,x2:s+n/2};default:return null}}#ri(e,t){var r=this.#ii(e);if(!r)return null;var i=this.#kt.theme$.getValue(),s=this.getRowY(e)+(i.rowHeight+1)/2,n=i.chart.content.connectorDotRadius,a=n+3,o=r.x1-n,l=r.x2+n,h=Math.sqrt((t.x-o)**2+(t.y-s)**2),d=Math.sqrt((t.x-l)**2+(t.y-s)**2);return h<=a?{side:"start"}:d<=a?{side:"finish"}:null}#ti(e){this.#Qr=null,this.#ei=null;var t=this.getTaskRowAt(e);if(t&&t!==this.#qr&&("task"===t.type||"milestone"===t.type)){var r=this.#ri(t,e);if(r)return this.#Qr=t,void(this.#ei=r.side);if(this.containsVertically(t,e)){var i=this.#ii(t);if(i&&e.x>=i.x1-10&&e.x<=i.x2+10){var s=Math.abs(e.x-i.x1),n=Math.abs(e.x-i.x2);this.#Qr=t,this.#ei=s<n?"start":"finish"}}}}}class Ti extends Ir{#kt;#Wr;constructor(e){super(e),this.#kt=e,this.#Wr=new yi(e)}#ni(e){var t=this.#kt.timeline.currentZoom,r=t.axis[0],i=this.#kt.timeline.visibleStartTime$.getValue(),s=this.#kt.theme$.getValue(),n=this.#kt.showCriticalPath$.getValue()&&e.isCritical,a=this.#kt.showBaseline$.getValue()&&!!e.baselineStartTime;return{zoom:t,axis:r,visibleStart:i,theme:s,isCritical:n,showBaseline:a,baselineOffset:a?s.chart.content.baselineOffset:0}}render(e){var t=e.getContext("2d");this.#ai(e,t),this.#oi(e,t),this.#li(e,t)}#ai(e,t){var r=this.#kt.sheetSelectedTasks$.getValue();if(0!==r.length){var i=this.#kt.theme$.getValue().rowHeight+1;for(var s of r)this.drawRowHighlight(t,e.width,this.getRowY(s),i)}}#li(e,t){var r=this.#kt.chartTaskHover$.getValue();if(!r){var i=this.#kt.sheetRowMouseOver$.getValue();i&&(r=i.task)}if(r){var s=this.#kt.theme$.getValue().rowHeight+1;this.drawRowHighlight(t,e.width,this.getRowY(r),s)}}#oi(e,t){var r=this.#kt.theme$.getValue().contentTop;r-=this.#kt.sheetScrollTop$.getValue();for(var i=0;i<this.#kt.list.length;i++){var s=this.#kt.list.getTask(i);if(!s.hidden){switch(s.type){case"task":this.#hi(t,s,r);break;case"milestone":this.#di(t,s,r);break;case"summary":this.#ci(t,s,r)}r+=this.rowHeight}}}#hi(e,t,r){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,baselineOffset:h}=i,d=i.showBaseline&&!!t.baselineEndTime,c=0,u=o.chart.content.taskHeight,g=o.chart.content.taskProgressHeight,m=o.chart.content.taskBorderRadius,p=Xr(t.color,o.chart.content.taskColors),v=p.color1,f=p.color2,y=p.borderColor,b=p.progressColor1,w=p.progressColor2,T=p.separatorColor,C=t.progress;if(d){var x=Math.floor(n.getX(t.baselineStartTime,a,s)),k=Math.floor(n.getX(t.baselineEndTime,a,s)),E=o.chart.content.baselineHeight,D=r+this.rowHeight/2-u/2-h+u+1,S=new kr(x,D,k-x,E);e.beginPath(),mi(e,S,o.chart.content.baselineBorderRadius),e.fillStyle=o.chart.content.baselineColor,e.fill()}for(var $=0;$<t.partsLength;$++){var R=t.getPart($),M=Math.floor(n.getX(R.startTime,a,s)),L=Math.floor(n.getX(R.endTime,a,s));e.beginPath();var I=new kr(M+(y||l?.5:0),r+this.rowHeight/2-u/2-h+(y||l?0:.5),L-M,u);if(mi(e,I,m),e.fillStyle=gi(e,I,v,f),e.fill(),null!==C&&C>0){var P=this.#Wr.getProgressX(t,C);(P=Math.min(L,P))>M&&(e.save(),e.clip(),e.beginPath(),e.rect(I.x,I.y+u/2-g/2,P-M,g),e.fillStyle=gi(e,I,b,w),e.fill(),e.restore())}l?(e.lineWidth=o.chart.content.criticalTaskBorderWidth,pi(e,I,o.chart.content.criticalTaskBorderColor,m),e.lineWidth=1):y&&pi(e,I,y,m),$>0&&this.#ui(e,c,M,r,u,T),c=L}if("asap"!==t.constraintType&&t.constraintDate&&this.#gi(e,t,r,u,i),"none"!==o.chart.content.taskLabelPosition){var A=t.getPart(0),H=t.getPart(t.partsLength-1),V=Math.floor(n.getX(A.startTime,a,s)),B=Math.floor(n.getX(H.endTime,a,s)),F=new kr(V,r+this.rowHeight/2-u/2-h,B-V,u);this.#mi(e,t,F,o.chart.content.taskLabelPosition,o.chart.content.taskLabelContent,o.chart.content.taskLabelColor)}}#ui(e,t,r,i,s,n){e.beginPath();for(var a=i+this.rowHeight/2+s/2,o=t+4;!(o>=r);)e.moveTo(o,a-3),e.lineTo(o,a),o+=5;e.strokeStyle=n,e.stroke()}#pi(e,t,r,i=0){var s=this.#kt.timeline.currentZoom,n=s.axis[0],a=this.#kt.timeline.visibleStartTime$.getValue(),o=this.#kt.theme$.getValue().chart.content.milestoneSize,l=Math.floor(n.getX(t.startTime,a,s)),h=r+this.rowHeight/2-o/2+i;return e.beginPath(),e.moveTo(l,h),e.lineTo(l+o/2,h+o/2),e.lineTo(l,h+o),e.lineTo(l-o/2,h+o/2),e.lineTo(l,h),new kr(l-o/2,h,o,o)}#di(e,t,r){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,showBaseline:h,baselineOffset:d}=i,c=o.chart.content.milestoneColor1,u=o.chart.content.milestoneColor2,g=o.chart.content.milestoneBorderColor;if(h){var m=o.chart.content.baselineMilestoneSize,p=Math.floor(n.getX(t.baselineStartTime,a,s)),v=o.chart.content.milestoneSize,f=r+this.rowHeight/2-v/2-d+v+1+m/2;e.beginPath(),e.moveTo(p,f-m/2),e.lineTo(p+m/2,f),e.lineTo(p,f+m/2),e.lineTo(p-m/2,f),e.lineTo(p,f-m/2),e.fillStyle=o.chart.content.baselineColor,e.fill()}var y=this.#pi(e,t,r,-d);if(e.fillStyle=gi(e,y,c,u),e.fill(),l?(e.strokeStyle=o.chart.content.criticalMilestoneBorderColor,e.lineWidth=o.chart.content.criticalTaskBorderWidth,e.stroke(),e.lineWidth=1):g&&(e.strokeStyle=g,e.stroke()),"asap"!==t.constraintType&&"alap"!==t.constraintType&&t.constraintDate&&this.#gi(e,t,r,o.chart.content.milestoneSize,i),"none"!==o.chart.content.milestoneLabelPosition){var b=o.chart.content.milestoneSize,w=o.chart.content.taskLabelOutsideMargin,T=new kr(y.right+w,r+this.rowHeight/2-b/2-d,300,b);this.#mi(e,t,T,"right",o.chart.content.milestoneLabelContent,o.chart.content.milestoneLabelColor)}}#ci(e,t,r){if(t.startTime&&t.endTime){var i=this.#ni(t),{zoom:s,axis:n,visibleStart:a,theme:o,isCritical:l,baselineOffset:h}=i,d=i.showBaseline&&!!t.baselineEndTime,c=o.chart.content.summaryHeight;if(d){var u=Math.floor(n.getX(t.baselineStartTime,a,s)),g=Math.floor(n.getX(t.baselineEndTime,a,s)),m=o.chart.content.baselineSummaryHeight,p=r+this.rowHeight/2-c/2-h+c/2+1,v=o.chart.content.summaryMarkType,f=Math.round(o.chart.content.summaryMarkWidth*m/c);e.beginPath(),e.rect(u,p,g-u,m/2),"full"==v?(e.moveTo(u-f/2,p),e.lineTo(u+f/2,p),e.lineTo(u+f/2,p+m/2),e.lineTo(u,p+m),e.lineTo(u-f/2,p+m/2)):(e.moveTo(u,p),e.lineTo(u+f/2,p),e.lineTo(u+f/2,p+m/2),e.lineTo(u,p+m)),"full"==v?(e.moveTo(g-f/2,p),e.lineTo(g+f/2,p),e.lineTo(g+f/2,p+m/2),e.lineTo(g,p+m),e.lineTo(g-f/2,p+m/2)):(e.moveTo(g,p),e.lineTo(g-f/2,p),e.lineTo(g-f/2,p+m/2),e.lineTo(g,p+m)),e.fillStyle=o.chart.content.baselineColor,e.fill()}var y=Math.floor(n.getX(t.startTime,a,s)),b=Math.floor(n.getX(t.endTime,a,s)),w=o.chart.content.summaryColor1,T=o.chart.content.summaryColor2,C=o.chart.content.summaryProgressColor1,x=o.chart.content.summaryProgressColor2,k=o.chart.content.summaryBorderColor,E=o.chart.content.summaryMarkType;e.beginPath();var D=new kr(y+.5,r+this.rowHeight/2-c/2-h,b-y,c/2);e.rect(D.x,D.y,D.width,D.height),e.fillStyle=gi(e,D,w,T),e.fill();var S=t.progress??0;if(S>0){e.beginPath();var $=new kr(D.x,D.y,D.width*(S/100),D.height);e.rect($.x,$.y,$.width,$.height),e.fillStyle=gi(e,$,C,x),e.fill()}if(l?(e.lineWidth=o.chart.content.criticalTaskBorderWidth,pi(e,D,o.chart.content.criticalSummaryBorderColor),e.lineWidth=1):k&&pi(e,D,k),this.#vi(e,y,r-h,S>0,c,E,"left"),this.#vi(e,b,r-h,S>=100,c,E,"right"),"none"!==o.chart.content.summaryLabelPosition){var R=new kr(y,r+this.rowHeight/2-c/2-h,b-y,c);this.#mi(e,t,R,o.chart.content.summaryLabelPosition,o.chart.content.summaryLabelContent,o.chart.content.summaryLabelColor)}}}#fi(e,t,r,i,s,n){var a,o=this.#kt.theme$.getValue().chart.content.summaryMarkWidth;return"full"==s?(a=new kr(t-o/2+.5,r+this.rowHeight/2-i/2,o,i),e.moveTo(a.x,a.y),e.lineTo(a.right,a.y),e.lineTo(a.right,a.middle.y),e.lineTo(a.middle.x,a.bottom),e.lineTo(a.x,a.middle.y),e.lineTo(a.x,a.y)):"left"==n?(a=new kr(t,r+this.rowHeight/2-i/2,o/2,i),e.moveTo(a.x,a.y),e.lineTo(a.right,a.y),e.lineTo(a.right,a.middle.y),e.lineTo(a.x,a.bottom),e.lineTo(a.x,a.y)):(a=new kr(t-o/2+1,r+this.rowHeight/2-i/2,o/2,i),e.moveTo(a.right,a.y),e.lineTo(a.x,a.y),e.lineTo(a.x,a.middle.y),e.lineTo(a.right,a.bottom),e.lineTo(a.right,a.y)),a}#vi(e,t,r,i,s,n,a){e.beginPath();var o=this.#kt.theme$.getValue(),l=o.chart.content.summaryMarkColor1,h=o.chart.content.summaryMarkColor2,d=o.chart.content.summaryMarkProgressColor1,c=o.chart.content.summaryMarkProgressColor2,u=o.chart.content.summaryBorderColor,g=this.#fi(e,t,r,s,n,a);e.fillStyle=i?gi(e,g,d,c):gi(e,g,l,h),e.fill(),u&&(e.strokeStyle=u,e.stroke())}#gi(e,t,r,i,s){var n,a=t.constraintDate,o=Math.floor(s.axis.getX(a,s.visibleStart,s.zoom)),l=s.theme.chart.content,h=r+this.rowHeight/2-i/2-s.baselineOffset-5-2;switch(t.constraintType){case"mso":case"mfo":n=l.constraintFixedColor;break;case"alap":n=l.constraintAlapColor;break;default:n=l.constraintBoundaryColor}e.beginPath(),e.moveTo(o,h),e.lineTo(o+5,h+5),e.lineTo(o,h+10),e.lineTo(o-5,h+5),e.closePath(),e.fillStyle=n,e.fill()}#mi(e,t,r,i,s,n){var a=function(e,t){switch(t){case"name":return e.name;case"resource":if(0===e.resourcesLength)return null;for(var r=[],i=0;i<e.resourcesLength;i++)r.push(e.getResource(i).resource.name);return r.join(", ");case"progress":return null!==e.progress?Math.round(e.progress)+"%":null;case"nameAndProgress":var s=null!==e.progress?" ("+Math.round(e.progress)+"%)":"";return(e.name??"")+s;case"nameAndResource":var n=null;if(e.resourcesLength>0){var a=[];for(i=0;i<e.resourcesLength;i++)a.push(e.getResource(i).resource.name);n=a.join(", ")}return n?(e.name??"")+" — "+n:e.name;default:return null}}(t,s);if(a){var o=this.#kt.theme$.getValue(),l=o.chart.content.taskLabelFont.clone();l.name=o.font.name;var h=e.font;e.font=l.toString(1);var d=o.chart.content.taskLabelPadding,c=e.measureText(a),u=c.width+2*d<=r.width;if("inside"===i||"insideOrRight"===i&&u)e.save(),e.beginPath(),e.rect(r.x,r.y,r.width,r.height),e.clip(),Rr(e,a,new kr(r.x+d,r.y,r.width-2*d,r.height),"left",0,n),e.restore();else if("right"===i||"insideOrRight"===i){var g=o.chart.content.taskLabelOutsideMargin,m=r.right+g,p=$r(e);e.fillStyle=o.chart.content.backgroundColor,e.fillRect(m-2,r.y+(r.height-p)/2-2,c.width+4,p+4),Rr(e,a,new kr(m,r.y,300,r.height),"left",0,n)}e.font=h}}drawTaskHighlightX1X2(e,t,r,i){var s=this.getRowY(t),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.taskHeight,l=n.chart.content.taskBorderRadius,h=Xr(t.color,n.chart.content.taskColors);e.beginPath(),mi(e,new kr(r,s+a/2-o/2,i-r,o),l),e.fillStyle=h.highlightColor,e.fill()}drawTaskProgressHighlight(e,t,r,i){var s=this.getRowY(t),n=this.#kt.theme$.getValue(),a=n.rowHeight+1,o=n.chart.content.taskHeight,l=n.chart.content.taskProgressHeight,h=n.chart.content.taskBorderRadius,d=Xr(t.color,n.chart.content.taskColors);e.beginPath(),mi(e,new kr(r,s+a/2-o/2,i-r,o),h),e.save(),e.clip(),e.beginPath(),e.rect(r,s+a/2-l/2+.5,i-r,l),e.fillStyle=d.progressHighlightColor,e.fill(),e.restore()}drawTaskHighlight(e,t){var r=this.#kt.timeline.currentZoom,i=r.axis[0],s=this.#kt.timeline.visibleStartTime$.getValue(),n=this.#kt.theme$.getValue(),a=this.getRowY(t);switch(t.type){case"task":for(var o=0;o<t.partsLength;o++){var l=t.getPart(o),h=Math.floor(i.getX(l.startTime,s,r)),d=Math.floor(i.getX(l.endTime,s,r));this.drawTaskHighlightX1X2(e,t,h,d)}break;case"milestone":this.#pi(e,t,a),e.fillStyle=n.chart.content.milestoneHighlightColor,e.fill();break;case"summary":h=Math.floor(i.getX(t.startTime,s,r)),d=Math.floor(i.getX(t.endTime,s,r));e.beginPath();var c=this.#fi(e,h,a,n.chart.content.summaryHeight,n.chart.content.summaryMarkType,"left"),u=this.#fi(e,d,a,n.chart.content.summaryHeight,n.chart.content.summaryMarkType,"right"),g=new kr(c.right,c.y,u.x-c.right,n.chart.content.summaryHeight/2);g.width>0&&e.rect(g.x,g.y,g.width,g.height),e.fillStyle=n.chart.content.summaryHighlightColor,e.fill()}}}function Ci(e,t,r,i,s,n,a){var o=t+r,l=e.getContext("2d"),h=a.chart.content.tooltipFont.clone();h.name=a.font.name,l.font=h.toString(1);var d=function(e,t){var r=$r(e);return 35+r*(t.length+1)+2*(t.length-1)}(l,n),c=null,u=t-d-20;if(u>=a.contentTop+20?c="Above":(u=o+20)+d+20<e.height&&(c="Below"),null!==c){var g=function(e,t){var r=null,i=null;for(let a of t){var s=Mr(e,a.name,200);(null===r||s.measure.width>r)&&(r=s.measure.width);var n=Mr(e,a.value,200);(null===i||n.measure.width>i)&&(i=n.measure.width)}return r=Math.min(100,r),i=Math.min(100,i),{nameWidth:r,valueWidth:i,totalWidth:Math.round(30+r+i+30)}}(l,n);u=Math.floor(u)+.5,i=Math.floor(i)+.5;var m=new kr(i,u,g.totalWidth,d);l.beginPath(),l.rect(i,u,g.totalWidth,d),l.fillStyle=function(e,t,r,i){var s=e.createLinearGradient(t.x,t.y,t.right,t.y);return s.addColorStop(0,r),s.addColorStop(1,i),s}(l,m,a.chart.content.tooltipBackgroundColor1,a.chart.content.tooltipBackgroundColor2),l.fill(),l.strokeStyle=a.chart.content.tooltipBorderColor,l.stroke();var p=g.totalWidth-30,v=i+15,f=h.clone(),y=$r(l),b=new kr(v,u+15,p,y);f.weight=600,l.font=f.toString(1),Rr(l,s,b,"left",0,a.chart.content.tooltipTextColor);var w=u+15+y+5,T=h.clone(),C=$r(l);l.font=T.toString(1);for(let e of n){var x=new kr(v,w,g.nameWidth+1,C);Rr(l,e.name,x,"left",0,a.chart.content.tooltipTextColor);var k=new kr(v+g.nameWidth+30,w,g.valueWidth+1,C);Rr(l,e.value,k,"left",0,a.chart.content.tooltipTextColor),w+=C+2}}}class xi{#kt;constructor(e){this.#kt=e}drawTooltip(e,t,r,i,s){var n=this.#kt.theme$.getValue(),a=null,o=null;for(let e of t){var l=this.#kt.getRowY(e);(null===a||l<a)&&(a=l);var h=l+n.rowHeight;(null===o||h>o)&&(o=h)}Ci(e,a,o-a,r,i,s,n)}}class ki extends Nr{#kt;constructor(e,t){super(e,t),this.#kt=e;var r=new Ti(e),i=new xi(e),s=new oi(e,r,i);this.addSubscription(s.dblClick$.subscribe(e=>{this.#kt.taskDblClick$.next({task:e})})),this.addSubscription(s.contextMenu$.subscribe(e=>{this.#kt.taskContextMenu$.next(e)})),this.addHandler(s),this.addHandler(new fi(e,r,i)),this.addHandler(new hi(e,r,i)),this.addHandler(new bi(e,r,i)),this.addHandler(new wi(e,r,i)),this.addHandler(new ai(e,r,i)),this.addHandler(new li(e,r,i)),this.addHandler(new di(e,r,i)),this.wireHandlers()}onAfterContextMenu(e,t){var r=this.#kt.theme$.getValue().contentTop,i=e.y<r?"header":"content",s=this.#kt.timeline.currentZoom,n=s.axis[0],a=this.#kt.timeline.visibleStartTime$.getValue(),o=Math.floor(e.x/s.baseCellWidth),l=n.getAdd(a,o),h=null;"content"===i&&(h=ii(e,this.#kt,e=>"empty"!==e.type)),this.#kt.chartContextMenu$.next({date:l,area:i,task:h,mouseEvent:t})}}class Ei extends Ir{#kt;#Wr;constructor(e){super(e),this.#kt=e,this.#Wr=new vi(e)}render(e){for(var t=e.getContext("2d"),r=0;r<this.#kt.list.linksLength;r++){var i=this.#kt.list.getLink(r);i.from.hidden||i.to.hidden||this.#yi(i,t)}}#bi(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":return Xr(e.color,t.chart.content.taskColors).linkLineColor;case"milestone":return t.chart.content.linkFromMilestoneLineColor}return null}#wi(e){var t=this.#kt.theme$.getValue();switch(e.type){case"task":return Xr(e.color,t.chart.content.taskColors).linkArrowColor;case"milestone":return t.chart.content.linkFromMilestoneArrowColor}return null}#yi(e,t){var r=this.#Wr.getCoords(e),i="rounded"===this.#kt.theme$.getValue().chart.content.linkLineStyle;switch(e.type){case"finishToStart":this.#Ti(e,t,r,i);break;case"startToStart":this.#Ci(e,t,r,i);break;case"finishToFinish":this.#xi(e,t,r,i);break;case"startToFinish":this.#ki(e,t,r,i)}0!==e.lag.value&&this.#Ei(e,t,r)}#Ei(e,t,r){var i=this.#kt.theme$.getValue(),s=(r.x1+r.x2)/2,n=(r.y1+r.y2)/2,a=e.lag.toString();t.font=i.chart.content.tooltipFont.toString(1);var o=t.measureText(a).width;t.fillStyle=i.chart.header.backgroundColor,t.fillRect(s-o/2-2,n-7,o+4,14),t.fillStyle=this.#bi(e.from)??"#000000",t.textAlign="center",t.textBaseline="middle",t.fillText(a,s,n),t.textAlign="start",t.textBaseline="alphabetic"}#Ti(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=r.sign,h=Math.max(a,s+10);this.#Di(t,[{x:s,y:n},{x:h,y:n},{x:h,y:o-l}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#Si(t,h,o,l,e)}#Ci(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=Math.min(s,a)-10;this.#Di(t,[{x:s,y:n},{x:l,y:n},{x:l,y:o},{x:a,y:o}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#$i(t,a,o,1,e)}#xi(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=Math.max(s,a)+10;this.#Di(t,[{x:s,y:n},{x:l,y:n},{x:l,y:o},{x:a,y:o}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#$i(t,a,o,-1,e)}#ki(e,t,r,i){var s=r.x1,n=r.y1,a=r.x2,o=r.y2,l=r.sign,h=Math.min(a,s-10);this.#Di(t,[{x:s,y:n},{x:h,y:n},{x:h,y:o-l}],i),t.strokeStyle=this.#bi(e.from)??"#000000",t.stroke(),this.#Si(t,h,o,l,e)}#Di(e,t,r){if(e.beginPath(),e.moveTo(t[0].x,t[0].y),r)for(i=1;i<t.length;i++)i<t.length-1?e.arcTo(t[i].x,t[i].y,t[i+1].x,t[i+1].y,3):e.lineTo(t[i].x,t[i].y);else for(var i=1;i<t.length;i++)e.lineTo(t[i].x,t[i].y)}#Si(e,t,r,i,s){e.beginPath(),e.moveTo(t-5,r-6*i),e.lineTo(t+5,r-6*i),e.lineTo(t,r),e.lineTo(t-5,r-6*i),e.fillStyle=this.#wi(s.from)??"#000000",e.fill()}#$i(e,t,r,i,s){e.beginPath(),e.moveTo(t-6*i,r-5),e.lineTo(t-6*i,r+5),e.lineTo(t,r),e.lineTo(t-6*i,r-5),e.fillStyle=this.#wi(s.from)??"#000000",e.fill()}}class Di{#wt;#Ri;constructor(e,t){this.#wt=e,this.#Ri=t}render(e){var t=e.getContext("2d"),r=this.#wt.theme$.getValue(),i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=r.contentTop,o=this.#Ri(e),l=r.chart.content;if(this.#wt.showTodayLine$.getValue()){var h=Math.floor(s.getX(new Date,n,i));h>=0&&h<=e.width&&this.#Mi(t,h,a,o,l.todayLineColor,l.todayLineWidth,l.todayLineStyle)}var d=this.#wt.markers$.getValue();for(var c of d){var u=Math.floor(s.getX(c.date,n,i));if(u>=0&&u<=e.width){var g=c.color??l.markerLineColor,m=c.lineWidth??l.markerLineWidth,p=c.lineStyle??l.markerLineStyle;this.#Mi(t,u,a,o,g,m,p),c.label&&this.#mi(t,c.label,u,a,g,l)}}}#Mi(e,t,r,i,s,n,a){e.beginPath(),e.moveTo(t+.5,r),e.lineTo(t+.5,i),e.strokeStyle=s,e.lineWidth=n,"dashed"===a?e.setLineDash([5,3]):"dotted"===a&&e.setLineDash([1,3]),e.stroke(),e.setLineDash([]),e.lineWidth=1}#mi(e,t,r,i,s,n){var a=n.markerLabelFont;e.font=a.toString(1);var o=e.measureText(t).width,l=a.size+8,h=o+8,d=r+4,c=i+4;e.fillStyle=s,e.globalAlpha=.15,e.fillRect(d,c,h,l),e.globalAlpha=1;var u=n.markerLabelColor;Rr(e,t,new kr(d+4,c,o,l),"left",0,u)}}class Si extends Ir{#Li;constructor(e){super(e),this.#Li=new Di(e,e=>e.height)}render(e){this.#Li.render(e)}}var $i="TimelineKit.com";function Ri(e,t,r){t<=0||r<=0||(e.save(),e.globalAlpha=.12,e.fillStyle="#000000",e.textAlign="right",e.textBaseline="bottom",e.font="bold 14px sans-serif",e.fillText($i,t-20,r-20),e.restore())}class Mi{#wt;#Rt;#Mt;#Ii;#Lt;#Pi=!1;#T=new r;#Ai="default";get ctx(){return this.#wt}get canvas(){return this.#Ii}constructor(e,t){this.#wt=e,this.#Rt=t,this.#Rt.classList.add("gc-chart"),this.#Ii=document.createElement("canvas"),this.#Ii.classList.add("canvas"),this.#Rt.appendChild(this.#Ii),this.#Lt=document.createElement("div"),this.#Lt.classList.add("inner"),this.#Rt.appendChild(this.#Lt)}init(){if(this.initComponents(this.#Rt,this.#Ii,this.#Lt),this.#Mt=new ResizeObserver(()=>{requestAnimationFrame(()=>this.#Jt())}),this.#Mt.observe(this.#Rt),this.#Rt.addEventListener("wheel",e=>(e.preventDefault(),e.stopPropagation(),this.#Hi(e),this.#wt.chartMouseWheel$.next(e),!1)),this.#T.add(i(...this.getRedrawObservables()).subscribe(()=>{this.scheduleRedraw()})),this.#T.add(this.#wt.chartCursor$.subscribe(e=>{"default"!==this.#Ai&&this.#Rt.classList.remove("cursor-"+this.#Ai),"default"!==e&&this.#Rt.classList.add("cursor-"+e),this.#Ai=e})),this.#T.add(this.#wt.dividerResizing$.subscribe(e=>{e?this.#Rt.classList.add("no-pointer-events"):this.#Rt.classList.remove("no-pointer-events")})),document.fonts){var e=this.#wt.theme$.getValue().font.name;document.fonts.load(`1rem "${e}"`).then(()=>{this.scheduleRedraw()})}}canRedraw(){return!0}renderPipeline(e,t,r,i,s){t.render(this.#Ii);var n=this.#wt.theme$.getValue().contentTop,a=this.#Rt.clientHeight;e.save(),e.beginPath(),e.rect(0,n,this.#Ii.width,a-n),e.clip(),r.render(this.#Ii),i.render(this.#Ii),this.#wt.chartBackgroundRedrawn$.next(),s(),e.restore()}scheduleRedraw(){this.#Pi||(this.#Pi=!0,requestAnimationFrame(()=>{this.#Pi=!1,this.#Vi()}))}#Vi(){if(this.canRedraw()){var e;try{e=this.#Ii.getContext("2d")}catch{}e&&(e.clearRect(0,0,this.#Ii.width,this.#Ii.height),this.onRedraw(e),Vt().showWatermark&&Ri(e,this.#Ii.width,this.#Ii.height),this.#wt.chartRedrawn$.next())}}#Bi(){var e=this.#Rt.offsetWidth,t=this.#Rt.offsetHeight;this.#Ii.width=e,this.#Ii.height=t,this.#Ii.style.width=e+"px",this.#Ii.style.height=t+"px"}#Jt(){this.#Bi(),this.onResize(),this.#Vi()}onResize(){}#Hi(e){e.ctrlKey&&(e.deltaY>0?this.#wt.timeline.zoomOut():this.#wt.timeline.zoomIn())}get chartElement(){return this.#Rt}get chartWidth(){return this.#Rt.offsetWidth}destroy(){this.#T.unsubscribe(),this.#Mt.disconnect(),this.destroyComponents()}}class Li extends Mi{#$t;#Fi;#Li;#Vr;#zi;#Oi;#pr;constructor(e,t){super(e,t),this.init()}initComponents(e,t,r){this.#$t=new Pr(this.ctx),this.#Fi=new Cr(this.ctx),this.#Li=new Si(this.ctx),this.#Vr=new Ti(this.ctx),this.#zi=new Ei(this.ctx),this.#Oi=new Hr(this.ctx,e,t,r),this.#pr=new ki(this.ctx,e),this.#pr.init(e,t)}getRedrawObservables(){var e=this.ctx;return[e.timeline.zoomIndex$,e.timeline.visibleStartTime$,e.sheetScrollTop$,e.chartTaskHover$,e.list.taskChanged$,e.list.taskRemoved$,e.list.linkAdded$,e.list.linkRemoved$,e.list.taskCollapsedChanged$,e.list.evaluatingDependenciesFinished$,e.list.complexOperationFinished$,e.sheetRowMouseOver$,e.sheetSelectedTasks$,e.settings.changed$,e.showGridLines$,e.showCriticalPath$,e.showBaseline$,e.showTodayLine$,e.markers$,this.#pr.redraw$]}canRedraw(){return!this.ctx.list.evaluatingDependencies}onRedraw(e){this.renderPipeline(e,this.#$t,this.#Fi,this.#Li,()=>{this.#zi.render(this.canvas),this.#Vr.render(this.canvas)})}onResize(){this.#Oi.handleResize()}destroyComponents(){this.#Oi.destroy(),this.#pr.destroy()}}class Ii{#g;#Pe;#Ni=[];zoomIndex$=new t(0);visibleStartTime$=new t(Ft(-1));get currentZoom(){return this.#Ni[this.zoomIndex$.getValue()]}constructor(e,t){this.#g=e,this.#Pe=t,this.assignZooms(this.createDefaultZooms(),4)}createDefaultZooms(){var e=this.#Pe,t=()=>e.getValue().language,r=new Ai("minute",15,this.#g,e=>String(e.getMinutes())),i=new Ai("hour",1,this.#g,e=>String(e.getHours())),s=new Ai("hour",6,this.#g,e=>String(e.getHours())),n=new Ai("hour",1,this.#g,e=>Zt(e,t(),{hour:"numeric",hour12:!0})+", "+Zt(e,t(),{month:"short",day:"numeric"})),a=new Ai("day",1,this.#g,e=>Zt(e,t(),{weekday:"narrow"})),o=new Ai("day",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric",year:"numeric"})),l=new Ai("week",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric",year:"numeric"})+", W "+Gt(e)),h=new Ai("week",1,this.#g,e=>Zt(e,t(),{month:"short",day:"numeric"})+", W "+Gt(e)),d=new Ai("week",1,this.#g,e=>"W "+Gt(e)),c=new Ai("month",1,this.#g,e=>Zt(e,t(),{month:"short",year:"numeric"})),u=new Ai("month",1,this.#g,e=>Zt(e,t(),{month:"short"})),g=new Ai("quarter",1,this.#g,e=>Zt(e,t(),{month:"short"})),m=new Ai("year",1,this.#g,e=>String(e.getFullYear())),p=[];return p.push(new Pi([r,n],50)),p.push(new Pi([i,o],28)),p.push(new Pi([s,o],50)),p.push(new Pi([a,l],60)),p.push(new Pi([a,l],28)),p.push(new Pi([h,c],110)),p.push(new Pi([d,c],50)),p.push(new Pi([u,m],70)),p.push(new Pi([g,m],60)),p}assignZooms(e,t){if(0==e.length)throw new Error("No zooms assigned");if(t<0||t>=e.length)throw new Error("Default zoom index is out of range");this.#Ni=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.#Ni.length-1&&(this.zoomIndex$.next(this.zoomIndex$.getValue()+1),!0)}findBestZoomIndex(e,t,r){for(var i=0;i<this.#Ni.length;i++){var s=this.#Ni[i];if(s.axis[0].getCellStartX(t,e,s)<=r)return i}return this.#Ni.length-1}}class Pi{axis;baseCellWidth;constructor(e,t){this.axis=e,this.baseCellWidth=t}}class Ai{#g;unit;unitsPerCell;formatter;constructor(e,t,r,i){this.#g=r,this.unit=e,this.unitsPerCell=t,this.formatter=i}getCellStartTime(e){var t=new Date(e);switch(this.unit){case"minute":var r=Math.floor(e.getMinutes()/this.unitsPerCell)*this.unitsPerCell;return t.setHours(t.getHours(),r,0,0),t;case"hour":var i=Math.floor(t.getHours()/this.unitsPerCell)*this.unitsPerCell;return t.setHours(i,0,0,0),t;case"day":return t.setHours(0,0,0,0),t;case"week":return this.#g.getValue().getStartOfWeek(t);case"month":return t.setHours(0,0,0,0),t.setDate(1),t;case"quarter":t.setHours(0,0,0,0),t.setDate(1);for(var s=[0,3,6,9];!s.includes(t.getMonth());)t.setMonth(t.getMonth()-1);return t;case"half":t.setHours(0,0,0,0),t.setDate(1);for(var n=[0,6];!n.includes(t.getMonth());)t.setMonth(t.getMonth()-1);return t;case"year":return t.setHours(0,0,0,0),t.setDate(1),t.setMonth(0),t}}#Wi(e,t,r){var i=(e.getTime()-t.getTime())/6e4;switch(r.unit){case"minute":return i/r.unitsPerCell;case"hour":return i/60/r.unitsPerCell;case"day":return i/1440/r.unitsPerCell;case"week":return i/10080/r.unitsPerCell;case"month":return Xt(t,e);case"quarter":return Xt(t,e)/3;case"half":return Xt(t,e)/6;case"year":return Xt(t,e)/12}}getCellStartX(e,t,r){var i=this.getCellStartTime(e),s=this.#Wi(i,t,r.axis[0]);return Math.round(r.baseCellWidth*s)}getAdd(e,t){e=new Date(e);switch(this.unit){case"minute":return e.setMinutes(e.getMinutes()+t*this.unitsPerCell),e;case"hour":return e.setHours(e.getHours()+t*this.unitsPerCell),e;case"day":return e.setDate(e.getDate()+t),e;case"week":return e.setDate(e.getDate()+7*t),e;case"month":return e.setMonth(e.getMonth()+t),e;case"quarter":return e.setMonth(e.getMonth()+3*t),e;case"half":return e.setMonth(e.getMonth()+6*t),e;case"year":return e.setMonth(e.getMonth()+12*t),e}}getX(e,t,r){var i=this.getCellStartTime(e),s=this.getCellStartX(e,t,r),n=this.getAdd(i,1);if("minute"==this.unit||"hour"==this.unit)return s+(e.getTime()-i.getTime())/(n.getTime()-i.getTime())*r.baseCellWidth;var a=this.#g.getValue().getHoursPerDay(),o=1;switch(this.unit){case"day":o=1;break;case"week":o=7;break;case"month":o=this.#Ui(e);break;case"quarter":o=this.#ji(e);break;case"half":o=this.#Xi(e);break;case"year":o=this.#Yi(e)}var l=r.baseCellWidth/o,h=new Date(e);h.setHours(0,0,0,0);var d=this.#g.getValue().getHoursBetween(h,e);return s+l*this.#Ki(i,h)+d/a*l}#Ui(e){const t=e.getFullYear(),r=e.getMonth();return new Date(t,r+1,0).getDate()}#ji(e){const t=e.getFullYear(),r=e.getMonth(),i=3*Math.floor(r/3),s=i+2;let n=0;for(let e=i;e<=s;e++)n+=new Date(t,e+1,0).getDate();return n}#Xi(e){const t=e.getFullYear(),r=e.getMonth()<6?0:6,i=r+5;let s=0;for(let e=r;e<=i;e++)s+=new Date(t,e+1,0).getDate();return s}#Yi(e){const t=e.getFullYear();return t%4==0&&t%100!=0||t%400==0?366:365}#Ki(e,t){const r=e.getTime(),i=t.getTime(),s=Math.abs(r-i);return Math.ceil(s/864e5)}}class Hi{}class Vi extends Hi{redraw(e,t,r){e.innerText=t(r)}}class Bi extends Vi{#kt;constructor(e){super(),this.#kt=e}#Zi(e){var t=this.#kt.theme$.getValue().rowHeight;e.style.height=t+"px"}#Gi(e,t){e.style.width=t+"px"}redraw(e,t,r){for(;e.firstChild;)e.removeChild(e.firstChild);var i=r.level;if("empty"==r.type){var s=this.#kt.list.getNextNonEmpty(r);s&&(i=s.level)}e.classList.add("tree-with-name"),this.#Zi(e);var n=30*i+12,a=window.document.createElement("span");a.classList.add("tree"),this.#Gi(a,n),e.appendChild(a),"summary"==r.type&&a.appendChild(this.#qi(r));var o=window.document.createElement("span");o.classList.add("name"),e.appendChild(o),o.innerText=t(r)}#qi(e){var t=window.document.createElement("div");t.classList.add("gc-tree-icon"),t.classList.add(e.collapsed?"collapsed":"expanded");var r=window.document.createElement("div");return r.classList.add("tree-icon"),t.appendChild(r),t.addEventListener("mousedown",t=>{0==t.button&&(t.stopPropagation(),e.toggleCollapsed())}),t}}class Fi{context=null;#_i;#Ji;invalidValue$=new e;editEnded$=new e;cell;item=null;#Qi=null;get columnCode(){return this.#Qi?.code??null}constructor(e,t){this.#_i=e,this.#Ji=t}init(e){this.context=e}beginEdit(e,t,r){this.#Qi=e,this.cell=t,this.item=r,this.beginEditInternal(t,r,this.#_i(r)),this.context.cellEditing$.next({cell:t,editor:e.editor})}endEdit(e,t="none"){try{this.#Ji(this.item,e)}catch{return this.invalidValue$.next(),void this.cancelEdit()}this.context.cellEditing$.next(null),this.#es(),this.editEnded$.next(t)}cancelEdit(){this.context.cellEditing$.next(null),this.#es(),this.editEnded$.next("none")}#es(){for(;this.cell.firstChild;)this.cell.removeChild(this.cell.firstChild);this.cell.style.backgroundColor=null,this.#Qi.renderer.redraw(this.cell,this.#Qi.valueFormatter,this.item)}}class zi extends Fi{#ts;#rs=!1;beginEdit$=new e;beginEdit(e,t,r){for(this.#rs=!1,t.style.backgroundColor="white";t.firstChild;)t.removeChild(t.firstChild);super.beginEdit(e,t,r)}beginEditInternal(e,t,r){var i=document.createElement("input");i.classList.add("editor"),i.value=this.formatValue(r),i.addEventListener("mousedown",e=>{e.stopPropagation()}),i.addEventListener("mouseup",e=>{e.stopPropagation()}),i.addEventListener("input",e=>{this.#rs=!0}),this.onInputCreated(i),e.appendChild(i),setTimeout(()=>{i.focus()},0),this.#is(i),this.#ts=i,this.beginEdit$.next({item:this.item,input:i,columnCode:this.columnCode,editor:this})}onInputCreated(e){}#ss(e="none"){var t=this.tryParseValue(this.#ts.value);return null!==t?(this.endEdit(t,e),!0):(this.invalidValue$.next(),!1)}#is(e){e.addEventListener("keydown",e=>{"Enter"===e.key?(e.stopPropagation(),this.#ss("down")):"Escape"===e.key?(e.stopPropagation(),this.cancelEdit()):"Tab"===e.key&&(e.preventDefault(),e.stopPropagation(),this.#ss(e.shiftKey?"left":"right"))})}endEditIfModifiedElseCancel(){this.#rs&&this.#ss()||this.cancelEdit()}}class Oi extends zi{formatValue(e){return e}tryParseValue(e){return e??""}}class Ni extends zi{onInputCreated(e){e.addEventListener("keydown",e=>{"ArrowLeft"!==e.key&&"ArrowRight"!==e.key||e.stopPropagation()})}formatValue(e){return Kt(null===e?this.getDefaultDate():e,this.getLocale())}getDefaultDate(){return Bt()}getLocale(){return"en-US"}tryParseValue(e){return function(e,t){if(!e||!e.trim())return null;var r=e.trim().match(/\d+/g);if(!r||r.length<3)return null;for(var i,s,n,a=new Intl.DateTimeFormat(t).formatToParts(new Date(2e3,0,15)).filter(e=>"day"===e.type||"month"===e.type||"year"===e.type).map(e=>e.type),o=0;o<a.length&&o<r.length;o++){var l=parseInt(r[o],10);switch(a[o]){case"day":i=l;break;case"month":s=l;break;case"year":n=l}}if(void 0===i||void 0===s||void 0===n)return null;n<100&&(n+=2e3);var h=new Date(n,s-1,i);return h.setHours(0,0,0,0),h.getDate()!==i||h.getMonth()!==s-1||h.getFullYear()!==n?null:h}(e,this.getLocale())}}class Wi extends zi{#kt=null;constructor(){super(e=>e.length,(e,t)=>e.length=t)}initWithGanttContext(e){this.#kt=e}formatValue(e){if(null===e){var t=this.#kt?.calendar.defaultLengthUnit??"day";return new rr(t,1).toString()}return e.toString()}tryParseValue(e){return rr.tryParse(e)}}class Ui extends zi{onInputCreated(e){e.type="number",e.min="0",e.max="100"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){return parseInt(e)}}class ji extends Fi{beginEdit$=new e;cancelEdit$=new e;endEdit$=new e;constructor(){super(()=>{},()=>{}),this.cancelEdit$.subscribe(()=>{this.cancelEdit()}),this.endEdit$.subscribe(()=>{this.endEdit(null)})}beginEditInternal(e,t,r){this.beginEdit$.next({item:t,columnCode:this.columnCode,cancelEdit$:this.cancelEdit$,endEdit$:this.endEdit$})}endEditIfModifiedElseCancel(){this.cancelEdit()}}class Xi extends Vi{#kt;constructor(e){super(),this.#kt=e}redraw(e,t,r){if(e.innerText="",e.classList.add("resources"),"task"==r.type)for(var i=0;i<r.resourcesLength;i++){var s=r.getResource(i),n=document.createElement("div");if(n.classList.add("wrapper"),100!=s.capacity){var a=document.createElement("div");a.classList.add("capacity"),a.innerText=s.formatCapacity(),n.appendChild(a)}var o=document.createElement("div");o.classList.add("avatar"),s.resource.avatarIconUrl?(o.style.backgroundImage=`url(${s.resource.avatarIconUrl})`,o.style.backgroundSize="cover"):(o.style.backgroundColor=Ki(s.resource.name),o.innerText=Zi(s.resource.name)),o.title=s.resource.name,n.appendChild(o),e.appendChild(n)}}}const Yi=["#66C5CC","#F6CF71","#F89C74","#DCB0F2","#87C55F","#9EB9F3","#FE88B1","#C9DB74","#8BE0A4","#B497E7","#B3B3B3"];function Ki(e){var t=function(e){let t=0;for(let r=0;r<e.length;r++)t=(31*t+e.charCodeAt(r))%2**32;return t}(e);return Yi[t%Yi.length]}function Zi(e){if(!e)return"";const t=e.trim().split(/\s+/);if(1===t.length)return t[0].charAt(0).toUpperCase();return`${t[0].charAt(0).toUpperCase()}${t[1].charAt(0).toUpperCase()}`}class Gi extends zi{constructor(){super(e=>e.work,(e,t)=>e.work=t)}formatValue(e){return null===e?new ar("day",1).toString():e.toString()}tryParseValue(e){return ar.tryParse(e)}}class qi extends zi{onInputCreated(e){e.type="number",e.min="0",e.max="100000000000",e.step="0.01"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){return parseFloat(e)}}class _i extends Vi{#kt;constructor(e){super(),this.#kt=e}addIconToCell(e,t,r){var i=document.createElement("span");i.classList.add("icon"),i.style.color="var(--gc-tree-icon-color, #606060)",i.style.display="inline-flex",i.style.verticalAlign="middle",i.style.marginRight="4px",i.innerHTML=Ji[t],i.title=r,e.appendChild(i)}redraw(e,t,r){if(e.innerText="","asap"!==r.constraintType){var i=this.#kt.locale$.getValue(),s=i.constraints[r.constraintType],n=r.constraintDate?`${s}: ${r.constraintDate.toLocaleDateString(i.language)}`:s;this.addIconToCell(e,"constraint",n)}r.note&&this.addIconToCell(e,"note",r.note);var a=r.warnings.join("\n\n");a&&this.addIconToCell(e,"warning",a)}}const Ji={note:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>',warning:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>',constraint:'<svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M16 12V4h1V2H7v2h1v8l-2 2v2h5v6l1 1 1-1v-6h5v-2l-2-2z"/></svg>'},Qi="#606060";function es(e,t,r,i,s,n){var a=t+(i-18)/2,o=r+(s-18)/2;e.save(),e.translate(a,o),e.scale(.75,.75),e.strokeStyle=n,e.lineWidth=1.5,e.lineCap="round",e.lineJoin="round",e.save(),e.translate(12,1.5),e.rotate(Math.PI/4),e.beginPath(),function(e,t,r,i,s,n){e.moveTo(t+n,r),e.lineTo(t+i-n,r),e.arcTo(t+i,r,t+i,r+n,n),e.lineTo(t+i,r+s-n),e.arcTo(t+i,r+s,t+i-n,r+s,n),e.lineTo(t+n,r+s),e.arcTo(t,r+s,t,r+s-n,n),e.lineTo(t,r+n),e.arcTo(t,r,t+n,r,n),e.closePath()}(e,0,0,14.5,14.5,3),e.stroke(),e.restore(),e.beginPath(),e.moveTo(12,16),e.lineTo(12,11),e.stroke(),e.beginPath(),e.moveTo(12,8),e.lineTo(12.01,8),e.stroke(),e.restore()}function ts(e,t,r,i,s,n){var a=i+(n-14)/2,o=r;"asap"!==t.constraintType&&(rs(e,o,a,"constraint"),o+=18),t.note&&(rs(e,o,a,"note"),o+=18),t.warnings?.length>0&&rs(e,o,a,"warning")}function rs(e,t,r,i){var s=14/24;if(e.save(),e.translate(t,r),e.scale(s,s),"constraint"===i){var n=new Path2D("M16 12V4h1V2H7v2h1v8l-2 2v2h5v6l1 1 1-1v-6h5v-2l-2-2z");e.fillStyle=Qi,e.fill(n)}else"note"===i?(e.strokeStyle=Qi,e.lineWidth=2,e.lineCap="round",e.lineJoin="round",e.stroke(new Path2D("M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z")),e.beginPath(),e.moveTo(14,2),e.lineTo(14,8),e.lineTo(20,8),e.stroke(),e.beginPath(),e.moveTo(16,13),e.lineTo(8,13),e.stroke(),e.beginPath(),e.moveTo(16,17),e.lineTo(8,17),e.stroke()):(e.strokeStyle=Qi,e.lineWidth=2,e.lineCap="round",e.lineJoin="round",e.stroke(new Path2D("M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z")),e.beginPath(),e.moveTo(12,9),e.lineTo(12,13),e.stroke(),e.beginPath(),e.moveTo(12,17),e.lineTo(12.01,17),e.stroke());e.restore()}class is{#ns;get code(){return this.#ns}#b;get name(){return this.#b}set name(e){this.#b=e}#as;get width(){return this.#as}set width(e){e!=this.#as&&(this.#as=e,this.#f())}#os;get minWidth(){return this.#os}set minWidth(e){e!=this.#os&&(this.#os=e,this.#f())}#ls;get valueFormatter(){return this.#ls}#hs;get renderer(){return this.#hs}#ds=null;get align(){return this.#ds}#cs=null;get editor(){return this.#cs}#us;get isEditable(){return this.#us}#gs=!0;get isVisible(){return this.#gs}set isVisible(e){e!=this.#gs&&(this.#gs=e,this.#f())}#ms=null;get tooltip(){return this.#ms}set tooltip(e){this.#ms=e}#ps=null;get headerHtml(){return this.#ps}set headerHtml(e){this.#ps=e}#vs=null;get exportHeaderRenderer(){return this.#vs}set exportHeaderRenderer(e){this.#vs=e}#fs=null;get exportCellRenderer(){return this.#fs}set exportCellRenderer(e){this.#fs=e}#ys=!1;get isCustom(){return this.#ys}set isCustom(e){this.#ys=e}changed$=new e;constructor(e,t,r,i,s,n,a,o,l,h){this.#ns=e,this.#b=t,this.#ls=r,this.#as=a??100,this.#os=o??100,this.#hs=i,this.#cs=s,this.#us=n,this.#ds=l??null,this.#ms=h??null}#f(){this.changed$.next(this)}}class ss extends zi{onInputCreated(e){e.type="number"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){var t=parseInt(e);return isNaN(t)?null:t}}class ns extends zi{onInputCreated(e){e.type="text"}formatValue(e){return null===e?"0":e.toString()}tryParseValue(e){var t=parseFloat(e);return isNaN(t)?null:t}}class as{context;content;host;#bs=null;constructor(e,t,r){this.context=e,this.content=t,this.host=r}get focusedCell(){return this.context.focusedCell$.getValue()}onCellMousedown(e,t,r){var i=this.host.getColumns().indexOf(t);this.#ws(r,i,e),this.content.focus()}onCellDblClick(){this.host.beginEdit()}onEditEnded(e){var t=this.focusedCell;if(t){switch(e){case"down":var r=this.context.dataSource.getNextVisible(t.item);r?this.#Ts(r,t.columnIndex):this.#Cs();break;case"up":var i=this.context.dataSource.getPreviousVisible(t.item);i?this.#Ts(i,t.columnIndex):this.#Cs();break;case"right":this.#xs(t);break;case"left":this.#ks(t);break;default:this.#Cs()}this.content.focus()}}onKeyDown(e){if(!this.context.cellEditing$.getValue())if("Delete"!==e.key&&"Backspace"!==e.key){var t=this.focusedCell;if(t&&!this.handleCustomKeyDown(e,t))switch(e.key){case"Enter":case"F2":e.preventDefault(),this.host.beginEdit();break;case"Escape":e.preventDefault(),this.clearFocus();break;case"ArrowUp":e.preventDefault();var r=this.context.dataSource.getPreviousVisible(t.item);r&&this.#Ts(r,t.columnIndex);break;case"ArrowDown":e.preventDefault();var i=this.context.dataSource.getNextVisible(t.item);i&&this.#Ts(i,t.columnIndex);break;case"ArrowLeft":e.preventDefault();var s=this.#Es(t.columnIndex);null!==s&&this.#Ts(t.item,s);break;case"ArrowRight":e.preventDefault();var n=this.#Ds(t.columnIndex);null!==n&&this.#Ts(t.item,n);break;case"Tab":e.preventDefault(),e.shiftKey?this.#ks(t):this.#xs(t);break;case"Home":e.preventDefault();var a=this.#Ss();null!==a&&this.#Ts(t.item,a);break;case"End":e.preventDefault();var o=this.#$s();null!==o&&this.#Ts(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.#Ts(e,t)}clearFocus(){this.#bs&&(this.#bs.classList.remove("focused"),this.#bs=null),this.context.focusedCell$.next(null)}#ws(e,t,r){this.#bs&&this.#bs.classList.remove("focused"),this.#bs=r,r.classList.add("focused"),this.context.focusedCell$.next({item:e,columnIndex:t})}#Ts(e,t){var r=this.host.getItemRow(e),i=r.children[t+1];this.#ws(e,t,i),this.#Rs(r,i)}#Cs(){this.focusedCell&&this.#bs&&(this.#bs.classList.add("focused"),this.content.focus())}#Rs(e,t){var r=this.content.getBoundingClientRect(),i=e.getBoundingClientRect(),s=r.top,n=r.bottom;i.top<s?this.content.scrollTop-=s-i.top:i.bottom>n&&(this.content.scrollTop+=i.bottom-n);var a=t.getBoundingClientRect(),o=e.children[0].getBoundingClientRect().width,l=r.left+o,h=r.right;a.left<l?this.content.scrollLeft-=l-a.left:a.right>h&&(this.content.scrollLeft+=a.right-h)}#xs(e){var t=this.#Ds(e.columnIndex);if(null!==t)this.#Ts(e.item,t);else{var r=this.context.dataSource.getNextVisible(e.item),i=this.#Ss();if(null===i)return;r||(r=this.context.dataSource.addEmptyItem()),this.#Ts(r,i)}}#ks(e){var t=this.#Es(e.columnIndex);if(null!==t)this.#Ts(e.item,t);else{var r=this.context.dataSource.getPreviousVisible(e.item),i=this.#$s();r&&null!==i&&this.#Ts(r,i)}}#Ds(e){for(var t=this.host.getColumns(),r=e+1;r<t.length;r++)if(t[r].isVisible)return r;return null}#Es(e){for(var t=this.host.getColumns(),r=e-1;r>=0;r--)if(t[r].isVisible)return r;return null}#Ss(){for(var e=this.host.getColumns(),t=0;t<e.length;t++)if(e[t].isVisible)return t;return null}#$s(){for(var e=this.host.getColumns(),t=e.length-1;t>=0;t--)if(e[t].isVisible)return t;return null}}class os{#Ms;#Ls;#T=new r;#Is=!1;#Ps=null;#As=[];get items(){return this.#As}changed$;rowContextMenu$;constructor(t,r){this.#Ms=t,this.#Ls=r,this.changed$=new e,this.rowContextMenu$=new e,this.#T.add(t.rowAdded$.subscribe(e=>{this.#Hs(e.item,e.row)})),this.#T.add(t.dataSource.itemRemoved$.subscribe(e=>{this.#Vs(e.item)}))}destroy(){this.#T.unsubscribe()}#Hs(e,t){var r=t.children[0];t.addEventListener("mousedown",async r=>{this.#Bs(e,t,r)},!1),t.addEventListener("contextmenu",async r=>{this.#Fs(e,t,r)},!1),r.addEventListener("mousedown",async r=>{this.#zs(e,t,r)},!1),r.addEventListener("mouseup",async r=>{this.#Os(e,t)},!1),r.addEventListener("mousemove",async t=>{this.#Ns(e)},!1)}#Vs(e){this.#As=this.#As.filter(t=>t!=e)}#Bs(e,t,r){0==r.button&&(r.ctrlKey||this.clear(),this.#Ws(e,t)&&this.changed$.next())}#zs(e,t,r){this.#Is=!0,this.#Ps=this.#Ms.dataSource.indexOf(e);var i=r.ctrlKey;0==r.button&&(i||this.clear(),this.#Ws(e,t)&&this.changed$.next())}#Fs(e,t,r){this.#As.includes(e)||(this.clear(),this.#Ws(e,t)&&this.changed$.next()),this.rowContextMenu$.next({selectedItems:[...this.#As],mouseEvent:r})}#Os(e,t){this.#Is=!1}#Ns(e){if(this.#Is)for(var t=this.#Ms.dataSource.indexOf(e),r=Math.min(this.#Ps,t);r<=Math.max(this.#Ps,t);r++){var i=this.#Ls.children[r];this.#Ws(this.#Ms.dataSource.getItem(r),i)}}#Ws(e,t){return!this.#As.includes(e)&&(t.classList.add("selected"),this.#As.push(e),!0)}cancelRangeSelection(){this.#Is=!1}clear(){for(var e=0;e<this.#As.length;e++){this.#Us(this.#As[e]).classList.remove("selected")}this.#As=[]}updateWithCurrentSelection(){for(var e=0;e<this.#Ms.dataSource.length;e++){var t=this.#Ms.dataSource.getItem(e),r=this.#Us(t);this.#As.includes(t)?r.classList.add("selected"):r.classList.remove("selected")}}#Us(e){var t=this.#Ms.dataSource.indexOf(e);return this.#Ls.children[t]}}class ls extends Vr{#Ms;#js;#Xs=[];#Ys;#Ls;#Ks;#Zs=null;#Gs;#qs=null;#_s=null;#Js=!1;#Qs;#T=new r;columnsChanged$=new e;get tableContext(){return this.#Ms}get contentElement(){return this.#Ls}get headerElement(){return this.#Ys}get navigation(){return this.#Qs}get selection(){return this.#Gs}get rowsContainer(){return this.#Ks}constructor(e,t){super(),this.startWatching(t),this.#Ms=e,this.#js=t,this.#Js=!0,this.#js.classList.add("gc-sheet"),this.#Ys=window.document.createElement("div"),this.#Ys.classList.add("header");var r=window.document.createElement("div");r.classList.add("row-header"),r.classList.add("cell"),this.#Ys.appendChild(r),this.#Ls=window.document.createElement("div"),this.#Ls.classList.add("content"),this.#Ls.setAttribute("tabindex","0"),this.#Ls.addEventListener("scroll",()=>{this.#en()}),this.#Ls.addEventListener("mousedown",()=>{this.#tn()}),this.#Ls.addEventListener("contextmenu",e=>{this.#rn(e)}),this.#Ls.addEventListener("keydown",e=>{this.#Qs.onKeyDown(e)}),this.#js.appendChild(this.#Ls),this.#Ls.appendChild(this.#Ys),this.#Ks=window.document.createElement("div"),this.#Ks.classList.add("rows"),this.#Ls.appendChild(this.#Ks),this.#Qs=this.createKeyboardNavigation(),this.#Gs=new os(this.#Ms,this.#Ks),this.#T.add(this.#Gs.changed$.subscribe(()=>{this.#in()})),this.#T.add(this.#Gs.rowContextMenu$.subscribe(e=>{this.#sn(e)})),this.#T.add(e.dataSource.itemChanged$.subscribe(e=>{this.onItemChanged(e.item)})),this.#T.add(e.dataSource.itemRemoved$.subscribe(e=>{this.onItemRemoved(e.item)})),this.#T.add(e.dataSource.complexOperationFinished$.subscribe(()=>{this.onComplexOperationFinished()})),this.addDocumentListener("mousemove",this.#nn),this.addDocumentListener("mouseup",this.#an);for(var i=0;i<e.dataSource.length;i++){var s=e.dataSource.getItem(i);this.#on(s,i),this.redrawItemRow(s)}this.#Js=!1}createKeyboardNavigation(){return new as(this.#Ms,this.#Ls,this)}getColumns(){return this.#Xs}getItemRow(e){var t=this.#Ms.dataSource.indexOf(e);return this.#Ks.children[t]}beginEdit(e){if(this.#Ms.canEdit){var t=this.#Qs.focusedCell;if(t){var r=this.#Xs[t.columnIndex],i=this.getItemRow(t.item).children[t.columnIndex+1];r.isEditable(t.item)&&r.editor&&(i.classList.remove("focused"),setTimeout(()=>{r.editor.beginEdit(r,i,t.item);var s=document.createElement("div");if(s.classList.add("highlight"),i.appendChild(s),e&&r.editor instanceof zi){var n=i.querySelector("input.editor");n&&(n.value=e,n.dispatchEvent(new Event("input")))}},10))}}}deleteSelectedItems(){this.#Qs.clearFocus();var e=this.#Ms.selectedItems$.getValue();this.#Ms.dataSource.removeItems([...e])}insertItemAfterFocused(){var e=this.#Qs.focusedCell;if(e){var t=this.#Ms.dataSource.indexOf(e.item),r=this.#Ms.dataSource.insertEmptyItem(t+1);this.#Qs.setFocus(r,e.columnIndex)}}addColumn(e){this.#Xs.push(e);var t=window.document.createElement("div");t.classList.add("cell"),e.isVisible||t.classList.add("hidden"),t.style.width=e.width+"px",e.headerHtml?(t.innerHTML=e.headerHtml,t.style.justifyContent="center"):t.innerText=e.name,t.addEventListener("contextmenu",t=>{this.#ln(e,t)}),t.addEventListener("mousedown",t=>{this.#hn(e,t)}),this.#Ys.appendChild(t),e.tooltip&&(t.title=e.tooltip,t.classList.add("dotted"));var r=window.document.createElement("div");r.classList.add("resizer"),r.addEventListener("mousedown",t=>{this.#dn(e,t)}),t.appendChild(r),e.editor&&(e.editor.init(this.#Ms),e.editor instanceof ji&&this.#T.add(e.editor.beginEdit$.subscribe(e=>{this.#Ms.cellDialogEdit$.next(e)})),e.editor instanceof zi&&this.#T.add(e.editor.beginEdit$.subscribe(e=>{this.#Ms.cellInputEdit$.next(e)})),this.#T.add(e.editor.invalidValue$.subscribe(()=>{this.#Ms.cellInvalidValue$.next()})),this.#T.add(e.editor.editEnded$.subscribe(e=>{this.#Qs.onEditEnded(e)}))),this.#T.add(e.changed$.subscribe(e=>{this.#cn(e)}));for(var i=this.#Xs.indexOf(e),s=0;s<this.#Ks.children.length;s++){var n=this.#Ks.children[s],a=this.#Ms.dataSource.getItem(s);this.#un(n,a,i)}this.#gn(),this.#Js||(this.redrawAll(),this.columnsChanged$.next())}get columnsLength(){return this.#Xs.length}getColumn(e){return this.#Xs[e]}getColumnByCode(e){return this.#Xs.find(t=>t.code==e)??null}#cn(e){this.#mn(e,e.width),this.#pn(e),this.#gn(),this.columnsChanged$.next()}#vn(e,t){t?e.classList.remove("hidden"):e.classList.add("hidden")}updateColumnVisibility(e){this.#pn(e)}#pn(e){var t=this.#Xs.indexOf(e),r=this.#Ys.children[t+1];this.#vn(r,e.isVisible);for(var i=0;i<this.#Ks.children.length;i++){var s=this.#Ks.children[i].children[t+1];this.#vn(s,e.isVisible)}}#gn(){var e=this.getColumnsContentWidth()+"px";this.#Ys.style.width=e,this.#Ks.style.width=e;for(var t=0;t<this.#Ks.children.length;t++){this.#Ks.children[t].style.width=e}}#mn(e,t){var r=this.#Xs.indexOf(e);this.#Ys.children[r+1].style.width=t+"px",e.width=t;for(var i=0;i<this.#Ks.children.length;i++){this.#Ks.children[i].children[r+1].style.width=t+"px"}}#nn(e){if(this.#qs){var t=e.clientX-this.#qs.lastX;this.#qs.lastX=e.clientX;var r=Math.max(this.#qs.column.width+t,this.#qs.column.minWidth);this.#mn(this.#qs.column,r)}else if(this.#_s){t=Math.abs(e.clientX-this.#_s.startX);!this.#_s.isReordering&&t>5&&(this.#_s.isReordering=!0,this.#_s.headerCell.classList.add("dragging"),this.#Ys.classList.add("reordering"),this.#fn(),this.#yn(e.clientX,e.clientY)),this.#_s.isReordering&&(this.#bn(e.clientX),this.#wn(e.clientX,e.clientY))}}#an(e){if(this.#qs&&(this.#Ms.columnResized$.next({column:this.#qs.column}),this.#qs=null),this.#_s){if(this.#_s.isReordering){var t=this.#Tn(e.clientX),r=this.#Xs.indexOf(this.#_s.column);t!==r&&t!==r+1&&this.#Cn(r,t),this.#_s.headerCell.classList.remove("dragging"),this.#xn(),this.#kn()}this.#_s=null,this.#Ys.classList.remove("reordering")}}#ln(e,t){t.preventDefault(),this.#Ms.columnHeaderContextMenu$.next({column:e,mouseEvent:t})}#hn(e,t){if(0==t.button){t.preventDefault();var r=this.#Xs.indexOf(e);this.#_s={column:e,startX:t.clientX,lastX:t.clientX,headerCell:this.#Ys.children[r+1],isReordering:!1,indicator:null,ghost:null}}}#dn(e,t){0==t.button&&(this.#qs={column:e,startX:t.clientX,lastX:t.clientX})}#fn(){var e=window.document.createElement("div");e.classList.add("reorder-indicator"),this.#Ys.appendChild(e),this.#_s.indicator=e}#xn(){this.#_s?.indicator&&(this.#_s.indicator.remove(),this.#_s.indicator=null)}#yn(e,t){var r=this.#_s.headerCell,i=r.cloneNode(!0),s=r.getBoundingClientRect(),n=window.getComputedStyle(r);i.classList.add("reorder-ghost"),i.style.width=s.width+"px",i.style.height=s.height+"px",i.style.left=e-s.width/2+"px",i.style.top=t-s.height/2+"px",i.style.font=n.font,i.style.paddingLeft=n.paddingLeft,i.style.paddingRight=n.paddingRight;var a=i.querySelector(".resizer");a&&a.remove(),window.document.body.appendChild(i),this.#_s.ghost=i}#wn(e,t){var r=this.#_s?.ghost;r&&(r.style.left=e-parseFloat(r.style.width)/2+"px",r.style.top=t-parseFloat(r.style.height)/2+"px")}#kn(){this.#_s?.ghost&&(this.#_s.ghost.remove(),this.#_s.ghost=null)}#bn(e){var t=this.#_s.indicator;if(t){var r=this.#Tn(e),i=this.#Ys.children[r+1];if(i){var s=this.#Ys.getBoundingClientRect(),n=i.getBoundingClientRect();t.style.left=n.left-s.left+"px"}else{var a=this.#Ys.children[this.#Xs.length];if(a){s=this.#Ys.getBoundingClientRect();var o=a.getBoundingClientRect();t.style.left=o.right-s.left+"px"}}}}#Tn(e){for(var t=0;t<this.#Xs.length;t++){var r=this.#Ys.children[t+1].getBoundingClientRect();if(e<r.left+r.width/2)return t}return this.#Xs.length}#Cn(e,t){var r=t>e?t-1:t,[i]=this.#Xs.splice(e,1);this.#Xs.splice(r,0,i);var s=this.#Ys.children[e+1];this.#Ys.removeChild(s),Yt(this.#Ys,s,r+1);for(var n=0;n<this.#Ks.children.length;n++){var a=this.#Ks.children[n],o=a.children[e+1];a.removeChild(o),Yt(a,o,r+1)}this.#Ms.columnReordered$.next({column:i})}getItemRowHeight(e){return this.#Ms.rowHeight}#En(e,t){e.style.height=this.getItemRowHeight(t)+"px"}#on(e,t){var r=window.document.createElement("div");r.classList.add("row"),r.id=e.id,this.#En(r,e),r.addEventListener("mouseover",()=>{this.#Dn(e)}),r.addEventListener("mouseout",()=>{this.#Sn(e)}),Yt(this.#Ks,r,t);var i=window.document.createElement("div");i.classList.add("cell"),i.classList.add("row-header"),this.#En(i,e),Yt(r,i,0);for(var s=0;s<this.#Xs.length;s++)this.#un(r,e,s);r.style.width=this.getColumnsContentWidth()+"px",this.#Ms.rowAdded$.next({item:e,row:r})}#un(e,t,r){const i=this.#Xs[r],s=window.document.createElement("div");s.classList.add("cell"),i.isVisible||s.classList.add("hidden"),s.style.width=i.width+"px",s.addEventListener("mousedown",e=>{this.#$n(e,s,i,t)}),s.addEventListener("dblclick",e=>{this.#Rn(e)}),Yt(e,s,r+1)}onItemChanged(e){this.redrawItemRow(e)}onItemRemoved(e){}onComplexOperationFinished(){this.#Mn(),this.redrawAll(),this.#Gs.updateWithCurrentSelection()}redrawItemRow(e){var t=this.getItemRow(e);t.children[0].innerText=this.#Ms.dataSource.getItemLabel(e);for(var r=0;r<this.#Xs.length;r++){var i=this.#Xs[r],s=t.children[r+1];i.align&&(s.style.justifyContent=i.align.toLowerCase()),i.renderer.redraw(s,i.valueFormatter,e)}}#en(){this.#Ys.children[0].style.transform=`translateX(${this.#Ls.scrollLeft}px)`,this.#Ms.scrollTop$.next(this.#Ls.scrollTop)}#tn(){var e=this.#Ms.cellEditing$.getValue();e&&e.editor.cancelEdit()}#rn(e){e.preventDefault()}#in(){this.#Ms.selectedItems$.next(this.#Gs.items)}#sn(e){this.#Ms.canEdit&&this.#Ms.rowContextMenu$.next(e)}#Mn(){for(var e=this.#Ks.children.length-1;e>=0;e--){var t=this.#Ks.children[e];this.#Ms.dataSource.getItemById(t.id)||this.#Ks.removeChild(t)}for(e=0;e<this.#Ms.dataSource.length;e++){let i=this.#Ms.dataSource.getItem(e);if(this.#Ks.children.length<=e)this.#on(i,e);else if((t=this.#Ks.children[e]).id!=i.id){var r=this.#Ln(i.id);r?Yt(this.#Ks,r,e):this.#on(i,e)}}}#Ln(e){for(var t=0;t<this.#Ks.children.length;t++)if(this.#Ks.children[t].id===e)return this.#Ks.children[t];return null}redrawAll(){for(var e=0;e<this.#Ms.dataSource.length;e++)this.redrawItemRow(this.#Ms.dataSource.getItem(e))}updateColumnHeaders(){for(var e=0;e<this.#Xs.length;e++){var t=this.#Xs[e],r=this.#Ys.children[e+1];t.headerHtml||(r.innerText=t.name),t.tooltip&&(r.title=t.tooltip)}}#$n(e,t,r,i){if(0==e.button){var s=this.#Ms.cellEditing$.getValue();if(s){if(s.cell==t)return;s.editor.endEditIfModifiedElseCancel()}this.#Qs.onCellMousedown(t,r,i)}}#Rn(e){0==e.button&&this.#Qs.onCellDblClick()}#Dn(e){this.#Ms.rowMouseOver$.next({item:e})}#Sn(e){this.#Ms.rowMouseOver$.next(null)}scrollContentVertically(e){this.#Ls.scrollTop+=e}setScrollTop(e){this.#Ls.scrollTop=e}setHoverItem(e){this.#Zs&&(this.getItemRow(this.#Zs).classList.remove("hover"),this.#Zs=null);e&&this.getItemRow(e).classList.add("hover");this.#Zs=e}hideColumn(e){var t=this.#Xs.find(t=>t.code==e);t&&(t.isVisible=!1)}removeColumn(e){var t=this.#Xs.find(t=>t.code==e);if(t){var r=this.#Xs.indexOf(t);this.#Xs.splice(r,1);var i=this.#Ys.children[r+1];this.#Ys.removeChild(i);for(var s=0;s<this.#Ks.childElementCount;s++){var n=this.#Ks.children[s],a=n.children[r+1];n.removeChild(a)}this.#gn()}}getColumnsContentWidth(){var e=48;for(var t of this.#Xs)t.isVisible&&(e+=t.width+17);return e}getDefaultColumns(){return this.#Xs.filter(e=>!e.isCustom)}getCustomColumns(){return this.#Xs.filter(e=>e.isCustom)}addCustomStringColumn(e,t){var r=new is(e,t,t=>t.getPropertyValue(e)??null,new Vi,new Oi(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60);return r.isCustom=!0,this.addColumn(r),r}addCustomIntegerColumn(e,t){var r=new is(e,t,t=>t.getPropertyValue(e)??null,new Vi,new ss(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60,"right");return r.isCustom=!0,this.addColumn(r),r}addCustomDecimalColumn(e,t){var r=new is(e,t,t=>t.getPropertyValue(e)??null,new Vi,new ns(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60,"right");return r.isCustom=!0,this.addColumn(r),r}addCustomDateColumn(e,t){var r=new is(e,t,t=>{var r=t.getPropertyValue(e);return r?this.formatCustomDateValue(r):""},new Vi,this.createCustomDateCellEditor(t=>t.getPropertyValue(e),(t,r)=>t.setPropertyValue(e,r)),()=>!0,100,60);return r.isCustom=!0,this.addColumn(r),r}formatCustomDateValue(e){return Kt(e,"en-US")}createCustomDateCellEditor(e,t){return new Ni(e,t)}saveColumns(){return this.#Xs.map(e=>({code:e.code,width:e.width,isVisible:e.isVisible}))}loadColumns(e){for(var t=new Map,r=0;r<this.#Xs.length;r++)t.set(this.#Xs[r].code,r);var i=[],s=new Set;for(var n of e){void 0!==(a=t.get(n.code))&&(i.push(a),s.add(a))}for(r=0;r<this.#Xs.length;r++)s.has(r)||i.push(r);for(var n of e){var a;void 0!==(a=t.get(n.code))&&(this.#Xs[a].width=n.width,this.#Xs[a].isVisible=n.isVisible)}var o=i.map(e=>this.#Xs[e]);this.#Xs=o;var l=i.map(e=>this.#Ys.children[e+1]);for(var h of l)this.#Ys.appendChild(h);for(var d=0;d<this.#Ks.children.length;d++){var c=this.#Ks.children[d],u=i.map(e=>c.children[e+1]);for(var h of u)c.appendChild(h)}this.redrawAll()}scrollToItem(e){var t=this.getItemRow(e),r=this.#Ls.getBoundingClientRect(),i=t.getBoundingClientRect(),s=r.top,n=r.bottom;i.top<s?this.#Ls.scrollTop-=s-i.top:i.bottom>n&&(this.#Ls.scrollTop+=i.bottom-n)}clearSelection(){this.#Gs.clear(),this.#Qs.clearFocus()}destroy(){this.#T.unsubscribe(),super.destroy()}}class hs extends as{#In;constructor(e,t,r){super(e,t,r),this.#In=r}handleCustomKeyDown(e,t){if(e.altKey&&e.shiftKey&&this.context.canEdit)switch(e.key){case"ArrowRight":return e.preventDefault(),this.#In.indentSelectedItems(),!0;case"ArrowLeft":return e.preventDefault(),this.#In.outdentSelectedItems(),!0;case"ArrowUp":return e.preventDefault(),this.#In.moveUpSelectedItems(),!0;case"ArrowDown":return e.preventDefault(),this.#In.moveDownSelectedItems(),!0}return!(!e.ctrlKey||e.shiftKey||e.altKey||"ArrowUp"!==e.key&&"ArrowDown"!==e.key||!this.#In.canToggleCollapsed(t.item))&&(e.preventDefault(),this.#In.toggleCollapsed(t.item),!0)}}class ds extends ls{#Pn=new r;get treeDataSource(){return this.tableContext.dataSource}constructor(e,t){super(e,t),this.#Pn.add(this.treeDataSource.itemCollapsedChanged$.subscribe(()=>{this.redrawAll()}))}destroy(){this.#Pn.unsubscribe(),super.destroy()}createKeyboardNavigation(){return new hs(this.tableContext,this.contentElement,this)}redrawItemRow(e){var t=this.getItemRow(e);this.treeDataSource.isItemHidden(e)?t.classList.add("hidden"):t.classList.remove("hidden"),super.redrawItemRow(e)}indentSelectedItems(){this.treeDataSource.indent(this.tableContext.selectedItems$.getValue())}outdentSelectedItems(){this.treeDataSource.outdent(this.tableContext.selectedItems$.getValue())}moveUpSelectedItems(){this.treeDataSource.moveUp(this.tableContext.selectedItems$.getValue())}moveDownSelectedItems(){this.treeDataSource.moveDown(this.tableContext.selectedItems$.getValue())}toggleCollapsed(e){}canToggleCollapsed(e){return!1}}class cs extends Ni{#kt;constructor(e,t,r){super(t,r),this.#kt=e}getDefaultDate(){var e=this.#kt.projectTimeline$.getValue(),t=Bt();return e.startDate.getTime()>t.getTime()&&(t=new Date(e.startDate)),t}getLocale(){return this.#kt.locale$.getValue().language}}class us extends ds{#kt;#An=new r;constructor(e,t){super(e.table,t),this.#kt=e,this.#An.add(e.settings.changed$.subscribe(()=>{this.redrawAll()})),this.#An.add(e.locale$.subscribe(()=>{this.#Hn()})),this.#An.add(e.chartMouseWheel$.subscribe(e=>{e.ctrlKey||this.scrollContentVertically(e.deltaY)})),this.#An.add(e.chartTaskHover$.subscribe(e=>{this.setHoverItem(e)})),this.#An.add(this.tableContext.rowMouseOver$.subscribe(t=>{e.sheetRowMouseOver$.next(t?{task:t.item}:null)})),this.#Vn(e)}destroy(){this.#An.unsubscribe(),super.destroy()}#Vn(e){var t=e.locale$.getValue(),r=new is("name",t.columns.name,e=>e.name??"",new Bi(e),new Oi(e=>e.name,(e,t)=>e.name=t),e=>!0,200,100);this.addColumn(r);var i=new is("icons","",e=>"",new _i(e),null,e=>!1,18,18);i.headerHtml='<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="12" y="1.5" width="14.5" height="14.5" rx="3" transform="rotate(45 12 1.5)"/><line x1="12" y1="16" x2="12" y2="11"/><line x1="12" y1="8" x2="12.01" y2="8"/></svg>',i.exportHeaderRenderer=es,i.exportCellRenderer=ts,this.addColumn(i);var s=new Wi;s.initWithGanttContext(e);var n=new is("length",t.columns.length,e=>e.length?.toString()??"",new Vi,s,e=>e.isLengthEditable,50,50,"right");this.addColumn(n);var a=new is("start",t.columns.start,t=>t.startTime?Kt(t.startTime,e.locale$.getValue().language):"",new Vi,new cs(e,e=>e.startTime,(e,t)=>e.startTime=t),e=>e.isStartTimeEditable,90,90);this.addColumn(a);var o=new is("end",t.columns.end,t=>t.endTime?Kt(t.endTime,e.locale$.getValue().language):"",new Vi,new cs(e,e=>e.endTime,(e,t)=>e.endTime=this.#kt.calendar.getEndOfWorkingDay(t)),e=>e.isEndTimeEditable,90,90);this.addColumn(o);var l=new is("progress",t.columns.progress,t=>null===t.progress||void 0===t.progress?"":new Intl.NumberFormat(e.locale$.getValue().language,{style:"percent",maximumFractionDigits:0}).format(t.progress/100),new Vi,new Ui(e=>e.progress,(e,t)=>e.progress=t),e=>e.isProgressEditable,65,65,"right");this.addColumn(l);var h=new is("resources",t.columns.resources,e=>"",new Xi(e),new ji,e=>e.isResourcesEditable,100,100);this.addColumn(h);var d=new is("work",t.columns.work,e=>e.work?.toString()??"",new Vi,new Gi,e=>e.isWorkEditable,50,50,"right",t.columnTooltips.work);this.addColumn(d);var c=new is("cost",t.columns.cost,t=>{var r=t.cost;return null!==r?function(e,t,r,i){var s=new Intl.NumberFormat(i,{minimumFractionDigits:2,maximumFractionDigits:2}).format(e);switch(r){case"beforeAmount":return t+s;case"beforeAmountWithSpace":return t+" "+s;case"afterAmount":return s+t;case"afterAmountWithSpace":return s+" "+t;default:throw new Error("Unknown display mode")}}(r,this.#kt.settings.currencySymbol,this.#kt.settings.currencySymbolDisplayMode,e.locale$.getValue().language):""},new Vi,new qi(e=>e.cost,(e,t)=>e.cost=t),e=>e.isCostEditable,120,120,"right",t.columnTooltips.cost);this.addColumn(c)}#Hn(){var e=this.#kt.locale$.getValue(),t={name:{name:e.columns.name},length:{name:e.columns.length},start:{name:e.columns.start},end:{name:e.columns.end},progress:{name:e.columns.progress},resources:{name:e.columns.resources},work:{name:e.columns.work,tooltip:e.columnTooltips.work},cost:{name:e.columns.cost,tooltip:e.columnTooltips.cost}};for(var[r,i]of Object.entries(t)){var s=this.getColumnByCode(r);s&&(s.name=i.name,void 0!==i.tooltip&&(s.tooltip=i.tooltip))}this.updateColumnHeaders(),this.redrawAll()}canToggleCollapsed(e){return"summary"===e.type}toggleCollapsed(e){e.toggleCollapsed()}onItemChanged(e){this.#Bn(),e.parent?this.#Fn(e.parent):this.redrawItemRow(e)}redrawItemRow(e){super.redrawItemRow(e);for(var t=this.getItemRow(e),r=0;r<this.columnsLength;r++){var i=t.children[r+1];"summary"==e.type?i.classList.add("task-summary"):i.classList.remove("task-summary")}}onComplexOperationFinished(){super.onComplexOperationFinished(),this.#Bn()}#Fn(e){this.redrawItemRow(e);for(var t=0;t<e.subtasksLength;t++)this.#Fn(e.getSubtask(t))}#Bn(){for(var e=0,t=this.tableContext.dataSource,r=0;r<t.length;r++){var i=t.getItem(r),s=0;"asap"!==i.constraintType&&s++,i.note&&s++,(s+=i.warnings.length)>e&&(e=s)}var n=this.getColumnByCode("icons"),a=e>0?Math.max(18,18*e-4):18;n.minWidth=a,n.width=a}formatCustomDateValue(e){return Kt(e,this.#kt.locale$.getValue().language)}createCustomDateCellEditor(e,t){return new cs(this.#kt,e,t)}}class gs extends ti{constructor(){super(),this.sheet.header.backgroundColor="#ffffff",this.sheet.header.cellBorderColor="#e8e8e8",this.sheet.header.cellDividerColor="#f0f0f0",this.sheet.header.textColor="#555555",this.sheet.gridLineColor="#f2f2f2",this.sheet.scrollbarThumbColor="#d8d8d8",this.chart.header.backgroundColor="#ffffff",this.chart.header.cellBorderColor="#e8e8e8",this.chart.header.cellDividerColor="#f0f0f0",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#555555",this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#f2f2f2",this.chart.content.tier2SeparatorLineStyle="#e8e8e8",this.chart.content.nonWorkingTimeStyle="#fafafa",this.chart.content.linkLineStyle="rounded"}}class ms{#Y=[];#de=new hr;resourceChanged$=new e;resourceRemoved$=new e;resourceRemoving$=new e;constructor(){}get length(){return this.#Y.length}indexOf(e){return this.#Y.indexOf(e)}getResource(e){if(e<0||e>=this.#Y.length)throw new Error("Index out of range");return this.#Y[e]}getResourceById(e){return this.#Y.find(t=>t.id==e)??null}#De(e,t){this.#de.add(e,t)}#Se(e){this.#de.remove(e)}#Ee(e){this.#De(e,e.changed$.subscribe(e=>{this.#zn(e.resource)}))}#zn(e){this.resourceChanged$.next({resource:e})}addResource(e){if(e.list)throw new Error("The resource is already included in a list of resources");if(this.#Y.includes(e))throw new Error("The resource is already included in this list of resources");return e.list=this,this.#Y.push(e),this.#Ee(e),e}assign(e){for(var t of this.#Y)this.#Se(t);for(var t of(this.#Y=[],e))this.addResource(t)}removeResource(e){var t=this.#Y.indexOf(e);if(t<0)throw new Error("Resource not found");this.resourceRemoving$.next({resource:e}),this.#Y.splice(t,1),this.resourceRemoved$.next({resource:e})}}class ps{#a;get value(){return this.#a}#O;get type(){return this.#O}constructor(e,t){if(e<0)throw new Error("Invalid rate");this.#a=e,this.#O=t}toAny(){return{value:this.#a,type:this.#O}}static fromAny(e){return new ps(e.value,e.type)}}class vs{#m;get id(){return this.#m}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#O;get type(){return this.#O}set type(e){e!=this.#O&&(this.#O=e,this.#f())}#On=0;get fixedCostPerUse(){return this.#On}set fixedCostPerUse(e){e!=this.#On&&(this.#On=e,this.#f())}#Nn=0;get fixedCostPerResource(){return this.#Nn}set fixedCostPerResource(e){e!=this.#Nn&&(this.#Nn=e,this.#f())}#Wn=null;get avatarIconUrl(){return this.#Wn}set avatarIconUrl(e){e!=this.#Wn&&(this.#Wn=e,this.#f())}#Ie=null;get list(){return this.#Ie}set list(e){if(this.#Ie)throw new Error("Once assigned the list cannot be changed");e!=this.#Ie&&(this.#Ie=e)}#Un=null;get rate(){return this.#Un}set rate(e){e!=this.#Un&&(this.#Un=e,this.#f())}changed$=new e;constructor(e,t,r){this.#b=t,this.#O=r,this.#m=e||er(30)}#f(){this.changed$.next({resource:this})}toAny(){return{id:this.#m,name:this.#b,type:this.#O,fixedCostPerUse:this.#On,fixedCostPerResource:this.#Nn,avatarIconUrl:this.#Wn,rate:this.#Un?this.#Un.toAny():null}}static fromAny(e){var t=new vs(e.id,e.name,e.type);return t.fixedCostPerUse=e.fixedCostPerUse??0,t.fixedCostPerResource=e.fixedCostPerResource??0,t.avatarIconUrl=e.avatarIconUrl??null,t.rate=e.rate?ps.fromAny(e.rate):null,t}}class fs extends Vr{#wt;#jn;#Xn;#Yn;#Kn=null;#Zn=null;#Gn;#qn=null;#_n;#Jn;constructor(e,t,r,i,s,n){super(),this.startWatching(s),this.#wt=e,this.#Gn=n.getDefaultSheetWidth(),this.#Jn=n.onWrapperResized,this.#jn=t,this.#Xn=r,this.#Yn=i,this.#Yn.classList.add("gc-divider");var a=window.document.createElement("div");a.classList.add("resizer"),a.addEventListener("mousedown",e=>{this.#Qn(e)}),this.#Yn.appendChild(a),this.addDocumentListener("mousemove",this.#nn),this.addDocumentListener("mouseup",this.#an),this.#_n=new ResizeObserver(e=>{requestAnimationFrame(()=>{for(let t of e){const{width:e,height:r}=t.contentRect;this.#ea(e,r)}})}),this.#_n.observe(this.#jn)}destroy(){this.#_n.disconnect(),super.destroy()}#Qn(e){0==e.button&&(e.stopPropagation(),this.#wt.dividerResizing$.next(!0),this.#Kn={startX:e.clientX,lastX:e.clientX})}#nn(e){if(this.#Kn){e.stopPropagation();var t=e.clientX-this.#Kn.lastX;this.#Kn.lastX=e.clientX,null===this.#Zn?this.#Zn=this.#Gn+t:this.#Zn+=t,this.#ta()}}#an(e){this.#Kn&&(e.stopPropagation(),this.#wt.dividerResizing$.next(!1),this.#Kn=null)}#ea(e,t){if(this.#Jn){var r=this.#Jn(e,t);null!==r&&(this.#Gn=r)}this.#ta()}updateCalculatedWidth(e){this.#Gn=e,this.#ta()}#ta(){var e=this.#Zn??this.#Gn;null!==this.#qn&&this.#qn==e||(this.#qn=e,this.#Xn.style.width=e+"px",this.#wt.dividerPositionChanged$.next(),"hidden"===this.#jn.style.visibility&&(this.#jn.style.visibility=""))}}class ys extends fs{constructor(e,t,r,i,s){super(e,t,r,i,s,{getDefaultSheetWidth:()=>500,onWrapperResized:e=>Math.floor(e/2)})}}class bs{#ra;constructor(e){this.#ra=e}recalculate(){for(var e=[],t=0;t<this.#ra.list.length;t++){var r=this.#ra.list.getTask(t),i=this.#ia(r);this.#sa(e,i).tasks.push(r)}var s=this.#ra.calendar$.getValue();for(let t of e)for(let e of t.tasks)if(e.startTime&&("task"==e.type||"milestone"==e.type)){var n="task"==e.type?s.moveToStartShift(e.startTime,!0):s.moveToEndShift(e.startTime,!0);e.startTime=n}this.#ra.list.complexOperationFinished$.next()}#ia(e,t=new Set){if(t.has(e))return 0;t.add(e);for(var r=0;r<this.#ra.list.linksLength;r++){var i=this.#ra.list.getLink(r);if(i.to==e)return this.#ia(i.from,t)+1}return 0}#sa(e,t){for(;e.length<t+1;)e.push({tasks:[]});return e[t]}}class ws{#Ie;#g;constructor(e,t){this.#Ie=e,this.#g=t}calculate(){var{tasks:e,links:t}=this.#na();if(this.#aa(),0!==e.length){var r=this.#oa(e,t);r&&(this.#la(r,t),this.#ha(r,t),this.#da(r))}}#na(){for(var e=[],t=new Set,r=0;r<this.#Ie.length;r++){var i=this.#Ie.getTask(r);"task"!==i.type&&"milestone"!==i.type||i.startTime&&i.endTime&&(e.push(i),t.add(i))}var s=[];for(r=0;r<this.#Ie.linksLength;r++){var n=this.#Ie.getLink(r);t.has(n.from)&&t.has(n.to)&&s.push(n)}return{tasks:e,links:s}}#aa(){for(var e=0;e<this.#Ie.length;e++){var t=this.#Ie.getTask(e);t.earlyStart=null,t.earlyFinish=null,t.lateStart=null,t.lateFinish=null,t.totalFloat=null,t.freeFloat=null,t.isCritical=!1}}#oa(e,t){var r=new Map,i=new Map;for(var s of e)r.set(s,0),i.set(s,[]);for(var n of t)r.set(n.to,(r.get(n.to)??0)+1),i.get(n.from).push(n.to);var a=[];for(var s of e)0===r.get(s)&&a.push(s);for(var o=[];a.length>0;){var l=a.shift();for(var h of(o.push(l),i.get(l))){var d=r.get(h)-1;r.set(h,d),0===d&&a.push(h)}}return o.length!==e.length?null:o}#ca(e){return"milestone"===e.type?0:e.partsLengthInHours}#la(e,t){var r=new Map;for(var i of e)r.set(i,[]);for(var s of t)r.get(s.to).push(s);for(var i of e){var n,a=r.get(i);if(0===a.length)n=new Date(i.startTime);else for(var s of(n=new Date(i.startTime),a)){var o,l=s.from,h=s.lag.toHours(this.#g);switch(s.type){case"finishToStart":o=this.#g.addHours(l.earlyFinish,h);break;case"startToStart":o=this.#g.addHours(l.earlyStart,h);break;case"finishToFinish":var d=this.#ca(i);o=this.#g.addHours(l.earlyFinish,h-d);break;case"startToFinish":d=this.#ca(i);o=this.#g.addHours(l.earlyStart,h-d)}o.getTime()>n.getTime()&&(n=o)}n=this.#ua(i,n),i.earlyStart=n;d=this.#ca(i);i.earlyFinish=d>0?this.#g.addHours(n,d):new Date(n)}}#ua(e,t){var r=e.constraintDate;if(!r)return t;switch(e.constraintType){case"mso":return new Date(r);case"snet":return r.getTime()>t.getTime()?new Date(r):t;case"fnet":var i=this.#ca(e),s=this.#g.addHours(new Date(r),-i);return s.getTime()>t.getTime()?s:t;case"mfo":i=this.#ca(e);return this.#g.addHours(new Date(r),-i);default:return t}}#ga(e,t){var r=e.constraintDate;if(!r)return t;switch(e.constraintType){case"mfo":return new Date(r);case"snlt":var i=this.#ca(e),s=this.#g.addHours(new Date(r),i);return s.getTime()<t.getTime()?s:t;case"fnlt":return r.getTime()<t.getTime()?new Date(r):t;case"mso":i=this.#ca(e);return this.#g.addHours(new Date(r),i);default:return t}}#ha(e,t){var r=null;for(var i of e)(!r||i.earlyFinish.getTime()>r.getTime())&&(r=new Date(i.earlyFinish));if(r){var s=new Map;for(var i of e)s.set(i,[]);for(var n of t)s.get(n.from).push(n);for(var a=e.length-1;a>=0;a--){i=e[a];var o,l=s.get(i);if(0===l.length)o=new Date(r);else for(var n of(o=new Date(r),l)){var h,d=n.to,c=n.lag.toHours(this.#g);switch(n.type){case"finishToStart":h=this.#g.addHours(d.lateStart,-c);break;case"finishToFinish":case"startToFinish":h=this.#g.addHours(d.lateFinish,-c);break;case"startToStart":var u=this.#ca(i);h=this.#g.addHours(d.lateStart,u-c)}h.getTime()<o.getTime()&&(o=h)}o=this.#ga(i,o),i.lateFinish=o;u=this.#ca(i);i.lateStart=u>0?this.#g.addHours(o,-u):new Date(o)}}}#da(e){for(var t of e)t.earlyStart&&t.lateStart&&(t.totalFloat=this.#g.getHoursBetween(t.earlyStart,t.lateStart),t.isCritical=Math.abs(t.totalFloat)<.001)}}const Ts=10,Cs=40,xs=96/25.4,ks={A4:[210,297],A3:[297,420],Letter:[215.9,279.4],Legal:[215.9,355.6]};function Es(e,t){return e.map(e=>function(e,t){if(!e)return"";if(e.includes(t)||e.includes('"')||e.includes("\n")||e.includes("\r"))return'"'+e.replace(/"/g,'""')+'"';return e}(e,t)).join(t)}function Ds(e){var t=e.getRow(1);t.font={bold:!0},t.fill={type:"pattern",pattern:"solid",fgColor:{argb:"FFF0F0F0"}}}function Ss(e){e.views=[{state:"frozen",ySplit:1}]}async function $s(){try{return await import("exceljs")}catch{throw new Error("ExcelJS is required for Excel export. Install it with: npm install exceljs")}}async function Rs(e){var t=await e.xlsx.writeBuffer();return new Blob([t],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})}function Ms(e,t,r,i,s,n,a,o,l){var h=n.getValue(),d=a.getValue();n.next(r.chartStart),a.next(0);try{var c=document.createElement("canvas");c.width=r.chartWidth*i,c.height=r.totalHeight*i;var u=c.getContext("2d");1!==i&&u.scale(i,i),u.fillStyle=s.chart.content.backgroundColor,u.fillRect(0,0,r.chartWidth,r.totalHeight),u.font=s.font.toString(1);var g=1===i?c:{width:r.chartWidth,height:r.totalHeight,getContext:()=>u};for(var m of(o.render(g),u.save(),u.beginPath(),u.rect(0,r.headerHeight,r.chartWidth,r.totalHeight-r.headerHeight),u.clip(),l))m.render(g);u.restore(),e.drawImage(c,0,0,c.width,c.height,t,0,r.chartWidth,r.totalHeight)}finally{n.next(h),a.next(d)}}class Ls{calculateChartLayout(e,t,r,i,s){var n=e.currentZoom,a=n.axis[0],o=function(e){for(var t=[],r=0;r<e.columnsLength;r++){var i=e.getColumn(r);i.isVisible&&t.push({code:i.code,name:i.name,width:i.width,align:i.align,valueFormatter:i.valueFormatter,exportHeaderRenderer:i.exportHeaderRenderer??void 0,exportCellRenderer:i.exportCellRenderer??void 0})}return t}(t),l=Cs+o.reduce((e,t)=>e+t.width+Ts,0),h=r??s.startDate,d=i??s.endDate,c=a.getAdd(a.getCellStartTime(h),-3),u=a.getAdd(a.getCellStartTime(d),4);return{visibleColumns:o,sheetWidth:l,chartStart:c,chartWidth:Math.ceil(a.getX(u,c,n)),headerHeight:this.theme.contentTop}}renderSheet(e,t){this.renderSheetHeader(e,t),this.renderSheetRows(e,t),this.renderSheetRightBorder(e,t)}renderSheetHeader(e,t){var r=this.theme,i=r.font;e.font=i.toString(1),e.fillStyle=r.chart.header.backgroundColor,e.fillRect(0,0,t.sheetWidth,t.headerHeight),e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(0,t.headerHeight-.5),e.lineTo(t.sheetWidth,t.headerHeight-.5),e.stroke();var s=0;for(var n of(Rr(e,"#",new kr(s+5,0,30,t.headerHeight),"center",0,r.chart.header.textColor),s+=Cs,t.visibleColumns))n.exportHeaderRenderer?n.exportHeaderRenderer(e,s,0,n.width+Ts,t.headerHeight,r.chart.header.textColor):Rr(e,n.name,new kr(s+5,0,n.width,t.headerHeight),"left",0,r.chart.header.textColor),e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(s-.5,0),e.lineTo(s-.5,t.headerHeight),e.stroke(),s+=n.width+Ts}renderSheetRightBorder(e,t){var r=this.theme;e.strokeStyle=r.chart.header.cellBorderColor,e.beginPath(),e.moveTo(t.sheetWidth-.5,0),e.lineTo(t.sheetWidth-.5,t.totalHeight),e.stroke()}}class Is extends Ls{#kt;#ma;constructor(e,t){super(),this.#kt=e,this.#ma=t}get theme(){return this.#kt.theme$.getValue()}calculateDimensions(){var e=this.calculateChartLayout(this.#kt.timeline,this.#ma,this.#kt.list.minStartTime,this.#kt.list.maxEndTime,this.#kt.projectTimeline$.getValue()),t=this.#pa(),r=e.headerHeight+t*(this.theme.rowHeight+1);return{visibleColumns:e.visibleColumns,visibleRowCount:t,sheetWidth:e.sheetWidth,chartWidth:e.chartWidth,chartStart:e.chartStart,headerHeight:e.headerHeight,totalHeight:r}}renderSheetRows(e,t){for(var r=this.theme,i=r.font,s=r.rowHeight+1,n=t.headerHeight,a=0;a<this.#kt.list.length;a++){var o=this.#kt.list.getTask(a);if(!o.hidden){var l=0,h=this.#kt.list.getTaskNumber(o).toString();for(var d of(Rr(e,h,new kr(l+5,n,30,s),"center",0,"#808080"),l+=Cs,t.visibleColumns)){if(d.exportCellRenderer)d.exportCellRenderer(e,o,l+5,n,d.width,s);else{var c=d.valueFormatter(o),u=l+5,g=d.width;if("name"===d.code){var m=16*o.level;u+=m,g-=m}var p="left";"center"===d.align&&(p="center"),"right"===d.align&&(p="right"),c&&(e.font="summary"===o.type?`bold ${i.toString(1)}`:i.toString(1),Rr(e,c,new kr(u,n,g,s),p,0,r.sheet.textColor),e.font=i.toString(1))}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(l-.5,n),e.lineTo(l-.5,n+s),e.stroke(),l+=d.width+Ts}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(0,n+s-.5),e.lineTo(t.sheetWidth,n+s-.5),e.stroke(),n+=s}}}renderChart(e,t,r,i=1){Ms(e,t,r,i,this.theme,this.#kt.timeline.visibleStartTime$,this.#kt.sheetScrollTop$,new Pr(this.#kt),[new Cr(this.#kt),new Si(this.#kt),new Ei(this.#kt),new Ti(this.#kt)])}#pa(){var e=this.#kt.list.getLastNonEmpty(!1);if(!e)return 0;for(var t=0,r=this.#kt.list.indexOf(e);r>=0;r--){this.#kt.list.getTask(r).hidden||t++}return t}}class Ps{#hs;constructor(e){this.#hs=e}async exportToImage(){await(this.#hs.preload?.());var e=this.#hs.calculateDimensions(),t=this.#hs.theme,r=e.sheetWidth+e.chartWidth,i=document.createElement("canvas");i.width=r,i.height=e.totalHeight;var s=i.getContext("2d");return s.fillStyle=t.sheet.backgroundColor,s.fillRect(0,0,r,e.totalHeight),this.#hs.renderSheet(s,e),this.#hs.renderChart(s,e.sheetWidth,e),Vt().showWatermark&&Ri(s,r,e.totalHeight),new Promise((e,t)=>{i.toBlob(r=>{r?e(r):t(new Error("Failed to export image"))},"image/png")})}}class As extends Ps{constructor(e,t){super(new Is(e,t))}}class Hs{#kt;#ma;constructor(e,t){this.#kt=e,this.#ma=t}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.columns??null,s=e?.includeLinks??!1,n=this.#va(i),a=[];r&&a.push(Es(["#",...n.map(e=>e.name)],t));for(var o=0;o<this.#kt.list.length;o++){var l=this.#kt.list.getTask(o);"empty"!==l.type&&a.push(Es([this.#kt.list.getTaskNumber(l).toString(),...n.map(e=>e.valueFormatter(l))],t))}var h=a.join("\n");if(s&&this.#kt.list.linksLength>0){h+="\n\n";var d=this.#kt.locale$.getValue();r&&(h+=Es([d.labels.from,d.labels.to,d.labels.type,d.labels.lag],t)+"\n");for(o=0;o<this.#kt.list.linksLength;o++){var c=this.#kt.list.getLink(o),u=0!==c.lag.value?c.lag.toString():"";h+=Es([this.#kt.list.getTaskNumber(c.from).toString(),this.#kt.list.getTaskNumber(c.to).toString(),c.type,u],t)+"\n"}}return h}#va(e){for(var t=[],r=0;r<this.#ma.columnsLength;r++){var i=this.#ma.getColumn(r);if("icons"!==i.code){if(e){if(!e.includes(i.code))continue}else if(!i.isVisible)continue;t.push({code:i.code,name:i.name,width:i.width,valueFormatter:i.valueFormatter})}}return t}async exportToExcel(e){var t=await $s(),r=this.#kt.locale$.getValue(),i=e?.sheetName??r.export.tasksSheetName,s=e?.includeLinksSheet??!0,n=e?.includeResourcesSheet??!0,a=e?.includeFormatting??!0,o=e?.columns??null,l=new t.Workbook;return this.#fa(l,i,o,a),s&&this.#kt.list.linksLength>0&&this.#ya(l,a),n&&this.#kt.resources.length>0&&this.#ba(l,a),Rs(l)}#fa(e,t,r,i){var s=this.#va(r),n=e.addWorksheet(t),a=[{header:"#",key:"number",width:6}];for(var o of s){var l=Math.max(10,Math.round(o.width/7));a.push({header:o.name,key:o.code,width:l})}n.columns=a,i&&Ds(n);for(var h=0;h<this.#kt.list.length;h++){var d=this.#kt.list.getTask(h);if("empty"!==d.type){var c={number:this.#kt.list.getTaskNumber(d)};for(var o of s)c[o.code]=o.valueFormatter(d);var u=n.addRow(c);if(i&&d.level>0){var g=u.getCell("name");g&&(g.alignment={indent:2*d.level})}i&&"summary"===d.type&&(u.font={bold:!0})}}i&&Ss(n)}#ya(e,t){var r=this.#kt.locale$.getValue(),i=e.addWorksheet(r.export.linksSheetName);i.columns=[{header:r.labels.from,key:"from",width:8},{header:r.labels.to,key:"to",width:8},{header:r.labels.type,key:"type",width:18},{header:r.labels.lag,key:"lag",width:12}],t&&Ds(i);for(var s=0;s<this.#kt.list.linksLength;s++){var n=this.#kt.list.getLink(s);i.addRow({from:this.#kt.list.getTaskNumber(n.from),to:this.#kt.list.getTaskNumber(n.to),type:n.type,lag:0!==n.lag.value?n.lag.toString():""})}t&&Ss(i)}#ba(e,t){var r=this.#kt.locale$.getValue(),i=e.addWorksheet(r.export.resourcesSheetName);i.columns=[{header:"Name",key:"name",width:25},{header:"Type",key:"type",width:12},{header:"Rate",key:"rate",width:15}],t&&Ds(i);for(var s=0;s<this.#kt.resources.length;s++){var n=this.#kt.resources.getResource(s),a="";if(n.rate){var o="perHour"===n.rate.type?"/h":"/d";a=n.rate.value+o}i.addRow({name:n.name,type:n.type,rate:a})}t&&Ss(i)}}class Vs{#hs;constructor(e){this.#hs=e}get renderer(){return this.#hs}async exportToPdf(e){var t;try{t=await import("jspdf")}catch{throw new Error("jsPDF is required for PDF export. Install it with: npm install jspdf")}await(this.#hs.preload?.());var r=e?.pageSize??"A4",i=e?.orientation??"landscape",s=e?.margin??{top:10,right:10,bottom:10,left:10},n=e?.includeSheet??!0,a=e?.includeChart??!0,o=e?.quality??1,[l,h]=ks[r];"landscape"===i&&([l,h]=[h,l]);var d=h,c=l-s.left-s.right,u=d-s.top-s.bottom,g=e?.header?6:0,m=e?.footer?6:0,p=u-g-m,v=this.#hs.calculateDimensions(),f=this.#hs.theme,y=n?v.sheetWidth:0,b=y+(a?v.chartWidth:0),w=document.createElement("canvas");w.width=2*b,w.height=2*v.totalHeight;var T,C=w.getContext("2d");if(C.scale(2,2),C.fillStyle=f.sheet.backgroundColor,C.fillRect(0,0,b,v.totalHeight),n&&this.#hs.renderSheet(C,v),a&&this.#hs.renderChart(C,y,v,2),Vt().showWatermark&&Ri(C,b,v.totalHeight),e?.fitToSinglePage){var x=b/xs+s.left+s.right,k=v.totalHeight/xs+s.top+s.bottom+g+m;T=new t.jsPDF({orientation:i,format:[x,k],unit:"mm"});var E=b/xs,D=v.totalHeight/xs,S=s.top+g;T.addImage(w.toDataURL("image/png",o),"PNG",s.left,S,E,D),this.#wa(T,e,s,1,1,k)}else{for(var $=c*xs,R=p*xs,M=v.headerHeight,L=this.computeVerticalPageBreaks(v,R,M),I=Math.max(1,Math.ceil(b/$)),P=[],A=0;A<L.length;A++)for(var H=0;H<I;H++){var V=H*$,B=Math.min($,b-V),F=L[A].srcY,z=L[A].height;P.push({hPage:H,vPage:A,srcX:V,contentSrcY:F,srcW:B,contentSrcH:z})}T=new t.jsPDF({orientation:i,format:r,unit:"mm"});for(var O=P.length,N=0;N<P.length;N++){var W=P[N];N>0&&T.addPage();var U=Math.ceil(W.srcW),j=Math.ceil(M+W.contentSrcH);if(!(U<=0||j<=0)){var X=document.createElement("canvas");X.width=2*U,X.height=2*j;var Y=X.getContext("2d");Y.fillStyle=f.sheet.backgroundColor,Y.fillRect(0,0,X.width,X.height),Y.drawImage(w,2*W.srcX,0,2*W.srcW,2*M,0,0,2*W.srcW,2*M),W.contentSrcH>0&&Y.drawImage(w,2*W.srcX,2*W.contentSrcY,2*W.srcW,2*W.contentSrcH,0,2*M,2*W.srcW,2*W.contentSrcH);E=W.srcW/xs,D=j/xs,S=s.top+g;T.addImage(X.toDataURL("image/png",o),"PNG",s.left,S,E,D),this.#wa(T,e,s,N+1,O,d)}}}return T.output("blob")}#wa(e,t,r,i,s,n){if(t?.header){var a="function"==typeof t.header?t.header(i,s):t.header;e.setFontSize(9),e.setTextColor(128),e.text(a,r.left,r.top+4)}if(t?.footer){var o="function"==typeof t.footer?t.footer(i,s):t.footer;e.setFontSize(9),e.setTextColor(128),e.text(o,r.left,n-r.bottom)}}}class Bs extends Vs{constructor(e,t){super(new Is(e,t))}computeVerticalPageBreaks(e,t,r){for(var i=this.renderer.theme.rowHeight+1,s=Math.max(1,Math.floor((t-r)/i)),n=e.visibleRowCount+1,a=Math.max(1,Math.ceil(n/s)),o=[],l=0;l<a;l++){var h=r+l*s*i,d=Math.min(s*i,e.totalHeight-h);d<0&&(d=0),o.push({srcY:h,height:d})}return o}}class Fs{#Ta=[];#Ca=-1;#xa=50;#ka=!1;#Ea=0;#Da=!1;#Sa;#$a;canUndo$=new t(!1);canRedo$=new t(!1);constructor(e,t){this.#Sa=e,this.#$a=t}initialize(){this.#Ta=[this.#Sa()],this.#Ca=0}requestSnapshot(){this.#ka||(this.#Ea>0?this.#Da=!0:this.#Ra())}beginBatch(){this.#Ea++}endBatch(){this.#Ea--,0===this.#Ea&&this.#Da&&(this.#Da=!1,this.#Ra())}#Ra(){var e=this.#Sa();if(!(this.#Ca>=0&&e===this.#Ta[this.#Ca])){for(this.#Ta.splice(this.#Ca+1),this.#Ta.push(e),this.#Ca++;this.#Ta.length>this.#xa;)this.#Ta.shift(),this.#Ca--;this.#Ma()}}undo(){this.canUndo$.getValue()&&(this.#ka=!0,this.#Ca--,this.#$a(this.#Ta[this.#Ca]),this.#ka=!1,this.#Ma())}redo(){this.canRedo$.getValue()&&(this.#ka=!0,this.#Ca++,this.#$a(this.#Ta[this.#Ca]),this.#ka=!1,this.#Ma())}#Ma(){this.canUndo$.next(this.#Ca>0),this.canRedo$.next(this.#Ca<this.#Ta.length-1)}}class zs{dataSource;rowHeight;canEdit$;get canEdit(){return this.canEdit$.getValue()}scrollTop$;rowAdded$;selectedItems$;focusedCell$;cellEditing$;cellInvalidValue$;cellDialogEdit$;cellInputEdit$;columnHeaderContextMenu$;columnResized$;columnReordered$;rowContextMenu$;rowMouseOver$;constructor(r,i=32){this.dataSource=r,this.rowHeight=i,this.canEdit$=new t(!0),this.scrollTop$=new t(0),this.rowAdded$=new e,this.selectedItems$=new t([]),this.focusedCell$=new t(null),this.cellEditing$=new t(null),this.cellInvalidValue$=new e,this.cellDialogEdit$=new e,this.cellInputEdit$=new e,this.columnHeaderContextMenu$=new e,this.columnResized$=new e,this.columnReordered$=new e,this.rowContextMenu$=new e,this.rowMouseOver$=new t(null)}}class Os{#Ie;#T=new r;itemChanged$=new e;itemRemoved$=new e;itemCollapsedChanged$=new e;complexOperationFinished$;constructor(e){this.#Ie=e,this.complexOperationFinished$=e.complexOperationFinished$,this.#T.add(e.taskChanged$.subscribe(e=>this.itemChanged$.next({item:e.task}))),this.#T.add(e.taskRemoved$.subscribe(e=>this.itemRemoved$.next({item:e.task}))),this.#T.add(e.taskCollapsedChanged$.subscribe(e=>this.itemCollapsedChanged$.next({item:e.task})))}destroy(){this.#T.unsubscribe()}get list(){return this.#Ie}get length(){return this.#Ie.length}getItem(e){return this.#Ie.getTask(e)}getItemById(e){return this.#Ie.getTaskById(e)}indexOf(e){return this.#Ie.indexOf(e)}addEmptyItem(){return this.#Ie.addEmptyTask()}insertEmptyItem(e){return this.#Ie.insertEmptyTask(e)}removeItems(e){this.#Ie.removeTasks(e)}getItemLabel(e){return this.#Ie.getTaskNumber(e).toString()}isItemHidden(e){return e.hidden}getNextVisible(e){return this.#Ie.getNextVisible(e)}getPreviousVisible(e){return this.#Ie.getPreviousVisible(e)}indent(e){this.#Ie.indent(e)}outdent(e){this.#Ie.outdent(e)}moveUp(e){this.#Ie.moveUp(e)}moveDown(e){this.#Ie.moveDown(e)}}const Ns={language:"en-US",columns:{name:"Name",length:"Length",start:"Start",end:"End",progress:"Progress",resources:"Resources",work:"Work",cost:"Cost"},columnTooltips:{work:"Work days or hours allocated for this task. Calculated automatically when one or more resources are assigned.",cost:"Cost calculated automatically when one or more resources are assigned."},tooltips:{addTask:"Add task",addTaskPart:"Add task part",moveTask:"Move task",moveTaskPart:"Move task part",resizeTask:"Resize task",resizeTaskPart:"Resize task part",moveMilestone:"Move milestone",setProgress:"Set progress",addLink:"Add a link"},labels:{start:"Start",end:"End",length:"Length",progress:"Progress",from:"From",to:"To",type:"Type",lag:"Lag"},constraints:{asap:"As Soon As Possible",alap:"As Late As Possible",mso:"Must Start On",mfo:"Must Finish On",snet:"Start No Earlier Than",snlt:"Start No Later Than",fnet:"Finish No Earlier Than",fnlt:"Finish No Later Than"},linkTypes:{finishToStart:"Finish → Start",startToStart:"Start → Start",finishToFinish:"Finish → Finish",startToFinish:"Start → Finish"},warnings:{behindSchedule:"The task is behind schedule",behindScheduleByOneDay:"by one day",behindScheduleByDays:e=>`by ${e} days`,constraintViolation:(e,t)=>`Task violates '${e} ${t}' constraint`},export:{tasksSheetName:"Tasks",linksSheetName:"Links",resourcesSheetName:"Resources",eventsSheetName:"Events",calendarsSheetName:"Calendars"},scheduler:{resource:"Resource",name:"Name",type:"Type",addEvent:"Add event",moveEvent:"Move event",resizeEvent:"Resize event"},calendar:{today:"Today",month:"Month",week:"Week",day:"Day",agenda:"Agenda",allDay:"all-day",noEvents:"No events",more:e=>`+${e} more`,myCalendars:"My Calendars",addCalendar:"Add calendar",ariaCalendar:"Event Calendar",ariaSidebar:"Calendar sidebar",ariaNavigation:"Navigation",ariaViewMode:"View mode",ariaGoToToday:"Go to today",ariaPrevious:"Previous",ariaNext:"Next",ariaAllDayEvents:"All-day events",ariaCalendarGrid:"Calendar grid",ariaAgendaList:"Agenda event list",ariaSelectMonthYear:"Select month and year",ariaToggleCalendar:e=>`Show or hide ${e}`,ariaRemoveCalendar:e=>`Remove ${e}`,ariaMoreEvents:e=>`${e} more events`}};class Ws{#kt;#La=null;constructor(e){this.#kt=e}async copy(e){var t=e.filter(e=>"empty"!==e.type);if(0!==t.length){this.#La=this.#Ia(t);var r=this.#Pa(t);try{await navigator.clipboard.writeText(r)}catch{}}}async cut(e){await this.copy(e);var t=e.filter(e=>"empty"!==e.type);t.length>0&&this.#kt.list.removeTasks(t)}async paste(){if(this.#La)return this.#Aa(this.#La);try{var e=await navigator.clipboard.readText();if(e&&e.trim().length>0)return this.#Ha(e)}catch{}return null}#Ia(e){var t=new Set(e.map(e=>e.id)),r=[];for(var i of e)r.push(i.toAny());for(var s=[],n=[],a=0;a<this.#kt.list.linksLength;a++){var o=this.#kt.list.getLink(a),l=t.has(o.from.id),h=t.has(o.to.id);if(l||h){var d=o.toAny();n.push(d),l&&h&&s.push(d)}}return{tasks:r,links:s,allLinks:n}}#Aa(e){var t=this.#kt.list,r=this.#Va(),i=new Map,s=[];for(var n of e.tasks){var a=n.id,o=new cr(null,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies);t.insertTask(r,o),this.#Ba(o,n),i.set(a,o),s.push(o),r++}for(var l=new Set(s),h=0;h<e.tasks.length;h++){var d=s[h],c=(n=e.tasks[h]).parent;d.parent&&!l.has(d.parent)&&c&&i.has(c)&&d.parent.removeSubtask(d)}for(h=0;h<e.tasks.length;h++){n=e.tasks[h],d=s[h];var u=n.parent;if(u&&i.has(u)&&!d.parent)i.get(u).addSubtask(d)}var g=[];for(var m of e.links){var p=i.get(m.from),v=i.get(m.to);if(p&&v&&t.isValidTypeForLink(p)&&t.isValidTypeForLink(v)&&!t.existsLinkBetween(p,v)&&!t.wouldCreateCycle(p,v)){var f=m.lag?ur.fromAny(m.lag):void 0,y=t.addLink(p,v,m.type,f);g.push(y)}}var b=new Set(e.tasks.map(e=>e.id)),w=[];for(var m of e.allLinks){var T=b.has(m.from),C=b.has(m.to);T&&!C?w.push({type:m.type,fromId:m.from,toId:m.to,externalSide:"to"}):!T&&C&&w.push({type:m.type,fromId:m.from,toId:m.to,externalSide:"from"})}return t.complexOperationFinished$.next(),{tasks:s,links:g,taskIdMap:i,droppedLinks:w}}#Ba(e,t){if(t.startTime&&(e.startTime=_t(t.startTime)),t.endTime&&(e.endTime=_t(t.endTime)),t.name&&(e.name=t.name),void 0!==t.color&&(e.color=t.color),t.note&&(e.note=t.note),void 0!==t.progress&&null!==t.progress&&(e.progress=t.progress),t.constraintType&&"asap"!==t.constraintType&&(e.constraintType=t.constraintType,t.constraintDate&&(e.constraintDate=_t(t.constraintDate))),t.resources&&t.resources.length>0)for(var r of t.resources){var i=r.resourceId,s=this.#kt.resources.getResourceById(i);s&&e.addResource(null,s,r.capacity??100)}}#Ha(e){var t=this.#kt.list,r=this.#Va(),i=e.split("\n").filter(e=>e.trim().length>0),s=[],n=new Map;for(var a of i){var o=a.split("\t"),l=o[0]?.trim();if(l){var h=t.insertEmptyTask(r);if(h.name=l,o[1]?.trim())try{h.startTime=new Date(o[1].trim())}catch{}if(o[2]?.trim())try{h.endTime=new Date(o[2].trim())}catch{}if(o[3]?.trim()){var d=parseFloat(o[3].trim());isNaN(d)||(h.progress=Math.min(100,Math.max(0,d)))}var c=er(8);n.set(c,h),s.push(h),r++}}return t.complexOperationFinished$.next(),{tasks:s,links:[],taskIdMap:n,droppedLinks:[]}}#Va(){var e=this.#kt.sheetSelectedTasks$.getValue();if(e.length>0){var t=e[0];return this.#kt.list.indexOf(t)}var r=this.#kt.list.getLastNonEmpty();return r?this.#kt.list.indexOf(r)+1:0}#Pa(e){var t=[];for(var r of e){var i=r.name??"",s=r.startTime?qt(r.startTime):"",n=r.endTime?qt(r.endTime):"",a=null!==r.progress?r.progress.toString():"";t.push([i,s,n,a].join("\t"))}return t.join("\n")}}class Us{_hostElement;_wrapperElement;_subscriptions=new r;_undoManager;#Fa;#za=null;#Oa=!0;constructor(e){this._hostElement=e}createDom(){this._hostElement.classList.add("gc-host");var e=document.createElement("div");e.classList.add("gc-wrapper"),this.addWrapperClasses(e),e.style.visibility="hidden",this._hostElement.appendChild(e),this._wrapperElement=e;var t=document.createElement("div"),r=document.createElement("div"),i=document.createElement("div");return e.appendChild(t),e.appendChild(r),e.appendChild(i),{sheetElement:t,dividerElement:r,chartElement:i}}addWrapperClasses(e){}wireTheme(){this._subscriptions.add(this.subscribeThemeChange(()=>{this.#Na(),this.#Wa()})),this.#Na(),this.#Wa()}#Na(){var e,t;e=this._wrapperElement,t=this.getTheme(),e.style.fontFamily=t.font.name,e.style.fontSize=t.font.size+"pt"}#Wa(){var e,t,r;e=this._wrapperElement,t=this.getTheme(),(r=e.style).setProperty("--gc-sheet-header-bg-color",t.sheet.header.backgroundColor),r.setProperty("--gc-sheet-header-cell-border-color",t.sheet.header.cellBorderColor),r.setProperty("--gc-sheet-header-cell-divider-color",t.sheet.header.cellDividerColor??t.sheet.header.cellBorderColor),r.setProperty("--gc-sheet-grid-line-color",t.sheet.gridLineColor),r.setProperty("--gc-sheet-bg-color",t.sheet.backgroundColor),r.setProperty("--gc-sheet-text-color",t.sheet.textColor),r.setProperty("--gc-sheet-hover-bg-color",t.sheet.hoverBackgroundColor),r.setProperty("--gc-sheet-selected-bg-color",t.sheet.selectedBackgroundColor),r.setProperty("--gc-sheet-selected-row-header-color",t.sheet.selectedRowHeaderColor),r.setProperty("--gc-sheet-focus-border-color",t.sheet.focusBorderColor),r.setProperty("--gc-sheet-highlight-border-color",t.sheet.highlightBorderColor),r.setProperty("--gc-tree-icon-color",t.sheet.treeIconColor),r.setProperty("--gc-editor-bg-color",t.sheet.editorBackgroundColor),r.setProperty("--gc-editor-text-color",t.sheet.editorTextColor),r.setProperty("color-scheme",t.sheet.colorScheme),e.setAttribute("data-color-scheme",t.sheet.colorScheme)}wireKeyboard(){this.#Fa=e=>{this.#Ua(e)},this._wrapperElement.addEventListener("keydown",this.#Fa,!0)}#Ua(e){if(!this.isCellEditing()&&(e.ctrlKey||e.metaKey))switch(e.key){case"z":e.preventDefault(),e.shiftKey?this.redo():this.undo();break;case"y":e.preventDefault(),this.redo();break;case"+":case"=":e.preventDefault(),this.zoomIn();break;case"-":e.preventDefault(),this.zoomOut();break;case"c":e.preventDefault(),this.copy();break;case"x":e.preventDefault(),this.cut();break;case"v":e.preventDefault(),this.paste()}}get markers(){return this.ctx.markers$.getValue()}set markers(e){this.ctx.markers$.next(e)}addMarker(e){var t=[...this.ctx.markers$.getValue(),e];this.ctx.markers$.next(t)}removeMarker(e){var t=this.ctx.markers$.getValue().filter(t=>t!==e);this.ctx.markers$.next(t)}clearMarkers(){this.ctx.markers$.next([])}get canEdit(){return this.ctx.canEdit}set canEdit(e){this.ctx.canEdit$.next(e)}get autoZoomToFit(){return this.#Oa}set autoZoomToFit(e){this.#Oa=e}get showGridLines(){return this.ctx.showGridLines$.getValue()}set showGridLines(e){this.ctx.showGridLines$.next(e)}get showTodayLine(){return this.ctx.showTodayLine$.getValue()}set showTodayLine(e){this.ctx.showTodayLine$.next(e)}get canUndo$(){return this._undoManager.canUndo$}get canRedo$(){return this._undoManager.canRedo$}undo(){this.ctx.canEdit&&(this._undoManager.undo(),this.engineEvents.undone$.next())}redo(){this.ctx.canEdit&&(this._undoManager.redo(),this.engineEvents.redone$.next())}zoomIn(){return this.ctx.timeline.zoomIn()}zoomOut(){return this.ctx.timeline.zoomOut()}zoomToFitRange(e,t){if(e&&t){var r=this.getChartWidth();if(!(r<=0)){var i=this.ctx.timeline.findBestZoomIndex(e,t,r);this.ctx.timeline.zoomIndex$.next(i);var s=this.ctx.timeline.currentZoom.axis[0];this.ctx.timeline.visibleStartTime$.next(s.getAdd(s.getCellStartTime(e),-1))}}}goToProjectStart(){var e=this.ctx.timeline.currentZoom.axis[0],t=new Date(this.projectTimeline.startDate);t.setDate(t.getDate()-1),this.ctx.timeline.visibleStartTime$.next(e.getCellStartTime(t))}scrollToDate(e){var t=this.ctx.timeline.currentZoom.axis[0],r=t.getAdd(t.getCellStartTime(e),-1);this.ctx.timeline.visibleStartTime$.next(r)}get projectTimeline(){return this.ctx.projectTimeline$.getValue()}set projectTimeline(e){var t=e.startDate,r=e.endDate;if(t.getTime()>r.getTime())throw new Error("Invalid project date range");t=zt(t),r=zt(r),this.ctx.projectTimeline$.next(new Sr(t,r)),this.#Oa&&this.#ja()}get calendar$(){return this.ctx.calendar$}set calendar$(e){this.ctx.calendar$.next(e)}saveColumns(){return this.saveColumnsImpl()}loadColumns(e){this.loadColumnsImpl(e)}load(e){this.restoreState(e),this.#Oa&&this.hasData()&&this.#ja()}#ja(){this.getChartWidth()>0?this.zoomToFit():(this.#za?.disconnect(),this.#za=new ResizeObserver(()=>{this.getChartWidth()>0&&(this.#za.disconnect(),this.#za=null,this.zoomToFit())}),this.#za.observe(this.getChartElement()))}destroy(){this.#za?.disconnect(),this.#za=null,this._subscriptions.unsubscribe(),this.engineEvents.destroy(),this.destroyComponents(),this._wrapperElement.removeEventListener("keydown",this.#Fa,!0),this._wrapperElement.parentNode&&this._wrapperElement.parentNode.removeChild(this._wrapperElement),this._hostElement.classList.remove("gc-host")}}class js extends Us{#kt;#ma;#Xa;#Ya;#Ka;#Za;#Ga;get ctx(){return this.#kt}get engineEvents(){return this.#Ga}getChartWidth(){return this.#Ya.chartWidth}getChartElement(){return this.#Ya.chartElement}getTheme(){return this.#kt.theme$.getValue()}subscribeThemeChange(e){return this.#kt.theme$.subscribe(e)}isCellEditing(){return null!==this.#kt.sheetCellEditing$.getValue()}saveColumnsImpl(){return this.#ma.saveColumns()}loadColumnsImpl(e){this.#ma.loadColumns(e)}hasData(){return this.list.length>0}destroyComponents(){this.#Ya.destroy(),this.#ma.destroy(),this.#Xa.destroy()}get list(){return this.#kt.list}get resources(){return this.#kt.resources}get events(){return this.#Ga}get sheet(){return this.#ma}get selectedTasks(){return this.#kt.sheetSelectedTasks$.getValue()}get showCriticalPath(){return this.#kt.showCriticalPath$.getValue()}set showCriticalPath(e){e?this.#qa():this.#_a(),this.#kt.showCriticalPath$.next(e)}get showBaseline(){return this.#kt.showBaseline$.getValue()}set showBaseline(e){this.#kt.showBaseline$.next(e)}get filter(){return this.#kt.list.filter}set filter(e){this.#kt.list.filter=e}clearFilter(){this.#kt.list.filter=null}get hasBaseline(){for(var e=0;e<this.#kt.list.length;e++){if(this.#kt.list.getTask(e).baselineStartTime)return!0}return!1}saveBaseline(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);"empty"!==t.type&&(t.baselineStartTime=t.startTime?new Date(t.startTime):null,t.baselineEndTime=t.endTime?new Date(t.endTime):null)}this.#kt.showBaseline$.next(!0),this.#Ka.requestSnapshot()}clearBaseline(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);t.baselineStartTime=null,t.baselineEndTime=null}this.#kt.showBaseline$.next(!1),this.#Ka.requestSnapshot()}constructor(e){super(e),this.#kt=new Xs,this._subscriptions.add(this.#kt.list.resourceAdding$.subscribe(e=>{this.#lt(e)})),this._subscriptions.add(this.#kt.resources.resourceRemoving$.subscribe(e=>{this.#Ja(e)})),this._subscriptions.add(this.#kt.calendar$.subscribe(()=>{this.#Qa()}));var{sheetElement:t,dividerElement:r,chartElement:i}=this.createDom();this.#ma=new us(this.#kt,t),this.#Xa=new ys(this.#kt,this._wrapperElement,t,r,i),this.#Ya=new Li(this.#kt,i),this.#Ga=new Ys(this.#kt),this.wireTheme(),this._subscriptions.add(this.#kt.list.evaluatingDependenciesFinished$.subscribe(()=>this.#eo())),this._subscriptions.add(this.#kt.list.complexOperationFinished$.subscribe(()=>this.#eo())),this._subscriptions.add(this.#kt.list.filterChanged$.subscribe(()=>this.#kt.list.complexOperationFinished$.next())),this.#Za=new Ws(this.#kt),this.#Ka=new Fs(()=>this.save(),e=>this.restoreState(e)),this._undoManager=this.#Ka,this._subscriptions.add(this.#kt.list.taskAdded$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#kt.list.taskChanged$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#kt.list.taskRemoved$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#kt.list.linkAdded$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#kt.list.linkRemoved$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#kt.list.complexOperationFinished$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#kt.list.evaluatingDependenciesFinished$.subscribe(()=>this.#Ka.requestSnapshot())),this.#Ka.initialize(),this.wireKeyboard()}#lt(e){if(!this.#kt.resources.getResourceById(e.resource.id))throw new Error("The resource is not in the list of resources");if(e.task.getResourceByResourceId(e.resource.id))throw new Error("The resource is already assigned to the task")}#Ja(e){if(this.#kt.list.getTasksUsingResource(e.resource).length>0)throw new Error("The resource cannot be removed, because is used by one or more tasks")}indent(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.indent(e)}outdent(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.outdent(e)}moveUp(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.moveUp(e)}moveDown(){if(!this.canEdit)return!1;var e=this.#kt.sheetSelectedTasks$.getValue();return this.#kt.list.moveDown(e)}async copy(){var e=this.#kt.sheetSelectedTasks$.getValue();await this.#Za.copy(e)}async cut(){if(this.canEdit){var e=this.#kt.sheetSelectedTasks$.getValue();await this.#Za.cut(e)}}async paste(){if(!this.canEdit)return null;this._undoManager.beginBatch();try{var e=await this.#Za.paste();return e&&this.#Ga.tasksPasted$.next(e),e}finally{this._undoManager.endBatch()}}scrollToTask(e){if("empty"!==e.type){for(var t=e.parent;t;)t.collapsed&&t.toggleCollapsed(),t=t.parent;e.startTime&&this.scrollToDate(e.startTime),this.#ma.scrollToItem(e)}}zoomToFit(e){var t=null,r=null;if(e&&e.length>0)for(var i of e)i.startTime&&(!t||i.startTime.getTime()<t.getTime())&&(t=i.startTime),i.endTime&&(!r||i.endTime.getTime()>r.getTime())&&(r=i.endTime);else t=this.#kt.list.minStartTime,r=this.#kt.list.maxEndTime;this.zoomToFitRange(t,r)}get settings(){return this.#kt.settings}save(){for(var e=-1,t=0;t<this.list.length;t++){"empty"!=(i=this.list.getTask(t)).type&&(e=t)}var r=[];for(t=0;t<=e;t++){var i=this.list.getTask(t);r.push(i.toAny())}var s=[];for(t=0;t<this.list.linksLength;t++){var n=this.list.getLink(t);s.push(n.toAny())}var a={startDate:qt(this.projectTimeline.startDate),endDate:qt(this.projectTimeline.endDate)},o=[];for(t=0;t<this.resources.length;t++)o.push(this.resources.getResource(t).toAny());var l=this.markers.map(e=>({date:qt(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})),h={tasks:r,links:s,resources:o,projectTimeline:a,taskCount:this.list.length,showTodayLine:this.showTodayLine,markers:l};return JSON.stringify(h,(e,t)=>null===t?void 0:t)}restoreState(e){this.sheet.clearSelection();var t=JSON.parse(e);if(t.resources){for(var r=[],i=0;i<t.resources.length;i++)r.push(vs.fromAny(t.resources[i]));this.#kt.resources.assign(r)}var s=[];for(i=0;i<t.tasks.length;i++){var n=(o=t.tasks[i]).id;(a=new cr(n,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies)).deserializeProperties(o,this.#kt.resources),s.push(a)}if(void 0!==t.taskCount&&null!==t.taskCount)for(;s.length<t.taskCount;)s.push(new cr(null,this.#kt.calendar$,this.#kt.projectTimeline$,()=>this.#kt.list.evaluatingDependencies));for(i=0;i<t.tasks.length;i++){var a,o=t.tasks[i];(a=s[i]).deserializePropertiesHierarchy(o,s)}var l=[];for(i=0;i<t.links.length;i++){o=t.links[i];var h=gr.fromAny(o,s);l.push(h)}if(this.list.assign(s,l),t.projectTimeline)this.#kt.projectTimeline$.next(new Sr(new Date(t.projectTimeline.startDate),new Date(t.projectTimeline.endDate)));else{var d=this.list.minStartTime,c=this.list.maxEndTime;d&&c&&this.#kt.projectTimeline$.next(new Sr(d,c))}if(void 0!==t.showTodayLine&&this.#kt.showTodayLine$.next(t.showTodayLine),t.markers){var u=t.markers.map(e=>({date:new Date(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle}));this.#kt.markers$.next(u)}}async exportToImage(){return new As(this.#kt,this.#ma).exportToImage()}exportToCsv(e){return new Hs(this.#kt,this.#ma).exportToCsv(e)}async exportToPdf(e){return new Bs(this.#kt,this.#ma).exportToPdf(e)}async exportToExcel(e){return new Hs(this.#kt,this.#ma).exportToExcel(e)}#Qa(){new bs(this).recalculate(),this.#eo()}#eo(){this.#kt.showCriticalPath$.getValue()&&this.#qa()}#qa(){new ws(this.#kt.list,this.#kt.calendar).calculate()}#_a(){for(var e=0;e<this.#kt.list.length;e++){var t=this.#kt.list.getTask(e);t.earlyStart=null,t.earlyFinish=null,t.lateStart=null,t.lateFinish=null,t.totalFloat=null,t.freeFloat=null,t.isCritical=!1}}}class Xs{table;settings;locale$;calendar$;list;resources;timeline;get sheetScrollTop$(){return this.table.scrollTop$}get sheetRowAdded$(){return this.table.rowAdded$}get sheetSelectedTasks$(){return this.table.selectedItems$}get sheetFocusedCell$(){return this.table.focusedCell$}get sheetCellEditing$(){return this.table.cellEditing$}get sheetCellDialogEdit$(){return this.table.cellDialogEdit$}get sheetCellInputEdit$(){return this.table.cellInputEdit$}get sheetCellInvalidValue$(){return this.table.cellInvalidValue$}get sheetRowContextMenu$(){return this.table.rowContextMenu$}get sheetColumnHeaderContextMenu$(){return this.table.columnHeaderContextMenu$}get sheetColumnResized$(){return this.table.columnResized$}get sheetColumnReordered$(){return this.table.columnReordered$}get canEdit$(){return this.table.canEdit$}get canEdit(){return this.table.canEdit}sheetRowMouseOver$=new t(null);autoScrolling=!1;chartMouseWheel$;chartRedrawn$;chartBackgroundRedrawn$;chartCursor$;chartTaskHover$;theme$;showGridLines$=new t(!0);showCriticalPath$=new t(!1);showBaseline$=new t(!1);showTodayLine$=new t(!0);markers$=new t([]);taskDblClick$=new e;taskContextMenu$=new e;chartContextMenu$=new e;projectTimeline$;dividerPositionChanged$=new e;dividerResizing$=new t(!1);constructor(){this.projectTimeline$=new t(new Sr(Bt(),Ft(180))),this.locale$=new t(Ns),this.settings=new Ks(this),this.calendar$=new t(new yr),this.timeline=new Ii(this.calendar$,this.locale$),this.list=new fr(this.calendar$,this.projectTimeline$,this.locale$),this.resources=new ms,this.theme$=new t(this.#to());var r=new Os(this.list);this.table=new zs(r,this.theme$.getValue().rowHeight),this.chartMouseWheel$=new e,this.chartRedrawn$=new e,this.chartBackgroundRedrawn$=new e,this.chartCursor$=new e,this.chartTaskHover$=new t(null)}#to(){return new gs}getContentBottom(e){for(var t=this.theme$.getValue(),r=t.rowHeight+1,i=0,s=0;s<this.list.length;s++)this.list.getTask(s).hidden||i++;var n=t.contentTop+i*r;return Math.min(n,e)}getRowY(e){for(var t=this.theme$.getValue(),r=t.rowHeight+1,i=this.list.indexOf(e),s=0,n=0;n<i;n++){this.list.getTask(n).hidden||s++}return t.contentTop-this.sheetScrollTop$.getValue()+r*s}get calendar(){return this.calendar$.getValue()}}class Ys{#T=new r;taskAdded$=new e;taskChanged$=new e;taskRemoved$=new e;taskDblClick$=new e;taskContextMenu$=new e;chartContextMenu$=new e;sheetRowContextMenu$=new e;sheetColumnHeaderContextMenu$=new e;sheetColumnResized$=new e;sheetColumnReordered$=new e;sheetCellDialogEdit$=new e;sheetCellInputEdit$=new e;sheetCellEditing$=new e;sheetCellInvalidValue$=new e;projectTimeline$=new e;linkAdded$=new e;linkRemoved$=new e;tasksPasted$=new e;undone$=new e;redone$=new e;constructor(e){this.#T.add(e.taskDblClick$.subscribe(e=>{this.taskDblClick$.next(e)})),this.#T.add(e.taskContextMenu$.subscribe(e=>{this.taskContextMenu$.next(e)})),this.#T.add(e.chartContextMenu$.subscribe(e=>{this.chartContextMenu$.next(e)})),this.#T.add(e.sheetRowContextMenu$.subscribe(e=>{this.sheetRowContextMenu$.next(e)})),this.#T.add(e.sheetColumnHeaderContextMenu$.subscribe(e=>{this.sheetColumnHeaderContextMenu$.next(e)})),this.#T.add(e.sheetColumnResized$.subscribe(e=>{this.sheetColumnResized$.next(e)})),this.#T.add(e.sheetColumnReordered$.subscribe(e=>{this.sheetColumnReordered$.next(e)})),this.#T.add(e.sheetCellDialogEdit$.subscribe(e=>{this.sheetCellDialogEdit$.next(e)})),this.#T.add(e.sheetCellInputEdit$.subscribe(e=>{this.sheetCellInputEdit$.next(e)})),this.#T.add(e.sheetCellEditing$.subscribe(e=>{this.sheetCellEditing$.next(e)})),this.#T.add(e.sheetCellInvalidValue$.subscribe(()=>{this.sheetCellInvalidValue$.next()})),this.#T.add(e.list.taskAdded$.subscribe(e=>{this.taskAdded$.next(e)})),this.#T.add(e.list.taskChanged$.subscribe(e=>{this.taskChanged$.next(e)})),this.#T.add(e.list.taskRemoved$.subscribe(e=>{this.taskRemoved$.next(e)})),this.#T.add(e.list.linkAdded$.subscribe(e=>{this.linkAdded$.next(e)})),this.#T.add(e.list.linkRemoved$.subscribe(e=>{this.linkRemoved$.next(e)})),this.#T.add(e.projectTimeline$.subscribe(e=>{this.projectTimeline$.next(e)}))}destroy(){this.#T.unsubscribe()}}class Ks{ctx;#ro;get currencySymbol(){return this.#ro}set currencySymbol(e){e!=this.#ro&&(this.#ro=e,this.#f())}#io;get currencySymbolDisplayMode(){return this.#io}set currencySymbolDisplayMode(e){e!=this.#io&&(this.#io=e,this.#f())}get locale(){return this.ctx.locale$.getValue()}set locale(e){this.ctx.locale$.next(e),this.#f()}get theme(){return this.ctx.theme$.getValue()}set theme(e){this.ctx.theme$.next(e),this.#f()}changed$=new e;constructor(e){this.ctx=e,this.#ro="$",this.#io="beforeAmountWithSpace"}#f(){this.changed$.next()}}const Zs=Ns,Gs={language:"cs-CZ",columns:{name:"Název",length:"Délka",start:"Začátek",end:"Konec",progress:"Průběh",resources:"Zdroje",work:"Práce",cost:"Náklady"},columnTooltips:{work:"Pracovní dny nebo hodiny přidělené tomuto úkolu. Vypočítáno automaticky při přiřazení jednoho nebo více zdrojů.",cost:"Náklady vypočítané automaticky při přiřazení jednoho nebo více zdrojů."},tooltips:{addTask:"Přidat úkol",addTaskPart:"Přidat část úkolu",moveTask:"Přesunout úkol",moveTaskPart:"Přesunout část úkolu",resizeTask:"Změnit velikost úkolu",resizeTaskPart:"Změnit velikost části úkolu",moveMilestone:"Přesunout milník",setProgress:"Nastavit průběh",addLink:"Přidat vazbu"},labels:{start:"Začátek",end:"Konec",length:"Délka",progress:"Průběh",from:"Od",to:"Do",type:"Typ",lag:"Prodleva"},constraints:{asap:"Co nejdříve",alap:"Co nejpozději",mso:"Musí začít v",mfo:"Musí skončit v",snet:"Začít ne dříve než",snlt:"Začít ne později než",fnet:"Skončit ne dříve než",fnlt:"Skončit ne později než"},linkTypes:{finishToStart:"Konec → Začátek",startToStart:"Začátek → Začátek",finishToFinish:"Konec → Konec",startToFinish:"Začátek → Konec"},warnings:{behindSchedule:"Úkol je pozadu za plánem",behindScheduleByOneDay:"o jeden den",behindScheduleByDays:e=>`o ${e} dní`,constraintViolation:(e,t)=>`Úkol porušuje omezení '${e} ${t}'`},export:{tasksSheetName:"Úkoly",linksSheetName:"Vazby",resourcesSheetName:"Zdroje",eventsSheetName:"Události",calendarsSheetName:"Kalendáře"},scheduler:{resource:"Zdroj",name:"Název",type:"Typ",addEvent:"Přidat událost",moveEvent:"Přesunout událost",resizeEvent:"Změnit velikost události"},calendar:{today:"Dnes",month:"Měsíc",week:"Týden",day:"Den",agenda:"Agenda",allDay:"celý den",noEvents:"Žádné události",more:e=>`+${e} dalších`,myCalendars:"Moje kalendáře",addCalendar:"Přidat kalendář",ariaCalendar:"Kalendář událostí",ariaSidebar:"Postranní panel kalendáře",ariaNavigation:"Navigace",ariaViewMode:"Režim zobrazení",ariaGoToToday:"Přejít na dnešek",ariaPrevious:"Předchozí",ariaNext:"Další",ariaAllDayEvents:"Celodenní události",ariaCalendarGrid:"Mřížka kalendáře",ariaSelectMonthYear:"Vybrat měsíc a rok",ariaToggleCalendar:e=>`Zobrazit nebo skrýt ${e}`,ariaRemoveCalendar:e=>`Odebrat ${e}`,ariaMoreEvents:e=>`${e} dalších událostí`}},qs={language:"de-DE",columns:{name:"Name",length:"Dauer",start:"Anfang",end:"Ende",progress:"Fortschritt",resources:"Ressourcen",work:"Arbeit",cost:"Kosten"},columnTooltips:{work:"Arbeitstage oder -stunden für diese Aufgabe. Wird automatisch berechnet, wenn eine oder mehrere Ressourcen zugewiesen sind.",cost:"Kosten werden automatisch berechnet, wenn eine oder mehrere Ressourcen zugewiesen sind."},tooltips:{addTask:"Aufgabe hinzufügen",addTaskPart:"Aufgabenteil hinzufügen",moveTask:"Aufgabe verschieben",moveTaskPart:"Aufgabenteil verschieben",resizeTask:"Aufgabe skalieren",resizeTaskPart:"Aufgabenteil skalieren",moveMilestone:"Meilenstein verschieben",setProgress:"Fortschritt festlegen",addLink:"Verknüpfung hinzufügen"},labels:{start:"Anfang",end:"Ende",length:"Dauer",progress:"Fortschritt",from:"Von",to:"Nach",type:"Typ",lag:"Verzögerung"},constraints:{asap:"So früh wie möglich",alap:"So spät wie möglich",mso:"Muss anfangen am",mfo:"Muss enden am",snet:"Anfang nicht früher als",snlt:"Anfang nicht später als",fnet:"Ende nicht früher als",fnlt:"Ende nicht später als"},linkTypes:{finishToStart:"Ende → Anfang",startToStart:"Anfang → Anfang",finishToFinish:"Ende → Ende",startToFinish:"Anfang → Ende"},warnings:{behindSchedule:"Die Aufgabe ist im Verzug",behindScheduleByOneDay:"um einen Tag",behindScheduleByDays:e=>`um ${e} Tage`,constraintViolation:(e,t)=>`Aufgabe verletzt Einschränkung '${e} ${t}'`},export:{tasksSheetName:"Aufgaben",linksSheetName:"Verknüpfungen",resourcesSheetName:"Ressourcen",eventsSheetName:"Ereignisse",calendarsSheetName:"Kalender"},scheduler:{resource:"Ressource",name:"Name",type:"Typ",addEvent:"Ereignis hinzufügen",moveEvent:"Ereignis verschieben",resizeEvent:"Ereignisgröße ändern"},calendar:{today:"Heute",month:"Monat",week:"Woche",day:"Tag",agenda:"Agenda",allDay:"Ganztägig",noEvents:"Keine Ereignisse",more:e=>`+${e} weitere`,myCalendars:"Meine Kalender",addCalendar:"Kalender hinzufügen",ariaCalendar:"Terminkalender",ariaSidebar:"Kalender-Seitenleiste",ariaNavigation:"Navigation",ariaViewMode:"Ansichtsmodus",ariaGoToToday:"Gehe zu heute",ariaPrevious:"Zurück",ariaNext:"Weiter",ariaAllDayEvents:"Ganztägige Termine",ariaCalendarGrid:"Kalenderraster",ariaSelectMonthYear:"Monat und Jahr auswählen",ariaToggleCalendar:e=>`${e} ein-/ausblenden`,ariaRemoveCalendar:e=>`${e} entfernen`,ariaMoreEvents:e=>`${e} weitere Termine`}},_s={language:"es-ES",columns:{name:"Nombre",length:"Duración",start:"Inicio",end:"Fin",progress:"Progreso",resources:"Recursos",work:"Trabajo",cost:"Costo"},columnTooltips:{work:"Días u horas de trabajo asignados a esta tarea. Se calcula automáticamente cuando se asignan uno o más recursos.",cost:"Costo calculado automáticamente cuando se asignan uno o más recursos."},tooltips:{addTask:"Agregar tarea",addTaskPart:"Agregar parte de tarea",moveTask:"Mover tarea",moveTaskPart:"Mover parte de tarea",resizeTask:"Redimensionar tarea",resizeTaskPart:"Redimensionar parte de tarea",moveMilestone:"Mover hito",setProgress:"Establecer progreso",addLink:"Agregar vínculo"},labels:{start:"Inicio",end:"Fin",length:"Duración",progress:"Progreso",from:"Desde",to:"Hasta",type:"Tipo",lag:"Retardo"},constraints:{asap:"Lo antes posible",alap:"Lo más tarde posible",mso:"Debe comenzar el",mfo:"Debe finalizar el",snet:"No comenzar antes del",snlt:"No comenzar después del",fnet:"No finalizar antes del",fnlt:"No finalizar después del"},linkTypes:{finishToStart:"Fin → Inicio",startToStart:"Inicio → Inicio",finishToFinish:"Fin → Fin",startToFinish:"Inicio → Fin"},warnings:{behindSchedule:"La tarea está retrasada",behindScheduleByOneDay:"por un día",behindScheduleByDays:e=>`por ${e} días`,constraintViolation:(e,t)=>`La tarea viola la restricción '${e} ${t}'`},export:{tasksSheetName:"Tareas",linksSheetName:"Vínculos",resourcesSheetName:"Recursos",eventsSheetName:"Eventos",calendarsSheetName:"Calendarios"},scheduler:{resource:"Recurso",name:"Nombre",type:"Tipo",addEvent:"Añadir evento",moveEvent:"Mover evento",resizeEvent:"Redimensionar evento"},calendar:{today:"Hoy",month:"Mes",week:"Semana",day:"Día",agenda:"Agenda",allDay:"Todo el día",noEvents:"Sin eventos",more:e=>`+${e} más`,myCalendars:"Mis calendarios",addCalendar:"Añadir calendario",ariaCalendar:"Calendario de eventos",ariaSidebar:"Panel lateral del calendario",ariaNavigation:"Navegación",ariaViewMode:"Modo de vista",ariaGoToToday:"Ir a hoy",ariaPrevious:"Anterior",ariaNext:"Siguiente",ariaAllDayEvents:"Eventos de todo el día",ariaCalendarGrid:"Cuadrícula del calendario",ariaSelectMonthYear:"Seleccionar mes y año",ariaToggleCalendar:e=>`Mostrar u ocultar ${e}`,ariaRemoveCalendar:e=>`Eliminar ${e}`,ariaMoreEvents:e=>`${e} eventos más`}},Js={language:"fr-FR",columns:{name:"Nom",length:"Durée",start:"Début",end:"Fin",progress:"Avancement",resources:"Ressources",work:"Travail",cost:"Coût"},columnTooltips:{work:"Jours ou heures de travail alloués à cette tâche. Calculé automatiquement lorsqu'une ou plusieurs ressources sont affectées.",cost:"Coût calculé automatiquement lorsqu'une ou plusieurs ressources sont affectées."},tooltips:{addTask:"Ajouter une tâche",addTaskPart:"Ajouter une partie de tâche",moveTask:"Déplacer la tâche",moveTaskPart:"Déplacer la partie de tâche",resizeTask:"Redimensionner la tâche",resizeTaskPart:"Redimensionner la partie de tâche",moveMilestone:"Déplacer le jalon",setProgress:"Définir l'avancement",addLink:"Ajouter un lien"},labels:{start:"Début",end:"Fin",length:"Durée",progress:"Avancement",from:"De",to:"À",type:"Type",lag:"Décalage"},constraints:{asap:"Dès que possible",alap:"Le plus tard possible",mso:"Doit commencer le",mfo:"Doit finir le",snet:"Début au plus tôt le",snlt:"Début au plus tard le",fnet:"Fin au plus tôt le",fnlt:"Fin au plus tard le"},linkTypes:{finishToStart:"Fin → Début",startToStart:"Début → Début",finishToFinish:"Fin → Fin",startToFinish:"Début → Fin"},warnings:{behindSchedule:"La tâche est en retard",behindScheduleByOneDay:"d'un jour",behindScheduleByDays:e=>`de ${e} jours`,constraintViolation:(e,t)=>`La tâche viole la contrainte '${e} ${t}'`},export:{tasksSheetName:"Tâches",linksSheetName:"Liens",resourcesSheetName:"Ressources",eventsSheetName:"Événements",calendarsSheetName:"Calendriers"},scheduler:{resource:"Ressource",name:"Nom",type:"Type",addEvent:"Ajouter un événement",moveEvent:"Déplacer l'événement",resizeEvent:"Redimensionner l'événement"},calendar:{today:"Aujourd'hui",month:"Mois",week:"Semaine",day:"Jour",agenda:"Agenda",allDay:"Journée",noEvents:"Aucun événement",more:e=>`+${e} de plus`,myCalendars:"Mes agendas",addCalendar:"Ajouter un agenda",ariaCalendar:"Calendrier d'événements",ariaSidebar:"Panneau latéral du calendrier",ariaNavigation:"Navigation",ariaViewMode:"Mode d'affichage",ariaGoToToday:"Aller à aujourd'hui",ariaPrevious:"Précédent",ariaNext:"Suivant",ariaAllDayEvents:"Événements toute la journée",ariaCalendarGrid:"Grille du calendrier",ariaSelectMonthYear:"Sélectionner mois et année",ariaToggleCalendar:e=>`Afficher ou masquer ${e}`,ariaRemoveCalendar:e=>`Supprimer ${e}`,ariaMoreEvents:e=>`${e} événements de plus`}},Qs={language:"it-IT",columns:{name:"Nome",length:"Durata",start:"Inizio",end:"Fine",progress:"Avanzamento",resources:"Risorse",work:"Lavoro",cost:"Costo"},columnTooltips:{work:"Giorni o ore di lavoro assegnati a questa attività. Calcolato automaticamente quando vengono assegnate una o più risorse.",cost:"Costo calcolato automaticamente quando vengono assegnate una o più risorse."},tooltips:{addTask:"Aggiungi attività",addTaskPart:"Aggiungi parte dell'attività",moveTask:"Sposta attività",moveTaskPart:"Sposta parte dell'attività",resizeTask:"Ridimensiona attività",resizeTaskPart:"Ridimensiona parte dell'attività",moveMilestone:"Sposta milestone",setProgress:"Imposta avanzamento",addLink:"Aggiungi collegamento"},labels:{start:"Inizio",end:"Fine",length:"Durata",progress:"Avanzamento",from:"Da",to:"A",type:"Tipo",lag:"Ritardo"},constraints:{asap:"Il prima possibile",alap:"Il più tardi possibile",mso:"Deve iniziare il",mfo:"Deve finire il",snet:"Non iniziare prima del",snlt:"Non iniziare dopo il",fnet:"Non finire prima del",fnlt:"Non finire dopo il"},linkTypes:{finishToStart:"Fine → Inizio",startToStart:"Inizio → Inizio",finishToFinish:"Fine → Fine",startToFinish:"Inizio → Fine"},warnings:{behindSchedule:"L'attività è in ritardo",behindScheduleByOneDay:"di un giorno",behindScheduleByDays:e=>`di ${e} giorni`,constraintViolation:(e,t)=>`L'attività viola il vincolo '${e} ${t}'`},export:{tasksSheetName:"Attività",linksSheetName:"Collegamenti",resourcesSheetName:"Risorse",eventsSheetName:"Eventi",calendarsSheetName:"Calendari"},scheduler:{resource:"Risorsa",name:"Nome",type:"Tipo",addEvent:"Aggiungi evento",moveEvent:"Sposta evento",resizeEvent:"Ridimensiona evento"},calendar:{today:"Oggi",month:"Mese",week:"Settimana",day:"Giorno",agenda:"Agenda",allDay:"Tutto il giorno",noEvents:"Nessun evento",more:e=>`+${e} altri`,myCalendars:"I miei calendari",addCalendar:"Aggiungi calendario",ariaCalendar:"Calendario eventi",ariaSidebar:"Pannello laterale del calendario",ariaNavigation:"Navigazione",ariaViewMode:"Modalità di visualizzazione",ariaGoToToday:"Vai a oggi",ariaPrevious:"Precedente",ariaNext:"Successivo",ariaAllDayEvents:"Eventi per tutto il giorno",ariaCalendarGrid:"Griglia del calendario",ariaSelectMonthYear:"Seleziona mese e anno",ariaToggleCalendar:e=>`Mostra o nascondi ${e}`,ariaRemoveCalendar:e=>`Rimuovi ${e}`,ariaMoreEvents:e=>`altri ${e} eventi`}},en={language:"ja-JP",columns:{name:"タスク名",length:"期間",start:"開始日",end:"終了日",progress:"進捗",resources:"リソース",work:"作業量",cost:"コスト"},columnTooltips:{work:"このタスクに割り当てられた作業日数または時間。リソースが割り当てられると自動的に計算されます。",cost:"リソースが割り当てられると自動的に計算されるコスト。"},tooltips:{addTask:"タスクを追加",addTaskPart:"タスク部分を追加",moveTask:"タスクを移動",moveTaskPart:"タスク部分を移動",resizeTask:"タスクのサイズを変更",resizeTaskPart:"タスク部分のサイズを変更",moveMilestone:"マイルストーンを移動",setProgress:"進捗を設定",addLink:"リンクを追加"},labels:{start:"開始",end:"終了",length:"期間",progress:"進捗",from:"開始タスク",to:"終了タスク",type:"種類",lag:"ラグ"},constraints:{asap:"できるだけ早く",alap:"できるだけ遅く",mso:"指定日に開始",mfo:"指定日に終了",snet:"指定日以降に開始",snlt:"指定日までに開始",fnet:"指定日以降に終了",fnlt:"指定日までに終了"},linkTypes:{finishToStart:"終了 → 開始",startToStart:"開始 → 開始",finishToFinish:"終了 → 終了",startToFinish:"開始 → 終了"},warnings:{behindSchedule:"タスクが遅延しています",behindScheduleByOneDay:"1日",behindScheduleByDays:e=>`${e}日`,constraintViolation:(e,t)=>`タスクが制約「${e} ${t}」に違反しています`},export:{tasksSheetName:"タスク",linksSheetName:"リンク",resourcesSheetName:"リソース",eventsSheetName:"イベント",calendarsSheetName:"カレンダー"},scheduler:{resource:"リソース",name:"名前",type:"タイプ",addEvent:"イベントを追加",moveEvent:"イベントを移動",resizeEvent:"イベントのサイズ変更"},calendar:{today:"今日",month:"月",week:"週",day:"日",agenda:"アジェンダ",allDay:"終日",noEvents:"イベントはありません",more:e=>`他${e}件`,myCalendars:"マイカレンダー",addCalendar:"カレンダーを追加",ariaCalendar:"イベントカレンダー",ariaSidebar:"カレンダーサイドバー",ariaNavigation:"ナビゲーション",ariaViewMode:"表示モード",ariaGoToToday:"今日に移動",ariaPrevious:"前へ",ariaNext:"次へ",ariaAllDayEvents:"終日イベント",ariaCalendarGrid:"カレンダーグリッド",ariaSelectMonthYear:"月と年を選択",ariaToggleCalendar:e=>`${e}の表示切替`,ariaRemoveCalendar:e=>`${e}を削除`,ariaMoreEvents:e=>`他${e}件のイベント`}},tn={language:"ko-KR",columns:{name:"작업명",length:"기간",start:"시작일",end:"종료일",progress:"진행률",resources:"자원",work:"작업량",cost:"비용"},columnTooltips:{work:"이 작업에 할당된 작업 일수 또는 시간. 하나 이상의 자원이 배정되면 자동으로 계산됩니다.",cost:"하나 이상의 자원이 배정되면 자동으로 계산되는 비용."},tooltips:{addTask:"작업 추가",addTaskPart:"작업 부분 추가",moveTask:"작업 이동",moveTaskPart:"작업 부분 이동",resizeTask:"작업 크기 조정",resizeTaskPart:"작업 부분 크기 조정",moveMilestone:"마일스톤 이동",setProgress:"진행률 설정",addLink:"링크 추가"},labels:{start:"시작",end:"종료",length:"기간",progress:"진행률",from:"시작 작업",to:"종료 작업",type:"유형",lag:"지연"},constraints:{asap:"가능한 빨리",alap:"가능한 늦게",mso:"지정일에 시작",mfo:"지정일에 완료",snet:"지정일 이후 시작",snlt:"지정일 이전 시작",fnet:"지정일 이후 완료",fnlt:"지정일 이전 완료"},linkTypes:{finishToStart:"완료 → 시작",startToStart:"시작 → 시작",finishToFinish:"완료 → 완료",startToFinish:"시작 → 완료"},warnings:{behindSchedule:"작업이 지연되고 있습니다",behindScheduleByOneDay:"1일",behindScheduleByDays:e=>`${e}일`,constraintViolation:(e,t)=>`작업이 제약 조건 '${e} ${t}'을(를) 위반합니다`},export:{tasksSheetName:"작업",linksSheetName:"링크",resourcesSheetName:"자원",eventsSheetName:"이벤트",calendarsSheetName:"캘린더"},scheduler:{resource:"자원",name:"이름",type:"유형",addEvent:"이벤트 추가",moveEvent:"이벤트 이동",resizeEvent:"이벤트 크기 조정"},calendar:{today:"오늘",month:"월",week:"주",day:"일",agenda:"일정",allDay:"종일",noEvents:"일정 없음",more:e=>`+${e}개 더보기`,myCalendars:"내 캘린더",addCalendar:"캘린더 추가",ariaCalendar:"이벤트 캘린더",ariaSidebar:"캘린더 사이드바",ariaNavigation:"탐색",ariaViewMode:"보기 모드",ariaGoToToday:"오늘로 이동",ariaPrevious:"이전",ariaNext:"다음",ariaAllDayEvents:"종일 이벤트",ariaCalendarGrid:"캘린더 격자",ariaSelectMonthYear:"월 및 연도 선택",ariaToggleCalendar:e=>`${e} 표시/숨기기`,ariaRemoveCalendar:e=>`${e} 삭제`,ariaMoreEvents:e=>`${e}개 더 많은 이벤트`}},rn={language:"nl-NL",columns:{name:"Naam",length:"Duur",start:"Start",end:"Einde",progress:"Voortgang",resources:"Resources",work:"Werk",cost:"Kosten"},columnTooltips:{work:"Werkdagen of -uren voor deze taak. Wordt automatisch berekend wanneer een of meer resources zijn toegewezen.",cost:"Kosten worden automatisch berekend wanneer een of meer resources zijn toegewezen."},tooltips:{addTask:"Taak toevoegen",addTaskPart:"Taakonderdeel toevoegen",moveTask:"Taak verplaatsen",moveTaskPart:"Taakonderdeel verplaatsen",resizeTask:"Taak schalen",resizeTaskPart:"Taakonderdeel schalen",moveMilestone:"Mijlpaal verplaatsen",setProgress:"Voortgang instellen",addLink:"Koppeling toevoegen"},labels:{start:"Start",end:"Einde",length:"Duur",progress:"Voortgang",from:"Van",to:"Naar",type:"Type",lag:"Vertraging"},constraints:{asap:"Zo snel mogelijk",alap:"Zo laat mogelijk",mso:"Moet starten op",mfo:"Moet eindigen op",snet:"Start niet eerder dan",snlt:"Start niet later dan",fnet:"Einde niet eerder dan",fnlt:"Einde niet later dan"},linkTypes:{finishToStart:"Einde → Start",startToStart:"Start → Start",finishToFinish:"Einde → Einde",startToFinish:"Start → Einde"},warnings:{behindSchedule:"De taak loopt achter op schema",behindScheduleByOneDay:"met één dag",behindScheduleByDays:e=>`met ${e} dagen`,constraintViolation:(e,t)=>`Taak schendt beperking '${e} ${t}'`},export:{tasksSheetName:"Taken",linksSheetName:"Koppelingen",resourcesSheetName:"Resources",eventsSheetName:"Evenementen",calendarsSheetName:"Agenda's"},scheduler:{resource:"Resource",name:"Naam",type:"Type",addEvent:"Gebeurtenis toevoegen",moveEvent:"Gebeurtenis verplaatsen",resizeEvent:"Gebeurtenis formaat wijzigen"},calendar:{today:"Vandaag",month:"Maand",week:"Week",day:"Dag",agenda:"Agenda",allDay:"Hele dag",noEvents:"Geen evenementen",more:e=>`+${e} meer`,myCalendars:"Mijn agenda's",addCalendar:"Agenda toevoegen",ariaCalendar:"Evenementenagenda",ariaSidebar:"Zijpaneel agenda",ariaNavigation:"Navigatie",ariaViewMode:"Weergavemodus",ariaGoToToday:"Ga naar vandaag",ariaPrevious:"Vorige",ariaNext:"Volgende",ariaAllDayEvents:"Hele dag evenementen",ariaCalendarGrid:"Agendaraster",ariaSelectMonthYear:"Maand en jaar selecteren",ariaToggleCalendar:e=>`${e} tonen of verbergen`,ariaRemoveCalendar:e=>`${e} verwijderen`,ariaMoreEvents:e=>`${e} meer evenementen`}},sn={language:"pl-PL",columns:{name:"Nazwa",length:"Czas trwania",start:"Początek",end:"Koniec",progress:"Postęp",resources:"Zasoby",work:"Praca",cost:"Koszt"},columnTooltips:{work:"Dni lub godziny pracy przydzielone do tego zadania. Obliczane automatycznie po przypisaniu zasobów.",cost:"Koszt obliczany automatycznie po przypisaniu zasobów."},tooltips:{addTask:"Dodaj zadanie",addTaskPart:"Dodaj część zadania",moveTask:"Przenieś zadanie",moveTaskPart:"Przenieś część zadania",resizeTask:"Zmień rozmiar zadania",resizeTaskPart:"Zmień rozmiar części zadania",moveMilestone:"Przenieś kamień milowy",setProgress:"Ustaw postęp",addLink:"Dodaj powiązanie"},labels:{start:"Początek",end:"Koniec",length:"Czas trwania",progress:"Postęp",from:"Od",to:"Do",type:"Typ",lag:"Opóźnienie"},constraints:{asap:"Jak najwcześniej",alap:"Jak najpóźniej",mso:"Musi się rozpocząć",mfo:"Musi się zakończyć",snet:"Początek nie wcześniej niż",snlt:"Początek nie później niż",fnet:"Koniec nie wcześniej niż",fnlt:"Koniec nie później niż"},linkTypes:{finishToStart:"Koniec → Początek",startToStart:"Początek → Początek",finishToFinish:"Koniec → Koniec",startToFinish:"Początek → Koniec"},warnings:{behindSchedule:"Zadanie jest opóźnione",behindScheduleByOneDay:"o jeden dzień",behindScheduleByDays:e=>`o ${e} dni`,constraintViolation:(e,t)=>`Zadanie narusza ograniczenie '${e} ${t}'`},export:{tasksSheetName:"Zadania",linksSheetName:"Powiązania",resourcesSheetName:"Zasoby",eventsSheetName:"Zdarzenia",calendarsSheetName:"Kalendarze"},scheduler:{resource:"Zasób",name:"Nazwa",type:"Typ",addEvent:"Dodaj wydarzenie",moveEvent:"Przenieś wydarzenie",resizeEvent:"Zmień rozmiar wydarzenia"},calendar:{today:"Dzisiaj",month:"Miesiąc",week:"Tydzień",day:"Dzień",agenda:"Agenda",allDay:"Cały dzień",noEvents:"Brak wydarzeń",more:e=>`+${e} więcej`,myCalendars:"Moje kalendarze",addCalendar:"Dodaj kalendarz",ariaCalendar:"Kalendarz wydarzeń",ariaSidebar:"Panel boczny kalendarza",ariaNavigation:"Nawigacja",ariaViewMode:"Tryb widoku",ariaGoToToday:"Przejdź do dzisiaj",ariaPrevious:"Poprzedni",ariaNext:"Następny",ariaAllDayEvents:"Wydarzenia całodniowe",ariaCalendarGrid:"Siatka kalendarza",ariaSelectMonthYear:"Wybierz miesiąc i rok",ariaToggleCalendar:e=>`Pokaż lub ukryj ${e}`,ariaRemoveCalendar:e=>`Usuń ${e}`,ariaMoreEvents:e=>`jeszcze ${e} wydarzeń`}},nn={language:"pt",columns:{name:"Nome",length:"Duração",start:"Início",end:"Fim",progress:"Progresso",resources:"Recursos",work:"Trabalho",cost:"Custo"},columnTooltips:{work:"Dias ou horas de trabalho alocados a esta tarefa. Calculado automaticamente quando um ou mais recursos são atribuídos.",cost:"Custo calculado automaticamente quando um ou mais recursos são atribuídos."},tooltips:{addTask:"Adicionar tarefa",addTaskPart:"Adicionar parte da tarefa",moveTask:"Mover tarefa",moveTaskPart:"Mover parte da tarefa",resizeTask:"Redimensionar tarefa",resizeTaskPart:"Redimensionar parte da tarefa",moveMilestone:"Mover marco",setProgress:"Definir progresso",addLink:"Adicionar ligação"},labels:{start:"Início",end:"Fim",length:"Duração",progress:"Progresso",from:"De",to:"Para",type:"Tipo",lag:"Atraso"},constraints:{asap:"O mais cedo possível",alap:"O mais tarde possível",mso:"Deve iniciar em",mfo:"Deve terminar em",snet:"Não iniciar antes de",snlt:"Não iniciar depois de",fnet:"Não terminar antes de",fnlt:"Não terminar depois de"},linkTypes:{finishToStart:"Fim → Início",startToStart:"Início → Início",finishToFinish:"Fim → Fim",startToFinish:"Início → Fim"},warnings:{behindSchedule:"A tarefa está atrasada",behindScheduleByOneDay:"um dia",behindScheduleByDays:e=>`${e} dias`,constraintViolation:(e,t)=>`A tarefa viola a restrição '${e} ${t}'`},export:{tasksSheetName:"Tarefas",linksSheetName:"Ligações",resourcesSheetName:"Recursos",eventsSheetName:"Eventos",calendarsSheetName:"Calendários"},scheduler:{resource:"Recurso",name:"Nome",type:"Tipo",addEvent:"Adicionar evento",moveEvent:"Mover evento",resizeEvent:"Redimensionar evento"},calendar:{today:"Hoje",month:"Mês",week:"Semana",day:"Dia",agenda:"Agenda",allDay:"Dia inteiro",noEvents:"Sem eventos",more:e=>`+${e} mais`,myCalendars:"Meus calendários",addCalendar:"Adicionar calendário",ariaCalendar:"Calendário de eventos",ariaSidebar:"Painel lateral do calendário",ariaNavigation:"Navegação",ariaViewMode:"Modo de visualização",ariaGoToToday:"Ir para hoje",ariaPrevious:"Anterior",ariaNext:"Próximo",ariaAllDayEvents:"Eventos de dia inteiro",ariaCalendarGrid:"Grade do calendário",ariaSelectMonthYear:"Selecionar mês e ano",ariaToggleCalendar:e=>`Mostrar ou ocultar ${e}`,ariaRemoveCalendar:e=>`Remover ${e}`,ariaMoreEvents:e=>`mais ${e} eventos`}},an={language:"ru-RU",columns:{name:"Название",length:"Длительность",start:"Начало",end:"Окончание",progress:"Прогресс",resources:"Ресурсы",work:"Трудозатраты",cost:"Стоимость"},columnTooltips:{work:"Рабочие дни или часы, выделенные на задачу. Рассчитываются автоматически при назначении ресурсов.",cost:"Стоимость рассчитывается автоматически при назначении ресурсов."},tooltips:{addTask:"Добавить задачу",addTaskPart:"Добавить часть задачи",moveTask:"Переместить задачу",moveTaskPart:"Переместить часть задачи",resizeTask:"Изменить размер задачи",resizeTaskPart:"Изменить размер части задачи",moveMilestone:"Переместить веху",setProgress:"Установить прогресс",addLink:"Добавить связь"},labels:{start:"Начало",end:"Окончание",length:"Длительность",progress:"Прогресс",from:"От",to:"До",type:"Тип",lag:"Задержка"},constraints:{asap:"Как можно раньше",alap:"Как можно позже",mso:"Начало не ранее",mfo:"Окончание не ранее",snet:"Начало не раньше чем",snlt:"Начало не позже чем",fnet:"Окончание не раньше чем",fnlt:"Окончание не позже чем"},linkTypes:{finishToStart:"Окончание → Начало",startToStart:"Начало → Начало",finishToFinish:"Окончание → Окончание",startToFinish:"Начало → Окончание"},warnings:{behindSchedule:"Задача отстаёт от графика",behindScheduleByOneDay:"на один день",behindScheduleByDays:e=>`на ${e} дн.`,constraintViolation:(e,t)=>`Задача нарушает ограничение '${e} ${t}'`},export:{tasksSheetName:"Задачи",linksSheetName:"Связи",resourcesSheetName:"Ресурсы",eventsSheetName:"События",calendarsSheetName:"Календари"},scheduler:{resource:"Ресурс",name:"Имя",type:"Тип",addEvent:"Добавить событие",moveEvent:"Переместить событие",resizeEvent:"Изменить размер события"},calendar:{today:"Сегодня",month:"Месяц",week:"Неделя",day:"День",agenda:"Повестка",allDay:"Весь день",noEvents:"Нет событий",more:e=>`ещё ${e}`,myCalendars:"Мои календари",addCalendar:"Добавить календарь",ariaCalendar:"Календарь событий",ariaSidebar:"Боковая панель календаря",ariaNavigation:"Навигация",ariaViewMode:"Режим просмотра",ariaGoToToday:"Перейти к сегодня",ariaPrevious:"Назад",ariaNext:"Вперёд",ariaAllDayEvents:"События на весь день",ariaCalendarGrid:"Сетка календаря",ariaSelectMonthYear:"Выбрать месяц и год",ariaToggleCalendar:e=>`Показать или скрыть ${e}`,ariaRemoveCalendar:e=>`Удалить ${e}`,ariaMoreEvents:e=>`ещё ${e} событий`}},on={language:"sv-SE",columns:{name:"Namn",length:"Varaktighet",start:"Start",end:"Slut",progress:"Förlopp",resources:"Resurser",work:"Arbete",cost:"Kostnad"},columnTooltips:{work:"Arbetsdagar eller timmar för denna uppgift. Beräknas automatiskt när en eller flera resurser är tilldelade.",cost:"Kostnad beräknas automatiskt när en eller flera resurser är tilldelade."},tooltips:{addTask:"Lägg till uppgift",addTaskPart:"Lägg till uppgiftsdel",moveTask:"Flytta uppgift",moveTaskPart:"Flytta uppgiftsdel",resizeTask:"Ändra storlek på uppgift",resizeTaskPart:"Ändra storlek på uppgiftsdel",moveMilestone:"Flytta milstolpe",setProgress:"Ange förlopp",addLink:"Lägg till koppling"},labels:{start:"Start",end:"Slut",length:"Varaktighet",progress:"Förlopp",from:"Från",to:"Till",type:"Typ",lag:"Fördröjning"},constraints:{asap:"Så snart som möjligt",alap:"Så sent som möjligt",mso:"Måste starta den",mfo:"Måste sluta den",snet:"Start inte tidigare än",snlt:"Start inte senare än",fnet:"Slut inte tidigare än",fnlt:"Slut inte senare än"},linkTypes:{finishToStart:"Slut → Start",startToStart:"Start → Start",finishToFinish:"Slut → Slut",startToFinish:"Start → Slut"},warnings:{behindSchedule:"Uppgiften ligger efter schemat",behindScheduleByOneDay:"med en dag",behindScheduleByDays:e=>`med ${e} dagar`,constraintViolation:(e,t)=>`Uppgiften bryter mot begränsningen '${e} ${t}'`},export:{tasksSheetName:"Uppgifter",linksSheetName:"Kopplingar",resourcesSheetName:"Resurser",eventsSheetName:"Händelser",calendarsSheetName:"Kalendrar"},scheduler:{resource:"Resurs",name:"Namn",type:"Typ",addEvent:"Lägg till händelse",moveEvent:"Flytta händelse",resizeEvent:"Ändra storlek på händelse"},calendar:{today:"Idag",month:"Månad",week:"Vecka",day:"Dag",agenda:"Agenda",allDay:"Heldag",noEvents:"Inga händelser",more:e=>`+${e} fler`,myCalendars:"Mina kalendrar",addCalendar:"Lägg till kalender",ariaCalendar:"Händelsekalender",ariaSidebar:"Sidopanel för kalender",ariaNavigation:"Navigering",ariaViewMode:"Visningsläge",ariaGoToToday:"Gå till idag",ariaPrevious:"Föregående",ariaNext:"Nästa",ariaAllDayEvents:"Heldagshändelser",ariaCalendarGrid:"Kalenderrutnät",ariaSelectMonthYear:"Välj månad och år",ariaToggleCalendar:e=>`Visa eller dölj ${e}`,ariaRemoveCalendar:e=>`Ta bort ${e}`,ariaMoreEvents:e=>`${e} fler händelser`}},ln={language:"zh-CN",columns:{name:"任务名称",length:"工期",start:"开始日期",end:"结束日期",progress:"进度",resources:"资源",work:"工时",cost:"成本"},columnTooltips:{work:"分配给此任务的工作天数或小时数。分配一个或多个资源后自动计算。",cost:"分配一个或多个资源后自动计算的成本。"},tooltips:{addTask:"添加任务",addTaskPart:"添加任务部分",moveTask:"移动任务",moveTaskPart:"移动任务部分",resizeTask:"调整任务大小",resizeTaskPart:"调整任务部分大小",moveMilestone:"移动里程碑",setProgress:"设置进度",addLink:"添加链接"},labels:{start:"开始",end:"结束",length:"工期",progress:"进度",from:"从",to:"到",type:"类型",lag:"延迟"},constraints:{asap:"尽早",alap:"尽晚",mso:"必须开始于",mfo:"必须完成于",snet:"不早于…开始",snlt:"不晚于…开始",fnet:"不早于…完成",fnlt:"不晚于…完成"},linkTypes:{finishToStart:"完成 → 开始",startToStart:"开始 → 开始",finishToFinish:"完成 → 完成",startToFinish:"开始 → 完成"},warnings:{behindSchedule:"任务已延迟",behindScheduleByOneDay:"1天",behindScheduleByDays:e=>`${e}天`,constraintViolation:(e,t)=>`任务违反约束"${e} ${t}"`},export:{tasksSheetName:"任务",linksSheetName:"链接",resourcesSheetName:"资源",eventsSheetName:"事件",calendarsSheetName:"日历"},scheduler:{resource:"资源",name:"名称",type:"类型",addEvent:"添加事件",moveEvent:"移动事件",resizeEvent:"调整事件大小"},calendar:{today:"今天",month:"月",week:"周",day:"日",agenda:"日程",allDay:"全天",noEvents:"无事件",more:e=>`还有${e}项`,myCalendars:"我的日历",addCalendar:"添加日历",ariaCalendar:"事件日历",ariaSidebar:"日历侧边栏",ariaNavigation:"导航",ariaViewMode:"视图模式",ariaGoToToday:"转到今天",ariaPrevious:"上一个",ariaNext:"下一个",ariaAllDayEvents:"全天事件",ariaCalendarGrid:"日历网格",ariaSelectMonthYear:"选择月份和年份",ariaToggleCalendar:e=>`显示或隐藏${e}`,ariaRemoveCalendar:e=>`移除${e}`,ariaMoreEvents:e=>`还有${e}个事件`}},hn={criticalPath:e=>e.isCritical,incomplete:e=>(e.progress??0)<100,complete:e=>100===e.progress,behindSchedule:e=>{if("task"!==e.type||!e.endTime)return!1;var t=new Date;return e.endTime.getTime()<t.getTime()&&(e.progress??0)<100},milestones:e=>"milestone"===e.type,byResource:e=>t=>null!==t.getResourceByResourceId(e.id),byDateRange:(e,t)=>{var r=e.getTime(),i=t.getTime();return e=>!(!e.startTime||!e.endTime)&&(e.startTime.getTime()<=i&&e.endTime.getTime()>=r)},byName:e=>{var t=e.toLowerCase();return e=>e.name?.toLowerCase().includes(t)??!1},combine:(...e)=>t=>e.every(e=>e(t))};class dn extends ti{constructor(){super()}}class cn extends ti{constructor(){super(),this.chart.content.taskProgressHeight=5,this.chart.content.milestoneBorderColor="#606060",this.chart.content.milestoneColor1="#909090",this.chart.content.milestoneColor2="#909090",this.chart.content.summaryColor1="#d0d0d0",this.chart.content.summaryColor2="#d0d0d0",this.chart.content.summaryProgressColor1="#a0a0a0",this.chart.content.summaryProgressColor2="#a0a0a0",this.chart.content.summaryBorderColor="#606060",this.chart.content.summaryMarkColor1="#d0d0d0",this.chart.content.summaryMarkColor2="#d0d0d0",this.chart.content.summaryMarkProgressColor1="#a0a0a0",this.chart.content.summaryMarkProgressColor2="#a0a0a0",this.chart.content.summaryMarkType="full";var e={progressColor1:"#606060",progressColor2:"#606060",progressHighlightColor:"rgba(100, 100, 100, 0.5)"};this.chart.content.taskColors=[Jr.create({borderColor:"#4455dd",color1:"#a0b0ff",color2:"#a0b0ff",...e}),Jr.create({borderColor:"#cc8888",color1:"#ffcccc",color2:"#ffcccc",...e,separatorColor:"#cc7777",linkLineColor:"#cc7777",linkArrowColor:"#cc7777"}),Jr.create({borderColor:"#77bb77",color1:"#bbeebb",color2:"#bbeebb",...e,separatorColor:"#55aa55",linkLineColor:"#55aa55",linkArrowColor:"#55aa55"}),Jr.create({borderColor:"#dddd88",color1:"#f8f8aa",color2:"#f8f8aa",...e,separatorColor:"#cccc66",linkLineColor:"#cccc66",linkArrowColor:"#cccc66"}),Jr.create({borderColor:"#aa88cc",color1:"#ddbbff",color2:"#ddbbff",...e,separatorColor:"#aa77cc",linkLineColor:"#aa77cc",linkArrowColor:"#aa77cc"}),Jr.create({borderColor:"#ddaa77",color1:"#ffd8a8",color2:"#ffd8a8",...e,separatorColor:"#cc9966",linkLineColor:"#cc9966",linkArrowColor:"#cc9966"}),Jr.create({borderColor:"#66bbbb",color1:"#a8e8e8",color2:"#a8e8e8",...e,separatorColor:"#55aaaa",linkLineColor:"#55aaaa",linkArrowColor:"#55aaaa"}),Jr.create({borderColor:"#dd88aa",color1:"#ffbbdd",color2:"#ffbbdd",...e,separatorColor:"#cc7799",linkLineColor:"#cc7799",linkArrowColor:"#cc7799"})]}}class un extends ti{constructor(){super(),this.sheet.header.backgroundColor="#252526",this.sheet.header.cellBorderColor="#3c3c3c",this.sheet.header.cellDividerColor="#333333",this.sheet.header.textColor="#d4d4d4",this.sheet.backgroundColor="#1e1e1e",this.sheet.textColor="#d4d4d4",this.sheet.hoverBackgroundColor="#2a2d2e",this.sheet.selectedBackgroundColor="#2a2d2e",this.sheet.selectedRowHeaderColor="#3c3c3c",this.sheet.focusBorderColor="#007acc",this.sheet.highlightBorderColor="#264f78",this.sheet.treeIconColor="#999999",this.sheet.editorBackgroundColor="#1e1e1e",this.sheet.editorTextColor="#d4d4d4",this.sheet.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.sheet.scrollbarTrackColor="transparent",this.sheet.gridLineColor="#343434",this.sheet.colorScheme="dark",this.chart.header.backgroundColor="#252526",this.chart.header.cellBorderColor="#3c3c3c",this.chart.header.cellDividerColor="#333333",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#d4d4d4",this.chart.content.backgroundColor="#1e1e1e",this.chart.content.taskBorderRadius=4,this.chart.content.linkLineStyle="rounded",this.chart.content.gridLineColor="#343434",this.chart.content.tier2SeparatorLineStyle="#444444",this.chart.content.nonWorkingTimeStyle="#181818",this.chart.content.summaryColor1="#707070",this.chart.content.summaryColor2="#585858",this.chart.content.summaryMarkColor1="#707070",this.chart.content.summaryMarkColor2="#585858",this.chart.content.summaryProgressColor1="#888888",this.chart.content.summaryProgressColor2="#707070",this.chart.content.summaryMarkProgressColor1="#888888",this.chart.content.summaryMarkProgressColor2="#707070",this.chart.content.summaryBorderColor="#686868",this.chart.content.summaryHighlightColor="rgba(180, 180, 180, 0.3)",this.chart.content.milestoneColor1="#888888",this.chart.content.milestoneColor2="#6a6a6a",this.chart.content.milestoneBorderColor="#787878",this.chart.content.milestoneHighlightColor="rgba(180, 180, 180, 0.4)",this.chart.content.linkFromMilestoneLineColor="#808080",this.chart.content.linkFromMilestoneArrowColor="#808080",this.chart.content.connectorDotColor="#007acc",this.chart.content.connectorDotBorderColor="#0098ff",this.chart.content.connectorDotHoverColor="#0098ff",this.chart.content.baselineColor="#585858",this.chart.content.criticalTaskBorderColor="#f14c4c",this.chart.content.criticalMilestoneBorderColor="#f14c4c",this.chart.content.criticalSummaryBorderColor="#f14c4c",this.chart.content.tooltipTextColor="#d4d4d4",this.chart.content.tooltipBackgroundColor1="#252526",this.chart.content.tooltipBackgroundColor2="#1e1e1e",this.chart.content.tooltipBorderColor="#3c3c3c",this.chart.content.todayLineColor="#aaaaaa",this.chart.content.markerLineColor="#aaaaaa",this.chart.content.markerLabelColor="#aaaaaa",this.chart.content.taskLabelColor="#d4d4d4",this.chart.content.summaryLabelColor="#d4d4d4",this.chart.content.milestoneLabelColor="#d4d4d4",this.chart.content.taskColors=[Jr.create({color1:"#7b90d8",color2:"#5a72c0",highlightColor:"rgba(123, 144, 216, 0.4)",progressColor1:"#4a60a8",progressColor2:"#3a4e90",progressHighlightColor:"rgba(123, 144, 216, 0.4)",separatorColor:"#4258a0",linkLineColor:"#5a72c0",linkArrowColor:"#5a72c0"}),Jr.create({color1:"#e09090",color2:"#c06868",highlightColor:"rgba(224, 144, 144, 0.4)",progressColor1:"#b05858",progressColor2:"#904848",progressHighlightColor:"rgba(224, 144, 144, 0.4)",separatorColor:"#a05050",linkLineColor:"#c06868",linkArrowColor:"#c06868"}),Jr.create({color1:"#80c080",color2:"#60a060",highlightColor:"rgba(128, 192, 128, 0.4)",progressColor1:"#509050",progressColor2:"#407840",progressHighlightColor:"rgba(128, 192, 128, 0.4)",separatorColor:"#488848",linkLineColor:"#60a060",linkArrowColor:"#60a060"}),Jr.create({color1:"#e0c070",color2:"#c0a050",highlightColor:"rgba(224, 192, 112, 0.4)",progressColor1:"#b09040",progressColor2:"#907830",progressHighlightColor:"rgba(224, 192, 112, 0.4)",separatorColor:"#a08838",linkLineColor:"#c0a050",linkArrowColor:"#c0a050"}),Jr.create({color1:"#9070b0",color2:"#705890",highlightColor:"rgba(144, 112, 176, 0.4)",progressColor1:"#604878",progressColor2:"#503868",progressHighlightColor:"rgba(144, 112, 176, 0.4)",separatorColor:"#685080",linkLineColor:"#705890",linkArrowColor:"#705890"}),Jr.create({color1:"#c08850",color2:"#a07040",highlightColor:"rgba(192, 136, 80, 0.4)",progressColor1:"#906030",progressColor2:"#785028",progressHighlightColor:"rgba(192, 136, 80, 0.4)",separatorColor:"#986838",linkLineColor:"#a07040",linkArrowColor:"#a07040"}),Jr.create({color1:"#508888",color2:"#407070",highlightColor:"rgba(80, 136, 136, 0.4)",progressColor1:"#306060",progressColor2:"#285050",progressHighlightColor:"rgba(80, 136, 136, 0.4)",separatorColor:"#386868",linkLineColor:"#407070",linkArrowColor:"#407070"}),Jr.create({color1:"#b06888",color2:"#904868",highlightColor:"rgba(176, 104, 136, 0.4)",progressColor1:"#803858",progressColor2:"#682848",progressHighlightColor:"rgba(176, 104, 136, 0.4)",separatorColor:"#884060",linkLineColor:"#904868",linkArrowColor:"#904868"})]}}class gn extends _r{constructor(){super(),this.rowHeight=38,this.sheet.header.backgroundColor="#ffffff",this.sheet.header.cellBorderColor="#e8e8e8",this.sheet.header.cellDividerColor="#f0f0f0",this.sheet.header.textColor="#555555",this.sheet.gridLineColor="#f2f2f2",this.sheet.scrollbarThumbColor="#d8d8d8",this.chart.header.backgroundColor="#ffffff",this.chart.header.cellBorderColor="#e8e8e8",this.chart.header.cellDividerColor="#f0f0f0",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#555555",this.chart.content.taskHeight=22,this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#f2f2f2",this.chart.content.tier2SeparatorLineStyle="#e8e8e8",this.chart.content.nonWorkingTimeStyle="#fafafa"}}class mn extends _r{constructor(){super(),this.rowHeight=38,this.sheet.header.backgroundColor="#252526",this.sheet.header.cellBorderColor="#3c3c3c",this.sheet.header.cellDividerColor="#333333",this.sheet.header.textColor="#d4d4d4",this.sheet.backgroundColor="#1e1e1e",this.sheet.textColor="#d4d4d4",this.sheet.hoverBackgroundColor="#2a2d2e",this.sheet.selectedBackgroundColor="#2a2d2e",this.sheet.selectedRowHeaderColor="#3c3c3c",this.sheet.focusBorderColor="#007acc",this.sheet.highlightBorderColor="#264f78",this.sheet.treeIconColor="#999999",this.sheet.editorBackgroundColor="#1e1e1e",this.sheet.editorTextColor="#d4d4d4",this.sheet.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.sheet.scrollbarTrackColor="transparent",this.sheet.gridLineColor="#343434",this.sheet.colorScheme="dark",this.chart.header.backgroundColor="#252526",this.chart.header.cellBorderColor="#3c3c3c",this.chart.header.cellDividerColor="#333333",this.chart.header.cellDividerPadding=6,this.chart.header.textColor="#d4d4d4",this.chart.content.backgroundColor="#1e1e1e",this.chart.content.taskHeight=22,this.chart.content.taskBorderRadius=4,this.chart.content.gridLineColor="#343434",this.chart.content.tier2SeparatorLineStyle="#444444",this.chart.content.nonWorkingTimeStyle="#181818",this.chart.content.tooltipTextColor="#d4d4d4",this.chart.content.tooltipBackgroundColor1="#252526",this.chart.content.tooltipBackgroundColor2="#1e1e1e",this.chart.content.tooltipBorderColor="#3c3c3c",this.chart.content.todayLineColor="#aaaaaa",this.chart.content.markerLineColor="#aaaaaa",this.chart.content.markerLabelColor="#aaaaaa",this.chart.content.taskLabelColor="#d4d4d4",this.chart.content.taskColors=[jr.create({color1:"#7b90d8",color2:"#5a72c0",highlightColor:"rgba(123, 144, 216, 0.4)"}),jr.create({color1:"#e09090",color2:"#c06868",highlightColor:"rgba(224, 144, 144, 0.4)"}),jr.create({color1:"#80c080",color2:"#60a060",highlightColor:"rgba(128, 192, 128, 0.4)"}),jr.create({color1:"#e0c070",color2:"#c0a050",highlightColor:"rgba(224, 192, 112, 0.4)"}),jr.create({color1:"#9070b0",color2:"#705890",highlightColor:"rgba(144, 112, 176, 0.4)"}),jr.create({color1:"#c08850",color2:"#a07040",highlightColor:"rgba(192, 136, 80, 0.4)"}),jr.create({color1:"#508888",color2:"#407070",highlightColor:"rgba(80, 136, 136, 0.4)"}),jr.create({color1:"#b06888",color2:"#904868",highlightColor:"rgba(176, 104, 136, 0.4)"})]}}class pn extends _r{constructor(){super(),this.rowHeight=38,this.chart.content.taskHeight=22}}class vn extends _r{constructor(){super(),this.rowHeight=38,this.chart.content.taskHeight=22,this.chart.content.taskColors=[jr.create({borderColor:"#4455dd",color1:"#a0b0ff",color2:"#a0b0ff"}),jr.create({borderColor:"#cc8888",color1:"#ffcccc",color2:"#ffcccc"}),jr.create({borderColor:"#77bb77",color1:"#bbeebb",color2:"#bbeebb"}),jr.create({borderColor:"#dddd88",color1:"#f8f8aa",color2:"#f8f8aa"}),jr.create({borderColor:"#aa88cc",color1:"#ddbbff",color2:"#ddbbff"}),jr.create({borderColor:"#ddaa77",color1:"#ffd8a8",color2:"#ffd8a8"}),jr.create({borderColor:"#66bbbb",color1:"#a8e8e8",color2:"#a8e8e8"}),jr.create({borderColor:"#dd88aa",color1:"#ffbbdd",color2:"#ffbbdd"})]}}class fn{#Y=[];#Ga=[];#de=new Map;#so=new Map;#no=new Set;#ao=new Map;#Ye=null;resourceAdded$=new e;resourceChanged$=new e;resourceRemoved$=new e;eventAdded$=new e;eventChanged$=new e;eventRemoved$=new e;frozenChanged$=new e;filterChanged$=new e;complexOperationFinished$=new e;get resourcesLength(){return this.#Y.length}getResource(e){return this.#Y[e]}getResourceById(e){return this.#Y.find(t=>t.id===e)??null}indexOfResource(e){return this.#Y.indexOf(e)}get filter(){return this.#Ye}set filter(e){this.#Ye=e,this.#Ge()}#Ge(){var e=this.#Ye;for(var t of this.#Y)t.filtered=!!e&&!e(t);this.filterChanged$.next()}addResource(e){if(this.getResourceById(e.id))throw new Error(`SchedulerData.addResource: resource with id "${e.id}" already exists`);this.#Y.push(e),this.#oo(e),this.resourceAdded$.next({resource:e})}insertResource(e,t){if(e<0||e>this.#Y.length)throw new RangeError(`SchedulerData.insertResource: index ${e} out of range [0, ${this.#Y.length}]`);if(this.getResourceById(t.id))throw new Error(`SchedulerData.insertResource: resource with id "${t.id}" already exists`);this.#Y.splice(e,0,t),this.#oo(t),this.resourceAdded$.next({resource:t})}removeResource(e){var t=this.#Y.indexOf(e);if(t>=0){this.#Y.splice(t,1),this.#lo(e),this.#no.delete(e.id);var r=this.#Ga.filter(t=>t.resourceId===e.id);for(var i of r)this.removeEvent(i);this.resourceRemoved$.next({resource:e})}}moveResource(e,t){var r=this.#Y.indexOf(e);r<0||r===t||(this.#Y.splice(r,1),t>r&&t--,this.#Y.splice(t,0,e),this.complexOperationFinished$.next())}removeResources(e){for(var t of e)this.removeResource(t);this.complexOperationFinished$.next()}sortResources(e){this.#Y.sort(e),this.complexOperationFinished$.next()}assignResources(e){for(var t of this.#de.values())t.unsubscribe();for(var r of(this.#de.clear(),this.#no.clear(),this.#Y=[...e],this.#Y))this.#oo(r);this.complexOperationFinished$.next()}#oo(e){var t=e.changed$.subscribe(e=>this.resourceChanged$.next(e));this.#de.set(e.id,t)}#lo(e){var t=this.#de.get(e.id);t&&(t.unsubscribe(),this.#de.delete(e.id))}freezeResource(e){this.#no.has(e.id)||(this.#no.add(e.id),this.frozenChanged$.next(),this.complexOperationFinished$.next())}unfreezeResource(e){this.#no.has(e.id)&&(this.#no.delete(e.id),this.frozenChanged$.next(),this.complexOperationFinished$.next())}isResourceFrozen(e){return this.#no.has(e.id)}get frozenResourceIds(){return this.#no}get frozenResourcesCount(){var e=0;for(var t of this.#Y)this.#no.has(t.id)&&e++;return e}get orderedResources(){var e=[],t=[];for(var r of this.#Y)r.filtered||(this.#no.has(r.id)?e.push(r):t.push(r));return e.concat(t)}orderedIndexOf(e){return this.orderedResources.indexOf(e)}get eventsLength(){return this.#Ga.length}getEvent(e){return this.#Ga[e]}getEventById(e){return this.#Ga.find(t=>t.id===e)??null}getEventsForResource(e){return this.#Ga.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.#Ga.push(e),this.#ho(e),this.#ao.delete(e.resourceId),this.eventAdded$.next({event:e})}removeEvent(e){var t=this.#Ga.indexOf(e);t>=0&&(this.#Ga.splice(t,1),this.#do(e),this.#ao.delete(e.resourceId),this.eventRemoved$.next({event:e}))}assignEvents(e){for(var t of this.#so.values())t.unsubscribe();for(var r of(this.#so.clear(),this.#ao.clear(),this.#Ga=[...e],this.#Ga))this.#ho(r);this.complexOperationFinished$.next()}#ho(e){var t=e.changed$.subscribe(e=>{this.#ao.clear(),this.eventChanged$.next(e)});this.#so.set(e.id,t)}#do(e){var t=this.#so.get(e.id);t&&(t.unsubscribe(),this.#so.delete(e.id))}getEventColor(e){if(null!==e.color)return e.color;var t=this.getResourceById(e.resourceId);return t&&null!==t.color?t.color:t?this.orderedIndexOf(t):0}#co(e){var t=this.#ao.get(e);if(t)return t;var r=this.getEventsForResource(e);r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime());var i=[],s=new Map;for(var n of r){for(var a=n.startTime.getTime(),o=!1,l=0;l<i.length;l++)if(a>=i[l]){i[l]=n.endTime.getTime(),s.set(n.id,l),o=!0;break}o||(i.push(n.endTime.getTime()),s.set(n.id,i.length-1))}var h={laneCount:Math.max(1,i.length),eventLanes:s};return this.#ao.set(e,h),h}getLaneCount(e){return this.#co(e).laneCount}getEventLane(e){return this.#co(e.resourceId).eventLanes.get(e.id)??0}getOverlappingEvents(e,t,r,i){var s=t.getTime(),n=r.getTime(),a=[];for(var o of this.#Ga)o.resourceId===e&&(i&&o.id===i||o.startTime.getTime()<n&&o.endTime.getTime()>s&&a.push(o));return a}hasConflict(e){return this.getOverlappingEvents(e.resourceId,e.startTime,e.endTime,e.id).length>0}get minStartTime(){var e=null;for(var t of this.#Ga)(!e||t.startTime.getTime()<e.getTime())&&(e=t.startTime);return e}get maxEndTime(){var e=null;for(var t of this.#Ga)(!e||t.endTime.getTime()>e.getTime())&&(e=t.endTime);return e}}const yn={Person:"person",Room:"room",Equipment:"equipment",Vehicle:"vehicle"};class bn{#m;get id(){return this.#m}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#M=null;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#uo=null;get avatarUrl(){return this.#uo}set avatarUrl(e){e!=this.#uo&&(this.#uo=e,this.#f())}#O=null;get type(){return this.#O}set type(e){e!=this.#O&&(this.#O=e,this.#f())}#ke=!1;get filtered(){return this.#ke}set filtered(e){this.#ke=e}#ae;changed$=new e;constructor(e,t){this.#b=t,this.#m=e??er(30),this.#ae=new lr(()=>this.#f())}#f(){this.changed$.next({resource:this})}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){return{id:this.#m,name:this.#b,color:this.#M,avatarUrl:this.#uo,type:this.#O,properties:this.#ae.hasProperties?this.#ae.serializeProperties():void 0}}static fromAny(e){if(void 0===e.name||null===e.name)throw new Error("SchedulerResource.fromAny: missing name");var t=new bn(e.id,e.name);return t.color=e.color??null,t.avatarUrl=e.avatarUrl??null,t.type=e.type??null,e.properties&&t.#ae.loadProperties(e.properties),t}}class wn{#go;#T=new r;itemChanged$=new e;itemRemoved$=new e;complexOperationFinished$;constructor(e){this.#go=e,this.#T.add(e.resourceChanged$.subscribe(e=>{this.itemChanged$.next({item:e.resource})})),this.#T.add(e.resourceRemoved$.subscribe(e=>{this.itemRemoved$.next({item:e.resource})})),this.complexOperationFinished$=e.complexOperationFinished$}destroy(){this.#T.unsubscribe()}get length(){return this.#go.orderedResources.length}getItem(e){return this.#go.orderedResources[e]}getItemById(e){var t=this.#go.getResourceById(e);return t&&!t.filtered?t:null}indexOf(e){return this.#go.orderedIndexOf(e)}getItemLabel(e){var t=this.indexOf(e);return t>=0?(t+1).toString():""}getNextVisible(e){var t=this.indexOf(e);return t>=0&&t<this.length-1?this.getItem(t+1):null}getPreviousVisible(e){var t=this.indexOf(e);return t>0?this.getItem(t-1):null}addEmptyItem(){var e=new bn(null,"New Resource");return this.#go.addResource(e),e}insertEmptyItem(e){var t=new bn(null,"New Resource");return this.#go.insertResource(e,t),t}removeItems(e){this.#go.removeResources(e)}}class Tn{#wt;constructor(e){this.#wt=e}get ctx(){return this.#wt}getRowY(e){return this.#wt.getRowY(e)}getContentBottom(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=t;for(var s of r)i+=this.#wt.getRowHeight(s);return Math.min(i,e)}drawRowHighlight(e,t,r,i){e.beginPath(),e.rect(0,r,t,i),e.fillStyle="rgba(0, 0, 0, 0.02)",e.fill()}}class Cn extends Tn{#$t;constructor(e){super(e),this.#$t=new Lr(e)}render(e){this.#$t.render(e)}}class xn extends Tr{#wt;constructor(e){super(e),this.#wt=e}getContentBottom(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=t;for(var s of r)i+=this.#wt.getRowHeight(s);return Math.min(i,e)}drawHorizontalGridLines(e,t){for(var r=this.#wt.theme$.getValue(),i=r.chart.content.gridLineColor,s=this.#wt.data.orderedResources,n=0;n<s.length;n++){var a=s[n],o=this.#wt.getRowY(a),l=Math.floor(o)-.5;t.beginPath(),t.moveTo(0,l),t.lineTo(e.width,l),t.strokeStyle=i,t.stroke()}if(s.length>0){var h=s[s.length-1],d=Math.floor(this.#wt.getRowY(h)+this.#wt.getRowHeight(h))-.5;t.beginPath(),t.moveTo(0,d),t.lineTo(e.width,d),t.strokeStyle=i,t.stroke()}if(this.#wt.data.frozenResourcesCount>0){var c=Math.floor(this.#wt.frozenSectionBottom)-.5;t.beginPath(),t.moveTo(0,c),t.lineTo(e.width,c),t.strokeStyle=r.chart.content.gridLineColor,t.lineWidth=2,t.stroke(),t.lineWidth=1}}}class kn extends Tn{#wt;constructor(e){super(e),this.#wt=e}render(e){var t=e.getContext("2d"),r=this.#wt.data.frozenResourcesCount,i=this.#wt.frozenSectionBottom,s=this.#wt.theme$.getValue().contentTop;t.save(),t.beginPath(),t.rect(0,i,e.width,e.height-i),t.clip(),this.#ai(e,t),this.#mo(e,t,!1),this.#po(e,t),t.restore(),r>0&&(t.save(),t.beginPath(),t.rect(0,s,e.width,i-s),t.clip(),this.#ai(e,t),this.#mo(e,t,!0),this.#po(e,t),t.restore())}#ai(e,t){var r=this.#wt.selectedResources$.getValue();if(0!==r.length)for(var i of r)this.drawRowHighlight(t,e.width,this.getRowY(i),this.#wt.getRowHeight(i))}#po(e,t){var r=this.#wt.sheetRowMouseOver$.getValue();r&&this.drawRowHighlight(t,e.width,this.getRowY(r.resource),this.#wt.getRowHeight(r.resource))}#mo(e,t,r){for(var i=this.#wt.theme$.getValue(),s=this.#wt.timeline.currentZoom,n=s.axis[0],a=this.#wt.timeline.visibleStartTime$.getValue(),o=i.chart.content.taskHeight,l=i.chart.content.taskBorderRadius,h=this.#wt.data.orderedResources,d=this.#wt.selectedEvents$.getValue(),c=new Set(d.map(e=>e.id)),u=this.#wt.eventRendering$.getValue(),g=0;g<h.length;g++){var m=h[g];if(r===this.#wt.data.isResourceFrozen(m)){var p=this.#wt.data.getEventsForResource(m.id);for(var v of p){var f=Math.floor(n.getX(v.startTime,a,s)),y=Math.floor(n.getX(v.endTime,a,s));if(!(y<0||f>e.width)){var b=this.#wt.data.getEventColor(v),w=this.#wt.getEventY(m,v),T=new kr(f,w,y-f,o),C=c.has(v.id);if(u)if(u({event:v,resource:m,rect:T,ctx:t,isSelected:C,color:b}))continue;this.#vo(t,v,T,b,l,i)}}}}}#vo(e,t,r,i,s,n){var a=Xr(i,n.chart.content.taskColors);if(function(e,t,r,i,s=0){e.beginPath(),mi(e,t,s),e.fillStyle=gi(e,t,r,i),e.fill()}(e,r,a.color1,a.color2,s),a.borderColor&&pi(e,r,a.borderColor,s),t.name&&r.width>20){var o=n.font.clone();o.size=n.chart.content.taskLabelFont.size,function(e,t,r,i,s,n=4){!t||r.width<=2*n||(e.save(),e.beginPath(),e.rect(r.x,r.y,r.width,r.height),e.clip(),e.font=i,Rr(e,t,new kr(r.x+n,r.y,r.width-2*n,r.height),"left",0,s),e.restore())}(e,t.name,r,o.toString(1),"#ffffff")}}}class En extends Tn{#Li;constructor(e){super(e),this.#Li=new Di(e,e=>this.getContentBottom(e.height))}render(e){this.#Li.render(e)}}const Dn={[yn.Person]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="4"/><path d="M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1"/></svg>',[yn.Room]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z"/><path d="M14 12h.01"/></svg>',[yn.Equipment]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>',[yn.Vehicle]:'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2"/><circle cx="7" cy="17" r="2"/><path d="M9 17h6"/><circle cx="17" cy="17" r="2"/></svg>'};class Sn extends Hi{redraw(e,t,r){e.innerText="",e.style.display="flex",e.style.alignItems="center",e.style.justifyContent="center";var i=document.createElement("span");if(i.classList.add("resource-icon"),i.style.display="inline-flex",i.style.alignItems="center",i.style.justifyContent="center",i.style.flexShrink="0",i.style.width="26px",i.style.height="26px",i.style.minWidth="26px",r.avatarUrl)i.style.borderRadius="50%",i.style.backgroundImage=`url(${r.avatarUrl})`,i.style.backgroundSize="cover",i.style.backgroundPosition="center";else{i.style.color="#999";var s=r.type||yn.Person;i.innerHTML=Dn[s]??'<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"/><path d="m3.3 7 8.7 5 8.7-5"/><path d="M12 22V12"/></svg>'}e.appendChild(i)}}const $n=26;var Rn=new Map;function Mn(e){return function(e){return new Promise((t,r)=>{var i=new Image;i.crossOrigin="anonymous",i.onload=()=>t(i),i.onerror=r,i.src=e})}(e).then(t=>{Rn.set(e,t)},()=>{Rn.delete(e)})}function Ln(e,t,r,i,s,n){if(t.avatarUrl){var a=Rn.get(t.avatarUrl);if(a)return void function(e,t,r,i,s,n){var a=r+s/2,o=i+n/2,l=13;e.save(),e.beginPath(),e.arc(a,o,l,0,2*Math.PI),e.closePath(),e.clip(),e.drawImage(t,a-l,o-l,$n,$n),e.restore()}(e,a,r,i,s,n)}var o=r+(s-22)/2,l=i+(n-22)/2,h=22/24;e.save(),e.translate(o,l),e.scale(h,h),e.strokeStyle="#999",e.lineWidth=1.8,e.lineCap="round",e.lineJoin="round",function(e,t){switch(t){case yn.Person:e.beginPath(),e.arc(12,8,4,0,2*Math.PI),e.stroke(),e.stroke(new Path2D("M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1"));break;case yn.Room:e.stroke(new Path2D("M18 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2Z")),e.beginPath(),e.moveTo(14,12),e.lineTo(14.01,12),e.stroke();break;case yn.Equipment:e.stroke(new Path2D("M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"));break;case yn.Vehicle:e.stroke(new Path2D("M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2")),e.beginPath(),e.arc(7,17,2,0,2*Math.PI),e.stroke(),e.beginPath(),e.moveTo(9,17),e.lineTo(15,17),e.stroke(),e.beginPath(),e.arc(17,17,2,0,2*Math.PI),e.stroke();break;default:e.stroke(new Path2D("M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z")),e.stroke(new Path2D("M3.3 7l8.7 5 8.7-5")),e.beginPath(),e.moveTo(12,22),e.lineTo(12,12),e.stroke()}}(e,t.type||yn.Person),e.restore()}class In extends Ls{#wt;#ma;constructor(e,t){super(),this.#wt=e,this.#ma=t}get theme(){return this.#wt.theme$.getValue()}async preload(){await function(e){Rn=new Map;var t=[];for(var r of e){var i=r.avatarUrl;i&&!Rn.has(i)&&(Rn.set(i,null),t.push(Mn(i)))}return t.length>0?Promise.all(t).then(()=>{}):Promise.resolve()}(this.#wt.data.orderedResources)}calculateDimensions(){var e=this.calculateChartLayout(this.#wt.timeline,this.#ma,this.#wt.data.minStartTime,this.#wt.data.maxEndTime,this.#wt.projectTimeline$.getValue()),t=this.#wt.data.orderedResources,r=[],i=0;for(var s of t){var n=this.#wt.getRowHeight(s);r.push(n),i+=n}var a=e.headerHeight+i;return{visibleColumns:e.visibleColumns,sheetWidth:e.sheetWidth,chartWidth:e.chartWidth,chartStart:e.chartStart,headerHeight:e.headerHeight,totalHeight:a,rowHeights:r}}renderSheetRows(e,t){for(var r=this.theme,i=this.#wt.data.orderedResources,s=t.headerHeight,n=0;n<i.length;n++){var a=i[n],o=this.#wt.getRowHeight(a),l=0;for(var h of(Rr(e,(n+1).toString(),new kr(l+5,s,30,o),"center",0,"#808080"),l+=Cs,t.visibleColumns)){if(h.exportCellRenderer)h.exportCellRenderer(e,a,l+5,s,h.width,o);else{var d=h.valueFormatter(a),c="left";"center"===h.align&&(c="center"),"right"===h.align&&(c="right"),d&&Rr(e,d,new kr(l+5,s,h.width,o),c,0,r.sheet.textColor)}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(l-.5,s),e.lineTo(l-.5,s+o),e.stroke(),l+=h.width+Ts}e.strokeStyle=r.chart.content.gridLineColor,e.beginPath(),e.moveTo(0,s+o-.5),e.lineTo(t.sheetWidth,s+o-.5),e.stroke(),s+=o}}renderChart(e,t,r,i=1){Ms(e,t,r,i,this.theme,this.#wt.timeline.visibleStartTime$,this.#wt.scrollTop$,new Cn(this.#wt),[new xn(this.#wt),new En(this.#wt),new kn(this.#wt)])}}class Pn extends Ps{constructor(e,t){super(new In(e,t))}}class An{#wt;constructor(e){this.#wt=e}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.includeResources??!1,s=this.#wt.locale$.getValue(),n=[];r&&n.push(Es([s.scheduler.resource,s.columns.name,s.labels.start,s.labels.end],t));var a=this.#wt.data.orderedResources;for(var o of a){var l=this.#fo(o.id);for(var h of l)n.push(Es([o.name,h.name,this.#yo(h.startTime),this.#yo(h.endTime)],t))}var d=n.join("\n");if(i)for(var o of(d+="\n\n",r&&(d+=Es([s.columns.name,s.labels.type],t)+"\n"),a))d+=Es([o.name,o.type??""],t)+"\n";return d}async exportToExcel(e){var t=await $s(),r=this.#wt.locale$.getValue(),i=e?.eventsSheetName??r.export.eventsSheetName,s=e?.includeResourcesSheet??!0,n=e?.includeFormatting??!0,a=new t.Workbook;return this.#bo(a,i,n),s&&this.#wt.data.resourcesLength>0&&this.#ba(a,n),Rs(a)}#bo(e,t,r){var i=this.#wt.locale$.getValue(),s=e.addWorksheet(t);s.columns=[{header:i.scheduler.resource,key:"resource",width:25},{header:i.columns.name,key:"name",width:30},{header:i.labels.start,key:"start",width:20},{header:i.labels.end,key:"end",width:20}],r&&Ds(s);var n=this.#wt.data.orderedResources;for(var a of n){var o=this.#fo(a.id);for(var l of o)s.addRow({resource:a.name,name:l.name,start:this.#yo(l.startTime),end:this.#yo(l.endTime)})}r&&Ss(s)}#ba(e,t){var r=this.#wt.locale$.getValue(),i=e.addWorksheet(r.export.resourcesSheetName);i.columns=[{header:r.columns.name,key:"name",width:25},{header:r.labels.type,key:"type",width:15}],t&&Ds(i);var s=this.#wt.data.orderedResources;for(var n of s)i.addRow({name:n.name,type:n.type??""});t&&Ss(i)}#fo(e){var t=this.#wt.data.getEventsForResource(e);return t.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()),t}#yo(e){return Zt(e,this.#wt.locale$.getValue().language,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}}class Hn extends Vs{constructor(e,t){super(new In(e,t))}computeVerticalPageBreaks(e,t,r){var i=t-r;i<=0&&(i=e.rowHeights[0]??40);for(var s=[],n=r,a=0,o=0;o<e.rowHeights.length;o++){var l=e.rowHeights[o];a>0&&a+l>i&&(s.push({srcY:n-a,height:a}),a=0),a+=l,n=r+this.#wo(e.rowHeights,o+1)}return a>0&&s.push({srcY:n-a,height:a}),0===s.length&&s.push({srcY:r,height:0}),s}#wo(e,t){for(var r=0,i=0;i<t&&i<e.length;i++)r+=e[i];return r}}class Vn{#m;get id(){return this.#m}#To;get resourceId(){return this.#To}set resourceId(e){if(!e)throw new Error("SchedulerEvent: resourceId cannot be empty");e!=this.#To&&(this.#To=e,this.#f())}#b;get name(){return this.#b}set name(e){e!=this.#b&&(this.#b=e,this.#f())}#l;get startTime(){return this.#l}set startTime(e){if(!(e instanceof Date)||isNaN(e.getTime()))throw new Error("SchedulerEvent: invalid startTime");e.getTime()!=this.#l.getTime()&&(this.#l=e,this.#f())}#h;get endTime(){return this.#h}set endTime(e){if(!(e instanceof Date)||isNaN(e.getTime()))throw new Error("SchedulerEvent: invalid endTime");e.getTime()!=this.#h.getTime()&&(this.#h=e,this.#f())}#M=null;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}data=void 0;#ae;changed$=new e;constructor(e,t,r,i,s){if(!t)throw new Error("SchedulerEvent: resourceId is required");if(!(i instanceof Date)||isNaN(i.getTime()))throw new Error("SchedulerEvent: invalid startTime");if(!(s instanceof Date)||isNaN(s.getTime()))throw new Error("SchedulerEvent: invalid endTime");if(i.getTime()>=s.getTime())throw new Error("SchedulerEvent: startTime must be before endTime");this.#m=e??er(30),this.#To=t,this.#b=r,this.#l=i,this.#h=s,this.#ae=new lr(()=>this.#f())}get durationMs(){return this.#h.getTime()-this.#l.getTime()}get durationHours(){return this.durationMs/36e5}#f(){this.changed$.next({event:this})}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}toAny(){return{id:this.#m,resourceId:this.#To,name:this.#b,startTime:this.#l.toISOString(),endTime:this.#h.toISOString(),color:this.#M,properties:this.#ae.serializeProperties()}}static fromAny(e){if(!e.resourceId)throw new Error("SchedulerEvent.fromAny: missing resourceId");if(!e.startTime)throw new Error("SchedulerEvent.fromAny: missing startTime");if(!e.endTime)throw new Error("SchedulerEvent.fromAny: missing endTime");var t=new Date(e.startTime),r=new Date(e.endTime);if(isNaN(t.getTime()))throw new Error("SchedulerEvent.fromAny: invalid startTime");if(isNaN(r.getTime()))throw new Error("SchedulerEvent.fromAny: invalid endTime");var i=new Vn(e.id,e.resourceId,e.name??"",t,r);return i.color=e.color??null,e.properties&&i.#ae.loadProperties(e.properties),i}}class Bn{#go;#Co;#xo;constructor(e,t,r){this.#go=e,this.#Co=t,this.#xo=r}getRowHeight(e){var t=this.#Co.getValue(),r=this.#go.getLaneCount(e.id);if(r<=1)return t.rowHeight+1;var i=t.chart.content.taskHeight,s=(t.rowHeight-i)/2;return Math.ceil(2*s+r*i+5*(r-1))+1}getEventY(e,t){var r=this.#Co.getValue(),i=r.chart.content.taskHeight,s=this.getRowY(e);if(this.#go.getLaneCount(e.id)<=1)return s+this.getRowHeight(e)/2-i/2;var n=this.#go.getEventLane(t);return s+(r.rowHeight-i)/2+n*(i+5)}getRowY(e){var t=this.#Co.getValue(),r=this.#go.orderedResources,i=this.#go.orderedIndexOf(e),s=this.#go.frozenResourcesCount,n=t.contentTop;if(this.#go.isResourceFrozen(e)){for(var a=n,o=0;o<i;o++)a+=this.getRowHeight(r[o]);return a}var l=0;for(o=0;o<s;o++)l+=this.getRowHeight(r[o]);var h=0;for(o=s;o<i;o++)h+=this.getRowHeight(r[o]);return n+l-this.#xo.getValue()+h}getTotalContentHeight(){var e=this.#go.orderedResources,t=0;for(var r of e)t+=this.getRowHeight(r);return t}get frozenSectionBottom(){for(var e=this.#Co.getValue().contentTop,t=this.#go.orderedResources,r=this.#go.frozenResourcesCount,i=e,s=0;s<r;s++)i+=this.getRowHeight(t[s]);return i}}const Fn={[yn.Person]:"Person",[yn.Room]:"Room",[yn.Equipment]:"Equipment",[yn.Vehicle]:"Vehicle"};class zn extends Ni{#wt;constructor(e,t,r){super(t,r),this.#wt=e}getDefaultDate(){var e=this.#wt.projectTimeline$.getValue(),t=Bt();return e.startDate.getTime()>t.getTime()&&(t=new Date(e.startDate)),t}getLocale(){return this.#wt.locale$.getValue().language}}class On extends ls{#wt;#An=new r;#ko=null;#Eo=null;rowContextMenu$=new e;rowMouseOver$=new e;constructor(e,t){super(e.table,t),this.#wt=e,this.#Do(),e.defaultSheetWidth=this.getColumnsContentWidth(),this.#An.add(e.locale$.subscribe(()=>{this.#So(),this.redrawAll()})),this.#An.add(e.chartEventHover$.subscribe(t=>{var r=t?e.data.getResourceById(t.resourceId):null;this.setHoverItem(r)})),this.#$o(),this.#Ro(),this.#An.add(this.tableContext.rowMouseOver$.subscribe(t=>{var r=t?{resource:t.item}:null;this.rowMouseOver$.next(r),e.sheetRowMouseOver$.next(r)})),this.#An.add(this.tableContext.rowContextMenu$.subscribe(e=>{this.rowContextMenu$.next({selectedResources:e.selectedItems,mouseEvent:e.mouseEvent})})),this.#Mo()}destroy(){this.#An.unsubscribe(),super.destroy()}#Do(){var e=this.#wt.locale$.getValue(),t=new is("name",e.scheduler.name,e=>e.name??"",new Vi,new Oi(e=>e.name,(e,t)=>e.name=t),()=>!0,200,80);this.addColumn(t);var r=new is("icons","",()=>"",new Sn,null,()=>!1,36,36);r.exportCellRenderer=Ln,this.addColumn(r);var i=new is("type",e.scheduler.type,e=>{var t=e.type;return t?Fn[t]??t:""},new Vi,null,()=>!1,80,60);i.isVisible=!1,this.addColumn(i)}#So(){var e=this.#wt.locale$.getValue(),t=this.getColumnByCode("name");t&&(t.name=e.scheduler.name);var r=this.getColumnByCode("type");r&&(r.name=e.scheduler.type),this.updateColumnHeaders()}getItemRowHeight(e){return this.#wt.getRowHeight(e)-1}redrawItemRow(e){super.redrawItemRow(e);var t=this.getItemRow(e);if(t){var r=this.#wt.getRowHeight(e)-1;t.style.height=r+"px",t.children[0].style.height=r+"px",this.#Lo(t,e)}}#Lo(e,t){var r=this.getColumns().findIndex(e=>"name"===e.code);if(!(r<0)){var i=e.children[r+1];if(i){var s=i.querySelector(".pin-icon");if(this.#wt.data.isResourceFrozen(t)){if(!s){var n=document.createElement("span");n.classList.add("pin-icon"),n.style.display="inline-flex",n.style.flexShrink="0",n.style.marginLeft="4px",n.innerHTML='<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 17v5"/><path d="M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16h14v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1h1V4H7v2h1a1 1 0 0 1 1 1z"/></svg>',i.appendChild(n)}}else s&&s.remove()}}}onComplexOperationFinished(){super.onComplexOperationFinished(),this.#Mo()}#Mo(){for(var e=this.#wt.data.orderedResources,t=0,r=0;r<e.length;r++){var i=e[r],s=this.getItemRow(i);if(s){var n=this.#wt.getRowHeight(i),a=n-1;s.style.height=a+"px",this.#wt.data.isResourceFrozen(i)?(s.style.position="sticky",s.style.top=t+"px",s.style.zIndex="3",s.classList.add("frozen"),t+=n):(s.style.position="",s.style.top="",s.style.zIndex="",s.classList.remove("frozen"))}}}#Ro(){this.#An.add(this.tableContext.rowAdded$.subscribe(({item:e,row:t})=>{t.addEventListener("mousedown",r=>{this.#Io(e,t,r)})})),this.addDocumentListener("mousemove",this.#Po),this.addDocumentListener("mouseup",this.#Ao)}#Io(e,t,r){0===r.button&&this.#wt.canEdit&&!this.#wt.data.isResourceFrozen(e)&&(this.#ko={resource:e,row:t,startX:r.clientX,startY:r.clientY})}#Po(e){if(this.#ko){if(!this.#Eo){var t=e.clientX-this.#ko.startX,r=e.clientY-this.#ko.startY;Math.sqrt(t*t+r*r)>5&&(this.selection.cancelRangeSelection(),this.#Ho(this.#ko))}this.#Eo&&this.#Vo(e.clientY)}}#Ao(e){this.#Eo&&this.#Bo(e.clientY),this.#ko=null}#Ho(e){var t=e.row.cloneNode(!0);t.classList.add("reorder-ghost"),t.style.width=e.row.offsetWidth+"px",t.style.height=e.row.offsetHeight+"px",t.style.left=e.row.getBoundingClientRect().left+"px",window.document.body.appendChild(t);var r=window.document.createElement("div");r.classList.add("row-reorder-indicator"),r.style.display="none",this.rowsContainer.appendChild(r),e.row.style.opacity="0.3",this.#Eo={resource:e.resource,ghost:t,indicator:r,sourceRow:e.row}}#Vo(e){var t=this.#Eo;t.ghost.style.top=e-t.sourceRow.offsetHeight/2+"px";var r=this.#Fo(e);if(r){var i=r.row.getBoundingClientRect(),s=e<i.top+i.height/2,n=this.rowsContainer.getBoundingClientRect(),a=(s?i.top:i.bottom)-n.top;t.indicator.style.top=a+"px",t.indicator.style.display="block"}else t.indicator.style.display="none"}#Bo(e){var t=this.#Eo,r=this.#Fo(e);if(r&&r.resource!==t.resource){var i=r.row.getBoundingClientRect(),s=e<i.top+i.height/2,n=this.#wt.data.indexOfResource(r.resource);s||n++,this.#wt.data.moveResource(t.resource,n)}t.ghost.remove(),t.indicator.remove(),t.sourceRow.style.opacity="",this.#Eo=null}#Fo(e){for(var t=this.#wt.data.orderedResources,r=this.#wt.data.frozenResourcesCount,i=r;i<t.length;i++){var s=t[i],n=this.getItemRow(s);if(n){var a=n.getBoundingClientRect();if(e>=a.top&&e<=a.bottom)return{resource:s,row:n}}}if(t.length>r){var o=t[t.length-1],l=this.getItemRow(o);if(l&&e>l.getBoundingClientRect().bottom)return{resource:o,row:l}}return null}#$o(){this.#An.add(this.#wt.data.eventAdded$.subscribe(()=>this.#zo())),this.#An.add(this.#wt.data.eventRemoved$.subscribe(()=>this.#zo())),this.#An.add(this.#wt.data.eventChanged$.subscribe(()=>this.#zo())),this.#An.add(this.#wt.data.frozenChanged$.subscribe(()=>this.#Mo())),this.#An.add(this.#wt.settings.changed$.subscribe(()=>{this.#So(),this.redrawAll()})),this.#An.add(this.#wt.chartMouseWheel$.subscribe(e=>{e.ctrlKey||this.scrollContentVertically(e.deltaY)}))}#zo(){var e=this.#wt.data.orderedResources;for(var t of e){var r=this.getItemRow(t);if(r){var i=this.#wt.getRowHeight(t)-1;r.style.height=i+"px",r.children[0].style.height=i+"px"}}}formatCustomDateValue(e){return Kt(e,this.#wt.locale$.getValue().language)}createCustomDateCellEditor(e,t){return new zn(this.#wt,e,t)}clearSelection(){super.clearSelection(),this.#wt.selectedResources$.next([])}}class Nn extends Ar{constructor(e,t,r,i){super(e,t,r,i,{getMinStartTime:()=>e.data.minStartTime,getMaxEndTime:()=>e.data.maxEndTime})}}class Wn extends Ur{#wt;#Oo;#Br;constructor(e,t,r){super(e),this.#wt=e,this.#Oo=t,this.#Br=r}getResourceRowAt(e){var t=this.#wt.theme$.getValue().contentTop,r=this.#wt.data.orderedResources,i=this.#wt.data.frozenResourcesCount,s=this.#wt.frozenSectionBottom;if(e.y<t)return null;if(i>0&&e.y<s){for(var n=t,a=0;a<i;a++){var o=this.#wt.getRowHeight(r[a]);if(e.y>=n&&e.y<n+o)return r[a];n+=o}return null}var l=this.#wt.scrollTop$.getValue()+e.y-s;for(n=0,a=i;a<r.length;a++){o=this.#wt.getRowHeight(r[a]);if(l>=n&&l<n+o)return r[a];n+=o}return null}getEventAt(e){var t=this.getResourceRowAt(e);if(!t)return null;var r=this.#wt.theme$.getValue().chart.content.taskHeight,i=this.#wt.data.getEventsForResource(t.id);for(var s of i){var n=this.#wt.getEventY(t,s);if(!(e.y<n||e.y>n+r)){var a=this.dateToX(s.startTime),o=this.dateToX(s.endTime);if(e.x>=a&&e.x<=o)return{event:s,resource:t,x1:a,x2:o}}}return null}drawEventHighlight(e,t,r){var i=this.#wt.data.getResourceById(e.resourceId);if(i){var s=this.#wt.theme$.getValue().chart.content.taskHeight,n=this.#wt.getEventY(i,e),a=new kr(t,n,r-t,s),o=this.#wt.data.getEventColor(e);this.#No(a,o)}}drawTooltip(e,t,r,i){this.#Br.drawTooltip(this.canvas,e,t,r,i)}drawHighlightForResource(e,t,r,i){var s=this.#wt.theme$.getValue().chart.content.taskHeight,n=this.#wt.getRowY(e),a=this.#wt.getRowHeight(e),o=Math.min(t,r),l=Math.max(t,r),h=new kr(o,n+a/2-s/2,l-o,s),d=i??this.#wt.data.orderedIndexOf(e);this.#No(h,d)}drawTooltipForResource(e,t,r,i){this.#Br.drawTooltipForResource(this.canvas,e,t,r,i)}#No(e,t){var r=this.#wt.theme$.getValue(),i=r.chart.content.taskBorderRadius,s=Xr(t,r.chart.content.taskColors),n=this.canvas.getContext("2d");n.globalAlpha=.5,n.beginPath(),i>0?n.roundRect(e.x,e.y,e.width,e.height,i):n.rect(e.x,e.y,e.width,e.height);var a=n.createLinearGradient(e.x,e.y,e.x,e.bottom);a.addColorStop(0,s.color1),a.addColorStop(1,s.color2),n.fillStyle=a,n.fill(),s.borderColor&&(n.beginPath(),i>0?n.roundRect(e.x,e.y,e.width,e.height,i):n.rect(e.x,e.y,e.width,e.height),n.strokeStyle=s.borderColor,n.stroke()),n.globalAlpha=1}}class Un extends Wn{#wt;#Wo=null;#Uo=null;dblClick$=new e;contextMenu$=new e;constructor(e,t,r){super(e,t,r),this.ignoreRightButton=!1,this.ignoreWhenCannotEdit=!1,this.alwaysHandleEvents=!0,this.#wt=e}async onMouseDown(e,t,r){if(0!==r.button)return Wr.notHandled;var i=this.getEventAt(e);if(i){var s=this.#wt.selectedEvents$.getValue();if(t)return s.find(e=>e.id===i.event.id)?this.#wt.selectedEvents$.next(s.filter(e=>e.id!==i.event.id)):this.#wt.selectedEvents$.next([...s,i.event]),Wr.handled;if(r.shiftKey&&s.length>0){var n=s[s.length-1];if(n.resourceId===i.event.resourceId){var a=this.#wt.data.getEventsForResource(n.resourceId);a.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()||e.id.localeCompare(t.id));var o=a.findIndex(e=>e.id===n.id),l=a.findIndex(e=>e.id===i.event.id),h=Math.min(o,l),d=Math.max(o,l);this.#wt.selectedEvents$.next(a.slice(h,d+1))}else this.#wt.selectedEvents$.next([i.event]);return Wr.handled}return this.#wt.selectedEvents$.next([i.event]),Wr.notHandled}return this.#wt.selectedEvents$.getValue().length>0&&this.#wt.selectedEvents$.next([]),Wr.notHandled}async onMouseMove(e,t){this.#Uo=e;var r=this.getEventAt(e),i=r?.event??null;return i!=this.#Wo&&(this.#Wo=i,this.#wt.chartEventHover$.next(i)),Wr.notHandled}async onMouseLeave(e,t){return this.#Wo=null,this.#Uo=null,this.#wt.chartEventHover$.next(null),Wr.notHandled}async onKeyDown(e,t){var r=this.#wt.selectedEvents$.getValue();if(0===r.length)return Wr.notHandled;if(tr(t)&&this.canEdit){var i=[...r];for(var s of i){var n={event:s,cancel:!1};this.#wt.eventDeleting$.next(n),n.cancel||this.#wt.data.removeEvent(s)}return Wr.handled}var a=r[r.length-1],o="ArrowLeft"===t.key||"ArrowRight"===t.key||"ArrowUp"===t.key||"ArrowDown"===t.key;if(t.ctrlKey&&t.shiftKey&&o&&this.canEdit)return this.#jo(a,t,"left");if(t.ctrlKey&&!t.shiftKey&&o&&this.canEdit)return this.#Xo(r,a,t);if(t.shiftKey&&!t.ctrlKey&&o&&this.canEdit)return this.#jo(a,t,"right");var l=null;switch(t.key){case"ArrowLeft":l=this.#Yo(a,-1);break;case"ArrowRight":l=this.#Yo(a,1);break;case"ArrowUp":l=this.#Ko(a,-1);break;case"ArrowDown":l=this.#Ko(a,1)}return l?(t.preventDefault(),this.#wt.selectedEvents$.next([l]),this.#Zo(l),Wr.handled):Wr.notHandled}#Xo(e,t,r){var i=this.#wt.timeline.currentZoom.axis[0];if("ArrowLeft"===r.key||"ArrowRight"===r.key){var s="ArrowRight"===r.key?1:-1;for(var n of e){var a=i.getCellStartTime(n.startTime),o=i.getAdd(a,s),l=n.endTime.getTime()-n.startTime.getTime(),h=new Date(o.getTime()+l);if(u=this.#wt.data.getResourceById(n.resourceId)){var d={event:n,newStartTime:o,newEndTime:h,newResource:u,cancel:!1};this.#wt.eventMoving$.next(d),d.cancel||(n.startTime=d.adjustedStartTime??d.newStartTime,n.endTime=d.adjustedEndTime??d.newEndTime)}}return r.preventDefault(),this.#Zo(t),Wr.handled}if("ArrowUp"===r.key||"ArrowDown"===r.key){var c=t.resourceId;if(!e.every(e=>e.resourceId===c))return Wr.notHandled;var u,g=this.#wt.data.orderedResources;if(!(u=this.#wt.data.getResourceById(c)))return Wr.notHandled;var m=g.indexOf(u);if(m<0)return Wr.notHandled;var p=m+("ArrowDown"===r.key?1:-1);if(p<0||p>=g.length)return Wr.notHandled;var v=g[p];for(var n of e){d={event:n,newStartTime:n.startTime,newEndTime:n.endTime,newResource:v,cancel:!1};this.#wt.eventMoving$.next(d),d.cancel||(n.startTime=d.adjustedStartTime??d.newStartTime,n.endTime=d.adjustedEndTime??d.newEndTime,n.resourceId=d.newResource.id)}return r.preventDefault(),this.#Zo(t),Wr.handled}return Wr.notHandled}#jo(e,t,r){if("ArrowLeft"!==t.key&&"ArrowRight"!==t.key)return Wr.notHandled;var i,s=this.#wt.timeline.currentZoom.axis[0],n="ArrowRight"===t.key?1:-1,a=e.startTime,o=e.endTime;if("right"===r){i="right";var l=s.getCellStartTime(e.endTime);if((o=s.getAdd(l,n)).getTime()<=e.startTime.getTime())return Wr.notHandled}else{i="left";var h=s.getCellStartTime(e.startTime);if(a=s.getAdd(h,n),(a=this.#wt.calendar$.getValue().moveToStartShift(a,!0)).getTime()>=e.endTime.getTime())return Wr.notHandled}var d={event:e,edge:i,newStartTime:a,newEndTime:o,cancel:!1};if(this.#wt.eventResizing$.next(d),!d.cancel){var c=d.adjustedStartTime??d.newStartTime,u=d.adjustedEndTime??d.newEndTime;c.getTime()<u.getTime()&&("left"===i?e.startTime=c:e.endTime=u)}return t.preventDefault(),this.#Zo(e),Wr.handled}#Yo(e,t){var r=this.#wt.data.getEventsForResource(e.resourceId);r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()||e.id.localeCompare(t.id));var i=r.findIndex(t=>t.id===e.id);if(i<0)return null;var s=i+t;return s<0||s>=r.length?null:r[s]}#Ko(e,t){var r=this.#wt.data.orderedResources,i=this.#wt.data.getResourceById(e.resourceId);if(!i)return null;var s=r.indexOf(i);if(s<0)return null;for(var n=(e.startTime.getTime()+e.endTime.getTime())/2,a=s+t;a>=0&&a<r.length;a+=t){var o=this.#wt.data.getEventsForResource(r[a].id);if(0!==o.length){var l=null,h=1/0;for(var d of o){var c=(d.startTime.getTime()+d.endTime.getTime())/2,u=Math.abs(c-n);u<h&&(h=u,l=d)}return l}}return null}#Zo(e){var t=this.dateToX(e.startTime),r=this.dateToX(e.endTime);if(t<0||r>this.canvas.width){var i=this.#wt.timeline.currentZoom.axis[0],s=i.getAdd(i.getCellStartTime(e.startTime),-1);this.#wt.timeline.visibleStartTime$.next(s)}}onRedrawn(){this.#Go();var e=this.#wt.chartEventHover$.getValue();if(e&&this.#Uo){var t=this.#wt.data.getResourceById(e.resourceId);if(!t)return;var r=this.#wt.eventTooltip$.getValue();if(r){var i=r({event:e,resource:t});i&&this.drawTooltip(e,this.#Uo.x,i.title,i.lines)}else{var s=this.#wt.locale$.getValue(),n=[];n.push({name:s.labels.start,value:Kt(e.startTime,s.language)}),n.push({name:s.labels.end,value:Kt(e.endTime,s.language)}),this.drawTooltip(e,this.#Uo.x,e.name,n)}}}#Go(){var e=this.#wt.selectedEvents$.getValue();if(0!==e.length){var t=this.#wt.theme$.getValue().chart.content.taskHeight,r=this.canvas.getContext("2d");for(var i of e){var s=this.#wt.data.getResourceById(i.resourceId);if(s){var n=this.dateToX(i.startTime),a=this.dateToX(i.endTime);if(!(a<0||n>this.canvas.width)){var o=this.#wt.getEventY(s,i);if(ui(r,new xr(n,o)),ui(r,new xr(a,o)),ui(r,new xr(n,o+t)),ui(r,new xr(a,o+t)),a-n>=60){var l=Math.floor((n+a)/2);ui(r,new xr(l,o)),ui(r,new xr(l,o+t))}}}}}}onContextMenu(e,t){var r=this.getResourceRowAt(e);if(!r)return Wr.notHandled;var i=this.#wt.timeline.currentZoom,s=i.axis[0],n=this.#wt.timeline.visibleStartTime$.getValue(),a=Math.floor(e.x/i.baseCellWidth),o=s.getAdd(n,a),l=this.getEventAt(e);return this.contextMenu$.next({date:o,resource:r,event:l?.event??null,mouseEvent:t}),Wr.handled}onDblClick(e,t){if(!this.canEdit)return Wr.notHandled;var r=this.getEventAt(e);return r?(this.dblClick$.next(r.event),Wr.handled):Wr.notHandled}}class jn extends Wn{startX=0;lastP=new xr(0,0);target=null;dragCursor="all-scroll";enableHoverDetection=!1;hoverCursor="ew-resize";constructor(e,t,r){super(e,t,r)}onDragStart(e,t){}async onMouseMove(e,t){if(this.isInOperation)return this.lastP=e,Wr.handled;if(this.enableHoverDetection){var r=this.hitTest(e);if(r)return this.target=r,this.setCursor(this.hoverCursor),Wr.handled;this.target&&(this.target=null,this.setCursor("default"))}return Wr.notHandled}async onMouseDown(e,t,r){if(0!==r.button||this.isInOperation)return Wr.notHandled;var i=this.hitTest(e);return i?(this.target=i,this.isInOperation=!0,this.startX=e.x,this.lastP=e,this.onDragStart(i,e),this.setCursor(this.dragCursor),Wr.handled):Wr.notHandled}async onMouseUp(e,t,r){return this.isInOperation?(this.isInOperation=!1,this.setCursor("default"),this.onDragEnd(this.target,e),Wr.handled):Wr.notHandled}onRedrawn(){this.isInOperation&&this.target&&this.onDragDraw(this.target)}}class Xn extends jn{#wt;#qo=0;constructor(e,t,r){super(e,t,r),this.#wt=e}hitTest(e){return this.getEventAt(e)}onDragStart(e,t){this.#qo=e.event.endTime.getTime()-e.event.startTime.getTime(),this.#wt.chartEventHover$.next(null)}onDragEnd(e,t){var r=this.#Fr(t),i=e.event,s={event:i,newStartTime:r.startTime,newEndTime:r.endTime,newResource:r.targetResource,cancel:!1};this.#wt.eventMoving$.next(s),s.cancel||(i.startTime=s.adjustedStartTime??s.newStartTime,i.endTime=s.adjustedEndTime??s.newEndTime,i.resourceId=s.newResource.id),this.#wt.selectedEvents$.next([i])}onDragDraw(e){var t=this.#Fr(this.lastP),r=this.lastP.x-this.startX,i=e.x1+r,s=e.x2+r;if(t.targetResource.id===e.resource.id)this.drawEventHighlight(e.event,i,s);else{var n=this.#wt.data.getEventColor(e.event);this.drawHighlightForResource(t.targetResource,i,s,n)}var a=this.#wt.locale$.getValue(),o=[];o.push({name:a.labels.start,value:Kt(t.startTime,a.language)}),o.push({name:a.labels.end,value:Kt(t.endTime,a.language)}),this.drawTooltipForResource(t.targetResource,this.startX,a.scheduler.moveEvent,o)}#_o(e){return this.getResourceRowAt(e)??this.target.resource}#Fr(e){var t=e.x-this.startX,r=this.getCellAt(new xr(this.target.x1+t,e.y)),i=this.cellToDate(r),s=new Date(i.getTime()+this.#qo);return{startTime:i,endTime:s,targetResource:this.#_o(e)}}}class Yn extends jn{#wt;constructor(e,t,r){super(e,t,r),this.#wt=e,this.enableHoverDetection=!0,this.dragCursor="ew-resize"}hitTest(e){var t=this.getResourceRowAt(e);if(!t)return null;var r=this.#wt.theme$.getValue().chart.content.taskHeight,i=this.#wt.data.getEventsForResource(t.id);for(var s of i){var n=this.#wt.getEventY(t,s);if(!(e.y<n||e.y>n+r)){var a=this.dateToX(s.startTime),o=this.dateToX(s.endTime);if(Math.abs(e.x-o)<=3)return{event:s,resource:t,edge:"right",x1:a,x2:o,deltaX:e.x-o};if(Math.abs(e.x-a)<=3)return{event:s,resource:t,edge:"left",x1:a,x2:o,deltaX:e.x-a}}}return null}onDragStart(e,t){this.#wt.chartEventHover$.next(null),this.#wt.selectedEvents$.next([])}onDragEnd(e,t){var r=this.#Fr(t),i=e.event;if(r.startTime.getTime()<r.endTime.getTime()){var s={event:i,edge:e.edge,newStartTime:r.startTime,newEndTime:r.endTime,cancel:!1};if(this.#wt.eventResizing$.next(s),!s.cancel){var n=s.adjustedStartTime??s.newStartTime,a=s.adjustedEndTime??s.newEndTime;n.getTime()<a.getTime()&&("left"===e.edge?i.startTime=n:i.endTime=a)}}this.#wt.selectedEvents$.next([i])}onDragDraw(e){var t,r,i=this.lastP.x-this.startX-e.deltaX;"left"===e.edge?(t=e.x1+i,r=e.x2):(t=e.x1,r=e.x2+i),this.drawEventHighlight(e.event,t,r);var s=this.#wt.locale$.getValue(),n=this.#Fr(this.lastP),a=[];"left"===e.edge?a.push({name:s.labels.start,value:Kt(n.startTime,s.language)}):a.push({name:s.labels.end,value:Kt(n.endTime,s.language)}),this.drawTooltip(e.event,this.startX,s.scheduler.resizeEvent,a)}#Fr(e){var t=this.target,r=this.lastP.x-this.startX-t.deltaX;if("left"===t.edge){var i=t.x1+r,s=this.getCellAt(new xr(i,e.y)),n=this.cellToDate(s);return{startTime:n=this.#wt.calendar.moveToStartShift(n,!0),endTime:t.event.endTime}}var a=t.x2+r,o=this.getCellEndAligned(new xr(a,e.y)),l=this.getEndTimeAligned(o);return{startTime:t.event.startTime,endTime:l}}}class Kn extends jn{#wt;constructor(e,t,r){super(e,t,r),this.#wt=e,this.dragCursor="crosshair"}hitTest(e){var t=this.getResourceRowAt(e);return t?this.getEventAt(e)?null:{resource:t,startCell:this.getCellAt(e)}:null}onDragStart(e,t){this.#wt.chartEventHover$.next(null)}onDragEnd(e,t){var r=this.#Fr(t);if(r){var i={resource:e.resource,startTime:r.startTime,endTime:r.endTime,cancel:!1};if(this.#wt.eventCreating$.next(i),!i.cancel){var s=i.adjustedStartTime??i.startTime,n=i.adjustedEndTime??i.endTime;if(n.getTime()>s.getTime()){var a=new Vn(null,e.resource.id,"",s,n);this.#wt.data.addEvent(a),this.#wt.selectedEvents$.next([a])}}}}onDragDraw(e){this.drawHighlightForResource(e.resource,this.startX,this.lastP.x);var t=this.#Fr(this.lastP);if(t){var r=this.#wt.locale$.getValue(),i=[];i.push({name:r.labels.start,value:Kt(t.startTime,r.language)}),i.push({name:r.labels.end,value:Kt(t.endTime,r.language)}),this.drawTooltipForResource(e.resource,this.startX,r.scheduler.addEvent,i)}}#Fr(e){var t=this.target,r=Math.round(t.startCell),i=this.getCellEndAligned(e);if(i<=r)return null;var s=this.cellToDate(t.startCell),n=this.getEndTimeAligned(i);return s=this.#wt.calendar.moveToStartShift(s,!0),n=this.#wt.calendar.moveToEndShift(n,!0),s.getTime()>=n.getTime()?null:{startTime:s,endTime:n}}}class Zn{#wt;constructor(e){this.#wt=e}drawTooltipForResource(e,t,r,i,s){Ci(e,this.#wt.getRowY(t),this.#wt.getRowHeight(t),r,i,s,this.#wt.theme$.getValue())}drawTooltip(e,t,r,i,s){var n=this.#wt.data.getResourceById(t.resourceId);n&&Ci(e,this.#wt.getEventY(n,t),this.#wt.theme$.getValue().chart.content.taskHeight,r,i,s,this.#wt.theme$.getValue())}}class Gn extends Nr{#wt;eventDblClick$=new e;eventContextMenu$=new e;constructor(e,t){super(e,t),this.#wt=e;var r=new kn(e),i=new Zn(e),s=new Un(e,r,i);this.addSubscription(s.dblClick$.subscribe(e=>{this.eventDblClick$.next(e)})),this.addSubscription(s.contextMenu$.subscribe(e=>{this.eventContextMenu$.next(e)})),this.addHandler(s),this.addHandler(new Yn(e,r,i)),this.addHandler(new Xn(e,r,i)),this.addHandler(new Kn(e,r,i)),this.wireHandlers()}createAutoScroll(e){return new Fr(e,(e,t)=>this.onAutoScroll(e,t),{enableVertical:!0,getContentTop:()=>this.#wt.theme$.getValue().contentTop})}onAutoScroll(e,t){if(super.onAutoScroll(e,t),0!==t){var r=this.#wt.scrollTop$.getValue(),i=this.#wt.theme$.getValue().contentTop,s=this.chartElement.clientHeight-i,n=Math.max(0,this.#wt.getTotalContentHeight()-s);this.#wt.scrollTop$.next(Math.max(0,Math.min(n,r+t)))}}registerKeydownListener(e){e.addEventListener("keydown",async e=>{await this.handleKeyDown(e)},!1)}onBeforeMouseDown(){this.chartElement.focus({preventScroll:!0})}}class qn extends Mi{#$t;#Fi;#Oo;#Li;#Oi;#pr;constructor(e,t){super(e,t),this.init(),t.setAttribute("tabindex","0")}initComponents(e,t,r){this.#$t=new Cn(this.ctx),this.#Fi=new xn(this.ctx),this.#Oo=new kn(this.ctx),this.#Li=new En(this.ctx),this.#Oi=new Nn(this.ctx,e,t,r),this.#pr=new Gn(this.ctx,e),this.#pr.init(e,t)}getRedrawObservables(){var e=this.ctx;return[this.#pr.redraw$,e.timeline.zoomIndex$,e.timeline.visibleStartTime$,e.scrollTop$,e.data.resourceChanged$,e.data.resourceRemoved$,e.data.eventAdded$,e.data.eventChanged$,e.data.eventRemoved$,e.data.complexOperationFinished$,e.data.frozenChanged$,e.sheetRowMouseOver$,e.chartEventHover$,e.selectedEvents$,e.selectedResources$,e.settings.changed$,e.showGridLines$,e.showTodayLine$,e.markers$]}onRedraw(e){this.renderPipeline(e,this.#$t,this.#Fi,this.#Li,()=>{this.#Oo.render(this.canvas)})}onResize(){this.#Oi.handleResize()}get handlers(){return this.#pr}destroyComponents(){this.#Oi.destroy(),this.#pr.destroy()}}class _n extends fs{constructor(e,t,r,i,s){super(e,t,r,i,s,{getDefaultSheetWidth:()=>e.defaultSheetWidth})}}class Jn{#wt;#La=null;constructor(e){this.#wt=e}async copy(e){if(0!==e.length){this.#La=this.#Ia(e);var t=this.#Pa(e);try{await navigator.clipboard.writeText(t)}catch{}}}async cut(e){if(await this.copy(e),e.length>0)for(var t of e)this.#wt.data.removeEvent(t)}async paste(){if(this.#La)return this.#Aa(this.#La);try{var e=await navigator.clipboard.readText();if(e&&e.trim().length>0)return this.#Ha(e)}catch{}return null}#Ia(e){var t=[];for(var r of e)t.push(r.toAny());return{events:t}}#Aa(e){var t=new Map,r=[];for(var i of e.events){var s=i.id,n=i.resourceId;if(this.#wt.data.getResourceById(n)){var a=new Vn(null,n,i.name??"",new Date(i.startTime),new Date(i.endTime));if(void 0!==i.color&&null!==i.color&&(a.color=i.color),i.properties)for(var o of i.properties)a.addProperty(or.fromAny(o));this.#wt.data.addEvent(a),t.set(s,a),r.push(a)}}return this.#wt.data.complexOperationFinished$.next(),{events:r,eventIdMap:t}}#Ha(e){var t=e.split("\n").filter(e=>e.trim().length>0),r=[],i=new Map,s=this.#wt.selectedEvents$.getValue(),n=null;if(s.length>0)n=s[s.length-1].resourceId;else{var a=this.#wt.data.orderedResources;a.length>0&&(n=a[0].id)}if(!n)return{events:[],eventIdMap:i};if(!this.#wt.data.getResourceById(n))return{events:[],eventIdMap:i};for(var o of t){var l=o.split("\t"),h=l[0]?.trim();if(h){var d=null,c=null;if(l[1]?.trim())try{d=new Date(l[1].trim())}catch{}if(l[2]?.trim())try{c=new Date(l[2].trim())}catch{}if(d&&!isNaN(d.getTime())&&c&&!isNaN(c.getTime())&&!(d.getTime()>=c.getTime())){var u=new Vn(null,n,h,d,c);this.#wt.data.addEvent(u);var g=er(8);i.set(g,u),r.push(u)}}}return this.#wt.data.complexOperationFinished$.next(),{events:r,eventIdMap:i}}#Pa(e){var t=[];for(var r of e){var i=r.name??"",s=qt(r.startTime),n=qt(r.endTime),a="",o=this.#wt.data.getResourceById(r.resourceId);o&&(a=o.name),t.push([i,s,n,a].join("\t"))}return t.join("\n")}}class Qn{data;dataAdapter;table;timeline;locale$;calendar$;theme$;projectTimeline$;settings;get scrollTop$(){return this.table.scrollTop$}autoScrolling=!1;selectedResources$=new t([]);canEdit$=new t(!0);get canEdit(){return this.canEdit$.getValue()}showGridLines$=new t(!0);showTodayLine$=new t(!0);markers$=new t([]);defaultSheetWidth=0;dividerPositionChanged$=new e;dividerResizing$=new t(!1);chartMouseWheel$=new e;chartRedrawn$=new e;chartBackgroundRedrawn$=new e;chartCursor$=new e;chartEventHover$=new t(null);selectedEvents$=new t([]);sheetRowMouseOver$=new t(null);eventMoving$=new e;eventResizing$=new e;eventCreating$=new e;eventDeleting$=new e;eventRendering$=new t(null);eventTooltip$=new t(null);layout;constructor(){this.projectTimeline$=new t(new Sr(Bt(),Ft(180))),this.locale$=new t(Ns),this.calendar$=new t(new yr),this.timeline=new Ii(this.calendar$,this.locale$),this.data=new fn;var e=new gn;this.theme$=new t(e),this.dataAdapter=new wn(this.data),this.table=new zs(this.dataAdapter,e.rowHeight),this.canEdit$.subscribe(e=>this.table.canEdit$.next(e)),this.table.selectedItems$.subscribe(e=>this.selectedResources$.next(e)),this.layout=new Bn(this.data,this.theme$,this.scrollTop$)}get calendar(){return this.calendar$.getValue()}getRowHeight(e){return this.layout.getRowHeight(e)}getEventY(e,t){return this.layout.getEventY(e,t)}getRowY(e){return this.layout.getRowY(e)}getTotalContentHeight(){return this.layout.getTotalContentHeight()}get frozenSectionBottom(){return this.layout.frozenSectionBottom}}class ea extends Us{#wt;#ma;#Xa;#Ya;#Jo;#Ka;#Za;#Ga;#Qo;get ctx(){return this.#wt}get engineEvents(){return this.#Ga}getChartWidth(){return this.#Ya.chartWidth}getChartElement(){return this.#Ya.chartElement}getTheme(){return this.#wt.theme$.getValue()}subscribeThemeChange(e){return this.#wt.theme$.subscribe(e)}isCellEditing(){return null!==this.#wt.table.cellEditing$.getValue()}saveColumnsImpl(){return this.#ma.saveColumns()}loadColumnsImpl(e){this.#ma.loadColumns(e)}hasData(){return this.data.eventsLength>0}destroyComponents(){this.#Ya.destroy(),this.#ma.destroy(),this.#Xa.destroy(),this.#Jo.destroy()}addWrapperClasses(e){e.classList.add("gc-scheduler")}get data(){return this.#wt.data}get sheet(){return this.#ma}get events(){return this.#Ga}get selectedResources(){return this.#wt.selectedResources$.getValue()}get selectedEvents(){return this.#wt.selectedEvents$.getValue()}set selectedEvents(e){this.#wt.selectedEvents$.next(e)}get selectedEvent(){var e=this.#wt.selectedEvents$.getValue();return e.length>0?e[e.length-1]:null}set selectedEvent(e){this.#wt.selectedEvents$.next(e?[e]:[])}get eventRendering(){return this.#wt.eventRendering$.getValue()}set eventRendering(e){this.#wt.eventRendering$.next(e)}get eventTooltip(){return this.#wt.eventTooltip$.getValue()}set eventTooltip(e){this.#wt.eventTooltip$.next(e)}get filter(){return this.#wt.data.filter}set filter(e){this.#wt.data.filter=e}clearFilter(){this.#wt.data.filter=null}get settings(){return this.#Qo}constructor(e){super(e),this.#wt=new Qn,this.#Qo=new ra(this.#wt),this.#wt.settings=this.#Qo;var{sheetElement:t,dividerElement:r,chartElement:i}=this.createDom();this.#ma=new On(this.#wt,t),this.#Xa=new _n(this.#wt,this._wrapperElement,t,r,i),this.#Ya=new qn(this.#wt,i),this._subscriptions.add(this.#ma.columnsChanged$.subscribe(()=>{this.#Xa.updateCalculatedWidth(this.#ma.getColumnsContentWidth())})),this.#Jo=new ia(this.#wt,this._wrapperElement,this.#ma),this.#Ga=new ta(this.#wt,this.#ma),this.#Ga._bindChartHandlers(this.#Ya),this.#Za=new Jn(this.#wt),this.#Ka=new Fs(()=>this.save(),e=>this.restoreState(e)),this._undoManager=this.#Ka,this._subscriptions.add(this.#wt.data.resourceAdded$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#wt.data.resourceChanged$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#wt.data.resourceRemoved$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventAdded$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventChanged$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventRemoved$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#wt.data.complexOperationFinished$.subscribe(()=>this.#Ka.requestSnapshot())),this._subscriptions.add(this.#wt.data.eventRemoved$.subscribe(e=>{var t=this.#wt.selectedEvents$.getValue(),r=t.filter(t=>t.id!==e.event.id);r.length!==t.length&&this.#wt.selectedEvents$.next(r)})),this._subscriptions.add(this.#wt.data.filterChanged$.subscribe(()=>{var e=this.#wt.selectedEvents$.getValue(),t=e.filter(e=>{var t=this.#wt.data.getResourceById(e.resourceId);return t&&!t.filtered});t.length!==e.length&&this.#wt.selectedEvents$.next(t),this.#wt.data.complexOperationFinished$.next()})),this.#Ka.initialize(),this.wireTheme(),this.wireKeyboard()}async copy(){var e=this.#wt.selectedEvents$.getValue();await this.#Za.copy(e)}async cut(){if(this.canEdit){var e=this.#wt.selectedEvents$.getValue();await this.#Za.cut(e)}}async paste(){if(!this.canEdit)return null;this._undoManager.beginBatch();try{var e=await this.#Za.paste();return e&&this.#Ga.eventsPasted$.next(e),e}finally{this._undoManager.endBatch()}}scrollToResource(e){this.#ma.scrollToItem(e)}scrollToEvent(e){var t=this.#wt.data.getResourceById(e.resourceId);t&&this.#ma.scrollToItem(t),this.scrollToDate(e.startTime)}zoomToFit(e){var t=null,r=null;if(e&&e.length>0)for(var i of e)(!t||i.startTime.getTime()<t.getTime())&&(t=i.startTime),(!r||i.endTime.getTime()>r.getTime())&&(r=i.endTime);else t=this.#wt.data.minStartTime,r=this.#wt.data.maxEndTime;this.zoomToFitRange(t,r)}async exportToImage(){return new Pn(this.#wt,this.#ma).exportToImage()}exportToCsv(e){return new An(this.#wt).exportToCsv(e)}async exportToExcel(e){return new An(this.#wt).exportToExcel(e)}async exportToPdf(e){return new Hn(this.#wt,this.#ma).exportToPdf(e)}sortResources(e){this.#wt.data.sortResources(e)}freezeResource(e){this.#wt.data.freezeResource(e)}unfreezeResource(e){this.#wt.data.unfreezeResource(e)}isResourceFrozen(e){return this.#wt.data.isResourceFrozen(e)}save(){for(var e=[],t=0;t<this.data.resourcesLength;t++)e.push(this.data.getResource(t).toAny());var r=[];for(t=0;t<this.data.eventsLength;t++)r.push(this.data.getEvent(t).toAny());var i=[...this.data.frozenResourceIds],s=this.markers.map(e=>({date:qt(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})),n={resources:e,events:r,projectTimeline:{startDate:qt(this.projectTimeline.startDate),endDate:qt(this.projectTimeline.endDate)},showTodayLine:this.showTodayLine,frozenResourceIds:i.length>0?i:void 0,markers:s.length>0?s:void 0};return JSON.stringify(n,(e,t)=>null===t?void 0:t)}restoreState(e){this.sheet.clearSelection(),this.#wt.selectedEvents$.next([]),this.#wt.data.filter=null;for(var t=JSON.parse(e),r=[],i=0;i<t.resources.length;i++)r.push(bn.fromAny(t.resources[i]));this.data.assignResources(r);var s=[];for(i=0;i<t.events.length;i++)s.push(Vn.fromAny(t.events[i]));if(this.data.assignEvents(s),t.projectTimeline&&this.#wt.projectTimeline$.next(new Sr(new Date(t.projectTimeline.startDate),new Date(t.projectTimeline.endDate))),void 0!==t.showTodayLine&&this.#wt.showTodayLine$.next(t.showTodayLine),t.frozenResourceIds)for(var n of t.frozenResourceIds){var a=this.data.getResourceById(n);a&&this.data.freezeResource(a)}t.markers?this.markers=t.markers.map(e=>({date:new Date(e.date),label:e.label,color:e.color,lineWidth:e.lineWidth,lineStyle:e.lineStyle})):this.markers=[]}}class ta{#T=new r;resourceAdded$=new e;resourceChanged$=new e;resourceRemoved$=new e;eventAdded$=new e;eventChanged$=new e;eventRemoved$=new e;eventSelected$=new e;eventDblClick$=new e;eventDeleting$=new e;eventsPasted$=new e;chartContextMenu$=new e;eventMoving$=new e;eventResizing$=new e;eventCreating$=new e;sheetRowContextMenu$=new e;sheetCellEditing$=new e;projectTimeline$=new e;undone$=new e;redone$=new e;constructor(e,t){this.#T.add(e.data.resourceAdded$.subscribe(e=>this.resourceAdded$.next(e))),this.#T.add(e.data.resourceChanged$.subscribe(e=>this.resourceChanged$.next(e))),this.#T.add(e.data.resourceRemoved$.subscribe(e=>this.resourceRemoved$.next(e))),this.#T.add(e.data.eventAdded$.subscribe(e=>this.eventAdded$.next(e))),this.#T.add(e.data.eventChanged$.subscribe(e=>this.eventChanged$.next(e))),this.#T.add(e.data.eventRemoved$.subscribe(e=>this.eventRemoved$.next(e))),this.#T.add(e.selectedEvents$.subscribe(e=>{var t=e.length>0?e[e.length-1]:null;this.eventSelected$.next(t?{event:t}:null)})),this.#T.add(e.eventDeleting$.subscribe(e=>this.eventDeleting$.next(e))),this.#T.add(t.rowContextMenu$.subscribe(e=>this.sheetRowContextMenu$.next(e))),this.#T.add(e.table.cellEditing$.subscribe(e=>this.sheetCellEditing$.next(null!==e))),this.#T.add(e.projectTimeline$.subscribe(e=>this.projectTimeline$.next(e))),this.#T.add(e.eventMoving$.subscribe(e=>this.eventMoving$.next(e))),this.#T.add(e.eventResizing$.subscribe(e=>this.eventResizing$.next(e))),this.#T.add(e.eventCreating$.subscribe(e=>this.eventCreating$.next(e)))}_bindChartHandlers(e){this.#T.add(e.handlers.eventDblClick$.subscribe(e=>this.eventDblClick$.next({event:e}))),this.#T.add(e.handlers.eventContextMenu$.subscribe(e=>this.chartContextMenu$.next(e)))}destroy(){this.#T.unsubscribe()}}class ra{get locale(){return this.#wt.locale$.getValue()}set locale(e){this.#wt.locale$.next(e),this.changed$.next()}get theme(){return this.#wt.theme$.getValue()}set theme(e){this.#wt.theme$.next(e),this.#wt.table.rowHeight=e.rowHeight,this.changed$.next()}changed$=new e;#wt;constructor(e){this.#wt=e}}class ia{#wt;#nr;#Lt;#ma;#el=!1;#T=new r;constructor(e,t,r){this.#wt=e,this.#ma=r,this.#nr=document.createElement("div"),this.#nr.classList.add("gc-scrollbar"),t.appendChild(this.#nr),this.#Lt=document.createElement("div"),this.#nr.appendChild(this.#Lt),this.#nr.addEventListener("scroll",()=>{this.#el||(this.#el=!0,this.#ma.setScrollTop(this.#nr.scrollTop),this.#el=!1)}),this.#T.add(e.scrollTop$.subscribe(()=>{this.#el||(this.#el=!0,this.#nr.scrollTop=e.scrollTop$.getValue(),this.#el=!1),this.#tl()})),this.#T.add(e.data.resourceAdded$.subscribe(()=>this.#tl())),this.#T.add(e.data.resourceRemoved$.subscribe(()=>this.#tl())),this.#T.add(e.data.eventAdded$.subscribe(()=>this.#tl())),this.#T.add(e.data.eventRemoved$.subscribe(()=>this.#tl())),this.#T.add(e.data.eventChanged$.subscribe(()=>this.#tl())),this.#T.add(e.data.complexOperationFinished$.subscribe(()=>this.#tl()))}#tl(){var e=this.#wt.theme$.getValue().contentTop+this.#wt.getTotalContentHeight();this.#Lt.style.height=e+"px"}destroy(){this.#T.unsubscribe(),this.#nr.parentNode&&this.#nr.parentNode.removeChild(this.#nr)}}class sa{#m;get id(){return this.#m}#b="";get name(){return this.#b}set name(e){e!==this.#b&&(this.#b=e,this.#f())}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.#f())}#gs=!0;get isVisible(){return this.#gs}set isVisible(e){e!==this.#gs&&(this.#gs=e,this.visibilityChanged$.next({calendar:this}),this.#f())}#rl=!1;get isDefault(){return this.#rl}set isDefault(e){e!==this.#rl&&(this.#rl=e,this.#f())}#il=!1;get isReadOnly(){return this.#il}set isReadOnly(e){e!==this.#il&&(this.#il=e,this.#f())}#sl=null;get timeZone(){return this.#sl}set timeZone(e){e!==this.#sl&&(this.#sl=e,this.#f())}#nl=null;get description(){return this.#nl}set description(e){e!==this.#nl&&(this.#nl=e,this.#f())}changed$=new e;visibilityChanged$=new e;constructor(e){this.#m=e??er(30)}toAny(){return{id:this.#m,name:this.#b,color:this.#M,isVisible:this.#gs,isDefault:this.#rl,isReadOnly:this.#il,timeZone:this.#sl,description:this.#nl}}static fromAny(e){var t=new sa(e.id??null);return t.#b=e.name??"",t.#M=e.color??0,t.#gs=e.isVisible??!0,t.#rl=e.isDefault??!1,t.#il=e.isReadOnly??!1,t.#sl=e.timeZone??null,t.#nl=e.description??null,t}#f(){this.changed$.next({calendar:this})}}const na={su:0,mo:1,tu:2,we:3,th:4,fr:5,sa:6};class aa{frequency;interval;until;count;byDay;byMonthDay;byMonth;bySetPos;weekStart;constructor(e){if(this.frequency=e.frequency,this.interval=e.interval??1,this.until=e.until??null,this.count=e.count??null,this.byDay=Object.freeze([...e.byDay??[]]),this.byMonthDay=Object.freeze([...e.byMonthDay??[]]),this.byMonth=Object.freeze([...e.byMonth??[]]),this.bySetPos=Object.freeze([...e.bySetPos??[]]),this.weekStart=e.weekStart??"mo",this.interval<1)throw new Error("RecurrenceRule: interval must be >= 1");if(this.until&&this.count)throw new Error("RecurrenceRule: until and count are mutually exclusive")}static fromString(e){var t=(e.startsWith("RRULE:")?e.substring(6):e).split(";"),r={frequency:"daily"};for(var i of t){var[s,n]=i.split("=");switch(s){case"FREQ":r.frequency=n.toLowerCase();break;case"INTERVAL":r.interval=parseInt(n,10);break;case"UNTIL":r.until=da(n);break;case"COUNT":r.count=parseInt(n,10);break;case"BYDAY":r.byDay=n.split(",").map(la);break;case"BYMONTHDAY":r.byMonthDay=n.split(",").map(e=>parseInt(e,10));break;case"BYMONTH":r.byMonth=n.split(",").map(e=>parseInt(e,10));break;case"BYSETPOS":r.bySetPos=n.split(",").map(e=>parseInt(e,10));break;case"WKST":r.weekStart=n.toLowerCase()}}return new aa(r)}toString(){var e,t,r,i,s,n,a,o=[];return o.push("FREQ="+this.frequency.toUpperCase()),this.interval>1&&o.push("INTERVAL="+this.interval),this.until&&o.push("UNTIL="+(e=this.until,t=e.getUTCFullYear(),r=String(e.getUTCMonth()+1).padStart(2,"0"),i=String(e.getUTCDate()).padStart(2,"0"),s=String(e.getUTCHours()).padStart(2,"0"),n=String(e.getUTCMinutes()).padStart(2,"0"),a=String(e.getUTCSeconds()).padStart(2,"0"),`${t}${r}${i}T${s}${n}${a}Z`)),null!==this.count&&o.push("COUNT="+this.count),this.byDay.length>0&&o.push("BYDAY="+this.byDay.map(ha).join(",")),this.byMonthDay.length>0&&o.push("BYMONTHDAY="+this.byMonthDay.join(",")),this.byMonth.length>0&&o.push("BYMONTH="+this.byMonth.join(",")),this.bySetPos.length>0&&o.push("BYSETPOS="+this.bySetPos.join(",")),"mo"!==this.weekStart&&o.push("WKST="+this.weekStart.toUpperCase()),o.join(";")}toAny(){return{frequency:this.frequency,interval:this.interval,until:this.until?.toISOString()??null,count:this.count,byDay:this.byDay.length>0?[...this.byDay]:null,byMonthDay:this.byMonthDay.length>0?[...this.byMonthDay]:null,byMonth:this.byMonth.length>0?[...this.byMonth]:null,bySetPos:this.bySetPos.length>0?[...this.bySetPos]:null,weekStart:this.weekStart}}static fromAny(e){var t=[];return e.byDay&&(t=e.byDay.map(e=>"string"==typeof e?la(e):e)),new aa({frequency:e.frequency,interval:e.interval??1,until:e.until?new Date(e.until):null,count:e.count??null,byDay:t,byMonthDay:e.byMonthDay??[],byMonth:e.byMonth??[],bySetPos:e.bySetPos??[],weekStart:e.weekStart??"mo"})}expandBetween(e,t,r){var i=[],s=this.count??oa,n=0,a=new Date(e);if(null===this.count&&a.getTime()<t.getTime()){var o=t.getTime()-a.getTime();switch(this.frequency){case"daily":var l=864e5*this.interval;(h=Math.floor(o/l))>1&&(a=new Date(a.getTime()+(h-1)*l));break;case"weekly":var h;l=7*this.interval*864e5;(h=Math.floor(o/l))>1&&(a=new Date(a.getTime()+(h-1)*l))}}for(var d=oa;d-- >0;){var c=this.#al(a,e);for(var u of c)if(!(u<e)){if(this.until&&u>this.until)return i;if(n>=s)return i;if(u>r)return i;n++,u>=t&&i.push(u)}a=this.#ol(a)}return i}#al(e,t){var r;switch(this.frequency){case"daily":r=[new Date(e)];break;case"weekly":r=this.#ll(e,t);break;case"monthly":r=this.#hl(e,t);break;case"yearly":r=this.#dl(e,t)}this.bySetPos.length>0&&(r=function(e,t){e.sort((e,t)=>e.getTime()-t.getTime());var r=[];for(var i of t){var s=i>0?i-1:e.length+i;s>=0&&s<e.length&&r.push(e[s])}return r}(r,this.bySetPos));for(var i=t.getHours(),s=t.getMinutes(),n=t.getSeconds(),a=t.getMilliseconds(),o=0;o<r.length;o++)r[o].setHours(i,s,n,a);return r.sort((e,t)=>e.getTime()-t.getTime()),r}#ll(e,t){if(0===this.byDay.length)return[new Date(e)];var r=[],i=na[this.weekStart],s=(e.getDay()-i+7)%7,n=new Date(e);for(var a of(n.setDate(n.getDate()-s),this.byDay)){var o=(na[a.day]-i+7)%7,l=new Date(n);l.setDate(n.getDate()+o),r.push(l)}return r}#hl(e,t){var r=e.getFullYear(),i=e.getMonth(),s=[];if(this.byMonthDay.length>0){var n=new Date(r,i+1,0).getDate();for(var a of this.byMonthDay){var o=a>0?a:n+a+1;o>=1&&o<=n&&s.push(new Date(r,i,o))}}else if(this.byDay.length>0)s=this.#cl(r,i);else{var l=t.getDate();l<=new Date(r,i+1,0).getDate()&&s.push(new Date(r,i,l))}return s}#dl(e,t){var r=e.getFullYear(),i=[],s=this.byMonth.length>0?this.byMonth.map(e=>e-1):[t.getMonth()];for(var n of s)if(this.byMonthDay.length>0){var a=new Date(r,n+1,0).getDate();for(var o of this.byMonthDay){var l=o>0?o:a+o+1;l>=1&&l<=a&&i.push(new Date(r,n,l))}}else if(this.byDay.length>0)i.push(...this.#cl(r,n));else{var h=t.getDate();h<=new Date(r,n+1,0).getDate()&&i.push(new Date(r,n,h))}return i}#cl(e,t){var r=[],i=new Date(e,t+1,0).getDate();for(var s of this.byDay){var n,a=na[s.day];if(void 0!==s.ordinal&&0!==s.ordinal)if(s.ordinal>0)(n=1+(a-new Date(e,t,1).getDay()+7)%7+7*(s.ordinal-1))<=i&&r.push(new Date(e,t,n));else(n=i-(new Date(e,t,i).getDay()-a+7)%7+7*(s.ordinal+1))>=1&&r.push(new Date(e,t,n));else for(var o=1+(a-new Date(e,t,1).getDay()+7)%7;o<=i;)r.push(new Date(e,t,o)),o+=7}return r}#ol(e){var t=new Date(e);switch(this.frequency){case"daily":t.setDate(t.getDate()+this.interval);break;case"weekly":t.setDate(t.getDate()+7*this.interval);break;case"monthly":t.setDate(1),t.setMonth(t.getMonth()+this.interval);break;case"yearly":t.setDate(1),t.setFullYear(t.getFullYear()+this.interval)}return t}}const oa=1e4;function la(e){var t=e.match(/^(-?\d+)?([A-Z]{2})$/);if(!t)throw new Error(`Invalid BYDAY value: ${e}`);return{day:t[2].toLowerCase(),ordinal:t[1]?parseInt(t[1],10):void 0}}function ha(e){return(void 0!==e.ordinal?String(e.ordinal):"")+e.day.toUpperCase()}function da(e){var t=e.match(/^(\d{4})(\d{2})(\d{2})(?:T(\d{2})(\d{2})(\d{2})(Z)?)?$/);if(!t)throw new Error(`Invalid RRULE date: ${e}`);if(t[4]){var r=parseInt(t[1]),i=parseInt(t[2])-1,s=parseInt(t[3]),n=parseInt(t[4]),a=parseInt(t[5]),o=parseInt(t[6]);return"Z"===t[7]?new Date(Date.UTC(r,i,s,n,a,o)):new Date(r,i,s,n,a,o)}return new Date(parseInt(t[1]),parseInt(t[2])-1,parseInt(t[3]))}function ca(e){return{originalStartTime:e.originalStartTime.toISOString(),isCancelled:e.isCancelled,overrides:e.overrides?ga(e.overrides):null}}function ua(e){return{originalStartTime:new Date(e.originalStartTime),isCancelled:e.isCancelled??!1,overrides:e.overrides?ma(e.overrides):null}}function ga(e){var t={};return void 0!==e.startTime&&(t.startTime=e.startTime.toISOString()),void 0!==e.endTime&&(t.endTime=e.endTime.toISOString()),void 0!==e.title&&(t.title=e.title),void 0!==e.description&&(t.description=e.description),void 0!==e.location&&(t.location=e.location),void 0!==e.color&&(t.color=e.color),void 0!==e.isAllDay&&(t.isAllDay=e.isAllDay),void 0!==e.timeZone&&(t.timeZone=e.timeZone),void 0!==e.tags&&(t.tags=e.tags),void 0!==e.responseStatus&&(t.responseStatus=e.responseStatus),void 0!==e.isCompleted&&(t.isCompleted=e.isCompleted),void 0!==e.completedAt&&(t.completedAt=e.completedAt?.toISOString()??null),t}function ma(e){var t={};return void 0!==e.startTime&&(t.startTime=new Date(e.startTime)),void 0!==e.endTime&&(t.endTime=new Date(e.endTime)),void 0!==e.title&&(t.title=e.title),void 0!==e.description&&(t.description=e.description),void 0!==e.location&&(t.location=e.location),void 0!==e.color&&(t.color=e.color),void 0!==e.isAllDay&&(t.isAllDay=e.isAllDay),void 0!==e.timeZone&&(t.timeZone=e.timeZone),void 0!==e.tags&&(t.tags=e.tags),void 0!==e.responseStatus&&(t.responseStatus=e.responseStatus),void 0!==e.isCompleted&&(t.isCompleted=e.isCompleted),void 0!==e.completedAt&&(t.completedAt=e.completedAt?new Date(e.completedAt):null),t}class pa{#m;get id(){return this.#m}#ul=null;get calendarId(){return this.#ul}set calendarId(e){e!=this.#ul&&(this.#ul=e,this.emitChanged())}#l=null;get startTime(){return this.#l}set startTime(e){if(!Ut(this.#l,e)){if(e&&this.#h&&e>this.#h)throw new RangeError(`startTime (${e.toISOString()}) must be <= endTime (${this.#h.toISOString()})`);this.#l=e,this.emitChanged(),this.startTimeChanged$.next({item:this})}}#h=null;get endTime(){return this.#h}set endTime(e){if(!Ut(this.#h,e)){if(e&&this.#l&&e<this.#l)throw new RangeError(`endTime (${e.toISOString()}) must be >= startTime (${this.#l.toISOString()})`);this.#h=e,this.emitChanged(),this.endTimeChanged$.next({item:this})}}#sl=null;get timeZone(){return this.#sl}set timeZone(e){e!=this.#sl&&(this.#sl=e,this.emitChanged())}#gl=!1;get isAllDay(){return this.#gl}set isAllDay(e){this.#gl!=e&&(this.#gl=e,this.emitChanged())}#ml=null;get title(){return this.#ml}set title(e){e!=this.#ml&&(this.#ml=e,this.emitChanged())}#nl=null;get description(){return this.#nl}set description(e){e!=this.#nl&&(this.#nl=e,this.emitChanged())}#pl=null;get location(){return this.#pl}set location(e){e!=this.#pl&&(this.#pl=e,this.emitChanged())}#M=0;get color(){return this.#M}set color(e){this.#M!=e&&(this.#M=e,this.emitChanged())}#vl="public";get visibility(){return this.#vl}set visibility(e){this.#vl!=e&&(this.#vl=e,this.emitChanged())}#fl=null;get recurrenceRule(){return this.#fl}set recurrenceRule(e){e!==this.#fl&&(this.#fl=e,this.emitChanged())}#yl=[];get recurrenceExceptions(){return this.#yl}get isRecurring(){return null!==this.#fl}#bl=!1;get hasReminders(){return this.#bl}set hasReminders(e){this.#bl!=e&&(this.#bl=e,this.emitChanged())}#wl=null;get externalSource(){return this.#wl}set externalSource(e){e!=this.#wl&&(this.#wl=e,this.emitChanged())}#Tl=null;get tags(){return this.#Tl}set tags(e){e!=this.#Tl&&(this.#Tl=e,this.emitChanged())}setException(e){var t=this.#yl.findIndex(t=>t.originalStartTime.getTime()===e.originalStartTime.getTime());t>=0?this.#yl[t]=e:this.#yl.push(e),this.emitChanged()}removeException(e){var t=this.#yl.findIndex(t=>t.originalStartTime.getTime()===e.getTime());t>=0&&(this.#yl.splice(t,1),this.emitChanged())}cancelOccurrence(e){this.setException({originalStartTime:e,isCancelled:!0,overrides:null})}getException(e){return this.#yl.find(t=>t.originalStartTime.getTime()===e.getTime())??null}clearExceptions(){this.#yl.length>0&&(this.#yl=[],this.emitChanged())}data=void 0;#ae;changed$=new e;startTimeChanged$=new e;endTimeChanged$=new e;constructor(e){this.#m=e||er(30),this.#ae=new lr(()=>this.emitChanged())}addProperty(e){this.#ae.addProperty(e)}removeProperty(e){this.#ae.removeProperty(e)}getPropertyByName(e){return this.#ae.getPropertyByName(e)}getPropertyValue(e){return this.#ae.getPropertyValue(e)}setPropertyValue(e,t){this.#ae.setPropertyValue(e,t)}applyFromAny(e){if(this.#ul=e.calendarId??null,this.#l=e.startTime?new Date(e.startTime):null,this.#h=e.endTime?new Date(e.endTime):null,this.#sl=e.timeZone??null,this.#gl=e.isAllDay??!1,this.#ml=e.title??null,this.#nl=e.description??null,this.#pl=e.location??null,this.#M=e.color??0,this.#vl=e.visibility??"public",this.#fl=e.recurrenceRule?aa.fromAny(e.recurrenceRule):null,this.#yl=(e.recurrenceExceptions??[]).map(ua),this.#bl=e.hasReminders??!1,this.#wl=e.externalSource??null,this.#Tl=e.tags??null,e.properties)for(const t of e.properties)this.setPropertyValue(t.name,t.value)}toAny(){return{type:this.type,id:this.#m,calendarId:this.#ul,startTime:this.#l?.toISOString()??null,endTime:this.#h?.toISOString()??null,timeZone:this.#sl,isAllDay:this.#gl,title:this.#ml,description:this.#nl,location:this.#pl,color:this.#M,visibility:this.#vl,recurrenceRule:this.#fl?.toAny()??null,recurrenceExceptions:this.#yl.length>0?this.#yl.map(ca):null,hasReminders:this.#bl,externalSource:this.#wl,tags:this.#Tl,properties:this.#ae.serializeProperties()}}emitChanged(){this.changed$.next({item:this})}}class va extends pa{type="meeting";#Cl="needsAction";get responseStatus(){return this.#Cl}set responseStatus(e){e!==this.#Cl&&(this.#Cl=e,this.emitChanged())}#xl=0;get attendeeCount(){return this.#xl}set attendeeCount(e){e!==this.#xl&&(this.#xl=e,this.emitChanged())}#kl=!1;get hasConference(){return this.#kl}set hasConference(e){e!==this.#kl&&(this.#kl=e,this.emitChanged())}#El=null;get organizer(){return this.#El}set organizer(e){e!==this.#El&&(this.#El=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Cl=e.responseStatus??"needsAction",this.#xl=e.attendeeCount??0,this.#kl=e.hasConference??!1,this.#El=e.organizer??null}toAny(){return{...super.toAny(),responseStatus:this.#Cl,attendeeCount:this.#xl,hasConference:this.#kl,organizer:this.#El}}clone(e){var t=this.toAny();return t.id=e,va.fromAny(t)}static fromAny(e){const t=new va(e.id??null);return t.applyFromAny(e),t}}class fa extends pa{type="appointment";clone(e){var t=this.toAny();return t.id=e,fa.fromAny(t)}static fromAny(e){const t=new fa(e.id??null);return t.applyFromAny(e),t}}class ya extends pa{type="task";#Dl=!1;get isCompleted(){return this.#Dl}set isCompleted(e){e!==this.#Dl&&(this.#Dl=e,this.emitChanged())}#Sl=null;get completedAt(){return this.#Sl}set completedAt(e){e!==this.#Sl&&(this.#Sl=e,this.emitChanged())}#$l=0;get priority(){return this.#$l}set priority(e){e!==this.#$l&&(this.#$l=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Dl=e.isCompleted??!1,this.#Sl=e.completedAt?new Date(e.completedAt):null,this.#$l=e.priority??0}toAny(){return{...super.toAny(),isCompleted:this.#Dl,completedAt:this.#Sl?.toISOString()??null,priority:this.#$l}}clone(e){var t=this.toAny();return t.id=e,ya.fromAny(t)}static fromAny(e){const t=new ya(e.id??null);return t.applyFromAny(e),t}}class ba extends pa{type="deadline";clone(e){var t=this.toAny();return t.id=e,ba.fromAny(t)}static fromAny(e){const t=new ba(e.id??null);return t.applyFromAny(e),t}}class wa extends pa{type="holiday";clone(e){var t=this.toAny();return t.id=e,wa.fromAny(t)}static fromAny(e){const t=new wa(e.id??null);return t.applyFromAny(e),t}}class Ta extends pa{type="availabilityBlock";#Rl="busy";get availabilityStatus(){return this.#Rl}set availabilityStatus(e){e!==this.#Rl&&(this.#Rl=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Rl=e.availabilityStatus??"busy"}toAny(){return{...super.toAny(),availabilityStatus:this.#Rl}}clone(e){var t=this.toAny();return t.id=e,Ta.fromAny(t)}static fromAny(e){const t=new Ta(e.id??null);return t.applyFromAny(e),t}}class Ca extends pa{type="birthday";#Ml=null;get contactName(){return this.#Ml}set contactName(e){e!==this.#Ml&&(this.#Ml=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#Ml=e.contactName??null}toAny(){return{...super.toAny(),contactName:this.#Ml}}clone(e){var t=this.toAny();return t.id=e,Ca.fromAny(t)}static fromAny(e){const t=new Ca(e.id??null);return t.applyFromAny(e),t}}class xa extends pa{type="reminder";clone(e){var t=this.toAny();return t.id=e,xa.fromAny(t)}static fromAny(e){const t=new xa(e.id??null);return t.applyFromAny(e),t}}class ka extends pa{type="resourceBooking";#To=null;get resourceId(){return this.#To}set resourceId(e){e!==this.#To&&(this.#To=e,this.emitChanged())}#Ll=null;get resourceName(){return this.#Ll}set resourceName(e){e!==this.#Ll&&(this.#Ll=e,this.emitChanged())}applyFromAny(e){super.applyFromAny(e),this.#To=e.resourceId??null,this.#Ll=e.resourceName??null}toAny(){return{...super.toAny(),resourceId:this.#To,resourceName:this.#Ll}}clone(e){var t=this.toAny();return t.id=e,ka.fromAny(t)}static fromAny(e){const t=new ka(e.id??null);return t.applyFromAny(e),t}}const Ea={meeting:va.fromAny,appointment:fa.fromAny,task:ya.fromAny,deadline:ba.fromAny,holiday:wa.fromAny,availabilityBlock:Ta.fromAny,birthday:Ca.fromAny,reminder:xa.fromAny,resourceBooking:ka.fromAny};function Da(e){if(!e.type)throw new Error("calendarItemFromAny: missing type");const t=Ea[e.type];if(!t)throw new Error(`calendarItemFromAny: unknown type '${e.type}'`);return t(e)}class Sa{static applyEdit(e,t,r,i){switch(i){case"this":return e.setException({originalStartTime:t.originalStartTime,isCancelled:!1,overrides:r}),{newMaster:null,removeMaster:!1};case"all":return $a(e,r),{newMaster:null,removeMaster:!1};case"thisAndFollowing":return{newMaster:this.#Il(e,t,r),removeMaster:!1}}}static applyDelete(e,t,r){switch(r){case"this":return e.cancelOccurrence(t.originalStartTime),{newMaster:null,removeMaster:!1};case"all":return{newMaster:null,removeMaster:!0};case"thisAndFollowing":if(e.recurrenceRule){var i=new Date(t.originalStartTime.getTime()-1);e.recurrenceRule=new aa({...Ma(e.recurrenceRule),until:i,count:null}),Ra(e,t.originalStartTime)}return{newMaster:null,removeMaster:!1}}}static#Il(e,t,r){var i=t.originalStartTime,s=Ma(e.recurrenceRule),n=new Date(i.getTime()-1);e.recurrenceRule=new aa({...s,until:n,count:null});var a=e.recurrenceExceptions.filter(e=>e.originalStartTime.getTime()>=i.getTime());Ra(e,i);var o=e.clone(null);o.clearExceptions();var l=r.startTime??i,h=r.endTime??o.endTime;if(h&&l&&l>h){var d=(e.endTime?.getTime()??0)-(e.startTime?.getTime()??0);h=new Date(l.getTime()+d)}o.endTime=null,o.startTime=l,o.endTime=h,o.recurrenceRule=new aa({...s});var c={...r};for(var u of(delete c.startTime,delete c.endTime,$a(o,c),a))o.setException(u);return o}}function $a(e,t){void 0!==t.startTime&&(e.startTime=t.startTime),void 0!==t.endTime&&(e.endTime=t.endTime),void 0!==t.title&&(e.title=t.title),void 0!==t.description&&(e.description=t.description),void 0!==t.location&&(e.location=t.location),void 0!==t.color&&(e.color=t.color),void 0!==t.isAllDay&&(e.isAllDay=t.isAllDay),void 0!==t.timeZone&&(e.timeZone=t.timeZone),void 0!==t.tags&&(e.tags=t.tags),void 0!==t.responseStatus&&e instanceof va&&(e.responseStatus=t.responseStatus),void 0!==t.isCompleted&&e instanceof ya&&(e.isCompleted=t.isCompleted),void 0!==t.completedAt&&e instanceof ya&&(e.completedAt=t.completedAt)}function Ra(e,t){var r=t.getTime(),i=e.recurrenceExceptions.filter(e=>e.originalStartTime.getTime()>=r);for(var s of i)e.removeException(s.originalStartTime)}function Ma(e){return{frequency:e.frequency,interval:e.interval,until:e.until,count:e.count,byDay:[...e.byDay],byMonthDay:[...e.byMonthDay],byMonth:[...e.byMonth],bySetPos:[...e.bySetPos],weekStart:e.weekStart}}class La{item;originalStartTime;exception;constructor(e,t,r){this.item=e,this.originalStartTime=t,this.exception=r}get id(){return this.item.isRecurring?`${this.item.id}_${this.originalStartTime.toISOString()}`:this.item.id}get type(){return this.item.type}get calendarId(){return this.item.calendarId}get startTime(){return this.exception?.overrides?.startTime??this.originalStartTime}get endTime(){if(this.exception?.overrides?.endTime)return this.exception.overrides.endTime;var e=this.item.startTime?.getTime()??0,t=(this.item.endTime?.getTime()??e)-e;return new Date(this.startTime.getTime()+t)}get title(){return void 0!==this.exception?.overrides?.title?this.exception.overrides.title:this.item.title}get description(){return void 0!==this.exception?.overrides?.description?this.exception.overrides.description:this.item.description}get location(){return void 0!==this.exception?.overrides?.location?this.exception.overrides.location:this.item.location}get color(){return void 0!==this.exception?.overrides?.color?this.exception.overrides.color:this.item.color}get isAllDay(){return void 0!==this.exception?.overrides?.isAllDay?this.exception.overrides.isAllDay:this.item.isAllDay}get timeZone(){return void 0!==this.exception?.overrides?.timeZone?this.exception.overrides.timeZone:this.item.timeZone}get tags(){return void 0!==this.exception?.overrides?.tags?this.exception.overrides.tags:this.item.tags}get visibility(){return this.item.visibility}get hasReminders(){return this.item.hasReminders}get externalSource(){return this.item.externalSource}get data(){return this.item.data}get isRecurring(){return this.item.isRecurring}get isException(){return null!==this.exception&&!this.exception.isCancelled}get isCancelled(){return this.exception?.isCancelled??!1}get responseStatus(){return void 0!==this.exception?.overrides?.responseStatus?this.exception.overrides.responseStatus:this.item instanceof va?this.item.responseStatus:"needsAction"}get isCompleted(){return void 0!==this.exception?.overrides?.isCompleted?this.exception.overrides.isCompleted:this.item instanceof ya&&this.item.isCompleted}get completedAt(){return void 0!==this.exception?.overrides?.completedAt?this.exception.overrides.completedAt:this.item instanceof ya?this.item.completedAt:null}getPropertyValue(e){return this.item.getPropertyValue(e)}}class Ia{expand(e,t){var r=[];for(var i of e)if(i.startTime)if(i.recurrenceRule){var s=i.recurrenceRule.expandBetween(i.startTime,t.start,t.end);for(var n of s){var a=i.getException(n);a?.isCancelled||r.push(new La(i,n,a))}}else this.#Pl(i,t)&&r.push(new La(i,i.startTime,null));else!i.recurrenceRule&&i.endTime&&i.endTime>=t.start&&i.endTime<=t.end&&r.push(new La(i,i.endTime,null));return r.sort((e,t)=>e.startTime.getTime()-t.startTime.getTime()),r}#Pl(e,t){return!!e.startTime&&((e.endTime??e.startTime)>=t.start&&e.startTime<=t.end)}}class Pa{#Al=[];#As=[];#Hl=new Map;#Vl=new Map;#Bl=new Ia;calendarAdded$=new e;calendarChanged$=new e;calendarRemoved$=new e;calendarVisibilityChanged$=new e;itemAdded$=new e;itemChanged$=new e;itemRemoved$=new e;get calendarsLength(){return this.#Al.length}getCalendar(e){return this.#Al[e]}getCalendarById(e){return this.#Al.find(t=>t.id===e)??null}addCalendar(e){if(this.getCalendarById(e.id))throw new Error(`CalendarData.addCalendar: calendar with id "${e.id}" already exists`);this.#Al.push(e),this.#Fl(e),this.calendarAdded$.next({calendar:e})}removeCalendar(e){if(e.isDefault)throw new Error("CalendarData.removeCalendar: cannot remove the default calendar");var t=this.#Al.indexOf(e);if(t>=0){this.#Al.splice(t,1),this.#zl(e);var r=this.#As.filter(t=>t.calendarId===e.id);for(var i of r)this.removeItem(i);this.calendarRemoved$.next({calendar:e})}}get defaultCalendar(){return this.#Al.find(e=>e.isDefault)??this.#Al[0]??null}assignCalendars(e){if(e.length>0&&!e.some(e=>e.isDefault))throw new Error("CalendarData.assignCalendars: at least one calendar must be marked as default");for(var t of this.#Hl.values())for(var r of t)r.unsubscribe();for(var i of(this.#Hl.clear(),this.#Al=[...e],this.#Al))this.#Fl(i);var s=this.#Al[this.#Al.length-1];s&&this.calendarAdded$.next({calendar:s})}#Fl(e){var t=[e.changed$.subscribe(e=>this.calendarChanged$.next(e)),e.visibilityChanged$.subscribe(e=>this.calendarVisibilityChanged$.next(e))];this.#Hl.set(e.id,t)}#zl(e){var t=this.#Hl.get(e.id);if(t){for(var r of t)r.unsubscribe();this.#Hl.delete(e.id)}}get itemsLength(){return this.#As.length}getItem(e){return this.#As[e]}getItemById(e){return this.#As.find(t=>t.id===e)??null}getItemsForCalendar(e){return this.#As.filter(t=>t.calendarId===e)}addItem(e){if(this.getItemById(e.id))throw new Error(`CalendarData.addItem: item with id "${e.id}" already exists`);this.#As.push(e),this.#Ol(e),this.itemAdded$.next({item:e})}removeItem(e){var t=this.#As.indexOf(e);t>=0&&(this.#As.splice(t,1),this.#Nl(e),this.itemRemoved$.next({item:e}))}assignItems(e){for(var t of this.#Vl.values())t.unsubscribe();for(var r of(this.#Vl.clear(),this.#As=[...e],this.#As))this.#Ol(r);var i=this.#As[this.#As.length-1];i&&this.itemAdded$.next({item:i})}#Ol(e){var t=e.changed$.subscribe(e=>this.itemChanged$.next(e));this.#Vl.set(e.id,t)}#Nl(e){var t=this.#Vl.get(e.id);t&&(t.unsubscribe(),this.#Vl.delete(e.id))}clear(){for(var e of this.#Vl.values())e.unsubscribe();for(var t of(this.#Vl.clear(),this.#As=[],this.#Hl.values()))for(var e of t)e.unsubscribe();this.#Hl.clear(),this.#Al=[]}getEntries(e){var t=this.#Wl(),r=this.#As.filter(e=>null===e.calendarId||t.has(e.calendarId));return this.#Bl.expand(r,e)}#Wl(){var e=new Set;for(var t of this.#Al)t.isVisible&&e.add(t.id);return e}getItemColor(e){if(0!==e.color)return e.color;var t=e.calendarId?this.getCalendarById(e.calendarId):null;return t?t.color:0}getEntryColor(e){if(0!==e.color)return e.color;var t=e.calendarId,r=t?this.getCalendarById(t):null;return r?r.color:0}}class Aa extends jr{chipBackgroundColor="#d3e3fd";chipTextColor="#1b4fa3";textColor="#1b4fa3"}class Ha{backgroundColor="#ffffff";textColor="#333333";borderColor="#e0e0e0";buttonColor="#555555";buttonHoverBackgroundColor="#f0f0f0";activeViewButtonBackgroundColor="#e8f0fe";activeViewButtonTextColor="#1a73e8";height=48}class Va{backgroundColor="#ffffff";textColor="#555555";borderColor="#e0e0e0";todayTextColor="#ffffff";todayBackgroundColor="#1a73e8";weekendTextColor="#777777"}class Ba{backgroundColor="#ffffff";textColor="#333333";gridLineColor="#e0e0e0";todayBackgroundColor="#e8f0fe";weekendBackgroundColor="#f8f8f8";otherMonthBackgroundColor="#fafafa";otherMonthTextColor="#b0b0b0";hourLineColor="#e0e0e0";halfHourLineColor="#e0e0e0";currentTimeLineColor="#ea4335";currentTimeLineHeight=2;slotHeight=48;dayHeaderHeight=24;entryHeight=22;entryGap=2;entryBorderRadius=4;entryAccentBorderWidth=3;entryMinHeight=20;declinedOpacity=.55;moreTextColor="#555555";entryColors;hoverBackgroundColor="rgba(0, 0, 0, 0.04)";selectedEntryOutlineColor="#1a73e8";dragHighlightColor="rgba(3, 155, 229, 0.15)";scrollbarThumbColor="#c1c1c1";scrollbarTrackColor="#f1f1f1";agendaDayHeaderBackgroundColor="#f8f9fa";agendaDayHeaderTextColor="#333333";agendaEntryHeight=48;agendaEntryGap=1;agendaEntryHoverBackgroundColor="rgba(0, 0, 0, 0.04)";agendaEmptyTextColor="#999999";agendaTimeWidth=80;focusOutlineColor="#1a73e8";focusOutlineWidth=2;focusOutlineOffset=1;constructor(){this.entryColors=[Aa.create({color1:"#a8c7fa",color2:"#1b66c9",textColor:"#1b4fa3",chipBackgroundColor:"#d3e3fd",chipTextColor:"#1b4fa3"}),Aa.create({color1:"#d4b4f0",color2:"#7b1fa2",textColor:"#4a1d6e",chipBackgroundColor:"#e8d5f5",chipTextColor:"#6a1b9a"}),Aa.create({color1:"#a8dab5",color2:"#1e8e3e",textColor:"#1a5c2d",chipBackgroundColor:"#ceead6",chipTextColor:"#137333"}),Aa.create({color1:"#f4b8c8",color2:"#c2185b",textColor:"#7b1140",chipBackgroundColor:"#fad2de",chipTextColor:"#b31650"}),Aa.create({color1:"#f5c89a",color2:"#e8710a",textColor:"#7a3b00",chipBackgroundColor:"#fae0c3",chipTextColor:"#c45e08"}),Aa.create({color1:"#a0d8d8",color2:"#00897b",textColor:"#004d44",chipBackgroundColor:"#c8ecec",chipTextColor:"#00796b"}),Aa.create({color1:"#f4ada8",color2:"#c62828",textColor:"#7f1d1d",chipBackgroundColor:"#fad2cf",chipTextColor:"#b71c1c"}),Aa.create({color1:"#c8c8c8",color2:"#616161",textColor:"#3b3b3b",chipBackgroundColor:"#e0e0e0",chipTextColor:"#424242"})]}}class Fa{backgroundColor="#ffffff";textColor="#333333";borderColor="#e0e0e0";width=256;miniCalendarTodayTextColor="#ffffff";miniCalendarTodayBackgroundColor="#1a73e8";miniCalendarTodayDotColor="#ffffff";miniCalendarSelectedBackgroundColor="#e8f0fe";miniCalendarSelectedTextColor="#1a73e8";miniCalendarOtherMonthTextColor="#b0b0b0";miniCalendarWeekendTextColor="#777777";miniCalendarHoverBackgroundColor="#f0f0f0";miniCalendarDayWithEventsColor="#1a73e8";calendarListHeaderTextColor="#555555";calendarListCheckboxColor="#1a73e8"}class za{backgroundColor="#ffffff";borderColor="#e0e0e0";textColor="#555555";minHeight=28;maxHeight=120;maxVisibleRows=3;rowHeight=24}class Oa{backgroundColor="#ffffff";textColor="#777777";borderColor="#e0e0e0";width=56;fontSize=10}class Na{font=new Dr;colorScheme="light";toolbar;header;content;sidebar;allDay;timeGutter;constructor(){this.toolbar=new Ha,this.header=new Va,this.content=new Ba,this.sidebar=new Fa,this.allDay=new za,this.timeGutter=new Oa}}class Wa extends Na{constructor(){super()}}class Ua{#wt;changed$=new e;constructor(e){this.#wt=e}get locale(){return this.#wt.locale$.getValue()}set locale(e){this.#wt.locale$.next(e),this.#f()}get theme(){return this.#wt.theme$.getValue()}set theme(e){this.#wt.theme$.next(e),this.#f()}get firstDayOfWeek(){return this.#wt.firstDayOfWeek$.getValue()}set firstDayOfWeek(e){if(!Number.isInteger(e)||e<0||e>6)throw new RangeError(`firstDayOfWeek must be an integer between 0 and 6, got ${e}`);this.#wt.firstDayOfWeek$.next(e),this.#f()}get showWeekNumbers(){return this.#wt.showWeekNumbers$.getValue()}set showWeekNumbers(e){this.#wt.showWeekNumbers$.next(e),this.#f()}get slotDuration(){return this.#wt.slotDuration$.getValue()}set slotDuration(e){if(!Number.isInteger(e)||e<=0||60%e!=0)throw new RangeError(`slotDuration must be a positive divisor of 60 (5, 10, 15, 20, 30, or 60), got ${e}`);this.#wt.slotDuration$.next(e),this.#f()}get workingHours(){return this.#wt.workingHours$.getValue()}set workingHours(e){if(!Number.isInteger(e.start)||!Number.isInteger(e.end)||e.start<0||e.end>24||e.start>=e.end)throw new RangeError(`workingHours: start must be 0–23, end must be 1–24, start < end. Got ${e.start}–${e.end}`);this.#wt.workingHours$.next(e),this.#f()}get agendaDays(){return this.#wt.agendaDays$.getValue()}set agendaDays(e){if(!Number.isInteger(e)||e<1||e>90)throw new RangeError(`agendaDays must be an integer between 1 and 90, got ${e}`);this.#wt.agendaDays$.next(e),this.#f()}#f(){this.changed$.next()}}class ja{data;currentDate$;viewMode$;locale$;theme$;firstDayOfWeek$;workingHours$;slotDuration$;showWeekNumbers$;agendaDays$;canEdit$;sidebarVisible$;selectedEntries$;hoveredEntry$;entryRendering$;entryTooltip$;entryClick$=new e;entryDblClick$=new e;entryContextMenu$=new e;dateClick$=new e;dateContextMenu$=new e;moreClick$=new e;entryMoving$=new e;entryResizing$=new e;entryCreating$=new e;entryDeleting$=new e;calendarAddRequested$=new e;calendarRemoving$=new e;viewDateRangeChanged$=new e;settings;constructor(){this.data=new Pa,this.currentDate$=new t(Bt()),this.viewMode$=new t("week");this.locale$=new t({language:"en-US"}),this.theme$=new t(new Wa),this.firstDayOfWeek$=new t(1),this.workingHours$=new t({start:8,end:17}),this.slotDuration$=new t(30),this.showWeekNumbers$=new t(!1),this.agendaDays$=new t(14),this.canEdit$=new t(!0),this.sidebarVisible$=new t(!0),this.selectedEntries$=new t([]),this.hoveredEntry$=new t(null),this.entryRendering$=new t(null),this.entryTooltip$=new t(null),this.settings=new Ua(this)}}class Xa{#T=new r;calendarAdded$=new e;calendarChanged$=new e;calendarRemoved$=new e;calendarAddRequested$=new e;calendarRemoving$=new e;itemAdded$=new e;itemChanged$=new e;itemRemoved$=new e;entryClick$=new e;entryDblClick$=new e;entryContextMenu$=new e;dateClick$=new e;dateContextMenu$=new e;moreClick$=new e;entryMoving$=new e;entryResizing$=new e;entryCreating$=new e;entryDeleting$=new e;viewModeChanged$=new e;currentDateChanged$=new e;viewDateRangeChanged$=new e;selectedEntriesChanged$=new e;selectedEntryChanged$=new e;undone$=new e;redone$=new e;constructor(e){this.#T.add(e.data.calendarAdded$.subscribe(e=>this.calendarAdded$.next(e))),this.#T.add(e.data.calendarChanged$.subscribe(e=>this.calendarChanged$.next(e))),this.#T.add(e.data.calendarRemoved$.subscribe(e=>this.calendarRemoved$.next(e))),this.#T.add(e.calendarAddRequested$.subscribe(()=>this.calendarAddRequested$.next())),this.#T.add(e.calendarRemoving$.subscribe(e=>this.calendarRemoving$.next(e))),this.#T.add(e.data.itemAdded$.subscribe(e=>this.itemAdded$.next(e))),this.#T.add(e.data.itemChanged$.subscribe(e=>this.itemChanged$.next(e))),this.#T.add(e.data.itemRemoved$.subscribe(e=>this.itemRemoved$.next(e))),this.#T.add(e.entryClick$.subscribe(e=>this.entryClick$.next(e))),this.#T.add(e.entryDblClick$.subscribe(e=>this.entryDblClick$.next(e))),this.#T.add(e.entryContextMenu$.subscribe(e=>this.entryContextMenu$.next(e))),this.#T.add(e.dateClick$.subscribe(e=>this.dateClick$.next(e))),this.#T.add(e.dateContextMenu$.subscribe(e=>this.dateContextMenu$.next(e))),this.#T.add(e.moreClick$.subscribe(e=>this.moreClick$.next(e))),this.#T.add(e.entryMoving$.subscribe(e=>this.entryMoving$.next(e))),this.#T.add(e.entryResizing$.subscribe(e=>this.entryResizing$.next(e))),this.#T.add(e.entryCreating$.subscribe(e=>this.entryCreating$.next(e))),this.#T.add(e.entryDeleting$.subscribe(e=>this.entryDeleting$.next(e))),this.#T.add(e.viewMode$.subscribe(e=>this.viewModeChanged$.next(e))),this.#T.add(e.currentDate$.subscribe(e=>this.currentDateChanged$.next(e))),this.#T.add(e.viewDateRangeChanged$.subscribe(e=>this.viewDateRangeChanged$.next(e))),this.#T.add(e.selectedEntries$.subscribe(e=>{this.selectedEntriesChanged$.next(e),this.selectedEntryChanged$.next(e.length>0?e[e.length-1]:null)}))}destroy(){this.#T.unsubscribe()}}class Ya{ec;element;subscriptions=new r;constructor(e,t){this.ec=e,this.element=document.createElement("div"),this.element.style.display="none",t.appendChild(this.element)}show(){this.element.style.display="",this.render()}hide(){this.element.style.display="none"}get isVisible(){return"none"!==this.element.style.display}destroy(){this.subscriptions.unsubscribe(),this.element.remove()}}class Ka{#Ul;#jl=null;#Xl=null;#Yl=[];#Ps=-1;#Kl=-1;#Zl=!1;#Gl=-1;#ql=null;#_l=null;#Jl=null;#Ql=null;constructor(e){this.#Ul=e}get didDrag(){return this.#Zl}attach(e,t){this.#jl=e,this.#Xl=t,this.#Yl=[];for(var r=e.children,i=0;i<r.length;i++)for(var s=r[i],n=0;n<s.children.length;n++){var a=s.children[n];a.dataset.cellIndex=String(this.#Yl.length),a.style.touchAction="none",this.#Yl.push(a),a.addEventListener("pointerdown",e=>{var t=parseInt(e.currentTarget.dataset.cellIndex,10);this.#eh(e,t)})}}cancel(){this.#th(),this.#rh(),this.#Ps=-1,this.#Kl=-1,this.#Gl=-1}destroy(){this.cancel()}#eh(e,t){0===e.button&&(e.target.closest(".ec-entry")||this.#Ul.canEdit$.getValue()&&(e.preventDefault(),this.#Gl=e.pointerId,this.#Zl=!1,this.#Ps=t,this.#Kl=t,this.#ih(),this.#ql=e=>this.#sh(e),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#Ua(e),document.addEventListener("pointermove",this.#ql),document.addEventListener("pointerup",this.#_l),document.addEventListener("pointercancel",this.#Jl),document.addEventListener("keydown",this.#Ql)))}#sh(e){if(e.pointerId===this.#Gl&&!(this.#Ps<0)){var t=this.#oh(e.clientX,e.clientY);t>=0&&t!==this.#Kl&&(this.#Kl=t,this.#Kl!==this.#Ps&&(this.#Zl=!0),this.#ih())}}#nh(e){if(e.pointerId===this.#Gl)if(this.#th(),this.#Ps<0||!this.#Xl)this.cancel();else{var t=Math.min(this.#Ps,this.#Kl),r=Math.max(this.#Ps,this.#Kl),i=new Date(this.#Xl);i.setDate(i.getDate()+t),i.setHours(0,0,0,0);var s=new Date(this.#Xl);s.setDate(s.getDate()+r+1),s.setHours(0,0,0,0),this.#rh();var n=this.#Zl;if(this.#Ps=-1,this.#Kl=-1,this.#Gl=-1,n){var a={startTime:i,endTime:s,isAllDay:!0,cancel:!1};this.#Ul.entryCreating$.next(a)}}}#ah(e){e.pointerId===this.#Gl&&this.cancel()}#Ua(e){"Escape"===e.key&&this.cancel()}#ih(){for(var e=Math.min(this.#Ps,this.#Kl),t=Math.max(this.#Ps,this.#Kl),r=0;r<this.#Yl.length;r++)this.#Yl[r].classList.toggle("ec-month-day-drag",r>=e&&r<=t)}#rh(){for(var e of this.#Yl)e.classList.remove("ec-month-day-drag")}#oh(e,t){for(var r=0;r<this.#Yl.length;r++){var i=this.#Yl[r].getBoundingClientRect();if(e>=i.left&&e<=i.right&&t>=i.top&&t<=i.bottom)return r}if(0===this.#Yl.length)return-1;for(r=0;r<this.#Yl.length;r+=7){var s=this.#Yl[r].getBoundingClientRect();if(this.#Yl[Math.min(r+6,this.#Yl.length-1)].getBoundingClientRect(),t>=s.top&&t<=s.bottom)return e<s.left?r:Math.min(r+6,this.#Yl.length-1)}return t<this.#Yl[0].getBoundingClientRect().top?0:this.#Yl.length-1}#th(){this.#ql&&(document.removeEventListener("pointermove",this.#ql),this.#ql=null),this.#_l&&(document.removeEventListener("pointerup",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointercancel",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("keydown",this.#Ql),this.#Ql=null)}}class Za{#Ul;#lh=null;#hh=null;#dh=null;#Yl=[];#Xl=null;#Ps=-1;#Kl=-1;#Zl=!1;#Gl=-1;#ql=null;#_l=null;#Jl=null;#Ql=null;constructor(e){this.#Ul=e}get didDrag(){return this.#Zl}startDrag(e,t,r,i,s){if(0===e.button&&this.#Ul.canEdit$.getValue()){e.preventDefault(),e.stopPropagation(),this.#Gl=e.pointerId,this.#lh=t,this.#hh=r,this.#Yl=i,this.#Xl=s,this.#Zl=!1;var n=this.#oh(e.clientX,e.clientY);n<0||(this.#Ps=n,this.#Kl=n,r.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#ql=e=>this.#sh(e),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#ql),document.addEventListener("pointerup",this.#_l),document.addEventListener("pointercancel",this.#Jl),document.addEventListener("keydown",this.#Ql))}}cancel(){this.#hh&&this.#hh.classList.remove("ec-entry-dragging"),this.#ch(),this.#rh(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#th(),this.#uh()}destroy(){this.cancel()}#sh(e){if(e.pointerId===this.#Gl&&!(this.#Ps<0)){var t=this.#oh(e.clientX,e.clientY);t>=0&&t!==this.#Kl&&(this.#Kl=t,this.#Kl!==this.#Ps&&(this.#Zl=!0),this.#gh())}}#nh(e){if(e.pointerId===this.#Gl)if(this.#th(),!this.#lh||!this.#Xl||this.#Ps<0)this.cancel();else{var t=this.#Kl-this.#Ps;if(this.#hh&&this.#hh.classList.remove("ec-entry-dragging"),this.#ch(),this.#rh(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==t){var r=this.#lh,i=24*t*60*60*1e3,s=new Date(r.startTime.getTime()+i),n=new Date(r.endTime.getTime()+i),a={entry:r,newStartTime:s,newEndTime:n,cancel:!1};this.#Ul.entryMoving$.next(a),a.cancel||(r.item.startTime=a.newStartTime,r.item.endTime=a.newEndTime),this.#uh()}else this.#uh()}}#ah(e){e.pointerId===this.#Gl&&this.cancel()}#ih(){for(var e=0;e<this.#Yl.length;e++)this.#Yl[e].classList.toggle("ec-month-day-drag",e===this.#Kl)}#rh(){for(var e of this.#Yl)e.classList.remove("ec-month-day-drag")}#gh(){if(this.#hh&&this.#Kl!==this.#Ps){this.#dh||(this.#dh=this.#hh.cloneNode(!0),this.#dh.classList.remove("ec-entry-dragging"),this.#dh.classList.add("ec-entry-drag-preview"));var e=this.#Yl[this.#Kl];if(e){var t=e.querySelector(".ec-month-day-entries")??e;this.#dh.parentElement!==t&&t.appendChild(this.#dh)}}else this.#ch()}#ch(){this.#dh&&(this.#dh.remove(),this.#dh=null)}#oh(e,t){for(var r=0;r<this.#Yl.length;r++){var i=this.#Yl[r].getBoundingClientRect();if(e>=i.left&&e<=i.right&&t>=i.top&&t<=i.bottom)return r}if(0===this.#Yl.length)return-1;for(r=0;r<this.#Yl.length;r+=7){var s=this.#Yl[r].getBoundingClientRect();if(t>=s.top&&t<=s.bottom)return e<s.left?r:Math.min(r+6,this.#Yl.length-1)}return t<this.#Yl[0].getBoundingClientRect().top?0:this.#Yl.length-1}#uh(){this.#lh=null,this.#hh=null,this.#Ps=-1,this.#Kl=-1,this.#Zl=!1,this.#Gl=-1}#th(){this.#ql&&(document.removeEventListener("pointermove",this.#ql),this.#ql=null),this.#_l&&(document.removeEventListener("pointerup",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointercancel",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("keydown",this.#Ql),this.#Ql=null)}}function Ga(e,t,r){return Xr(t.getEntryColor(e),r.content.entryColors)}function qa(e,t,r){var i,s,n,a,o;if("meeting"===t.type&&"accepted"!==t.responseStatus)switch(t.responseStatus){case"tentative":e.classList.add("ec-entry-tentative"),e.style.setProperty("--ec-entry-stripe-color",(i=r.chipBackgroundColor,s=.55,n=parseInt(i.slice(1,3),16),a=parseInt(i.slice(3,5),16),o=parseInt(i.slice(5,7),16),`rgba(${n}, ${a}, ${o}, ${s})`));break;case"needsAction":e.classList.add("ec-entry-needs-action"),e.style.setProperty("--ec-entry-status-color",r.color2);break;case"declined":e.classList.add("ec-entry-declined")}}function _a(e){var t=document.createElement("span");return t.className="ec-entry-icon",t.setAttribute("aria-hidden","true"),t.innerHTML=e,t}function Ja(e,t,r,i){var s=i.entryRendering$.getValue();if(s){var n=i.theme$.getValue(),a=Ga(t,i.data,n);s({entry:t,element:e,isAllDay:r,viewMode:i.viewMode$.getValue(),color:a})}}function Qa(e,t){"meeting"===t.type?e.appendChild(_a('<svg viewBox="0 0 20 20" fill="currentColor"><circle cx="7" cy="6" r="2.5"/><path d="M2 14c0-2.2 2.2-4 5-4s5 1.8 5 4"/><circle cx="14" cy="6.5" r="2"/><path d="M13 10.2c.3-.05.6-.08 1-.08 2.2 0 4 1.4 4 3.2"/></svg>')):"birthday"===t.type?e.appendChild(_a('<svg viewBox="0 0 20 20" fill="currentColor"><rect x="3" y="10" width="14" height="7" rx="1.5"/><rect x="5" y="7" width="10" height="3" rx="1"/><rect x="9" y="4" width="2" height="3"/><circle cx="10" cy="3" r="1.5"/></svg>')):"reminder"===t.type&&e.appendChild(_a('<svg viewBox="0 0 20 20" fill="currentColor"><path d="M10 2a1 1 0 0 1 1 1v.5a5 5 0 0 1 4 4.9V12l1.7 2.6a.5.5 0 0 1-.4.8H3.7a.5.5 0 0 1-.4-.8L5 12V8.4a5 5 0 0 1 4-4.9V3a1 1 0 0 1 1-1z"/><path d="M8 16a2 2 0 1 0 4 0"/></svg>')),t.isRecurring&&e.appendChild(_a('<svg viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M3.5 10a6.5 6.5 0 0 1 11-4.7"/><polyline points="15 2 15 6 11 6"/><path d="M16.5 10a6.5 6.5 0 0 1-11 4.7"/><polyline points="5 18 5 14 9 14"/></svg>')),e.appendChild(document.createTextNode(t.title??""))}function eo(e){e.addEventListener("focus",()=>{"true"!==e.getAttribute("aria-selected")&&(e.style.outline="var(--ec-focus-outline-width, 2px) solid var(--ec-focus-outline, #1a73e8)",e.style.outlineOffset="var(--ec-focus-outline-offset, 1px)")}),e.addEventListener("blur",()=>{"true"!==e.getAttribute("aria-selected")&&(e.style.outline="",e.style.outlineOffset="")})}function to(e,t){for(var r=new Set(t.map(e=>e.id)),i=e.querySelectorAll(".ec-entry"),s=0;s<i.length;s++){var n=i[s],a=n.dataset.entryId,o=void 0!==a&&r.has(a);n.setAttribute("aria-selected",String(o)),o?(n.style.outline="2px solid var(--ec-selected-outline, #1a73e8)",n.style.outlineOffset="1px"):(n.style.outline="",n.style.outlineOffset="")}}class ro extends Ya{#mh;#jl;#ph;#vh;#fh=[];#_n;#yh=0;constructor(e,t){super(e,t),this.element.classList.add("ec-month-view"),this.#ph=new Ka(e),this.#vh=new Za(e),this.#_n=new ResizeObserver(()=>{if(this.isVisible){var e=this.#bh();e!==this.#yh&&(this.#yh=e,this.render())}}),this.#wh(),this.#x()}#wh(){this.#mh=document.createElement("div"),this.#mh.classList.add("ec-month-header"),this.#mh.setAttribute("role","row"),this.element.appendChild(this.#mh),this.#jl=document.createElement("div"),this.#jl.classList.add("ec-month-grid"),this.#jl.setAttribute("role","grid"),this.#jl.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaCalendarGrid??"Calendar grid"),this.element.appendChild(this.#jl),this.#_n.observe(this.#jl),this.#Th()}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.firstDayOfWeek$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&to(this.element,e)}))}getVisibleRange(e){var t=this.ec.firstDayOfWeek$.getValue(),r=e.getFullYear(),i=e.getMonth(),s=new Date(r,i,1).getDay(),n=new Date(r,i,1-(s-t+7)%7),a=new Date(n);return a.setDate(n.getDate()+42),{start:n,end:a}}render(){this.#ph.cancel(),this.#vh.cancel();var e=this.ec.currentDate$.getValue(),t=this.ec.firstDayOfWeek$.getValue(),r=this.ec.locale$.getValue(),i=this.ec.theme$.getValue();this.#Ch(t,r.language);var s=this.getVisibleRange(e),n=this.ec.data.getEntries({start:s.start,end:s.end});this.#xh(s.start,e,n,i),this.#ph.attach(this.#jl,s.start),this.ec.viewDateRangeChanged$.next(s)}#Ch(e,t){if(this.#mh.innerHTML="",this.ec.showWeekNumbers$.getValue()){var r=document.createElement("div");r.classList.add("ec-month-header-cell","ec-month-wn-header"),r.setAttribute("role","columnheader");var i=this.ec.locale$.getValue().calendar;r.textContent=i?.weekNumberShort??"Wk",this.#mh.appendChild(r)}for(var s=new Intl.DateTimeFormat(t,{weekday:"short"}),n=0;n<7;n++){var a=new Date(2024,0,7+(e+n)%7),o=document.createElement("div");o.classList.add("ec-month-header-cell"),o.setAttribute("role","columnheader"),o.textContent=s.format(a),this.#mh.appendChild(o)}}#xh(e,t,r,i){this.#jl.innerHTML="",this.#fh=[];var s=new Date;s.setHours(0,0,0,0);for(var n=t.getMonth(),a=this.ec.locale$.getValue().language,o=new Intl.DateTimeFormat(a,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),l=[],h=this.ec.showWeekNumbers$.getValue(),d=0;d<6;d++){var c=document.createElement("div");if(c.classList.add("ec-month-week"),c.setAttribute("role","row"),h){var u=new Date(e);u.setDate(e.getDate()+7*d);var g=document.createElement("div");g.classList.add("ec-month-wn"),g.setAttribute("role","rowheader"),g.textContent=Gt(u).toString(),c.appendChild(g)}for(var m=0;m<7;m++){var p=new Date(e);p.setDate(e.getDate()+7*d+m);var v=document.createElement("div");v.classList.add("ec-month-day"),v.setAttribute("role","gridcell"),v.setAttribute("aria-label",o.format(p)),p.getMonth()!==n&&v.classList.add("ec-other-month"),p.getTime()===s.getTime()&&(v.classList.add("ec-today"),v.setAttribute("aria-current","date"));var f=document.createElement("div");f.classList.add("ec-month-day-header"),f.textContent=p.getDate().toString(),v.appendChild(f);var y=document.createElement("div");y.classList.add("ec-month-day-entries"),v.appendChild(y);var b=this.#kh(r,p);l.push({container:y,entries:b,cellDate:p}),this.#Eh(v,p),v.tabIndex=-1,this.#fh.push(v),c.appendChild(v)}this.#jl.appendChild(c)}var w=this.#bh();for(var T of l)this.#Dh(T.container,T.entries,T.cellDate,i,e,w)}#bh(){if(0===this.#fh.length)return 3;var e=this.#fh[0],t=e.offsetHeight;if(0===t)return 3;var r=e.querySelector(".ec-month-day-header"),i=r?.offsetHeight??24,s=getComputedStyle(e),n=t-i+7,a=(parseInt(s.getPropertyValue("--ec-entry-height"))||22)+(parseInt(s.getPropertyValue("--ec-entry-gap"))||2);return Math.max(1,Math.floor(n/a))}#kh(e,t){var r=new Date(t);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+1),e.filter(e=>{var t=e.startTime,s=e.endTime;return t<i&&s>r})}#Dh(e,t,r,i,s,n){var a=t.length<=n?t.length:Math.max(1,n-1),o=t.slice(0,a),l=this.ec.locale$.getValue().language,h=new Intl.DateTimeFormat(l,{hour:"numeric",minute:"2-digit"});for(var d of o){var c=document.createElement("div");c.classList.add("ec-entry"),c.tabIndex=0,c.setAttribute("role","button"),c.setAttribute("aria-selected","false"),eo(c);var u=d.title??"";d.isAllDay?u+=", "+(this.ec.locale$.getValue().calendar?.allDay??"all-day"):d.startTime&&d.endTime&&(u+=", "+h.format(d.startTime)+" – "+h.format(d.endTime)),c.setAttribute("aria-label",u),Qa(c,d),c.dataset.entryId=d.id;var g=new Date(d.startTime);g.setHours(0,0,0,0);var m=new Date(d.endTime);m.setHours(0,0,0,0);var p=m.getTime()>g.getTime()+864e5||d.isAllDay;p?c.classList.add("ec-entry-multiday"):c.classList.add("ec-entry-single");var v=Ga(d,this.ec.data,i);p?(c.style.backgroundColor=v.chipBackgroundColor,c.style.color=v.chipTextColor):(c.style.backgroundColor=v.chipBackgroundColor,c.style.color=v.chipTextColor,c.style.borderLeft=`var(--ec-entry-accent-width, 3px) solid ${v.color2}`),qa(c,d,v),Ja(c,d,!0,this.ec),this.#Sh(c,d,s),e.appendChild(c)}if(t.length>a){var f=t.length-a,y=this.ec.locale$.getValue().calendar,b=document.createElement("div");b.classList.add("ec-month-day-more"),b.setAttribute("role","button"),b.tabIndex=0,b.textContent=y?.more?y.more(f):`+${f} more`,b.setAttribute("aria-label",y?.ariaMoreEvents?y.ariaMoreEvents(f):`${f} more events`),b.addEventListener("click",e=>{e.stopPropagation(),this.ec.moreClick$.next({date:new Date(r),entries:t})}),e.appendChild(b)}}#Th(){this.#jl.addEventListener("keydown",e=>{var t=e.target;if(t.classList.contains("ec-month-day")){var r=this.#fh.indexOf(t);if(!(r<0)){var i=-1;switch(e.key){case"ArrowLeft":i=r-1;break;case"ArrowRight":i=r+1;break;case"ArrowUp":i=r-7;break;case"ArrowDown":i=r+7;break;default:return}i>=0&&i<this.#fh.length&&(e.preventDefault(),this.#fh[i].tabIndex=0,this.#fh[i].focus(),t.tabIndex=-1)}}})}#Eh(e,t){e.addEventListener("click",e=>{e.target.closest(".ec-entry")||this.#ph.didDrag||(this.ec.selectedEntries$.next([]),this.ec.dateClick$.next({date:new Date(t),isAllDay:!0,domEvent:e}))}),e.addEventListener("contextmenu",e=>{e.preventDefault(),this.ec.dateContextMenu$.next({date:new Date(t),isAllDay:!0,entry:null,domEvent:e})})}#Sh(e,t,r){e.style.touchAction="none",e.addEventListener("pointerdown",i=>{0===i.button&&this.ec.canEdit$.getValue()&&this.#vh.startDrag(i,t,e,this.#fh,r)}),e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),!this.#vh.didDrag){if(e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}destroy(){this.#_n.disconnect(),this.#ph.destroy(),this.#vh.destroy(),super.destroy()}}class io{static getHourLabels(e){for(var t=new Intl.DateTimeFormat(e,{hour:"numeric"}),r=[],i=0;i<24;i++){var s=new Date(2024,0,1,i,0);r.push(t.format(s))}return r}static timeToY(e,t){return(60*e.getHours()+e.getMinutes())*t}static durationToHeight(e,t,r){var i=60*e.getHours()+e.getMinutes(),s=60*t.getHours()+t.getMinutes();return s<i&&(s=1440),(s-i)*r}static splitByDay(e,t){var r=t.map(e=>({date:new Date(e),allDay:[],timed:[]}));for(var i of e)for(var s=i.startTime,n=i.endTime,a=n.getTime()-s.getTime(),o=i.isAllDay||a>=864e5,l=0;l<t.length;l++){var h=new Date(t[l]);h.setHours(0,0,0,0);var d=new Date(h);d.setDate(d.getDate()+1),s<d&&n>h&&(o?r[l].allDay.push(i):r[l].timed.push(i))}return r}static resolveOverlaps(e){if(0===e.length)return[];for(var t=[...e].sort((e,t)=>{var r=e.startTime.getTime()-t.startTime.getTime();return 0!==r?r:t.endTime.getTime()-t.startTime.getTime()-(e.endTime.getTime()-e.startTime.getTime())}),r=[],i=[t[0]],s=t[0].endTime.getTime(),n=1;n<t.length;n++){(d=t[n]).startTime.getTime()<s?(i.push(d),d.endTime.getTime()>s&&(s=d.endTime.getTime())):(r.push(i),i=[d],s=d.endTime.getTime())}r.push(i);var a=[];for(var o of r){var l=[],h=new Map;for(var d of o){for(var c=!1,u=0;u<l.length;u++)if(d.startTime.getTime()>=l[u].endTime){l[u].endTime=d.endTime.getTime(),h.set(d,u),c=!0;break}c||(h.set(d,l.length),l.push({endTime:d.endTime.getTime()}))}var g=l.length;for(var d of o)a.push({entry:d,column:h.get(d),totalColumns:g})}return a}}class so{#Ul;#$h=null;#Rh=null;#Mh=0;#Lh=0;#Ih=null;#Ph=0;#Ah=30;#Zl=!1;#Gl=-1;#ql=null;#_l=null;#Jl=null;#Ql=null;constructor(e){this.#Ul=e}get didDrag(){return this.#Zl}attach(e,t,r,i){e.style.touchAction="none",e.addEventListener("pointerdown",s=>{if(0===s.button&&!s.target.closest(".ec-tg-entry")&&this.#Ul.canEdit$.getValue()){s.preventDefault(),this.#Gl=s.pointerId,this.#$h=e,this.#Rh=t,this.#Ph=r,this.#Ah=i;var n=e.getBoundingClientRect(),a=(s.clientY-n.top+e.scrollTop)/r;this.#Mh=this.#Hh(a,i),this.#Lh=this.#Mh+i,this.#Zl=!1,this.#Ih=document.createElement("div"),this.#Ih.classList.add("ec-tg-drag-preview"),e.appendChild(this.#Ih),this.#gh(),this.#ql=e=>this.#sh(e),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#Ua(e),document.addEventListener("pointermove",this.#ql),document.addEventListener("pointerup",this.#_l),document.addEventListener("pointercancel",this.#Jl),document.addEventListener("keydown",this.#Ql)}})}cancel(){this.#th(),this.#ch()}destroy(){this.cancel()}#sh(e){if(e.pointerId===this.#Gl&&this.#$h&&this.#Ih){var t=this.#$h.getBoundingClientRect(),r=(e.clientY-t.top+this.#$h.scrollTop)/this.#Ph;this.#Lh=this.#Hh(r,this.#Ah),this.#Lh!==this.#Mh&&this.#Lh!==this.#Mh+this.#Ah&&(this.#Zl=!0),this.#Lh===this.#Mh&&(this.#Lh=this.#Mh+this.#Ah),this.#Lh=Math.max(0,Math.min(1440,this.#Lh)),this.#gh()}}#nh(e){if(e.pointerId===this.#Gl)if(this.#th(),this.#$h&&this.#Rh&&this.#Ih){var t=Math.min(this.#Mh,this.#Lh),r=Math.max(this.#Mh,this.#Lh),i=new Date(this.#Rh);i.setHours(Math.floor(t/60),t%60,0,0);var s=new Date(this.#Rh);if(s.setHours(Math.floor(r/60),r%60,0,0),this.#ch(),this.#Zl){var n={startTime:i,endTime:s,isAllDay:!1,cancel:!1};this.#Ul.entryCreating$.next(n)}}else this.#ch()}#ah(e){e.pointerId===this.#Gl&&this.cancel()}#Ua(e){"Escape"===e.key&&this.cancel()}#gh(){if(this.#Ih){var e=Math.min(this.#Mh,this.#Lh),t=Math.max(this.#Mh,this.#Lh);this.#Ih.style.top=e*this.#Ph+"px",this.#Ih.style.height=(t-e)*this.#Ph+"px";var r=this.#Ul.locale$.getValue().language,i=new Intl.DateTimeFormat(r,{hour:"numeric",minute:"2-digit"}),s=new Date(2024,0,1);s.setHours(Math.floor(e/60),e%60);var n=i.format(s);s.setHours(Math.floor(t/60),t%60);var a=i.format(s);this.#Ih.textContent=n+" – "+a}}#Hh(e,t){return Math.round(e/t)*t}#ch(){this.#Ih&&(this.#Ih.remove(),this.#Ih=null),this.#$h=null,this.#Rh=null,this.#Gl=-1}#th(){this.#ql&&(document.removeEventListener("pointermove",this.#ql),this.#ql=null),this.#_l&&(document.removeEventListener("pointerup",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointercancel",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("keydown",this.#Ql),this.#Ql=null)}}class no{#Ul;#Vh=null;#Bh=[];#Ps=-1;#Kl=-1;#Zl=!1;#Gl=-1;#ql=null;#_l=null;#Jl=null;#Ql=null;constructor(e){this.#Ul=e}get didDrag(){return this.#Zl}attach(e,t){this.#Vh=e,this.#Bh=t;for(var r=0;r<e.children.length;r++){var i=e.children[r];i.dataset.cellIndex=String(r),i.style.touchAction="none",i.addEventListener("pointerdown",e=>{var t=parseInt(e.currentTarget.dataset.cellIndex,10);this.#eh(e,t)})}}cancel(){this.#th(),this.#rh(),this.#Ps=-1,this.#Kl=-1,this.#Zl=!1,this.#Gl=-1}destroy(){this.cancel()}#eh(e,t){0===e.button&&(e.target.closest(".ec-entry")||this.#Ul.canEdit$.getValue()&&(e.preventDefault(),this.#Gl=e.pointerId,this.#Zl=!1,this.#Ps=t,this.#Kl=t,this.#ih(),this.#ql=e=>this.#sh(e),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>this.#Ua(e),document.addEventListener("pointermove",this.#ql),document.addEventListener("pointerup",this.#_l),document.addEventListener("pointercancel",this.#Jl),document.addEventListener("keydown",this.#Ql)))}#sh(e){if(e.pointerId===this.#Gl&&this.#Vh&&!(this.#Ps<0)){var t=this.#oh(e.clientX,e.clientY);t>=0&&t!==this.#Kl&&(this.#Kl=t,this.#Kl!==this.#Ps&&(this.#Zl=!0),this.#ih())}}#nh(e){if(e.pointerId===this.#Gl)if(this.#th(),this.#Ps<0)this.cancel();else{var t=Math.min(this.#Ps,this.#Kl),r=Math.max(this.#Ps,this.#Kl),i=new Date(this.#Bh[t]);i.setHours(0,0,0,0);var s=new Date(this.#Bh[r]);s.setDate(s.getDate()+1),s.setHours(0,0,0,0),this.#rh();var n=this.#Zl;if(this.#Ps=-1,this.#Kl=-1,this.#Zl=!1,this.#Gl=-1,n){var a={startTime:i,endTime:s,isAllDay:!0,cancel:!1};this.#Ul.entryCreating$.next(a)}}}#ah(e){e.pointerId===this.#Gl&&this.cancel()}#Ua(e){"Escape"===e.key&&this.cancel()}#ih(){if(this.#Vh)for(var e=Math.min(this.#Ps,this.#Kl),t=Math.max(this.#Ps,this.#Kl),r=0;r<this.#Vh.children.length;r++){this.#Vh.children[r].classList.toggle("ec-tg-allday-drag",r>=e&&r<=t)}}#rh(){if(this.#Vh)for(var e=0;e<this.#Vh.children.length;e++)this.#Vh.children[e].classList.remove("ec-tg-allday-drag")}#oh(e,t){if(!this.#Vh)return-1;for(var r=0;r<this.#Vh.children.length;r++){var i=this.#Vh.children[r].getBoundingClientRect();if(e>=i.left&&e<=i.right)return r}return this.#Vh.children.length>0?e<this.#Vh.children[0].getBoundingClientRect().left?0:this.#Vh.children.length-1:-1}#th(){this.#ql&&(document.removeEventListener("pointermove",this.#ql),this.#ql=null),this.#_l&&(document.removeEventListener("pointerup",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointercancel",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("keydown",this.#Ql),this.#Ql=null)}}class ao{#Ul;#lh=null;#Fh=null;#hh=null;#dh=null;#Qi=null;#zh=null;#Oh=[];#Nh=[];#Wh=-1;#Uh=-1;#jh=0;#Xh=30;#Yh=0;#Kh=0;#Zh=0;#Gl=-1;#ql=null;#_l=null;#Jl=null;#Ql=null;constructor(e){this.#Ul=e}attach(e,t,r,i,s,n,a,o){var l=document.createElement("div");l.classList.add("ec-tg-entry-resize-handle","ec-tg-entry-resize-handle-top"),l.style.touchAction="none",e.appendChild(l);var h=document.createElement("div");h.classList.add("ec-tg-entry-resize-handle","ec-tg-entry-resize-handle-bottom"),h.style.touchAction="none",e.appendChild(h);var d=a??[r],c=o??[i];l.addEventListener("pointerdown",a=>{a.stopPropagation(),0===a.button&&this.#Ul.canEdit$.getValue()&&this.#Ho(a,e,t,r,i,s,n,"resize-start",d,c)}),h.addEventListener("pointerdown",a=>{a.stopPropagation(),0===a.button&&this.#Ul.canEdit$.getValue()&&this.#Ho(a,e,t,r,i,s,n,"resize-end",d,c)}),e.style.touchAction="none",e.addEventListener("pointerdown",a=>{0===a.button&&(a.target.closest(".ec-tg-entry-resize-handle")||this.#Ul.canEdit$.getValue()&&this.#Ho(a,e,t,r,i,s,n,"move",d,c))})}cancel(){this.#hh&&this.#hh.classList.remove("ec-entry-dragging"),this.#ch(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#th(),this.#uh()}destroy(){this.cancel()}#Ho(e,t,r,i,s,n,a,o,l,h){e.preventDefault(),this.#Gl=e.pointerId,this.#lh=r,this.#Fh=o,this.#hh=t,this.#Qi=i,this.#zh=s,this.#Oh=l,this.#Nh=h,this.#Wh=l.indexOf(i),this.#Uh=this.#Wh,this.#jh=n,this.#Xh=a,this.#Yh=parseFloat(t.style.top),this.#Kh=parseFloat(t.style.height),this.#Zh=e.clientY,t.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#ql=e=>this.#sh(e),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#ql),document.addEventListener("pointerup",this.#_l),document.addEventListener("pointercancel",this.#Jl),document.addEventListener("keydown",this.#Ql)}#sh(e){if(e.pointerId===this.#Gl&&this.#hh){var t=e.clientY-this.#Zh,r=this.#Hh(t/this.#jh,this.#Xh)*this.#jh;if("move"===this.#Fh){var i=Math.max(0,this.#Yh+r),s=this.#Gh(e.clientX);s<0&&(s=this.#Uh),this.#Uh=s,this.#qh(),this.#dh.style.top=i+"px";var n=this.#Oh[s];this.#dh.parentElement!==n&&n.appendChild(this.#dh)}else if("resize-start"===this.#Fh){var a=this.#Xh*this.#jh,o=this.#Kh-a,l=Math.min(r,o),h=Math.max(0,this.#Yh+l),d=Math.max(a,this.#Kh-l);this.#qh(),this.#dh.style.top=h+"px",this.#dh.style.height=d+"px"}else if("resize-end"===this.#Fh){var c=Math.max(this.#Xh*this.#jh,this.#Kh+r);this.#qh(),this.#dh.style.height=c+"px"}}}#nh(e){if(e.pointerId===this.#Gl)if(this.#th(),this.#lh&&this.#hh&&this.#zh){var t=e.clientY-this.#Zh,r=this.#Hh(t/this.#jh,this.#Xh),i=this.#Uh-this.#Wh;if(this.#hh.classList.remove("ec-entry-dragging"),this.#ch(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==r||0!==i){var s=this.#lh,n=s.startTime,a=s.endTime;if("move"===this.#Fh){var o=6e4*r+24*i*60*60*1e3,l=new Date(n.getTime()+o),h=new Date(a.getTime()+o);if(60*l.getHours()+l.getMinutes()<0){var d=this.#Nh[this.#Uh]??this.#zh;(l=new Date(d)).setHours(0,0,0,0),h=new Date(l.getTime()+(a.getTime()-n.getTime()))}var c={entry:s,newStartTime:l,newEndTime:h,cancel:!1};this.#Ul.entryMoving$.next(c),c.cancel||(s.item.startTime=c.newStartTime,s.item.endTime=c.newEndTime)}else if("resize-start"===this.#Fh){var u=new Date(n.getTime()+6e4*r);a.getTime()-u.getTime()<6e4*this.#Xh&&(u=new Date(a.getTime()-6e4*this.#Xh));var g=new Date(this.#zh);g.setHours(0,0,0,0),u.getTime()<g.getTime()&&(u=g);var m={entry:s,newStartTime:u,newEndTime:a,edge:"start",cancel:!1};this.#Ul.entryResizing$.next(m),m.cancel||(s.item.startTime=m.newStartTime)}else if("resize-end"===this.#Fh){var p=new Date(a.getTime()+6e4*r);p.getTime()-n.getTime()<6e4*this.#Xh&&(p=new Date(n.getTime()+6e4*this.#Xh));var v={entry:s,newStartTime:n,newEndTime:p,edge:"end",cancel:!1};this.#Ul.entryResizing$.next(v),v.cancel||(s.item.endTime=v.newEndTime)}this.#uh()}else this.#uh()}else this.cancel()}#ah(e){e.pointerId===this.#Gl&&this.cancel()}#qh(){!this.#dh&&this.#hh&&(this.#dh=this.#hh.cloneNode(!0),this.#dh.classList.remove("ec-entry-dragging"),this.#dh.classList.add("ec-entry-drag-preview"),this.#dh.style.top=this.#Yh+"px",this.#dh.style.height=this.#Kh+"px",this.#Qi.appendChild(this.#dh))}#ch(){this.#dh&&(this.#dh.remove(),this.#dh=null)}#Hh(e,t){return Math.round(e/t)*t}#Gh(e){for(var t=0;t<this.#Oh.length;t++){var r=this.#Oh[t].getBoundingClientRect();if(e>=r.left&&e<=r.right)return t}return 0===this.#Oh.length?-1:e<this.#Oh[0].getBoundingClientRect().left?0:this.#Oh.length-1}#uh(){this.#lh=null,this.#Fh=null,this.#hh=null,this.#Qi=null,this.#zh=null,this.#Oh=[],this.#Nh=[],this.#Wh=-1,this.#Uh=-1,this.#Gl=-1}#th(){this.#ql&&(document.removeEventListener("pointermove",this.#ql),this.#ql=null),this.#_l&&(document.removeEventListener("pointerup",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointercancel",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("keydown",this.#Ql),this.#Ql=null)}}class oo{#Ul;#lh=null;#hh=null;#dh=null;#Yl=[];#Bh=[];#Ps=-1;#Kl=-1;#Zl=!1;#Gl=-1;#ql=null;#_l=null;#Jl=null;#Ql=null;constructor(e){this.#Ul=e}get didDrag(){return this.#Zl}startDrag(e,t,r,i,s){if(0===e.button&&this.#Ul.canEdit$.getValue()){e.preventDefault(),e.stopPropagation(),this.#Gl=e.pointerId,this.#lh=t,this.#hh=r,this.#Bh=s,this.#Zl=!1,this.#Yl=[];for(var n=0;n<i.children.length;n++)this.#Yl.push(i.children[n]);var a=this.#oh(e.clientX);a<0||(this.#Ps=a,this.#Kl=a,r.classList.add("ec-entry-dragging"),document.body.classList.add("ec-dragging"),document.body.style.cursor="grabbing",this.#ql=e=>this.#sh(e),this.#_l=e=>this.#nh(e),this.#Jl=e=>this.#ah(e),this.#Ql=e=>{"Escape"===e.key&&this.cancel()},document.addEventListener("pointermove",this.#ql),document.addEventListener("pointerup",this.#_l),document.addEventListener("pointercancel",this.#Jl),document.addEventListener("keydown",this.#Ql))}}cancel(){this.#hh&&this.#hh.classList.remove("ec-entry-dragging"),this.#ch(),this.#rh(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",this.#th(),this.#uh()}destroy(){this.cancel()}#sh(e){if(e.pointerId===this.#Gl&&!(this.#Ps<0)){var t=this.#oh(e.clientX);t>=0&&t!==this.#Kl&&(this.#Kl=t,this.#Kl!==this.#Ps&&(this.#Zl=!0),this.#gh())}}#nh(e){if(e.pointerId===this.#Gl)if(this.#th(),!this.#lh||this.#Ps<0)this.cancel();else{var t=this.#Kl-this.#Ps;if(this.#hh&&this.#hh.classList.remove("ec-entry-dragging"),this.#ch(),this.#rh(),document.body.classList.remove("ec-dragging"),document.body.style.cursor="",0!==t){var r=this.#lh,i=24*t*60*60*1e3,s=new Date(r.startTime.getTime()+i),n=new Date(r.endTime.getTime()+i),a={entry:r,newStartTime:s,newEndTime:n,cancel:!1};this.#Ul.entryMoving$.next(a),a.cancel||(r.item.startTime=a.newStartTime,r.item.endTime=a.newEndTime),this.#uh()}else this.#uh()}}#ah(e){e.pointerId===this.#Gl&&this.cancel()}#ih(){for(var e=0;e<this.#Yl.length;e++)this.#Yl[e].classList.toggle("ec-tg-allday-drag",e===this.#Kl)}#rh(){for(var e of this.#Yl)e.classList.remove("ec-tg-allday-drag")}#gh(){if(this.#hh&&this.#Kl!==this.#Ps){this.#dh||(this.#dh=this.#hh.cloneNode(!0),this.#dh.classList.remove("ec-entry-dragging"),this.#dh.classList.add("ec-entry-drag-preview"));var e=this.#Yl[this.#Kl];e&&this.#dh.parentElement!==e&&e.appendChild(this.#dh)}else this.#ch()}#ch(){this.#dh&&(this.#dh.remove(),this.#dh=null)}#oh(e){for(var t=0;t<this.#Yl.length;t++){var r=this.#Yl[t].getBoundingClientRect();if(e>=r.left&&e<=r.right)return t}return 0===this.#Yl.length?-1:e<this.#Yl[0].getBoundingClientRect().left?0:this.#Yl.length-1}#uh(){this.#lh=null,this.#hh=null,this.#Yl=[],this.#Ps=-1,this.#Kl=-1,this.#Zl=!1,this.#Gl=-1}#th(){this.#ql&&(document.removeEventListener("pointermove",this.#ql),this.#ql=null),this.#_l&&(document.removeEventListener("pointerup",this.#_l),this.#_l=null),this.#Jl&&(document.removeEventListener("pointercancel",this.#Jl),this.#Jl=null),this.#Ql&&(document.removeEventListener("keydown",this.#Ql),this.#Ql=null)}}class lo extends Ya{#_h;#mh;#Jh;#Qh;#Vh;#ed;#td;#rd;#id=null;#sd=null;#nd="";#ph;#ad;#od;#vh;constructor(e,t){super(e,t),this.element.classList.add("ec-week-view"),this.#ph=new so(e),this.#ad=new no(e),this.#od=new oo(e),this.#vh=new ao(e),this.#wh(),this.#x()}get dayCount(){return 7}getDays(e){for(var t=this.getVisibleRange(e),r=[],i=0;i<this.dayCount;i++){var s=new Date(t.start);s.setDate(t.start.getDate()+i),r.push(s)}return r}#wh(){this.#_h=document.createElement("div"),this.#_h.classList.add("ec-tg-scroll"),this.element.appendChild(this.#_h),this.#mh=document.createElement("div"),this.#mh.classList.add("ec-tg-header"),this.#_h.appendChild(this.#mh),this.#Jh=document.createElement("div"),this.#Jh.classList.add("ec-tg-allday"),this.#Jh.setAttribute("role","region"),this.#Jh.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaAllDayEvents??"All-day events"),this.#Qh=document.createElement("div"),this.#Qh.classList.add("ec-tg-gutter-corner"),this.#Jh.appendChild(this.#Qh),this.#Vh=document.createElement("div"),this.#Vh.classList.add("ec-tg-allday-row"),this.#Jh.appendChild(this.#Vh),this.#_h.appendChild(this.#Jh),this.#ed=document.createElement("div"),this.#ed.classList.add("ec-tg-body"),this.#td=document.createElement("div"),this.#td.classList.add("ec-tg-gutter"),this.#ed.appendChild(this.#td),this.#rd=document.createElement("div"),this.#rd.classList.add("ec-tg-content"),this.#ed.appendChild(this.#rd),this.#_h.appendChild(this.#ed)}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.firstDayOfWeek$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.slotDuration$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.workingHours$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&to(this.element,e)}))}show(){this.#nd="",super.show()}getVisibleRange(e){var t=this.ec.firstDayOfWeek$.getValue(),r=(e.getDay()-t+7)%7,i=new Date(e);i.setDate(e.getDate()-r),i.setHours(0,0,0,0);var s=new Date(i);return s.setDate(i.getDate()+7),{start:i,end:s}}render(){this.#ph.cancel(),this.#ad.cancel(),this.#od.cancel(),this.#vh.cancel();var e=this.ec.currentDate$.getValue(),t=this.ec.locale$.getValue(),r=this.ec.slotDuration$.getValue(),i=this.ec.workingHours$.getValue(),s=this.getDays(e),n=this.getVisibleRange(e),a=this.ec.data.getEntries({start:n.start,end:n.end}),o=io.splitByDay(a,s),l=48/r;this.#Ch(s,t.language),this.#ld(o,s),this.#hd(t.language,r,48),this.#dd(s,o,l,r,48),this.#cd(s,l),this.ec.viewDateRangeChanged$.next(n);var h=n.start.getTime().toString();this.#nd!==h&&(this.#nd=h,requestAnimationFrame(()=>{var e,t=new Date,r=new Date(t.getFullYear(),t.getMonth(),t.getDate());e=r>=n.start&&r<n.end?Math.max(0,t.getHours()-1):i.start,this.#_h.scrollTop=60*e*l}))}#Ch(e,t){this.#mh.innerHTML="";var r=document.createElement("div");if(r.classList.add("ec-tg-gutter-corner"),this.ec.showWeekNumbers$.getValue()&&e.length>0){r.classList.add("ec-tg-week-number");var i=this.ec.locale$.getValue().calendar,s=i?.weekNumberShort??"Wk";r.textContent=s+" "+Gt(e[0]),r.setAttribute("aria-label",(i?.weekNumber??"Week")+" "+Gt(e[0]))}this.#mh.appendChild(r);var n=new Date;n.setHours(0,0,0,0);var a=new Intl.DateTimeFormat(t,{weekday:"short"}),o=new Intl.DateTimeFormat(t,{day:"numeric"}),l=new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric"});for(var h of e){var d=document.createElement("div");d.classList.add("ec-tg-day-header"),d.setAttribute("role","columnheader"),d.setAttribute("aria-label",l.format(h)),h.getTime()===n.getTime()&&(d.classList.add("ec-tg-today"),d.setAttribute("aria-current","date"));var c=document.createElement("span");c.classList.add("ec-tg-day-name"),c.textContent=a.format(h);var u=document.createElement("span");u.classList.add("ec-tg-day-number"),u.textContent=o.format(h),h.getTime()===n.getTime()&&u.classList.add("ec-tg-today-number"),d.appendChild(c),d.appendChild(u),this.#mh.appendChild(d)}}#ld(e,t){for(var r of(this.#Vh.innerHTML="",e)){var i=document.createElement("div");for(var s of(i.classList.add("ec-tg-allday-cell"),r.allDay)){var n=document.createElement("div");n.classList.add("ec-entry","ec-entry-multiday"),n.tabIndex=0,n.setAttribute("role","button"),n.setAttribute("aria-selected","false"),eo(n);var a=(s.title??"")+", "+(this.ec.locale$.getValue().calendar?.allDay??"all-day");n.setAttribute("aria-label",a),n.dataset.entryId=s.id,Qa(n,s);var o=this.ec.theme$.getValue(),l=Ga(s,this.ec.data,o);n.style.backgroundColor=l.chipBackgroundColor,n.style.color=l.chipTextColor,qa(n,s,l),Ja(n,s,!0,this.ec),this.#ud(n,s),this.#gd(n,s,t),i.appendChild(n)}this.#Vh.appendChild(i)}this.#ad.attach(this.#Vh,t);var h=this.#mh.offsetHeight;this.#Jh.style.top=h+"px"}#hd(e,t,r){this.#td.innerHTML="";for(var i=io.getHourLabels(e),s=60/t,n=0;n<24;n++)for(var a=0;a<s;a++){var o=document.createElement("div");if(o.classList.add("ec-tg-gutter-slot"),o.style.height=r+"px",0===a){o.classList.add("ec-tg-gutter-hour"),o.setAttribute("role","rowheader");var l=document.createElement("span");l.classList.add("ec-tg-gutter-label"),l.textContent=i[n],o.appendChild(l)}else o.classList.add("ec-tg-gutter-sub");this.#td.appendChild(o)}}#dd(e,t,r,i,s){this.#rd.innerHTML="";var n=new Date;n.setHours(0,0,0,0);for(var a=60/i,o=24*a,l=[],h=0;h<e.length;h++){var d=document.createElement("div");d.classList.add("ec-tg-column"),e[h].getTime()===n.getTime()&&d.classList.add("ec-tg-today");for(var c=0;c<o;c++){var u=document.createElement("div");u.classList.add("ec-tg-slot"),u.style.height=s+"px",c%a===0?u.classList.add("ec-tg-slot-hour"):u.classList.add("ec-tg-slot-sub");var g=c*i;this.#md(u,e[h],g),d.appendChild(u)}l.push(d),this.#rd.appendChild(d)}for(h=0;h<e.length;h++){var m=io.resolveOverlaps(t[h].timed);this.#pd(l[h],m,e[h],r,i,l,e),this.#ph.attach(l[h],e[h],r,i)}}#pd(e,t,r,i,s,n,a){var o=new Date(r);o.setHours(0,0,0,0);var l=new Date(o);for(var h of(l.setDate(l.getDate()+1),t)){var d=h.entry,c=d.startTime<o?o:d.startTime,u=d.endTime>l?l:d.endTime,g=io.timeToY(c,i),m=io.durationToHeight(c,u,i),p=15*i;m<p&&(m=p);var v=100/h.totalColumns,f=h.column*v,y=document.createElement("div");y.classList.add("ec-entry","ec-tg-entry"),y.tabIndex=0,y.setAttribute("role","button"),y.setAttribute("aria-selected","false"),eo(y);var b=(d.title??"")+", "+this.#vd(d);y.setAttribute("aria-label",b),y.dataset.entryId=d.id,y.style.top=g+"px",y.style.height=m+"px",y.style.left=f+"%",y.style.width=v+"%";var w=this.ec.theme$.getValue(),T=Ga(d,this.ec.data,w);y.style.backgroundColor=T.chipBackgroundColor,y.style.borderLeft=`var(--ec-entry-accent-width, 3px) solid ${T.color2}`,y.style.color=T.chipTextColor,qa(y,d,T);var C=document.createElement("div");C.classList.add("ec-tg-entry-title"),Qa(C,d);var x=document.createElement("div");x.classList.add("ec-tg-entry-time"),x.textContent=this.#vd(d),y.appendChild(C),y.appendChild(x),Ja(y,d,!1,this.ec),this.#ud(y,d),this.#vh.attach(y,d,e,r,i,s,n,a),e.appendChild(y)}}#vd(e){var t=this.ec.locale$.getValue().language,r=new Intl.DateTimeFormat(t,{hour:"numeric",minute:"2-digit"});return r.format(e.startTime)+" – "+r.format(e.endTime)}#cd(e,t){null!==this.#sd&&(clearInterval(this.#sd),this.#sd=null),this.#id&&(this.#id.remove(),this.#id=null);var r=new Date;r.setHours(0,0,0,0);for(var i=-1,s=0;s<e.length;s++){var n=new Date(e[s]);if(n.setHours(0,0,0,0),n.getTime()===r.getTime()){i=s;break}}if(!(i<0)){var a=this.#rd.children[i];if(a){this.#id=document.createElement("div"),this.#id.classList.add("ec-tg-now-line"),this.#id.setAttribute("role","presentation"),this.#id.setAttribute("aria-hidden","true"),a.appendChild(this.#id);var o=()=>{if(this.#id){var e=new Date,r=io.timeToY(e,t);this.#id.style.top=r+"px"}};o(),this.#sd=setInterval(o,6e4)}}}#gd(e,t,r){e.style.touchAction="none",e.addEventListener("pointerdown",i=>{0===i.button&&this.ec.canEdit$.getValue()&&this.#od.startDrag(i,t,e,this.#Vh,r)})}#md(e,t,r){e.addEventListener("click",e=>{if(!e.target.closest(".ec-tg-entry")){this.ec.selectedEntries$.next([]);var i=new Date(t);i.setHours(Math.floor(r/60),r%60,0,0),this.ec.dateClick$.next({date:i,isAllDay:!1,domEvent:e})}}),e.addEventListener("contextmenu",e=>{e.preventDefault();var i=new Date(t);i.setHours(Math.floor(r/60),r%60,0,0),this.ec.dateContextMenu$.next({date:i,isAllDay:!1,entry:null,domEvent:e})})}#ud(e,t){e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}destroy(){null!==this.#sd&&(clearInterval(this.#sd),this.#sd=null),this.#ph.destroy(),this.#ad.destroy(),this.#od.destroy(),this.#vh.destroy(),super.destroy()}}class ho extends lo{constructor(e,t){super(e,t),this.element.classList.remove("ec-week-view"),this.element.classList.add("ec-day-view")}get dayCount(){return 1}getVisibleRange(e){var t=new Date(e);t.setHours(0,0,0,0);var r=new Date(t);return r.setDate(t.getDate()+1),{start:t,end:r}}}class co extends Ya{#_h;#fd=[];constructor(e,t){super(e,t),this.element.classList.add("ec-agenda-view"),this.#wh(),this.#x()}#wh(){this.#_h=document.createElement("div"),this.#_h.classList.add("ec-agenda-scroll"),this.#_h.setAttribute("role","list"),this.#_h.setAttribute("aria-label",this.ec.locale$.getValue().calendar?.ariaAgendaList??"Agenda event list"),this.element.appendChild(this.#_h),this.#yd()}#x(){this.subscriptions.add(this.ec.currentDate$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.agendaDays$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemAdded$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.itemRemoved$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.data.calendarVisibilityChanged$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.locale$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.settings.changed$.subscribe(()=>{this.isVisible&&this.render()})),this.subscriptions.add(this.ec.selectedEntries$.subscribe(e=>{this.isVisible&&to(this.element,e)}))}getVisibleRange(e){var t=this.ec.agendaDays$.getValue(),r=new Date(e);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+t),{start:r,end:i}}render(){var e=this.ec.currentDate$.getValue(),t=this.ec.locale$.getValue(),r=this.ec.theme$.getValue(),i=t.language,s=t.calendar,n=this.getVisibleRange(e),a=this.ec.data.getEntries({start:n.start,end:n.end});this.#_h.innerHTML="",this.#_h.setAttribute("aria-label",s?.ariaAgendaList??"Agenda event list"),this.#fd=[];var o=new Date;o.setHours(0,0,0,0);for(var l=new Intl.DateTimeFormat(i,{weekday:"long"}),h=new Intl.DateTimeFormat(i,{year:"numeric",month:"long",day:"numeric"}),d=new Intl.DateTimeFormat(i,{hour:"numeric",minute:"2-digit"}),c=this.ec.agendaDays$.getValue(),u=!1,g=0;g<c;g++){var m=new Date(n.start);m.setDate(m.getDate()+g);var p=this.#kh(a,m);if(0!==p.length){u=!0;var v=document.createElement("div");v.classList.add("ec-agenda-day"),v.setAttribute("role","listitem");var f=document.createElement("div");f.classList.add("ec-agenda-day-header");var y=document.createElement("span");y.classList.add("ec-agenda-day-name"),y.textContent=l.format(m),f.appendChild(y);var b=document.createElement("span");if(b.classList.add("ec-agenda-day-date"),b.textContent=h.format(m),f.appendChild(b),m.getTime()===o.getTime()){f.classList.add("ec-agenda-today"),f.setAttribute("aria-current","date");var w=document.createElement("span");w.classList.add("ec-agenda-today-badge"),w.textContent=s?.today??"Today",f.appendChild(w)}v.appendChild(f);var T=document.createElement("div");for(var C of(T.classList.add("ec-agenda-entries"),p)){var x=this.#bd(C,r,i,d,s);T.appendChild(x),this.#fd.push(x)}v.appendChild(T),this.#_h.appendChild(v)}}if(!u){var k=document.createElement("div");k.classList.add("ec-agenda-empty"),k.textContent=s?.noEvents??"No events",this.#_h.appendChild(k)}this.ec.viewDateRangeChanged$.next(n)}#kh(e,t){var r=new Date(t);r.setHours(0,0,0,0);var i=new Date(r);return i.setDate(i.getDate()+1),e.filter(e=>e.startTime<i&&e.endTime>r)}#bd(e,t,r,i,s){var n=document.createElement("div");n.classList.add("ec-entry","ec-agenda-entry"),n.tabIndex=0,n.setAttribute("role","button"),n.setAttribute("aria-selected","false"),n.dataset.entryId=e.id,eo(n);var a=Ga(e,this.ec.data,t),o=document.createElement("span");o.classList.add("ec-agenda-entry-dot"),o.style.backgroundColor=a.color2,n.appendChild(o);var l=document.createElement("span");l.classList.add("ec-agenda-entry-time"),e.isAllDay?l.textContent=s?.allDay??"all-day":l.textContent=i.format(e.startTime)+" – "+i.format(e.endTime),n.appendChild(l);var h=document.createElement("span");if(h.classList.add("ec-agenda-entry-title"),Qa(h,e),n.appendChild(h),e.location){var d=document.createElement("span");d.classList.add("ec-agenda-entry-location"),d.textContent=e.location,n.appendChild(d)}qa(n,e,a),Ja(n,e,e.isAllDay,this.ec);var c=e.title??"";return e.isAllDay?c+=", "+(s?.allDay??"all-day"):e.startTime&&e.endTime&&(c+=", "+i.format(e.startTime)+" – "+i.format(e.endTime)),n.setAttribute("aria-label",c),this.#ud(n,e),n}#ud(e,t){e.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopPropagation(),this.ec.selectedEntries$.next([t]),this.ec.entryClick$.next({entry:t,domEvent:e}))}),e.addEventListener("click",e=>{if(e.stopPropagation(),e.ctrlKey||e.metaKey){var r=this.ec.selectedEntries$.getValue(),i=r.find(e=>e.id===t.id);this.ec.selectedEntries$.next(i?r.filter(e=>e.id!==t.id):[...r,t])}else this.ec.selectedEntries$.next([t]);this.ec.entryClick$.next({entry:t,domEvent:e})}),e.addEventListener("dblclick",e=>{e.stopPropagation(),this.ec.entryDblClick$.next({entry:t,domEvent:e})}),e.addEventListener("contextmenu",e=>{e.preventDefault(),e.stopPropagation(),this.ec.entryContextMenu$.next({entry:t,domEvent:e})})}#yd(){this.#_h.addEventListener("keydown",e=>{var t=e.target;if(t.classList.contains("ec-agenda-entry")){var r=this.#fd.indexOf(t);if(!(r<0)){var i=-1;switch(e.key){case"ArrowDown":i=r+1;break;case"ArrowUp":i=r-1;break;case"Home":i=0;break;case"End":i=this.#fd.length-1;break;default:return}if(i>=0&&i<this.#fd.length){e.preventDefault(),this.#fd[i].focus();var s=this.#fd[i].dataset.entryId;if(s){var n=this.getVisibleRange(this.ec.currentDate$.getValue()),a=this.ec.data.getEntries({start:n.start,end:n.end}).find(e=>e.id===s);a&&this.ec.selectedEntries$.next([a])}}}}})}}class uo{#Ul;#nr;#T=new r;#wd;#Td;#Cd=!1;#mh;#xd;#kd;#Ed;#Dd;#jl;#fh=new Map;#Sd=[];constructor(e,t){this.#Ul=e;var r=e.currentDate$.getValue();this.#wd=r.getFullYear(),this.#Td=r.getMonth(),this.#nr=document.createElement("div"),this.#nr.classList.add("ec-mini-calendar"),t.appendChild(this.#nr),this.#wh(),this.#x(),this.render()}render(){this.#Ch(),this.#Cd?(this.#Dd.style.display="none",this.#$d()):(this.#Dd.style.display="",this.#Rd())}navigateToMonth(e,t){this.#wd=e,this.#Td=t,this.render()}destroy(){this.#T.unsubscribe(),this.#nr.remove()}#wh(){var e=this.#Ul.locale$.getValue().calendar;this.#mh=document.createElement("div"),this.#mh.classList.add("ec-mini-header"),this.#mh.setAttribute("role","toolbar"),this.#xd=document.createElement("button"),this.#xd.classList.add("ec-mini-nav-btn"),this.#xd.textContent="‹",this.#xd.addEventListener("click",()=>this.#Md()),this.#Ed=document.createElement("button"),this.#Ed.classList.add("ec-mini-title"),this.#Ed.setAttribute("aria-label",e?.ariaSelectMonthYear??"Select month and year"),this.#Ed.setAttribute("aria-expanded","false"),this.#Ed.addEventListener("click",()=>this.#Ld()),this.#kd=document.createElement("button"),this.#kd.classList.add("ec-mini-nav-btn"),this.#kd.textContent="›",this.#kd.addEventListener("click",()=>this.#Id()),this.#mh.appendChild(this.#xd),this.#mh.appendChild(this.#Ed),this.#mh.appendChild(this.#kd),this.#nr.appendChild(this.#mh),this.#Dd=document.createElement("div"),this.#Dd.classList.add("ec-mini-daynames"),this.#Dd.setAttribute("role","row"),this.#nr.appendChild(this.#Dd),this.#jl=document.createElement("div"),this.#jl.classList.add("ec-mini-grid"),this.#jl.setAttribute("role","grid"),this.#nr.appendChild(this.#jl)}#x(){this.#T.add(this.#Ul.currentDate$.subscribe(e=>{var t=e.getMonth(),r=e.getFullYear();t!==this.#Td||r!==this.#wd?(this.#Td=t,this.#wd=r,this.#Cd&&(this.#Cd=!1),this.render()):this.#Pd()})),this.#T.add(this.#Ul.viewMode$.subscribe(()=>{this.#Cd||this.#Pd()})),this.#T.add(this.#Ul.firstDayOfWeek$.subscribe(()=>{this.#Cd||this.render()})),this.#T.add(this.#Ul.locale$.subscribe(()=>{this.render()})),this.#T.add(this.#Ul.settings.changed$.subscribe(()=>{this.render()})),this.#T.add(this.#Ul.data.itemAdded$.subscribe(()=>this.#Ad())),this.#T.add(this.#Ul.data.itemChanged$.subscribe(()=>this.#Ad())),this.#T.add(this.#Ul.data.itemRemoved$.subscribe(()=>this.#Ad())),this.#T.add(this.#Ul.data.calendarVisibilityChanged$.subscribe(()=>this.#Ad()))}#Ch(){var e=this.#Ul.locale$.getValue().language,t=this.#Ul.locale$.getValue().calendar,r=t?.ariaPrevious??"Previous",i=t?.ariaNext??"Next";if(this.#Cd)this.#Ed.textContent=this.#wd.toString(),this.#Ed.setAttribute("aria-expanded","true"),this.#xd.setAttribute("aria-label",r+" year"),this.#kd.setAttribute("aria-label",i+" year");else{var s=new Date(this.#wd,this.#Td,1),n=new Intl.DateTimeFormat(e,{year:"numeric",month:"long"});this.#Ed.textContent=n.format(s),this.#Ed.setAttribute("aria-expanded","false"),this.#xd.setAttribute("aria-label",r+" "+(t?.month??"month").toLowerCase()),this.#kd.setAttribute("aria-label",i+" "+(t?.month??"month").toLowerCase()),this.#jl.setAttribute("aria-label",n.format(s))}}#Hd(){this.#Dd.innerHTML="";for(var e=this.#Ul.locale$.getValue().language,t=this.#Ul.firstDayOfWeek$.getValue(),r=new Intl.DateTimeFormat(e,{weekday:"narrow"}),i=0;i<7;i++){var s=(t+i)%7,n=new Date(2024,0,7+s),a=document.createElement("span");a.classList.add("ec-mini-dayname"),a.setAttribute("role","columnheader"),0!==s&&6!==s||a.classList.add("ec-mini-weekend"),a.textContent=r.format(n),this.#Dd.appendChild(a)}}#Rd(){this.#Hd(),this.#jl.innerHTML="",this.#jl.classList.remove("ec-mini-grid-months"),this.#fh.clear(),this.#Sd=[];var e=this.#Ul.firstDayOfWeek$.getValue(),t=this.#Vd(this.#wd,this.#Td,e),r=new Date;r.setHours(0,0,0,0);for(var i=this.#Ul.locale$.getValue().language,s=new Intl.DateTimeFormat(i,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),n=0;n<6;n++){var a=document.createElement("div");a.classList.add("ec-mini-row"),a.setAttribute("role","row"),this.#Sd.push(a);for(var o=0;o<7;o++){var l=new Date(t);l.setDate(t.getDate()+7*n+o);var h=document.createElement("button");h.classList.add("ec-mini-day"),h.textContent=l.getDate().toString(),h.setAttribute("aria-label",s.format(l));var d=this.#Bd(l);h.dataset.date=d,this.#fh.set(d,h),l.getMonth()!==this.#Td&&h.classList.add("ec-mini-other-month"),l.getTime()===r.getTime()&&(h.classList.add("ec-mini-today"),h.setAttribute("aria-current","date"));var c=l.getDay();0!==c&&6!==c||h.classList.add("ec-mini-weekend");var u=new Date(l);h.addEventListener("click",(e=>()=>this.#Fd(e))(u)),a.appendChild(h)}this.#jl.appendChild(a)}this.#Pd(),this.#Ad()}#$d(){this.#jl.innerHTML="",this.#jl.classList.add("ec-mini-grid-months"),this.#fh.clear();for(var e=this.#Ul.locale$.getValue().language,t=new Intl.DateTimeFormat(e,{month:"short"}),r=new Intl.DateTimeFormat(e,{month:"long",year:"numeric"}),i=this.#Ul.currentDate$.getValue(),s=this.#wd===i.getFullYear(),n=0;n<4;n++){var a=document.createElement("div");a.classList.add("ec-mini-row"),a.setAttribute("role","row");for(var o=0;o<3;o++){var l=3*n+o,h=document.createElement("button");h.classList.add("ec-mini-month");var d=new Date(this.#wd,l,1);h.textContent=t.format(d),h.setAttribute("aria-label",r.format(d)),s&&l===i.getMonth()&&(h.classList.add("ec-mini-selected"),h.setAttribute("aria-current","date")),h.addEventListener("click",(e=>()=>this.#zd(e))(l)),a.appendChild(h)}this.#jl.appendChild(a)}}#Pd(){for(var e of this.#fh.values())e.classList.remove("ec-mini-selected"),e.removeAttribute("aria-pressed");for(var t of this.#Sd)t.classList.remove("ec-mini-week-selected");var r=this.#Ul.currentDate$.getValue();switch(this.#Ul.viewMode$.getValue()){case"day":var i=this.#Bd(r),s=this.#fh.get(i);s&&(s.classList.add("ec-mini-selected"),s.setAttribute("aria-pressed","true"));break;case"week":var n=this.#Od(r),a=this.#Bd(n);for(var t of this.#Sd){var o=t.firstElementChild;if(o&&o.dataset.date===a){t.classList.add("ec-mini-week-selected");break}}}}#Ad(){if(!this.#Cd){for(var e of this.#fh.values())e.classList.remove("ec-mini-has-events");var t=this.#Nd(),r=this.#Ul.data.getEntries(t),i=new Set;for(var s of r){var n=new Date(s.startTime);n.setHours(0,0,0,0);for(var a=new Date(s.endTime),o=new Date(n);o<a;)i.add(this.#Bd(o)),o.setDate(o.getDate()+1)}for(var l of i){var h=this.#fh.get(l);h&&h.classList.add("ec-mini-has-events")}}}#Md(){this.#Cd?this.#wd--:(this.#Td--,this.#Td<0&&(this.#Td=11,this.#wd--)),this.render()}#Id(){this.#Cd?this.#wd++:(this.#Td++,this.#Td>11&&(this.#Td=0,this.#wd++)),this.render()}#Ld(){this.#Cd=!this.#Cd,this.render()}#Fd(e){this.#Ul.currentDate$.next(e)}#zd(e){this.#Td=e,this.#Cd=!1,this.render()}#Vd(e,t,r){var i=new Date(e,t,1).getDay();return new Date(e,t,1-(i-r+7)%7)}#Nd(){var e=this.#Ul.firstDayOfWeek$.getValue(),t=this.#Vd(this.#wd,this.#Td,e),r=new Date(t);return r.setDate(t.getDate()+42),{start:t,end:r}}#Od(e){var t=this.#Ul.firstDayOfWeek$.getValue(),r=new Date(e);r.setHours(0,0,0,0);var i=(r.getDay()-t+7)%7;return r.setDate(r.getDate()-i),r}#Bd(e){var t=e.getFullYear(),r=e.getMonth()+1,i=e.getDate();return t+"-"+(r<10?"0":"")+r+"-"+(i<10?"0":"")+i}}class go{#Ul;#nr;#T=new r;#mh;#Wd;#Ud;constructor(e,t){this.#Ul=e,this.#nr=document.createElement("div"),this.#nr.classList.add("ec-calendar-list"),t.appendChild(this.#nr),this.#wh(),this.#x(),this.render()}render(){this.#Ch(),this.#jd()}destroy(){this.#T.unsubscribe(),this.#nr.remove()}#wh(){this.#mh=document.createElement("div"),this.#mh.classList.add("ec-calendar-list-header"),this.#nr.appendChild(this.#mh),this.#Wd=document.createElement("div"),this.#Wd.classList.add("ec-calendar-list-items"),this.#Wd.setAttribute("role","list"),this.#nr.appendChild(this.#Wd),this.#Ud=document.createElement("button"),this.#Ud.classList.add("ec-calendar-list-add"),this.#Ud.addEventListener("click",()=>{this.#Ul.calendarAddRequested$.next()}),this.#nr.appendChild(this.#Ud)}#x(){this.#T.add(this.#Ul.data.calendarAdded$.subscribe(()=>this.render())),this.#T.add(this.#Ul.data.calendarRemoved$.subscribe(()=>this.render())),this.#T.add(this.#Ul.data.calendarChanged$.subscribe(()=>this.render())),this.#T.add(this.#Ul.data.calendarVisibilityChanged$.subscribe(()=>this.#Xd())),this.#T.add(this.#Ul.locale$.subscribe(()=>this.render())),this.#T.add(this.#Ul.theme$.subscribe(()=>this.render()))}#Ch(){var e=this.#Ul.locale$.getValue().calendar;this.#mh.textContent=e?.myCalendars??"My Calendars"}#jd(){this.#Wd.innerHTML="";for(var e=this.#Ul.data,t=0;t<e.calendarsLength;t++){var r=e.getCalendar(t);this.#Wd.appendChild(this.#Yd(r))}var i=this.#Ul.locale$.getValue().calendar;this.#Ud.textContent="+ "+(i?.addCalendar??"Add calendar")}#Yd(e){var t=this.#Ul.locale$.getValue().calendar,r=e.name||e.id,i=document.createElement("div");i.classList.add("ec-calendar-list-item"),i.setAttribute("role","listitem"),i.dataset.calendarId=e.id;var s=document.createElement("button");s.classList.add("ec-calendar-list-checkbox"),s.type="button",s.setAttribute("role","checkbox"),s.setAttribute("aria-checked",String(e.isVisible)),s.setAttribute("aria-label",t?.ariaToggleCalendar?t.ariaToggleCalendar(r):`Show or hide ${r}`),this.#Kd(s,e),s.addEventListener("click",()=>{e.isVisible=!e.isVisible}),i.appendChild(s);var n=document.createElement("span");if(n.classList.add("ec-calendar-list-name"),n.textContent=r,i.appendChild(n),!e.isDefault){var a=document.createElement("button");a.classList.add("ec-calendar-list-remove"),a.type="button",a.textContent="×",a.setAttribute("aria-label",t?.ariaRemoveCalendar?t.ariaRemoveCalendar(r):`Remove ${r}`),a.addEventListener("click",t=>{t.stopPropagation(),this.#Zd(e)}),i.appendChild(a)}return i}#Kd(e,t){var r=this.#Ul.theme$.getValue().content.entryColors,i=Xr(t.color,r).color1;e.setAttribute("aria-checked",String(t.isVisible)),t.isVisible?(e.style.backgroundColor=i,e.style.borderColor=i,e.classList.add("ec-checked"),e.classList.remove("ec-unchecked")):(e.style.backgroundColor="transparent",e.style.borderColor=i,e.classList.remove("ec-checked"),e.classList.add("ec-unchecked"))}#Xd(){for(var e=this.#Ul.data,t=this.#Wd.querySelectorAll(".ec-calendar-list-item"),r=0;r<t.length;r++){var i=t[r],s=i.dataset.calendarId;if(s){var n=e.getCalendarById(s);if(n){var a=i.querySelector(".ec-calendar-list-checkbox");a&&this.#Kd(a,n)}}}}#Zd(e){var t={calendar:e,cancel:!1};this.#Ul.calendarRemoving$.next(t),t.cancel||this.#Ul.data.removeCalendar(e)}}class mo{#Ul;#La=null;constructor(e){this.#Ul=e}async copy(e){if(0!==e.length){this.#La=this.#Ia(e);var t=this.#Pa(e);try{await navigator.clipboard.writeText(t)}catch{}}}async cut(e){for(var t of(await this.copy(e),e))this.#Ul.data.removeItem(t.item);this.#Ul.selectedEntries$.next([])}async paste(e){return this.#La?this.#Aa(this.#La,e):null}#Ia(e){var t=new Set,r=[];for(var i of e){var s=i.item;t.has(s.id)||(t.add(s.id),r.push(s.toAny()))}return{items:r}}#Aa(e,t){var r=[],i=null;for(var s of e.items){if(s.startTime){i=new Date(s.startTime);break}if(s.endTime){i=new Date(s.endTime);break}}var n=i?t.getTime()-i.getTime():0;for(var s of e.items){var a=JSON.parse(JSON.stringify(s));if(a.id=er(12),a.startTime){var o=new Date(new Date(a.startTime).getTime()+n);a.startTime=o.toISOString()}if(a.endTime){var l=new Date(new Date(a.endTime).getTime()+n);a.endTime=l.toISOString()}a.recurrenceExceptions=[];var h=a.calendarId;if(h&&!this.#Ul.data.getCalendarById(h)){var d=this.#Ul.data.defaultCalendar;a.calendarId=d?d.id:null}var c=Da(a);this.#Ul.data.addItem(c),r.push(c)}return{items:r}}#Pa(e){var t=[],r=new Set;for(var i of e)if(!r.has(i.item.id)){r.add(i.item.id);var s=i.title??"",n=i.startTime?qt(i.startTime):"",a=i.endTime?qt(i.endTime):"",o=i.location??"";t.push([s,n,a,o].join("\t"))}return t.join("\n")}}class po{#Ul;#Gd;#qd=null;#_d=null;#Jd=null;#T=new r;constructor(e,t){this.#Ul=e,this.#Gd=t,this.#Gd.addEventListener("mouseenter",this.#Qd,!0),this.#Gd.addEventListener("mouseleave",this.#Kt,!0),this.#T.add(e.entryMoving$.subscribe(()=>this.hide())),this.#T.add(e.entryResizing$.subscribe(()=>this.hide())),this.#T.add(e.entryCreating$.subscribe(()=>this.hide()))}hide(){if(this.#ec(),this.#Jd=null,this.#qd){var e=this.#Gd.querySelector('[aria-describedby="'+this.#qd.id+'"]');e&&e.removeAttribute("aria-describedby"),this.#qd.remove(),this.#qd=null}}destroy(){this.hide(),this.#T.unsubscribe(),this.#Gd.removeEventListener("mouseenter",this.#Qd,!0),this.#Gd.removeEventListener("mouseleave",this.#Kt,!0)}#ec(){null!==this.#_d&&(clearTimeout(this.#_d),this.#_d=null)}#Qd=e=>{if(!this.#Gd.closest?.(".ec-mobile")){var t=e.target,r=t.closest?.(".ec-entry");if(r){var i=r.dataset.entryId;if(i){var s=this.#tc(i);if(s&&(!this.#Jd||this.#Jd.id!==s.id)){this.hide(),this.#Jd=s;var n=s,a=r;this.#_d=setTimeout(()=>{this.#_d=null,this.#Jd?.id===n.id&&this.#rc(n,a)},350)}}}}};#Kt=e=>{var t=e.target,r=t.closest?.(".ec-entry");r&&this.hide()};async#rc(e,t){var r=this.#Ul.viewMode$.getValue(),i=await this.#ic(e,r);if(i&&this.#Jd?.id===e.id){var s=document.createElement("div");s.classList.add("ec-tooltip"),s.setAttribute("role","tooltip"),s.id="ec-tooltip-"+e.id;var n=document.createElement("div");if(n.classList.add("ec-tooltip-title"),n.textContent=i.title,s.appendChild(n),i.rows&&i.rows.length>0)for(var a of i.rows){var o=document.createElement("div");o.classList.add("ec-tooltip-row");var l=document.createElement("span");l.classList.add("ec-tooltip-label"),l.textContent=a.label;var h=document.createElement("span");h.classList.add("ec-tooltip-value"),h.textContent=a.value,o.appendChild(l),o.appendChild(h),s.appendChild(o)}this.#Gd.appendChild(s),this.#qd=s,t.setAttribute("aria-describedby",s.id),this.#sc(s,t)}}async#ic(e,t){var r=this.#Ul.entryTooltip$.getValue();if(r)return r({entry:e,viewMode:t});var i=e.title??"",s=[],n=this.#Ul.locale$.getValue().language;if(e.startTime&&e.endTime)if(e.isAllDay){var a=new Intl.DateTimeFormat(n,{dateStyle:"medium"});s.push({label:"",value:a.formatRange(e.startTime,e.endTime)})}else{var o=new Intl.DateTimeFormat(n,{dateStyle:"medium",timeStyle:"short"});s.push({label:"",value:o.formatRange(e.startTime,e.endTime)})}return e.location&&s.push({label:"",value:e.location}),{title:i,rows:s}}#sc(e,t){var r=this.#Gd.getBoundingClientRect(),i=t.getBoundingClientRect(),s=i.bottom-r.top+8,n=i.left-r.left,a=e.offsetWidth,o=e.offsetHeight;s+o>r.height&&(s=i.top-r.top-o-8),n+a>r.width&&(n=r.width-a-8),n<8&&(n=8),s<8&&(s=8),e.style.top=s+"px",e.style.left=n+"px"}#tc(e){var t,r=this.#Ul.viewMode$.getValue(),i=this.#Ul.currentDate$.getValue(),s=this.#Ul.firstDayOfWeek$.getValue();switch(r){case"day":(h=new Date(i)).setHours(0,0,0,0),(a=new Date(h)).setDate(a.getDate()+1),t={start:h,end:a};break;case"week":var n=(i.getDay()-s+7)%7;(h=new Date(i)).setDate(i.getDate()-n),h.setHours(0,0,0,0),(a=new Date(h)).setDate(h.getDate()+7),t={start:h,end:a};break;default:var a,o=i.getFullYear(),l=i.getMonth(),h=(n=(new Date(o,l,1).getDay()-s+7)%7,new Date(o,l,1-n));(a=new Date(h)).setDate(h.getDate()+42),t={start:h,end:a}}return this.#Ul.data.getEntries(t).find(t=>t.id===e)??null}}class vo{#Ul;#nc;constructor(e,t){this.#Ul=e,this.#nc=t}async exportToImage(e){var t;try{t=(await import("html2canvas")).default??await import("html2canvas")}catch{throw new Error("html2canvas is required for image export. Install it with: npm install html2canvas")}var r=e?.format??"png",i=e?.quality??.92,s=e?.scale??2,n=e?.includeSidebar??!1,a=this.#nc.querySelector(".ec-wrapper");if(!a)throw new Error("Calendar is not rendered");if(!n){var o=this.#nc.querySelector(".ec-main");o&&(a=o)}var l=await t(a,{scale:s,useCORS:!0,logging:!1,backgroundColor:null}),h="jpeg"===r?"image/jpeg":"image/png";return new Promise((e,t)=>{l.toBlob(r=>{r?e(r):t(new Error("Failed to export image"))},h,"jpeg"===r?i:void 0)})}}const fo={A4:[210,297],A3:[297,420],Letter:[215.9,279.4],Legal:[215.9,355.6]};class yo{#Ul;#ac;constructor(e,t){this.#Ul=e,this.#ac=new vo(e,t)}async exportToPdf(e){var t;try{t=await import("jspdf")}catch{throw new Error("jsPDF is required for PDF export. Install it with: npm install jspdf")}var r,i=e?.pageSize??"A4",s=e?.orientation??"landscape",n=e?.margin??{top:10,right:10,bottom:10,left:10},a=e?.scale??2,o=await this.#ac.exportToImage({format:"png",scale:a,includeSidebar:e?.includeSidebar??!1}),l=await(r=o,new Promise((e,t)=>{var i=new FileReader;i.onload=()=>e(i.result),i.onerror=t,i.readAsDataURL(r)})),[h,d]=fo[i]??fo.A4;"landscape"===s&&([h,d]=[d,h]);var c,u=h-n.left-n.right,g=d-n.top-n.bottom,m=e?.header?6:0,p=g-m-(e?.footer?6:0),v=await(c=l,new Promise((e,t)=>{var r=new Image;r.onload=()=>e(r),r.onerror=t,r.src=c})),f=v.width/v.height,y=u,b=y/f;b>p&&(y=(b=p)*f);var w=n.top+m,T=new t.jsPDF({orientation:s,format:i,unit:"mm"});if(T.addImage(l,"PNG",n.left,w,y,b),e?.header){var C="function"==typeof e.header?e.header(1,1):e.header;T.setFontSize(9),T.setTextColor(128),T.text(C,n.left,n.top+4)}if(e?.footer){var x="function"==typeof e.footer?e.footer(1,1):e.footer;T.setFontSize(9),T.setTextColor(128),T.text(x,n.left,d-n.bottom)}return T.output("blob")}}class bo{#go;constructor(e){this.#go=e}exportToIcs(e){var t=this.exportToIcsText(e);return new Blob([t],{type:"text/calendar;charset=utf-8"})}exportToIcsText(e){var t=e?.prodId??"-//TimelineKit//EventCalendar//EN",r=e?.includeCustomType??!0,i=e?.calendarIds??null,s=[];s.push("BEGIN:VCALENDAR"),s.push("VERSION:2.0"),s.push("PRODID:"+t),s.push("CALSCALE:GREGORIAN"),s.push("METHOD:PUBLISH");for(var n=[],a=0;a<this.#go.calendarsLength;a++){var o=this.#go.getCalendar(a);i&&!i.includes(o.id)||n.push(o)}1===n.length&&n[0].name&&s.push("X-WR-CALNAME:"+Eo(n[0].name));for(var l=[],h=0;h<this.#go.itemsLength;h++){var d=this.#go.getItem(h);(!i||d.calendarId&&i.includes(d.calendarId))&&l.push(d)}for(var d of l){var c=Co(d.type);s.push("BEGIN:"+c),s.push("UID:"+d.id),wo(s,d,r),d.recurrenceRule&&s.push("RRULE:"+d.recurrenceRule.toString());var u=d.recurrenceExceptions.filter(e=>e.isCancelled).map(e=>xo(e.originalStartTime));u.length>0&&s.push("EXDATE:"+u.join(",")),s.push("END:"+c);var g=d.recurrenceExceptions.filter(e=>!e.isCancelled&&e.overrides);for(var m of g)s.push("BEGIN:"+c),s.push("UID:"+d.id),s.push("RECURRENCE-ID:"+xo(m.originalStartTime)),To(s,d,m,r),s.push("END:"+c)}return s.push("END:VCALENDAR"),function(e){var t=[];for(var r of e)if(r.length<=75)t.push(r);else{t.push(r.substring(0,75));for(var i=r.substring(75);i.length>0;){var s=i.substring(0,74);t.push(" "+s),i=i.substring(74)}}return t}(s).join("\r\n")+"\r\n"}}function wo(e,t,r){t.startTime&&(t.isAllDay?e.push("DTSTART;VALUE=DATE:"+ko(t.startTime)):e.push("DTSTART:"+xo(t.startTime))),t.endTime&&(t.isAllDay?e.push("DTEND;VALUE=DATE:"+ko(t.endTime)):e.push("DTEND:"+xo(t.endTime))),t.title&&e.push("SUMMARY:"+Eo(t.title)),t.description&&e.push("DESCRIPTION:"+Eo(t.description)),t.location&&e.push("LOCATION:"+Eo(t.location)),"public"!==t.visibility&&e.push("CLASS:"+t.visibility.toUpperCase()),t instanceof ya&&(t.isCompleted?(e.push("STATUS:COMPLETED"),t.completedAt&&e.push("COMPLETED:"+xo(t.completedAt))):e.push("STATUS:NEEDS-ACTION"),t.priority>0&&e.push("PRIORITY:"+t.priority)),t instanceof va&&(t.organizer&&e.push("ORGANIZER:"+Eo(t.organizer)),"needsAction"!==t.responseStatus&&e.push("X-TIMELINEKIT-RESPONSE:"+function(e){switch(e){case"accepted":return"ACCEPTED";case"tentative":return"TENTATIVE";case"declined":return"DECLINED";case"needsAction":return"NEEDS-ACTION"}}(t.responseStatus))),t instanceof Ta&&(e.push("TRANSP:"+("free"===t.availabilityStatus?"TRANSPARENT":"OPAQUE")),e.push("X-TIMELINEKIT-AVAILABILITY:"+t.availabilityStatus.toUpperCase())),t.hasReminders&&(e.push("BEGIN:VALARM"),e.push("ACTION:DISPLAY"),e.push("DESCRIPTION:Reminder"),e.push("TRIGGER:-PT15M"),e.push("END:VALARM")),t.tags&&t.tags.length>0&&e.push("CATEGORIES:"+t.tags.map(Eo).join(",")),r&&e.push("X-TIMELINEKIT-TYPE:"+t.type),t.calendarId&&e.push("X-TIMELINEKIT-CALENDAR:"+t.calendarId),t.timeZone&&e.push("X-TIMELINEKIT-TIMEZONE:"+t.timeZone),e.push("DTSTAMP:"+xo(new Date))}function To(e,t,r,i){var s=r.overrides,n=s.startTime??t.startTime,a=s.endTime??t.endTime,o=s.isAllDay??t.isAllDay;n&&(o?e.push("DTSTART;VALUE=DATE:"+ko(n)):e.push("DTSTART:"+xo(n))),a&&(o?e.push("DTEND;VALUE=DATE:"+ko(a)):e.push("DTEND:"+xo(a)));var l=void 0!==s.title?s.title:t.title;l&&e.push("SUMMARY:"+Eo(l));var h=void 0!==s.description?s.description:t.description;h&&e.push("DESCRIPTION:"+Eo(h));var d=void 0!==s.location?s.location:t.location;d&&e.push("LOCATION:"+Eo(d)),i&&e.push("X-TIMELINEKIT-TYPE:"+t.type),e.push("DTSTAMP:"+xo(new Date))}function Co(e){return"task"===e?"VTODO":"VEVENT"}function xo(e){return`${e.getUTCFullYear()}${String(e.getUTCMonth()+1).padStart(2,"0")}${String(e.getUTCDate()).padStart(2,"0")}T${String(e.getUTCHours()).padStart(2,"0")}${String(e.getUTCMinutes()).padStart(2,"0")}${String(e.getUTCSeconds()).padStart(2,"0")}Z`}function ko(e){return`${e.getFullYear()}${String(e.getMonth()+1).padStart(2,"0")}${String(e.getDate()).padStart(2,"0")}`}function Eo(e){return e.replace(/\\/g,"\\\\").replace(/;/g,"\\;").replace(/,/g,"\\,").replace(/\n/g,"\\n")}class Do{importFromIcs(e,t){var r=t?.calendarId??null,i=t?.createCalendar??!0,s=t?.defaultType??"appointment",n=[],a=0,o=function(e){return e.replace(/\r?\n[ \t]/g,"")}(e),l=o.split(/\r?\n/).filter(e=>e.length>0),h=null;for(var d of l)d.startsWith("X-WR-CALNAME:")&&(h=Lo(d.substring(13)));var c=function(e){var t=[],r=0;for(;r<e.length;){var i=e[r];if("BEGIN:VEVENT"===i||"BEGIN:VTODO"===i){var s="BEGIN:VEVENT"===i?"VEVENT":"VTODO",n="END:"+s,a=new Map,o=!1,l=[],h=!1;for(r++;r<e.length&&e[r]!==n;)if("BEGIN:VALARM"!==e[r])if("END:VALARM"!==e[r])if(h)r++;else{var d=So(e[r]);if(d)if("EXDATE"===d.name){var c=d.pv.value.split(",").map(e=>Mo(e.trim()));l.push(...c.filter(e=>null!==e))}else a.set(d.name,d.pv);r++}else h=!1,r++;else h=!0,o=!0,r++;r++;var u=a.get("UID")?.value??"";if(!u)continue;var g=a.get("RECURRENCE-ID")?.value??null;t.push({type:s,uid:u,properties:a,recurrenceId:g,hasValarm:o,exdates:l})}else r++}return t}(l),u=new Map,g=[];for(var m of c)if(m.recurrenceId)g.push(m);else try{var p=$o(m,r,s);u.set(m.uid,p)}catch(e){n.push(`Skipped UID ${m.uid}: ${e.message}`),a++}for(var v of g){var f=u.get(v.uid);if(f)try{var y=Ro(v,f);f.setException(y)}catch(e){n.push(`Skipped exception for UID ${v.uid}: ${e.message}`),a++}else n.push(`Skipped exception for unknown UID ${v.uid}`),a++}var b=null;return i&&((b=new sa(null)).name=h??"Imported Calendar",b.isDefault=!0),{calendar:b,items:Array.from(u.values()),warnings:n,skippedCount:a}}}function So(e){var t=function(e){for(var t=!1,r=0;r<e.length;r++){var i=e[r];if('"'===i)t=!t;else if(":"===i&&!t)return r}return-1}(e);if(t<0)return null;for(var r=e.substring(0,t),i=e.substring(t+1),s=r.split(";"),n=s[0].toUpperCase(),a=new Map,o=1;o<s.length;o++){var l=s[o].indexOf("=");l>0&&a.set(s[o].substring(0,l).toUpperCase(),s[o].substring(l+1))}return{name:n,pv:{value:i,params:a}}}function $o(e,t,r){var i,s,n=e.properties,a=n.get("X-TIMELINEKIT-TYPE")?.value;i=a&&(s=a,Po.has(s))?a:"VTODO"===e.type?"task":function(e,t){return e.has("ORGANIZER")?"meeting":e.has("X-TIMELINEKIT-AVAILABILITY")?"availabilityBlock":t}(n,r);var o=function(e,t){switch(e){case"meeting":return new va(t);case"appointment":return new fa(t);case"task":return new ya(t);case"deadline":return new ba(t);case"holiday":return new wa(t);case"availabilityBlock":return new Ta(t);case"birthday":return new Ca(t);case"reminder":return new xa(t);case"resourceBooking":return new ka(t)}}(i,e.uid),l=t??n.get("X-TIMELINEKIT-CALENDAR")?.value??null;o.calendarId=l;var h=n.get("DTSTART"),d=n.get("DTEND"),c="DATE"===h?.params.get("VALUE");h&&(o.startTime=Mo(h.value,h.params.get("TZID"))),d&&(o.endTime=Mo(d.value,d.params.get("TZID"))),o.isAllDay=c;var u=h?.params.get("TZID")??n.get("X-TIMELINEKIT-TIMEZONE")?.value??null;u&&(o.timeZone=u);var g=n.get("SUMMARY");g&&(o.title=Lo(g.value));var m=n.get("DESCRIPTION");m&&(o.description=Lo(m.value));var p=n.get("LOCATION");p&&(o.location=Lo(p.value));var v=n.get("CLASS");if(v){var f=v.value.toLowerCase();"private"!==f&&"confidential"!==f||(o.visibility=f)}var y=n.get("CATEGORIES");y&&(o.tags=y.value.split(",").map(e=>Lo(e.trim())));var b=n.get("RRULE");for(var w of(b&&(o.recurrenceRule=aa.fromString(b.value)),e.exdates))o.cancelOccurrence(w);if(e.hasValarm&&(o.hasReminders=!0),o instanceof ya){var T=n.get("STATUS");"COMPLETED"===T?.value&&(o.isCompleted=!0);var C=n.get("COMPLETED");C&&(o.completedAt=Mo(C.value));var x=n.get("PRIORITY");x&&(o.priority=parseInt(x.value,10)||0)}if(o instanceof va){var k=n.get("ORGANIZER");k&&(o.organizer=Lo(k.value));var E=n.get("X-TIMELINEKIT-RESPONSE");E&&(o.responseStatus=function(e){switch(e.toUpperCase()){case"ACCEPTED":return"accepted";case"TENTATIVE":return"tentative";case"DECLINED":return"declined";default:return"needsAction"}}(E.value))}if(o instanceof Ta){var D=n.get("X-TIMELINEKIT-AVAILABILITY");D&&(o.availabilityStatus=D.value.toLowerCase())}return o.externalSource="ical",o}function Ro(e,t){var r=e.properties,i=Mo(e.recurrenceId);if(!i)throw new Error("Invalid RECURRENCE-ID");var s={},n=r.get("DTSTART");n&&(s.startTime=Mo(n.value,n.params.get("TZID"))??void 0);var a=r.get("DTEND");a&&(s.endTime=Mo(a.value,a.params.get("TZID"))??void 0);var o=r.get("SUMMARY");if(o){var l=Lo(o.value);l!==t.title&&(s.title=l)}var h=r.get("DESCRIPTION");if(h){var d=Lo(h.value);d!==t.description&&(s.description=d)}var c=r.get("LOCATION");if(c){var u=Lo(c.value);u!==t.location&&(s.location=u)}var g="DATE"===n?.params.get("VALUE");return g!==t.isAllDay&&(s.isAllDay=g),{originalStartTime:i,isCancelled:!1,overrides:s}}function Mo(e,t){if(!e)return null;var r=e.match(/^(\d{4})(\d{2})(\d{2})$/);if(r)return new Date(parseInt(r[1]),parseInt(r[2])-1,parseInt(r[3]));var i=e.match(/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(Z)?$/);if(i){var s=parseInt(i[1]),n=parseInt(i[2])-1,a=parseInt(i[3]),o=parseInt(i[4]),l=parseInt(i[5]),h=parseInt(i[6]);return"Z"===i[7]?new Date(Date.UTC(s,n,a,o,l,h)):new Date(s,n,a,o,l,h)}return null}function Lo(e){return e.replace(/\\n/gi,"\n").replace(/\\,/g,",").replace(/\\;/g,";").replace(/\\\\/g,"\\")}var Io,Po=new Set(["meeting","appointment","task","deadline","holiday","availabilityBlock","birthday","reminder","resourceBooking"]);class Ao{#wt;constructor(e){this.#wt=e}exportToCsv(e){var t=e?.delimiter??",",r=e?.includeHeaders??!0,i=e?.includeCalendars??!1,s=this.#wt.locale$.getValue(),n=[];r&&n.push(Es(["Calendar",s.columns.name,s.labels.type,s.labels.start,s.labels.end,s.calendar.allDay,"Location","Description"],t));var a=this.#oc(e?.calendarIds);for(var o of a)n.push(Es([this.#lc(o.calendarId),o.title??"",o.type,this.#yo(o.startTime),this.#yo(o.endTime),o.isAllDay?"Yes":"No",o.location??"",o.description??""],t));var l=n.join("\n");if(i){l+="\n\n",r&&(l+=Es([s.columns.name],t)+"\n");for(var h=0;h<this.#wt.data.calendarsLength;h++){l+=Es([this.#wt.data.getCalendar(h).name],t)+"\n"}}return l}async exportToExcel(e){var t=await $s(),r=this.#wt.locale$.getValue(),i=e?.eventsSheetName??r.export.eventsSheetName,s=e?.includeCalendarsSheet??!0,n=e?.includeFormatting??!0,a=new t.Workbook;return this.#bo(a,i,n,e?.calendarIds),s&&this.#wt.data.calendarsLength>0&&this.#hc(a,n),Rs(a)}#bo(e,t,r,i){var s=this.#wt.locale$.getValue(),n=e.addWorksheet(t);n.columns=[{header:"Calendar",key:"calendar",width:20},{header:s.columns.name,key:"title",width:30},{header:s.labels.type,key:"type",width:15},{header:s.labels.start,key:"start",width:20},{header:s.labels.end,key:"end",width:20},{header:s.calendar.allDay,key:"allDay",width:10},{header:"Location",key:"location",width:20},{header:"Description",key:"description",width:30}],r&&Ds(n);var a=this.#oc(i);for(var o of a)n.addRow({calendar:this.#lc(o.calendarId),title:o.title??"",type:o.type,start:this.#yo(o.startTime),end:this.#yo(o.endTime),allDay:o.isAllDay?"Yes":"No",location:o.location??"",description:o.description??""});r&&Ss(n)}#hc(e,t){var r=this.#wt.locale$.getValue(),i=e.addWorksheet(r.export.calendarsSheetName);i.columns=[{header:r.columns.name,key:"name",width:25}],t&&Ds(i);for(var s=0;s<this.#wt.data.calendarsLength;s++){var n=this.#wt.data.getCalendar(s);i.addRow({name:n.name})}t&&Ss(i)}#oc(e){for(var t=[],r=0;r<this.#wt.data.itemsLength;r++){var i=this.#wt.data.getItem(r);e&&i.calendarId&&!e.includes(i.calendarId)||t.push(i)}return t.sort((e,t)=>(e.startTime?.getTime()??0)-(t.startTime?.getTime()??0)),t}#lc(e){if(!e)return"";var t=this.#wt.data.getCalendarById(e);return t?.name??""}#yo(e){return e?Zt(e,this.#wt.locale$.getValue().language,{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):""}}class Ho{#nr;#dc;#cc;#Gl=-1;#uc=0;#gc=0;#l=0;#mc=!1;#pc;#vc=null;#fc=null;#yc=null;static SWIPE_THRESHOLD=50;static MAX_VERTICAL_RATIO=.5;static MAX_DURATION=500;static PEEK_MAX=30;constructor(e,t,r){this.#nr=e,this.#dc=t,this.#cc=r,this.#pc=e=>this.#bc(e),e.addEventListener("pointerdown",this.#pc)}destroy(){this.#nr.removeEventListener("pointerdown",this.#pc),this.#th(),this.#nr.style.transform="",this.#nr.classList.remove("ec-swipe-transition")}#bc(e){"touch"===e.pointerType&&(this.#Gl>=0||(this.#Gl=e.pointerId,this.#uc=e.clientX,this.#gc=e.clientY,this.#l=Date.now(),this.#mc=!1,this.#vc=e=>this.#sh(e),this.#fc=e=>this.#nh(e),this.#yc=e=>this.#ah(e),document.addEventListener("pointermove",this.#vc),document.addEventListener("pointerup",this.#fc),document.addEventListener("pointercancel",this.#yc)))}#sh(e){if(e.pointerId===this.#Gl&&!this.#mc){var t=e.clientX-this.#uc,r=e.clientY-this.#gc;if(Math.abs(r)>2*Math.abs(t)&&Math.abs(r)>10)this.#wc();else{var i=Math.sign(t)*Math.min(.3*Math.abs(t),Io.PEEK_MAX);this.#nr.style.transform="translateX("+i+"px)"}}}#nh(e){if(e.pointerId===this.#Gl)if(this.#th(),this.#mc)this.#uh();else if(this.#Tc(),document.body.classList.contains("ec-dragging"))this.#uh();else{var t=e.clientX-this.#uc,r=e.clientY-this.#gc,i=Date.now()-this.#l,s=Math.abs(t),n=Math.abs(r);s>=Io.SWIPE_THRESHOLD&&n<=s*Io.MAX_VERTICAL_RATIO&&i<=Io.MAX_DURATION&&(t<0?this.#dc():this.#cc()),this.#uh()}}#ah(e){e.pointerId===this.#Gl&&this.#wc()}#wc(){this.#th(),this.#mc=!0,this.#Tc(),this.#uh()}#Tc(){this.#nr.style.transform&&(this.#nr.classList.add("ec-swipe-transition"),this.#nr.style.transform="",setTimeout(()=>{this.#nr.classList.remove("ec-swipe-transition")},200))}#uh(){this.#Gl=-1}#th(){this.#vc&&(document.removeEventListener("pointermove",this.#vc),this.#vc=null),this.#fc&&(document.removeEventListener("pointerup",this.#fc),this.#fc=null),this.#yc&&(document.removeEventListener("pointercancel",this.#yc),this.#yc=null)}}Io=Ho;class Vo{#Ul;#nc;#jn;#Cc;#xc;#kc;#Ec;#Dc;#Sc;#$c;#Rc;#Mc;#Lc;#Ic;#Ga;#Ka;#Za;#Br;#ac;#Pc;#Ac;#Hc;#T=new r;#Vc=null;#Bc=null;#_n=null;#Fc=!1;#zc=null;#Oc=null;#Nc=768;#Wc;constructor(e){this.#Ul=new ja,this.#nc=e,e.classList.add("ec-host"),this.#jn=document.createElement("div"),this.#jn.classList.add("ec-wrapper"),this.#jn.style.visibility="hidden",this.#jn.tabIndex=0,this.#jn.setAttribute("role","application"),e.appendChild(this.#jn),this.#Cc=document.createElement("div"),this.#Cc.classList.add("ec-sidebar"),this.#Cc.setAttribute("role","complementary"),this.#jn.appendChild(this.#Cc),this.#xc=document.createElement("div"),this.#xc.classList.add("ec-main"),this.#xc.setAttribute("role","main"),this.#jn.appendChild(this.#xc),this.#kc=document.createElement("div"),this.#kc.classList.add("ec-toolbar"),this.#kc.setAttribute("role","toolbar"),this.#xc.appendChild(this.#kc),this.#Ec=document.createElement("div"),this.#Ec.classList.add("ec-view-container"),this.#Ec.setAttribute("role","region"),this.#xc.appendChild(this.#Ec),this.#Uc(),this.#Dc=new uo(this.#Ul,this.#Cc),this.#Sc=new go(this.#Ul,this.#Cc),this.#$c=new ro(this.#Ul,this.#Ec),this.#Rc=new lo(this.#Ul,this.#Ec),this.#Mc=new ho(this.#Ul,this.#Ec),this.#Lc=new co(this.#Ul,this.#Ec),this.#Ic=this.#Rc,this.#Ga=new Xa(this.#Ul),this.#Za=new mo(this.#Ul),this.#Br=new po(this.#Ul,this.#Ec),this.#ac=new vo(this.#Ul,this.#nc),this.#Pc=new yo(this.#Ul,this.#nc),this.#Ac=new bo(this.#Ul.data),this.#Hc=new Do,this.#T.add(this.#Ul.theme$.subscribe(()=>{this.#Wa(),this.#Na()})),this.#Wa(),this.#Na(),this.#T.add(this.#Ul.viewMode$.subscribe(e=>{this.#jc(e),this.#Xc(),this.#Yc()})),this.#T.add(this.#Ul.sidebarVisible$.subscribe(e=>{this.#Fc?e?this.#Kc():this.#Zc():this.#Cc.style.display=e?"":"none"})),this.#T.add(this.#Ul.currentDate$.subscribe(()=>{this.#Yc()})),this.#T.add(this.#Ul.locale$.subscribe(()=>{this.#Yc(),this.#Uc()})),this.#Ka=new Fs(()=>this.save(),e=>this.#Gc(e)),this.#T.add(this.#Ul.data.itemAdded$.subscribe(()=>this.#Ka.requestSnapshot())),this.#T.add(this.#Ul.data.itemChanged$.subscribe(()=>this.#Ka.requestSnapshot())),this.#T.add(this.#Ul.data.itemRemoved$.subscribe(()=>this.#Ka.requestSnapshot())),this.#T.add(this.#Ul.data.calendarAdded$.subscribe(()=>this.#Ka.requestSnapshot())),this.#T.add(this.#Ul.data.calendarChanged$.subscribe(()=>this.#Ka.requestSnapshot())),this.#T.add(this.#Ul.data.calendarRemoved$.subscribe(()=>this.#Ka.requestSnapshot())),this.#Ka.initialize(),this.#T.add(this.#Ul.data.itemRemoved$.subscribe(e=>{var t=this.#Ul.selectedEntries$.getValue(),r=t.filter(t=>t.item.id!==e.item.id);r.length!==t.length&&this.#Ul.selectedEntries$.next(r)})),this.#jn.addEventListener("keydown",e=>this.#Ua(e),!0),this.#qc(),this.#T.add(Vt().licenseChanged$.subscribe(()=>this.#qc())),this.#T.add(this.#Ul.theme$.subscribe(()=>this.#qc())),this.#_n=new ResizeObserver(e=>{var t=e[0].contentRect.width;this.#_c(t<this.#Nc)}),this.#_n.observe(this.#jn),this.#Wc=new Ho(this.#Ec,()=>this.next(),()=>this.previous()),this.#jc(this.#Ul.viewMode$.getValue()),this.#jn.style.visibility=""}get data(){return this.#Ul.data}get events(){return this.#Ga}get settings(){return this.#Ul.settings}get viewMode(){return this.#Ul.viewMode$.getValue()}set viewMode(e){this.#Ul.viewMode$.next(e)}get currentDate(){return this.#Ul.currentDate$.getValue()}set currentDate(e){this.#Ul.currentDate$.next(e)}get selectedEntries(){return this.#Ul.selectedEntries$.getValue()}set selectedEntries(e){this.#Ul.selectedEntries$.next(e)}get selectedEntry(){var e=this.#Ul.selectedEntries$.getValue();return e.length>0?e[e.length-1]:null}set selectedEntry(e){this.#Ul.selectedEntries$.next(e?[e]:[])}get canEdit(){return this.#Ul.canEdit$.getValue()}set canEdit(e){this.#Ul.canEdit$.next(e)}get sidebarVisible(){return this.#Ul.sidebarVisible$.getValue()}set sidebarVisible(e){this.#Ul.sidebarVisible$.next(e)}get entryRendering(){return this.#Ul.entryRendering$.getValue()}set entryRendering(e){this.#Ul.entryRendering$.next(e)}get entryTooltip(){return this.#Ul.entryTooltip$.getValue()}set entryTooltip(e){this.#Ul.entryTooltip$.next(e)}async copyEntries(e){await this.#Za.copy(e??this.selectedEntries)}async cutEntries(e){this.#Ka.beginBatch(),await this.#Za.cut(e??this.selectedEntries),this.#Ka.endBatch()}async pasteEntries(){this.#Ka.beginBatch(),await this.#Za.paste(this.currentDate),this.#Ka.endBatch()}async exportToImage(e){return this.#ac.exportToImage(e)}async exportToPdf(e){return this.#Pc.exportToPdf(e)}exportToIcs(e){return this.#Ac.exportToIcs(e)}exportToIcsText(e){return this.#Ac.exportToIcsText(e)}importFromIcs(e,t){if(!e||"string"!=typeof e)throw new Error("importFromIcs() requires a non-empty string argument.");if(!e.includes("BEGIN:VCALENDAR"))throw new Error("Invalid iCalendar format: missing BEGIN:VCALENDAR.");return this.#Hc.importFromIcs(e,t)}exportToCsv(e){return new Ao(this.#Ul).exportToCsv(e)}async exportToExcel(e){return new Ao(this.#Ul).exportToExcel(e)}static async checkExportDependencies(){var e={html2canvas:!1,jspdf:!1,exceljs:!1};try{await import("html2canvas"),e.html2canvas=!0}catch{}try{await import("jspdf"),e.jspdf=!0}catch{}try{await import("exceljs"),e.exceljs=!0}catch{}return e}today(){this.#Ul.currentDate$.next(Bt())}next(){var e=new Date(this.currentDate);switch(this.viewMode){case"month":e.setMonth(e.getMonth()+1);break;case"week":e.setDate(e.getDate()+7);break;case"day":e.setDate(e.getDate()+1);break;case"agenda":e.setDate(e.getDate()+this.#Ul.agendaDays$.getValue())}this.#Ul.currentDate$.next(e)}previous(){var e=new Date(this.currentDate);switch(this.viewMode){case"month":e.setMonth(e.getMonth()-1);break;case"week":e.setDate(e.getDate()-7);break;case"day":e.setDate(e.getDate()-1);break;case"agenda":e.setDate(e.getDate()-this.#Ul.agendaDays$.getValue())}this.#Ul.currentDate$.next(e)}goToDate(e){this.#Ul.currentDate$.next(e)}undo(){this.#Ka.undo(),this.#Ga.undone$.next()}redo(){this.#Ka.redo(),this.#Ga.redone$.next()}get canUndo$(){return this.#Ka.canUndo$}get canRedo$(){return this.#Ka.canRedo$}save(){for(var e={calendars:[],items:[],currentDate:this.currentDate.toISOString(),viewMode:this.viewMode},t=0;t<this.#Ul.data.calendarsLength;t++)e.calendars.push(this.#Ul.data.getCalendar(t).toAny());for(var r=0;r<this.#Ul.data.itemsLength;r++)e.items.push(this.#Ul.data.getItem(r).toAny());return JSON.stringify(e)}load(e){if(!e||"string"!=typeof e)throw new Error("load() requires a non-empty JSON string.");try{this.#Gc(e)}catch(e){throw new Error(`Failed to load calendar state: ${e.message}`)}this.#Ka.initialize()}destroy(){this.#Wc.destroy(),this.#_n?.disconnect(),this.#T.unsubscribe(),this.#Ga.destroy(),this.#Br.destroy(),this.#Dc.destroy(),this.#Sc.destroy(),this.#$c.destroy(),this.#Rc.destroy(),this.#Mc.destroy(),this.#Lc.destroy(),this.#Jc(),this.#Qc(),this.#jn.remove(),this.#nc.classList.remove("ec-host")}#jc(e){switch(this.#$c.hide(),this.#Rc.hide(),this.#Mc.hide(),this.#Lc.hide(),e){case"month":this.#Ic=this.#$c;break;case"week":this.#Ic=this.#Rc;break;case"day":this.#Ic=this.#Mc;break;case"agenda":this.#Ic=this.#Lc}this.#Ic.show()}#eu=null;#tu=new Map;#ru=null;#iu=null;#Uc(){this.#kc.innerHTML="",this.#tu.clear();var e=this.#Ul.locale$.getValue().calendar;this.#jn.setAttribute("aria-label",e?.ariaCalendar??"Event Calendar"),this.#Cc.setAttribute("aria-label",e?.ariaSidebar??"Calendar sidebar"),this.#kc.setAttribute("aria-label",e?.ariaNavigation??"Navigation"),this.#zc=document.createElement("button"),this.#zc.classList.add("ec-toolbar-btn","ec-toolbar-sidebar-toggle"),this.#zc.innerHTML="☰",this.#zc.setAttribute("aria-label",e?.ariaSidebar??"Calendar sidebar"),this.#zc.addEventListener("click",()=>this.#su()),this.#kc.appendChild(this.#zc);var t=document.createElement("div");t.classList.add("ec-toolbar-nav"),t.setAttribute("role","group"),t.setAttribute("aria-label",e?.ariaNavigation??"Navigation");var r=document.createElement("button");r.classList.add("ec-toolbar-btn","ec-toolbar-nav-btn"),r.textContent="‹",r.addEventListener("click",()=>this.previous()),this.#ru=r,t.appendChild(r);var i=document.createElement("button");i.classList.add("ec-toolbar-btn","ec-toolbar-today"),i.textContent=e?.today??"Today",i.setAttribute("aria-label",e?.ariaGoToToday??"Go to today"),i.addEventListener("click",()=>this.today()),t.appendChild(i);var s=document.createElement("button");s.classList.add("ec-toolbar-btn","ec-toolbar-nav-btn"),s.textContent="›",s.addEventListener("click",()=>this.next()),this.#iu=s,t.appendChild(s),this.#eu=document.createElement("div"),this.#eu.classList.add("ec-toolbar-title"),this.#eu.setAttribute("aria-live","polite"),this.#eu.setAttribute("aria-atomic","true"),this.#kc.appendChild(this.#eu),this.#Yc(),this.#kc.appendChild(t);var n=document.createElement("div");n.classList.add("ec-toolbar-views"),n.setAttribute("role","group"),n.setAttribute("aria-label",e?.ariaViewMode??"View mode");var a=[{mode:"month",label:e?.month??"Month"},{mode:"week",label:e?.week??"Week"},{mode:"day",label:e?.day??"Day"},{mode:"agenda",label:e?.agenda??"Agenda"}];for(var o of a){var l=document.createElement("button");l.classList.add("ec-toolbar-btn","ec-toolbar-view-btn"),l.textContent=o.label,l.dataset.viewMode=o.mode,l.addEventListener("click",e=>{var t=e.currentTarget;this.viewMode=t.dataset.viewMode}),this.#tu.set(o.mode,l),n.appendChild(l)}this.#kc.appendChild(n),this.#Xc(),this.#nu()}#Yc(){if(this.#eu){var e=this.currentDate,t=this.#Ul.locale$.getValue().language,r=this.viewMode;if("day"===r){var i=new Intl.DateTimeFormat(t,{weekday:"long",year:"numeric",month:"long",day:"numeric"});this.#eu.textContent=i.format(e)}else if("week"===r&&this.#Ic){var s=this.#Ic.getVisibleRange(e);(n=new Date(s.end)).setDate(n.getDate()-1);i=new Intl.DateTimeFormat(t,{year:"numeric",month:"long",day:"numeric"});this.#eu.textContent=i.formatRange(s.start,n)}else if("agenda"===r&&this.#Ic){var n;s=this.#Ic.getVisibleRange(e);(n=new Date(s.end)).setDate(n.getDate()-1);i=new Intl.DateTimeFormat(t,{year:"numeric",month:"short",day:"numeric"});this.#eu.textContent=i.formatRange(s.start,n)}else{i=new Intl.DateTimeFormat(t,{year:"numeric",month:"long"});this.#eu.textContent=i.format(e)}}}#Xc(){var e=this.viewMode;for(var[t,r]of this.#tu){var i=t===e;r.classList.toggle("ec-active",i),r.setAttribute("aria-pressed",String(i))}this.#nu()}#nu(){var e=this.#Ul.locale$.getValue().calendar,t=e?.ariaPrevious??"Previous",r=e?.ariaNext??"Next",i="";switch(this.viewMode){case"month":i=e?.month??"Month";break;case"week":i=e?.week??"Week";break;case"day":i=e?.day??"Day";break;case"agenda":i=e?.agenda??"Agenda"}this.#ru&&this.#ru.setAttribute("aria-label",t+" "+i.toLowerCase()),this.#iu&&this.#iu.setAttribute("aria-label",r+" "+i.toLowerCase()),this.#Ec.setAttribute("aria-label",i)}#Wa(){var e=this.#Ul.theme$.getValue(),t=this.#jn.style;t.setProperty("--ec-toolbar-bg",e.toolbar.backgroundColor),t.setProperty("--ec-toolbar-text",e.toolbar.textColor),t.setProperty("--ec-toolbar-border",e.toolbar.borderColor),t.setProperty("--ec-toolbar-btn-color",e.toolbar.buttonColor),t.setProperty("--ec-toolbar-btn-hover-bg",e.toolbar.buttonHoverBackgroundColor),t.setProperty("--ec-toolbar-active-bg",e.toolbar.activeViewButtonBackgroundColor),t.setProperty("--ec-toolbar-active-text",e.toolbar.activeViewButtonTextColor),t.setProperty("--ec-toolbar-height",e.toolbar.height+"px"),t.setProperty("--ec-header-bg",e.header.backgroundColor),t.setProperty("--ec-header-text",e.header.textColor),t.setProperty("--ec-header-border",e.header.borderColor),t.setProperty("--ec-header-weekend-text",e.header.weekendTextColor),t.setProperty("--ec-tg-today-text",e.header.todayBackgroundColor),t.setProperty("--ec-tg-today-circle",e.header.todayBackgroundColor),t.setProperty("--ec-tg-today-circle-text",e.header.todayTextColor),t.setProperty("--ec-content-bg",e.content.backgroundColor),t.setProperty("--ec-content-text",e.content.textColor),t.setProperty("--ec-grid-line",e.content.gridLineColor),t.setProperty("--ec-today-bg",e.content.todayBackgroundColor),t.setProperty("--ec-weekend-bg",e.content.weekendBackgroundColor),t.setProperty("--ec-other-month-bg",e.content.otherMonthBackgroundColor),t.setProperty("--ec-other-month-text",e.content.otherMonthTextColor),t.setProperty("--ec-tg-slot-hour-border",e.content.hourLineColor),t.setProperty("--ec-tg-slot-border",e.content.halfHourLineColor),t.setProperty("--ec-tg-now-line",e.content.currentTimeLineColor),t.setProperty("--ec-tg-now-line-height",e.content.currentTimeLineHeight+"px"),t.setProperty("--ec-day-header-height",e.content.dayHeaderHeight+"px"),t.setProperty("--ec-entry-height",e.content.entryHeight+"px"),t.setProperty("--ec-entry-gap",e.content.entryGap+"px"),t.setProperty("--ec-entry-radius",e.content.entryBorderRadius+"px"),t.setProperty("--ec-entry-accent-width",e.content.entryAccentBorderWidth+"px"),t.setProperty("--ec-declined-opacity",String(e.content.declinedOpacity)),t.setProperty("--ec-more-text",e.content.moreTextColor),t.setProperty("--ec-hover-bg",e.content.hoverBackgroundColor),t.setProperty("--ec-selected-outline",e.content.selectedEntryOutlineColor),t.setProperty("--ec-drag-highlight",e.content.dragHighlightColor),t.setProperty("--ec-scrollbar-thumb",e.content.scrollbarThumbColor),t.setProperty("--ec-scrollbar-track",e.content.scrollbarTrackColor),t.setProperty("--ec-focus-outline",e.content.focusOutlineColor),t.setProperty("--ec-focus-outline-width",e.content.focusOutlineWidth+"px"),t.setProperty("--ec-focus-outline-offset",e.content.focusOutlineOffset+"px"),t.setProperty("--ec-agenda-day-header-bg",e.content.agendaDayHeaderBackgroundColor),t.setProperty("--ec-agenda-day-header-text",e.content.agendaDayHeaderTextColor),t.setProperty("--ec-agenda-entry-height",e.content.agendaEntryHeight+"px"),t.setProperty("--ec-agenda-entry-gap",e.content.agendaEntryGap+"px"),t.setProperty("--ec-agenda-entry-hover-bg",e.content.agendaEntryHoverBackgroundColor),t.setProperty("--ec-agenda-empty-text",e.content.agendaEmptyTextColor),t.setProperty("--ec-agenda-time-width",e.content.agendaTimeWidth+"px");var r=e.content.entryColors[0];r&&(t.setProperty("--ec-tg-entry-accent",r.color2),t.setProperty("--ec-entry-chip-bg",r.chipBackgroundColor),t.setProperty("--ec-entry-chip-text",r.chipTextColor)),t.setProperty("--ec-sidebar-bg",e.sidebar.backgroundColor),t.setProperty("--ec-sidebar-text",e.sidebar.textColor),t.setProperty("--ec-sidebar-border",e.sidebar.borderColor),t.setProperty("--ec-sidebar-width",e.sidebar.width+"px"),t.setProperty("--ec-allday-bg",e.allDay.backgroundColor),t.setProperty("--ec-allday-border",e.allDay.borderColor),t.setProperty("--ec-allday-text",e.allDay.textColor),t.setProperty("--ec-tg-allday-min-height",e.allDay.minHeight+"px"),t.setProperty("--ec-tg-allday-max-height",e.allDay.maxHeight+"px"),t.setProperty("--ec-tg-gutter-bg",e.timeGutter.backgroundColor),t.setProperty("--ec-tg-gutter-text",e.timeGutter.textColor),t.setProperty("--ec-tg-gutter-border",e.timeGutter.borderColor),t.setProperty("--ec-tg-gutter-width",e.timeGutter.width+"px"),t.setProperty("--ec-mini-today-bg",e.sidebar.miniCalendarTodayBackgroundColor),t.setProperty("--ec-mini-today-text",e.sidebar.miniCalendarTodayTextColor),t.setProperty("--ec-mini-today-dot",e.sidebar.miniCalendarTodayDotColor),t.setProperty("--ec-mini-selected-bg",e.sidebar.miniCalendarSelectedBackgroundColor),t.setProperty("--ec-mini-selected-text",e.sidebar.miniCalendarSelectedTextColor),t.setProperty("--ec-mini-other-month-text",e.sidebar.miniCalendarOtherMonthTextColor),t.setProperty("--ec-mini-weekend-text",e.sidebar.miniCalendarWeekendTextColor),t.setProperty("--ec-mini-hover-bg",e.sidebar.miniCalendarHoverBackgroundColor),t.setProperty("--ec-mini-dot-color",e.sidebar.miniCalendarDayWithEventsColor),t.setProperty("--ec-cal-list-header-text",e.sidebar.calendarListHeaderTextColor),this.#jn.setAttribute("data-color-scheme",e.colorScheme)}#Na(){var e=this.#Ul.theme$.getValue().font,t=e.name.indexOf(" ")>0?`"${e.name}"`:e.name;this.#jn.style.fontFamily=t,this.#jn.style.fontSize=e.size+"pt"}#_c(e){if(this.#Fc!==e)if(this.#Fc=e,this.#jn.classList.toggle("ec-mobile",e),e)"week"===this.viewMode&&(this.viewMode="day"),this.#Cc.style.display="",this.#Zc();else{this.#Zc();var t=this.#Ul.sidebarVisible$.getValue();this.#Cc.style.display=t?"":"none"}}#su(){this.#Cc.classList.contains("ec-sidebar-open")?this.#Zc():this.#Kc()}#Kc(){this.#Cc.classList.add("ec-sidebar-open"),this.#au()}#Zc(){this.#Cc.classList.remove("ec-sidebar-open"),this.#Jc()}#au(){if(!this.#Oc){var e=document.createElement("div");e.classList.add("ec-sidebar-backdrop"),e.addEventListener("click",()=>this.#Zc()),this.#jn.insertBefore(e,this.#xc),this.#Oc=e}}#Jc(){this.#Oc?.remove(),this.#Oc=null}#qc(){if(Vt().showWatermark){var e=this.#Ul.theme$.getValue().colorScheme;this.#Qc(),this.#Vc=function(e="light"){var t=document.createElement("div");t.className="tk-watermark",t.style.position="absolute",t.style.right="20px",t.style.bottom="20px",t.style.pointerEvents="none",t.style.zIndex="100";var r=t.attachShadow({mode:"closed"}),i=document.createElement("span");i.textContent=$i,i.style.fontFamily="sans-serif",i.style.fontSize="14px",i.style.fontWeight="bold",i.style.color="dark"===e?"#ffffff":"#000000",i.style.opacity=String(.12),r.appendChild(i);var s=new MutationObserver(function(){t.parentNode?r.contains(i)||r.appendChild(i):s.disconnect()});return s.observe(r,{childList:!0}),t}(e),this.#Ec.appendChild(this.#Vc),this.#Bc=new MutationObserver(()=>{this.#Vc&&!this.#Ec.contains(this.#Vc)&&this.#Ec.appendChild(this.#Vc)}),this.#Bc.observe(this.#Ec,{childList:!0})}else this.#Qc()}#Qc(){this.#Bc?.disconnect(),this.#Bc=null,this.#Vc?.remove(),this.#Vc=null}#Ua(e){if(e.ctrlKey||e.metaKey)switch(e.key){case"z":case"Z":return e.preventDefault(),void(e.shiftKey?this.redo():this.undo());case"y":return e.preventDefault(),void this.redo();case"c":return e.preventDefault(),void this.copyEntries();case"x":if(!this.canEdit)return;return e.preventDefault(),void this.cutEntries();case"v":if(!this.canEdit)return;return e.preventDefault(),void this.pasteEntries()}switch(e.key){case"Delete":this.#ou(),e.preventDefault();break;case"Escape":this.#Ul.selectedEntries$.getValue().length>0&&(this.#Ul.selectedEntries$.next([]),e.preventDefault())}}#ou(){var e=this.#Ul.selectedEntries$.getValue();if(0!==e.length&&this.canEdit){for(var t of e){var r=t.item,i=r.isRecurring,s={entry:t,isRecurring:i,scope:"all",cancel:!1};if(this.#Ul.entryDeleting$.next(s),!s.cancel)if(i)Sa.applyDelete(r,t,s.scope).removeMaster&&this.#Ul.data.removeItem(r);else this.#Ul.data.removeItem(r)}this.#Ul.selectedEntries$.next([])}}#Gc(e){var t=JSON.parse(e);if(this.#Ul.data.clear(),t.calendars)for(var r of t.calendars)this.#Ul.data.addCalendar(sa.fromAny(r));if(t.items)for(var i of t.items)this.#Ul.data.addItem(Da(i));t.viewMode&&this.#Ul.viewMode$.next(t.viewMode),t.currentDate&&this.#Ul.currentDate$.next(new Date(t.currentDate))}}class Bo extends Na{constructor(){super(),this.colorScheme="dark",this.toolbar.backgroundColor="#252526",this.toolbar.textColor="#d4d4d4",this.toolbar.borderColor="#3c3c3c",this.toolbar.buttonColor="#d4d4d4",this.toolbar.buttonHoverBackgroundColor="#3c3c3c",this.toolbar.activeViewButtonBackgroundColor="#264f78",this.toolbar.activeViewButtonTextColor="#7cc5ff",this.header.backgroundColor="#252526",this.header.textColor="#d4d4d4",this.header.borderColor="#3c3c3c",this.header.todayTextColor="#ffffff",this.header.todayBackgroundColor="#007acc",this.header.weekendTextColor="#999999",this.content.backgroundColor="#1e1e1e",this.content.textColor="#d4d4d4",this.content.gridLineColor="#343434",this.content.todayBackgroundColor="#1a2a3a",this.content.weekendBackgroundColor="#1a1a1a",this.content.otherMonthBackgroundColor="#181818",this.content.otherMonthTextColor="#555555",this.content.hourLineColor="#343434",this.content.halfHourLineColor="#2a2a2a",this.content.currentTimeLineColor="#f14c4c",this.content.moreTextColor="#999999",this.content.hoverBackgroundColor="rgba(255, 255, 255, 0.05)",this.content.selectedEntryOutlineColor="#007acc",this.content.focusOutlineColor="#7cc5ff",this.content.dragHighlightColor="rgba(0, 122, 204, 0.2)",this.content.scrollbarThumbColor="rgba(121, 121, 121, 0.4)",this.content.scrollbarTrackColor="transparent",this.content.agendaDayHeaderBackgroundColor="#2d2d2d",this.content.agendaDayHeaderTextColor="#d4d4d4",this.content.agendaEntryHoverBackgroundColor="rgba(255, 255, 255, 0.05)",this.content.agendaEmptyTextColor="#666666",this.content.entryColors=[Aa.create({color1:"#3d5a99",color2:"#6a9bf5",textColor:"#c8dcfa",chipBackgroundColor:"#253a5e",chipTextColor:"#8ab4f8"}),Aa.create({color1:"#6a3d8a",color2:"#b07de0",textColor:"#dcc8f0",chipBackgroundColor:"#3a2058",chipTextColor:"#c49de8"}),Aa.create({color1:"#2e7a48",color2:"#5cb878",textColor:"#c8ecd4",chipBackgroundColor:"#1a3a28",chipTextColor:"#81d498"}),Aa.create({color1:"#8a3060",color2:"#d06898",textColor:"#f0c8da",chipBackgroundColor:"#4a1830",chipTextColor:"#e48ab0"}),Aa.create({color1:"#8a5520",color2:"#d09040",textColor:"#f0dcc0",chipBackgroundColor:"#4a2e10",chipTextColor:"#e0a860"}),Aa.create({color1:"#286868",color2:"#50b0a8",textColor:"#c0e8e4",chipBackgroundColor:"#183838",chipTextColor:"#78cccc"}),Aa.create({color1:"#8a3030",color2:"#d06060",textColor:"#f0c8c8",chipBackgroundColor:"#4a1818",chipTextColor:"#e48888"}),Aa.create({color1:"#585858",color2:"#909090",textColor:"#d8d8d8",chipBackgroundColor:"#333333",chipTextColor:"#b0b0b0"})],this.sidebar.backgroundColor="#252526",this.sidebar.textColor="#d4d4d4",this.sidebar.borderColor="#3c3c3c",this.sidebar.miniCalendarTodayTextColor="#ffffff",this.sidebar.miniCalendarTodayBackgroundColor="#007acc",this.sidebar.miniCalendarTodayDotColor="#ffffff",this.sidebar.miniCalendarSelectedBackgroundColor="#264f78",this.sidebar.miniCalendarSelectedTextColor="#7cc5ff",this.sidebar.miniCalendarOtherMonthTextColor="#555555",this.sidebar.miniCalendarWeekendTextColor="#808080",this.sidebar.miniCalendarHoverBackgroundColor="#3c3c3c",this.sidebar.miniCalendarDayWithEventsColor="#007acc",this.sidebar.calendarListHeaderTextColor="#999999",this.sidebar.calendarListCheckboxColor="#007acc",this.allDay.backgroundColor="#252526",this.allDay.borderColor="#3c3c3c",this.allDay.textColor="#999999",this.timeGutter.backgroundColor="#252526",this.timeGutter.textColor="#808080",this.timeGutter.borderColor="#3c3c3c"}}export{fa as Appointment,Ta as AvailabilityBlock,Gr as BaseChartContentStyle,Zr as BaseChartHeaderStyle,qr as BaseChartStyle,Yr as BaseSheetHeaderStyle,Kr as BaseSheetStyle,jr as BaseTaskColor,_r as BaseTheme,Ca as Birthday,sa as Calendar,Pa as CalendarData,La as CalendarEntry,pa as CalendarItem,ya as CalendarTask,cn as ClassicGanttChartTheme,vn as ClassicSchedulerTheme,qi as CurrencyCellEditor,or as CustomProperty,Bo as DarkEventCalendarTheme,un as DarkGanttChartTheme,mn as DarkSchedulerTheme,Ni as DateCellEditor,Sr as DateRange,ba as Deadline,ns as DecimalCellEditor,Vi as DefaultTableCellRenderer,ji as DialogCellEditor,za as EventCalendarAllDayStyle,Ba as EventCalendarContentStyle,ja as EventCalendarContext,Vo as EventCalendarEngine,Aa as EventCalendarEntryColor,Xa as EventCalendarEvents,Va as EventCalendarHeaderStyle,Ua as EventCalendarSettings,Fa as EventCalendarSidebarStyle,Na as EventCalendarTheme,Oa as EventCalendarTimeGutterStyle,Ha as EventCalendarToolbarStyle,Xs as GanttChartContext,js as GanttChartEngine,Ys as GanttChartEvents,Ks as GanttChartSettings,Jr as GanttChartTaskColor,ti as GanttChartTheme,us as GanttSheet,wa as Holiday,ss as IntegerCellEditor,ur as Lag,rr as Length,Wa as LightEventCalendarTheme,gs as LightGanttChartTheme,gn as LightSchedulerTheme,va as Meeting,dn as ModernGanttChartTheme,pn as ModernSchedulerTheme,Ui as PercentCellEditor,ps as Rate,Sa as RecurrenceEditor,Ia as RecurrenceExpander,aa as RecurrenceRule,xa as Reminder,vs as Resource,ka as ResourceBooking,ms as ResourceList,Qn as ResourceSchedulerContext,ea as ResourceSchedulerEngine,ta as ResourceSchedulerEvents,ra as ResourceSchedulerSettings,yn as ResourceType,fn as SchedulerData,Vn as SchedulerEvent,bn as SchedulerResource,On as SchedulerSheet,ls as Table,Fi as TableCellEditor,Hi as TableCellRenderer,is as TableColumn,zs as TableContext,zi as TableInputCellEditor,cr as Task,hn as TaskFilters,gr as TaskLink,fr as TaskList,ir as TaskPart,nr as TaskResource,Oi as TextCellEditor,wr as TimeOfDay,Gr as TimelineChartContentStyle,Zr as TimelineChartHeaderStyle,qr as TimelineChartStyle,Yr as TimelineSheetHeaderStyle,Kr as TimelineSheetStyle,jr as TimelineTaskColor,_r as TimelineTheme,ds as TreeTable,ar as Work,yr as WorkingCalendar,br as WorkingShift,Da as calendarItemFromAny,Gs as csLocale,qs as deLocale,Ns as defaultLocale,Zs as enLocale,_s as esLocale,Js as frLocale,mr as getLinkType,Qs as itLocale,en as jaLocale,tn as koLocale,rn as nlLocale,sn as plLocale,nn as ptLocale,Xr as resolveTaskColor,an as ruLocale,Ht as setLicense,on as svLocale,ln as zhLocale};