@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
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("../../../../../_virtual/jsx-runtime.cjs.js");
4
+ const ayonReactComponents = require("@ynput/ayon-react-components");
5
+ const clsx = require("clsx");
6
+ const styled = require("styled-components");
7
+ const StyledWidget = styled.div`
8
+ display: flex;
9
+ gap: var(--base-gap-small);
10
+ align-items: center;
11
+ width: 100%;
12
+ height: 100%;
13
+ overflow: hidden;
14
+ border-radius: var(--border-radius-m);
15
+
16
+ &.item {
17
+ padding: 4px 2px;
18
+ border-radius: 0;
19
+
20
+ &:hover {
21
+ background-color: var(--md-sys-color-surface-container-hover);
22
+ }
23
+ }
24
+
25
+ &.selected {
26
+ background-color: var(--md-sys-color-primary-container);
27
+
28
+ &:hover {
29
+ background-color: var(--md-sys-color-primary-container-hover);
30
+ }
31
+ }
32
+ `;
33
+ const StyledValuesContainer = styled.div`
34
+ flex: 1;
35
+ display: flex;
36
+ gap: var(--base-gap-small);
37
+ align-items: center;
38
+ overflow: hidden;
39
+ border-radius: var(--border-radius-m);
40
+ padding: 0px 2px;
41
+ `;
42
+ const StyledValueWrapper = styled.div`
43
+ display: flex;
44
+ gap: var(--base-gap-small);
45
+ align-items: center;
46
+
47
+ overflow: hidden;
48
+ max-width: 100%;
49
+ min-width: 20px;
50
+ `;
51
+ const StyledValue = styled.span`
52
+ overflow: hidden;
53
+ white-space: nowrap;
54
+ width: 100%;
55
+ text-overflow: ellipsis;
56
+ text-align: left;
57
+ border-radius: var(--border-radius-m);
58
+ padding: 0px 2px;
59
+
60
+ &.placeholder {
61
+ color: var(--md-sys-color-outline);
62
+ }
63
+ `;
64
+ const StyledImg = styled.img`
65
+ width: 20px;
66
+ height: 20px;
67
+ object-fit: cover;
68
+
69
+ &.avatar {
70
+ border-radius: 50%;
71
+ }
72
+ `;
73
+ const StyledExpandButton = styled.div`
74
+ width: 32px;
75
+ height: 32px;
76
+ border-radius: var(--border-radius-m);
77
+ display: flex;
78
+ justify-content: center;
79
+ align-items: center;
80
+ cursor: pointer;
81
+
82
+ &:hover {
83
+ background-color: var(--md-sys-color-surface-container-highest-hover);
84
+ }
85
+
86
+ &.open {
87
+ background-color: transparent;
88
+ }
89
+ `;
90
+ const StyledExpandIcon = styled(ayonReactComponents.Icon)`
91
+ transition: rotate 0.2s;
92
+ `;
93
+ const EnumCellValue = ({
94
+ selectedOptions,
95
+ placeholder,
96
+ hasMultipleValues,
97
+ isMultiSelect,
98
+ isOpen,
99
+ isItem,
100
+ isSelected,
101
+ isReadOnly,
102
+ className,
103
+ pt,
104
+ ...props
105
+ }) => {
106
+ const {
107
+ icon: ptIcon = {},
108
+ img: ptImg = {},
109
+ value: ptValue = {},
110
+ expand: ptExpand = {},
111
+ close: ptClose = {}
112
+ } = pt || {};
113
+ const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon;
114
+ const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg;
115
+ const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue;
116
+ const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand;
117
+ const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose;
118
+ const allOptionsHaveIcon = selectedOptions.every((option) => option.icon);
119
+ const showLabels = !hasMultipleValues || !allOptionsHaveIcon;
120
+ const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem;
121
+ const isPlaceholder = !selectedOptions.length && placeholder;
122
+ if (isPlaceholder) {
123
+ selectedOptions = [
124
+ {
125
+ label: placeholder,
126
+ value: ""
127
+ }
128
+ ];
129
+ }
130
+ return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(StyledWidget, { className: clsx(className, { selected: isSelected, item: isItem }), ...props, children: [
131
+ /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(StyledValuesContainer, { children: selectedOptions.map((option, i) => /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(StyledValueWrapper, { children: [
132
+ option.icon && checkForImgSrc(option.icon) ? /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
133
+ StyledImg,
134
+ {
135
+ src: option.icon,
136
+ className: clsx({ avatar: checkAvatarImg(option.icon) }, imgClassName),
137
+ style: imgStyle,
138
+ ...imgRest
139
+ }
140
+ ) : option.icon ? /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
141
+ ayonReactComponents.Icon,
142
+ {
143
+ icon: option.icon,
144
+ style: { color: option.color, ...iconStyle },
145
+ className: iconClassName,
146
+ ...iconRest
147
+ }
148
+ ) : null,
149
+ (showLabels || !option.icon) && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
150
+ StyledValue,
151
+ {
152
+ style: {
153
+ color: backgroundColor ? "inherit" : option.color,
154
+ backgroundColor: backgroundColor ? option.color || "var(--md-sys-color-surface-container)" : "transparent",
155
+ ...valueStyle
156
+ },
157
+ className: clsx({ placeholder: isPlaceholder }, valueClassName),
158
+ "aria-label": option.label,
159
+ ...valueRest,
160
+ children: option.label
161
+ }
162
+ )
163
+ ] }, option.value.toString() + i)) }),
164
+ !isItem && !isReadOnly && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(StyledExpandButton, { className: clsx("expand", { open: isOpen }, expandClassName), children: /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
165
+ StyledExpandIcon,
166
+ {
167
+ icon: "expand_more",
168
+ style: { rotate: isOpen ? "180deg" : "0", ...expandStyle },
169
+ "aria-label": "Expand options",
170
+ ...expandRest
171
+ }
172
+ ) }),
173
+ isItem && isSelected && isMultiSelect && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
174
+ ayonReactComponents.Icon,
175
+ {
176
+ icon: "close",
177
+ style: { marginLeft: "auto", marginRight: 4, ...closeStyle },
178
+ "aria-label": "Deselect item",
179
+ className: clsx("close", closeClassName),
180
+ ...closeRest
181
+ }
182
+ )
183
+ ] });
184
+ };
185
+ const checkForImgSrc = (icon = "") => {
186
+ return icon.startsWith("/") || icon.startsWith("./") || icon.startsWith("../") || icon.startsWith("http://") || icon.startsWith("https://");
187
+ };
188
+ const checkAvatarImg = (src) => src.includes("avatar");
189
+ exports.EnumCellValue = EnumCellValue;
190
+ //# sourceMappingURL=EnumCellValue.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnumCellValue.cjs.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import { AttributeEnumItem } from '@shared/api'\nimport { Icon, IconProps } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\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\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 flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\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 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\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 StyledExpandButton = styled.div`\n width: 32px;\n height: 32px;\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-highest-hover);\n }\n\n &.open {\n background-color: transparent;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n transition: rotate 0.2s;\n`\n\nexport interface 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 pt?: {\n icon?: Partial<IconProps>\n img?: Partial<React.ImgHTMLAttributes<HTMLImageElement>>\n value?: Partial<React.ImgHTMLAttributes<HTMLSpanElement>>\n expand?: Partial<IconProps>\n close?: Partial<IconProps>\n }\n}\n\nexport const EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n className,\n pt,\n ...props\n}: EnumTemplateProps) => {\n // Destructure pt subprops and their relevant props at the top\n const {\n icon: ptIcon = {},\n img: ptImg = {},\n value: ptValue = {},\n expand: ptExpand = {},\n close: ptClose = {},\n } = pt || {}\n\n const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon\n const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg\n const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue\n const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand\n const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose\n\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) }, imgClassName)}\n style={imgStyle}\n {...imgRest}\n />\n ) : option.icon ? (\n <Icon\n icon={option.icon}\n style={{ color: option.color, ...iconStyle }}\n className={iconClassName}\n {...iconRest}\n />\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 ...valueStyle,\n }}\n className={clsx({ placeholder: isPlaceholder }, valueClassName)}\n aria-label={option.label}\n {...valueRest}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandButton className={clsx('expand', { open: isOpen }, expandClassName)}>\n <StyledExpandIcon\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0', ...expandStyle }}\n aria-label=\"Expand options\"\n {...expandRest}\n />\n </StyledExpandButton>\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4, ...closeStyle }}\n aria-label=\"Deselect item\"\n className={clsx('close', closeClassName)}\n {...closeRest}\n />\n )}\n </StyledWidget>\n )\n}\n\n// Helper functions to check if the icon is a valid image source\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"],"names":["Icon","jsxs","jsx"],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ import { j as jsxRuntimeExports } from "../../../../../_virtual/jsx-runtime.es.js";
2
+ import { Icon } from "@ynput/ayon-react-components";
3
+ import clsx from "clsx";
4
+ import styled from "styled-components";
5
+ const StyledWidget = styled.div`
6
+ display: flex;
7
+ gap: var(--base-gap-small);
8
+ align-items: center;
9
+ width: 100%;
10
+ height: 100%;
11
+ overflow: hidden;
12
+ border-radius: var(--border-radius-m);
13
+
14
+ &.item {
15
+ padding: 4px 2px;
16
+ border-radius: 0;
17
+
18
+ &:hover {
19
+ background-color: var(--md-sys-color-surface-container-hover);
20
+ }
21
+ }
22
+
23
+ &.selected {
24
+ background-color: var(--md-sys-color-primary-container);
25
+
26
+ &:hover {
27
+ background-color: var(--md-sys-color-primary-container-hover);
28
+ }
29
+ }
30
+ `;
31
+ const StyledValuesContainer = styled.div`
32
+ flex: 1;
33
+ display: flex;
34
+ gap: var(--base-gap-small);
35
+ align-items: center;
36
+ overflow: hidden;
37
+ border-radius: var(--border-radius-m);
38
+ padding: 0px 2px;
39
+ `;
40
+ const StyledValueWrapper = styled.div`
41
+ display: flex;
42
+ gap: var(--base-gap-small);
43
+ align-items: center;
44
+
45
+ overflow: hidden;
46
+ max-width: 100%;
47
+ min-width: 20px;
48
+ `;
49
+ const StyledValue = styled.span`
50
+ overflow: hidden;
51
+ white-space: nowrap;
52
+ width: 100%;
53
+ text-overflow: ellipsis;
54
+ text-align: left;
55
+ border-radius: var(--border-radius-m);
56
+ padding: 0px 2px;
57
+
58
+ &.placeholder {
59
+ color: var(--md-sys-color-outline);
60
+ }
61
+ `;
62
+ const StyledImg = styled.img`
63
+ width: 20px;
64
+ height: 20px;
65
+ object-fit: cover;
66
+
67
+ &.avatar {
68
+ border-radius: 50%;
69
+ }
70
+ `;
71
+ const StyledExpandButton = styled.div`
72
+ width: 32px;
73
+ height: 32px;
74
+ border-radius: var(--border-radius-m);
75
+ display: flex;
76
+ justify-content: center;
77
+ align-items: center;
78
+ cursor: pointer;
79
+
80
+ &:hover {
81
+ background-color: var(--md-sys-color-surface-container-highest-hover);
82
+ }
83
+
84
+ &.open {
85
+ background-color: transparent;
86
+ }
87
+ `;
88
+ const StyledExpandIcon = styled(Icon)`
89
+ transition: rotate 0.2s;
90
+ `;
91
+ const EnumCellValue = ({
92
+ selectedOptions,
93
+ placeholder,
94
+ hasMultipleValues,
95
+ isMultiSelect,
96
+ isOpen,
97
+ isItem,
98
+ isSelected,
99
+ isReadOnly,
100
+ className,
101
+ pt,
102
+ ...props
103
+ }) => {
104
+ const {
105
+ icon: ptIcon = {},
106
+ img: ptImg = {},
107
+ value: ptValue = {},
108
+ expand: ptExpand = {},
109
+ close: ptClose = {}
110
+ } = pt || {};
111
+ const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon;
112
+ const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg;
113
+ const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue;
114
+ const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand;
115
+ const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose;
116
+ const allOptionsHaveIcon = selectedOptions.every((option) => option.icon);
117
+ const showLabels = !hasMultipleValues || !allOptionsHaveIcon;
118
+ const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem;
119
+ const isPlaceholder = !selectedOptions.length && placeholder;
120
+ if (isPlaceholder) {
121
+ selectedOptions = [
122
+ {
123
+ label: placeholder,
124
+ value: ""
125
+ }
126
+ ];
127
+ }
128
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledWidget, { className: clsx(className, { selected: isSelected, item: isItem }), ...props, children: [
129
+ /* @__PURE__ */ jsxRuntimeExports.jsx(StyledValuesContainer, { children: selectedOptions.map((option, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs(StyledValueWrapper, { children: [
130
+ option.icon && checkForImgSrc(option.icon) ? /* @__PURE__ */ jsxRuntimeExports.jsx(
131
+ StyledImg,
132
+ {
133
+ src: option.icon,
134
+ className: clsx({ avatar: checkAvatarImg(option.icon) }, imgClassName),
135
+ style: imgStyle,
136
+ ...imgRest
137
+ }
138
+ ) : option.icon ? /* @__PURE__ */ jsxRuntimeExports.jsx(
139
+ Icon,
140
+ {
141
+ icon: option.icon,
142
+ style: { color: option.color, ...iconStyle },
143
+ className: iconClassName,
144
+ ...iconRest
145
+ }
146
+ ) : null,
147
+ (showLabels || !option.icon) && /* @__PURE__ */ jsxRuntimeExports.jsx(
148
+ StyledValue,
149
+ {
150
+ style: {
151
+ color: backgroundColor ? "inherit" : option.color,
152
+ backgroundColor: backgroundColor ? option.color || "var(--md-sys-color-surface-container)" : "transparent",
153
+ ...valueStyle
154
+ },
155
+ className: clsx({ placeholder: isPlaceholder }, valueClassName),
156
+ "aria-label": option.label,
157
+ ...valueRest,
158
+ children: option.label
159
+ }
160
+ )
161
+ ] }, option.value.toString() + i)) }),
162
+ !isItem && !isReadOnly && /* @__PURE__ */ jsxRuntimeExports.jsx(StyledExpandButton, { className: clsx("expand", { open: isOpen }, expandClassName), children: /* @__PURE__ */ jsxRuntimeExports.jsx(
163
+ StyledExpandIcon,
164
+ {
165
+ icon: "expand_more",
166
+ style: { rotate: isOpen ? "180deg" : "0", ...expandStyle },
167
+ "aria-label": "Expand options",
168
+ ...expandRest
169
+ }
170
+ ) }),
171
+ isItem && isSelected && isMultiSelect && /* @__PURE__ */ jsxRuntimeExports.jsx(
172
+ Icon,
173
+ {
174
+ icon: "close",
175
+ style: { marginLeft: "auto", marginRight: 4, ...closeStyle },
176
+ "aria-label": "Deselect item",
177
+ className: clsx("close", closeClassName),
178
+ ...closeRest
179
+ }
180
+ )
181
+ ] });
182
+ };
183
+ const checkForImgSrc = (icon = "") => {
184
+ return icon.startsWith("/") || icon.startsWith("./") || icon.startsWith("../") || icon.startsWith("http://") || icon.startsWith("https://");
185
+ };
186
+ const checkAvatarImg = (src) => src.includes("avatar");
187
+ export {
188
+ EnumCellValue
189
+ };
190
+ //# sourceMappingURL=EnumCellValue.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnumCellValue.es.js","sources":["../../../../../../src/containers/ProjectTreeTable/widgets/EnumCellValue.tsx"],"sourcesContent":["import { AttributeEnumItem } from '@shared/api'\nimport { Icon, IconProps } from '@ynput/ayon-react-components'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\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\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 flex: 1;\n display: flex;\n gap: var(--base-gap-small);\n align-items: center;\n overflow: hidden;\n border-radius: var(--border-radius-m);\n padding: 0px 2px;\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 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\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 StyledExpandButton = styled.div`\n width: 32px;\n height: 32px;\n border-radius: var(--border-radius-m);\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n\n &:hover {\n background-color: var(--md-sys-color-surface-container-highest-hover);\n }\n\n &.open {\n background-color: transparent;\n }\n`\n\nconst StyledExpandIcon = styled(Icon)`\n transition: rotate 0.2s;\n`\n\nexport interface 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 pt?: {\n icon?: Partial<IconProps>\n img?: Partial<React.ImgHTMLAttributes<HTMLImageElement>>\n value?: Partial<React.ImgHTMLAttributes<HTMLSpanElement>>\n expand?: Partial<IconProps>\n close?: Partial<IconProps>\n }\n}\n\nexport const EnumCellValue = ({\n selectedOptions,\n placeholder,\n hasMultipleValues,\n isMultiSelect,\n isOpen,\n isItem,\n isSelected,\n isReadOnly,\n className,\n pt,\n ...props\n}: EnumTemplateProps) => {\n // Destructure pt subprops and their relevant props at the top\n const {\n icon: ptIcon = {},\n img: ptImg = {},\n value: ptValue = {},\n expand: ptExpand = {},\n close: ptClose = {},\n } = pt || {}\n\n const { style: iconStyle, className: iconClassName, ...iconRest } = ptIcon\n const { style: imgStyle, className: imgClassName, ...imgRest } = ptImg\n const { style: valueStyle, className: valueClassName, ...valueRest } = ptValue\n const { style: expandStyle, className: expandClassName, ...expandRest } = ptExpand\n const { style: closeStyle, className: closeClassName, ...closeRest } = ptClose\n\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) }, imgClassName)}\n style={imgStyle}\n {...imgRest}\n />\n ) : option.icon ? (\n <Icon\n icon={option.icon}\n style={{ color: option.color, ...iconStyle }}\n className={iconClassName}\n {...iconRest}\n />\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 ...valueStyle,\n }}\n className={clsx({ placeholder: isPlaceholder }, valueClassName)}\n aria-label={option.label}\n {...valueRest}\n >\n {option.label}\n </StyledValue>\n )}\n </StyledValueWrapper>\n ))}\n </StyledValuesContainer>\n {!isItem && !isReadOnly && (\n <StyledExpandButton className={clsx('expand', { open: isOpen }, expandClassName)}>\n <StyledExpandIcon\n icon=\"expand_more\"\n style={{ rotate: isOpen ? '180deg' : '0', ...expandStyle }}\n aria-label=\"Expand options\"\n {...expandRest}\n />\n </StyledExpandButton>\n )}\n {isItem && isSelected && isMultiSelect && (\n <Icon\n icon=\"close\"\n style={{ marginLeft: 'auto', marginRight: 4, ...closeStyle }}\n aria-label=\"Deselect item\"\n className={clsx('close', closeClassName)}\n {...closeRest}\n />\n )}\n </StyledWidget>\n )\n}\n\n// Helper functions to check if the icon is a valid image source\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"],"names":["jsxs","jsx"],"mappings":"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"}
@@ -5,91 +5,11 @@ const ayonReactComponents = require("@ynput/ayon-react-components");
5
5
  const clsx = require("clsx");
