@ynput/ayon-frontend-shared 0.3.16 → 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 (414) 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/DetailsDialog/DetailsDialog.cjs.js +13 -1
  60. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  61. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +72 -25
  62. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  63. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  64. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  65. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +25 -21
  66. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  67. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  68. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  69. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +14 -14
  70. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  71. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js +1 -1
  72. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js.map +1 -1
  73. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js +23 -23
  74. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js.map +1 -1
  75. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  76. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  77. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +71 -36
  78. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  79. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  80. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  81. package/dist/shared/src/components/LinksManager/LinksManager.es.js +120 -89
  82. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  83. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +52 -12
  84. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
  85. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +63 -21
  86. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
  87. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  88. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  89. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +8 -4
  90. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  91. package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js +2 -0
  92. package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js.map +1 -0
  93. package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js +18 -0
  94. package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js.map +1 -0
  95. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  96. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  97. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +8 -4
  98. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  99. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  100. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  101. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +10 -6
  102. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  103. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  104. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  105. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +8 -4
  106. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  107. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  108. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  109. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +8 -4
  110. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  111. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  112. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  113. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +8 -4
  114. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  115. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  116. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  117. package/dist/shared/src/components/RenameForm/RenameForm.es.js +9 -5
  118. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  119. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  120. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  121. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +139 -128
  122. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  123. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  124. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  125. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +90 -81
  126. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  127. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  128. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  129. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +8 -4
  130. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  131. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +1 -1
  132. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -1
  133. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +9 -5
  134. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -1
  135. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  136. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  137. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +8 -4
  138. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  139. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  140. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  141. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +8 -4
  142. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  143. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  144. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  145. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +8 -4
  146. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  147. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  148. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  149. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +8 -4
  150. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  151. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  152. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  153. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +20 -16
  154. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  155. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  156. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  157. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +8 -4
  158. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  159. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  160. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  161. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +9 -5
  162. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  163. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  164. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  165. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +12 -8
  166. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  167. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  168. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +22 -18
  170. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  172. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +8 -4
  174. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  176. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +8 -4
  178. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  179. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  180. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +57 -45
  182. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  183. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  184. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +8 -4
  186. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  187. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  188. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  189. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +8 -4
  190. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  191. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  192. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  193. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +8 -4
  194. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  195. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  196. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  197. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js +2 -0
  198. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js.map +1 -0
  199. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js +70 -0
  200. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js.map +1 -0
  201. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  202. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/Feed/Feed.es.js +247 -151
  204. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  205. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  206. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -4
  208. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  209. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  210. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +6 -2
  212. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  213. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js +1 -0
  214. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js +1 -0
  216. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js.map +1 -1
  217. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  218. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +9 -5
  220. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  221. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  222. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +8 -4
  224. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  225. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js +1 -1
  226. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js +3 -3
  228. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js.map +1 -1
  229. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  230. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +8 -4
  232. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  234. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +59 -55
  236. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  238. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +9 -5
  240. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +8 -4
  244. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +6 -2
  248. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  250. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +8 -4
  252. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +8 -4
  256. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +16 -16
  260. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -2
  264. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +9 -5
  268. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +6 -2
  272. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +8 -4
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +8 -4
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +6 -2
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +6 -2
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +6 -2
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +8 -4
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  297. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +8 -4
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +6 -2
  304. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +6 -2
  308. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +6 -2
  312. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +17 -13
  316. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +7 -3
  320. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  322. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +60 -48
  324. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  326. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +6 -2
  328. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  330. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +8 -4
  332. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  333. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  334. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +24 -24
  335. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  336. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  337. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +8 -4
  338. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  339. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  340. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +8 -4
  342. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  343. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  344. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  345. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  346. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  347. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +8 -4
  348. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  349. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  350. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  351. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +24 -23
  352. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  353. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  354. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +83 -88
  356. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  357. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  358. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +1 -1
  360. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  361. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  362. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +56 -53
  364. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  365. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  366. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +23 -144
  368. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  369. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js.map +1 -1
  370. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js.map +1 -1
  371. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  372. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  373. package/dist/shared/src/containers/Views/types.cjs.js +2 -0
  374. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -0
  375. package/dist/shared/src/containers/Views/types.es.js +15 -0
  376. package/dist/shared/src/containers/Views/types.es.js.map +1 -0
  377. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -1
  378. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -1
  379. package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js +2 -0
  380. package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js.map +1 -0
  381. package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js +5 -0
  382. package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js.map +1 -0
  383. package/dist/shared/src/containers/Views/utils/portalUtils.cjs.js.map +1 -1
  384. package/dist/shared/src/containers/Views/utils/portalUtils.es.js.map +1 -1
  385. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  386. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  387. package/dist/shared/src/context/DetailsPanelContext.es.js +76 -77
  388. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  389. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  390. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  391. package/dist/shared/src/context/WebsocketContext.es.js +9 -5
  392. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  393. package/dist/types/api/generated/access.d.ts +6 -0
  394. package/dist/types/api/generated/graphql.d.ts +8 -4
  395. package/dist/types/api/generated/users.d.ts +6 -1
  396. package/dist/types/components/LinksManager/LinkManagerItem.d.ts +2 -0
  397. package/dist/types/components/LinksManager/LinksManager.styled.d.ts +6 -0
  398. package/dist/types/components/LinksManager/utils/groupLinks.d.ts +14 -0
  399. package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +1 -0
  400. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  401. package/dist/types/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.d.ts +11 -0
  402. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +1 -0
  403. package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +2 -1
  404. package/dist/types/containers/Views/ViewsMenuContainer/ViewsMenuContainer.d.ts +2 -2
  405. package/dist/types/containers/Views/context/ViewsContext.d.ts +3 -2
  406. package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +1 -1
  407. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -3
  408. package/dist/types/containers/Views/hooks/useSaveViewFromCurrent.d.ts +2 -1
  409. package/dist/types/containers/Views/hooks/useViewSettingsChanged.d.ts +1 -1
  410. package/dist/types/containers/Views/index.d.ts +1 -7
  411. package/dist/types/containers/Views/types.d.ts +10 -0
  412. package/dist/types/containers/Views/utils/isViewStudioScope.d.ts +2 -0
  413. package/dist/types/containers/Views/utils/portalUtils.d.ts +1 -1
  414. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useGetEntityPickerData.cjs.js","sources":["../../../../../../src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.tsx"],"sourcesContent":["import {\n FolderListItem,\n SearchEntityLink,\n useGetSearchedEntitiesLinksInfiniteQuery,\n} from '@shared/api'\nimport { useProjectContext } from '@shared/context'\nimport { useHierarchyTable } from '@shared/hooks'\nimport { useMemo } from 'react'\nimport { PickerEntityType, PickerSearch } from '../EntityPickerDialog'\nimport {\n buildEntityPickerTableData,\n buildFolderPickerTableData,\n EntityAnatomy,\n entityHierarchies,\n} from '../util'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { matchSorter } from 'match-sorter'\n\nexport type EntityQueryResult = {\n data: (SearchEntityLink | FolderListItem)[]\n table: SimpleTableRow[]\n isLoading: boolean\n isFetchingNextPage?: boolean\n hasNextPage?: boolean\n fetchNextPage?: () => void\n error?: string\n}\n\ntype EntityPickerDataReturn = {\n folder: EntityQueryResult\n task: EntityQueryResult\n product: EntityQueryResult\n version: EntityQueryResult\n representation: EntityQueryResult\n workfile: EntityQueryResult\n}\n\ninterface useGetEntityPickerDataProps {\n projectName: string\n entityType: PickerEntityType // which entity type we are picking for\n search: PickerSearch\n selection: Record<PickerEntityType, string[]>\n}\n\nexport const useGetEntityPickerData = ({\n projectName,\n entityType,\n search,\n selection,\n}: useGetEntityPickerDataProps): EntityPickerDataReturn => {\n const entityDependencies = entityHierarchies[entityType] || []\n\n // Get project data\n const project = useProjectContext()\n // convert flat list to table rows for the table\n const {\n data: hierarchTable,\n folders: foldersDataRaw,\n isFetching: isLoadingFolders,\n } = useHierarchyTable({\n projectName,\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n\n const foldersData = useMemo(() => {\n if (!search.folder) return foldersDataRaw\n return matchSorter(foldersDataRaw, search.folder, {\n keys: ['name', 'label', 'path'],\n })\n }, [foldersDataRaw, search.folder])\n\n // create flat filtered data when searching on folders\n const foldersTable = useMemo(\n () =>\n search.folder\n ? buildFolderPickerTableData(foldersData, project?.folderTypes || [])\n : hierarchTable,\n\n [foldersData, hierarchTable, search.folder, project],\n )\n\n const folder: EntityQueryResult = {\n data: foldersData,\n table: foldersTable,\n isLoading: isLoadingFolders,\n }\n\n // if there is a selection on the parent we user that, otherwise we use all parent ids of parent data\n const getParentIds = (parentType: PickerEntityType, parentData: { id: string }[] = []) => {\n const parentSelection = selection[parentType]\n if (parentSelection?.length > 0) {\n return parentSelection\n } else if (parentData) {\n return parentData.map((entity) => entity.id)\n } else {\n return undefined\n }\n }\n\n const task = useGetEntityTypeData(\n projectName,\n 'task',\n search.task,\n !entityDependencies.includes('task'),\n getParentIds(entityHierarchies['task'][entityHierarchies['task'].length - 2], foldersData),\n project?.taskTypes,\n )\n const product = useGetEntityTypeData(\n projectName,\n 'product',\n search.product,\n !entityDependencies.includes('product'),\n getParentIds(\n entityHierarchies['product'][entityHierarchies['product'].length - 2],\n folder.data,\n ),\n project?.productTypes,\n )\n const version = useGetEntityTypeData(\n projectName,\n 'version',\n search.version,\n !entityDependencies.includes('version'),\n getParentIds(\n entityHierarchies['version'][entityHierarchies['version'].length - 2],\n product.data,\n ),\n )\n const representation = useGetEntityTypeData(\n projectName,\n 'representation',\n search.representation,\n !entityDependencies.includes('representation'),\n getParentIds(\n entityHierarchies['representation'][entityHierarchies['representation'].length - 2],\n version.data,\n ),\n )\n const workfile = useGetEntityTypeData(\n projectName,\n 'workfile',\n search.workfile,\n !entityDependencies.includes('workfile'),\n getParentIds(\n entityHierarchies['workfile'][entityHierarchies['workfile'].length - 2],\n task.data,\n ),\n )\n\n return {\n folder,\n task,\n product,\n version,\n representation,\n workfile,\n }\n}\n\nconst useGetEntityTypeData = (\n projectName: string,\n entityType: PickerEntityType,\n search: string | undefined,\n skip: boolean,\n parentIds?: string[],\n anatomies?: EntityAnatomy[],\n) => {\n const { data, isFetching, hasNextPage, fetchNextPage, isFetchingNextPage, error } =\n useGetSearchedEntitiesLinksInfiniteQuery(\n {\n projectName,\n entityType,\n search,\n parentIds,\n },\n // skip if this is folder hierarchy (we already have the folders) or if we're waiting for parent selection\n {\n skip: skip,\n },\n )\n\n // Flatten all entities from all pages\n const entities = useMemo(() => {\n return data?.pages.flatMap((page) => page.entities) || []\n }, [data])\n\n // convert to table rows\n const table = useMemo(\n () => buildEntityPickerTableData(entities, anatomies),\n [entities, anatomies],\n )\n\n return {\n data: entities,\n table: table,\n isLoading: isFetching,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n error: error as string,\n }\n}\n"],"names":["useGetEntityPickerData","projectName","entityType","search","selection","entityDependencies","entityHierarchies","project","useProjectContext","hierarchTable","foldersDataRaw","isLoadingFolders","useHierarchyTable","foldersData","useMemo","matchSorter","foldersTable","buildFolderPickerTableData","folder","getParentIds","parentType","parentData","parentSelection","entity","task","useGetEntityTypeData","product","version","representation","workfile","skip","parentIds","anatomies","data","isFetching","hasNextPage","fetchNextPage","isFetchingNextPage","error","useGetSearchedEntitiesLinksInfiniteQuery","entities","page","table","buildEntityPickerTableData"],"mappings":"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"}
1
+ {"version":3,"file":"useGetEntityPickerData.cjs.js","sources":["../../../../../../src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.tsx"],"sourcesContent":["import {\n FolderListItem,\n SearchEntityLink,\n useGetSearchedEntitiesLinksInfiniteQuery,\n} from '@shared/api'\nimport { useProjectContext } from '@shared/context'\nimport { useHierarchyTable } from '@shared/hooks'\nimport { useMemo } from 'react'\nimport { PickerEntityType, PickerSearch } from '../EntityPickerDialog'\nimport {\n buildEntityPickerTableData,\n buildFolderPickerTableData,\n EntityAnatomy,\n entityHierarchies,\n} from '../util'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { matchSorter } from 'match-sorter'\n\nexport type EntityQueryResult = {\n data: (SearchEntityLink | FolderListItem)[]\n table: SimpleTableRow[]\n isLoading: boolean\n isFetchingNextPage?: boolean\n hasNextPage?: boolean\n fetchNextPage?: () => void\n error?: string\n}\n\nexport type EntityPickerDataReturn = {\n folder: EntityQueryResult\n task: EntityQueryResult\n product: EntityQueryResult\n version: EntityQueryResult\n representation: EntityQueryResult\n workfile: EntityQueryResult\n}\n\ninterface useGetEntityPickerDataProps {\n projectName: string\n entityType: PickerEntityType // which entity type we are picking for\n search: PickerSearch\n selection: Record<PickerEntityType, string[]>\n}\n\nexport const useGetEntityPickerData = ({\n projectName,\n entityType,\n search,\n selection,\n}: useGetEntityPickerDataProps): EntityPickerDataReturn => {\n const entityDependencies = entityHierarchies[entityType] || []\n\n // Get project data\n const project = useProjectContext()\n // convert flat list to table rows for the table\n const {\n data: hierarchTable,\n folders: foldersDataRaw,\n isFetching: isLoadingFolders,\n } = useHierarchyTable({\n projectName,\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n\n const foldersData = useMemo(() => {\n if (!search.folder) return foldersDataRaw\n return matchSorter(foldersDataRaw, search.folder, {\n keys: ['name', 'label', 'path'],\n })\n }, [foldersDataRaw, search.folder])\n\n // create flat filtered data when searching on folders\n const foldersTable = useMemo(\n () =>\n search.folder\n ? buildFolderPickerTableData(foldersData, project?.folderTypes || [])\n : hierarchTable,\n\n [foldersData, hierarchTable, search.folder, project],\n )\n\n const folder: EntityQueryResult = {\n data: foldersData,\n table: foldersTable,\n isLoading: isLoadingFolders,\n }\n\n // if there is a selection on the parent we user that, otherwise we use all parent ids of parent data\n const getParentIds = (parentType: PickerEntityType, parentData: { id: string }[] = []) => {\n const parentSelection = selection[parentType]\n if (parentSelection?.length > 0) {\n return parentSelection\n } else if (parentData) {\n return parentData.map((entity) => entity.id)\n } else {\n return undefined\n }\n }\n\n const task = useGetEntityTypeData(\n projectName,\n 'task',\n search.task,\n !entityDependencies.includes('task'),\n getParentIds(entityHierarchies['task'][entityHierarchies['task'].length - 2], foldersData),\n project?.taskTypes,\n )\n const product = useGetEntityTypeData(\n projectName,\n 'product',\n search.product,\n !entityDependencies.includes('product'),\n getParentIds(\n entityHierarchies['product'][entityHierarchies['product'].length - 2],\n folder.data,\n ),\n project?.productTypes,\n )\n const version = useGetEntityTypeData(\n projectName,\n 'version',\n search.version,\n !entityDependencies.includes('version'),\n getParentIds(\n entityHierarchies['version'][entityHierarchies['version'].length - 2],\n product.data,\n ),\n )\n const representation = useGetEntityTypeData(\n projectName,\n 'representation',\n search.representation,\n !entityDependencies.includes('representation'),\n getParentIds(\n entityHierarchies['representation'][entityHierarchies['representation'].length - 2],\n version.data,\n ),\n )\n const workfile = useGetEntityTypeData(\n projectName,\n 'workfile',\n search.workfile,\n !entityDependencies.includes('workfile'),\n getParentIds(\n entityHierarchies['workfile'][entityHierarchies['workfile'].length - 2],\n task.data,\n ),\n )\n\n return {\n folder,\n task,\n product,\n version,\n representation,\n workfile,\n }\n}\n\nconst useGetEntityTypeData = (\n projectName: string,\n entityType: PickerEntityType,\n search: string | undefined,\n skip: boolean,\n parentIds?: string[],\n anatomies?: EntityAnatomy[],\n) => {\n const { data, isFetching, hasNextPage, fetchNextPage, isFetchingNextPage, error } =\n useGetSearchedEntitiesLinksInfiniteQuery(\n {\n projectName,\n entityType,\n search,\n parentIds,\n },\n // skip if this is folder hierarchy (we already have the folders) or if we're waiting for parent selection\n {\n skip: skip,\n },\n )\n\n // Flatten all entities from all pages\n const entities = useMemo(() => {\n return data?.pages.flatMap((page) => page.entities) || []\n }, [data])\n\n // convert to table rows\n const table = useMemo(\n () => buildEntityPickerTableData(entities, anatomies),\n [entities, anatomies],\n )\n\n return {\n data: entities,\n table: table,\n isLoading: isFetching,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n error: error as string,\n }\n}\n"],"names":["useGetEntityPickerData","projectName","entityType","search","selection","entityDependencies","entityHierarchies","project","useProjectContext","hierarchTable","foldersDataRaw","isLoadingFolders","useHierarchyTable","foldersData","useMemo","matchSorter","foldersTable","buildFolderPickerTableData","folder","getParentIds","parentType","parentData","parentSelection","entity","task","useGetEntityTypeData","product","version","representation","workfile","skip","parentIds","anatomies","data","isFetching","hasNextPage","fetchNextPage","isFetchingNextPage","error","useGetSearchedEntitiesLinksInfiniteQuery","entities","page","table","buildEntityPickerTableData"],"mappings":"s4MA4CaA,EAAyB,CAAC,CACrC,YAAAC,EACA,WAAAC,EACA,OAAAC,EACA,UAAAC,CACF,IAA2D,CACzD,MAAMC,EAAqBC,EAAAA,kBAAkBJ,CAAU,GAAK,CAAA,EAGtDK,EAAUC,EAAAA,kBAAA,EAEV,CACJ,KAAMC,EACN,QAASC,EACT,WAAYC,CAAA,EACVC,oBAAkB,CACpB,YAAAX,EACA,YAAaM,GAAS,aAAe,CAAA,EACrC,cAAe,EAAA,CAChB,EAEKM,EAAcC,EAAAA,QAAQ,IACrBX,EAAO,OACLY,cAAYL,EAAgBP,EAAO,OAAQ,CAChD,KAAM,CAAC,OAAQ,QAAS,MAAM,CAAA,CAC/B,EAH0BO,EAI1B,CAACA,EAAgBP,EAAO,MAAM,CAAC,EAG5Ba,EAAeF,EAAAA,QACnB,IACEX,EAAO,OACHc,6BAA2BJ,EAAaN,GAAS,aAAe,CAAA,CAAE,EAClEE,EAEN,CAACI,EAAaJ,EAAeN,EAAO,OAAQI,CAAO,CAAA,EAG/CW,EAA4B,CAChC,KAAML,EACN,MAAOG,EACP,UAAWL,CAAA,EAIPQ,EAAe,CAACC,EAA8BC,EAA+B,CAAA,IAAO,CACxF,MAAMC,EAAkBlB,EAAUgB,CAAU,EAC5C,OAAIE,GAAiB,OAAS,EACrBA,EACED,EACFA,EAAW,IAAKE,GAAWA,EAAO,EAAE,EAE3C,MAEJ,EAEMC,EAAOC,EACXxB,EACA,OACAE,EAAO,KACP,CAACE,EAAmB,SAAS,MAAM,EACnCc,EAAab,EAAAA,kBAAkB,KAAQA,EAAAA,kBAAkB,KAAQ,OAAS,CAAC,EAAGO,CAAW,EACzFN,GAAS,SAAA,EAELmB,EAAUD,EACdxB,EACA,UACAE,EAAO,QACP,CAACE,EAAmB,SAAS,SAAS,EACtCc,EACEb,EAAAA,kBAAkB,QAAWA,EAAAA,kBAAkB,QAAW,OAAS,CAAC,EACpEY,EAAO,IAAA,EAETX,GAAS,YAAA,EAELoB,EAAUF,EACdxB,EACA,UACAE,EAAO,QACP,CAACE,EAAmB,SAAS,SAAS,EACtCc,EACEb,EAAAA,kBAAkB,QAAWA,EAAAA,kBAAkB,QAAW,OAAS,CAAC,EACpEoB,EAAQ,IAAA,CACV,EAEIE,EAAiBH,EACrBxB,EACA,iBACAE,EAAO,eACP,CAACE,EAAmB,SAAS,gBAAgB,EAC7Cc,EACEb,EAAAA,kBAAkB,eAAkBA,EAAAA,kBAAkB,eAAkB,OAAS,CAAC,EAClFqB,EAAQ,IAAA,CACV,EAEIE,EAAWJ,EACfxB,EACA,WACAE,EAAO,SACP,CAACE,EAAmB,SAAS,UAAU,EACvCc,EACEb,EAAAA,kBAAkB,SAAYA,EAAAA,kBAAkB,SAAY,OAAS,CAAC,EACtEkB,EAAK,IAAA,CACP,EAGF,MAAO,CACL,OAAAN,EACA,KAAAM,EACA,QAAAE,EACA,QAAAC,EACA,eAAAC,EACA,SAAAC,CAAA,CAEJ,EAEMJ,EAAuB,CAC3BxB,EACAC,EACAC,EACA2B,EACAC,EACAC,IACG,CACH,KAAM,CAAE,KAAAC,EAAM,WAAAC,EAAY,YAAAC,EAAa,cAAAC,EAAe,mBAAAC,EAAoB,MAAAC,GACxEC,EAAAA,yCACE,CACE,YAAAtC,EACA,WAAAC,EACA,OAAAC,EACA,UAAA4B,CAAA,EAGF,CACE,KAAAD,CAAA,CACF,EAIEU,EAAW1B,EAAAA,QAAQ,IAChBmB,GAAM,MAAM,QAASQ,GAASA,EAAK,QAAQ,GAAK,CAAA,EACtD,CAACR,CAAI,CAAC,EAGHS,EAAQ5B,EAAAA,QACZ,IAAM6B,EAAAA,2BAA2BH,EAAUR,CAAS,EACpD,CAACQ,EAAUR,CAAS,CAAA,EAGtB,MAAO,CACL,KAAMQ,EACN,MAAAE,EACA,UAAWR,EACX,mBAAAG,EACA,YAAAF,EACA,cAAAC,EACA,MAAAE,CAAA,CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGetEntityPickerData.es.js","sources":["../../../../../../src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.tsx"],"sourcesContent":["import {\n FolderListItem,\n SearchEntityLink,\n useGetSearchedEntitiesLinksInfiniteQuery,\n} from '@shared/api'\nimport { useProjectContext } from '@shared/context'\nimport { useHierarchyTable } from '@shared/hooks'\nimport { useMemo } from 'react'\nimport { PickerEntityType, PickerSearch } from '../EntityPickerDialog'\nimport {\n buildEntityPickerTableData,\n buildFolderPickerTableData,\n EntityAnatomy,\n entityHierarchies,\n} from '../util'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { matchSorter } from 'match-sorter'\n\nexport type EntityQueryResult = {\n data: (SearchEntityLink | FolderListItem)[]\n table: SimpleTableRow[]\n isLoading: boolean\n isFetchingNextPage?: boolean\n hasNextPage?: boolean\n fetchNextPage?: () => void\n error?: string\n}\n\ntype EntityPickerDataReturn = {\n folder: EntityQueryResult\n task: EntityQueryResult\n product: EntityQueryResult\n version: EntityQueryResult\n representation: EntityQueryResult\n workfile: EntityQueryResult\n}\n\ninterface useGetEntityPickerDataProps {\n projectName: string\n entityType: PickerEntityType // which entity type we are picking for\n search: PickerSearch\n selection: Record<PickerEntityType, string[]>\n}\n\nexport const useGetEntityPickerData = ({\n projectName,\n entityType,\n search,\n selection,\n}: useGetEntityPickerDataProps): EntityPickerDataReturn => {\n const entityDependencies = entityHierarchies[entityType] || []\n\n // Get project data\n const project = useProjectContext()\n // convert flat list to table rows for the table\n const {\n data: hierarchTable,\n folders: foldersDataRaw,\n isFetching: isLoadingFolders,\n } = useHierarchyTable({\n projectName,\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n\n const foldersData = useMemo(() => {\n if (!search.folder) return foldersDataRaw\n return matchSorter(foldersDataRaw, search.folder, {\n keys: ['name', 'label', 'path'],\n })\n }, [foldersDataRaw, search.folder])\n\n // create flat filtered data when searching on folders\n const foldersTable = useMemo(\n () =>\n search.folder\n ? buildFolderPickerTableData(foldersData, project?.folderTypes || [])\n : hierarchTable,\n\n [foldersData, hierarchTable, search.folder, project],\n )\n\n const folder: EntityQueryResult = {\n data: foldersData,\n table: foldersTable,\n isLoading: isLoadingFolders,\n }\n\n // if there is a selection on the parent we user that, otherwise we use all parent ids of parent data\n const getParentIds = (parentType: PickerEntityType, parentData: { id: string }[] = []) => {\n const parentSelection = selection[parentType]\n if (parentSelection?.length > 0) {\n return parentSelection\n } else if (parentData) {\n return parentData.map((entity) => entity.id)\n } else {\n return undefined\n }\n }\n\n const task = useGetEntityTypeData(\n projectName,\n 'task',\n search.task,\n !entityDependencies.includes('task'),\n getParentIds(entityHierarchies['task'][entityHierarchies['task'].length - 2], foldersData),\n project?.taskTypes,\n )\n const product = useGetEntityTypeData(\n projectName,\n 'product',\n search.product,\n !entityDependencies.includes('product'),\n getParentIds(\n entityHierarchies['product'][entityHierarchies['product'].length - 2],\n folder.data,\n ),\n project?.productTypes,\n )\n const version = useGetEntityTypeData(\n projectName,\n 'version',\n search.version,\n !entityDependencies.includes('version'),\n getParentIds(\n entityHierarchies['version'][entityHierarchies['version'].length - 2],\n product.data,\n ),\n )\n const representation = useGetEntityTypeData(\n projectName,\n 'representation',\n search.representation,\n !entityDependencies.includes('representation'),\n getParentIds(\n entityHierarchies['representation'][entityHierarchies['representation'].length - 2],\n version.data,\n ),\n )\n const workfile = useGetEntityTypeData(\n projectName,\n 'workfile',\n search.workfile,\n !entityDependencies.includes('workfile'),\n getParentIds(\n entityHierarchies['workfile'][entityHierarchies['workfile'].length - 2],\n task.data,\n ),\n )\n\n return {\n folder,\n task,\n product,\n version,\n representation,\n workfile,\n }\n}\n\nconst useGetEntityTypeData = (\n projectName: string,\n entityType: PickerEntityType,\n search: string | undefined,\n skip: boolean,\n parentIds?: string[],\n anatomies?: EntityAnatomy[],\n) => {\n const { data, isFetching, hasNextPage, fetchNextPage, isFetchingNextPage, error } =\n useGetSearchedEntitiesLinksInfiniteQuery(\n {\n projectName,\n entityType,\n search,\n parentIds,\n },\n // skip if this is folder hierarchy (we already have the folders) or if we're waiting for parent selection\n {\n skip: skip,\n },\n )\n\n // Flatten all entities from all pages\n const entities = useMemo(() => {\n return data?.pages.flatMap((page) => page.entities) || []\n }, [data])\n\n // convert to table rows\n const table = useMemo(\n () => buildEntityPickerTableData(entities, anatomies),\n [entities, anatomies],\n )\n\n return {\n data: entities,\n table: table,\n isLoading: isFetching,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n error: error as string,\n }\n}\n"],"names":["useGetEntityPickerData","projectName","entityType","search","selection","entityDependencies","entityHierarchies","project","useProjectContext","hierarchTable","foldersDataRaw","isLoadingFolders","useHierarchyTable","foldersData","useMemo","matchSorter","foldersTable","buildFolderPickerTableData","folder","getParentIds","parentType","parentData","parentSelection","entity","task","useGetEntityTypeData","product","version","representation","workfile","skip","parentIds","anatomies","data","isFetching","hasNextPage","fetchNextPage","isFetchingNextPage","error","useGetSearchedEntitiesLinksInfiniteQuery","entities","page","table","buildEntityPickerTableData"],"mappings":"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"}
1
+ {"version":3,"file":"useGetEntityPickerData.es.js","sources":["../../../../../../src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.tsx"],"sourcesContent":["import {\n FolderListItem,\n SearchEntityLink,\n useGetSearchedEntitiesLinksInfiniteQuery,\n} from '@shared/api'\nimport { useProjectContext } from '@shared/context'\nimport { useHierarchyTable } from '@shared/hooks'\nimport { useMemo } from 'react'\nimport { PickerEntityType, PickerSearch } from '../EntityPickerDialog'\nimport {\n buildEntityPickerTableData,\n buildFolderPickerTableData,\n EntityAnatomy,\n entityHierarchies,\n} from '../util'\nimport { SimpleTableRow } from '@shared/containers/SimpleTable'\nimport { matchSorter } from 'match-sorter'\n\nexport type EntityQueryResult = {\n data: (SearchEntityLink | FolderListItem)[]\n table: SimpleTableRow[]\n isLoading: boolean\n isFetchingNextPage?: boolean\n hasNextPage?: boolean\n fetchNextPage?: () => void\n error?: string\n}\n\nexport type EntityPickerDataReturn = {\n folder: EntityQueryResult\n task: EntityQueryResult\n product: EntityQueryResult\n version: EntityQueryResult\n representation: EntityQueryResult\n workfile: EntityQueryResult\n}\n\ninterface useGetEntityPickerDataProps {\n projectName: string\n entityType: PickerEntityType // which entity type we are picking for\n search: PickerSearch\n selection: Record<PickerEntityType, string[]>\n}\n\nexport const useGetEntityPickerData = ({\n projectName,\n entityType,\n search,\n selection,\n}: useGetEntityPickerDataProps): EntityPickerDataReturn => {\n const entityDependencies = entityHierarchies[entityType] || []\n\n // Get project data\n const project = useProjectContext()\n // convert flat list to table rows for the table\n const {\n data: hierarchTable,\n folders: foldersDataRaw,\n isFetching: isLoadingFolders,\n } = useHierarchyTable({\n projectName,\n folderTypes: project?.folderTypes || [],\n includeColors: true,\n })\n\n const foldersData = useMemo(() => {\n if (!search.folder) return foldersDataRaw\n return matchSorter(foldersDataRaw, search.folder, {\n keys: ['name', 'label', 'path'],\n })\n }, [foldersDataRaw, search.folder])\n\n // create flat filtered data when searching on folders\n const foldersTable = useMemo(\n () =>\n search.folder\n ? buildFolderPickerTableData(foldersData, project?.folderTypes || [])\n : hierarchTable,\n\n [foldersData, hierarchTable, search.folder, project],\n )\n\n const folder: EntityQueryResult = {\n data: foldersData,\n table: foldersTable,\n isLoading: isLoadingFolders,\n }\n\n // if there is a selection on the parent we user that, otherwise we use all parent ids of parent data\n const getParentIds = (parentType: PickerEntityType, parentData: { id: string }[] = []) => {\n const parentSelection = selection[parentType]\n if (parentSelection?.length > 0) {\n return parentSelection\n } else if (parentData) {\n return parentData.map((entity) => entity.id)\n } else {\n return undefined\n }\n }\n\n const task = useGetEntityTypeData(\n projectName,\n 'task',\n search.task,\n !entityDependencies.includes('task'),\n getParentIds(entityHierarchies['task'][entityHierarchies['task'].length - 2], foldersData),\n project?.taskTypes,\n )\n const product = useGetEntityTypeData(\n projectName,\n 'product',\n search.product,\n !entityDependencies.includes('product'),\n getParentIds(\n entityHierarchies['product'][entityHierarchies['product'].length - 2],\n folder.data,\n ),\n project?.productTypes,\n )\n const version = useGetEntityTypeData(\n projectName,\n 'version',\n search.version,\n !entityDependencies.includes('version'),\n getParentIds(\n entityHierarchies['version'][entityHierarchies['version'].length - 2],\n product.data,\n ),\n )\n const representation = useGetEntityTypeData(\n projectName,\n 'representation',\n search.representation,\n !entityDependencies.includes('representation'),\n getParentIds(\n entityHierarchies['representation'][entityHierarchies['representation'].length - 2],\n version.data,\n ),\n )\n const workfile = useGetEntityTypeData(\n projectName,\n 'workfile',\n search.workfile,\n !entityDependencies.includes('workfile'),\n getParentIds(\n entityHierarchies['workfile'][entityHierarchies['workfile'].length - 2],\n task.data,\n ),\n )\n\n return {\n folder,\n task,\n product,\n version,\n representation,\n workfile,\n }\n}\n\nconst useGetEntityTypeData = (\n projectName: string,\n entityType: PickerEntityType,\n search: string | undefined,\n skip: boolean,\n parentIds?: string[],\n anatomies?: EntityAnatomy[],\n) => {\n const { data, isFetching, hasNextPage, fetchNextPage, isFetchingNextPage, error } =\n useGetSearchedEntitiesLinksInfiniteQuery(\n {\n projectName,\n entityType,\n search,\n parentIds,\n },\n // skip if this is folder hierarchy (we already have the folders) or if we're waiting for parent selection\n {\n skip: skip,\n },\n )\n\n // Flatten all entities from all pages\n const entities = useMemo(() => {\n return data?.pages.flatMap((page) => page.entities) || []\n }, [data])\n\n // convert to table rows\n const table = useMemo(\n () => buildEntityPickerTableData(entities, anatomies),\n [entities, anatomies],\n )\n\n return {\n data: entities,\n table: table,\n isLoading: isFetching,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n error: error as string,\n }\n}\n"],"names":["useGetEntityPickerData","projectName","entityType","search","selection","entityDependencies","entityHierarchies","project","useProjectContext","hierarchTable","foldersDataRaw","isLoadingFolders","useHierarchyTable","foldersData","useMemo","matchSorter","foldersTable","buildFolderPickerTableData","folder","getParentIds","parentType","parentData","parentSelection","entity","task","useGetEntityTypeData","product","version","representation","workfile","skip","parentIds","anatomies","data","isFetching","hasNextPage","fetchNextPage","isFetchingNextPage","error","useGetSearchedEntitiesLinksInfiniteQuery","entities","page","table","buildEntityPickerTableData"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("react"),N=({entityHierarchy:n,entityData:u,rowSelection:i,setEntityRowSelection:r})=>{const m=g.useRef({selectedNames:{},pendingNameMatches:{},skipDetection:!1,prevParentKeys:{}});g.useEffect(()=>{const s=m.current,t={};for(let e=0;e<n.length-1;e++){const o=n[e],c=i[o]||{};t[o]=Object.keys(c).filter(f=>c[f]).sort().join(",")}if(s.skipDetection){s.prevParentKeys=t,s.skipDetection=!1;return}for(let e=0;e<n.length-1;e++){const o=n[e],c=s.prevParentKeys[o];if(c!==void 0&&c!==t[o]){if(t[o]==="")for(let d=e+1;d<n.length;d++)s.skipDetection=!0,r({},n[d]);else for(let d=e+1;d<n.length;d++){const a=n[d],l=s.selectedNames[a];l?.length&&(s.pendingNameMatches[a]=new Set(l))}break}}s.prevParentKeys=t},[n,i]),g.useEffect(()=>{const s=m.current;for(const t of n){const e=i[t]||{},o=new Set(Object.keys(e).filter(f=>e[f])),c=u[t]?.data||[];s.selectedNames[t]=c.filter(f=>o.has(f.id)).map(f=>f.name)}},[n,i,u]),g.useEffect(()=>{const s=m.current,t=new Set;for(const e of n){const o=s.pendingNameMatches[e];if(!o?.size)continue;const c=n.indexOf(e);if(n.slice(0,c).some(p=>s.pendingNameMatches[p]?.size||t.has(p)))continue;const{isLoading:d,data:a}=u[e];if(d)continue;if(delete s.pendingNameMatches[e],t.add(e),!a?.length){s.skipDetection=!0,r({},e);continue}const l={};for(const p of a)o.has(p.name)&&(l[p.id]=!0);s.skipDetection=!0,r(l,e)}},[n,u,r])};exports.usePreserveChildSelectionByName=N;
2
+ //# sourceMappingURL=usePreserveChildSelectionByName.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreserveChildSelectionByName.cjs.js","sources":["../../../../../../src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { RowSelectionState } from '@tanstack/react-table'\nimport { PickerEntityType, PickerSelection } from '../EntityPickerDialog'\nimport type { EntityPickerDataReturn } from './useGetEntityPickerData'\n\ninterface UsePreserveChildSelectionByNameProps {\n entityHierarchy: PickerEntityType[]\n entityData: EntityPickerDataReturn\n rowSelection: PickerSelection\n setEntityRowSelection: (selection: RowSelectionState, entityType: PickerEntityType) => void\n}\n\ninterface PreserveState {\n // Names of currently selected entities per type — updated continuously by Effect 2\n selectedNames: Partial<Record<PickerEntityType, string[]>>\n // Names to match when child data finishes loading\n pendingNameMatches: Partial<Record<PickerEntityType, Set<string>>>\n // Skip detection on the next render (after an auto-select caused the selection change)\n skipDetection: boolean\n // Previous parent selection keys to detect changes\n prevParentKeys: Record<string, string>\n}\n\nexport const usePreserveChildSelectionByName = ({\n entityHierarchy,\n entityData,\n rowSelection,\n setEntityRowSelection,\n}: UsePreserveChildSelectionByNameProps) => {\n const stateRef = useRef<PreserveState>({\n selectedNames: {},\n pendingNameMatches: {},\n skipDetection: false,\n prevParentKeys: {},\n })\n\n // Effect 1 — Detect parent selection changes and copy selectedNames → pendingNameMatches\n // MUST be declared before Effect 2 so it reads the *previous* render's selectedNames values\n useEffect(() => {\n const state = stateRef.current\n\n // Compute selection keys for all parent types once per effect run\n const currentKeys: Record<string, string> = {}\n for (let i = 0; i < entityHierarchy.length - 1; i++) {\n const type = entityHierarchy[i]\n const selection = rowSelection[type] || {}\n currentKeys[type] = Object.keys(selection)\n .filter((id) => selection[id])\n .sort()\n .join(',')\n }\n\n if (state.skipDetection) {\n state.prevParentKeys = currentKeys\n state.skipDetection = false\n return\n }\n\n for (let i = 0; i < entityHierarchy.length - 1; i++) {\n const parentType = entityHierarchy[i]\n const prevKey = state.prevParentKeys[parentType]\n\n if (prevKey !== undefined && prevKey !== currentKeys[parentType]) {\n const parentDeselected = currentKeys[parentType] === ''\n\n if (parentDeselected) {\n // Parent fully deselected — clear all descendant selections\n for (let j = i + 1; j < entityHierarchy.length; j++) {\n state.skipDetection = true\n setEntityRowSelection({}, entityHierarchy[j])\n }\n } else {\n // Parent switched — capture names for every descendant level\n for (let j = i + 1; j < entityHierarchy.length; j++) {\n const childType = entityHierarchy[j]\n const names = state.selectedNames[childType]\n if (names?.length) {\n state.pendingNameMatches[childType] = new Set(names)\n }\n }\n }\n break // only handle the highest-level parent change\n }\n }\n\n state.prevParentKeys = currentKeys\n }, [entityHierarchy, rowSelection])\n\n // Effect 2 — Continuously track the names of selected entities (runs AFTER Effect 1)\n useEffect(() => {\n const state = stateRef.current\n\n for (const type of entityHierarchy) {\n const selection = rowSelection[type] || {}\n const selectedIds = new Set(Object.keys(selection).filter((id) => selection[id]))\n const data = entityData[type]?.data || []\n state.selectedNames[type] = data\n .filter((entity) => selectedIds.has(entity.id))\n .map((entity) => entity.name)\n }\n }, [entityHierarchy, rowSelection, entityData])\n\n // Effect 3 — When child data finishes loading and there are pending names, auto-select matches\n useEffect(() => {\n const state = stateRef.current\n // Track types processed in THIS run so child types wait for the next render\n // (the parent's state update hasn't propagated yet, so child data is still stale)\n const processedInThisRun = new Set<PickerEntityType>()\n\n for (const type of entityHierarchy) {\n const pendingNames = state.pendingNameMatches[type]\n if (!pendingNames?.size) continue\n\n // Don't consume child pending matches while a parent type is still pending\n // or was just processed in this same run (its state update hasn't propagated yet).\n const typeIndex = entityHierarchy.indexOf(type)\n const hasParentPending = entityHierarchy\n .slice(0, typeIndex)\n .some(\n (parentType) =>\n state.pendingNameMatches[parentType]?.size || processedInThisRun.has(parentType),\n )\n if (hasParentPending) continue\n\n const { isLoading, data } = entityData[type]\n if (isLoading) continue\n\n // Clear pending once loading completes — even if data is empty (no children under this parent)\n delete state.pendingNameMatches[type]\n processedInThisRun.add(type)\n\n if (!data?.length) {\n // No children under this parent, clear stale selection\n state.skipDetection = true\n setEntityRowSelection({}, type)\n continue\n }\n\n const newSelection: RowSelectionState = {}\n for (const entity of data) {\n if (pendingNames.has(entity.name)) {\n newSelection[entity.id] = true\n }\n }\n\n state.skipDetection = true\n setEntityRowSelection(newSelection, type)\n }\n }, [entityHierarchy, entityData, setEntityRowSelection])\n}\n"],"names":["usePreserveChildSelectionByName","entityHierarchy","entityData","rowSelection","setEntityRowSelection","stateRef","useRef","useEffect","state","currentKeys","i","type","selection","id","parentType","prevKey","j","childType","names","selectedIds","data","entity","processedInThisRun","pendingNames","typeIndex","isLoading","newSelection"],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { useRef as N, useEffect as r } from "react";
2
+ const P = ({
3
+ entityHierarchy: n,
4
+ entityData: i,
5
+ rowSelection: m,
6
+ setEntityRowSelection: u
7
+ }) => {
8
+ const g = N({
9
+ selectedNames: {},
10
+ pendingNameMatches: {},
11
+ skipDetection: !1,
12
+ prevParentKeys: {}
13
+ });
14
+ r(() => {
15
+ const s = g.current, t = {};
16
+ for (let e = 0; e < n.length - 1; e++) {
17
+ const o = n[e], c = m[o] || {};
18
+ t[o] = Object.keys(c).filter((d) => c[d]).sort().join(",");
19
+ }
20
+ if (s.skipDetection) {
21
+ s.prevParentKeys = t, s.skipDetection = !1;
22
+ return;
23
+ }
24
+ for (let e = 0; e < n.length - 1; e++) {
25
+ const o = n[e], c = s.prevParentKeys[o];
26
+ if (c !== void 0 && c !== t[o]) {
27
+ if (t[o] === "")
28
+ for (let f = e + 1; f < n.length; f++)
29
+ s.skipDetection = !0, u({}, n[f]);
30
+ else
31
+ for (let f = e + 1; f < n.length; f++) {
32
+ const p = n[f], a = s.selectedNames[p];
33
+ a?.length && (s.pendingNameMatches[p] = new Set(a));
34
+ }
35
+ break;
36
+ }
37
+ }
38
+ s.prevParentKeys = t;
39
+ }, [n, m]), r(() => {
40
+ const s = g.current;
41
+ for (const t of n) {
42
+ const e = m[t] || {}, o = new Set(Object.keys(e).filter((d) => e[d])), c = i[t]?.data || [];
43
+ s.selectedNames[t] = c.filter((d) => o.has(d.id)).map((d) => d.name);
44
+ }
45
+ }, [n, m, i]), r(() => {
46
+ const s = g.current, t = /* @__PURE__ */ new Set();
47
+ for (const e of n) {
48
+ const o = s.pendingNameMatches[e];
49
+ if (!o?.size) continue;
50
+ const c = n.indexOf(e);
51
+ if (n.slice(0, c).some(
52
+ (l) => s.pendingNameMatches[l]?.size || t.has(l)
53
+ )) continue;
54
+ const { isLoading: f, data: p } = i[e];
55
+ if (f) continue;
56
+ if (delete s.pendingNameMatches[e], t.add(e), !p?.length) {
57
+ s.skipDetection = !0, u({}, e);
58
+ continue;
59
+ }
60
+ const a = {};
61
+ for (const l of p)
62
+ o.has(l.name) && (a[l.id] = !0);
63
+ s.skipDetection = !0, u(a, e);
64
+ }
65
+ }, [n, i, u]);
66
+ };
67
+ export {
68
+ P as usePreserveChildSelectionByName
69
+ };
70
+ //# sourceMappingURL=usePreserveChildSelectionByName.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreserveChildSelectionByName.es.js","sources":["../../../../../../src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.ts"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { RowSelectionState } from '@tanstack/react-table'\nimport { PickerEntityType, PickerSelection } from '../EntityPickerDialog'\nimport type { EntityPickerDataReturn } from './useGetEntityPickerData'\n\ninterface UsePreserveChildSelectionByNameProps {\n entityHierarchy: PickerEntityType[]\n entityData: EntityPickerDataReturn\n rowSelection: PickerSelection\n setEntityRowSelection: (selection: RowSelectionState, entityType: PickerEntityType) => void\n}\n\ninterface PreserveState {\n // Names of currently selected entities per type — updated continuously by Effect 2\n selectedNames: Partial<Record<PickerEntityType, string[]>>\n // Names to match when child data finishes loading\n pendingNameMatches: Partial<Record<PickerEntityType, Set<string>>>\n // Skip detection on the next render (after an auto-select caused the selection change)\n skipDetection: boolean\n // Previous parent selection keys to detect changes\n prevParentKeys: Record<string, string>\n}\n\nexport const usePreserveChildSelectionByName = ({\n entityHierarchy,\n entityData,\n rowSelection,\n setEntityRowSelection,\n}: UsePreserveChildSelectionByNameProps) => {\n const stateRef = useRef<PreserveState>({\n selectedNames: {},\n pendingNameMatches: {},\n skipDetection: false,\n prevParentKeys: {},\n })\n\n // Effect 1 — Detect parent selection changes and copy selectedNames → pendingNameMatches\n // MUST be declared before Effect 2 so it reads the *previous* render's selectedNames values\n useEffect(() => {\n const state = stateRef.current\n\n // Compute selection keys for all parent types once per effect run\n const currentKeys: Record<string, string> = {}\n for (let i = 0; i < entityHierarchy.length - 1; i++) {\n const type = entityHierarchy[i]\n const selection = rowSelection[type] || {}\n currentKeys[type] = Object.keys(selection)\n .filter((id) => selection[id])\n .sort()\n .join(',')\n }\n\n if (state.skipDetection) {\n state.prevParentKeys = currentKeys\n state.skipDetection = false\n return\n }\n\n for (let i = 0; i < entityHierarchy.length - 1; i++) {\n const parentType = entityHierarchy[i]\n const prevKey = state.prevParentKeys[parentType]\n\n if (prevKey !== undefined && prevKey !== currentKeys[parentType]) {\n const parentDeselected = currentKeys[parentType] === ''\n\n if (parentDeselected) {\n // Parent fully deselected — clear all descendant selections\n for (let j = i + 1; j < entityHierarchy.length; j++) {\n state.skipDetection = true\n setEntityRowSelection({}, entityHierarchy[j])\n }\n } else {\n // Parent switched — capture names for every descendant level\n for (let j = i + 1; j < entityHierarchy.length; j++) {\n const childType = entityHierarchy[j]\n const names = state.selectedNames[childType]\n if (names?.length) {\n state.pendingNameMatches[childType] = new Set(names)\n }\n }\n }\n break // only handle the highest-level parent change\n }\n }\n\n state.prevParentKeys = currentKeys\n }, [entityHierarchy, rowSelection])\n\n // Effect 2 — Continuously track the names of selected entities (runs AFTER Effect 1)\n useEffect(() => {\n const state = stateRef.current\n\n for (const type of entityHierarchy) {\n const selection = rowSelection[type] || {}\n const selectedIds = new Set(Object.keys(selection).filter((id) => selection[id]))\n const data = entityData[type]?.data || []\n state.selectedNames[type] = data\n .filter((entity) => selectedIds.has(entity.id))\n .map((entity) => entity.name)\n }\n }, [entityHierarchy, rowSelection, entityData])\n\n // Effect 3 — When child data finishes loading and there are pending names, auto-select matches\n useEffect(() => {\n const state = stateRef.current\n // Track types processed in THIS run so child types wait for the next render\n // (the parent's state update hasn't propagated yet, so child data is still stale)\n const processedInThisRun = new Set<PickerEntityType>()\n\n for (const type of entityHierarchy) {\n const pendingNames = state.pendingNameMatches[type]\n if (!pendingNames?.size) continue\n\n // Don't consume child pending matches while a parent type is still pending\n // or was just processed in this same run (its state update hasn't propagated yet).\n const typeIndex = entityHierarchy.indexOf(type)\n const hasParentPending = entityHierarchy\n .slice(0, typeIndex)\n .some(\n (parentType) =>\n state.pendingNameMatches[parentType]?.size || processedInThisRun.has(parentType),\n )\n if (hasParentPending) continue\n\n const { isLoading, data } = entityData[type]\n if (isLoading) continue\n\n // Clear pending once loading completes — even if data is empty (no children under this parent)\n delete state.pendingNameMatches[type]\n processedInThisRun.add(type)\n\n if (!data?.length) {\n // No children under this parent, clear stale selection\n state.skipDetection = true\n setEntityRowSelection({}, type)\n continue\n }\n\n const newSelection: RowSelectionState = {}\n for (const entity of data) {\n if (pendingNames.has(entity.name)) {\n newSelection[entity.id] = true\n }\n }\n\n state.skipDetection = true\n setEntityRowSelection(newSelection, type)\n }\n }, [entityHierarchy, entityData, setEntityRowSelection])\n}\n"],"names":["usePreserveChildSelectionByName","entityHierarchy","entityData","rowSelection","setEntityRowSelection","stateRef","useRef","useEffect","state","currentKeys","i","type","selection","id","parentType","prevKey","j","childType","names","selectedIds","data","entity","processedInThisRun","pendingNames","typeIndex","isLoading","newSelection"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),m=require("react"),le=require("./components/ActivityItem.cjs.js"),ce=require("./components/CommentInput/CommentInput.cjs.js"),k=require("./Feed.styled.cjs.js"),ae=require("./hooks/useCommentMutations.cjs.js"),de=require("./hooks/useTransformActivities.cjs.js"),ue=require("../../../../node_modules/react-intersection-observer/dist/index.cjs.js"),me=require("./hooks/useSaveScrollPos.cjs.js"),pe=require("./hooks/useScrollOnInputOpen.cjs.js"),he=require("./feedHelpers.cjs.js");require("@ynput/ayon-react-components");const ge=require("clsx"),xe=require("./hooks/useScrollToHighlighted.cjs.js"),fe=require("./components/FileUploadPreview/FileUploadPreview.cjs.js"),ye=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const x=require("./context/FeedContext.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const qe=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");const Ce=require("./helpers/mergeAnnotationAttachments.cjs.js"),ve=require("../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js"),Ee=30,ke=[{id:"comments",tooltip:"Comments",icon:"chat"},{id:"checklists",tooltip:"Checklists",icon:"checklist"},{id:"versions",tooltip:"Published versions",icon:"layers"},{id:"updates",tooltip:"Entity updates",icon:"arrow_circle_right"}],Fe=({disabled:O,readOnly:L,statuses:S=[],entityListId:_,isSlideOut:D})=>{const{projectName:a,entities:d,entityType:p,editingId:F,projectInfo:j,setEditingId:I,userName:H,activitiesData:f,isLoadingNew:c,isLoadingNextPage:M,loadNextPage:u,hasNextPage:B,users:W,feedFilter:r,setFeedFilter:V}=x.useFeedContext(),{openSlideOut:U,highlightedActivities:y,setHighlightedActivities:z,onOpenImage:G,setFeedAnnotations:w}=qe.useDetailsPanelContext(),J=r.conditions?.some(e=>"key"in e&&e.key==="versions"&&e.value===!0),K=r.conditions?.some(e=>"key"in e&&["comments","checklists","versions","updates"].includes(e.key)&&e.value===!0),Q=r.conditions?.some(e=>"key"in e&&(e.key==="comments"||e.key==="checklists")&&e.value===!0),X=K&&!Q,h=m.useMemo(()=>Ce(f),[f]);m.useEffect(()=>{h.length||w([]);const e=h.map(t=>t.activityData?.annotations?.map(i=>({...i,activityId:t.activityId}))).filter(Boolean).flat();w(e)},[h]);const q=de.default(h,W,j,p,H,r),l=m.useRef(null);pe({feedRef:l,isInputOpen:F===x.FEED_NEW_COMMENT,height:93}),me({entities:d,feedRef:l,filter:r,disabled:!!y.length,isLoading:c}),xe({feedRef:l,highlighted:y,isLoading:c||M,loadNextPage:u,hasNextPage:!!u,activities:f});const{submitComment:R,updateComment:b,deleteComment:Y,isSaving:Z}=ae({projectName:a,entityType:p,entities:d,filter:r,entityListId:_}),$=m.useCallback(async(e,t=[],i={})=>{await R(e,t,i),l.current&&l.current.scrollTo({top:0})},[R,l]),ee=(e,t)=>{const i=e?.target;if(!i||!t)return console.log("no target or activity");const n=i.checked,o=n?"[ ]":"[x]",se=n?"[x]":"[ ]",{body:g}=t,N=Array.from(i.closest(".comment-body")?.querySelectorAll(".task-list-item")||[]).findIndex(E=>E===i.closest("li"));let A=N;(g.match(/\[.\]/g)||[]).forEach((E,re)=>{E!==o&&re<N&&A--});const P=[];let C=-1;for(;(C=g.indexOf(o,C+1))>-1;)P.push(C);const v=P[A];if(v===void 0)return;const oe=v+o.length,T=g.slice(0,v)+se+g.slice(oe);T&&b(t,T,t.files)},te=e=>{const{entityId:t,entityType:i,activityId:n}=e;if(!i||!["version","task","folder"].includes(i))return console.log("Entity type not supported yet");if(!t||!i||!a)return console.log("No entity id or type found");U({entityId:t,entityType:i,projectName:a}),z([n])},ie=({index:e,activityId:t})=>{const i=Object.values(q).reverse().filter(n=>n.activityType=="comment").map(n=>({id:n.activityId,files:n.files.filter(o=>fe.isFilePreviewable(o.mime,o.ext))})).filter(n=>n.files.length>0);G?.({files:i,activityId:t,index:e,projectName:a})},ne=m.useMemo(()=>he.getLoadingPlaceholders(10),[]);return s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:s.jsxRuntimeExports.jsxs(k.FeedContainer,{className:"feed",children:[void 0,s.jsxRuntimeExports.jsx(ve,{label:"Activity Feed",filters:ke,currentFilter:r,onFilterChange:V,isLoading:c}),s.jsxRuntimeExports.jsxs(k.FeedContent,{ref:l,className:ge({loading:c},"no-shimmer"),children:[c?ne:q.map(e=>s.jsxRuntimeExports.jsx(le,{activity:e,onCheckChange:ee,onDelete:Y,onUpdate:async(t,i,n,o)=>await b(e,t,i,o),projectInfo:j,projectName:a,entityType:p,onReferenceClick:te,createdAts:d.map(t=>t.createdAt),onFileExpand:ie,showOrigin:d.length>1,filter:r,editProps:{projectName:a,entities:d,entityType:p},isHighlighted:y.includes(e.activityId),readOnly:L,statuses:S,isSlideOut:D},e.activityId)),q.length===1&&J&&!c&&s.jsxRuntimeExports.jsx(ye.EmptyPlaceholder,{message:"No versions published yet",icon:"layers"}),B&&u&&s.jsxRuntimeExports.jsx(ue.InView,{root:l.current,onChange:e=>e&&u(),rootMargin:"400px 0px 0px 0px",children:s.jsxRuntimeExports.jsx(k.LoadMore,{style:{height:0},onClick:()=>u(),children:M?"Loading more...":"Click to load more"})})]}),!X&&s.jsxRuntimeExports.jsx(ce.default,{initValue:null,onSubmit:$,isOpen:F===x.FEED_NEW_COMMENT,onClose:()=>I(null),onOpen:()=>I(x.FEED_NEW_COMMENT),disabled:O,isLoading:c||!d.length||Z})]})})};exports.Feed=Fe;exports.activitiesLast=Ee;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../_virtual/jsx-runtime.cjs.js"),q=require("react"),le=require("./components/ActivityItem.cjs.js"),de=require("./components/CommentInput/CommentInput.cjs.js"),E=require("./Feed.styled.cjs.js"),qe=require("./hooks/useCommentMutations.cjs.js"),me=require("./hooks/useTransformActivities.cjs.js"),pe=require("../../../../node_modules/react-intersection-observer/dist/index.cjs.js"),ge=require("./hooks/useSaveScrollPos.cjs.js"),he=require("./hooks/useScrollOnInputOpen.cjs.js"),xe=require("./feedHelpers.cjs.js");require("@ynput/ayon-react-components");const ye=require("clsx"),fe=require("./hooks/useScrollToHighlighted.cjs.js"),ve=require("./components/FileUploadPreview/FileUploadPreview.cjs.js"),Ce=require("../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const h=require("./context/FeedContext.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const ke=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("../../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");const Ee=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");const Fe=require("./helpers/mergeAnnotationAttachments.cjs.js"),je=require("../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.cjs.js"),Ie=30,Me=[{id:"comments",tooltip:"Comments",icon:"chat"},{id:"checklists",tooltip:"Checklists",icon:"checklist"},{id:"versions",tooltip:"Published versions",icon:"layers"},{id:"updates",tooltip:"Entity updates",icon:"arrow_circle_right"}],Pe=({disabled:S,readOnly:_,statuses:D=[],entityListId:H,isSlideOut:B})=>{const{projectName:o,entities:l,entityType:m,editingId:F,projectInfo:j,setEditingId:I,userName:W,activitiesData:x,isLoadingNew:a,isLoadingNextPage:M,loadNextPage:d,hasNextPage:V,users:U,feedFilter:u,setFeedFilter:G}=h.useFeedContext(),{openSlideOut:Q,highlightedActivities:y,setHighlightedActivities:z,onOpenImage:J,setFeedAnnotations:P,user:R}=ke.useDetailsPanelContext(),K=u.conditions?.some(e=>"key"in e&&e.key==="versions"&&e.value===!0),X=u.conditions?.some(e=>"key"in e&&["comments","checklists","versions","updates"].includes(e.key)&&e.value===!0),Y=u.conditions?.some(e=>"key"in e&&(e.key==="comments"||e.key==="checklists")&&e.value===!0),{data:w,isLoading:Z}=Ee.useGetMyProjectPermissionsQuery({projectName:o},{skip:!o}),$=!R.data?.isManager&&!R.data?.isAdmin&&!Z&&w?.activities?.enabled&&!w?.activities?.activities?.includes("comment")||X&&!Y,p=q.useMemo(()=>Fe(x),[x]);q.useEffect(()=>{p.length||P([]);const e=p.map(r=>r.activityData?.annotations?.map(i=>({...i,activityId:r.activityId}))).filter(Boolean).flat();P(e)},[p]);const f=me.default(p,U,j,m,W,u),c=q.useRef(null);he({feedRef:c,isInputOpen:F===h.FEED_NEW_COMMENT,height:93}),ge({entities:l,feedRef:c,filter:u,disabled:!!y.length,isLoading:a}),fe({feedRef:c,highlighted:y,isLoading:a||M,loadNextPage:d,hasNextPage:!!d,activities:x});const{submitComment:b,updateComment:A,deleteComment:ee,isSaving:re}=qe({projectName:o,entityType:m,entities:l,filter:u,entityListId:H}),ie=q.useCallback(async(e,r=[],i={})=>{await b(e,r,i),c.current&&c.current.scrollTo({top:0})},[b,c]),te=(e,r)=>{const i=e?.target;if(!i||!r)return console.log("no target or activity");const t=i.checked,n=t?"[ ]":"[x]",ue=t?"[x]":"[ ]",{body:g}=r,N=Array.from(i.closest(".comment-body")?.querySelectorAll(".task-list-item")||[]).findIndex(k=>k===i.closest("li"));let T=N;(g.match(/\[.\]/g)||[]).forEach((k,ae)=>{k!==n&&ae<N&&T--});const O=[];let v=-1;for(;(v=g.indexOf(n,v+1))>-1;)O.push(v);const C=O[T];if(C===void 0)return;const ce=C+n.length,L=g.slice(0,C)+ue+g.slice(ce);L&&A(r,L,r.files)},se=e=>{const{entityId:r,entityType:i,activityId:t}=e;if(!i||!["version","task","folder"].includes(i))return console.log("Entity type not supported yet");if(!r||!i||!o)return console.log("No entity id or type found");Q({entityId:r,entityType:i,projectName:o}),z([t])},ne=({index:e,activityId:r})=>{const i=Object.values(f).reverse().filter(t=>t.activityType=="comment").map(t=>({id:t.activityId,files:t.files.filter(n=>ve.isFilePreviewable(n.mime,n.ext))})).filter(t=>t.files.length>0);J?.({files:i,activityId:r,index:e,projectName:o})},oe=q.useMemo(()=>xe.getLoadingPlaceholders(10),[]);return s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:s.jsxRuntimeExports.jsxs(E.FeedContainer,{className:"feed",children:[void 0,s.jsxRuntimeExports.jsx(je,{label:"Activity Feed",filters:Me,currentFilter:u,onFilterChange:G,isLoading:a}),s.jsxRuntimeExports.jsxs(E.FeedContent,{ref:c,className:ye({loading:a},"no-shimmer"),children:[a?oe:f.map(e=>s.jsxRuntimeExports.jsx(le,{activity:e,onCheckChange:te,onDelete:ee,onUpdate:async(r,i,t,n)=>await A(e,r,i,n),projectInfo:j,projectName:o,entityType:m,onReferenceClick:se,createdAts:l.map(r=>r.createdAt),onFileExpand:ne,showOrigin:l.length>1,filter:u,editProps:{projectName:o,entities:l,entityType:m},isHighlighted:y.includes(e.activityId),readOnly:_,statuses:D,isSlideOut:B},e.activityId)),f.length===1&&K&&!a&&s.jsxRuntimeExports.jsx(Ce.EmptyPlaceholder,{message:"No versions published yet",icon:"layers"}),V&&d&&s.jsxRuntimeExports.jsx(pe.InView,{root:c.current,onChange:e=>e&&d(),rootMargin:"400px 0px 0px 0px",children:s.jsxRuntimeExports.jsx(E.LoadMore,{style:{height:0},onClick:()=>d(),children:M?"Loading more...":"Click to load more"})})]}),!$&&s.jsxRuntimeExports.jsx(de.default,{initValue:null,onSubmit:ie,isOpen:F===h.FEED_NEW_COMMENT,onClose:()=>I(null),onOpen:()=>I(h.FEED_NEW_COMMENT),disabled:S,isLoading:a||!l.length||re})]})})};exports.Feed=Pe;exports.activitiesLast=Ie;
2
2
  //# sourceMappingURL=Feed.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Feed.cjs.js","sources":["../../../../../src/containers/Feed/Feed.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport ActivityItem from './components/ActivityItem'\nimport CommentInput from './components/CommentInput/CommentInput'\nimport * as Styled from './Feed.styled'\nimport useCommentMutations, { Activity } from './hooks/useCommentMutations'\nimport useTransformActivities from './hooks/useTransformActivities'\nimport { InView } from 'react-intersection-observer'\nimport useSaveScrollPos from './hooks/useSaveScrollPos'\nimport useScrollOnInputOpen from './hooks/useScrollOnInputOpen'\nimport { getLoadingPlaceholders } from './feedHelpers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport useScrollToHighlighted from './hooks/useScrollToHighlighted'\nimport { isFilePreviewable } from './components/FileUploadPreview/FileUploadPreview'\nimport EmptyPlaceholder from '@shared/components/EmptyPlaceholder'\nimport { useFeedContext, FEED_NEW_COMMENT } from './context/FeedContext'\nimport { Status } from '../ProjectTreeTable/types/project'\nimport { useDetailsPanelContext, FeedFilter } from '@shared/context'\nimport { DetailsPanelEntityType } from '@shared/api'\nimport mergeAnnotationAttachments from './helpers/mergeAnnotationAttachments'\nimport { SavedAnnotationMetadata } from '.'\nimport TabHeaderAndFilters, {\n FilterItem,\n} from '../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters'\n\n// number of activities to get\nexport const activitiesLast = 30\n\nconst feedFilters: FilterItem<string>[] = [\n {\n id: 'comments',\n tooltip: 'Comments',\n icon: 'chat',\n },\n {\n id: 'checklists',\n tooltip: 'Checklists',\n icon: 'checklist',\n },\n {\n id: 'versions',\n tooltip: 'Published versions',\n icon: 'layers',\n },\n {\n id: 'updates',\n tooltip: 'Entity updates',\n icon: 'arrow_circle_right',\n },\n]\n\nexport type FeedProps = {\n disabled?: boolean\n readOnly: boolean\n statuses: Status[]\n entityListId?: string | undefined\n isSlideOut?: boolean\n}\n\nexport const Feed = ({\n disabled,\n readOnly,\n statuses = [],\n entityListId,\n isSlideOut,\n}: FeedProps) => {\n const {\n projectName,\n entities,\n entityType,\n editingId,\n projectInfo,\n setEditingId,\n userName,\n activitiesData,\n isLoadingNew,\n isLoadingNextPage,\n loadNextPage,\n hasNextPage,\n users,\n feedFilter,\n setFeedFilter,\n } = useFeedContext()\n\n const {\n openSlideOut,\n highlightedActivities,\n setHighlightedActivities,\n onOpenImage,\n setFeedAnnotations,\n } = useDetailsPanelContext()\n\n const isVersionsFilter = feedFilter.conditions?.some(\n (c) => 'key' in c && c.key === 'versions' && c.value === true,\n )\n const hasActiveFilters = feedFilter.conditions?.some(\n (c) => 'key' in c && ['comments', 'checklists', 'versions', 'updates'].includes(c.key) && c.value === true,\n )\n const hasCommentLikeFilter = feedFilter.conditions?.some(\n (c) => 'key' in c && (c.key === 'comments' || c.key === 'checklists') && c.value === true,\n )\n\n // hide comment input for specific filters\n const hideCommentInput = hasActiveFilters && !hasCommentLikeFilter\n\n const activitiesWithMergedAnnotations = useMemo(\n () => mergeAnnotationAttachments(activitiesData),\n [activitiesData],\n )\n\n useEffect(() => {\n if (!activitiesWithMergedAnnotations.length) {\n setFeedAnnotations([])\n }\n\n const annotations = activitiesWithMergedAnnotations\n .map((activity) =>\n activity.activityData?.annotations?.map((a: SavedAnnotationMetadata) => ({\n ...a,\n activityId: activity.activityId,\n })),\n )\n .filter(Boolean)\n .flat()\n\n setFeedAnnotations(annotations)\n }, [activitiesWithMergedAnnotations])\n\n // do any transformation on activities data\n // 1. status change activities, attach status data based on projectName\n // 2. reverse the order\n // 3. is this activity from the current user?\n const transformedActivitiesData = useTransformActivities(\n // @ts-ignore\n activitiesWithMergedAnnotations,\n users,\n projectInfo,\n entityType,\n userName,\n feedFilter,\n ) as any[]\n\n // REFS\n const feedRef = useRef(null)\n // const commentInputRef = useRef(null)\n\n // scroll by height of comment input when it opens or closes\n useScrollOnInputOpen({ feedRef, isInputOpen: editingId === FEED_NEW_COMMENT, height: 93 })\n\n // save scroll position of a feed\n useSaveScrollPos({\n entities,\n feedRef,\n filter: feedFilter,\n disabled: !!highlightedActivities.length,\n isLoading: isLoadingNew,\n })\n // try and scroll to highlightedActivities activity\n useScrollToHighlighted({\n feedRef,\n highlighted: highlightedActivities,\n isLoading: isLoadingNew || isLoadingNextPage,\n loadNextPage,\n hasNextPage: !!loadNextPage,\n activities: activitiesData,\n })\n\n // comment mutations here!\n const {\n submitComment: submitCommentMutation,\n updateComment,\n deleteComment,\n isSaving,\n } = useCommentMutations({\n projectName,\n entityType: entityType,\n entities,\n filter: feedFilter,\n entityListId,\n })\n\n // wrap submitComment to scroll to bottom\n const submitComment = useCallback(\n async (value: string, files: any[] = [], data: any = {}) => {\n await submitCommentMutation(value, files, data)\n // scroll to bottom (scrollTop 0 is bottom because of column-reverse)\n if (feedRef.current) {\n ;(feedRef.current as any).scrollTo({ top: 0 })\n }\n },\n [submitCommentMutation, feedRef],\n )\n\n // When a checkbox is clicked, update the body to add/remove \"x\" in [ ] markdown\n // Then update comment with new body\n const handleCommentChecked = (e: React.ChangeEvent<HTMLInputElement>, activity: Activity) => {\n const target = e?.target\n if (!target || !activity) return console.log('no target or activity')\n\n // the value that it's changing to\n const checked: boolean = target.checked\n const currentMarkdown: string = checked ? '[ ]' : '[x]'\n const newMarkdown: string = checked ? '[x]' : '[ ]'\n\n const { body } = activity\n\n // based on all li elements in the whole className 'comment-body' with className 'task-list-item'\n // find the index of the task that was checked\n const taskIndex: number = Array.from(\n target.closest('.comment-body')?.querySelectorAll('.task-list-item') || [],\n ).findIndex((li: Element) => li === target.closest('li'))\n\n let replaceIndex: number = taskIndex\n\n // count the number of current markdowns in the body\n const allMarkdowns: string[] = body.match(/\\[.\\]/g) || []\n\n allMarkdowns.forEach((markdown: string, index: number) => {\n // does it match the current markdown?\n if (markdown !== currentMarkdown && index < taskIndex) replaceIndex--\n })\n\n // now find the indexes of the current markdown to replace\n const indexesOfCurrentMarkdownInBody: number[] = []\n let index: number = -1\n while ((index = body.indexOf(currentMarkdown, index + 1)) > -1) {\n indexesOfCurrentMarkdownInBody.push(index)\n }\n\n const indexToReplaceInBody: number | undefined = indexesOfCurrentMarkdownInBody[replaceIndex]\n if (indexToReplaceInBody === undefined) return\n\n const endReplaceIndex: number = indexToReplaceInBody + currentMarkdown.length\n\n // replace the current markdown with the new markdown\n const newBody: string =\n body.slice(0, indexToReplaceInBody) + newMarkdown + body.slice(endReplaceIndex)\n\n if (!newBody) return\n\n updateComment(activity, newBody, activity.files)\n }\n\n const handleRefClick = (ref: {\n entityId: string\n entityType: DetailsPanelEntityType\n activityId: string\n }) => {\n const { entityId, entityType, activityId } = ref\n const supportedTypes = ['version', 'task', 'folder']\n\n if (!entityType || !supportedTypes.includes(entityType))\n return console.log('Entity type not supported yet')\n\n if (!entityId || !entityType || !projectName) return console.log('No entity id or type found')\n\n // open the slide out\n openSlideOut({ entityId, entityType, projectName })\n // set highlighted activity\n setHighlightedActivities([activityId])\n }\n\n const handleFileExpand = ({ index, activityId }: { index: number; activityId: string }) => {\n const previewableFiles = Object.values(transformedActivitiesData)\n .reverse()\n .filter((a) => a.activityType == 'comment')\n .map((a) => ({\n id: a.activityId,\n files: a.files.filter((file: any) => isFilePreviewable(file.mime, file.ext)),\n }))\n .filter((a) => a.files.length > 0)\n\n // open image callback\n onOpenImage?.({ files: previewableFiles, activityId, index, projectName })\n }\n\n const loadingPlaceholders = useMemo(() => getLoadingPlaceholders(10), [])\n\n let warningMessage\n\n return (\n <>\n <Styled.FeedContainer className=\"feed\">\n {warningMessage && (\n <Styled.Warning>\n <Icon icon=\"info\" />\n {warningMessage}\n </Styled.Warning>\n )}\n <TabHeaderAndFilters\n label=\"Activity Feed\"\n filters={feedFilters}\n currentFilter={feedFilter}\n onFilterChange={setFeedFilter}\n isLoading={isLoadingNew}\n />\n <Styled.FeedContent ref={feedRef} className={clsx({ loading: isLoadingNew }, 'no-shimmer')}>\n {isLoadingNew\n ? loadingPlaceholders\n : transformedActivitiesData.map((activity) => (\n <ActivityItem\n key={activity.activityId}\n activity={activity}\n onCheckChange={handleCommentChecked}\n onDelete={deleteComment}\n onUpdate={async (value, files, _refs, data) =>\n await updateComment(activity, value, files, data)\n }\n projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={handleRefClick}\n createdAts={entities.map((e) => e.createdAt)}\n onFileExpand={handleFileExpand}\n showOrigin={entities.length > 1}\n filter={feedFilter}\n editProps={{\n projectName,\n entities: entities,\n entityType,\n }}\n isHighlighted={highlightedActivities.includes(activity.activityId)}\n readOnly={readOnly}\n statuses={statuses}\n isSlideOut={isSlideOut}\n />\n ))}\n {/* message when no versions published */}\n {transformedActivitiesData.length === 1 && isVersionsFilter && !isLoadingNew && (\n <EmptyPlaceholder message=\"No versions published yet\" icon=\"layers\" />\n )}\n {hasNextPage && loadNextPage && (\n <InView\n root={feedRef.current}\n onChange={(inView) => inView && loadNextPage()}\n rootMargin={'400px 0px 0px 0px'}\n >\n <Styled.LoadMore style={{ height: 0 }} onClick={() => loadNextPage()}>\n {isLoadingNextPage ? 'Loading more...' : 'Click to load more'}\n </Styled.LoadMore>\n </InView>\n )}\n </Styled.FeedContent>\n {!hideCommentInput && (\n <CommentInput\n initValue={null}\n onSubmit={submitComment}\n isOpen={editingId === FEED_NEW_COMMENT}\n onClose={() => setEditingId(null)}\n onOpen={() => setEditingId(FEED_NEW_COMMENT)}\n disabled={disabled}\n isLoading={isLoadingNew || !entities.length || isSaving}\n />\n )}\n </Styled.FeedContainer>\n </>\n )\n}\n"],"names":["activitiesLast","feedFilters","Feed","disabled","readOnly","statuses","entityListId","isSlideOut","projectName","entities","entityType","editingId","projectInfo","setEditingId","userName","activitiesData","isLoadingNew","isLoadingNextPage","loadNextPage","hasNextPage","users","feedFilter","setFeedFilter","useFeedContext","openSlideOut","highlightedActivities","setHighlightedActivities","onOpenImage","setFeedAnnotations","useDetailsPanelContext","isVersionsFilter","c","hasActiveFilters","hasCommentLikeFilter","hideCommentInput","activitiesWithMergedAnnotations","useMemo","mergeAnnotationAttachments","useEffect","annotations","activity","a","transformedActivitiesData","useTransformActivities","feedRef","useRef","useScrollOnInputOpen","FEED_NEW_COMMENT","useSaveScrollPos","useScrollToHighlighted","submitCommentMutation","updateComment","deleteComment","isSaving","useCommentMutations","submitComment","useCallback","value","files","data","handleCommentChecked","target","checked","currentMarkdown","newMarkdown","body","taskIndex","li","replaceIndex","markdown","index","indexesOfCurrentMarkdownInBody","indexToReplaceInBody","endReplaceIndex","newBody","handleRefClick","ref","entityId","activityId","handleFileExpand","previewableFiles","file","isFilePreviewable","loadingPlaceholders","getLoadingPlaceholders","jsxs","Styled.FeedContainer","jsx","TabHeaderAndFilters","Styled.FeedContent","clsx","ActivityItem","_refs","e","EmptyPlaceholder","InView","inView","Styled.LoadMore","CommentInput"],"mappings":"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"}
1
+ {"version":3,"file":"Feed.cjs.js","sources":["../../../../../src/containers/Feed/Feed.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from 'react'\nimport ActivityItem from './components/ActivityItem'\nimport CommentInput from './components/CommentInput/CommentInput'\nimport * as Styled from './Feed.styled'\nimport useCommentMutations, { Activity } from './hooks/useCommentMutations'\nimport useTransformActivities from './hooks/useTransformActivities'\nimport { InView } from 'react-intersection-observer'\nimport useSaveScrollPos from './hooks/useSaveScrollPos'\nimport useScrollOnInputOpen from './hooks/useScrollOnInputOpen'\nimport { getLoadingPlaceholders } from './feedHelpers'\nimport { Icon } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport useScrollToHighlighted from './hooks/useScrollToHighlighted'\nimport { isFilePreviewable } from './components/FileUploadPreview/FileUploadPreview'\nimport EmptyPlaceholder from '@shared/components/EmptyPlaceholder'\nimport { useFeedContext, FEED_NEW_COMMENT } from './context/FeedContext'\nimport { Status } from '../ProjectTreeTable/types/project'\nimport { useDetailsPanelContext, FeedFilter } from '@shared/context'\nimport { DetailsPanelEntityType, useGetMyProjectPermissionsQuery } from '@shared/api'\nimport mergeAnnotationAttachments from './helpers/mergeAnnotationAttachments'\nimport { SavedAnnotationMetadata } from '.'\nimport TabHeaderAndFilters, {\n FilterItem,\n} from '../DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters'\n\n// number of activities to get\nexport const activitiesLast = 30\n\nconst feedFilters: FilterItem<string>[] = [\n {\n id: 'comments',\n tooltip: 'Comments',\n icon: 'chat',\n },\n {\n id: 'checklists',\n tooltip: 'Checklists',\n icon: 'checklist',\n },\n {\n id: 'versions',\n tooltip: 'Published versions',\n icon: 'layers',\n },\n {\n id: 'updates',\n tooltip: 'Entity updates',\n icon: 'arrow_circle_right',\n },\n]\n\nexport type FeedProps = {\n disabled?: boolean\n readOnly: boolean\n statuses: Status[]\n entityListId?: string | undefined\n isSlideOut?: boolean\n}\n\nexport const Feed = ({\n disabled,\n readOnly,\n statuses = [],\n entityListId,\n isSlideOut,\n}: FeedProps) => {\n const {\n projectName,\n entities,\n entityType,\n editingId,\n projectInfo,\n setEditingId,\n userName,\n activitiesData,\n isLoadingNew,\n isLoadingNextPage,\n loadNextPage,\n hasNextPage,\n users,\n feedFilter,\n setFeedFilter,\n } = useFeedContext()\n\n const {\n openSlideOut,\n highlightedActivities,\n setHighlightedActivities,\n onOpenImage,\n setFeedAnnotations,\n user,\n } = useDetailsPanelContext()\n\n const isVersionsFilter = feedFilter.conditions?.some(\n (c) => 'key' in c && c.key === 'versions' && c.value === true,\n )\n const hasActiveFilters = feedFilter.conditions?.some(\n (c) => 'key' in c && ['comments', 'checklists', 'versions', 'updates'].includes(c.key) && c.value === true,\n )\n const hasCommentLikeFilter = feedFilter.conditions?.some(\n (c) => 'key' in c && (c.key === 'comments' || c.key === 'checklists') && c.value === true,\n )\n\n // check activities permission for commenting\n const {\n data: projectPermissions,\n isLoading: isLoadingPermissions,\n } = useGetMyProjectPermissionsQuery(\n { projectName },\n { skip: !projectName },\n )\n const isCommentRestricted =\n !user.data?.isManager &&\n !user.data?.isAdmin &&\n !isLoadingPermissions &&\n projectPermissions?.activities?.enabled &&\n !projectPermissions?.activities?.activities?.includes('comment')\n\n // hide comment input for specific filters or when restricted by permissions\n const hideCommentInput = isCommentRestricted || (hasActiveFilters && !hasCommentLikeFilter)\n\n const activitiesWithMergedAnnotations = useMemo(\n () => mergeAnnotationAttachments(activitiesData),\n [activitiesData],\n )\n\n useEffect(() => {\n if (!activitiesWithMergedAnnotations.length) {\n setFeedAnnotations([])\n }\n\n const annotations = activitiesWithMergedAnnotations\n .map((activity) =>\n activity.activityData?.annotations?.map((a: SavedAnnotationMetadata) => ({\n ...a,\n activityId: activity.activityId,\n })),\n )\n .filter(Boolean)\n .flat()\n\n setFeedAnnotations(annotations)\n }, [activitiesWithMergedAnnotations])\n\n // do any transformation on activities data\n // 1. status change activities, attach status data based on projectName\n // 2. reverse the order\n // 3. is this activity from the current user?\n const transformedActivitiesData = useTransformActivities(\n // @ts-ignore\n activitiesWithMergedAnnotations,\n users,\n projectInfo,\n entityType,\n userName,\n feedFilter,\n ) as any[]\n\n // REFS\n const feedRef = useRef(null)\n // const commentInputRef = useRef(null)\n\n // scroll by height of comment input when it opens or closes\n useScrollOnInputOpen({ feedRef, isInputOpen: editingId === FEED_NEW_COMMENT, height: 93 })\n\n // save scroll position of a feed\n useSaveScrollPos({\n entities,\n feedRef,\n filter: feedFilter,\n disabled: !!highlightedActivities.length,\n isLoading: isLoadingNew,\n })\n // try and scroll to highlightedActivities activity\n useScrollToHighlighted({\n feedRef,\n highlighted: highlightedActivities,\n isLoading: isLoadingNew || isLoadingNextPage,\n loadNextPage,\n hasNextPage: !!loadNextPage,\n activities: activitiesData,\n })\n\n // comment mutations here!\n const {\n submitComment: submitCommentMutation,\n updateComment,\n deleteComment,\n isSaving,\n } = useCommentMutations({\n projectName,\n entityType: entityType,\n entities,\n filter: feedFilter,\n entityListId,\n })\n\n // wrap submitComment to scroll to bottom\n const submitComment = useCallback(\n async (value: string, files: any[] = [], data: any = {}) => {\n await submitCommentMutation(value, files, data)\n // scroll to bottom (scrollTop 0 is bottom because of column-reverse)\n if (feedRef.current) {\n ;(feedRef.current as any).scrollTo({ top: 0 })\n }\n },\n [submitCommentMutation, feedRef],\n )\n\n // When a checkbox is clicked, update the body to add/remove \"x\" in [ ] markdown\n // Then update comment with new body\n const handleCommentChecked = (e: React.ChangeEvent<HTMLInputElement>, activity: Activity) => {\n const target = e?.target\n if (!target || !activity) return console.log('no target or activity')\n\n // the value that it's changing to\n const checked: boolean = target.checked\n const currentMarkdown: string = checked ? '[ ]' : '[x]'\n const newMarkdown: string = checked ? '[x]' : '[ ]'\n\n const { body } = activity\n\n // based on all li elements in the whole className 'comment-body' with className 'task-list-item'\n // find the index of the task that was checked\n const taskIndex: number = Array.from(\n target.closest('.comment-body')?.querySelectorAll('.task-list-item') || [],\n ).findIndex((li: Element) => li === target.closest('li'))\n\n let replaceIndex: number = taskIndex\n\n // count the number of current markdowns in the body\n const allMarkdowns: string[] = body.match(/\\[.\\]/g) || []\n\n allMarkdowns.forEach((markdown: string, index: number) => {\n // does it match the current markdown?\n if (markdown !== currentMarkdown && index < taskIndex) replaceIndex--\n })\n\n // now find the indexes of the current markdown to replace\n const indexesOfCurrentMarkdownInBody: number[] = []\n let index: number = -1\n while ((index = body.indexOf(currentMarkdown, index + 1)) > -1) {\n indexesOfCurrentMarkdownInBody.push(index)\n }\n\n const indexToReplaceInBody: number | undefined = indexesOfCurrentMarkdownInBody[replaceIndex]\n if (indexToReplaceInBody === undefined) return\n\n const endReplaceIndex: number = indexToReplaceInBody + currentMarkdown.length\n\n // replace the current markdown with the new markdown\n const newBody: string =\n body.slice(0, indexToReplaceInBody) + newMarkdown + body.slice(endReplaceIndex)\n\n if (!newBody) return\n\n updateComment(activity, newBody, activity.files)\n }\n\n const handleRefClick = (ref: {\n entityId: string\n entityType: DetailsPanelEntityType\n activityId: string\n }) => {\n const { entityId, entityType, activityId } = ref\n const supportedTypes = ['version', 'task', 'folder']\n\n if (!entityType || !supportedTypes.includes(entityType))\n return console.log('Entity type not supported yet')\n\n if (!entityId || !entityType || !projectName) return console.log('No entity id or type found')\n\n // open the slide out\n openSlideOut({ entityId, entityType, projectName })\n // set highlighted activity\n setHighlightedActivities([activityId])\n }\n\n const handleFileExpand = ({ index, activityId }: { index: number; activityId: string }) => {\n const previewableFiles = Object.values(transformedActivitiesData)\n .reverse()\n .filter((a) => a.activityType == 'comment')\n .map((a) => ({\n id: a.activityId,\n files: a.files.filter((file: any) => isFilePreviewable(file.mime, file.ext)),\n }))\n .filter((a) => a.files.length > 0)\n\n // open image callback\n onOpenImage?.({ files: previewableFiles, activityId, index, projectName })\n }\n\n const loadingPlaceholders = useMemo(() => getLoadingPlaceholders(10), [])\n\n let warningMessage\n\n return (\n <>\n <Styled.FeedContainer className=\"feed\">\n {warningMessage && (\n <Styled.Warning>\n <Icon icon=\"info\" />\n {warningMessage}\n </Styled.Warning>\n )}\n <TabHeaderAndFilters\n label=\"Activity Feed\"\n filters={feedFilters}\n currentFilter={feedFilter}\n onFilterChange={setFeedFilter}\n isLoading={isLoadingNew}\n />\n <Styled.FeedContent ref={feedRef} className={clsx({ loading: isLoadingNew }, 'no-shimmer')}>\n {isLoadingNew\n ? loadingPlaceholders\n : transformedActivitiesData.map((activity) => (\n <ActivityItem\n key={activity.activityId}\n activity={activity}\n onCheckChange={handleCommentChecked}\n onDelete={deleteComment}\n onUpdate={async (value, files, _refs, data) =>\n await updateComment(activity, value, files, data)\n }\n projectInfo={projectInfo}\n projectName={projectName}\n entityType={entityType}\n onReferenceClick={handleRefClick}\n createdAts={entities.map((e) => e.createdAt)}\n onFileExpand={handleFileExpand}\n showOrigin={entities.length > 1}\n filter={feedFilter}\n editProps={{\n projectName,\n entities: entities,\n entityType,\n }}\n isHighlighted={highlightedActivities.includes(activity.activityId)}\n readOnly={readOnly}\n statuses={statuses}\n isSlideOut={isSlideOut}\n />\n ))}\n {/* message when no versions published */}\n {transformedActivitiesData.length === 1 && isVersionsFilter && !isLoadingNew && (\n <EmptyPlaceholder message=\"No versions published yet\" icon=\"layers\" />\n )}\n {hasNextPage && loadNextPage && (\n <InView\n root={feedRef.current}\n onChange={(inView) => inView && loadNextPage()}\n rootMargin={'400px 0px 0px 0px'}\n >\n <Styled.LoadMore style={{ height: 0 }} onClick={() => loadNextPage()}>\n {isLoadingNextPage ? 'Loading more...' : 'Click to load more'}\n </Styled.LoadMore>\n </InView>\n )}\n </Styled.FeedContent>\n {!hideCommentInput && (\n <CommentInput\n initValue={null}\n onSubmit={submitComment}\n isOpen={editingId === FEED_NEW_COMMENT}\n onClose={() => setEditingId(null)}\n onOpen={() => setEditingId(FEED_NEW_COMMENT)}\n disabled={disabled}\n isLoading={isLoadingNew || !entities.length || isSaving}\n />\n )}\n </Styled.FeedContainer>\n </>\n )\n}\n"],"names":["activitiesLast","feedFilters","Feed","disabled","readOnly","statuses","entityListId","isSlideOut","projectName","entities","entityType","editingId","projectInfo","setEditingId","userName","activitiesData","isLoadingNew","isLoadingNextPage","loadNextPage","hasNextPage","users","feedFilter","setFeedFilter","useFeedContext","openSlideOut","highlightedActivities","setHighlightedActivities","onOpenImage","setFeedAnnotations","user","useDetailsPanelContext","isVersionsFilter","c","hasActiveFilters","hasCommentLikeFilter","projectPermissions","isLoadingPermissions","useGetMyProjectPermissionsQuery","hideCommentInput","activitiesWithMergedAnnotations","useMemo","mergeAnnotationAttachments","useEffect","annotations","activity","a","transformedActivitiesData","useTransformActivities","feedRef","useRef","useScrollOnInputOpen","FEED_NEW_COMMENT","useSaveScrollPos","useScrollToHighlighted","submitCommentMutation","updateComment","deleteComment","isSaving","useCommentMutations","submitComment","useCallback","value","files","data","handleCommentChecked","target","checked","currentMarkdown","newMarkdown","body","taskIndex","li","replaceIndex","markdown","index","indexesOfCurrentMarkdownInBody","indexToReplaceInBody","endReplaceIndex","newBody","handleRefClick","ref","entityId","activityId","handleFileExpand","previewableFiles","file","isFilePreviewable","loadingPlaceholders","getLoadingPlaceholders","jsxs","Styled.FeedContainer","jsx","TabHeaderAndFilters","Styled.FeedContent","clsx","ActivityItem","_refs","e","EmptyPlaceholder","InView","inView","Styled.LoadMore","CommentInput"],"mappings":"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"}