@ynput/ayon-frontend-shared 0.2.18 → 0.2.19

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 (312) hide show
  1. package/dist/DetailsPanel.cjs.js +6 -6
  2. package/dist/DetailsPanel.es.js +7 -7
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/ProjectTreeTable.cjs.js +6 -0
  5. package/dist/ProjectTreeTable.cjs.js.map +1 -1
  6. package/dist/ProjectTreeTable.es.js +6 -0
  7. package/dist/ProjectTreeTable.es.js.map +1 -1
  8. package/dist/api.cjs.js +6 -0
  9. package/dist/api.cjs.js.map +1 -1
  10. package/dist/api.es.js +10 -4
  11. package/dist/index.cjs.js +6 -5
  12. package/dist/index.cjs.js.map +1 -1
  13. package/dist/index.es.js +6 -5
  14. package/dist/index.es.js.map +1 -1
  15. package/dist/shared/src/api/generated/folders.cjs.js.map +1 -1
  16. package/dist/shared/src/api/generated/folders.es.js.map +1 -1
  17. package/dist/shared/src/api/generated/graphql.cjs.js +38 -0
  18. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  19. package/dist/shared/src/api/generated/graphql.es.js +38 -0
  20. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  21. package/dist/shared/src/api/queries/actions/getActions.cjs.js +9 -1
  22. package/dist/shared/src/api/queries/actions/getActions.cjs.js.map +1 -1
  23. package/dist/shared/src/api/queries/actions/getActions.es.js +9 -1
  24. package/dist/shared/src/api/queries/actions/getActions.es.js.map +1 -1
  25. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js +2 -1
  26. package/dist/shared/src/api/queries/entities/getEntityPanel.cjs.js.map +1 -1
  27. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js +2 -1
  28. package/dist/shared/src/api/queries/entities/getEntityPanel.es.js.map +1 -1
  29. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +12 -8
  30. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
  31. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +12 -8
  32. package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
  33. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js +67 -0
  34. package/dist/shared/src/api/queries/entityLists/getLists.cjs.js.map +1 -1
  35. package/dist/shared/src/api/queries/entityLists/getLists.es.js +68 -1
  36. package/dist/shared/src/api/queries/entityLists/getLists.es.js.map +1 -1
  37. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js +19 -3
  38. package/dist/shared/src/api/queries/entityLists/updateLists.cjs.js.map +1 -1
  39. package/dist/shared/src/api/queries/entityLists/updateLists.es.js +19 -3
  40. package/dist/shared/src/api/queries/entityLists/updateLists.es.js.map +1 -1
  41. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +13 -0
  42. package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
  43. package/dist/shared/src/api/queries/overview/updateOverview.es.js +13 -0
  44. package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
  45. package/dist/shared/src/api/queries/users/getUsers.cjs.js +2 -0
  46. package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
  47. package/dist/shared/src/api/queries/users/getUsers.es.js +2 -0
  48. package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
  49. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +3 -1
  50. package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
  51. package/dist/shared/src/api/queries/versions/updateVersions.es.js +3 -1
  52. package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
  53. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js +5 -5
  54. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.cjs.js.map +1 -1
  55. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js +5 -5
  56. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributes.es.js.map +1 -1
  57. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js +1 -1
  58. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js.map +1 -1
  59. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js +1 -1
  60. package/dist/shared/src/components/DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js.map +1 -1
  61. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +2 -2
  62. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
  63. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +2 -2
  64. package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
  65. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +15 -14
  66. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  67. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +15 -14
  68. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  69. package/dist/shared/src/components/PlayableIcon/PlayableIcon.cjs.js +43 -0
  70. package/dist/shared/src/components/PlayableIcon/PlayableIcon.cjs.js.map +1 -0
  71. package/dist/shared/src/components/PlayableIcon/PlayableIcon.es.js +43 -0
  72. package/dist/shared/src/components/PlayableIcon/PlayableIcon.es.js.map +1 -0
  73. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js +1 -1
  74. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.cjs.js.map +1 -1
  75. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js +1 -1
  76. package/dist/shared/src/components/Powerpack/PowerpackDialog.styled.es.js.map +1 -1
  77. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +15 -15
  78. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +15 -15
  79. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +6 -5
  80. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  81. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +6 -5
  82. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  83. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +6 -5
  84. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  85. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +6 -5
  86. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  87. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +6 -5
  88. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  89. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +6 -5
  90. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  91. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js +2 -2
  92. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.cjs.js.map +1 -1
  93. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js +2 -2
  94. package/dist/shared/src/components/SettingsPanel/SettingsPanelItemTemplate.es.js.map +1 -1
  95. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +6 -5
  96. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  97. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +6 -5
  98. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  99. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +6 -5
  100. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  101. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +6 -5
  102. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  103. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +6 -5
  104. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  105. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +6 -5
  106. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  107. package/dist/shared/src/containers/Actions/Actions.cjs.js +8 -2
  108. package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
  109. package/dist/shared/src/containers/Actions/Actions.es.js +8 -2
  110. package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
  111. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +10 -3
  112. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
  113. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +10 -3
  114. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
  115. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +14 -0
  116. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
  117. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +14 -0
  118. package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js.map +1 -1
  119. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +6 -5
  120. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  121. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +6 -5
  122. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  123. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +5 -5
  124. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +5 -5
  125. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +6 -5
  126. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  127. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +6 -5
  128. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  129. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +6 -5
  130. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  131. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +6 -5
  132. package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  133. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +6 -4
  134. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  135. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +7 -5
  136. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  137. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js +1 -31
  138. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
  139. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js +1 -31
  140. package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
  141. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js +2 -2
  142. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js.map +1 -1
  143. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js +2 -2
  144. package/dist/shared/src/containers/Feed/components/ActivityReference/ActivityReference.styled.es.js.map +1 -1
  145. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js +1 -1
  146. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js.map +1 -1
  147. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js +1 -1
  148. package/dist/shared/src/containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.es.js.map +1 -1
  149. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +48 -4
  150. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  151. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +50 -6
  152. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  153. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +47 -11
  154. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  155. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +47 -11
  156. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  157. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +5 -4
  158. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  159. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +5 -4
  160. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  161. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js +5 -3
  162. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.cjs.js.map +1 -1
  163. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js +5 -3
  164. package/dist/shared/src/containers/ProjectTreeTable/components/HeaderActionButton.es.js.map +1 -1
  165. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js +106 -2
  166. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.cjs.js.map +1 -1
  167. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js +106 -2
  168. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingContext.es.js.map +1 -1
  169. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +14 -2
  170. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
  171. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +14 -2
  172. package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
  173. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
  174. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
  175. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +15 -3
  176. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +15 -3
  178. package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js.map +1 -1
  179. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +106 -0
  180. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +106 -0
  182. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  183. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +4 -2
  184. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +4 -2
  186. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  187. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +26 -4
  188. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  189. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +26 -4
  190. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  191. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +135 -0
  192. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -0
  193. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +135 -0
  194. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -0
  195. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js +8 -6
  196. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.cjs.js.map +1 -1
  197. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js +8 -6
  198. package/dist/shared/src/containers/ProjectTreeTable/hooks/useDeleteEntities.es.js.map +1 -1
  199. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js +1 -2
  200. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.cjs.js.map +1 -1
  201. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js +1 -2
  202. package/dist/shared/src/containers/ProjectTreeTable/hooks/useFolderRelationships.es.js.map +1 -1
  203. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +88 -0
  204. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  205. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +88 -0
  206. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  207. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js +1 -1
  208. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.cjs.js.map +1 -1
  209. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js +1 -1
  210. package/dist/shared/src/containers/ProjectTreeTable/hooks/useHistory.es.js.map +1 -1
  211. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +35 -4
  212. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  213. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +35 -4
  214. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  215. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +88 -0
  216. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +88 -0
  218. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js +1 -1
  220. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.cjs.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js +1 -1
  222. package/dist/shared/src/containers/ProjectTreeTable/hooks/useUpdateTableData.es.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +90 -0
  224. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +90 -0
  226. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js +19 -0
  228. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.cjs.js.map +1 -0
  229. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js +19 -0
  230. package/dist/shared/src/containers/ProjectTreeTable/utils/getEntityViewerIds.es.js.map +1 -0
  231. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js +26 -0
  232. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.cjs.js.map +1 -0
  233. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js +26 -0
  234. package/dist/shared/src/containers/ProjectTreeTable/utils/getTypeDefaultValue.es.js.map +1 -0
  235. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +9 -8
  236. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +10 -9
  238. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +8 -2
  240. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +8 -2
  242. package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +190 -0
  244. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -0
  245. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +190 -0
  246. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js.map +1 -0
  247. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +4 -147
  248. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +2 -145
  250. package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js +12 -2
  252. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js +12 -2
  254. package/dist/shared/src/containers/ProjectTreeTable/widgets/ThumbnailWidget.es.js.map +1 -1
  255. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +6 -5
  256. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  257. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +6 -5
  258. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  259. package/dist/shared/src/context/DetailsPanelContext.cjs.js +5 -1
  260. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  261. package/dist/shared/src/context/DetailsPanelContext.es.js +5 -1
  262. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  263. package/dist/shared/src/util/confirmDelete.cjs.js +1 -0
  264. package/dist/shared/src/util/confirmDelete.cjs.js.map +1 -1
  265. package/dist/shared/src/util/confirmDelete.es.js +2 -0
  266. package/dist/shared/src/util/confirmDelete.es.js.map +1 -1
  267. package/dist/types/SimpleTable/SimpleTable.d.ts +1 -0
  268. package/dist/types/SimpleTable/SimpleTableRowTemplate.d.ts +1 -1
  269. package/dist/types/SimpleTable/context/SimpleTableContext.d.ts +5 -1
  270. package/dist/types/api/generated/folders.d.ts +1 -0
  271. package/dist/types/api/generated/graphql.d.ts +66 -5
  272. package/dist/types/api/queries/actions/getActions.d.ts +132 -1
  273. package/dist/types/api/queries/activities/getActivities.d.ts +6 -0
  274. package/dist/types/api/queries/activities/updateActivities.d.ts +12 -0
  275. package/dist/types/api/queries/entities/getEntity.d.ts +6 -0
  276. package/dist/types/api/queries/entities/getEntityPanel.d.ts +6 -0
  277. package/dist/types/api/queries/entities/transformDetailsPanelData.d.ts +1 -0
  278. package/dist/types/api/queries/entities/updateEntity.d.ts +6 -0
  279. package/dist/types/api/queries/entityLists/getLists.d.ts +1517 -2
  280. package/dist/types/api/queries/entityLists/types.d.ts +30 -1
  281. package/dist/types/api/queries/entityLists/updateLists.d.ts +166 -3
  282. package/dist/types/api/queries/overview/getOverview.d.ts +6 -0
  283. package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +6 -0
  284. package/dist/types/api/queries/users/getUsers.d.ts +6 -0
  285. package/dist/types/components/PlayableIcon/PlayableIcon.d.ts +4 -0
  286. package/dist/types/containers/Actions/Actions.d.ts +7 -1
  287. package/dist/types/containers/Actions/ActionsDropdown/ActionsDropdown.d.ts +5 -3
  288. package/dist/types/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.d.ts +0 -1
  289. package/dist/types/containers/ProjectTreeTable/ProjectTreeTable.d.ts +6 -2
  290. package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +4 -1
  291. package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +11 -2
  292. package/dist/types/containers/ProjectTreeTable/hooks/index.d.ts +1 -0
  293. package/dist/types/containers/ProjectTreeTable/hooks/useCellContextMenu.d.ts +1 -1
  294. package/dist/types/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.d.ts +9 -0
  295. package/dist/types/containers/ProjectTreeTable/hooks/useFolderRelationships.d.ts +2 -2
  296. package/dist/types/containers/ProjectTreeTable/hooks/useKeyboardNavigation.d.ts +3 -3
  297. package/dist/types/containers/ProjectTreeTable/hooks/useUpdateTableData.d.ts +1 -1
  298. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +10 -1
  299. package/dist/types/containers/ProjectTreeTable/utils/getEntityViewerIds.d.ts +4 -0
  300. package/dist/types/containers/ProjectTreeTable/utils/getTypeDefaultValue.d.ts +2 -0
  301. package/dist/types/containers/ProjectTreeTable/utils/index.d.ts +2 -0
  302. package/dist/types/containers/ProjectTreeTable/widgets/CellWidget.d.ts +2 -1
  303. package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +20 -0
  304. package/dist/types/containers/ProjectTreeTable/widgets/EnumWidget.d.ts +1 -11
  305. package/dist/types/containers/ProjectTreeTable/widgets/ThumbnailWidget.d.ts +1 -0
  306. package/dist/types/context/DetailsPanelContext.d.ts +1 -0
  307. package/dist/types/util/confirmDelete.d.ts +2 -1
  308. package/dist/util.cjs.js +2 -0
  309. package/dist/util.cjs.js.map +1 -1
  310. package/dist/util.es.js +2 -0
  311. package/dist/util.es.js.map +1 -1
  312. package/package.json +1 -1
