@ynput/ayon-frontend-shared 0.3.21 → 0.3.23

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 (360) hide show
  1. package/dist/DetailsPanel.cjs.js +1 -1
  2. package/dist/DetailsPanel.es.js +23 -22
  3. package/dist/DetailsPanel.es.js.map +1 -1
  4. package/dist/_virtual/index.cjs15.js +1 -1
  5. package/dist/_virtual/index.cjs19.js +1 -1
  6. package/dist/_virtual/index.cjs6.js +1 -1
  7. package/dist/_virtual/index.cjs8.js +1 -1
  8. package/dist/_virtual/index.es15.js +2 -2
  9. package/dist/_virtual/index.es16.js +2 -2
  10. package/dist/_virtual/index.es17.js +2 -2
  11. package/dist/_virtual/index.es18.js +2 -2
  12. package/dist/_virtual/index.es19.js +2 -2
  13. package/dist/_virtual/index.es6.js +2 -2
  14. package/dist/_virtual/index.es8.js +2 -2
  15. package/dist/components.cjs.js +1 -1
  16. package/dist/components.es.js +157 -155
  17. package/dist/components.es.js.map +1 -1
  18. package/dist/index.cjs.js +1 -1
  19. package/dist/index.es.js +10 -9
  20. package/dist/index.es.js.map +1 -1
  21. package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
  22. package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
  23. package/dist/node_modules/remove-accents/index.cjs.js +1 -1
  24. package/dist/node_modules/remove-accents/index.es.js +1 -1
  25. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.cjs.js +1 -1
  26. package/dist/shared/node_modules/@module-federation/error-codes/dist/index.es.js +1 -1
  27. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.cjs.js +1 -1
  28. package/dist/shared/node_modules/@module-federation/runtime-core/dist/index.es.js +1 -1
  29. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
  30. package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
  31. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
  32. package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
  33. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
  34. package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
  35. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
  36. package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
  37. package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
  38. package/dist/shared/node_modules/prop-types/index.es.js +1 -1
  39. package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
  40. package/dist/shared/node_modules/react-is/index.es.js +1 -1
  41. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
  42. package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
  43. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +155 -175
  44. package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
  45. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +2 -0
  46. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -0
  47. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +77 -0
  48. package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -0
  49. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
  50. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
  51. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +3 -2
  52. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
  53. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
  54. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
  55. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +3 -2
  56. package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
  57. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js +1 -1
  58. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.cjs.js.map +1 -1
  59. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js +26 -24
  60. package/dist/shared/src/components/EnumEditor/DraggableEnumEditorItem.es.js.map +1 -1
  61. package/dist/shared/src/components/EnumEditor/EnumEditor.cjs.js +1 -1
  62. package/dist/shared/src/components/EnumEditor/EnumEditor.cjs.js.map +1 -1
  63. package/dist/shared/src/components/EnumEditor/EnumEditor.es.js +63 -60
  64. package/dist/shared/src/components/EnumEditor/EnumEditor.es.js.map +1 -1
  65. package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js +1 -1
  66. package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
  67. package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js +110 -89
  68. package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
  69. package/dist/shared/src/components/EnumEditor/hooks/useDraggable.cjs.js +1 -1
  70. package/dist/shared/src/components/EnumEditor/hooks/useDraggable.cjs.js.map +1 -1
  71. package/dist/shared/src/components/EnumEditor/hooks/useDraggable.es.js +36 -28
  72. package/dist/shared/src/components/EnumEditor/hooks/useDraggable.es.js.map +1 -1
  73. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
  74. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
  75. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +3 -2
  76. package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
  77. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
  78. package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
  79. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +3 -2
  80. package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
  81. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
  82. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
  83. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -4
  84. package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
  85. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
  86. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
  87. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -2
  88. package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
  89. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
  90. package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
  91. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +3 -2
  92. package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
  93. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
  94. package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
  95. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +3 -2
  96. package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
  97. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
  98. package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
  99. package/dist/shared/src/components/RenameForm/RenameForm.es.js +3 -2
  100. package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
  101. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
  102. package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
  103. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +3 -2
  104. package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
  105. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
  106. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
  107. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +4 -3
  108. package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
  109. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
  110. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
  111. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +3 -2
  112. package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
  113. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +2 -0
  114. package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -0
  115. package/dist/shared/src/components/ReviewablesSelector/Card.es.js +307 -0
  116. package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -0
  117. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +1 -1
  118. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -1
  119. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +64 -322
  120. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -1
  121. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js +22 -5
  122. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js.map +1 -1
  123. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js +27 -9
  124. package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js.map +1 -1
  125. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
  126. package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
  127. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +5 -4
  128. package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
  129. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
  130. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
  131. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +3 -2
  132. package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
  133. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
  134. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
  135. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +3 -2
  136. package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
  137. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
  138. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
  139. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +5 -4
  140. package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
  141. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
  142. package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
  143. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +3 -2
  144. package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
  145. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
  146. package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
  147. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +3 -2
  148. package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
  149. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
  150. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
  151. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +3 -2
  152. package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
  153. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
  154. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
  155. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +3 -2
  156. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
  157. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
  158. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
  159. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +3 -2
  160. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
  161. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
  162. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
  163. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +3 -2
  164. package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
  165. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
  166. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
  167. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +17 -16
  168. package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
  169. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
  170. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
  171. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +3 -2
  172. package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
  173. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
  174. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
  175. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +3 -2
  176. package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
  177. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
  178. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
  179. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +3 -2
  180. package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
  181. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
  182. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
  183. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +3 -2
  184. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
  185. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
  186. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
  187. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +3 -2
  188. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
  189. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
  190. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
  191. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +3 -2
  192. package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
  193. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
  194. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
  195. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +3 -2
  196. package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
  197. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
  198. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
  199. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +3 -2
  200. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
  201. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
  202. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
  203. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +3 -2
  204. package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
  205. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
  206. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
  207. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +3 -2
  208. package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
  209. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
  210. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
  211. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +7 -6
  212. package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
  213. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
  214. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
  215. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +3 -2
  216. package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
  217. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
  218. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
  219. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +3 -2
  220. package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
  221. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
  222. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
  223. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +3 -2
  224. package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
  225. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
  226. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
  227. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +3 -2
  228. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
  229. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
  230. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
  231. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +3 -2
  232. package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
  233. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
  234. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
  235. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +3 -2
  236. package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
  237. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
  238. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
  239. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +3 -2
  240. package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
  241. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
  242. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
  243. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +3 -2
  244. package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
  245. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
  246. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
  247. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +6 -5
  248. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
  249. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
  250. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
  251. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +3 -2
  252. package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
  253. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
  254. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
  255. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +3 -2
  256. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
  257. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
  258. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
  259. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +3 -2
  260. package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
  261. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
  262. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
  263. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +3 -2
  264. package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
  265. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
  266. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
  267. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +3 -2
  268. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
  269. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
  270. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
  271. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +3 -2
  272. package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
  273. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
  274. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
  275. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +3 -2
  276. package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
  277. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
  278. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
  279. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +3 -2
  280. package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
  281. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
  282. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
  283. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +3 -2
  284. package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
  285. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
  286. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
  287. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +3 -2
  288. package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
  289. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
  290. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
  291. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +9 -8
  292. package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
  293. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
  294. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
  295. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +14 -13
  296. package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
  297. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +1 -1
  298. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
  299. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +1 -0
  300. package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
  301. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
  302. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
  303. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +4 -3
  304. package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
  305. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
  306. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
  307. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +5 -4
  308. package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
  309. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
  310. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
  311. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +3 -2
  312. package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
  313. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
  314. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
  315. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +3 -2
  316. package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
  317. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
  318. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
  319. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +3 -2
  320. package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
  321. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
  322. package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
  323. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +3 -2
  324. package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
  325. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
  326. package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
  327. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +3 -2
  328. package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
  329. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
  330. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
  331. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +3 -2
  332. package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
  333. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
  334. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
  335. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +4 -4
  336. package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
  337. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
  338. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
  339. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +3 -2
  340. package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
  341. package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
  342. package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
  343. package/dist/shared/src/context/WebsocketContext.es.js +5 -4
  344. package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
  345. package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
  346. package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
  347. package/dist/shared/src/util/getAttributeIcon.cjs.js +1 -1
  348. package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
  349. package/dist/shared/src/util/getAttributeIcon.es.js +5 -5
  350. package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
  351. package/dist/types/components/AttributeEditor/attributeTypeMap.d.ts +13 -0
  352. package/dist/types/components/AttributeEditor/index.d.ts +1 -0
  353. package/dist/types/components/EnumEditor/DraggableEnumEditorItem.d.ts +2 -1
  354. package/dist/types/components/EnumEditor/EnumEditor.d.ts +2 -1
  355. package/dist/types/components/EnumEditor/EnumEditorItem.d.ts +2 -1
  356. package/dist/types/components/EnumEditor/hooks/useDraggable.d.ts +3 -1
  357. package/dist/types/components/ReviewablesSelector/Card.d.ts +18 -0
  358. package/dist/types/components/ReviewablesSelector/ReviewablesSelector.d.ts +1 -2
  359. package/dist/types/components/ReviewablesSelector/ReviewablesSelector.styled.d.ts +1 -0
  360. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPanelUploaderDialog.cjs.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploaderDialog.tsx"],"sourcesContent":["// A dialog to ask the user to name their new upload uploaded version (naming the product)\n// by default we can take the file name\n\nimport { Dialog, InputText, Button, FormRow } from '@ynput/ayon-react-components'\nimport { camelCase, upperFirst } from 'lodash'\nimport { FC, useState, useEffect, useRef } from 'react'\nimport { parseFilename } from '../ReviewablesList'\n\nconst prefix = 'review'\nconst buildDefaultName = (file?: File | null) => {\n // remove file extension\n // convert to camelCase\n // first letter to uppercase\n // prefix with \"review\"\n if (!file) return ''\n const name = parseFilename(file.name).replace(/\\.[^/.]+$/, '') // remove file extension\n const camelCaseName = camelCase(name)\n const pascalCaseName = upperFirst(camelCaseName)\n return `${prefix}${pascalCaseName}`\n}\n\ninterface EntityPanelUploaderDialogProps {\n files: FileList | null // used to determine the default product name\n isOpen: boolean\n defaultProductName?: string\n onCancel?: () => void\n onSubmit?: (productName: string) => void\n}\n\nconst EntityPanelUploaderDialog: FC<EntityPanelUploaderDialogProps> = ({\n files,\n isOpen,\n onCancel,\n onSubmit,\n}) => {\n // Build default product name from the first file\n const defaultProductName = buildDefaultName(files?.[0])\n const inputRef = useRef<HTMLInputElement>(null)\n const hasSelectedRef = useRef(false)\n\n const [product, setProduct] = useState(defaultProductName)\n\n // Update state when defaultProductName changes\n useEffect(() => {\n setProduct(defaultProductName)\n hasSelectedRef.current = false // Reset selection flag when product name changes\n }, [defaultProductName])\n\n // Select the filename part (excluding \"review\" prefix) when dialog opens - only once\n useEffect(() => {\n if (isOpen && inputRef.current && product.startsWith(prefix) && !hasSelectedRef.current) {\n // Focus the input first\n inputRef.current.focus()\n // Then select just the filename part (after \"review\")\n const selectionStart = prefix.length\n const selectionEnd = product.length\n inputRef.current.setSelectionRange(selectionStart, selectionEnd)\n hasSelectedRef.current = true // Mark as selected to prevent re-selection\n } else if (!isOpen) {\n hasSelectedRef.current = false // Reset when dialog closes\n }\n }, [isOpen, product])\n\n const handleSubmit = () => {\n if (product.trim() && onSubmit) {\n onSubmit(product.trim())\n }\n }\n\n const handleCancel = () => {\n setProduct(defaultProductName)\n if (onCancel) {\n onCancel()\n }\n }\n\n const isValidProduct = product.trim().length > 0\n\n const footer = (\n <div style={{ display: 'flex', gap: '8px', justifyContent: 'flex-end' }}>\n <Button variant=\"text\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button variant=\"filled\" onClick={handleSubmit} disabled={!isValidProduct}>\n Upload\n </Button>\n </div>\n )\n\n return (\n <Dialog isOpen={isOpen} onClose={handleCancel} header=\"Upload Entity\" footer={footer} size=\"sm\">\n <div style={{ padding: '16px 0' }}>\n <FormRow label=\"Product Name\">\n <InputText\n ref={inputRef}\n placeholder=\"Enter product name...\"\n value={product}\n onChange={(e) => setProduct(e.target.value)}\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter' && isValidProduct) {\n e.preventDefault()\n handleSubmit()\n } else if (e.key === 'Escape') {\n e.preventDefault()\n handleCancel()\n }\n }}\n />\n </FormRow>\n </div>\n </Dialog>\n )\n}\n\nexport default EntityPanelUploaderDialog\n"],"names":["prefix","buildDefaultName","file","name","parseFilename","camelCaseName","camelCase","pascalCaseName","upperFirst","EntityPanelUploaderDialog","files","isOpen","onCancel","onSubmit","defaultProductName","inputRef","useRef","hasSelectedRef","product","setProduct","useState","useEffect","selectionStart","selectionEnd","handleSubmit","handleCancel","isValidProduct","footer","jsxs","jsx","Button","Dialog","FormRow","InputText"],"mappings":"4ueAQMA,EAAS,SACTC,EAAoBC,GAAuB,CAK/C,GAAI,CAACA,EAAM,MAAO,GAClB,MAAMC,EAAOC,EAAAA,cAAcF,EAAK,IAAI,EAAE,QAAQ,YAAa,EAAE,EACvDG,EAAgBC,EAAAA,UAAUH,CAAI,EAC9BI,EAAiBC,EAAAA,WAAWH,CAAa,EAC/C,MAAO,GAAGL,CAAM,GAAGO,CAAc,EACnC,EAUME,EAAgE,CAAC,CACrE,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,SAAAC,CACF,IAAM,CAEJ,MAAMC,EAAqBb,EAAiBS,IAAQ,CAAC,CAAC,EAChDK,EAAWC,EAAAA,OAAyB,IAAI,EACxCC,EAAiBD,EAAAA,OAAO,EAAK,EAE7B,CAACE,EAASC,CAAU,EAAIC,EAAAA,SAASN,CAAkB,EAGzDO,EAAAA,UAAU,IAAM,CACdF,EAAWL,CAAkB,EAC7BG,EAAe,QAAU,EAC3B,EAAG,CAACH,CAAkB,CAAC,EAGvBO,EAAAA,UAAU,IAAM,CACd,GAAIV,GAAUI,EAAS,SAAWG,EAAQ,WAAWlB,CAAM,GAAK,CAACiB,EAAe,QAAS,CAEvFF,EAAS,QAAQ,MAAA,EAEjB,MAAMO,EAAiBtB,EAAO,OACxBuB,EAAeL,EAAQ,OAC7BH,EAAS,QAAQ,kBAAkBO,EAAgBC,CAAY,EAC/DN,EAAe,QAAU,EAC3B,MAAYN,IACVM,EAAe,QAAU,GAE7B,EAAG,CAACN,EAAQO,CAAO,CAAC,EAEpB,MAAMM,EAAe,IAAM,CACrBN,EAAQ,KAAA,GAAUL,GACpBA,EAASK,EAAQ,MAAM,CAE3B,EAEMO,EAAe,IAAM,CACzBN,EAAWL,CAAkB,EACzBF,GACFA,EAAA,CAEJ,EAEMc,EAAiBR,EAAQ,KAAA,EAAO,OAAS,EAEzCS,EACJC,EAAAA,kBAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,IAAK,MAAO,eAAgB,UAAA,EACzD,SAAA,CAAAC,wBAACC,EAAAA,OAAA,CAAO,QAAQ,OAAO,QAASL,EAAc,SAAA,SAE9C,EACAI,EAAAA,kBAAAA,IAACC,EAAAA,QAAO,QAAQ,SAAS,QAASN,EAAc,SAAU,CAACE,EAAgB,SAAA,QAAA,CAE3E,CAAA,EACF,EAGF,OACEG,wBAACE,EAAAA,QAAO,OAAApB,EAAgB,QAASc,EAAc,OAAO,gBAAgB,OAAAE,EAAgB,KAAK,KACzF,iCAAC,MAAA,CAAI,MAAO,CAAE,QAAS,QAAA,EACrB,SAAAE,EAAAA,kBAAAA,IAACG,EAAAA,QAAA,CAAQ,MAAM,eACb,SAAAH,EAAAA,kBAAAA,IAACI,EAAAA,UAAA,CACC,IAAKlB,EACL,YAAY,wBACZ,MAAOG,EACP,SAAW,GAAMC,EAAW,EAAE,OAAO,KAAK,EAC1C,UAAS,GACT,UAAY,GAAM,CACZ,EAAE,MAAQ,SAAWO,GACvB,EAAE,eAAA,EACFF,EAAA,GACS,EAAE,MAAQ,WACnB,EAAE,eAAA,EACFC,EAAA,EAEJ,CAAA,CAAA,CACF,CACF,EACF,EACF,CAEJ"}
