@ynput/ayon-frontend-shared 0.2.26 → 0.2.28

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 (367) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +25 -22
  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 +13 -11
  7. package/dist/Views.es.js.map +1 -1
  8. package/dist/api.cjs.js +1 -1
  9. package/dist/api.es.js +153 -151
  10. package/dist/components.cjs.js +1 -1
  11. package/dist/components.es.js +62 -51
  12. package/dist/components.es.js.map +1 -1
  13. package/dist/index.cjs.js +1 -1
  14. package/dist/index.es.js +12 -6
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/shared/src/api/generated/entityLists.cjs.js.map +1 -1
  17. package/dist/shared/src/api/generated/entityLists.es.js.map +1 -1
  18. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  19. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  20. package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
  21. package/dist/shared/src/api/generated/views.es.js.map +1 -1
  22. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +1 -1
  23. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  24. package/dist/shared/src/api/queries/entityLists/getLists.es.js +142 -117
  25. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  26. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +1 -1
  27. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  28. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +110 -95
  29. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  30. package/dist/shared/src/api/queries/users/getUsers.cjs.js +1 -1
  31. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  32. package/dist/shared/src/api/queries/users/getUsers.es.js +21 -17
  33. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  34. package/dist/shared/src/components/AccessUser/AccessUser.cjs.js +2 -0
  35. package/dist/shared/src/components/AccessUser/AccessUser.cjs.js.map +1 -0
  36. package/dist/shared/src/components/AccessUser/AccessUser.es.js +33 -0
  37. package/dist/shared/src/components/AccessUser/AccessUser.es.js.map +1 -0
  38. package/dist/shared/src/components/AccessUser/AccessUser.styled.cjs.js +42 -0
  39. package/dist/shared/src/components/AccessUser/AccessUser.styled.cjs.js.map +1 -0
  40. package/dist/shared/src/components/AccessUser/AccessUser.styled.es.js +46 -0
  41. package/dist/shared/src/components/AccessUser/AccessUser.styled.es.js.map +1 -0
  42. package/dist/shared/src/components/DetailsMetaData/DetailsMetaData.cjs.js +34 -0
  43. package/dist/shared/src/components/DetailsMetaData/DetailsMetaData.cjs.js.map +1 -0
  44. package/dist/shared/src/components/DetailsMetaData/DetailsMetaData.es.js +46 -0
  45. package/dist/shared/src/components/DetailsMetaData/DetailsMetaData.es.js.map +1 -0
  46. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +20 -10
  47. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  48. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +81 -67
  49. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  50. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +3 -3
  51. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  52. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +59 -52
  53. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  54. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  55. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  56. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +5 -2
  57. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  58. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  59. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  60. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +5 -2
  61. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  62. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  63. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  64. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +5 -2
  65. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  66. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +2 -0
  67. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -0
  68. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +205 -0
  69. package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js.map +1 -0
  70. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js +2 -0
  71. package/dist/shared/src/components/ListMetaData/ListMetaData.cjs.js.map +1 -0
  72. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js +25 -0
  73. package/dist/shared/src/components/ListMetaData/ListMetaData.es.js.map +1 -0
  74. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js +3 -3
  75. package/dist/shared/src/components/Powerpack/PowerpackButton.cjs.js.map +1 -1
  76. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js +5 -5
  77. package/dist/shared/src/components/Powerpack/PowerpackButton.es.js.map +1 -1
  78. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  79. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  80. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +5 -2
  81. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  82. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.cjs.js +9 -0
  83. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.cjs.js.map +1 -0
  84. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.es.js +25 -0
  85. package/dist/shared/src/components/Powerpack/RequiredPowerpackVersion.es.js.map +1 -0
  86. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  87. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  88. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +7 -4
  89. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  90. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  91. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  92. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +18 -21
  93. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  94. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  95. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  96. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +5 -2
  97. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  98. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  99. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  100. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -3
  101. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  102. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  103. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  104. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +5 -2
  105. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  106. package/dist/shared/src/components/ShareOptionIcon/ShareOptionIcon.cjs.js +2 -0
  107. package/dist/shared/src/components/ShareOptionIcon/ShareOptionIcon.cjs.js.map +1 -0
  108. package/dist/shared/src/components/ShareOptionIcon/ShareOptionIcon.es.js +17 -0
  109. package/dist/shared/src/components/ShareOptionIcon/ShareOptionIcon.es.js.map +1 -0
  110. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +2 -2
  111. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  112. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +5 -2
  113. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  114. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  115. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  116. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +5 -2
  117. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  118. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  119. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  120. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +5 -2
  121. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  122. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  123. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  124. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +5 -2
  125. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  126. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  127. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  128. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +146 -157
  129. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  130. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.styled.cjs.js +7 -1
  131. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.styled.cjs.js.map +1 -1
  132. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.styled.es.js +13 -6
  133. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.styled.es.js.map +1 -1
  134. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  135. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  136. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +5 -2
  137. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  138. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  139. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  140. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -3
  141. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  142. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  143. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  144. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +6 -3
  145. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  146. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  147. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  148. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +5 -2
  149. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  150. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  151. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  152. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +5 -2
  153. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  154. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  155. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  156. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +5 -2
  157. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  158. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  159. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  160. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +5 -2
  161. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  162. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  163. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  164. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +413 -396
  165. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  166. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js +104 -25
  167. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js.map +1 -1
  168. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js +131 -52
  169. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.styled.es.js.map +1 -1
  170. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  171. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  172. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +136 -129
  173. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  174. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +16 -53
  175. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  176. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +100 -120
  177. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  178. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  179. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  180. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +5 -2
  181. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  182. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +7 -3
  183. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
  184. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +12 -8
  185. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
  186. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  187. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  188. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +5 -2
  189. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  190. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +3 -3
  191. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  192. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +250 -235
  193. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  194. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
  195. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
  196. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +24 -21
  197. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js.map +1 -1
  198. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  199. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  200. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +5 -2
  201. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  202. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardTypes.es.js.map +1 -1
  204. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js +1 -1
  205. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.cjs.js.map +1 -1
  206. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js +10 -10
  207. package/dist/shared/src/containers/ProjectTreeTable/context/clipboard/clipboardValidation.es.js.map +1 -1
  208. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js +1 -1
  209. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.cjs.js.map +1 -1
  210. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js +13 -9
  211. package/dist/shared/src/containers/ProjectTreeTable/hooks/useAttributesList.es.js.map +1 -1
  212. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  214. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +65 -60
  215. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  216. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  218. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +5 -2
  219. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  220. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  222. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +5 -2
  223. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  224. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  226. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +5 -2
  227. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  228. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  230. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +5 -2
  231. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  232. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  234. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +5 -2
  235. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  236. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  238. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +5 -2
  239. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  240. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +16 -13
  243. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  244. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.cjs.js.map +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js +41 -14
  247. package/dist/shared/src/containers/ProjectTreeTable/utils/getReadOnlyLists.es.js.map +1 -1
  248. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
  250. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +7 -7
  251. package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
  252. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
  253. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +110 -104
  255. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  256. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +2 -2
  257. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +8 -8
  259. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -1
  260. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +2 -2
  261. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +44 -43
  263. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  264. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +7 -4
  267. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  268. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  269. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  270. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +5 -2
  271. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  272. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  273. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  274. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +118 -103
  275. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  276. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js +16 -4
  277. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.cjs.js.map +1 -1
  278. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js +13 -1
  279. package/dist/shared/src/containers/SimpleTable/SimpleTable.styled.es.js.map +1 -1
  280. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js +1 -1
  281. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.cjs.js.map +1 -1
  282. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js +62 -50
  283. package/dist/shared/src/containers/SimpleTable/SimpleTableRowTemplate.es.js.map +1 -1
  284. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  285. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  286. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.cjs.js +2 -0
  287. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.cjs.js.map +1 -0
  288. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.es.js +64 -0
  289. package/dist/shared/src/containers/Views/hooks/pages/useReportsViewSettings.es.js.map +1 -0
  290. package/dist/shared/src/context/MenuContext.cjs.js +2 -0
  291. package/dist/shared/src/context/MenuContext.cjs.js.map +1 -0
  292. package/dist/shared/src/context/MenuContext.es.js +28 -0
  293. package/dist/shared/src/context/MenuContext.es.js.map +1 -0
  294. package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
  295. package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
  296. package/dist/shared/src/context/PowerpackContext.es.js +20 -15
  297. package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
  298. package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
  299. package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
  300. package/dist/shared/src/context/RemoteModulesContext.es.js +19 -19
  301. package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
  302. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  303. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  304. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js +2 -0
  305. package/dist/src/components/Menu/MenuComponents/Menu.cjs.js.map +1 -0
  306. package/dist/src/components/Menu/MenuComponents/Menu.es.js +55 -0
  307. package/dist/src/components/Menu/MenuComponents/Menu.es.js.map +1 -0
  308. package/dist/src/components/Menu/MenuComponents/Menu.styled.cjs.js +254 -0
  309. package/dist/src/components/Menu/MenuComponents/Menu.styled.cjs.js.map +1 -0
  310. package/dist/src/components/Menu/MenuComponents/Menu.styled.es.js +265 -0
  311. package/dist/src/components/Menu/MenuComponents/Menu.styled.es.js.map +1 -0
  312. package/dist/src/components/Menu/MenuComponents/MenuContainer2.cjs.js +2 -0
  313. package/dist/src/components/Menu/MenuComponents/MenuContainer2.cjs.js.map +1 -0
  314. package/dist/src/components/Menu/MenuComponents/MenuContainer2.es.js +80 -0
  315. package/dist/src/components/Menu/MenuComponents/MenuContainer2.es.js.map +1 -0
  316. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js +2 -0
  317. package/dist/src/components/Menu/MenuComponents/MenuItem.cjs.js.map +1 -0
  318. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js +59 -0
  319. package/dist/src/components/Menu/MenuComponents/MenuItem.es.js.map +1 -0
  320. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js +2 -0
  321. package/dist/src/components/Menu/MenuComponents/MenuList.cjs.js.map +1 -0
  322. package/dist/src/components/Menu/MenuComponents/MenuList.es.js +112 -0
  323. package/dist/src/components/Menu/MenuComponents/MenuList.es.js.map +1 -0
  324. package/dist/src/components/Menu/MenuComponents/useMenuPosition.cjs.js +2 -0
  325. package/dist/src/components/Menu/MenuComponents/useMenuPosition.cjs.js.map +1 -0
  326. package/dist/src/components/Menu/MenuComponents/useMenuPosition.es.js +35 -0
  327. package/dist/src/components/Menu/MenuComponents/useMenuPosition.es.js.map +1 -0
  328. package/dist/types/api/generated/entityLists.d.ts +8 -8
  329. package/dist/types/api/generated/users.d.ts +18 -14
  330. package/dist/types/api/generated/views.d.ts +47 -9
  331. package/dist/types/api/queries/entityLists/getLists.d.ts +133 -0
  332. package/dist/types/api/queries/entityLists/types.d.ts +2 -1
  333. package/dist/types/api/queries/permissions/getPermissions.d.ts +22 -22
  334. package/dist/types/api/queries/users/getUsers.d.ts +132 -0
  335. package/dist/types/api/queries/users/updateUsers.d.ts +3 -3
  336. package/dist/types/components/AccessUser/AccessUser.d.ts +22 -0
  337. package/dist/types/components/AccessUser/AccessUser.styled.d.ts +1 -0
  338. package/dist/types/components/AccessUser/index.d.ts +1 -0
  339. package/dist/types/components/DetailsMetaData/DetailsMetaData.d.ts +8 -0
  340. package/dist/types/components/DetailsMetaData/index.d.ts +1 -0
  341. package/dist/types/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.d.ts +4 -0
  342. package/dist/types/components/ListAttributeForm/ListAttributeForm.d.ts +13 -0
  343. package/dist/types/components/ListAttributeForm/index.d.ts +1 -0
  344. package/dist/types/components/ListMetaData/ListMetaData.d.ts +8 -0
  345. package/dist/types/components/ListMetaData/index.d.ts +1 -0
  346. package/dist/types/components/Powerpack/RequiredPowerpackVersion.d.ts +5 -0
  347. package/dist/types/components/Powerpack/index.d.ts +1 -0
  348. package/dist/types/components/ShareOptionIcon/ShareOptionIcon.d.ts +10 -0
  349. package/dist/types/components/ShareOptionIcon/index.d.ts +2 -0
  350. package/dist/types/components/index.d.ts +4 -0
  351. package/dist/types/containers/DetailsPanel/DetailsPanel.styled.d.ts +7 -0
  352. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.styled.d.ts +3 -1
  353. package/dist/types/containers/ProjectTreeTable/components/ColumnHeaderMenu.d.ts +4 -1
  354. package/dist/types/containers/ProjectTreeTable/context/ProjectDataContext.d.ts +1 -0
  355. package/dist/types/containers/ProjectTreeTable/context/clipboard/clipboardTypes.d.ts +3 -1
  356. package/dist/types/containers/ProjectTreeTable/hooks/useAttributesList.d.ts +1 -0
  357. package/dist/types/containers/ProjectTreeTable/utils/getReadOnlyLists.d.ts +1 -1
  358. package/dist/types/containers/ProjectTreeTable/widgets/BooleanWidget.d.ts +1 -0
  359. package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -2
  360. package/dist/types/containers/SimpleTable/SimpleTable.d.ts +3 -0
  361. package/dist/types/containers/SimpleTable/SimpleTableRowTemplate.d.ts +5 -1
  362. package/dist/types/containers/Views/hooks/pages/useReportsViewSettings.d.ts +11 -0
  363. package/dist/types/containers/Views/index.d.ts +6 -2
  364. package/dist/types/context/MenuContext.d.ts +12 -0
  365. package/dist/types/context/PowerpackContext.d.ts +1 -1
  366. package/dist/types/index.d.ts +1 -0
  367. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useCellContextMenu.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCellContextMenu.ts"],"sourcesContent":["import { ContextMenuItemType, useCreateContextMenu } from '../../ContextMenu/useCreateContextMenu'\nimport useDeleteEntities from './useDeleteEntities'\nimport { getPlatformShortcutKey, KeyMode } from '../../../util/platform'\nimport { getCellId, parseCellId } from '../utils/cellUtils'\nimport { useClipboard } from '../context/ClipboardContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectTableContext } from '../context/ProjectTableContext'\nimport { useCellEditing } from '../context/CellEditingContext'\nimport { InheritFromParentEntity } from './useUpdateTableData'\nimport { ProjectTableAttribute, TableRow } from '../types'\nimport { UseHistoryReturn } from './useHistory'\nimport { GROUP_BY_ID } from './useBuildGroupByTableData'\nimport { ColumnDef } from '@tanstack/react-table'\nimport { getEntityViewierIds } from '../utils'\n\ntype ContextEvent = React.MouseEvent<HTMLTableSectionElement, MouseEvent>\n\nexport type HeaderLabel = { id: string; label: string }\n\nexport type TableCellContextData = {\n cellId: string\n columnId: string\n entityId: string\n entityType: 'folder' | 'task' | 'product' | 'version' | undefined\n parentId?: string\n attribField: ProjectTableAttribute | undefined // the attribute field if any (fps, custom attribs, etc.)\n column: {\n id: string\n label: string\n }\n isGroup: boolean // if the cell is a group header\n}\ntype DefaultMenuItem =\n | 'copy-paste'\n | 'show-details'\n | 'expand-collapse'\n | 'inherit'\n | 'delete'\n | 'export'\n | 'create-folder'\n | 'create-task'\n | 'open-viewer'\nexport type ContextMenuItemConstructor = (\n e: ContextEvent,\n cell: TableCellContextData,\n selectedCells: TableCellContextData[],\n meta: {\n selectedCells: string[] // minus row selection cells\n selectedRows: string[]\n selectedColumns: string[]\n selectedFullRows: string[] // if the full row is selected\n selectedGroups: string[] // groups if any\n },\n context: {\n history: UseHistoryReturn\n },\n) => ContextMenuItemType | ContextMenuItemType[] | undefined\nexport type ContextMenuItemConstructors = (DefaultMenuItem | ContextMenuItemConstructor)[]\n\ntype CellContextMenuProps = {\n attribs: ProjectTableAttribute[]\n columns?: ColumnDef<TableRow>[]\n headerLabels: HeaderLabel[]\n onOpenNew?: (type: 'folder' | 'task') => void\n}\n\nconst useCellContextMenu = ({ attribs, headerLabels = [], onOpenNew }: CellContextMenuProps) => {\n // context hooks\n const {\n projectName,\n showHierarchy,\n getEntityById,\n toggleExpandAll,\n toggleExpands,\n expanded,\n contextMenuItems = [],\n powerpack,\n onOpenPlayer,\n } = useProjectTableContext()\n const { copyToClipboard, exportCSV, pasteFromClipboard } = useClipboard()\n const { selectedCells, clearSelection, selectCell, focusCell } = useSelectionCellsContext()\n const { inheritFromParent, history } = useCellEditing()\n\n // update entity context\n\n // data mutations\n const deleteEntities = useDeleteEntities({})\n\n const [cellContextMenuShow] = useCreateContextMenu([], powerpack)\n\n // Helper function to identify attributes that can be inherited\n const getEntitiesToInherit = (selected: string[]): InheritFromParentEntity[] => {\n return selected.reduce((acc, cellId) => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId || !colId.startsWith('attrib_')) return acc\n\n const entity = getEntityById(rowId)\n if (!entity) return acc\n const entityId = entity.entityId || entity.id\n\n const attribName = colId.replace('attrib_', '')\n // get attrib model\n const attribModel = attribs.find((attrib) => attrib.name === attribName)\n // is the attrib inheritable?\n const isInheritable = attribModel?.data.inherit\n\n // Check if this attribute is owned by the entity (not inherited)\n if (entity.ownAttrib?.includes(attribName) && isInheritable) {\n // Find existing entry or create new one\n const existingIndex = acc.findIndex((item) => item.entityId === entityId)\n\n if (existingIndex >= 0) {\n // Add to existing entity's attribs if not already there\n if (!acc[existingIndex].attribs.includes(attribName)) {\n acc[existingIndex].attribs.push(attribName)\n }\n } else {\n // Create new entity entry\n acc.push({\n rowId: entityId,\n entityId: entityId,\n entityType: 'folderId' in entity ? 'task' : 'folder',\n attribs: [attribName],\n ownAttrib: entity.ownAttrib || [],\n // @ts-ignore\n folderId: entity.parentId ?? entity.folderId,\n })\n }\n }\n\n return acc\n }, [] as InheritFromParentEntity[])\n }\n\n const copyAndPasteItems: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n return [\n {\n label: 'Copy',\n icon: 'content_copy',\n shortcut: getPlatformShortcutKey('c', [KeyMode.Ctrl]),\n command: () => copyToClipboard(meta.selectedCells),\n hidden: cell.isGroup || cell.columnId === 'thumbnail',\n },\n {\n label: `Copy row${meta.selectedFullRows.length > 1 ? 's' : ''}`,\n icon: 'content_copy',\n command: () => copyToClipboard(meta.selectedFullRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !meta.selectedFullRows.some(\n (cellId) => parseCellId(cellId)?.rowId === parseCellId(cell.cellId)?.rowId,\n ),\n },\n {\n label: 'Paste',\n icon: 'content_paste',\n shortcut: getPlatformShortcutKey('v', [KeyMode.Ctrl]),\n command: () => pasteFromClipboard(meta.selectedCells),\n hidden: cell.columnId === 'name' || cell.columnId === 'thumbnail' || cell.isGroup,\n disabled: cell.attribField?.readOnly,\n },\n ]\n }\n\n const showDetailsItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Show details',\n icon: 'dock_to_left',\n shortcut: 'Double click',\n command: () => {\n const rowSelectionCellId = getCellId(cell.entityId, ROW_SELECTION_COLUMN_ID)\n // select the row to open the details\n selectCell(rowSelectionCellId, false, false)\n },\n hidden: cell.columnId !== 'name' || meta.selectedRows.length > 1 || cell.isGroup,\n })\n\n const openViewerItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Open in viewer',\n icon: 'play_circle',\n shortcut: 'Spacebar',\n command: () => {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.entityId)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n },\n hidden: (cell.columnId !== 'thumbnail' && cell.columnId !== 'name') || cell.isGroup,\n })\n\n const expandCollapseChildrenItems: ContextMenuItemConstructor = (e, cell, selected, meta) => [\n {\n label: 'Expand children',\n icon: 'expand_all',\n shortcut: 'Alt + click',\n command: () => toggleExpandAll(meta.selectedRows, true),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Collapse children',\n icon: 'collapse_all',\n shortcut: 'Alt + click',\n command: () => toggleExpandAll(meta.selectedRows, false),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Expand',\n icon: 'expand_all',\n command: () => toggleExpands(meta.selectedRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n expanded[cell.entityId as keyof typeof expanded],\n },\n {\n label: 'Collapse',\n icon: 'collapse_all',\n command: () => toggleExpands(meta.selectedRows, false),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n !expanded[cell.entityId as keyof typeof expanded],\n },\n ]\n\n const deleteItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Delete',\n icon: 'delete',\n danger: true,\n command: () => deleteEntities(meta.selectedRows),\n hidden: cell.columnId !== 'name' || cell.isGroup,\n })\n\n const inheritItem: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n const entitiesToInherit = getEntitiesToInherit(meta.selectedCells)\n const canInheritFromParent =\n entitiesToInherit.length > 0 &&\n showHierarchy &&\n !(meta.selectedRows.length > 1 && meta.selectedColumns.length > 1)\n\n return {\n label: 'Inherit from parent',\n icon: 'disabled_by_default',\n command: () => inheritFromParent(entitiesToInherit),\n hidden: !canInheritFromParent,\n }\n }\n\n const exportItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Export selection',\n icon: 'download',\n command: () => exportCSV(Array.from(selectedCells), projectName),\n hidden: cell.isGroup,\n })\n\n const createFolderItems: ContextMenuItemConstructor = (e, cell) => [\n {\n label: 'Create folder',\n icon: 'create_new_folder',\n command: () => onOpenNew?.('folder'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n {\n label: 'Create root folder',\n icon: 'create_new_folder',\n command: () => {\n clearSelection()\n onOpenNew?.('folder')\n },\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n ]\n\n const createTaskItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Create task',\n icon: 'add_task',\n command: () => onOpenNew?.('task'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n })\n\n const builtInMenuItems: Record<DefaultMenuItem, ContextMenuItemConstructor> = {\n ['copy-paste']: copyAndPasteItems,\n ['show-details']: showDetailsItem,\n ['expand-collapse']: expandCollapseChildrenItems,\n ['delete']: deleteItem,\n ['inherit']: inheritItem,\n ['export']: exportItem,\n ['create-folder']: createFolderItems,\n ['create-task']: createTaskItem,\n ['open-viewer']: openViewerItem,\n }\n\n const getCellData = (cellId: string): TableCellContextData | undefined => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId) return undefined\n const cellEntityData = getEntityById(rowId)\n const attribField = attribs.find((attrib) => attrib.name === colId?.replace('attrib_', ''))\n const column = headerLabels.find((header) => header.id === colId)\n const parentId = cellEntityData\n ? 'parentId' in cellEntityData\n ? cellEntityData.parentId\n : 'folderId' in cellEntityData\n ? cellEntityData.folderId\n : undefined\n : undefined\n return {\n cellId: cellId,\n columnId: colId,\n entityId: cellEntityData?.entityId || cellEntityData?.id || rowId,\n entityType: cellEntityData?.entityType,\n parentId: parentId,\n attribField: attribField,\n isGroup: rowId.startsWith(GROUP_BY_ID),\n column: {\n id: colId,\n label: column?.label || '',\n },\n }\n }\n\n const handleTableBodyContextMenu = (e: ContextEvent) => {\n const target = e.target as HTMLElement\n const tdEl = target.closest('td')\n // get id of first child of td\n const cellId = tdEl?.firstElementChild?.id\n\n if (!cellId) return\n\n const cellData = getCellData(cellId)\n\n if (!cellData) return\n\n let currentSelectedCells = Array.from(selectedCells)\n // if selecting a cell outside of the current selection\n if (!currentSelectedCells.includes(cellId) || !currentSelectedCells.length) {\n currentSelectedCells = [cellId]\n // update selection\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n // selected cells without row selection cells\n const selectedRealCells = currentSelectedCells.filter(\n (id) => parseCellId(id)?.colId !== ROW_SELECTION_COLUMN_ID,\n )\n\n const selectedCellsData = currentSelectedCells.flatMap((cellId) => getCellData(cellId) || [])\n const selectedCellRows: string[] = []\n const selectedCellColumns: string[] = []\n const selectedCellFullRows: string[] = []\n const selectedCellsGroups: string[] = [] // find cells that are group headers\n for (const { entityId, columnId } of selectedCellsData) {\n if (entityId && !selectedCellRows.includes(entityId)) selectedCellRows.push(entityId)\n if (columnId && !selectedCellColumns.includes(columnId)) selectedCellColumns.push(columnId)\n if (columnId === ROW_SELECTION_COLUMN_ID && !selectedCellFullRows.includes(entityId))\n selectedCellFullRows.push(entityId)\n if (entityId.startsWith(GROUP_BY_ID)) selectedCellsGroups.push(entityId)\n }\n\n const constructedMenuItems = contextMenuItems.flatMap((constructor) =>\n typeof constructor === 'function'\n ? constructor(\n e,\n cellData,\n selectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n {\n history,\n },\n )\n : builtInMenuItems[constructor]?.(\n e,\n cellData,\n selectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n { history },\n ),\n )\n\n cellContextMenuShow(e, constructedMenuItems)\n }\n\n return { handleTableBodyContextMenu }\n}\n\nexport default useCellContextMenu\n"],"names":["useCellContextMenu","attribs","headerLabels","onOpenNew","projectName","showHierarchy","getEntityById","toggleExpandAll","toggleExpands","expanded","contextMenuItems","powerpack","onOpenPlayer","useProjectTableContext","copyToClipboard","exportCSV","pasteFromClipboard","useClipboard","selectedCells","clearSelection","selectCell","focusCell","useSelectionCellsContext","inheritFromParent","history","useCellEditing","deleteEntities","useDeleteEntities","cellContextMenuShow","useCreateContextMenu","getEntitiesToInherit","selected","acc","cellId","rowId","colId","parseCellId","entity","entityId","attribName","attribModel","attrib","isInheritable","_a","existingIndex","item","builtInMenuItems","e","cell","meta","getPlatformShortcutKey","KeyMode","rowSelectionCellId","getCellId","ROW_SELECTION_COLUMN_ID","entitiesToInherit","canInheritFromParent","targetIds","getEntityViewierIds","getCellData","cellEntityData","attribField","column","header","parentId","GROUP_BY_ID","tdEl","cellData","currentSelectedCells","selectedRealCells","id","selectedCellsData","selectedCellRows","selectedCellColumns","selectedCellFullRows","selectedCellsGroups","columnId","constructedMenuItems","constructor"],"mappings":"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"}
1
+ {"version":3,"file":"useCellContextMenu.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCellContextMenu.ts"],"sourcesContent":["import { ContextMenuItemType, useCreateContextMenu } from '../../ContextMenu/useCreateContextMenu'\nimport useDeleteEntities from './useDeleteEntities'\nimport { getPlatformShortcutKey, KeyMode } from '../../../util/platform'\nimport { getCellId, parseCellId } from '../utils/cellUtils'\nimport { useClipboard } from '../context/ClipboardContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectTableContext } from '../context/ProjectTableContext'\nimport { useCellEditing } from '../context/CellEditingContext'\nimport { InheritFromParentEntity } from './useUpdateTableData'\nimport { ProjectTableAttribute, TableRow } from '../types'\nimport { UseHistoryReturn } from './useHistory'\nimport { GROUP_BY_ID } from './useBuildGroupByTableData'\nimport { ColumnDef } from '@tanstack/react-table'\nimport { getEntityViewierIds } from '../utils'\n\ntype ContextEvent = React.MouseEvent<HTMLTableSectionElement, MouseEvent>\n\nexport type HeaderLabel = { id: string; label: string }\n\nexport type TableCellContextData = {\n cellId: string\n columnId: string\n entityId: string\n entityType: 'folder' | 'task' | 'product' | 'version' | undefined\n parentId?: string\n attribField: ProjectTableAttribute | undefined // the attribute field if any (fps, custom attribs, etc.)\n column: {\n id: string\n label: string\n }\n isGroup: boolean // if the cell is a group header\n}\ntype DefaultMenuItem =\n | 'copy-paste'\n | 'show-details'\n | 'expand-collapse'\n | 'inherit'\n | 'delete'\n | 'export'\n | 'create-folder'\n | 'create-task'\n | 'open-viewer'\nexport type ContextMenuItemConstructor = (\n e: ContextEvent,\n cell: TableCellContextData,\n selectedCells: TableCellContextData[],\n meta: {\n selectedCells: string[] // minus row selection cells\n selectedRows: string[]\n selectedColumns: string[]\n selectedFullRows: string[] // if the full row is selected\n selectedGroups: string[] // groups if any\n },\n context: {\n history: UseHistoryReturn\n },\n) => ContextMenuItemType | ContextMenuItemType[] | undefined\nexport type ContextMenuItemConstructors = (DefaultMenuItem | ContextMenuItemConstructor)[]\n\ntype CellContextMenuProps = {\n attribs: ProjectTableAttribute[]\n columns?: ColumnDef<TableRow>[]\n headerLabels: HeaderLabel[]\n onOpenNew?: (type: 'folder' | 'task') => void\n}\n\nconst useCellContextMenu = ({ attribs, headerLabels = [], onOpenNew }: CellContextMenuProps) => {\n // context hooks\n const {\n projectName,\n showHierarchy,\n getEntityById,\n toggleExpandAll,\n toggleExpands,\n expanded,\n contextMenuItems = [],\n powerpack,\n onOpenPlayer,\n } = useProjectTableContext()\n const { copyToClipboard, exportCSV, pasteFromClipboard } = useClipboard()\n const { selectedCells, clearSelection, selectCell, focusCell } = useSelectionCellsContext()\n const { inheritFromParent, history } = useCellEditing()\n\n // update entity context\n\n // data mutations\n const deleteEntities = useDeleteEntities({})\n\n const [cellContextMenuShow] = useCreateContextMenu([], powerpack)\n\n // Helper function to identify attributes that can be inherited\n const getEntitiesToInherit = (selected: string[]): InheritFromParentEntity[] => {\n return selected.reduce((acc, cellId) => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId || !colId.startsWith('attrib_')) return acc\n\n const entity = getEntityById(rowId)\n if (!entity) return acc\n const entityId = entity.entityId || entity.id\n\n const attribName = colId.replace('attrib_', '')\n // get attrib model\n const attribModel = attribs.find((attrib) => attrib.name === attribName)\n // is the attrib inheritable?\n const isInheritable = attribModel?.data.inherit\n\n // Check if this attribute is owned by the entity (not inherited)\n if (entity.ownAttrib?.includes(attribName) && isInheritable) {\n // Find existing entry or create new one\n const existingIndex = acc.findIndex((item) => item.entityId === entityId)\n\n if (existingIndex >= 0) {\n // Add to existing entity's attribs if not already there\n if (!acc[existingIndex].attribs.includes(attribName)) {\n acc[existingIndex].attribs.push(attribName)\n }\n } else {\n // Create new entity entry\n acc.push({\n rowId: entityId,\n entityId: entityId,\n entityType: 'folderId' in entity ? 'task' : 'folder',\n attribs: [attribName],\n ownAttrib: entity.ownAttrib || [],\n // @ts-ignore\n folderId: entity.parentId ?? entity.folderId,\n })\n }\n }\n\n return acc\n }, [] as InheritFromParentEntity[])\n }\n\n const copyAndPasteItems: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n return [\n {\n label: 'Copy',\n icon: 'content_copy',\n shortcut: getPlatformShortcutKey('c', [KeyMode.Ctrl]),\n command: () => copyToClipboard(meta.selectedCells),\n hidden: cell.isGroup || cell.columnId === 'thumbnail',\n },\n {\n label: `Copy row${meta.selectedFullRows.length > 1 ? 's' : ''}`,\n icon: 'content_copy',\n command: () => copyToClipboard(meta.selectedFullRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !meta.selectedFullRows.some(\n (cellId) => parseCellId(cellId)?.rowId === parseCellId(cell.cellId)?.rowId,\n ),\n },\n {\n label: 'Paste',\n icon: 'content_paste',\n shortcut: getPlatformShortcutKey('v', [KeyMode.Ctrl]),\n command: () => pasteFromClipboard(meta.selectedCells),\n hidden: cell.columnId === 'name' || cell.columnId === 'thumbnail' || cell.isGroup,\n disabled: cell.attribField?.readOnly,\n },\n ]\n }\n\n const showDetailsItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Show details',\n icon: 'dock_to_left',\n shortcut: 'Double click',\n command: () => {\n const rowSelectionCellId = getCellId(cell.entityId, ROW_SELECTION_COLUMN_ID)\n // select the row to open the details\n selectCell(rowSelectionCellId, false, false)\n },\n hidden: cell.columnId !== 'name' || meta.selectedRows.length > 1 || cell.isGroup,\n })\n\n const openViewerItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Open in viewer',\n icon: 'play_circle',\n shortcut: 'Spacebar',\n command: () => {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.entityId)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n },\n hidden: (cell.columnId !== 'thumbnail' && cell.columnId !== 'name') || cell.isGroup,\n })\n\n const expandCollapseChildrenItems: ContextMenuItemConstructor = (e, cell, selected, meta) => [\n {\n label: 'Expand children',\n icon: 'expand_all',\n shortcut: 'Alt + click',\n command: () => toggleExpandAll(meta.selectedRows, true),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Collapse children',\n icon: 'collapse_all',\n shortcut: 'Alt + click',\n command: () => toggleExpandAll(meta.selectedRows, false),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Expand',\n icon: 'expand_all',\n command: () => toggleExpands(meta.selectedRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n expanded[cell.entityId as keyof typeof expanded],\n },\n {\n label: 'Collapse',\n icon: 'collapse_all',\n command: () => toggleExpands(meta.selectedRows, false),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n !expanded[cell.entityId as keyof typeof expanded],\n },\n ]\n\n const deleteItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Delete',\n icon: 'delete',\n danger: true,\n command: () => deleteEntities(meta.selectedRows),\n hidden: cell.columnId !== 'name' || cell.isGroup,\n })\n\n const inheritItem: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n const entitiesToInherit = getEntitiesToInherit(meta.selectedCells)\n const canInheritFromParent =\n entitiesToInherit.length > 0 &&\n showHierarchy &&\n !(meta.selectedRows.length > 1 && meta.selectedColumns.length > 1)\n\n return {\n label: 'Inherit from parent',\n icon: 'disabled_by_default',\n command: () => inheritFromParent(entitiesToInherit),\n hidden: !canInheritFromParent,\n }\n }\n\n const exportItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Export selection',\n icon: 'download',\n command: () => exportCSV(Array.from(selectedCells), projectName),\n hidden: cell.isGroup,\n })\n\n const createFolderItems: ContextMenuItemConstructor = (e, cell) => [\n {\n label: 'Create folder',\n icon: 'create_new_folder',\n command: () => onOpenNew?.('folder'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n {\n label: 'Create root folder',\n icon: 'create_new_folder',\n command: () => {\n clearSelection()\n onOpenNew?.('folder')\n },\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n ]\n\n const createTaskItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Create task',\n icon: 'add_task',\n command: () => onOpenNew?.('task'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n })\n\n const builtInMenuItems: Record<DefaultMenuItem, ContextMenuItemConstructor> = {\n ['copy-paste']: copyAndPasteItems,\n ['show-details']: showDetailsItem,\n ['expand-collapse']: expandCollapseChildrenItems,\n ['delete']: deleteItem,\n ['inherit']: inheritItem,\n ['export']: exportItem,\n ['create-folder']: createFolderItems,\n ['create-task']: createTaskItem,\n ['open-viewer']: openViewerItem,\n }\n\n const getCellData = (cellId: string): TableCellContextData | undefined => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId) return undefined\n const cellEntityData = getEntityById(rowId)\n const attribField = attribs.find((attrib) => attrib.name === colId?.replace('attrib_', ''))\n const column = headerLabels.find((header) => header.id === colId)\n const parentId = cellEntityData\n ? 'parentId' in cellEntityData\n ? cellEntityData.parentId\n : 'folderId' in cellEntityData\n ? cellEntityData.folderId\n : undefined\n : undefined\n return {\n cellId: cellId,\n columnId: colId,\n entityId: cellEntityData?.entityId || cellEntityData?.id || rowId,\n entityType: cellEntityData?.entityType,\n parentId: parentId,\n attribField: attribField,\n isGroup: rowId.startsWith(GROUP_BY_ID),\n column: {\n id: colId,\n label: column?.label || '',\n },\n }\n }\n\n const handleTableBodyContextMenu = (e: ContextEvent) => {\n const target = e.target as HTMLElement\n const tdEl = target.closest('td')\n // get id of first child of td\n const cellId = tdEl?.firstElementChild?.id\n\n if (!cellId) return\n\n const cellData = getCellData(cellId)\n\n if (!cellData) return\n\n let currentSelectedCells = Array.from(selectedCells)\n // if selecting a cell outside of the current selection\n if (!currentSelectedCells.includes(cellId) || !currentSelectedCells.length) {\n currentSelectedCells = [cellId]\n // update selection\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n // selected cells without row selection cells\n const selectedRealCells = currentSelectedCells.filter(\n (id) => parseCellId(id)?.colId !== ROW_SELECTION_COLUMN_ID,\n )\n\n const selectedCellsData = currentSelectedCells.flatMap((cellId) => getCellData(cellId) || [])\n\n // Remove duplicates based on entityId - prioritize full row selection over individual cells\n const filteredSelectedCellsData = [\n ...new Map(selectedCellsData.map(e => [e.entityId, e])).values()\n ];\n\n\n const selectedCellRows: string[] = []\n const selectedCellColumns: string[] = []\n const selectedCellFullRows: string[] = []\n const selectedCellsGroups: string[] = [] // find cells that are group headers\n for (const { entityId, columnId } of filteredSelectedCellsData) {\n if (entityId && !selectedCellRows.includes(entityId)) selectedCellRows.push(entityId)\n if (columnId && !selectedCellColumns.includes(columnId)) selectedCellColumns.push(columnId)\n if (columnId === ROW_SELECTION_COLUMN_ID && !selectedCellFullRows.includes(entityId))\n selectedCellFullRows.push(entityId)\n if (entityId.startsWith(GROUP_BY_ID)) selectedCellsGroups.push(entityId)\n }\n\n const constructedMenuItems = contextMenuItems.flatMap((constructor) =>\n typeof constructor === 'function'\n ? constructor(\n e,\n cellData,\n filteredSelectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n {\n history,\n },\n )\n : builtInMenuItems[constructor]?.(\n e,\n cellData,\n filteredSelectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n { history },\n ),\n )\n\n cellContextMenuShow(e, constructedMenuItems)\n }\n\n return { handleTableBodyContextMenu }\n}\n\nexport default useCellContextMenu\n"],"names":["useCellContextMenu","attribs","headerLabels","onOpenNew","projectName","showHierarchy","getEntityById","toggleExpandAll","toggleExpands","expanded","contextMenuItems","powerpack","onOpenPlayer","useProjectTableContext","copyToClipboard","exportCSV","pasteFromClipboard","useClipboard","selectedCells","clearSelection","selectCell","focusCell","useSelectionCellsContext","inheritFromParent","history","useCellEditing","deleteEntities","useDeleteEntities","cellContextMenuShow","useCreateContextMenu","getEntitiesToInherit","selected","acc","cellId","rowId","colId","parseCellId","entity","entityId","attribName","attribModel","attrib","isInheritable","_a","existingIndex","item","builtInMenuItems","e","cell","meta","getPlatformShortcutKey","KeyMode","rowSelectionCellId","getCellId","ROW_SELECTION_COLUMN_ID","entitiesToInherit","canInheritFromParent","targetIds","getEntityViewierIds","getCellData","cellEntityData","attribField","column","header","parentId","GROUP_BY_ID","tdEl","cellData","currentSelectedCells","selectedRealCells","id","selectedCellsData","filteredSelectedCellsData","selectedCellRows","selectedCellColumns","selectedCellFullRows","selectedCellsGroups","columnId","constructedMenuItems","constructor"],"mappings":"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"}
@@ -1,18 +1,18 @@
1
- import { useCreateContextMenu as z } from "../../ContextMenu/useCreateContextMenu.es.js";
2
- import J from "./useDeleteEntities.es.js";
1
+ import { useCreateContextMenu as J } from "../../ContextMenu/useCreateContextMenu.es.js";
2
+ import Q from "./useDeleteEntities.es.js";
3
3
  import { getPlatformShortcutKey as P, KeyMode as E } from "../../../util/platform.es.js";