@@ -1,93 +1,13 @@
1
1
  import { j as jsxRuntimeExports } from "../../../../../_virtual/jsx-runtime.es.js";
2
- import { Icon, Dropdown } from "@ynput/ayon-react-components";
2
+ import { Dropdown } from "@ynput/ayon-react-components";
3
3
  import clsx from "clsx";
4
4
  import { forwardRef, useRef, useState, useEffect } from "react";
5
5
  import styled from "styled-components";
6
- const StyledWidget = styled.div`
7
- display: flex;
8
- gap: var(--base-gap-small);
9
- align-items: center;
10
- width: 100%;
11
- height: 100%;
12
- overflow: hidden;
13
- border-radius: var(--border-radius-m);
14
- padding: 0 2px;
15
- cursor: pointer;
16
-
17
- &:hover {
18
- background-color: var(--md-sys-color-surface-container-high-hover);
19
- }
20
-
21
- &.item {
22
- padding: 4px 2px;
23
- border-radius: 0;
24
-
25
- &:hover {
26
- background-color: var(--md-sys-color-surface-container-hover);
27
- }
28
- }
29
-
30
- &.selected {
31
- background-color: var(--md-sys-color-primary-container);
32
-
33
- &:hover {
34
- background-color: var(--md-sys-color-primary-container-hover);
35
- }
36
- }
37
- `;
38
- const StyledValuesContainer = styled.div`
39
- display: flex;
40
- gap: var(--base-gap-small);
41
- align-items: center;
42
- overflow: hidden;
43
- border-radius: var(--border-radius-m);
44
- `;
45
- const StyledValueWrapper = styled.div`
46
- display: flex;
47
- gap: var(--base-gap-small);
48
- align-items: center;
49
-
50
- overflow: hidden;
51
- max-width: 100%;
52
- min-width: 20px;
53
- `;
54
- const StyledValue = styled.span`
55
- /* push expand icon to the end */
56
- flex: 1;
57
- overflow: hidden;
58
- white-space: nowrap;
59
- width: 100%;
60
- text-overflow: ellipsis;
61
- text-align: left;
62
- border-radius: var(--border-radius-m);
63
- padding: 0px 2px;
64
- text-align: center;
65
-
66
- &.placeholder {
67
- color: var(--md-sys-color-outline);
68
- }
69
- `;
70
- const StyledImg = styled.img`
71
- width: 20px;
72
- height: 20px;
73
- object-fit: cover;
74
-
75
- &.avatar {
76
- border-radius: 50%;
77
- }
78
- `;
79
- const StyledExpandIcon = styled(Icon)`
80
- margin-left: auto;
81
- transition: rotate 0.2s;
82
- `;
6
+ import { EnumCellValue } from "./EnumCellValue.es.js";
83
7
  const StyledDropdown = styled(Dropdown)`
84
8
  height: 100%;
85
9
  width: 100%;
86
10
  `;
87
- const checkForImgSrc = (icon = "") => {
88
- return icon.startsWith("/") || icon.startsWith("./") || icon.startsWith("../") || icon.startsWith("http://") || icon.startsWith("https://");
89
- };
90
- const checkAvatarImg = (src) => src.includes("avatar");
91
11
  const EnumWidget = forwardRef(
92
12
  ({
93
13
  value,
@@ -225,69 +145,6 @@ const EnumWidget = forwardRef(
225
145
  );
226
146
  }
227
147
  );
228
- const EnumCellValue = ({
229
- selectedOptions,
230
- placeholder,
231
- hasMultipleValues,
232
- isMultiSelect,
233
- isOpen,
234
- isItem,
235
- isSelected,
236
- isReadOnly,
237
- className,
238
- ...props
239
- }) => {
240
- const allOptionsHaveIcon = selectedOptions.every((option) => option.icon);
241
- const showLabels = !hasMultipleValues || !allOptionsHaveIcon;
242
- const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem;
243
- const isPlaceholder = !selectedOptions.length && placeholder;
244
- if (isPlaceholder) {
245
- selectedOptions = [
246
- {
247
- label: placeholder,
248
- value: ""
249
- }
250
- ];
251
- }
252
- return /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledWidget, { className: clsx(className, { selected: isSelected, item: isItem }), ...props, children: [
253
- /* @__PURE__ */ jsxRuntimeExports.jsx(StyledValuesContainer, { children: selectedOptions.map((option, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledValueWrapper, { children: [
254
- option.icon && checkForImgSrc(option.icon) ? /* @__PURE__ */ jsxRuntimeExports.jsx(
255
- StyledImg,
256
- {
257
- src: option.icon,
258
- className: clsx({ avatar: checkAvatarImg(option.icon) })
259
- }
260
- ) : option.icon ? /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { icon: option.icon, style: { color: option.color } }) : null,
261
- (showLabels || !option.icon) && /* @__PURE__ */ jsxRuntimeExports.jsx(
262
- StyledValue,
263
- {
264
- style: {
265
- color: backgroundColor ? "inherit" : option.color,
266
- backgroundColor: backgroundColor ? option.color || "var(--md-sys-color-surface-container)" : "transparent"
267
- },
268
- className: clsx({ placeholder: isPlaceholder }),
269
- children: option.label
270
- }
271
- )
272
- ] }, option.value.toString() + i)) }),
273
- !isItem && !isReadOnly && /* @__PURE__ */ jsxRuntimeExports.jsx(
274
- StyledExpandIcon,
275
- {
276
- className: "expand",
277
- icon: "expand_more",
278
- style: { rotate: isOpen ? "180deg" : "0" }
279
- }
280
- ),
281
- isItem && isSelected && isMultiSelect && /* @__PURE__ */ jsxRuntimeExports.jsx(
282
- Icon,
283
- {
284
- icon: "close",
285
- style: { marginLeft: "auto", marginRight: 4 },
286
- "aria-label": "Deselect item"
287
- }
288
- )
289
- ] });
290
- };
291
148
  export {
292
149
  EnumWidget
293
150
  };