6
6
  const React = require("react");
7
7
  const styled = require("styled-components");
8
- const StyledWidget = styled.div`
9
- display: flex;
10
- gap: var(--base-gap-small);
11
- align-items: center;
12
- width: 100%;
13
- height: 100%;
14
- overflow: hidden;
15
- border-radius: var(--border-radius-m);
16
- padding: 0 2px;
17
- cursor: pointer;
18
-
19
- &:hover {
20
- background-color: var(--md-sys-color-surface-container-high-hover);
21
- }
22
-
23
- &.item {
24
- padding: 4px 2px;
25
- border-radius: 0;
26
-
27
- &:hover {
28
- background-color: var(--md-sys-color-surface-container-hover);
29
- }
30
- }
31
-
32
- &.selected {
33
- background-color: var(--md-sys-color-primary-container);
34
-
35
- &:hover {
36
- background-color: var(--md-sys-color-primary-container-hover);
37
- }
38
- }
39
- `;
40
- const StyledValuesContainer = styled.div`
41
- display: flex;
42
- gap: var(--base-gap-small);
43
- align-items: center;
44
- overflow: hidden;
45
- border-radius: var(--border-radius-m);
46
- `;
47
- const StyledValueWrapper = styled.div`
48
- display: flex;
49
- gap: var(--base-gap-small);
50
- align-items: center;
51
-
52
- overflow: hidden;
53
- max-width: 100%;
54
- min-width: 20px;
55
- `;
56
- const StyledValue = styled.span`
57
- /* push expand icon to the end */
58
- flex: 1;
59
- overflow: hidden;
60
- white-space: nowrap;
61
- width: 100%;
62
- text-overflow: ellipsis;
63
- text-align: left;
64
- border-radius: var(--border-radius-m);
65
- padding: 0px 2px;
66
- text-align: center;
67
-
68
- &.placeholder {
69
- color: var(--md-sys-color-outline);
70
- }
71
- `;
72
- const StyledImg = styled.img`
73
- width: 20px;
74
- height: 20px;
75
- object-fit: cover;
76
-
77
- &.avatar {
78
- border-radius: 50%;
79
- }
80
- `;
81
- const StyledExpandIcon = styled(ayonReactComponents.Icon)`
82
- margin-left: auto;
83
- transition: rotate 0.2s;
84
- `;
8
+ const EnumCellValue = require("./EnumCellValue.cjs.js");
85
9
  const StyledDropdown = styled(ayonReactComponents.Dropdown)`
86
10
  height: 100%;
87
11
  width: 100%;
88
12
  `;
