@ynput/ayon-frontend-shared 0.3.15 → 0.3.17

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 (419) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +28 -24
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/Views.cjs.js +1 -1
  5. package/dist/Views.cjs.js.map +1 -1
  6. package/dist/Views.es.js +36 -41
  7. package/dist/Views.es.js.map +1 -1
  8. package/dist/_virtual/index.cjs.js +1 -1
  9. package/dist/_virtual/index.cjs2.js +1 -1
  10. package/dist/_virtual/index.cjs3.js +1 -1
  11. package/dist/_virtual/index.cjs4.js +1 -1
  12. package/dist/_virtual/index.cjs5.js +1 -1
  13. package/dist/_virtual/index.cjs6.js +1 -1
  14. package/dist/_virtual/index.cjs8.js +1 -1
  15. package/dist/_virtual/index.es.js +4 -5
  16. package/dist/_virtual/index.es2.js +6 -2
  17. package/dist/_virtual/index.es2.js.map +1 -1
  18. package/dist/_virtual/index.es3.js +2 -5
  19. package/dist/_virtual/index.es3.js.map +1 -1
  20. package/dist/_virtual/index.es4.js +5 -2
  21. package/dist/_virtual/index.es4.js.map +1 -1
  22. package/dist/_virtual/index.es5.js +2 -5
  23. package/dist/_virtual/index.es5.js.map +1 -1
  24. package/dist/_virtual/index.es6.js +5 -2
  25. package/dist/_virtual/index.es6.js.map +1 -1
  26. package/dist/_virtual/index.es7.js +2 -2
  27. package/dist/_virtual/index.es8.js +2 -5
  28. package/dist/_virtual/index.es8.js.map +1 -1
  29. package/dist/index.cjs.js +1 -1
  30. package/dist/index.es.js +15 -11
  31. package/dist/index.es.js.map +1 -1
  32. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  33. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  34. package/dist/node_modules/react-use-websocket/dist/index.cjs.js +1 -1
  35. package/dist/node_modules/react-use-websocket/dist/index.es.js +1 -1
  36. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  37. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js.map +1 -1
  38. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  39. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  40. package/dist/node_modules/remove-accents/index.es.js +1 -1
  41. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  42. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  44. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  45. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  46. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  47. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  48. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  49. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  50. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  51. package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
  52. package/dist/shared/src/api/generated/access.es.js.map +1 -1
  53. package/dist/shared/src/api/generated/graphql.cjs.js +5 -3
  54. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  55. package/dist/shared/src/api/generated/graphql.es.js +2 -0
  56. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  57. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  58. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  59. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  60. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  61. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +99 -90
  62. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  63. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +13 -1
  64. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  65. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +72 -25
  66. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  67. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  68. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  69. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +25 -21
  70. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  71. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  72. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  73. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +14 -14
  74. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  75. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js +1 -1
  76. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js.map +1 -1
  77. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js +23 -23
  78. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js.map +1 -1
  79. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  80. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  81. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +71 -36
  82. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  83. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  84. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  85. package/dist/shared/src/components/LinksManager/LinksManager.es.js +120 -89
  86. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  87. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +52 -12
  88. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
  89. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +63 -21
  90. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
  91. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  92. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  93. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +8 -4
  94. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  95. package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js +2 -0
  96. package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js.map +1 -0
  97. package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js +18 -0
  98. package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js.map +1 -0
  99. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  100. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  101. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +8 -4
  102. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  103. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  104. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  105. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +10 -6
  106. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  107. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  108. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  109. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +8 -4
  110. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  111. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  112. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  113. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +8 -4
  114. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  115. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  116. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  117. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +8 -4
  118. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  119. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  120. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  121. package/dist/shared/src/components/RenameForm/RenameForm.es.js +9 -5
  122. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  123. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  124. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  125. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +139 -128
  126. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  127. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  128. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  129. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +90 -81
  130. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  131. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  132. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  133. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +8 -4
  134. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  135. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +1 -1
  136. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -1
  137. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +9 -5
  138. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -1
  139. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  140. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  141. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +8 -4
  142. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  143. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  144. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  145. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +8 -4
  146. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  147. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  148. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  149. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +8 -4
  150. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  151. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  152. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  153. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +8 -4
  154. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  155. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  156. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  157. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +20 -16
  158. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  159. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  160. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  161. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +8 -4
  162. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  163. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  164. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  165. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +9 -5
  166. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  167. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  168. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +12 -8
  170. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  172. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +22 -18
  174. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  176. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +8 -4
  178. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  179. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  180. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +8 -4
  182. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  183. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  184. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +57 -45
  186. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  187. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  188. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  189. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +8 -4
  190. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  191. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  192. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  193. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +8 -4
  194. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  195. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  196. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  197. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +8 -4
  198. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  199. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  200. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  201. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js +2 -0
  202. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js.map +1 -0
  203. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js +70 -0
  204. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js.map +1 -0
  205. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  206. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/Feed/Feed.es.js +247 -151
  208. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  209. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  210. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -4
  212. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  213. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  214. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +6 -2
  216. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  217. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js +1 -0
  218. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js +1 -0
  220. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js.map +1 -1
  221. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  222. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +9 -5
  224. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  225. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  226. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +8 -4
  228. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  229. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js +1 -1
  230. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js +3 -3
  232. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js.map +1 -1
  233. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  234. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +8 -4
  236. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  238. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +59 -55
  240. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +9 -5
  244. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +8 -4
  248. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  250. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +6 -2
  252. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +8 -4
  256. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +8 -4
  260. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +16 -16
  264. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -2
  268. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +9 -5
  272. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +6 -2
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +8 -4
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +8 -4
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +6 -2
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +6 -2
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +6 -2
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  297. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +8 -4
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +8 -4
  304. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +6 -2
  308. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +6 -2
  312. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +6 -2
  316. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +17 -13
  320. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  322. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +7 -3
  324. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  326. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +60 -48
  328. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  330. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +6 -2
  332. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  333. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  334. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +8 -4
  336. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  337. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  338. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +24 -24
  339. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  340. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +8 -4
  342. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  343. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  344. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  345. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +8 -4
  346. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  347. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  348. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  349. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  350. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  351. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +8 -4
  352. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  353. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  354. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +24 -23
  356. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  357. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  358. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +83 -88
  360. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  361. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  362. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +1 -1
  364. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  365. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  366. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +56 -53
  368. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  369. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  370. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +23 -144
  372. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  373. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js.map +1 -1
  375. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  376. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  377. package/dist/shared/src/containers/Views/types.cjs.js +2 -0
  378. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -0
  379. package/dist/shared/src/containers/Views/types.es.js +15 -0
  380. package/dist/shared/src/containers/Views/types.es.js.map +1 -0
  381. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -1
  382. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -1
  383. package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js +2 -0
  384. package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js.map +1 -0
  385. package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js +5 -0
  386. package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js.map +1 -0
  387. package/dist/shared/src/containers/Views/utils/portalUtils.cjs.js.map +1 -1
  388. package/dist/shared/src/containers/Views/utils/portalUtils.es.js.map +1 -1
  389. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  390. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  391. package/dist/shared/src/context/DetailsPanelContext.es.js +76 -77
  392. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  393. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  394. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  395. package/dist/shared/src/context/WebsocketContext.es.js +9 -5
  396. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  397. package/dist/types/api/generated/access.d.ts +6 -0
  398. package/dist/types/api/generated/graphql.d.ts +8 -4
  399. package/dist/types/api/generated/users.d.ts +6 -1
  400. package/dist/types/components/AttributeEditor/AttributeEditor.d.ts +1 -0
  401. package/dist/types/components/LinksManager/LinkManagerItem.d.ts +2 -0
  402. package/dist/types/components/LinksManager/LinksManager.styled.d.ts +6 -0
  403. package/dist/types/components/LinksManager/utils/groupLinks.d.ts +14 -0
  404. package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +1 -0
  405. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  406. package/dist/types/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.d.ts +11 -0
  407. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +1 -0
  408. package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +2 -1
  409. package/dist/types/containers/Views/ViewsMenuContainer/ViewsMenuContainer.d.ts +2 -2
  410. package/dist/types/containers/Views/context/ViewsContext.d.ts +3 -2
  411. package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +1 -1
  412. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -3
  413. package/dist/types/containers/Views/hooks/useSaveViewFromCurrent.d.ts +2 -1
  414. package/dist/types/containers/Views/hooks/useViewSettingsChanged.d.ts +1 -1
  415. package/dist/types/containers/Views/index.d.ts +1 -7
  416. package/dist/types/containers/Views/types.d.ts +10 -0
  417. package/dist/types/containers/Views/utils/isViewStudioScope.d.ts +2 -0
  418. package/dist/types/containers/Views/utils/portalUtils.d.ts +1 -1
  419. package/package.json +1 -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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"}
