@ynput/ayon-frontend-shared 0.2.44 → 0.3.0
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 +72 -65
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +104 -102
- package/dist/Slicer.cjs.js +1 -1
- package/dist/Slicer.es.js +113 -4
- package/dist/Slicer.es.js.map +1 -1
- package/dist/Views.cjs.js.map +1 -1
- package/dist/Views.es.js.map +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.es4.js +5 -2
- package/dist/_virtual/index.es4.js.map +1 -1
- package/dist/_virtual/index.es5.js +2 -5
- package/dist/_virtual/index.es5.js.map +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +141 -139
- package/dist/components.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +61 -54
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js +5 -5
- package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.cjs.js.map +1 -1
- package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js +313 -305
- package/dist/node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.es.js.map +1 -1
- package/dist/node_modules/remove-accents/index.cjs.js +1 -1
- package/dist/node_modules/remove-accents/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.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.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.es.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js +73 -68
- package/dist/shared/src/api/queries/userDashboard/getUserDashboard.es.js.map +1 -1
- package/dist/shared/src/api/queries/views/updateViews.cjs.js +1 -1
- package/dist/shared/src/api/queries/views/updateViews.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/views/updateViews.es.js +1 -1
- package/dist/shared/src/api/queries/views/updateViews.es.js.map +1 -1
- 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 +57 -50
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/AddNewLinks.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/AddNewLinks.es.js +45 -38
- package/dist/shared/src/components/LinksManager/AddNewLinks.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 +47 -40
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js +1 -1
- package/dist/shared/src/components/Menu/MenuItem.cjs.js.map +1 -1
- package/dist/shared/src/components/Menu/MenuItem.es.js +21 -21
- package/dist/shared/src/components/Menu/MenuItem.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 +49 -42
- 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 +44 -37
- 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 +48 -41
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +2 -0
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -0
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +279 -0
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -0
- 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 +48 -41
- 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 +64 -57
- 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 +54 -47
- 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 +53 -46
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.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 +52 -45
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +2 -2
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +56 -49
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.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 +53 -46
- 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 +54 -47
- 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 +70 -63
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js +49 -42
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js +68 -61
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js +93 -86
- package/dist/shared/src/containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/FeedContextWrapper.es.js +47 -40
- package/dist/shared/src/containers/DetailsPanel/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 +46 -43
- 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 +49 -46
- 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 +49 -46
- 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 +49 -46
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.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 +50 -42
- 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 +55 -48
- 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 +2 -2
- 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 +70 -63
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.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 +47 -40
- 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 +468 -448
- 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 +96 -89
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.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 +47 -40
- 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 +57 -50
- 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 +54 -47
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.es.js +63 -68
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectTableProvider.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 +49 -41
- 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 +51 -44
- 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 +48 -41
- 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 +55 -48
- 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 +54 -47
- 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 +51 -44
- 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 +51 -44
- 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 +51 -44
- 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 +54 -47
- 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 +46 -39
- 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 +46 -39
- 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 +48 -41
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.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 +62 -55
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.es.js +11 -6
- package/dist/shared/src/containers/ProjectTreeTable/utils/restrictedEntity.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js +16 -13
- package/dist/shared/src/containers/ProjectTreeTable/widgets/BooleanWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js +342 -116
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.es.js +47 -40
- package/dist/shared/src/containers/ProjectTreeTable/widgets/DateWidgetInput.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.es.js +7 -7
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumWidget.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 +69 -62
- 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 +51 -44
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.cjs.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.es.js +29 -33
- package/dist/shared/src/containers/ProjectTreeTable/widgets/TextWidgetInput.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 +118 -111
- 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 +49 -46
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js +2 -0
- package/dist/shared/src/containers/Slicer/components/Slicer.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/components/Slicer.es.js +82 -0
- package/dist/shared/src/containers/Slicer/components/Slicer.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js +27 -0
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js +71 -0
- package/dist/shared/src/containers/Slicer/components/SlicerDropdownFallback.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +10 -0
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +294 -0
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +2 -0
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +215 -0
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useFiltersWithHierarchy.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js +2 -0
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js +25 -0
- package/dist/shared/src/containers/Slicer/hooks/useProjectAnatomySlices.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js +2 -0
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js +28 -0
- package/dist/shared/src/containers/Slicer/hooks/useSlicerAttributesData.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +2 -0
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +304 -0
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +2 -0
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +99 -0
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -0
- package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.cjs.js.map +1 -0
- package/dist/shared/src/containers/Slicer/util/createFilterFromSlicer.es.js.map +1 -0
- 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 +95 -88
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js +2 -2
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js +32 -31
- package/dist/shared/src/containers/Views/ViewsMenuContainer/ViewsMenuContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js +125 -121
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js +47 -49
- package/dist/shared/src/containers/Views/hooks/pages/useOverviewViewSettings.es.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js +6 -5
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
- package/dist/shared/src/context/AddonContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonContext.es.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.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 +51 -44
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModules.cjs.js +1 -1
- package/dist/shared/src/hooks/useLoadModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useLoadModules.es.js +7 -7
- package/dist/shared/src/hooks/useLoadModules.es.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js +1 -1
- package/dist/shared/src/util/columnConfigConverter.cjs.js.map +1 -1
- package/dist/shared/src/util/columnConfigConverter.es.js +69 -46
- package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
- package/dist/shared/src/util/getGroupByDataType.cjs.js +1 -1
- package/dist/shared/src/util/getGroupByDataType.cjs.js.map +1 -1
- package/dist/shared/src/util/getGroupByDataType.es.js +4 -4
- package/dist/shared/src/util/getGroupByDataType.es.js.map +1 -1
- package/dist/types/api/queries/activities/getActivities.d.ts +1 -1
- package/dist/types/api/queries/entityLists/getLists.d.ts +183 -183
- package/dist/types/api/queries/links/getLinks.d.ts +1 -1
- package/dist/types/api/queries/overview/getOverview.d.ts +1 -1
- package/dist/types/api/queries/userDashboard/getUserDashboard.d.ts +1 -0
- package/dist/types/api/queries/versions/getVersionsProducts.d.ts +2 -2
- package/dist/types/components/RemotePage/RemotePageWrapper.d.ts +28 -0
- package/dist/types/components/RemotePage/index.d.ts +1 -0
- package/dist/types/components/index.d.ts +31 -30
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableContext.d.ts +0 -2
- package/dist/types/containers/ProjectTreeTable/context/ProjectTableProvider.d.ts +1 -4
- package/dist/types/containers/ProjectTreeTable/utils/restrictedEntity.d.ts +3 -3
- package/dist/types/containers/Slicer/components/Slicer.d.ts +9 -0
- package/dist/types/containers/Slicer/components/SlicerDropdownFallback.d.ts +7 -0
- package/dist/types/containers/Slicer/components/SlicerSearch.d.ts +6 -0
- package/dist/types/containers/Slicer/context/SlicerContext.d.ts +48 -0
- package/dist/types/containers/Slicer/hooks/index.d.ts +5 -0
- package/dist/types/containers/Slicer/{useFiltersWithHierarchy.d.ts → hooks/useFiltersWithHierarchy.d.ts} +1 -1
- package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +51 -0
- package/dist/types/containers/Slicer/hooks/useSlicerAttributesData.d.ts +7 -0
- package/dist/types/containers/Slicer/hooks/useTableDataBySlice.d.ts +8 -0
- package/dist/types/containers/Slicer/hooks/useUsersTable.d.ts +10 -0
- package/dist/types/containers/Slicer/index.d.ts +4 -2
- package/dist/types/containers/Slicer/types.d.ts +35 -0
- package/dist/types/containers/Slicer/{createFilterFromSlicer.d.ts → util/createFilterFromSlicer.d.ts} +2 -2
- package/dist/types/containers/Slicer/util/index.d.ts +1 -0
- package/dist/types/containers/Views/ViewsMenuContainer/BaseViewsTags.d.ts +4 -1
- package/dist/types/containers/Views/hooks/pages/useOverviewViewSettings.d.ts +7 -1
- package/dist/types/containers/Views/index.d.ts +1 -1
- package/dist/types/containers/Views/utils/viewUpdateHelper.d.ts +1 -1
- package/dist/types/context/AddonContext.d.ts +10 -2
- package/dist/types/context/AddonProjectContext.d.ts +7 -12
- package/dist/types/hooks/useGroupByRemoteModules.d.ts +2 -1
- package/package.json +1 -1
- package/dist/shared/src/containers/Slicer/createFilterFromSlicer.cjs.js.map +0 -1
- package/dist/shared/src/containers/Slicer/createFilterFromSlicer.es.js.map +0 -1
- package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.cjs.js.map +0 -1
- package/dist/shared/src/containers/Slicer/useFiltersWithHierarchy.es.js.map +0 -1
- /package/dist/shared/src/containers/Slicer/{useFiltersWithHierarchy.cjs.js → hooks/useFiltersWithHierarchy.cjs.js} +0 -0
- /package/dist/shared/src/containers/Slicer/{useFiltersWithHierarchy.es.js → hooks/useFiltersWithHierarchy.es.js} +0 -0
- /package/dist/shared/src/containers/Slicer/{createFilterFromSlicer.cjs.js → util/createFilterFromSlicer.cjs.js} +0 -0
- /package/dist/shared/src/containers/Slicer/{createFilterFromSlicer.es.js → util/createFilterFromSlicer.es.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateViews.cjs.js","sources":["../../../../../../src/api/queries/views/updateViews.ts"],"sourcesContent":["import { ViewListItemModel } from '@shared/api/generated'\nimport { getScopeTag, getViewsApi } from './getViews'\n\nconst updateViewsApi = getViewsApi.enhanceEndpoints({\n endpoints: {\n createView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { payload } = arg\n const state = getState()\n // @ts-expect-error - user is not typed in the state\n const user = state.user.name\n\n // Optimistically update the view list\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'listViews',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n const newView: ViewListItemModel = {\n ...payload,\n working: payload.working || false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n position: draft.length + 1, // Add to the end of the list\n owner: user,\n accessLevel: 30,\n }\n if (payload.working) {\n // For working views, find and replace the existing working view\n const existingWorkingIndex = draft.findIndex((view) => view.working === true)\n if (existingWorkingIndex !== -1) {\n // Keep the existing ID but update all other properties\n const existingId = draft[existingWorkingIndex].id\n draft[existingWorkingIndex] = { ...newView, id: existingId }\n } else {\n // No existing working view, add the new one\n draft.push(newView)\n }\n } else {\n // For non-working views, add to the list as usual\n draft.push(newView)\n }\n\n // finally sort the view by position and then by label\n draft.sort((a, b) => {\n if (a.position !== b.position) {\n return a.position - b.position\n }\n return a.label.localeCompare(b.label)\n })\n },\n ),\n )\n\n // Also update the getWorkingView cache if this is a working view\n let workingViewPatch\n if (payload.working) {\n workingViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getWorkingView',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n // Preserve the existing ID if there's already a working view\n const existingId = draft?.id\n const updatedWorkingView = {\n ...payload,\n working: true,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n ...(existingId && { id: existingId }), // Keep existing ID if it exists\n }\n // Update the working view cache with the new view data\n Object.assign(draft, updatedWorkingView)\n },\n ),\n )\n }\n\n // Also update the getBaseView cache if this is a base view\n let baseViewPatch\n if (payload.label === '__base__') {\n // Check if the getBaseView cache exists before updating\n const currentBaseView = getViewsApi.endpoints.getBaseView.select({\n viewType: arg.viewType,\n projectName: arg.projectName,\n })(state)\n\n // Only perform optimistic update if cache is initialized (even if data is null)\n if (currentBaseView !== undefined) {\n const newBaseView = {\n ...payload,\n working: false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n accessLevel: 30,\n position: 0,\n }\n\n baseViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getBaseView',\n { viewType: arg.viewType, projectName: arg.projectName },\n () => newBaseView as any,\n ),\n )\n } else {\n // No cache exists yet, optimistic update will be skipped\n // The invalidation tags will handle the refetch\n console.log('Skipping optimistic update for getBaseView - cache does not exist yet')\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic updates\n patch.undo()\n if (workingViewPatch) {\n workingViewPatch.undo()\n }\n if (baseViewPatch) {\n baseViewPatch.undo()\n }\n console.error('Failed to create view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, payload }) => [\n { type: 'view', id: payload.id },\n getScopeTag(viewType, projectName),\n ],\n },\n updateView: {\n transformErrorResponse: (error: any) => error.data?.detail,\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n deleteView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { viewId, projectName, viewType } = arg\n const state = getState()\n\n // Optimistically remove the view from the list\n const patches: any[] = []\n\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n ),\n )\n\n // Check both project and studio level for base and default views\n const scopesToCheck = [\n { projectName },\n { projectName: undefined }, // studio level\n ]\n const queriesToCheck = ['getBaseView', 'getDefaultView'] as const\n\n for (const scope of scopesToCheck) {\n for (const queryName of queriesToCheck) {\n const currentView = getViewsApi.endpoints[queryName].select({\n viewType,\n projectName: scope.projectName,\n })(state)\n\n if (currentView?.isSuccess && currentView.data?.id === viewId) {\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData(\n queryName,\n { viewType, projectName: scope.projectName },\n () => null as any,\n ),\n ),\n )\n }\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, roll back all optimistic updates\n patches.forEach((patch) => patch.undo())\n console.error('Failed to delete view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n getScopeTag(viewType, undefined),\n ],\n },\n setDefaultView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { setDefaultViewRequestModel, projectName, viewType } = arg\n const { viewId } = setDefaultViewRequestModel\n const state = getState()\n // get current state of default view\n const currentDefaultView = getViewsApi.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n\n // check if there is even a cache for the default view\n if (currentDefaultView?.isSuccess && currentDefaultView.data?.id) {\n // Optimistically update the default view\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getDefaultView',\n { viewType, projectName },\n (draft) => {\n if (draft) {\n // Try to find the view in the listViews cache\n const listViewData = getViewsApi.endpoints.listViews.select({\n viewType,\n projectName,\n })(state)\n const view = listViewData?.data?.find((v) => v.id === viewId)\n\n if (view) {\n // If the view is found in the listViews cache, update the getDefaultView cache with the full view data\n Object.assign(draft, view)\n } else {\n // If the view is not found, only update the ID\n draft.id = viewId\n }\n }\n },\n ),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to set default view:', error)\n }\n } else {\n console.warn(\n 'No current default view found, skipping optimistic update and invalidating default view cache',\n )\n // If there is no current default view, we skip the optimistic update\n // it will be handled by the invalidation below\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the default view cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, setDefaultViewRequestModel }) => [\n { type: 'view', id: setDefaultViewRequestModel.viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n },\n})\n\nexport const {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n} = updateViewsApi\nexport { updateViewsApi as viewsQueries }\n"],"names":["updateViewsApi","getViewsApi","arg","dispatch","queryFulfilled","getState","payload","state","user","patch","draft","newView","existingWorkingIndex","view","existingId","a","b","workingViewPatch","updatedWorkingView","baseViewPatch","newBaseView","error","_r","_e","viewType","projectName","getScopeTag","viewId","patches","scopesToCheck","queriesToCheck","scope","queryName","currentView","setDefaultViewRequestModel","currentDefaultView","useCreateViewMutation","useUpdateViewMutation","useDeleteViewMutation","useSetDefaultViewMutation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updateViews.cjs.js","sources":["../../../../../../src/api/queries/views/updateViews.ts"],"sourcesContent":["import { ViewListItemModel } from '@shared/api/generated'\nimport { getScopeTag, getViewsApi } from './getViews'\n\nconst updateViewsApi = getViewsApi.enhanceEndpoints({\n endpoints: {\n createView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { payload } = arg\n const state = getState()\n // @ts-expect-error - user is not typed in the state\n const user = state.user?.name\n\n // Optimistically update the view list\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'listViews',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n const newView: ViewListItemModel = {\n ...payload,\n working: payload.working || false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n position: draft.length + 1, // Add to the end of the list\n owner: user,\n accessLevel: 30,\n }\n if (payload.working) {\n // For working views, find and replace the existing working view\n const existingWorkingIndex = draft.findIndex((view) => view.working === true)\n if (existingWorkingIndex !== -1) {\n // Keep the existing ID but update all other properties\n const existingId = draft[existingWorkingIndex].id\n draft[existingWorkingIndex] = { ...newView, id: existingId }\n } else {\n // No existing working view, add the new one\n draft.push(newView)\n }\n } else {\n // For non-working views, add to the list as usual\n draft.push(newView)\n }\n\n // finally sort the view by position and then by label\n draft.sort((a, b) => {\n if (a.position !== b.position) {\n return a.position - b.position\n }\n return a.label.localeCompare(b.label)\n })\n },\n ),\n )\n\n // Also update the getWorkingView cache if this is a working view\n let workingViewPatch\n if (payload.working) {\n workingViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getWorkingView',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n // Preserve the existing ID if there's already a working view\n const existingId = draft?.id\n const updatedWorkingView = {\n ...payload,\n working: true,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n ...(existingId && { id: existingId }), // Keep existing ID if it exists\n }\n // Update the working view cache with the new view data\n Object.assign(draft, updatedWorkingView)\n },\n ),\n )\n }\n\n // Also update the getBaseView cache if this is a base view\n let baseViewPatch\n if (payload.label === '__base__') {\n // Check if the getBaseView cache exists before updating\n const currentBaseView = getViewsApi.endpoints.getBaseView.select({\n viewType: arg.viewType,\n projectName: arg.projectName,\n })(state)\n\n // Only perform optimistic update if cache is initialized (even if data is null)\n if (currentBaseView !== undefined) {\n const newBaseView = {\n ...payload,\n working: false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n accessLevel: 30,\n position: 0,\n }\n\n baseViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getBaseView',\n { viewType: arg.viewType, projectName: arg.projectName },\n () => newBaseView as any,\n ),\n )\n } else {\n // No cache exists yet, optimistic update will be skipped\n // The invalidation tags will handle the refetch\n console.log('Skipping optimistic update for getBaseView - cache does not exist yet')\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic updates\n patch.undo()\n if (workingViewPatch) {\n workingViewPatch.undo()\n }\n if (baseViewPatch) {\n baseViewPatch.undo()\n }\n console.error('Failed to create view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, payload }) => [\n { type: 'view', id: payload.id },\n getScopeTag(viewType, projectName),\n ],\n },\n updateView: {\n transformErrorResponse: (error: any) => error.data?.detail,\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n deleteView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { viewId, projectName, viewType } = arg\n const state = getState()\n\n // Optimistically remove the view from the list\n const patches: any[] = []\n\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n ),\n )\n\n // Check both project and studio level for base and default views\n const scopesToCheck = [\n { projectName },\n { projectName: undefined }, // studio level\n ]\n const queriesToCheck = ['getBaseView', 'getDefaultView'] as const\n\n for (const scope of scopesToCheck) {\n for (const queryName of queriesToCheck) {\n const currentView = getViewsApi.endpoints[queryName].select({\n viewType,\n projectName: scope.projectName,\n })(state)\n\n if (currentView?.isSuccess && currentView.data?.id === viewId) {\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData(\n queryName,\n { viewType, projectName: scope.projectName },\n () => null as any,\n ),\n ),\n )\n }\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, roll back all optimistic updates\n patches.forEach((patch) => patch.undo())\n console.error('Failed to delete view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n getScopeTag(viewType, undefined),\n ],\n },\n setDefaultView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { setDefaultViewRequestModel, projectName, viewType } = arg\n const { viewId } = setDefaultViewRequestModel\n const state = getState()\n // get current state of default view\n const currentDefaultView = getViewsApi.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n\n // check if there is even a cache for the default view\n if (currentDefaultView?.isSuccess && currentDefaultView.data?.id) {\n // Optimistically update the default view\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getDefaultView',\n { viewType, projectName },\n (draft) => {\n if (draft) {\n // Try to find the view in the listViews cache\n const listViewData = getViewsApi.endpoints.listViews.select({\n viewType,\n projectName,\n })(state)\n const view = listViewData?.data?.find((v) => v.id === viewId)\n\n if (view) {\n // If the view is found in the listViews cache, update the getDefaultView cache with the full view data\n Object.assign(draft, view)\n } else {\n // If the view is not found, only update the ID\n draft.id = viewId\n }\n }\n },\n ),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to set default view:', error)\n }\n } else {\n console.warn(\n 'No current default view found, skipping optimistic update and invalidating default view cache',\n )\n // If there is no current default view, we skip the optimistic update\n // it will be handled by the invalidation below\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the default view cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, setDefaultViewRequestModel }) => [\n { type: 'view', id: setDefaultViewRequestModel.viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n },\n})\n\nexport const {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n} = updateViewsApi\nexport { updateViewsApi as viewsQueries }\n"],"names":["updateViewsApi","getViewsApi","arg","dispatch","queryFulfilled","getState","payload","state","user","patch","draft","newView","existingWorkingIndex","view","existingId","a","b","workingViewPatch","updatedWorkingView","baseViewPatch","newBaseView","error","_r","_e","viewType","projectName","getScopeTag","viewId","patches","scopesToCheck","queriesToCheck","scope","queryName","currentView","setDefaultViewRequestModel","currentDefaultView","useCreateViewMutation","useUpdateViewMutation","useDeleteViewMutation","useSetDefaultViewMutation"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ const f = u.enhanceEndpoints({
|
|
|
3
3
|
endpoints: {
|
|
4
4
|
createView: {
|
|
5
5
|
onQueryStarted: async (e, { dispatch: c, queryFulfilled: a, getState: n }) => {
|
|
6
|
-
const { payload: i } = e, d = n(), p = d.user
|
|
6
|
+
const { payload: i } = e, d = n(), p = d.user?.name, v = c(
|
|
7
7
|
u.util.updateQueryData(
|
|
8
8
|
"listViews",
|
|
9
9
|
{ viewType: e.viewType, projectName: e.projectName },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateViews.es.js","sources":["../../../../../../src/api/queries/views/updateViews.ts"],"sourcesContent":["import { ViewListItemModel } from '@shared/api/generated'\nimport { getScopeTag, getViewsApi } from './getViews'\n\nconst updateViewsApi = getViewsApi.enhanceEndpoints({\n endpoints: {\n createView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { payload } = arg\n const state = getState()\n // @ts-expect-error - user is not typed in the state\n const user = state.user.name\n\n // Optimistically update the view list\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'listViews',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n const newView: ViewListItemModel = {\n ...payload,\n working: payload.working || false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n position: draft.length + 1, // Add to the end of the list\n owner: user,\n accessLevel: 30,\n }\n if (payload.working) {\n // For working views, find and replace the existing working view\n const existingWorkingIndex = draft.findIndex((view) => view.working === true)\n if (existingWorkingIndex !== -1) {\n // Keep the existing ID but update all other properties\n const existingId = draft[existingWorkingIndex].id\n draft[existingWorkingIndex] = { ...newView, id: existingId }\n } else {\n // No existing working view, add the new one\n draft.push(newView)\n }\n } else {\n // For non-working views, add to the list as usual\n draft.push(newView)\n }\n\n // finally sort the view by position and then by label\n draft.sort((a, b) => {\n if (a.position !== b.position) {\n return a.position - b.position\n }\n return a.label.localeCompare(b.label)\n })\n },\n ),\n )\n\n // Also update the getWorkingView cache if this is a working view\n let workingViewPatch\n if (payload.working) {\n workingViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getWorkingView',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n // Preserve the existing ID if there's already a working view\n const existingId = draft?.id\n const updatedWorkingView = {\n ...payload,\n working: true,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n ...(existingId && { id: existingId }), // Keep existing ID if it exists\n }\n // Update the working view cache with the new view data\n Object.assign(draft, updatedWorkingView)\n },\n ),\n )\n }\n\n // Also update the getBaseView cache if this is a base view\n let baseViewPatch\n if (payload.label === '__base__') {\n // Check if the getBaseView cache exists before updating\n const currentBaseView = getViewsApi.endpoints.getBaseView.select({\n viewType: arg.viewType,\n projectName: arg.projectName,\n })(state)\n\n // Only perform optimistic update if cache is initialized (even if data is null)\n if (currentBaseView !== undefined) {\n const newBaseView = {\n ...payload,\n working: false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n accessLevel: 30,\n position: 0,\n }\n\n baseViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getBaseView',\n { viewType: arg.viewType, projectName: arg.projectName },\n () => newBaseView as any,\n ),\n )\n } else {\n // No cache exists yet, optimistic update will be skipped\n // The invalidation tags will handle the refetch\n console.log('Skipping optimistic update for getBaseView - cache does not exist yet')\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic updates\n patch.undo()\n if (workingViewPatch) {\n workingViewPatch.undo()\n }\n if (baseViewPatch) {\n baseViewPatch.undo()\n }\n console.error('Failed to create view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, payload }) => [\n { type: 'view', id: payload.id },\n getScopeTag(viewType, projectName),\n ],\n },\n updateView: {\n transformErrorResponse: (error: any) => error.data?.detail,\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n deleteView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { viewId, projectName, viewType } = arg\n const state = getState()\n\n // Optimistically remove the view from the list\n const patches: any[] = []\n\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n ),\n )\n\n // Check both project and studio level for base and default views\n const scopesToCheck = [\n { projectName },\n { projectName: undefined }, // studio level\n ]\n const queriesToCheck = ['getBaseView', 'getDefaultView'] as const\n\n for (const scope of scopesToCheck) {\n for (const queryName of queriesToCheck) {\n const currentView = getViewsApi.endpoints[queryName].select({\n viewType,\n projectName: scope.projectName,\n })(state)\n\n if (currentView?.isSuccess && currentView.data?.id === viewId) {\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData(\n queryName,\n { viewType, projectName: scope.projectName },\n () => null as any,\n ),\n ),\n )\n }\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, roll back all optimistic updates\n patches.forEach((patch) => patch.undo())\n console.error('Failed to delete view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n getScopeTag(viewType, undefined),\n ],\n },\n setDefaultView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { setDefaultViewRequestModel, projectName, viewType } = arg\n const { viewId } = setDefaultViewRequestModel\n const state = getState()\n // get current state of default view\n const currentDefaultView = getViewsApi.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n\n // check if there is even a cache for the default view\n if (currentDefaultView?.isSuccess && currentDefaultView.data?.id) {\n // Optimistically update the default view\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getDefaultView',\n { viewType, projectName },\n (draft) => {\n if (draft) {\n // Try to find the view in the listViews cache\n const listViewData = getViewsApi.endpoints.listViews.select({\n viewType,\n projectName,\n })(state)\n const view = listViewData?.data?.find((v) => v.id === viewId)\n\n if (view) {\n // If the view is found in the listViews cache, update the getDefaultView cache with the full view data\n Object.assign(draft, view)\n } else {\n // If the view is not found, only update the ID\n draft.id = viewId\n }\n }\n },\n ),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to set default view:', error)\n }\n } else {\n console.warn(\n 'No current default view found, skipping optimistic update and invalidating default view cache',\n )\n // If there is no current default view, we skip the optimistic update\n // it will be handled by the invalidation below\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the default view cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, setDefaultViewRequestModel }) => [\n { type: 'view', id: setDefaultViewRequestModel.viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n },\n})\n\nexport const {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n} = updateViewsApi\nexport { updateViewsApi as viewsQueries }\n"],"names":["updateViewsApi","getViewsApi","arg","dispatch","queryFulfilled","getState","payload","state","user","patch","draft","newView","existingWorkingIndex","view","existingId","a","b","workingViewPatch","updatedWorkingView","baseViewPatch","newBaseView","error","_r","_e","viewType","projectName","getScopeTag","viewId","patches","scopesToCheck","queriesToCheck","scope","queryName","currentView","setDefaultViewRequestModel","currentDefaultView","v","useCreateViewMutation","useUpdateViewMutation","useDeleteViewMutation","useSetDefaultViewMutation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updateViews.es.js","sources":["../../../../../../src/api/queries/views/updateViews.ts"],"sourcesContent":["import { ViewListItemModel } from '@shared/api/generated'\nimport { getScopeTag, getViewsApi } from './getViews'\n\nconst updateViewsApi = getViewsApi.enhanceEndpoints({\n endpoints: {\n createView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { payload } = arg\n const state = getState()\n // @ts-expect-error - user is not typed in the state\n const user = state.user?.name\n\n // Optimistically update the view list\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'listViews',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n const newView: ViewListItemModel = {\n ...payload,\n working: payload.working || false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n position: draft.length + 1, // Add to the end of the list\n owner: user,\n accessLevel: 30,\n }\n if (payload.working) {\n // For working views, find and replace the existing working view\n const existingWorkingIndex = draft.findIndex((view) => view.working === true)\n if (existingWorkingIndex !== -1) {\n // Keep the existing ID but update all other properties\n const existingId = draft[existingWorkingIndex].id\n draft[existingWorkingIndex] = { ...newView, id: existingId }\n } else {\n // No existing working view, add the new one\n draft.push(newView)\n }\n } else {\n // For non-working views, add to the list as usual\n draft.push(newView)\n }\n\n // finally sort the view by position and then by label\n draft.sort((a, b) => {\n if (a.position !== b.position) {\n return a.position - b.position\n }\n return a.label.localeCompare(b.label)\n })\n },\n ),\n )\n\n // Also update the getWorkingView cache if this is a working view\n let workingViewPatch\n if (payload.working) {\n workingViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getWorkingView',\n { viewType: arg.viewType, projectName: arg.projectName },\n (draft) => {\n // Preserve the existing ID if there's already a working view\n const existingId = draft?.id\n const updatedWorkingView = {\n ...payload,\n working: true,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n ...(existingId && { id: existingId }), // Keep existing ID if it exists\n }\n // Update the working view cache with the new view data\n Object.assign(draft, updatedWorkingView)\n },\n ),\n )\n }\n\n // Also update the getBaseView cache if this is a base view\n let baseViewPatch\n if (payload.label === '__base__') {\n // Check if the getBaseView cache exists before updating\n const currentBaseView = getViewsApi.endpoints.getBaseView.select({\n viewType: arg.viewType,\n projectName: arg.projectName,\n })(state)\n\n // Only perform optimistic update if cache is initialized (even if data is null)\n if (currentBaseView !== undefined) {\n const newBaseView = {\n ...payload,\n working: false,\n scope: arg.projectName ? 'project' : 'studio',\n visibility: 'private',\n owner: user,\n accessLevel: 30,\n position: 0,\n }\n\n baseViewPatch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getBaseView',\n { viewType: arg.viewType, projectName: arg.projectName },\n () => newBaseView as any,\n ),\n )\n } else {\n // No cache exists yet, optimistic update will be skipped\n // The invalidation tags will handle the refetch\n console.log('Skipping optimistic update for getBaseView - cache does not exist yet')\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic updates\n patch.undo()\n if (workingViewPatch) {\n workingViewPatch.undo()\n }\n if (baseViewPatch) {\n baseViewPatch.undo()\n }\n console.error('Failed to create view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, payload }) => [\n { type: 'view', id: payload.id },\n getScopeTag(viewType, projectName),\n ],\n },\n updateView: {\n transformErrorResponse: (error: any) => error.data?.detail,\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n deleteView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { viewId, projectName, viewType } = arg\n const state = getState()\n\n // Optimistically remove the view from the list\n const patches: any[] = []\n\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData('listViews', { viewType, projectName }, (draft) => {\n return draft.filter((view) => view.id !== viewId)\n }),\n ),\n )\n\n // Check both project and studio level for base and default views\n const scopesToCheck = [\n { projectName },\n { projectName: undefined }, // studio level\n ]\n const queriesToCheck = ['getBaseView', 'getDefaultView'] as const\n\n for (const scope of scopesToCheck) {\n for (const queryName of queriesToCheck) {\n const currentView = getViewsApi.endpoints[queryName].select({\n viewType,\n projectName: scope.projectName,\n })(state)\n\n if (currentView?.isSuccess && currentView.data?.id === viewId) {\n patches.push(\n dispatch(\n getViewsApi.util.updateQueryData(\n queryName,\n { viewType, projectName: scope.projectName },\n () => null as any,\n ),\n ),\n )\n }\n }\n }\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, roll back all optimistic updates\n patches.forEach((patch) => patch.undo())\n console.error('Failed to delete view:', error)\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the view list cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, viewId }) => [\n { type: 'view', id: viewId },\n getScopeTag(viewType, projectName),\n getScopeTag(viewType, undefined),\n ],\n },\n setDefaultView: {\n onQueryStarted: async (arg, { dispatch, queryFulfilled, getState }) => {\n const { setDefaultViewRequestModel, projectName, viewType } = arg\n const { viewId } = setDefaultViewRequestModel\n const state = getState()\n // get current state of default view\n const currentDefaultView = getViewsApi.endpoints.getDefaultView.select({\n viewType,\n projectName,\n })(state)\n\n // check if there is even a cache for the default view\n if (currentDefaultView?.isSuccess && currentDefaultView.data?.id) {\n // Optimistically update the default view\n const patch = dispatch(\n getViewsApi.util.updateQueryData(\n 'getDefaultView',\n { viewType, projectName },\n (draft) => {\n if (draft) {\n // Try to find the view in the listViews cache\n const listViewData = getViewsApi.endpoints.listViews.select({\n viewType,\n projectName,\n })(state)\n const view = listViewData?.data?.find((v) => v.id === viewId)\n\n if (view) {\n // If the view is found in the listViews cache, update the getDefaultView cache with the full view data\n Object.assign(draft, view)\n } else {\n // If the view is not found, only update the ID\n draft.id = viewId\n }\n }\n },\n ),\n )\n\n try {\n await queryFulfilled\n } catch (error) {\n // If the query failed, we need to roll back the optimistic update\n patch.undo()\n console.error('Failed to set default view:', error)\n }\n } else {\n console.warn(\n 'No current default view found, skipping optimistic update and invalidating default view cache',\n )\n // If there is no current default view, we skip the optimistic update\n // it will be handled by the invalidation below\n }\n },\n transformErrorResponse: (error: any) => error.data?.detail,\n // updates the default view cache for a specific view type and project\n invalidatesTags: (_r, _e, { viewType, projectName, setDefaultViewRequestModel }) => [\n { type: 'view', id: setDefaultViewRequestModel.viewId },\n getScopeTag(viewType, projectName),\n ],\n },\n },\n})\n\nexport const {\n useCreateViewMutation,\n useUpdateViewMutation,\n useDeleteViewMutation,\n useSetDefaultViewMutation,\n} = updateViewsApi\nexport { updateViewsApi as viewsQueries }\n"],"names":["updateViewsApi","getViewsApi","arg","dispatch","queryFulfilled","getState","payload","state","user","patch","draft","newView","existingWorkingIndex","view","existingId","a","b","workingViewPatch","updatedWorkingView","baseViewPatch","newBaseView","error","_r","_e","viewType","projectName","getScopeTag","viewId","patches","scopesToCheck","queriesToCheck","scope","queryName","currentView","setDefaultViewRequestModel","currentDefaultView","v","useCreateViewMutation","useUpdateViewMutation","useDeleteViewMutation","useSetDefaultViewMutation"],"mappings":";AAGA,MAAMA,IAAiBC,EAAY,iBAAiB;AAAA,EAClD,WAAW;AAAA,IACT,YAAY;AAAA,MACV,gBAAgB,OAAOC,GAAK,EAAE,UAAAC,GAAU,gBAAAC,GAAgB,UAAAC,QAAe;AACrE,cAAM,EAAE,SAAAC,MAAYJ,GACdK,IAAQF,EAAA,GAERG,IAAOD,EAAM,MAAM,MAGnBE,IAAQN;AAAA,UACZF,EAAY,KAAK;AAAA,YACf;AAAA,YACA,EAAE,UAAUC,EAAI,UAAU,aAAaA,EAAI,YAAA;AAAA,YAC3C,CAACQ,MAAU;AACT,oBAAMC,IAA6B;AAAA,gBACjC,GAAGL;AAAA,gBACH,SAASA,EAAQ,WAAW;AAAA,gBAC5B,OAAOJ,EAAI,cAAc,YAAY;AAAA,gBACrC,YAAY;AAAA,gBACZ,UAAUQ,EAAM,SAAS;AAAA;AAAA,gBACzB,OAAOF;AAAA,gBACP,aAAa;AAAA,cAAA;AAEf,kBAAIF,EAAQ,SAAS;AAEnB,sBAAMM,IAAuBF,EAAM,UAAU,CAACG,MAASA,EAAK,YAAY,EAAI;AAC5E,oBAAID,MAAyB,IAAI;AAE/B,wBAAME,IAAaJ,EAAME,CAAoB,EAAE;AAC/C,kBAAAF,EAAME,CAAoB,IAAI,EAAE,GAAGD,GAAS,IAAIG,EAAA;AAAA,gBAClD;AAEE,kBAAAJ,EAAM,KAAKC,CAAO;AAAA,cAEtB;AAEE,gBAAAD,EAAM,KAAKC,CAAO;AAIpB,cAAAD,EAAM,KAAK,CAACK,GAAGC,MACTD,EAAE,aAAaC,EAAE,WACZD,EAAE,WAAWC,EAAE,WAEjBD,EAAE,MAAM,cAAcC,EAAE,KAAK,CACrC;AAAA,YACH;AAAA,UAAA;AAAA,QACF;AAIF,YAAIC;AACJ,QAAIX,EAAQ,YACVW,IAAmBd;AAAA,UACjBF,EAAY,KAAK;AAAA,YACf;AAAA,YACA,EAAE,UAAUC,EAAI,UAAU,aAAaA,EAAI,YAAA;AAAA,YAC3C,CAACQ,MAAU;AAET,oBAAMI,IAAaJ,GAAO,IACpBQ,IAAqB;AAAA,gBACzB,GAAGZ;AAAA,gBACH,SAAS;AAAA,gBACT,OAAOJ,EAAI,cAAc,YAAY;AAAA,gBACrC,YAAY;AAAA,gBACZ,OAAOM;AAAA,gBACP,GAAIM,KAAc,EAAE,IAAIA,EAAA;AAAA;AAAA,cAAW;AAGrC,qBAAO,OAAOJ,GAAOQ,CAAkB;AAAA,YACzC;AAAA,UAAA;AAAA,QACF;AAKJ,YAAIC;AACJ,YAAIb,EAAQ,UAAU;AAQpB,cANwBL,EAAY,UAAU,YAAY,OAAO;AAAA,YAC/D,UAAUC,EAAI;AAAA,YACd,aAAaA,EAAI;AAAA,UAAA,CAClB,EAAEK,CAAK,MAGgB,QAAW;AACjC,kBAAMa,IAAc;AAAA,cAClB,GAAGd;AAAA,cACH,SAAS;AAAA,cACT,OAAOJ,EAAI,cAAc,YAAY;AAAA,cACrC,YAAY;AAAA,cACZ,OAAOM;AAAA,cACP,aAAa;AAAA,cACb,UAAU;AAAA,YAAA;AAGZ,YAAAW,IAAgBhB;AAAA,cACdF,EAAY,KAAK;AAAA,gBACf;AAAA,gBACA,EAAE,UAAUC,EAAI,UAAU,aAAaA,EAAI,YAAA;AAAA,gBAC3C,MAAMkB;AAAA,cAAA;AAAA,YACR;AAAA,UAEJ;AAGE,oBAAQ,IAAI,uEAAuE;AAIvF,YAAI;AACF,gBAAMhB;AAAA,QACR,SAASiB,GAAO;AAEd,UAAAZ,EAAM,KAAA,GACFQ,KACFA,EAAiB,KAAA,GAEfE,KACFA,EAAc,KAAA,GAEhB,QAAQ,MAAM,0BAA0BE,CAAK;AAAA,QAC/C;AAAA,MACF;AAAA,MACA,wBAAwB,CAACA,MAAeA,EAAM,MAAM;AAAA;AAAA,MAEpD,iBAAiB,CAACC,GAAIC,GAAI,EAAE,UAAAC,GAAU,aAAAC,GAAa,SAAAnB,QAAc;AAAA,QAC/D,EAAE,MAAM,QAAQ,IAAIA,EAAQ,GAAA;AAAA,QAC5BoB,EAAYF,GAAUC,CAAW;AAAA,MAAA;AAAA,IACnC;AAAA,IAEF,YAAY;AAAA,MACV,wBAAwB,CAACJ,MAAeA,EAAM,MAAM;AAAA,MACpD,iBAAiB,CAACC,GAAIC,GAAI,EAAE,UAAAC,GAAU,aAAAC,GAAa,QAAAE,QAAa;AAAA,QAC9D,EAAE,MAAM,QAAQ,IAAIA,EAAA;AAAA,QACpBD,EAAYF,GAAUC,CAAW;AAAA,MAAA;AAAA,IACnC;AAAA,IAEF,YAAY;AAAA,MACV,gBAAgB,OAAOvB,GAAK,EAAE,UAAAC,GAAU,gBAAAC,GAAgB,UAAAC,QAAe;AACrE,cAAM,EAAE,QAAAsB,GAAQ,aAAAF,GAAa,UAAAD,EAAA,IAAatB,GACpCK,IAAQF,EAAA,GAGRuB,IAAiB,CAAA;AAEvB,QAAAA,EAAQ;AAAA,UACNzB;AAAA,YACEF,EAAY,KAAK,gBAAgB,aAAa,EAAE,UAAAuB,GAAU,aAAAC,EAAA,GAAe,CAACf,MACjEA,EAAM,OAAO,CAACG,MAASA,EAAK,OAAOc,CAAM,CACjD;AAAA,UAAA;AAAA,QACH;AAIF,cAAME,IAAgB;AAAA,UACpB,EAAE,aAAAJ,EAAA;AAAA,UACF,EAAE,aAAa,OAAA;AAAA;AAAA,QAAU,GAErBK,IAAiB,CAAC,eAAe,gBAAgB;AAEvD,mBAAWC,KAASF;AAClB,qBAAWG,KAAaF,GAAgB;AACtC,kBAAMG,IAAchC,EAAY,UAAU+B,CAAS,EAAE,OAAO;AAAA,cAC1D,UAAAR;AAAA,cACA,aAAaO,EAAM;AAAA,YAAA,CACpB,EAAExB,CAAK;AAER,YAAI0B,GAAa,aAAaA,EAAY,MAAM,OAAON,KACrDC,EAAQ;AAAA,cACNzB;AAAA,gBACEF,EAAY,KAAK;AAAA,kBACf+B;AAAA,kBACA,EAAE,UAAAR,GAAU,aAAaO,EAAM,YAAA;AAAA,kBAC/B,MAAM;AAAA,gBAAA;AAAA,cACR;AAAA,YACF;AAAA,UAGN;AAGF,YAAI;AACF,gBAAM3B;AAAA,QACR,SAASiB,GAAO;AAEd,UAAAO,EAAQ,QAAQ,CAACnB,MAAUA,EAAM,MAAM,GACvC,QAAQ,MAAM,0BAA0BY,CAAK;AAAA,QAC/C;AAAA,MACF;AAAA,MACA,wBAAwB,CAACA,MAAeA,EAAM,MAAM;AAAA;AAAA,MAEpD,iBAAiB,CAACC,GAAIC,GAAI,EAAE,UAAAC,GAAU,aAAAC,GAAa,QAAAE,QAAa;AAAA,QAC9D,EAAE,MAAM,QAAQ,IAAIA,EAAA;AAAA,QACpBD,EAAYF,GAAUC,CAAW;AAAA,QACjCC,EAAYF,GAAU,MAAS;AAAA,MAAA;AAAA,IACjC;AAAA,IAEF,gBAAgB;AAAA,MACd,gBAAgB,OAAOtB,GAAK,EAAE,UAAAC,GAAU,gBAAAC,GAAgB,UAAAC,QAAe;AACrE,cAAM,EAAE,4BAAA6B,GAA4B,aAAAT,GAAa,UAAAD,EAAA,IAAatB,GACxD,EAAE,QAAAyB,MAAWO,GACb3B,IAAQF,EAAA,GAER8B,IAAqBlC,EAAY,UAAU,eAAe,OAAO;AAAA,UACrE,UAAAuB;AAAA,UACA,aAAAC;AAAA,QAAA,CACD,EAAElB,CAAK;AAGR,YAAI4B,GAAoB,aAAaA,EAAmB,MAAM,IAAI;AAEhE,gBAAM1B,IAAQN;AAAA,YACZF,EAAY,KAAK;AAAA,cACf;AAAA,cACA,EAAE,UAAAuB,GAAU,aAAAC,EAAA;AAAA,cACZ,CAACf,MAAU;AACT,oBAAIA,GAAO;AAMT,wBAAMG,IAJeZ,EAAY,UAAU,UAAU,OAAO;AAAA,oBAC1D,UAAAuB;AAAA,oBACA,aAAAC;AAAA,kBAAA,CACD,EAAElB,CAAK,GACmB,MAAM,KAAK,CAAC6B,MAAMA,EAAE,OAAOT,CAAM;AAE5D,kBAAId,IAEF,OAAO,OAAOH,GAAOG,CAAI,IAGzBH,EAAM,KAAKiB;AAAA,gBAEf;AAAA,cACF;AAAA,YAAA;AAAA,UACF;AAGF,cAAI;AACF,kBAAMvB;AAAA,UACR,SAASiB,GAAO;AAEd,YAAAZ,EAAM,KAAA,GACN,QAAQ,MAAM,+BAA+BY,CAAK;AAAA,UACpD;AAAA,QACF;AACE,kBAAQ;AAAA,YACN;AAAA,UAAA;AAAA,MAKN;AAAA,MACA,wBAAwB,CAACA,MAAeA,EAAM,MAAM;AAAA;AAAA,MAEpD,iBAAiB,CAACC,GAAIC,GAAI,EAAE,UAAAC,GAAU,aAAAC,GAAa,4BAAAS,QAAiC;AAAA,QAClF,EAAE,MAAM,QAAQ,IAAIA,EAA2B,OAAA;AAAA,QAC/CR,EAAYF,GAAUC,CAAW;AAAA,MAAA;AAAA,IACnC;AAAA,EACF;AAEJ,CAAC,GAEY;AAAA,EACX,uBAAAY;AAAA,EACA,uBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,2BAAAC;AACF,IAAIxC;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),se=require("clsx");require("../../containers/ContextMenu/ContextMenuContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("react-dom");require("../../containers/Feed/context/FeedContext.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const oe=require("../../context/DetailsPanelContext.cjs.js"),ae=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("lodash");require("../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const w=require("react-toastify");require("uuid");const d=require("../../util/versionUploadHelpers.cjs.js");require("../../util/pubsub.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("../AddonLoadingScreen/AddonLoadingScreen.cjs.js");require("../ThumbnailSimple/ThumbnailSimple.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");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/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");const qe=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");const le=require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.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/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");const ce=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("../ReviewablesList/ReviewablesList.styled.cjs.js");require("../ReviewablesList/ReviewablesUpload.styled.cjs.js");const de=require("../ReviewablesList/useReviewablesUpload.cjs.js");require("../ReviewableCard/ReviewableCard.cjs.js");require("../ReviewableProgressCard/ReviewableProgressCard.styled.cjs.js");require("../FileThumbnail/FileThumbnail.cjs.js");require("../Thumbnail/Thumbnail.styled.cjs.js");require("../Thumbnail/StackedThumbnails.cjs.js");const p=require("./EntityPanelUploader.styled.cjs.js"),pe=require("./Dropzone.cjs.js"),he=require("axios"),fe=require("./EntityPanelUploaderDialog.cjs.js");require("../SimpleFormDialog/SimpleFormDialog.cjs.js");require("../EntityPath/EntityPath.styled.cjs.js");require("../EntityPath/SegmentProvider.cjs.js");require("../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../DetailsPanelDetails/DetailsSection.cjs.js");require("../DetailsPanelDetails/FieldLabel.cjs.js");require("../Watchers/Watchers.cjs.js");require("../ProjectTableSettings/ProjectTableSettings.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("../SizeSlider/SizeSlider.cjs.js");require("../SettingsPanel/SettingsPanel.cjs.js");require("../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../AttributeEditor/components/MinMaxField.cjs.js");require("../EnumEditor/EnumEditor.styled.cjs.js");require("../SearchFilter/filterDates.cjs.js");require("../FeaturedVersionOrder/FeaturedVersionOrder.cjs.js");require("../Badge/Badge.cjs.js");require("../VersionUploader/components/UploadVersionDialog.cjs.js");require("../VersionUploader/context/VersionUploadContext.cjs.js");require("../Feedback/FeedbackContext.cjs.js");require("../Feedback/SupportBubble.cjs.js");require("../Chips/Chips.cjs.js");require("../LinksManager/LinksManager.styled.cjs.js");require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("../StyledLink/StyledLink.cjs.js");require("date-fns");require("../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../AccessUser/AccessUser.cjs.js");require("../../../../node_modules/match-sorter/dist/match-sorter.esm.cjs.js");require("../AccessSearchInput/AccessSearchInput.styled.cjs.js");require("../TableGridSwitch/TableGridSwitch.cjs.js");require("../SortingSetting/SortingSetting.styled.cjs.js");require("../EarlyPreview/EarlyPreview.cjs.js");require("../LegacyBadge/LegacyBadge.cjs.js");require("../Menu/Menu.styled.cjs.js");require("../Menu/MenuItem.cjs.js");require("../../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");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/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/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("../LinksManager/CellEditingDialog.cjs.js");require("../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableContext.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/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../containers/DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");const ge=require("../../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../PlayableIcon/PlayableIcon.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../containers/DetailsPanel/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");const me=[{id:"thumbnail",label:"Upload thumbnail",icon:"add_photo_alternate"},{id:"version",label:"Upload version",icon:"layers"}],xe=({children:H=[],entityType:T,entities:q=[],projectName:y,onUploaded:I,onVersionCreated:_})=>{const{dispatch:k}=oe.useDetailsPanelContext(),[S,h]=o.useState(!1),[b,f]=o.useState(null),c=o.useRef(0),[j,l]=o.useState(null),[L,v]=o.useState(0),[W,g]=o.useState(!1),[D,m]=o.useState(null),n=q.length===1?q[0]:null,C=n?.task?.id,E=n?.folder?.id,B=n?.product?.id,G=n?.id,P=!!(n&&T!=="representation"),{handleFileUpload:J}=de.useReviewablesUpload({projectName:y,versionId:G,taskId:C,folderId:E,productId:B,dispatch:k,onUpload:()=>{l(null),v(0)},onProgress:e=>{v(e)}}),K=me.filter(e=>e.id==="version"?P:!0),s=()=>{l(null),h(!1),f(null),c.current=0,v(0),g(!1),m(null)},Q=async e=>{if(!D||!n){g(!1),m(null);return}const r=d.sanitizeProductName(e);if(!r.trim()){w.toast.error("Product name must contain valid characters (letters, numbers, underscore, or hyphen)");return}try{if(!E)throw new Error("Folder ID is required to create a product");l("version");const i=await d.createProductHelper(z,y,{folderId:E,name:r,productType:"review"});g(!1),await F(D,i.id),m(null)}catch(i){d.handleUploadError(i,"creating product"),s()}},X=()=>{g(!1),m(null),s()},[Y]=ce.useCreateVersionMutation(),[z]=le.useCreateProductMutation(),V=async e=>{if(!P||!n)return w.toast.error("Please select exactly one version to upload reviewables"),s();const r=n.product?.id;if(!r){m(e),g(!0);return}await F(e,r)},F=async(e,r)=>{try{const i=d.getNextVersionNumber(n.product?.latestVersion),t=await d.createVersionHelper(Y,y,{productId:r,taskId:C,version:i});await J(e,t.id),s(),_?.(t.id)}catch(i){d.handleUploadError(i,"uploading version"),s()}},N=async(e=[])=>{if(h(!1),!q.length)return;const r=new Date().toISOString();let i=[];for(const t of e){const a=q.find(R=>R.id===t.id);if(!a)continue;t.thumbnailId;const x=t.users||[];i.push({id:a.id,projectName:a.projectName,data:{updatedAt:r},currentAssignees:x}),a.productId}try{await ee({operations:i,entityType:T}),I&&I(i)}catch(t){console.error("Error uploading thumbnail:",t)}},O=async e=>{if(!e)return s();try{if(!e.type.includes("image"))throw new Error("File is not an image");let r=[];for(const a of q){const{id:x,entityType:R,projectName:U}=a;if(!U)throw new Error("Project name is required");const ne=he.post(U&&`/api/projects/${U}/${R}s/${x}/thumbnail`,e,{onUploadProgress:M=>{v(Math.round(100*M.loaded/(M.total||e.size)))},headers:{"Content-Type":e.type}});r.push(ne)}const t=(await Promise.all(r)).map((a,x)=>({thumbnailId:a.data.id,id:q[x].id}));N(t),s()}catch(r){console.error(r),w.toast.error(r.message),s()}},[ee]=qe.useUpdateEntitiesMutation(),re=e=>{e.preventDefault(),c.current++,c.current===1&&h(!0)},ie=e=>{e.preventDefault(),c.current--,c.current===0&&(h(!1),f(null))},ue=e=>{e.preventDefault()},te=e=>{if(e.preventDefault(),c.current=0,h(!1),f(null),!(!e.dataTransfer.files||e.dataTransfer.files.length===0)){if(b==="thumbnail"){l("thumbnail");const r=e.dataTransfer.files[0];O(r)}if(b==="version"){l("version");const r=e.dataTransfer.files;V(r)}}},Z=async(e,r)=>{const i=e.target.files;!i||i.length===0||(r==="version"&&(l("version"),V(i)),r==="thumbnail"&&(l("thumbnail"),O(i[0])))},$=o.useRef(null),A=o.useRef(null);return u.jsxRuntimeExports.jsxs(ae.ThumbnailUploadProvider,{entities:q,handleThumbnailUpload:N,thumbnailInputRef:$,versionsInputRef:P?A:void 0,children:[u.jsxRuntimeExports.jsxs(p.DragAndDropWrapper,{className:se({dragging:S}),onDragEnter:re,onDragLeave:ie,onDragOver:ue,onDrop:te,children:[u.jsxRuntimeExports.jsx(ge.ThumbnailWrapper,{children:u.jsxRuntimeExports.jsx("div",{children:H})}),S&&u.jsxRuntimeExports.jsx(p.DropZones,{children:K.map(e=>u.jsxRuntimeExports.jsx(pe,{id:e.id,label:e.label,icon:e.icon,isActive:b===e.id,onDragOver:()=>f(e.id),onDragLeave:()=>f(null)},e.id))}),(j==="thumbnail"||j==="version")&&u.jsxRuntimeExports.jsxs(p.DropZones,{children:[u.jsxRuntimeExports.jsxs(p.UploadingProgress,{children:[u.jsxRuntimeExports.jsx(p.Progress,{style:{right:`${100-L}%`}}),u.jsxRuntimeExports.jsx("span",{className:"label",children:`Uploading ${j}...`})]}),u.jsxRuntimeExports.jsx(p.CancelButton,{icon:"close",variant:"text",onClick:s})]}),u.jsxRuntimeExports.jsx("input",{type:"file",onChange:e=>Z(e,"thumbnail"),ref:$}),u.jsxRuntimeExports.jsx("input",{type:"file",onChange:e=>Z(e,"version"),ref:A})]}),u.jsxRuntimeExports.jsx(fe,{isOpen:W,files:D,onSubmit:Q,onCancel:X})]})};exports.EntityPanelUploader=xe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../../../_virtual/jsx-runtime.cjs.js"),o=require("react"),se=require("clsx");require("../../containers/ContextMenu/ContextMenuContext.cjs.js");require("@ynput/ayon-react-components");;/* empty css */require("react-dom");require("../../containers/Feed/context/FeedContext.cjs.js");require("../../containers/Feed/components/Tooltips/UserTooltip/UserTooltip.styled.cjs.js");require("../../containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.styled.cjs.js");require("../../context/RemoteModulesContext.cjs.js");const oe=require("../../context/DetailsPanelContext.cjs.js"),qe=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("lodash");require("../../containers/Feed/components/ActivityCheckbox/ActivityCheckbox.styled.cjs.js");require("../../containers/Feed/components/ActivityReference/ActivityReference.styled.cjs.js");const w=require("react-toastify");require("uuid");const d=require("../../util/versionUploadHelpers.cjs.js");require("../../util/pubsub.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("../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("../AttributeEditor/components/MinMaxField.cjs.js");require("@dnd-kit/core");require("@dnd-kit/sortable");require("../EnumEditor/EnumEditor.styled.cjs.js");require("../Badge/Badge.cjs.js");require("../Chips/Chips.cjs.js");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/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");const ae=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");const le=require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.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/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");const ce=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("../DetailsPanelAttributes/DetailsPanelAttributesEditor.cjs.js");require("../DetailsPanelDetails/DetailsPanelDetails.cjs.js");require("../DetailsPanelDetails/DetailsSection.cjs.js");require("../DetailsPanelDetails/FieldLabel.cjs.js");require("../EarlyPreview/EarlyPreview.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholder.cjs.js");require("../EmptyPlaceholder/EmptyPlaceholderFlex.styled.cjs.js");const p=require("./EntityPanelUploader.styled.cjs.js"),de=require("./Dropzone.cjs.js"),pe=require("axios");require("../ReviewablesList/ReviewablesList.styled.cjs.js");require("../ReviewablesList/ReviewablesUpload.styled.cjs.js");const he=require("../ReviewablesList/useReviewablesUpload.cjs.js"),fe=require("./EntityPanelUploaderDialog.cjs.js");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("../LinksManager/LinksManager.styled.cjs.js");require("../../containers/EntityPickerDialog/EntityPickerDialog.cjs.js");require("date-fns");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("../SearchFilter/filterDates.cjs.js");require("../SettingsPanel/SettingsPanel.cjs.js");require("../SettingsPanel/SettingsPanelItemTemplate.cjs.js");require("../ShareOptionIcon/ShareOptionIcon.cjs.js");require("../SimpleFormDialog/SimpleFormDialog.cjs.js");require("../SortingSetting/SortingSetting.styled.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("../../containers/Feed/components/ActivityCategorySelect/CategoryTag.cjs.js");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/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/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("../LinksManager/CellEditingDialog.cjs.js");require("../../containers/ProjectTreeTable/context/DetailsPanelEntityContext.cjs.js");require("../../containers/ProjectTreeTable/context/SelectedRowsContext.cjs.js");require("../../containers/ProjectTreeTable/widgets/EmptyWidget.cjs.js");require("../../containers/ProjectTreeTable/widgets/ErrorWidget.cjs.js");require("../../containers/ProjectTreeTable/context/CellEditingContext.cjs.js");require("short-uuid");require("../../containers/ProjectTreeTable/context/SelectionCellsContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableQueriesContext.cjs.js");require("../../containers/ProjectTreeTable/context/ProjectTableContext.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/SimpleTable/SimpleTable.styled.cjs.js");require("@tanstack/match-sorter-utils");require("../../containers/SimpleTable/context/SimpleTableContext.cjs.js");require("../../containers/SimpleTable/SimpleTableRowTemplate.cjs.js");require("../../containers/Slicer/hooks/useTableDataBySlice.cjs.js");require("../../containers/Slicer/components/SlicerSearch.cjs.js");require("../../containers/Slicer/context/SlicerContext.cjs.js");require("../../containers/DetailsPanel/DetailsPanel.styled.cjs.js");require("../../containers/DetailsPanel/FeedFilters/FeedFilters.styled.cjs.js");const ge=require("../../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js");require("../PlayableIcon/PlayableIcon.cjs.js");require("../../containers/DetailsPanel/DetailsPanelFiles/DetailsPanelFiles.cjs.js");require("../../containers/DetailsPanel/DetailsPanelSlideOut/DetailsPanelSlideOut.styled.cjs.js");require("../../containers/DetailsPanel/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");const me=[{id:"thumbnail",label:"Upload thumbnail",icon:"add_photo_alternate"},{id:"version",label:"Upload version",icon:"layers"}],xe=({children:H=[],entityType:T,entities:a=[],projectName:y,onUploaded:I,onVersionCreated:_})=>{const{dispatch:k}=oe.useDetailsPanelContext(),[S,h]=o.useState(!1),[b,f]=o.useState(null),c=o.useRef(0),[j,l]=o.useState(null),[L,v]=o.useState(0),[W,g]=o.useState(!1),[D,m]=o.useState(null),n=a.length===1?a[0]:null,C=n?.task?.id,E=n?.folder?.id,B=n?.product?.id,G=n?.id,P=!!(n&&T!=="representation"),{handleFileUpload:J}=he.useReviewablesUpload({projectName:y,versionId:G,taskId:C,folderId:E,productId:B,dispatch:k,onUpload:()=>{l(null),v(0)},onProgress:e=>{v(e)}}),K=me.filter(e=>e.id==="version"?P:!0),s=()=>{l(null),h(!1),f(null),c.current=0,v(0),g(!1),m(null)},Q=async e=>{if(!D||!n){g(!1),m(null);return}const r=d.sanitizeProductName(e);if(!r.trim()){w.toast.error("Product name must contain valid characters (letters, numbers, underscore, or hyphen)");return}try{if(!E)throw new Error("Folder ID is required to create a product");l("version");const i=await d.createProductHelper(z,y,{folderId:E,name:r,productType:"review"});g(!1),await F(D,i.id),m(null)}catch(i){d.handleUploadError(i,"creating product"),s()}},X=()=>{g(!1),m(null),s()},[Y]=ce.useCreateVersionMutation(),[z]=le.useCreateProductMutation(),V=async e=>{if(!P||!n)return w.toast.error("Please select exactly one version to upload reviewables"),s();const r=n.product?.id;if(!r){m(e),g(!0);return}await F(e,r)},F=async(e,r)=>{try{const i=d.getNextVersionNumber(n.product?.latestVersion),t=await d.createVersionHelper(Y,y,{productId:r,taskId:C,version:i});await J(e,t.id),s(),_?.(t.id)}catch(i){d.handleUploadError(i,"uploading version"),s()}},N=async(e=[])=>{if(h(!1),!a.length)return;const r=new Date().toISOString();let i=[];for(const t of e){const q=a.find(R=>R.id===t.id);if(!q)continue;t.thumbnailId;const x=t.users||[];i.push({id:q.id,projectName:q.projectName,data:{updatedAt:r},currentAssignees:x}),q.productId}try{await ee({operations:i,entityType:T}),I&&I(i)}catch(t){console.error("Error uploading thumbnail:",t)}},O=async e=>{if(!e)return s();try{if(!e.type.includes("image"))throw new Error("File is not an image");let r=[];for(const q of a){const{id:x,entityType:R,projectName:U}=q;if(!U)throw new Error("Project name is required");const ne=pe.post(U&&`/api/projects/${U}/${R}s/${x}/thumbnail`,e,{onUploadProgress:M=>{v(Math.round(100*M.loaded/(M.total||e.size)))},headers:{"Content-Type":e.type}});r.push(ne)}const t=(await Promise.all(r)).map((q,x)=>({thumbnailId:q.data.id,id:a[x].id}));N(t),s()}catch(r){console.error(r),w.toast.error(r.message),s()}},[ee]=ae.useUpdateEntitiesMutation(),re=e=>{e.preventDefault(),c.current++,c.current===1&&h(!0)},ie=e=>{e.preventDefault(),c.current--,c.current===0&&(h(!1),f(null))},ue=e=>{e.preventDefault()},te=e=>{if(e.preventDefault(),c.current=0,h(!1),f(null),!(!e.dataTransfer.files||e.dataTransfer.files.length===0)){if(b==="thumbnail"){l("thumbnail");const r=e.dataTransfer.files[0];O(r)}if(b==="version"){l("version");const r=e.dataTransfer.files;V(r)}}},Z=async(e,r)=>{const i=e.target.files;!i||i.length===0||(r==="version"&&(l("version"),V(i)),r==="thumbnail"&&(l("thumbnail"),O(i[0])))},$=o.useRef(null),A=o.useRef(null);return u.jsxRuntimeExports.jsxs(qe.ThumbnailUploadProvider,{entities:a,handleThumbnailUpload:N,thumbnailInputRef:$,versionsInputRef:P?A:void 0,children:[u.jsxRuntimeExports.jsxs(p.DragAndDropWrapper,{className:se({dragging:S}),onDragEnter:re,onDragLeave:ie,onDragOver:ue,onDrop:te,children:[u.jsxRuntimeExports.jsx(ge.ThumbnailWrapper,{children:u.jsxRuntimeExports.jsx("div",{children:H})}),S&&u.jsxRuntimeExports.jsx(p.DropZones,{children:K.map(e=>u.jsxRuntimeExports.jsx(de,{id:e.id,label:e.label,icon:e.icon,isActive:b===e.id,onDragOver:()=>f(e.id),onDragLeave:()=>f(null)},e.id))}),(j==="thumbnail"||j==="version")&&u.jsxRuntimeExports.jsxs(p.DropZones,{children:[u.jsxRuntimeExports.jsxs(p.UploadingProgress,{children:[u.jsxRuntimeExports.jsx(p.Progress,{style:{right:`${100-L}%`}}),u.jsxRuntimeExports.jsx("span",{className:"label",children:`Uploading ${j}...`})]}),u.jsxRuntimeExports.jsx(p.CancelButton,{icon:"close",variant:"text",onClick:s})]}),u.jsxRuntimeExports.jsx("input",{type:"file",onChange:e=>Z(e,"thumbnail"),ref:$}),u.jsxRuntimeExports.jsx("input",{type:"file",onChange:e=>Z(e,"version"),ref:A})]}),u.jsxRuntimeExports.jsx(fe,{isOpen:W,files:D,onSubmit:Q,onCancel:X})]})};exports.EntityPanelUploader=xe;
|
|
2
2
|
//# sourceMappingURL=EntityPanelUploader.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPanelUploader.cjs.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 })\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.cjs.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 })\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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"}
|
|
@@ -49,9 +49,15 @@ import "../../containers/Feed/components/ActivityStatus/ActivityStatus.es.js";
|
|
|
49
49
|
import "../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.es.js";
|
|
50
50
|
import "../../containers/Feed/components/ActivityDate.es.js";
|
|
51
51
|
import "../AddonLoadingScreen/AddonLoadingScreen.es.js";
|
|
52
|
-
import "
|
|
53
|
-
import "../
|
|
54
|
-
import "../
|
|
52
|
+
import "../../../../node_modules/match-sorter/dist/match-sorter.esm.es.js";
|
|
53
|
+
import "../AccessSearchInput/AccessSearchInput.styled.es.js";
|
|
54
|
+
import "../AccessUser/AccessUser.es.js";
|
|
55
|
+
import "../AttributeEditor/components/MinMaxField.es.js";
|
|
56
|
+
import "@dnd-kit/core";
|
|
57
|
+
import "@dnd-kit/sortable";
|
|
58
|
+
import "../EnumEditor/EnumEditor.styled.es.js";
|
|
59
|
+
import "../Badge/Badge.es.js";
|
|
60
|
+
import "../Chips/Chips.es.js";
|
|
55
61
|
import "../../api/base/client.es.js";
|
|
56
62
|
import "../../api/generated/graphql.es.js";
|
|
57
63
|
import "../../api/generated/graphqlLinks.es.js";
|
|
@@ -137,59 +143,53 @@ import "../../api/queries/views/getViews.es.js";
|
|
|
137
143
|
import "../../api/queries/views/updateViews.es.js";
|
|
138
144
|
import "../../api/queries/watchers/getWatchers.es.js";
|
|
139
145
|
import "../../api/queries/uris/getUris.es.js";
|
|
140
|
-
import "
|
|
141
|
-
import "
|
|
146
|
+
import "../DetailsPanelAttributes/DetailsPanelAttributesEditor.es.js";
|
|
147
|
+
import "../DetailsPanelDetails/DetailsPanelDetails.es.js";
|
|
148
|
+
import "../DetailsPanelDetails/DetailsSection.es.js";
|
|
149
|
+
import "../DetailsPanelDetails/FieldLabel.es.js";
|
|
150
|
+
import "../EarlyPreview/EarlyPreview.es.js";
|
|
151
|
+
import "../EmptyPlaceholder/EmptyPlaceholder.es.js";
|
|
152
|
+
import "../EmptyPlaceholder/EmptyPlaceholderFlex.styled.es.js";
|
|
153
|
+
import { DragAndDropWrapper as vr, DropZones as L, UploadingProgress as br, Progress as Dr, CancelButton as yr } from "./EntityPanelUploader.styled.es.js";
|
|
154
|
+
import xr from "./Dropzone.es.js";
|
|
155
|
+
import Pr from "axios";
|
|
142
156
|
import "../ReviewablesList/ReviewablesList.styled.es.js";
|
|
143
157
|
import "../ReviewablesList/ReviewablesUpload.styled.es.js";
|
|
144
|
-
import { useReviewablesUpload as
|
|
145
|
-
import "../ReviewableCard/ReviewableCard.es.js";
|
|
146
|
-
import "../ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
|
|
147
|
-
import "../FileThumbnail/FileThumbnail.es.js";
|
|
148
|
-
import "../Thumbnail/Thumbnail.styled.es.js";
|
|
149
|
-
import "../Thumbnail/StackedThumbnails.es.js";
|
|
150
|
-
import { DragAndDropWrapper as br, DropZones as L, UploadingProgress as Dr, Progress as yr, CancelButton as xr } from "./EntityPanelUploader.styled.es.js";
|
|
151
|
-
import Pr from "./Dropzone.es.js";
|
|
152
|
-
import wr from "axios";
|
|
158
|
+
import { useReviewablesUpload as wr } from "../ReviewablesList/useReviewablesUpload.es.js";
|
|
153
159
|
import jr from "./EntityPanelUploaderDialog.es.js";
|
|
154
|
-
import "../SimpleFormDialog/SimpleFormDialog.es.js";
|
|
155
160
|
import "../EntityPath/EntityPath.styled.es.js";
|
|
156
161
|
import "../EntityPath/SegmentProvider.es.js";
|
|
157
|
-
import "../
|
|
158
|
-
import "../
|
|
159
|
-
import "../
|
|
160
|
-
import "../
|
|
161
|
-
import "../
|
|
162
|
-
import "../
|
|
162
|
+
import "../FeaturedVersionOrder/FeaturedVersionOrder.es.js";
|
|
163
|
+
import "../Feedback/FeedbackContext.es.js";
|
|
164
|
+
import "../Feedback/SupportBubble.es.js";
|
|
165
|
+
import "../FileThumbnail/FileThumbnail.es.js";
|
|
166
|
+
import "../LegacyBadge/LegacyBadge.es.js";
|
|
167
|
+
import "../LinksManager/LinksManager.styled.es.js";
|
|
168
|
+
import "../../containers/EntityPickerDialog/EntityPickerDialog.es.js";
|
|
169
|
+
import "date-fns";
|
|
163
170
|
import "../Powerpack/PowerpackButton.es.js";
|
|
164
171
|
import "../Powerpack/PricingLink.es.js";
|
|
165
172
|
import "../Powerpack/PowerpackDialog.styled.es.js";
|
|
166
173
|
import "../Powerpack/CTAButton.es.js";
|
|
167
174
|
import "../Powerpack/RequiredAddonVersion.es.js";
|
|
175
|
+
import "../ProjectTableSettings/ProjectTableSettings.es.js";
|
|
168
176
|
import "../SizeSlider/SizeSlider.es.js";
|
|
177
|
+
import "../ReviewableCard/ReviewableCard.es.js";
|
|
178
|
+
import "../ReviewableProgressCard/ReviewableProgressCard.styled.es.js";
|
|
179
|
+
import "../SearchFilter/filterDates.es.js";
|
|
169
180
|
import "../SettingsPanel/SettingsPanel.es.js";
|
|
170
181
|
import "../SettingsPanel/SettingsPanelItemTemplate.es.js";
|
|
171
|
-
import "../AttributeEditor/components/MinMaxField.es.js";
|
|
172
|
-
import "../EnumEditor/EnumEditor.styled.es.js";
|
|
173
|
-
import "../SearchFilter/filterDates.es.js";
|
|
174
|
-
import "../FeaturedVersionOrder/FeaturedVersionOrder.es.js";
|
|
175
|
-
import "../Badge/Badge.es.js";
|
|
176
|
-
import "../VersionUploader/components/UploadVersionDialog.es.js";
|
|
177
|
-
import "../VersionUploader/context/VersionUploadContext.es.js";
|
|
178
|
-
import "../Feedback/FeedbackContext.es.js";
|
|
179
|
-
import "../Feedback/SupportBubble.es.js";
|
|
180
|
-
import "../Chips/Chips.es.js";
|
|
181
|
-
import "../LinksManager/LinksManager.styled.es.js";
|
|
182
|
-
import "../../containers/EntityPickerDialog/EntityPickerDialog.es.js";
|
|
183
|
-
import "../StyledLink/StyledLink.es.js";
|
|
184
|
-
import "date-fns";
|
|
185
182
|
import "../ShareOptionIcon/ShareOptionIcon.es.js";
|
|
186
|
-
import "../
|
|
187
|
-
import "../../../../node_modules/match-sorter/dist/match-sorter.esm.es.js";
|
|
188
|
-
import "../AccessSearchInput/AccessSearchInput.styled.es.js";
|
|
189
|
-
import "../TableGridSwitch/TableGridSwitch.es.js";
|
|
183
|
+
import "../SimpleFormDialog/SimpleFormDialog.es.js";
|
|
190
184
|
import "../SortingSetting/SortingSetting.styled.es.js";
|
|
191
|
-
import "../
|
|
192
|
-
import "../
|
|
185
|
+
import "../StyledLink/StyledLink.es.js";
|
|
186
|
+
import "../TableGridSwitch/TableGridSwitch.es.js";
|
|
187
|
+
import "../Thumbnail/Thumbnail.styled.es.js";
|
|
188
|
+
import "../Thumbnail/StackedThumbnails.es.js";
|
|
189
|
+
import "../ThumbnailSimple/ThumbnailSimple.es.js";
|
|
190
|
+
import "../VersionUploader/components/UploadVersionDialog.es.js";
|
|
191
|
+
import "../VersionUploader/context/VersionUploadContext.es.js";
|
|
192
|
+
import "../Watchers/Watchers.es.js";
|
|
193
193
|
import "../Menu/Menu.styled.es.js";
|
|
194
194
|
import "../Menu/MenuItem.es.js";
|
|
195
195
|
import "../../containers/Feed/components/ActivityCategorySelect/CategoryTag.es.js";
|
|
@@ -235,6 +235,13 @@ import "../../containers/ProjectTreeTable/components/RowSelectionHeader.es.js";
|
|
|
235
235
|
import "../../containers/ProjectTreeTable/widgets/LoadMoreWidget.es.js";
|
|
236
236
|
import "../../containers/ProjectTreeTable/components/HeaderActionButton.es.js";
|
|
237
237
|
import "../../containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js";
|
|
238
|
+
import "../../containers/SimpleTable/SimpleTable.styled.es.js";
|
|
239
|
+
import "@tanstack/match-sorter-utils";
|
|
240
|
+
import "../../containers/SimpleTable/context/SimpleTableContext.es.js";
|
|
241
|
+
import "../../containers/SimpleTable/SimpleTableRowTemplate.es.js";
|
|
242
|
+
import "../../containers/Slicer/hooks/useTableDataBySlice.es.js";
|
|
243
|
+
import "../../containers/Slicer/components/SlicerSearch.es.js";
|
|
244
|
+
import "../../containers/Slicer/context/SlicerContext.es.js";
|
|
238
245
|
import "../../containers/DetailsPanel/DetailsPanel.styled.es.js";
|
|
239
246
|
import "../../containers/DetailsPanel/FeedFilters/FeedFilters.styled.es.js";
|
|
240
247
|
import { ThumbnailWrapper as Ur } from "../../containers/DetailsPanel/DetailsPanelHeader/DetailsPanelHeader.styled.es.js";
|
|
@@ -252,7 +259,7 @@ import "../../containers/Views/ViewsMenu/ViewsMenu.es.js";
|
|
|
252
259
|
const Ir = [
|
|
253
260
|
{ id: "thumbnail", label: "Upload thumbnail", icon: "add_photo_alternate" },
|
|
254
261
|
{ id: "version", label: "Upload version", icon: "layers" }
|
|
255
|
-
],
|
|
262
|
+
], gm = ({
|
|
256
263
|
children: W = [],
|
|
257
264
|
entityType: E,
|
|
258
265
|
entities: a = [],
|
|
@@ -260,7 +267,7 @@ const Ir = [
|
|
|
260
267
|
onUploaded: C,
|
|
261
268
|
onVersionCreated: q
|
|
262
269
|
}) => {
|
|
263
|
-
const { dispatch: B } = ar(), [R, c] = d(!1), [D, u] = d(null), l = I(0), [y, s] = d(null), [H, v] = d(0), [_, f] = d(!1), [x, h] = d(null), m = a.length === 1 ? a[0] : null, F = m?.task?.id, P = m?.folder?.id, G = m?.product?.id, J = m?.id, w = !!(m && E !== "representation"), { handleFileUpload: K } =
|
|
270
|
+
const { dispatch: B } = ar(), [R, c] = d(!1), [D, u] = d(null), l = I(0), [y, s] = d(null), [H, v] = d(0), [_, f] = d(!1), [x, h] = d(null), m = a.length === 1 ? a[0] : null, F = m?.task?.id, P = m?.folder?.id, G = m?.product?.id, J = m?.id, w = !!(m && E !== "representation"), { handleFileUpload: K } = wr({
|
|
264
271
|
projectName: b,
|
|
265
272
|
versionId: J,
|
|
266
273
|
taskId: F,
|
|
@@ -355,7 +362,7 @@ const Ir = [
|
|
|
355
362
|
for (const n of a) {
|
|
356
363
|
const { id: g, entityType: j, projectName: U } = n;
|
|
357
364
|
if (!U) throw new Error("Project name is required");
|
|
358
|
-
const er =
|
|
365
|
+
const er = Pr.post(
|
|
359
366
|
U && `/api/projects/${U}/${j}s/${g}/thumbnail`,
|
|
360
367
|
r,
|
|
361
368
|
{
|
|
@@ -409,7 +416,7 @@ const Ir = [
|
|
|
409
416
|
versionsInputRef: w ? $ : void 0,
|
|
410
417
|
children: [
|
|
411
418
|
/* @__PURE__ */ i.jsxs(
|
|
412
|
-
|
|
419
|
+
vr,
|
|
413
420
|
{
|
|
414
421
|
className: nr({ dragging: R }),
|
|
415
422
|
onDragEnter: or,
|
|
@@ -419,7 +426,7 @@ const Ir = [
|
|
|
419
426
|
children: [
|
|
420
427
|
/* @__PURE__ */ i.jsx(Ur, { children: /* @__PURE__ */ i.jsx("div", { children: W }) }),
|
|
421
428
|
R && /* @__PURE__ */ i.jsx(L, { children: Q.map((r) => /* @__PURE__ */ i.jsx(
|
|
422
|
-
|
|
429
|
+
xr,
|
|
423
430
|
{
|
|
424
431
|
id: r.id,
|
|
425
432
|
label: r.label,
|
|
@@ -431,9 +438,9 @@ const Ir = [
|
|
|
431
438
|
r.id
|
|
432
439
|
)) }),
|
|
433
440
|
(y === "thumbnail" || y === "version") && /* @__PURE__ */ i.jsxs(L, { children: [
|
|
434
|
-
/* @__PURE__ */ i.jsxs(
|
|
441
|
+
/* @__PURE__ */ i.jsxs(br, { children: [
|
|
435
442
|
/* @__PURE__ */ i.jsx(
|
|
436
|
-
|
|
443
|
+
Dr,
|
|
437
444
|
{
|
|
438
445
|
style: {
|
|
439
446
|
right: `${100 - H}%`
|
|
@@ -442,7 +449,7 @@ const Ir = [
|
|
|
442
449
|
),
|
|
443
450
|
/* @__PURE__ */ i.jsx("span", { className: "label", children: `Uploading ${y}...` })
|
|
444
451
|
] }),
|
|
445
|
-
/* @__PURE__ */ i.jsx(
|
|
452
|
+
/* @__PURE__ */ i.jsx(yr, { icon: "close", variant: "text", onClick: e })
|
|
446
453
|
] }),
|
|
447
454
|
/* @__PURE__ */ i.jsx(
|
|
448
455
|
"input",
|
|
@@ -477,6 +484,6 @@ const Ir = [
|
|
|
477
484
|
);
|
|
478
485
|
};
|
|
479
486
|
export {
|
|
480
|
-
|
|
487
|
+
gm as EntityPanelUploader
|
|
481
488
|
};
|
|
482
489
|
//# sourceMappingURL=EntityPanelUploader.es.js.map
|