@ynput/ayon-frontend-shared 0.3.15 → 0.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +28 -24
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/Views.cjs.js +1 -1
  5. package/dist/Views.cjs.js.map +1 -1
  6. package/dist/Views.es.js +36 -41
  7. package/dist/Views.es.js.map +1 -1
  8. package/dist/_virtual/index.cjs.js +1 -1
  9. package/dist/_virtual/index.cjs2.js +1 -1
  10. package/dist/_virtual/index.cjs3.js +1 -1
  11. package/dist/_virtual/index.cjs4.js +1 -1
  12. package/dist/_virtual/index.cjs5.js +1 -1
  13. package/dist/_virtual/index.cjs6.js +1 -1
  14. package/dist/_virtual/index.cjs8.js +1 -1
  15. package/dist/_virtual/index.es.js +4 -5
  16. package/dist/_virtual/index.es2.js +6 -2
  17. package/dist/_virtual/index.es2.js.map +1 -1
  18. package/dist/_virtual/index.es3.js +2 -5
  19. package/dist/_virtual/index.es3.js.map +1 -1
  20. package/dist/_virtual/index.es4.js +5 -2
  21. package/dist/_virtual/index.es4.js.map +1 -1
  22. package/dist/_virtual/index.es5.js +2 -5
  23. package/dist/_virtual/index.es5.js.map +1 -1
  24. package/dist/_virtual/index.es6.js +5 -2
  25. package/dist/_virtual/index.es6.js.map +1 -1
  26. package/dist/_virtual/index.es7.js +2 -2
  27. package/dist/_virtual/index.es8.js +2 -5
  28. package/dist/_virtual/index.es8.js.map +1 -1
  29. package/dist/index.cjs.js +1 -1
  30. package/dist/index.es.js +15 -11
  31. package/dist/index.es.js.map +1 -1
  32. package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
  33. package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +1 -1
  34. package/dist/node_modules/react-use-websocket/dist/index.cjs.js +1 -1
  35. package/dist/node_modules/react-use-websocket/dist/index.es.js +1 -1
  36. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js +1 -1
  37. package/dist/node_modules/rehype-prism-plus/dist/index.es.cjs.js.map +1 -1
  38. package/dist/node_modules/rehype-prism-plus/dist/index.es.es.js +1 -1
  39. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  40. package/dist/node_modules/remove-accents/index.es.js +1 -1
  41. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  42. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  43. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  44. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  45. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
  46. package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
  47. package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
  48. package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
  49. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
  50. package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
  51. package/dist/shared/src/api/generated/access.cjs.js.map +1 -1
  52. package/dist/shared/src/api/generated/access.es.js.map +1 -1
  53. package/dist/shared/src/api/generated/graphql.cjs.js +5 -3
  54. package/dist/shared/src/api/generated/graphql.cjs.js.map +1 -1
  55. package/dist/shared/src/api/generated/graphql.es.js +2 -0
  56. package/dist/shared/src/api/generated/graphql.es.js.map +1 -1
  57. package/dist/shared/src/api/generated/users.cjs.js.map +1 -1
  58. package/dist/shared/src/api/generated/users.es.js.map +1 -1
  59. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  60. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  61. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +99 -90
  62. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  63. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +13 -1
  64. package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
  65. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +72 -25
  66. package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
  67. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  68. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  69. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +25 -21
  70. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  71. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
  72. package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
  73. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +14 -14
  74. package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
  75. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js +1 -1
  76. package/dist/shared/src/components/LinksManager/CellEditingDialog.cjs.js.map +1 -1
  77. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js +23 -23
  78. package/dist/shared/src/components/LinksManager/CellEditingDialog.es.js.map +1 -1
  79. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
  80. package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
  81. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +71 -36
  82. package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
  83. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js +1 -1
  84. package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
  85. package/dist/shared/src/components/LinksManager/LinksManager.es.js +120 -89
  86. package/dist/shared/src/components/LinksManager/LinksManager.es.js.map +1 -1
  87. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js +52 -12
  88. package/dist/shared/src/components/LinksManager/LinksManager.styled.cjs.js.map +1 -1
  89. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js +63 -21
  90. package/dist/shared/src/components/LinksManager/LinksManager.styled.es.js.map +1 -1
  91. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  92. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  93. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +8 -4
  94. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  95. package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js +2 -0
  96. package/dist/shared/src/components/LinksManager/utils/groupLinks.cjs.js.map +1 -0
  97. package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js +18 -0
  98. package/dist/shared/src/components/LinksManager/utils/groupLinks.es.js.map +1 -0
  99. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  100. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  101. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +8 -4
  102. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  103. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  104. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  105. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +10 -6
  106. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  107. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  108. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  109. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +8 -4
  110. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  111. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  112. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  113. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +8 -4
  114. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  115. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  116. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  117. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +8 -4
  118. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  119. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  120. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  121. package/dist/shared/src/components/RenameForm/RenameForm.es.js +9 -5
  122. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  123. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  124. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  125. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +139 -128
  126. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  127. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  128. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  129. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +90 -81
  130. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  131. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  132. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  133. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +8 -4
  134. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  135. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +1 -1
  136. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -1
  137. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +9 -5
  138. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -1
  139. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  140. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  141. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +8 -4
  142. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  143. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  144. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  145. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +8 -4
  146. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  147. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  148. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  149. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +8 -4
  150. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  151. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  152. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  153. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +8 -4
  154. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  155. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  156. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  157. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +20 -16
  158. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  159. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  160. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  161. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +8 -4
  162. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  163. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  164. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  165. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +9 -5
  166. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  167. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  168. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +12 -8
  170. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  172. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +22 -18
  174. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  176. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  177. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +8 -4
  178. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  179. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  180. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  181. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +8 -4
  182. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  183. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +2 -2
  184. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  185. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +57 -45
  186. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  187. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  188. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  189. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +8 -4
  190. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  191. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  192. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  193. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +8 -4
  194. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  195. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  196. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  197. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +8 -4
  198. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  199. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
  200. package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
  201. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js +2 -0
  202. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.cjs.js.map +1 -0
  203. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js +70 -0
  204. package/dist/shared/src/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.es.js.map +1 -0
  205. package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
  206. package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/Feed/Feed.es.js +247 -151
  208. package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
  209. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  210. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +8 -4
  212. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  213. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  214. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +6 -2
  216. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  217. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js +1 -0
  218. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js +1 -0
  220. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.styled.es.js.map +1 -1
  221. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  222. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +9 -5
  224. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  225. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  226. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +8 -4
  228. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  229. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js +1 -1
  230. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js +3 -3
  232. package/dist/shared/src/containers/Feed/components/FilesGrid/FilesGrid.styled.es.js.map +1 -1
  233. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  234. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +8 -4
  236. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  238. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +59 -55
  240. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +9 -5
  244. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +8 -4
  248. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  250. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +6 -2
  252. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +8 -4
  256. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +8 -4
  260. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js +16 -16
  264. package/dist/shared/src/containers/ProjectTreeTable/context/SelectedRowsProvider.es.js.map +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +6 -2
  268. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +9 -5
  272. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +6 -2
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +8 -4
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +8 -4
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +6 -2
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +6 -2
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  294. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +6 -2
  296. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  297. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  298. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  299. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +8 -4
  300. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  302. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +8 -4
  304. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +6 -2
  308. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +6 -2
  312. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +6 -2
  316. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  317. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  318. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +17 -13
  320. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  321. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  322. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +7 -3
  324. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  325. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  326. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +60 -48
  328. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  329. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  330. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +6 -2
  332. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  333. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  334. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +8 -4
  336. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  337. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  338. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +24 -24
  339. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  340. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  341. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +8 -4
  342. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  343. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  344. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  345. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +8 -4
  346. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  347. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.cjs.js.map +1 -1
  348. package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.es.js.map +1 -1
  349. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  350. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  351. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +8 -4
  352. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  353. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
  354. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
  355. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +24 -23
  356. package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
  357. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
  358. package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
  359. package/dist/shared/src/containers/Views/context/ViewsContext.es.js +83 -88
  360. package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
  361. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
  362. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
  363. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +1 -1
  364. package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
  365. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
  366. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
  367. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +56 -53
  368. package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
  369. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
  370. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
  371. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +23 -144
  372. package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
  373. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.cjs.js.map +1 -1
  374. package/dist/shared/src/containers/Views/hooks/useViewSettingsChanged.es.js.map +1 -1
  375. package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
  376. package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js.map +1 -1
  377. package/dist/shared/src/containers/Views/types.cjs.js +2 -0
  378. package/dist/shared/src/containers/Views/types.cjs.js.map +1 -0
  379. package/dist/shared/src/containers/Views/types.es.js +15 -0
  380. package/dist/shared/src/containers/Views/types.es.js.map +1 -0
  381. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.cjs.js.map +1 -1
  382. package/dist/shared/src/containers/Views/utils/getCustomViewsFallback.es.js.map +1 -1
  383. package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js +2 -0
  384. package/dist/shared/src/containers/Views/utils/isViewStudioScope.cjs.js.map +1 -0
  385. package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js +5 -0
  386. package/dist/shared/src/containers/Views/utils/isViewStudioScope.es.js.map +1 -0
  387. package/dist/shared/src/containers/Views/utils/portalUtils.cjs.js.map +1 -1
  388. package/dist/shared/src/containers/Views/utils/portalUtils.es.js.map +1 -1
  389. package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
  390. package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
  391. package/dist/shared/src/context/DetailsPanelContext.es.js +76 -77
  392. package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
  393. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  394. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  395. package/dist/shared/src/context/WebsocketContext.es.js +9 -5
  396. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  397. package/dist/types/api/generated/access.d.ts +6 -0
  398. package/dist/types/api/generated/graphql.d.ts +8 -4
  399. package/dist/types/api/generated/users.d.ts +6 -1
  400. package/dist/types/components/AttributeEditor/AttributeEditor.d.ts +1 -0
  401. package/dist/types/components/LinksManager/LinkManagerItem.d.ts +2 -0
  402. package/dist/types/components/LinksManager/LinksManager.styled.d.ts +6 -0
  403. package/dist/types/components/LinksManager/utils/groupLinks.d.ts +14 -0
  404. package/dist/types/components/ReviewablesList/ReviewablesUpload.d.ts +1 -0
  405. package/dist/types/containers/EntityPickerDialog/hooks/useGetEntityPickerData.d.ts +1 -1
  406. package/dist/types/containers/EntityPickerDialog/hooks/usePreserveChildSelectionByName.d.ts +11 -0
  407. package/dist/types/containers/ProjectTreeTable/types/table.d.ts +1 -0
  408. package/dist/types/containers/Views/ViewsDialogContainer/ViewFormDialogFallback.d.ts +2 -1
  409. package/dist/types/containers/Views/ViewsMenuContainer/ViewsMenuContainer.d.ts +2 -2
  410. package/dist/types/containers/Views/context/ViewsContext.d.ts +3 -2
  411. package/dist/types/containers/Views/hooks/useBaseViewMutations.d.ts +1 -1
  412. package/dist/types/containers/Views/hooks/useBuildViewMenuItems.d.ts +2 -3
  413. package/dist/types/containers/Views/hooks/useSaveViewFromCurrent.d.ts +2 -1
  414. package/dist/types/containers/Views/hooks/useViewSettingsChanged.d.ts +1 -1
  415. package/dist/types/containers/Views/index.d.ts +1 -7
  416. package/dist/types/containers/Views/types.d.ts +10 -0
  417. package/dist/types/containers/Views/utils/isViewStudioScope.d.ts +2 -0
  418. package/dist/types/containers/Views/utils/portalUtils.d.ts +1 -1
  419. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