4
- import { parseCellId as f, getCellId as Q } from "../utils/cellUtils.es.js";
5
- import { useClipboard as X } from "../context/ClipboardContext.es.js";
6
- import { useSelectionCellsContext as Z, ROW_SELECTION_COLUMN_ID as x } from "../context/SelectionCellsContext.es.js";
7
- import { useProjectTableContext as O } from "../context/ProjectTableContext.es.js";
8
- import { useCellEditing as N } from "../context/CellEditingContext.es.js";
4
+ import { parseCellId as h, getCellId as X } from "../utils/cellUtils.es.js";
5
+ import { useClipboard as Z } from "../context/ClipboardContext.es.js";
6
+ import { useSelectionCellsContext as O, ROW_SELECTION_COLUMN_ID as x } from "../context/SelectionCellsContext.es.js";
7
+ import { useProjectTableContext as N } from "../context/ProjectTableContext.es.js";
8
+ import { useCellEditing as tt } from "../context/CellEditingContext.es.js";
9
9
  import { GROUP_BY_ID as v } from "./useBuildGroupByTableData.es.js";
10
10
  import "@ynput/ayon-react-components";
11
11
  import "lodash";
12
12
  import "react-toastify";
13
13
  import "uuid";
14
14
  import "../../../util/pubsub.es.js";