@@ -120,6 +120,12 @@ import "../../../api/queries/views/getViews.es.js";
120
120
  import "../../../api/queries/views/updateViews.es.js";
121
121
  import "../../../api/queries/watchers/getWatchers.es.js";
122
122
  import "../../../api/queries/uris/getUris.es.js";
123
+ import "../../../../../_virtual/index.es.js";
124
+ import "../../../../../node_modules/refractor/lib/common.es.js";
125
+ import "../../../../../node_modules/refractor/lib/all.es.js";
126
+ /* empty css */
127
+ import "uuid";
128
+ import "../../../util/pubsub.es.js";
123
129
  import "../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js";
124
130
  import "../../../components/DetailsPanelDetails/DetailsPanelDetails.es.js";
125
131
  import "../../../components/DetailsPanelDetails/DetailsSection.es.js";
@@ -165,8 +171,6 @@ import "../../Feed/components/CommentInput/quillToMarkdown.es.js";
165
171
  import "../../Feed/components/ActivityComment/ActivityComment.styled.es.js";
166
172
  import "../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.es.js";
167
173
  import "../../Feed/components/ActivityReference/ActivityReference.styled.es.js";
168
- import "uuid";
169
- import "../../../util/pubsub.es.js";
170
174
  import "react-router-dom";
171
175
  import "../../Feed/components/ActivityStatus/ActivityStatus.es.js";
172
176
  import "../../Feed/components/ActivityHeader/ActivityHeader.styled.es.js";
@@ -266,7 +270,7 @@ import "../../../components/ReviewablesSelector/ReviewablesSelector.styled.es.js
266
270
  import "../widgets/EmptyWidget.es.js";
267
271
  import "../widgets/ErrorWidget.es.js";
268
272
  import "../widgets/LoadMoreWidget.es.js";