1
+ {"version":3,"file":"EntityPanelUploaderDialog.cjs.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploaderDialog.tsx"],"sourcesContent":["// A dialog to ask the user to name their new upload uploaded version (naming the product)\n// by default we can take the file name\n\nimport { Dialog, InputText, Button, FormRow } from '@ynput/ayon-react-components'\nimport { camelCase, upperFirst } from 'lodash'\nimport { FC, useState, useEffect, useRef } from 'react'\nimport { parseFilename } from '../ReviewablesList'\n\nconst prefix = 'review'\nconst buildDefaultName = (file?: File | null) => {\n // remove file extension\n // convert to camelCase\n // first letter to uppercase\n // prefix with \"review\"\n if (!file) return ''\n const name = parseFilename(file.name).replace(/\\.[^/.]+$/, '') // remove file extension\n const camelCaseName = camelCase(name)\n const pascalCaseName = upperFirst(camelCaseName)\n return `${prefix}${pascalCaseName}`\n}\n\ninterface EntityPanelUploaderDialogProps {\n files: FileList | null // used to determine the default product name\n isOpen: boolean\n defaultProductName?: string\n onCancel?: () => void\n onSubmit?: (productName: string) => void\n}\n\nconst EntityPanelUploaderDialog: FC<EntityPanelUploaderDialogProps> = ({\n files,\n isOpen,\n onCancel,\n onSubmit,\n}) => {\n // Build default product name from the first file\n const defaultProductName = buildDefaultName(files?.[0])\n const inputRef = useRef<HTMLInputElement>(null)\n const hasSelectedRef = useRef(false)\n\n const [product, setProduct] = useState(defaultProductName)\n\n // Update state when defaultProductName changes\n useEffect(() => {\n setProduct(defaultProductName)\n hasSelectedRef.current = false // Reset selection flag when product name changes\n }, [defaultProductName])\n\n // Select the filename part (excluding \"review\" prefix) when dialog opens - only once\n useEffect(() => {\n if (isOpen && inputRef.current && product.startsWith(prefix) && !hasSelectedRef.current) {\n // Focus the input first\n inputRef.current.focus()\n // Then select just the filename part (after \"review\")\n const selectionStart = prefix.length\n const selectionEnd = product.length\n inputRef.current.setSelectionRange(selectionStart, selectionEnd)\n hasSelectedRef.current = true // Mark as selected to prevent re-selection\n } else if (!isOpen) {\n hasSelectedRef.current = false // Reset when dialog closes\n }\n }, [isOpen, product])\n\n const handleSubmit = () => {\n if (product.trim() && onSubmit) {\n onSubmit(product.trim())\n }\n }\n\n const handleCancel = () => {\n setProduct(defaultProductName)\n if (onCancel) {\n onCancel()\n }\n }\n\n const isValidProduct = product.trim().length > 0\n\n const footer = (\n <div style={{ display: 'flex', gap: '8px', justifyContent: 'flex-end' }}>\n <Button variant=\"text\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button variant=\"filled\" onClick={handleSubmit} disabled={!isValidProduct}>\n Upload\n </Button>\n </div>\n )\n\n return (\n <Dialog isOpen={isOpen} onClose={handleCancel} header=\"Upload Entity\" footer={footer} size=\"sm\">\n <div style={{ padding: '16px 0' }}>\n <FormRow label=\"Product Name\">\n <InputText\n ref={inputRef}\n placeholder=\"Enter product name...\"\n value={product}\n onChange={(e) => setProduct(e.target.value)}\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter' && isValidProduct) {\n e.preventDefault()\n handleSubmit()\n } else if (e.key === 'Escape') {\n e.preventDefault()\n handleCancel()\n }\n }}\n />\n </FormRow>\n </div>\n </Dialog>\n )\n}\n\nexport default EntityPanelUploaderDialog\n"],"names":["prefix","buildDefaultName","file","name","parseFilename","camelCaseName","camelCase","pascalCaseName","upperFirst","EntityPanelUploaderDialog","files","isOpen","onCancel","onSubmit","defaultProductName","inputRef","useRef","hasSelectedRef","product","setProduct","useState","useEffect","selectionStart","selectionEnd","handleSubmit","handleCancel","isValidProduct","footer","jsxs","jsx","Button","Dialog","FormRow","InputText"],"mappings":"kyeAQMA,EAAS,SACTC,EAAoBC,GAAuB,CAK/C,GAAI,CAACA,EAAM,MAAO,GAClB,MAAMC,EAAOC,EAAAA,cAAcF,EAAK,IAAI,EAAE,QAAQ,YAAa,EAAE,EACvDG,EAAgBC,EAAAA,UAAUH,CAAI,EAC9BI,EAAiBC,EAAAA,WAAWH,CAAa,EAC/C,MAAO,GAAGL,CAAM,GAAGO,CAAc,EACnC,EAUME,EAAgE,CAAC,CACrE,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,SAAAC,CACF,IAAM,CAEJ,MAAMC,EAAqBb,EAAiBS,IAAQ,CAAC,CAAC,EAChDK,EAAWC,EAAAA,OAAyB,IAAI,EACxCC,EAAiBD,EAAAA,OAAO,EAAK,EAE7B,CAACE,EAASC,CAAU,EAAIC,EAAAA,SAASN,CAAkB,EAGzDO,EAAAA,UAAU,IAAM,CACdF,EAAWL,CAAkB,EAC7BG,EAAe,QAAU,EAC3B,EAAG,CAACH,CAAkB,CAAC,EAGvBO,EAAAA,UAAU,IAAM,CACd,GAAIV,GAAUI,EAAS,SAAWG,EAAQ,WAAWlB,CAAM,GAAK,CAACiB,EAAe,QAAS,CAEvFF,EAAS,QAAQ,MAAA,EAEjB,MAAMO,EAAiBtB,EAAO,OACxBuB,EAAeL,EAAQ,OAC7BH,EAAS,QAAQ,kBAAkBO,EAAgBC,CAAY,EAC/DN,EAAe,QAAU,EAC3B,MAAYN,IACVM,EAAe,QAAU,GAE7B,EAAG,CAACN,EAAQO,CAAO,CAAC,EAEpB,MAAMM,EAAe,IAAM,CACrBN,EAAQ,KAAA,GAAUL,GACpBA,EAASK,EAAQ,MAAM,CAE3B,EAEMO,EAAe,IAAM,CACzBN,EAAWL,CAAkB,EACzBF,GACFA,EAAA,CAEJ,EAEMc,EAAiBR,EAAQ,KAAA,EAAO,OAAS,EAEzCS,EACJC,EAAAA,kBAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,IAAK,MAAO,eAAgB,UAAA,EACzD,SAAA,CAAAC,wBAACC,EAAAA,OAAA,CAAO,QAAQ,OAAO,QAASL,EAAc,SAAA,SAE9C,EACAI,EAAAA,kBAAAA,IAACC,EAAAA,QAAO,QAAQ,SAAS,QAASN,EAAc,SAAU,CAACE,EAAgB,SAAA,QAAA,CAE3E,CAAA,EACF,EAGF,OACEG,wBAACE,EAAAA,QAAO,OAAApB,EAAgB,QAASc,EAAc,OAAO,gBAAgB,OAAAE,EAAgB,KAAK,KACzF,iCAAC,MAAA,CAAI,MAAO,CAAE,QAAS,QAAA,EACrB,SAAAE,EAAAA,kBAAAA,IAACG,EAAAA,QAAA,CAAQ,MAAM,eACb,SAAAH,EAAAA,kBAAAA,IAACI,EAAAA,UAAA,CACC,IAAKlB,EACL,YAAY,wBACZ,MAAOG,EACP,SAAW,GAAMC,EAAW,EAAE,OAAO,KAAK,EAC1C,UAAS,GACT,UAAY,GAAM,CACZ,EAAE,MAAQ,SAAWO,GACvB,EAAE,eAAA,EACFF,EAAA,GACS,EAAE,MAAQ,WACnB,EAAE,eAAA,EACFC,EAAA,EAEJ,CAAA,CAAA,CACF,CACF,EACF,EACF,CAEJ"}
@@ -103,6 +103,7 @@ import "clsx";
103
103
  import "../AttributeEditor/components/MinMaxField.es.js";
104
104
  import "react-dom";
105
105
  import "../EnumEditor/EnumEditor.styled.es.js";
106
+ import "../AttributeEditor/attributeTypeMap.es.js";
106
107
  import "../Badge/Badge.es.js";
107
108
  import "../Chips/Chips.es.js";
108
109
  import "date-fns";
@@ -271,7 +272,7 @@ const u = "review", k = (m) => {
271
272
  if (!m) return "";
272
273
  const i = P(m.name).replace(/\.[^/.]+$/, ""), p = D(i), e = R(p);
273
274
  return `${u}${e}`;
274
- }, Fm = ({
275
+ }, Sm = ({
275
276
  files: m,
276
277
  isOpen: i,
277
278
  onCancel: p,
@@ -310,6 +311,6 @@ const u = "review", k = (m) => {
310
311
  ) }) }) });
311
312
  };
312
313
  export {
313
- Fm as default
314
+ Sm as default
314
315
  };
315
316
  //# sourceMappingURL=EntityPanelUploaderDialog.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPanelUploaderDialog.es.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploaderDialog.tsx"],"sourcesContent":["// A dialog to ask the user to name their new upload uploaded version (naming the product)\n// by default we can take the file name\n\nimport { Dialog, InputText, Button, FormRow } from '@ynput/ayon-react-components'\nimport { camelCase, upperFirst } from 'lodash'\nimport { FC, useState, useEffect, useRef } from 'react'\nimport { parseFilename } from '../ReviewablesList'\n\nconst prefix = 'review'\nconst buildDefaultName = (file?: File | null) => {\n // remove file extension\n // convert to camelCase\n // first letter to uppercase\n // prefix with \"review\"\n if (!file) return ''\n const name = parseFilename(file.name).replace(/\\.[^/.]+$/, '') // remove file extension\n const camelCaseName = camelCase(name)\n const pascalCaseName = upperFirst(camelCaseName)\n return `${prefix}${pascalCaseName}`\n}\n\ninterface EntityPanelUploaderDialogProps {\n files: FileList | null // used to determine the default product name\n isOpen: boolean\n defaultProductName?: string\n onCancel?: () => void\n onSubmit?: (productName: string) => void\n}\n\nconst EntityPanelUploaderDialog: FC<EntityPanelUploaderDialogProps> = ({\n files,\n isOpen,\n onCancel,\n onSubmit,\n}) => {\n // Build default product name from the first file\n const defaultProductName = buildDefaultName(files?.[0])\n const inputRef = useRef<HTMLInputElement>(null)\n const hasSelectedRef = useRef(false)\n\n const [product, setProduct] = useState(defaultProductName)\n\n // Update state when defaultProductName changes\n useEffect(() => {\n setProduct(defaultProductName)\n hasSelectedRef.current = false // Reset selection flag when product name changes\n }, [defaultProductName])\n\n // Select the filename part (excluding \"review\" prefix) when dialog opens - only once\n useEffect(() => {\n if (isOpen && inputRef.current && product.startsWith(prefix) && !hasSelectedRef.current) {\n // Focus the input first\n inputRef.current.focus()\n // Then select just the filename part (after \"review\")\n const selectionStart = prefix.length\n const selectionEnd = product.length\n inputRef.current.setSelectionRange(selectionStart, selectionEnd)\n hasSelectedRef.current = true // Mark as selected to prevent re-selection\n } else if (!isOpen) {\n hasSelectedRef.current = false // Reset when dialog closes\n }\n }, [isOpen, product])\n\n const handleSubmit = () => {\n if (product.trim() && onSubmit) {\n onSubmit(product.trim())\n }\n }\n\n const handleCancel = () => {\n setProduct(defaultProductName)\n if (onCancel) {\n onCancel()\n }\n }\n\n const isValidProduct = product.trim().length > 0\n\n const footer = (\n <div style={{ display: 'flex', gap: '8px', justifyContent: 'flex-end' }}>\n <Button variant=\"text\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button variant=\"filled\" onClick={handleSubmit} disabled={!isValidProduct}>\n Upload\n </Button>\n </div>\n )\n\n return (\n <Dialog isOpen={isOpen} onClose={handleCancel} header=\"Upload Entity\" footer={footer} size=\"sm\">\n <div style={{ padding: '16px 0' }}>\n <FormRow label=\"Product Name\">\n <InputText\n ref={inputRef}\n placeholder=\"Enter product name...\"\n value={product}\n onChange={(e) => setProduct(e.target.value)}\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter' && isValidProduct) {\n e.preventDefault()\n handleSubmit()\n } else if (e.key === 'Escape') {\n e.preventDefault()\n handleCancel()\n }\n }}\n />\n </FormRow>\n </div>\n </Dialog>\n )\n}\n\nexport default EntityPanelUploaderDialog\n"],"names":["prefix","buildDefaultName","file","name","parseFilename","camelCaseName","camelCase","pascalCaseName","upperFirst","EntityPanelUploaderDialog","files","isOpen","onCancel","onSubmit","defaultProductName","inputRef","useRef","hasSelectedRef","product","setProduct","useState","useEffect","selectionStart","selectionEnd","handleSubmit","handleCancel","isValidProduct","footer","jsxs","jsx","Button","Dialog","FormRow","InputText","e"],"mappings":"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"}