15
- import { getEntityViewierIds as tt } from "../utils/getEntityViewerIds.es.js";
15
+ import { getEntityViewierIds as ot } from "../utils/getEntityViewerIds.es.js";
16
16
  import "../../../../../_virtual/jsx-runtime.es.js";
17
17
  import "@tanstack/react-table";
18
18
  import "../widgets/CollapsedWidget.es.js";
@@ -198,6 +198,7 @@ import "../../../components/Powerpack/PowerpackButton.es.js";
198
198
  import "../../../components/Powerpack/PricingLink.es.js";
199
199
  import "../../../components/Powerpack/PowerpackDialog.styled.es.js";
200
200
  import "../../../components/Powerpack/CTAButton.es.js";
201
+ import "../../../components/Powerpack/RequiredPowerpackVersion.es.js";
201
202
  import "../../../components/SettingsPanel/SettingsPanel.es.js";
202
203
  import "../../../components/SettingsPanel/SettingsPanelItemTemplate.es.js";
203
204
  import "../../../components/AttributeEditor/components/MinMaxField.es.js";
@@ -211,34 +212,36 @@ import "../../../components/Feedback/SupportBubble.es.js";
211
212
  import "../../../components/Chips/Chips.es.js";
212
213
  import "../../../components/LinksManager/LinksManager.styled.es.js";