269
- const Ye = ({ children: j }) => {
273
+ const ip = ({ children: j }) => {
270
274
  const [f, K] = $(null), A = F((o) => o === f, [f]), I = J(), {
271
275
  pushHistory: y,
272
276
  undo: M,
@@ -468,6 +472,6 @@ const Ye = ({ children: j }) => {
468
472
  }, [U, D, k, E, w, N]), /* @__PURE__ */ L.jsx(Z.Provider, { value: H, children: j });
469
473
  };
470
474
  export {
471
- Ye as CellEditingProvider
475
+ ip as CellEditingProvider
472
476
  };
473
477
  //# 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,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("../../../../../_virtual/jsx-runtime.cjs.js"),l=require("react"),d=require("./SelectionCellsContext.cjs.js"),r=require("../utils/cellUtils.cjs.js"),_=require("./SelectedRowsContext.cjs.js"),p=require("./DetailsPanelEntityContext.cjs.js"),v=({children:f})=>{const{selectedCells:S,gridMap:n,setSelectedCells:u,setFocusedCellId:h,setAnchorCell:E}=d.useSelectionCellsContext();let c;try{c=p.useDetailsPanelEntityContext().clearSelectedEntity}catch{c=void 0}const C=l.useRef([]),a=l.useMemo(()=>Array.from(S).filter(e=>r.parseCellId(e)?.colId===d.ROW_SELECTION_COLUMN_ID&&r.parseCellId(e)?.rowId).map(e=>r.parseCellId(e)?.rowId).filter(e=>e!==void 0&&n.rowIdToIndex.has(e)),[S,n]),t=l.useMemo(()=>{const e=[...a].sort(),o=[...C.current].sort();return e.length!==o.length||e.some((y,O)=>y!==o[O])?(C.current=a,a):C.current},[a]);l.useEffect(()=>{t.length>0&&c&&c()},[t.length,c]);const I=l.useCallback(()=>{const e=Array.from(n.rowIdToIndex.keys()),o=new Set;if(e.forEach(s=>{o.add(r.getCellId(s,d.ROW_SELECTION_COLUMN_ID))}),u(o),e.length>0){const s=r.getCellId(e[0],d.ROW_SELECTION_COLUMN_ID);h(s),E(r.parseCellId(s))}},[n]),R=l.useCallback(()=>{u(e=>{const o=new Set(e);return Array.from(o).forEach(s=>{r.parseCellId(s)?.colId===d.ROW_SELECTION_COLUMN_ID&&o.delete(s)}),o})},[u]),x=l.useCallback(e=>t.includes(e),[t]),i=l.useCallback(()=>{const e=n.rowIdToIndex.size;return e>0&&t.length===e},[n,t]),w=l.useCallback(()=>t.length>0&&!i(),[t,i]),g=l.useMemo(()=>({selectedRows:t,selectAllRows:I,clearRowsSelection:R,isRowSelected:x,areAllRowsSelected:i,areSomeRowsSelected:w}),[t,I,i,w,R]);return m.jsxRuntimeExports.jsx(_.SelectedRowsContext.Provider,{value:g,children:f})};exports.SelectedRowsProvider=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),d=require("./SelectionCellsContext.cjs.js"),n=require("../utils/cellUtils.cjs.js"),_=require("./SelectedRowsContext.cjs.js"),p=require("./DetailsPanelEntityContext.cjs.js"),v=({children:f})=>{const{selectedCells:I,gridMap:r,setSelectedCells:u,setFocusedCellId:h,setAnchorCell:x}=d.useSelectionCellsContext();let c;try{c=p.useDetailsPanelEntityContext().clearSelectedEntity}catch{c=void 0}const C=o.useRef([]),a=o.useMemo(()=>Array.from(I).filter(e=>n.parseCellId(e)?.colId===d.ROW_SELECTION_COLUMN_ID&&n.parseCellId(e)?.rowId).map(e=>n.parseCellId(e)?.rowId).filter(e=>e!==void 0&&(r.rowIdToIndex.size===0||r.rowIdToIndex.has(e))),[I,r]),t=o.useMemo(()=>{const e=[...a].sort(),s=[...C.current].sort();return e.length!==s.length||e.some((y,O)=>y!==s[O])?(C.current=a,a):C.current},[a]);o.useEffect(()=>{t.length>0&&c&&c()},[t.length,c]);const S=o.useCallback(()=>{const e=Array.from(r.rowIdToIndex.keys()),s=new Set;if(e.forEach(l=>{s.add(n.getCellId(l,d.ROW_SELECTION_COLUMN_ID))}),u(s),e.length>0){const l=n.getCellId(e[0],d.ROW_SELECTION_COLUMN_ID);h(l),x(n.parseCellId(l))}},[r]),w=o.useCallback(()=>{u(e=>{const s=new Set(e);return Array.from(s).forEach(l=>{n.parseCellId(l)?.colId===d.ROW_SELECTION_COLUMN_ID&&s.delete(l)}),s})},[u]),E=o.useCallback(e=>t.includes(e),[t]),i=o.useCallback(()=>{const e=r.rowIdToIndex.size;return e>0&&t.length===e},[r,t]),R=o.useCallback(()=>t.length>0&&!i(),[t,i]),g=o.useMemo(()=>({selectedRows:t,selectAllRows:S,clearRowsSelection:w,isRowSelected:E,areAllRowsSelected:i,areSomeRowsSelected:R}),[t,S,i,R,w]);return m.jsxRuntimeExports.jsx(_.SelectedRowsContext.Provider,{value:g,children:f})};exports.SelectedRowsProvider=v;
2
2
  //# sourceMappingURL=SelectedRowsProvider.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectedRowsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectedRowsProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useMemo, useRef, useEffect } from 'react'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './SelectionCellsContext'\nimport { CellId, getCellId, parseCellId, RowId } from '../utils/cellUtils'\nimport { SelectedRowsContext } from './SelectedRowsContext'\nimport { useDetailsPanelEntityContext } from './DetailsPanelEntityContext'\n\ninterface SelectedRowsProviderProps {\n children: ReactNode\n}\n\nexport const SelectedRowsProvider = ({ children }: SelectedRowsProviderProps) => {\n const { selectedCells, gridMap, setSelectedCells, setFocusedCellId, setAnchorCell } =\n useSelectionCellsContext()\n\n // Try to get the entity context, but it might not exist\n let clearSelectedEntity: (() => void) | undefined\n try {\n const entityContext = useDetailsPanelEntityContext()\n clearSelectedEntity = entityContext.clearSelectedEntity\n } catch {\n // Context not available, that's fine\n clearSelectedEntity = undefined\n }\n\n const prevSelectedRowsRef = useRef<string[]>([])\n\n // Calculate the current selected rows, filtering out rows that no longer exist in the grid\n const currentSelectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId)\n .filter((rowId): rowId is string => rowId !== undefined && gridMap.rowIdToIndex.has(rowId)),\n [selectedCells, gridMap],\n )\n\n // Memoize the selected rows with a stable reference\n const selectedRows = useMemo(() => {\n // Sort for consistent comparison\n const sortedCurrent = [...currentSelectedRows].sort()\n const sortedPrev = [...prevSelectedRowsRef.current].sort()\n\n // Check if the arrays are different\n const hasChanged =\n sortedCurrent.length !== sortedPrev.length ||\n sortedCurrent.some((id, index) => id !== sortedPrev[index])\n\n // Update ref and return new array only if changed\n if (hasChanged) {\n prevSelectedRowsRef.current = currentSelectedRows\n return currentSelectedRows\n }\n\n // Return the previous reference if no change\n return prevSelectedRowsRef.current\n }, [currentSelectedRows])\n\n // Clear entity details when rows are selected\n useEffect(() => {\n if (selectedRows.length > 0 && clearSelectedEntity) {\n clearSelectedEntity()\n }\n }, [selectedRows.length, clearSelectedEntity])\n\n // Select all rows in the grid\n const selectAllRows = useCallback(() => {\n const allRowIds = Array.from(gridMap.rowIdToIndex.keys())\n const newSelection = new Set<CellId>()\n\n // Create cells for each row with the row selection column ID\n allRowIds.forEach((rowId) => {\n newSelection.add(getCellId(rowId, ROW_SELECTION_COLUMN_ID))\n })\n\n setSelectedCells(newSelection)\n // If there are rows, set focus to the first one\n if (allRowIds.length > 0) {\n const firstCellId = getCellId(allRowIds[0], ROW_SELECTION_COLUMN_ID)\n setFocusedCellId(firstCellId)\n setAnchorCell(parseCellId(firstCellId))\n }\n }, [gridMap])\n\n // clear rows selection\n const clearRowsSelection = useCallback(() => {\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n Array.from(newSelection).forEach((cellId) => {\n if (parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID) {\n newSelection.delete(cellId)\n }\n })\n return newSelection\n })\n }, [setSelectedCells])\n\n // check if a row is selected (using selectedRows array)\n const isRowSelected = useCallback(\n (rowId: RowId) => {\n return selectedRows.includes(rowId)\n },\n [selectedRows],\n )\n\n // Check if all rows are selected\n const areAllRowsSelected = useCallback(() => {\n const totalRows = gridMap.rowIdToIndex.size\n return totalRows > 0 && selectedRows.length === totalRows\n }, [gridMap, selectedRows])\n\n // Check if some but not all rows are selected\n const areSomeRowsSelected = useCallback(() => {\n return selectedRows.length > 0 && !areAllRowsSelected()\n }, [selectedRows, areAllRowsSelected])\n\n const value = useMemo(() => {\n return {\n selectedRows,\n selectAllRows,\n clearRowsSelection,\n isRowSelected,\n areAllRowsSelected,\n areSomeRowsSelected,\n }\n }, [selectedRows, selectAllRows, areAllRowsSelected, areSomeRowsSelected, clearRowsSelection])\n\n return <SelectedRowsContext.Provider value={value}>{children}</SelectedRowsContext.Provider>\n}\n"],"names":["SelectedRowsProvider","children","selectedCells","gridMap","setSelectedCells","setFocusedCellId","setAnchorCell","useSelectionCellsContext","clearSelectedEntity","useDetailsPanelEntityContext","prevSelectedRowsRef","useRef","currentSelectedRows","useMemo","cellId","parseCellId","ROW_SELECTION_COLUMN_ID","rowId","selectedRows","sortedCurrent","sortedPrev","id","index","useEffect","selectAllRows","useCallback","allRowIds","newSelection","getCellId","firstCellId","clearRowsSelection","prev","isRowSelected","areAllRowsSelected","totalRows","areSomeRowsSelected","value","jsx","SelectedRowsContext"],"mappings":"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"}
1
+ {"version":3,"file":"SelectedRowsProvider.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectedRowsProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useMemo, useRef, useEffect } from 'react'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './SelectionCellsContext'\nimport { CellId, getCellId, parseCellId, RowId } from '../utils/cellUtils'\nimport { SelectedRowsContext } from './SelectedRowsContext'\nimport { useDetailsPanelEntityContext } from './DetailsPanelEntityContext'\n\ninterface SelectedRowsProviderProps {\n children: ReactNode\n}\n\nexport const SelectedRowsProvider = ({ children }: SelectedRowsProviderProps) => {\n const { selectedCells, gridMap, setSelectedCells, setFocusedCellId, setAnchorCell } =\n useSelectionCellsContext()\n\n // Try to get the entity context, but it might not exist\n let clearSelectedEntity: (() => void) | undefined\n try {\n const entityContext = useDetailsPanelEntityContext()\n clearSelectedEntity = entityContext.clearSelectedEntity\n } catch {\n // Context not available, that's fine\n clearSelectedEntity = undefined\n }\n\n const prevSelectedRowsRef = useRef<string[]>([])\n\n // Calculate the current selected rows, filtering out rows that no longer exist in the grid\n const currentSelectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId)\n .filter((rowId): rowId is string =>\n rowId !== undefined\n // in case the grid map hasn't been initialised, we ignore it\n && (gridMap.rowIdToIndex.size === 0 || gridMap.rowIdToIndex.has(rowId))),\n [selectedCells, gridMap],\n )\n\n // Memoize the selected rows with a stable reference\n const selectedRows = useMemo(() => {\n // Sort for consistent comparison\n const sortedCurrent = [...currentSelectedRows].sort()\n const sortedPrev = [...prevSelectedRowsRef.current].sort()\n\n // Check if the arrays are different\n const hasChanged =\n sortedCurrent.length !== sortedPrev.length ||\n sortedCurrent.some((id, index) => id !== sortedPrev[index])\n\n // Update ref and return new array only if changed\n if (hasChanged) {\n prevSelectedRowsRef.current = currentSelectedRows\n return currentSelectedRows\n }\n\n // Return the previous reference if no change\n return prevSelectedRowsRef.current\n }, [currentSelectedRows])\n\n // Clear entity details when rows are selected\n useEffect(() => {\n if (selectedRows.length > 0 && clearSelectedEntity) {\n clearSelectedEntity()\n }\n }, [selectedRows.length, clearSelectedEntity])\n\n // Select all rows in the grid\n const selectAllRows = useCallback(() => {\n const allRowIds = Array.from(gridMap.rowIdToIndex.keys())\n const newSelection = new Set<CellId>()\n\n // Create cells for each row with the row selection column ID\n allRowIds.forEach((rowId) => {\n newSelection.add(getCellId(rowId, ROW_SELECTION_COLUMN_ID))\n })\n\n setSelectedCells(newSelection)\n // If there are rows, set focus to the first one\n if (allRowIds.length > 0) {\n const firstCellId = getCellId(allRowIds[0], ROW_SELECTION_COLUMN_ID)\n setFocusedCellId(firstCellId)\n setAnchorCell(parseCellId(firstCellId))\n }\n }, [gridMap])\n\n // clear rows selection\n const clearRowsSelection = useCallback(() => {\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n Array.from(newSelection).forEach((cellId) => {\n if (parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID) {\n newSelection.delete(cellId)\n }\n })\n return newSelection\n })\n }, [setSelectedCells])\n\n // check if a row is selected (using selectedRows array)\n const isRowSelected = useCallback(\n (rowId: RowId) => {\n return selectedRows.includes(rowId)\n },\n [selectedRows],\n )\n\n // Check if all rows are selected\n const areAllRowsSelected = useCallback(() => {\n const totalRows = gridMap.rowIdToIndex.size\n return totalRows > 0 && selectedRows.length === totalRows\n }, [gridMap, selectedRows])\n\n // Check if some but not all rows are selected\n const areSomeRowsSelected = useCallback(() => {\n return selectedRows.length > 0 && !areAllRowsSelected()\n }, [selectedRows, areAllRowsSelected])\n\n const value = useMemo(() => {\n return {\n selectedRows,\n selectAllRows,\n clearRowsSelection,\n isRowSelected,\n areAllRowsSelected,\n areSomeRowsSelected,\n }\n }, [selectedRows, selectAllRows, areAllRowsSelected, areSomeRowsSelected, clearRowsSelection])\n\n return <SelectedRowsContext.Provider value={value}>{children}</SelectedRowsContext.Provider>\n}\n"],"names":["SelectedRowsProvider","children","selectedCells","gridMap","setSelectedCells","setFocusedCellId","setAnchorCell","useSelectionCellsContext","clearSelectedEntity","useDetailsPanelEntityContext","prevSelectedRowsRef","useRef","currentSelectedRows","useMemo","cellId","parseCellId","ROW_SELECTION_COLUMN_ID","rowId","selectedRows","sortedCurrent","sortedPrev","id","index","useEffect","selectAllRows","useCallback","allRowIds","newSelection","getCellId","firstCellId","clearRowsSelection","prev","isRowSelected","areAllRowsSelected","totalRows","areSomeRowsSelected","value","jsx","SelectedRowsContext"],"mappings":"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"}
@@ -1,36 +1,36 @@
1
1
  import { j as A } from "../../../../../_virtual/jsx-runtime.es.js";