@@ -1 +1 @@
1
- {"version":3,"file":"EnumWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumWidget.tsx"],"sourcesContent":["import { Dropdown, DropdownProps, DropdownRef, Icon } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\nimport styled from 'styled-components'\nimport { WidgetBaseProps } from './CellWidget'\nimport { AttributeData, AttributeEnumItem } from '../types'\n\nconst StyledWidget = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0 2px;\n cursor: pointer;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-high-hover);\n }\n\n &.item {\n padding: 4px 2px;\n border-radius: 0;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-hover);\n }\n }\n\n &.selected {\n background-color: var(--md-sys-color-primary-container);\n\n &:hover {\n background-color: var(--md-sys-color-primary-container-hover);\n }\n }\n`\n\nconst StyledValuesContainer = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n`\n\nconst StyledValueWrapper = styled.div`\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n\n overflow: hidden;\n max-width: 100%;\n min-width: 20px;\n`\n\nconst StyledValue = styled.span`\n /* push expand icon to the end */\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n text-overflow: ellipsis;\n text-align: left;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\n text-align: center;\n\n &.placeholder {\n color: var(--md-sys-color-outline);\n }\n`\n\nconst StyledImg = styled.img`\n width: 20px;\n height: 20px;\n object-fit: cover;\n\n &.avatar {\n border-radius: 50%;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n margin-left: auto;\n transition: rotate 0.2s;\n`\n\nconst StyledDropdown = styled(Dropdown)`\n height: 100%;\n width: 100%;\n`\n\nexport interface EnumWidgetProps\n extends Omit<DropdownProps, 'onChange' | 'value'>,\n WidgetBaseProps {\n value: (string | number | boolean)[]\n options: AttributeEnumItem[]\n type?: AttributeData['type']\n autoOpen?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n pt?: {\n template?: Partial<EnumTemplateProps>\n }\n onOpen?: () => void\n onNext?: () => void\n}\n\nconst checkForImgSrc = (icon: string | undefined = ''): boolean => {\n return (\n icon.startsWith('/') ||\n icon.startsWith('./') ||\n icon.startsWith('../') ||\n icon.startsWith('http://') ||\n icon.startsWith('https://')\n )\n}\n\nconst checkAvatarImg = (src: string): boolean => src.includes('avatar')\n\nexport const EnumWidget = forwardRef<HTMLDivElement, EnumWidgetProps>(\n (\n {\n value,\n isEditing,\n options,\n type,\n autoOpen = true,\n isReadOnly,\n enableCustomValues,\n onOpen,\n onChange,\n onCancelEdit,\n onNext,\n pt,\n ...dropdownProps\n },\n _ref,\n ) => {\n // convert value to string array\n const valueAsStrings = value.map((v) => v?.toString()).filter((v) => !!v)\n let selectedOptions = options.filter((option) =>\n valueAsStrings.includes(option.value.toString()),\n )\n\n // Check if all values are present in options, if not, add a warning\n valueAsStrings.forEach((val) => {\n if (!options.find((option) => option.value === val)) {\n selectedOptions = [\n ...selectedOptions,\n {\n label: val,\n value: val,\n color: enableCustomValues\n ? 'var(--md-sys-color-surface-container)'\n : 'var(--md-sys-color-error)',\n icon: enableCustomValues ? undefined : 'warning',\n },\n ]\n }\n })\n const hasMultipleValues = selectedOptions.length > 1\n\n const dropdownRef = useRef<DropdownRef>(null)\n\n const handleClosedClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n // if we click on the chevron icon, then we open the dropdown spright away (put it into editing mode)\n if (e.target instanceof HTMLElement && e.target.closest('.expand') && onOpen && !isReadOnly) {\n onOpen()\n // stop the event from propagating to the parent element because a single click on the cell would close the dropdown\n e.stopPropagation()\n }\n }\n\n const [dropdownOpen, setDropdownOpen] = useState(false)\n useEffect(() => {\n if (isEditing && dropdownRef.current && autoOpen) {\n !dropdownRef.current.isOpen && dropdownRef.current?.open()\n setDropdownOpen(true)\n } else {\n setDropdownOpen(false)\n }\n }, [isEditing, dropdownRef.current, autoOpen])\n\n // when the dropdown is open, focus the first item\n useEffect(() => {\n if (dropdownOpen) {\n const optionsUlEl = dropdownRef.current?.getOptions() as HTMLUListElement\n const firstItem = optionsUlEl?.querySelector('li')\n if (firstItem) {\n firstItem.focus()\n // set style of li to have no outline (no focus ring)\n firstItem.style.outline = 'none'\n }\n }\n }, [dropdownOpen])\n\n const isMultiSelect = !!type?.includes('list')\n\n const handleChange = (value: string[]) => {\n const filteredValue = enableCustomValues\n ? value\n : value.filter((v) => options.find((o) => o.value === v))\n\n if (type?.includes('list')) {\n onChange(filteredValue, 'Click')\n } else {\n // take first value as the type is not list]\n onChange(filteredValue[0], 'Click')\n }\n }\n\n if (isEditing) {\n return (\n <StyledDropdown\n options={options}\n value={valueAsStrings}\n ref={dropdownRef}\n valueTemplate={(_value, selected, isOpen) => (\n <EnumCellValue\n selectedOptions={selectedOptions}\n hasMultipleValues={selected.length > 1}\n isOpen={isOpen}\n isReadOnly={isReadOnly}\n isMultiSelect={isMultiSelect}\n {...pt?.template}\n placeholder={dropdownProps.placeholder}\n className={clsx('enum-dropdown-value', pt?.template?.className)}\n />\n )}\n itemTemplate={(option, _isActive, isSelected) => (\n <EnumCellValue\n selectedOptions={[option]}\n hasMultipleValues={false}\n isOpen={false}\n isItem\n isMultiSelect={isMultiSelect}\n isSelected={isSelected}\n {...pt?.template}\n className={clsx('enum-dropdown-item', pt?.template?.className)}\n />\n )}\n widthExpand\n multiSelect={isMultiSelect}\n disableOpen={isReadOnly}\n disabled={isReadOnly}\n sortBySelected\n {...dropdownProps}\n onChange={handleChange}\n onClose={onCancelEdit}\n />\n )\n }\n\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n hasMultipleValues={hasMultipleValues}\n onClick={handleClosedClick}\n isMultiSelect={isMultiSelect}\n isReadOnly={isReadOnly}\n {...pt?.template}\n placeholder={dropdownProps.placeholder}\n className={clsx('enum-value', pt?.template?.className, dropdownProps.className)}\n />\n )\n },\n)\n\ninterface EnumTemplateProps extends React.HTMLAttributes<HTMLSpanElement> {\n selectedOptions: AttributeEnumItem[]\n placeholder?: string\n hasMultipleValues: boolean\n isMultiSelect: boolean\n isOpen?: boolean\n isItem?: boolean\n isSelected?: boolean\n isReadOnly?: boolean\n}\n\nconst EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n className,\n ...props\n}: EnumTemplateProps) => {\n // Check if all options have icons\n const allOptionsHaveIcon = selectedOptions.every((option) => option.icon)\n\n // Determine if we should show labels based on the requirements\n const showLabels = !hasMultipleValues || !allOptionsHaveIcon\n // Show the colors be backgrounds instead of the text\n const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem\n\n const isPlaceholder = !selectedOptions.length && placeholder\n if (isPlaceholder) {\n selectedOptions = [\n {\n label: placeholder,\n value: '',\n },\n ]\n }\n\n return (\n <StyledWidget className={clsx(className, { selected: isSelected, item: isItem })} {...props}>\n <StyledValuesContainer>\n {selectedOptions.map((option, i) => (\n <StyledValueWrapper key={option.value.toString() + i}>\n {option.icon && checkForImgSrc(option.icon) ? (\n <StyledImg\n src={option.icon}\n className={clsx({ avatar: checkAvatarImg(option.icon) })}\n />\n ) : option.icon ? (\n <Icon icon={option.icon} style={{ color: option.color }} />\n ) : null}\n\n {(showLabels || !option.icon) && (\n <StyledValue\n style={{\n color: backgroundColor ? 'inherit' : option.color,\n backgroundColor: backgroundColor\n ? option.color || 'var(--md-sys-color-surface-container)'\n : 'transparent',\n }}\n className={clsx({ placeholder: isPlaceholder })}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandIcon\n className=\"expand\"\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0' }}\n />\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4 }}\n aria-label=\"Deselect item\"\n />\n )}\n </StyledWidget>\n )\n}\n"],"names":["_a","value","jsx","jsxs"],"mappings":";;;;;AAOA,MAAM,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiC5B,MAAM,wBAAwB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQrC,MAAM,qBAAqB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUlC,MAAM,cAAc,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB3B,MAAM,YAAY,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUzB,MAAM,mBAAmB,OAAO,IAAI;AAAA;AAAA;AAAA;AAKpC,MAAM,iBAAiB,OAAO,QAAQ;AAAA;AAAA;AAAA;AAqBtC,MAAM,iBAAiB,CAAC,OAA2B,OAAgB;AACjE,SACE,KAAK,WAAW,GAAG,KACnB,KAAK,WAAW,IAAI,KACpB,KAAK,WAAW,KAAK,KACrB,KAAK,WAAW,SAAS,KACzB,KAAK,WAAW,UAAU;AAE9B;AAEA,MAAM,iBAAiB,CAAC,QAAyB,IAAI,SAAS,QAAQ;AAE/D,MAAM,aAAa;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,KAEL,SACG;;AAEH,UAAM,iBAAiB,MAAM,IAAI,CAAC,MAAM,uBAAG,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,QAAI,kBAAkB,QAAQ;AAAA,MAAO,CAAC,WACpC,eAAe,SAAS,OAAO,MAAM,SAAU,CAAA;AAAA,IACjD;AAGe,mBAAA,QAAQ,CAAC,QAAQ;AAC1B,UAAA,CAAC,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,GAAG,GAAG;AACjC,0BAAA;AAAA,UAChB,GAAG;AAAA,UACH;AAAA,YACE,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO,qBACH,0CACA;AAAA,YACJ,MAAM,qBAAqB,SAAY;AAAA,UAAA;AAAA,QAE3C;AAAA,MAAA;AAAA,IACF,CACD;AACK,UAAA,oBAAoB,gBAAgB,SAAS;AAE7C,UAAA,cAAc,OAAoB,IAAI;AAEtC,UAAA,oBAAoB,CAAC,MAAyC;AAE9D,UAAA,EAAE,kBAAkB,eAAe,EAAE,OAAO,QAAQ,SAAS,KAAK,UAAU,CAAC,YAAY;AACpF,eAAA;AAEP,UAAE,gBAAgB;AAAA,MAAA;AAAA,IAEtB;AAEA,UAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AACtD,cAAU,MAAM;;AACV,UAAA,aAAa,YAAY,WAAW,UAAU;AAChD,SAAC,YAAY,QAAQ,YAAUA,MAAA,YAAY,YAAZ,gBAAAA,IAAqB;AACpD,wBAAgB,IAAI;AAAA,MAAA,OACf;AACL,wBAAgB,KAAK;AAAA,MAAA;AAAA,OAEtB,CAAC,WAAW,YAAY,SAAS,QAAQ,CAAC;AAG7C,cAAU,MAAM;;AACd,UAAI,cAAc;AACV,cAAA,eAAcA,MAAA,YAAY,YAAZ,gBAAAA,IAAqB;AACnC,cAAA,YAAY,2CAAa,cAAc;AAC7C,YAAI,WAAW;AACb,oBAAU,MAAM;AAEhB,oBAAU,MAAM,UAAU;AAAA,QAAA;AAAA,MAC5B;AAAA,IACF,GACC,CAAC,YAAY,CAAC;AAEjB,UAAM,gBAAgB,CAAC,EAAC,6BAAM,SAAS;AAEjC,UAAA,eAAe,CAACC,WAAoB;AACxC,YAAM,gBAAgB,qBAClBA,SACAA,OAAM,OAAO,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEtD,UAAA,6BAAM,SAAS,SAAS;AAC1B,iBAAS,eAAe,OAAO;AAAA,MAAA,OAC1B;AAEI,iBAAA,cAAc,CAAC,GAAG,OAAO;AAAA,MAAA;AAAA,IAEtC;AAEA,QAAI,WAAW;AAEX,aAAAC,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA,OAAO;AAAA,UACP,KAAK;AAAA,UACL,eAAe,CAAC,QAAQ,UAAU,WAChC;;AAAAA,qDAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,mBAAmB,SAAS,SAAS;AAAA,gBACrC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACC,GAAG,yBAAI;AAAA,gBACR,aAAa,cAAc;AAAA,gBAC3B,WAAW,KAAK,wBAAuBF,MAAA,yBAAI,aAAJ,gBAAAA,IAAc,SAAS;AAAA,cAAA;AAAA,YAChE;AAAA;AAAA,UAEF,cAAc,CAAC,QAAQ,WAAW,eAChC;;AAAAE,qDAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,iBAAiB,CAAC,MAAM;AAAA,gBACxB,mBAAmB;AAAA,gBACnB,QAAQ;AAAA,gBACR,QAAM;AAAA,gBACN;AAAA,gBACA;AAAA,gBACC,GAAG,yBAAI;AAAA,gBACR,WAAW,KAAK,uBAAsBF,MAAA,yBAAI,aAAJ,gBAAAA,IAAc,SAAS;AAAA,cAAA;AAAA,YAC/D;AAAA;AAAA,UAEF,aAAW;AAAA,UACX,aAAa;AAAA,UACb,aAAa;AAAA,UACb,UAAU;AAAA,UACV,gBAAc;AAAA,UACb,GAAG;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,IAAA;AAKF,WAAAE,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACC,GAAG,yBAAI;AAAA,QACR,aAAa,cAAc;AAAA,QAC3B,WAAW,KAAK,eAAc,8BAAI,aAAJ,mBAAc,WAAW,cAAc,SAAS;AAAA,MAAA;AAAA,IAChF;AAAA,EAAA;AAGN;AAaA,MAAM,gBAAgB,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAyB;AAEvB,QAAM,qBAAqB,gBAAgB,MAAM,CAAC,WAAW,OAAO,IAAI;AAGlE,QAAA,aAAa,CAAC,qBAAqB,CAAC;AAE1C,QAAM,kBAAkB,CAAC,sBAAsB,iBAAiB,CAAC;AAE3D,QAAA,gBAAgB,CAAC,gBAAgB,UAAU;AACjD,MAAI,eAAe;AACC,sBAAA;AAAA,MAChB;AAAA,QACE,OAAO;AAAA,QACP,OAAO;AAAA,MAAA;AAAA,IAEX;AAAA,EAAA;AAGF,SACGC,kCAAA,KAAA,cAAA,EAAa,WAAW,KAAK,WAAW,EAAE,UAAU,YAAY,MAAM,OAAA,CAAQ,GAAI,GAAG,OACpF,UAAA;AAAA,IAAAD,kCAAAA,IAAC,yBACE,UAAgB,gBAAA,IAAI,CAAC,QAAQ,6CAC3B,oBACE,EAAA,UAAA;AAAA,MAAA,OAAO,QAAQ,eAAe,OAAO,IAAI,IACxCA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAK,OAAO;AAAA,UACZ,WAAW,KAAK,EAAE,QAAQ,eAAe,OAAO,IAAI,EAAG,CAAA;AAAA,QAAA;AAAA,MAAA,IAEvD,OAAO,OACTA,kCAAAA,IAAC,QAAK,MAAM,OAAO,MAAM,OAAO,EAAE,OAAO,OAAO,SAAS,IACvD;AAAA,OAEF,cAAc,CAAC,OAAO,SACtBA,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAO;AAAA,YACL,OAAO,kBAAkB,YAAY,OAAO;AAAA,YAC5C,iBAAiB,kBACb,OAAO,SAAS,0CAChB;AAAA,UACN;AAAA,UACA,WAAW,KAAK,EAAE,aAAa,eAAe;AAAA,UAE7C,UAAO,OAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACV,EAAA,GArBqB,OAAO,MAAM,SAAA,IAAa,CAuBnD,CACD,GACH;AAAA,IACC,CAAC,UAAU,CAAC,cACXA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,MAAK;AAAA,QACL,OAAO,EAAE,QAAQ,SAAS,WAAW,IAAI;AAAA,MAAA;AAAA,IAC3C;AAAA,IAED,UAAU,cAAc,iBACvBA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAO,EAAE,YAAY,QAAQ,aAAa,EAAE;AAAA,QAC5C,cAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EACb,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"EnumWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumWidget.tsx"],"sourcesContent":["import { Dropdown, DropdownProps, DropdownRef } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\nimport styled from 'styled-components'\nimport { WidgetBaseProps } from './CellWidget'\nimport { AttributeData, AttributeEnumItem } from '../types'\nimport { EnumCellValue, EnumTemplateProps } from './EnumCellValue'\n\nconst StyledDropdown = styled(Dropdown)`\n height: 100%;\n width: 100%;\n`\n\nexport interface EnumWidgetProps\n extends Omit<DropdownProps, 'onChange' | 'value'>,\n WidgetBaseProps {\n value: (string | number | boolean)[]\n options: AttributeEnumItem[]\n type?: AttributeData['type']\n autoOpen?: boolean\n isReadOnly?: boolean\n enableCustomValues?: boolean\n pt?: {\n template?: Partial<EnumTemplateProps>\n }\n onOpen?: () => void\n onNext?: () => void\n}\n\nexport const EnumWidget = forwardRef<HTMLDivElement, EnumWidgetProps>(\n (\n {\n value,\n isEditing,\n options,\n type,\n autoOpen = true,\n isReadOnly,\n enableCustomValues,\n onOpen,\n onChange,\n onCancelEdit,\n onNext,\n pt,\n ...dropdownProps\n },\n _ref,\n ) => {\n // convert value to string array\n const valueAsStrings = value.map((v) => v?.toString()).filter((v) => !!v)\n let selectedOptions = options.filter((option) =>\n valueAsStrings.includes(option.value.toString()),\n )\n\n // Check if all values are present in options, if not, add a warning\n valueAsStrings.forEach((val) => {\n if (!options.find((option) => option.value === val)) {\n selectedOptions = [\n ...selectedOptions,\n {\n label: val,\n value: val,\n color: enableCustomValues\n ? 'var(--md-sys-color-surface-container)'\n : 'var(--md-sys-color-error)',\n icon: enableCustomValues ? undefined : 'warning',\n },\n ]\n }\n })\n const hasMultipleValues = selectedOptions.length > 1\n\n const dropdownRef = useRef<DropdownRef>(null)\n\n const handleClosedClick = (e: React.MouseEvent<HTMLSpanElement>) => {\n // if we click on the chevron icon, then we open the dropdown spright away (put it into editing mode)\n if (e.target instanceof HTMLElement && e.target.closest('.expand') && onOpen && !isReadOnly) {\n onOpen()\n // stop the event from propagating to the parent element because a single click on the cell would close the dropdown\n e.stopPropagation()\n }\n }\n\n const [dropdownOpen, setDropdownOpen] = useState(false)\n useEffect(() => {\n if (isEditing && dropdownRef.current && autoOpen) {\n !dropdownRef.current.isOpen && dropdownRef.current?.open()\n setDropdownOpen(true)\n } else {\n setDropdownOpen(false)\n }\n }, [isEditing, dropdownRef.current, autoOpen])\n\n // when the dropdown is open, focus the first item\n useEffect(() => {\n if (dropdownOpen) {\n const optionsUlEl = dropdownRef.current?.getOptions() as HTMLUListElement\n const firstItem = optionsUlEl?.querySelector('li')\n if (firstItem) {\n firstItem.focus()\n // set style of li to have no outline (no focus ring)\n firstItem.style.outline = 'none'\n }\n }\n }, [dropdownOpen])\n\n const isMultiSelect = !!type?.includes('list')\n\n const handleChange = (value: string[]) => {\n const filteredValue = enableCustomValues\n ? value\n : value.filter((v) => options.find((o) => o.value === v))\n\n if (type?.includes('list')) {\n onChange(filteredValue, 'Click')\n } else {\n // take first value as the type is not list]\n onChange(filteredValue[0], 'Click')\n }\n }\n\n if (isEditing) {\n return (\n <StyledDropdown\n options={options}\n value={valueAsStrings}\n ref={dropdownRef}\n valueTemplate={(_value, selected, isOpen) => (\n <EnumCellValue\n selectedOptions={selectedOptions}\n hasMultipleValues={selected.length > 1}\n isOpen={isOpen}\n isReadOnly={isReadOnly}\n isMultiSelect={isMultiSelect}\n {...pt?.template}\n placeholder={dropdownProps.placeholder}\n className={clsx('enum-dropdown-value', pt?.template?.className)}\n />\n )}\n itemTemplate={(option, _isActive, isSelected) => (\n <EnumCellValue\n selectedOptions={[option]}\n hasMultipleValues={false}\n isOpen={false}\n isItem\n isMultiSelect={isMultiSelect}\n isSelected={isSelected}\n {...pt?.template}\n className={clsx('enum-dropdown-item', pt?.template?.className)}\n />\n )}\n widthExpand\n multiSelect={isMultiSelect}\n disableOpen={isReadOnly}\n disabled={isReadOnly}\n sortBySelected\n {...dropdownProps}\n onChange={handleChange}\n onClose={onCancelEdit}\n />\n )\n }\n\n return (\n <EnumCellValue\n selectedOptions={selectedOptions}\n hasMultipleValues={hasMultipleValues}\n onClick={handleClosedClick}\n isMultiSelect={isMultiSelect}\n isReadOnly={isReadOnly}\n {...pt?.template}\n placeholder={dropdownProps.placeholder}\n className={clsx('enum-value', pt?.template?.className, dropdownProps.className)}\n />\n )\n },\n)\n"],"names":["_a","value","jsx"],"mappings":";;;;;;AAQA,MAAM,iBAAiB,OAAO,QAAQ;AAAA;AAAA;AAAA;AAqB/B,MAAM,aAAa;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,KAEL,SACG;;AAEH,UAAM,iBAAiB,MAAM,IAAI,CAAC,MAAM,uBAAG,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,QAAI,kBAAkB,QAAQ;AAAA,MAAO,CAAC,WACpC,eAAe,SAAS,OAAO,MAAM,SAAU,CAAA;AAAA,IACjD;AAGe,mBAAA,QAAQ,CAAC,QAAQ;AAC1B,UAAA,CAAC,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,GAAG,GAAG;AACjC,0BAAA;AAAA,UAChB,GAAG;AAAA,UACH;AAAA,YACE,OAAO;AAAA,YACP,OAAO;AAAA,YACP,OAAO,qBACH,0CACA;AAAA,YACJ,MAAM,qBAAqB,SAAY;AAAA,UAAA;AAAA,QAE3C;AAAA,MAAA;AAAA,IACF,CACD;AACK,UAAA,oBAAoB,gBAAgB,SAAS;AAE7C,UAAA,cAAc,OAAoB,IAAI;AAEtC,UAAA,oBAAoB,CAAC,MAAyC;AAE9D,UAAA,EAAE,kBAAkB,eAAe,EAAE,OAAO,QAAQ,SAAS,KAAK,UAAU,CAAC,YAAY;AACpF,eAAA;AAEP,UAAE,gBAAgB;AAAA,MAAA;AAAA,IAEtB;AAEA,UAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AACtD,cAAU,MAAM;;AACV,UAAA,aAAa,YAAY,WAAW,UAAU;AAChD,SAAC,YAAY,QAAQ,YAAUA,MAAA,YAAY,YAAZ,gBAAAA,IAAqB;AACpD,wBAAgB,IAAI;AAAA,MAAA,OACf;AACL,wBAAgB,KAAK;AAAA,MAAA;AAAA,OAEtB,CAAC,WAAW,YAAY,SAAS,QAAQ,CAAC;AAG7C,cAAU,MAAM;;AACd,UAAI,cAAc;AACV,cAAA,eAAcA,MAAA,YAAY,YAAZ,gBAAAA,IAAqB;AACnC,cAAA,YAAY,2CAAa,cAAc;AAC7C,YAAI,WAAW;AACb,oBAAU,MAAM;AAEhB,oBAAU,MAAM,UAAU;AAAA,QAAA;AAAA,MAC5B;AAAA,IACF,GACC,CAAC,YAAY,CAAC;AAEjB,UAAM,gBAAgB,CAAC,EAAC,6BAAM,SAAS;AAEjC,UAAA,eAAe,CAACC,WAAoB;AACxC,YAAM,gBAAgB,qBAClBA,SACAA,OAAM,OAAO,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEtD,UAAA,6BAAM,SAAS,SAAS;AAC1B,iBAAS,eAAe,OAAO;AAAA,MAAA,OAC1B;AAEI,iBAAA,cAAc,CAAC,GAAG,OAAO;AAAA,MAAA;AAAA,IAEtC;AAEA,QAAI,WAAW;AAEX,aAAAC,kCAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA,OAAO;AAAA,UACP,KAAK;AAAA,UACL,eAAe,CAAC,QAAQ,UAAU,WAChC;;AAAAA,qDAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,mBAAmB,SAAS,SAAS;AAAA,gBACrC;AAAA,gBACA;AAAA,gBACA;AAAA,gBACC,GAAG,yBAAI;AAAA,gBACR,aAAa,cAAc;AAAA,gBAC3B,WAAW,KAAK,wBAAuBF,MAAA,yBAAI,aAAJ,gBAAAA,IAAc,SAAS;AAAA,cAAA;AAAA,YAChE;AAAA;AAAA,UAEF,cAAc,CAAC,QAAQ,WAAW,eAChC;;AAAAE,qDAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,iBAAiB,CAAC,MAAM;AAAA,gBACxB,mBAAmB;AAAA,gBACnB,QAAQ;AAAA,gBACR,QAAM;AAAA,gBACN;AAAA,gBACA;AAAA,gBACC,GAAG,yBAAI;AAAA,gBACR,WAAW,KAAK,uBAAsBF,MAAA,yBAAI,aAAJ,gBAAAA,IAAc,SAAS;AAAA,cAAA;AAAA,YAC/D;AAAA;AAAA,UAEF,aAAW;AAAA,UACX,aAAa;AAAA,UACb,aAAa;AAAA,UACb,UAAU;AAAA,UACV,gBAAc;AAAA,UACb,GAAG;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,IAAA;AAKF,WAAAE,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACC,GAAG,yBAAI;AAAA,QACR,aAAa,cAAc;AAAA,QAC3B,WAAW,KAAK,eAAc,8BAAI,aAAJ,mBAAc,WAAW,cAAc,SAAS;AAAA,MAAA;AAAA,IAChF;AAAA,EAAA;AAGN;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("../../../../../_virtual/jsx-runtime.cjs.js");
4
+ const PlayableIcon = require("../../../components/PlayableIcon/PlayableIcon.cjs.js");
4
5
  const React = require("react");
5
6
  const styled = require("styled-components");
6
7
  const Wrapper = styled.div`
@@ -22,20 +23,29 @@ const Image = styled.img`
22
23
  position: relative;
23
24
  width: 100%;
24
25
  height: 100%;
25
- object-fit: cover;
26
+ object-fit: contain;
26
27
  z-index: 20;
27
28
  `;
29
+ const StyledPlayableIcon = styled(PlayableIcon.PlayableIcon)`
30
+ right: 5px;
31
+ top: 5px;
32
+ `;
28
33
  const ThumbnailWidgetWrapper = ({
29
34
  projectName,
30
35
  entityType,
31
36
  entityId,
32
37
  updatedAt,
33
38
  icon,
39
+ isPlayable,
40
+ id,
34
41
  ...props
35
42
  }) => {
36
43
  const valid = projectName && entityType && entityId && updatedAt;
37
44
  const url = projectName && `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`;
38
- return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(Wrapper, { className: "thumbnail-widget", children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(Inner, { ...props, children: valid && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(Image, { src: url }) }) }, url);
45
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(Wrapper, { className: "thumbnail-widget", id, children: [
46
+ /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(Inner, { ...props, children: valid && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(Image, { src: url }) }),
47
+ isPlayable && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(StyledPlayableIcon, {})
48
+ ] }, url);
39
49
  };
40
50
  const ThumbnailWidget = React.memo(ThumbnailWidgetWrapper);
41
51
  exports.ThumbnailWidget = ThumbnailWidget;
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbnailWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/ThumbnailWidget.tsx"],"sourcesContent":["import { Icon } from '@ynput/ayon-react-components'\nimport { FC, memo } from 'react'\nimport styled from 'styled-components'\n\nconst Wrapper = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px;\n`\n\nconst Inner = styled.div`\n position: relative;\n max-height: 100%;\n height: auto;\n width: 100%;\n aspect-ratio: 1.77;\n\n border-radius: 2px;\n overflow: hidden;\n`\n\nconst Image = styled.img`\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: 20;\n`\n\ninterface ThumbnailWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n projectName: string\n entityType: string\n entityId: string\n updatedAt?: string\n icon?: string | null\n}\n\nconst ThumbnailWidgetWrapper: FC<ThumbnailWidgetProps> = ({\n projectName,\n entityType,\n entityId,\n updatedAt,\n icon,\n ...props\n}) => {\n const valid = projectName && entityType && entityId && updatedAt\n const url =\n projectName &&\n `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`\n\n return (\n <Wrapper className=\"thumbnail-widget\" key={url}>\n <Inner {...props}>{valid && <Image src={url} />}</Inner>\n </Wrapper>\n )\n}\n\nexport const ThumbnailWidget = memo(ThumbnailWidgetWrapper)\n"],"names":["jsx","memo"],"mappings":";;;;;AAIA,MAAM,UAAU,OAAO;AAAA;AAAA;AAAA;AAAA;AAMvB,MAAM,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrB,MAAM,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBrB,MAAM,yBAAmD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACE,QAAA,QAAQ,eAAe,cAAc,YAAY;AACjD,QAAA,MACJ,eACA,iBAAiB,WAAW,IAAI,UAAU,KAAK,QAAQ,wBAAwB,SAAS;AAE1F,SACGA,2BAAA,kBAAA,IAAA,SAAA,EAAQ,WAAU,oBACjB,2DAAC,OAAO,EAAA,GAAG,OAAQ,UAAA,0DAAU,OAAM,EAAA,KAAK,KAAK,EAAA,CAAG,KADP,GAE3C;AAEJ;AAEa,MAAA,kBAAkBC,WAAK,sBAAsB;;"}
1
+ {"version":3,"file":"ThumbnailWidget.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/ThumbnailWidget.tsx"],"sourcesContent":["import { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC, memo } from 'react'\nimport styled from 'styled-components'\n\nconst Wrapper = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px;\n`\n\nconst Inner = styled.div`\n position: relative;\n max-height: 100%;\n height: auto;\n width: 100%;\n aspect-ratio: 1.77;\n\n border-radius: 2px;\n overflow: hidden;\n`\n\nconst Image = styled.img`\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: contain;\n z-index: 20;\n`\n\nconst StyledPlayableIcon = styled(PlayableIcon)`\n right: 5px;\n top: 5px;\n`\n\ninterface ThumbnailWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n projectName: string\n entityType: string\n entityId: string\n updatedAt?: string\n icon?: string | null\n isPlayable?: boolean\n}\n\nconst ThumbnailWidgetWrapper: FC<ThumbnailWidgetProps> = ({\n projectName,\n entityType,\n entityId,\n updatedAt,\n icon,\n isPlayable,\n id,\n ...props\n}) => {\n const valid = projectName && entityType && entityId && updatedAt\n const url =\n projectName &&\n `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`\n\n return (\n <Wrapper className=\"thumbnail-widget\" key={url} id={id}>\n <Inner {...props}>{valid && <Image src={url} />}</Inner>\n {isPlayable && <StyledPlayableIcon />}\n </Wrapper>\n )\n}\n\nexport const ThumbnailWidget = memo(ThumbnailWidgetWrapper)\n"],"names":["PlayableIcon","jsxs","jsx","memo"],"mappings":";;;;;;AAKA,MAAM,UAAU,OAAO;AAAA;AAAA;AAAA;AAAA;AAMvB,MAAM,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrB,MAAM,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQrB,MAAM,qBAAqB,OAAOA,yBAAY;AAAA;AAAA;AAAA;AAc9C,MAAM,yBAAmD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACE,QAAA,QAAQ,eAAe,cAAc,YAAY;AACjD,QAAA,MACJ,eACA,iBAAiB,WAAW,IAAI,UAAU,KAAK,QAAQ,wBAAwB,SAAS;AAE1F,SACGC,2BAAAA,kBAAAA,KAAA,SAAA,EAAQ,WAAU,oBAA6B,IAC9C,UAAA;AAAA,IAACC,2BAAAA,kBAAAA,IAAA,OAAA,EAAO,GAAG,OAAQ,UAAA,0DAAU,OAAM,EAAA,KAAK,KAAK,EAAG,CAAA;AAAA,IAC/C,+DAAe,oBAAmB,CAAA,CAAA;AAAA,EAAA,EAAA,GAFM,GAG3C;AAEJ;AAEa,MAAA,kBAAkBC,WAAK,sBAAsB;;"}
@@ -1,4 +1,5 @@
1
1
  import { j as jsxRuntimeExports } from "../../../../../_virtual/jsx-runtime.es.js";