213
214
  import "../../EntityPickerDialog/EntityPickerDialog.es.js";
215
+ import "../../../components/DetailsMetaData/DetailsMetaData.es.js";
216
+ import "../../../components/AccessUser/AccessUser.es.js";
214
217
  import "../../../components/LinksManager/LinksManagerDialog.es.js";
215
218
  import "../ProjectTreeTable.styled.es.js";
216
219
  import "../widgets/LoadMoreWidget.es.js";
217
- const ai = ({ attribs: w, headerLabels: D = [], onOpenNew: l }) => {
220
+ const hi = ({ attribs: w, headerLabels: D = [], onOpenNew: n }) => {
218
221
  const {
219
222
  projectName: V,
220
- showHierarchy: h,
221
- getEntityById: C,
223
+ showHierarchy: C,
224
+ getEntityById: y,
222
225
  toggleExpandAll: _,
223
226
  toggleExpands: g,
224
227
  expanded: R,
225
228
  contextMenuItems: B = [],
226
229
  powerpack: W,
227
230
  onOpenPlayer: T
228
- } = O(), { copyToClipboard: k, exportCSV: j, pasteFromClipboard: K } = X(), { selectedCells: F, clearSelection: L, selectCell: G, focusCell: U } = Z(), { inheritFromParent: q, history: A } = N(), H = J({}), [Y] = z([], W), $ = (m) => m.reduce((t, i) => {
231
+ } = N(), { copyToClipboard: k, exportCSV: j, pasteFromClipboard: K } = Z(), { selectedCells: F, clearSelection: L, selectCell: G, focusCell: U } = O(), { inheritFromParent: q, history: S } = tt(), H = Q({}), [Y] = J([], W), $ = (m) => m.reduce((t, i) => {
229
232
  var u;
230
- const { rowId: o, colId: r } = f(i) || {};
233
+ const { rowId: o, colId: r } = h(i) || {};
231
234
  if (!o || !r || !r.startsWith("attrib_")) return t;
232
- const e = C(o);
235
+ const e = y(o);
233
236
  if (!e) return t;
234
- const s = e.entityId || e.id, p = r.replace("attrib_", ""), a = w.find((c) => c.name === p), I = a == null ? void 0 : a.data.inherit;
235
- if ((u = e.ownAttrib) != null && u.includes(p) && I) {
236
- const c = t.findIndex((y) => y.entityId === s);
237
- c >= 0 ? t[c].attribs.includes(p) || t[c].attribs.push(p) : t.push({
237
+ const s = e.entityId || e.id, l = r.replace("attrib_", ""), a = w.find((d) => d.name === l), I = a == null ? void 0 : a.data.inherit;
238
+ if ((u = e.ownAttrib) != null && u.includes(l) && I) {
239
+ const d = t.findIndex((f) => f.entityId === s);
240
+ d >= 0 ? t[d].attribs.includes(l) || t[d].attribs.push(l) : t.push({
238
241
  rowId: s,
239
242
  entityId: s,
240
243
  entityType: "folderId" in e ? "task" : "folder",
241
- attribs: [p],
244
+ attribs: [l],
242
245
  ownAttrib: e.ownAttrib || [],
243
246
  // @ts-ignore
244
247
  folderId: e.parentId ?? e.folderId
@@ -262,8 +265,8 @@ const ai = ({ attribs: w, headerLabels: D = [], onOpenNew: l }) => {
262
265
  command: () => k(o.selectedFullRows, !0),
263
266
  hidden: t.columnId !== "name" || !o.selectedFullRows.some(
264
267
  (e) => {
265
- var s, p;
266
- return ((s = f(e)) == null ? void 0 : s.rowId) === ((p = f(t.cellId)) == null ? void 0 : p.rowId);
268
+ var s, l;
269
+ return ((s = h(e)) == null ? void 0 : s.rowId) === ((l = h(t.cellId)) == null ? void 0 : l.rowId);
267
270
  }
268
271
  )
269
272
  },
@@ -282,7 +285,7 @@ const ai = ({ attribs: w, headerLabels: D = [], onOpenNew: l }) => {
282
285
  icon: "dock_to_left",
283
286
  shortcut: "Double click",
284
287
  command: () => {
285
- const r = Q(t.entityId, x);
288
+ const r = X(t.entityId, x);
286
289
  G(r, !1, !1);
287
290
  },
288
291
  hidden: t.columnId !== "name" || o.selectedRows.length > 1 || t.isGroup
@@ -323,7 +326,7 @@ const ai = ({ attribs: w, headerLabels: D = [], onOpenNew: l }) => {
323
326
  hidden: t.columnId !== "name" || t.isGroup
324
327
  }),
325
328
  inherit: (m, t, i, o) => {
326
- const r = $(o.selectedCells), e = r.length > 0 && h && !(o.selectedRows.length > 1 && o.selectedColumns.length > 1);
329
+ const r = $(o.selectedCells), e = r.length > 0 && C && !(o.selectedRows.length > 1 && o.selectedColumns.length > 1);
327
330
  return {
328
331
  label: "Inherit from parent",
329
332
  icon: "disabled_by_default",
@@ -341,23 +344,23 @@ const ai = ({ attribs: w, headerLabels: D = [], onOpenNew: l }) => {
341
344
  {
342
345
  label: "Create folder",
343
346
  icon: "create_new_folder",
344
- command: () => l == null ? void 0 : l("folder"),
345
- hidden: t.columnId !== "name" || !h || !l
347
+ command: () => n == null ? void 0 : n("folder"),
348
+ hidden: t.columnId !== "name" || !C || !n
346
349
  },
347
350
  {
348
351
  label: "Create root folder",
349
352
  icon: "create_new_folder",
350
353
  command: () => {
351
- L(), l == null || l("folder");
354
+ L(), n == null || n("folder");
352
355
  },
353
- hidden: t.columnId !== "name" || !h || !l
356
+ hidden: t.columnId !== "name" || !C || !n
354
357
  }
355
358
  ],
356
359
  "create-task": (m, t) => ({
357
360
  label: "Create task",
358
361
  icon: "add_task",
359
- command: () => l == null ? void 0 : l("task"),
360
- hidden: t.columnId !== "name" || !h || !l
362
+ command: () => n == null ? void 0 : n("task"),
363
+ hidden: t.columnId !== "name" || !C || !n
361
364
  }),
362
365
  "open-viewer": (m, t, i, o) => ({
363
366
  label: "Open in viewer",
@@ -365,19 +368,19 @@ const ai = ({ attribs: w, headerLabels: D = [], onOpenNew: l }) => {
365
368
  shortcut: "Spacebar",
366
369
  command: () => {
367
370
  if (T) {
368
- const r = C(t.entityId);
371
+ const r = y(t.entityId);
369
372
  if (r) {
370
- const e = tt(r);
373
+ const e = ot(r);
371
374
  T(e, { quickView: !0 });
372
375
  }
373
376
  }
374
377
  },
375
378
  hidden: t.columnId !== "thumbnail" && t.columnId !== "name" || t.isGroup
376
379
  })
377
- }, S = (m) => {
378
- const { rowId: t, colId: i } = f(m) || {};
380
+ }, A = (m) => {
381
+ const { rowId: t, colId: i } = h(m) || {};
379
382
  if (!t || !i) return;
380
- const o = C(t), r = w.find((p) => p.name === (i == null ? void 0 : i.replace("attrib_", ""))), e = D.find((p) => p.id === i), s = o ? "parentId" in o ? o.parentId : "folderId" in o ? o.folderId : void 0 : void 0;
383
+ const o = y(t), r = w.find((l) => l.name === (i == null ? void 0 : i.replace("attrib_", ""))), e = D.find((l) => l.id === i), s = o ? "parentId" in o ? o.parentId : "folderId" in o ? o.folderId : void 0 : void 0;
381
384
  return {
382
385
  cellId: m,
383
386
  columnId: i,
@@ -396,59 +399,61 @@ const ai = ({ attribs: w, headerLabels: D = [], onOpenNew: l }) => {
396
399
  var M;
397
400
  const i = m.target.closest("td"), o = (M = i == null ? void 0 : i.firstElementChild) == null ? void 0 : M.id;
398
401
  if (!o) return;
399
- const r = S(o);
402
+ const r = A(o);
400
403
  if (!r) return;
401
404
  let e = Array.from(F);
402
405
  (!e.includes(o) || !e.length) && (e = [o], G(o, !1, !1), U(o));
403
406
  const s = e.filter(
404
- (n) => {
405
- var d;
406
- return ((d = f(n)) == null ? void 0 : d.colId) !== x;
407
+ (p) => {
408
+ var c;
409
+ return ((c = h(p)) == null ? void 0 : c.colId) !== x;
407
410
  }
408
- ), p = e.flatMap((n) => S(n) || []), a = [], I = [], u = [], c = [];
409
- for (const { entityId: n, columnId: d } of p)
410
- n && !a.includes(n) && a.push(n), d && !I.includes(d) && I.push(d), d === x && !u.includes(n) && u.push(n), n.startsWith(v) && c.push(n);
411
- const y = B.flatMap(
412
- (n) => {
413
- var d;
414
- return typeof n == "function" ? n(
411
+ ), l = e.flatMap((p) => A(p) || []), a = [
412
+ ...new Map(l.map((p) => [p.entityId, p])).values()
413
+ ], I = [], u = [], d = [], f = [];
414
+ for (const { entityId: p, columnId: c } of a)
415
+ p && !I.includes(p) && I.push(p), c && !u.includes(c) && u.push(c), c === x && !d.includes(p) && d.push(p), p.startsWith(v) && f.push(p);
416
+ const z = B.flatMap(
417
+ (p) => {
418
+ var c;
419
+ return typeof p == "function" ? p(
415
420
  m,
416
421
  r,
417
- p,
422
+ a,
418
423
  {
419
424
  selectedCells: s,
420
425
  // selected cells without row selection
421
- selectedRows: a,
422
- selectedColumns: I,
423
- selectedFullRows: u,
424
- selectedGroups: c
426
+ selectedRows: I,
427
+ selectedColumns: u,
428
+ selectedFullRows: d,
429
+ selectedGroups: f
425
430
  // groups if any
426
431
  },
427
432
  {
428
- history: A
433
+ history: S
429
434
  }
430
- ) : (d = b[n]) == null ? void 0 : d.call(
435
+ ) : (c = b[p]) == null ? void 0 : c.call(
431
436
  b,
432
437
  m,
433
438
  r,
434
- p,
439
+ a,
435
440
  {
436
441
  selectedCells: s,
437
442
  // selected cells without row selection
438
- selectedRows: a,
439
- selectedColumns: I,
440
- selectedFullRows: u,
441
- selectedGroups: c
443
+ selectedRows: I,
444
+ selectedColumns: u,
445
+ selectedFullRows: d,
446
+ selectedGroups: f
442
447
  // groups if any
443
448
  },
444
- { history: A }
449
+ { history: S }
445
450
  );
446
451
  }
447
452
  );
448
- Y(m, y);
453
+ Y(m, z);
449
454
  } };
450
455
  };
451
456
  export {
452
- ai as default
457
+ hi as default
453
458
  };
454
459
  //# sourceMappingURL=useCellContextMenu.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCellContextMenu.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCellContextMenu.ts"],"sourcesContent":["import { ContextMenuItemType, useCreateContextMenu } from '../../ContextMenu/useCreateContextMenu'\nimport useDeleteEntities from './useDeleteEntities'\nimport { getPlatformShortcutKey, KeyMode } from '../../../util/platform'\nimport { getCellId, parseCellId } from '../utils/cellUtils'\nimport { useClipboard } from '../context/ClipboardContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectTableContext } from '../context/ProjectTableContext'\nimport { useCellEditing } from '../context/CellEditingContext'\nimport { InheritFromParentEntity } from './useUpdateTableData'\nimport { ProjectTableAttribute, TableRow } from '../types'\nimport { UseHistoryReturn } from './useHistory'\nimport { GROUP_BY_ID } from './useBuildGroupByTableData'\nimport { ColumnDef } from '@tanstack/react-table'\nimport { getEntityViewierIds } from '../utils'\n\ntype ContextEvent = React.MouseEvent<HTMLTableSectionElement, MouseEvent>\n\nexport type HeaderLabel = { id: string; label: string }\n\nexport type TableCellContextData = {\n cellId: string\n columnId: string\n entityId: string\n entityType: 'folder' | 'task' | 'product' | 'version' | undefined\n parentId?: string\n attribField: ProjectTableAttribute | undefined // the attribute field if any (fps, custom attribs, etc.)\n column: {\n id: string\n label: string\n }\n isGroup: boolean // if the cell is a group header\n}\ntype DefaultMenuItem =\n | 'copy-paste'\n | 'show-details'\n | 'expand-collapse'\n | 'inherit'\n | 'delete'\n | 'export'\n | 'create-folder'\n | 'create-task'\n | 'open-viewer'\nexport type ContextMenuItemConstructor = (\n e: ContextEvent,\n cell: TableCellContextData,\n selectedCells: TableCellContextData[],\n meta: {\n selectedCells: string[] // minus row selection cells\n selectedRows: string[]\n selectedColumns: string[]\n selectedFullRows: string[] // if the full row is selected\n selectedGroups: string[] // groups if any\n },\n context: {\n history: UseHistoryReturn\n },\n) => ContextMenuItemType | ContextMenuItemType[] | undefined\nexport type ContextMenuItemConstructors = (DefaultMenuItem | ContextMenuItemConstructor)[]\n\ntype CellContextMenuProps = {\n attribs: ProjectTableAttribute[]\n columns?: ColumnDef<TableRow>[]\n headerLabels: HeaderLabel[]\n onOpenNew?: (type: 'folder' | 'task') => void\n}\n\nconst useCellContextMenu = ({ attribs, headerLabels = [], onOpenNew }: CellContextMenuProps) => {\n // context hooks\n const {\n projectName,\n showHierarchy,\n getEntityById,\n toggleExpandAll,\n toggleExpands,\n expanded,\n contextMenuItems = [],\n powerpack,\n onOpenPlayer,\n } = useProjectTableContext()\n const { copyToClipboard, exportCSV, pasteFromClipboard } = useClipboard()\n const { selectedCells, clearSelection, selectCell, focusCell } = useSelectionCellsContext()\n const { inheritFromParent, history } = useCellEditing()\n\n // update entity context\n\n // data mutations\n const deleteEntities = useDeleteEntities({})\n\n const [cellContextMenuShow] = useCreateContextMenu([], powerpack)\n\n // Helper function to identify attributes that can be inherited\n const getEntitiesToInherit = (selected: string[]): InheritFromParentEntity[] => {\n return selected.reduce((acc, cellId) => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId || !colId.startsWith('attrib_')) return acc\n\n const entity = getEntityById(rowId)\n if (!entity) return acc\n const entityId = entity.entityId || entity.id\n\n const attribName = colId.replace('attrib_', '')\n // get attrib model\n const attribModel = attribs.find((attrib) => attrib.name === attribName)\n // is the attrib inheritable?\n const isInheritable = attribModel?.data.inherit\n\n // Check if this attribute is owned by the entity (not inherited)\n if (entity.ownAttrib?.includes(attribName) && isInheritable) {\n // Find existing entry or create new one\n const existingIndex = acc.findIndex((item) => item.entityId === entityId)\n\n if (existingIndex >= 0) {\n // Add to existing entity's attribs if not already there\n if (!acc[existingIndex].attribs.includes(attribName)) {\n acc[existingIndex].attribs.push(attribName)\n }\n } else {\n // Create new entity entry\n acc.push({\n rowId: entityId,\n entityId: entityId,\n entityType: 'folderId' in entity ? 'task' : 'folder',\n attribs: [attribName],\n ownAttrib: entity.ownAttrib || [],\n // @ts-ignore\n folderId: entity.parentId ?? entity.folderId,\n })\n }\n }\n\n return acc\n }, [] as InheritFromParentEntity[])\n }\n\n const copyAndPasteItems: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n return [\n {\n label: 'Copy',\n icon: 'content_copy',\n shortcut: getPlatformShortcutKey('c', [KeyMode.Ctrl]),\n command: () => copyToClipboard(meta.selectedCells),\n hidden: cell.isGroup || cell.columnId === 'thumbnail',\n },\n {\n label: `Copy row${meta.selectedFullRows.length > 1 ? 's' : ''}`,\n icon: 'content_copy',\n command: () => copyToClipboard(meta.selectedFullRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !meta.selectedFullRows.some(\n (cellId) => parseCellId(cellId)?.rowId === parseCellId(cell.cellId)?.rowId,\n ),\n },\n {\n label: 'Paste',\n icon: 'content_paste',\n shortcut: getPlatformShortcutKey('v', [KeyMode.Ctrl]),\n command: () => pasteFromClipboard(meta.selectedCells),\n hidden: cell.columnId === 'name' || cell.columnId === 'thumbnail' || cell.isGroup,\n disabled: cell.attribField?.readOnly,\n },\n ]\n }\n\n const showDetailsItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Show details',\n icon: 'dock_to_left',\n shortcut: 'Double click',\n command: () => {\n const rowSelectionCellId = getCellId(cell.entityId, ROW_SELECTION_COLUMN_ID)\n // select the row to open the details\n selectCell(rowSelectionCellId, false, false)\n },\n hidden: cell.columnId !== 'name' || meta.selectedRows.length > 1 || cell.isGroup,\n })\n\n const openViewerItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Open in viewer',\n icon: 'play_circle',\n shortcut: 'Spacebar',\n command: () => {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.entityId)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n },\n hidden: (cell.columnId !== 'thumbnail' && cell.columnId !== 'name') || cell.isGroup,\n })\n\n const expandCollapseChildrenItems: ContextMenuItemConstructor = (e, cell, selected, meta) => [\n {\n label: 'Expand children',\n icon: 'expand_all',\n shortcut: 'Alt + click',\n command: () => toggleExpandAll(meta.selectedRows, true),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Collapse children',\n icon: 'collapse_all',\n shortcut: 'Alt + click',\n command: () => toggleExpandAll(meta.selectedRows, false),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Expand',\n icon: 'expand_all',\n command: () => toggleExpands(meta.selectedRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n expanded[cell.entityId as keyof typeof expanded],\n },\n {\n label: 'Collapse',\n icon: 'collapse_all',\n command: () => toggleExpands(meta.selectedRows, false),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n !expanded[cell.entityId as keyof typeof expanded],\n },\n ]\n\n const deleteItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Delete',\n icon: 'delete',\n danger: true,\n command: () => deleteEntities(meta.selectedRows),\n hidden: cell.columnId !== 'name' || cell.isGroup,\n })\n\n const inheritItem: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n const entitiesToInherit = getEntitiesToInherit(meta.selectedCells)\n const canInheritFromParent =\n entitiesToInherit.length > 0 &&\n showHierarchy &&\n !(meta.selectedRows.length > 1 && meta.selectedColumns.length > 1)\n\n return {\n label: 'Inherit from parent',\n icon: 'disabled_by_default',\n command: () => inheritFromParent(entitiesToInherit),\n hidden: !canInheritFromParent,\n }\n }\n\n const exportItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Export selection',\n icon: 'download',\n command: () => exportCSV(Array.from(selectedCells), projectName),\n hidden: cell.isGroup,\n })\n\n const createFolderItems: ContextMenuItemConstructor = (e, cell) => [\n {\n label: 'Create folder',\n icon: 'create_new_folder',\n command: () => onOpenNew?.('folder'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n {\n label: 'Create root folder',\n icon: 'create_new_folder',\n command: () => {\n clearSelection()\n onOpenNew?.('folder')\n },\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n ]\n\n const createTaskItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Create task',\n icon: 'add_task',\n command: () => onOpenNew?.('task'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n })\n\n const builtInMenuItems: Record<DefaultMenuItem, ContextMenuItemConstructor> = {\n ['copy-paste']: copyAndPasteItems,\n ['show-details']: showDetailsItem,\n ['expand-collapse']: expandCollapseChildrenItems,\n ['delete']: deleteItem,\n ['inherit']: inheritItem,\n ['export']: exportItem,\n ['create-folder']: createFolderItems,\n ['create-task']: createTaskItem,\n ['open-viewer']: openViewerItem,\n }\n\n const getCellData = (cellId: string): TableCellContextData | undefined => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId) return undefined\n const cellEntityData = getEntityById(rowId)\n const attribField = attribs.find((attrib) => attrib.name === colId?.replace('attrib_', ''))\n const column = headerLabels.find((header) => header.id === colId)\n const parentId = cellEntityData\n ? 'parentId' in cellEntityData\n ? cellEntityData.parentId\n : 'folderId' in cellEntityData\n ? cellEntityData.folderId\n : undefined\n : undefined\n return {\n cellId: cellId,\n columnId: colId,\n entityId: cellEntityData?.entityId || cellEntityData?.id || rowId,\n entityType: cellEntityData?.entityType,\n parentId: parentId,\n attribField: attribField,\n isGroup: rowId.startsWith(GROUP_BY_ID),\n column: {\n id: colId,\n label: column?.label || '',\n },\n }\n }\n\n const handleTableBodyContextMenu = (e: ContextEvent) => {\n const target = e.target as HTMLElement\n const tdEl = target.closest('td')\n // get id of first child of td\n const cellId = tdEl?.firstElementChild?.id\n\n if (!cellId) return\n\n const cellData = getCellData(cellId)\n\n if (!cellData) return\n\n let currentSelectedCells = Array.from(selectedCells)\n // if selecting a cell outside of the current selection\n if (!currentSelectedCells.includes(cellId) || !currentSelectedCells.length) {\n currentSelectedCells = [cellId]\n // update selection\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n // selected cells without row selection cells\n const selectedRealCells = currentSelectedCells.filter(\n (id) => parseCellId(id)?.colId !== ROW_SELECTION_COLUMN_ID,\n )\n\n const selectedCellsData = currentSelectedCells.flatMap((cellId) => getCellData(cellId) || [])\n const selectedCellRows: string[] = []\n const selectedCellColumns: string[] = []\n const selectedCellFullRows: string[] = []\n const selectedCellsGroups: string[] = [] // find cells that are group headers\n for (const { entityId, columnId } of selectedCellsData) {\n if (entityId && !selectedCellRows.includes(entityId)) selectedCellRows.push(entityId)\n if (columnId && !selectedCellColumns.includes(columnId)) selectedCellColumns.push(columnId)\n if (columnId === ROW_SELECTION_COLUMN_ID && !selectedCellFullRows.includes(entityId))\n selectedCellFullRows.push(entityId)\n if (entityId.startsWith(GROUP_BY_ID)) selectedCellsGroups.push(entityId)\n }\n\n const constructedMenuItems = contextMenuItems.flatMap((constructor) =>\n typeof constructor === 'function'\n ? constructor(\n e,\n cellData,\n selectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n {\n history,\n },\n )\n : builtInMenuItems[constructor]?.(\n e,\n cellData,\n selectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n { history },\n ),\n )\n\n cellContextMenuShow(e, constructedMenuItems)\n }\n\n return { handleTableBodyContextMenu }\n}\n\nexport default useCellContextMenu\n"],"names":["useCellContextMenu","attribs","headerLabels","onOpenNew","projectName","showHierarchy","getEntityById","toggleExpandAll","toggleExpands","expanded","contextMenuItems","powerpack","onOpenPlayer","useProjectTableContext","copyToClipboard","exportCSV","pasteFromClipboard","useClipboard","selectedCells","clearSelection","selectCell","focusCell","useSelectionCellsContext","inheritFromParent","history","useCellEditing","deleteEntities","useDeleteEntities","cellContextMenuShow","useCreateContextMenu","getEntitiesToInherit","selected","acc","cellId","rowId","colId","parseCellId","entity","entityId","attribName","attribModel","attrib","isInheritable","_a","existingIndex","item","builtInMenuItems","e","cell","meta","getPlatformShortcutKey","KeyMode","_b","rowSelectionCellId","getCellId","ROW_SELECTION_COLUMN_ID","entitiesToInherit","canInheritFromParent","targetIds","getEntityViewierIds","getCellData","cellEntityData","attribField","column","header","parentId","GROUP_BY_ID","tdEl","cellData","currentSelectedCells","selectedRealCells","id","selectedCellsData","selectedCellRows","selectedCellColumns","selectedCellFullRows","selectedCellsGroups","columnId","constructedMenuItems","constructor"],"mappings":"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"}
1
+ {"version":3,"file":"useCellContextMenu.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCellContextMenu.ts"],"sourcesContent":["import { ContextMenuItemType, useCreateContextMenu } from '../../ContextMenu/useCreateContextMenu'\nimport useDeleteEntities from './useDeleteEntities'\nimport { getPlatformShortcutKey, KeyMode } from '../../../util/platform'\nimport { getCellId, parseCellId } from '../utils/cellUtils'\nimport { useClipboard } from '../context/ClipboardContext'\nimport { ROW_SELECTION_COLUMN_ID, useSelectionCellsContext } from '../context/SelectionCellsContext'\nimport { useProjectTableContext } from '../context/ProjectTableContext'\nimport { useCellEditing } from '../context/CellEditingContext'\nimport { InheritFromParentEntity } from './useUpdateTableData'\nimport { ProjectTableAttribute, TableRow } from '../types'\nimport { UseHistoryReturn } from './useHistory'\nimport { GROUP_BY_ID } from './useBuildGroupByTableData'\nimport { ColumnDef } from '@tanstack/react-table'\nimport { getEntityViewierIds } from '../utils'\n\ntype ContextEvent = React.MouseEvent<HTMLTableSectionElement, MouseEvent>\n\nexport type HeaderLabel = { id: string; label: string }\n\nexport type TableCellContextData = {\n cellId: string\n columnId: string\n entityId: string\n entityType: 'folder' | 'task' | 'product' | 'version' | undefined\n parentId?: string\n attribField: ProjectTableAttribute | undefined // the attribute field if any (fps, custom attribs, etc.)\n column: {\n id: string\n label: string\n }\n isGroup: boolean // if the cell is a group header\n}\ntype DefaultMenuItem =\n | 'copy-paste'\n | 'show-details'\n | 'expand-collapse'\n | 'inherit'\n | 'delete'\n | 'export'\n | 'create-folder'\n | 'create-task'\n | 'open-viewer'\nexport type ContextMenuItemConstructor = (\n e: ContextEvent,\n cell: TableCellContextData,\n selectedCells: TableCellContextData[],\n meta: {\n selectedCells: string[] // minus row selection cells\n selectedRows: string[]\n selectedColumns: string[]\n selectedFullRows: string[] // if the full row is selected\n selectedGroups: string[] // groups if any\n },\n context: {\n history: UseHistoryReturn\n },\n) => ContextMenuItemType | ContextMenuItemType[] | undefined\nexport type ContextMenuItemConstructors = (DefaultMenuItem | ContextMenuItemConstructor)[]\n\ntype CellContextMenuProps = {\n attribs: ProjectTableAttribute[]\n columns?: ColumnDef<TableRow>[]\n headerLabels: HeaderLabel[]\n onOpenNew?: (type: 'folder' | 'task') => void\n}\n\nconst useCellContextMenu = ({ attribs, headerLabels = [], onOpenNew }: CellContextMenuProps) => {\n // context hooks\n const {\n projectName,\n showHierarchy,\n getEntityById,\n toggleExpandAll,\n toggleExpands,\n expanded,\n contextMenuItems = [],\n powerpack,\n onOpenPlayer,\n } = useProjectTableContext()\n const { copyToClipboard, exportCSV, pasteFromClipboard } = useClipboard()\n const { selectedCells, clearSelection, selectCell, focusCell } = useSelectionCellsContext()\n const { inheritFromParent, history } = useCellEditing()\n\n // update entity context\n\n // data mutations\n const deleteEntities = useDeleteEntities({})\n\n const [cellContextMenuShow] = useCreateContextMenu([], powerpack)\n\n // Helper function to identify attributes that can be inherited\n const getEntitiesToInherit = (selected: string[]): InheritFromParentEntity[] => {\n return selected.reduce((acc, cellId) => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId || !colId.startsWith('attrib_')) return acc\n\n const entity = getEntityById(rowId)\n if (!entity) return acc\n const entityId = entity.entityId || entity.id\n\n const attribName = colId.replace('attrib_', '')\n // get attrib model\n const attribModel = attribs.find((attrib) => attrib.name === attribName)\n // is the attrib inheritable?\n const isInheritable = attribModel?.data.inherit\n\n // Check if this attribute is owned by the entity (not inherited)\n if (entity.ownAttrib?.includes(attribName) && isInheritable) {\n // Find existing entry or create new one\n const existingIndex = acc.findIndex((item) => item.entityId === entityId)\n\n if (existingIndex >= 0) {\n // Add to existing entity's attribs if not already there\n if (!acc[existingIndex].attribs.includes(attribName)) {\n acc[existingIndex].attribs.push(attribName)\n }\n } else {\n // Create new entity entry\n acc.push({\n rowId: entityId,\n entityId: entityId,\n entityType: 'folderId' in entity ? 'task' : 'folder',\n attribs: [attribName],\n ownAttrib: entity.ownAttrib || [],\n // @ts-ignore\n folderId: entity.parentId ?? entity.folderId,\n })\n }\n }\n\n return acc\n }, [] as InheritFromParentEntity[])\n }\n\n const copyAndPasteItems: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n return [\n {\n label: 'Copy',\n icon: 'content_copy',\n shortcut: getPlatformShortcutKey('c', [KeyMode.Ctrl]),\n command: () => copyToClipboard(meta.selectedCells),\n hidden: cell.isGroup || cell.columnId === 'thumbnail',\n },\n {\n label: `Copy row${meta.selectedFullRows.length > 1 ? 's' : ''}`,\n icon: 'content_copy',\n command: () => copyToClipboard(meta.selectedFullRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !meta.selectedFullRows.some(\n (cellId) => parseCellId(cellId)?.rowId === parseCellId(cell.cellId)?.rowId,\n ),\n },\n {\n label: 'Paste',\n icon: 'content_paste',\n shortcut: getPlatformShortcutKey('v', [KeyMode.Ctrl]),\n command: () => pasteFromClipboard(meta.selectedCells),\n hidden: cell.columnId === 'name' || cell.columnId === 'thumbnail' || cell.isGroup,\n disabled: cell.attribField?.readOnly,\n },\n ]\n }\n\n const showDetailsItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Show details',\n icon: 'dock_to_left',\n shortcut: 'Double click',\n command: () => {\n const rowSelectionCellId = getCellId(cell.entityId, ROW_SELECTION_COLUMN_ID)\n // select the row to open the details\n selectCell(rowSelectionCellId, false, false)\n },\n hidden: cell.columnId !== 'name' || meta.selectedRows.length > 1 || cell.isGroup,\n })\n\n const openViewerItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Open in viewer',\n icon: 'play_circle',\n shortcut: 'Spacebar',\n command: () => {\n if (onOpenPlayer) {\n const entity = getEntityById(cell.entityId)\n if (entity) {\n const targetIds = getEntityViewierIds(entity)\n onOpenPlayer(targetIds, { quickView: true })\n }\n }\n },\n hidden: (cell.columnId !== 'thumbnail' && cell.columnId !== 'name') || cell.isGroup,\n })\n\n const expandCollapseChildrenItems: ContextMenuItemConstructor = (e, cell, selected, meta) => [\n {\n label: 'Expand children',\n icon: 'expand_all',\n shortcut: 'Alt + click',\n command: () => toggleExpandAll(meta.selectedRows, true),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Collapse children',\n icon: 'collapse_all',\n shortcut: 'Alt + click',\n command: () => toggleExpandAll(meta.selectedRows, false),\n hidden: cell.columnId !== 'name' || cell.entityType !== 'folder',\n },\n {\n label: 'Expand',\n icon: 'expand_all',\n command: () => toggleExpands(meta.selectedRows, true),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n expanded[cell.entityId as keyof typeof expanded],\n },\n {\n label: 'Collapse',\n icon: 'collapse_all',\n command: () => toggleExpands(meta.selectedRows, false),\n hidden:\n cell.columnId !== 'name' ||\n !cell.isGroup ||\n !expanded[cell.entityId as keyof typeof expanded],\n },\n ]\n\n const deleteItem: ContextMenuItemConstructor = (e, cell, selected, meta) => ({\n label: 'Delete',\n icon: 'delete',\n danger: true,\n command: () => deleteEntities(meta.selectedRows),\n hidden: cell.columnId !== 'name' || cell.isGroup,\n })\n\n const inheritItem: ContextMenuItemConstructor = (e, cell, selected, meta) => {\n const entitiesToInherit = getEntitiesToInherit(meta.selectedCells)\n const canInheritFromParent =\n entitiesToInherit.length > 0 &&\n showHierarchy &&\n !(meta.selectedRows.length > 1 && meta.selectedColumns.length > 1)\n\n return {\n label: 'Inherit from parent',\n icon: 'disabled_by_default',\n command: () => inheritFromParent(entitiesToInherit),\n hidden: !canInheritFromParent,\n }\n }\n\n const exportItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Export selection',\n icon: 'download',\n command: () => exportCSV(Array.from(selectedCells), projectName),\n hidden: cell.isGroup,\n })\n\n const createFolderItems: ContextMenuItemConstructor = (e, cell) => [\n {\n label: 'Create folder',\n icon: 'create_new_folder',\n command: () => onOpenNew?.('folder'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n {\n label: 'Create root folder',\n icon: 'create_new_folder',\n command: () => {\n clearSelection()\n onOpenNew?.('folder')\n },\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n },\n ]\n\n const createTaskItem: ContextMenuItemConstructor = (e, cell) => ({\n label: 'Create task',\n icon: 'add_task',\n command: () => onOpenNew?.('task'),\n hidden: cell.columnId !== 'name' || !showHierarchy || !onOpenNew,\n })\n\n const builtInMenuItems: Record<DefaultMenuItem, ContextMenuItemConstructor> = {\n ['copy-paste']: copyAndPasteItems,\n ['show-details']: showDetailsItem,\n ['expand-collapse']: expandCollapseChildrenItems,\n ['delete']: deleteItem,\n ['inherit']: inheritItem,\n ['export']: exportItem,\n ['create-folder']: createFolderItems,\n ['create-task']: createTaskItem,\n ['open-viewer']: openViewerItem,\n }\n\n const getCellData = (cellId: string): TableCellContextData | undefined => {\n const { rowId, colId } = parseCellId(cellId) || {}\n if (!rowId || !colId) return undefined\n const cellEntityData = getEntityById(rowId)\n const attribField = attribs.find((attrib) => attrib.name === colId?.replace('attrib_', ''))\n const column = headerLabels.find((header) => header.id === colId)\n const parentId = cellEntityData\n ? 'parentId' in cellEntityData\n ? cellEntityData.parentId\n : 'folderId' in cellEntityData\n ? cellEntityData.folderId\n : undefined\n : undefined\n return {\n cellId: cellId,\n columnId: colId,\n entityId: cellEntityData?.entityId || cellEntityData?.id || rowId,\n entityType: cellEntityData?.entityType,\n parentId: parentId,\n attribField: attribField,\n isGroup: rowId.startsWith(GROUP_BY_ID),\n column: {\n id: colId,\n label: column?.label || '',\n },\n }\n }\n\n const handleTableBodyContextMenu = (e: ContextEvent) => {\n const target = e.target as HTMLElement\n const tdEl = target.closest('td')\n // get id of first child of td\n const cellId = tdEl?.firstElementChild?.id\n\n if (!cellId) return\n\n const cellData = getCellData(cellId)\n\n if (!cellData) return\n\n let currentSelectedCells = Array.from(selectedCells)\n // if selecting a cell outside of the current selection\n if (!currentSelectedCells.includes(cellId) || !currentSelectedCells.length) {\n currentSelectedCells = [cellId]\n // update selection\n selectCell(cellId, false, false)\n focusCell(cellId)\n }\n // selected cells without row selection cells\n const selectedRealCells = currentSelectedCells.filter(\n (id) => parseCellId(id)?.colId !== ROW_SELECTION_COLUMN_ID,\n )\n\n const selectedCellsData = currentSelectedCells.flatMap((cellId) => getCellData(cellId) || [])\n\n // Remove duplicates based on entityId - prioritize full row selection over individual cells\n const filteredSelectedCellsData = [\n ...new Map(selectedCellsData.map(e => [e.entityId, e])).values()\n ];\n\n\n const selectedCellRows: string[] = []\n const selectedCellColumns: string[] = []\n const selectedCellFullRows: string[] = []\n const selectedCellsGroups: string[] = [] // find cells that are group headers\n for (const { entityId, columnId } of filteredSelectedCellsData) {\n if (entityId && !selectedCellRows.includes(entityId)) selectedCellRows.push(entityId)\n if (columnId && !selectedCellColumns.includes(columnId)) selectedCellColumns.push(columnId)\n if (columnId === ROW_SELECTION_COLUMN_ID && !selectedCellFullRows.includes(entityId))\n selectedCellFullRows.push(entityId)\n if (entityId.startsWith(GROUP_BY_ID)) selectedCellsGroups.push(entityId)\n }\n\n const constructedMenuItems = contextMenuItems.flatMap((constructor) =>\n typeof constructor === 'function'\n ? constructor(\n e,\n cellData,\n filteredSelectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n {\n history,\n },\n )\n : builtInMenuItems[constructor]?.(\n e,\n cellData,\n filteredSelectedCellsData,\n {\n selectedCells: selectedRealCells, // selected cells without row selection\n selectedRows: selectedCellRows,\n selectedColumns: selectedCellColumns,\n selectedFullRows: selectedCellFullRows,\n selectedGroups: selectedCellsGroups, // groups if any\n },\n { history },\n ),\n )\n\n cellContextMenuShow(e, constructedMenuItems)\n }\n\n return { handleTableBodyContextMenu }\n}\n\nexport default useCellContextMenu\n"],"names":["useCellContextMenu","attribs","headerLabels","onOpenNew","projectName","showHierarchy","getEntityById","toggleExpandAll","toggleExpands","expanded","contextMenuItems","powerpack","onOpenPlayer","useProjectTableContext","copyToClipboard","exportCSV","pasteFromClipboard","useClipboard","selectedCells","clearSelection","selectCell","focusCell","useSelectionCellsContext","inheritFromParent","history","useCellEditing","deleteEntities","useDeleteEntities","cellContextMenuShow","useCreateContextMenu","getEntitiesToInherit","selected","acc","cellId","rowId","colId","parseCellId","entity","entityId","attribName","attribModel","attrib","isInheritable","_a","existingIndex","item","builtInMenuItems","e","cell","meta","getPlatformShortcutKey","KeyMode","_b","rowSelectionCellId","getCellId","ROW_SELECTION_COLUMN_ID","entitiesToInherit","canInheritFromParent","targetIds","getEntityViewierIds","getCellData","cellEntityData","attribField","column","header","parentId","GROUP_BY_ID","tdEl","cellData","currentSelectedCells","selectedRealCells","id","selectedCellsData","filteredSelectedCellsData","selectedCellRows","selectedCellColumns","selectedCellFullRows","selectedCellsGroups","columnId","constructedMenuItems","constructor"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react");require("@ynput/ayon-react-components");require("lodash");require("react-toastify");require("uuid");require("../../../util/pubsub.cjs.js");const l=require("../utils/cellUtils.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("clsx");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.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/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/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/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/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/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/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/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.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("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.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("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("date-fns");require("../ProjectTreeTable.cjs.js");require("../context/CellEditingContext.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");const f=require("../context/ProjectTableContext.cjs.js");require("../context/ClipboardContext.cjs.js");require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../context/ProjectDataContext.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/LinksManager/LinksManagerDialog.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");const a=({selectedCells:i,setSelectedCells:u,focusedCellId:q,setFocusedCellId:t})=>{const{getEntityById:o}=f.useProjectTableContext();s.useEffect(()=>{var n;const r=new Set;for(const e of i)o(((n=l.parseCellId(e||""))==null?void 0:n.rowId)||"")||r.add(e);if(r.size>0){const e=new Set(i);for(const c of r)e.delete(c);u(e),r.has(q||"")&&t(null)}},[o,i,q,u,t])};exports.useCheckSelectedCellsVisible=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react");require("@ynput/ayon-react-components");require("lodash");require("react-toastify");require("uuid");require("../../../util/pubsub.cjs.js");const l=require("../utils/cellUtils.cjs.js");require("../../../../../_virtual/jsx-runtime.cjs.js");require("@tanstack/react-table");require("../widgets/CollapsedWidget.cjs.js");require("../widgets/DateWidget.cjs.js");require("../widgets/EnumWidget.cjs.js");require("../widgets/TextWidget.cjs.js");require("../widgets/BooleanWidget.cjs.js");require("../widgets/CellWidget.cjs.js");require("../widgets/EntityNameWidget.cjs.js");require("../widgets/GroupHeaderWidget.cjs.js");require("../widgets/ThumbnailWidget.cjs.js");require("clsx");require("../../../components/ThumbnailSimple/ThumbnailSimple.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../../../components/EmptyPlaceholder/EmptyPlaceholderFlex.styled.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/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/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/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/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/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/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/userDashboard/getUserDashboard.cjs.js");require("../../../api/queries/users/getUsers.cjs.js");require("../../../api/queries/users/updateUsers.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("@dnd-kit/core");require("@dnd-kit/sortable");require("../../../components/ReviewablesList/ReviewablesList.styled.cjs.js");require("../../ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../../components/ReviewablesList/ReviewablesUpload.styled.cjs.js");require("axios");require("../../../context/RemoteModulesContext.cjs.js");require("../../../context/DetailsPanelContext.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("../../../components/ReviewableCard/ReviewableCard.cjs.js");require("../../../components/ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../../../components/FileThumbnail/FileThumbnail.cjs.js");require("../../../components/Thumbnail/Thumbnail.styled.cjs.js");require("../../../components/Thumbnail/StackedThumbnails.cjs.js");require("../../Feed/context/FeedContext.cjs.js");require("../../Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../Feed/components/CommentInput/CommentInput.cjs.js");require("../../Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../Feed/components/ActivityDate.cjs.js");require("../../Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../Feed/Feed.styled.cjs.js");require("date-fns");require("../ProjectTreeTable.cjs.js");require("../context/CellEditingContext.cjs.js");require("../context/SelectionCellsContext.cjs.js");require("../context/ProjectTableQueriesContext.cjs.js");const f=require("../context/ProjectTableContext.cjs.js");require("../context/ClipboardContext.cjs.js");require("../context/ColumnSettingsContext.cjs.js");require("../context/SelectedRowsContext.cjs.js");require("../context/DetailsPanelEntityContext.cjs.js");require("../../../../../_virtual/runtime.cjs.js");require("../../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../components/GroupSettingsFallback.cjs.js");require("../context/ProjectDataContext.cjs.js");require("../components/HeaderActionButton.cjs.js");require("../components/RowSelectionHeader.cjs.js");require("../components/SelectionCell.cjs.js");require("../components/ColumnHeaderMenu.cjs.js");require("../../DetailsPanel/DetailsPanel.styled.cjs.js");require("../../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");require("../../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../../../components/PlayableIcon/PlayableIcon.cjs.js");require("../../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../Actions/Actions.styled.cjs.js");require("../../Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../Actions/ActionIcon.cjs.js");require("../../Views/context/ViewsContext.cjs.js");require("../../Views/Views.styled.cjs.js");require("../../Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../Views/ViewsMenu/ViewsMenu.cjs.js");require("../../../components/EntityPanelUploader/EntityPanelUploader.styled.cjs.js");require("../../../components/SimpleFormDialog/SimpleFormDialog.cjs.js");require("../../../components/EntityPath/EntityPath.styled.cjs.js");require("../../../components/EntityPath/SegmentProvider.cjs.js");require("../../../components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../../../components/Watchers/Watchers.cjs.js");require("../../../components/ProjectTableSettings/ProjectTableSettings.cjs.js");require("../../../components/Powerpack/PowerpackButton.cjs.js");require("../../../components/Powerpack/PricingLink.cjs.js");require("../../../components/Powerpack/PowerpackDialog.styled.cjs.js");require("../../../components/Powerpack/CTAButton.cjs.js");require("../../../components/Powerpack/RequiredPowerpackVersion.cjs.js");require("../../../components/SettingsPanel/SettingsPanel.cjs.js");require("../../../components/SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../../../components/AttributeEditor/components/MinMaxField.cjs.js");require("../../../components/EnumEditor/EnumEditor.styled.cjs.js");require("../../../components/SearchFilter/filterDates.cjs.js");require("../../../components/Badge/Badge.cjs.js");require("../../../components/VersionUploader/components/UploadVersionDialog.cjs.js");require("../../../components/VersionUploader/context/VersionUploadContext.cjs.js");require("../../../components/Feedback/FeedbackContext.cjs.js");require("../../../components/Feedback/SupportBubble.cjs.js");require("../../../components/Chips/Chips.cjs.js");require("../../../components/LinksManager/LinksManager.styled.cjs.js");require("../../EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../../components/DetailsMetaData/DetailsMetaData.cjs.js");require("../../../components/AccessUser/AccessUser.cjs.js");require("../../../components/LinksManager/LinksManagerDialog.cjs.js");require("../ProjectTreeTable.styled.cjs.js");require("../widgets/LoadMoreWidget.cjs.js");const a=({selectedCells:i,setSelectedCells:u,focusedCellId:q,setFocusedCellId:t})=>{const{getEntityById:o}=f.useProjectTableContext();s.useEffect(()=>{var n;const r=new Set;for(const e of i)o(((n=l.parseCellId(e||""))==null?void 0:n.rowId)||"")||r.add(e);if(r.size>0){const e=new Set(i);for(const c of r)e.delete(c);u(e),r.has(q||"")&&t(null)}},[o,i,q,u,t])};exports.useCheckSelectedCellsVisible=a;
2
2
  //# sourceMappingURL=useCheckSelectedCellsVisible.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCheckSelectedCellsVisible.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.ts"],"sourcesContent":["// This hooks checks the current selection of cells is actually visible in the current viewport of the table\n// If they are not visible, they will be removed from the selection\n// This can happen when the user changes the slicer selection or filters (combined filters changes)\n\nimport { useEffect } from 'react'\nimport { CellId, parseCellId } from '../utils'\nimport { useProjectTableContext } from '../context'\n\ntype CheckSelectedCellsVisibleProps = {\n selectedCells: Set<CellId>\n setSelectedCells: (cells: Set<CellId>) => void\n focusedCellId: CellId | null\n setFocusedCellId: (cellId: CellId | null) => void\n}\n\nexport const useCheckSelectedCellsVisible = ({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n}: CheckSelectedCellsVisibleProps): void => {\n const { getEntityById } = useProjectTableContext()\n\n // checks that all of the selected cells are in the tableData\n // if they are not, they will be removed from the selection\n useEffect(() => {\n const missingCells = new Set<CellId>()\n for (const cellId of selectedCells) {\n // check if the cell rowId is in\n if (!getEntityById(parseCellId(cellId || '')?.rowId || '')) {\n missingCells.add(cellId)\n }\n }\n\n if (missingCells.size > 0) {\n // remove the missing cells from the selection\n const newSelection = new Set<CellId>(selectedCells)\n for (const cellId of missingCells) {\n newSelection.delete(cellId)\n }\n\n setSelectedCells(newSelection)\n\n // if the focused cell is one of the missing cells, clear it\n if (missingCells.has(focusedCellId || '')) {\n setFocusedCellId(null)\n }\n }\n }, [getEntityById, selectedCells, focusedCellId, setSelectedCells, setFocusedCellId])\n}\n"],"names":["useCheckSelectedCellsVisible","selectedCells","setSelectedCells","focusedCellId","setFocusedCellId","getEntityById","useProjectTableContext","useEffect","missingCells","cellId","parseCellId","newSelection"],"mappings":"snXAeO,MAAMA,EAA+B,CAAC,CAC3C,cAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,iBAAAC,CACF,IAA4C,CACpC,KAAA,CAAE,cAAAC,CAAc,EAAIC,yBAAuB,EAIjDC,EAAAA,UAAU,IAAM,OACR,MAAAC,MAAmB,IACzB,UAAWC,KAAUR,EAEdI,IAAcK,EAAAA,cAAYD,GAAU,EAAE,IAAxBC,YAAAA,EAA2B,QAAS,EAAE,GACvDF,EAAa,IAAIC,CAAM,EAIvB,GAAAD,EAAa,KAAO,EAAG,CAEnB,MAAAG,EAAe,IAAI,IAAYV,CAAa,EAClD,UAAWQ,KAAUD,EACnBG,EAAa,OAAOF,CAAM,EAG5BP,EAAiBS,CAAY,EAGzBH,EAAa,IAAIL,GAAiB,EAAE,GACtCC,EAAiB,IAAI,CACvB,CACF,EACC,CAACC,EAAeJ,EAAeE,EAAeD,EAAkBE,CAAgB,CAAC,CACtF"}
1
+ {"version":3,"file":"useCheckSelectedCellsVisible.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.ts"],"sourcesContent":["// This hooks checks the current selection of cells is actually visible in the current viewport of the table\n// If they are not visible, they will be removed from the selection\n// This can happen when the user changes the slicer selection or filters (combined filters changes)\n\nimport { useEffect } from 'react'\nimport { CellId, parseCellId } from '../utils'\nimport { useProjectTableContext } from '../context'\n\ntype CheckSelectedCellsVisibleProps = {\n selectedCells: Set<CellId>\n setSelectedCells: (cells: Set<CellId>) => void\n focusedCellId: CellId | null\n setFocusedCellId: (cellId: CellId | null) => void\n}\n\nexport const useCheckSelectedCellsVisible = ({\n selectedCells,\n setSelectedCells,\n focusedCellId,\n setFocusedCellId,\n}: CheckSelectedCellsVisibleProps): void => {\n const { getEntityById } = useProjectTableContext()\n\n // checks that all of the selected cells are in the tableData\n // if they are not, they will be removed from the selection\n useEffect(() => {\n const missingCells = new Set<CellId>()\n for (const cellId of selectedCells) {\n // check if the cell rowId is in\n if (!getEntityById(parseCellId(cellId || '')?.rowId || '')) {\n missingCells.add(cellId)\n }\n }\n\n if (missingCells.size > 0) {\n // remove the missing cells from the selection\n const newSelection = new Set<CellId>(selectedCells)\n for (const cellId of missingCells) {\n newSelection.delete(cellId)\n }\n\n setSelectedCells(newSelection)\n\n // if the focused cell is one of the missing cells, clear it\n if (missingCells.has(focusedCellId || '')) {\n setFocusedCellId(null)\n }\n }\n }, [getEntityById, selectedCells, focusedCellId, setSelectedCells, setFocusedCellId])\n}\n"],"names":["useCheckSelectedCellsVisible","selectedCells","setSelectedCells","focusedCellId","setFocusedCellId","getEntityById","useProjectTableContext","useEffect","missingCells","cellId","parseCellId","newSelection"],"mappings":"i0XAeO,MAAMA,EAA+B,CAAC,CAC3C,cAAAC,EACA,iBAAAC,EACA,cAAAC,EACA,iBAAAC,CACF,IAA4C,CACpC,KAAA,CAAE,cAAAC,CAAc,EAAIC,yBAAuB,EAIjDC,EAAAA,UAAU,IAAM,OACR,MAAAC,MAAmB,IACzB,UAAWC,KAAUR,EAEdI,IAAcK,EAAAA,cAAYD,GAAU,EAAE,IAAxBC,YAAAA,EAA2B,QAAS,EAAE,GACvDF,EAAa,IAAIC,CAAM,EAIvB,GAAAD,EAAa,KAAO,EAAG,CAEnB,MAAAG,EAAe,IAAI,IAAYV,CAAa,EAClD,UAAWQ,KAAUD,EACnBG,EAAa,OAAOF,CAAM,EAG5BP,EAAiBS,CAAY,EAGzBH,EAAa,IAAIL,GAAiB,EAAE,GACtCC,EAAiB,IAAI,CACvB,CACF,EACC,CAACC,EAAeJ,EAAeE,EAAeD,EAAkBE,CAAgB,CAAC,CACtF"}