@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":"CellEditingProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/CellEditingProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { CellId, getTypeDefaultValue, parseCellId } from '../utils'\nimport useHistory from '../hooks/useHistory'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport useUpdateTableData, {\n EntityUpdate,\n InheritFromParentEntity,\n UpdateTableEntities,\n} from '../hooks/useUpdateTableData'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport { useProjectContext } from '@shared/context'\nimport { useUpdateSubtasksMutation } from '@shared/api'\nimport validateUpdateEntities from '../utils/validateUpdateEntities'\nimport { toast } from 'react-toastify'\nimport { CellEditingContext } from './CellEditingContext'\n\nexport const CellEditingProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [editingCellId, setEditingCellId] = useState<CellId | null>(null)\n\n // Memoize these functions to prevent unnecessary re-renders\n const isEditing = useCallback((id: CellId) => id === editingCellId, [editingCellId])\n\n // Get history functions\n const history = useHistory()\n const {\n pushHistory,\n undo: undoHistory,\n redo: redoHistory,\n canUndo,\n canRedo,\n removeHistoryEntries,\n } = history\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities: updateOverviewEntities, inheritFromParent } = useUpdateTableData({\n pushHistory,\n removeHistoryEntries,\n })\n const { attribFields, getEntityById } = useProjectTableContext()\n const { projectName } = useProjectContext()\n const [updateSubtasks] = useUpdateSubtasksMutation()\n\n const handleUpdateEntities: UpdateTableEntities = useCallback(\n async (entities = [], pushToHistory = true) => {\n try {\n // validate the entities before updating\n validateUpdateEntities(entities, attribFields)\n\n // if validation passes, update the entities\n return await updateOverviewEntities(entities, pushToHistory)\n } catch (error: any) {\n // if validation fails, show a toast and return\n toast.error(error.message)\n\n return Promise.reject(error)\n }\n },\n [updateOverviewEntities, attribFields],\n )\n\n // Handle undo\n const handleUndo = async () => {\n const [entitiesToUndo, entitiesToInherit, callbacks] = undoHistory() || []\n\n if (entitiesToUndo && entitiesToUndo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToUndo, false)\n } catch (error) {\n toast.error('Failed to undo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom undo action')\n }\n })\n }\n }\n\n // Handle redo\n const handleRedo = async () => {\n const [entitiesToRedo, entitiesToInherit, callbacks] = redoHistory() || []\n\n if (entitiesToRedo && entitiesToRedo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToRedo, false)\n } catch (error) {\n toast.error('Failed to redo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom redo action')\n }\n })\n }\n }\n\n // Handle clearing cells\n const handleClear = useCallback(\n async (cells: CellId[]) => {\n // we explicity update the value of the cells to their default values\n const entityUpdates: EntityUpdate[] = []\n // of if they are inheritable, we inherit from the parent entity\n const entityInheriting: InheritFromParentEntity[] = []\n // Track subtasks to clear (include previous subtasks for history)\n const subtasksToClear: Array<{ taskId: string; previousSubtasks?: any[] }> = []\n\n for (const cellId of cells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n if (!colId || !rowId) {\n console.warn(`Invalid cellId: ${cellId}`)\n continue\n }\n\n // get the entity from the rowId\n const entity = getEntityById(rowId)\n\n if (!entity) return\n\n // get the field name and check if it is an attribute\n const fieldName = colId.replace('attrib_', '')\n const isAttrib = colId.startsWith('attrib_')\n\n if (!fieldName) {\n console.warn(`Invalid column ID: ${colId}`)\n continue\n }\n\n // Special handling for subtasks\n if (colId === 'subtasks') {\n // Only clear subtasks for tasks\n if (entity.entityType === 'task') {\n const existingSubtasks = ('subtasks' in entity && entity.subtasks) || []\n subtasksToClear.push({ taskId: rowId, previousSubtasks: existingSubtasks })\n }\n continue\n }\n\n let defaultValue: any = null\n if (isAttrib) {\n // find default value for the attribute\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (!attribField) {\n console.warn(`Attribute field not found: ${fieldName}`)\n continue\n }\n // check if the attribute is inheritable\n if (attribField.data.inherit) {\n // inherit from parent entity\n // check if this entity has already been added to the inheriting list\n const existingInherit = entityInheriting.find((e) => e.entityId === entity.entityId)\n if (existingInherit) {\n // add the attrib to the existing entity\n existingInherit.attribs.push(fieldName)\n } else {\n // add a new entity to the inheriting list\n entityInheriting.push({\n entityId: entity.entityId,\n attribs: [fieldName],\n entityType: entity.entityType,\n ownAttrib: entity.ownAttrib || [],\n rowId: rowId,\n folderId:\n entity.entityType === 'folder'\n ? entity.parentId\n : entity.entityType === 'task'\n ? entity.folderId\n : undefined,\n })\n }\n continue\n } else {\n // set explicit default value\n defaultValue = attribField.data.default || getTypeDefaultValue(attribField.data.type)\n }\n } else if (fieldName === 'assignees') {\n // for assignees, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else if (fieldName === 'tags') {\n // for tags, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else {\n // we ignore other fields\n console.warn(`Field not editable: ${fieldName}`)\n continue\n }\n\n // create the entity update\n const update: EntityUpdate = {\n id: rowId,\n rowId: rowId,\n field: fieldName,\n value: defaultValue,\n isAttrib,\n type: entity.entityType,\n }\n\n entityUpdates.push(update)\n }\n\n // if we have updates, call the updateEntities function\n if (entityUpdates.length > 0) {\n try {\n await handleUpdateEntities(entityUpdates, true)\n } catch (error) {\n toast.error('Failed to clear selected cells')\n console.error('Error clearing selected cells:', error)\n }\n }\n\n // if we have inheritable attributes, call inheritFromParent\n if (entityInheriting.length > 0) {\n try {\n await inheritFromParent(entityInheriting, true)\n } catch (error) {\n toast.error('Failed to inherit parent values for cleared cells')\n console.error('Error clearing inherited cells:', error)\n }\n }\n\n // Clear subtasks by calling updateSubtasks with empty array\n if (subtasksToClear.length > 0) {\n try {\n // push undo/redo history entries for clearing subtasks\n if (pushHistory) {\n subtasksToClear.forEach(({ taskId, previousSubtasks }) => {\n const prev = previousSubtasks || []\n const undoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: prev })\n .unwrap()\n .catch(() => {})\n }\n const redoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: [] })\n .unwrap()\n .catch(() => {})\n }\n pushHistory([undoCallback], [redoCallback])\n })\n }\n\n const subtasksPromises = subtasksToClear.map(({ taskId }) =>\n updateSubtasks({ projectName, taskId, subtasks: [] }).unwrap(),\n )\n await Promise.all(subtasksPromises)\n } catch (error) {\n toast.error('Failed to clear subtasks')\n console.error('Error clearing subtasks:', error)\n }\n }\n\n // if nothing was done, warn the user\n if (\n entityUpdates.length === 0 &&\n entityInheriting.length === 0 &&\n subtasksToClear.length === 0\n ) {\n toast.warn('No valid cells selected to clear')\n }\n },\n [attribFields, updateOverviewEntities, projectName, updateSubtasks, pushHistory, getEntityById],\n )\n\n const value = useMemo(\n () => ({\n editingCellId,\n setEditingCellId,\n isEditing,\n updateEntities: handleUpdateEntities,\n inheritFromParent,\n undo: handleUndo,\n redo: handleRedo,\n history,\n }),\n [\n editingCellId,\n isEditing,\n handleUpdateEntities,\n inheritFromParent,\n handleUndo,\n handleRedo,\n history,\n ],\n )\n\n // Listen for shortcuts\n // undo - ctrl + z\n // redo - ctrl + y or ctrl + shift + z\n // clear - backspace or delete\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable ||\n target.getAttribute('role') === 'textbox' ||\n target.tagName === 'LI'\n ) {\n return\n }\n\n // check focus is on table or body\n const isTableFocused = target?.closest('table') !== null || target === document.body\n\n if (!isTableFocused) return\n\n const isMac =\n typeof navigator !== 'undefined' &&\n // @ts-expect-error\n ((navigator.userAgentData &&\n // @ts-expect-error\n navigator.userAgentData.platform.toUpperCase().includes('MAC')) ||\n navigator.userAgent.toUpperCase().includes('MAC'))\n const ctrlKey = isMac ? e.metaKey : e.ctrlKey\n\n // undo\n if (ctrlKey && e.key === 'z') {\n e.preventDefault()\n if (canUndo) handleUndo()\n }\n // redo\n if (\n (ctrlKey && e.key === 'y') ||\n (ctrlKey && e.shiftKey && e.key === 'z') ||\n (ctrlKey && e.key === 'Z')\n ) {\n e.preventDefault()\n if (canRedo) handleRedo()\n }\n // clear\n if ((e.key === 'Backspace' && !(e.ctrlKey || e.metaKey)) || e.key === 'Delete') {\n // check we have cells selected\n if (!selectedCells.size) return\n e.preventDefault()\n\n // find selected cells elements\n const selectedCellElements = Array.from(selectedCells).map((cellId) =>\n document.getElementById(cellId),\n )\n\n // check the cell is editable from the classnames\n const isEditable = (cell: HTMLElement | null) => cell?.classList.contains('editable')\n\n // filter out non-editable cells\n const editableCells = selectedCellElements.filter(isEditable)\n if (editableCells.length === 0) {\n toast.warn('No editable cells selected to clear')\n return\n }\n // clear the selected cells\n handleClear(editableCells.map((cell) => cell?.id).filter(Boolean) as CellId[])\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [canUndo, canRedo, handleUndo, handleRedo, selectedCells, handleClear])\n\n return <CellEditingContext.Provider value={value}>{children}</CellEditingContext.Provider>\n}\n"],"names":["CellEditingProvider","children","editingCellId","setEditingCellId","useState","isEditing","useCallback","id","history","useHistory","pushHistory","undoHistory","redoHistory","canUndo","canRedo","removeHistoryEntries","selectedCells","useSelectionCellsContext","updateOverviewEntities","inheritFromParent","useUpdateTableData","attribFields","getEntityById","useProjectTableContext","projectName","useProjectContext","updateSubtasks","useUpdateSubtasksMutation","handleUpdateEntities","entities","pushToHistory","validateUpdateEntities","error","toast","handleUndo","entitiesToUndo","entitiesToInherit","callbacks","callback","handleRedo","entitiesToRedo","handleClear","cells","entityUpdates","entityInheriting","subtasksToClear","cellId","colId","rowId","parseCellId","entity","fieldName","isAttrib","existingSubtasks","defaultValue","attribField","f","existingInherit","e","getTypeDefaultValue","update","taskId","previousSubtasks","prev","subtasksPromises","value","useMemo","useEffect","onKeyDown","target","ctrlKey","selectedCellElements","isEditable","cell","editableCells","jsx","CellEditingContext"],"mappings":"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"}
1
+ {"version":3,"file":"CellEditingProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/CellEditingProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { CellId, getTypeDefaultValue, parseCellId } from '../utils'\nimport useHistory from '../hooks/useHistory'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport useUpdateTableData, {\n EntityUpdate,\n InheritFromParentEntity,\n UpdateTableEntities,\n} from '../hooks/useUpdateTableData'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport { useProjectContext } from '@shared/context'\nimport { useUpdateSubtasksMutation } from '@shared/api'\nimport validateUpdateEntities from '../utils/validateUpdateEntities'\nimport { toast } from 'react-toastify'\nimport { CellEditingContext } from './CellEditingContext'\n\nexport const CellEditingProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [editingCellId, setEditingCellId] = useState<CellId | null>(null)\n\n // Memoize these functions to prevent unnecessary re-renders\n const isEditing = useCallback((id: CellId) => id === editingCellId, [editingCellId])\n\n // Get history functions\n const history = useHistory()\n const {\n pushHistory,\n undo: undoHistory,\n redo: redoHistory,\n canUndo,\n canRedo,\n removeHistoryEntries,\n } = history\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities: updateOverviewEntities, inheritFromParent } = useUpdateTableData({\n pushHistory,\n removeHistoryEntries,\n })\n const { attribFields, getEntityById } = useProjectTableContext()\n const { projectName } = useProjectContext()\n const [updateSubtasks] = useUpdateSubtasksMutation()\n\n const handleUpdateEntities: UpdateTableEntities = useCallback(\n async (entities = [], pushToHistory = true) => {\n try {\n // validate the entities before updating\n validateUpdateEntities(entities, attribFields)\n\n // if validation passes, update the entities\n return await updateOverviewEntities(entities, pushToHistory)\n } catch (error: any) {\n // if validation fails, show a toast and return\n toast.error(error.message)\n\n return Promise.reject(error)\n }\n },\n [updateOverviewEntities, attribFields],\n )\n\n // Handle undo\n const handleUndo = async () => {\n const [entitiesToUndo, entitiesToInherit, callbacks] = undoHistory() || []\n\n if (entitiesToUndo && entitiesToUndo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToUndo, false)\n } catch (error) {\n toast.error('Failed to undo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom undo action')\n }\n })\n }\n }\n\n // Handle redo\n const handleRedo = async () => {\n const [entitiesToRedo, entitiesToInherit, callbacks] = redoHistory() || []\n\n if (entitiesToRedo && entitiesToRedo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToRedo, false)\n } catch (error) {\n toast.error('Failed to redo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom redo action')\n }\n })\n }\n }\n\n // Handle clearing cells\n const handleClear = useCallback(\n async (cells: CellId[]) => {\n // we explicity update the value of the cells to their default values\n const entityUpdates: EntityUpdate[] = []\n // of if they are inheritable, we inherit from the parent entity\n const entityInheriting: InheritFromParentEntity[] = []\n // Track subtasks to clear (include previous subtasks for history)\n const subtasksToClear: Array<{ taskId: string; previousSubtasks?: any[] }> = []\n\n for (const cellId of cells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n if (!colId || !rowId) {\n console.warn(`Invalid cellId: ${cellId}`)\n continue\n }\n\n // get the entity from the rowId\n const entity = getEntityById(rowId)\n\n if (!entity) return\n\n // get the field name and check if it is an attribute\n const fieldName = colId.replace('attrib_', '')\n const isAttrib = colId.startsWith('attrib_')\n\n if (!fieldName) {\n console.warn(`Invalid column ID: ${colId}`)\n continue\n }\n\n // Special handling for subtasks\n if (colId === 'subtasks') {\n // Only clear subtasks for tasks\n if (entity.entityType === 'task') {\n const existingSubtasks = ('subtasks' in entity && entity.subtasks) || []\n subtasksToClear.push({ taskId: rowId, previousSubtasks: existingSubtasks })\n }\n continue\n }\n\n let defaultValue: any = null\n if (isAttrib) {\n // find default value for the attribute\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (!attribField) {\n console.warn(`Attribute field not found: ${fieldName}`)\n continue\n }\n // check if the attribute is inheritable\n if (attribField.data.inherit) {\n // inherit from parent entity\n // check if this entity has already been added to the inheriting list\n const existingInherit = entityInheriting.find((e) => e.entityId === entity.entityId)\n if (existingInherit) {\n // add the attrib to the existing entity\n existingInherit.attribs.push(fieldName)\n } else {\n // add a new entity to the inheriting list\n entityInheriting.push({\n entityId: entity.entityId,\n attribs: [fieldName],\n entityType: entity.entityType,\n ownAttrib: entity.ownAttrib || [],\n rowId: rowId,\n folderId:\n entity.entityType === 'folder'\n ? entity.parentId\n : entity.entityType === 'task'\n ? entity.folderId\n : undefined,\n })\n }\n continue\n } else {\n // set explicit default value\n defaultValue = attribField.data.default || getTypeDefaultValue(attribField.data.type)\n }\n } else if (fieldName === 'assignees') {\n // for assignees, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else if (fieldName === 'tags') {\n // for tags, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else {\n // we ignore other fields\n console.warn(`Field not editable: ${fieldName}`)\n continue\n }\n\n // create the entity update\n const update: EntityUpdate = {\n id: rowId,\n rowId: rowId,\n field: fieldName,\n value: defaultValue,\n isAttrib,\n type: entity.entityType,\n }\n\n entityUpdates.push(update)\n }\n\n // if we have updates, call the updateEntities function\n if (entityUpdates.length > 0) {\n try {\n await handleUpdateEntities(entityUpdates, true)\n } catch (error) {\n toast.error('Failed to clear selected cells')\n console.error('Error clearing selected cells:', error)\n }\n }\n\n // if we have inheritable attributes, call inheritFromParent\n if (entityInheriting.length > 0) {\n try {\n await inheritFromParent(entityInheriting, true)\n } catch (error) {\n toast.error('Failed to inherit parent values for cleared cells')\n console.error('Error clearing inherited cells:', error)\n }\n }\n\n // Clear subtasks by calling updateSubtasks with empty array\n if (subtasksToClear.length > 0) {\n try {\n // push undo/redo history entries for clearing subtasks\n if (pushHistory) {\n subtasksToClear.forEach(({ taskId, previousSubtasks }) => {\n const prev = previousSubtasks || []\n const undoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: prev })\n .unwrap()\n .catch(() => {})\n }\n const redoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: [] })\n .unwrap()\n .catch(() => {})\n }\n pushHistory([undoCallback], [redoCallback])\n })\n }\n\n const subtasksPromises = subtasksToClear.map(({ taskId }) =>\n updateSubtasks({ projectName, taskId, subtasks: [] }).unwrap(),\n )\n await Promise.all(subtasksPromises)\n } catch (error) {\n toast.error('Failed to clear subtasks')\n console.error('Error clearing subtasks:', error)\n }\n }\n\n // if nothing was done, warn the user\n if (\n entityUpdates.length === 0 &&\n entityInheriting.length === 0 &&\n subtasksToClear.length === 0\n ) {\n toast.warn('No valid cells selected to clear')\n }\n },\n [attribFields, updateOverviewEntities, projectName, updateSubtasks, pushHistory, getEntityById],\n )\n\n const value = useMemo(\n () => ({\n editingCellId,\n setEditingCellId,\n isEditing,\n updateEntities: handleUpdateEntities,\n inheritFromParent,\n undo: handleUndo,\n redo: handleRedo,\n history,\n }),\n [\n editingCellId,\n isEditing,\n handleUpdateEntities,\n inheritFromParent,\n handleUndo,\n handleRedo,\n history,\n ],\n )\n\n // Listen for shortcuts\n // undo - ctrl + z\n // redo - ctrl + y or ctrl + shift + z\n // clear - backspace or delete\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable ||\n target.getAttribute('role') === 'textbox' ||\n target.tagName === 'LI'\n ) {\n return\n }\n\n // check focus is on table or body\n const isTableFocused = target?.closest('table') !== null || target === document.body\n\n if (!isTableFocused) return\n\n const isMac =\n typeof navigator !== 'undefined' &&\n // @ts-expect-error\n ((navigator.userAgentData &&\n // @ts-expect-error\n navigator.userAgentData.platform.toUpperCase().includes('MAC')) ||\n navigator.userAgent.toUpperCase().includes('MAC'))\n const ctrlKey = isMac ? e.metaKey : e.ctrlKey\n\n // undo\n if (ctrlKey && e.key === 'z') {\n e.preventDefault()\n if (canUndo) handleUndo()\n }\n // redo\n if (\n (ctrlKey && e.key === 'y') ||\n (ctrlKey && e.shiftKey && e.key === 'z') ||\n (ctrlKey && e.key === 'Z')\n ) {\n e.preventDefault()\n if (canRedo) handleRedo()\n }\n // clear\n if ((e.key === 'Backspace' && !(e.ctrlKey || e.metaKey)) || e.key === 'Delete') {\n // check we have cells selected\n if (!selectedCells.size) return\n e.preventDefault()\n\n // find selected cells elements\n const selectedCellElements = Array.from(selectedCells).map((cellId) =>\n document.getElementById(cellId),\n )\n\n // check the cell is editable from the classnames\n const isEditable = (cell: HTMLElement | null) => cell?.classList.contains('editable')\n\n // filter out non-editable cells\n const editableCells = selectedCellElements.filter(isEditable)\n if (editableCells.length === 0) {\n toast.warn('No editable cells selected to clear')\n return\n }\n // clear the selected cells\n handleClear(editableCells.map((cell) => cell?.id).filter(Boolean) as CellId[])\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [canUndo, canRedo, handleUndo, handleRedo, selectedCells, handleClear])\n\n return <CellEditingContext.Provider value={value}>{children}</CellEditingContext.Provider>\n}\n"],"names":["CellEditingProvider","children","editingCellId","setEditingCellId","useState","isEditing","useCallback","id","history","useHistory","pushHistory","undoHistory","redoHistory","canUndo","canRedo","removeHistoryEntries","selectedCells","useSelectionCellsContext","updateOverviewEntities","inheritFromParent","useUpdateTableData","attribFields","getEntityById","useProjectTableContext","projectName","useProjectContext","updateSubtasks","useUpdateSubtasksMutation","handleUpdateEntities","entities","pushToHistory","validateUpdateEntities","error","toast","handleUndo","entitiesToUndo","entitiesToInherit","callbacks","callback","handleRedo","entitiesToRedo","handleClear","cells","entityUpdates","entityInheriting","subtasksToClear","cellId","colId","rowId","parseCellId","entity","fieldName","isAttrib","existingSubtasks","defaultValue","attribField","f","existingInherit","e","getTypeDefaultValue","update","taskId","previousSubtasks","prev","subtasksPromises","value","useMemo","useEffect","onKeyDown","target","ctrlKey","selectedCellElements","isEditable","cell","editableCells","jsx","CellEditingContext"],"mappings":"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"}
@@ -109,6 +109,7 @@ import "../../../api/queries/review/getReview.es.js";
109
109
  import "../../../api/queries/review/updateReview.es.js";