89
- const checkForImgSrc = (icon = "") => {
90
- return icon.startsWith("/") || icon.startsWith("./") || icon.startsWith("../") || icon.startsWith("http://") || icon.startsWith("https://");
91
- };
92
- const checkAvatarImg = (src) => src.includes("avatar");
93
13
  const EnumWidget = React.forwardRef(
94
14
  ({
95
15
  value,
@@ -172,7 +92,7 @@ const EnumWidget = React.forwardRef(
172
92
  valueTemplate: (_value, selected, isOpen) => {
173
93
  var _a2;
174
94
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
175
- EnumCellValue,
95
+ EnumCellValue.EnumCellValue,
176
96
  {
177
97
  selectedOptions,
178
98
  hasMultipleValues: selected.length > 1,
@@ -188,7 +108,7 @@ const EnumWidget = React.forwardRef(
188
108
  itemTemplate: (option, _isActive, isSelected) => {
189
109
  var _a2;
190
110
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
191
- EnumCellValue,
111
+ EnumCellValue.EnumCellValue,
192
112
  {
193
113
  selectedOptions: [option],
194
114
  hasMultipleValues: false,
@@ -213,7 +133,7 @@ const EnumWidget = React.forwardRef(
213
133
  );
214
134
  }
215
135
  return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
216
- EnumCellValue,
136
+ EnumCellValue.EnumCellValue,
217
137
  {
218
138
  selectedOptions,
219
139
  hasMultipleValues,
@@ -227,68 +147,5 @@ const EnumWidget = React.forwardRef(
227
147
  );
228
148
  }
229
149
  );
230
- const EnumCellValue = ({
231
- selectedOptions,
232
- placeholder,
233
- hasMultipleValues,
234
- isMultiSelect,
235
- isOpen,
236
- isItem,
237
- isSelected,
238
- isReadOnly,
239
- className,
240
- ...props
241
- }) => {
242
- const allOptionsHaveIcon = selectedOptions.every((option) => option.icon);
243
- const showLabels = !hasMultipleValues || !allOptionsHaveIcon;
244
- const backgroundColor = !allOptionsHaveIcon && isMultiSelect && !isItem;
245
- const isPlaceholder = !selectedOptions.length && placeholder;
246
- if (isPlaceholder) {
247
- selectedOptions = [
248
- {
249
- label: placeholder,
250
- value: ""
251
- }
252
- ];
253
- }
254
- return /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(StyledWidget, { className: clsx(className, { selected: isSelected, item: isItem }), ...props, children: [
255
- /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(StyledValuesContainer, { children: selectedOptions.map((option, i) => /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsxs(StyledValueWrapper, { children: [
256
- option.icon && checkForImgSrc(option.icon) ? /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
257
- StyledImg,
258
- {
259
- src: option.icon,
260
- className: clsx({ avatar: checkAvatarImg(option.icon) })
261
- }
262
- ) : option.icon ? /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(ayonReactComponents.Icon, { icon: option.icon, style: { color: option.color } }) : null,
263
- (showLabels || !option.icon) && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
264
- StyledValue,
265
- {
266
- style: {
267
- color: backgroundColor ? "inherit" : option.color,
268
- backgroundColor: backgroundColor ? option.color || "var(--md-sys-color-surface-container)" : "transparent"
269
- },
270
- className: clsx({ placeholder: isPlaceholder }),
271
- children: option.label
272
- }
273
- )
274
- ] }, option.value.toString() + i)) }),
275
- !isItem && !isReadOnly && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
276
- StyledExpandIcon,
277
- {
278
- className: "expand",
279
- icon: "expand_more",
280
- style: { rotate: isOpen ? "180deg" : "0" }
281
- }
282
- ),
283
- isItem && isSelected && isMultiSelect && /* @__PURE__ */ jsxRuntime.jsxRuntimeExports.jsx(
284
- ayonReactComponents.Icon,
285
- {
286
- icon: "close",
287
- style: { marginLeft: "auto", marginRight: 4 },
288
- "aria-label": "Deselect item"
289
- }
290
- )
291
- ] });
292
- };
293
150
  exports.EnumWidget = EnumWidget;
294
151
  //# sourceMappingURL=EnumWidget.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnumWidget.cjs.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":["Icon","Dropdown","forwardRef","useRef","useState","useEffect","_a","value","jsx","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"EnumWidget.cjs.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":["Dropdown","forwardRef","useRef","useState","useEffect","_a","value","jsx","EnumCellValue"],"mappings":"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"}