@progress/kendo-react-gantt 7.2.4-develop.2 → 7.2.4-develop.4

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 (151) hide show
  1. package/Gantt.js +8 -0
  2. package/Gantt.mjs +411 -0
  3. package/cells/FilterCells/GanttBooleanFilter.js +8 -0
  4. package/cells/FilterCells/GanttBooleanFilter.mjs +27 -0
  5. package/cells/FilterCells/GanttDateFilter.js +8 -0
  6. package/cells/FilterCells/GanttDateFilter.mjs +27 -0
  7. package/cells/FilterCells/GanttNumericFilter.js +8 -0
  8. package/cells/FilterCells/GanttNumericFilter.mjs +27 -0
  9. package/cells/FilterCells/GanttTextFilter.js +8 -0
  10. package/cells/FilterCells/GanttTextFilter.mjs +27 -0
  11. package/cells/FilterCells/utils.js +8 -0
  12. package/cells/FilterCells/utils.mjs +59 -0
  13. package/components/BaseView.js +8 -0
  14. package/components/BaseView.mjs +239 -0
  15. package/components/GanttDependency.js +8 -0
  16. package/components/GanttDependency.mjs +58 -0
  17. package/components/GanttTask.js +8 -0
  18. package/components/GanttTask.mjs +169 -0
  19. package/components/GanttTreelist.js +8 -0
  20. package/components/GanttTreelist.mjs +571 -0
  21. package/components/toolbar/AddButton.js +8 -0
  22. package/components/toolbar/AddButton.mjs +56 -0
  23. package/components/toolbar/Toolbar.js +8 -0
  24. package/components/toolbar/Toolbar.mjs +34 -0
  25. package/components/toolbar/view-selector/ViewSelector.js +8 -0
  26. package/components/toolbar/view-selector/ViewSelector.mjs +32 -0
  27. package/components/toolbar/view-selector/ViewSelectorItem.js +8 -0
  28. package/components/toolbar/view-selector/ViewSelectorItem.mjs +39 -0
  29. package/components/toolbar/view-selector/ViewSelectorList.js +8 -0
  30. package/components/toolbar/view-selector/ViewSelectorList.mjs +36 -0
  31. package/constants/index.js +8 -0
  32. package/constants/index.mjs +52 -0
  33. package/context/GanttContext.js +8 -0
  34. package/context/GanttContext.mjs +103 -0
  35. package/context/GanttViewContext.js +8 -0
  36. package/context/GanttViewContext.mjs +38 -0
  37. package/dist/cdn/js/kendo-react-gantt.js +8 -5
  38. package/editors/FormDateTimePicker.js +8 -0
  39. package/editors/FormDateTimePicker.mjs +29 -0
  40. package/editors/FormDropDownList.js +8 -0
  41. package/editors/FormDropDownList.mjs +62 -0
  42. package/editors/FormInput.js +8 -0
  43. package/editors/FormInput.mjs +29 -0
  44. package/editors/FormNumericTextBox.js +8 -0
  45. package/editors/FormNumericTextBox.mjs +30 -0
  46. package/editors/GanttEditor.js +8 -0
  47. package/editors/GanttEditor.mjs +260 -0
  48. package/editors/GanttEditorPredecessors.js +8 -0
  49. package/editors/GanttEditorPredecessors.mjs +121 -0
  50. package/editors/GanttEditorSuccessors.js +8 -0
  51. package/editors/GanttEditorSuccessors.mjs +121 -0
  52. package/editors/GanttForm.js +8 -0
  53. package/editors/GanttForm.mjs +113 -0
  54. package/editors/GanttRemoveDialog.js +8 -0
  55. package/editors/GanttRemoveDialog.mjs +49 -0
  56. package/hooks/useControlledState.js +8 -0
  57. package/hooks/useControlledState.mjs +21 -0
  58. package/hooks/useDictionaryStore.js +8 -0
  59. package/hooks/useDictionaryStore.mjs +30 -0
  60. package/hooks/useGanttTask.js +8 -0
  61. package/hooks/useGanttTask.mjs +35 -0
  62. package/index.d.mts +1394 -5
  63. package/index.d.ts +1394 -32
  64. package/index.js +8 -5
  65. package/index.mjs +50 -3087
  66. package/interfaces/DependencyType.js +8 -0
  67. package/interfaces/DependencyType.mjs +12 -0
  68. package/messages/index.js +8 -0
  69. package/messages/index.mjs +137 -0
  70. package/package-metadata.js +8 -0
  71. package/package-metadata.mjs +19 -0
  72. package/package.json +12 -12
  73. package/rows/GanttRow.js +8 -0
  74. package/rows/GanttRow.mjs +13 -0
  75. package/utils/data-operations.js +8 -0
  76. package/utils/data-operations.mjs +183 -0
  77. package/utils/index.js +8 -0
  78. package/utils/index.mjs +263 -0
  79. package/views/GanttDayView.js +8 -0
  80. package/views/GanttDayView.mjs +94 -0
  81. package/views/GanttMonthView.js +8 -0
  82. package/views/GanttMonthView.mjs +82 -0
  83. package/views/GanttWeekView.js +8 -0
  84. package/views/GanttWeekView.mjs +81 -0
  85. package/views/GanttYearView.js +8 -0
  86. package/views/GanttYearView.mjs +73 -0
  87. package/Gantt.d.ts +0 -29
  88. package/cells/FilterCells/GanttBooleanFilter.d.ts +0 -14
  89. package/cells/FilterCells/GanttDateFilter.d.ts +0 -14
  90. package/cells/FilterCells/GanttNumericFilter.d.ts +0 -14
  91. package/cells/FilterCells/GanttTextFilter.d.ts +0 -14
  92. package/cells/FilterCells/utils.d.ts +0 -42
  93. package/components/BaseView.d.ts +0 -24
  94. package/components/GanttDependency.d.ts +0 -13
  95. package/components/GanttTask.d.ts +0 -16
  96. package/components/GanttTreelist.d.ts +0 -143
  97. package/components/toolbar/AddButton.d.ts +0 -16
  98. package/components/toolbar/Toolbar.d.ts +0 -25
  99. package/components/toolbar/view-selector/ViewSelector.d.ts +0 -28
  100. package/components/toolbar/view-selector/ViewSelectorItem.d.ts +0 -15
  101. package/components/toolbar/view-selector/ViewSelectorList.d.ts +0 -7
  102. package/constants/index.d.ts +0 -57
  103. package/context/GanttContext.d.ts +0 -125
  104. package/context/GanttViewContext.d.ts +0 -44
  105. package/editors/FormDateTimePicker.d.ts +0 -9
  106. package/editors/FormDropDownList.d.ts +0 -9
  107. package/editors/FormInput.d.ts +0 -9
  108. package/editors/FormNumericTextBox.d.ts +0 -9
  109. package/editors/GanttEditor.d.ts +0 -21
  110. package/editors/GanttEditorPredecessors.d.ts +0 -25
  111. package/editors/GanttEditorSuccessors.d.ts +0 -25
  112. package/editors/GanttForm.d.ts +0 -70
  113. package/editors/GanttRemoveDialog.d.ts +0 -48
  114. package/hooks/useControlledState.d.ts +0 -8
  115. package/hooks/useDictionaryStore.d.ts +0 -22
  116. package/hooks/useGanttTask.d.ts +0 -8
  117. package/interfaces/AddDirection.d.ts +0 -10
  118. package/interfaces/DataItem.d.ts +0 -10
  119. package/interfaces/DateRange.d.ts +0 -12
  120. package/interfaces/DependencyModelFields.d.ts +0 -29
  121. package/interfaces/DependencyType.d.ts +0 -19
  122. package/interfaces/GanttBaseProps.d.ts +0 -66
  123. package/interfaces/GanttCellProps.d.ts +0 -45
  124. package/interfaces/GanttColumnProps.d.ts +0 -40
  125. package/interfaces/GanttDependency.d.ts +0 -30
  126. package/interfaces/GanttDependencyModelFields.d.ts +0 -29
  127. package/interfaces/GanttFilterCellProps.d.ts +0 -10
  128. package/interfaces/GanttFilterOperator.d.ts +0 -10
  129. package/interfaces/GanttHeaderCellProps.d.ts +0 -10
  130. package/interfaces/GanttNoRecordsProps.d.ts +0 -13
  131. package/interfaces/GanttProps.d.ts +0 -151
  132. package/interfaces/GanttRowProps.d.ts +0 -95
  133. package/interfaces/GanttSelectableSettings.d.ts +0 -22
  134. package/interfaces/GanttSlotType.d.ts +0 -8
  135. package/interfaces/GanttSortSettings.d.ts +0 -17
  136. package/interfaces/GanttTaskModelFields.d.ts +0 -64
  137. package/interfaces/GanttView.d.ts +0 -80
  138. package/interfaces/GanttViewTimelineHeaderCellProps.d.ts +0 -23
  139. package/interfaces/Rectangle.d.ts +0 -10
  140. package/interfaces/Slot.d.ts +0 -16
  141. package/interfaces/TaskModelFields.d.ts +0 -20
  142. package/interfaces/events.d.ts +0 -298
  143. package/messages/index.d.ts +0 -194
  144. package/package-metadata.d.ts +0 -9
  145. package/rows/GanttRow.d.ts +0 -8
  146. package/utils/data-operations.d.ts +0 -47
  147. package/utils/index.d.ts +0 -182
  148. package/views/GanttDayView.d.ts +0 -21
  149. package/views/GanttMonthView.d.ts +0 -17
  150. package/views/GanttWeekView.d.ts +0 -17
  151. package/views/GanttYearView.d.ts +0 -17
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Pe=require("react"),u=require("../context/GanttContext.js"),Ye=require("../context/GanttViewContext.js"),qe=require("./GanttTask.js"),Oe=require("../hooks/useDictionaryStore.js"),Xe=require("./GanttDependency.js"),F=require("../utils/index.js"),O=require("@progress/kendo-react-data-tools"),R=require("../constants/index.js"),We=require("./GanttTreelist.js"),M=require("@progress/kendo-react-common");function Ve(d){const f=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(d){for(const a in d)if(a!=="default"){const D=Object.getOwnPropertyDescriptor(d,a);Object.defineProperty(f,a,D.get?D:{enumerable:!0,get:()=>d[a]})}}return f.default=d,Object.freeze(f)}const e=Ve(Pe),X=e.forwardRef((d,f)=>{const{slotLevels:a,slotWidth:D,timelineHeaderCell:W}=d,{columns:A,noRecords:V,resizable:v,reorderable:z,sortable:$,sort:j,filter:K,columnMenuFilter:B,columnMenu:U,navigatable:J,row:Q,selectable:Z}=u.useGanttPropsContext(),{onDataStateChange:ee,onSortChange:te,onFilterChange:ne,onColumnMenuFilterChange:re,onExpandChange:oe,onRowClick:se,onRowDoubleClick:le,onRowContextMenu:ce,onColumnResize:k,onColumnReorder:ae,onDependencyCreate:b,onKeyDown:ie,onSelectionChange:ue,onHeaderSelectionChange:de}=u.useGanttEventsContext(),fe=u.useGanttRowHeightContext(),me=u.useGanttToolbarHeightContext(),m=u.useGanttTaskModelFieldsContext(),pe=u.useGanttDependencyModelFieldsContext(),H=u.useGanttTaskDataContext(),Ce=u.useGanttDependencyDataContext(),I=e.useRef(null),N=e.useRef(null),p=e.useRef(null),h=e.useRef(null),_=e.useRef(0),P=e.useRef(M.useId()),ge=e.useRef(M.useId()),c=e.useRef(null),Y=e.useRef(null),Re=e.useCallback(t=>{p.current&&p.current.scrollIntoView(t)},[]);e.useImperativeHandle(Y,()=>({scrollIntoView:Re})),e.useImperativeHandle(f,()=>Y.current);const E=e.useRef(0),y=e.useRef(0),T=e.useRef(0),x=e.useRef(0),C=e.useRef(null),L=e.useRef(null),[g,G]=e.useState(null),De=F.getTimelineHeader(a,I,W),be=F.getTimelineContent(a,N),w=F.getTimelineWidth(a,D),{extendedColumns:he,columnsWidth:Ee,columnsMap:ye}=e.useMemo(()=>{const t=O.readColumns([...A,{title:"",sortable:!1,resizable:!1,reorderable:!1,width:w,headerCell:()=>De,cell:qe.GanttTask,orderIndex:Number.MAX_SAFE_INTEGER,navigatable:!1}],{prevId:0,idPrefix:P.current});let r=0;return t.forEach((n,o,l)=>{const s=o+1===l.length,i=n.children.length===0;s?n.isAccessible=!1:(n.locked=!0,i&&(n.width=n.width||R.DEFAULT_COLUMN_WIDTH)),i&&(r+=parseFloat(String(n.width)))}),{extendedColumns:t,columnsWidth:r,columnsMap:O.mapColumns(t)}},[A,w]),[Te,xe]=Oe.useDictionaryStore(),S=e.useCallback(()=>I.current&&I.current.parentElement,[]),q=()=>{const t=S(),r=N.current,n=p.current&&p.current.tbodyElement;if(!t||!r||!n)return;const o=n.offsetTop,l=t.offsetLeft,s=w;r.style.top=o+"px",r.style.left=l+"px",r.style.width=s+"px",r.style.height=n.offsetHeight+"px"},we=()=>{const t=S();t&&(_.current=t.offsetLeft)};e.useEffect(q),e.useEffect(we);const ke=e.useCallback(t=>{if(!h.current)return;const r=t.columns.slice(0,t.columns.length-1);if(t.end)h.current.style.left="0px";else{const n=S();if(!n)return;h.current.style.left=n.offsetLeft-_.current+"px",q()}k({...t,columns:r})},[k]),He=e.useCallback(t=>{const r=t.columns.slice(0,t.columns.length-1);ae({...t,columns:r})},[k]),Ie=e.useCallback(t=>{const n=(c.current&&c.current.ownerDocument?c.current.ownerDocument:document).elementFromPoint(t.clientX,t.clientY),o=c.current;if(!n||!n.parentElement||!o)return;const l=o.parentElement,s=o.firstElementChild;if(!l||!s)return;const i=n.getAttribute(R.DEPENDENCY_DRAG_HANDLE);if(i){const Se=o.offsetTop,Fe=o.offsetLeft,Me=l.offsetTop,Ae=l.offsetLeft,Ne=s.scrollTop,_e=s.scrollLeft;T.current=Fe+Ae,x.current=Se+Me,E.current=t.clientX-T.current+_e,y.current=t.clientY-x.current+Ne,C.current=n.parentElement.getAttribute(R.TASK_ID_ATT),L.current=i}},[]),Le=e.useCallback(t=>{const r=c.current;if(!r)return;const n=r.firstElementChild;if(!n)return;const o=n.scrollTop,l=n.scrollLeft,s=t.clientX-T.current+l,i=t.clientY-x.current+o;Math.abs(E.current-s)<10&&Math.abs(y.current-i)<10||G({startX:E.current,startY:y.current,endX:s,endY:i})},[]),Ge=e.useCallback(t=>{const n=(c.current&&c.current.ownerDocument?c.current.ownerDocument:document).elementFromPoint(t.clientX,t.clientY);if(!n||!n.parentElement)return;const o=n.parentElement.getAttribute(R.TASK_ID_ATT),l=n.getAttribute(R.DEPENDENCY_DRAG_HANDLE);if(l&&o!==C.current&&b){let s;L.current==="start"?s=l==="start"?3:2:s=l==="start"?1:0,b({fromId:C.current,toId:o,type:s})}E.current=0,y.current=0,T.current=0,x.current=0,C.current=null,L.current=null,G(null)},[b,G]);return e.createElement(Ye.GanttViewContext,{tasksStore:[Te,xe],timelineWidth:w,dependencyDrag:{isEnabled:!!b,draggedId:C.current,onDependencyHandlePress:Ie,onDependencyHandleDrag:Le,onDependencyHandleRelease:Ge}},e.createElement("div",{className:"k-gantt-content",ref:c,style:{height:`calc(100% - ${me}px)`}},e.createElement(We.GanttTreeList,{treelistId:ge.current,ref:p,extendedColumns:he,columnsMap:ye,dataItemKey:m.id,data:H,idPrefix:P.current,navigatable:J,expandField:m.isExpanded,subItemsField:m.children,editField:m.isInEdit,selectedField:m.isSelected,onDataStateChange:ee,onSortChange:te,onFilterChange:ne,onExpandChange:oe,onRowClick:se,onRowDoubleClick:le,onRowContextMenu:ce,onColumnResize:ke,onColumnReorder:He,onColumnMenuFilterChange:re,onKeyDown:ie,onSelectionChange:ue,onHeaderSelectionChange:de,tableProps:{style:{width:Ee},className:"k-table k-table-md k-table-layout-fixed"},noRecords:V,rowHeight:fe,resizable:v,reorderable:z,sortable:$,sort:j,filter:K,columnMenuFilter:B,columnMenu:U,row:Q,selectable:Z,afterContent:e.createElement(e.Fragment,null,e.createElement("svg",{className:"k-gantt-dependencies-svg",ref:h,style:{left:0,top:0}},Ce.map(t=>e.createElement(Xe.GanttDependency,{key:M.getter(pe.id)(t),dependency:t}))),e.createElement("svg",{className:"k-gantt-dependencies-svg",style:{left:0,top:0,zIndex:3}},g&&e.createElement("polyline",{points:`${g.startX},${g.startY} ${g.endX},${g.endY}`})),H&&H.length?be:null)})))});X.displayName="KendoReactGanttBaseView";exports.BaseView=X;
@@ -0,0 +1,239 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";
9
+ import * as e from "react";
10
+ import { useGanttPropsContext as Ae, useGanttEventsContext as Ne, useGanttRowHeightContext as Xe, useGanttToolbarHeightContext as Ye, useGanttTaskModelFieldsContext as Pe, useGanttDependencyModelFieldsContext as We, useGanttTaskDataContext as _e, useGanttDependencyDataContext as ze } from "../context/GanttContext.mjs";
11
+ import { GanttViewContext as Ve } from "../context/GanttViewContext.mjs";
12
+ import { GanttTask as ve } from "./GanttTask.mjs";
13
+ import { useDictionaryStore as Oe } from "../hooks/useDictionaryStore.mjs";
14
+ import { GanttDependency as $e } from "./GanttDependency.mjs";
15
+ import { getTimelineHeader as Ke, getTimelineContent as Be, getTimelineWidth as Ue } from "../utils/index.mjs";
16
+ import { readColumns as je, mapColumns as qe } from "@progress/kendo-react-data-tools";
17
+ import { DEFAULT_COLUMN_WIDTH as Je, DEPENDENCY_DRAG_HANDLE as S, TASK_ID_ATT as A } from "../constants/index.mjs";
18
+ import { GanttTreeList as Qe } from "./GanttTreelist.mjs";
19
+ import { useId as N, getter as Ze } from "@progress/kendo-react-common";
20
+ const et = e.forwardRef((X, Y) => {
21
+ const { slotLevels: E, slotWidth: P, timelineHeaderCell: W } = X, {
22
+ columns: k,
23
+ noRecords: _,
24
+ resizable: z,
25
+ reorderable: V,
26
+ sortable: v,
27
+ sort: O,
28
+ filter: $,
29
+ columnMenuFilter: K,
30
+ columnMenu: B,
31
+ navigatable: U,
32
+ row: j,
33
+ selectable: q
34
+ } = Ae(), {
35
+ onDataStateChange: J,
36
+ onSortChange: Q,
37
+ onFilterChange: Z,
38
+ onColumnMenuFilterChange: ee,
39
+ onExpandChange: te,
40
+ onRowClick: ne,
41
+ onRowDoubleClick: re,
42
+ onRowContextMenu: oe,
43
+ onColumnResize: b,
44
+ onColumnReorder: se,
45
+ onDependencyCreate: m,
46
+ onKeyDown: le,
47
+ onSelectionChange: ce,
48
+ onHeaderSelectionChange: ae
49
+ } = Ne(), ie = Xe(), ue = Ye(), i = Pe(), fe = We(), y = _e(), de = ze(), x = e.useRef(null), I = e.useRef(null), u = e.useRef(null), p = e.useRef(null), L = e.useRef(0), F = e.useRef(N()), me = e.useRef(N()), c = e.useRef(null), G = e.useRef(null), pe = e.useCallback(
50
+ (t) => {
51
+ u.current && u.current.scrollIntoView(t);
52
+ },
53
+ []
54
+ );
55
+ e.useImperativeHandle(G, () => ({ scrollIntoView: pe })), e.useImperativeHandle(Y, () => G.current);
56
+ const C = e.useRef(0), g = e.useRef(0), R = e.useRef(0), h = e.useRef(0), f = e.useRef(null), T = e.useRef(null), [d, w] = e.useState(null), Ce = Ke(E, x, W), ge = Be(E, I), D = Ue(E, P), { extendedColumns: Re, columnsWidth: he, columnsMap: De } = e.useMemo(
57
+ () => {
58
+ const t = je(
59
+ [
60
+ ...k,
61
+ {
62
+ title: "",
63
+ sortable: !1,
64
+ resizable: !1,
65
+ reorderable: !1,
66
+ width: D,
67
+ headerCell: () => Ce,
68
+ cell: ve,
69
+ orderIndex: Number.MAX_SAFE_INTEGER,
70
+ navigatable: !1
71
+ }
72
+ ],
73
+ { prevId: 0, idPrefix: F.current }
74
+ );
75
+ let r = 0;
76
+ return t.forEach((n, o, l) => {
77
+ const s = o + 1 === l.length, a = n.children.length === 0;
78
+ s ? n.isAccessible = !1 : (n.locked = !0, a && (n.width = n.width || Je)), a && (r += parseFloat(String(n.width)));
79
+ }), {
80
+ extendedColumns: t,
81
+ columnsWidth: r,
82
+ columnsMap: qe(t)
83
+ };
84
+ },
85
+ [k, D]
86
+ ), [Ee, be] = Oe(), H = e.useCallback(
87
+ () => x.current && x.current.parentElement,
88
+ []
89
+ ), M = () => {
90
+ const t = H(), r = I.current, n = u.current && u.current.tbodyElement;
91
+ if (!t || !r || !n)
92
+ return;
93
+ const o = n.offsetTop, l = t.offsetLeft, s = D;
94
+ r.style.top = o + "px", r.style.left = l + "px", r.style.width = s + "px", r.style.height = n.offsetHeight + "px";
95
+ }, ye = () => {
96
+ const t = H();
97
+ t && (L.current = t.offsetLeft);
98
+ };
99
+ e.useEffect(M), e.useEffect(ye);
100
+ const xe = e.useCallback(
101
+ (t) => {
102
+ if (!p.current)
103
+ return;
104
+ const r = t.columns.slice(0, t.columns.length - 1);
105
+ if (t.end)
106
+ p.current.style.left = "0px";
107
+ else {
108
+ const n = H();
109
+ if (!n)
110
+ return;
111
+ p.current.style.left = n.offsetLeft - L.current + "px", M();
112
+ }
113
+ b({
114
+ ...t,
115
+ columns: r
116
+ });
117
+ },
118
+ [b]
119
+ ), Te = e.useCallback(
120
+ (t) => {
121
+ const r = t.columns.slice(0, t.columns.length - 1);
122
+ se({
123
+ ...t,
124
+ columns: r
125
+ });
126
+ },
127
+ [b]
128
+ ), we = e.useCallback(
129
+ (t) => {
130
+ const n = (c.current && c.current.ownerDocument ? c.current.ownerDocument : document).elementFromPoint(t.clientX, t.clientY), o = c.current;
131
+ if (!n || !n.parentElement || !o)
132
+ return;
133
+ const l = o.parentElement, s = o.firstElementChild;
134
+ if (!l || !s)
135
+ return;
136
+ const a = n.getAttribute(S);
137
+ if (a) {
138
+ const Ie = o.offsetTop, Le = o.offsetLeft, Fe = l.offsetTop, Ge = l.offsetLeft, Me = s.scrollTop, Se = s.scrollLeft;
139
+ R.current = Le + Ge, h.current = Ie + Fe, C.current = t.clientX - R.current + Se, g.current = t.clientY - h.current + Me, f.current = n.parentElement.getAttribute(A), T.current = a;
140
+ }
141
+ },
142
+ []
143
+ ), He = e.useCallback(
144
+ (t) => {
145
+ const r = c.current;
146
+ if (!r)
147
+ return;
148
+ const n = r.firstElementChild;
149
+ if (!n)
150
+ return;
151
+ const o = n.scrollTop, l = n.scrollLeft, s = t.clientX - R.current + l, a = t.clientY - h.current + o;
152
+ Math.abs(C.current - s) < 10 && Math.abs(g.current - a) < 10 || w({
153
+ startX: C.current,
154
+ startY: g.current,
155
+ endX: s,
156
+ endY: a
157
+ });
158
+ },
159
+ []
160
+ ), ke = e.useCallback(
161
+ (t) => {
162
+ const n = (c.current && c.current.ownerDocument ? c.current.ownerDocument : document).elementFromPoint(t.clientX, t.clientY);
163
+ if (!n || !n.parentElement)
164
+ return;
165
+ const o = n.parentElement.getAttribute(A), l = n.getAttribute(S);
166
+ if (l && o !== f.current && m) {
167
+ let s;
168
+ T.current === "start" ? s = l === "start" ? 3 : 2 : s = l === "start" ? 1 : 0, m({
169
+ fromId: f.current,
170
+ toId: o,
171
+ type: s
172
+ });
173
+ }
174
+ C.current = 0, g.current = 0, R.current = 0, h.current = 0, f.current = null, T.current = null, w(null);
175
+ },
176
+ [m, w]
177
+ );
178
+ return /* @__PURE__ */ e.createElement(
179
+ Ve,
180
+ {
181
+ tasksStore: [Ee, be],
182
+ timelineWidth: D,
183
+ dependencyDrag: {
184
+ isEnabled: !!m,
185
+ draggedId: f.current,
186
+ onDependencyHandlePress: we,
187
+ onDependencyHandleDrag: He,
188
+ onDependencyHandleRelease: ke
189
+ }
190
+ },
191
+ /* @__PURE__ */ e.createElement("div", { className: "k-gantt-content", ref: c, style: { height: `calc(100% - ${ue}px)` } }, /* @__PURE__ */ e.createElement(
192
+ Qe,
193
+ {
194
+ treelistId: me.current,
195
+ ref: u,
196
+ extendedColumns: Re,
197
+ columnsMap: De,
198
+ dataItemKey: i.id,
199
+ data: y,
200
+ idPrefix: F.current,
201
+ navigatable: U,
202
+ expandField: i.isExpanded,
203
+ subItemsField: i.children,
204
+ editField: i.isInEdit,
205
+ selectedField: i.isSelected,
206
+ onDataStateChange: J,
207
+ onSortChange: Q,
208
+ onFilterChange: Z,
209
+ onExpandChange: te,
210
+ onRowClick: ne,
211
+ onRowDoubleClick: re,
212
+ onRowContextMenu: oe,
213
+ onColumnResize: xe,
214
+ onColumnReorder: Te,
215
+ onColumnMenuFilterChange: ee,
216
+ onKeyDown: le,
217
+ onSelectionChange: ce,
218
+ onHeaderSelectionChange: ae,
219
+ tableProps: { style: { width: he }, className: "k-table k-table-md k-table-layout-fixed" },
220
+ noRecords: _,
221
+ rowHeight: ie,
222
+ resizable: z,
223
+ reorderable: V,
224
+ sortable: v,
225
+ sort: O,
226
+ filter: $,
227
+ columnMenuFilter: K,
228
+ columnMenu: B,
229
+ row: j,
230
+ selectable: q,
231
+ afterContent: /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement("svg", { className: "k-gantt-dependencies-svg", ref: p, style: { left: 0, top: 0 } }, de.map((t) => /* @__PURE__ */ e.createElement($e, { key: Ze(fe.id)(t), dependency: t }))), /* @__PURE__ */ e.createElement("svg", { className: "k-gantt-dependencies-svg", style: { left: 0, top: 0, zIndex: 3 } }, d && /* @__PURE__ */ e.createElement("polyline", { points: `${d.startX},${d.startY} ${d.endX},${d.endY}` })), y && y.length ? ge : null)
232
+ }
233
+ ))
234
+ );
235
+ });
236
+ et.displayName = "KendoReactGanttBaseView";
237
+ export {
238
+ et as BaseView
239
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("react"),m=require("../context/GanttContext.js"),w=require("../utils/index.js"),l=require("@progress/kendo-react-common"),x=require("../context/GanttViewContext.js");function O(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,o.get?o:{enumerable:!0,get:()=>t[e]})}}return n.default=t,Object.freeze(n)}const f=O(j),g=t=>{const{dependency:n}=t,[e]=x.useGanttViewTasksContext(),o=f.useRef(null),a=m.useGanttDependencyModelFieldsContext(),C=m.useGanttRowHeightContext(),[d,c]=f.useState(!1),b=()=>{if(o.current===null||e.current===null){c(!1);return}const u=e.current[l.getter(a.fromId)(n)],p=e.current[l.getter(a.toId)(n)];if(!u||!p){c(!1);return}const s=u.element,r=p.element;if(!s||!r){c(!1);return}if(d===!1){c(!0);return}const G={top:s.offsetTop+s.offsetHeight/2,start:s.offsetLeft,end:s.offsetLeft+s.offsetWidth},h={top:r.offsetTop+r.offsetHeight/2,start:r.offsetLeft,end:r.offsetLeft+r.offsetWidth},D=l.getter(a.type)(n),i=w.dependencyCoordinates(G,h,C,D);i&&i.length&&o.current.setAttribute("points",i.map(y=>`${y.left},${y.top}`).join(" "))};return f.useEffect(b),f.createElement("polyline",{ref:o,style:{display:d?void 0:"none"}})};g.displayName="KendoReactGanttDependency";exports.GanttDependency=g;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";
9
+ import * as n from "react";
10
+ import { useGanttDependencyModelFieldsContext as w, useGanttRowHeightContext as x } from "../context/GanttContext.mjs";
11
+ import { dependencyCoordinates as D } from "../utils/index.mjs";
12
+ import { getter as a } from "@progress/kendo-react-common";
13
+ import { useGanttViewTasksContext as E } from "../context/GanttViewContext.mjs";
14
+ const H = (u) => {
15
+ const { dependency: s } = u, [f] = E(), r = n.useRef(null), c = w(), y = x(), [l, o] = n.useState(!1), h = () => {
16
+ if (r.current === null || f.current === null) {
17
+ o(!1);
18
+ return;
19
+ }
20
+ const d = f.current[a(c.fromId)(s)], p = f.current[a(c.toId)(s)];
21
+ if (!d || !p) {
22
+ o(!1);
23
+ return;
24
+ }
25
+ const e = d.element, t = p.element;
26
+ if (!e || !t) {
27
+ o(!1);
28
+ return;
29
+ }
30
+ if (l === !1) {
31
+ o(!0);
32
+ return;
33
+ }
34
+ const C = {
35
+ top: e.offsetTop + e.offsetHeight / 2,
36
+ start: e.offsetLeft,
37
+ end: e.offsetLeft + e.offsetWidth
38
+ }, g = {
39
+ top: t.offsetTop + t.offsetHeight / 2,
40
+ start: t.offsetLeft,
41
+ end: t.offsetLeft + t.offsetWidth
42
+ }, G = a(c.type)(s), i = D(C, g, y, G);
43
+ i && i.length && r.current.setAttribute("points", i.map((m) => `${m.left},${m.top}`).join(" "));
44
+ };
45
+ return n.useEffect(h), /* @__PURE__ */ n.createElement(
46
+ "polyline",
47
+ {
48
+ ref: r,
49
+ style: {
50
+ display: l ? void 0 : "none"
51
+ }
52
+ }
53
+ );
54
+ };
55
+ H.displayName = "KendoReactGanttDependency";
56
+ export {
57
+ H as GanttDependency
58
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const J=require("react"),S=require("../context/GanttContext.js"),Q=require("../utils/index.js"),a=require("@progress/kendo-react-common"),U=require("@progress/kendo-svg-icons"),j=require("../context/GanttViewContext.js"),X=require("../hooks/useGanttTask.js"),o=require("../constants/index.js");function Z(e){const d=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const l=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(d,s,l.get?l:{enumerable:!0,get:()=>e[s]})}}return d.default=e,Object.freeze(d)}const t=Z(J),L=t.forwardRef((e,d)=>{const s=S.useGanttDateRangeContext(),l=S.useGanttTaskModelFieldsContext(),$=j.useGanttViewTimelineWidthContext(),c=j.useGanttViewDependencyDragContext(),i=S.useGanttTaskEventsContext(),u=t.useRef(null),f=t.useRef(null);X.useGanttTask(e.dataItem,a.getter(l.id)(e.dataItem),d,u);const _=t.useRef(null),E=a.getter(l.id)(e.dataItem),r=a.getter(l.start)(e.dataItem),g=a.getter(l.end)(e.dataItem),V=a.getter(l.title)(e.dataItem),h=a.getter(l.percentComplete)(e.dataItem),A=a.getter(l.children)(e.dataItem),T=a.getter(l.isSelected)(e.dataItem),y=r&&r.getTime(),D=g&&g.getTime(),m=A&&A.length,C=!m&&y===D,I=y&&D&&Q.isInRange(s.start,s.end,r,g),[W,Y]=t.useState(!1),N=t.useRef(null),R=t.useRef(null);a.useDraggable(N,{onPress:c.onDependencyHandlePress,onDrag:c.onDependencyHandleDrag,onRelease:c.onDependencyHandleRelease}),a.useDraggable(R,{onPress:c.onDependencyHandlePress,onDrag:c.onDependencyHandleDrag,onRelease:c.onDependencyHandleRelease});const x=t.useCallback(n=>{i.onTaskClick&&i.onTaskClick({dataItem:e.dataItem,level:e.level,nativeEvent:n&&n.nativeEvent,syntheticEvent:n,target:null})},[e.dataItem,e.level]),H=t.useCallback(n=>{i.onTaskDoubleClick&&i.onTaskDoubleClick({dataItem:e.dataItem,level:e.level,nativeEvent:n&&n.nativeEvent,syntheticEvent:n,target:null})},[e.dataItem,e.level]),G=t.useCallback(n=>{i.onTaskContextMenu&&i.onTaskContextMenu({dataItem:e.dataItem,level:e.level,nativeEvent:n&&n.nativeEvent,syntheticEvent:n,target:null})},[e.dataItem,e.level]),K=t.useCallback(n=>{i.onTaskRemoveClick&&i.onTaskRemoveClick({dataItem:e.dataItem,level:e.level,nativeEvent:n&&n.nativeEvent,syntheticEvent:n,target:null})},[e.dataItem,e.level]),M=t.useCallback(()=>{const n=s.start,z=s.end,b=_.current,k=u.current,q=f.current;if(!I||b===null||k===null)return;const w=b.clientWidth/(z.getTime()-n.getTime()),O=(r.getTime()-n.getTime())*w,F=(g.getTime()-r.getTime())*w,B=(b.offsetHeight-k.offsetHeight)/2;k.style.left=`${Math.round(C?O-o.MILESTONE_OFFSET:O)}px`,k.style.top=`${Math.round(B)}px`,C||(k.style.width=`${Math.round(F)}px`,q!==null&&(q.style.width=`${Math.round(F*(h||0))}px`)),Y(!0)},[s.start.getTime(),s.end.getTime(),y,D,I,h,$]);t.useEffect(M,[M]);const P={visibility:W?void 0:"hidden",display:I?void 0:"none"},v={userSelect:"none",display:c.draggedId===String(E)?"block":void 0};return t.createElement("td",{ref:_,key:E,role:"presentation"},C?t.createElement("div",{"aria-hidden":!0,className:a.classNames({"k-task":!0,"k-task-milestone":!0,"k-selected":T&&!Array.isArray(T)}),style:P,ref:u,[o.TASK_ID_ATT]:E,onClick:x,onDoubleClick:H,onContextMenu:G},t.createElement("div",{className:"k-task-milestone-content"}),c.isEnabled&&t.createElement("div",{className:"k-task-dot k-task-start",ref:N,style:v,...o.DEPENDENCY_DRAG_HANDLE_START_ATT}),c.isEnabled&&t.createElement("div",{className:"k-task-dot k-task-end",ref:R,style:v,...o.DEPENDENCY_DRAG_HANDLE_FINISH_ATT})):t.createElement("div",{"aria-hidden":!0,className:a.classNames({"k-task":!0,"k-task-summary":m,"k-task-single":!m,"k-selected":T&&!Array.isArray(T)}),ref:u,style:P,[o.TASK_ID_ATT]:E,onClick:x,onDoubleClick:H,onContextMenu:G},m?t.createElement("div",{className:"k-task-summary-progress",ref:f},t.createElement("div",{className:"k-task-summary-complete"})):t.createElement("div",{className:"k-task-complete",ref:f}),!m&&t.createElement(t.Fragment,null,t.createElement("div",{className:"k-task-content"},V),i.onTaskRemoveClick?t.createElement("span",{className:"k-task-actions"},t.createElement("span",{onClick:K,className:"k-link k-task-delete","aria-label":"Delete"},t.createElement(a.IconWrap,{name:"x",icon:U.xIcon}))):null),c.isEnabled&&t.createElement("div",{className:"k-task-dot k-task-start",ref:N,style:v,...o.DEPENDENCY_DRAG_HANDLE_START_ATT}),c.isEnabled&&t.createElement("div",{className:"k-task-dot k-task-end",ref:R,style:v,...o.DEPENDENCY_DRAG_HANDLE_FINISH_ATT})))});L.displayName="KendoReactGanttTask";exports.GanttTask=L;
@@ -0,0 +1,169 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";
9
+ import * as e from "react";
10
+ import { useGanttDateRangeContext as Q, useGanttTaskModelFieldsContext as U, useGanttTaskEventsContext as X } from "../context/GanttContext.mjs";
11
+ import { isInRange as Z } from "../utils/index.mjs";
12
+ import { getter as c, useDraggable as F, classNames as W, IconWrap as p } from "@progress/kendo-react-common";
13
+ import { xIcon as ee } from "@progress/kendo-svg-icons";
14
+ import { useGanttViewTimelineWidthContext as te, useGanttViewDependencyDragContext as ne } from "../context/GanttViewContext.mjs";
15
+ import { useGanttTask as ae } from "../hooks/useGanttTask.mjs";
16
+ import { MILESTONE_OFFSET as le, TASK_ID_ATT as $, DEPENDENCY_DRAG_HANDLE_START_ATT as L, DEPENDENCY_DRAG_HANDLE_FINISH_ATT as V } from "../constants/index.mjs";
17
+ const se = e.forwardRef((t, K) => {
18
+ const i = Q(), s = U(), O = te(), a = ne(), l = X(), r = e.useRef(null), f = e.useRef(null);
19
+ ae(t.dataItem, c(s.id)(t.dataItem), K, r);
20
+ const N = e.useRef(null), k = c(s.id)(t.dataItem), o = c(s.start)(t.dataItem), u = c(s.end)(t.dataItem), Y = c(s.title)(t.dataItem), h = c(s.percentComplete)(t.dataItem), b = c(s.children)(t.dataItem), E = c(s.isSelected)(t.dataItem), y = o && o.getTime(), T = u && u.getTime(), d = b && b.length, g = !d && y === T, C = y && T && Z(i.start, i.end, o, u), [j, q] = e.useState(!1), D = e.useRef(null), I = e.useRef(null);
21
+ F(D, {
22
+ onPress: a.onDependencyHandlePress,
23
+ onDrag: a.onDependencyHandleDrag,
24
+ onRelease: a.onDependencyHandleRelease
25
+ }), F(I, {
26
+ onPress: a.onDependencyHandlePress,
27
+ onDrag: a.onDependencyHandleDrag,
28
+ onRelease: a.onDependencyHandleRelease
29
+ });
30
+ const x = e.useCallback(
31
+ (n) => {
32
+ l.onTaskClick && l.onTaskClick({
33
+ dataItem: t.dataItem,
34
+ level: t.level,
35
+ nativeEvent: n && n.nativeEvent,
36
+ syntheticEvent: n,
37
+ target: null
38
+ });
39
+ },
40
+ [t.dataItem, t.level]
41
+ ), S = e.useCallback(
42
+ (n) => {
43
+ l.onTaskDoubleClick && l.onTaskDoubleClick({
44
+ dataItem: t.dataItem,
45
+ level: t.level,
46
+ nativeEvent: n && n.nativeEvent,
47
+ syntheticEvent: n,
48
+ target: null
49
+ });
50
+ },
51
+ [t.dataItem, t.level]
52
+ ), H = e.useCallback(
53
+ (n) => {
54
+ l.onTaskContextMenu && l.onTaskContextMenu({
55
+ dataItem: t.dataItem,
56
+ level: t.level,
57
+ nativeEvent: n && n.nativeEvent,
58
+ syntheticEvent: n,
59
+ target: null
60
+ });
61
+ },
62
+ [t.dataItem, t.level]
63
+ ), z = e.useCallback(
64
+ (n) => {
65
+ l.onTaskRemoveClick && l.onTaskRemoveClick({
66
+ dataItem: t.dataItem,
67
+ level: t.level,
68
+ nativeEvent: n && n.nativeEvent,
69
+ syntheticEvent: n,
70
+ target: null
71
+ });
72
+ },
73
+ [t.dataItem, t.level]
74
+ ), M = e.useCallback(
75
+ () => {
76
+ const n = i.start, B = i.end, R = N.current, m = r.current, _ = f.current;
77
+ if (!C || R === null || m === null)
78
+ return;
79
+ const G = R.clientWidth / (B.getTime() - n.getTime()), P = (o.getTime() - n.getTime()) * G, w = (u.getTime() - o.getTime()) * G, J = (R.offsetHeight - m.offsetHeight) / 2;
80
+ m.style.left = `${Math.round(g ? P - le : P)}px`, m.style.top = `${Math.round(J)}px`, g || (m.style.width = `${Math.round(w)}px`, _ !== null && (_.style.width = `${Math.round(w * (h || 0))}px`)), q(!0);
81
+ },
82
+ [i.start.getTime(), i.end.getTime(), y, T, C, h, O]
83
+ );
84
+ e.useEffect(M, [M]);
85
+ const A = {
86
+ visibility: j ? void 0 : "hidden",
87
+ display: C ? void 0 : "none"
88
+ }, v = {
89
+ userSelect: "none",
90
+ display: a.draggedId === String(k) ? "block" : void 0
91
+ };
92
+ return /* @__PURE__ */ e.createElement("td", { ref: N, key: k, role: "presentation" }, g ? /* @__PURE__ */ e.createElement(
93
+ "div",
94
+ {
95
+ "aria-hidden": !0,
96
+ className: W({
97
+ "k-task": !0,
98
+ "k-task-milestone": !0,
99
+ "k-selected": E && !Array.isArray(E)
100
+ }),
101
+ style: A,
102
+ ref: r,
103
+ [$]: k,
104
+ onClick: x,
105
+ onDoubleClick: S,
106
+ onContextMenu: H
107
+ },
108
+ /* @__PURE__ */ e.createElement("div", { className: "k-task-milestone-content" }),
109
+ a.isEnabled && /* @__PURE__ */ e.createElement(
110
+ "div",
111
+ {
112
+ className: "k-task-dot k-task-start",
113
+ ref: D,
114
+ style: v,
115
+ ...L
116
+ }
117
+ ),
118
+ a.isEnabled && /* @__PURE__ */ e.createElement(
119
+ "div",
120
+ {
121
+ className: "k-task-dot k-task-end",
122
+ ref: I,
123
+ style: v,
124
+ ...V
125
+ }
126
+ )
127
+ ) : /* @__PURE__ */ e.createElement(
128
+ "div",
129
+ {
130
+ "aria-hidden": !0,
131
+ className: W({
132
+ "k-task": !0,
133
+ "k-task-summary": d,
134
+ "k-task-single": !d,
135
+ "k-selected": E && !Array.isArray(E)
136
+ }),
137
+ ref: r,
138
+ style: A,
139
+ [$]: k,
140
+ onClick: x,
141
+ onDoubleClick: S,
142
+ onContextMenu: H
143
+ },
144
+ d ? /* @__PURE__ */ e.createElement("div", { className: "k-task-summary-progress", ref: f }, /* @__PURE__ */ e.createElement("div", { className: "k-task-summary-complete" })) : /* @__PURE__ */ e.createElement("div", { className: "k-task-complete", ref: f }),
145
+ !d && /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement("div", { className: "k-task-content" }, Y), l.onTaskRemoveClick ? /* @__PURE__ */ e.createElement("span", { className: "k-task-actions" }, /* @__PURE__ */ e.createElement("span", { onClick: z, className: "k-link k-task-delete", "aria-label": "Delete" }, /* @__PURE__ */ e.createElement(p, { name: "x", icon: ee }))) : null),
146
+ a.isEnabled && /* @__PURE__ */ e.createElement(
147
+ "div",
148
+ {
149
+ className: "k-task-dot k-task-start",
150
+ ref: D,
151
+ style: v,
152
+ ...L
153
+ }
154
+ ),
155
+ a.isEnabled && /* @__PURE__ */ e.createElement(
156
+ "div",
157
+ {
158
+ className: "k-task-dot k-task-end",
159
+ ref: I,
160
+ style: v,
161
+ ...V
162
+ }
163
+ )
164
+ ));
165
+ });
166
+ se.displayName = "KendoReactGanttTask";
167
+ export {
168
+ se as GanttTask
169
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ *-------------------------------------------------------------------------------------------
4
+ * Copyright © 2024 Progress Software Corporation. All rights reserved.
5
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
6
+ *-------------------------------------------------------------------------------------------
7
+ */
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const J=require("react"),o=require("prop-types"),S=require("@progress/kendo-react-common"),c=require("@progress/kendo-react-data-tools"),D=require("@progress/kendo-react-treelist"),K=require("../utils/index.js");function Q(E){const p=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(E){for(const e in E)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(E,e);Object.defineProperty(p,e,t.get?t:{enumerable:!0,get:()=>E[e]})}}return p.default=E,Object.freeze(p)}const l=Q(J),N=class N extends l.Component{constructor(p){super(p),this.state={activeId:void 0,level:0},this.tableElement=null,this.tbodyElement=null,this.wrapperScrollLeft=0,this.wrapperScrollTop=0,this.updateOnScroll=!1,this.tbodyOffsetTop=0,this.prevData=[],this.flattedData=[],this.element=null,this.contextStateRef={current:void 0},this.navigationStateRef={current:void 0},this.scrollIntoView=e=>{if(!this.element)return;const{rowIndex:t=0}=e,{rowHeight:n=0}=this.props;this.element.scroll(0,(t-1)*n)},this.getColumns=e=>{const t=e.filter(s=>s.declarationIndex>=0&&s.parentIndex===-1),n=s=>(s.sort((i,r)=>i.declarationIndex-r.declarationIndex),s.map(i=>{const{declarationIndex:r,parentIndex:g,depth:u,colSpan:d,rowSpan:I,index:P,kFirst:b,groupable:O,children:R,...k}=i;return R.length?{children:n(R),...k}:k}));return n(t)},this.onKeyDown=e=>{if(c.tableKeyboardNavigation.onKeyDown(e,{contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),this.props.onKeyDown){const{mode:t,cell:n}=c.getSelectionOptions(this.props.selectable),s={dataItems:this.getLeafDataItems(),mode:t,cell:n,componentId:this.props.treelistId,selectedField:this.props.selectedField,...this.getEventArguments(e)};this.props.onKeyDown.call(void 0,s)}},this.onFocus=e=>{c.tableKeyboardNavigation.onFocus(e,{contextStateRef:this.contextStateRef})},this.onRowDrag=e=>{if(this.props.onRowDrag){const t={...e,target:this};this.props.onRowDrag.call(void 0,t)}},this.onRowDrop=e=>{if(this.props.onRowDrop){const t={...e,target:this};this.props.onRowDrop.call(void 0,t)}},this.onColumnReorder=(e,t,n)=>{const{extendedColumns:s}=this.props,i=s[e].depth,r=d=>{do d++;while(d<s.length&&s[d].depth>i);return d},g=[...s],u=g.splice(e,r(e)-e);if(g.splice(e<t?r(t-u.length):t,0,...u),g.filter(d=>d.declarationIndex>=0).forEach((d,I)=>d.orderIndex=I),this.props.onColumnReorder){const d={target:this,columns:this.getColumns(g),nativeEvent:n};this.props.onColumnReorder.call(void 0,d)}},this.onColumnResize=(e,t,n,s,i)=>{if(this.props.onColumnResize){const r=this.props.extendedColumns.filter(u=>u.children.length===0).reduce((u,d)=>u+=parseFloat(String(d.width)),0);this.tableElement&&(this.tableElement.style.width=r+"px");const g={columns:this.getColumns(this.props.extendedColumns),totalWidth:r,index:e,nativeEvent:s,newWidth:t,oldWidth:n,end:i,target:this};this.props.onColumnResize.call(void 0,g)}},this.onScroll=e=>{const t=e.currentTarget.scrollLeft,n=e.currentTarget.scrollTop,{columnVirtualization:s,scrollable:i,rowHeight:r=0}=this.props,g=r,u=0;let d=!1;s&&Math.abs(this.wrapperScrollLeft-t)>u&&(this.wrapperScrollLeft=t,d=!0),i==="virtual"&&Math.abs(this.wrapperScrollTop-n)>g&&(this.wrapperScrollTop=n,d=!0),d&&(this.updateOnScroll=!0,this.forceUpdate())},this.calculateSizes=e=>{if(!e||this.props.scrollable==="none")return;const t=Array.from(e.childNodes),n=t.find(r=>r.nodeName==="TABLE"),s=this.props.toolbar&&t.find(r=>r.nodeType===1&&r.classList.contains("k-grid-toolbar"));let i=0;if(s){const r=s.style.boxSizing;s.style.boxSizing="border-box",i=parseFloat(String(window.getComputedStyle(s).height))||s.offsetHeight,s.style.boxSizing=r,s.getAttribute("style")||s.removeAttribute("style")}this.tbodyOffsetTop=n.tBodies[0].offsetTop,D.setHeaderRowsTop(n,i)},this.onItemChange=e=>{if(e.field===this.props.expandField){const t=this.props.onExpandChange;if(t){const n={...this.getEventArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,value:e.value};t.call(void 0,n)}return}if(this.props.onItemChange){const t={...this.getEventArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,field:e.field,value:e.value};this.props.onItemChange.call(void 0,t)}},this.onHeaderSelectionChange=e=>{if(this.props.onHeaderSelectionChange){const t={field:e.field,nativeEvent:e.syntheticEvent&&e.syntheticEvent.nativeEvent,syntheticEvent:e.syntheticEvent,target:this,dataItems:this.getLeafDataItems()};this.props.onHeaderSelectionChange.call(void 0,t)}},this.selectionRelease=e=>{if(this.props.onSelectionChange){const t={syntheticEvent:void 0,target:this,selectedField:this.props.selectedField||"",componentId:this.props.treelistId,dataItems:this.getLeafDataItems(),dataItem:null,level:[],...e};this.props.onSelectionChange.call(void 0,t)}},this.onSortChange=(e,t,n)=>{this.onDataStateChange(this.props.onSortChange,{sort:t,field:n},e)},this.onFilterChange=e=>{const{filter:t,field:n}=e;this.onDataStateChange(this.props.onFilterChange,{filter:t,field:n},e.syntheticEvent)},this.onColumnMenuFilterChange=(e,t,n)=>{if(!n)return;const{onColumnMenuFilterChange:s}=this.props;if(!s)return;const i={syntheticEvent:e,filter:t,field:n,target:this,nativeEvent:e.nativeEvent};s.call(void 0,i)},this.onExpandChange=(e,t,n)=>{const{expandField:s,onExpandChange:i}=this.props;if(s&&i){const r={...this.getEventArguments(e),dataItem:t,level:n,value:K.isExpanded(t,this.props.expandField)};i.call(void 0,r)}},this.onRowClick=(e,t)=>{if(this.props.onRowClick&&e.target.nodeName==="TD"){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowClick.call(void 0,n)}},this.rowDoubleClick=(e,t)=>{if(this.props.onRowDoubleClick&&e.target.nodeName==="TD"){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowDoubleClick.call(void 0,n)}},this.rowContextMenu=(e,t)=>{if(this.props.onRowContextMenu&&e.target.nodeName==="TD"){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowContextMenu.call(void 0,n)}},this.onPageChange=e=>{if(this.props.onPageChange){const t={...this.getEventArguments(e.syntheticEvent),skip:e.skip,take:e.take};this.props.onPageChange.call(void 0,t)}},this.onDataStateChange=(e,t,n)=>{if(e&&e.call(void 0,{...this.getEventArguments(n),...t}),this.props.onDataStateChange){const s={...this.getEventArguments(n),dataState:{...this.getDataState(),...t}};this.props.onDataStateChange.call(void 0,s)}},this.getDataState=()=>({filter:this.props.filter,sort:this.props.sort}),this.getEventArguments=e=>({nativeEvent:e&&e.nativeEvent,syntheticEvent:e,target:this}),this.getLeafDataItems=()=>this.flatData.map(e=>e.dataItem),this.dragLogic=new c.CommonDragLogic(this.onColumnReorder,S.noop,S.noop),this.columnResize=new c.ColumnResize(this.onColumnResize),c.tableKeyboardNavigation.onConstructor({navigatable:!!p.navigatable,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef,idPrefix:p.idPrefix})}get document(){if(S.canUseDOM)return this.element&&this.element.ownerDocument||document}componentDidMount(){this.calculateSizes(this.element),c.tableKeyboardNavigation.onComponentDidMount({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}getSnapshotBeforeUpdate(){return c.tableKeyboardNavigation.onGetSnapshotBeforeUpdate({document:this.document,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),null}componentDidUpdate(p){p.columns!==this.props.columns&&this.calculateSizes(this.element),c.tableKeyboardNavigation.onComponentDidUpdate({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}componentWillUnmount(){this.columnResize.columns=[],this.dragLogic.columns=[],this.prevData=[],this.flattedData=[],this.updateOnScroll=!1}render(){const{filterRow:p,scrollable:e="scrollable",resizable:t=!1,reorderable:n=!1,skip:s,take:i,afterContent:r,extendedColumns:g=[],columnsMap:u}=this.props,d=g.some(a=>!!a.filter)||p!==void 0,I=p||c.FilterRow,P=c.tableKeyboardNavigationTools.getIdPrefix(this.navigationStateRef);this.columnResize.columns=g,this.columnResize.resizable=t,this.dragLogic.columns=g,this.dragLogic.reorderable=n,this.dragLogic.groupable=!1;const b=g.filter(a=>a.children.length===0),O=l.createElement(c.Header,{headerRow:l.createElement(c.HeaderRow,{sort:this.props.sort,sortable:this.props.sortable,sortChange:this.onSortChange,selectionChange:this.onHeaderSelectionChange,columns:g,columnsMap:u,cellRender:this.props.headerCellRender,columnResize:this.columnResize,columnMenu:this.props.columnMenu,columnMenuFilter:this.props.columnMenuFilter,columnMenuFilterChange:this.onColumnMenuFilterChange,pressHandler:this.dragLogic.pressHandler,dragHandler:this.dragLogic.dragHandler,releaseHandler:this.dragLogic.releaseHandler}),filterRow:d&&l.createElement(I,{columns:b,filter:this.props.filter,filterChange:this.onFilterChange,sort:this.props.sort,ariaRowIndex:u.length+1})||void 0,columnResize:this.columnResize}),R=this.props.style||{},{colSpans:k,hiddenColumns:A}=c.tableColumnsVirtualization({enabled:this.props.columnVirtualization,columns:b,scrollLeft:this.wrapperScrollLeft,tableViewPortWidth:parseFloat((R.width||"").toString())}),j=(a,m,F,z,T,x)=>b.map((h,f)=>{if(A[f])return null;const y=h.id?h.id:f,L=`k-table-td ${h.className?h.className+" ":""}${h.locked?"k-grid-content-sticky":""}`,w={id:c.tableKeyboardNavigationTools.generateNavigatableId(`${F}-${String(f)}`,P),colSpan:k[f],dataItem:a.dataItem,field:h.field,format:h.format,className:L||void 0,render:this.props.cellRender,onChange:this.onItemChange,selectionChange:this.props.onSelectionChange?C=>{this.onSelectionChange({event:C,item:a,columnIndex:f,dataIndex:T})}:void 0,level:a.level,expandable:h.expandable,expanded:z,hasChildren:K.hasChildren(a.dataItem,this.props.subItemsField),colIndex:f,ariaColumnIndex:h.ariaColumnIndex,onExpandChange:this.onExpandChange,style:h.left!==void 0&&{left:h.left,right:h.right,borderRightWidth:h.rightBorder?"1px":""}||{},isSelected:Array.isArray(x)&&x.indexOf(f)>-1};return m&&h.editCell?l.createElement(h.editCell,{...w,onChange:this.onItemChange,key:y}):h.cell?l.createElement(h.cell,{key:y,...w}):l.createElement(D.TreeListCell,{key:y,...w})});let v=this.flatData;const H=v.length;s!==void 0&&i!==void 0&&(v=v.slice(s,s+i)),e==="virtual"&&(v=D.tableRowsVirtualization({rows:v,tableViewPortHeight:parseFloat((R.height||R.maxHeight||"").toString()),scrollTop:this.wrapperScrollTop}),this.updateOnScroll=!1);const U=v.map(a=>a.level),V=u.length+(d?1:0)+1,B=v.length>0&&v.map((a,m)=>{const F=S.getter(this.props.editField||"")(a.dataItem),z=S.getter(this.props.dataItemKey)(a.dataItem),T=String(z||a.level.join(".")),x=K.isExpanded(a.dataItem,this.props.expandField),h=this.props.selectedField?S.getter(this.props.selectedField)(a.dataItem):void 0,f={key:T,level:a.level,levels:U,dataItem:a.dataItem,selectedField:this.props.selectedField,rowHeight:a.height,render:this.props.rowRender,onDrop:this.onRowDrop,onDrag:this.onRowDrag,onClick:C=>this.onRowClick(C,a),onDoubleClick:C=>this.rowDoubleClick(C,a),onContextMenu:C=>this.rowContextMenu(C,a),isAltRow:m%2!==0,expanded:x,rowIndex:m,ariaRowIndex:V+m,ariaSetSize:a.levelCount,ariaPosInSet:a.level[a.level.length-1]+1,isSelected:typeof h=="boolean"&&h},y=this.props.editRow,L=this.props.row||D.TreeListRow,w=j(a,F,T,x,m,h);return F&&y?l.createElement(y,{...f,key:f.key},w):l.createElement(L,{...f,key:f.key},w)})||l.createElement("tr",{className:"k-table-row k-grid-norecords"},l.createElement("td",{className:"k-table-td",colSpan:b.length},this.props.noRecords||l.createElement(D.TreeListNoRecords,null))),q=a=>this.props.sort&&this.props.sort.some(m=>m.field===a),W=l.createElement("colgroup",{ref:a=>{this.columnResize.colGroupMain=a}},b.map((a,m)=>l.createElement("col",{key:m.toString(),className:q(a.field)?"k-sorted":void 0,style:a.width!==void 0?{width:a.width}:void 0}))),$=this.props.columnVirtualization||this.props.scrollable==="virtual",G=this.props.selectable&&this.props.selectable.drag?"none":void 0,_=this.props.tableProps||{};return l.createElement(c.TableKeyboardNavigationContext.Provider,{value:this.contextStateRef.current},l.createElement("div",{id:this.props.treelistId,style:this.props.style,className:S.classNames("k-grid k-grid-md",this.props.className,{"k-treelist-scrollable":e!=="none"}),ref:a=>this.element=a,onScroll:$?this.onScroll:void 0,onKeyDown:this.onKeyDown,onFocus:this.onFocus,"aria-rowcount":H,"aria-colcount":b.length,role:"treegrid",...c.tableKeyboardNavigationScopeAttributes},this.props.toolbar,l.createElement(c.TableSelection,{selectable:this.props.selectable,onRelease:this.selectionRelease,childRef:a=>{this.tableElement=a}},l.createElement("table",{className:"k-table k-table-md",...this.props.tableProps||{},style:{..._.style||{},userSelect:G},role:"presentation"},W,O,l.createElement("tbody",{className:"k-table-tbody",...c.tableKeyboardNavigationBodyAttributes,ref:a=>this.tbodyElement=a,role:"presentation"},B))),this.props.pager&&l.createElement(this.props.pager,{className:"k-grid-pager",total:H,skip:s,take:i,onPageChange:this.onPageChange}),n&&l.createElement(l.Fragment,null,l.createElement(c.DropClue,{ref:this.dragLogic.refDropElementClue}),l.createElement(c.DragClue,{ref:this.dragLogic.refDragElementClue})),r))}get flatData(){const{data:p=[],rowHeight:e=0}=this.props;let t=0;const n=()=>{const i={height:e,offsetTop:t};return t+=i.height,i},s=this.updateOnScroll&&this.prevData===p&&this.tbodyOffsetTop>0&&this.flattedData.length?this.flattedData:p.map(i=>({...i,...n()}));return this.prevData=p,this.flattedData=s,s}onSelectionChange(p){if(this.props.onSelectionChange){const{event:e,item:t,dataIndex:n,columnIndex:s}=p,{mode:i,cell:r}=c.getSelectionOptions(this.props.selectable),g={...this.getEventArguments(e.syntheticEvent),dataItem:t.dataItem,level:t.level,startColIndex:s,endColIndex:s,startRowIndex:n,endRowIndex:n,dataItems:this.getLeafDataItems(),altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1,mode:i,cell:r,isDrag:!1,componentId:this.props.treelistId,selectedField:this.props.selectedField||""};this.props.onSelectionChange.call(void 0,g)}}};N.propTypes={data:o.array,resizable:o.bool,reorderable:o.bool,sortable:o.oneOfType([o.bool,o.shape({mode:o.oneOf(["single","multiple"]),allowUnsort:o.bool})]),onSortChange:o.func,sort:o.array,columns:o.arrayOf(o.object),columnVirtualization:o.bool,filter:o.array,onFilterChange:o.func,filterRow:o.any,toolbar:o.any,noRecords:o.any,onExpandChange:o.func,expandField:o.string,subItemsField:o.string,selectedField:o.string,onSelectionChange:o.func,onHeaderSelectionChange:o.func,onRowClick:o.func,onItemChange:o.func,editField:o.string,scrollable:o.oneOf(["none","scrollable","virtual"]),rowHeight:o.number,style:o.object,tableProps:o.object,pager:o.any,skip:o.number,take:o.number,onPageChange:o.func,onDataStateChange:o.func,onColumnResize:o.func,onColumnReorder:o.func,extendedColumns:o.arrayOf(o.object),columnsMap:o.arrayOf(o.array),dataItemKey:o.string.isRequired,afterContent:o.any,navigatable:o.bool,idPrefix:o.string,treelistId:o.string},N.contextType=c.TableKeyboardNavigationContext;let M=N;exports.GanttTreeList=M;