2
+ import { PlayableIcon } from "../../../components/PlayableIcon/PlayableIcon.es.js";
2
3
  import { memo } from "react";
3
4
  import styled from "styled-components";
4
5
  const Wrapper = styled.div`
@@ -20,20 +21,29 @@ const Image = styled.img`
20
21
  position: relative;
21
22
  width: 100%;
22
23
  height: 100%;
23
- object-fit: cover;
24
+ object-fit: contain;
24
25
  z-index: 20;
25
26
  `;
27
+ const StyledPlayableIcon = styled(PlayableIcon)`
28
+ right: 5px;
29
+ top: 5px;
30
+ `;
26
31
  const ThumbnailWidgetWrapper = ({
27
32
  projectName,
28
33
  entityType,
29
34
  entityId,
30
35
  updatedAt,
31
36
  icon,
37
+ isPlayable,
38
+ id,
32
39
  ...props
33
40
  }) => {
34
41
  const valid = projectName && entityType && entityId && updatedAt;
35
42
  const url = projectName && `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`;
36
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Wrapper, { className: "thumbnail-widget", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Inner, { ...props, children: valid && /* @__PURE__ */ jsxRuntimeExports.jsx(Image, { src: url }) }) }, url);
43
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Wrapper, { className: "thumbnail-widget", id, children: [
44
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Inner, { ...props, children: valid && /* @__PURE__ */ jsxRuntimeExports.jsx(Image, { src: url }) }),
45
+ isPlayable && /* @__PURE__ */ jsxRuntimeExports.jsx(StyledPlayableIcon, {})
46
+ ] }, url);
37
47
  };
38
48
  const ThumbnailWidget = memo(ThumbnailWidgetWrapper);
39
49
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"ThumbnailWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/ThumbnailWidget.tsx"],"sourcesContent":["import { Icon } from '@ynput/ayon-react-components'\nimport { FC, memo } from 'react'\nimport styled from 'styled-components'\n\nconst Wrapper = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px;\n`\n\nconst Inner = styled.div`\n position: relative;\n max-height: 100%;\n height: auto;\n width: 100%;\n aspect-ratio: 1.77;\n\n border-radius: 2px;\n overflow: hidden;\n`\n\nconst Image = styled.img`\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: 20;\n`\n\ninterface ThumbnailWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n projectName: string\n entityType: string\n entityId: string\n updatedAt?: string\n icon?: string | null\n}\n\nconst ThumbnailWidgetWrapper: FC<ThumbnailWidgetProps> = ({\n projectName,\n entityType,\n entityId,\n updatedAt,\n icon,\n ...props\n}) => {\n const valid = projectName && entityType && entityId && updatedAt\n const url =\n projectName &&\n `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`\n\n return (\n <Wrapper className=\"thumbnail-widget\" key={url}>\n <Inner {...props}>{valid && <Image src={url} />}</Inner>\n </Wrapper>\n )\n}\n\nexport const ThumbnailWidget = memo(ThumbnailWidgetWrapper)\n"],"names":["jsx"],"mappings":";;;AAIA,MAAM,UAAU,OAAO;AAAA;AAAA;AAAA;AAAA;AAMvB,MAAM,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrB,MAAM,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBrB,MAAM,yBAAmD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACE,QAAA,QAAQ,eAAe,cAAc,YAAY;AACjD,QAAA,MACJ,eACA,iBAAiB,WAAW,IAAI,UAAU,KAAK,QAAQ,wBAAwB,SAAS;AAE1F,SACGA,kCAAA,IAAA,SAAA,EAAQ,WAAU,oBACjB,gDAAC,OAAO,EAAA,GAAG,OAAQ,UAAA,+CAAU,OAAM,EAAA,KAAK,KAAK,EAAA,CAAG,KADP,GAE3C;AAEJ;AAEa,MAAA,kBAAkB,KAAK,sBAAsB;"}
1
+ {"version":3,"file":"ThumbnailWidget.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/ThumbnailWidget.tsx"],"sourcesContent":["import { PlayableIcon } from '@shared/components/PlayableIcon/PlayableIcon'\nimport { Icon } from '@ynput/ayon-react-components'\nimport { FC, memo } from 'react'\nimport styled from 'styled-components'\n\nconst Wrapper = styled.div`\n position: absolute;\n inset: 0;\n padding: 4px;\n`\n\nconst Inner = styled.div`\n position: relative;\n max-height: 100%;\n height: auto;\n width: 100%;\n aspect-ratio: 1.77;\n\n border-radius: 2px;\n overflow: hidden;\n`\n\nconst Image = styled.img`\n position: relative;\n width: 100%;\n height: 100%;\n object-fit: contain;\n z-index: 20;\n`\n\nconst StyledPlayableIcon = styled(PlayableIcon)`\n right: 5px;\n top: 5px;\n`\n\ninterface ThumbnailWidgetProps extends React.HTMLAttributes<HTMLDivElement> {\n projectName: string\n entityType: string\n entityId: string\n updatedAt?: string\n icon?: string | null\n isPlayable?: boolean\n}\n\nconst ThumbnailWidgetWrapper: FC<ThumbnailWidgetProps> = ({\n projectName,\n entityType,\n entityId,\n updatedAt,\n icon,\n isPlayable,\n id,\n ...props\n}) => {\n const valid = projectName && entityType && entityId && updatedAt\n const url =\n projectName &&\n `/api/projects/${projectName}/${entityType}s/${entityId}/thumbnail?updatedAt=${updatedAt}`\n\n return (\n <Wrapper className=\"thumbnail-widget\" key={url} id={id}>\n <Inner {...props}>{valid && <Image src={url} />}</Inner>\n {isPlayable && <StyledPlayableIcon />}\n </Wrapper>\n )\n}\n\nexport const ThumbnailWidget = memo(ThumbnailWidgetWrapper)\n"],"names":["jsxs","jsx"],"mappings":";;;;AAKA,MAAM,UAAU,OAAO;AAAA;AAAA;AAAA;AAAA;AAMvB,MAAM,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrB,MAAM,QAAQ,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQrB,MAAM,qBAAqB,OAAO,YAAY;AAAA;AAAA;AAAA;AAc9C,MAAM,yBAAmD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACE,QAAA,QAAQ,eAAe,cAAc,YAAY;AACjD,QAAA,MACJ,eACA,iBAAiB,WAAW,IAAI,UAAU,KAAK,QAAQ,wBAAwB,SAAS;AAE1F,SACGA,kCAAAA,KAAA,SAAA,EAAQ,WAAU,oBAA6B,IAC9C,UAAA;AAAA,IAACC,kCAAAA,IAAA,OAAA,EAAO,GAAG,OAAQ,UAAA,+CAAU,OAAM,EAAA,KAAK,KAAK,EAAG,CAAA;AAAA,IAC/C,oDAAe,oBAAmB,CAAA,CAAA;AAAA,EAAA,EAAA,GAFM,GAG3C;AAEJ;AAEa,MAAA,kBAAkB,KAAK,sBAAsB;"}
@@ -143,6 +143,11 @@ require("../ProjectTreeTable/context/ColumnSettingsContext.cjs.js");
143
143
  require("../ProjectTreeTable/context/ProjectTableContext.cjs.js");
