@ynput/ayon-frontend-shared 0.3.10 → 0.3.13

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 (695) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +24 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +1 -1
  5. package/dist/ProjectTreeTable.es.js +95 -96
  6. package/dist/Slicer.cjs.js +1 -1
  7. package/dist/Slicer.es.js +12 -11
  8. package/dist/Slicer.es.js.map +1 -1
  9. package/dist/_virtual/index.cjs3.js +1 -1
  10. package/dist/_virtual/index.cjs4.js +1 -1
  11. package/dist/_virtual/index.cjs5.js +1 -1
  12. package/dist/_virtual/index.es3.js +4 -4
  13. package/dist/_virtual/index.es4.js +5 -2
  14. package/dist/_virtual/index.es4.js.map +1 -1
  15. package/dist/_virtual/index.es5.js +2 -5
  16. package/dist/_virtual/index.es5.js.map +1 -1
  17. package/dist/_virtual/index.es6.js +2 -2
  18. package/dist/api.cjs.js +1 -1
  19. package/dist/api.es.js +177 -174
  20. package/dist/api.es.js.map +1 -1
  21. package/dist/components.cjs.js +1 -1
  22. package/dist/components.es.js +21 -17
  23. package/dist/components.es.js.map +1 -1
  24. package/dist/hooks.cjs.js +1 -1
  25. package/dist/hooks.es.js +20 -18
  26. package/dist/hooks.es.js.map +1 -1
  27. package/dist/index.cjs.js +1 -1
  28. package/dist/index.es.js +11 -9
  29. package/dist/index.es.js.map +1 -1
  30. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  31. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  32. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  33. package/dist/node_modules/remove-accents/index.es.js +1 -1
  34. package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.cjs.js +2 -0
  35. package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.cjs.js.map +1 -0
  36. package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.es.js +51 -0
  37. package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.es.js.map +1 -0
  38. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  39. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  40. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  41. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  42. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  43. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  44. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  45. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  46. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  47. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  48. package/dist/shared/src/api/generated/addons.cjs.js.map +1 -1
  49. package/dist/shared/src/api/generated/addons.es.js.map +1 -1
  50. package/dist/shared/src/api/generated/projects.cjs.js +1 -1
  51. package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
  52. package/dist/shared/src/api/generated/projects.es.js +36 -1
  53. package/dist/shared/src/api/generated/projects.es.js.map +1 -1
  54. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  55. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  56. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js +1 -1
  57. package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
  58. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js +3 -2
  59. package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
  60. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
  61. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  62. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -3
  63. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  64. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
  65. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  66. package/dist/shared/src/api/queries/overview/updateOverview.es.js +7 -6
  67. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  68. package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -1
  69. package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
  70. package/dist/shared/src/api/queries/project/getProject.es.js +4 -6
  71. package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
  72. package/dist/shared/src/api/queries/tasks/getTasks.cjs.js +2 -0
  73. package/dist/shared/src/api/queries/tasks/getTasks.cjs.js.map +1 -0
  74. package/dist/shared/src/api/queries/tasks/getTasks.es.js +14 -0
  75. package/dist/shared/src/api/queries/tasks/getTasks.es.js.map +1 -0
  76. package/dist/shared/src/api/queries/tasks/updateTasks.cjs.js +1 -1
  77. package/dist/shared/src/api/queries/tasks/updateTasks.cjs.js.map +1 -1
  78. package/dist/shared/src/api/queries/tasks/updateTasks.es.js +40 -22
  79. package/dist/shared/src/api/queries/tasks/updateTasks.es.js.map +1 -1
  80. package/dist/shared/src/api/queries/users/getUsers.cjs.js +3 -3
  81. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  82. package/dist/shared/src/api/queries/users/getUsers.es.js +19 -18
  83. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  84. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +1 -1
  85. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  86. package/dist/shared/src/api/queries/versions/updateVersions.es.js +9 -7
  87. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  88. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
  89. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  90. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +3 -2
  91. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  92. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +3 -3
  93. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  94. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +76 -71
  95. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  96. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
  97. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
  98. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +25 -24
  99. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
  100. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.cjs.js +12 -5
  101. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.cjs.js.map +1 -1
  102. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.es.js +9 -2
  103. package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.es.js.map +1 -1
  104. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
  105. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
  106. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +3 -2
  107. package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
  108. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
  109. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
  110. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -2
  111. package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
  112. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +2 -0
  113. package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -0
  114. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +37 -0
  115. package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -0
  116. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  117. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  118. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +30 -27
  119. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  120. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
  121. package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
  122. package/dist/shared/src/components/Feedback/FeedbackContext.es.js +5 -4
  123. package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
  124. package/dist/shared/src/components/FileThumbnail/FileThumbnail.cjs.js +13 -3
  125. package/dist/shared/src/components/FileThumbnail/FileThumbnail.cjs.js.map +1 -1
  126. package/dist/shared/src/components/FileThumbnail/FileThumbnail.es.js +29 -19
  127. package/dist/shared/src/components/FileThumbnail/FileThumbnail.es.js.map +1 -1
  128. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  129. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  130. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +48 -195
  131. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  132. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  133. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  134. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +28 -31
  135. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  136. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  137. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  138. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  139. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  140. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +4 -2
  141. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  142. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
  143. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
  144. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +3 -2
  145. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -1
  146. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  147. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  148. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +4 -2
  149. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  150. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  151. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  152. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -4
  153. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  154. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  155. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  156. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +4 -2
  157. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  158. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  159. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  160. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +4 -2
  161. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  162. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  163. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  164. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +4 -2
  165. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  166. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  167. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  168. package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -2
  169. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  170. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
  171. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
  172. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +11 -10
  173. package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js.map +1 -1
  174. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  175. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  176. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +4 -2
  177. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  178. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  179. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  180. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -3
  181. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  182. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  183. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  184. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -2
  185. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  186. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
  187. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
  188. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +3 -2
  189. package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
  190. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +2 -0
  191. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -0
  192. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +349 -0
  193. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -0
  194. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js +74 -0
  195. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js.map +1 -0
  196. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js +84 -0
  197. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js.map +1 -0
  198. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
  199. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
  200. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +121 -105
  201. package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js.map +1 -1
  202. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  203. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  204. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +4 -2
  205. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  206. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
  207. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
  208. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +3 -2
  209. package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
  210. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +2 -2
  211. package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
  212. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +5 -4
  213. package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
  214. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
  215. package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
  216. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +27 -26
  217. package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
  218. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js +2 -2
  219. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js.map +1 -1
  220. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js +13 -13
  221. package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js.map +1 -1
  222. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +30 -6
  223. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  224. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +190 -95
  225. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  226. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  227. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  228. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +138 -128
  229. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  230. package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
  231. package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
  232. package/dist/shared/src/components/Watchers/Watchers.es.js +3 -2
  233. package/dist/shared/src/components/Watchers/Watchers.es.js.map +1 -1
  234. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  235. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  236. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +4 -2
  237. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  238. package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
  239. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  240. package/dist/shared/src/containers/Actions/Actions.es.js +39 -39
  241. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  242. package/dist/shared/src/containers/Actions/Actions.styled.cjs.js +12 -16
  243. package/dist/shared/src/containers/Actions/Actions.styled.cjs.js.map +1 -1
  244. package/dist/shared/src/containers/Actions/Actions.styled.es.js +15 -19
  245. package/dist/shared/src/containers/Actions/Actions.styled.es.js.map +1 -1
  246. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +1 -1
  247. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  248. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +1 -1
  249. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  250. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +8 -5
  251. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
  252. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +12 -9
  253. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js.map +1 -1
  254. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  255. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  256. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +4 -2
  257. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  258. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  259. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  260. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -2
  261. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  262. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  263. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  264. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
  265. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  266. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  267. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  268. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -3
  269. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  270. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  271. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  272. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +122 -125
  273. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  274. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
  276. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
  277. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
  278. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
  279. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
  280. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js +1 -1
  281. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
  282. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js +29 -25
  283. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
  284. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +4 -5
  285. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  286. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -17
  287. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  288. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  289. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  290. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +4 -2
  291. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  292. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  293. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  294. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +4 -2
  295. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  296. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
  297. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
  298. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +3 -2
  299. package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
  300. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
  301. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
  302. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +3 -2
  303. package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js.map +1 -1
  304. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  305. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  306. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +4 -2
  307. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  308. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  309. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  310. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -2
  311. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  312. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  313. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  314. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -2
  315. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  316. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  317. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  318. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -2
  319. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  320. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
  321. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  322. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +5 -3
  323. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  324. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
  325. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
  326. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +32 -24
  327. package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
  328. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  329. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  330. package/dist/shared/src/containers/Feed/Feed.es.js +132 -128
  331. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  332. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  333. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  334. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +4 -2
  335. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  336. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  337. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  338. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +89 -86
  339. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  340. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  341. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  342. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +4 -2
  343. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  344. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js +3 -3
  345. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js.map +1 -1
  346. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js +28 -27
  347. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js.map +1 -1
  348. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +2 -2
  349. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  350. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +4 -2
  351. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  352. package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.cjs.js +6 -2
  353. package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.cjs.js.map +1 -1
  354. package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.es.js +64 -54
  355. package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.es.js.map +1 -1
  356. package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.cjs.js +5 -5
  357. package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.cjs.js.map +1 -1
  358. package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.es.js +37 -35
  359. package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.es.js.map +1 -1
  360. package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.cjs.js +1 -1
  361. package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.cjs.js.map +1 -1
  362. package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.es.js +21 -21
  363. package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.es.js.map +1 -1
  364. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  365. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  366. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +4 -2
  367. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  368. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
  369. package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
  371. package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
  372. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
  373. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +3 -2
  375. package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
  376. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
  377. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +7 -6
  379. package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js.map +1 -1
  380. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  381. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  382. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +505 -489
  383. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  384. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  385. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  386. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +235 -218
  387. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  388. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  389. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  390. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +4 -2
  391. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  392. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  393. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  394. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -2
  395. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  396. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  397. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  398. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -2
  399. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  400. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  401. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  402. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -2
  403. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  404. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +4 -4
  405. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  406. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +227 -226
  407. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  408. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
  409. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
  410. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +147 -146
  411. package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
  412. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  413. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  414. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +5 -4
  415. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  416. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  417. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  418. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +4 -2
  419. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  420. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  421. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  422. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +60 -57
  423. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  424. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  425. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  426. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +58 -64
  427. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  428. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  429. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  430. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +4 -2
  431. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  432. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  433. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  434. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -2
  435. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  436. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  437. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  438. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -2
  439. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  440. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
  441. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
  442. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
  443. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js.map +1 -1
  444. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  445. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  446. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +4 -2
  447. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  448. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  449. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  450. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -2
  451. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  452. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  453. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  454. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -2
  455. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  456. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  457. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  458. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -2
  459. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  460. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  461. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  462. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -2
  463. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  464. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  465. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  466. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -2
  467. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  468. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  469. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  470. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +4 -2
  471. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  472. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  473. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  474. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -13
  475. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  476. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +1 -1
  477. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
  478. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +2 -2
  479. package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
  480. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js +1 -1
  481. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
  482. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js +24 -38
  483. package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js.map +1 -1
  484. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  485. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  486. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +25 -22
  487. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  488. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +6 -6
  489. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  490. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +17 -16
  491. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  492. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +8 -8
  493. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  494. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +50 -49
  495. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  496. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  497. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  498. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +6 -4
  499. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  500. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  501. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  502. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -2
  503. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  504. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  505. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  506. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +4 -2
  507. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  508. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  509. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  510. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -2
  511. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  512. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  513. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  514. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +4 -2
  515. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  516. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  517. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  518. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +4 -2
  519. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  520. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
  521. package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
  522. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +5 -4
  523. package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
  524. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  525. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  526. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +10 -8
  527. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  528. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
  529. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
  530. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +3 -2
  531. package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
  532. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
  533. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
  534. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
  535. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
  536. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  537. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  538. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +4 -2
  539. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  540. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  541. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  542. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +5 -4
  543. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  544. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  545. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  546. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +3 -2
  547. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  548. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  549. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  550. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +4 -3
  551. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  552. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  553. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  554. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +3 -2
  555. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  556. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
  557. package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
  558. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +3 -2
  559. package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
  560. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
  561. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  562. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +3 -2
  563. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  564. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
  565. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
  566. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +3 -2
  567. package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
  568. package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
  569. package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
  570. package/dist/shared/src/context/AddonProjectContext.es.js +5 -4
  571. package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
  572. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  573. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  574. package/dist/shared/src/context/DetailsPanelContext.es.js +89 -82
  575. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  576. package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
  577. package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
  578. package/dist/shared/src/context/GlobalContext.es.js +5 -4
  579. package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
  580. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  581. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  582. package/dist/shared/src/context/PowerpackContext.es.js +7 -6
  583. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  584. package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
  585. package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
  586. package/dist/shared/src/context/ProjectContext.es.js +64 -61
  587. package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
  588. package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
  589. package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
  590. package/dist/shared/src/context/ProjectFoldersContext.es.js +5 -4
  591. package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
  592. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  593. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  594. package/dist/shared/src/context/RemoteModulesContext.es.js +5 -4
  595. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  596. package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
  597. package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
  598. package/dist/shared/src/context/SubtasksModulesContext.es.js +5 -4
  599. package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
  600. package/dist/shared/src/context/UriContext.cjs.js +1 -1
  601. package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
  602. package/dist/shared/src/context/UriContext.es.js +6 -5
  603. package/dist/shared/src/context/UriContext.es.js.map +1 -1
  604. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  605. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  606. package/dist/shared/src/context/WebsocketContext.es.js +6 -4
  607. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  608. package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
  609. package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
  610. package/dist/shared/src/hooks/useActionTriggers.es.js +3 -2
  611. package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
  612. package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
  613. package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
  614. package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
  615. package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
  616. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
  617. package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
  618. package/dist/shared/src/hooks/useGetEntityGroups.es.js +3 -2
  619. package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
  620. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
  621. package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
  622. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
  623. package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
  624. package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
  625. package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
  626. package/dist/shared/src/hooks/useHierarchyTable.es.js +25 -24
  627. package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
  628. package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
  629. package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
  630. package/dist/shared/src/hooks/useScopedStatuses.es.js +5 -4
  631. package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
  632. package/dist/shared/src/hooks/useScopedTypes.cjs.js +2 -0
  633. package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -0
  634. package/dist/shared/src/hooks/useScopedTypes.es.js +109 -0
  635. package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -0
  636. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
  637. package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
  638. package/dist/shared/src/hooks/useUserProjectConfig.es.js +3 -2
  639. package/dist/shared/src/hooks/useUserProjectConfig.es.js.map +1 -1
  640. package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
  641. package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
  642. package/dist/shared/src/util/columnConfigConverter.es.js +61 -60
  643. package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
  644. package/dist/shared/src/util/iconUtils.cjs.js +2 -0
  645. package/dist/shared/src/util/iconUtils.cjs.js.map +1 -0
  646. package/dist/shared/src/util/iconUtils.es.js +18 -0
  647. package/dist/shared/src/util/iconUtils.es.js.map +1 -0
  648. package/dist/shared/src/util/isHTMLElement.cjs.js +2 -0
  649. package/dist/shared/src/util/isHTMLElement.cjs.js.map +1 -0
  650. package/dist/shared/src/util/isHTMLElement.es.js +5 -0
  651. package/dist/shared/src/util/isHTMLElement.es.js.map +1 -0
  652. package/dist/shared/src/util/versionUploadHelpers.cjs.js.map +1 -1
  653. package/dist/shared/src/util/versionUploadHelpers.es.js.map +1 -1
  654. package/dist/types/api/generated/addons.d.ts +4 -0
  655. package/dist/types/api/generated/enums.d.ts +2 -0
  656. package/dist/types/api/generated/projects.d.ts +71 -3
  657. package/dist/types/api/generated/views.d.ts +2 -0
  658. package/dist/types/api/queries/entityLists/types.d.ts +1 -0
  659. package/dist/types/api/queries/project/getProject.d.ts +4 -185
  660. package/dist/types/api/queries/project/updateProject.d.ts +11 -11
  661. package/dist/types/api/queries/tasks/getTasks.d.ts +185 -0
  662. package/dist/types/api/queries/tasks/index.d.ts +1 -0
  663. package/dist/types/api/queries/tasks/updateTasks.d.ts +7 -0
  664. package/dist/types/api/queries/versions/updateVersions.d.ts +185 -1
  665. package/dist/types/components/EntityIcon/EntityIcon.d.ts +10 -0
  666. package/dist/types/components/EntityIcon/index.d.ts +1 -0
  667. package/dist/types/components/LinksManager/LinksManager.d.ts +1 -0
  668. package/dist/types/components/ReviewablesSelector/ReviewablesSelector.d.ts +12 -0
  669. package/dist/types/components/ReviewablesSelector/ReviewablesSelector.styled.d.ts +8 -0
  670. package/dist/types/components/ReviewablesSelector/index.d.ts +2 -0
  671. package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -0
  672. package/dist/types/components/Thumbnail/Thumbnail.d.ts +3 -2
  673. package/dist/types/components/VersionUploader/context/VersionUploadContext.d.ts +14 -2
  674. package/dist/types/components/index.d.ts +2 -0
  675. package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -0
  676. package/dist/types/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.d.ts +2 -1
  677. package/dist/types/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.d.ts +1 -0
  678. package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -0
  679. package/dist/types/containers/ProjectTreeTable/types/project.d.ts +1 -0
  680. package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +2 -12
  681. package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +3 -3
  682. package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -1
  683. package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +0 -1
  684. package/dist/types/context/ProjectContext.d.ts +1 -2
  685. package/dist/types/hooks/index.d.ts +1 -0
  686. package/dist/types/hooks/useHierarchyTable.d.ts +2 -1
  687. package/dist/types/hooks/useScopedTypes.d.ts +4 -0
  688. package/dist/types/util/iconUtils.d.ts +4 -0
  689. package/dist/types/util/index.d.ts +2 -0
  690. package/dist/types/util/isHTMLElement.d.ts +2 -0
  691. package/dist/types/util/versionUploadHelpers.d.ts +1 -0
  692. package/dist/util.cjs.js +1 -1
  693. package/dist/util.es.js +20 -18
  694. package/dist/util.es.js.map +1 -1
  695. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useBuildGroupByTableData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n entities: EntitiesMap\n entityType: string\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n groupRowFunc?: (node: any) => TableRow\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModelWithProducts,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst defaultEntityToGroupRow = (\n task: EditorTaskNode,\n group: string | undefined,\n entityType: string,\n project: ProjectModelWithProducts,\n getEntityTypeData: ReturnType<typeof useGetEntityTypeData>,\n): TableRow & { subRows: TableRow[] } => {\n const typeData = getEntityTypeData(entityType, task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: entityType,\n parentId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n updatedAt: task.updatedAt,\n links: linksToTableData(task.links, entityType, {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(project.productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n }\n}\n\nconst useBuildGroupByTableData = ({\n entities,\n entityType,\n groups = [],\n attribFields,\n showEmpty,\n groupRowFunc, // for versions etc\n}: BuildGroupByTableProps) => {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow & { subRows: TableRow[] } => {\n // Use provided groupRowFunc or fall back to default\n const baseRow = groupRowFunc\n ? groupRowFunc(task)\n : defaultEntityToGroupRow(task, group, entityType, project, getEntityTypeData)\n\n // Ensure group-specific fields are set\n return {\n ...baseRow,\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the group\n subRows: baseRow.subRows || [],\n }\n },\n [groupRowFunc, getEntityTypeData, entityType, project],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = GROUP_BY_ID + '.' + UNGROUPED_VALUE // unique id for ungrouped group\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(ungroupedId)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: ungroupedId, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(ungroupedId, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows?.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows?.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n groupsList.sort((a, b) => {\n if (a.group?.value === ungroupedId) return 1 // \"Ungrouped\" should be last\n if (b.group?.value === ungroupedId) return -1 // \"Ungrouped\" should be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return indexA - indexB\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return a.group?.label?.localeCompare(b.group?.label || '') || 0\n } else {\n // for other groupings, sort by the group label\n return a.group?.label?.localeCompare(b.group?.label || '') || 0\n }\n })\n\n // filter out empty groups\n const nonEmptyGroups = groupsList.filter((group) => group.group?.count && group.group.count > 0)\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","s","f","field","e","defaultEntityToGroupRow","task","entityType","getEntityTypeData","typeData","linksToTableData","useBuildGroupByTableData","entities","showEmpty","groupRowFunc","useProjectContext","useGetEntityTypeData","entityToGroupRow","useCallback","baseRow","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","a","b","indexA","indexB","nonEmptyGroups"],"mappings":"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"}
1
+ {"version":3,"file":"useBuildGroupByTableData.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n entities: EntitiesMap\n entityType: string\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n groupRowFunc?: (node: any) => TableRow\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModelWithProducts,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst defaultEntityToGroupRow = (\n task: EditorTaskNode,\n group: string | undefined,\n entityType: string,\n project: ProjectModelWithProducts,\n getEntityTypeData: ReturnType<typeof useGetEntityTypeData>,\n): TableRow & { subRows: TableRow[] } => {\n const typeData = getEntityTypeData(entityType, task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: entityType,\n parentId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n updatedAt: task.updatedAt,\n links: linksToTableData(task.links, entityType, {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(project.productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n subtasks: task.subtasks || [],\n }\n}\n\nconst useBuildGroupByTableData = ({\n entities,\n entityType,\n groups = [],\n attribFields,\n showEmpty,\n groupRowFunc, // for versions etc\n}: BuildGroupByTableProps) => {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow & { subRows: TableRow[] } => {\n // Use provided groupRowFunc or fall back to default\n const baseRow = groupRowFunc\n ? groupRowFunc(task)\n : defaultEntityToGroupRow(task, group, entityType, project, getEntityTypeData)\n\n // Ensure group-specific fields are set\n return {\n ...baseRow,\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the group\n subRows: baseRow.subRows || [],\n }\n },\n [groupRowFunc, getEntityTypeData, entityType, project],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = GROUP_BY_ID + '.' + UNGROUPED_VALUE // unique id for ungrouped group\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(ungroupedId)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: ungroupedId, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(ungroupedId, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows?.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows?.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n const sortDirection = groupBy.desc ? -1 : 1\n groupsList.sort((a, b) => {\n if (a.group?.value === ungroupedId) return 1 // \"Ungrouped\" should always be last\n if (b.group?.value === ungroupedId) return -1 // \"Ungrouped\" should always be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return (indexA - indexB) * sortDirection\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n } else {\n // for other groupings, sort by the group label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n }\n })\n\n // filter out empty groups\n const nonEmptyGroups = groupsList.filter((group) => group.group?.count && group.group.count > 0)\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","s","f","field","e","defaultEntityToGroupRow","task","entityType","getEntityTypeData","typeData","linksToTableData","useBuildGroupByTableData","entities","showEmpty","groupRowFunc","useProjectContext","useGetEntityTypeData","entityToGroupRow","useCallback","baseRow","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","sortDirection","a","b","indexA","indexB","nonEmptyGroups"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { useGetEntityTypeData as D } from "./useGetEntityTypeData.es.js";
2
- import { useCallback as x } from "react";
1
+ import { useGetEntityTypeData as x } from "./useGetEntityTypeData.es.js";
2
+ import { useCallback as _ } from "react";
3
3
  import "@ynput/ayon-react-components";
4
4
  import "short-uuid";
5
5
  import "react-toastify";
@@ -26,7 +26,7 @@ import "../../../context/MoveEntityContext.es.js";
26
26
  import "../../../context/MenuContext.es.js";
27
27
  import "../../../context/WebsocketContext.es.js";
28
28
  import "../../../context/GlobalContext.es.js";
29
- import { useProjectContext as _ } from "../../../context/ProjectContext.es.js";
29
+ import { useProjectContext as E } from "../../../context/ProjectContext.es.js";
30
30
  import "../../../context/ProjectFoldersContext.es.js";
31
31
  import "../../../context/UriContext.es.js";
32
32
  import "../../../api/base/client.es.js";
@@ -107,6 +107,7 @@ import "../../../api/queries/review/getReview.es.js";
107
107
  import "../../../api/queries/review/updateReview.es.js";
108
108
  import "../../../api/queries/share/share.es.js";
109
109
  import "../../../api/queries/system/getSystem.es.js";
110
+ import "../../../api/queries/tasks/getTasks.es.js";
110
111
  import "../../../api/queries/tasks/updateTasks.es.js";
111
112
  import "../../../api/queries/userDashboard/getUserDashboard.es.js";
112
113
  import "../../../api/queries/users/getUsers.es.js";
@@ -253,6 +254,7 @@ import "../../../components/VersionUploader/context/VersionUploadContext.es.js";
253
254
  import "../../../components/Watchers/Watchers.es.js";
254
255
  import "../../../components/Menu/Menu.styled.es.js";
255
256
  import "../../../components/Menu/MenuItem.es.js";
257
+ import "../../../components/ReviewablesSelector/ReviewablesSelector.styled.es.js";
256
258
  import "../context/DetailsPanelEntityContext.es.js";
257
259
  import "../context/SelectedRowsContext.es.js";
258
260
  import "../widgets/EmptyWidget.es.js";
@@ -260,14 +262,14 @@ import "../widgets/ErrorWidget.es.js";
260
262
  import "../ProjectTreeTable.styled.es.js";
261
263
  import "../widgets/LoadMoreWidget.es.js";
262
264
  import "../context/ColumnSettingsContext.es.js";
263
- import { linksToTableData as E } from "../utils/linksToTableData.es.js";
264
- const P = "next-page", v = "_ungrouped", A = "__", h = (t) => t ? Array.isArray(t) ? t.map((p) => p.toString()) : [t.toString()] : [], U = (t, p, n) => {
265
- if (!n)
265
+ import { linksToTableData as P } from "../utils/linksToTableData.es.js";
266
+ const U = "next-page", R = "_ungrouped", I = "__", A = (t) => t ? Array.isArray(t) ? t.map((p) => p.toString()) : [t.toString()] : [], O = (t, p, s) => {
267
+ if (!s)
266
268
  return {
267
269
  value: p,
268
270
  label: p
269
271
  };
270
- const r = n.find((m) => m.value === p);
272
+ const r = s.find((m) => m.value === p);
271
273
  return r ? {
272
274
  value: r.value,
273
275
  label: r.label || r.value,
@@ -279,16 +281,16 @@ const P = "next-page", v = "_ungrouped", A = "__", h = (t) => t ? Array.isArray(
279
281
  value: p,
280
282
  label: p
281
283
  };
282
- }, c = "_GROUP_", O = (t) => `${c}${t}`, Pp = (t) => t.startsWith(c) ? t.slice(c.length) : null, Up = (t) => t.startsWith(c), S = (t, p, n = []) => {
284
+ }, c = "_GROUP_", S = (t) => `${c}${t}`, Sp = (t) => t.startsWith(c) ? t.slice(c.length) : null, Np = (t) => t.startsWith(c), N = (t, p, s = []) => {
283
285
  const r = t.id.replace("attrib.", "");
284
- return r === "status" ? p?.statuses?.map((m) => m.name) || [] : r === "taskType" ? p?.taskTypes?.map((m) => m.name) || [] : r === "folderType" ? p?.folderTypes?.map((m) => m.name) || [] : t.id.startsWith("attrib.") ? n.find((m) => m.name === r)?.data.enum?.map((m) => m.value.toString()) || [] : [];
285
- }, N = (t, p, n, r, m) => {
286
- const d = m(n, t.taskType);
286
+ return r === "status" ? p?.statuses?.map((m) => m.name) || [] : r === "taskType" ? p?.taskTypes?.map((m) => m.name) || [] : r === "folderType" ? p?.folderTypes?.map((m) => m.name) || [] : t.id.startsWith("attrib.") ? s.find((m) => m.name === r)?.data.enum?.map((m) => m.value.toString()) || [] : [];
287
+ }, W = (t, p, s, r, m) => {
288
+ const d = m(s, t.taskType);
287
289
  return {
288
- id: t.id + A + p,
290
+ id: t.id + I + p,
289
291
  // unique id for the task in the folder
290
292
  entityId: t.id,
291
- entityType: n,
293
+ entityType: s,
292
294
  parentId: t.folderId,
293
295
  name: t.name || "",
294
296
  label: t.label || t.name || "",
@@ -304,39 +306,40 @@ const P = "next-page", v = "_ungrouped", A = "__", h = (t) => t ? Array.isArray(
304
306
  ownAttrib: t.ownAttrib,
305
307
  parents: t.parents || [],
306
308
  updatedAt: t.updatedAt,
307
- links: E(t.links, n, {
309
+ links: P(t.links, s, {
308
310
  folderTypes: r?.folderTypes || [],
309
311
  productTypes: Object.values(r.productTypes) || [],
310
312
  taskTypes: r?.taskTypes || []
311
- })
313
+ }),
314
+ subtasks: t.subtasks || []
312
315
  };
313
- }, Op = ({
316
+ }, Wp = ({
314
317
  entities: t,
315
318
  entityType: p,
316
- groups: n = [],
319
+ groups: s = [],
317
320
  attribFields: r,
318
321
  showEmpty: m,
319
322
  groupRowFunc: d
320
323
  // for versions etc
321
324
  }) => {
322
- const g = _(), R = D({ projectInfo: g }), f = x(
323
- (a, s) => {
324
- const l = d ? d(a) : N(a, s, p, g, R);
325
+ const g = E(), w = x({ projectInfo: g }), f = _(
326
+ (n, u) => {
327
+ const l = d ? d(n) : W(n, u, p, g, w);
325
328
  return {
326
329
  ...l,
327
- id: a.id + A + s,
330
+ id: n.id + I + u,
328
331
  // unique id for the task in the group
329
332
  subRows: l.subRows || []
330
333
  };
331
334
  },
332
- [d, R, p, g]
335
+ [d, w, p, g]
333
336
  );
334
- return (a) => {
335
- const s = /* @__PURE__ */ new Map();
336
- for (const e of n) {
337
- const i = e.value?.toString(), u = O(i), o = U(a.id, i, n);
338
- s.set(i, {
339
- id: u,
337
+ return (n) => {
338
+ const u = /* @__PURE__ */ new Map();
339
+ for (const e of s) {
340
+ const i = e.value?.toString(), a = S(i), o = O(n.id, i, s);
341
+ u.set(i, {
342
+ id: a,
340
343
  name: i,
341
344
  entityType: "group",
342
345
  subRows: [],
@@ -345,8 +348,8 @@ const P = "next-page", v = "_ungrouped", A = "__", h = (t) => t ? Array.isArray(
345
348
  links: {}
346
349
  });
347
350
  }
348
- const l = c + "." + v, w = () => {
349
- let e = s.get(l);
351
+ const l = c + "." + R, h = () => {
352
+ let e = u.get(l);
350
353
  return e || (e = {
351
354
  id: l,
352
355
  name: "Ungrouped",
@@ -355,29 +358,29 @@ const P = "next-page", v = "_ungrouped", A = "__", h = (t) => t ? Array.isArray(
355
358
  label: "Ungrouped",
356
359
  group: { value: l, label: "Ungrouped" },
357
360
  links: {}
358
- }, s.set(l, e)), e;
361
+ }, u.set(l, e)), e;
359
362
  };
360
363
  for (const [e, i] of t) {
361
364
  if (i.entityType !== p) continue;
362
- let u = [];
363
- if (a.id.startsWith("attrib.")) {
364
- const o = a.id.split(".")[1];
365
- u = h(i.attrib?.[o]);
365
+ let a = [];
366
+ if (n.id.startsWith("attrib.")) {
367
+ const o = n.id.split(".")[1];
368
+ a = A(i.attrib?.[o]);
366
369
  } else
367
- u = h(i[a.id]);
368
- u.length === 0 && w().subRows?.push(f(i, v));
369
- for (const o of u) {
370
- const T = s.get(o);
371
- T ? T.subRows?.push(f(i, o)) : w().subRows?.push(f(i, v));
370
+ a = A(i[n.id]);
371
+ a.length === 0 && h().subRows?.push(f(i, R));
372
+ for (const o of a) {
373
+ const G = u.get(o);
374
+ G ? G.subRows?.push(f(i, o)) : h().subRows?.push(f(i, R));
372
375
  }
373
376
  if ("groups" in i && Array.isArray(i.groups)) {
374
377
  for (const o of i.groups)
375
- if (o.hasNextPage && s.has(o.value)) {
376
- const G = s.get(o.value);
377
- G && G.subRows?.push({
378
+ if (o.hasNextPage && u.has(o.value)) {
379
+ const v = u.get(o.value);
380
+ v && v.subRows?.push({
378
381
  id: `${o.value}-next-page`,
379
382
  name: "Load more tasks...",
380
- entityType: P,
383
+ entityType: U,
381
384
  subRows: [],
382
385
  label: `Next page for ${o.value}`,
383
386
  group: { value: o.value, label: o.value },
@@ -386,28 +389,28 @@ const P = "next-page", v = "_ungrouped", A = "__", h = (t) => t ? Array.isArray(
386
389
  }
387
390
  }
388
391
  }
389
- const b = Array.from(s.values()), y = S(a, g, r);
392
+ const b = Array.from(u.values()), y = N(n, g, r), T = n.desc ? -1 : 1;
390
393
  b.sort((e, i) => {
391
394
  if (e.group?.value === l) return 1;
392
395
  if (i.group?.value === l) return -1;
393
396
  if (y.length) {
394
- const u = y.indexOf(e.group?.value || ""), o = y.indexOf(i.group?.value || "");
395
- return u !== -1 && o !== -1 ? u - o : u !== -1 ? -1 : o !== -1 ? 1 : e.group?.label?.localeCompare(i.group?.label || "") || 0;
397
+ const a = y.indexOf(e.group?.value || ""), o = y.indexOf(i.group?.value || "");
398
+ return a !== -1 && o !== -1 ? (a - o) * T : a !== -1 ? -1 : o !== -1 ? 1 : (e.group?.label?.localeCompare(i.group?.label || "") || 0) * T;
396
399
  } else
397
- return e.group?.label?.localeCompare(i.group?.label || "") || 0;
400
+ return (e.group?.label?.localeCompare(i.group?.label || "") || 0) * T;
398
401
  });
399
- const I = b.filter((e) => e.group?.count && e.group.count > 0);
400
- return m ? b : I;
402
+ const D = b.filter((e) => e.group?.count && e.group.count > 0);
403
+ return m ? b : D;
401
404
  };
402
405
  };
403
406
  export {
404
407
  c as GROUP_BY_ID,
405
- P as NEXT_PAGE_ID,
406
- A as ROW_ID_SEPARATOR,
407
- v as UNGROUPED_VALUE,
408
- O as buildGroupId,
409
- Op as default,
410
- Up as isGroupId,
411
- Pp as parseGroupId
408
+ U as NEXT_PAGE_ID,
409
+ I as ROW_ID_SEPARATOR,
410
+ R as UNGROUPED_VALUE,
411
+ S as buildGroupId,
412
+ Wp as default,
413
+ Np as isGroupId,
414
+ Sp as parseGroupId
412
415
  };
413
416
  //# sourceMappingURL=useBuildGroupByTableData.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBuildGroupByTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n entities: EntitiesMap\n entityType: string\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n groupRowFunc?: (node: any) => TableRow\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModelWithProducts,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst defaultEntityToGroupRow = (\n task: EditorTaskNode,\n group: string | undefined,\n entityType: string,\n project: ProjectModelWithProducts,\n getEntityTypeData: ReturnType<typeof useGetEntityTypeData>,\n): TableRow & { subRows: TableRow[] } => {\n const typeData = getEntityTypeData(entityType, task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: entityType,\n parentId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n updatedAt: task.updatedAt,\n links: linksToTableData(task.links, entityType, {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(project.productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n }\n}\n\nconst useBuildGroupByTableData = ({\n entities,\n entityType,\n groups = [],\n attribFields,\n showEmpty,\n groupRowFunc, // for versions etc\n}: BuildGroupByTableProps) => {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow & { subRows: TableRow[] } => {\n // Use provided groupRowFunc or fall back to default\n const baseRow = groupRowFunc\n ? groupRowFunc(task)\n : defaultEntityToGroupRow(task, group, entityType, project, getEntityTypeData)\n\n // Ensure group-specific fields are set\n return {\n ...baseRow,\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the group\n subRows: baseRow.subRows || [],\n }\n },\n [groupRowFunc, getEntityTypeData, entityType, project],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = GROUP_BY_ID + '.' + UNGROUPED_VALUE // unique id for ungrouped group\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(ungroupedId)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: ungroupedId, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(ungroupedId, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows?.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows?.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n groupsList.sort((a, b) => {\n if (a.group?.value === ungroupedId) return 1 // \"Ungrouped\" should be last\n if (b.group?.value === ungroupedId) return -1 // \"Ungrouped\" should be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return indexA - indexB\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return a.group?.label?.localeCompare(b.group?.label || '') || 0\n } else {\n // for other groupings, sort by the group label\n return a.group?.label?.localeCompare(b.group?.label || '') || 0\n }\n })\n\n // filter out empty groups\n const nonEmptyGroups = groupsList.filter((group) => group.group?.count && group.group.count > 0)\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","s","t","f","field","e","defaultEntityToGroupRow","task","entityType","getEntityTypeData","typeData","linksToTableData","useBuildGroupByTableData","entities","showEmpty","groupRowFunc","useProjectContext","useGetEntityTypeData","entityToGroupRow","useCallback","baseRow","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","a","b","indexA","indexB","nonEmptyGroups"],"mappings":"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"}
1
+ {"version":3,"file":"useBuildGroupByTableData.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.ts"],"sourcesContent":["// based on the groupBy field we take a flat list of items and group them\n// each group is a root node with subItems as the grouped items\n// any leftover items that do not match the groupBy field are added as a separate group (\"Ungrouped\")\n\nimport { EntityGroup } from '@shared/api'\nimport { TableGroupBy } from '../context'\nimport { EditorTaskNode, EntitiesMap, EntityMap, ProjectTableAttribute, TableRow } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { useCallback } from 'react'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\nexport type GroupByEntityType = 'task' | 'folder' | 'version' | 'product'\n\nexport type GroupData = {\n value: string\n label: string\n color?: string\n icon?: string\n img?: string\n count?: number\n}\n\nexport const NEXT_PAGE_ID = 'next-page'\nexport const UNGROUPED_VALUE = '_ungrouped'\nexport const ROW_ID_SEPARATOR = '__'\n\nconst valueToStringArray = (value?: any): string[] =>\n value ? (Array.isArray(value) ? value.map((v) => v.toString()) : [value.toString()]) : []\n\n// get group label, color and icon\nconst getGroupData = (groupById: string, groupValue: string, groups?: EntityGroup[]): GroupData => {\n if (!groups)\n return {\n value: groupValue,\n label: groupValue,\n }\n\n const group = groups.find((g) => g.value === groupValue)\n if (!group) {\n return {\n value: groupValue,\n label: groupValue,\n }\n } else {\n return {\n value: group.value,\n label: group.label || group.value,\n color: group.color,\n icon: group.icon,\n count: group.count,\n img: groupById === 'assignees' ? `/api/users/${group.value}/avatar` : undefined,\n }\n }\n}\n\nexport const GROUP_BY_ID = '_GROUP_'\nexport const buildGroupId = (value: string) => `${GROUP_BY_ID}${value}`\nexport const parseGroupId = (groupId: string): string | null => {\n if (!groupId.startsWith(GROUP_BY_ID)) return null\n return groupId.slice(GROUP_BY_ID.length) // +1 for the underscore\n}\nexport const isGroupId = (id: string): boolean => id.startsWith(GROUP_BY_ID)\n\ntype BuildGroupByTableProps = {\n entities: EntitiesMap\n entityType: string\n groups?: EntityGroup[]\n attribFields: ProjectTableAttribute[]\n showEmpty?: boolean\n groupRowFunc?: (node: any) => TableRow\n}\n\n// get sorting ids based on the groupBy field\nconst getSortingIds = (\n groupBy: TableGroupBy,\n project?: ProjectModelWithProducts,\n attribFields: ProjectTableAttribute[] = [],\n): string[] => {\n const attributeId = groupBy.id.replace('attrib.', '')\n\n // for status, taskType, folderType use project data order\n if (attributeId === 'status') {\n return project?.statuses?.map((s) => s.name) || []\n } else if (attributeId === 'taskType') {\n return project?.taskTypes?.map((t) => t.name) || []\n } else if (attributeId === 'folderType') {\n return project?.folderTypes?.map((f) => f.name) || []\n } else if (groupBy.id.startsWith('attrib.')) {\n // for other enum attributes, use the enum values order\n return (\n attribFields\n .find((field) => field.name === attributeId)\n ?.data.enum?.map((e) => e.value.toString()) || []\n )\n } else return []\n}\n\nconst defaultEntityToGroupRow = (\n task: EditorTaskNode,\n group: string | undefined,\n entityType: string,\n project: ProjectModelWithProducts,\n getEntityTypeData: ReturnType<typeof useGetEntityTypeData>,\n): TableRow & { subRows: TableRow[] } => {\n const typeData = getEntityTypeData(entityType, task.taskType)\n return {\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the folder\n entityId: task.id,\n entityType: entityType,\n parentId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n updatedAt: task.updatedAt,\n links: linksToTableData(task.links, entityType, {\n folderTypes: project?.folderTypes || [],\n productTypes: Object.values(project.productTypes) || [],\n taskTypes: project?.taskTypes || [],\n }),\n subtasks: task.subtasks || [],\n }\n}\n\nconst useBuildGroupByTableData = ({\n entities,\n entityType,\n groups = [],\n attribFields,\n showEmpty,\n groupRowFunc, // for versions etc\n}: BuildGroupByTableProps) => {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n const entityToGroupRow = useCallback(\n (task: EditorTaskNode, group?: string): TableRow & { subRows: TableRow[] } => {\n // Use provided groupRowFunc or fall back to default\n const baseRow = groupRowFunc\n ? groupRowFunc(task)\n : defaultEntityToGroupRow(task, group, entityType, project, getEntityTypeData)\n\n // Ensure group-specific fields are set\n return {\n ...baseRow,\n id: task.id + ROW_ID_SEPARATOR + group, // unique id for the task in the group\n subRows: baseRow.subRows || [],\n }\n },\n [groupRowFunc, getEntityTypeData, entityType, project],\n )\n\n const buildGroupByTableData = (groupBy: TableGroupBy): TableRow[] => {\n const groupsMap = new Map<string, TableRow>()\n\n for (const group of groups) {\n const groupValue = group.value?.toString() as string\n const groupId = buildGroupId(groupValue)\n const groupData = getGroupData(groupBy.id, groupValue, groups)\n groupsMap.set(groupValue, {\n id: groupId,\n name: groupValue,\n entityType: 'group',\n subRows: [],\n label: groupData.label,\n group: groupData,\n links: {},\n })\n }\n\n const ungroupedId = GROUP_BY_ID + '.' + UNGROUPED_VALUE // unique id for ungrouped group\n // gets the \"Ungrouped\" group, creating it if it doesn't exist\n const getUnGroupedGroup = () => {\n let ungroupedGroup = groupsMap.get(ungroupedId)\n if (!ungroupedGroup) {\n ungroupedGroup = {\n id: ungroupedId,\n name: 'Ungrouped',\n entityType: 'group',\n subRows: [],\n label: 'Ungrouped',\n group: { value: ungroupedId, label: 'Ungrouped' },\n links: {},\n }\n // create ungrouped group if it doesn't exist\n groupsMap.set(ungroupedId, ungroupedGroup)\n }\n return ungroupedGroup\n }\n\n for (const [id, entity] of entities) {\n // if the entity is not of the specified type, skip it\n if (entity.entityType !== entityType) continue\n // add entities to specific group\n let groupValues: string[] = []\n if (groupBy.id.startsWith('attrib.')) {\n // for attribute based grouping, get the value of the attribute\n const attributeId = groupBy.id.split('.')[1]\n groupValues = valueToStringArray(entity.attrib?.[attributeId])\n } else {\n groupValues = valueToStringArray(entity[groupBy.id as keyof EntityMap])\n }\n\n // if there are no values, add to \"Ungrouped\" group\n if (groupValues.length === 0) {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n // for each group value, find it's group and add the entity to it\n // if we can't find the group, add it to \"Ungrouped\"\n for (const groupValue of groupValues) {\n const groupRow = groupsMap.get(groupValue)\n if (groupRow) {\n groupRow.subRows?.push(entityToGroupRow(entity as EditorTaskNode, groupValue))\n } else {\n const ungroupedGroup = getUnGroupedGroup()\n ungroupedGroup.subRows?.push(entityToGroupRow(entity as EditorTaskNode, UNGROUPED_VALUE))\n }\n }\n\n // for groups metadata on entity, check if there is a next page\n if ('groups' in entity && Array.isArray(entity.groups)) {\n for (const group of entity.groups) {\n const hasNextPageGroup = group.hasNextPage\n if (hasNextPageGroup && groupsMap.has(group.value)) {\n // add a next page row to the group\n const groupRow = groupsMap.get(group.value)\n if (groupRow) {\n groupRow.subRows?.push({\n id: `${group.value}-next-page`,\n name: `Load more tasks...`,\n entityType: NEXT_PAGE_ID,\n subRows: [],\n label: `Next page for ${group.value}`,\n group: { value: group.value, label: group.value },\n links: {},\n })\n }\n }\n }\n }\n }\n\n const groupsList = Array.from(groupsMap.values())\n\n const attribSortingIds = getSortingIds(groupBy, project, attribFields)\n\n // sort the groups by their label\n // if the group is an attribute with enum values, sort by the enum values\n const sortDirection = groupBy.desc ? -1 : 1\n groupsList.sort((a, b) => {\n if (a.group?.value === ungroupedId) return 1 // \"Ungrouped\" should always be last\n if (b.group?.value === ungroupedId) return -1 // \"Ungrouped\" should always be last\n if (attribSortingIds.length) {\n // sort by index of the enum value\n const indexA = attribSortingIds.indexOf(a.group?.value || '')\n const indexB = attribSortingIds.indexOf(b.group?.value || '')\n if (indexA !== -1 && indexB !== -1) {\n return (indexA - indexB) * sortDirection\n }\n if (indexA !== -1) return -1 // a is in the enum, b is not\n if (indexB !== -1) return 1 // b is in the enum, a is not\n // if both are not in the enum, sort by label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n } else {\n // for other groupings, sort by the group label\n return (a.group?.label?.localeCompare(b.group?.label || '') || 0) * sortDirection\n }\n })\n\n // filter out empty groups\n const nonEmptyGroups = groupsList.filter((group) => group.group?.count && group.group.count > 0)\n\n return showEmpty ? groupsList : nonEmptyGroups\n }\n\n return buildGroupByTableData\n}\n\nexport default useBuildGroupByTableData\n"],"names":["NEXT_PAGE_ID","UNGROUPED_VALUE","ROW_ID_SEPARATOR","valueToStringArray","value","v","getGroupData","groupById","groupValue","groups","group","g","GROUP_BY_ID","buildGroupId","parseGroupId","groupId","isGroupId","id","getSortingIds","groupBy","project","attribFields","attributeId","s","t","f","field","e","defaultEntityToGroupRow","task","entityType","getEntityTypeData","typeData","linksToTableData","useBuildGroupByTableData","entities","showEmpty","groupRowFunc","useProjectContext","useGetEntityTypeData","entityToGroupRow","useCallback","baseRow","groupsMap","groupData","ungroupedId","getUnGroupedGroup","ungroupedGroup","entity","groupValues","groupRow","groupsList","attribSortingIds","sortDirection","a","b","indexA","indexB","nonEmptyGroups"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const c=require("react"),A=require("../utils/loadingUtils.cjs.js"),E=require("./useGetEntityTypeData.cjs.js");require("@ynput/ayon-react-components");require("react-toastify");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("../context/CellEditingContext.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");require("../context/ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/SubtasksModulesContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const C=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("../context/ClipboardContext.cjs.js");require("@tanstack/react-table");require("@tanstack/react-virtual");require("clsx");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("date-fns");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../context/ProjectDataContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../../SimpleTable/context/SimpleTableContext.cjs.js");require("../../SimpleTable/SimpleTableRowTemplate.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../Slicer/components/SlicerSearch.cjs.js");require("../../Slicer/context/SlicerContext.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");require("../context/ColumnSettingsContext.cjs.js");const v=require("../utils/linksToTableData.cjs.js"),S=100;function x({foldersMap:n,tasksMap:h,rows:T,tasksByFolderMap:D,expanded:y,showHierarchy:w,loadingTasks:p={},isLoadingMore:I=!1}){const s=C.useProjectContext(),g=E.useGetEntityTypeData({projectInfo:s}),P=c.useMemo(()=>JSON.stringify(y),[y]),l=c.useMemo(()=>new Set(Object.entries(y).filter(([q,u])=>u).map(([q])=>q)),[P]),{childToParentMap:R,parentToChildrenMap:m}=c.useMemo(()=>{const q=new Map,u=new Map;for(const i of n.values()){if(!i?.id)continue;const e=i.parentId;if(e){q.set(i.id,e);let r=u.get(e);r||(r=new Set,u.set(e,r)),r.add(i.id)}}return{childToParentMap:q,parentToChildrenMap:u}},[n]),b=c.useMemo(()=>{const q=new Set,u=[];for(const i of n.values())i?.id&&(!i.parentId||!n.has(i.parentId))&&(q.add(i.id),u.push(i.id));for(;u.length>0;){const i=u.shift();if(!l.has(i))continue;const r=m.get(i);if(r)for(const t of r)q.has(t)||(q.add(t),u.push(t))}return q},[n,m,l]);return c.useMemo(()=>{const q=(e,r)=>{const t=g("task",e.taskType),o=v.linksToTableData(e.links,"task",{folderTypes:s?.folderTypes||[],productTypes:s.productTypes||[],taskTypes:s?.taskTypes||[]});return{id:e.id,entityType:"task",parentId:r||e.folderId,folderId:e.folderId,name:e.name||"",label:e.label||e.name||"",icon:t?.icon||null,color:t?.color||null,status:e.status,assignees:e.assignees,tags:e.tags,img:null,subRows:[],subType:e.taskType||null,attrib:e.attrib,ownAttrib:e.ownAttrib,parents:e.parents||[],path:e.parents.join("/")||null,folder:e.parents[e.parents.length-1]||void 0,updatedAt:e.updatedAt,createdAt:e.createdAt,hasReviewables:e.hasReviewables||!1,links:o,subtasks:e.subtasks||[]}};if(!w){const e=[];for(const r of h.values())r.id&&e.push(q(r));for(const r of T||[])e.push(r);if(I){const r=S;{const t=A.generateLoadingRows(r,{type:"task"});e.push(...t)}}return e}const u=new Map,i=[];for(const e of b){const r=n.get(e);if(!r)continue;const t=v.linksToTableData(r.links,"folder",{folderTypes:s?.folderTypes||[],productTypes:s?.productTypes||[],taskTypes:s?.taskTypes||[]}),o={id:e,entityType:"folder",parentId:r.parentId||void 0,folderId:e||null,name:r.name||"",label:r.label||r.name||"",icon:g("folder",r.folderType)?.icon||null,color:null,img:null,subRows:[],status:r.status,tags:r.tags||[],subType:r.folderType||null,ownAttrib:r.ownAttrib||[],path:r.path,folder:r.parents[r.parents.length-1]||void 0,attrib:r.attrib||{},childOnlyMatch:r.childOnlyMatch||!1,updatedAt:r.updatedAt,createdAt:r.createdAt,hasReviewables:r.hasReviewables||!1,hasVersions:r.hasVersions||!1,links:t};if(u.set(e,o),(!r.parentId||!n.has(r.parentId))&&i.push(o),l.has(e)){const f=(D.get(e)||[]).flatMap(d=>h.get(d)||[]);if(f.length||p[e]){const d=new Array(f.length);for(let a=0;a<f.length;a++)d[a]=q(f[a],e);if(p[e]){const a=p[e];if(a>0){const j=A.generateLoadingRows(a,{parentId:e});d.push(...j)}}o.subRows=d}}}for(const e of b){const r=R.get(e);if(!r||!l.has(r))continue;const t=u.get(e),o=u.get(r);!t||!o||o.subRows?.push(t)}for(const e of T||[])i.push(e);return i},[n,h,T,b,R,l,w,p,I])}module.exports=x;
1
+ "use strict";const c=require("react"),v=require("../utils/loadingUtils.cjs.js"),C=require("./useGetEntityTypeData.cjs.js");require("@ynput/ayon-react-components");require("react-toastify");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("../context/CellEditingContext.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");require("../context/ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/SubtasksModulesContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");const S=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("../context/ClipboardContext.cjs.js");require("@tanstack/react-table");require("@tanstack/react-virtual");require("clsx");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("date-fns");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("../context/ProjectDataContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../../SimpleTable/context/SimpleTableContext.cjs.js");require("../../SimpleTable/SimpleTableRowTemplate.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../Slicer/components/SlicerSearch.cjs.js");require("../../Slicer/context/SlicerContext.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");require("../context/ColumnSettingsContext.cjs.js");const D=require("../utils/linksToTableData.cjs.js"),x=100;function M({foldersMap:n,tasksMap:p,rows:h,tasksByFolderMap:P,expanded:b,showHierarchy:g,loadingTasks:d={},isLoadingMore:y=!1}){const w=S.useProjectContext(),R=C.useGetEntityTypeData({projectInfo:w}),j=c.useMemo(()=>JSON.stringify(b),[b]),a=c.useMemo(()=>new Set(Object.entries(b).filter(([q,u])=>u).map(([q])=>q)),[j]),{childToParentMap:m,parentToChildrenMap:A}=c.useMemo(()=>{const q=new Map,u=new Map;for(const i of n.values()){if(!i?.id)continue;const e=i.parentId;if(e){q.set(i.id,e);let r=u.get(e);r||(r=new Set,u.set(e,r)),r.add(i.id)}}return{childToParentMap:q,parentToChildrenMap:u}},[n]),T=c.useMemo(()=>{const q=new Set,u=[];for(const i of n.values())i?.id&&(!i.parentId||!n.has(i.parentId))&&(q.add(i.id),u.push(i.id));for(;u.length>0;){const i=u.shift();if(!a.has(i))continue;const r=A.get(i);if(r)for(const t of r)q.has(t)||(q.add(t),u.push(t))}return q},[n,A,a]);return c.useMemo(()=>{const q=(e,r)=>{const t=R("task",e.taskType),o=D.linksToTableData(e.links,"task",w.anatomy);return{id:e.id,entityType:"task",parentId:r||e.folderId,folderId:e.folderId,name:e.name||"",label:e.label||e.name||"",icon:t?.icon||null,color:t?.color||null,status:e.status,assignees:e.assignees,tags:e.tags,img:null,subRows:[],subType:e.taskType||null,attrib:e.attrib,ownAttrib:e.ownAttrib,parents:e.parents||[],path:e.parents.join("/")||null,folder:e.parents[e.parents.length-1]||void 0,updatedAt:e.updatedAt,createdAt:e.createdAt,hasReviewables:e.hasReviewables||!1,links:o,subtasks:e.subtasks||[]}};if(!g){const e=[];for(const r of p.values())r.id&&e.push(q(r));for(const r of h||[])e.push(r);if(y){const r=x;{const t=v.generateLoadingRows(r,{type:"task"});e.push(...t)}}return e}const u=new Map,i=[];for(const e of T){const r=n.get(e);if(!r)continue;const t=D.linksToTableData(r.links,"folder",w.anatomy),o=R("folder",r.folderType),I={id:e,entityType:"folder",parentId:r.parentId||void 0,folderId:e||null,name:r.name||"",label:r.label||r.name||"",icon:o?.icon||null,color:o?.color||null,img:null,subRows:[],status:r.status,tags:r.tags||[],subType:r.folderType||null,ownAttrib:r.ownAttrib||[],path:r.path,folder:r.parents[r.parents.length-1]||void 0,attrib:r.attrib||{},childOnlyMatch:r.childOnlyMatch||!1,updatedAt:r.updatedAt,createdAt:r.createdAt,hasReviewables:r.hasReviewables||!1,hasVersions:r.hasVersions||!1,links:t};if(u.set(e,I),(!r.parentId||!n.has(r.parentId))&&i.push(I),a.has(e)){const f=(P.get(e)||[]).flatMap(l=>p.get(l)||[]);if(f.length||d[e]){const l=new Array(f.length);for(let s=0;s<f.length;s++)l[s]=q(f[s],e);if(d[e]){const s=d[e];if(s>0){const E=v.generateLoadingRows(s,{parentId:e});l.push(...E)}}I.subRows=l}}}for(const e of T){const r=m.get(e);if(!r||!a.has(r))continue;const t=u.get(e),o=u.get(r);!t||!o||o.subRows?.push(t)}for(const e of h||[])i.push(e);return i},[n,p,h,T,m,a,g,d,y])}module.exports=M;
2
2
  //# sourceMappingURL=useBuildProjectDataTable.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useBuildProjectDataTable.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport {\n EditorTaskNode,\n FolderNodeMap,\n TableRow,\n TaskNodeMap,\n TasksByFolderMap,\n} from '../types/table'\nimport { ExpandedState } from '@tanstack/react-table'\nimport { generateLoadingRows } from '../utils/loadingUtils'\nconst TASKS_INFINITE_QUERY_COUNT = 100\nimport { LoadingTasks } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { TableGroupBy } from '../context'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\n\ntype Params = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n rows?: TableRow[]\n expanded: ExpandedState\n showHierarchy: boolean\n loadingTasks?: LoadingTasks\n isLoadingMore?: boolean\n groupBy?: TableGroupBy\n}\n\nexport default function useBuildProjectDataTable({\n foldersMap,\n tasksMap,\n rows,\n tasksByFolderMap,\n expanded,\n showHierarchy,\n loadingTasks = {},\n isLoadingMore = false,\n}: Params): TableRow[] {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n // Convert expanded object to a stable string for memoization comparison\n const expandedKey = useMemo(() => JSON.stringify(expanded), [expanded])\n\n // Memoize expandedFolderIds set for efficient lookups\n const expandedFolderIds = useMemo(() => {\n return new Set(\n Object.entries(expanded)\n .filter(([_, isExpanded]) => isExpanded)\n .map(([id]) => id),\n )\n }, [expandedKey])\n\n // Memoize relationship maps to avoid rebuilding them on every render\n const { childToParentMap, parentToChildrenMap } = useMemo(() => {\n const childToParent = new Map<string, string>()\n const parentToChildren = new Map<string, Set<string>>()\n\n // Construct relationship maps in a single pass\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n const parentId = folder.parentId\n if (parentId) {\n childToParent.set(folder.id, parentId)\n\n let children = parentToChildren.get(parentId)\n if (!children) {\n children = new Set<string>()\n parentToChildren.set(parentId, children)\n }\n children.add(folder.id)\n }\n }\n\n return { childToParentMap: childToParent, parentToChildrenMap: parentToChildren }\n }, [foldersMap])\n\n // Memoize visible folders calculation\n const visibleFolders = useMemo(() => {\n const visible = new Set<string>()\n\n // Start with root folders and folders with non-existent parents\n const queue: string[] = []\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n // Include folders with no parent OR with a parent that doesn't exist\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n visible.add(folder.id)\n queue.push(folder.id)\n }\n }\n\n // Process queue to identify visible folders (BFS)\n while (queue.length > 0) {\n const folderId = queue.shift()!\n const isParentExpanded = expandedFolderIds.has(folderId)\n\n if (!isParentExpanded) continue\n\n // Add children of expanded folders to visible set\n const childrenIds = parentToChildrenMap.get(folderId)\n if (childrenIds) {\n for (const childId of childrenIds) {\n if (!visible.has(childId)) {\n visible.add(childId)\n queue.push(childId)\n }\n }\n }\n }\n\n return visible\n }, [foldersMap, parentToChildrenMap, expandedFolderIds])\n\n // Final memoized result - build the table tree\n return useMemo(() => {\n // Helper function to create a task row\n const createTaskRow = (task: EditorTaskNode, parentId?: string): TableRow => {\n const typeData = getEntityTypeData('task', task.taskType)\n\n const links = linksToTableData(task.links, 'task', {\n folderTypes: project?.folderTypes || [],\n productTypes: project.productTypes || [],\n taskTypes: project?.taskTypes || [],\n })\n\n return {\n id: task.id,\n entityType: 'task',\n parentId: parentId || task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n path: task.parents.join('/') || null, // todo: probably remove this and just use parents\n folder: task.parents[task.parents.length - 1] || undefined,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n hasReviewables: task.hasReviewables || false,\n links: links,\n subtasks: task.subtasks || [],\n }\n }\n\n // If showHierarchy is false, create a flat list of task rows\n if (!showHierarchy) {\n const flatRows: TableRow[] = []\n\n // Loop through all tasks\n for (const task of tasksMap.values()) {\n if (!task.id) continue\n flatRows.push(createTaskRow(task))\n }\n\n // Loop through all extra rows\n for (const row of rows || []) {\n flatRows.push(row)\n }\n\n // if we are loading more tasks, add loading rows\n if (isLoadingMore) {\n // number of tasks we loading with the infinite query\n const count = TASKS_INFINITE_QUERY_COUNT\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(count, {\n type: 'task',\n })\n\n flatRows.push(...loadingTaskRows)\n }\n }\n\n return flatRows\n }\n\n // Use Map for O(1) lookups\n const rowsById = new Map<string, TableRow>()\n const rootRows: TableRow[] = []\n\n // Create minimal rows for only visible folders\n for (const folderId of visibleFolders) {\n const folder = foldersMap.get(folderId)\n if (!folder) continue\n\n const links = linksToTableData(folder.links, 'folder', {\n folderTypes: project?.folderTypes || [],\n productTypes: project?.productTypes || [],\n taskTypes: project?.taskTypes || [],\n })\n\n // Create row with minimal required properties\n const row: TableRow = {\n id: folderId,\n entityType: 'folder',\n parentId: folder.parentId || undefined,\n folderId: folderId || null, // root folders have no folderId\n name: folder.name || '',\n label: folder.label || folder.name || '',\n icon: getEntityTypeData('folder', folder.folderType)?.icon || null,\n color: null,\n img: null,\n subRows: [],\n status: folder.status,\n tags: folder.tags || [],\n subType: folder.folderType || null,\n ownAttrib: folder.ownAttrib || [],\n path: folder.path,\n folder: folder.parents[folder.parents.length - 1] || undefined,\n attrib: folder.attrib || {},\n childOnlyMatch: folder.childOnlyMatch || false,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n hasReviewables: folder.hasReviewables || false,\n hasVersions: folder.hasVersions || false,\n links: links,\n }\n\n rowsById.set(folderId, row)\n\n // Add root rows directly to the rootRows array\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n rootRows.push(row)\n }\n\n // Process tasks immediately if folder is expanded\n if (expandedFolderIds.has(folderId)) {\n // because tasksByFolderMap is a map of tasks by folder ID\n // we can directly get the tasks for the current folder\n const folderTaskIds = tasksByFolderMap.get(folderId) || []\n const folderTasks = folderTaskIds.flatMap((taskId) => tasksMap.get(taskId) || [])\n\n if (folderTasks.length || loadingTasks[folderId]) {\n // Use array literal with known length for better performance\n const taskRows = new Array<TableRow>(folderTasks.length)\n\n // Direct array assignment is faster than push operations\n for (let i = 0; i < folderTasks.length; i++) {\n taskRows[i] = createTaskRow(folderTasks[i], folderId)\n }\n\n // Add loading rows if applicable\n if (loadingTasks[folderId]) {\n const count = loadingTasks[folderId]\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(count, { parentId: folderId })\n\n taskRows.push(...loadingTaskRows)\n }\n }\n\n row.subRows = taskRows\n }\n }\n }\n\n // Build the folder hierarchy efficiently\n for (const folderId of visibleFolders) {\n const parentId = childToParentMap.get(folderId)\n if (!parentId || !expandedFolderIds.has(parentId)) continue\n\n const childRow = rowsById.get(folderId)\n const parentRow = rowsById.get(parentId)\n\n if (!childRow || !parentRow) continue\n\n // Add folder to its parent's subRows\n parentRow.subRows?.push(childRow)\n }\n\n // Add any extra rows to the root rows\n for (const row of rows || []) {\n rootRows.push(row)\n }\n\n return rootRows\n }, [\n foldersMap,\n tasksMap,\n rows,\n visibleFolders,\n childToParentMap,\n expandedFolderIds,\n showHierarchy,\n loadingTasks,\n isLoadingMore,\n ])\n}\n"],"names":["TASKS_INFINITE_QUERY_COUNT","useBuildProjectDataTable","foldersMap","tasksMap","rows","tasksByFolderMap","expanded","showHierarchy","loadingTasks","isLoadingMore","project","useProjectContext","getEntityTypeData","useGetEntityTypeData","expandedKey","useMemo","expandedFolderIds","_","isExpanded","id","childToParentMap","parentToChildrenMap","childToParent","parentToChildren","folder","parentId","children","visibleFolders","visible","queue","folderId","childrenIds","childId","createTaskRow","task","typeData","links","linksToTableData","flatRows","row","count","loadingTaskRows","generateLoadingRows","rowsById","rootRows","folderTasks","taskId","taskRows","i","childRow","parentRow"],"mappings":"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"}
1
+ {"version":3,"file":"useBuildProjectDataTable.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.ts"],"sourcesContent":["import { useMemo } from 'react'\nimport {\n EditorTaskNode,\n FolderNodeMap,\n TableRow,\n TaskNodeMap,\n TasksByFolderMap,\n} from '../types/table'\nimport { ExpandedState } from '@tanstack/react-table'\nimport { generateLoadingRows } from '../utils/loadingUtils'\nconst TASKS_INFINITE_QUERY_COUNT = 100\nimport { LoadingTasks } from '../types'\nimport { useGetEntityTypeData } from './useGetEntityTypeData'\nimport { TableGroupBy } from '../context'\nimport { linksToTableData } from '../utils'\nimport { ProjectModelWithProducts, useProjectContext } from '@shared/context'\n\ntype Params = {\n foldersMap: FolderNodeMap\n tasksMap: TaskNodeMap\n tasksByFolderMap: TasksByFolderMap\n rows?: TableRow[]\n expanded: ExpandedState\n showHierarchy: boolean\n loadingTasks?: LoadingTasks\n isLoadingMore?: boolean\n groupBy?: TableGroupBy\n}\n\nexport default function useBuildProjectDataTable({\n foldersMap,\n tasksMap,\n rows,\n tasksByFolderMap,\n expanded,\n showHierarchy,\n loadingTasks = {},\n isLoadingMore = false,\n}: Params): TableRow[] {\n const project = useProjectContext()\n const getEntityTypeData = useGetEntityTypeData({ projectInfo: project })\n\n // Convert expanded object to a stable string for memoization comparison\n const expandedKey = useMemo(() => JSON.stringify(expanded), [expanded])\n\n // Memoize expandedFolderIds set for efficient lookups\n const expandedFolderIds = useMemo(() => {\n return new Set(\n Object.entries(expanded)\n .filter(([_, isExpanded]) => isExpanded)\n .map(([id]) => id),\n )\n }, [expandedKey])\n\n // Memoize relationship maps to avoid rebuilding them on every render\n const { childToParentMap, parentToChildrenMap } = useMemo(() => {\n const childToParent = new Map<string, string>()\n const parentToChildren = new Map<string, Set<string>>()\n\n // Construct relationship maps in a single pass\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n const parentId = folder.parentId\n if (parentId) {\n childToParent.set(folder.id, parentId)\n\n let children = parentToChildren.get(parentId)\n if (!children) {\n children = new Set<string>()\n parentToChildren.set(parentId, children)\n }\n children.add(folder.id)\n }\n }\n\n return { childToParentMap: childToParent, parentToChildrenMap: parentToChildren }\n }, [foldersMap])\n\n // Memoize visible folders calculation\n const visibleFolders = useMemo(() => {\n const visible = new Set<string>()\n\n // Start with root folders and folders with non-existent parents\n const queue: string[] = []\n for (const folder of foldersMap.values()) {\n if (!folder?.id) continue\n\n // Include folders with no parent OR with a parent that doesn't exist\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n visible.add(folder.id)\n queue.push(folder.id)\n }\n }\n\n // Process queue to identify visible folders (BFS)\n while (queue.length > 0) {\n const folderId = queue.shift()!\n const isParentExpanded = expandedFolderIds.has(folderId)\n\n if (!isParentExpanded) continue\n\n // Add children of expanded folders to visible set\n const childrenIds = parentToChildrenMap.get(folderId)\n if (childrenIds) {\n for (const childId of childrenIds) {\n if (!visible.has(childId)) {\n visible.add(childId)\n queue.push(childId)\n }\n }\n }\n }\n\n return visible\n }, [foldersMap, parentToChildrenMap, expandedFolderIds])\n\n // Final memoized result - build the table tree\n return useMemo(() => {\n // Helper function to create a task row\n const createTaskRow = (task: EditorTaskNode, parentId?: string): TableRow => {\n const typeData = getEntityTypeData('task', task.taskType)\n\n const links = linksToTableData(task.links, 'task', project.anatomy)\n\n return {\n id: task.id,\n entityType: 'task',\n parentId: parentId || task.folderId,\n folderId: task.folderId,\n name: task.name || '',\n label: task.label || task.name || '',\n icon: typeData?.icon || null,\n color: typeData?.color || null,\n status: task.status,\n assignees: task.assignees,\n tags: task.tags,\n img: null,\n subRows: [],\n subType: task.taskType || null,\n attrib: task.attrib,\n ownAttrib: task.ownAttrib,\n parents: task.parents || [],\n path: task.parents.join('/') || null, // todo: probably remove this and just use parents\n folder: task.parents[task.parents.length - 1] || undefined,\n updatedAt: task.updatedAt,\n createdAt: task.createdAt,\n hasReviewables: task.hasReviewables || false,\n links: links,\n subtasks: task.subtasks || [],\n }\n }\n\n // If showHierarchy is false, create a flat list of task rows\n if (!showHierarchy) {\n const flatRows: TableRow[] = []\n\n // Loop through all tasks\n for (const task of tasksMap.values()) {\n if (!task.id) continue\n flatRows.push(createTaskRow(task))\n }\n\n // Loop through all extra rows\n for (const row of rows || []) {\n flatRows.push(row)\n }\n\n // if we are loading more tasks, add loading rows\n if (isLoadingMore) {\n // number of tasks we loading with the infinite query\n const count = TASKS_INFINITE_QUERY_COUNT\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(count, {\n type: 'task',\n })\n\n flatRows.push(...loadingTaskRows)\n }\n }\n\n return flatRows\n }\n\n // Use Map for O(1) lookups\n const rowsById = new Map<string, TableRow>()\n const rootRows: TableRow[] = []\n\n // Create minimal rows for only visible folders\n for (const folderId of visibleFolders) {\n const folder = foldersMap.get(folderId)\n if (!folder) continue\n\n const links = linksToTableData(folder.links, 'folder', project.anatomy)\n\n const folderTypeData = getEntityTypeData('folder', folder.folderType)\n\n // Create row with minimal required properties\n const row: TableRow = {\n id: folderId,\n entityType: 'folder',\n parentId: folder.parentId || undefined,\n folderId: folderId || null, // root folders have no folderId\n name: folder.name || '',\n label: folder.label || folder.name || '',\n icon: folderTypeData?.icon || null,\n color: folderTypeData?.color || null,\n img: null,\n subRows: [],\n status: folder.status,\n tags: folder.tags || [],\n subType: folder.folderType || null,\n ownAttrib: folder.ownAttrib || [],\n path: folder.path,\n folder: folder.parents[folder.parents.length - 1] || undefined,\n attrib: folder.attrib || {},\n childOnlyMatch: folder.childOnlyMatch || false,\n updatedAt: folder.updatedAt,\n createdAt: folder.createdAt,\n hasReviewables: folder.hasReviewables || false,\n hasVersions: folder.hasVersions || false,\n links: links,\n }\n\n rowsById.set(folderId, row)\n\n // Add root rows directly to the rootRows array\n if (!folder.parentId || !foldersMap.has(folder.parentId)) {\n rootRows.push(row)\n }\n\n // Process tasks immediately if folder is expanded\n if (expandedFolderIds.has(folderId)) {\n // because tasksByFolderMap is a map of tasks by folder ID\n // we can directly get the tasks for the current folder\n const folderTaskIds = tasksByFolderMap.get(folderId) || []\n const folderTasks = folderTaskIds.flatMap((taskId) => tasksMap.get(taskId) || [])\n\n if (folderTasks.length || loadingTasks[folderId]) {\n // Use array literal with known length for better performance\n const taskRows = new Array<TableRow>(folderTasks.length)\n\n // Direct array assignment is faster than push operations\n for (let i = 0; i < folderTasks.length; i++) {\n taskRows[i] = createTaskRow(folderTasks[i], folderId)\n }\n\n // Add loading rows if applicable\n if (loadingTasks[folderId]) {\n const count = loadingTasks[folderId]\n if (count > 0) {\n const loadingTaskRows = generateLoadingRows(count, { parentId: folderId })\n\n taskRows.push(...loadingTaskRows)\n }\n }\n\n row.subRows = taskRows\n }\n }\n }\n\n // Build the folder hierarchy efficiently\n for (const folderId of visibleFolders) {\n const parentId = childToParentMap.get(folderId)\n if (!parentId || !expandedFolderIds.has(parentId)) continue\n\n const childRow = rowsById.get(folderId)\n const parentRow = rowsById.get(parentId)\n\n if (!childRow || !parentRow) continue\n\n // Add folder to its parent's subRows\n parentRow.subRows?.push(childRow)\n }\n\n // Add any extra rows to the root rows\n for (const row of rows || []) {\n rootRows.push(row)\n }\n\n return rootRows\n }, [\n foldersMap,\n tasksMap,\n rows,\n visibleFolders,\n childToParentMap,\n expandedFolderIds,\n showHierarchy,\n loadingTasks,\n isLoadingMore,\n ])\n}\n"],"names":["TASKS_INFINITE_QUERY_COUNT","useBuildProjectDataTable","foldersMap","tasksMap","rows","tasksByFolderMap","expanded","showHierarchy","loadingTasks","isLoadingMore","project","useProjectContext","getEntityTypeData","useGetEntityTypeData","expandedKey","useMemo","expandedFolderIds","_","isExpanded","id","childToParentMap","parentToChildrenMap","childToParent","parentToChildren","folder","parentId","children","visibleFolders","visible","queue","folderId","childrenIds","childId","createTaskRow","task","typeData","links","linksToTableData","flatRows","row","count","loadingTaskRows","generateLoadingRows","rowsById","rootRows","folderTypeData","folderTasks","taskId","taskRows","i","childRow","parentRow"],"mappings":"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"}