1
  import { j as n } from "../../../../_virtual/jsx-runtime.es.js";
2
- import { useState as _, useEffect as P } from "react";
3
- import { Dialog as A, FormLayout as B, FormRow as v, InputText as E, LockedInput as M, Dropdown as L, Button as K, Spacer as R, SaveButton as V, InputSwitch as N } from "@ynput/ayon-react-components";
4
- import { upperFirst as z, camelCase as q } from "lodash";
5
- import { MinMaxField as J } from "./components/MinMaxField.es.js";
6
- import { EnumEditor as G } from "../EnumEditor/EnumEditor.es.js";
2
+ import { useState as A, useEffect as B } from "react";
3
+ import { Dialog as M, FormLayout as K, FormRow as h, InputText as E, LockedInput as R, Dropdown as L, Button as V, Spacer as z, SaveButton as q, InputSwitch as N } from "@ynput/ayon-react-components";
4
+ import { camelCase as k, upperFirst as J } from "lodash";
5
+ import { MinMaxField as G } from "./components/MinMaxField.es.js";
6
+ import { EnumEditor as Y } from "../EnumEditor/EnumEditor.es.js";
7
7
  import "../EnumEditor/EnumEditor.styled.es.js";
8
- const Y = [
8
+ const Z = [
9
9
  { value: "project", label: "Project" },
10
10
  { value: "folder", label: "Folder" },
11
11
  { value: "task", label: "Task" },
@@ -14,7 +14,7 @@ const Y = [
14
14
  { value: "representation", label: "Representation" },
15
15
  { value: "user", label: "User" },
16
16
  { value: "list", label: "List" }
17
- ], Z = [
17
+ ], $ = [
18
18
  { value: "description", scope: null },
19
19
  { value: "example", scope: null },
20
20
  // @ts-expect-error - project is not a scope?
@@ -55,7 +55,7 @@ const Y = [
55
55
  label: "Datetime",
56
56
  fields: []
57
57
  }
58
- }, $ = {
58
+ }, H = {
59
59
  name: "",
60
60
  scope: ["folder", "task"],
61
61
  builtin: !1,
@@ -77,49 +77,58 @@ const Y = [
77
77
  le: void 0,
78
78
  lt: void 0
79
79
  }
80
- }, H = (r, c) => {
81
- const s = JSON.parse(JSON.stringify($)), b = ["name"];
82
- Object.keys(s).forEach((o) => {
83
- !b.includes(o) && r.includes(o) && o !== "data" && delete s[o];
80
+ }, Q = (c, r) => {
81
+ const o = JSON.parse(JSON.stringify(H)), p = ["name"];
82
+ Object.keys(o).forEach((i) => {
83
+ !p.includes(i) && c.includes(i) && i !== "data" && delete o[i];
84
84
  });
85
- const u = ["title"];
86
- return s.data && Object.keys(s.data).forEach((o) => {
87
- !u.includes(o) && r.includes(o) && delete s.data[o];
88
- }), c && Object.keys(c).forEach((o) => {
89
- const d = o;
90
- d !== "data" && r.includes(d) || (d === "data" && c.data && s.data ? s.data = { ...s.data, ...c.data } : c[d] !== void 0 && (s[d] = c[d]));
91
- }), s;
92
- }, ne = ({
93
- attribute: r,
94
- existingNames: c,
95
- error: s = "",
85
+ const b = ["title"];
86
+ return o.data && Object.keys(o.data).forEach((i) => {
87
+ !b.includes(i) && c.includes(i) && delete o.data[i];
88
+ }), r && Object.keys(r).forEach((i) => {
89
+ const m = i;
90
+ m === "data" && r.data && o.data ? o.data = { ...o.data, ...r.data } : r[m] !== void 0 && (o[m] = r[m]);
91
+ }), o;
92
+ }, le = ({
93
+ attribute: c,
94
+ defaultData: r,
95
+ existingNames: o,
96
+ error: p = "",
96
97
  isUpdating: b,
97
- excludes: u = [],
98
- onHide: o,
99
- onEdit: d,
98
+ excludes: i = [],
99
+ onHide: m,
100
+ onEdit: w,
100
101
  onDelete: C
101
102
  }) => {
102
- const k = H(u, { position: c.length }), [t, x] = _(r || k);
103
- P(() => {
104
- r && x(r);
105
- }, [r]);
106
- const f = !r, S = (e, a) => {
103
+ const F = r ? {
104
+ ...r,
105
+ name: r.name || (r.data?.title ? k(r.data.title) : void 0)
106
+ } : void 0, [t, x] = A(
107
+ c || Q(i, {
108
+ position: o.length,
109
+ ...F
110
+ })
111
+ );
112
+ B(() => {
113
+ c && x(c);
114
+ }, [c]);
115
+ const v = !c, S = (e, a) => {
107
116
  x((l) => l && { ...l, [e]: a });
108
- }, p = (e, a) => {
117
+ }, d = (e, a) => {
109
118
  x((l) => {
110
119
  if (!l || !l.data)
111
120
  return l;
112
- const i = { ...l.data, [e]: a };
113
- return { ...l, data: i };
121
+ const s = { ...l.data, [e]: a };
122
+ return { ...l, data: s };
114
123
  });
115
124
  };
116
- let g = "";
117
- t && f && (c.includes(t.name) ? g = "This attribute already exists" : t.name.match("^[a-zA-Z_]{2,64}$") || (s = "Invalid attribute name"));
118
- const D = () => {
119
- t && d(t);
120
- }, w = /* @__PURE__ */ n.jsxs("div", { style: { display: "flex", width: "100%", flexDirection: "row" }, children: [
121
- C && r && /* @__PURE__ */ n.jsx(
122
- K,
125
+ let f = "";
126
+ t && v && (o.includes(t.name) ? f = "This attribute already exists" : t.name.match("^[a-zA-Z_]{2,64}$") || (p = "Invalid attribute name"));
127
+ const O = () => {
128
+ t && w(t);
129
+ }, T = /* @__PURE__ */ n.jsxs("div", { style: { display: "flex", width: "100%", flexDirection: "row" }, children: [
130
+ C && c && /* @__PURE__ */ n.jsx(
131
+ V,
123
132
  {
124
133
  variant: "danger",
125
134
  label: "Delete attribute",
@@ -128,29 +137,29 @@ const Y = [
128
137
  onClick: C
129
138
  }
130
139
  ),
131
- /* @__PURE__ */ n.jsx(R, {}),
140
+ /* @__PURE__ */ n.jsx(z, {}),
132
141
  /* @__PURE__ */ n.jsx(
133
- V,
142
+ q,
134
143
  {
135
- label: f ? "Create Attribute" : "Save Attribute",
144
+ label: v ? "Create Attribute" : "Save Attribute",
136
145
  icon: "check",
137
- disabled: !!g || !t,
138
- active: !g && !!t,
146
+ disabled: !!f || !t,
147
+ active: !f && !!t,
139
148
  saving: b,
140
- onClick: D
149
+ onClick: O
141
150
  }
142
151
  )
143
152
  ] });
144
153
  let j = [];
145
- if (Z.forEach((e) => {
154
+ if ($.forEach((e) => {
146
155
  (!e?.scope || e?.scope?.some((a) => t?.scope?.includes(a))) && j.push(e.value);
147
156
  }), t?.data.type && I[t.data.type]) {
148
157
  const e = I[t.data.type];
149
158
  j = [...j, ...e.fields].filter((a) => !e.exclude?.includes(a));
150
159
  }
151
- const O = {
160
+ const D = {
152
161
  enum: (e = [], a) => /* @__PURE__ */ n.jsx(
153
- G,
162
+ Y,
154
163
  {
155
164
  values: e,
156
165
  onChange: (l) => {
@@ -172,38 +181,38 @@ const Y = [
172
181
  onChange: (l) => a(l.target.checked)
173
182
  }
174
183
  )
175
- }, F = (e) => {
184
+ }, _ = (e) => {
176
185
  const a = e.target.value;
177
- p("title", a), f && S("name", q(a));
186
+ d("title", a), v && S("name", k(a));
178
187
  };
179
188
  return /* @__PURE__ */ n.jsx(
180
- A,
189
+ M,
181
190
  {
182
191
  header: t?.data?.title || t?.name || "New attribute",
183
- footer: w,
184
- onClose: o,
192
+ footer: T,
193
+ onClose: m,
185
194
  isOpen: !0,
186
195
  style: { width: 700, zIndex: 999 },
187
196
  size: "full",
188
197
  enableBackdropClose: !1,
189
198
  onKeyDown: (e) => {
190
- e.key === "Enter" && (e.metaKey || e.ctrlKey) && (e.preventDefault(), D());
199
+ e.key === "Enter" && (e.metaKey || e.ctrlKey) && (e.preventDefault(), O());
191
200
  },
192
- children: t && /* @__PURE__ */ n.jsxs(B, { children: [
193
- !u.includes("title") && /* @__PURE__ */ n.jsx(v, { label: "Title", children: /* @__PURE__ */ n.jsx(E, { value: t?.data.title, onChange: F, autoFocus: !0 }) }, "title"),
194
- !u.includes("name") && /* @__PURE__ */ n.jsx(v, { label: "Name", children: /* @__PURE__ */ n.jsx(
195
- M,
201
+ children: t && /* @__PURE__ */ n.jsxs(K, { children: [
202
+ !i.includes("title") && /* @__PURE__ */ n.jsx(h, { label: "Title", children: /* @__PURE__ */ n.jsx(E, { value: t?.data.title, onChange: _, autoFocus: !0 }) }, "title"),
203
+ !i.includes("name") && /* @__PURE__ */ n.jsx(h, { label: "Name", children: /* @__PURE__ */ n.jsx(
204
+ R,
196
205
  {
197
206
  value: t.name,
198
- disabled: !f,
207
+ disabled: !v,
199
208
  onSubmit: (e) => S("name", e),
200
209
  label: "name"
201
210
  }
202
211
  ) }, "name"),
203
- !u.includes("scope") && /* @__PURE__ */ n.jsx(v, { label: "Scope", children: /* @__PURE__ */ n.jsx(
212
+ !i.includes("scope") && /* @__PURE__ */ n.jsx(h, { label: "Scope", children: /* @__PURE__ */ n.jsx(
204
213
  L,
205
214
  {
206
- options: Y,
215
+ options: Z,
207
216
  disabled: t.builtin,
208
217
  value: t.scope || [],
209
218
  onChange: (e) => S("scope", e),
@@ -211,65 +220,65 @@ const Y = [
211
220
  widthExpand: !0
212
221
  }
213
222
  ) }),
214
- !u.includes("type") && /* @__PURE__ */ n.jsx(v, { label: "Type", children: /* @__PURE__ */ n.jsx(
223
+ !i.includes("type") && /* @__PURE__ */ n.jsx(h, { label: "Type", children: /* @__PURE__ */ n.jsx(
215
224
  L,
216
225
  {
217
226
  value: [t?.data?.type],
218
- disabled: t.builtin || !f,
227
+ disabled: t.builtin || !v,
219
228
  options: Object.values(I),
220
229
  onChange: (e) => {
221
- const a = e[0], i = I[a]?.fields?.includes("regex");
222
- p("type", a), !i && t?.data?.regex && p("regex", "");
230
+ const a = e[0], s = I[a]?.fields?.includes("regex");
231
+ d("type", a), !s && t?.data?.regex && d("regex", "");
223
232
  },
224
233
  minSelected: 1,
225
234
  widthExpand: !0
226
235
  }
227
236
  ) }),
228
237
  j.map((e) => {
229
- if (u.includes(e)) return null;
230
- let a = null, l = z(e);
238
+ if (i.includes(e)) return null;
239
+ let a = null, l = J(e);
231
240
  if (e === "enum" || e === "inherit") {
232
- const i = O[e];
233
- a = i(t?.data[e], (h) => p(e, h));
241
+ const s = D[e];
242
+ a = s(t?.data[e], (g) => d(e, g));
234
243
  } else if (e === "default" && t?.data?.type === "boolean")
235
- a = O.booleanDefault(
244
+ a = D.booleanDefault(
236
245
  t?.data[e],
237
- (i) => p(e, i)
246
+ (s) => d(e, s)
238
247
  );
239
248
  else if (["ge", "gt", "le", "lt"].includes(e)) {
240
249
  if (["gt", "lt"].includes(e)) return null;
241
250
  a = /* @__PURE__ */ n.jsx(
242
- J,
251
+ G,
243
252
  {
244
253
  value: t?.data,
245
254
  isMin: e === "ge",
246
255
  isFloat: t?.data?.type === "float",
247
- onChange: (i) => {
248
- const h = i.ge !== void 0 ? Number(i.ge) : void 0, y = i.le !== void 0 ? Number(i.le) : void 0;
256
+ onChange: (s) => {
257
+ const g = s.ge !== void 0 ? Number(s.ge) : void 0, y = s.le !== void 0 ? Number(s.le) : void 0;
249
258
  // @ts-expect-error
250
- i.ge !== void 0 && isNaN(h) || // @ts-expect-error
251
- i.le !== void 0 && isNaN(y) || x((m) => {
252
- if (!m || !m.data) return m;
253
- const T = { ...m.data, ...i };
254
- return { ...m, data: T };
259
+ s.ge !== void 0 && isNaN(g) || // @ts-expect-error
260
+ s.le !== void 0 && isNaN(y) || x((u) => {
261
+ if (!u || !u.data) return u;
262
+ const P = { ...u.data, ...s };
263
+ return { ...u, data: P };
255
264
  });
256
265
  }
257
266
  }
258
267
  ), l = e === "ge" ? "Min" : "Max";
259
268
  } else {
260
- const i = (h) => {
261
- const y = h.target.value;
269
+ const s = (g) => {
270
+ const y = g.target.value;
262
271
  switch (e) {
263
272
  case "minLength":
264
273
  case "maxLength":
265
274
  case "minItems":
266
275
  case "maxItems": {
267
- const m = parseInt(y, 10);
268
- p(e, isNaN(m) ? void 0 : m);
276
+ const u = parseInt(y, 10);
277
+ d(e, isNaN(u) ? void 0 : u);
269
278
  break;
270
279
  }
271
280
  default:
272
- p(e, y);
281
+ d(e, y);
273
282
  break;
274
283
  }
275
284
  };
@@ -277,12 +286,12 @@ const Y = [
277
286
  E,
278
287
  {
279
288
  value: String(t?.data[e] ?? ""),
280
- onChange: i
289
+ onChange: s
281
290
  }
282
291
  );
283
292
  }
284
293
  return /* @__PURE__ */ n.jsx(
285
- v,
294
+ h,
286
295
  {
287
296
  label: l,
288
297
  style: {
@@ -293,12 +302,12 @@ const Y = [
293
302
  e
294
303
  );
295
304
  }),
296
- /* @__PURE__ */ n.jsx("span", { children: (g || s) && /* @__PURE__ */ n.jsx("span", { className: "form-error-text", children: g || s }) })
305
+ /* @__PURE__ */ n.jsx("span", { children: (f || p) && /* @__PURE__ */ n.jsx("span", { className: "form-error-text", children: f || p }) })
297
306
  ] })
298
307
  }
299
308
  );
300
309
  };
301
310
  export {
302
- ne as AttributeEditor
311
+ le as AttributeEditor
303
312
  };
304
313
  //# sourceMappingURL=AttributeEditor.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AttributeEditor.es.js","sources":["../../../../../src/components/AttributeEditor/AttributeEditor.tsx"],"sourcesContent":["import { FC, useEffect, useState } from 'react'\nimport {\n SaveButton,\n Spacer,\n FormLayout,\n FormRow,\n InputText,\n InputSwitch,\n LockedInput,\n Dropdown,\n Dialog,\n Button,\n} from '@ynput/ayon-react-components'\nimport { camelCase, upperFirst } from 'lodash'\nimport { MinMaxField } from './components'\nimport { EnumEditor } from '@shared/components/EnumEditor'\nimport { AttributeData, AttributeModel, AttributeEnumItem } from '@shared/api'\n\nconst SCOPE_OPTIONS = [\n { value: 'project', label: 'Project' },\n { value: 'folder', label: 'Folder' },\n { value: 'task', label: 'Task' },\n { value: 'product', label: 'Product' },\n { value: 'version', label: 'Version' },\n { value: 'representation', label: 'Representation' },\n { value: 'user', label: 'User' },\n { value: 'list', label: 'List' },\n]\n\n// Define types for constants\ninterface GlobalFieldEntry {\n value: keyof AttributeData\n scope: (AttributeModel['scope'] | '')[] | null\n}\n\nconst GLOBAL_FIELDS: GlobalFieldEntry[] = [\n { value: 'description', scope: null },\n { value: 'example', scope: null },\n // @ts-expect-error - project is not a scope?\n { value: 'default', scope: ['project'] },\n {\n value: 'inherit',\n scope: ['project', 'folder', 'task', 'product', 'version', 'representation', 'user'],\n },\n]\n\ninterface TypeOptionDef {\n value: AttributeData['type']\n label: string\n fields: (keyof AttributeData)[]\n exclude?: (keyof AttributeData)[]\n}\n\ninterface TypeOptionsMap {\n [key: string]: TypeOptionDef\n}\n\nconst TYPE_OPTIONS: TypeOptionsMap = {\n string: {\n value: 'string',\n label: 'String',\n fields: ['minLength', 'maxLength', 'enum', 'regex'],\n },\n integer: {\n value: 'integer',\n label: 'Integer',\n fields: ['ge', 'gt', 'le', 'lt'],\n },\n float: {\n value: 'float',\n label: 'Decimal number',\n fields: ['ge', 'gt', 'le', 'lt'],\n },\n list_of_strings: {\n value: 'list_of_strings',\n label: 'List Of Strings',\n fields: ['minItems', 'maxItems', 'enum'],\n },\n boolean: {\n value: 'boolean',\n label: 'Boolean',\n fields: [],\n exclude: ['example'],\n },\n datetime: {\n value: 'datetime',\n label: 'Datetime',\n fields: [],\n },\n}\n\ntype Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>\ntype PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type AttributeForm = PartialBy<AttributeModel, 'scope' | 'position'>\ntype Excludes = (keyof Omit<AttributeModel, 'data'> | keyof AttributeData)[]\n\nconst initFormData: AttributeForm = {\n name: '',\n scope: ['folder', 'task'],\n builtin: false,\n position: 0,\n data: {\n type: 'string',\n title: '',\n description: '',\n example: '',\n default: undefined,\n enum: undefined,\n minLength: undefined,\n maxLength: undefined,\n regex: '',\n minItems: undefined,\n maxItems: undefined,\n ge: undefined,\n gt: undefined,\n le: undefined,\n lt: undefined,\n },\n}\n\n// build the form data based on excludes and to update any data\nconst buildInitFormData = (excludes: Excludes, data?: Partial<AttributeForm>) => {\n // Create a deep clone of init form data\n const formData = JSON.parse(JSON.stringify(initFormData)) as AttributeForm\n\n // Filter out top-level excludes if not in required\n const required = ['name']\n Object.keys(formData).forEach((key) => {\n if (\n !required.includes(key) &&\n excludes.includes(key as keyof Omit<AttributeModel, 'data'>) &&\n key !== 'data'\n ) {\n delete formData[key as keyof AttributeForm]\n }\n })\n\n // Filter out data field excludes if not in in required\n const requiredData = ['title']\n if (formData.data) {\n Object.keys(formData.data).forEach((key) => {\n if (!requiredData.includes(key) && excludes.includes(key as keyof AttributeData)) {\n delete formData.data[key as keyof AttributeData]\n }\n })\n }\n\n // Merge with provided data if any\n if (data) {\n // Merge top-level fields\n Object.keys(data).forEach((key) => {\n const typedKey = key as keyof AttributeForm\n if (typedKey !== 'data' && excludes.includes(typedKey)) return\n\n if (typedKey === 'data' && data.data && formData.data) {\n // Deep merge of data fields\n formData.data = { ...formData.data, ...data.data }\n } else if (data[typedKey] !== undefined) {\n // @ts-ignore - We know these properties exist\n formData[typedKey] = data[typedKey]\n }\n })\n }\n\n return formData\n}\n\nexport interface AttributeEditorProps {\n attribute: AttributeForm | null\n existingNames: string[]\n error?: string\n isUpdating?: boolean\n excludes?: Excludes\n onHide: () => void\n onEdit: (attribute: AttributeForm) => void\n onDelete?: () => void\n}\n\nexport const AttributeEditor: FC<AttributeEditorProps> = ({\n attribute,\n existingNames,\n error = '',\n isUpdating,\n excludes = [],\n onHide,\n onEdit,\n onDelete,\n}) => {\n const initForm = buildInitFormData(excludes, { position: existingNames.length })\n const [formData, setFormData] = useState<AttributeForm | null>(attribute || initForm)\n\n useEffect(() => {\n if (!!attribute) setFormData(attribute)\n }, [attribute])\n\n const isNew = !attribute\n\n // const setTopLevelData = (key: string, value: string) => {\n const setTopLevelData = <K extends keyof Omit<AttributeModel, 'data'>>(\n key: K,\n value: AttributeModel[K],\n ) => {\n setFormData((d) => {\n if (!d) {\n return d\n }\n return { ...d, [key]: value }\n })\n }\n\n // const setData = (key, value) => {\n const setData = <K extends keyof AttributeData>(key: K, value: AttributeData[K]) => {\n setFormData((d) => {\n // Add a check for d and d.data\n if (!d || !d.data) {\n return d\n }\n const dt = { ...d.data, [key]: value }\n return { ...d, data: dt }\n })\n }\n\n let internalError = ''\n if (formData) {\n if (isNew) {\n if (existingNames.includes(formData.name)) internalError = 'This attribute already exists'\n else if (!formData.name.match('^[a-zA-Z_]{2,64}$')) error = 'Invalid attribute name'\n } // name validation\n }\n\n const handleSubmit = () => {\n if (formData) {\n onEdit(formData)\n }\n }\n\n const footer = (\n <div style={{ display: 'flex', width: '100%', flexDirection: 'row' }}>\n {onDelete && attribute && (\n <Button\n variant=\"danger\"\n label={'Delete attribute'}\n icon={'delete'}\n disabled={isUpdating}\n onClick={onDelete}\n />\n )}\n <Spacer />\n <SaveButton\n label={isNew ? 'Create Attribute' : 'Save Attribute'}\n icon={'check'}\n disabled={!!internalError || !formData}\n active={!internalError && !!formData}\n saving={isUpdating}\n onClick={handleSubmit}\n />\n </div>\n )\n\n let dataFields: (keyof AttributeData)[] = []\n\n // add global fields, only if scope are null (all) or the scope is included\n GLOBAL_FIELDS.forEach((globalField) => {\n // @ts-expect-error - project scope will never be found here?\n if (!globalField?.scope || globalField?.scope?.some((s) => formData?.scope?.includes(s))) {\n dataFields.push(globalField.value)\n }\n })\n\n if (formData?.data.type && TYPE_OPTIONS[formData.data.type]) {\n const typeOpt = TYPE_OPTIONS[formData.data.type]\n dataFields = [...dataFields, ...typeOpt.fields].filter((f) => !typeOpt.exclude?.includes(f))\n }\n\n type CustomFieldRenderer = (value: any, onChange: (newValue: any) => void) => JSX.Element | null\n const customFields: {\n enum: CustomFieldRenderer\n inherit: CustomFieldRenderer\n booleanDefault: CustomFieldRenderer\n } = {\n enum: (value = [], onChange) => (\n <EnumEditor\n values={value as AttributeEnumItem[]}\n onChange={(val) => {\n onChange(val?.length ? val : undefined)\n }}\n />\n ),\n inherit: (value, onChange) => (\n <InputSwitch\n checked={value}\n onChange={(e) => onChange((e.target as HTMLInputElement).checked)}\n />\n ),\n booleanDefault: (value, onChange) => (\n <InputSwitch\n checked={value}\n onChange={(e) => onChange((e.target as HTMLInputElement).checked)}\n />\n ),\n }\n\n const handleTitleChange = (e: React.ChangeEvent) => {\n const v = (e.target as HTMLInputElement).value\n setData('title', v)\n\n if (isNew) {\n setTopLevelData('name', camelCase(v))\n }\n }\n\n return (\n <Dialog\n header={formData?.data?.title || formData?.name || 'New attribute'}\n footer={footer}\n onClose={onHide}\n isOpen={true}\n style={{ width: 700, zIndex: 999 }}\n size=\"full\"\n enableBackdropClose={false}\n onKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault()\n handleSubmit()\n }\n }}\n >\n {formData && (\n <FormLayout>\n {!excludes.includes('title') && (\n <FormRow label={'Title'} key={'title'}>\n <InputText value={formData?.data['title']} onChange={handleTitleChange} autoFocus />\n </FormRow>\n )}\n {!excludes.includes('name') && (\n <FormRow label={'Name'} key={'name'}>\n <LockedInput\n value={formData.name}\n disabled={!isNew}\n onSubmit={(v) => setTopLevelData('name', v)}\n label=\"name\"\n />\n </FormRow>\n )}\n {!excludes.includes('scope') && (\n <FormRow label=\"Scope\">\n <Dropdown\n options={SCOPE_OPTIONS}\n disabled={formData.builtin}\n value={formData.scope || []}\n onChange={(v) => setTopLevelData('scope', v as AttributeModel['scope'])}\n multiSelect\n widthExpand\n />\n </FormRow>\n )}\n {!excludes.includes('type') && (\n <FormRow label=\"Type\">\n <Dropdown\n value={[formData?.data?.type]}\n disabled={formData.builtin || !isNew}\n options={Object.values(TYPE_OPTIONS)}\n onChange={(v) => {\n const newType = v[0] as AttributeData['type']\n // Check if regex is supported for the new type\n const typeOpt = TYPE_OPTIONS[newType]\n const supportsRegex = typeOpt?.fields?.includes('regex')\n\n setData('type', newType)\n // Clear regex if not supported by the new type\n if (!supportsRegex && formData?.data?.regex) {\n setData('regex', '')\n }\n }}\n minSelected={1}\n widthExpand\n />\n </FormRow>\n )}\n {dataFields.map((field) => {\n // skip if field is excluded\n if (excludes.includes(field)) return null\n\n let fieldComp = null\n let fieldLabel = upperFirst(field)\n\n if (field === 'enum' || field === 'inherit') {\n const renderer = customFields[field as 'enum' | 'inherit']\n fieldComp = renderer(formData?.data[field], (value) => setData(field, value))\n } else if (field === 'default' && formData?.data?.type === 'boolean') {\n fieldComp = customFields['booleanDefault'](\n formData?.data[field] as boolean,\n (value) => setData(field, value as AttributeData['default']),\n )\n } else if (['ge', 'gt', 'le', 'lt'].includes(field)) {\n // ignore gt and lt\n if (['gt', 'lt'].includes(field)) return null\n fieldComp = (\n <MinMaxField\n value={formData?.data}\n isMin={field === 'ge'}\n isFloat={formData?.data?.type === 'float'}\n onChange={(v) => {\n const geValue = v.ge !== undefined ? Number(v.ge) : undefined\n const leValue = v.le !== undefined ? Number(v.le) : undefined\n\n if (\n // @ts-expect-error\n (v.ge !== undefined && isNaN(geValue)) ||\n // @ts-expect-error\n (v.le !== undefined && isNaN(leValue))\n ) {\n // Do not update the form if the value is not a valid number\n return\n }\n\n setFormData((d) => {\n if (!d || !d.data) return d\n const dt = { ...d.data, ...v }\n return { ...d, data: dt }\n })\n }}\n />\n )\n\n // rewrite field to min or max for display label\n fieldLabel = field === 'ge' ? 'Min' : 'Max'\n } else {\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const strValue = e.target.value\n switch (field) {\n case 'minLength':\n case 'maxLength':\n case 'minItems':\n case 'maxItems': {\n const num = parseInt(strValue, 10)\n setData(field, isNaN(num) ? undefined : num)\n break\n }\n default:\n // For string fields ('description', 'regex') or 'any' type fields ('example', 'default')\n setData(field, strValue as AttributeData[typeof field])\n break\n }\n }\n\n fieldComp = (\n <InputText\n value={String(formData?.data[field] ?? '')}\n onChange={handleInputChange}\n />\n )\n }\n\n return (\n <FormRow\n label={fieldLabel}\n key={field}\n style={{\n alignItems: 'flex-start',\n }}\n >\n {fieldComp}\n </FormRow>\n )\n })}\n <span>\n {(internalError || error) && (\n <span className=\"form-error-text\">{internalError || error}</span>\n )}\n </span>\n </FormLayout>\n )}\n </Dialog>\n )\n}\n"],"names":["SCOPE_OPTIONS","GLOBAL_FIELDS","TYPE_OPTIONS","initFormData","buildInitFormData","excludes","data","formData","required","key","requiredData","typedKey","AttributeEditor","attribute","existingNames","error","isUpdating","onHide","onEdit","onDelete","initForm","setFormData","useState","useEffect","isNew","setTopLevelData","value","d","setData","dt","internalError","handleSubmit","footer","jsxs","jsx","Button","Spacer","SaveButton","dataFields","globalField","s","typeOpt","f","customFields","onChange","EnumEditor","val","InputSwitch","e","handleTitleChange","v","camelCase","Dialog","FormLayout","FormRow","InputText","LockedInput","Dropdown","newType","supportsRegex","field","fieldComp","fieldLabel","upperFirst","renderer","MinMaxField","geValue","leValue","handleInputChange","strValue","num"],"mappings":"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"}
1
+ {"version":3,"file":"AttributeEditor.es.js","sources":["../../../../../src/components/AttributeEditor/AttributeEditor.tsx"],"sourcesContent":["import { FC, useEffect, useState } from 'react'\nimport {\n SaveButton,\n Spacer,\n FormLayout,\n FormRow,\n InputText,\n InputSwitch,\n LockedInput,\n Dropdown,\n Dialog,\n Button,\n} from '@ynput/ayon-react-components'\nimport { camelCase, upperFirst } from 'lodash'\nimport { MinMaxField } from './components'\nimport { EnumEditor } from '@shared/components/EnumEditor'\nimport { AttributeData, AttributeModel, AttributeEnumItem } from '@shared/api'\n\nconst SCOPE_OPTIONS = [\n { value: 'project', label: 'Project' },\n { value: 'folder', label: 'Folder' },\n { value: 'task', label: 'Task' },\n { value: 'product', label: 'Product' },\n { value: 'version', label: 'Version' },\n { value: 'representation', label: 'Representation' },\n { value: 'user', label: 'User' },\n { value: 'list', label: 'List' },\n]\n\n// Define types for constants\ninterface GlobalFieldEntry {\n value: keyof AttributeData\n scope: (AttributeModel['scope'] | '')[] | null\n}\n\nconst GLOBAL_FIELDS: GlobalFieldEntry[] = [\n { value: 'description', scope: null },\n { value: 'example', scope: null },\n // @ts-expect-error - project is not a scope?\n { value: 'default', scope: ['project'] },\n {\n value: 'inherit',\n scope: ['project', 'folder', 'task', 'product', 'version', 'representation', 'user'],\n },\n]\n\ninterface TypeOptionDef {\n value: AttributeData['type']\n label: string\n fields: (keyof AttributeData)[]\n exclude?: (keyof AttributeData)[]\n}\n\ninterface TypeOptionsMap {\n [key: string]: TypeOptionDef\n}\n\nconst TYPE_OPTIONS: TypeOptionsMap = {\n string: {\n value: 'string',\n label: 'String',\n fields: ['minLength', 'maxLength', 'enum', 'regex'],\n },\n integer: {\n value: 'integer',\n label: 'Integer',\n fields: ['ge', 'gt', 'le', 'lt'],\n },\n float: {\n value: 'float',\n label: 'Decimal number',\n fields: ['ge', 'gt', 'le', 'lt'],\n },\n list_of_strings: {\n value: 'list_of_strings',\n label: 'List Of Strings',\n fields: ['minItems', 'maxItems', 'enum'],\n },\n boolean: {\n value: 'boolean',\n label: 'Boolean',\n fields: [],\n exclude: ['example'],\n },\n datetime: {\n value: 'datetime',\n label: 'Datetime',\n fields: [],\n },\n}\n\ntype Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>\ntype PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>\nexport type AttributeForm = PartialBy<AttributeModel, 'scope' | 'position'>\ntype Excludes = (keyof Omit<AttributeModel, 'data'> | keyof AttributeData)[]\n\nconst initFormData: AttributeForm = {\n name: '',\n scope: ['folder', 'task'],\n builtin: false,\n position: 0,\n data: {\n type: 'string',\n title: '',\n description: '',\n example: '',\n default: undefined,\n enum: undefined,\n minLength: undefined,\n maxLength: undefined,\n regex: '',\n minItems: undefined,\n maxItems: undefined,\n ge: undefined,\n gt: undefined,\n le: undefined,\n lt: undefined,\n },\n}\n\n// build the form data based on excludes and to update any data\nconst buildInitFormData = (excludes: Excludes, data?: Partial<AttributeForm>) => {\n // Create a deep clone of init form data\n const formData = JSON.parse(JSON.stringify(initFormData)) as AttributeForm\n\n // Filter out top-level excludes if not in required\n const required = ['name']\n Object.keys(formData).forEach((key) => {\n if (\n !required.includes(key) &&\n excludes.includes(key as keyof Omit<AttributeModel, 'data'>) &&\n key !== 'data'\n ) {\n delete formData[key as keyof AttributeForm]\n }\n })\n\n // Filter out data field excludes if not in in required\n const requiredData = ['title']\n if (formData.data) {\n Object.keys(formData.data).forEach((key) => {\n if (!requiredData.includes(key) && excludes.includes(key as keyof AttributeData)) {\n delete formData.data[key as keyof AttributeData]\n }\n })\n }\n\n // Merge with provided data if any\n if (data) {\n // Merge top-level fields\n Object.keys(data).forEach((key) => {\n const typedKey = key as keyof AttributeForm\n\n if (typedKey === 'data' && data.data && formData.data) {\n // Deep merge of data fields\n formData.data = { ...formData.data, ...data.data }\n } else if (data[typedKey] !== undefined) {\n // @ts-ignore - We know these properties exist\n formData[typedKey] = data[typedKey]\n }\n })\n }\n\n return formData\n}\n\nexport interface AttributeEditorProps {\n attribute: AttributeForm | null\n defaultData?: Partial<AttributeForm>\n existingNames: string[]\n error?: string\n isUpdating?: boolean\n excludes?: Excludes\n onHide: () => void\n onEdit: (attribute: AttributeForm) => void\n onDelete?: () => void\n}\n\nexport const AttributeEditor: FC<AttributeEditorProps> = ({\n attribute,\n defaultData,\n existingNames,\n error = '',\n isUpdating,\n excludes = [],\n onHide,\n onEdit,\n onDelete,\n}) => {\n const resolvedDefaultData = defaultData\n ? {\n ...defaultData,\n name:\n defaultData.name ||\n (defaultData.data?.title ? camelCase(defaultData.data.title) : undefined),\n }\n : undefined\n\n const [formData, setFormData] = useState<AttributeForm | null>(\n attribute ||\n buildInitFormData(excludes, {\n position: existingNames.length,\n ...resolvedDefaultData,\n }),\n )\n\n useEffect(() => {\n if (!!attribute) setFormData(attribute)\n }, [attribute])\n\n const isNew = !attribute\n\n // const setTopLevelData = (key: string, value: string) => {\n const setTopLevelData = <K extends keyof Omit<AttributeModel, 'data'>>(\n key: K,\n value: AttributeModel[K],\n ) => {\n setFormData((d) => {\n if (!d) {\n return d\n }\n return { ...d, [key]: value }\n })\n }\n\n // const setData = (key, value) => {\n const setData = <K extends keyof AttributeData>(key: K, value: AttributeData[K]) => {\n setFormData((d) => {\n // Add a check for d and d.data\n if (!d || !d.data) {\n return d\n }\n const dt = { ...d.data, [key]: value }\n return { ...d, data: dt }\n })\n }\n\n let internalError = ''\n if (formData) {\n if (isNew) {\n if (existingNames.includes(formData.name)) internalError = 'This attribute already exists'\n else if (!formData.name.match('^[a-zA-Z_]{2,64}$')) error = 'Invalid attribute name'\n } // name validation\n }\n\n const handleSubmit = () => {\n if (formData) {\n onEdit(formData)\n }\n }\n\n const footer = (\n <div style={{ display: 'flex', width: '100%', flexDirection: 'row' }}>\n {onDelete && attribute && (\n <Button\n variant=\"danger\"\n label={'Delete attribute'}\n icon={'delete'}\n disabled={isUpdating}\n onClick={onDelete}\n />\n )}\n <Spacer />\n <SaveButton\n label={isNew ? 'Create Attribute' : 'Save Attribute'}\n icon={'check'}\n disabled={!!internalError || !formData}\n active={!internalError && !!formData}\n saving={isUpdating}\n onClick={handleSubmit}\n />\n </div>\n )\n\n let dataFields: (keyof AttributeData)[] = []\n\n // add global fields, only if scope are null (all) or the scope is included\n GLOBAL_FIELDS.forEach((globalField) => {\n // @ts-expect-error - project scope will never be found here?\n if (!globalField?.scope || globalField?.scope?.some((s) => formData?.scope?.includes(s))) {\n dataFields.push(globalField.value)\n }\n })\n\n if (formData?.data.type && TYPE_OPTIONS[formData.data.type]) {\n const typeOpt = TYPE_OPTIONS[formData.data.type]\n dataFields = [...dataFields, ...typeOpt.fields].filter((f) => !typeOpt.exclude?.includes(f))\n }\n\n type CustomFieldRenderer = (value: any, onChange: (newValue: any) => void) => JSX.Element | null\n const customFields: {\n enum: CustomFieldRenderer\n inherit: CustomFieldRenderer\n booleanDefault: CustomFieldRenderer\n } = {\n enum: (value = [], onChange) => (\n <EnumEditor\n values={value as AttributeEnumItem[]}\n onChange={(val) => {\n onChange(val?.length ? val : undefined)\n }}\n />\n ),\n inherit: (value, onChange) => (\n <InputSwitch\n checked={value}\n onChange={(e) => onChange((e.target as HTMLInputElement).checked)}\n />\n ),\n booleanDefault: (value, onChange) => (\n <InputSwitch\n checked={value}\n onChange={(e) => onChange((e.target as HTMLInputElement).checked)}\n />\n ),\n }\n\n const handleTitleChange = (e: React.ChangeEvent) => {\n const v = (e.target as HTMLInputElement).value\n setData('title', v)\n\n if (isNew) {\n setTopLevelData('name', camelCase(v))\n }\n }\n\n return (\n <Dialog\n header={formData?.data?.title || formData?.name || 'New attribute'}\n footer={footer}\n onClose={onHide}\n isOpen={true}\n style={{ width: 700, zIndex: 999 }}\n size=\"full\"\n enableBackdropClose={false}\n onKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault()\n handleSubmit()\n }\n }}\n >\n {formData && (\n <FormLayout>\n {!excludes.includes('title') && (\n <FormRow label={'Title'} key={'title'}>\n <InputText value={formData?.data['title']} onChange={handleTitleChange} autoFocus />\n </FormRow>\n )}\n {!excludes.includes('name') && (\n <FormRow label={'Name'} key={'name'}>\n <LockedInput\n value={formData.name}\n disabled={!isNew}\n onSubmit={(v) => setTopLevelData('name', v)}\n label=\"name\"\n />\n </FormRow>\n )}\n {!excludes.includes('scope') && (\n <FormRow label=\"Scope\">\n <Dropdown\n options={SCOPE_OPTIONS}\n disabled={formData.builtin}\n value={formData.scope || []}\n onChange={(v) => setTopLevelData('scope', v as AttributeModel['scope'])}\n multiSelect\n widthExpand\n />\n </FormRow>\n )}\n {!excludes.includes('type') && (\n <FormRow label=\"Type\">\n <Dropdown\n value={[formData?.data?.type]}\n disabled={formData.builtin || !isNew}\n options={Object.values(TYPE_OPTIONS)}\n onChange={(v) => {\n const newType = v[0] as AttributeData['type']\n // Check if regex is supported for the new type\n const typeOpt = TYPE_OPTIONS[newType]\n const supportsRegex = typeOpt?.fields?.includes('regex')\n\n setData('type', newType)\n // Clear regex if not supported by the new type\n if (!supportsRegex && formData?.data?.regex) {\n setData('regex', '')\n }\n }}\n minSelected={1}\n widthExpand\n />\n </FormRow>\n )}\n {dataFields.map((field) => {\n // skip if field is excluded\n if (excludes.includes(field)) return null\n\n let fieldComp = null\n let fieldLabel = upperFirst(field)\n\n if (field === 'enum' || field === 'inherit') {\n const renderer = customFields[field as 'enum' | 'inherit']\n fieldComp = renderer(formData?.data[field], (value) => setData(field, value))\n } else if (field === 'default' && formData?.data?.type === 'boolean') {\n fieldComp = customFields['booleanDefault'](\n formData?.data[field] as boolean,\n (value) => setData(field, value as AttributeData['default']),\n )\n } else if (['ge', 'gt', 'le', 'lt'].includes(field)) {\n // ignore gt and lt\n if (['gt', 'lt'].includes(field)) return null\n fieldComp = (\n <MinMaxField\n value={formData?.data}\n isMin={field === 'ge'}\n isFloat={formData?.data?.type === 'float'}\n onChange={(v) => {\n const geValue = v.ge !== undefined ? Number(v.ge) : undefined\n const leValue = v.le !== undefined ? Number(v.le) : undefined\n\n if (\n // @ts-expect-error\n (v.ge !== undefined && isNaN(geValue)) ||\n // @ts-expect-error\n (v.le !== undefined && isNaN(leValue))\n ) {\n // Do not update the form if the value is not a valid number\n return\n }\n\n setFormData((d) => {\n if (!d || !d.data) return d\n const dt = { ...d.data, ...v }\n return { ...d, data: dt }\n })\n }}\n />\n )\n\n // rewrite field to min or max for display label\n fieldLabel = field === 'ge' ? 'Min' : 'Max'\n } else {\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const strValue = e.target.value\n switch (field) {\n case 'minLength':\n case 'maxLength':\n case 'minItems':\n case 'maxItems': {\n const num = parseInt(strValue, 10)\n setData(field, isNaN(num) ? undefined : num)\n break\n }\n default:\n // For string fields ('description', 'regex') or 'any' type fields ('example', 'default')\n setData(field, strValue as AttributeData[typeof field])\n break\n }\n }\n\n fieldComp = (\n <InputText\n value={String(formData?.data[field] ?? '')}\n onChange={handleInputChange}\n />\n )\n }\n\n return (\n <FormRow\n label={fieldLabel}\n key={field}\n style={{\n alignItems: 'flex-start',\n }}\n >\n {fieldComp}\n </FormRow>\n )\n })}\n <span>\n {(internalError || error) && (\n <span className=\"form-error-text\">{internalError || error}</span>\n )}\n </span>\n </FormLayout>\n )}\n </Dialog>\n )\n}\n"],"names":["SCOPE_OPTIONS","GLOBAL_FIELDS","TYPE_OPTIONS","initFormData","buildInitFormData","excludes","data","formData","required","key","requiredData","typedKey","AttributeEditor","attribute","defaultData","existingNames","error","isUpdating","onHide","onEdit","onDelete","resolvedDefaultData","camelCase","setFormData","useState","useEffect","isNew","setTopLevelData","value","d","setData","dt","internalError","handleSubmit","footer","jsxs","jsx","Button","Spacer","SaveButton","dataFields","globalField","s","typeOpt","f","customFields","onChange","EnumEditor","val","InputSwitch","e","handleTitleChange","v","Dialog","FormLayout","FormRow","InputText","LockedInput","Dropdown","newType","supportsRegex","field","fieldComp","fieldLabel","upperFirst","renderer","MinMaxField","geValue","leValue","handleInputChange","strValue","num"],"mappings":"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"}
@@ -1,2 +1,14 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../../../_virtual/jsx-runtime.cjs.js"),a=require("react-toastify");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");const d=require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");const c=require("@ynput/ayon-react-components"),g=({projectName:o,entityType:i,entityIds:n,visible:u,onHide:s})=>{const{data:q={},isLoading:e,isError:r,error:l}=d.useGetEntityQuery({projectName:o,entityType:i,entityId:n[0]},{skip:!u});return e&&r&&a.toast.error(`Unable to load detail. ${l}`),!u||q.length<1?null:t.jsxRuntimeExports.jsx(c.Dialog,{isOpen:!0,onClose:s,size:"lg",style:{width:"50vw"},header:`${i} detail`,children:t.jsxRuntimeExports.jsxs("pre",{children:[!e&&!r&&JSON.stringify(q,null,2),e&&"loading...",r&&"error..."]})})};exports.DetailsDialog=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../../../_virtual/jsx-runtime.cjs.js"),d=require("react"),p=require("react-toastify");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");const x=require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");const a=require("@ynput/ayon-react-components"),g=require("../../../../node_modules/@uiw/react-textarea-code-editor/esm/index.cjs.js");require("lodash");const m=require("../../util/copyToClipboard.cjs.js");require("uuid");require("../../util/pubsub.cjs.js");const y=({projectName:n,entityType:i,entityIds:s,visible:t,onHide:l})=>{const{data:r={},isLoading:o,isError:u,error:c}=x.useGetEntityQuery({projectName:n,entityType:i,entityId:s?.[0]},{skip:!t});u&&p.toast.error(`Unable to load detail. ${c}`);const q=d.useMemo(()=>{try{return JSON.stringify(r,null,2)}catch{return String(r)}},[r]);return!t||Array.isArray(r)&&r.length<1?null:e.jsxRuntimeExports.jsxs(a.Dialog,{isOpen:!0,onClose:l,size:"lg",style:{width:"50vw"},header:`${i} detail`,children:[e.jsxRuntimeExports.jsx("style",{children:`
2
+ .details-dialog__code { position: relative; }
3
+ .details-dialog__copy { position: absolute; right: 12px; top: 24px; z-index: 10; background: rgba(0,0,0,0.5); border-radius: 4px; padding: 6px; cursor: pointer; display: none; align-items: center; justify-content: center; }
4
+ .details-dialog__code:hover .details-dialog__copy, .details-dialog__code:focus-within .details-dialog__copy { display: flex; }
5
+ .w-tc-editor .token.property { color: #c9a5f7 !important; }
6
+ .w-tc-editor .token.string { color: #6bc985 !important; }
7
+ .w-tc-editor .token.number { color: #e5a66b !important; }
8
+ .w-tc-editor .token.boolean { color: #e5a66b !important; }
9
+ .w-tc-editor .token.null { color: #7a8a99 !important; }
10
+ .w-tc-editor .token.punctuation { color: #b0bec5 !important; }
11
+ .w-tc-editor .token.operator { color: #b0bec5 !important; }
12
+ .details-dialog__code .w-tc-editor textarea { display: none !important; }
13
+ `}),e.jsxRuntimeExports.jsx("div",{className:"details-dialog__code",children:o||u?e.jsxRuntimeExports.jsx("pre",{children:o?"loading...":"error..."}):e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx("div",{role:"button","aria-label":"Copy JSON",onClick:()=>m.copyToClipboard(q),className:"details-dialog__copy",children:e.jsxRuntimeExports.jsx(a.Icon,{icon:"content_copy","data-tooltip":"Copy to clipboard"})}),e.jsxRuntimeExports.jsx(g.default,{wrap:"off",value:q,language:"json",placeholder:"Please enter JS code.",readOnly:!0,"data-color-mode":"dark"})]})})]})};exports.DetailsDialog=y;
2
14
  //# sourceMappingURL=DetailsDialog.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DetailsDialog.cjs.js","sources":["../../../../../src/components/DetailsDialog/DetailsDialog.tsx"],"sourcesContent":["import { toast } from 'react-toastify'\nimport { useGetEntityQuery } from '@shared/api'\nimport { Dialog } from '@ynput/ayon-react-components'\n\nexport interface DetailsDialogProps {\n projectName?: string\n entityType: string\n entityIds: string[]\n visible: boolean\n onHide: () => void\n}\n\nexport const DetailsDialog = ({\n projectName,\n entityType,\n entityIds,\n visible,\n onHide,\n}: DetailsDialogProps) => {\n const {\n data = {},\n isLoading,\n isError,\n error,\n } = useGetEntityQuery(\n { projectName, entityType: entityType, entityId: entityIds[0] },\n { skip: !visible },\n )\n\n if (isLoading)\n if (isError) {\n toast.error(`Unable to load detail. ${error}`)\n }\n\n if (!visible || data.length < 1) return null\n\n return (\n <Dialog\n isOpen={true}\n onClose={onHide}\n size=\"lg\"\n style={{ width: '50vw' }}\n header={`${entityType} detail`}\n >\n <pre>\n {!isLoading && !isError && JSON.stringify(data, null, 2)}\n {isLoading && 'loading...'}\n {isError && 'error...'}\n </pre>\n </Dialog>\n )\n}\n"],"names":["DetailsDialog","projectName","entityType","entityIds","visible","onHide","data","isLoading","isError","error","useGetEntityQuery","toast","jsx","Dialog"],"mappings":"m0JAYaA,EAAgB,CAAC,CAC5B,YAAAC,EACA,WAAAC,EACA,UAAAC,EACA,QAAAC,EACA,OAAAC,CACF,IAA0B,CACxB,KAAM,CACJ,KAAAC,EAAO,CAAA,EACP,UAAAC,EACA,QAAAC,EACA,MAAAC,CAAA,EACEC,EAAAA,kBACF,CAAE,YAAAT,EAAa,WAAAC,EAAwB,SAAUC,EAAU,CAAC,CAAA,EAC5D,CAAE,KAAM,CAACC,CAAA,CAAQ,EAQnB,OALIG,GACEC,GACFG,EAAAA,MAAM,MAAM,0BAA0BF,CAAK,EAAE,EAG7C,CAACL,GAAWE,EAAK,OAAS,EAAU,KAGtCM,EAAAA,kBAAAA,IAACC,EAAAA,OAAA,CACC,OAAQ,GACR,QAASR,EACT,KAAK,KACL,MAAO,CAAE,MAAO,MAAA,EAChB,OAAQ,GAAGH,CAAU,UAErB,kCAAC,MAAA,CACE,SAAA,CAAA,CAACK,GAAa,CAACC,GAAW,KAAK,UAAUF,EAAM,KAAM,CAAC,EACtDC,GAAa,aACbC,GAAW,UAAA,CAAA,CACd,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"DetailsDialog.cjs.js","sources":["../../../../../src/components/DetailsDialog/DetailsDialog.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { toast } from 'react-toastify'\nimport { useGetEntityQuery } from '@shared/api'\nimport { Dialog, Icon } from '@ynput/ayon-react-components'\nimport CodeEditor from '@uiw/react-textarea-code-editor'\nimport { copyToClipboard } from '@shared/util'\n\nexport interface DetailsDialogProps {\n projectName?: string\n entityType: string\n entityIds: string[]\n visible: boolean\n onHide: () => void\n}\n\nexport const DetailsDialog = ({\n projectName,\n entityType,\n entityIds,\n visible,\n onHide,\n}: DetailsDialogProps) => {\n const {\n data = {},\n isLoading,\n isError,\n error,\n } = useGetEntityQuery(\n { projectName, entityType: entityType, entityId: entityIds?.[0] },\n { skip: !visible },\n )\n\n // Show error toast if the query errored\n if (isError) {\n toast.error(`Unable to load detail. ${error}`)\n }\n\n // Raw pretty JSON for copying and highlighting\n const rawJson = useMemo(() => {\n try {\n return JSON.stringify(data, null, 2)\n } catch {\n return String(data)\n }\n }, [data])\n\n // Keep the early return after hooks to ensure hooks are called on every render in the same order\n if (!visible || (Array.isArray(data) ? data.length < 1 : false)) return null\n\n return (\n <Dialog\n isOpen={true}\n onClose={onHide}\n size=\"lg\"\n style={{ width: '50vw' }}\n header={`${entityType} detail`}\n >\n <style>{`\n .details-dialog__code { position: relative; }\n .details-dialog__copy { position: absolute; right: 12px; top: 24px; z-index: 10; background: rgba(0,0,0,0.5); border-radius: 4px; padding: 6px; cursor: pointer; display: none; align-items: center; justify-content: center; }\n .details-dialog__code:hover .details-dialog__copy, .details-dialog__code:focus-within .details-dialog__copy { display: flex; }\n .w-tc-editor .token.property { color: #c9a5f7 !important; }\n .w-tc-editor .token.string { color: #6bc985 !important; }\n .w-tc-editor .token.number { color: #e5a66b !important; }\n .w-tc-editor .token.boolean { color: #e5a66b !important; }\n .w-tc-editor .token.null { color: #7a8a99 !important; }\n .w-tc-editor .token.punctuation { color: #b0bec5 !important; }\n .w-tc-editor .token.operator { color: #b0bec5 !important; }\n .details-dialog__code .w-tc-editor textarea { display: none !important; }\n `}</style>\n <div className=\"details-dialog__code\">\n {isLoading || isError ? (\n <pre>{isLoading ? 'loading...' : 'error...'}</pre>\n ) : (\n <>\n <div\n role=\"button\"\n aria-label=\"Copy JSON\"\n onClick={() => copyToClipboard(rawJson)}\n className=\"details-dialog__copy\"\n >\n <Icon icon={'content_copy'} data-tooltip=\"Copy to clipboard\" />\n </div>\n <CodeEditor\n wrap={'off'}\n value={rawJson}\n language=\"json\"\n placeholder=\"Please enter JS code.\"\n readOnly\n data-color-mode={'dark'}\n />\n </>\n )}\n </div>\n </Dialog>\n )\n}"],"names":["DetailsDialog","projectName","entityType","entityIds","visible","onHide","data","isLoading","isError","error","useGetEntityQuery","toast","rawJson","useMemo","jsxs","Dialog","jsx","Fragment","copyToClipboard","Icon","CodeEditor"],"mappings":"wiKAeO,MAAMA,EAAgB,CAAC,CAC5B,YAAAC,EACA,WAAAC,EACA,UAAAC,EACA,QAAAC,EACA,OAAAC,CACF,IAA0B,CACxB,KAAM,CACJ,KAAAC,EAAO,CAAA,EACP,UAAAC,EACA,QAAAC,EACA,MAAAC,CAAA,EACEC,EAAAA,kBACF,CAAE,YAAAT,EAAa,WAAAC,EAAwB,SAAUC,IAAY,CAAC,CAAA,EAC9D,CAAE,KAAM,CAACC,CAAA,CAAQ,EAIfI,GACFG,EAAAA,MAAM,MAAM,0BAA0BF,CAAK,EAAE,EAI/C,MAAMG,EAAUC,EAAAA,QAAQ,IAAM,CAC5B,GAAI,CACF,OAAO,KAAK,UAAUP,EAAM,KAAM,CAAC,CACrC,MAAQ,CACN,OAAO,OAAOA,CAAI,CACpB,CACF,EAAG,CAACA,CAAI,CAAC,EAGT,MAAI,CAACF,GAAY,MAAM,QAAQE,CAAI,GAAIA,EAAK,OAAS,EAAmB,KAGtEQ,EAAAA,kBAAAA,KAACC,EAAAA,OAAA,CACC,OAAQ,GACR,QAASV,EACT,KAAK,KACL,MAAO,CAAE,MAAO,MAAA,EAChB,OAAQ,GAAGH,CAAU,UAErB,SAAA,CAAAc,wBAAC,QAAA,CAAO,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAYN,EACFA,wBAAC,MAAA,CAAI,UAAU,uBACZ,SAAAT,GAAaC,EACZQ,wBAAC,MAAA,CAAK,SAAAT,EAAY,aAAe,UAAA,CAAW,EAE5CO,yBAAAG,EAAAA,kBAAAA,SAAA,CACE,SAAA,CAAAD,EAAAA,kBAAAA,IAAC,MAAA,CACC,KAAK,SACL,aAAW,YACX,QAAS,IAAME,EAAAA,gBAAgBN,CAAO,EACtC,UAAU,uBAEV,SAAAI,EAAAA,kBAAAA,IAACG,OAAA,CAAK,KAAM,eAAgB,eAAa,mBAAA,CAAoB,CAAA,CAAA,EAE/DH,EAAAA,kBAAAA,IAACI,EAAAA,QAAA,CACC,KAAM,MACN,MAAOR,EACP,SAAS,OACT,YAAY,wBACZ,SAAQ,GACR,kBAAiB,MAAA,CAAA,CACnB,CAAA,CACF,CAAA,CAEJ,CAAA,CAAA,CAAA,CAGN"}