144
144
  require("../ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");
145
145
  require("../ProjectTreeTable/context/SelectedRowsContext.cjs.js");
146
+ require("../../../../_virtual/runtime.cjs.js");
147
+ require("../../../../_virtual/semver.cjs.js");
148
+ require("react-redux");
149
+ require("custom-protocol-check");
150
+ require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");
146
151
  require("../ProjectTreeTable/context/ProjectDataContext.cjs.js");
147
152
  require("../ProjectTreeTable/widgets/CollapsedWidget.cjs.js");
148
153
  require("../ProjectTreeTable/widgets/DateWidget.cjs.js");
@@ -157,15 +162,11 @@ require("../ProjectTreeTable/ProjectTreeTable.styled.cjs.js");
157
162
  require("../ProjectTreeTable/components/SelectionCell.cjs.js");
158
163
  require("../ProjectTreeTable/components/RowSelectionHeader.cjs.js");
159
164
  require("../ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");
160
- require("../../../../_virtual/runtime.cjs.js");
161
- require("../../../../_virtual/semver.cjs.js");
162
- require("react-redux");
163
- require("custom-protocol-check");
164
- require("../ProjectTreeTable/components/GroupSettingsFallback.cjs.js");
165
165
  const versionsToRepresentations = require("./versionsToRepresentations.cjs.js");