2
- import { useRef as P, useMemo as m, useEffect as T, useCallback as l } from "react";
2
+ import { useRef as T, useMemo as w, useEffect as P, useCallback as l } from "react";
3
3
  import { useSelectionCellsContext as j, ROW_SELECTION_COLUMN_ID as a } from "./SelectionCellsContext.es.js";
4
- import { parseCellId as c, getCellId as R } from "../utils/cellUtils.es.js";
4
+ import { parseCellId as c, getCellId as I } from "../utils/cellUtils.es.js";
5
5
  import { SelectedRowsContext as M } from "./SelectedRowsContext.es.js";
6
6
  import { useDetailsPanelEntityContext as O } from "./DetailsPanelEntityContext.es.js";
7
- const z = ({ children: I }) => {
8
- const { selectedCells: w, gridMap: n, setSelectedCells: u, setFocusedCellId: p, setAnchorCell: x } = j();
7
+ const b = ({ children: R }) => {
8
+ const { selectedCells: m, gridMap: n, setSelectedCells: u, setFocusedCellId: x, setAnchorCell: p } = j();
9
9
  let s;
10
10
  try {
11
11
  s = O().clearSelectedEntity;
12
12
  } catch {
13
13
  s = void 0;
14
14
  }
15
- const f = P([]), d = m(
16
- () => Array.from(w).filter(
15
+ const f = T([]), d = w(
16
+ () => Array.from(m).filter(
17
17
  (e) => c(e)?.colId === a && c(e)?.rowId
18
- ).map((e) => c(e)?.rowId).filter((e) => e !== void 0 && n.rowIdToIndex.has(e)),
19
- [w, n]
20
- ), t = m(() => {
18
+ ).map((e) => c(e)?.rowId).filter((e) => e !== void 0 && (n.rowIdToIndex.size === 0 || n.rowIdToIndex.has(e))),
19
+ [m, n]
20
+ ), t = w(() => {
21
21
  const e = [...d].sort(), o = [...f.current].sort();
22
22
  return e.length !== o.length || e.some((E, v) => E !== o[v]) ? (f.current = d, d) : f.current;
23
23
  }, [d]);
24
- T(() => {
24
+ P(() => {
25
25
  t.length > 0 && s && s();
26
26
  }, [t.length, s]);
27
27
  const C = l(() => {
28
28
  const e = Array.from(n.rowIdToIndex.keys()), o = /* @__PURE__ */ new Set();
29
29
  if (e.forEach((r) => {
30
- o.add(R(r, a));
30
+ o.add(I(r, a));
31
31
  }), u(o), e.length > 0) {
32
- const r = R(e[0], a);
33
- p(r), x(c(r));
32
+ const r = I(e[0], a);
33
+ x(r), p(c(r));
34
34
  }
35
35
  }, [n]), S = l(() => {
36
36
  u((e) => {
@@ -45,7 +45,7 @@ const z = ({ children: I }) => {
45
45
  ), i = l(() => {
46
46
  const e = n.rowIdToIndex.size;
47
47
  return e > 0 && t.length === e;
48
- }, [n, t]), h = l(() => t.length > 0 && !i(), [t, i]), y = m(() => ({
48
+ }, [n, t]), h = l(() => t.length > 0 && !i(), [t, i]), y = w(() => ({
49
49
  selectedRows: t,
50
50
  selectAllRows: C,
51
51
  clearRowsSelection: S,
@@ -53,9 +53,9 @@ const z = ({ children: I }) => {
53
53
  areAllRowsSelected: i,
54
54
  areSomeRowsSelected: h
55
55
  }), [t, C, i, h, S]);
56
- return /* @__PURE__ */ A.jsx(M.Provider, { value: y, children: I });
56
+ return /* @__PURE__ */ A.jsx(M.Provider, { value: y, children: R });
57
57
  };
58
58
  export {
59
- z as SelectedRowsProvider
59
+ b as SelectedRowsProvider
60
60
  };
61
61
  //# sourceMappingURL=SelectedRowsProvider.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectedRowsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectedRowsProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useMemo, useRef, useEffect } from 'react'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './SelectionCellsContext'\nimport { CellId, getCellId, parseCellId, RowId } from '../utils/cellUtils'\nimport { SelectedRowsContext } from './SelectedRowsContext'\nimport { useDetailsPanelEntityContext } from './DetailsPanelEntityContext'\n\ninterface SelectedRowsProviderProps {\n children: ReactNode\n}\n\nexport const SelectedRowsProvider = ({ children }: SelectedRowsProviderProps) => {\n const { selectedCells, gridMap, setSelectedCells, setFocusedCellId, setAnchorCell } =\n useSelectionCellsContext()\n\n // Try to get the entity context, but it might not exist\n let clearSelectedEntity: (() => void) | undefined\n try {\n const entityContext = useDetailsPanelEntityContext()\n clearSelectedEntity = entityContext.clearSelectedEntity\n } catch {\n // Context not available, that's fine\n clearSelectedEntity = undefined\n }\n\n const prevSelectedRowsRef = useRef<string[]>([])\n\n // Calculate the current selected rows, filtering out rows that no longer exist in the grid\n const currentSelectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId)\n .filter((rowId): rowId is string => rowId !== undefined && gridMap.rowIdToIndex.has(rowId)),\n [selectedCells, gridMap],\n )\n\n // Memoize the selected rows with a stable reference\n const selectedRows = useMemo(() => {\n // Sort for consistent comparison\n const sortedCurrent = [...currentSelectedRows].sort()\n const sortedPrev = [...prevSelectedRowsRef.current].sort()\n\n // Check if the arrays are different\n const hasChanged =\n sortedCurrent.length !== sortedPrev.length ||\n sortedCurrent.some((id, index) => id !== sortedPrev[index])\n\n // Update ref and return new array only if changed\n if (hasChanged) {\n prevSelectedRowsRef.current = currentSelectedRows\n return currentSelectedRows\n }\n\n // Return the previous reference if no change\n return prevSelectedRowsRef.current\n }, [currentSelectedRows])\n\n // Clear entity details when rows are selected\n useEffect(() => {\n if (selectedRows.length > 0 && clearSelectedEntity) {\n clearSelectedEntity()\n }\n }, [selectedRows.length, clearSelectedEntity])\n\n // Select all rows in the grid\n const selectAllRows = useCallback(() => {\n const allRowIds = Array.from(gridMap.rowIdToIndex.keys())\n const newSelection = new Set<CellId>()\n\n // Create cells for each row with the row selection column ID\n allRowIds.forEach((rowId) => {\n newSelection.add(getCellId(rowId, ROW_SELECTION_COLUMN_ID))\n })\n\n setSelectedCells(newSelection)\n // If there are rows, set focus to the first one\n if (allRowIds.length > 0) {\n const firstCellId = getCellId(allRowIds[0], ROW_SELECTION_COLUMN_ID)\n setFocusedCellId(firstCellId)\n setAnchorCell(parseCellId(firstCellId))\n }\n }, [gridMap])\n\n // clear rows selection\n const clearRowsSelection = useCallback(() => {\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n Array.from(newSelection).forEach((cellId) => {\n if (parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID) {\n newSelection.delete(cellId)\n }\n })\n return newSelection\n })\n }, [setSelectedCells])\n\n // check if a row is selected (using selectedRows array)\n const isRowSelected = useCallback(\n (rowId: RowId) => {\n return selectedRows.includes(rowId)\n },\n [selectedRows],\n )\n\n // Check if all rows are selected\n const areAllRowsSelected = useCallback(() => {\n const totalRows = gridMap.rowIdToIndex.size\n return totalRows > 0 && selectedRows.length === totalRows\n }, [gridMap, selectedRows])\n\n // Check if some but not all rows are selected\n const areSomeRowsSelected = useCallback(() => {\n return selectedRows.length > 0 && !areAllRowsSelected()\n }, [selectedRows, areAllRowsSelected])\n\n const value = useMemo(() => {\n return {\n selectedRows,\n selectAllRows,\n clearRowsSelection,\n isRowSelected,\n areAllRowsSelected,\n areSomeRowsSelected,\n }\n }, [selectedRows, selectAllRows, areAllRowsSelected, areSomeRowsSelected, clearRowsSelection])\n\n return <SelectedRowsContext.Provider value={value}>{children}</SelectedRowsContext.Provider>\n}\n"],"names":["SelectedRowsProvider","children","selectedCells","gridMap","setSelectedCells","setFocusedCellId","setAnchorCell","useSelectionCellsContext","clearSelectedEntity","useDetailsPanelEntityContext","prevSelectedRowsRef","useRef","currentSelectedRows","useMemo","cellId","parseCellId","ROW_SELECTION_COLUMN_ID","rowId","selectedRows","sortedCurrent","sortedPrev","id","index","useEffect","selectAllRows","useCallback","allRowIds","newSelection","getCellId","firstCellId","clearRowsSelection","prev","isRowSelected","areAllRowsSelected","totalRows","areSomeRowsSelected","value","jsx","SelectedRowsContext"],"mappings":"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"}
1
+ {"version":3,"file":"SelectedRowsProvider.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/context/SelectedRowsProvider.tsx"],"sourcesContent":["import { ReactNode, useCallback, useMemo, useRef, useEffect } from 'react'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from './SelectionCellsContext'\nimport { CellId, getCellId, parseCellId, RowId } from '../utils/cellUtils'\nimport { SelectedRowsContext } from './SelectedRowsContext'\nimport { useDetailsPanelEntityContext } from './DetailsPanelEntityContext'\n\ninterface SelectedRowsProviderProps {\n children: ReactNode\n}\n\nexport const SelectedRowsProvider = ({ children }: SelectedRowsProviderProps) => {\n const { selectedCells, gridMap, setSelectedCells, setFocusedCellId, setAnchorCell } =\n useSelectionCellsContext()\n\n // Try to get the entity context, but it might not exist\n let clearSelectedEntity: (() => void) | undefined\n try {\n const entityContext = useDetailsPanelEntityContext()\n clearSelectedEntity = entityContext.clearSelectedEntity\n } catch {\n // Context not available, that's fine\n clearSelectedEntity = undefined\n }\n\n const prevSelectedRowsRef = useRef<string[]>([])\n\n // Calculate the current selected rows, filtering out rows that no longer exist in the grid\n const currentSelectedRows = useMemo(\n () =>\n Array.from(selectedCells)\n .filter(\n (cellId) =>\n parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID && parseCellId(cellId)?.rowId,\n )\n .map((cellId) => parseCellId(cellId)?.rowId)\n .filter((rowId): rowId is string =>\n rowId !== undefined\n // in case the grid map hasn't been initialised, we ignore it\n && (gridMap.rowIdToIndex.size === 0 || gridMap.rowIdToIndex.has(rowId))),\n [selectedCells, gridMap],\n )\n\n // Memoize the selected rows with a stable reference\n const selectedRows = useMemo(() => {\n // Sort for consistent comparison\n const sortedCurrent = [...currentSelectedRows].sort()\n const sortedPrev = [...prevSelectedRowsRef.current].sort()\n\n // Check if the arrays are different\n const hasChanged =\n sortedCurrent.length !== sortedPrev.length ||\n sortedCurrent.some((id, index) => id !== sortedPrev[index])\n\n // Update ref and return new array only if changed\n if (hasChanged) {\n prevSelectedRowsRef.current = currentSelectedRows\n return currentSelectedRows\n }\n\n // Return the previous reference if no change\n return prevSelectedRowsRef.current\n }, [currentSelectedRows])\n\n // Clear entity details when rows are selected\n useEffect(() => {\n if (selectedRows.length > 0 && clearSelectedEntity) {\n clearSelectedEntity()\n }\n }, [selectedRows.length, clearSelectedEntity])\n\n // Select all rows in the grid\n const selectAllRows = useCallback(() => {\n const allRowIds = Array.from(gridMap.rowIdToIndex.keys())\n const newSelection = new Set<CellId>()\n\n // Create cells for each row with the row selection column ID\n allRowIds.forEach((rowId) => {\n newSelection.add(getCellId(rowId, ROW_SELECTION_COLUMN_ID))\n })\n\n setSelectedCells(newSelection)\n // If there are rows, set focus to the first one\n if (allRowIds.length > 0) {\n const firstCellId = getCellId(allRowIds[0], ROW_SELECTION_COLUMN_ID)\n setFocusedCellId(firstCellId)\n setAnchorCell(parseCellId(firstCellId))\n }\n }, [gridMap])\n\n // clear rows selection\n const clearRowsSelection = useCallback(() => {\n setSelectedCells((prev) => {\n const newSelection = new Set(prev)\n Array.from(newSelection).forEach((cellId) => {\n if (parseCellId(cellId)?.colId === ROW_SELECTION_COLUMN_ID) {\n newSelection.delete(cellId)\n }\n })\n return newSelection\n })\n }, [setSelectedCells])\n\n // check if a row is selected (using selectedRows array)\n const isRowSelected = useCallback(\n (rowId: RowId) => {\n return selectedRows.includes(rowId)\n },\n [selectedRows],\n )\n\n // Check if all rows are selected\n const areAllRowsSelected = useCallback(() => {\n const totalRows = gridMap.rowIdToIndex.size\n return totalRows > 0 && selectedRows.length === totalRows\n }, [gridMap, selectedRows])\n\n // Check if some but not all rows are selected\n const areSomeRowsSelected = useCallback(() => {\n return selectedRows.length > 0 && !areAllRowsSelected()\n }, [selectedRows, areAllRowsSelected])\n\n const value = useMemo(() => {\n return {\n selectedRows,\n selectAllRows,\n clearRowsSelection,\n isRowSelected,\n areAllRowsSelected,\n areSomeRowsSelected,\n }\n }, [selectedRows, selectAllRows, areAllRowsSelected, areSomeRowsSelected, clearRowsSelection])\n\n return <SelectedRowsContext.Provider value={value}>{children}</SelectedRowsContext.Provider>\n}\n"],"names":["SelectedRowsProvider","children","selectedCells","gridMap","setSelectedCells","setFocusedCellId","setAnchorCell","useSelectionCellsContext","clearSelectedEntity","useDetailsPanelEntityContext","prevSelectedRowsRef","useRef","currentSelectedRows","useMemo","cellId","parseCellId","ROW_SELECTION_COLUMN_ID","rowId","selectedRows","sortedCurrent","sortedPrev","id","index","useEffect","selectAllRows","useCallback","allRowIds","newSelection","getCellId","firstCellId","clearRowsSelection","prev","isRowSelected","areAllRowsSelected","totalRows","areSomeRowsSelected","value","jsx","SelectedRowsContext"],"mappings":";;;;;;AAUO,MAAMA,IAAuB,CAAC,EAAE,UAAAC,QAA0C;AAC/E,QAAM,EAAE,eAAAC,GAAe,SAAAC,GAAS,kBAAAC,GAAkB,kBAAAC,GAAkB,eAAAC,EAAA,IAClEC,EAAA;AAGF,MAAIC;AACJ,MAAI;AAEF,IAAAA,IADsBC,EAAA,EACc;AAAA,EACtC,QAAQ;AAEN,IAAAD,IAAsB;AAAA,EACxB;AAEA,QAAME,IAAsBC,EAAiB,EAAE,GAGzCC,IAAsBC;AAAA,IAC1B,MACE,MAAM,KAAKX,CAAa,EACrB;AAAA,MACC,CAACY,MACCC,EAAYD,CAAM,GAAG,UAAUE,KAA2BD,EAAYD,CAAM,GAAG;AAAA,IAAA,EAElF,IAAI,CAACA,MAAWC,EAAYD,CAAM,GAAG,KAAK,EAC1C,OAAO,CAACG,MACPA,MAAU,WAENd,EAAQ,aAAa,SAAS,KAAKA,EAAQ,aAAa,IAAIc,CAAK,EAAE;AAAA,IAC7E,CAACf,GAAeC,CAAO;AAAA,EAAA,GAInBe,IAAeL,EAAQ,MAAM;AAEjC,UAAMM,IAAgB,CAAC,GAAGP,CAAmB,EAAE,KAAA,GACzCQ,IAAa,CAAC,GAAGV,EAAoB,OAAO,EAAE,KAAA;AAQpD,WAJES,EAAc,WAAWC,EAAW,UACpCD,EAAc,KAAK,CAACE,GAAIC,MAAUD,MAAOD,EAAWE,CAAK,CAAC,KAI1DZ,EAAoB,UAAUE,GACvBA,KAIFF,EAAoB;AAAA,EAC7B,GAAG,CAACE,CAAmB,CAAC;AAGxB,EAAAW,EAAU,MAAM;AACd,IAAIL,EAAa,SAAS,KAAKV,KAC7BA,EAAA;AAAA,EAEJ,GAAG,CAACU,EAAa,QAAQV,CAAmB,CAAC;AAG7C,QAAMgB,IAAgBC,EAAY,MAAM;AACtC,UAAMC,IAAY,MAAM,KAAKvB,EAAQ,aAAa,MAAM,GAClDwB,wBAAmB,IAAA;AASzB,QANAD,EAAU,QAAQ,CAACT,MAAU;AAC3B,MAAAU,EAAa,IAAIC,EAAUX,GAAOD,CAAuB,CAAC;AAAA,IAC5D,CAAC,GAEDZ,EAAiBuB,CAAY,GAEzBD,EAAU,SAAS,GAAG;AACxB,YAAMG,IAAcD,EAAUF,EAAU,CAAC,GAAGV,CAAuB;AACnE,MAAAX,EAAiBwB,CAAW,GAC5BvB,EAAcS,EAAYc,CAAW,CAAC;AAAA,IACxC;AAAA,EACF,GAAG,CAAC1B,CAAO,CAAC,GAGN2B,IAAqBL,EAAY,MAAM;AAC3C,IAAArB,EAAiB,CAAC2B,MAAS;AACzB,YAAMJ,IAAe,IAAI,IAAII,CAAI;AACjC,mBAAM,KAAKJ,CAAY,EAAE,QAAQ,CAACb,MAAW;AAC3C,QAAIC,EAAYD,CAAM,GAAG,UAAUE,KACjCW,EAAa,OAAOb,CAAM;AAAA,MAE9B,CAAC,GACMa;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAACvB,CAAgB,CAAC,GAGf4B,IAAgBP;AAAA,IACpB,CAACR,MACQC,EAAa,SAASD,CAAK;AAAA,IAEpC,CAACC,CAAY;AAAA,EAAA,GAITe,IAAqBR,EAAY,MAAM;AAC3C,UAAMS,IAAY/B,EAAQ,aAAa;AACvC,WAAO+B,IAAY,KAAKhB,EAAa,WAAWgB;AAAA,EAClD,GAAG,CAAC/B,GAASe,CAAY,CAAC,GAGpBiB,IAAsBV,EAAY,MAC/BP,EAAa,SAAS,KAAK,CAACe,EAAA,GAClC,CAACf,GAAce,CAAkB,CAAC,GAE/BG,IAAQvB,EAAQ,OACb;AAAA,IACL,cAAAK;AAAA,IACA,eAAAM;AAAA,IACA,oBAAAM;AAAA,IACA,eAAAE;AAAA,IACA,oBAAAC;AAAA,IACA,qBAAAE;AAAA,EAAA,IAED,CAACjB,GAAcM,GAAeS,GAAoBE,GAAqBL,CAAkB,CAAC;AAE7F,SAAOO,gBAAAA,EAAAA,IAACC,EAAoB,UAApB,EAA6B,OAAAF,GAAe,UAAAnC,EAAA,CAAS;AAC/D;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),t=require("../utils/cellUtils.cjs.js"),X=require("../ProjectTreeTable.cjs.js"),p=require("./SelectionCellsContext.cjs.js");require("react-toastify");require("./ProjectTableQueriesContext.cjs.js");require("./ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/SubtasksModulesContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("./ClipboardContext.cjs.js");require("./ProjectDataContext.cjs.js");require("./CellEditingContext.cjs.js");require("short-uuid");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("date-fns");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("./ColumnSettingsContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/react-virtual");require("@tanstack/match-sorter-utils");require("../../SimpleTable/context/SimpleTableContext.cjs.js");require("../../SimpleTable/SimpleTableRowTemplate.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../Slicer/components/SlicerSearch.cjs.js");require("../../Slicer/context/SlicerContext.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");const Y=require("../hooks/useCheckSelectedCellsVisible.cjs.js"),Z=({children:z})=>{const[n,I]=o.useState(new Set),[f,d]=o.useState(null),[T,O]=o.useState(!1),[w,S]=o.useState(null),[g,V]=o.useState({rowIdToIndex:new Map,colIdToIndex:new Map,indexToRowId:new Map,indexToColId:new Map}),m=e=>JSON.stringify(Array.from(e.entries())),s=o.useMemo(()=>g,[m(g.rowIdToIndex),m(g.colIdToIndex),m(g.indexToRowId),m(g.indexToColId)]),P=o.useRef(!1),_=o.useMemo(()=>Array.from(n).filter(e=>t.parseCellId(e)?.colId===p.ROW_SELECTION_COLUMN_ID&&t.parseCellId(e)?.rowId).map(e=>t.parseCellId(e)?.rowId),[n]);Y.useCheckSelectedCellsVisible({selectedCells:n,setSelectedCells:I,focusedCellId:f,setFocusedCellId:d});const h=o.useRef(!1),E=o.useCallback((e,u)=>{const q=new Map,i=new Map,r=new Map,l=new Map;e.forEach((c,a)=>{q.set(c,a),r.set(a,c)}),u.forEach((c,a)=>{i.set(c,a),l.set(a,c)}),V({rowIdToIndex:q,colIdToIndex:i,indexToRowId:r,indexToColId:l})},[]),C=o.useCallback((e,u)=>{I(q=>{let i=new Set(e);if(u.colId!==p.ROW_SELECTION_COLUMN_ID&&u.colId!==X.DRAG_HANDLE_COLUMN_ID){const r=Array.from(q).filter(l=>t.parseCellId(l)?.colId===p.ROW_SELECTION_COLUMN_ID);r.length&&(i=new Set([...i,...r]))}return i})},[]),M=o.useCallback((e,u,q)=>{q||C(new Set,e);const i=s.rowIdToIndex.get(e.rowId)??0,r=s.colIdToIndex.get(e.colId)??0,l=s.rowIdToIndex.get(u.rowId)??0,c=s.colIdToIndex.get(u.colId)??0,a=Math.min(i,l),x=Math.max(i,l),J=Math.min(r,c),K=Math.max(r,c),G=new Set(q?n:[]);for(let b=a;b<=x;b++){const W=s.indexToRowId.get(b);if(W)for(let k=J;k<=K;k++){const F=s.indexToColId.get(k);F&&G.add(t.getCellId(W,F))}}return G},[s,n,C]),N=o.useCallback((e,u)=>{const q=t.parseCellId(e);q&&(O(!0),h.current=u,P.current=n.has(e),u?I(i=>{const r=new Set(i);return r.has(e)?(r.delete(e),f===e&&(r.size>0?d(Array.from(r)[Array.from(r).length-1]):d(null))):(r.add(e),d(e),S(q)),r}):n.size===1&&n.has(e)&&[p.ROW_SELECTION_COLUMN_ID,"name"].includes(q.colId)?(I(new Set),S(null),d(null)):(C(new Set([e]),q),S(q),d(e)))},[n,f,C]),L=o.useCallback((e,u)=>{if(!T||!w)return;const q=t.parseCellId(e);if(q)if(u)I(i=>{const r=new Set(i);return t.parseCellId(e)&&(P.current?r.delete(e):r.add(e)),r});else{if(h.current)return;const i=M(w,q,h.current);C(i,q)}},[T,w,M,C]),A=o.useCallback(()=>{O(!1)},[]),y=o.useCallback((e,u,q)=>{const i=t.parseCellId(e);if(i)if(q&&w){const r=M(w,i,u);C(r,i)}else u?I(r=>{const l=new Set(r);return l.has(e)?l.delete(e):l.add(e),l}):(C(new Set([e]),i),S(i))},[w,M,C]),B=o.useCallback(e=>{d(e)},[]),D=o.useCallback(()=>{I(new Set),S(null),d(null)},[]),R=o.useCallback(e=>n.has(e),[n]),U=o.useCallback(e=>e===f,[f]),j=o.useCallback(e=>t.parseCellId(e),[]),v=o.useCallback(e=>{if(!R(e))return[];const u=t.parseCellId(e);if(!u)return[];const q=s.rowIdToIndex.get(u.rowId),i=s.colIdToIndex.get(u.colId);if(q===void 0||i===void 0)return[];const r=s.indexToRowId.get(q-1),l=s.indexToColId.get(i+1),c=s.indexToRowId.get(q+1),a=s.indexToColId.get(i-1);let x=t.BorderPosition.None;return(!r||!n.has(t.getCellId(r,u.colId)))&&(x|=t.BorderPosition.Top),(!l||!n.has(t.getCellId(u.rowId,l)))&&(x|=t.BorderPosition.Right),(!c||!n.has(t.getCellId(c,u.colId)))&&(x|=t.BorderPosition.Bottom),(!a||!n.has(t.getCellId(u.rowId,a)))&&(x|=t.BorderPosition.Left),t.getBorderClasses(x)},[n,s,R]),H=o.useMemo(()=>({selectedCells:n,selectedRows:_,focusedCellId:f,selectionInProgress:T,anchorCell:w,gridMap:s,setSelectedCells:I,setFocusedCellId:d,setAnchorCell:S,registerGrid:E,selectCell:y,startSelection:N,extendSelection:L,endSelection:A,focusCell:B,clearSelection:D,isCellSelected:R,isCellFocused:U,getCellPositionFromId:j,getCellBorderClasses:v}),[n,_,f,T,w,s,I,d,S,E,y,N,L,A,B,D,R,U,j,v]);return Q.jsxRuntimeExports.jsx(p.SelectionCellsContext.Provider,{value:H,children:z})};exports.SelectionCellsProvider=Z;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("../../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),t=require("../utils/cellUtils.cjs.js"),X=require("../ProjectTreeTable.cjs.js"),p=require("./SelectionCellsContext.cjs.js");require("react-toastify");require("./ProjectTableQueriesContext.cjs.js");require("./ProjectTableContext.cjs.js");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.cjs.js");require("../../../context/SubtasksModulesContext.cjs.js");require("../../../context/ThumbnailUploaderContext.cjs.js");require("../../../context/SettingsPanelContext.cjs.js");require("../../../context/pip/PiPProvider.cjs.js");require("react-dom");require("../../../context/pip/PiPWrapper.cjs.js");require("../../../context/AddonProjectContext.cjs.js");require("../../../context/AddonContext.cjs.js");require("../../../context/PowerpackContext.cjs.js");require("../../../context/MoveEntityContext.cjs.js");require("../../../context/MenuContext.cjs.js");require("../../../context/WebsocketContext.cjs.js");require("../../../context/GlobalContext.cjs.js");require("../../../context/ProjectContext.cjs.js");require("../../../context/ProjectFoldersContext.cjs.js");require("../../../context/UriContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("clsx");require("../../ContextMenu/ContextMenuContext.cjs.js");require("lodash");require("uuid");require("../../../util/pubsub.cjs.js");require("./ClipboardContext.cjs.js");require("./ProjectDataContext.cjs.js");require("./CellEditingContext.cjs.js");require("short-uuid");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("../../../components/AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../../../components/AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("date-fns");require("../../../components/DateRangePicker/DateRangePicker.styled.cjs.js");require("../../../components/LinksManager/CellEditingDialog.cjs.js");require("../../../api/base/client.cjs.js");require("../../../api/generated/graphql.cjs.js");require("../../../api/generated/graphqlLinks.cjs.js");require("../../../api/generated/access.cjs.js");require("../../../api/generated/actions.cjs.js");require("../../../api/generated/activityFeed.cjs.js");require("../../../api/generated/addons.cjs.js");require("../../../api/generated/anatomy.cjs.js");require("../../../api/generated/attributes.cjs.js");require("../../../api/generated/authentication.cjs.js");require("../../../api/generated/bundles.cjs.js");require("../../../api/generated/configuration.cjs.js");require("../../../api/generated/desktop.cjs.js");require("../../../api/generated/entityLists.cjs.js");require("../../../api/generated/events.cjs.js");require("../../../api/generated/files.cjs.js");require("../../../api/generated/folders.cjs.js");require("../../../api/generated/inbox.cjs.js");require("../../../api/generated/links.cjs.js");require("../../../api/generated/market.cjs.js");require("../../../api/generated/onboarding.cjs.js");require("../../../api/generated/operations.cjs.js");require("../../../api/generated/products.cjs.js");require("../../../api/generated/projectDashboard.cjs.js");require("../../../api/generated/projects.cjs.js");require("../../../api/generated/projectFolders.cjs.js");require("../../../api/generated/reviewables.cjs.js");require("../../../api/generated/services.cjs.js");require("../../../api/generated/system.cjs.js");require("../../../api/generated/tasks.cjs.js");require("../../../api/generated/teams.cjs.js");require("../../../api/generated/thumbnails.cjs.js");require("../../../api/generated/uRIs.cjs.js");require("../../../api/generated/users.cjs.js");require("../../../api/generated/versions.cjs.js");require("../../../api/generated/workfiles.cjs.js");require("../../../api/generated/ynputCloud.cjs.js");require("../../../api/generated/grouping.cjs.js");require("../../../api/generated/views.cjs.js");require("../../../api/queries/actions/getActions.cjs.js");require("../../../api/queries/activities/getActivities.cjs.js");require("../../../api/queries/activities/updateActivities.cjs.js");require("../../../api/queries/activities/updateReaction.cjs.js");require("../../../api/queries/activities/getMentions.cjs.js");require("../../../api/queries/activities/getCategories.cjs.js");require("../../../api/queries/addons/getAddons.cjs.js");require("../../../api/queries/addons/updateAddons.cjs.js");require("../../../api/queries/attributes/getAttributes.cjs.js");require("../../../api/queries/attributes/updateAttributes.cjs.js");require("../../../api/queries/authentication/getAuthentication.cjs.js");require("../../../api/queries/cloud/cloud.cjs.js");require("../../../api/queries/config/getConfig.cjs.js");require("../../../api/queries/config/updateConfig.cjs.js");require("../../../api/queries/entities/getEntity.cjs.js");require("../../../api/queries/entities/getEntityPanel.cjs.js");require("../../../api/queries/entities/updateEntity.cjs.js");require("../../../api/queries/entityLists/getLists.cjs.js");require("../../../api/queries/entityLists/updateLists.cjs.js");require("../../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../../api/queries/entityLists/listFolders.cjs.js");require("../../../api/queries/folders/getFolders.cjs.js");require("../../../api/queries/grouping/getGrouping.cjs.js");require("../../../api/queries/links/updateLinks.cjs.js");require("../../../api/queries/links/getLinks.cjs.js");require("../../../api/queries/links/getEntityLinks.cjs.js");require("../../../api/queries/overview/getOverview.cjs.js");require("../../../api/queries/overview/updateOverview.cjs.js");require("../../../api/queries/versions/getVersionsProducts.cjs.js");require("../../../api/queries/permissions/getPermissions.cjs.js");require("../../../api/queries/products/createProduct.cjs.js");require("../../../api/queries/project/getProject.cjs.js");require("../../../api/queries/project/updateProject.cjs.js");require("../../../api/queries/projectFolders/projectFolders.cjs.js");require("../../../api/queries/review/getReview.cjs.js");require("../../../api/queries/review/updateReview.cjs.js");require("../../../api/queries/share/share.cjs.js");require("../../../api/queries/system/getSystem.cjs.js");require("../../../api/queries/tasks/getTasks.cjs.js");require("../../../api/queries/tasks/updateTasks.cjs.js");require("../../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.cjs.js");require("../../../api/queries/users/guests.cjs.js");require("../../../api/queries/versions/updateVersions.cjs.js");require("../../../api/queries/views/getViews.cjs.js");require("../../../api/queries/views/updateViews.cjs.js");require("../../../api/queries/watchers/getWatchers.cjs.js");require("../../../api/queries/uris/getUris.cjs.js");require("../../../../../_virtual/index.cjs.js");require("../../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../../../components/DetailsPanelDetails/DetailsSection.cjs.js");require("../../../components/DetailsPanelDetails/FieldLabel.cjs.js");require("../../../components/DoneCheckbox/DoneCheckbox.cjs.js");require("../../../components/EarlyPreview/EarlyPreview.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("../../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("./ColumnSettingsContext.cjs.js");require("./SelectedRowsContext.cjs.js");require("./DetailsPanelEntityContext.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/react-virtual");require("@tanstack/match-sorter-utils");require("../../SimpleTable/context/SimpleTableContext.cjs.js");require("../../SimpleTable/SimpleTableRowTemplate.cjs.js");require("../../Slicer/hooks/useTableDataBySlice.cjs.js");require("../../Slicer/components/SlicerSearch.cjs.js");require("../../Slicer/context/SlicerContext.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../../DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("axios");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/LegacyBadge/LegacyBadge.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredAddonVersion.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/SizeSlider/SizeSlider.cjs.js");require("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/ShareOptionIcon/ShareOptionIcon.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/SortingSetting/SortingSetting.styled.cjs.js");require("../../../components/StyledLink/StyledLink.cjs.js");require("../../../components/TableGridSwitch/TableGridSwitch.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/Menu/Menu.styled.cjs.js");require("../../../components/Menu/MenuItem.cjs.js");require("../../../components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js");require("../widgets/EmptyWidget.cjs.js");require("../widgets/ErrorWidget.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");const Y=require("../hooks/useCheckSelectedCellsVisible.cjs.js"),Z=({children:z})=>{const[n,I]=o.useState(new Set),[f,d]=o.useState(null),[T,O]=o.useState(!1),[w,S]=o.useState(null),[g,V]=o.useState({rowIdToIndex:new Map,colIdToIndex:new Map,indexToRowId:new Map,indexToColId:new Map}),m=e=>JSON.stringify(Array.from(e.entries())),s=o.useMemo(()=>g,[m(g.rowIdToIndex),m(g.colIdToIndex),m(g.indexToRowId),m(g.indexToColId)]),P=o.useRef(!1),_=o.useMemo(()=>Array.from(n).filter(e=>t.parseCellId(e)?.colId===p.ROW_SELECTION_COLUMN_ID&&t.parseCellId(e)?.rowId).map(e=>t.parseCellId(e)?.rowId),[n]);Y.useCheckSelectedCellsVisible({selectedCells:n,setSelectedCells:I,focusedCellId:f,setFocusedCellId:d});const h=o.useRef(!1),E=o.useCallback((e,u)=>{const q=new Map,i=new Map,r=new Map,l=new Map;e.forEach((c,a)=>{q.set(c,a),r.set(a,c)}),u.forEach((c,a)=>{i.set(c,a),l.set(a,c)}),V({rowIdToIndex:q,colIdToIndex:i,indexToRowId:r,indexToColId:l})},[]),C=o.useCallback((e,u)=>{I(q=>{let i=new Set(e);if(u.colId!==p.ROW_SELECTION_COLUMN_ID&&u.colId!==X.DRAG_HANDLE_COLUMN_ID){const r=Array.from(q).filter(l=>t.parseCellId(l)?.colId===p.ROW_SELECTION_COLUMN_ID);r.length&&(i=new Set([...i,...r]))}return i})},[]),M=o.useCallback((e,u,q)=>{q||C(new Set,e);const i=s.rowIdToIndex.get(e.rowId)??0,r=s.colIdToIndex.get(e.colId)??0,l=s.rowIdToIndex.get(u.rowId)??0,c=s.colIdToIndex.get(u.colId)??0,a=Math.min(i,l),x=Math.max(i,l),J=Math.min(r,c),K=Math.max(r,c),G=new Set(q?n:[]);for(let b=a;b<=x;b++){const W=s.indexToRowId.get(b);if(W)for(let k=J;k<=K;k++){const F=s.indexToColId.get(k);F&&G.add(t.getCellId(W,F))}}return G},[s,n,C]),N=o.useCallback((e,u)=>{const q=t.parseCellId(e);q&&(O(!0),h.current=u,P.current=n.has(e),u?I(i=>{const r=new Set(i);return r.has(e)?(r.delete(e),f===e&&(r.size>0?d(Array.from(r)[Array.from(r).length-1]):d(null))):(r.add(e),d(e),S(q)),r}):n.size===1&&n.has(e)&&[p.ROW_SELECTION_COLUMN_ID,"name"].includes(q.colId)?(I(new Set),S(null),d(null)):(C(new Set([e]),q),S(q),d(e)))},[n,f,C]),L=o.useCallback((e,u)=>{if(!T||!w)return;const q=t.parseCellId(e);if(q)if(u)I(i=>{const r=new Set(i);return t.parseCellId(e)&&(P.current?r.delete(e):r.add(e)),r});else{if(h.current)return;const i=M(w,q,h.current);C(i,q)}},[T,w,M,C]),A=o.useCallback(()=>{O(!1)},[]),y=o.useCallback((e,u,q)=>{const i=t.parseCellId(e);if(i)if(q&&w){const r=M(w,i,u);C(r,i)}else u?I(r=>{const l=new Set(r);return l.has(e)?l.delete(e):l.add(e),l}):(C(new Set([e]),i),S(i))},[w,M,C]),B=o.useCallback(e=>{d(e)},[]),D=o.useCallback(()=>{I(new Set),S(null),d(null)},[]),R=o.useCallback(e=>n.has(e),[n]),U=o.useCallback(e=>e===f,[f]),j=o.useCallback(e=>t.parseCellId(e),[]),v=o.useCallback(e=>{if(!R(e))return[];const u=t.parseCellId(e);if(!u)return[];const q=s.rowIdToIndex.get(u.rowId),i=s.colIdToIndex.get(u.colId);if(q===void 0||i===void 0)return[];const r=s.indexToRowId.get(q-1),l=s.indexToColId.get(i+1),c=s.indexToRowId.get(q+1),a=s.indexToColId.get(i-1);let x=t.BorderPosition.None;return(!r||!n.has(t.getCellId(r,u.colId)))&&(x|=t.BorderPosition.Top),(!l||!n.has(t.getCellId(u.rowId,l)))&&(x|=t.BorderPosition.Right),(!c||!n.has(t.getCellId(c,u.colId)))&&(x|=t.BorderPosition.Bottom),(!a||!n.has(t.getCellId(u.rowId,a)))&&(x|=t.BorderPosition.Left),t.getBorderClasses(x)},[n,s,R]),H=o.useMemo(()=>({selectedCells:n,selectedRows:_,focusedCellId:f,selectionInProgress:T,anchorCell:w,gridMap:s,setSelectedCells:I,setFocusedCellId:d,setAnchorCell:S,registerGrid:E,selectCell:y,startSelection:N,extendSelection:L,endSelection:A,focusCell:B,clearSelection:D,isCellSelected:R,isCellFocused:U,getCellPositionFromId:j,getCellBorderClasses:v}),[n,_,f,T,w,s,I,d,S,E,y,N,L,A,B,D,R,U,j,v]);return Q.jsxRuntimeExports.jsx(p.SelectionCellsContext.Provider,{value:H,children:z})};exports.SelectionCellsProvider=Z;
2
2
  //# sourceMappingURL=SelectionCellsProvider.cjs.js.map