@ynput/ayon-frontend-shared 0.3.22 → 0.3.24
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.
- package/dist/DetailsPanel.cjs.js +1 -1
- package/dist/DetailsPanel.es.js +23 -22
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/_virtual/index.cjs14.js +1 -1
- package/dist/_virtual/index.cjs15.js +1 -1
- package/dist/_virtual/index.cjs19.js +1 -1
- package/dist/_virtual/index.cjs22.js +1 -1
- package/dist/_virtual/index.cjs23.js +1 -1
- package/dist/_virtual/index.cjs24.js +1 -1
- package/dist/_virtual/index.cjs9.js +1 -1
- package/dist/_virtual/index.es10.js +2 -2
- package/dist/_virtual/index.es11.js +2 -2
- package/dist/_virtual/index.es13.js +2 -2
- package/dist/_virtual/index.es14.js +2 -5
- package/dist/_virtual/index.es14.js.map +1 -1
- package/dist/_virtual/index.es15.js +2 -2
- package/dist/_virtual/index.es16.js +2 -2
- package/dist/_virtual/index.es17.js +2 -2
- package/dist/_virtual/index.es18.js +2 -2
- package/dist/_virtual/index.es19.js +2 -2
- package/dist/_virtual/index.es22.js +3 -3
- package/dist/_virtual/index.es23.js +5 -5
- package/dist/_virtual/index.es24.js +5 -5
- package/dist/_virtual/index.es9.js +5 -2
- package/dist/_virtual/index.es9.js.map +1 -1
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +178 -176
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +157 -155
- package/dist/components.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +10 -9
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/parse-numeric-range/index.cjs.js +1 -1
- package/dist/node_modules/parse-numeric-range/index.es.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/unified/lib/index.es.js +2 -2
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype/node_modules/vfile/lib/index.es.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.cjs.js +1 -1
- package/dist/node_modules/rehype-parse/lib/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/module/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/plugins/snapshot/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/remote/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/shared/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/type/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/hooks/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.cjs.js.map +1 -1
- package/dist/shared/node_modules/@module-federation/runtime-core/dist/utils/semver/index.es.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/index.cjs.js +1 -1
- package/dist/shared/node_modules/@module-federation/sdk/dist/index.es.js +1 -1
- package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
- package/dist/shared/node_modules/prop-types/index.es.js +1 -1
- package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/Transition.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.cjs.js.map +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/utils/PropTypes.es.js +1 -1
- package/dist/shared/src/api/base/client.cjs.js +1 -1
- package/dist/shared/src/api/base/client.cjs.js.map +1 -1
- package/dist/shared/src/api/base/client.es.js +4 -3
- package/dist/shared/src/api/base/client.es.js.map +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/projects.es.js +32 -41
- package/dist/shared/src/api/generated/projects.es.js.map +1 -1
- package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -1
- package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/project/getProject.es.js +29 -15
- package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
- package/dist/shared/src/api/queries/project/updateProject.cjs.js +1 -1
- package/dist/shared/src/api/queries/project/updateProject.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/project/updateProject.es.js +19 -14
- package/dist/shared/src/api/queries/project/updateProject.es.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.cjs.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js +155 -175
- package/dist/shared/src/components/AttributeEditor/AttributeEditor.es.js.map +1 -1
- package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js +2 -0
- package/dist/shared/src/components/AttributeEditor/attributeTypeMap.cjs.js.map +1 -0
- package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js +77 -0
- package/dist/shared/src/components/AttributeEditor/attributeTypeMap.es.js.map +1 -0
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +3 -2
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js +3 -2
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploaderDialog.es.js.map +1 -1
- package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js +1 -1
- package/dist/shared/src/components/EnumEditor/EnumEditorItem.cjs.js.map +1 -1
- package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js +27 -27
- package/dist/shared/src/components/EnumEditor/EnumEditorItem.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js +3 -2
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js +3 -2
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +5 -4
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +3 -2
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +3 -2
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +3 -2
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +3 -2
- package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js +3 -2
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +4 -3
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +3 -2
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js +2 -0
- package/dist/shared/src/components/ReviewablesSelector/Card.cjs.js.map +1 -0
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js +307 -0
- package/dist/shared/src/components/ReviewablesSelector/Card.es.js.map +1 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +64 -322
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js +22 -5
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js +27 -9
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js +5 -4
- package/dist/shared/src/components/SimpleFormDialog/FormFile.es.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js +3 -2
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +3 -2
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +5 -4
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js +3 -2
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js +3 -2
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +17 -16
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js +3 -2
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +3 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +3 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +3 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js +7 -6
- package/dist/shared/src/containers/Feed/components/CommentInput/helpers.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js +3 -2
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/ProjectTreeTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +6 -5
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildProjectDataTable.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +9 -8
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +14 -13
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js +1 -0
- package/dist/shared/src/containers/ProjectTreeTable/utils/queryFilterToClientFilter.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +4 -3
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +3 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +3 -2
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +3 -2
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js +3 -2
- package/dist/shared/src/containers/Slicer/hooks/useSelectedEntityIds.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +4 -4
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +3 -2
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js +1 -1
- package/dist/shared/src/context/WebsocketContext.cjs.js.map +1 -1
- package/dist/shared/src/context/WebsocketContext.es.js +5 -4
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModule.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModule.es.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.cjs.js +1 -1
- package/dist/shared/src/util/getAttributeIcon.cjs.js.map +1 -1
- package/dist/shared/src/util/getAttributeIcon.es.js +5 -5
- package/dist/shared/src/util/getAttributeIcon.es.js.map +1 -1
- package/dist/types/api/generated/projects.d.ts +41 -23
- package/dist/types/api/queries/project/getProject.d.ts +188 -1
- package/dist/types/api/queries/project/updateProject.d.ts +171 -11
- package/dist/types/components/AttributeEditor/attributeTypeMap.d.ts +13 -0
- package/dist/types/components/AttributeEditor/index.d.ts +1 -0
- package/dist/types/components/ReviewablesSelector/Card.d.ts +18 -0
- package/dist/types/components/ReviewablesSelector/ReviewablesSelector.d.ts +2 -3
- package/dist/types/components/ReviewablesSelector/ReviewablesSelector.styled.d.ts +1 -0
- package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPanelUploader.es.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploader.tsx"],"sourcesContent":["import { ChangeEvent, useRef, useState } from 'react'\nimport clsx from 'clsx'\n\nimport { ThumbnailWrapper } from '@shared/containers'\nimport {\n useCreateVersionMutation,\n useUpdateEntitiesMutation,\n useCreateProductMutation,\n} from '@shared/api'\nimport * as Styled from './EntityPanelUploader.styled'\nimport { ThumbnailUploadProvider } from '../../context/ThumbnailUploaderContext'\nimport Dropzone, { DropzoneType } from './Dropzone'\nimport axios from 'axios'\nimport { toast } from 'react-toastify'\nimport { useReviewablesUpload } from '../ReviewablesList'\nimport { useDetailsPanelContext } from '@shared/context'\nimport EntityPanelUploaderDialog from './EntityPanelUploaderDialog'\nimport {\n sanitizeProductName,\n createProductHelper,\n createVersionHelper,\n getNextVersionNumber,\n handleUploadError,\n} from '@shared/util'\n\ntype Operation = {\n id: string\n projectName: string\n currentAssignees: any[]\n data: { updatedAt: string }\n}\nexport type EntityPanelUploaderProps = {\n entityType: string\n entities: any[]\n projectName: any\n children?: JSX.Element | JSX.Element[]\n onUploaded?: (operations: Operation[]) => void\n resetFileUploadState?: () => void\n onVersionCreated?: (versionId: string) => void\n}\n\ntype UploadType = 'thumbnail' | 'version'\nconst dropZones: (DropzoneType & { id: UploadType })[] = [\n { id: 'thumbnail', label: 'Upload thumbnail', icon: 'add_photo_alternate' },\n { id: 'version', label: 'Upload version', icon: 'layers' },\n]\n\nexport const EntityPanelUploader = ({\n children = [],\n entityType,\n entities = [],\n projectName,\n onUploaded,\n onVersionCreated,\n}: EntityPanelUploaderProps) => {\n const { dispatch } = useDetailsPanelContext()\n // Dragging and dropping state\n const [isDraggingFile, setIsDraggingFile] = useState(false)\n const [draggingZone, setDraggingZone] = useState<UploadType | null>(null)\n const dragCounterRef = useRef(0)\n\n // Uploading state\n const [uploadingType, setUploadingType] = useState<UploadType | null>(null)\n const [progress, setProgress] = useState(0)\n\n // Dialog state for product creation\n const [showProductDialog, setShowProductDialog] = useState(false)\n const [pendingFiles, setPendingFiles] = useState<FileList | null>(null)\n\n // Check if we have exactly one entity selected\n const singleEntity = entities.length === 1 ? entities[0] : null\n // extra all entity IDs for the single version entity\n const taskId: string | undefined = singleEntity?.task?.id\n const folderId: string | undefined = singleEntity?.folder?.id\n const productId: string | undefined = singleEntity?.product?.id\n const versionId: string | undefined = singleEntity?.id\n const canUploadVersions = Boolean(singleEntity && entityType !== 'representation')\n\n // Use the custom hook for reviewable upload logic (only when single version)\n const { handleFileUpload: uploadReviewableFiles } = useReviewablesUpload({\n projectName,\n versionId: versionId,\n taskId: taskId,\n folderId: folderId,\n productId: productId,\n dispatch,\n onUpload: () => {\n setUploadingType(null)\n setProgress(0)\n },\n onProgress: (progress) => {\n setProgress(progress)\n },\n })\n\n // Filter drop zones based on whether we can upload reviewables\n const availableDropZones = dropZones.filter((zone) => {\n if (zone.id === 'version') {\n return canUploadVersions\n }\n return true\n })\n\n const resetState = () => {\n setUploadingType(null)\n setIsDraggingFile(false)\n setDraggingZone(null)\n dragCounterRef.current = 0\n setProgress(0)\n setShowProductDialog(false)\n setPendingFiles(null)\n }\n\n // Handle dialog submission - create product and upload version\n const handleDialogSubmit = async (productName: string) => {\n if (!pendingFiles || !singleEntity) {\n setShowProductDialog(false)\n setPendingFiles(null)\n return\n }\n\n const sanitizedName = sanitizeProductName(productName)\n\n if (!sanitizedName.trim()) {\n toast.error(\n 'Product name must contain valid characters (letters, numbers, underscore, or hyphen)',\n )\n return\n }\n\n try {\n if (!folderId) {\n throw new Error('Folder ID is required to create a product')\n }\n setUploadingType('version')\n\n // Create the product\n const productRes = await createProductHelper(createProduct, projectName, {\n folderId: folderId,\n name: sanitizedName,\n productType: 'review', // default product type for uploaded files\n productBaseType: 'review',\n })\n\n // Close dialog and proceed with version upload\n setShowProductDialog(false)\n await uploadVersionWithProduct(pendingFiles, productRes.id)\n setPendingFiles(null)\n } catch (error: any) {\n handleUploadError(error, 'creating product')\n resetState()\n }\n }\n\n // Handle dialog cancellation\n const handleDialogCancel = () => {\n setShowProductDialog(false)\n setPendingFiles(null)\n resetState()\n }\n\n const [createVersion] = useCreateVersionMutation()\n const [createProduct] = useCreateProductMutation()\n // Handle version/reviewable file upload\n const handleVersionUpload = async (files: FileList) => {\n if (!canUploadVersions || !singleEntity) {\n toast.error('Please select exactly one version to upload reviewables')\n return resetState()\n }\n\n const productId = singleEntity.product?.id\n if (!productId) {\n // Show dialog to create product first\n setPendingFiles(files)\n setShowProductDialog(true)\n return\n }\n\n // If we have a productId, proceed with upload\n await uploadVersionWithProduct(files, productId)\n }\n\n // Helper function to handle the actual version upload\n const uploadVersionWithProduct = async (files: FileList, productId: string) => {\n try {\n const nextVersion = getNextVersionNumber(singleEntity!.product?.latestVersion)\n\n // create a new version\n const versionRes = await createVersionHelper(createVersion, projectName, {\n productId,\n taskId, // previous version could have a taskId or we are uploading on a task\n version: nextVersion,\n })\n\n await uploadReviewableFiles(files, versionRes.id)\n // The hook handles success callbacks, just reset our local state\n resetState()\n\n // update entity panel to focus the new version\n onVersionCreated?.(versionRes.id)\n } catch (error: any) {\n handleUploadError(error, 'uploading version')\n resetState()\n }\n }\n\n // once the file has been uploaded, we need to patch the entities with the new thumbnail\n const handleThumbnailFileUploaded = async (thumbnails: any[] = []) => {\n // always set isDragginle to false\n setIsDraggingFile(false)\n\n // check something was actually uploaded\n if (!entities.length) {\n return\n }\n\n // patching the updatedAt will force a refresh of the thumbnail url\n const newUpdatedAt = new Date().toISOString()\n\n let operations: Operation[] = []\n let versionPatches = []\n\n for (const entity of thumbnails) {\n const entityToPatch = entities.find((e) => e.id === entity.id)\n if (!entityToPatch) continue\n const thumbnailId = entity.thumbnailId\n const currentAssignees = entity.users || []\n\n operations.push({\n id: entityToPatch.id,\n projectName: entityToPatch.projectName,\n data: { updatedAt: newUpdatedAt },\n currentAssignees,\n })\n\n const versionPatch = {\n productId: entityToPatch.productId,\n versionUpdatedAt: newUpdatedAt,\n versionThumbnailId: thumbnailId,\n }\n\n versionPatches.push(versionPatch)\n }\n\n try {\n await updateEntities({ operations, entityType })\n onUploaded && onUploaded(operations)\n } catch (error) {\n console.error('Error uploading thumbnail:', error)\n }\n }\n\n const handleUploadThumbnail = async (file: File) => {\n if (!file) return resetState()\n\n try {\n // check file is an image\n if (!file.type.includes('image')) {\n throw new Error('File is not an image')\n }\n\n let promises = []\n for (const entity of entities) {\n const { id, entityType, projectName } = entity\n\n if (!projectName) throw new Error('Project name is required')\n\n const promise = axios.post(\n projectName && `/api/projects/${projectName}/${entityType}s/${id}/thumbnail`,\n file,\n {\n onUploadProgress: (e) => {\n setProgress(Math.round((100 * e.loaded) / (e.total || file.size)))\n },\n headers: {\n 'Content-Type': file.type,\n },\n },\n )\n\n promises.push(promise)\n }\n\n const res = await Promise.all(promises)\n\n const updatedEntities = res.map((res, i) => ({\n thumbnailId: res.data.id as string,\n id: entities[i].id,\n }))\n\n handleThumbnailFileUploaded(updatedEntities)\n resetState()\n } catch (error: any) {\n console.error(error)\n toast.error(error.message)\n resetState()\n }\n }\n\n const [updateEntities] = useUpdateEntitiesMutation()\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current++\n if (dragCounterRef.current === 1) {\n setIsDraggingFile(true)\n }\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current--\n if (dragCounterRef.current === 0) {\n setIsDraggingFile(false)\n setDraggingZone(null)\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current = 0\n setIsDraggingFile(false)\n setDraggingZone(null)\n\n if (!e.dataTransfer.files || e.dataTransfer.files.length === 0) {\n return\n }\n\n if (draggingZone === 'thumbnail') {\n setUploadingType('thumbnail')\n const file = e.dataTransfer.files[0]\n // try to upload the thumbnail\n handleUploadThumbnail(file)\n }\n\n if (draggingZone === 'version') {\n setUploadingType('version')\n const files = e.dataTransfer.files\n // try to upload the reviewables using the hook\n handleVersionUpload(files)\n }\n }\n\n // upload thumbnail from input (right click on thumbnail)\n const handleInputUpload = async (event: ChangeEvent<HTMLInputElement>, type: UploadType) => {\n const files = event.target.files\n if (!files || files.length === 0) {\n return\n }\n\n if (type === 'version') {\n setUploadingType('version')\n handleVersionUpload(files)\n }\n if (type === 'thumbnail') {\n setUploadingType('thumbnail')\n handleUploadThumbnail(files[0])\n }\n }\n\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n\n return (\n <ThumbnailUploadProvider\n entities={entities}\n handleThumbnailUpload={handleThumbnailFileUploaded}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={canUploadVersions ? versionsInputRef : undefined}\n >\n <Styled.DragAndDropWrapper\n className={clsx({ dragging: isDraggingFile })}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <ThumbnailWrapper>\n <div>{children}</div>\n </ThumbnailWrapper>\n {isDraggingFile && (\n <Styled.DropZones>\n {availableDropZones.map((zone) => (\n <Dropzone\n key={zone.id}\n id={zone.id}\n label={zone.label}\n icon={zone.icon}\n isActive={draggingZone === zone.id}\n onDragOver={() => setDraggingZone(zone.id)}\n onDragLeave={() => setDraggingZone(null)}\n />\n ))}\n </Styled.DropZones>\n )}\n {(uploadingType === 'thumbnail' || uploadingType === 'version') && (\n <Styled.DropZones>\n <Styled.UploadingProgress>\n <Styled.Progress\n style={{\n right: `${100 - progress}%`,\n }}\n />\n <span className=\"label\">{`Uploading ${uploadingType}...`}</span>\n </Styled.UploadingProgress>\n <Styled.CancelButton icon={'close'} variant=\"text\" onClick={resetState} />\n </Styled.DropZones>\n )}\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'thumbnail')}\n ref={thumbnailInputRef}\n />\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'version')}\n ref={versionsInputRef}\n />\n </Styled.DragAndDropWrapper>\n\n {/* Product creation dialog */}\n <EntityPanelUploaderDialog\n isOpen={showProductDialog}\n files={pendingFiles}\n onSubmit={handleDialogSubmit}\n onCancel={handleDialogCancel}\n />\n </ThumbnailUploadProvider>\n )\n}\n"],"names":["dropZones","EntityPanelUploader","children","entityType","entities","projectName","onUploaded","onVersionCreated","dispatch","useDetailsPanelContext","isDraggingFile","setIsDraggingFile","useState","draggingZone","setDraggingZone","dragCounterRef","useRef","uploadingType","setUploadingType","progress","setProgress","showProductDialog","setShowProductDialog","pendingFiles","setPendingFiles","singleEntity","taskId","folderId","productId","versionId","canUploadVersions","uploadReviewableFiles","useReviewablesUpload","availableDropZones","zone","resetState","handleDialogSubmit","productName","sanitizedName","sanitizeProductName","toast","productRes","createProductHelper","createProduct","uploadVersionWithProduct","error","handleUploadError","handleDialogCancel","createVersion","useCreateVersionMutation","useCreateProductMutation","handleVersionUpload","files","nextVersion","getNextVersionNumber","versionRes","createVersionHelper","handleThumbnailFileUploaded","thumbnails","newUpdatedAt","operations","entity","entityToPatch","e","currentAssignees","updateEntities","handleUploadThumbnail","file","promises","id","promise","axios","updatedEntities","res","i","useUpdateEntitiesMutation","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleInputUpload","event","type","thumbnailInputRef","versionsInputRef","jsxs","ThumbnailUploadProvider","Styled.DragAndDropWrapper","clsx","jsx","ThumbnailWrapper","Styled.DropZones","Dropzone","Styled.UploadingProgress","Styled.Progress","Styled.CancelButton","EntityPanelUploaderDialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EntityPanelUploader.es.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploader.tsx"],"sourcesContent":["import { ChangeEvent, useRef, useState } from 'react'\nimport clsx from 'clsx'\n\nimport { ThumbnailWrapper } from '@shared/containers'\nimport {\n useCreateVersionMutation,\n useUpdateEntitiesMutation,\n useCreateProductMutation,\n} from '@shared/api'\nimport * as Styled from './EntityPanelUploader.styled'\nimport { ThumbnailUploadProvider } from '../../context/ThumbnailUploaderContext'\nimport Dropzone, { DropzoneType } from './Dropzone'\nimport axios from 'axios'\nimport { toast } from 'react-toastify'\nimport { useReviewablesUpload } from '../ReviewablesList'\nimport { useDetailsPanelContext } from '@shared/context'\nimport EntityPanelUploaderDialog from './EntityPanelUploaderDialog'\nimport {\n sanitizeProductName,\n createProductHelper,\n createVersionHelper,\n getNextVersionNumber,\n handleUploadError,\n} from '@shared/util'\n\ntype Operation = {\n id: string\n projectName: string\n currentAssignees: any[]\n data: { updatedAt: string }\n}\nexport type EntityPanelUploaderProps = {\n entityType: string\n entities: any[]\n projectName: any\n children?: JSX.Element | JSX.Element[]\n onUploaded?: (operations: Operation[]) => void\n resetFileUploadState?: () => void\n onVersionCreated?: (versionId: string) => void\n}\n\ntype UploadType = 'thumbnail' | 'version'\nconst dropZones: (DropzoneType & { id: UploadType })[] = [\n { id: 'thumbnail', label: 'Upload thumbnail', icon: 'add_photo_alternate' },\n { id: 'version', label: 'Upload version', icon: 'layers' },\n]\n\nexport const EntityPanelUploader = ({\n children = [],\n entityType,\n entities = [],\n projectName,\n onUploaded,\n onVersionCreated,\n}: EntityPanelUploaderProps) => {\n const { dispatch } = useDetailsPanelContext()\n // Dragging and dropping state\n const [isDraggingFile, setIsDraggingFile] = useState(false)\n const [draggingZone, setDraggingZone] = useState<UploadType | null>(null)\n const dragCounterRef = useRef(0)\n\n // Uploading state\n const [uploadingType, setUploadingType] = useState<UploadType | null>(null)\n const [progress, setProgress] = useState(0)\n\n // Dialog state for product creation\n const [showProductDialog, setShowProductDialog] = useState(false)\n const [pendingFiles, setPendingFiles] = useState<FileList | null>(null)\n\n // Check if we have exactly one entity selected\n const singleEntity = entities.length === 1 ? entities[0] : null\n // extra all entity IDs for the single version entity\n const taskId: string | undefined = singleEntity?.task?.id\n const folderId: string | undefined = singleEntity?.folder?.id\n const productId: string | undefined = singleEntity?.product?.id\n const versionId: string | undefined = singleEntity?.id\n const canUploadVersions = Boolean(singleEntity && entityType !== 'representation')\n\n // Use the custom hook for reviewable upload logic (only when single version)\n const { handleFileUpload: uploadReviewableFiles } = useReviewablesUpload({\n projectName,\n versionId: versionId,\n taskId: taskId,\n folderId: folderId,\n productId: productId,\n dispatch,\n onUpload: () => {\n setUploadingType(null)\n setProgress(0)\n },\n onProgress: (progress) => {\n setProgress(progress)\n },\n })\n\n // Filter drop zones based on whether we can upload reviewables\n const availableDropZones = dropZones.filter((zone) => {\n if (zone.id === 'version') {\n return canUploadVersions\n }\n return true\n })\n\n const resetState = () => {\n setUploadingType(null)\n setIsDraggingFile(false)\n setDraggingZone(null)\n dragCounterRef.current = 0\n setProgress(0)\n setShowProductDialog(false)\n setPendingFiles(null)\n }\n\n // Handle dialog submission - create product and upload version\n const handleDialogSubmit = async (productName: string) => {\n if (!pendingFiles || !singleEntity) {\n setShowProductDialog(false)\n setPendingFiles(null)\n return\n }\n\n const sanitizedName = sanitizeProductName(productName)\n\n if (!sanitizedName.trim()) {\n toast.error(\n 'Product name must contain valid characters (letters, numbers, underscore, or hyphen)',\n )\n return\n }\n\n try {\n if (!folderId) {\n throw new Error('Folder ID is required to create a product')\n }\n setUploadingType('version')\n\n // Create the product\n const productRes = await createProductHelper(createProduct, projectName, {\n folderId: folderId,\n name: sanitizedName,\n productType: 'review', // default product type for uploaded files\n productBaseType: 'review',\n })\n\n // Close dialog and proceed with version upload\n setShowProductDialog(false)\n await uploadVersionWithProduct(pendingFiles, productRes.id)\n setPendingFiles(null)\n } catch (error: any) {\n handleUploadError(error, 'creating product')\n resetState()\n }\n }\n\n // Handle dialog cancellation\n const handleDialogCancel = () => {\n setShowProductDialog(false)\n setPendingFiles(null)\n resetState()\n }\n\n const [createVersion] = useCreateVersionMutation()\n const [createProduct] = useCreateProductMutation()\n // Handle version/reviewable file upload\n const handleVersionUpload = async (files: FileList) => {\n if (!canUploadVersions || !singleEntity) {\n toast.error('Please select exactly one version to upload reviewables')\n return resetState()\n }\n\n const productId = singleEntity.product?.id\n if (!productId) {\n // Show dialog to create product first\n setPendingFiles(files)\n setShowProductDialog(true)\n return\n }\n\n // If we have a productId, proceed with upload\n await uploadVersionWithProduct(files, productId)\n }\n\n // Helper function to handle the actual version upload\n const uploadVersionWithProduct = async (files: FileList, productId: string) => {\n try {\n const nextVersion = getNextVersionNumber(singleEntity!.product?.latestVersion)\n\n // create a new version\n const versionRes = await createVersionHelper(createVersion, projectName, {\n productId,\n taskId, // previous version could have a taskId or we are uploading on a task\n version: nextVersion,\n })\n\n await uploadReviewableFiles(files, versionRes.id)\n // The hook handles success callbacks, just reset our local state\n resetState()\n\n // update entity panel to focus the new version\n onVersionCreated?.(versionRes.id)\n } catch (error: any) {\n handleUploadError(error, 'uploading version')\n resetState()\n }\n }\n\n // once the file has been uploaded, we need to patch the entities with the new thumbnail\n const handleThumbnailFileUploaded = async (thumbnails: any[] = []) => {\n // always set isDragginle to false\n setIsDraggingFile(false)\n\n // check something was actually uploaded\n if (!entities.length) {\n return\n }\n\n // patching the updatedAt will force a refresh of the thumbnail url\n const newUpdatedAt = new Date().toISOString()\n\n let operations: Operation[] = []\n let versionPatches = []\n\n for (const entity of thumbnails) {\n const entityToPatch = entities.find((e) => e.id === entity.id)\n if (!entityToPatch) continue\n const thumbnailId = entity.thumbnailId\n const currentAssignees = entity.users || []\n\n operations.push({\n id: entityToPatch.id,\n projectName: entityToPatch.projectName,\n data: { updatedAt: newUpdatedAt },\n currentAssignees,\n })\n\n const versionPatch = {\n productId: entityToPatch.productId,\n versionUpdatedAt: newUpdatedAt,\n versionThumbnailId: thumbnailId,\n }\n\n versionPatches.push(versionPatch)\n }\n\n try {\n await updateEntities({ operations, entityType })\n onUploaded && onUploaded(operations)\n } catch (error) {\n console.error('Error uploading thumbnail:', error)\n }\n }\n\n const handleUploadThumbnail = async (file: File) => {\n if (!file) return resetState()\n\n try {\n // check file is an image\n if (!file.type.includes('image')) {\n throw new Error('File is not an image')\n }\n\n let promises = []\n for (const entity of entities) {\n const { id, entityType, projectName } = entity\n\n if (!projectName) throw new Error('Project name is required')\n\n const promise = axios.post(\n projectName && `/api/projects/${projectName}/${entityType}s/${id}/thumbnail`,\n file,\n {\n onUploadProgress: (e) => {\n setProgress(Math.round((100 * e.loaded) / (e.total || file.size)))\n },\n headers: {\n 'Content-Type': file.type,\n },\n },\n )\n\n promises.push(promise)\n }\n\n const res = await Promise.all(promises)\n\n const updatedEntities = res.map((res, i) => ({\n thumbnailId: res.data.id as string,\n id: entities[i].id,\n }))\n\n handleThumbnailFileUploaded(updatedEntities)\n resetState()\n } catch (error: any) {\n console.error(error)\n toast.error(error.message)\n resetState()\n }\n }\n\n const [updateEntities] = useUpdateEntitiesMutation()\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current++\n if (dragCounterRef.current === 1) {\n setIsDraggingFile(true)\n }\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current--\n if (dragCounterRef.current === 0) {\n setIsDraggingFile(false)\n setDraggingZone(null)\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current = 0\n setIsDraggingFile(false)\n setDraggingZone(null)\n\n if (!e.dataTransfer.files || e.dataTransfer.files.length === 0) {\n return\n }\n\n if (draggingZone === 'thumbnail') {\n setUploadingType('thumbnail')\n const file = e.dataTransfer.files[0]\n // try to upload the thumbnail\n handleUploadThumbnail(file)\n }\n\n if (draggingZone === 'version') {\n setUploadingType('version')\n const files = e.dataTransfer.files\n // try to upload the reviewables using the hook\n handleVersionUpload(files)\n }\n }\n\n // upload thumbnail from input (right click on thumbnail)\n const handleInputUpload = async (event: ChangeEvent<HTMLInputElement>, type: UploadType) => {\n const files = event.target.files\n if (!files || files.length === 0) {\n return\n }\n\n if (type === 'version') {\n setUploadingType('version')\n handleVersionUpload(files)\n }\n if (type === 'thumbnail') {\n setUploadingType('thumbnail')\n handleUploadThumbnail(files[0])\n }\n }\n\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n\n return (\n <ThumbnailUploadProvider\n entities={entities}\n handleThumbnailUpload={handleThumbnailFileUploaded}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={canUploadVersions ? versionsInputRef : undefined}\n >\n <Styled.DragAndDropWrapper\n className={clsx({ dragging: isDraggingFile })}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <ThumbnailWrapper>\n <div>{children}</div>\n </ThumbnailWrapper>\n {isDraggingFile && (\n <Styled.DropZones>\n {availableDropZones.map((zone) => (\n <Dropzone\n key={zone.id}\n id={zone.id}\n label={zone.label}\n icon={zone.icon}\n isActive={draggingZone === zone.id}\n onDragOver={() => setDraggingZone(zone.id)}\n onDragLeave={() => setDraggingZone(null)}\n />\n ))}\n </Styled.DropZones>\n )}\n {(uploadingType === 'thumbnail' || uploadingType === 'version') && (\n <Styled.DropZones>\n <Styled.UploadingProgress>\n <Styled.Progress\n style={{\n right: `${100 - progress}%`,\n }}\n />\n <span className=\"label\">{`Uploading ${uploadingType}...`}</span>\n </Styled.UploadingProgress>\n <Styled.CancelButton icon={'close'} variant=\"text\" onClick={resetState} />\n </Styled.DropZones>\n )}\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'thumbnail')}\n ref={thumbnailInputRef}\n />\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'version')}\n ref={versionsInputRef}\n />\n </Styled.DragAndDropWrapper>\n\n {/* Product creation dialog */}\n <EntityPanelUploaderDialog\n isOpen={showProductDialog}\n files={pendingFiles}\n onSubmit={handleDialogSubmit}\n onCancel={handleDialogCancel}\n />\n </ThumbnailUploadProvider>\n )\n}\n"],"names":["dropZones","EntityPanelUploader","children","entityType","entities","projectName","onUploaded","onVersionCreated","dispatch","useDetailsPanelContext","isDraggingFile","setIsDraggingFile","useState","draggingZone","setDraggingZone","dragCounterRef","useRef","uploadingType","setUploadingType","progress","setProgress","showProductDialog","setShowProductDialog","pendingFiles","setPendingFiles","singleEntity","taskId","folderId","productId","versionId","canUploadVersions","uploadReviewableFiles","useReviewablesUpload","availableDropZones","zone","resetState","handleDialogSubmit","productName","sanitizedName","sanitizeProductName","toast","productRes","createProductHelper","createProduct","uploadVersionWithProduct","error","handleUploadError","handleDialogCancel","createVersion","useCreateVersionMutation","useCreateProductMutation","handleVersionUpload","files","nextVersion","getNextVersionNumber","versionRes","createVersionHelper","handleThumbnailFileUploaded","thumbnails","newUpdatedAt","operations","entity","entityToPatch","e","currentAssignees","updateEntities","handleUploadThumbnail","file","promises","id","promise","axios","updatedEntities","res","i","useUpdateEntitiesMutation","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleInputUpload","event","type","thumbnailInputRef","versionsInputRef","jsxs","ThumbnailUploadProvider","Styled.DragAndDropWrapper","clsx","jsx","ThumbnailWrapper","Styled.DropZones","Dropzone","Styled.UploadingProgress","Styled.Progress","Styled.CancelButton","EntityPanelUploaderDialog"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const i=require("../../../../_virtual/jsx-runtime.cjs.js"),q=require("@ynput/ayon-react-components"),h=require("lodash"),t=require("react");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../AccessUser/AccessUser.cjs.js");require("clsx");require("../AttributeEditor/components/MinMaxField.cjs.js");require("react-dom");require("../EnumEditor/EnumEditor.styled.cjs.js");require("../Badge/Badge.cjs.js");require("../Chips/Chips.cjs.js");require("date-fns");require("../DateRangePicker/DateRangePicker.styled.cjs.js");require("../LinksManager/CellEditingDialog.cjs.js");require("react-toastify");require("../../../../_virtual/index.cjs.js");require("../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("uuid");require("../../util/pubsub.cjs.js");require("../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../DetailsPanelDetails/DetailsSection.cjs.js");require("../DetailsPanelDetails/FieldLabel.cjs.js");require("../DoneCheckbox/DoneCheckbox.cjs.js");require("../EarlyPreview/EarlyPreview.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../containers/Feed/context/FeedContext.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/SubtasksModulesContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");require("../../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../containers/Feed/components/ActivityDate.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("rehype-raw");require("../../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../containers/Feed/Feed.styled.cjs.js");require("../../containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../LinksManager/LinksManager.styled.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("../SearchFilter/filterDates.cjs.js");require("short-uuid");require("../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../containers/Slicer/components/Slicer.cjs.js");require("../../containers/Slicer/context/SlicerContext.cjs.js");require("../../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../PlayableIcon/PlayableIcon.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../containers/Actions/Actions.styled.cjs.js");require("../../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../containers/Actions/ActionIcon.cjs.js");require("../../containers/Views/context/ViewsContext.cjs.js");require("../../containers/Views/Views.styled.cjs.js");require("../../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../containers/Views/ViewsMenu/ViewsMenu.cjs.js");require("./EntityPanelUploader.styled.cjs.js");require("axios");require("../EntityPath/EntityPath.styled.cjs.js");require("../EntityPath/SegmentProvider.cjs.js");require("../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../Feedback/FeedbackContext.cjs.js");require("../Feedback/SupportBubble.cjs.js");require("../FileThumbnail/FileThumbnail.cjs.js");require("../LegacyBadge/LegacyBadge.cjs.js");require("../Powerpack/PowerpackButton.cjs.js");require("../Powerpack/PricingLink.cjs.js");require("../Powerpack/PowerpackDialog.styled.cjs.js");require("../Powerpack/CTAButton.cjs.js");require("../Powerpack/RequiredAddonVersion.cjs.js");require("../ProjectTableSettings/ProjectTableSettings.cjs.js");require("../SizeSlider/SizeSlider.cjs.js");require("../ReviewableCard/ReviewableCard.cjs.js");require("../ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../SettingsPanel/SettingsPanel.cjs.js");require("../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../SimpleFormDialog/SimpleFormDialog.cjs.js");require("../StyledLink/StyledLink.cjs.js");require("../TableGridSwitch/TableGridSwitch.cjs.js");require("../Thumbnail/Thumbnail.styled.cjs.js");require("../Thumbnail/StackedThumbnails.cjs.js");require("../ThumbnailSimple/ThumbnailSimple.cjs.js");require("../VersionUploader/components/UploadVersionDialog.cjs.js");require("../VersionUploader/context/VersionUploadContext.cjs.js");require("../Watchers/Watchers.cjs.js");require("../Menu/Menu.styled.cjs.js");require("../Menu/MenuItem.cjs.js");require("../ReviewablesSelector/ReviewablesSelector.styled.cjs.js");require("../ReviewablesList/ReviewablesList.styled.cjs.js");require("../ReviewablesList/ReviewablesUpload.styled.cjs.js");const E=require("../ReviewablesList/useReviewablesUpload.cjs.js"),f="review",g=n=>{if(!n)return"";const u=E.parseFilename(n.name).replace(/\.[^/.]+$/,""),s=h.camelCase(u),o=h.upperFirst(s);return`${f}${o}`},v=({files:n,isOpen:u,onCancel:s,onSubmit:o})=>{const a=g(n?.[0]),c=t.useRef(null),l=t.useRef(!1),[r,d]=t.useState(a);t.useEffect(()=>{d(a),l.current=!1},[a]),t.useEffect(()=>{if(u&&c.current&&r.startsWith(f)&&!l.current){c.current.focus();const e=f.length,j=r.length;c.current.setSelectionRange(e,j),l.current=!0}else u||(l.current=!1)},[u,r]);const p=()=>{r.trim()&&o&&o(r.trim())},x=()=>{d(a),s&&s()},m=r.trim().length>0,R=i.jsxRuntimeExports.jsxs("div",{style:{display:"flex",gap:"8px",justifyContent:"flex-end"},children:[i.jsxRuntimeExports.jsx(q.Button,{variant:"text",onClick:x,children:"Cancel"}),i.jsxRuntimeExports.jsx(q.Button,{variant:"filled",onClick:p,disabled:!m,children:"Upload"})]});return i.jsxRuntimeExports.jsx(q.Dialog,{isOpen:u,onClose:x,header:"Upload Entity",footer:R,size:"sm",children:i.jsxRuntimeExports.jsx("div",{style:{padding:"16px 0"},children:i.jsxRuntimeExports.jsx(q.FormRow,{label:"Product Name",children:i.jsxRuntimeExports.jsx(q.InputText,{ref:c,placeholder:"Enter product name...",value:r,onChange:e=>d(e.target.value),autoFocus:!0,onKeyDown:e=>{e.key==="Enter"&&m?(e.preventDefault(),p()):e.key==="Escape"&&(e.preventDefault(),x())}})})})})};module.exports=v;
|
|
1
|
+
"use strict";const i=require("../../../../_virtual/jsx-runtime.cjs.js"),q=require("@ynput/ayon-react-components"),h=require("lodash"),t=require("react");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/products/getFolderProducts.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/teams/getTeams.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../AccessUser/AccessUser.cjs.js");require("clsx");require("../AttributeEditor/components/MinMaxField.cjs.js");require("react-dom");require("../EnumEditor/EnumEditor.styled.cjs.js");require("../AttributeEditor/attributeTypeMap.cjs.js");require("../Badge/Badge.cjs.js");require("../Chips/Chips.cjs.js");require("date-fns");require("../DateRangePicker/DateRangePicker.styled.cjs.js");require("../LinksManager/CellEditingDialog.cjs.js");require("react-toastify");require("../../../../_virtual/index.cjs.js");require("../../../../node_modules/refractor/lib/common.cjs.js");require("../../../../node_modules/refractor/lib/all.cjs.js");;/* empty css */require("uuid");require("../../util/pubsub.cjs.js");require("../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../DetailsPanelDetails/DetailsSection.cjs.js");require("../DetailsPanelDetails/FieldLabel.cjs.js");require("../DoneCheckbox/DoneCheckbox.cjs.js");require("../EarlyPreview/EarlyPreview.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");require("../../containers/ContextMenu/ContextMenuContext.cjs.js");;/* empty css */require("../../containers/Feed/context/FeedContext.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltipItem.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/TeamTooltip/TeamTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/SubtasksModulesContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("../../context/pip/PiPWrapper.cjs.js");require("../../context/AddonProjectContext.cjs.js");require("../../context/AddonContext.cjs.js");require("../../context/PowerpackContext.cjs.js");require("../../context/MoveEntityContext.cjs.js");require("../../context/MenuContext.cjs.js");require("../../context/WebsocketContext.cjs.js");require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");require("../../containers/Feed/components/FileUploadPreview/FileUploadPreview.styled.cjs.js");require("../../containers/Feed/components/FileUploadPreview/Mimes/TextMime.cjs.js");require("react-markdown");require("remark-emoji");require("remark-gfm");require("remark-directive");require("remark-directive-rehype");require("../../containers/Feed/components/CommentInput/CommentInput.cjs.js");require("../../containers/Feed/components/ReactionContainer/Reactions.styled.cjs.js");require("../../containers/Feed/components/FilesGrid/FilesGrid.styled.cjs.js");require("../../containers/Feed/components/FileUploadCard/FileUploadCard.styled.cjs.js");require("../../containers/Feed/components/CommentInput/quillToMarkdown.cjs.js");require("../../containers/Feed/components/ActivityComment/ActivityComment.styled.cjs.js");require("../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");require("react-router-dom");require("../../containers/Feed/components/ActivityStatus/ActivityStatus.cjs.js");require("../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.cjs.js");require("../../containers/Feed/components/ActivityDate.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");require("rehype-raw");require("../../containers/Feed/components/ActivityStatusChange/ActivityStatusChange.styled.cjs.js");require("../../containers/Feed/components/ActivityAssigneeChange/ActivityAssigneeChange.styled.cjs.js");require("../../containers/Feed/components/ActivityVersions/ActivityVersions.styled.cjs.js");require("../../containers/Feed/components/ActivityGroup/ActivityGroup.styled.cjs.js");require("../../containers/Feed/Feed.styled.cjs.js");require("../../containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/ActivityCategorySelect.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryDropdownItem.cjs.js");require("@tanstack/react-virtual");require("@tanstack/react-table");require("../../containers/ProjectTreeTable/widgets/CollapsedWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/DateWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EnumWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js");require("../../containers/ProjectTreeTable/widgets/TextWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/CellWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/GroupHeaderWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ThumbnailWidget.cjs.js");require("../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../LinksManager/LinksManager.styled.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableContext.cjs.js");require("../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("../SearchFilter/filterDates.cjs.js");require("short-uuid");require("../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../containers/ProjectTreeTable/context/ClipboardContext.cjs.js");require("../../containers/ProjectTreeTable/context/ColumnSettingsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectDataContext.cjs.js");require("../../../../_virtual/runtime.cjs.js");require("../../../../_virtual/semver.cjs.js");require("react-redux");require("custom-protocol-check");require("../../containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js");require("../../containers/ProjectTreeTable/ProjectTreeTable.styled.cjs.js");require("../../containers/ProjectTreeTable/components/SelectionCell.cjs.js");require("../../containers/ProjectTreeTable/components/RowSelectionHeader.cjs.js");require("../../containers/ProjectTreeTable/widgets/LoadMoreWidget.cjs.js");require("../../containers/ProjectTreeTable/components/HeaderActionButton.cjs.js");require("../../containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js");require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../../containers/Slicer/components/Slicer.cjs.js");require("../../containers/Slicer/context/SlicerContext.cjs.js");require("../../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.styled.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../PlayableIcon/PlayableIcon.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.styled.cjs.js");require("../../containers/Actions/Actions.styled.cjs.js");require("../../containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js");require("../../containers/Actions/ActionIcon.cjs.js");require("../../containers/Views/context/ViewsContext.cjs.js");require("../../containers/Views/Views.styled.cjs.js");require("../../containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js");require("../../containers/Views/ViewsMenu/ViewsMenu.cjs.js");require("./EntityPanelUploader.styled.cjs.js");require("axios");require("../EntityPath/EntityPath.styled.cjs.js");require("../EntityPath/SegmentProvider.cjs.js");require("../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../Feedback/FeedbackContext.cjs.js");require("../Feedback/SupportBubble.cjs.js");require("../FileThumbnail/FileThumbnail.cjs.js");require("../LegacyBadge/LegacyBadge.cjs.js");require("../Powerpack/PowerpackButton.cjs.js");require("../Powerpack/PricingLink.cjs.js");require("../Powerpack/PowerpackDialog.styled.cjs.js");require("../Powerpack/CTAButton.cjs.js");require("../Powerpack/RequiredAddonVersion.cjs.js");require("../ProjectTableSettings/ProjectTableSettings.cjs.js");require("../SizeSlider/SizeSlider.cjs.js");require("../ReviewableCard/ReviewableCard.cjs.js");require("../ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../SettingsPanel/SettingsPanel.cjs.js");require("../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../SimpleFormDialog/SimpleFormDialog.cjs.js");require("../StyledLink/StyledLink.cjs.js");require("../TableGridSwitch/TableGridSwitch.cjs.js");require("../Thumbnail/Thumbnail.styled.cjs.js");require("../Thumbnail/StackedThumbnails.cjs.js");require("../ThumbnailSimple/ThumbnailSimple.cjs.js");require("../VersionUploader/components/UploadVersionDialog.cjs.js");require("../VersionUploader/context/VersionUploadContext.cjs.js");require("../Watchers/Watchers.cjs.js");require("../Menu/Menu.styled.cjs.js");require("../Menu/MenuItem.cjs.js");require("../ReviewablesSelector/ReviewablesSelector.styled.cjs.js");require("../ReviewablesList/ReviewablesList.styled.cjs.js");require("../ReviewablesList/ReviewablesUpload.styled.cjs.js");const E=require("../ReviewablesList/useReviewablesUpload.cjs.js"),f="review",g=n=>{if(!n)return"";const u=E.parseFilename(n.name).replace(/\.[^/.]+$/,""),s=h.camelCase(u),o=h.upperFirst(s);return`${f}${o}`},v=({files:n,isOpen:u,onCancel:s,onSubmit:o})=>{const a=g(n?.[0]),c=t.useRef(null),l=t.useRef(!1),[r,d]=t.useState(a);t.useEffect(()=>{d(a),l.current=!1},[a]),t.useEffect(()=>{if(u&&c.current&&r.startsWith(f)&&!l.current){c.current.focus();const e=f.length,j=r.length;c.current.setSelectionRange(e,j),l.current=!0}else u||(l.current=!1)},[u,r]);const p=()=>{r.trim()&&o&&o(r.trim())},x=()=>{d(a),s&&s()},m=r.trim().length>0,R=i.jsxRuntimeExports.jsxs("div",{style:{display:"flex",gap:"8px",justifyContent:"flex-end"},children:[i.jsxRuntimeExports.jsx(q.Button,{variant:"text",onClick:x,children:"Cancel"}),i.jsxRuntimeExports.jsx(q.Button,{variant:"filled",onClick:p,disabled:!m,children:"Upload"})]});return i.jsxRuntimeExports.jsx(q.Dialog,{isOpen:u,onClose:x,header:"Upload Entity",footer:R,size:"sm",children:i.jsxRuntimeExports.jsx("div",{style:{padding:"16px 0"},children:i.jsxRuntimeExports.jsx(q.FormRow,{label:"Product Name",children:i.jsxRuntimeExports.jsx(q.InputText,{ref:c,placeholder:"Enter product name...",value:r,onChange:e=>d(e.target.value),autoFocus:!0,onKeyDown:e=>{e.key==="Enter"&&m?(e.preventDefault(),p()):e.key==="Escape"&&(e.preventDefault(),x())}})})})})};module.exports=v;
|
|
2
2
|
//# sourceMappingURL=EntityPanelUploaderDialog.cjs.js.map
|
|
@@ -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":"
|
|
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
|
-
},
|
|
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
|
-
|
|
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":"
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAMA,IAAS,UACTC,IAAmB,CAACC,MAAuB;AAK/C,MAAI,CAACA,EAAM,QAAO;AAClB,QAAMC,IAAOC,EAAcF,EAAK,IAAI,EAAE,QAAQ,aAAa,EAAE,GACvDG,IAAgBC,EAAUH,CAAI,GAC9BI,IAAiBC,EAAWH,CAAa;AAC/C,SAAO,GAAGL,CAAM,GAAGO,CAAc;AACnC,GAUME,KAAgE,CAAC;AAAA,EACrE,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AAEJ,QAAMC,IAAqBb,EAAiBS,IAAQ,CAAC,CAAC,GAChDK,IAAWC,EAAyB,IAAI,GACxCC,IAAiBD,EAAO,EAAK,GAE7B,CAACE,GAASC,CAAU,IAAIC,EAASN,CAAkB;AAGzD,EAAAO,EAAU,MAAM;AACd,IAAAF,EAAWL,CAAkB,GAC7BG,EAAe,UAAU;AAAA,EAC3B,GAAG,CAACH,CAAkB,CAAC,GAGvBO,EAAU,MAAM;AACd,QAAIV,KAAUI,EAAS,WAAWG,EAAQ,WAAWlB,CAAM,KAAK,CAACiB,EAAe,SAAS;AAEvF,MAAAF,EAAS,QAAQ,MAAA;AAEjB,YAAMO,IAAiBtB,EAAO,QACxBuB,IAAeL,EAAQ;AAC7B,MAAAH,EAAS,QAAQ,kBAAkBO,GAAgBC,CAAY,GAC/DN,EAAe,UAAU;AAAA,IAC3B,MAAA,CAAYN,MACVM,EAAe,UAAU;AAAA,EAE7B,GAAG,CAACN,GAAQO,CAAO,CAAC;AAEpB,QAAMM,IAAe,MAAM;AACzB,IAAIN,EAAQ,KAAA,KAAUL,KACpBA,EAASK,EAAQ,MAAM;AAAA,EAE3B,GAEMO,IAAe,MAAM;AACzB,IAAAN,EAAWL,CAAkB,GACzBF,KACFA,EAAA;AAAA,EAEJ,GAEMc,IAAiBR,EAAQ,KAAA,EAAO,SAAS,GAEzCS,IACJC,gBAAAA,EAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,OAAO,gBAAgB,WAAA,GACzD,UAAA;AAAA,IAAAC,gBAAAA,MAACC,GAAA,EAAO,SAAQ,QAAO,SAASL,GAAc,UAAA,UAE9C;AAAA,IACAI,gBAAAA,EAAAA,IAACC,KAAO,SAAQ,UAAS,SAASN,GAAc,UAAU,CAACE,GAAgB,UAAA,SAAA,CAE3E;AAAA,EAAA,GACF;AAGF,SACEG,gBAAAA,MAACE,KAAO,QAAApB,GAAgB,SAASc,GAAc,QAAO,iBAAgB,QAAAE,GAAgB,MAAK,MACzF,gCAAC,OAAA,EAAI,OAAO,EAAE,SAAS,SAAA,GACrB,UAAAE,gBAAAA,EAAAA,IAACG,GAAA,EAAQ,OAAM,gBACb,UAAAH,gBAAAA,EAAAA;AAAAA,IAACI;AAAA,IAAA;AAAA,MACC,KAAKlB;AAAA,MACL,aAAY;AAAA,MACZ,OAAOG;AAAA,MACP,UAAU,CAACgB,MAAMf,EAAWe,EAAE,OAAO,KAAK;AAAA,MAC1C,WAAS;AAAA,MACT,WAAW,CAACA,MAAM;AAChB,QAAIA,EAAE,QAAQ,WAAWR,KACvBQ,EAAE,eAAA,GACFV,EAAA,KACSU,EAAE,QAAQ,aACnBA,EAAE,eAAA,GACFT,EAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA,EACF,CACF,GACF,GACF;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const l=require("../../../../_virtual/jsx-runtime.cjs.js"),i=require("react"),R=require("lodash"),r=require("./EnumEditor.styled.cjs.js"),c=require("clsx"),
|
|
1
|
+
"use strict";const l=require("../../../../_virtual/jsx-runtime.cjs.js"),i=require("react"),R=require("lodash"),r=require("./EnumEditor.styled.cjs.js"),c=require("clsx"),P=({item:u,onChange:a,onCommit:t,onRemove:N,onDuplicate:w,showRemoveButton:d=!0,showDuplicateButton:E=!0,autoFocus:o=!1,isExpanded:p=!0,className:y,pt:s,...h})=>{const{label:g,value:m,icon:n,color:x,isNewAttribute:j}=u,v=i.useRef(null),b=i.useRef(null),f=i.useRef(null),k=i.useRef(null);return i.useEffect(()=>{(o||u.isNewAttribute)&&v.current?.select()},[o,u.isNewAttribute]),i.useEffect(()=>{p&&!o&&!u.isNewAttribute&&setTimeout(()=>v.current?.focus(),250)},[p,o,u.isNewAttribute]),l.jsxRuntimeExports.jsxs(r.EnumItemBody,{...s?.wrapper,...h,className:c(y,s?.wrapper?.className,{expanded:p,collapsed:!p}),children:[l.jsxRuntimeExports.jsxs(r.Row,{...s?.label?.wrapper,children:[l.jsxRuntimeExports.jsx(r.Label,{...s?.label?.label,children:"Label"}),l.jsxRuntimeExports.jsx(r.InputText,{ref:v,value:g,autoFocus:o||j,...s?.label?.input,className:c(s?.label?.input?.className),onChange:e=>{if(!j)return a&&a(["label"],[e.target.value]);b.current&&(b.current.value=R.kebabCase(e.target.value)),a&&a(["label","value"],[e.target.value,R.kebabCase(e.target.value)])},onBlur:e=>{j?t&&t(["label","value"],[e.target.value,R.kebabCase(e.target.value)]):t&&t(["label"],[e.target.value])},onKeyDown:e=>{e.key==="Enter"&&(e.stopPropagation(),j?t&&t(["label","value"],[e.target.value,R.kebabCase(e.target.value)]):t&&t(["label"],[e.target.value]))},placeholder:"Enter label"})]},"label"),l.jsxRuntimeExports.jsxs(r.Row,{...s?.value?.wrapper,children:[l.jsxRuntimeExports.jsx(r.Label,{...s?.value?.label,children:"Value"}),l.jsxRuntimeExports.jsx(r.InputText,{ref:b,value:b.current?.value||m,...s?.value?.input,className:c(s?.value?.input?.className),onChange:e=>a&&a(["value"],[e.target.value]),onBlur:e=>t&&t(["value"],[e.target.value]),onKeyDown:e=>{e.key==="Enter"&&(e.stopPropagation(),t&&t(["value"],[e.target.value]))},placeholder:"Enter value"})]},"value"),l.jsxRuntimeExports.jsxs(r.Row,{...s?.icon?.wrapper,children:[l.jsxRuntimeExports.jsx(r.Label,{...s?.icon?.label,children:"Icon"}),l.jsxRuntimeExports.jsxs(r.PlaceholderWrapper,{style:{position:"relative"},children:[l.jsxRuntimeExports.jsx(r.Placeholder,{style:{display:n?"none":"flex"},onClick:()=>{k.current?.open()},children:"Pick an icon..."}),l.jsxRuntimeExports.jsx(r.IconSelect,{ref:k,value:[n||"question_mark"],widthExpand:!0,...s?.icon?.input,className:c(s?.icon?.input?.className),style:{position:n?"relative":"absolute",visibility:n?"visible":"hidden",...s?.icon?.input?.style},onChange:e=>{a&&a(["icon"],[e[0]]),t&&t(["icon"],[e[0]])}}),n&&l.jsxRuntimeExports.jsx(r.Button,{icon:"close",variant:"text",onClick:()=>{a&&a(["icon"],[void 0])}})]})]},"icon"),l.jsxRuntimeExports.jsxs(r.Row,{...s?.color?.wrapper,children:[l.jsxRuntimeExports.jsx(r.Label,{...s?.color?.label,children:"Color"}),l.jsxRuntimeExports.jsxs(r.PlaceholderWrapper,{style:{position:"relative"},children:[l.jsxRuntimeExports.jsxs(r.ColorPicker,{className:x?"active":"",style:{backgroundColor:x||void 0},onClick:()=>f.current?.click(),children:[x?"":"Pick a color...",l.jsxRuntimeExports.jsx("input",{type:"color",ref:f,value:x||"#000000",...s?.color?.input,className:c(s?.color?.input?.className),onChange:e=>{a&&a(["color"],[e?.target.value.toString()]),t&&t(["color"],[e?.target.value.toString()])}})]}),x&&l.jsxRuntimeExports.jsx(r.Button,{icon:"close",variant:"text",onClick:()=>{a&&a(["color"],[void 0])}})]})]},"color"),(d||E)&&l.jsxRuntimeExports.jsxs(r.Row,{...s?.footer,className:c("footer",s?.footer?.className),children:[d&&l.jsxRuntimeExports.jsx(r.ActionWrapper,{children:l.jsxRuntimeExports.jsx(r.Button,{icon:"close",variant:"text",onClick:N,children:"Remove"})}),E&&l.jsxRuntimeExports.jsx(r.ActionWrapper,{children:l.jsxRuntimeExports.jsx(r.Button,{icon:"content_copy",variant:"text",onClick:w,children:"Duplicate"})})]})]})};module.exports=P;
|
|
2
2
|
//# sourceMappingURL=EnumEditorItem.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumEditorItem.cjs.js","sources":["../../../../../src/components/EnumEditor/EnumEditorItem.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { kebabCase } from 'lodash'\n\nimport { DropdownRef, Icon } from '@ynput/ayon-react-components'\n\nimport * as Styled from './EnumEditor.styled'\nimport { AttributeData } from './EnumEditor'\nimport clsx from 'clsx'\n\ntype DivPt = Partial<React.HTMLAttributes<HTMLDivElement>>\n\ntype TextInputPt = Partial<React.ComponentProps<typeof Styled.InputText>>\ntype IconInputPt = Partial<React.ComponentProps<typeof Styled.IconSelect>>\ntype ColorInputPt = Partial<React.InputHTMLAttributes<HTMLInputElement>>\n\nexport interface EnumEditorFieldPt<TInput> {\n wrapper?: DivPt\n label?: DivPt\n input?: Partial<TInput>\n}\n\nexport interface EnumEditorItemPt {\n wrapper?: DivPt\n label?: EnumEditorFieldPt<TextInputPt>\n value?: EnumEditorFieldPt<TextInputPt>\n icon?: EnumEditorFieldPt<IconInputPt>\n color?: EnumEditorFieldPt<ColorInputPt>\n footer?: DivPt\n}\n\nexport interface EnumEditorItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n item: AttributeData\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 showRemoveButton?: boolean\n showDuplicateButton?: boolean\n autoFocus?: boolean\n isExpanded?: boolean\n pt?: EnumEditorItemPt\n}\n\nconst EnumEditorItem = ({\n item,\n onChange,\n onCommit,\n onRemove,\n onDuplicate,\n showRemoveButton = true,\n showDuplicateButton = true,\n autoFocus = false,\n isExpanded = true,\n className,\n pt,\n ...props\n}: EnumEditorItemProps) => {\n const { label, value, icon, color, isNewAttribute } = item\n const labelRef = useRef<HTMLInputElement>(null)\n const valueRef = useRef<HTMLInputElement>(null)\n const colorPickerRef = useRef<HTMLInputElement>(null)\n const iconSelectRef = useRef<DropdownRef>(null)\n\n useEffect(() => {\n if (autoFocus || item.isNewAttribute) {\n labelRef.current?.select()\n }\n }, [autoFocus, item.isNewAttribute])\n\n // Handle focus when item becomes expanded\n useEffect(() => {\n if (isExpanded && !autoFocus && !item.isNewAttribute) {\n // Avoids jittery expand animation\n setTimeout(() => labelRef.current?.focus(), 250)\n }\n }, [isExpanded, autoFocus, item.isNewAttribute])\n\n return (\n <Styled.EnumItemBody\n {...pt?.wrapper}\n {...props}\n className={clsx(className, pt?.wrapper?.className, {\n expanded: isExpanded,\n collapsed: !isExpanded,\n })}\n >\n <Styled.Row key=\"label\" {...pt?.label?.wrapper}>\n <Styled.Label {...pt?.label?.label}>Label</Styled.Label>\n <Styled.InputText\n ref={labelRef}\n value={label}\n autoFocus={autoFocus || isNewAttribute}\n {...pt?.label?.input}\n className={clsx(pt?.label?.input?.className)}\n onChange={(event) => {\n if (!isNewAttribute) {\n return onChange && onChange(['label'], [event.target.value])\n }\n if (valueRef.current) {\n valueRef.current.value = kebabCase(event.target.value)\n }\n onChange &&\n onChange(['label', 'value'], [event.target.value, kebabCase(event.target.value)])\n }}\n onBlur={(event) => {\n if (!isNewAttribute) {\n onCommit && onCommit(['label'], [event.target.value])\n } else {\n onCommit &&\n onCommit(['label', 'value'], [event.target.value, kebabCase(event.target.value)])\n }\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n if (!isNewAttribute) {\n onCommit && onCommit(['label'], [(event.target as HTMLInputElement).value])\n } else {\n onCommit &&\n onCommit(\n ['label', 'value'],\n [\n (event.target as HTMLInputElement).value,\n kebabCase((event.target as HTMLInputElement).value),\n ],\n )\n }\n }\n }}\n placeholder=\"Enter label\"\n />\n </Styled.Row>\n\n <Styled.Row key=\"value\" {...pt?.value?.wrapper}>\n <Styled.Label {...pt?.value?.label}>Value</Styled.Label>\n <Styled.InputText\n ref={valueRef}\n value={valueRef.current?.value || value}\n {...pt?.value?.input}\n className={clsx(pt?.value?.input?.className)}\n onChange={(event) => onChange && onChange(['value'], [event.target.value])}\n onBlur={(event) => onCommit && onCommit(['value'], [event.target.value])}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n onCommit && onCommit(['value'], [(event.target as HTMLInputElement).value])\n }\n }}\n placeholder=\"Enter value\"\n />\n </Styled.Row>\n\n <Styled.Row key=\"icon\" {...pt?.icon?.wrapper}>\n <Styled.Label {...pt?.icon?.label}>Icon</Styled.Label>\n\n <Styled.PlaceholderWrapper style={{ position: 'relative' }}>\n <Styled.Placeholder\n style={{ display: icon ? 'none' : 'flex' }}\n onClick={() => {\n iconSelectRef.current?.open()\n }}\n >\n Pick an icon...\n </Styled.Placeholder>\n\n <Styled.IconSelect\n ref={iconSelectRef}\n value={[icon || 'question_mark']}\n widthExpand\n {...pt?.icon?.input}\n className={clsx(pt?.icon?.input?.className)}\n style={{\n position: icon ? 'relative' : 'absolute',\n visibility: icon ? 'visible' : 'hidden',\n ...pt?.icon?.input?.style,\n }}\n onChange={(value) => {\n onChange && onChange(['icon'], [value[0]])\n onCommit && onCommit(['icon'], [value[0]])\n }}\n />\n {icon && (\n <Styled.Button\n icon=\"close\"\n variant=\"text\"\n onClick={() => {\n onChange && onChange(['icon'], [undefined])\n }}\n />\n )}\n </Styled.PlaceholderWrapper>\n </Styled.Row>\n\n <Styled.Row key=\"color\" {...pt?.color?.wrapper}>\n <Styled.Label {...pt?.color?.label}>Color</Styled.Label>\n\n <Styled.PlaceholderWrapper style={{ position: 'relative' }}>\n <Styled.ColorPicker\n className={color ? 'active' : ''}\n style={{ backgroundColor: color || undefined }}\n onClick={() => colorPickerRef.current?.click()}\n >\n {!color ? 'Pick a color...' : ''}\n <input\n type=\"color\"\n ref={colorPickerRef}\n value={color || '#000000'}\n {...pt?.color?.input}\n className={clsx(pt?.color?.input?.className)}\n onChange={(event) => {\n onChange && onChange(['color'], [event?.target.value.toString()])\n onCommit && onCommit(['color'], [event?.target.value.toString()])\n }}\n />\n </Styled.ColorPicker>\n {color && (\n <Styled.Button\n icon=\"close\"\n variant=\"text\"\n onClick={() => {\n onChange && onChange(['color'], [undefined])\n }}\n />\n )}\n </Styled.PlaceholderWrapper>\n </Styled.Row>\n\n {(showRemoveButton || showDuplicateButton) && (\n <Styled.Row {...pt?.footer} className={clsx('footer', pt?.footer?.className)}>\n {showRemoveButton && (\n <Styled.ActionWrapper>\n <Styled.Button icon=\"close\" variant=\"text\" onClick={onRemove}>\n Remove\n </Styled.Button>\n </Styled.ActionWrapper>\n )}\n {showDuplicateButton && (\n <Styled.ActionWrapper>\n <Styled.Button icon=\"content_copy\" variant=\"text\" onClick={onDuplicate}>\n Duplicate\n </Styled.Button>\n </Styled.ActionWrapper>\n )}\n </Styled.Row>\n )}\n </Styled.EnumItemBody>\n )\n}\n\nexport default EnumEditorItem\n"],"names":["EnumEditorItem","item","onChange","onCommit","onRemove","onDuplicate","showRemoveButton","showDuplicateButton","autoFocus","isExpanded","className","pt","props","label","value","icon","color","isNewAttribute","labelRef","useRef","valueRef","colorPickerRef","iconSelectRef","useEffect","jsxs","Styled.EnumItemBody","clsx","Styled.Row","jsx","Styled.Label","Styled.InputText","event","kebabCase","Styled.PlaceholderWrapper","Styled.Placeholder","Styled.IconSelect","Styled.Button","Styled.ColorPicker","Styled.ActionWrapper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EnumEditorItem.cjs.js","sources":["../../../../../src/components/EnumEditor/EnumEditorItem.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react'\nimport { kebabCase } from 'lodash'\n\nimport { DropdownRef, Icon } from '@ynput/ayon-react-components'\n\nimport * as Styled from './EnumEditor.styled'\nimport { AttributeData } from './EnumEditor'\nimport clsx from 'clsx'\n\ntype DivPt = Partial<React.HTMLAttributes<HTMLDivElement>>\n\ntype TextInputPt = Partial<React.ComponentProps<typeof Styled.InputText>>\ntype IconInputPt = Partial<React.ComponentProps<typeof Styled.IconSelect>>\ntype ColorInputPt = Partial<React.InputHTMLAttributes<HTMLInputElement>>\n\nexport interface EnumEditorFieldPt<TInput> {\n wrapper?: DivPt\n label?: DivPt\n input?: Partial<TInput>\n}\n\nexport interface EnumEditorItemPt {\n wrapper?: DivPt\n label?: EnumEditorFieldPt<TextInputPt>\n value?: EnumEditorFieldPt<TextInputPt>\n icon?: EnumEditorFieldPt<IconInputPt>\n color?: EnumEditorFieldPt<ColorInputPt>\n footer?: DivPt\n}\n\nexport interface EnumEditorItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n item: AttributeData\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 showRemoveButton?: boolean\n showDuplicateButton?: boolean\n autoFocus?: boolean\n isExpanded?: boolean\n pt?: EnumEditorItemPt\n}\n\nconst EnumEditorItem = ({\n item,\n onChange,\n onCommit,\n onRemove,\n onDuplicate,\n showRemoveButton = true,\n showDuplicateButton = true,\n autoFocus = false,\n isExpanded = true,\n className,\n pt,\n ...props\n}: EnumEditorItemProps) => {\n const { label, value, icon, color, isNewAttribute } = item\n const labelRef = useRef<HTMLInputElement>(null)\n const valueRef = useRef<HTMLInputElement>(null)\n const colorPickerRef = useRef<HTMLInputElement>(null)\n const iconSelectRef = useRef<DropdownRef>(null)\n\n useEffect(() => {\n if (autoFocus || item.isNewAttribute) {\n labelRef.current?.select()\n }\n }, [autoFocus, item.isNewAttribute])\n\n // Handle focus when item becomes expanded\n useEffect(() => {\n if (isExpanded && !autoFocus && !item.isNewAttribute) {\n // Avoids jittery expand animation\n setTimeout(() => labelRef.current?.focus(), 250)\n }\n }, [isExpanded, autoFocus, item.isNewAttribute])\n\n return (\n <Styled.EnumItemBody\n {...pt?.wrapper}\n {...props}\n className={clsx(className, pt?.wrapper?.className, {\n expanded: isExpanded,\n collapsed: !isExpanded,\n })}\n >\n <Styled.Row key=\"label\" {...pt?.label?.wrapper}>\n <Styled.Label {...pt?.label?.label}>Label</Styled.Label>\n <Styled.InputText\n ref={labelRef}\n value={label}\n autoFocus={autoFocus || isNewAttribute}\n {...pt?.label?.input}\n className={clsx(pt?.label?.input?.className)}\n onChange={(event) => {\n if (!isNewAttribute) {\n return onChange && onChange(['label'], [event.target.value])\n }\n if (valueRef.current) {\n valueRef.current.value = kebabCase(event.target.value)\n }\n onChange &&\n onChange(['label', 'value'], [event.target.value, kebabCase(event.target.value)])\n }}\n onBlur={(event) => {\n if (!isNewAttribute) {\n onCommit && onCommit(['label'], [event.target.value])\n } else {\n onCommit &&\n onCommit(['label', 'value'], [event.target.value, kebabCase(event.target.value)])\n }\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.stopPropagation()\n if (!isNewAttribute) {\n onCommit && onCommit(['label'], [(event.target as HTMLInputElement).value])\n } else {\n onCommit &&\n onCommit(\n ['label', 'value'],\n [\n (event.target as HTMLInputElement).value,\n kebabCase((event.target as HTMLInputElement).value),\n ],\n )\n }\n }\n }}\n placeholder=\"Enter label\"\n />\n </Styled.Row>\n\n <Styled.Row key=\"value\" {...pt?.value?.wrapper}>\n <Styled.Label {...pt?.value?.label}>Value</Styled.Label>\n <Styled.InputText\n ref={valueRef}\n value={valueRef.current?.value || value}\n {...pt?.value?.input}\n className={clsx(pt?.value?.input?.className)}\n onChange={(event) => onChange && onChange(['value'], [event.target.value])}\n onBlur={(event) => onCommit && onCommit(['value'], [event.target.value])}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n event.stopPropagation()\n onCommit && onCommit(['value'], [(event.target as HTMLInputElement).value])\n }\n }}\n placeholder=\"Enter value\"\n />\n </Styled.Row>\n\n <Styled.Row key=\"icon\" {...pt?.icon?.wrapper}>\n <Styled.Label {...pt?.icon?.label}>Icon</Styled.Label>\n\n <Styled.PlaceholderWrapper style={{ position: 'relative' }}>\n <Styled.Placeholder\n style={{ display: icon ? 'none' : 'flex' }}\n onClick={() => {\n iconSelectRef.current?.open()\n }}\n >\n Pick an icon...\n </Styled.Placeholder>\n\n <Styled.IconSelect\n ref={iconSelectRef}\n value={[icon || 'question_mark']}\n widthExpand\n {...pt?.icon?.input}\n className={clsx(pt?.icon?.input?.className)}\n style={{\n position: icon ? 'relative' : 'absolute',\n visibility: icon ? 'visible' : 'hidden',\n ...pt?.icon?.input?.style,\n }}\n onChange={(value) => {\n onChange && onChange(['icon'], [value[0]])\n onCommit && onCommit(['icon'], [value[0]])\n }}\n />\n {icon && (\n <Styled.Button\n icon=\"close\"\n variant=\"text\"\n onClick={() => {\n onChange && onChange(['icon'], [undefined])\n }}\n />\n )}\n </Styled.PlaceholderWrapper>\n </Styled.Row>\n\n <Styled.Row key=\"color\" {...pt?.color?.wrapper}>\n <Styled.Label {...pt?.color?.label}>Color</Styled.Label>\n\n <Styled.PlaceholderWrapper style={{ position: 'relative' }}>\n <Styled.ColorPicker\n className={color ? 'active' : ''}\n style={{ backgroundColor: color || undefined }}\n onClick={() => colorPickerRef.current?.click()}\n >\n {!color ? 'Pick a color...' : ''}\n <input\n type=\"color\"\n ref={colorPickerRef}\n value={color || '#000000'}\n {...pt?.color?.input}\n className={clsx(pt?.color?.input?.className)}\n onChange={(event) => {\n onChange && onChange(['color'], [event?.target.value.toString()])\n onCommit && onCommit(['color'], [event?.target.value.toString()])\n }}\n />\n </Styled.ColorPicker>\n {color && (\n <Styled.Button\n icon=\"close\"\n variant=\"text\"\n onClick={() => {\n onChange && onChange(['color'], [undefined])\n }}\n />\n )}\n </Styled.PlaceholderWrapper>\n </Styled.Row>\n\n {(showRemoveButton || showDuplicateButton) && (\n <Styled.Row {...pt?.footer} className={clsx('footer', pt?.footer?.className)}>\n {showRemoveButton && (\n <Styled.ActionWrapper>\n <Styled.Button icon=\"close\" variant=\"text\" onClick={onRemove}>\n Remove\n </Styled.Button>\n </Styled.ActionWrapper>\n )}\n {showDuplicateButton && (\n <Styled.ActionWrapper>\n <Styled.Button icon=\"content_copy\" variant=\"text\" onClick={onDuplicate}>\n Duplicate\n </Styled.Button>\n </Styled.ActionWrapper>\n )}\n </Styled.Row>\n )}\n </Styled.EnumItemBody>\n )\n}\n\nexport default EnumEditorItem\n"],"names":["EnumEditorItem","item","onChange","onCommit","onRemove","onDuplicate","showRemoveButton","showDuplicateButton","autoFocus","isExpanded","className","pt","props","label","value","icon","color","isNewAttribute","labelRef","useRef","valueRef","colorPickerRef","iconSelectRef","useEffect","jsxs","Styled.EnumItemBody","clsx","Styled.Row","jsx","Styled.Label","Styled.InputText","event","kebabCase","Styled.PlaceholderWrapper","Styled.Placeholder","Styled.IconSelect","Styled.Button","Styled.ColorPicker","Styled.ActionWrapper"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { j as l } from "../../../../_virtual/jsx-runtime.es.js";
|
|
2
2
|
import { useRef as d, useEffect as g } from "react";
|
|
3
3
|
import { kebabCase as f } from "lodash";
|
|
4
|
-
import { EnumItemBody as L, Row as n, Label as
|
|
4
|
+
import { EnumItemBody as L, Row as n, Label as p, InputText as P, PlaceholderWrapper as E, Placeholder as T, IconSelect as W, Button as j, ColorPicker as _, ActionWrapper as R } from "./EnumEditor.styled.es.js";
|
|
5
5
|
import s from "clsx";
|
|
6
6
|
const J = ({
|
|
7
7
|
item: i,
|
|
8
8
|
onChange: c,
|
|
9
9
|
onCommit: a,
|
|
10
|
-
onRemove:
|
|
10
|
+
onRemove: A,
|
|
11
11
|
onDuplicate: I,
|
|
12
12
|
showRemoveButton: k = !0,
|
|
13
13
|
showDuplicateButton: y = !0,
|
|
@@ -17,7 +17,7 @@ const J = ({
|
|
|
17
17
|
pt: r,
|
|
18
18
|
...B
|
|
19
19
|
}) => {
|
|
20
|
-
const { label: D, value: K, icon:
|
|
20
|
+
const { label: D, value: K, icon: o, color: u, isNewAttribute: x } = i, N = d(null), b = d(null), h = d(null), w = d(null);
|
|
21
21
|
return g(() => {
|
|
22
22
|
(t || i.isNewAttribute) && N.current?.select();
|
|
23
23
|
}, [t, i.isNewAttribute]), g(() => {
|
|
@@ -33,9 +33,9 @@ const J = ({
|
|
|
33
33
|
}),
|
|
34
34
|
children: [
|
|
35
35
|
/* @__PURE__ */ l.jsxs(n, { ...r?.label?.wrapper, children: [
|
|
36
|
-
/* @__PURE__ */ l.jsx(
|
|
36
|
+
/* @__PURE__ */ l.jsx(p, { ...r?.label?.label, children: "Label" }),
|
|
37
37
|
/* @__PURE__ */ l.jsx(
|
|
38
|
-
|
|
38
|
+
P,
|
|
39
39
|
{
|
|
40
40
|
ref: N,
|
|
41
41
|
value: D,
|
|
@@ -51,7 +51,7 @@ const J = ({
|
|
|
51
51
|
x ? a && a(["label", "value"], [e.target.value, f(e.target.value)]) : a && a(["label"], [e.target.value]);
|
|
52
52
|
},
|
|
53
53
|
onKeyDown: (e) => {
|
|
54
|
-
e.key === "Enter" && (x ? a && a(
|
|
54
|
+
e.key === "Enter" && (e.stopPropagation(), x ? a && a(
|
|
55
55
|
["label", "value"],
|
|
56
56
|
[
|
|
57
57
|
e.target.value,
|
|
@@ -64,9 +64,9 @@ const J = ({
|
|
|
64
64
|
)
|
|
65
65
|
] }, "label"),
|
|
66
66
|
/* @__PURE__ */ l.jsxs(n, { ...r?.value?.wrapper, children: [
|
|
67
|
-
/* @__PURE__ */ l.jsx(
|
|
67
|
+
/* @__PURE__ */ l.jsx(p, { ...r?.value?.label, children: "Value" }),
|
|
68
68
|
/* @__PURE__ */ l.jsx(
|
|
69
|
-
|
|
69
|
+
P,
|
|
70
70
|
{
|
|
71
71
|
ref: b,
|
|
72
72
|
value: b.current?.value || K,
|
|
@@ -75,19 +75,19 @@ const J = ({
|
|
|
75
75
|
onChange: (e) => c && c(["value"], [e.target.value]),
|
|
76
76
|
onBlur: (e) => a && a(["value"], [e.target.value]),
|
|
77
77
|
onKeyDown: (e) => {
|
|
78
|
-
e.key === "Enter" && a && a(["value"], [e.target.value]);
|
|
78
|
+
e.key === "Enter" && (e.stopPropagation(), a && a(["value"], [e.target.value]));
|
|
79
79
|
},
|
|
80
80
|
placeholder: "Enter value"
|
|
81
81
|
}
|
|
82
82
|
)
|
|
83
83
|
] }, "value"),
|
|
84
84
|
/* @__PURE__ */ l.jsxs(n, { ...r?.icon?.wrapper, children: [
|
|
85
|
-
/* @__PURE__ */ l.jsx(
|
|
86
|
-
/* @__PURE__ */ l.jsxs(
|
|
85
|
+
/* @__PURE__ */ l.jsx(p, { ...r?.icon?.label, children: "Icon" }),
|
|
86
|
+
/* @__PURE__ */ l.jsxs(E, { style: { position: "relative" }, children: [
|
|
87
87
|
/* @__PURE__ */ l.jsx(
|
|
88
88
|
T,
|
|
89
89
|
{
|
|
90
|
-
style: { display:
|
|
90
|
+
style: { display: o ? "none" : "flex" },
|
|
91
91
|
onClick: () => {
|
|
92
92
|
w.current?.open();
|
|
93
93
|
},
|
|
@@ -98,13 +98,13 @@ const J = ({
|
|
|
98
98
|
W,
|
|
99
99
|
{
|
|
100
100
|
ref: w,
|
|
101
|
-
value: [
|
|
101
|
+
value: [o || "question_mark"],
|
|
102
102
|
widthExpand: !0,
|
|
103
103
|
...r?.icon?.input,
|
|
104
104
|
className: s(r?.icon?.input?.className),
|
|
105
105
|
style: {
|
|
106
|
-
position:
|
|
107
|
-
visibility:
|
|
106
|
+
position: o ? "relative" : "absolute",
|
|
107
|
+
visibility: o ? "visible" : "hidden",
|
|
108
108
|
...r?.icon?.input?.style
|
|
109
109
|
},
|
|
110
110
|
onChange: (e) => {
|
|
@@ -112,8 +112,8 @@ const J = ({
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
),
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
o && /* @__PURE__ */ l.jsx(
|
|
116
|
+
j,
|
|
117
117
|
{
|
|
118
118
|
icon: "close",
|
|
119
119
|
variant: "text",
|
|
@@ -125,22 +125,22 @@ const J = ({
|
|
|
125
125
|
] })
|
|
126
126
|
] }, "icon"),
|
|
127
127
|
/* @__PURE__ */ l.jsxs(n, { ...r?.color?.wrapper, children: [
|
|
128
|
-
/* @__PURE__ */ l.jsx(
|
|
129
|
-
/* @__PURE__ */ l.jsxs(
|
|
128
|
+
/* @__PURE__ */ l.jsx(p, { ...r?.color?.label, children: "Color" }),
|
|
129
|
+
/* @__PURE__ */ l.jsxs(E, { style: { position: "relative" }, children: [
|
|
130
130
|
/* @__PURE__ */ l.jsxs(
|
|
131
131
|
_,
|
|
132
132
|
{
|
|
133
|
-
className:
|
|
134
|
-
style: { backgroundColor:
|
|
133
|
+
className: u ? "active" : "",
|
|
134
|
+
style: { backgroundColor: u || void 0 },
|
|
135
135
|
onClick: () => h.current?.click(),
|
|
136
136
|
children: [
|
|
137
|
-
|
|
137
|
+
u ? "" : "Pick a color...",
|
|
138
138
|
/* @__PURE__ */ l.jsx(
|
|
139
139
|
"input",
|
|
140
140
|
{
|
|
141
141
|
type: "color",
|
|
142
142
|
ref: h,
|
|
143
|
-
value:
|
|
143
|
+
value: u || "#000000",
|
|
144
144
|
...r?.color?.input,
|
|
145
145
|
className: s(r?.color?.input?.className),
|
|
146
146
|
onChange: (e) => {
|
|
@@ -151,8 +151,8 @@ const J = ({
|
|
|
151
151
|
]
|
|
152
152
|
}
|
|
153
153
|
),
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
u && /* @__PURE__ */ l.jsx(
|
|
155
|
+
j,
|
|
156
156
|
{
|
|
157
157
|
icon: "close",
|
|
158
158
|
variant: "text",
|
|
@@ -164,8 +164,8 @@ const J = ({
|
|
|
164
164
|
] })
|
|
165
165
|
] }, "color"),
|
|
166
166
|
(k || y) && /* @__PURE__ */ l.jsxs(n, { ...r?.footer, className: s("footer", r?.footer?.className), children: [
|
|
167
|
-
k && /* @__PURE__ */ l.jsx(
|
|
168
|
-
y && /* @__PURE__ */ l.jsx(
|
|
167
|
+
k && /* @__PURE__ */ l.jsx(R, { children: /* @__PURE__ */ l.jsx(j, { icon: "close", variant: "text", onClick: A, children: "Remove" }) }),
|
|
168
|
+
y && /* @__PURE__ */ l.jsx(R, { children: /* @__PURE__ */ l.jsx(j, { icon: "content_copy", variant: "text", onClick: I, children: "Duplicate" }) })
|
|
169
169
|
] })
|
|
170
170
|
]
|
|
171
171
|
}
|