110
110
  import "../../../api/queries/share/share.es.js";
111
111
  import "../../../api/queries/system/getSystem.es.js";
112
+ import "../../../api/queries/tasks/getTasks.es.js";
112
113
  import { useUpdateSubtasksMutation as W } from "../../../api/queries/tasks/updateTasks.es.js";
113
114
  import "../../../api/queries/userDashboard/getUserDashboard.es.js";
114
115
  import "../../../api/queries/users/getUsers.es.js";
@@ -261,10 +262,11 @@ import "../../../components/VersionUploader/context/VersionUploadContext.es.js";
261
262
  import "../../../components/Watchers/Watchers.es.js";
262
263
  import "../../../components/Menu/Menu.styled.es.js";
263
264
  import "../../../components/Menu/MenuItem.es.js";
265
+ import "../../../components/ReviewablesSelector/ReviewablesSelector.styled.es.js";
264
266
  import "../widgets/EmptyWidget.es.js";
265
267
  import "../widgets/ErrorWidget.es.js";
266
268
  import "../widgets/LoadMoreWidget.es.js";
267
- const Je = ({ children: j }) => {
269
+ const Ye = ({ children: j }) => {
268
270
  const [f, K] = $(null), A = F((o) => o === f, [f]), I = J(), {
269
271
  pushHistory: y,
270
272
  undo: M,
@@ -466,6 +468,6 @@ const Je = ({ children: j }) => {
466
468
  }, [U, D, k, E, w, N]), /* @__PURE__ */ L.jsx(Z.Provider, { value: H, children: j });
467
469
  };
468
470
  export {
469
- Je as CellEditingProvider
471
+ Ye as CellEditingProvider
470
472
  };
471
473
  //# sourceMappingURL=CellEditingProvider.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CellEditingProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/CellEditingProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { CellId, getTypeDefaultValue, parseCellId } from '../utils'\nimport useHistory from '../hooks/useHistory'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport useUpdateTableData, {\n EntityUpdate,\n InheritFromParentEntity,\n UpdateTableEntities,\n} from '../hooks/useUpdateTableData'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport { useProjectContext } from '@shared/context'\nimport { useUpdateSubtasksMutation } from '@shared/api'\nimport validateUpdateEntities from '../utils/validateUpdateEntities'\nimport { toast } from 'react-toastify'\nimport { CellEditingContext } from './CellEditingContext'\n\nexport const CellEditingProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [editingCellId, setEditingCellId] = useState<CellId | null>(null)\n\n // Memoize these functions to prevent unnecessary re-renders\n const isEditing = useCallback((id: CellId) => id === editingCellId, [editingCellId])\n\n // Get history functions\n const history = useHistory()\n const {\n pushHistory,\n undo: undoHistory,\n redo: redoHistory,\n canUndo,\n canRedo,\n removeHistoryEntries,\n } = history\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities: updateOverviewEntities, inheritFromParent } = useUpdateTableData({\n pushHistory,\n removeHistoryEntries,\n })\n const { attribFields, getEntityById } = useProjectTableContext()\n const { projectName } = useProjectContext()\n const [updateSubtasks] = useUpdateSubtasksMutation()\n\n const handleUpdateEntities: UpdateTableEntities = useCallback(\n async (entities = [], pushToHistory = true) => {\n try {\n // validate the entities before updating\n validateUpdateEntities(entities, attribFields)\n\n // if validation passes, update the entities\n return await updateOverviewEntities(entities, pushToHistory)\n } catch (error: any) {\n // if validation fails, show a toast and return\n toast.error(error.message)\n\n return Promise.reject(error)\n }\n },\n [updateOverviewEntities, attribFields],\n )\n\n // Handle undo\n const handleUndo = async () => {\n const [entitiesToUndo, entitiesToInherit, callbacks] = undoHistory() || []\n\n if (entitiesToUndo && entitiesToUndo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToUndo, false)\n } catch (error) {\n toast.error('Failed to undo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom undo action')\n }\n })\n }\n }\n\n // Handle redo\n const handleRedo = async () => {\n const [entitiesToRedo, entitiesToInherit, callbacks] = redoHistory() || []\n\n if (entitiesToRedo && entitiesToRedo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToRedo, false)\n } catch (error) {\n toast.error('Failed to redo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom redo action')\n }\n })\n }\n }\n\n // Handle clearing cells\n const handleClear = useCallback(\n async (cells: CellId[]) => {\n // we explicity update the value of the cells to their default values\n const entityUpdates: EntityUpdate[] = []\n // of if they are inheritable, we inherit from the parent entity\n const entityInheriting: InheritFromParentEntity[] = []\n // Track subtasks to clear (include previous subtasks for history)\n const subtasksToClear: Array<{ taskId: string; previousSubtasks?: any[] }> = []\n\n for (const cellId of cells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n if (!colId || !rowId) {\n console.warn(`Invalid cellId: ${cellId}`)\n continue\n }\n\n // get the entity from the rowId\n const entity = getEntityById(rowId)\n\n if (!entity) return\n\n // get the field name and check if it is an attribute\n const fieldName = colId.replace('attrib_', '')\n const isAttrib = colId.startsWith('attrib_')\n\n if (!fieldName) {\n console.warn(`Invalid column ID: ${colId}`)\n continue\n }\n\n // Special handling for subtasks\n if (colId === 'subtasks') {\n // Only clear subtasks for tasks\n if (entity.entityType === 'task') {\n const existingSubtasks = ('subtasks' in entity && entity.subtasks) || []\n subtasksToClear.push({ taskId: rowId, previousSubtasks: existingSubtasks })\n }\n continue\n }\n\n let defaultValue: any = null\n if (isAttrib) {\n // find default value for the attribute\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (!attribField) {\n console.warn(`Attribute field not found: ${fieldName}`)\n continue\n }\n // check if the attribute is inheritable\n if (attribField.data.inherit) {\n // inherit from parent entity\n // check if this entity has already been added to the inheriting list\n const existingInherit = entityInheriting.find((e) => e.entityId === entity.entityId)\n if (existingInherit) {\n // add the attrib to the existing entity\n existingInherit.attribs.push(fieldName)\n } else {\n // add a new entity to the inheriting list\n entityInheriting.push({\n entityId: entity.entityId,\n attribs: [fieldName],\n entityType: entity.entityType,\n ownAttrib: entity.ownAttrib || [],\n rowId: rowId,\n folderId:\n entity.entityType === 'folder'\n ? entity.parentId\n : entity.entityType === 'task'\n ? entity.folderId\n : undefined,\n })\n }\n continue\n } else {\n // set explicit default value\n defaultValue = attribField.data.default || getTypeDefaultValue(attribField.data.type)\n }\n } else if (fieldName === 'assignees') {\n // for assignees, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else if (fieldName === 'tags') {\n // for tags, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else {\n // we ignore other fields\n console.warn(`Field not editable: ${fieldName}`)\n continue\n }\n\n // create the entity update\n const update: EntityUpdate = {\n id: rowId,\n rowId: rowId,\n field: fieldName,\n value: defaultValue,\n isAttrib,\n type: entity.entityType,\n }\n\n entityUpdates.push(update)\n }\n\n // if we have updates, call the updateEntities function\n if (entityUpdates.length > 0) {\n try {\n await handleUpdateEntities(entityUpdates, true)\n } catch (error) {\n toast.error('Failed to clear selected cells')\n console.error('Error clearing selected cells:', error)\n }\n }\n\n // if we have inheritable attributes, call inheritFromParent\n if (entityInheriting.length > 0) {\n try {\n await inheritFromParent(entityInheriting, true)\n } catch (error) {\n toast.error('Failed to inherit parent values for cleared cells')\n console.error('Error clearing inherited cells:', error)\n }\n }\n\n // Clear subtasks by calling updateSubtasks with empty array\n if (subtasksToClear.length > 0) {\n try {\n // push undo/redo history entries for clearing subtasks\n if (pushHistory) {\n subtasksToClear.forEach(({ taskId, previousSubtasks }) => {\n const prev = previousSubtasks || []\n const undoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: prev })\n .unwrap()\n .catch(() => {})\n }\n const redoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: [] })\n .unwrap()\n .catch(() => {})\n }\n pushHistory([undoCallback], [redoCallback])\n })\n }\n\n const subtasksPromises = subtasksToClear.map(({ taskId }) =>\n updateSubtasks({ projectName, taskId, subtasks: [] }).unwrap(),\n )\n await Promise.all(subtasksPromises)\n } catch (error) {\n toast.error('Failed to clear subtasks')\n console.error('Error clearing subtasks:', error)\n }\n }\n\n // if nothing was done, warn the user\n if (\n entityUpdates.length === 0 &&\n entityInheriting.length === 0 &&\n subtasksToClear.length === 0\n ) {\n toast.warn('No valid cells selected to clear')\n }\n },\n [attribFields, updateOverviewEntities, projectName, updateSubtasks, pushHistory, getEntityById],\n )\n\n const value = useMemo(\n () => ({\n editingCellId,\n setEditingCellId,\n isEditing,\n updateEntities: handleUpdateEntities,\n inheritFromParent,\n undo: handleUndo,\n redo: handleRedo,\n history,\n }),\n [\n editingCellId,\n isEditing,\n handleUpdateEntities,\n inheritFromParent,\n handleUndo,\n handleRedo,\n history,\n ],\n )\n\n // Listen for shortcuts\n // undo - ctrl + z\n // redo - ctrl + y or ctrl + shift + z\n // clear - backspace or delete\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable ||\n target.getAttribute('role') === 'textbox' ||\n target.tagName === 'LI'\n ) {\n return\n }\n\n // check focus is on table or body\n const isTableFocused = target?.closest('table') !== null || target === document.body\n\n if (!isTableFocused) return\n\n const isMac =\n typeof navigator !== 'undefined' &&\n // @ts-expect-error\n ((navigator.userAgentData &&\n // @ts-expect-error\n navigator.userAgentData.platform.toUpperCase().includes('MAC')) ||\n navigator.userAgent.toUpperCase().includes('MAC'))\n const ctrlKey = isMac ? e.metaKey : e.ctrlKey\n\n // undo\n if (ctrlKey && e.key === 'z') {\n e.preventDefault()\n if (canUndo) handleUndo()\n }\n // redo\n if (\n (ctrlKey && e.key === 'y') ||\n (ctrlKey && e.shiftKey && e.key === 'z') ||\n (ctrlKey && e.key === 'Z')\n ) {\n e.preventDefault()\n if (canRedo) handleRedo()\n }\n // clear\n if ((e.key === 'Backspace' && !(e.ctrlKey || e.metaKey)) || e.key === 'Delete') {\n // check we have cells selected\n if (!selectedCells.size) return\n e.preventDefault()\n\n // find selected cells elements\n const selectedCellElements = Array.from(selectedCells).map((cellId) =>\n document.getElementById(cellId),\n )\n\n // check the cell is editable from the classnames\n const isEditable = (cell: HTMLElement | null) => cell?.classList.contains('editable')\n\n // filter out non-editable cells\n const editableCells = selectedCellElements.filter(isEditable)\n if (editableCells.length === 0) {\n toast.warn('No editable cells selected to clear')\n return\n }\n // clear the selected cells\n handleClear(editableCells.map((cell) => cell?.id).filter(Boolean) as CellId[])\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [canUndo, canRedo, handleUndo, handleRedo, selectedCells, handleClear])\n\n return <CellEditingContext.Provider value={value}>{children}</CellEditingContext.Provider>\n}\n"],"names":["CellEditingProvider","children","editingCellId","setEditingCellId","useState","isEditing","useCallback","id","history","useHistory","pushHistory","undoHistory","redoHistory","canUndo","canRedo","removeHistoryEntries","selectedCells","useSelectionCellsContext","updateOverviewEntities","inheritFromParent","useUpdateTableData","attribFields","getEntityById","useProjectTableContext","projectName","useProjectContext","updateSubtasks","useUpdateSubtasksMutation","handleUpdateEntities","entities","pushToHistory","validateUpdateEntities","error","toast","handleUndo","entitiesToUndo","entitiesToInherit","callbacks","callback","handleRedo","entitiesToRedo","handleClear","cells","entityUpdates","entityInheriting","subtasksToClear","cellId","colId","rowId","parseCellId","entity","fieldName","isAttrib","existingSubtasks","defaultValue","attribField","f","existingInherit","e","getTypeDefaultValue","update","taskId","previousSubtasks","prev","subtasksPromises","value","useMemo","useEffect","onKeyDown","target","ctrlKey","selectedCellElements","isEditable","cell","editableCells","jsx","CellEditingContext"],"mappings":"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"}
1
+ {"version":3,"file":"CellEditingProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/CellEditingProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'\nimport { CellId, getTypeDefaultValue, parseCellId } from '../utils'\nimport useHistory from '../hooks/useHistory'\nimport { useSelectionCellsContext } from './SelectionCellsContext'\nimport useUpdateTableData, {\n EntityUpdate,\n InheritFromParentEntity,\n UpdateTableEntities,\n} from '../hooks/useUpdateTableData'\nimport { useProjectTableContext } from './ProjectTableContext'\nimport { useProjectContext } from '@shared/context'\nimport { useUpdateSubtasksMutation } from '@shared/api'\nimport validateUpdateEntities from '../utils/validateUpdateEntities'\nimport { toast } from 'react-toastify'\nimport { CellEditingContext } from './CellEditingContext'\n\nexport const CellEditingProvider: React.FC<{ children: ReactNode }> = ({ children }) => {\n const [editingCellId, setEditingCellId] = useState<CellId | null>(null)\n\n // Memoize these functions to prevent unnecessary re-renders\n const isEditing = useCallback((id: CellId) => id === editingCellId, [editingCellId])\n\n // Get history functions\n const history = useHistory()\n const {\n pushHistory,\n undo: undoHistory,\n redo: redoHistory,\n canUndo,\n canRedo,\n removeHistoryEntries,\n } = history\n\n const { selectedCells } = useSelectionCellsContext()\n const { updateEntities: updateOverviewEntities, inheritFromParent } = useUpdateTableData({\n pushHistory,\n removeHistoryEntries,\n })\n const { attribFields, getEntityById } = useProjectTableContext()\n const { projectName } = useProjectContext()\n const [updateSubtasks] = useUpdateSubtasksMutation()\n\n const handleUpdateEntities: UpdateTableEntities = useCallback(\n async (entities = [], pushToHistory = true) => {\n try {\n // validate the entities before updating\n validateUpdateEntities(entities, attribFields)\n\n // if validation passes, update the entities\n return await updateOverviewEntities(entities, pushToHistory)\n } catch (error: any) {\n // if validation fails, show a toast and return\n toast.error(error.message)\n\n return Promise.reject(error)\n }\n },\n [updateOverviewEntities, attribFields],\n )\n\n // Handle undo\n const handleUndo = async () => {\n const [entitiesToUndo, entitiesToInherit, callbacks] = undoHistory() || []\n\n if (entitiesToUndo && entitiesToUndo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToUndo, false)\n } catch (error) {\n toast.error('Failed to undo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom undo action')\n }\n })\n }\n }\n\n // Handle redo\n const handleRedo = async () => {\n const [entitiesToRedo, entitiesToInherit, callbacks] = redoHistory() || []\n\n if (entitiesToRedo && entitiesToRedo.length > 0) {\n try {\n await handleUpdateEntities(entitiesToRedo, false)\n } catch (error) {\n toast.error('Failed to redo changes')\n }\n }\n if (entitiesToInherit && entitiesToInherit.length > 0) {\n try {\n await inheritFromParent(entitiesToInherit, false)\n } catch (error) {\n toast.error('Failed to inherit changes')\n }\n }\n // Execute custom callbacks if any\n if (callbacks && callbacks.length > 0) {\n callbacks.forEach((callback) => {\n try {\n callback()\n } catch (error) {\n toast.error('Failed to execute custom redo action')\n }\n })\n }\n }\n\n // Handle clearing cells\n const handleClear = useCallback(\n async (cells: CellId[]) => {\n // we explicity update the value of the cells to their default values\n const entityUpdates: EntityUpdate[] = []\n // of if they are inheritable, we inherit from the parent entity\n const entityInheriting: InheritFromParentEntity[] = []\n // Track subtasks to clear (include previous subtasks for history)\n const subtasksToClear: Array<{ taskId: string; previousSubtasks?: any[] }> = []\n\n for (const cellId of cells) {\n const { colId, rowId } = parseCellId(cellId) || {}\n if (!colId || !rowId) {\n console.warn(`Invalid cellId: ${cellId}`)\n continue\n }\n\n // get the entity from the rowId\n const entity = getEntityById(rowId)\n\n if (!entity) return\n\n // get the field name and check if it is an attribute\n const fieldName = colId.replace('attrib_', '')\n const isAttrib = colId.startsWith('attrib_')\n\n if (!fieldName) {\n console.warn(`Invalid column ID: ${colId}`)\n continue\n }\n\n // Special handling for subtasks\n if (colId === 'subtasks') {\n // Only clear subtasks for tasks\n if (entity.entityType === 'task') {\n const existingSubtasks = ('subtasks' in entity && entity.subtasks) || []\n subtasksToClear.push({ taskId: rowId, previousSubtasks: existingSubtasks })\n }\n continue\n }\n\n let defaultValue: any = null\n if (isAttrib) {\n // find default value for the attribute\n const attribField = attribFields.find((f) => f.name === fieldName)\n if (!attribField) {\n console.warn(`Attribute field not found: ${fieldName}`)\n continue\n }\n // check if the attribute is inheritable\n if (attribField.data.inherit) {\n // inherit from parent entity\n // check if this entity has already been added to the inheriting list\n const existingInherit = entityInheriting.find((e) => e.entityId === entity.entityId)\n if (existingInherit) {\n // add the attrib to the existing entity\n existingInherit.attribs.push(fieldName)\n } else {\n // add a new entity to the inheriting list\n entityInheriting.push({\n entityId: entity.entityId,\n attribs: [fieldName],\n entityType: entity.entityType,\n ownAttrib: entity.ownAttrib || [],\n rowId: rowId,\n folderId:\n entity.entityType === 'folder'\n ? entity.parentId\n : entity.entityType === 'task'\n ? entity.folderId\n : undefined,\n })\n }\n continue\n } else {\n // set explicit default value\n defaultValue = attribField.data.default || getTypeDefaultValue(attribField.data.type)\n }\n } else if (fieldName === 'assignees') {\n // for assignees, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else if (fieldName === 'tags') {\n // for tags, we set it to an empty array\n defaultValue = getTypeDefaultValue('list_of_strings')\n } else {\n // we ignore other fields\n console.warn(`Field not editable: ${fieldName}`)\n continue\n }\n\n // create the entity update\n const update: EntityUpdate = {\n id: rowId,\n rowId: rowId,\n field: fieldName,\n value: defaultValue,\n isAttrib,\n type: entity.entityType,\n }\n\n entityUpdates.push(update)\n }\n\n // if we have updates, call the updateEntities function\n if (entityUpdates.length > 0) {\n try {\n await handleUpdateEntities(entityUpdates, true)\n } catch (error) {\n toast.error('Failed to clear selected cells')\n console.error('Error clearing selected cells:', error)\n }\n }\n\n // if we have inheritable attributes, call inheritFromParent\n if (entityInheriting.length > 0) {\n try {\n await inheritFromParent(entityInheriting, true)\n } catch (error) {\n toast.error('Failed to inherit parent values for cleared cells')\n console.error('Error clearing inherited cells:', error)\n }\n }\n\n // Clear subtasks by calling updateSubtasks with empty array\n if (subtasksToClear.length > 0) {\n try {\n // push undo/redo history entries for clearing subtasks\n if (pushHistory) {\n subtasksToClear.forEach(({ taskId, previousSubtasks }) => {\n const prev = previousSubtasks || []\n const undoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: prev })\n .unwrap()\n .catch(() => {})\n }\n const redoCallback = () => {\n updateSubtasks({ projectName, taskId, subtasks: [] })\n .unwrap()\n .catch(() => {})\n }\n pushHistory([undoCallback], [redoCallback])\n })\n }\n\n const subtasksPromises = subtasksToClear.map(({ taskId }) =>\n updateSubtasks({ projectName, taskId, subtasks: [] }).unwrap(),\n )\n await Promise.all(subtasksPromises)\n } catch (error) {\n toast.error('Failed to clear subtasks')\n console.error('Error clearing subtasks:', error)\n }\n }\n\n // if nothing was done, warn the user\n if (\n entityUpdates.length === 0 &&\n entityInheriting.length === 0 &&\n subtasksToClear.length === 0\n ) {\n toast.warn('No valid cells selected to clear')\n }\n },\n [attribFields, updateOverviewEntities, projectName, updateSubtasks, pushHistory, getEntityById],\n )\n\n const value = useMemo(\n () => ({\n editingCellId,\n setEditingCellId,\n isEditing,\n updateEntities: handleUpdateEntities,\n inheritFromParent,\n undo: handleUndo,\n redo: handleRedo,\n history,\n }),\n [\n editingCellId,\n isEditing,\n handleUpdateEntities,\n inheritFromParent,\n handleUndo,\n handleRedo,\n history,\n ],\n )\n\n // Listen for shortcuts\n // undo - ctrl + z\n // redo - ctrl + y or ctrl + shift + z\n // clear - backspace or delete\n useEffect(() => {\n const onKeyDown = (e: KeyboardEvent) => {\n const target = e.target as HTMLElement\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable ||\n target.getAttribute('role') === 'textbox' ||\n target.tagName === 'LI'\n ) {\n return\n }\n\n // check focus is on table or body\n const isTableFocused = target?.closest('table') !== null || target === document.body\n\n if (!isTableFocused) return\n\n const isMac =\n typeof navigator !== 'undefined' &&\n // @ts-expect-error\n ((navigator.userAgentData &&\n // @ts-expect-error\n navigator.userAgentData.platform.toUpperCase().includes('MAC')) ||\n navigator.userAgent.toUpperCase().includes('MAC'))\n const ctrlKey = isMac ? e.metaKey : e.ctrlKey\n\n // undo\n if (ctrlKey && e.key === 'z') {\n e.preventDefault()\n if (canUndo) handleUndo()\n }\n // redo\n if (\n (ctrlKey && e.key === 'y') ||\n (ctrlKey && e.shiftKey && e.key === 'z') ||\n (ctrlKey && e.key === 'Z')\n ) {\n e.preventDefault()\n if (canRedo) handleRedo()\n }\n // clear\n if ((e.key === 'Backspace' && !(e.ctrlKey || e.metaKey)) || e.key === 'Delete') {\n // check we have cells selected\n if (!selectedCells.size) return\n e.preventDefault()\n\n // find selected cells elements\n const selectedCellElements = Array.from(selectedCells).map((cellId) =>\n document.getElementById(cellId),\n )\n\n // check the cell is editable from the classnames\n const isEditable = (cell: HTMLElement | null) => cell?.classList.contains('editable')\n\n // filter out non-editable cells\n const editableCells = selectedCellElements.filter(isEditable)\n if (editableCells.length === 0) {\n toast.warn('No editable cells selected to clear')\n return\n }\n // clear the selected cells\n handleClear(editableCells.map((cell) => cell?.id).filter(Boolean) as CellId[])\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n return () => document.removeEventListener('keydown', onKeyDown)\n }, [canUndo, canRedo, handleUndo, handleRedo, selectedCells, handleClear])\n\n return <CellEditingContext.Provider value={value}>{children}</CellEditingContext.Provider>\n}\n"],"names":["CellEditingProvider","children","editingCellId","setEditingCellId","useState","isEditing","useCallback","id","history","useHistory","pushHistory","undoHistory","redoHistory","canUndo","canRedo","removeHistoryEntries","selectedCells","useSelectionCellsContext","updateOverviewEntities","inheritFromParent","useUpdateTableData","attribFields","getEntityById","useProjectTableContext","projectName","useProjectContext","updateSubtasks","useUpdateSubtasksMutation","handleUpdateEntities","entities","pushToHistory","validateUpdateEntities","error","toast","handleUndo","entitiesToUndo","entitiesToInherit","callbacks","callback","handleRedo","entitiesToRedo","handleClear","cells","entityUpdates","entityInheriting","subtasksToClear","cellId","colId","rowId","parseCellId","entity","fieldName","isAttrib","existingSubtasks","defaultValue","attribField","f","existingInherit","e","getTypeDefaultValue","update","taskId","previousSubtasks","prev","subtasksPromises","value","useMemo","useEffect","onKeyDown","target","ctrlKey","selectedCellElements","isEditable","cell","editableCells","jsx","CellEditingContext"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Te=require("../../../../../_virtual/jsx-runtime.cjs.js"),F=require("react"),M=require("./SelectionCellsContext.cjs.js"),ke=require("./CellEditingContext.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 we=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");const R=require("../utils/cellUtils.cjs.js"),me=require("../hooks/usePasteLinks.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");const xe=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");const A=require("./clipboard/clipboardUtils.cjs.js"),Ee=require("./clipboard/clipboardValidation.cjs.js"),G=require("./clipboard/clipboardSubtasks.cjs.js"),ve=require("./ProjectTableContext.cjs.js");require("lodash");require("react-toastify");const de=require("../../../util/getEntityId.cjs.js");require("../../../util/pubsub.cjs.js");const fe=F.createContext(void 0),Se=({children:J,entitiesMap:j,columnEnums:ae,columnReadOnly:pe,visibleColumns:Q})=>{const{selectedCells:B,gridMap:I,focusedCellId:be}=M.useSelectionCellsContext(),{updateEntities:le,history:ie}=ke.useCellEditing(),{pasteTableLinks:ce}=me(),{getEntityById:z,attribFields:Y}=ve.useProjectTableContext(),{projectName:Z}=we.useProjectContext(),[ee]=xe.useUpdateSubtasksMutation(),ne=F.useCallback(async(a,u)=>{const{headers:l,fullRow:g}=u||{};try{const S=Q.map(q=>q.id).filter(q=>q!==M.ROW_SELECTION_COLUMN_ID),w=new Map;a.forEach(q=>{const r=R.parseCellId(q);if(!r)return;const{rowId:f,colId:_}=r;_===M.ROW_SELECTION_COLUMN_ID||!S.includes(_)||(w.has(f)||w.set(f,new Set),w.get(f)?.add(_))}),g&&a.filter(r=>R.parseCellId(r)?.rowId&&R.parseCellId(r)?.colId===M.ROW_SELECTION_COLUMN_ID).map(r=>R.parseCellId(r)?.rowId).forEach(r=>{w.has(r)||w.set(r,new Set),Array.from(I.colIdToIndex.keys()).forEach(_=>{w.get(r)?.add(_)})});const d=Array.from(w.keys()).sort((q,r)=>{const f=I.rowIdToIndex.get(q)??1/0,_=I.rowIdToIndex.get(r)??1/0;return f-_});let D="";const se=d[0];if(!se)return"";const oe=Array.from(w.get(se)||[]).sort((q,r)=>{const f=I.colIdToIndex.get(q)??1/0,_=I.colIdToIndex.get(r)??1/0;return f-_});if(l&&oe.length>0){const q=[];for(const r of oe){const f=r;q.push(`${f.replace(/"/g,'""')}`)}D+=q.join(" ")+`
2
- `}for(const q of d){const r=z(q);if(!r){console.warn(`Entity not found for rowId: ${q}`);continue}const _=Array.from(w.get(q)||[]).sort((p,E)=>{const L=I.colIdToIndex.get(p)??1/0,U=I.colIdToIndex.get(E)??1/0;return L-U}).filter(p=>p!==M.ROW_SELECTION_COLUMN_ID),$=[];for(const p of _){let E="";if(p.startsWith("link_"))E=R.getLinkEntityIdsByColumnId(r.links,p);else if(p==="subtasks"){const L=R.getCellValue(r,p)||[];E=G.subtasksToTSV(L,r.id,r.name)}else{let L=R.getCellValue(r,p);if(!L){const U=Y.find(K=>K.name===p.replace("attrib_",""));U&&U.data.type==="boolean"?L=!1:U&&U.data.type.includes("list_of")&&(L=[])}E=L!=null?String(L):"",p==="name"&&(E=A.getEntityPath(r.entityId||r.id,j)),p==="subType"&&("folderType"in r&&(E=r.folderType||""),"taskType"in r&&(E=r.taskType||""))}$.push(`${E.replace(/"/g,'""')}`)}D+=$.join(" ")+`
3
- `}return D}catch(S){console.error("Failed to copy to clipboard:",S)}},[B,be,I,j,z,Q]),ye=async()=>{const a=await ue();if(!a)return!1;const u=A.parseClipboardText(a);return u.length===0?!1:u.every(l=>l.values.every(g=>g.split(",").every(S=>de.validateEntityId(S))))},te=F.useCallback(async(a,u)=>{if(a=a||Array.from(B),!a.length)return;const l=await ne(a,{fullRow:u});if(l){if(!navigator.clipboard){A.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){A.clipboardError("Clipboard operations require a secure HTTPS context.");return}try{await navigator.clipboard.writeText(l)}catch(g){A.clipboardError(`Failed to copy to clipboard: ${g.message}`)}}},[B,j,I]),Ie=F.useCallback(async(a,u,l)=>{if(a=a||Array.from(B),!!a.length)try{const g=await ne(a,{headers:!0,fullRow:l});if(!g)return;const S=new Blob([g],{type:"text/csv"}),w=URL.createObjectURL(S),d=document.createElement("a");d.href=w;const D=a.length;d.download=`${u}-export-${D}_cells-${new Date().toISOString().slice(0,10)}.csv`,d.click(),URL.revokeObjectURL(w)}catch(g){console.error("Failed to copy to clipboard:",g)}},[B,j,I,ne]),ue=async()=>{if(!navigator.clipboard){A.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){A.clipboardError("Clipboard operations require a secure HTTPS context.");return}let a;try{return a=await navigator.clipboard.readText(),a}catch(u){A.clipboardError(`Failed to read from clipboard: ${u.message}`);return}},re=F.useCallback(async(a,u)=>{const{method:l="replace"}=u||{};if(!a.length)return;const g=await ue();if(!g)return;let S=!1,w=g;G.isSubtasksTSV(g)&&(S=!0);const d=A.parseClipboardText(g);if(!d.length)return;const D=d.length===1&&d[0].values.length===1,se=Q.map(e=>e.id).filter(e=>e!==M.ROW_SELECTION_COLUMN_ID),oe=(e,t,s)=>{const b={};return s&&s.length>0?s.forEach((c,i)=>{const h=t.find(n=>n===c||n.replace("attrib_","")===c||n===`attrib_${c}`||n.toLowerCase()===c.toLowerCase());h&&i<e.values.length&&(b[h]=e.values[i])}):t.forEach((c,i)=>{i<e.values.length&&(b[c]=e.values[i])}),b},q=d[0]?.colIds||void 0,r=new Map;Array.from(a).forEach(e=>{const t=R.parseCellId(e);if(!t)return;const{rowId:s,colId:b}=t;b===M.ROW_SELECTION_COLUMN_ID||!se.includes(b)||(r.has(s)||r.set(s,new Set),r.get(s)?.add(b))});const f=Array.from(r.keys()).sort((e,t)=>{const s=I.rowIdToIndex.get(e)??1/0,b=I.rowIdToIndex.get(t)??1/0;return s-b}),_=f[0],$=Array.from(r.get(_)||[]).sort((e,t)=>{const s=I.colIdToIndex.get(e)??1/0,b=I.colIdToIndex.get(t)??1/0;return s-b});for(let e=0;e<f.length;e++){const t=f[e],s=R.getEntityDataById(t,j)?.entityType==="folder",b=e%d.length,c=d[b],i=D?{[$[0]]:d[0].values[0]}:oe(c,$,q);for(const h of $){const n=i[h]||"";if(!Ee.validateClipboardData({colId:h,isFolder:s,pasteValue:n,parsedData:d,columnEnums:ae,columnReadOnly:pe,rowIndex:e,colIndex:$.indexOf(h),isSingleCellValue:D,attribFields:Y}))return}}const p=new Map;for(let e=0;e<$.length;e++){const t=$[e];if(t==="name")continue;if(t==="subtasks"){let i=[],h=!1;if(S){const n=w.trim().split(`
4
- `),y=n[0].toLowerCase(),N=y.includes("label")&&y.includes("name")&&y.includes("start date")&&y.includes("end date")&&y.includes("assignees")&&y.includes("status")?n.slice(1):n,v=new Map,P=[];N.forEach(O=>{const m=G.tsvToSubtasks(O);if(m.length===0)return;const C=m[0],o=`${C.taskId||""}|${C.taskName||""}`;v.has(o)||(v.set(o,[]),P.push(o)),v.get(o).push(C)}),P.forEach(O=>{const[m,C]=O.split("|");i.push({taskId:m||void 0,taskName:C||void 0,subtasks:v.get(O)||[]})}),h=i.length<=1}for(let n=0;n<f.length;n++){const y=f[n],T=R.getEntityDataById(y,j)?.entityType;if(T!=="task")continue;const N=`${y}-${T}`;p.has(N)||p.set(N,{rowId:y,id:y,type:T,fields:{},attrib:{},links:{}});const v=p.get(N),P=z(y),O=P&&"subtasks"in P&&P.subtasks||[];v.previousSubtasks=O;let m=[];if(S){if(h&&i.length>0)m=i[0].subtasks;else if(i.length>0){const o=n%i.length;m=i[o].subtasks}}else if(D){const o=d[0].values[0];m=G.tsvToSubtasks(o)}else{const o=n%d.length,k=d[o],x=e%k.values.length,V=k.values[x];m=G.tsvToSubtasks(V)}if(!m||m.length===0)continue;const C=m.map((o,k)=>({id:de.getEntityId(),name:G.sanitizeSubtaskName(o.name||o.label||`Subtask ${k+1}`),label:o.label||"",assignees:o.assignees||[],description:o.label||"",startDate:o.startDate,endDate:o.endDate,isDone:o.isDone||!1}));if(l==="merge"){const o=[...O],k=new Set(O.map(x=>{const V=(x.label||"").toLowerCase(),H=(x.name||"").toLowerCase();return`${V}|${H}`}));for(const x of C){const V=(x.label||"").toLowerCase(),H=(x.name||"").toLowerCase(),W=`${V}|${H}`;k.has(W)||o.push(x)}v.subtasks=o}else{const o=C.map(k=>{const x=O.find(V=>(V.label||"").toLowerCase()===(k.label||"").toLowerCase()&&(V.name||"").toLowerCase()===(k.name||"").toLowerCase());return{...k,id:x?.id||k.id}});v.subtasks=o}}continue}let s=!1,b=!1,c="string";if(f.length>0){const i=f[0];if(z(i))if(s=t.startsWith("attrib_"),b=t.startsWith("link_"),t==="status"||t==="subType")c="string",s=!1;else if(t==="tags"||t==="assignees")c="array";else if(s){const n=t.replace("attrib_",""),y=Y.find(T=>T.name===n);if(y)switch(y.data.type){case"boolean":c="boolean";break;case"float":case"integer":c="number";break;case"list_of_strings":case"list_of_any":case"list_of_integers":case"list_of_submodels":c="array";break;default:c="string"}}else b&&(c="array")}for(let i=0;i<f.length;i++){const h=f[i],n=R.getEntityDataById(h,j)?.entityType,y=n==="folder";let T;if(D)T=d[0].values[0];else{const m=i%d.length,C=d[m];if(C.values.length>$.length){const o=I.colIdToIndex.get($[0])??0,k=Array.from(I.colIdToIndex.keys()).filter(W=>W!==M.ROW_SELECTION_COLUMN_ID).sort((W,qe)=>{const he=I.colIdToIndex.get(W)??1/0,Ce=I.colIdToIndex.get(qe)??1/0;return he-Ce}),x=k.findIndex(W=>I.colIdToIndex.get(W)===o),H=k.slice(x,x+C.values.length).indexOf(t);T=C.values[H]||C.values[H%C.values.length]}else{const o=e%C.values.length;T=C.values[o]}}let N=t.split("_").pop()||t;if(t==="subType"&&(N=y?"folderType":"taskType",s=!1,!T))continue;const v=A.processFieldValue(T,c),P=`${h}-${n}`;!p.has(P)&&n&&p.set(P,{rowId:h,id:h,type:n,fields:{},attrib:{},links:{}});const O=p.get(P);if(b){const[m,C,o,k,x]=t.split("_");O.links[`${C}|${o}|${k}_${x}`]=v}else s?O.attrib[N]=v:O.fields[N]=v}}const E=[],L=new Map;p.forEach(e=>{Object.entries(e.fields).forEach(([t,s])=>{E.push({rowId:e.rowId,id:e.id,type:e.type,field:t,value:s})}),Object.entries(e.attrib).forEach(([t,s])=>{E.push({rowId:e.rowId,id:e.id,type:e.type,field:t,value:s,isAttrib:!0})}),Object.entries(e.links).forEach(([t,s])=>{const[b,c]=t.split("_"),i=b.split("|");if(i.length>=3){const h=i[0],n=i[1],y=i[2],T=`${h}|${n}|${y}`,N=c==="out"?y:n,v=`${e.id}-${T}-${c}`;L.set(v,{rowId:e.rowId,sourceEntityId:e.id,sourceEntityType:e.type,linkType:T,direction:c,targetEntityType:N,operation:l,targetEntityIds:Array.isArray(s)?s:[]})}})});const U=Array.from(L.values()),K=[];p.forEach(e=>{e.subtasks&&K.push({taskId:e.id,subtasks:e.subtasks,previousSubtasks:e.previousSubtasks})});const X=[];if(E.length>0&&X.push(le(E)),U.length>0&&X.push(ce(U)),K.length>0){ie&&K.forEach(({taskId:t,subtasks:s,previousSubtasks:b})=>{const c=b||[],i=s||[],h=()=>{ee({projectName:Z,taskId:t,subtasks:c}).unwrap().catch(()=>{})},n=()=>{ee({projectName:Z,taskId:t,subtasks:i}).unwrap().catch(()=>{})};ie.pushHistory([h],[n])});const e=K.map(({taskId:t,subtasks:s})=>ee({projectName:Z,taskId:t,subtasks:s}).unwrap());X.push(...e)}if(X.length>0)try{await Promise.all(X)}catch(e){console.error("Error updating entities:",e),A.clipboardError(`Paste failed: ${e||e?.message||"Unknown error"}`)}},[B,I,j,le,ce,ae,z,Q,Y,Z,ee,ie]);F.useEffect(()=>{const a=async u=>{if((u.ctrlKey||u.metaKey)&&u.key==="c"){const l=document.activeElement,g=l?.closest("table")!==null||l?.closest(".table-container")!==null||l?.tagName==="TD"||l?.tagName==="TH",S=l?.tagName==="INPUT"||l?.tagName==="TEXTAREA"||l?.isContentEditable;if((window.getSelection()?.toString().length??!1)&&!g||S&&!g)return;B.size>0&&await te()}if((u.ctrlKey||u.metaKey)&&u.key==="v"){const l=document.activeElement;if(l&&(l.tagName==="INPUT"||l.tagName==="TEXTAREA"||l.isContentEditable))if(await ye())u.preventDefault();else return;re(Array.from(B),{method:u.shiftKey?"merge":"replace"})}};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[te,re]);const ge=F.useMemo(()=>({copyToClipboard:te,pasteFromClipboard:re,exportCSV:Ie}),[te,re]);return Te.jsxRuntimeExports.jsx(fe.Provider,{value:ge,children:J})},_e=()=>{const J=F.useContext(fe);if(J===void 0)throw new Error("useClipboard must be used within a ClipboardProvider");return J};exports.ClipboardProvider=Se;exports.useClipboard=_e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const we=require("../../../../../_virtual/jsx-runtime.cjs.js"),F=require("react"),M=require("./SelectionCellsContext.cjs.js"),me=require("./CellEditingContext.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 xe=require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");const R=require("../utils/cellUtils.cjs.js"),Ee=require("../hooks/usePasteLinks.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");const ve=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");const A=require("./clipboard/clipboardUtils.cjs.js"),Se=require("./clipboard/clipboardValidation.cjs.js"),G=require("./clipboard/clipboardSubtasks.cjs.js"),_e=require("./ProjectTableContext.cjs.js");require("lodash");require("react-toastify");const pe=require("../../../util/getEntityId.cjs.js");require("../../../util/pubsub.cjs.js");const be=F.createContext(void 0),Le=({children:J,entitiesMap:j,columnEnums:ce,columnReadOnly:ye,visibleColumns:Q})=>{const{selectedCells:B,gridMap:I,focusedCellId:Ie}=M.useSelectionCellsContext(),{updateEntities:ue,history:ae}=me.useCellEditing(),{pasteTableLinks:de}=Ee(),{getEntityById:K,attribFields:Y}=_e.useProjectTableContext(),{projectName:Z}=xe.useProjectContext(),[ee]=ve.useUpdateSubtasksMutation(),le=F.useCallback(async(a,u)=>{const{headers:l,fullRow:q}=u||{};try{const E=Q.map(h=>h.id).filter(h=>h!==M.ROW_SELECTION_COLUMN_ID),w=new Map;a.forEach(h=>{const r=R.parseCellId(h);if(!r)return;const{rowId:f,colId:v}=r;v===M.ROW_SELECTION_COLUMN_ID||!E.includes(v)||(w.has(f)||w.set(f,new Set),w.get(f)?.add(v))}),q&&a.filter(r=>R.parseCellId(r)?.rowId&&R.parseCellId(r)?.colId===M.ROW_SELECTION_COLUMN_ID).map(r=>R.parseCellId(r)?.rowId).forEach(r=>{w.has(r)||w.set(r,new Set),Array.from(I.colIdToIndex.keys()).forEach(v=>{w.get(r)?.add(v)})});const d=Array.from(w.keys()).sort((h,r)=>{const f=I.rowIdToIndex.get(h)??1/0,v=I.rowIdToIndex.get(r)??1/0;return f-v});let D="";const se=d[0];if(!se)return"";const oe=Array.from(w.get(se)||[]).sort((h,r)=>{const f=I.colIdToIndex.get(h)??1/0,v=I.colIdToIndex.get(r)??1/0;return f-v});if(l&&oe.length>0){const h=[];for(const r of oe){const f=r;h.push(`${f.replace(/"/g,'""')}`)}D+=h.join(" ")+`
2
+ `}for(const h of d){const r=K(h);if(!r){console.warn(`Entity not found for rowId: ${h}`);continue}const v=Array.from(w.get(h)||[]).sort((p,x)=>{const S=I.colIdToIndex.get(p)??1/0,V=I.colIdToIndex.get(x)??1/0;return S-V}).filter(p=>p!==M.ROW_SELECTION_COLUMN_ID),N=[];for(const p of v){let x="";if(p.startsWith("link_"))x=R.getLinkEntityIdsByColumnId(r.links,p);else if(p==="subtasks"){const S=R.getCellValue(r,p)||[];x=G.subtasksToTSV(S,r.id,r.name)}else{let S=R.getCellValue(r,p);if(!S){const V=Y.find(H=>H.name===p.replace("attrib_",""));V&&V.data.type==="boolean"?S=!1:V&&V.data.type.includes("list_of")&&(S=[])}x=S!=null?String(S):"",p==="name"&&(x=A.getEntityPath(r.entityId||r.id,j)),p==="subType"&&("folderType"in r&&(x=r.folderType||""),"taskType"in r&&(x=r.taskType||""))}N.push(`${x.replace(/"/g,'""')}`)}D+=N.join(" ")+`
3
+ `}return D}catch(E){console.error("Failed to copy to clipboard:",E)}},[B,Ie,I,j,K,Q]),ge=async()=>{const a=await fe();if(!a)return!1;const u=A.parseClipboardText(a);return u.length===0?!1:u.every(l=>l.values.every(q=>q.split(",").every(E=>pe.validateEntityId(E))))},te=F.useCallback(async(a,u)=>{if(a=a||Array.from(B),!a.length)return;const l=await le(a,{fullRow:u});if(l){if(!navigator.clipboard){A.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){A.clipboardError("Clipboard operations require a secure HTTPS context.");return}try{await navigator.clipboard.writeText(l)}catch(q){A.clipboardError(`Failed to copy to clipboard: ${q.message}`)}}},[B,j,I]),qe=F.useCallback(async(a,u,l)=>{if(a=a||Array.from(B),!!a.length)try{const q=await le(a,{headers:!0,fullRow:l});if(!q)return;const E=new Blob([q],{type:"text/csv"}),w=URL.createObjectURL(E),d=document.createElement("a");d.href=w;const D=a.length;d.download=`${u}-export-${D}_cells-${new Date().toISOString().slice(0,10)}.csv`,d.click(),URL.revokeObjectURL(w)}catch(q){console.error("Failed to copy to clipboard:",q)}},[B,j,I,le]),fe=async()=>{if(!navigator.clipboard){A.clipboardError("Clipboard API not supported in this browser.");return}if(!window.isSecureContext){A.clipboardError("Clipboard operations require a secure HTTPS context.");return}let a;try{return a=await navigator.clipboard.readText(),a}catch(u){A.clipboardError(`Failed to read from clipboard: ${u.message}`);return}},re=F.useCallback(async(a,u)=>{const{method:l="replace"}=u||{};if(!a.length)return;const q=await fe();if(!q)return;let E=!1,w=q;G.isSubtasksTSV(q)&&(E=!0);const d=A.parseClipboardText(q);if(!d.length)return;const D=d.length===1&&d[0].values.length===1,se=Q.map(e=>e.id).filter(e=>e!==M.ROW_SELECTION_COLUMN_ID),oe=(e,t,s)=>{const b={};return s&&s.length>0?s.forEach((c,o)=>{const g=t.find(n=>n===c||n.replace("attrib_","")===c||n===`attrib_${c}`||n.toLowerCase()===c.toLowerCase());g&&o<e.values.length&&(b[g]=e.values[o])}):t.forEach((c,o)=>{o<e.values.length&&(b[c]=e.values[o])}),b},h=d[0]?.colIds||void 0,r=new Map;Array.from(a).forEach(e=>{const t=R.parseCellId(e);if(!t)return;const{rowId:s,colId:b}=t;b===M.ROW_SELECTION_COLUMN_ID||!se.includes(b)||(r.has(s)||r.set(s,new Set),r.get(s)?.add(b))});const f=Array.from(r.keys()).sort((e,t)=>{const s=I.rowIdToIndex.get(e)??1/0,b=I.rowIdToIndex.get(t)??1/0;return s-b}),v=f[0],N=Array.from(r.get(v)||[]).sort((e,t)=>{const s=I.colIdToIndex.get(e)??1/0,b=I.colIdToIndex.get(t)??1/0;return s-b});for(let e=0;e<f.length;e++){const t=f[e],s=R.getEntityDataById(t,j)?.entityType==="folder",b=e%d.length,c=d[b],o=D?{[N[0]]:d[0].values[0]}:oe(c,N,h);for(const g of N){const n=o[g]||"";if(!Se.validateClipboardData({colId:g,isFolder:s,pasteValue:n,parsedData:d,columnEnums:ce,columnReadOnly:ye,rowIndex:e,colIndex:N.indexOf(g),isSingleCellValue:D,attribFields:Y}))return}}const p=new Map;for(let e=0;e<N.length;e++){const t=N[e];if(t==="name")continue;if(t==="subtasks"){let o=[],g=!1;if(E){const n=w.trim().split(`
4
+ `),y=n[0].toLowerCase(),O=y.includes("label")&&y.includes("name")&&y.includes("start date")&&y.includes("end date")&&y.includes("assignees")&&y.includes("status")?n.slice(1):n,$=new Map,W=[];O.forEach(P=>{const _=G.tsvToSubtasks(P);if(_.length===0)return;const C=_[0],U=`${C.taskId||""}|${C.taskName||""}`;$.has(U)||($.set(U,[]),W.push(U)),$.get(U).push(C)}),W.forEach(P=>{const[_,C]=P.split("|");o.push({taskId:_||void 0,taskName:C||void 0,subtasks:$.get(P)||[]})}),g=o.length<=1}for(let n=0;n<f.length;n++){const y=f[n],k=R.getEntityDataById(y,j)?.entityType;if(k!=="task")continue;const O=K(y),$=O?.entityId||y,W=`${y}-${k}`;p.has(W)||p.set(W,{rowId:y,id:$,type:k,fields:{},attrib:{},links:{}});const P=p.get(W),_=O&&"subtasks"in O&&O.subtasks||[];P.previousSubtasks=_;let C=[];if(E){if(g&&o.length>0)C=o[0].subtasks;else if(o.length>0){const i=n%o.length;C=o[i].subtasks}}else if(D){const i=d[0].values[0];C=G.tsvToSubtasks(i)}else{const i=n%d.length,T=d[i],m=e%T.values.length,L=T.values[m];C=G.tsvToSubtasks(L)}if(!C||C.length===0)continue;const U=C.map((i,T)=>({id:pe.getEntityId(),name:G.sanitizeSubtaskName(i.name||i.label||`Subtask ${T+1}`),label:i.label||"",assignees:i.assignees||[],description:i.label||"",startDate:i.startDate,endDate:i.endDate,isDone:i.isDone||!1}));if(l==="merge"){const i=[..._],T=new Set(_.map(m=>{const L=(m.label||"").toLowerCase(),ie=(m.name||"").toLowerCase();return`${L}|${ie}`}));for(const m of U){const L=(m.label||"").toLowerCase(),ie=(m.name||"").toLowerCase(),ne=`${L}|${ie}`;T.has(ne)||i.push(m)}P.subtasks=i}else{const i=U.map(T=>{const m=_.find(L=>(L.label||"").toLowerCase()===(T.label||"").toLowerCase()&&(L.name||"").toLowerCase()===(T.name||"").toLowerCase());return{...T,id:m?.id||T.id}});P.subtasks=i}}continue}let s=!1,b=!1,c="string";if(f.length>0){const o=f[0];if(K(o))if(s=t.startsWith("attrib_"),b=t.startsWith("link_"),t==="status"||t==="subType")c="string",s=!1;else if(t==="tags"||t==="assignees")c="array";else if(s){const n=t.replace("attrib_",""),y=Y.find(k=>k.name===n);if(y)switch(y.data.type){case"boolean":c="boolean";break;case"float":case"integer":c="number";break;case"list_of_strings":case"list_of_any":case"list_of_integers":case"list_of_submodels":c="array";break;default:c="string"}}else b&&(c="array")}for(let o=0;o<f.length;o++){const g=f[o],n=R.getEntityDataById(g,j)?.entityType,y=n==="folder";let k;if(D)k=d[0].values[0];else{const U=o%d.length,i=d[U];if(i.values.length>N.length){const T=I.colIdToIndex.get(N[0])??0,m=Array.from(I.colIdToIndex.keys()).filter(X=>X!==M.ROW_SELECTION_COLUMN_ID).sort((X,Ce)=>{const Te=I.colIdToIndex.get(X)??1/0,ke=I.colIdToIndex.get(Ce)??1/0;return Te-ke}),L=m.findIndex(X=>I.colIdToIndex.get(X)===T),ne=m.slice(L,L+i.values.length).indexOf(t);k=i.values[ne]||i.values[ne%i.values.length]}else{const T=e%i.values.length;k=i.values[T]}}let O=t.split("_").pop()||t;if(t==="subType"&&(O=y?"folderType":"taskType",s=!1,!k))continue;const $=A.processFieldValue(k,c),P=K(g)?.entityId||g,_=`${g}-${n}`;!p.has(_)&&n&&p.set(_,{rowId:g,id:P,type:n,fields:{},attrib:{},links:{}});const C=p.get(_);if(b){const[U,i,T,m,L]=t.split("_");C.links[`${i}|${T}|${m}_${L}`]=$}else s?C.attrib[O]=$:C.fields[O]=$}}const x=[],S=new Map;p.forEach(e=>{Object.entries(e.fields).forEach(([t,s])=>{x.push({rowId:e.rowId,id:e.id,type:e.type,field:t,value:s})}),Object.entries(e.attrib).forEach(([t,s])=>{x.push({rowId:e.rowId,id:e.id,type:e.type,field:t,value:s,isAttrib:!0})}),Object.entries(e.links).forEach(([t,s])=>{const[b,c]=t.split("_"),o=b.split("|");if(o.length>=3){const g=o[0],n=o[1],y=o[2],k=`${g}|${n}|${y}`,O=c==="out"?y:n,$=`${e.id}-${k}-${c}`;S.set($,{rowId:e.rowId,sourceEntityId:e.id,sourceEntityType:e.type,linkType:k,direction:c,targetEntityType:O,operation:l,targetEntityIds:Array.isArray(s)?s:[]})}})});const V=Array.from(S.values()),H=[];p.forEach(e=>{e.subtasks&&H.push({taskId:e.id,subtasks:e.subtasks,previousSubtasks:e.previousSubtasks})});const z=[];if(x.length>0&&z.push(ue(x)),V.length>0&&z.push(de(V)),H.length>0){ae&&H.forEach(({taskId:t,subtasks:s,previousSubtasks:b})=>{const c=b||[],o=s||[],g=()=>{ee({projectName:Z,taskId:t,subtasks:c}).unwrap().catch(()=>{})},n=()=>{ee({projectName:Z,taskId:t,subtasks:o}).unwrap().catch(()=>{})};ae.pushHistory([g],[n])});const e=H.map(({taskId:t,subtasks:s})=>ee({projectName:Z,taskId:t,subtasks:s}).unwrap());z.push(...e)}if(z.length>0)try{await Promise.all(z)}catch(e){console.error("Error updating entities:",e),A.clipboardError(`Paste failed: ${e||e?.message||"Unknown error"}`)}},[B,I,j,ue,de,ce,K,Q,Y,Z,ee,ae]);F.useEffect(()=>{const a=async u=>{if((u.ctrlKey||u.metaKey)&&u.key==="c"){const l=document.activeElement,q=l?.closest("table")!==null||l?.closest(".table-container")!==null||l?.tagName==="TD"||l?.tagName==="TH",E=l?.tagName==="INPUT"||l?.tagName==="TEXTAREA"||l?.isContentEditable;if((window.getSelection()?.toString().length??!1)&&!q||E&&!q)return;B.size>0&&await te()}if((u.ctrlKey||u.metaKey)&&u.key==="v"){const l=document.activeElement;if(l&&(l.tagName==="INPUT"||l.tagName==="TEXTAREA"||l.isContentEditable))if(await ge())u.preventDefault();else return;re(Array.from(B),{method:u.shiftKey?"merge":"replace"})}};return window.addEventListener("keydown",a),()=>{window.removeEventListener("keydown",a)}},[te,re]);const he=F.useMemo(()=>({copyToClipboard:te,pasteFromClipboard:re,exportCSV:qe}),[te,re]);return we.jsxRuntimeExports.jsx(be.Provider,{value:he,children:J})},Oe=()=>{const J=F.useContext(be);if(J===void 0)throw new Error("useClipboard must be used within a ClipboardProvider");return J};exports.ClipboardProvider=Le;exports.useClipboard=Oe;
5
5
  //# sourceMappingURL=ClipboardContext.cjs.js.map