166
166
  require("../DetailsPanel/DetailsPanel.styled.cjs.js");
167
167
  require("../DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");
168
168
  require("../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");
169
+ require("../../components/PlayableIcon/PlayableIcon.cjs.js");
169
170
  require("../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");
170
171
  require("../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");
171
172
  require("../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");
@@ -1 +1 @@
1
- {"version":3,"file":"RepresentationsList.cjs.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["useMemo","useState","groupResult","useCreateContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","Column","DetailsDialog"],"mappings":"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"}
1
+ {"version":3,"file":"RepresentationsList.cjs.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["useMemo","useState","groupResult","useCreateContextMenu","jsxs","Fragment","jsx","TablePanel","TreeTable","Column","DetailsDialog"],"mappings":"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"}
@@ -141,6 +141,11 @@ import "../ProjectTreeTable/context/ColumnSettingsContext.es.js";
141
141
  import "../ProjectTreeTable/context/ProjectTableContext.es.js";
142
142
  import "../ProjectTreeTable/context/ProjectTableQueriesContext.es.js";
143
143
  import "../ProjectTreeTable/context/SelectedRowsContext.es.js";
144
+ import "../../../../_virtual/runtime.es.js";
145
+ import "../../../../_virtual/semver.es.js";
146
+ import "react-redux";
147
+ import "custom-protocol-check";
148
+ import "../ProjectTreeTable/components/GroupSettingsFallback.es.js";
144
149
  import "../ProjectTreeTable/context/ProjectDataContext.es.js";
145
150
  import "../ProjectTreeTable/widgets/CollapsedWidget.es.js";
146
151
  import "../ProjectTreeTable/widgets/DateWidget.es.js";
@@ -155,15 +160,11 @@ import "../ProjectTreeTable/ProjectTreeTable.styled.es.js";
155
160
  import "../ProjectTreeTable/components/SelectionCell.es.js";
156
161
  import "../ProjectTreeTable/components/RowSelectionHeader.es.js";
157
162
  import "../ProjectTreeTable/widgets/LoadMoreWidget.es.js";
158
- import "../../../../_virtual/runtime.es.js";
159
- import "../../../../_virtual/semver.es.js";
160
- import "react-redux";
161
- import "custom-protocol-check";
162
- import "../ProjectTreeTable/components/GroupSettingsFallback.es.js";
163
163
  import versionsToRepresentations from "./versionsToRepresentations.es.js";
164
164
  import "../DetailsPanel/DetailsPanel.styled.es.js";
165
165
  import "../DetailsPanel/FeedFilters/FeedFilters.styled.es.js";
166
166
  import "../DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js";
167
+ import "../../components/PlayableIcon/PlayableIcon.es.js";
167
168
  import "../DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js";
168
169
  import "../DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.es.js";
169
170
  import "../DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.styled.es.js";
@@ -1 +1 @@
1
- {"version":3,"file":"RepresentationsList.es.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["jsxs","Fragment","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,UAAU;AAAA,EACd;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EAAA;AAEX;AAMO,MAAM,sBAAsB,CAAC,EAAE,WAAW,CAAA,QAAgB;;AAEzD,QAAA,kBAAkB,QAAQ,MAAM,0BAA0B,QAAQ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE3F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAyB,KAAK;AAC5D,QAAA,yBAAwB,qBAAgB,KAAK,CAAC,QAAQ,IAAI,OAAO,UAAU,MAAnD,mBAAsD;AAEpF,QAAM,CAAC,UAAU,WAAW,IAAI,SAAmB,CAAA,CAAE;AAE/C,QAAA,OAAO,QAAQ,MAAM;AAElB,WAAA,YAAY,iBAAiB,MAAM;AAAA,EAAA,GACzC,CAAC,eAAe,CAAC;AAEd,QAAA,uBAAuB,CAAC,aAAqB;AAErC,gBAAA,CAAC,QAAQ,CAAC;AAAA,EACxB;AAEM,QAAA,aAAa,CAAC,MAAW;AACR,yBAAA,EAAE,KAAK,KAAK,EAAE;AAAA,EACrC;AAEM,QAAA,eAAe,CAAC,OAAe;AAAA,IACnC;AAAA,MACE,OAAO;AAAA,MACP,SAAS,MAAM,cAAc,EAAE;AAAA,MAC/B,MAAM;AAAA,IAAA;AAAA,EAEV;AAEA,QAAM,CAAC,WAAW,IAAI,qBAAqB,EAAE;AAEvC,QAAA,oBAAoB,CAAC,MAAW;AAC9B,UAAA,KAAK,EAAE,KAAK,KAAK;AAEvB,QAAI,IAAI;AAEN,2BAAqB,EAAE;AAEvB,kBAAY,EAAE,eAAe,aAAa,EAAE,CAAC;AAAA,IAAA;AAAA,EAEjD;AAEA,SAEIA,kCAAA,KAAAC,4BAAA,EAAA,UAAA;AAAA,IAAAC,sCAAC,YACC,EAAA,UAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,YAAU;AAAA,QACV,cAAa;AAAA,QACb,OAAO;AAAA,QACP,cAAa;AAAA,QACb,eAAc;AAAA,QACd,eAAe,SAAS,CAAC;AAAA,QACzB;AAAA,QACA,eAAe;AAAA,QAEd,UAAA,QAAQ,IAAI,CAAC,QAAQ;AAElB,iBAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,OAAO,IAAI;AAAA,cACX,QAAQ,IAAI;AAAA,cACZ,UAAU,IAAI;AAAA,cACd,OAAO,EAAE,OAAO,IAAI,MAAM;AAAA,YAAA;AAAA,YAJrB,IAAI;AAAA,UAKX;AAAA,QAEH,CAAA;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,IAEC,cACCA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,WAAW,CAAC,UAAU;AAAA,QACtB,SAAS,CAAC,CAAC;AAAA,QACX,QAAQ,MAAM,cAAc,KAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACnC,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"RepresentationsList.es.js","sources":["../../../../../src/containers/RepresentationsList/RepresentationsList.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { TablePanel } from '@ynput/ayon-react-components'\n\nimport { TreeTable } from 'primereact/treetable'\nimport { Column } from 'primereact/column'\n\nimport { groupResult } from '@shared/util'\nimport { useCreateContextMenu } from '@shared/containers/ContextMenu'\nimport { DetailsDialog } from '@shared/components'\nimport versionsToRepresentations from './versionsToRepresentations'\nimport { DetailsPanelEntityData } from '@shared/api'\n\nconst columns = [\n {\n field: 'name',\n header: 'Name',\n width: 90,\n expander: true,\n },\n {\n field: 'folderName',\n header: 'Folder',\n width: 130,\n },\n {\n field: 'productName',\n header: 'Product',\n width: 130,\n },\n {\n field: 'Product type',\n header: 'productType',\n width: 110,\n },\n]\n\ntype Props = {\n entities: DetailsPanelEntityData[]\n}\n\nexport const RepresentationsList = ({ entities = [] }: Props) => {\n // merge all entities data into one array of entities\n const representations = useMemo(() => versionsToRepresentations(entities) || [], [entities])\n\n const [showDetail, setShowDetail] = useState<false | string>(false)\n const showDetailProjectName = representations.find((rep) => rep.id === showDetail)?.projectName\n\n const [selected, setSelected] = useState<string[]>([])\n\n const data = useMemo(() => {\n // @ts-expect-error - groupResult is not typed\n return groupResult(representations, 'name')\n }, [representations])\n\n const onRepSelectionChange = (entityId: string) => {\n // set focused state\n setSelected([entityId])\n }\n\n const onRowClick = (e: any) => {\n onRepSelectionChange(e.node.data.id)\n }\n\n const ctxMenuItems = (id: string) => [\n {\n label: 'Representation detail',\n command: () => setShowDetail(id),\n icon: 'database',\n },\n ]\n\n const [ctxMenuShow] = useCreateContextMenu([])\n\n const handleContextMenu = (e: any) => {\n const id = e.node.data.id\n\n if (id) {\n // update focused representations\n onRepSelectionChange(id)\n // open context menu\n ctxMenuShow(e.originalEvent, ctxMenuItems(id))\n }\n }\n\n return (\n <>\n <TablePanel>\n <TreeTable\n scrollable\n scrollHeight=\"100%\"\n value={data}\n emptyMessage=\"No representation found\"\n selectionMode=\"single\"\n selectionKeys={selected[0]}\n onRowClick={onRowClick}\n onContextMenu={handleContextMenu}\n >\n {columns.map((col) => {\n return (\n <Column\n key={col.field}\n field={col.field}\n header={col.header}\n expander={col.expander}\n style={{ width: col.width }}\n />\n )\n })}\n </TreeTable>\n </TablePanel>\n\n {showDetail && (\n <DetailsDialog\n projectName={showDetailProjectName}\n entityType={'representation'}\n entityIds={[showDetail]}\n visible={!!showDetail}\n onHide={() => setShowDetail(false)}\n />\n )}\n </>\n )\n}\n"],"names":["jsxs","Fragment","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,UAAU;AAAA,EACd;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EAAA;AAEX;AAMO,MAAM,sBAAsB,CAAC,EAAE,WAAW,CAAA,QAAgB;;AAEzD,QAAA,kBAAkB,QAAQ,MAAM,0BAA0B,QAAQ,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE3F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAyB,KAAK;AAC5D,QAAA,yBAAwB,qBAAgB,KAAK,CAAC,QAAQ,IAAI,OAAO,UAAU,MAAnD,mBAAsD;AAEpF,QAAM,CAAC,UAAU,WAAW,IAAI,SAAmB,CAAA,CAAE;AAE/C,QAAA,OAAO,QAAQ,MAAM;AAElB,WAAA,YAAY,iBAAiB,MAAM;AAAA,EAAA,GACzC,CAAC,eAAe,CAAC;AAEd,QAAA,uBAAuB,CAAC,aAAqB;AAErC,gBAAA,CAAC,QAAQ,CAAC;AAAA,EACxB;AAEM,QAAA,aAAa,CAAC,MAAW;AACR,yBAAA,EAAE,KAAK,KAAK,EAAE;AAAA,EACrC;AAEM,QAAA,eAAe,CAAC,OAAe;AAAA,IACnC;AAAA,MACE,OAAO;AAAA,MACP,SAAS,MAAM,cAAc,EAAE;AAAA,MAC/B,MAAM;AAAA,IAAA;AAAA,EAEV;AAEA,QAAM,CAAC,WAAW,IAAI,qBAAqB,EAAE;AAEvC,QAAA,oBAAoB,CAAC,MAAW;AAC9B,UAAA,KAAK,EAAE,KAAK,KAAK;AAEvB,QAAI,IAAI;AAEN,2BAAqB,EAAE;AAEvB,kBAAY,EAAE,eAAe,aAAa,EAAE,CAAC;AAAA,IAAA;AAAA,EAEjD;AAEA,SAEIA,kCAAA,KAAAC,4BAAA,EAAA,UAAA;AAAA,IAAAC,sCAAC,YACC,EAAA,UAAAA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,YAAU;AAAA,QACV,cAAa;AAAA,QACb,OAAO;AAAA,QACP,cAAa;AAAA,QACb,eAAc;AAAA,QACd,eAAe,SAAS,CAAC;AAAA,QACzB;AAAA,QACA,eAAe;AAAA,QAEd,UAAA,QAAQ,IAAI,CAAC,QAAQ;AAElB,iBAAAA,kCAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,OAAO,IAAI;AAAA,cACX,QAAQ,IAAI;AAAA,cACZ,UAAU,IAAI;AAAA,cACd,OAAO,EAAE,OAAO,IAAI,MAAM;AAAA,YAAA;AAAA,YAJrB,IAAI;AAAA,UAKX;AAAA,QAEH,CAAA;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,IAEC,cACCA,kCAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,WAAW,CAAC,UAAU;AAAA,QACtB,SAAS,CAAC,CAAC;AAAA,QACX,QAAQ,MAAM,cAAc,KAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACnC,GAEJ;AAEJ;"}
@@ -68,7 +68,7 @@ require("../api/queries/review/getReview.cjs.js");
68
68
  require("../api/queries/review/updateReview.cjs.js");
69
69
  require("../api/queries/system/getSystem.cjs.js");
70
70
  require("../api/queries/userDashboard/getUserDashboard.cjs.js");
71
- require("../api/queries/users/getUsers.cjs.js");
71
+ const getUsers = require("../api/queries/users/getUsers.cjs.js");
72
72
  require("../api/queries/users/updateUsers.cjs.js");
73
73
  require("../api/queries/watchers/getWatchers.cjs.js");
74
74
  require("../api/queries/permissions/getPermissions.cjs.js");
@@ -93,6 +93,9 @@ const DetailsPanelProvider = ({
93
93
  defaultTab = "activity",
94
94
  ...forwardedProps
95
95
  }) => {
96
+ var _a;
97
+ const { data: currentUser } = getUsers.useGetCurrentUserQuery();
98
+ const isDeveloperMode = ((_a = currentUser == null ? void 0 : currentUser.attrib) == null ? void 0 : _a.developerMode) ?? false;
96
99
  const [panelOpenByScope, setPanelOpenByScope] = React.useState({});
97
100
  const [feedAnnotations, setFeedAnnotations] = React.useState([]);
98
101
  const getOpenForScope = React.useCallback(
@@ -172,6 +175,7 @@ const DetailsPanelProvider = ({
172
175
  closePip,
173
176
  feedAnnotations,
174
177
  setFeedAnnotations,
178
+ isDeveloperMode,
175
179
  ...forwardedProps
176
180
  };
177
181
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(DetailsPanelContext.Provider, { value, children });
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelContext.cjs.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useCallback, ReactNode, useState } from 'react'\nimport { useLocalStorage } from '@shared/hooks'\nimport { DetailsPanelEntityType } from '@shared/api'\nimport type { UserModel } from '@shared/api'\nimport { useLocation, useNavigate, useParams } from 'react-router-dom'\nimport { useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\n\nexport type FeedFilters = 'activity' | 'comments' | 'versions' | 'checklists'\n\nexport type DetailsPanelTab = FeedFilters | 'attribs' | 'files'\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n setTab: (scope: string, tab: DetailsPanelTab) => void\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'activity',\n ...forwardedProps\n}) => {\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n if (tabsByScope[scope]) {\n return tabsByScope[scope]\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n const setTab = useCallback(\n (scope: string, tab: DetailsPanelTab) => {\n // Create a new state object based on current tabsByScope\n const newState = { ...tabsByScope }\n newState[scope] = tab\n\n // Update the state with the new object\n setTabsByScope(newState)\n },\n [tabsByScope, setTabsByScope],\n )\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n setHighlightedActivities([])\n }, [])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n setTab,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n feedAnnotations,\n setFeedAnnotations,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getTabForScope, setTab, getOpenForScope, setPanelOpen } = useDetailsPanelContext()\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab: getTabForScope(scope),\n setTab: (tab: DetailsPanelTab) => setTab(scope, tab),\n isFeed: ['activity', 'comments', 'versions', 'checklists'].includes(getTabForScope(scope)),\n }\n}\n"],"names":["createContext","useState","useCallback","useLocalStorage","pip","jsx","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"DetailsPanelContext.cjs.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useCallback, ReactNode, useState } from 'react'\nimport { useLocalStorage } from '@shared/hooks'\nimport { DetailsPanelEntityType, useGetCurrentUserQuery } from '@shared/api'\nimport type { UserModel } from '@shared/api'\nimport { useLocation, useNavigate, useParams } from 'react-router-dom'\nimport { useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\n\nexport type FeedFilters = 'activity' | 'comments' | 'versions' | 'checklists'\n\nexport type DetailsPanelTab = FeedFilters | 'attribs' | 'files'\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n setTab: (scope: string, tab: DetailsPanelTab) => void\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'activity',\n ...forwardedProps\n}) => {\n // get current user\n const { data: currentUser } = useGetCurrentUserQuery()\n const isDeveloperMode = currentUser?.attrib?.developerMode ?? false\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n if (tabsByScope[scope]) {\n return tabsByScope[scope]\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n const setTab = useCallback(\n (scope: string, tab: DetailsPanelTab) => {\n // Create a new state object based on current tabsByScope\n const newState = { ...tabsByScope }\n newState[scope] = tab\n\n // Update the state with the new object\n setTabsByScope(newState)\n },\n [tabsByScope, setTabsByScope],\n )\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n setHighlightedActivities([])\n }, [])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n setTab,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getTabForScope, setTab, getOpenForScope, setPanelOpen } = useDetailsPanelContext()\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab: getTabForScope(scope),\n setTab: (tab: DetailsPanelTab) => setTab(scope, tab),\n isFeed: ['activity', 'comments', 'versions', 'checklists'].includes(getTabForScope(scope)),\n }\n}\n"],"names":["createContext","useGetCurrentUserQuery","useState","useCallback","useLocalStorage","pip","jsx","useContext"],"mappings":"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"}
@@ -66,7 +66,7 @@ import "../api/queries/review/getReview.es.js";
66
66
  import "../api/queries/review/updateReview.es.js";
67
67
  import "../api/queries/system/getSystem.es.js";
68
68
  import "../api/queries/userDashboard/getUserDashboard.es.js";
69
- import "../api/queries/users/getUsers.es.js";
69
+ import { useGetCurrentUserQuery } from "../api/queries/users/getUsers.es.js";
70
70
  import "../api/queries/users/updateUsers.es.js";
71
71
  import "../api/queries/watchers/getWatchers.es.js";
72
72
  import "../api/queries/permissions/getPermissions.es.js";
@@ -91,6 +91,9 @@ const DetailsPanelProvider = ({
91
91
  defaultTab = "activity",
92
92
  ...forwardedProps
93
93
  }) => {
94
+ var _a;
95
+ const { data: currentUser } = useGetCurrentUserQuery();
96
+ const isDeveloperMode = ((_a = currentUser == null ? void 0 : currentUser.attrib) == null ? void 0 : _a.developerMode) ?? false;
94
97
  const [panelOpenByScope, setPanelOpenByScope] = useState({});
95
98
  const [feedAnnotations, setFeedAnnotations] = useState([]);
96
99
  const getOpenForScope = useCallback(
@@ -170,6 +173,7 @@ const DetailsPanelProvider = ({
170
173
  closePip,
171
174
  feedAnnotations,
172
175
  setFeedAnnotations,
176
+ isDeveloperMode,
173
177
  ...forwardedProps
174
178
  };
175
179
  return /* @__PURE__ */ jsxRuntimeExports.jsx(DetailsPanelContext.Provider, { value, children });
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsPanelContext.es.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useCallback, ReactNode, useState } from 'react'\nimport { useLocalStorage } from '@shared/hooks'\nimport { DetailsPanelEntityType } from '@shared/api'\nimport type { UserModel } from '@shared/api'\nimport { useLocation, useNavigate, useParams } from 'react-router-dom'\nimport { useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\n\nexport type FeedFilters = 'activity' | 'comments' | 'versions' | 'checklists'\n\nexport type DetailsPanelTab = FeedFilters | 'attribs' | 'files'\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n setTab: (scope: string, tab: DetailsPanelTab) => void\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'activity',\n ...forwardedProps\n}) => {\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n if (tabsByScope[scope]) {\n return tabsByScope[scope]\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n const setTab = useCallback(\n (scope: string, tab: DetailsPanelTab) => {\n // Create a new state object based on current tabsByScope\n const newState = { ...tabsByScope }\n newState[scope] = tab\n\n // Update the state with the new object\n setTabsByScope(newState)\n },\n [tabsByScope, setTabsByScope],\n )\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n setHighlightedActivities([])\n }, [])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n setTab,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n feedAnnotations,\n setFeedAnnotations,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getTabForScope, setTab, getOpenForScope, setPanelOpen } = useDetailsPanelContext()\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab: getTabForScope(scope),\n setTab: (tab: DetailsPanelTab) => setTab(scope, tab),\n isFeed: ['activity', 'comments', 'versions', 'checklists'].includes(getTabForScope(scope)),\n }\n}\n"],"names":["pip","jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFA,MAAM,sBAAsB,cAAmD,MAAS;AAQjF,MAAM,uBAA4D,CAAC;AAAA,EACxE;AAAA,EACA,aAAa;AAAA,EACb,GAAG;AACL,MAAM;AAEJ,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAA2B,CAAA,CAAE;AAC7E,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAoC,CAAA,CAAE;AAGpF,QAAM,kBAAkB;AAAA,IACtB,CAAC,UAA2B;AAEtB,UAAA,iBAAiB,KAAK,GAAG;AAC3B,eAAO,iBAAiB,KAAK;AAAA,MAAA;AAIxB,aAAA;AAAA,IACT;AAAA,IACA,CAAC,gBAAgB;AAAA,EACnB;AAEA,QAAM,eAAe;AAAA,IACnB,CAAC,OAAe,WAAoB;AAE5B,YAAA,WAAW,EAAE,GAAG,iBAAiB;AACvC,eAAS,KAAK,IAAI;AAGlB,0BAAoB,QAAQ;AAAA,IAC9B;AAAA,IACA,CAAC,gBAAgB;AAAA,EACnB;AAGM,QAAA,CAAC,aAAa,cAAc,IAAI;AAAA,IACpC;AAAA,IACA,CAAA;AAAA,EACF;AAGA,QAAM,iBAAiB;AAAA,IACrB,CAAC,UAAmC;AAE9B,UAAA,YAAY,KAAK,GAAG;AACtB,eAAO,YAAY,KAAK;AAAA,MAAA;AAInB,aAAA;AAAA,IACT;AAAA,IACA,CAAC,aAAa,UAAU;AAAA,EAC1B;AAGA,QAAM,SAAS;AAAA,IACb,CAAC,OAAe,QAAyB;AAEjC,YAAA,WAAW,EAAE,GAAG,YAAY;AAClC,eAAS,KAAK,IAAI;AAGlB,qBAAe,QAAQ;AAAA,IACzB;AAAA,IACA,CAAC,aAAa,cAAc;AAAA,EAC9B;AAGA,QAAM,CAAC,UAAU,WAAW,IAAI,SAA0B,IAAI;AAGxD,QAAA,eAAe,YAAqD,CAAC,WAAW;AACpF,gBAAY,MAAM;AAAA,EACpB,GAAG,EAAE;AAGC,QAAA,gBAAgB,YAAY,MAAM;AACtC,gBAAY,IAAI;AAChB,6BAAyB,CAAA,CAAE;AAAA,EAC7B,GAAG,EAAE;AAEL,QAAM,CAAC,KAAK,MAAM,IAAI,SAAiC,IAAI;AAErD,QAAA,UAAU,YAAY,CAACA,SAAyB;AACpD,WAAOA,IAAG;AAAA,EACZ,GAAG,EAAE;AACC,QAAA,WAAW,YAAY,MAAM;AACjC,WAAO,IAAI;AAAA,EACb,GAAG,EAAE;AAEL,QAAM,CAAC,uBAAuB,wBAAwB,IAAI,SAAmB,CAAA,CAAE;AAE/E,QAAM,QAAQ;AAAA;AAAA,IAEZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL;AAEA,SAAQC,kCAAAA,IAAA,oBAAoB,UAApB,EAA6B,OAAe,SAAS,CAAA;AAC/D;AAGO,MAAM,yBAAyB,MAA+B;AAC7D,QAAA,UAAU,WAAW,mBAAmB;AAC9C,MAAI,YAAY,QAAW;AACnB,UAAA,IAAI,MAAM,uDAAuD;AAAA,EAAA;AAElE,SAAA;AACT;AAGa,MAAA,wBAAwB,CAAC,UAAkB;AACtD,QAAM,EAAE,gBAAgB,QAAQ,iBAAiB,aAAA,IAAiB,uBAAuB;AAElF,SAAA;AAAA,IACL,QAAQ,gBAAgB,KAAK;AAAA,IAC7B,SAAS,CAAC,WAAoB,aAAa,OAAO,MAAM;AAAA,IACxD,YAAY,eAAe,KAAK;AAAA,IAChC,QAAQ,CAAC,QAAyB,OAAO,OAAO,GAAG;AAAA,IACnD,QAAQ,CAAC,YAAY,YAAY,YAAY,YAAY,EAAE,SAAS,eAAe,KAAK,CAAC;AAAA,EAC3F;AACF;"}
1
+ {"version":3,"file":"DetailsPanelContext.es.js","sources":["../../../../src/context/DetailsPanelContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useCallback, ReactNode, useState } from 'react'\nimport { useLocalStorage } from '@shared/hooks'\nimport { DetailsPanelEntityType, useGetCurrentUserQuery } from '@shared/api'\nimport type { UserModel } from '@shared/api'\nimport { useLocation, useNavigate, useParams } from 'react-router-dom'\nimport { useSearchParams } from 'react-router-dom'\nimport { SavedAnnotationMetadata } from '@shared/containers'\n\nexport type FeedFilters = 'activity' | 'comments' | 'versions' | 'checklists'\n\nexport type DetailsPanelTab = FeedFilters | 'attribs' | 'files'\n\nexport type SlideOut = {\n entityId: string\n entityType: DetailsPanelEntityType\n projectName: string\n}\n\nexport type DetailsPanelPip = {\n entityType: DetailsPanelEntityType\n entities: { id: string; projectName: string }[]\n scope: string\n}\n\nexport interface OpenStateByScope {\n [scope: string]: boolean\n}\n\n// Create a new interface for managing tab state by scope\nexport interface TabStateByScope {\n [scope: string]: DetailsPanelTab\n}\n\n// these props get forwarded to the details panel value\n// it's mainly redux callbacks that cannot be used in shared library\nexport interface DetailsPanelContextProps {\n dispatch?: any // this is a redux dispatch function and it's quite annoying we need to do this\n user: UserModel\n viewer?: {\n reviewableIds: string[]\n taskId?: string | null\n folderId?: string | null\n }\n // redux callback actions\n onOpenImage?: (args: any) => void\n onGoToFrame?: (frame: number) => void\n onOpenViewer?: (args: any) => void\n onUpdateEntity?: (data: { operations: any[]; entityType: string }) => void\n // route hooks\n useParams: typeof useParams\n useNavigate: typeof useNavigate\n useLocation: typeof useLocation\n useSearchParams: typeof useSearchParams\n feedAnnotationsEnabled?: boolean\n}\n\n// Interface for our simplified context\nexport interface DetailsPanelContextType extends DetailsPanelContextProps {\n // user\n isDeveloperMode: boolean\n // Open state for the panel by scope\n panelOpenByScope: OpenStateByScope\n getOpenForScope: (scope: string) => boolean\n setPanelOpen: (scope: string, isOpen: boolean) => void\n setPanelOpenByScope: (newState: OpenStateByScope) => void\n\n // Tab preferences by scope\n tabsByScope: TabStateByScope\n getTabForScope: (scope: string) => DetailsPanelTab\n setTab: (scope: string, tab: DetailsPanelTab) => void\n\n // Slide out state\n slideOut: null | SlideOut\n openSlideOut: (slideOut: SlideOut) => void\n closeSlideOut: () => void\n\n // Highlighted activities\n highlightedActivities: string[]\n setHighlightedActivities: (activities: string[]) => void\n\n // PiP state\n pip: DetailsPanelPip | null\n openPip: (pip: DetailsPanelPip) => void\n closePip: () => void\n\n // Annotations\n feedAnnotations: SavedAnnotationMetadata[]\n setFeedAnnotations: (annotations: SavedAnnotationMetadata[]) => void\n}\n\n// Create the context\nconst DetailsPanelContext = createContext<DetailsPanelContextType | undefined>(undefined)\n\n// Provider component\nexport interface DetailsPanelProviderProps extends DetailsPanelContextProps {\n children: ReactNode\n defaultTab?: DetailsPanelTab\n}\n\nexport const DetailsPanelProvider: React.FC<DetailsPanelProviderProps> = ({\n children,\n defaultTab = 'activity',\n ...forwardedProps\n}) => {\n // get current user\n const { data: currentUser } = useGetCurrentUserQuery()\n const isDeveloperMode = currentUser?.attrib?.developerMode ?? false\n\n // keep track of the currently open panel by scope\n const [panelOpenByScope, setPanelOpenByScope] = useState<OpenStateByScope>({})\n const [feedAnnotations, setFeedAnnotations] = useState<SavedAnnotationMetadata[]>([])\n\n // get the current open state for a specific scope\n const getOpenForScope = useCallback(\n (scope: string): boolean => {\n // Check if we have a saved preference for this scope\n if (panelOpenByScope[scope]) {\n return panelOpenByScope[scope]\n }\n\n // Fall back to default\n return false\n },\n [panelOpenByScope],\n )\n // Set open state for a scope\n const setPanelOpen = useCallback(\n (scope: string, isOpen: boolean) => {\n // Create a new state object based on current open state\n const newState = { ...panelOpenByScope }\n newState[scope] = isOpen\n\n // Update the state with the new object\n setPanelOpenByScope(newState)\n },\n [panelOpenByScope],\n )\n\n // Use localStorage to persist tab preferences by scope\n const [tabsByScope, setTabsByScope] = useLocalStorage<TabStateByScope>(\n 'details/tabs-by-scope',\n {},\n )\n\n // Get the current tab for a specific scope\n const getTabForScope = useCallback(\n (scope: string): DetailsPanelTab => {\n // Check if we have a saved preference for this scope\n if (tabsByScope[scope]) {\n return tabsByScope[scope]\n }\n\n // Fall back to default\n return defaultTab\n },\n [tabsByScope, defaultTab],\n )\n\n // Set tab for a scope\n const setTab = useCallback(\n (scope: string, tab: DetailsPanelTab) => {\n // Create a new state object based on current tabsByScope\n const newState = { ...tabsByScope }\n newState[scope] = tab\n\n // Update the state with the new object\n setTabsByScope(newState)\n },\n [tabsByScope, setTabsByScope],\n )\n\n // is the slide out open?\n const [slideOut, setSlideOut] = useState<null | SlideOut>(null)\n\n // open the slide out\n const openSlideOut = useCallback<DetailsPanelContextType['openSlideOut']>((params) => {\n setSlideOut(params)\n }, [])\n\n // close the slide out\n const closeSlideOut = useCallback(() => {\n setSlideOut(null)\n setHighlightedActivities([])\n }, [])\n\n const [pip, setPip] = useState<DetailsPanelPip | null>(null)\n\n const openPip = useCallback((pip: DetailsPanelPip) => {\n setPip(pip)\n }, [])\n const closePip = useCallback(() => {\n setPip(null)\n }, [])\n\n const [highlightedActivities, setHighlightedActivities] = useState<string[]>([])\n\n const value = {\n // open state for the panel by scope\n panelOpenByScope,\n getOpenForScope,\n setPanelOpen,\n setPanelOpenByScope,\n // tab preferences\n tabsByScope,\n getTabForScope,\n setTab,\n // slide out state\n slideOut,\n openSlideOut,\n closeSlideOut,\n // highlighted activities\n highlightedActivities,\n setHighlightedActivities,\n // PiP state\n pip,\n openPip,\n closePip,\n feedAnnotations,\n setFeedAnnotations,\n isDeveloperMode,\n ...forwardedProps,\n }\n\n return <DetailsPanelContext.Provider value={value}>{children}</DetailsPanelContext.Provider>\n}\n\n// Custom hook to use the details context\nexport const useDetailsPanelContext = (): DetailsPanelContextType => {\n const context = useContext(DetailsPanelContext)\n if (context === undefined) {\n throw new Error('useDetailsPanel must be used within a DetailsProvider')\n }\n return context\n}\n\n// Add a specialized hook for using a panel in a specific scope\nexport const useScopedDetailsPanel = (scope: string) => {\n const { getTabForScope, setTab, getOpenForScope, setPanelOpen } = useDetailsPanelContext()\n\n return {\n isOpen: getOpenForScope(scope),\n setOpen: (isOpen: boolean) => setPanelOpen(scope, isOpen),\n currentTab: getTabForScope(scope),\n setTab: (tab: DetailsPanelTab) => setTab(scope, tab),\n isFeed: ['activity', 'comments', 'versions', 'checklists'].includes(getTabForScope(scope)),\n }\n}\n"],"names":["pip","jsx"],"mappings":"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"}
@@ -54,5 +54,6 @@ const confirmDelete = ({
54
54
  ...props
55
55
  });
56
56
  };
57
+ exports.ConfirmDialog = confirmdialog_esm.ConfirmDialog;
57
58
  exports.confirmDelete = confirmDelete;
58
59
  //# sourceMappingURL=confirmDelete.cjs.js.map