1
+ {"version":3,"file":"EntityPanelUploaderDialog.es.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploaderDialog.tsx"],"sourcesContent":["// A dialog to ask the user to name their new upload uploaded version (naming the product)\n// by default we can take the file name\n\nimport { Dialog, InputText, Button, FormRow } from '@ynput/ayon-react-components'\nimport { camelCase, upperFirst } from 'lodash'\nimport { FC, useState, useEffect, useRef } from 'react'\nimport { parseFilename } from '../ReviewablesList'\n\nconst prefix = 'review'\nconst buildDefaultName = (file?: File | null) => {\n // remove file extension\n // convert to camelCase\n // first letter to uppercase\n // prefix with \"review\"\n if (!file) return ''\n const name = parseFilename(file.name).replace(/\\.[^/.]+$/, '') // remove file extension\n const camelCaseName = camelCase(name)\n const pascalCaseName = upperFirst(camelCaseName)\n return `${prefix}${pascalCaseName}`\n}\n\ninterface EntityPanelUploaderDialogProps {\n files: FileList | null // used to determine the default product name\n isOpen: boolean\n defaultProductName?: string\n onCancel?: () => void\n onSubmit?: (productName: string) => void\n}\n\nconst EntityPanelUploaderDialog: FC<EntityPanelUploaderDialogProps> = ({\n files,\n isOpen,\n onCancel,\n onSubmit,\n}) => {\n // Build default product name from the first file\n const defaultProductName = buildDefaultName(files?.[0])\n const inputRef = useRef<HTMLInputElement>(null)\n const hasSelectedRef = useRef(false)\n\n const [product, setProduct] = useState(defaultProductName)\n\n // Update state when defaultProductName changes\n useEffect(() => {\n setProduct(defaultProductName)\n hasSelectedRef.current = false // Reset selection flag when product name changes\n }, [defaultProductName])\n\n // Select the filename part (excluding \"review\" prefix) when dialog opens - only once\n useEffect(() => {\n if (isOpen && inputRef.current && product.startsWith(prefix) && !hasSelectedRef.current) {\n // Focus the input first\n inputRef.current.focus()\n // Then select just the filename part (after \"review\")\n const selectionStart = prefix.length\n const selectionEnd = product.length\n inputRef.current.setSelectionRange(selectionStart, selectionEnd)\n hasSelectedRef.current = true // Mark as selected to prevent re-selection\n } else if (!isOpen) {\n hasSelectedRef.current = false // Reset when dialog closes\n }\n }, [isOpen, product])\n\n const handleSubmit = () => {\n if (product.trim() && onSubmit) {\n onSubmit(product.trim())\n }\n }\n\n const handleCancel = () => {\n setProduct(defaultProductName)\n if (onCancel) {\n onCancel()\n }\n }\n\n const isValidProduct = product.trim().length > 0\n\n const footer = (\n <div style={{ display: 'flex', gap: '8px', justifyContent: 'flex-end' }}>\n <Button variant=\"text\" onClick={handleCancel}>\n Cancel\n </Button>\n <Button variant=\"filled\" onClick={handleSubmit} disabled={!isValidProduct}>\n Upload\n </Button>\n </div>\n )\n\n return (\n <Dialog isOpen={isOpen} onClose={handleCancel} header=\"Upload Entity\" footer={footer} size=\"sm\">\n <div style={{ padding: '16px 0' }}>\n <FormRow label=\"Product Name\">\n <InputText\n ref={inputRef}\n placeholder=\"Enter product name...\"\n value={product}\n onChange={(e) => setProduct(e.target.value)}\n autoFocus\n onKeyDown={(e) => {\n if (e.key === 'Enter' && isValidProduct) {\n e.preventDefault()\n handleSubmit()\n } else if (e.key === 'Escape') {\n e.preventDefault()\n handleCancel()\n }\n }}\n />\n </FormRow>\n </div>\n </Dialog>\n )\n}\n\nexport default EntityPanelUploaderDialog\n"],"names":["prefix","buildDefaultName","file","name","parseFilename","camelCaseName","camelCase","pascalCaseName","upperFirst","EntityPanelUploaderDialog","files","isOpen","onCancel","onSubmit","defaultProductName","inputRef","useRef","hasSelectedRef","product","setProduct","useState","useEffect","selectionStart","selectionEnd","handleSubmit","handleCancel","isValidProduct","footer","jsxs","jsx","Button","Dialog","FormRow","InputText","e"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("../../../../_virtual/jsx-runtime.cjs.js"),n=require("clsx"),h=require("@dnd-kit/sortable"),q=require("../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.js"),o=require("@ynput/ayon-react-components"),r=require("./EnumEditor.styled.cjs.js"),f=require("./EnumEditorItem.cjs.js"),y=({item:i,isBeingDragged:m,onChange:a,onRemove:u,onDuplicate:d,pt:s,...c})=>{const{id:p,label:E,icon:l,color:x,isExpanded:t}=i,{attributes:j,listeners:R,setNodeRef:N,transform:g,transition:b}=h.useSortable({id:p,animateLayoutChanges:()=>!1}),I={transition:b,transform:q.CSS.Translate.toString(g)};return e.jsxRuntimeExports.jsxs(r.EnumItemWrapper,{ref:N,style:I,...s?.wrapper,...c,className:n(c.className,s?.wrapper?.className,{dragged:m}),children:[e.jsxRuntimeExports.jsxs(r.EnumItemHeader,{...s?.header,onClick:()=>{a&&a(["isExpanded"],[!t])},className:n(s?.header?.className,{expanded:t}),children:[x&&e.jsxRuntimeExports.jsx(r.LabelColor,{style:{backgroundColor:x}}),l&&e.jsxRuntimeExports.jsx(o.Icon,{className:"icon",icon:l}),e.jsxRuntimeExports.jsxs("span",{children:[" ",E," "]}),e.jsxRuntimeExports.jsx("span",{className:"spacer"}),e.jsxRuntimeExports.jsx(o.Icon,{className:"icon toggle-expand",icon:t?"collapse_all":"expand_all"}),e.jsxRuntimeExports.jsx(o.Icon,{...R,...j,className:"icon draggable",icon:"drag_indicator",id:"icon"})]}),e.jsxRuntimeExports.jsx(r.EnumItemBodyExpander,{className:n({expanded:t}),children:e.jsxRuntimeExports.jsx(f,{item:i,onChange:a,onRemove:u,onDuplicate:d,showRemoveButton:!0,showDuplicateButton:!0,autoFocus:!1,isExpanded:t,...s?.item})})]})};module.exports=y;
1
+ "use strict";const e=require("../../../../_virtual/jsx-runtime.cjs.js"),n=require("clsx"),q=require("@dnd-kit/sortable"),f=require("../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.cjs.js"),o=require("@ynput/ayon-react-components"),r=require("./EnumEditor.styled.cjs.js"),y=require("./EnumEditorItem.cjs.js"),_=({item:i,isBeingDragged:m,onChange:a,onCommit:u,onRemove:d,onDuplicate:p,pt:s,...c})=>{const{id:E,label:j,icon:l,color:x,isExpanded:t}=i,{attributes:R,listeners:N,setNodeRef:g,transform:b,transition:I}=q.useSortable({id:E,animateLayoutChanges:()=>!1}),h={transition:I,transform:f.CSS.Translate.toString(b)};return e.jsxRuntimeExports.jsxs(r.EnumItemWrapper,{ref:g,style:h,...s?.wrapper,...c,className:n(c.className,s?.wrapper?.className,{dragged:m}),children:[e.jsxRuntimeExports.jsxs(r.EnumItemHeader,{...s?.header,onClick:()=>{a&&a(["isExpanded"],[!t])},className:n(s?.header?.className,{expanded:t}),children:[x&&e.jsxRuntimeExports.jsx(r.LabelColor,{style:{backgroundColor:x}}),l&&e.jsxRuntimeExports.jsx(o.Icon,{className:"icon",icon:l}),e.jsxRuntimeExports.jsxs("span",{children:[" ",j," "]}),e.jsxRuntimeExports.jsx("span",{className:"spacer"}),e.jsxRuntimeExports.jsx(o.Icon,{className:"icon toggle-expand",icon:t?"collapse_all":"expand_all"}),e.jsxRuntimeExports.jsx(o.Icon,{...N,...R,className:"icon draggable",icon:"drag_indicator",id:"icon"})]}),e.jsxRuntimeExports.jsx(r.EnumItemBodyExpander,{className:n({expanded:t}),children:e.jsxRuntimeExports.jsx(y,{item:i,onChange:a,onCommit:u,onRemove:d,onDuplicate:p,showRemoveButton:!0,showDuplicateButton:!0,autoFocus:!1,isExpanded:t,...s?.item})})]})};module.exports=_;
2
2
  //# sourceMappingURL=DraggableEnumEditorItem.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DraggableEnumEditorItem.cjs.js","sources":["../../../../../src/components/EnumEditor/DraggableEnumEditorItem.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { Icon } from '@ynput/ayon-react-components'\n\nimport * as Styled from './EnumEditor.styled'\nimport { AttributeData } from './EnumEditor'\nimport EnumEditorItem, { EnumEditorItemProps } from './EnumEditorItem'\nimport React from 'react'\n\ntype DivPt = Partial<React.HTMLAttributes<HTMLDivElement>>\n\nexport interface DraggableEnumEditorItemPt {\n wrapper?: DivPt\n header?: DivPt\n item?: EnumEditorItemProps\n}\n\nexport interface DraggableEnumEditorItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n item: AttributeData\n isBeingDragged?: boolean\n onChange?: (attr: (keyof AttributeData)[], value: (boolean | string | undefined)[]) => void\n onRemove?: () => void\n onDuplicate?: () => void\n pt?: DraggableEnumEditorItemPt\n}\n\nconst DraggableEnumEditorItem = ({\n item,\n isBeingDragged,\n onChange,\n onRemove,\n onDuplicate,\n pt,\n ...props\n}: DraggableEnumEditorItemProps) => {\n const { id, label, icon, color, isExpanded } = item\n\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({\n id: id,\n animateLayoutChanges: () => false,\n })\n\n const style = {\n transition,\n transform: CSS.Translate.toString(transform),\n }\n\n return (\n <Styled.EnumItemWrapper\n ref={setNodeRef}\n style={style}\n {...pt?.wrapper}\n {...props}\n className={clsx(props.className, pt?.wrapper?.className, { dragged: isBeingDragged })}\n >\n <Styled.EnumItemHeader\n {...pt?.header}\n onClick={() => {\n onChange && onChange(['isExpanded'], [!isExpanded])\n }}\n className={clsx(pt?.header?.className, { expanded: isExpanded })}\n >\n {color && <Styled.LabelColor style={{ backgroundColor: color }} />}\n {icon && <Icon className=\"icon\" icon={icon} />}\n <span> {label} </span>\n <span className=\"spacer\" />\n\n <Icon className=\"icon toggle-expand\" icon={isExpanded ? 'collapse_all' : 'expand_all'} />\n <Icon\n {...listeners}\n {...attributes}\n className=\"icon draggable\"\n icon=\"drag_indicator\"\n id=\"icon\"\n />\n </Styled.EnumItemHeader>\n\n <Styled.EnumItemBodyExpander className={clsx({ expanded: isExpanded })}>\n <EnumEditorItem\n item={item}\n onChange={onChange}\n onRemove={onRemove}\n onDuplicate={onDuplicate}\n showRemoveButton={true}\n showDuplicateButton={true}\n autoFocus={false}\n isExpanded={isExpanded}\n {...pt?.item}\n />\n </Styled.EnumItemBodyExpander>\n </Styled.EnumItemWrapper>\n )\n}\n\nexport default DraggableEnumEditorItem\n"],"names":["DraggableEnumEditorItem","item","isBeingDragged","onChange","onRemove","onDuplicate","pt","props","id","label","icon","color","isExpanded","attributes","listeners","setNodeRef","transform","transition","useSortable","style","CSS","jsxs","Styled.EnumItemWrapper","clsx","Styled.EnumItemHeader","jsx","Styled.LabelColor","Icon","Styled.EnumItemBodyExpander","EnumEditorItem"],"mappings":"mUA6BMA,EAA0B,CAAC,CAC/B,KAAAC,EACA,eAAAC,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,GAAAC,EACA,GAAGC,CACL,IAAoC,CAClC,KAAM,CAAE,GAAAC,EAAI,MAAAC,EAAO,KAAAC,EAAM,MAAAC,EAAO,WAAAC,GAAeX,EAEzC,CAAE,WAAAY,EAAY,UAAAC,EAAW,WAAAC,EAAY,UAAAC,EAAW,WAAAC,CAAA,EAAeC,cAAY,CAC/E,GAAAV,EACA,qBAAsB,IAAM,EAAA,CAC7B,EAEKW,EAAQ,CACZ,WAAAF,EACA,UAAWG,EAAAA,IAAI,UAAU,SAASJ,CAAS,CAAA,EAG7C,OACEK,EAAAA,kBAAAA,KAACC,EAAAA,gBAAA,CACC,IAAKP,EACL,MAAAI,EACC,GAAGb,GAAI,QACP,GAAGC,EACJ,UAAWgB,EAAKhB,EAAM,UAAWD,GAAI,SAAS,UAAW,CAAE,QAASJ,EAAgB,EAEpF,SAAA,CAAAmB,EAAAA,kBAAAA,KAACG,EAAAA,eAAA,CACE,GAAGlB,GAAI,OACR,QAAS,IAAM,CACbH,GAAYA,EAAS,CAAC,YAAY,EAAG,CAAC,CAACS,CAAU,CAAC,CACpD,EACA,UAAWW,EAAKjB,GAAI,QAAQ,UAAW,CAAE,SAAUM,EAAY,EAE9D,SAAA,CAAAD,GAASc,EAAAA,kBAAAA,IAACC,aAAA,CAAkB,MAAO,CAAE,gBAAiBf,GAAS,EAC/DD,GAAQe,EAAAA,kBAAAA,IAACE,EAAAA,KAAA,CAAK,UAAU,OAAO,KAAAjB,EAAY,2BAC3C,OAAA,CAAK,SAAA,CAAA,IAAED,EAAM,GAAA,EAAC,EACfgB,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,QAAA,CAAS,0BAExBE,EAAAA,KAAA,CAAK,UAAU,qBAAqB,KAAMf,EAAa,eAAiB,aAAc,EACvFa,EAAAA,kBAAAA,IAACE,EAAAA,KAAA,CACE,GAAGb,EACH,GAAGD,EACJ,UAAU,iBACV,KAAK,iBACL,GAAG,MAAA,CAAA,CACL,CAAA,CAAA,EAGFY,wBAACG,EAAAA,qBAAA,CAA4B,UAAWL,EAAK,CAAE,SAAUX,CAAA,CAAY,EACnE,SAAAa,EAAAA,kBAAAA,IAACI,EAAA,CACC,KAAA5B,EACA,SAAAE,EACA,SAAAC,EACA,YAAAC,EACA,iBAAkB,GAClB,oBAAqB,GACrB,UAAW,GACX,WAAAO,EACC,GAAGN,GAAI,IAAA,CAAA,CACV,CACF,CAAA,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"DraggableEnumEditorItem.cjs.js","sources":["../../../../../src/components/EnumEditor/DraggableEnumEditorItem.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { Icon } from '@ynput/ayon-react-components'\n\nimport * as Styled from './EnumEditor.styled'\nimport { AttributeData } from './EnumEditor'\nimport EnumEditorItem, { EnumEditorItemProps } from './EnumEditorItem'\nimport React from 'react'\n\ntype DivPt = Partial<React.HTMLAttributes<HTMLDivElement>>\n\nexport interface DraggableEnumEditorItemPt {\n wrapper?: DivPt\n header?: DivPt\n item?: EnumEditorItemProps\n}\n\nexport interface DraggableEnumEditorItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n item: AttributeData\n isBeingDragged?: boolean\n onChange?: (attr: (keyof AttributeData)[], value: (boolean | string | undefined)[]) => void\n onCommit?: (attr: (keyof AttributeData)[], value: (boolean | string | undefined)[]) => void\n onRemove?: () => void\n onDuplicate?: () => void\n pt?: DraggableEnumEditorItemPt\n}\n\nconst DraggableEnumEditorItem = ({\n item,\n isBeingDragged,\n onChange,\n onCommit,\n onRemove,\n onDuplicate,\n pt,\n ...props\n}: DraggableEnumEditorItemProps) => {\n const { id, label, icon, color, isExpanded } = item\n\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({\n id: id,\n animateLayoutChanges: () => false,\n })\n\n const style = {\n transition,\n transform: CSS.Translate.toString(transform),\n }\n\n return (\n <Styled.EnumItemWrapper\n ref={setNodeRef}\n style={style}\n {...pt?.wrapper}\n {...props}\n className={clsx(props.className, pt?.wrapper?.className, { dragged: isBeingDragged })}\n >\n <Styled.EnumItemHeader\n {...pt?.header}\n onClick={() => {\n onChange && onChange(['isExpanded'], [!isExpanded])\n }}\n className={clsx(pt?.header?.className, { expanded: isExpanded })}\n >\n {color && <Styled.LabelColor style={{ backgroundColor: color }} />}\n {icon && <Icon className=\"icon\" icon={icon} />}\n <span> {label} </span>\n <span className=\"spacer\" />\n\n <Icon className=\"icon toggle-expand\" icon={isExpanded ? 'collapse_all' : 'expand_all'} />\n <Icon\n {...listeners}\n {...attributes}\n className=\"icon draggable\"\n icon=\"drag_indicator\"\n id=\"icon\"\n />\n </Styled.EnumItemHeader>\n\n <Styled.EnumItemBodyExpander className={clsx({ expanded: isExpanded })}>\n <EnumEditorItem\n item={item}\n onChange={onChange}\n onCommit={onCommit}\n onRemove={onRemove}\n onDuplicate={onDuplicate}\n showRemoveButton={true}\n showDuplicateButton={true}\n autoFocus={false}\n isExpanded={isExpanded}\n {...pt?.item}\n />\n </Styled.EnumItemBodyExpander>\n </Styled.EnumItemWrapper>\n )\n}\n\nexport default DraggableEnumEditorItem\n"],"names":["DraggableEnumEditorItem","item","isBeingDragged","onChange","onCommit","onRemove","onDuplicate","pt","props","id","label","icon","color","isExpanded","attributes","listeners","setNodeRef","transform","transition","useSortable","style","CSS","jsxs","Styled.EnumItemWrapper","clsx","Styled.EnumItemHeader","jsx","Styled.LabelColor","Icon","Styled.EnumItemBodyExpander","EnumEditorItem"],"mappings":"mUA8BMA,EAA0B,CAAC,CAC/B,KAAAC,EACA,eAAAC,EACA,SAAAC,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,GAAAC,EACA,GAAGC,CACL,IAAoC,CAClC,KAAM,CAAE,GAAAC,EAAI,MAAAC,EAAO,KAAAC,EAAM,MAAAC,EAAO,WAAAC,GAAeZ,EAEzC,CAAE,WAAAa,EAAY,UAAAC,EAAW,WAAAC,EAAY,UAAAC,EAAW,WAAAC,CAAA,EAAeC,cAAY,CAC/E,GAAAV,EACA,qBAAsB,IAAM,EAAA,CAC7B,EAEKW,EAAQ,CACZ,WAAAF,EACA,UAAWG,EAAAA,IAAI,UAAU,SAASJ,CAAS,CAAA,EAG7C,OACEK,EAAAA,kBAAAA,KAACC,EAAAA,gBAAA,CACC,IAAKP,EACL,MAAAI,EACC,GAAGb,GAAI,QACP,GAAGC,EACJ,UAAWgB,EAAKhB,EAAM,UAAWD,GAAI,SAAS,UAAW,CAAE,QAASL,EAAgB,EAEpF,SAAA,CAAAoB,EAAAA,kBAAAA,KAACG,EAAAA,eAAA,CACE,GAAGlB,GAAI,OACR,QAAS,IAAM,CACbJ,GAAYA,EAAS,CAAC,YAAY,EAAG,CAAC,CAACU,CAAU,CAAC,CACpD,EACA,UAAWW,EAAKjB,GAAI,QAAQ,UAAW,CAAE,SAAUM,EAAY,EAE9D,SAAA,CAAAD,GAASc,EAAAA,kBAAAA,IAACC,aAAA,CAAkB,MAAO,CAAE,gBAAiBf,GAAS,EAC/DD,GAAQe,EAAAA,kBAAAA,IAACE,EAAAA,KAAA,CAAK,UAAU,OAAO,KAAAjB,EAAY,2BAC3C,OAAA,CAAK,SAAA,CAAA,IAAED,EAAM,GAAA,EAAC,EACfgB,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,QAAA,CAAS,0BAExBE,EAAAA,KAAA,CAAK,UAAU,qBAAqB,KAAMf,EAAa,eAAiB,aAAc,EACvFa,EAAAA,kBAAAA,IAACE,EAAAA,KAAA,CACE,GAAGb,EACH,GAAGD,EACJ,UAAU,iBACV,KAAK,iBACL,GAAG,MAAA,CAAA,CACL,CAAA,CAAA,EAGFY,wBAACG,EAAAA,qBAAA,CAA4B,UAAWL,EAAK,CAAE,SAAUX,CAAA,CAAY,EACnE,SAAAa,EAAAA,kBAAAA,IAACI,EAAA,CACC,KAAA7B,EACA,SAAAE,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,iBAAkB,GAClB,oBAAqB,GACrB,UAAW,GACX,WAAAO,EACC,GAAGN,GAAI,IAAA,CAAA,CACV,CACF,CAAA,CAAA,CAAA,CAGN"}
@@ -1,37 +1,38 @@
1
1
  import { j as e } from "../../../../_virtual/jsx-runtime.es.js";
2
2
  import o from "clsx";
3
- import { useSortable as h } from "@dnd-kit/sortable";
4
- import { CSS as I } from "../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.es.js";
3
+ import { useSortable as I } from "@dnd-kit/sortable";
4
+ import { CSS as w } from "../../../../node_modules/@dnd-kit/utilities/dist/utilities.esm.es.js";
5
5
  import { Icon as t } from "@ynput/ayon-react-components";
6
- import { EnumItemWrapper as w, EnumItemHeader as y, LabelColor as S, EnumItemBodyExpander as B } from "./EnumEditor.styled.es.js";
7
- import C from "./EnumEditorItem.es.js";
8
- const H = ({
6
+ import { EnumItemWrapper as y, EnumItemHeader as S, LabelColor as B, EnumItemBodyExpander as C } from "./EnumEditor.styled.es.js";
7
+ import R from "./EnumEditorItem.es.js";
8
+ const T = ({
9
9
  item: n,
10
10
  isBeingDragged: i,
11
11
  onChange: r,
12
- onRemove: d,
13
- onDuplicate: p,
12
+ onCommit: d,
13
+ onRemove: p,
14
+ onDuplicate: x,
14
15
  pt: a,
15
16
  ...l
16
17
  }) => {
17
- const { id: x, label: u, icon: m, color: c, isExpanded: s } = n, { attributes: f, listeners: j, setNodeRef: E, transform: N, transition: g } = h({
18
- id: x,
18
+ const { id: u, label: f, icon: m, color: c, isExpanded: s } = n, { attributes: j, listeners: E, setNodeRef: N, transform: g, transition: b } = I({
19
+ id: u,
19
20
  animateLayoutChanges: () => !1
20
- }), b = {
21
- transition: g,
22
- transform: I.Translate.toString(N)
21
+ }), h = {
22
+ transition: b,
23
+ transform: w.Translate.toString(g)
23
24
  };
24
25
  return /* @__PURE__ */ e.jsxs(
25
- w,
26
+ y,
26
27
  {
27
- ref: E,
28
- style: b,
28
+ ref: N,
29
+ style: h,
29
30
  ...a?.wrapper,
30
31
  ...l,
31
32
  className: o(l.className, a?.wrapper?.className, { dragged: i }),
32
33
  children: [
33
34
  /* @__PURE__ */ e.jsxs(
34
- y,
35
+ S,
35
36
  {
36
37
  ...a?.header,
37
38
  onClick: () => {
@@ -39,11 +40,11 @@ const H = ({
39
40
  },
40
41
  className: o(a?.header?.className, { expanded: s }),
41
42
  children: [
42
- c && /* @__PURE__ */ e.jsx(S, { style: { backgroundColor: c } }),
43
+ c && /* @__PURE__ */ e.jsx(B, { style: { backgroundColor: c } }),
43
44
  m && /* @__PURE__ */ e.jsx(t, { className: "icon", icon: m }),
44
45
  /* @__PURE__ */ e.jsxs("span", { children: [
45
46
  " ",
46
- u,
47
+ f,
47
48
  " "
48
49
  ] }),
49
50
  /* @__PURE__ */ e.jsx("span", { className: "spacer" }),
@@ -51,8 +52,8 @@ const H = ({
51
52
  /* @__PURE__ */ e.jsx(
52
53
  t,
53
54
  {
55
+ ...E,
54
56
  ...j,
55
- ...f,
56
57
  className: "icon draggable",
57
58
  icon: "drag_indicator",
58
59
  id: "icon"
@@ -61,13 +62,14 @@ const H = ({
61
62
  ]
62
63
  }
63
64
  ),
64
- /* @__PURE__ */ e.jsx(B, { className: o({ expanded: s }), children: /* @__PURE__ */ e.jsx(
65
- C,
65
+ /* @__PURE__ */ e.jsx(C, { className: o({ expanded: s }), children: /* @__PURE__ */ e.jsx(
66
+ R,
66
67
  {
67
68
  item: n,
68
69
  onChange: r,
69
- onRemove: d,
70
- onDuplicate: p,
70
+ onCommit: d,
71
+ onRemove: p,
72
+ onDuplicate: x,
71
73
  showRemoveButton: !0,
72
74
  showDuplicateButton: !0,
73
75
  autoFocus: !1,
@@ -80,6 +82,6 @@ const H = ({
80
82
  );
81
83
  };
82
84
  export {
83
- H as default
85
+ T as default
84
86
  };
85
87
  //# sourceMappingURL=DraggableEnumEditorItem.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DraggableEnumEditorItem.es.js","sources":["../../../../../src/components/EnumEditor/DraggableEnumEditorItem.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { Icon } from '@ynput/ayon-react-components'\n\nimport * as Styled from './EnumEditor.styled'\nimport { AttributeData } from './EnumEditor'\nimport EnumEditorItem, { EnumEditorItemProps } from './EnumEditorItem'\nimport React from 'react'\n\ntype DivPt = Partial<React.HTMLAttributes<HTMLDivElement>>\n\nexport interface DraggableEnumEditorItemPt {\n wrapper?: DivPt\n header?: DivPt\n item?: EnumEditorItemProps\n}\n\nexport interface DraggableEnumEditorItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n item: AttributeData\n isBeingDragged?: boolean\n onChange?: (attr: (keyof AttributeData)[], value: (boolean | string | undefined)[]) => void\n onRemove?: () => void\n onDuplicate?: () => void\n pt?: DraggableEnumEditorItemPt\n}\n\nconst DraggableEnumEditorItem = ({\n item,\n isBeingDragged,\n onChange,\n onRemove,\n onDuplicate,\n pt,\n ...props\n}: DraggableEnumEditorItemProps) => {\n const { id, label, icon, color, isExpanded } = item\n\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({\n id: id,\n animateLayoutChanges: () => false,\n })\n\n const style = {\n transition,\n transform: CSS.Translate.toString(transform),\n }\n\n return (\n <Styled.EnumItemWrapper\n ref={setNodeRef}\n style={style}\n {...pt?.wrapper}\n {...props}\n className={clsx(props.className, pt?.wrapper?.className, { dragged: isBeingDragged })}\n >\n <Styled.EnumItemHeader\n {...pt?.header}\n onClick={() => {\n onChange && onChange(['isExpanded'], [!isExpanded])\n }}\n className={clsx(pt?.header?.className, { expanded: isExpanded })}\n >\n {color && <Styled.LabelColor style={{ backgroundColor: color }} />}\n {icon && <Icon className=\"icon\" icon={icon} />}\n <span> {label} </span>\n <span className=\"spacer\" />\n\n <Icon className=\"icon toggle-expand\" icon={isExpanded ? 'collapse_all' : 'expand_all'} />\n <Icon\n {...listeners}\n {...attributes}\n className=\"icon draggable\"\n icon=\"drag_indicator\"\n id=\"icon\"\n />\n </Styled.EnumItemHeader>\n\n <Styled.EnumItemBodyExpander className={clsx({ expanded: isExpanded })}>\n <EnumEditorItem\n item={item}\n onChange={onChange}\n onRemove={onRemove}\n onDuplicate={onDuplicate}\n showRemoveButton={true}\n showDuplicateButton={true}\n autoFocus={false}\n isExpanded={isExpanded}\n {...pt?.item}\n />\n </Styled.EnumItemBodyExpander>\n </Styled.EnumItemWrapper>\n )\n}\n\nexport default DraggableEnumEditorItem\n"],"names":["DraggableEnumEditorItem","item","isBeingDragged","onChange","onRemove","onDuplicate","pt","props","id","label","icon","color","isExpanded","attributes","listeners","setNodeRef","transform","transition","useSortable","style","CSS","jsxs","Styled.EnumItemWrapper","clsx","Styled.EnumItemHeader","jsx","Styled.LabelColor","Icon","Styled.EnumItemBodyExpander","EnumEditorItem"],"mappings":";;;;;;;AA6BA,MAAMA,IAA0B,CAAC;AAAA,EAC/B,MAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,IAAAC;AAAA,EACA,GAAGC;AACL,MAAoC;AAClC,QAAM,EAAE,IAAAC,GAAI,OAAAC,GAAO,MAAAC,GAAM,OAAAC,GAAO,YAAAC,MAAeX,GAEzC,EAAE,YAAAY,GAAY,WAAAC,GAAW,YAAAC,GAAY,WAAAC,GAAW,YAAAC,EAAA,IAAeC,EAAY;AAAA,IAC/E,IAAAV;AAAA,IACA,sBAAsB,MAAM;AAAA,EAAA,CAC7B,GAEKW,IAAQ;AAAA,IACZ,YAAAF;AAAA,IACA,WAAWG,EAAI,UAAU,SAASJ,CAAS;AAAA,EAAA;AAG7C,SACEK,gBAAAA,EAAAA;AAAAA,IAACC;AAAAA,IAAA;AAAA,MACC,KAAKP;AAAA,MACL,OAAAI;AAAA,MACC,GAAGb,GAAI;AAAA,MACP,GAAGC;AAAA,MACJ,WAAWgB,EAAKhB,EAAM,WAAWD,GAAI,SAAS,WAAW,EAAE,SAASJ,GAAgB;AAAA,MAEpF,UAAA;AAAA,QAAAmB,gBAAAA,EAAAA;AAAAA,UAACG;AAAAA,UAAA;AAAA,YACE,GAAGlB,GAAI;AAAA,YACR,SAAS,MAAM;AACb,cAAAH,KAAYA,EAAS,CAAC,YAAY,GAAG,CAAC,CAACS,CAAU,CAAC;AAAA,YACpD;AAAA,YACA,WAAWW,EAAKjB,GAAI,QAAQ,WAAW,EAAE,UAAUM,GAAY;AAAA,YAE9D,UAAA;AAAA,cAAAD,KAASc,gBAAAA,EAAAA,IAACC,GAAA,EAAkB,OAAO,EAAE,iBAAiBf,KAAS;AAAA,cAC/DD,KAAQe,gBAAAA,EAAAA,IAACE,GAAA,EAAK,WAAU,QAAO,MAAAjB,GAAY;AAAA,qCAC3C,QAAA,EAAK,UAAA;AAAA,gBAAA;AAAA,gBAAED;AAAA,gBAAM;AAAA,cAAA,GAAC;AAAA,cACfgB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,SAAA,CAAS;AAAA,oCAExBE,GAAA,EAAK,WAAU,sBAAqB,MAAMf,IAAa,iBAAiB,cAAc;AAAA,cACvFa,gBAAAA,EAAAA;AAAAA,gBAACE;AAAA,gBAAA;AAAA,kBACE,GAAGb;AAAA,kBACH,GAAGD;AAAA,kBACJ,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,IAAG;AAAA,gBAAA;AAAA,cAAA;AAAA,YACL;AAAA,UAAA;AAAA,QAAA;AAAA,QAGFY,gBAAAA,MAACG,GAAA,EAA4B,WAAWL,EAAK,EAAE,UAAUX,EAAA,CAAY,GACnE,UAAAa,gBAAAA,EAAAA;AAAAA,UAACI;AAAA,UAAA;AAAA,YACC,MAAA5B;AAAA,YACA,UAAAE;AAAA,YACA,UAAAC;AAAA,YACA,aAAAC;AAAA,YACA,kBAAkB;AAAA,YAClB,qBAAqB;AAAA,YACrB,WAAW;AAAA,YACX,YAAAO;AAAA,YACC,GAAGN,GAAI;AAAA,UAAA;AAAA,QAAA,EACV,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"DraggableEnumEditorItem.es.js","sources":["../../../../../src/components/EnumEditor/DraggableEnumEditorItem.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport { Icon } from '@ynput/ayon-react-components'\n\nimport * as Styled from './EnumEditor.styled'\nimport { AttributeData } from './EnumEditor'\nimport EnumEditorItem, { EnumEditorItemProps } from './EnumEditorItem'\nimport React from 'react'\n\ntype DivPt = Partial<React.HTMLAttributes<HTMLDivElement>>\n\nexport interface DraggableEnumEditorItemPt {\n wrapper?: DivPt\n header?: DivPt\n item?: EnumEditorItemProps\n}\n\nexport interface DraggableEnumEditorItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n item: AttributeData\n isBeingDragged?: boolean\n onChange?: (attr: (keyof AttributeData)[], value: (boolean | string | undefined)[]) => void\n onCommit?: (attr: (keyof AttributeData)[], value: (boolean | string | undefined)[]) => void\n onRemove?: () => void\n onDuplicate?: () => void\n pt?: DraggableEnumEditorItemPt\n}\n\nconst DraggableEnumEditorItem = ({\n item,\n isBeingDragged,\n onChange,\n onCommit,\n onRemove,\n onDuplicate,\n pt,\n ...props\n}: DraggableEnumEditorItemProps) => {\n const { id, label, icon, color, isExpanded } = item\n\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({\n id: id,\n animateLayoutChanges: () => false,\n })\n\n const style = {\n transition,\n transform: CSS.Translate.toString(transform),\n }\n\n return (\n <Styled.EnumItemWrapper\n ref={setNodeRef}\n style={style}\n {...pt?.wrapper}\n {...props}\n className={clsx(props.className, pt?.wrapper?.className, { dragged: isBeingDragged })}\n >\n <Styled.EnumItemHeader\n {...pt?.header}\n onClick={() => {\n onChange && onChange(['isExpanded'], [!isExpanded])\n }}\n className={clsx(pt?.header?.className, { expanded: isExpanded })}\n >\n {color && <Styled.LabelColor style={{ backgroundColor: color }} />}\n {icon && <Icon className=\"icon\" icon={icon} />}\n <span> {label} </span>\n <span className=\"spacer\" />\n\n <Icon className=\"icon toggle-expand\" icon={isExpanded ? 'collapse_all' : 'expand_all'} />\n <Icon\n {...listeners}\n {...attributes}\n className=\"icon draggable\"\n icon=\"drag_indicator\"\n id=\"icon\"\n />\n </Styled.EnumItemHeader>\n\n <Styled.EnumItemBodyExpander className={clsx({ expanded: isExpanded })}>\n <EnumEditorItem\n item={item}\n onChange={onChange}\n onCommit={onCommit}\n onRemove={onRemove}\n onDuplicate={onDuplicate}\n showRemoveButton={true}\n showDuplicateButton={true}\n autoFocus={false}\n isExpanded={isExpanded}\n {...pt?.item}\n />\n </Styled.EnumItemBodyExpander>\n </Styled.EnumItemWrapper>\n )\n}\n\nexport default DraggableEnumEditorItem\n"],"names":["DraggableEnumEditorItem","item","isBeingDragged","onChange","onCommit","onRemove","onDuplicate","pt","props","id","label","icon","color","isExpanded","attributes","listeners","setNodeRef","transform","transition","useSortable","style","CSS","jsxs","Styled.EnumItemWrapper","clsx","Styled.EnumItemHeader","jsx","Styled.LabelColor","Icon","Styled.EnumItemBodyExpander","EnumEditorItem"],"mappings":";;;;;;;AA8BA,MAAMA,IAA0B,CAAC;AAAA,EAC/B,MAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,IAAAC;AAAA,EACA,GAAGC;AACL,MAAoC;AAClC,QAAM,EAAE,IAAAC,GAAI,OAAAC,GAAO,MAAAC,GAAM,OAAAC,GAAO,YAAAC,MAAeZ,GAEzC,EAAE,YAAAa,GAAY,WAAAC,GAAW,YAAAC,GAAY,WAAAC,GAAW,YAAAC,EAAA,IAAeC,EAAY;AAAA,IAC/E,IAAAV;AAAA,IACA,sBAAsB,MAAM;AAAA,EAAA,CAC7B,GAEKW,IAAQ;AAAA,IACZ,YAAAF;AAAA,IACA,WAAWG,EAAI,UAAU,SAASJ,CAAS;AAAA,EAAA;AAG7C,SACEK,gBAAAA,EAAAA;AAAAA,IAACC;AAAAA,IAAA;AAAA,MACC,KAAKP;AAAA,MACL,OAAAI;AAAA,MACC,GAAGb,GAAI;AAAA,MACP,GAAGC;AAAA,MACJ,WAAWgB,EAAKhB,EAAM,WAAWD,GAAI,SAAS,WAAW,EAAE,SAASL,GAAgB;AAAA,MAEpF,UAAA;AAAA,QAAAoB,gBAAAA,EAAAA;AAAAA,UAACG;AAAAA,UAAA;AAAA,YACE,GAAGlB,GAAI;AAAA,YACR,SAAS,MAAM;AACb,cAAAJ,KAAYA,EAAS,CAAC,YAAY,GAAG,CAAC,CAACU,CAAU,CAAC;AAAA,YACpD;AAAA,YACA,WAAWW,EAAKjB,GAAI,QAAQ,WAAW,EAAE,UAAUM,GAAY;AAAA,YAE9D,UAAA;AAAA,cAAAD,KAASc,gBAAAA,EAAAA,IAACC,GAAA,EAAkB,OAAO,EAAE,iBAAiBf,KAAS;AAAA,cAC/DD,KAAQe,gBAAAA,EAAAA,IAACE,GAAA,EAAK,WAAU,QAAO,MAAAjB,GAAY;AAAA,qCAC3C,QAAA,EAAK,UAAA;AAAA,gBAAA;AAAA,gBAAED;AAAA,gBAAM;AAAA,cAAA,GAAC;AAAA,cACfgB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,SAAA,CAAS;AAAA,oCAExBE,GAAA,EAAK,WAAU,sBAAqB,MAAMf,IAAa,iBAAiB,cAAc;AAAA,cACvFa,gBAAAA,EAAAA;AAAAA,gBAACE;AAAA,gBAAA;AAAA,kBACE,GAAGb;AAAA,kBACH,GAAGD;AAAA,kBACJ,WAAU;AAAA,kBACV,MAAK;AAAA,kBACL,IAAG;AAAA,gBAAA;AAAA,cAAA;AAAA,YACL;AAAA,UAAA;AAAA,QAAA;AAAA,QAGFY,gBAAAA,MAACG,GAAA,EAA4B,WAAWL,EAAK,EAAE,UAAUX,EAAA,CAAY,GACnE,UAAAa,gBAAAA,EAAAA;AAAAA,UAACI;AAAA,UAAA;AAAA,YACC,MAAA7B;AAAA,YACA,UAAAE;AAAA,YACA,UAAAC;AAAA,YACA,UAAAC;AAAA,YACA,aAAAC;AAAA,YACA,kBAAkB;AAAA,YAClB,qBAAqB;AAAA,YACrB,WAAW;AAAA,YACX,YAAAO;AAAA,YACC,GAAGN,GAAI;AAAA,UAAA;AAAA,QAAA,EACV,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../../_virtual/jsx-runtime.cjs.js"),R=require("react"),q=require("react-dom"),E=require("lodash"),c=require("@dnd-kit/core"),x=require("@dnd-kit/sortable"),y=require("@ynput/ayon-react-components"),p=require("./DraggableEnumEditorItem.cjs.js"),S=require("./EnumEditor.styled.cjs.js"),N=require("./hooks/useDraggable.cjs.js"),b=require("./util/index.cjs.js"),A=()=>({id:E.uniqueId(),isExpanded:!0,label:"",value:"",isLabelFocused:!0,isNewAttribute:!1}),C=i=>i.filter(r=>r.label!==""&&r.value!=="").map(({label:r,value:t,icon:s,color:e})=>({label:r,value:t,icon:s||void 0,color:e||void 0})),w=i=>i.map(({label:r,value:t,icon:s,color:e})=>({id:E.uniqueId(),isExpanded:!1,label:r,value:t.toString(),icon:s,color:e,isLabelFocused:!1,isNewAttribute:!1})),L=(i,r)=>r.map((t,s)=>{const e=i[s];return e?{...t,id:e.id,isExpanded:e.isExpanded,isLabelFocused:e.isLabelFocused,isNewAttribute:e.isNewAttribute}:t}),F=({values:i,onChange:r,pt:t,...s})=>{if(!i)return null;const{items:e,handleAddItem:m,handleRemoveItem:j,handleChangeItem:D,handleDuplicateItem:f,handleDraggableEnd:h}=N({creator:A,initialData:w(i),onChange:r,normalizer:C,mergeIncomingData:L}),v=n=>{g(n.active.id)},I=n=>{g(null),h(n)},[u,g]=R.useState();let l;return u&&(l=e.find(n=>n.id===u)),a.jsxRuntimeExports.jsx(a.jsxRuntimeExports.Fragment,{children:a.jsxRuntimeExports.jsxs(S.EnumListWrapper,{...s,children:[a.jsxRuntimeExports.jsxs(c.DndContext,{collisionDetection:c.closestCenter,onDragStart:v,onDragEnd:I,children:[a.jsxRuntimeExports.jsx(x.SortableContext,{items:e,strategy:x.verticalListSortingStrategy,children:e.map((n,o)=>a.jsxRuntimeExports.jsx(p,{item:n,isBeingDragged:n.id===u,onChange:D(o),onRemove:j(o),onDuplicate:()=>f(o,{isLabelFocused:!0,isNewAttribute:!0,label:b.appendOrUpdateNumericSuffix(e[o].label,e.map(d=>d.label)," "),value:b.appendOrUpdateNumericSuffix(e[o].value,e.map(d=>d.value),"-")}),...t?.item},`DraggableAttributeEnum_${n.id}`))}),q.createPortal(a.jsxRuntimeExports.jsx(c.DragOverlay,{style:{},children:l&&a.jsxRuntimeExports.jsx(p,{item:l,...t?.item})}),document.body)]}),a.jsxRuntimeExports.jsx(y.Button,{...t?.addButton,icon:"add",variant:"text",onClick:()=>m({isNewAttribute:!0}),className:t?.addButton?.className,style:{display:"flex",justifyContent:"start"},children:"Add new item"})]})})};exports.EnumEditor=F;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../../../../_virtual/jsx-runtime.cjs.js"),y=require("react"),S=require("react-dom"),E=require("lodash"),m=require("@dnd-kit/core"),x=require("@dnd-kit/sortable"),C=require("@ynput/ayon-react-components"),p=require("./DraggableEnumEditorItem.cjs.js"),N=require("./EnumEditor.styled.cjs.js"),A=require("./hooks/useDraggable.cjs.js"),b=require("./util/index.cjs.js"),w=()=>({id:E.uniqueId(),isExpanded:!0,label:"",value:"",isLabelFocused:!0,isNewAttribute:!1}),L=i=>i.filter(t=>t.label!==""&&t.value!=="").map(({label:t,value:s,icon:r,color:e})=>({label:t,value:s,icon:r||void 0,color:e||void 0})),F=i=>i.map(({label:t,value:s,icon:r,color:e})=>({id:E.uniqueId(),isExpanded:!1,label:t,value:s.toString(),icon:r,color:e,isLabelFocused:!1,isNewAttribute:!1})),z=(i,t)=>t.map((s,r)=>{const e=i[r];return e?{...s,id:e.id,isExpanded:e.isExpanded,isLabelFocused:e.isLabelFocused,isNewAttribute:e.isNewAttribute}:s}),O=({values:i,onChange:t,onCommit:s,pt:r,...e})=>{if(!i)return null;const{items:o,handleAddItem:j,handleRemoveItem:D,handleChangeItem:h,handleCommitItem:f,handleDuplicateItem:I,handleDraggableEnd:v}=A({creator:w,initialData:F(i),onChange:t,onCommit:s,normalizer:L,mergeIncomingData:z}),R=n=>{g(n.active.id)},q=n=>{g(null),v(n)},[l,g]=y.useState();let d;return l&&(d=o.find(n=>n.id===l)),a.jsxRuntimeExports.jsx(a.jsxRuntimeExports.Fragment,{children:a.jsxRuntimeExports.jsxs(N.EnumListWrapper,{...e,children:[a.jsxRuntimeExports.jsxs(m.DndContext,{collisionDetection:m.closestCenter,onDragStart:R,onDragEnd:q,children:[a.jsxRuntimeExports.jsx(x.SortableContext,{items:o,strategy:x.verticalListSortingStrategy,children:o.map((n,u)=>a.jsxRuntimeExports.jsx(p,{item:n,isBeingDragged:n.id===l,onChange:h(u),onCommit:f(u),onRemove:D(u),onDuplicate:()=>I(u,{isLabelFocused:!0,isNewAttribute:!0,label:b.appendOrUpdateNumericSuffix(o[u].label,o.map(c=>c.label)," "),value:b.appendOrUpdateNumericSuffix(o[u].value,o.map(c=>c.value),"-")}),...r?.item},`DraggableAttributeEnum_${n.id}`))}),S.createPortal(a.jsxRuntimeExports.jsx(m.DragOverlay,{style:{},children:d&&a.jsxRuntimeExports.jsx(p,{item:d,...r?.item})}),document.body)]}),a.jsxRuntimeExports.jsx(C.Button,{...r?.addButton,icon:"add",variant:"text",onClick:()=>j({isNewAttribute:!0}),className:r?.addButton?.className,style:{display:"flex",justifyContent:"start"},children:"Add new item"})]})})};exports.EnumEditor=O;
2
2
  //# sourceMappingURL=EnumEditor.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnumEditor.cjs.js","sources":["../../../../../src/components/EnumEditor/EnumEditor.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { uniqueId } from 'lodash'\nimport { closestCenter, DndContext, DragEndEvent, DragOverlay, DragStartEvent } from '@dnd-kit/core'\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'\n\nimport { Button } from '@ynput/ayon-react-components'\n\nimport DraggableEnumEditorItem, { DraggableEnumEditorItemProps } from './DraggableEnumEditorItem'\nimport * as Styled from './EnumEditor.styled'\nimport useDraggable from './hooks/useDraggable'\nimport { appendOrUpdateNumericSuffix } from './util'\n\nexport interface EnumEditorPt {\n item?: DraggableEnumEditorItemProps\n addButton?: Partial<React.ComponentProps<typeof Button>>\n}\n\nexport type AttributeData = {\n id: string\n isExpanded: boolean\n label: string\n value: string\n color?: string\n icon?: string\n isLabelFocused: boolean\n isNewAttribute: boolean\n}\n\nexport type NormalizedData = {\n label: string\n value: string | number | boolean\n color?: string\n icon?: string\n}\n\nconst creator = (): AttributeData => ({\n id: uniqueId(),\n isExpanded: true,\n label: '',\n value: '',\n isLabelFocused: true,\n isNewAttribute: false,\n})\n\nconst normalize = (data: AttributeData[]): NormalizedData[] => {\n return data\n .filter((item) => item.label !== '' && item.value !== '')\n .map(({ label, value, icon, color }) => {\n let normalizedValue = value\n return {\n label,\n value: normalizedValue,\n icon: icon || undefined,\n color: color || undefined,\n }\n })\n}\n\nconst denormalize = (data: NormalizedData[]): AttributeData[] => {\n return data.map(({ label, value, icon, color }) => {\n return {\n id: uniqueId(),\n isExpanded: false,\n label,\n value: value.toString(),\n icon: icon,\n color: color,\n isLabelFocused: false,\n isNewAttribute: false,\n }\n })\n}\n\nconst mergeIncomingItems = (\n currentItems: AttributeData[],\n incomingItems: AttributeData[],\n): AttributeData[] => {\n return incomingItems.map((incomingItem, index) => {\n const currentItem = currentItems[index]\n\n if (!currentItem) {\n return incomingItem\n }\n\n return {\n ...incomingItem,\n id: currentItem.id,\n isExpanded: currentItem.isExpanded,\n isLabelFocused: currentItem.isLabelFocused,\n isNewAttribute: currentItem.isNewAttribute,\n }\n })\n}\n\ninterface EnumEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n values: NormalizedData[]\n onChange: (data: NormalizedData[]) => void\n pt?: EnumEditorPt\n}\nexport const EnumEditor = ({ values, onChange, pt, ...props }: EnumEditorProps) => {\n if (!values) {\n return null\n }\n\n const {\n items,\n handleAddItem,\n handleRemoveItem,\n handleChangeItem,\n handleDuplicateItem,\n handleDraggableEnd,\n } = useDraggable<AttributeData, NormalizedData>({\n creator,\n initialData: denormalize(values),\n onChange,\n normalizer: normalize,\n mergeIncomingData: mergeIncomingItems,\n })\n\n const handleDragStart = (event: DragStartEvent) => {\n setDraggedItemId(event.active.id as string)\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n setDraggedItemId(null)\n handleDraggableEnd(event)\n }\n\n const [draggedItemId, setDraggedItemId] = useState<string | null>()\n let draggedItem\n if (draggedItemId) {\n draggedItem = items.find((item) => item.id === draggedItemId)\n }\n\n return (\n <>\n <Styled.EnumListWrapper {...props}>\n <DndContext\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item, idx) => (\n <DraggableEnumEditorItem\n key={`DraggableAttributeEnum_${item.id}`}\n item={item}\n isBeingDragged={item.id === draggedItemId}\n onChange={handleChangeItem(idx)}\n onRemove={handleRemoveItem(idx)}\n onDuplicate={() =>\n handleDuplicateItem(idx, {\n isLabelFocused: true,\n isNewAttribute: true,\n label: appendOrUpdateNumericSuffix(\n items[idx].label,\n items.map((e) => e.label),\n ' ',\n ),\n value: appendOrUpdateNumericSuffix(\n items[idx].value,\n items.map((el) => el.value),\n '-',\n ),\n })\n }\n {...pt?.item}\n />\n ))}\n </SortableContext>\n\n {createPortal(\n <DragOverlay style={{}}>\n {draggedItem && <DraggableEnumEditorItem item={draggedItem} {...pt?.item} />}\n </DragOverlay>,\n document.body,\n )}\n </DndContext>\n\n <Button\n {...pt?.addButton}\n icon=\"add\"\n variant=\"text\"\n onClick={() => handleAddItem({ isNewAttribute: true })}\n className={pt?.addButton?.className}\n style={{ display: 'flex', justifyContent: 'start' }}\n >\n Add new item\n </Button>\n </Styled.EnumListWrapper>\n </>\n )\n}\n"],"names":["creator","uniqueId","normalize","data","item","label","value","icon","color","denormalize","mergeIncomingItems","currentItems","incomingItems","incomingItem","index","currentItem","EnumEditor","values","onChange","pt","props","items","handleAddItem","handleRemoveItem","handleChangeItem","handleDuplicateItem","handleDraggableEnd","useDraggable","handleDragStart","event","setDraggedItemId","handleDragEnd","draggedItemId","useState","draggedItem","jsxs","Styled.EnumListWrapper","DndContext","closestCenter","jsx","SortableContext","verticalListSortingStrategy","idx","DraggableEnumEditorItem","appendOrUpdateNumericSuffix","e","el","createPortal","DragOverlay","Button"],"mappings":"6cAoCMA,EAAU,KAAsB,CACpC,GAAIC,EAAAA,SAAA,EACJ,WAAY,GACZ,MAAO,GACP,MAAO,GACP,eAAgB,GAChB,eAAgB,EAClB,GAEMC,EAAaC,GACVA,EACJ,OAAQC,GAASA,EAAK,QAAU,IAAMA,EAAK,QAAU,EAAE,EACvD,IAAI,CAAC,CAAE,MAAAC,EAAO,MAAAC,EAAO,KAAAC,EAAM,MAAAC,MAEnB,CACL,MAAAH,EACA,MAHoBC,EAIpB,KAAMC,GAAQ,OACd,MAAOC,GAAS,MAAA,EAEnB,EAGCC,EAAeN,GACZA,EAAK,IAAI,CAAC,CAAE,MAAAE,EAAO,MAAAC,EAAO,KAAAC,EAAM,MAAAC,MAC9B,CACL,GAAIP,EAAAA,SAAA,EACJ,WAAY,GACZ,MAAAI,EACA,MAAOC,EAAM,SAAA,EACb,KAAAC,EACA,MAAAC,EACA,eAAgB,GAChB,eAAgB,EAAA,EAEnB,EAGGE,EAAqB,CACzBC,EACAC,IAEOA,EAAc,IAAI,CAACC,EAAcC,IAAU,CAChD,MAAMC,EAAcJ,EAAaG,CAAK,EAEtC,OAAKC,EAIE,CACL,GAAGF,EACH,GAAIE,EAAY,GAChB,WAAYA,EAAY,WACxB,eAAgBA,EAAY,eAC5B,eAAgBA,EAAY,cAAA,EARrBF,CAUX,CAAC,EAQUG,EAAa,CAAC,CAAE,OAAAC,EAAQ,SAAAC,EAAU,GAAAC,EAAI,GAAGC,KAA6B,CACjF,GAAI,CAACH,EACH,OAAO,KAGT,KAAM,CACJ,MAAAI,EACA,cAAAC,EACA,iBAAAC,EACA,iBAAAC,EACA,oBAAAC,EACA,mBAAAC,CAAA,EACEC,EAA4C,CAC9C,QAAA3B,EACA,YAAaS,EAAYQ,CAAM,EAC/B,SAAAC,EACA,WAAYhB,EACZ,kBAAmBQ,CAAA,CACpB,EAEKkB,EAAmBC,GAA0B,CACjDC,EAAiBD,EAAM,OAAO,EAAY,CAC5C,EAEME,EAAiBF,GAAwB,CAC7CC,EAAiB,IAAI,EACrBJ,EAAmBG,CAAK,CAC1B,EAEM,CAACG,EAAeF,CAAgB,EAAIG,WAAA,EAC1C,IAAIC,EACJ,OAAIF,IACFE,EAAcb,EAAM,KAAMjB,GAASA,EAAK,KAAO4B,CAAa,yDAK1D,SAAAG,EAAAA,kBAAAA,KAACC,kBAAA,CAAwB,GAAGhB,EAC1B,SAAA,CAAAe,EAAAA,kBAAAA,KAACE,EAAAA,WAAA,CACC,mBAAoBC,EAAAA,cACpB,YAAaV,EACb,UAAWG,EAEX,SAAA,CAAAQ,EAAAA,kBAAAA,IAACC,EAAAA,gBAAA,CAAgB,MAAAnB,EAAc,SAAUoB,EAAAA,4BACtC,WAAM,IAAI,CAACrC,EAAMsC,IAChBH,EAAAA,kBAAAA,IAACI,EAAA,CAEC,KAAAvC,EACA,eAAgBA,EAAK,KAAO4B,EAC5B,SAAUR,EAAiBkB,CAAG,EAC9B,SAAUnB,EAAiBmB,CAAG,EAC9B,YAAa,IACXjB,EAAoBiB,EAAK,CACvB,eAAgB,GAChB,eAAgB,GAChB,MAAOE,EAAAA,4BACLvB,EAAMqB,CAAG,EAAE,MACXrB,EAAM,IAAKwB,GAAMA,EAAE,KAAK,EACxB,GAAA,EAEF,MAAOD,EAAAA,4BACLvB,EAAMqB,CAAG,EAAE,MACXrB,EAAM,IAAKyB,GAAOA,EAAG,KAAK,EAC1B,GAAA,CACF,CACD,EAEF,GAAG3B,GAAI,IAAA,EArBH,0BAA0Bf,EAAK,EAAE,EAAA,CAuBzC,EACH,EAEC2C,EAAAA,aACCR,EAAAA,kBAAAA,IAACS,EAAAA,YAAA,CAAY,MAAO,CAAA,EACjB,SAAAd,GAAeK,EAAAA,kBAAAA,IAACI,EAAA,CAAwB,KAAMT,EAAc,GAAGf,GAAI,KAAM,EAC5E,EACA,SAAS,IAAA,CACX,CAAA,CAAA,EAGFoB,EAAAA,kBAAAA,IAACU,EAAAA,OAAA,CACE,GAAG9B,GAAI,UACR,KAAK,MACL,QAAQ,OACR,QAAS,IAAMG,EAAc,CAAE,eAAgB,GAAM,EACrD,UAAWH,GAAI,WAAW,UAC1B,MAAO,CAAE,QAAS,OAAQ,eAAgB,OAAA,EAC3C,SAAA,cAAA,CAAA,CAED,CAAA,CACF,CAAA,CACF,CAEJ"}
1
+ {"version":3,"file":"EnumEditor.cjs.js","sources":["../../../../../src/components/EnumEditor/EnumEditor.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { uniqueId } from 'lodash'\nimport { closestCenter, DndContext, DragEndEvent, DragOverlay, DragStartEvent } from '@dnd-kit/core'\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'\n\nimport { Button } from '@ynput/ayon-react-components'\n\nimport DraggableEnumEditorItem, { DraggableEnumEditorItemProps } from './DraggableEnumEditorItem'\nimport * as Styled from './EnumEditor.styled'\nimport useDraggable from './hooks/useDraggable'\nimport { appendOrUpdateNumericSuffix } from './util'\n\nexport interface EnumEditorPt {\n item?: DraggableEnumEditorItemProps\n addButton?: Partial<React.ComponentProps<typeof Button>>\n}\n\nexport type AttributeData = {\n id: string\n isExpanded: boolean\n label: string\n value: string\n color?: string\n icon?: string\n isLabelFocused: boolean\n isNewAttribute: boolean\n}\n\nexport type NormalizedData = {\n label: string\n value: string | number | boolean\n color?: string\n icon?: string\n}\n\nconst creator = (): AttributeData => ({\n id: uniqueId(),\n isExpanded: true,\n label: '',\n value: '',\n isLabelFocused: true,\n isNewAttribute: false,\n})\n\nconst normalize = (data: AttributeData[]): NormalizedData[] => {\n return data\n .filter((item) => item.label !== '' && item.value !== '')\n .map(({ label, value, icon, color }) => {\n let normalizedValue = value\n return {\n label,\n value: normalizedValue,\n icon: icon || undefined,\n color: color || undefined,\n }\n })\n}\n\nconst denormalize = (data: NormalizedData[]): AttributeData[] => {\n return data.map(({ label, value, icon, color }) => {\n return {\n id: uniqueId(),\n isExpanded: false,\n label,\n value: value.toString(),\n icon: icon,\n color: color,\n isLabelFocused: false,\n isNewAttribute: false,\n }\n })\n}\n\nconst mergeIncomingItems = (\n currentItems: AttributeData[],\n incomingItems: AttributeData[],\n): AttributeData[] => {\n return incomingItems.map((incomingItem, index) => {\n const currentItem = currentItems[index]\n\n if (!currentItem) {\n return incomingItem\n }\n\n return {\n ...incomingItem,\n id: currentItem.id,\n isExpanded: currentItem.isExpanded,\n isLabelFocused: currentItem.isLabelFocused,\n isNewAttribute: currentItem.isNewAttribute,\n }\n })\n}\n\ninterface EnumEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n values: NormalizedData[]\n onChange: (data: NormalizedData[]) => void\n onCommit?: (data: NormalizedData[]) => void\n pt?: EnumEditorPt\n}\nexport const EnumEditor = ({ values, onChange, onCommit, pt, ...props }: EnumEditorProps) => {\n if (!values) {\n return null\n }\n\n const {\n items,\n handleAddItem,\n handleRemoveItem,\n handleChangeItem,\n handleCommitItem,\n handleDuplicateItem,\n handleDraggableEnd,\n } = useDraggable<AttributeData, NormalizedData>({\n creator,\n initialData: denormalize(values),\n onChange,\n onCommit,\n normalizer: normalize,\n mergeIncomingData: mergeIncomingItems,\n })\n\n const handleDragStart = (event: DragStartEvent) => {\n setDraggedItemId(event.active.id as string)\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n setDraggedItemId(null)\n handleDraggableEnd(event)\n }\n\n const [draggedItemId, setDraggedItemId] = useState<string | null>()\n let draggedItem\n if (draggedItemId) {\n draggedItem = items.find((item) => item.id === draggedItemId)\n }\n\n return (\n <>\n <Styled.EnumListWrapper {...props}>\n <DndContext\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item, idx) => (\n <DraggableEnumEditorItem\n key={`DraggableAttributeEnum_${item.id}`}\n item={item}\n isBeingDragged={item.id === draggedItemId}\n onChange={handleChangeItem(idx)}\n onCommit={handleCommitItem(idx)}\n onRemove={handleRemoveItem(idx)}\n onDuplicate={() =>\n handleDuplicateItem(idx, {\n isLabelFocused: true,\n isNewAttribute: true,\n label: appendOrUpdateNumericSuffix(\n items[idx].label,\n items.map((e) => e.label),\n ' ',\n ),\n value: appendOrUpdateNumericSuffix(\n items[idx].value,\n items.map((el) => el.value),\n '-',\n ),\n })\n }\n {...pt?.item}\n />\n ))}\n </SortableContext>\n\n {createPortal(\n <DragOverlay style={{}}>\n {draggedItem && <DraggableEnumEditorItem item={draggedItem} {...pt?.item} />}\n </DragOverlay>,\n document.body,\n )}\n </DndContext>\n\n <Button\n {...pt?.addButton}\n icon=\"add\"\n variant=\"text\"\n onClick={() => handleAddItem({ isNewAttribute: true })}\n className={pt?.addButton?.className}\n style={{ display: 'flex', justifyContent: 'start' }}\n >\n Add new item\n </Button>\n </Styled.EnumListWrapper>\n </>\n )\n}\n"],"names":["creator","uniqueId","normalize","data","item","label","value","icon","color","denormalize","mergeIncomingItems","currentItems","incomingItems","incomingItem","index","currentItem","EnumEditor","values","onChange","onCommit","pt","props","items","handleAddItem","handleRemoveItem","handleChangeItem","handleCommitItem","handleDuplicateItem","handleDraggableEnd","useDraggable","handleDragStart","event","setDraggedItemId","handleDragEnd","draggedItemId","useState","draggedItem","jsxs","Styled.EnumListWrapper","DndContext","closestCenter","jsx","SortableContext","verticalListSortingStrategy","idx","DraggableEnumEditorItem","appendOrUpdateNumericSuffix","e","el","createPortal","DragOverlay","Button"],"mappings":"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"}
@@ -1,114 +1,117 @@
1
1
  import { j as n } from "../../../../_virtual/jsx-runtime.es.js";
2
- import { useState as I } from "react";
3
- import { createPortal as j } from "react-dom";
2
+ import { useState as A } from "react";
3
+ import { createPortal as C } from "react-dom";
4
4
  import { uniqueId as f } from "lodash";
5
- import { DndContext as A, closestCenter as N, DragOverlay as y } from "@dnd-kit/core";
6
- import { SortableContext as S, verticalListSortingStrategy as w } from "@dnd-kit/sortable";
7
- import { Button as C } from "@ynput/ayon-react-components";
5
+ import { DndContext as N, closestCenter as y, DragOverlay as S } from "@dnd-kit/core";
6
+ import { SortableContext as w, verticalListSortingStrategy as L } from "@dnd-kit/sortable";
7
+ import { Button as F } from "@ynput/ayon-react-components";
8
8
  import g from "./DraggableEnumEditorItem.es.js";
9
- import { EnumListWrapper as L } from "./EnumEditor.styled.es.js";
10
- import F from "./hooks/useDraggable.es.js";
9
+ import { EnumListWrapper as z } from "./EnumEditor.styled.es.js";
10
+ import B from "./hooks/useDraggable.es.js";
11
11
  import { appendOrUpdateNumericSuffix as p } from "./util/index.es.js";
12
- const z = () => ({
12
+ const R = () => ({
13
13
  id: f(),
14
14
  isExpanded: !0,
15
15
  label: "",
16
16
  value: "",
17
17
  isLabelFocused: !0,
18
18
  isNewAttribute: !1
19
- }), B = (i) => i.filter((r) => r.label !== "" && r.value !== "").map(({ label: r, value: t, icon: o, color: e }) => ({
20
- label: r,
21
- value: t,
22
- icon: o || void 0,
19
+ }), O = (i) => i.filter((t) => t.label !== "" && t.value !== "").map(({ label: t, value: o, icon: r, color: e }) => ({
20
+ label: t,
21
+ value: o,
22
+ icon: r || void 0,
23
23
  color: e || void 0
24
- })), R = (i) => i.map(({ label: r, value: t, icon: o, color: e }) => ({
24
+ })), V = (i) => i.map(({ label: t, value: o, icon: r, color: e }) => ({
25
25
  id: f(),
26
26
  isExpanded: !1,
27
- label: r,
28
- value: t.toString(),
29
- icon: o,
27
+ label: t,
28
+ value: o.toString(),
29
+ icon: r,
30
30
  color: e,
31
31
  isLabelFocused: !1,
32
32
  isNewAttribute: !1
33
- })), O = (i, r) => r.map((t, o) => {
34
- const e = i[o];
33
+ })), k = (i, t) => t.map((o, r) => {
34
+ const e = i[r];
35
35
  return e ? {
36
- ...t,
36
+ ...o,
37
37
  id: e.id,
38
38
  isExpanded: e.isExpanded,
39
39
  isLabelFocused: e.isLabelFocused,
40
40
  isNewAttribute: e.isNewAttribute
41
- } : t;
42
- }), K = ({ values: i, onChange: r, pt: t, ...o }) => {
41
+ } : o;
42
+ }), Q = ({ values: i, onChange: t, onCommit: o, pt: r, ...e }) => {
43
43
  if (!i)
44
44
  return null;
45
45
  const {
46
- items: e,
47
- handleAddItem: u,
48
- handleRemoveItem: b,
49
- handleChangeItem: D,
50
- handleDuplicateItem: x,
51
- handleDraggableEnd: h
52
- } = F({
53
- creator: z,
54
- initialData: R(i),
55
- onChange: r,
56
- normalizer: B,
57
- mergeIncomingData: O
58
- }), v = (a) => {
46
+ items: l,
47
+ handleAddItem: b,
48
+ handleRemoveItem: D,
49
+ handleChangeItem: h,
50
+ handleCommitItem: x,
51
+ handleDuplicateItem: I,
52
+ handleDraggableEnd: v
53
+ } = B({
54
+ creator: R,
55
+ initialData: V(i),
56
+ onChange: t,
57
+ onCommit: o,
58
+ normalizer: O,
59
+ mergeIncomingData: k
60
+ }), E = (a) => {
59
61
  c(a.active.id);
60
- }, E = (a) => {
61
- c(null), h(a);
62
- }, [s, c] = I();
63
- let d;
64
- return s && (d = e.find((a) => a.id === s)), /* @__PURE__ */ n.jsx(n.Fragment, { children: /* @__PURE__ */ n.jsxs(L, { ...o, children: [
62
+ }, j = (a) => {
63
+ c(null), v(a);
64
+ }, [d, c] = A();
65
+ let m;
66
+ return d && (m = l.find((a) => a.id === d)), /* @__PURE__ */ n.jsx(n.Fragment, { children: /* @__PURE__ */ n.jsxs(z, { ...e, children: [
65
67
  /* @__PURE__ */ n.jsxs(
66
- A,
68
+ N,
67
69
  {
68
- collisionDetection: N,
69
- onDragStart: v,
70
- onDragEnd: E,
70
+ collisionDetection: y,
71
+ onDragStart: E,
72
+ onDragEnd: j,
71
73
  children: [
72
- /* @__PURE__ */ n.jsx(S, { items: e, strategy: w, children: e.map((a, l) => /* @__PURE__ */ n.jsx(
74
+ /* @__PURE__ */ n.jsx(w, { items: l, strategy: L, children: l.map((a, s) => /* @__PURE__ */ n.jsx(
73
75
  g,
74
76
  {
75
77
  item: a,
76
- isBeingDragged: a.id === s,
77
- onChange: D(l),
78
- onRemove: b(l),
79
- onDuplicate: () => x(l, {
78
+ isBeingDragged: a.id === d,
79
+ onChange: h(s),
80
+ onCommit: x(s),
81
+ onRemove: D(s),
82
+ onDuplicate: () => I(s, {
80
83
  isLabelFocused: !0,
81
84
  isNewAttribute: !0,
82
85
  label: p(
83
- e[l].label,
84
- e.map((m) => m.label),
86
+ l[s].label,
87
+ l.map((u) => u.label),
85
88
  " "
86
89
  ),
87
90
  value: p(
88
- e[l].value,
89
- e.map((m) => m.value),
91
+ l[s].value,
92
+ l.map((u) => u.value),
90
93
  "-"
91
94
  )
92
95
  }),
93
- ...t?.item
96
+ ...r?.item
94
97
  },
95
98
  `DraggableAttributeEnum_${a.id}`
96
99
  )) }),
97
- j(
98
- /* @__PURE__ */ n.jsx(y, { style: {}, children: d && /* @__PURE__ */ n.jsx(g, { item: d, ...t?.item }) }),
100
+ C(
101
+ /* @__PURE__ */ n.jsx(S, { style: {}, children: m && /* @__PURE__ */ n.jsx(g, { item: m, ...r?.item }) }),
99
102
  document.body
100
103
  )
101
104
  ]
102
105
  }
103
106
  ),
104
107
  /* @__PURE__ */ n.jsx(
105
- C,
108
+ F,
106
109
  {
107
- ...t?.addButton,
110
+ ...r?.addButton,
108
111
  icon: "add",
109
112
  variant: "text",
110
- onClick: () => u({ isNewAttribute: !0 }),
111
- className: t?.addButton?.className,
113
+ onClick: () => b({ isNewAttribute: !0 }),
114
+ className: r?.addButton?.className,
112
115
  style: { display: "flex", justifyContent: "start" },
113
116
  children: "Add new item"
114
117
  }
@@ -116,6 +119,6 @@ const z = () => ({
116
119
  ] }) });
117
120
  };
118
121
  export {
119
- K as EnumEditor
122
+ Q as EnumEditor
120
123
  };
121
124
  //# sourceMappingURL=EnumEditor.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnumEditor.es.js","sources":["../../../../../src/components/EnumEditor/EnumEditor.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { uniqueId } from 'lodash'\nimport { closestCenter, DndContext, DragEndEvent, DragOverlay, DragStartEvent } from '@dnd-kit/core'\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'\n\nimport { Button } from '@ynput/ayon-react-components'\n\nimport DraggableEnumEditorItem, { DraggableEnumEditorItemProps } from './DraggableEnumEditorItem'\nimport * as Styled from './EnumEditor.styled'\nimport useDraggable from './hooks/useDraggable'\nimport { appendOrUpdateNumericSuffix } from './util'\n\nexport interface EnumEditorPt {\n item?: DraggableEnumEditorItemProps\n addButton?: Partial<React.ComponentProps<typeof Button>>\n}\n\nexport type AttributeData = {\n id: string\n isExpanded: boolean\n label: string\n value: string\n color?: string\n icon?: string\n isLabelFocused: boolean\n isNewAttribute: boolean\n}\n\nexport type NormalizedData = {\n label: string\n value: string | number | boolean\n color?: string\n icon?: string\n}\n\nconst creator = (): AttributeData => ({\n id: uniqueId(),\n isExpanded: true,\n label: '',\n value: '',\n isLabelFocused: true,\n isNewAttribute: false,\n})\n\nconst normalize = (data: AttributeData[]): NormalizedData[] => {\n return data\n .filter((item) => item.label !== '' && item.value !== '')\n .map(({ label, value, icon, color }) => {\n let normalizedValue = value\n return {\n label,\n value: normalizedValue,\n icon: icon || undefined,\n color: color || undefined,\n }\n })\n}\n\nconst denormalize = (data: NormalizedData[]): AttributeData[] => {\n return data.map(({ label, value, icon, color }) => {\n return {\n id: uniqueId(),\n isExpanded: false,\n label,\n value: value.toString(),\n icon: icon,\n color: color,\n isLabelFocused: false,\n isNewAttribute: false,\n }\n })\n}\n\nconst mergeIncomingItems = (\n currentItems: AttributeData[],\n incomingItems: AttributeData[],\n): AttributeData[] => {\n return incomingItems.map((incomingItem, index) => {\n const currentItem = currentItems[index]\n\n if (!currentItem) {\n return incomingItem\n }\n\n return {\n ...incomingItem,\n id: currentItem.id,\n isExpanded: currentItem.isExpanded,\n isLabelFocused: currentItem.isLabelFocused,\n isNewAttribute: currentItem.isNewAttribute,\n }\n })\n}\n\ninterface EnumEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n values: NormalizedData[]\n onChange: (data: NormalizedData[]) => void\n pt?: EnumEditorPt\n}\nexport const EnumEditor = ({ values, onChange, pt, ...props }: EnumEditorProps) => {\n if (!values) {\n return null\n }\n\n const {\n items,\n handleAddItem,\n handleRemoveItem,\n handleChangeItem,\n handleDuplicateItem,\n handleDraggableEnd,\n } = useDraggable<AttributeData, NormalizedData>({\n creator,\n initialData: denormalize(values),\n onChange,\n normalizer: normalize,\n mergeIncomingData: mergeIncomingItems,\n })\n\n const handleDragStart = (event: DragStartEvent) => {\n setDraggedItemId(event.active.id as string)\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n setDraggedItemId(null)\n handleDraggableEnd(event)\n }\n\n const [draggedItemId, setDraggedItemId] = useState<string | null>()\n let draggedItem\n if (draggedItemId) {\n draggedItem = items.find((item) => item.id === draggedItemId)\n }\n\n return (\n <>\n <Styled.EnumListWrapper {...props}>\n <DndContext\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item, idx) => (\n <DraggableEnumEditorItem\n key={`DraggableAttributeEnum_${item.id}`}\n item={item}\n isBeingDragged={item.id === draggedItemId}\n onChange={handleChangeItem(idx)}\n onRemove={handleRemoveItem(idx)}\n onDuplicate={() =>\n handleDuplicateItem(idx, {\n isLabelFocused: true,\n isNewAttribute: true,\n label: appendOrUpdateNumericSuffix(\n items[idx].label,\n items.map((e) => e.label),\n ' ',\n ),\n value: appendOrUpdateNumericSuffix(\n items[idx].value,\n items.map((el) => el.value),\n '-',\n ),\n })\n }\n {...pt?.item}\n />\n ))}\n </SortableContext>\n\n {createPortal(\n <DragOverlay style={{}}>\n {draggedItem && <DraggableEnumEditorItem item={draggedItem} {...pt?.item} />}\n </DragOverlay>,\n document.body,\n )}\n </DndContext>\n\n <Button\n {...pt?.addButton}\n icon=\"add\"\n variant=\"text\"\n onClick={() => handleAddItem({ isNewAttribute: true })}\n className={pt?.addButton?.className}\n style={{ display: 'flex', justifyContent: 'start' }}\n >\n Add new item\n </Button>\n </Styled.EnumListWrapper>\n </>\n )\n}\n"],"names":["creator","uniqueId","normalize","data","item","label","value","icon","color","denormalize","mergeIncomingItems","currentItems","incomingItems","incomingItem","index","currentItem","EnumEditor","values","onChange","pt","props","items","handleAddItem","handleRemoveItem","handleChangeItem","handleDuplicateItem","handleDraggableEnd","useDraggable","handleDragStart","event","setDraggedItemId","handleDragEnd","draggedItemId","useState","draggedItem","jsxs","Styled.EnumListWrapper","DndContext","closestCenter","jsx","SortableContext","verticalListSortingStrategy","idx","DraggableEnumEditorItem","appendOrUpdateNumericSuffix","e","el","createPortal","DragOverlay","Button"],"mappings":";;;;;;;;;;;AAoCA,MAAMA,IAAU,OAAsB;AAAA,EACpC,IAAIC,EAAA;AAAA,EACJ,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,gBAAgB;AAClB,IAEMC,IAAY,CAACC,MACVA,EACJ,OAAO,CAACC,MAASA,EAAK,UAAU,MAAMA,EAAK,UAAU,EAAE,EACvD,IAAI,CAAC,EAAE,OAAAC,GAAO,OAAAC,GAAO,MAAAC,GAAM,OAAAC,SAEnB;AAAA,EACL,OAAAH;AAAA,EACA,OAHoBC;AAAA,EAIpB,MAAMC,KAAQ;AAAA,EACd,OAAOC,KAAS;AAAA,EAEnB,GAGCC,IAAc,CAACN,MACZA,EAAK,IAAI,CAAC,EAAE,OAAAE,GAAO,OAAAC,GAAO,MAAAC,GAAM,OAAAC,SAC9B;AAAA,EACL,IAAIP,EAAA;AAAA,EACJ,YAAY;AAAA,EACZ,OAAAI;AAAA,EACA,OAAOC,EAAM,SAAA;AAAA,EACb,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAEnB,GAGGE,IAAqB,CACzBC,GACAC,MAEOA,EAAc,IAAI,CAACC,GAAcC,MAAU;AAChD,QAAMC,IAAcJ,EAAaG,CAAK;AAEtC,SAAKC,IAIE;AAAA,IACL,GAAGF;AAAA,IACH,IAAIE,EAAY;AAAA,IAChB,YAAYA,EAAY;AAAA,IACxB,gBAAgBA,EAAY;AAAA,IAC5B,gBAAgBA,EAAY;AAAA,EAAA,IARrBF;AAUX,CAAC,GAQUG,IAAa,CAAC,EAAE,QAAAC,GAAQ,UAAAC,GAAU,IAAAC,GAAI,GAAGC,QAA6B;AACjF,MAAI,CAACH;AACH,WAAO;AAGT,QAAM;AAAA,IACJ,OAAAI;AAAA,IACA,eAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,IACEC,EAA4C;AAAA,IAC9C,SAAA3B;AAAA,IACA,aAAaS,EAAYQ,CAAM;AAAA,IAC/B,UAAAC;AAAA,IACA,YAAYhB;AAAA,IACZ,mBAAmBQ;AAAA,EAAA,CACpB,GAEKkB,IAAkB,CAACC,MAA0B;AACjD,IAAAC,EAAiBD,EAAM,OAAO,EAAY;AAAA,EAC5C,GAEME,IAAgB,CAACF,MAAwB;AAC7C,IAAAC,EAAiB,IAAI,GACrBJ,EAAmBG,CAAK;AAAA,EAC1B,GAEM,CAACG,GAAeF,CAAgB,IAAIG,EAAA;AAC1C,MAAIC;AACJ,SAAIF,MACFE,IAAcb,EAAM,KAAK,CAACjB,MAASA,EAAK,OAAO4B,CAAa,wCAK1D,UAAAG,gBAAAA,EAAAA,KAACC,GAAA,EAAwB,GAAGhB,GAC1B,UAAA;AAAA,IAAAe,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACC,oBAAoBC;AAAA,QACpB,aAAaV;AAAA,QACb,WAAWG;AAAA,QAEX,UAAA;AAAA,UAAAQ,gBAAAA,EAAAA,IAACC,GAAA,EAAgB,OAAAnB,GAAc,UAAUoB,GACtC,YAAM,IAAI,CAACrC,GAAMsC,MAChBH,gBAAAA,EAAAA;AAAAA,YAACI;AAAA,YAAA;AAAA,cAEC,MAAAvC;AAAA,cACA,gBAAgBA,EAAK,OAAO4B;AAAA,cAC5B,UAAUR,EAAiBkB,CAAG;AAAA,cAC9B,UAAUnB,EAAiBmB,CAAG;AAAA,cAC9B,aAAa,MACXjB,EAAoBiB,GAAK;AAAA,gBACvB,gBAAgB;AAAA,gBAChB,gBAAgB;AAAA,gBAChB,OAAOE;AAAA,kBACLvB,EAAMqB,CAAG,EAAE;AAAA,kBACXrB,EAAM,IAAI,CAACwB,MAAMA,EAAE,KAAK;AAAA,kBACxB;AAAA,gBAAA;AAAA,gBAEF,OAAOD;AAAA,kBACLvB,EAAMqB,CAAG,EAAE;AAAA,kBACXrB,EAAM,IAAI,CAACyB,MAAOA,EAAG,KAAK;AAAA,kBAC1B;AAAA,gBAAA;AAAA,cACF,CACD;AAAA,cAEF,GAAG3B,GAAI;AAAA,YAAA;AAAA,YArBH,0BAA0Bf,EAAK,EAAE;AAAA,UAAA,CAuBzC,GACH;AAAA,UAEC2C;AAAA,YACCR,gBAAAA,EAAAA,IAACS,GAAA,EAAY,OAAO,CAAA,GACjB,UAAAd,KAAeK,gBAAAA,EAAAA,IAACI,GAAA,EAAwB,MAAMT,GAAc,GAAGf,GAAI,MAAM,GAC5E;AAAA,YACA,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFoB,gBAAAA,EAAAA;AAAAA,MAACU;AAAA,MAAA;AAAA,QACE,GAAG9B,GAAI;AAAA,QACR,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,SAAS,MAAMG,EAAc,EAAE,gBAAgB,IAAM;AAAA,QACrD,WAAWH,GAAI,WAAW;AAAA,QAC1B,OAAO,EAAE,SAAS,QAAQ,gBAAgB,QAAA;AAAA,QAC3C,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAED,EAAA,CACF,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"EnumEditor.es.js","sources":["../../../../../src/components/EnumEditor/EnumEditor.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { uniqueId } from 'lodash'\nimport { closestCenter, DndContext, DragEndEvent, DragOverlay, DragStartEvent } from '@dnd-kit/core'\nimport { SortableContext, verticalListSortingStrategy } from '@dnd-kit/sortable'\n\nimport { Button } from '@ynput/ayon-react-components'\n\nimport DraggableEnumEditorItem, { DraggableEnumEditorItemProps } from './DraggableEnumEditorItem'\nimport * as Styled from './EnumEditor.styled'\nimport useDraggable from './hooks/useDraggable'\nimport { appendOrUpdateNumericSuffix } from './util'\n\nexport interface EnumEditorPt {\n item?: DraggableEnumEditorItemProps\n addButton?: Partial<React.ComponentProps<typeof Button>>\n}\n\nexport type AttributeData = {\n id: string\n isExpanded: boolean\n label: string\n value: string\n color?: string\n icon?: string\n isLabelFocused: boolean\n isNewAttribute: boolean\n}\n\nexport type NormalizedData = {\n label: string\n value: string | number | boolean\n color?: string\n icon?: string\n}\n\nconst creator = (): AttributeData => ({\n id: uniqueId(),\n isExpanded: true,\n label: '',\n value: '',\n isLabelFocused: true,\n isNewAttribute: false,\n})\n\nconst normalize = (data: AttributeData[]): NormalizedData[] => {\n return data\n .filter((item) => item.label !== '' && item.value !== '')\n .map(({ label, value, icon, color }) => {\n let normalizedValue = value\n return {\n label,\n value: normalizedValue,\n icon: icon || undefined,\n color: color || undefined,\n }\n })\n}\n\nconst denormalize = (data: NormalizedData[]): AttributeData[] => {\n return data.map(({ label, value, icon, color }) => {\n return {\n id: uniqueId(),\n isExpanded: false,\n label,\n value: value.toString(),\n icon: icon,\n color: color,\n isLabelFocused: false,\n isNewAttribute: false,\n }\n })\n}\n\nconst mergeIncomingItems = (\n currentItems: AttributeData[],\n incomingItems: AttributeData[],\n): AttributeData[] => {\n return incomingItems.map((incomingItem, index) => {\n const currentItem = currentItems[index]\n\n if (!currentItem) {\n return incomingItem\n }\n\n return {\n ...incomingItem,\n id: currentItem.id,\n isExpanded: currentItem.isExpanded,\n isLabelFocused: currentItem.isLabelFocused,\n isNewAttribute: currentItem.isNewAttribute,\n }\n })\n}\n\ninterface EnumEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n values: NormalizedData[]\n onChange: (data: NormalizedData[]) => void\n onCommit?: (data: NormalizedData[]) => void\n pt?: EnumEditorPt\n}\nexport const EnumEditor = ({ values, onChange, onCommit, pt, ...props }: EnumEditorProps) => {\n if (!values) {\n return null\n }\n\n const {\n items,\n handleAddItem,\n handleRemoveItem,\n handleChangeItem,\n handleCommitItem,\n handleDuplicateItem,\n handleDraggableEnd,\n } = useDraggable<AttributeData, NormalizedData>({\n creator,\n initialData: denormalize(values),\n onChange,\n onCommit,\n normalizer: normalize,\n mergeIncomingData: mergeIncomingItems,\n })\n\n const handleDragStart = (event: DragStartEvent) => {\n setDraggedItemId(event.active.id as string)\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n setDraggedItemId(null)\n handleDraggableEnd(event)\n }\n\n const [draggedItemId, setDraggedItemId] = useState<string | null>()\n let draggedItem\n if (draggedItemId) {\n draggedItem = items.find((item) => item.id === draggedItemId)\n }\n\n return (\n <>\n <Styled.EnumListWrapper {...props}>\n <DndContext\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item, idx) => (\n <DraggableEnumEditorItem\n key={`DraggableAttributeEnum_${item.id}`}\n item={item}\n isBeingDragged={item.id === draggedItemId}\n onChange={handleChangeItem(idx)}\n onCommit={handleCommitItem(idx)}\n onRemove={handleRemoveItem(idx)}\n onDuplicate={() =>\n handleDuplicateItem(idx, {\n isLabelFocused: true,\n isNewAttribute: true,\n label: appendOrUpdateNumericSuffix(\n items[idx].label,\n items.map((e) => e.label),\n ' ',\n ),\n value: appendOrUpdateNumericSuffix(\n items[idx].value,\n items.map((el) => el.value),\n '-',\n ),\n })\n }\n {...pt?.item}\n />\n ))}\n </SortableContext>\n\n {createPortal(\n <DragOverlay style={{}}>\n {draggedItem && <DraggableEnumEditorItem item={draggedItem} {...pt?.item} />}\n </DragOverlay>,\n document.body,\n )}\n </DndContext>\n\n <Button\n {...pt?.addButton}\n icon=\"add\"\n variant=\"text\"\n onClick={() => handleAddItem({ isNewAttribute: true })}\n className={pt?.addButton?.className}\n style={{ display: 'flex', justifyContent: 'start' }}\n >\n Add new item\n </Button>\n </Styled.EnumListWrapper>\n </>\n )\n}\n"],"names":["creator","uniqueId","normalize","data","item","label","value","icon","color","denormalize","mergeIncomingItems","currentItems","incomingItems","incomingItem","index","currentItem","EnumEditor","values","onChange","onCommit","pt","props","items","handleAddItem","handleRemoveItem","handleChangeItem","handleCommitItem","handleDuplicateItem","handleDraggableEnd","useDraggable","handleDragStart","event","setDraggedItemId","handleDragEnd","draggedItemId","useState","draggedItem","jsxs","Styled.EnumListWrapper","DndContext","closestCenter","jsx","SortableContext","verticalListSortingStrategy","idx","DraggableEnumEditorItem","appendOrUpdateNumericSuffix","e","el","createPortal","DragOverlay","Button"],"mappings":"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"}