@ynput/ayon-frontend-shared 0.3.11 → 0.3.13
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 +24 -22
- package/dist/DetailsPanel.es.js.map +1 -1
- package/dist/ProjectTreeTable.cjs.js +1 -1
- package/dist/ProjectTreeTable.es.js +95 -96
- package/dist/Slicer.cjs.js +1 -1
- package/dist/Slicer.es.js +12 -11
- package/dist/Slicer.es.js.map +1 -1
- package/dist/_virtual/index.cjs3.js +1 -1
- package/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.es3.js +4 -4
- 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/_virtual/index.es6.js +2 -2
- package/dist/api.cjs.js +1 -1
- package/dist/api.es.js +138 -136
- package/dist/api.es.js.map +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +21 -17
- package/dist/components.es.js.map +1 -1
- package/dist/hooks.cjs.js +1 -1
- package/dist/hooks.es.js +20 -18
- package/dist/hooks.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +11 -9
- package/dist/index.es.js.map +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.cjs.js +1 -1
- package/dist/node_modules/match-sorter/dist/match-sorter.esm.es.js +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/primereact/skeleton/skeleton.esm.cjs.js +2 -0
- package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.cjs.js.map +1 -0
- package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.es.js +51 -0
- package/dist/shared/node_modules/primereact/skeleton/skeleton.esm.es.js.map +1 -0
- package/dist/shared/node_modules/prop-types/index.cjs.js +1 -1
- package/dist/shared/node_modules/prop-types/index.es.js +1 -1
- package/dist/shared/node_modules/react-is/index.cjs.js +1 -1
- package/dist/shared/node_modules/react-is/index.es.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.cjs.js +1 -1
- package/dist/shared/node_modules/react-transition-group/esm/CSSTransition.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/generated/addons.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/addons.es.js.map +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js +1 -1
- package/dist/shared/src/api/generated/projects.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/projects.es.js +36 -1
- package/dist/shared/src/api/generated/projects.es.js.map +1 -1
- package/dist/shared/src/api/generated/views.cjs.js.map +1 -1
- package/dist/shared/src/api/generated/views.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js +3 -2
- package/dist/shared/src/api/queries/entities/patchDetailsPanel.es.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js +4 -3
- package/dist/shared/src/api/queries/entities/transformDetailsPanelData.es.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/overview/updateOverview.es.js +7 -6
- package/dist/shared/src/api/queries/overview/updateOverview.es.js.map +1 -1
- package/dist/shared/src/api/queries/project/getProject.cjs.js +1 -1
- package/dist/shared/src/api/queries/project/getProject.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/project/getProject.es.js +4 -6
- package/dist/shared/src/api/queries/project/getProject.es.js.map +1 -1
- package/dist/shared/src/api/queries/tasks/getTasks.cjs.js +2 -0
- package/dist/shared/src/api/queries/tasks/getTasks.cjs.js.map +1 -0
- package/dist/shared/src/api/queries/tasks/getTasks.es.js +14 -0
- package/dist/shared/src/api/queries/tasks/getTasks.es.js.map +1 -0
- package/dist/shared/src/api/queries/users/getUsers.cjs.js +3 -3
- package/dist/shared/src/api/queries/users/getUsers.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/users/getUsers.es.js +19 -18
- package/dist/shared/src/api/queries/users/getUsers.es.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.cjs.js.map +1 -1
- package/dist/shared/src/api/queries/versions/updateVersions.es.js +9 -7
- package/dist/shared/src/api/queries/versions/updateVersions.es.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js +3 -2
- package/dist/shared/src/components/DetailsDialog/DetailsDialog.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js +3 -3
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js +76 -71
- package/dist/shared/src/components/DetailsPanelAttributes/components/RenderFieldWidget.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js +25 -24
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.cjs.js +12 -5
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.es.js +9 -2
- package/dist/shared/src/components/DetailsPanelDetails/DescriptionSection.styles.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js +3 -2
- package/dist/shared/src/components/DetailsPanelDetails/DetailsPanelDetails.es.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.cjs.js.map +1 -1
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js +3 -2
- package/dist/shared/src/components/DetailsPanelDetails/hooks/useEntityEditing.es.js.map +1 -1
- package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js +2 -0
- package/dist/shared/src/components/EntityIcon/EntityIcon.cjs.js.map +1 -0
- package/dist/shared/src/components/EntityIcon/EntityIcon.es.js +37 -0
- package/dist/shared/src/components/EntityIcon/EntityIcon.es.js.map +1 -0
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.cjs.js.map +1 -1
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js +30 -27
- package/dist/shared/src/components/EntityPanelUploader/EntityPanelUploader.es.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.cjs.js.map +1 -1
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js +5 -4
- package/dist/shared/src/components/Feedback/FeedbackContext.es.js.map +1 -1
- package/dist/shared/src/components/FileThumbnail/FileThumbnail.cjs.js +13 -3
- package/dist/shared/src/components/FileThumbnail/FileThumbnail.cjs.js.map +1 -1
- package/dist/shared/src/components/FileThumbnail/FileThumbnail.es.js +29 -19
- package/dist/shared/src/components/FileThumbnail/FileThumbnail.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 +48 -195
- package/dist/shared/src/components/LinksManager/AddNewLinks.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js +28 -31
- package/dist/shared/src/components/LinksManager/LinkManagerItem.es.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.cjs.js.map +1 -1
- package/dist/shared/src/components/LinksManager/LinksManager.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 +4 -2
- package/dist/shared/src/components/LinksManager/hooks/useUpdateLinks.es.js.map +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.cjs.js.map +1 -1
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.es.js +3 -2
- package/dist/shared/src/components/ListAttributeForm/ListAttributeForm.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 +4 -2
- package/dist/shared/src/components/Powerpack/PowerpackDialog.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js +6 -4
- package/dist/shared/src/components/ProjectTableSettings/ProjectTableSettings.es.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js +4 -2
- package/dist/shared/src/components/ProjectTableSettings/TableSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js +4 -2
- package/dist/shared/src/components/RemotePage/ProjectPageRemote.es.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js +4 -2
- package/dist/shared/src/components/RemotePage/RemotePageWrapper.es.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.cjs.js.map +1 -1
- package/dist/shared/src/components/RenameForm/RenameForm.es.js +4 -2
- package/dist/shared/src/components/RenameForm/RenameForm.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.es.js +11 -10
- package/dist/shared/src/components/ReviewablesList/EditReviewableDialog.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 +4 -2
- package/dist/shared/src/components/ReviewablesList/ReviewablesList.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js +5 -3
- package/dist/shared/src/components/ReviewablesList/ReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js +4 -2
- package/dist/shared/src/components/ReviewablesList/SortableReviewableCard.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.cjs.js.map +1 -1
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js +3 -2
- package/dist/shared/src/components/ReviewablesList/useReviewablesUpload.es.js.map +1 -1
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js +2 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.cjs.js.map +1 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js +349 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.es.js.map +1 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js +74 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.cjs.js.map +1 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js +84 -0
- package/dist/shared/src/components/ReviewablesSelector/ReviewablesSelector.styled.es.js.map +1 -0
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.cjs.js.map +1 -1
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.es.js +121 -105
- package/dist/shared/src/components/SearchFilter/useBuildFilterOptions.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 +4 -2
- package/dist/shared/src/components/SimpleFormDialog/SimpleFormDialog.es.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.cjs.js.map +1 -1
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js +3 -2
- package/dist/shared/src/components/SubtasksManager/SubtasksManagerWrapper.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js +2 -2
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js +5 -4
- package/dist/shared/src/components/Thumbnail/StackedThumbnails.es.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.cjs.js.map +1 -1
- package/dist/shared/src/components/Thumbnail/Thumbnail.es.js +27 -26
- package/dist/shared/src/components/Thumbnail/Thumbnail.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js +2 -2
- package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js +13 -13
- package/dist/shared/src/components/VersionUploader/components/UploadVersionDialog.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js +30 -6
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js +190 -95
- package/dist/shared/src/components/VersionUploader/components/UploadVersionForm.es.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.cjs.js.map +1 -1
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js +138 -128
- package/dist/shared/src/components/VersionUploader/context/VersionUploadContext.es.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.cjs.js +1 -1
- package/dist/shared/src/components/Watchers/Watchers.cjs.js.map +1 -1
- package/dist/shared/src/components/Watchers/Watchers.es.js +3 -2
- package/dist/shared/src/components/Watchers/Watchers.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 +4 -2
- package/dist/shared/src/containers/Actions/ActionConfigDialog.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/Actions.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.es.js +39 -39
- package/dist/shared/src/containers/Actions/Actions.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.styled.cjs.js +12 -16
- package/dist/shared/src/containers/Actions/Actions.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/Actions.styled.es.js +15 -19
- package/dist/shared/src/containers/Actions/Actions.styled.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.es.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js +8 -5
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.es.js +12 -9
- package/dist/shared/src/containers/Actions/ActionsDropdown/ActionsDropdown.styled.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 +4 -2
- package/dist/shared/src/containers/Actions/InteractiveActionDialog.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/DetailsPanel.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFiles/DetailsPanelFiles.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js +5 -3
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelFloating/DetailsPanelFloating.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js +122 -125
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelHeader/DetailsPanelHeader.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelSlideOut/DetailsPanelSlideOut.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js +29 -25
- package/dist/shared/src/containers/DetailsPanel/components/DetailsPanelTabs/DetailsPanelTabs.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js +4 -5
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js +18 -17
- package/dist/shared/src/containers/DetailsPanel/components/TabHeaderAndFilters/TabHeaderAndFilters.styled.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/containers/DetailsPanelSubtasks.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js +4 -2
- package/dist/shared/src/containers/DetailsPanel/containers/FeedContextWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/containers/FeedWrapper.es.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.cjs.js.map +1 -1
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.es.js +3 -2
- package/dist/shared/src/containers/DetailsPanel/hooks/useGetEntityPath.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 +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/EntityPickerDialog.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTable.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableHeader.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js +4 -2
- package/dist/shared/src/containers/EntityPickerDialog/components/EntityTypeTableSearch.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js +5 -3
- package/dist/shared/src/containers/EntityPickerDialog/hooks/useGetEntityPickerData.es.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js +32 -24
- package/dist/shared/src/containers/EntityPickerDialog/util/buildEntityPickerTableData.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/Feed.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/Feed.es.js +132 -128
- package/dist/shared/src/containers/Feed/Feed.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js +4 -2
- package/dist/shared/src/containers/Feed/components/ActivityCheckbox/ActivityCheckbox.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityComment.es.js +89 -86
- 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 +4 -2
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityCommentMenu.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js +3 -3
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.es.js +28 -27
- package/dist/shared/src/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.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 +4 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/CommentInput.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.cjs.js +6 -2
- package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.es.js +64 -54
- package/dist/shared/src/containers/Feed/components/CommentInput/InputMarkdownConvert.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.cjs.js +5 -5
- package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.es.js +37 -35
- package/dist/shared/src/containers/Feed/components/CommentInput/quillToMarkdown.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.es.js +21 -21
- package/dist/shared/src/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.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 +4 -2
- package/dist/shared/src/containers/Feed/components/Tooltips/EntityTooltip/EntityTooltip.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js +6 -5
- package/dist/shared/src/containers/Feed/context/FeedContext.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js +3 -2
- package/dist/shared/src/containers/Feed/hooks/useGetFeedActivitiesData.es.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.cjs.js.map +1 -1
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.es.js +7 -6
- package/dist/shared/src/containers/Feed/mentionHelpers/getMentionTasks.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 +505 -489
- 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 +246 -229
- package/dist/shared/src/containers/ProjectTreeTable/buildTreeTableColumns.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnDndProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/ColumnHeaderMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/components/GroupSettingsFallback.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/CellEditingProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ClipboardContext.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js +147 -146
- package/dist/shared/src/containers/ProjectTreeTable/context/ColumnSettingsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.es.js +5 -4
- package/dist/shared/src/containers/ProjectTreeTable/context/ProjectDataContext.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 +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/context/SelectionCellsProvider.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useBuildGroupByTableData.es.js +51 -49
- 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 +58 -64
- 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 +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCellContextMenu.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useCheckSelectedCellsVisible.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useColumnGroupBy.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.es.js +3 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useFetchOverviewData.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 +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGetGroupedFields.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useGroupBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useKeyboardNavigation.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useMoveEntities.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/usePasteLinks.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useQueryFilters.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/hooks/useSortBySettings.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js +15 -13
- package/dist/shared/src/containers/ProjectTreeTable/utils/cellUtils.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js +2 -2
- package/dist/shared/src/containers/ProjectTreeTable/utils/getTableFieldOptions.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.es.js +24 -38
- package/dist/shared/src/containers/ProjectTreeTable/utils/linksToTableData.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 +25 -22
- package/dist/shared/src/containers/ProjectTreeTable/widgets/CellWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js +6 -6
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js +17 -16
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EntityNameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js +8 -8
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.es.js +50 -49
- package/dist/shared/src/containers/ProjectTreeTable/widgets/EnumCellValue.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 +6 -4
- package/dist/shared/src/containers/ProjectTreeTable/widgets/LinksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/NameWidget.es.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.cjs.js.map +1 -1
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js +4 -2
- package/dist/shared/src/containers/ProjectTreeTable/widgets/SubtasksWidget.es.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.cjs.js.map +1 -1
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js +4 -2
- package/dist/shared/src/containers/RepresentationsList/RepresentationsList.es.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js +4 -2
- package/dist/shared/src/containers/SimpleTable/SimpleTable.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js +4 -2
- package/dist/shared/src/containers/Slicer/components/SlicerSearch.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js +5 -4
- package/dist/shared/src/containers/Slicer/context/SlicerContext.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js +10 -8
- package/dist/shared/src/containers/Slicer/hooks/useTableDataBySlice.es.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.cjs.js.map +1 -1
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js +3 -2
- package/dist/shared/src/containers/Slicer/hooks/useUsersTable.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js +3 -2
- package/dist/shared/src/containers/Views/ViewsDialogContainer/ViewsDialogContainer.es.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.es.js +4 -2
- package/dist/shared/src/containers/Views/ViewsMenuContainer/BaseViewsTags.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 +5 -4
- package/dist/shared/src/containers/Views/context/ViewsContext.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js +3 -2
- package/dist/shared/src/containers/Views/hooks/useBaseViewMutations.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js +4 -3
- package/dist/shared/src/containers/Views/hooks/useBuildViewMenuItems.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js +3 -2
- package/dist/shared/src/containers/Views/hooks/useSaveViewFromCurrent.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js +3 -2
- package/dist/shared/src/containers/Views/hooks/useSelectedView.es.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.cjs.js.map +1 -1
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.es.js +3 -2
- package/dist/shared/src/containers/Views/hooks/useViewsMutations.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 +3 -2
- package/dist/shared/src/containers/Views/utils/viewUpdateHelper.es.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/AddonProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/AddonProjectContext.es.js +5 -4
- package/dist/shared/src/context/AddonProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js +1 -1
- package/dist/shared/src/context/DetailsPanelContext.cjs.js.map +1 -1
- package/dist/shared/src/context/DetailsPanelContext.es.js +89 -82
- package/dist/shared/src/context/DetailsPanelContext.es.js.map +1 -1
- package/dist/shared/src/context/GlobalContext.cjs.js +1 -1
- package/dist/shared/src/context/GlobalContext.cjs.js.map +1 -1
- package/dist/shared/src/context/GlobalContext.es.js +5 -4
- package/dist/shared/src/context/GlobalContext.es.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js +1 -1
- package/dist/shared/src/context/PowerpackContext.cjs.js.map +1 -1
- package/dist/shared/src/context/PowerpackContext.es.js +7 -6
- package/dist/shared/src/context/PowerpackContext.es.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectContext.es.js +64 -61
- package/dist/shared/src/context/ProjectContext.es.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.cjs.js.map +1 -1
- package/dist/shared/src/context/ProjectFoldersContext.es.js +5 -4
- package/dist/shared/src/context/ProjectFoldersContext.es.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/RemoteModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/RemoteModulesContext.es.js +5 -4
- package/dist/shared/src/context/RemoteModulesContext.es.js.map +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.cjs.js +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.cjs.js.map +1 -1
- package/dist/shared/src/context/SubtasksModulesContext.es.js +5 -4
- package/dist/shared/src/context/SubtasksModulesContext.es.js.map +1 -1
- package/dist/shared/src/context/UriContext.cjs.js +1 -1
- package/dist/shared/src/context/UriContext.cjs.js.map +1 -1
- package/dist/shared/src/context/UriContext.es.js +6 -5
- package/dist/shared/src/context/UriContext.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 +6 -4
- package/dist/shared/src/context/WebsocketContext.es.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.cjs.js +1 -1
- package/dist/shared/src/hooks/useActionTriggers.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useActionTriggers.es.js +3 -2
- package/dist/shared/src/hooks/useActionTriggers.es.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useEntityUpdate.es.js +3 -2
- package/dist/shared/src/hooks/useEntityUpdate.es.js.map +1 -1
- package/dist/shared/src/hooks/useGetEntityGroups.cjs.js +1 -1
- package/dist/shared/src/hooks/useGetEntityGroups.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useGetEntityGroups.es.js +3 -2
- package/dist/shared/src/hooks/useGetEntityGroups.es.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js +3 -2
- package/dist/shared/src/hooks/useGroupByRemoteModules.es.js.map +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.cjs.js +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useHierarchyTable.es.js +25 -24
- package/dist/shared/src/hooks/useHierarchyTable.es.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useScopedStatuses.es.js +5 -4
- package/dist/shared/src/hooks/useScopedStatuses.es.js.map +1 -1
- package/dist/shared/src/hooks/useScopedTypes.cjs.js +2 -0
- package/dist/shared/src/hooks/useScopedTypes.cjs.js.map +1 -0
- package/dist/shared/src/hooks/useScopedTypes.es.js +109 -0
- package/dist/shared/src/hooks/useScopedTypes.es.js.map +1 -0
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.cjs.js.map +1 -1
- package/dist/shared/src/hooks/useUserProjectConfig.es.js +3 -2
- package/dist/shared/src/hooks/useUserProjectConfig.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 +61 -60
- package/dist/shared/src/util/columnConfigConverter.es.js.map +1 -1
- package/dist/shared/src/util/iconUtils.cjs.js +2 -0
- package/dist/shared/src/util/iconUtils.cjs.js.map +1 -0
- package/dist/shared/src/util/iconUtils.es.js +18 -0
- package/dist/shared/src/util/iconUtils.es.js.map +1 -0
- package/dist/shared/src/util/isHTMLElement.cjs.js +2 -0
- package/dist/shared/src/util/isHTMLElement.cjs.js.map +1 -0
- package/dist/shared/src/util/isHTMLElement.es.js +5 -0
- package/dist/shared/src/util/isHTMLElement.es.js.map +1 -0
- package/dist/shared/src/util/versionUploadHelpers.cjs.js.map +1 -1
- package/dist/shared/src/util/versionUploadHelpers.es.js.map +1 -1
- package/dist/types/api/generated/addons.d.ts +4 -0
- package/dist/types/api/generated/enums.d.ts +2 -0
- package/dist/types/api/generated/projects.d.ts +71 -3
- package/dist/types/api/generated/views.d.ts +2 -0
- package/dist/types/api/queries/project/getProject.d.ts +4 -185
- package/dist/types/api/queries/project/updateProject.d.ts +11 -11
- package/dist/types/api/queries/tasks/getTasks.d.ts +185 -0
- package/dist/types/api/queries/tasks/index.d.ts +1 -0
- package/dist/types/api/queries/versions/updateVersions.d.ts +185 -1
- package/dist/types/components/EntityIcon/EntityIcon.d.ts +10 -0
- package/dist/types/components/EntityIcon/index.d.ts +1 -0
- package/dist/types/components/LinksManager/LinksManager.d.ts +1 -0
- package/dist/types/components/ReviewablesSelector/ReviewablesSelector.d.ts +12 -0
- package/dist/types/components/ReviewablesSelector/ReviewablesSelector.styled.d.ts +8 -0
- package/dist/types/components/ReviewablesSelector/index.d.ts +2 -0
- package/dist/types/components/Thumbnail/StackedThumbnails.d.ts +1 -0
- package/dist/types/components/Thumbnail/Thumbnail.d.ts +3 -2
- package/dist/types/components/VersionUploader/context/VersionUploadContext.d.ts +14 -2
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/containers/EntityPickerDialog/util/buildEntityPickerTableData.d.ts +1 -0
- package/dist/types/containers/Feed/components/ActivityComment/ActivityMarkdownComponents.d.ts +2 -1
- package/dist/types/containers/Feed/components/CommentMentionSelect/CommentMentionSelect.d.ts +1 -0
- package/dist/types/containers/Feed/mentionHelpers/getMentionTasks.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/types/project.d.ts +1 -0
- package/dist/types/containers/ProjectTreeTable/utils/linksToTableData.d.ts +2 -12
- package/dist/types/containers/ProjectTreeTable/widgets/EntityNameWidget.d.ts +3 -3
- package/dist/types/containers/ProjectTreeTable/widgets/EnumCellValue.d.ts +2 -1
- package/dist/types/containers/Slicer/hooks/useProjectAnatomySlices.d.ts +0 -1
- package/dist/types/context/ProjectContext.d.ts +1 -2
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/useHierarchyTable.d.ts +2 -1
- package/dist/types/hooks/useScopedTypes.d.ts +4 -0
- package/dist/types/util/iconUtils.d.ts +4 -0
- package/dist/types/util/index.d.ts +2 -0
- package/dist/types/util/isHTMLElement.d.ts +2 -0
- package/dist/types/util/versionUploadHelpers.d.ts +1 -0
- package/dist/util.cjs.js +1 -1
- package/dist/util.es.js +20 -18
- package/dist/util.es.js.map +1 -1
- package/package.json +2 -1
|
@@ -132,6 +132,7 @@ import "../../api/queries/review/getReview.es.js";
|
|
|
132
132
|
import "../../api/queries/review/updateReview.es.js";
|
|
133
133
|
import "../../api/queries/share/share.es.js";
|
|
134
134
|
import "../../api/queries/system/getSystem.es.js";
|
|
135
|
+
import "../../api/queries/tasks/getTasks.es.js";
|
|
135
136
|
import "../../api/queries/tasks/updateTasks.es.js";
|
|
136
137
|
import "../../api/queries/userDashboard/getUserDashboard.es.js";
|
|
137
138
|
import "../../api/queries/users/getUsers.es.js";
|
|
@@ -155,10 +156,10 @@ import vr from "./Dropzone.es.js";
|
|
|
155
156
|
import br from "axios";
|
|
156
157
|
import "../ReviewablesList/ReviewablesList.styled.es.js";
|
|
157
158
|
import "uuid";
|
|
158
|
-
import { sanitizeProductName as
|
|
159
|
+
import { sanitizeProductName as yr, createProductHelper as Dr, handleUploadError as B, getNextVersionNumber as xr, createVersionHelper as wr } from "../../util/versionUploadHelpers.es.js";
|
|
159
160
|
import "../../util/pubsub.es.js";
|
|
160
161
|
import "../ReviewablesList/ReviewablesUpload.styled.es.js";
|
|
161
|
-
import { useReviewablesUpload as
|
|
162
|
+
import { useReviewablesUpload as Pr } from "../ReviewablesList/useReviewablesUpload.es.js";
|
|
162
163
|
import jr from "./EntityPanelUploaderDialog.es.js";
|
|
163
164
|
import "../EntityPath/EntityPath.styled.es.js";
|
|
164
165
|
import "../EntityPath/SegmentProvider.es.js";
|
|
@@ -204,6 +205,7 @@ import "../VersionUploader/context/VersionUploadContext.es.js";
|
|
|
204
205
|
import "../Watchers/Watchers.es.js";
|
|
205
206
|
import "../Menu/Menu.styled.es.js";
|
|
206
207
|
import "../Menu/MenuItem.es.js";
|
|
208
|
+
import "../ReviewablesSelector/ReviewablesSelector.styled.es.js";
|
|
207
209
|
import "../../containers/Feed/components/ActivityReference/ActivityReference.styled.es.js";
|
|
208
210
|
import "../../containers/Feed/components/ActivityStatus/ActivityStatus.es.js";
|
|
209
211
|
import "../../containers/Feed/components/ActivityHeader/ActivityHeader.styled.es.js";
|
|
@@ -266,35 +268,35 @@ import "../../containers/Views/ViewsMenu/ViewsMenu.es.js";
|
|
|
266
268
|
const Ir = [
|
|
267
269
|
{ id: "thumbnail", label: "Upload thumbnail", icon: "add_photo_alternate" },
|
|
268
270
|
{ id: "version", label: "Upload version", icon: "layers" }
|
|
269
|
-
],
|
|
270
|
-
children:
|
|
271
|
+
], Um = ({
|
|
272
|
+
children: L = [],
|
|
271
273
|
entityType: E,
|
|
272
274
|
entities: a = [],
|
|
273
275
|
projectName: b,
|
|
274
276
|
onUploaded: C,
|
|
275
|
-
onVersionCreated:
|
|
277
|
+
onVersionCreated: W
|
|
276
278
|
}) => {
|
|
277
|
-
const { dispatch:
|
|
279
|
+
const { dispatch: q } = ar(), [R, c] = d(!1), [y, u] = d(null), l = I(0), [D, 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, w = m?.folder?.id, G = m?.product?.id, J = m?.id, P = !!(m && E !== "representation"), { handleFileUpload: K } = Pr({
|
|
278
280
|
projectName: b,
|
|
279
281
|
versionId: J,
|
|
280
282
|
taskId: F,
|
|
281
|
-
folderId:
|
|
283
|
+
folderId: w,
|
|
282
284
|
productId: G,
|
|
283
|
-
dispatch:
|
|
285
|
+
dispatch: q,
|
|
284
286
|
onUpload: () => {
|
|
285
287
|
s(null), v(0);
|
|
286
288
|
},
|
|
287
289
|
onProgress: (r) => {
|
|
288
290
|
v(r);
|
|
289
291
|
}
|
|
290
|
-
}), Q = Ir.filter((r) => r.id === "version" ?
|
|
292
|
+
}), Q = Ir.filter((r) => r.id === "version" ? P : !0), e = () => {
|
|
291
293
|
s(null), c(!1), u(null), l.current = 0, v(0), f(!1), h(null);
|
|
292
294
|
}, X = async (r) => {
|
|
293
295
|
if (!x || !m) {
|
|
294
296
|
f(!1), h(null);
|
|
295
297
|
return;
|
|
296
298
|
}
|
|
297
|
-
const t =
|
|
299
|
+
const t = yr(r);
|
|
298
300
|
if (!t.trim()) {
|
|
299
301
|
T.error(
|
|
300
302
|
"Product name must contain valid characters (letters, numbers, underscore, or hyphen)"
|
|
@@ -302,23 +304,24 @@ const Ir = [
|
|
|
302
304
|
return;
|
|
303
305
|
}
|
|
304
306
|
try {
|
|
305
|
-
if (!
|
|
307
|
+
if (!w)
|
|
306
308
|
throw new Error("Folder ID is required to create a product");
|
|
307
309
|
s("version");
|
|
308
|
-
const o = await
|
|
309
|
-
folderId:
|
|
310
|
+
const o = await Dr(rr, b, {
|
|
311
|
+
folderId: w,
|
|
310
312
|
name: t,
|
|
311
|
-
productType: "review"
|
|
313
|
+
productType: "review",
|
|
312
314
|
// default product type for uploaded files
|
|
315
|
+
productBaseType: "review"
|
|
313
316
|
});
|
|
314
317
|
f(!1), await N(x, o.id), h(null);
|
|
315
318
|
} catch (o) {
|
|
316
|
-
|
|
319
|
+
B(o, "creating product"), e();
|
|
317
320
|
}
|
|
318
321
|
}, Y = () => {
|
|
319
322
|
f(!1), h(null), e();
|
|
320
323
|
}, [z] = cr(), [rr] = dr(), V = async (r) => {
|
|
321
|
-
if (!
|
|
324
|
+
if (!P || !m)
|
|
322
325
|
return T.error("Please select exactly one version to upload reviewables"), e();
|
|
323
326
|
const t = m.product?.id;
|
|
324
327
|
if (!t) {
|
|
@@ -328,15 +331,15 @@ const Ir = [
|
|
|
328
331
|
await N(r, t);
|
|
329
332
|
}, N = async (r, t) => {
|
|
330
333
|
try {
|
|
331
|
-
const o = xr(m.product?.latestVersion), p = await
|
|
334
|
+
const o = xr(m.product?.latestVersion), p = await wr(z, b, {
|
|
332
335
|
productId: t,
|
|
333
336
|
taskId: F,
|
|
334
337
|
// previous version could have a taskId or we are uploading on a task
|
|
335
338
|
version: o
|
|
336
339
|
});
|
|
337
|
-
await K(r, p.id), e(),
|
|
340
|
+
await K(r, p.id), e(), W?.(p.id);
|
|
338
341
|
} catch (o) {
|
|
339
|
-
|
|
342
|
+
B(o, "uploading version"), e();
|
|
340
343
|
}
|
|
341
344
|
}, S = async (r = []) => {
|
|
342
345
|
if (c(!1), !a.length)
|
|
@@ -399,12 +402,12 @@ const Ir = [
|
|
|
399
402
|
r.preventDefault();
|
|
400
403
|
}, mr = (r) => {
|
|
401
404
|
if (r.preventDefault(), l.current = 0, c(!1), u(null), !(!r.dataTransfer.files || r.dataTransfer.files.length === 0)) {
|
|
402
|
-
if (
|
|
405
|
+
if (y === "thumbnail") {
|
|
403
406
|
s("thumbnail");
|
|
404
407
|
const t = r.dataTransfer.files[0];
|
|
405
408
|
A(t);
|
|
406
409
|
}
|
|
407
|
-
if (
|
|
410
|
+
if (y === "version") {
|
|
408
411
|
s("version");
|
|
409
412
|
const t = r.dataTransfer.files;
|
|
410
413
|
V(t);
|
|
@@ -420,7 +423,7 @@ const Ir = [
|
|
|
420
423
|
entities: a,
|
|
421
424
|
handleThumbnailUpload: S,
|
|
422
425
|
thumbnailInputRef: Z,
|
|
423
|
-
versionsInputRef:
|
|
426
|
+
versionsInputRef: P ? $ : void 0,
|
|
424
427
|
children: [
|
|
425
428
|
/* @__PURE__ */ i.jsxs(
|
|
426
429
|
ur,
|
|
@@ -431,20 +434,20 @@ const Ir = [
|
|
|
431
434
|
onDragOver: pr,
|
|
432
435
|
onDrop: mr,
|
|
433
436
|
children: [
|
|
434
|
-
/* @__PURE__ */ i.jsx(Ur, { children: /* @__PURE__ */ i.jsx("div", { children:
|
|
437
|
+
/* @__PURE__ */ i.jsx(Ur, { children: /* @__PURE__ */ i.jsx("div", { children: L }) }),
|
|
435
438
|
R && /* @__PURE__ */ i.jsx(k, { children: Q.map((r) => /* @__PURE__ */ i.jsx(
|
|
436
439
|
vr,
|
|
437
440
|
{
|
|
438
441
|
id: r.id,
|
|
439
442
|
label: r.label,
|
|
440
443
|
icon: r.icon,
|
|
441
|
-
isActive:
|
|
444
|
+
isActive: y === r.id,
|
|
442
445
|
onDragOver: () => u(r.id),
|
|
443
446
|
onDragLeave: () => u(null)
|
|
444
447
|
},
|
|
445
448
|
r.id
|
|
446
449
|
)) }),
|
|
447
|
-
(
|
|
450
|
+
(D === "thumbnail" || D === "version") && /* @__PURE__ */ i.jsxs(k, { children: [
|
|
448
451
|
/* @__PURE__ */ i.jsxs(fr, { children: [
|
|
449
452
|
/* @__PURE__ */ i.jsx(
|
|
450
453
|
hr,
|
|
@@ -454,7 +457,7 @@ const Ir = [
|
|
|
454
457
|
}
|
|
455
458
|
}
|
|
456
459
|
),
|
|
457
|
-
/* @__PURE__ */ i.jsx("span", { className: "label", children: `Uploading ${
|
|
460
|
+
/* @__PURE__ */ i.jsx("span", { className: "label", children: `Uploading ${D}...` })
|
|
458
461
|
] }),
|
|
459
462
|
/* @__PURE__ */ i.jsx(gr, { icon: "close", variant: "text", onClick: e })
|
|
460
463
|
] }),
|
|
@@ -491,6 +494,6 @@ const Ir = [
|
|
|
491
494
|
);
|
|
492
495
|
};
|
|
493
496
|
export {
|
|
494
|
-
|
|
497
|
+
Um as EntityPanelUploader
|
|
495
498
|
};
|
|
496
499
|
//# sourceMappingURL=EntityPanelUploader.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPanelUploader.es.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploader.tsx"],"sourcesContent":["import { ChangeEvent, useRef, useState } from 'react'\nimport clsx from 'clsx'\n\nimport { ThumbnailWrapper } from '@shared/containers'\nimport {\n useCreateVersionMutation,\n useUpdateEntitiesMutation,\n useCreateProductMutation,\n} from '@shared/api'\nimport * as Styled from './EntityPanelUploader.styled'\nimport { ThumbnailUploadProvider } from '../../context/ThumbnailUploaderContext'\nimport Dropzone, { DropzoneType } from './Dropzone'\nimport axios from 'axios'\nimport { toast } from 'react-toastify'\nimport { useReviewablesUpload } from '../ReviewablesList'\nimport { useDetailsPanelContext } from '@shared/context'\nimport EntityPanelUploaderDialog from './EntityPanelUploaderDialog'\nimport {\n sanitizeProductName,\n createProductHelper,\n createVersionHelper,\n getNextVersionNumber,\n handleUploadError,\n} from '@shared/util'\n\ntype Operation = {\n id: string\n projectName: string\n currentAssignees: any[]\n data: { updatedAt: string }\n}\nexport type EntityPanelUploaderProps = {\n entityType: string\n entities: any[]\n projectName: any\n children?: JSX.Element | JSX.Element[]\n onUploaded?: (operations: Operation[]) => void\n resetFileUploadState?: () => void\n onVersionCreated?: (versionId: string) => void\n}\n\ntype UploadType = 'thumbnail' | 'version'\nconst dropZones: (DropzoneType & { id: UploadType })[] = [\n { id: 'thumbnail', label: 'Upload thumbnail', icon: 'add_photo_alternate' },\n { id: 'version', label: 'Upload version', icon: 'layers' },\n]\n\nexport const EntityPanelUploader = ({\n children = [],\n entityType,\n entities = [],\n projectName,\n onUploaded,\n onVersionCreated,\n}: EntityPanelUploaderProps) => {\n const { dispatch } = useDetailsPanelContext()\n // Dragging and dropping state\n const [isDraggingFile, setIsDraggingFile] = useState(false)\n const [draggingZone, setDraggingZone] = useState<UploadType | null>(null)\n const dragCounterRef = useRef(0)\n\n // Uploading state\n const [uploadingType, setUploadingType] = useState<UploadType | null>(null)\n const [progress, setProgress] = useState(0)\n\n // Dialog state for product creation\n const [showProductDialog, setShowProductDialog] = useState(false)\n const [pendingFiles, setPendingFiles] = useState<FileList | null>(null)\n\n // Check if we have exactly one entity selected\n const singleEntity = entities.length === 1 ? entities[0] : null\n // extra all entity IDs for the single version entity\n const taskId: string | undefined = singleEntity?.task?.id\n const folderId: string | undefined = singleEntity?.folder?.id\n const productId: string | undefined = singleEntity?.product?.id\n const versionId: string | undefined = singleEntity?.id\n const canUploadVersions = Boolean(singleEntity && entityType !== 'representation')\n\n // Use the custom hook for reviewable upload logic (only when single version)\n const { handleFileUpload: uploadReviewableFiles } = useReviewablesUpload({\n projectName,\n versionId: versionId,\n taskId: taskId,\n folderId: folderId,\n productId: productId,\n dispatch,\n onUpload: () => {\n setUploadingType(null)\n setProgress(0)\n },\n onProgress: (progress) => {\n setProgress(progress)\n },\n })\n\n // Filter drop zones based on whether we can upload reviewables\n const availableDropZones = dropZones.filter((zone) => {\n if (zone.id === 'version') {\n return canUploadVersions\n }\n return true\n })\n\n const resetState = () => {\n setUploadingType(null)\n setIsDraggingFile(false)\n setDraggingZone(null)\n dragCounterRef.current = 0\n setProgress(0)\n setShowProductDialog(false)\n setPendingFiles(null)\n }\n\n // Handle dialog submission - create product and upload version\n const handleDialogSubmit = async (productName: string) => {\n if (!pendingFiles || !singleEntity) {\n setShowProductDialog(false)\n setPendingFiles(null)\n return\n }\n\n const sanitizedName = sanitizeProductName(productName)\n\n if (!sanitizedName.trim()) {\n toast.error(\n 'Product name must contain valid characters (letters, numbers, underscore, or hyphen)',\n )\n return\n }\n\n try {\n if (!folderId) {\n throw new Error('Folder ID is required to create a product')\n }\n setUploadingType('version')\n\n // Create the product\n const productRes = await createProductHelper(createProduct, projectName, {\n folderId: folderId,\n name: sanitizedName,\n productType: 'review', // default product type for uploaded files\n })\n\n // Close dialog and proceed with version upload\n setShowProductDialog(false)\n await uploadVersionWithProduct(pendingFiles, productRes.id)\n setPendingFiles(null)\n } catch (error: any) {\n handleUploadError(error, 'creating product')\n resetState()\n }\n }\n\n // Handle dialog cancellation\n const handleDialogCancel = () => {\n setShowProductDialog(false)\n setPendingFiles(null)\n resetState()\n }\n\n const [createVersion] = useCreateVersionMutation()\n const [createProduct] = useCreateProductMutation()\n // Handle version/reviewable file upload\n const handleVersionUpload = async (files: FileList) => {\n if (!canUploadVersions || !singleEntity) {\n toast.error('Please select exactly one version to upload reviewables')\n return resetState()\n }\n\n const productId = singleEntity.product?.id\n if (!productId) {\n // Show dialog to create product first\n setPendingFiles(files)\n setShowProductDialog(true)\n return\n }\n\n // If we have a productId, proceed with upload\n await uploadVersionWithProduct(files, productId)\n }\n\n // Helper function to handle the actual version upload\n const uploadVersionWithProduct = async (files: FileList, productId: string) => {\n try {\n const nextVersion = getNextVersionNumber(singleEntity!.product?.latestVersion)\n\n // create a new version\n const versionRes = await createVersionHelper(createVersion, projectName, {\n productId,\n taskId, // previous version could have a taskId or we are uploading on a task\n version: nextVersion,\n })\n\n await uploadReviewableFiles(files, versionRes.id)\n // The hook handles success callbacks, just reset our local state\n resetState()\n\n // update entity panel to focus the new version\n onVersionCreated?.(versionRes.id)\n } catch (error: any) {\n handleUploadError(error, 'uploading version')\n resetState()\n }\n }\n\n // once the file has been uploaded, we need to patch the entities with the new thumbnail\n const handleThumbnailFileUploaded = async (thumbnails: any[] = []) => {\n // always set isDragginle to false\n setIsDraggingFile(false)\n\n // check something was actually uploaded\n if (!entities.length) {\n return\n }\n\n // patching the updatedAt will force a refresh of the thumbnail url\n const newUpdatedAt = new Date().toISOString()\n\n let operations: Operation[] = []\n let versionPatches = []\n\n for (const entity of thumbnails) {\n const entityToPatch = entities.find((e) => e.id === entity.id)\n if (!entityToPatch) continue\n const thumbnailId = entity.thumbnailId\n const currentAssignees = entity.users || []\n\n operations.push({\n id: entityToPatch.id,\n projectName: entityToPatch.projectName,\n data: { updatedAt: newUpdatedAt },\n currentAssignees,\n })\n\n const versionPatch = {\n productId: entityToPatch.productId,\n versionUpdatedAt: newUpdatedAt,\n versionThumbnailId: thumbnailId,\n }\n\n versionPatches.push(versionPatch)\n }\n\n try {\n await updateEntities({ operations, entityType })\n onUploaded && onUploaded(operations)\n } catch (error) {\n console.error('Error uploading thumbnail:', error)\n }\n }\n\n const handleUploadThumbnail = async (file: File) => {\n if (!file) return resetState()\n\n try {\n // check file is an image\n if (!file.type.includes('image')) {\n throw new Error('File is not an image')\n }\n\n let promises = []\n for (const entity of entities) {\n const { id, entityType, projectName } = entity\n\n if (!projectName) throw new Error('Project name is required')\n\n const promise = axios.post(\n projectName && `/api/projects/${projectName}/${entityType}s/${id}/thumbnail`,\n file,\n {\n onUploadProgress: (e) => {\n setProgress(Math.round((100 * e.loaded) / (e.total || file.size)))\n },\n headers: {\n 'Content-Type': file.type,\n },\n },\n )\n\n promises.push(promise)\n }\n\n const res = await Promise.all(promises)\n\n const updatedEntities = res.map((res, i) => ({\n thumbnailId: res.data.id as string,\n id: entities[i].id,\n }))\n\n handleThumbnailFileUploaded(updatedEntities)\n resetState()\n } catch (error: any) {\n console.error(error)\n toast.error(error.message)\n resetState()\n }\n }\n\n const [updateEntities] = useUpdateEntitiesMutation()\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current++\n if (dragCounterRef.current === 1) {\n setIsDraggingFile(true)\n }\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current--\n if (dragCounterRef.current === 0) {\n setIsDraggingFile(false)\n setDraggingZone(null)\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current = 0\n setIsDraggingFile(false)\n setDraggingZone(null)\n\n if (!e.dataTransfer.files || e.dataTransfer.files.length === 0) {\n return\n }\n\n if (draggingZone === 'thumbnail') {\n setUploadingType('thumbnail')\n const file = e.dataTransfer.files[0]\n // try to upload the thumbnail\n handleUploadThumbnail(file)\n }\n\n if (draggingZone === 'version') {\n setUploadingType('version')\n const files = e.dataTransfer.files\n // try to upload the reviewables using the hook\n handleVersionUpload(files)\n }\n }\n\n // upload thumbnail from input (right click on thumbnail)\n const handleInputUpload = async (event: ChangeEvent<HTMLInputElement>, type: UploadType) => {\n const files = event.target.files\n if (!files || files.length === 0) {\n return\n }\n\n if (type === 'version') {\n setUploadingType('version')\n handleVersionUpload(files)\n }\n if (type === 'thumbnail') {\n setUploadingType('thumbnail')\n handleUploadThumbnail(files[0])\n }\n }\n\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n\n return (\n <ThumbnailUploadProvider\n entities={entities}\n handleThumbnailUpload={handleThumbnailFileUploaded}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={canUploadVersions ? versionsInputRef : undefined}\n >\n <Styled.DragAndDropWrapper\n className={clsx({ dragging: isDraggingFile })}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <ThumbnailWrapper>\n <div>{children}</div>\n </ThumbnailWrapper>\n {isDraggingFile && (\n <Styled.DropZones>\n {availableDropZones.map((zone) => (\n <Dropzone\n key={zone.id}\n id={zone.id}\n label={zone.label}\n icon={zone.icon}\n isActive={draggingZone === zone.id}\n onDragOver={() => setDraggingZone(zone.id)}\n onDragLeave={() => setDraggingZone(null)}\n />\n ))}\n </Styled.DropZones>\n )}\n {(uploadingType === 'thumbnail' || uploadingType === 'version') && (\n <Styled.DropZones>\n <Styled.UploadingProgress>\n <Styled.Progress\n style={{\n right: `${100 - progress}%`,\n }}\n />\n <span className=\"label\">{`Uploading ${uploadingType}...`}</span>\n </Styled.UploadingProgress>\n <Styled.CancelButton icon={'close'} variant=\"text\" onClick={resetState} />\n </Styled.DropZones>\n )}\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'thumbnail')}\n ref={thumbnailInputRef}\n />\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'version')}\n ref={versionsInputRef}\n />\n </Styled.DragAndDropWrapper>\n\n {/* Product creation dialog */}\n <EntityPanelUploaderDialog\n isOpen={showProductDialog}\n files={pendingFiles}\n onSubmit={handleDialogSubmit}\n onCancel={handleDialogCancel}\n />\n </ThumbnailUploadProvider>\n )\n}\n"],"names":["dropZones","EntityPanelUploader","children","entityType","entities","projectName","onUploaded","onVersionCreated","dispatch","useDetailsPanelContext","isDraggingFile","setIsDraggingFile","useState","draggingZone","setDraggingZone","dragCounterRef","useRef","uploadingType","setUploadingType","progress","setProgress","showProductDialog","setShowProductDialog","pendingFiles","setPendingFiles","singleEntity","taskId","folderId","productId","versionId","canUploadVersions","uploadReviewableFiles","useReviewablesUpload","availableDropZones","zone","resetState","handleDialogSubmit","productName","sanitizedName","sanitizeProductName","toast","productRes","createProductHelper","createProduct","uploadVersionWithProduct","error","handleUploadError","handleDialogCancel","createVersion","useCreateVersionMutation","useCreateProductMutation","handleVersionUpload","files","nextVersion","getNextVersionNumber","versionRes","createVersionHelper","handleThumbnailFileUploaded","thumbnails","newUpdatedAt","operations","entity","entityToPatch","e","currentAssignees","updateEntities","handleUploadThumbnail","file","promises","id","promise","axios","updatedEntities","res","i","useUpdateEntitiesMutation","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleInputUpload","event","type","thumbnailInputRef","versionsInputRef","jsxs","ThumbnailUploadProvider","Styled.DragAndDropWrapper","clsx","jsx","ThumbnailWrapper","Styled.DropZones","Dropzone","Styled.UploadingProgress","Styled.Progress","Styled.CancelButton","EntityPanelUploaderDialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EntityPanelUploader.es.js","sources":["../../../../../src/components/EntityPanelUploader/EntityPanelUploader.tsx"],"sourcesContent":["import { ChangeEvent, useRef, useState } from 'react'\nimport clsx from 'clsx'\n\nimport { ThumbnailWrapper } from '@shared/containers'\nimport {\n useCreateVersionMutation,\n useUpdateEntitiesMutation,\n useCreateProductMutation,\n} from '@shared/api'\nimport * as Styled from './EntityPanelUploader.styled'\nimport { ThumbnailUploadProvider } from '../../context/ThumbnailUploaderContext'\nimport Dropzone, { DropzoneType } from './Dropzone'\nimport axios from 'axios'\nimport { toast } from 'react-toastify'\nimport { useReviewablesUpload } from '../ReviewablesList'\nimport { useDetailsPanelContext } from '@shared/context'\nimport EntityPanelUploaderDialog from './EntityPanelUploaderDialog'\nimport {\n sanitizeProductName,\n createProductHelper,\n createVersionHelper,\n getNextVersionNumber,\n handleUploadError,\n} from '@shared/util'\n\ntype Operation = {\n id: string\n projectName: string\n currentAssignees: any[]\n data: { updatedAt: string }\n}\nexport type EntityPanelUploaderProps = {\n entityType: string\n entities: any[]\n projectName: any\n children?: JSX.Element | JSX.Element[]\n onUploaded?: (operations: Operation[]) => void\n resetFileUploadState?: () => void\n onVersionCreated?: (versionId: string) => void\n}\n\ntype UploadType = 'thumbnail' | 'version'\nconst dropZones: (DropzoneType & { id: UploadType })[] = [\n { id: 'thumbnail', label: 'Upload thumbnail', icon: 'add_photo_alternate' },\n { id: 'version', label: 'Upload version', icon: 'layers' },\n]\n\nexport const EntityPanelUploader = ({\n children = [],\n entityType,\n entities = [],\n projectName,\n onUploaded,\n onVersionCreated,\n}: EntityPanelUploaderProps) => {\n const { dispatch } = useDetailsPanelContext()\n // Dragging and dropping state\n const [isDraggingFile, setIsDraggingFile] = useState(false)\n const [draggingZone, setDraggingZone] = useState<UploadType | null>(null)\n const dragCounterRef = useRef(0)\n\n // Uploading state\n const [uploadingType, setUploadingType] = useState<UploadType | null>(null)\n const [progress, setProgress] = useState(0)\n\n // Dialog state for product creation\n const [showProductDialog, setShowProductDialog] = useState(false)\n const [pendingFiles, setPendingFiles] = useState<FileList | null>(null)\n\n // Check if we have exactly one entity selected\n const singleEntity = entities.length === 1 ? entities[0] : null\n // extra all entity IDs for the single version entity\n const taskId: string | undefined = singleEntity?.task?.id\n const folderId: string | undefined = singleEntity?.folder?.id\n const productId: string | undefined = singleEntity?.product?.id\n const versionId: string | undefined = singleEntity?.id\n const canUploadVersions = Boolean(singleEntity && entityType !== 'representation')\n\n // Use the custom hook for reviewable upload logic (only when single version)\n const { handleFileUpload: uploadReviewableFiles } = useReviewablesUpload({\n projectName,\n versionId: versionId,\n taskId: taskId,\n folderId: folderId,\n productId: productId,\n dispatch,\n onUpload: () => {\n setUploadingType(null)\n setProgress(0)\n },\n onProgress: (progress) => {\n setProgress(progress)\n },\n })\n\n // Filter drop zones based on whether we can upload reviewables\n const availableDropZones = dropZones.filter((zone) => {\n if (zone.id === 'version') {\n return canUploadVersions\n }\n return true\n })\n\n const resetState = () => {\n setUploadingType(null)\n setIsDraggingFile(false)\n setDraggingZone(null)\n dragCounterRef.current = 0\n setProgress(0)\n setShowProductDialog(false)\n setPendingFiles(null)\n }\n\n // Handle dialog submission - create product and upload version\n const handleDialogSubmit = async (productName: string) => {\n if (!pendingFiles || !singleEntity) {\n setShowProductDialog(false)\n setPendingFiles(null)\n return\n }\n\n const sanitizedName = sanitizeProductName(productName)\n\n if (!sanitizedName.trim()) {\n toast.error(\n 'Product name must contain valid characters (letters, numbers, underscore, or hyphen)',\n )\n return\n }\n\n try {\n if (!folderId) {\n throw new Error('Folder ID is required to create a product')\n }\n setUploadingType('version')\n\n // Create the product\n const productRes = await createProductHelper(createProduct, projectName, {\n folderId: folderId,\n name: sanitizedName,\n productType: 'review', // default product type for uploaded files\n productBaseType: 'review',\n })\n\n // Close dialog and proceed with version upload\n setShowProductDialog(false)\n await uploadVersionWithProduct(pendingFiles, productRes.id)\n setPendingFiles(null)\n } catch (error: any) {\n handleUploadError(error, 'creating product')\n resetState()\n }\n }\n\n // Handle dialog cancellation\n const handleDialogCancel = () => {\n setShowProductDialog(false)\n setPendingFiles(null)\n resetState()\n }\n\n const [createVersion] = useCreateVersionMutation()\n const [createProduct] = useCreateProductMutation()\n // Handle version/reviewable file upload\n const handleVersionUpload = async (files: FileList) => {\n if (!canUploadVersions || !singleEntity) {\n toast.error('Please select exactly one version to upload reviewables')\n return resetState()\n }\n\n const productId = singleEntity.product?.id\n if (!productId) {\n // Show dialog to create product first\n setPendingFiles(files)\n setShowProductDialog(true)\n return\n }\n\n // If we have a productId, proceed with upload\n await uploadVersionWithProduct(files, productId)\n }\n\n // Helper function to handle the actual version upload\n const uploadVersionWithProduct = async (files: FileList, productId: string) => {\n try {\n const nextVersion = getNextVersionNumber(singleEntity!.product?.latestVersion)\n\n // create a new version\n const versionRes = await createVersionHelper(createVersion, projectName, {\n productId,\n taskId, // previous version could have a taskId or we are uploading on a task\n version: nextVersion,\n })\n\n await uploadReviewableFiles(files, versionRes.id)\n // The hook handles success callbacks, just reset our local state\n resetState()\n\n // update entity panel to focus the new version\n onVersionCreated?.(versionRes.id)\n } catch (error: any) {\n handleUploadError(error, 'uploading version')\n resetState()\n }\n }\n\n // once the file has been uploaded, we need to patch the entities with the new thumbnail\n const handleThumbnailFileUploaded = async (thumbnails: any[] = []) => {\n // always set isDragginle to false\n setIsDraggingFile(false)\n\n // check something was actually uploaded\n if (!entities.length) {\n return\n }\n\n // patching the updatedAt will force a refresh of the thumbnail url\n const newUpdatedAt = new Date().toISOString()\n\n let operations: Operation[] = []\n let versionPatches = []\n\n for (const entity of thumbnails) {\n const entityToPatch = entities.find((e) => e.id === entity.id)\n if (!entityToPatch) continue\n const thumbnailId = entity.thumbnailId\n const currentAssignees = entity.users || []\n\n operations.push({\n id: entityToPatch.id,\n projectName: entityToPatch.projectName,\n data: { updatedAt: newUpdatedAt },\n currentAssignees,\n })\n\n const versionPatch = {\n productId: entityToPatch.productId,\n versionUpdatedAt: newUpdatedAt,\n versionThumbnailId: thumbnailId,\n }\n\n versionPatches.push(versionPatch)\n }\n\n try {\n await updateEntities({ operations, entityType })\n onUploaded && onUploaded(operations)\n } catch (error) {\n console.error('Error uploading thumbnail:', error)\n }\n }\n\n const handleUploadThumbnail = async (file: File) => {\n if (!file) return resetState()\n\n try {\n // check file is an image\n if (!file.type.includes('image')) {\n throw new Error('File is not an image')\n }\n\n let promises = []\n for (const entity of entities) {\n const { id, entityType, projectName } = entity\n\n if (!projectName) throw new Error('Project name is required')\n\n const promise = axios.post(\n projectName && `/api/projects/${projectName}/${entityType}s/${id}/thumbnail`,\n file,\n {\n onUploadProgress: (e) => {\n setProgress(Math.round((100 * e.loaded) / (e.total || file.size)))\n },\n headers: {\n 'Content-Type': file.type,\n },\n },\n )\n\n promises.push(promise)\n }\n\n const res = await Promise.all(promises)\n\n const updatedEntities = res.map((res, i) => ({\n thumbnailId: res.data.id as string,\n id: entities[i].id,\n }))\n\n handleThumbnailFileUploaded(updatedEntities)\n resetState()\n } catch (error: any) {\n console.error(error)\n toast.error(error.message)\n resetState()\n }\n }\n\n const [updateEntities] = useUpdateEntitiesMutation()\n\n const handleDragEnter = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current++\n if (dragCounterRef.current === 1) {\n setIsDraggingFile(true)\n }\n }\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current--\n if (dragCounterRef.current === 0) {\n setIsDraggingFile(false)\n setDraggingZone(null)\n }\n }\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault()\n }\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault()\n dragCounterRef.current = 0\n setIsDraggingFile(false)\n setDraggingZone(null)\n\n if (!e.dataTransfer.files || e.dataTransfer.files.length === 0) {\n return\n }\n\n if (draggingZone === 'thumbnail') {\n setUploadingType('thumbnail')\n const file = e.dataTransfer.files[0]\n // try to upload the thumbnail\n handleUploadThumbnail(file)\n }\n\n if (draggingZone === 'version') {\n setUploadingType('version')\n const files = e.dataTransfer.files\n // try to upload the reviewables using the hook\n handleVersionUpload(files)\n }\n }\n\n // upload thumbnail from input (right click on thumbnail)\n const handleInputUpload = async (event: ChangeEvent<HTMLInputElement>, type: UploadType) => {\n const files = event.target.files\n if (!files || files.length === 0) {\n return\n }\n\n if (type === 'version') {\n setUploadingType('version')\n handleVersionUpload(files)\n }\n if (type === 'thumbnail') {\n setUploadingType('thumbnail')\n handleUploadThumbnail(files[0])\n }\n }\n\n const thumbnailInputRef = useRef<HTMLInputElement>(null)\n const versionsInputRef = useRef<HTMLInputElement>(null)\n\n return (\n <ThumbnailUploadProvider\n entities={entities}\n handleThumbnailUpload={handleThumbnailFileUploaded}\n thumbnailInputRef={thumbnailInputRef}\n versionsInputRef={canUploadVersions ? versionsInputRef : undefined}\n >\n <Styled.DragAndDropWrapper\n className={clsx({ dragging: isDraggingFile })}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <ThumbnailWrapper>\n <div>{children}</div>\n </ThumbnailWrapper>\n {isDraggingFile && (\n <Styled.DropZones>\n {availableDropZones.map((zone) => (\n <Dropzone\n key={zone.id}\n id={zone.id}\n label={zone.label}\n icon={zone.icon}\n isActive={draggingZone === zone.id}\n onDragOver={() => setDraggingZone(zone.id)}\n onDragLeave={() => setDraggingZone(null)}\n />\n ))}\n </Styled.DropZones>\n )}\n {(uploadingType === 'thumbnail' || uploadingType === 'version') && (\n <Styled.DropZones>\n <Styled.UploadingProgress>\n <Styled.Progress\n style={{\n right: `${100 - progress}%`,\n }}\n />\n <span className=\"label\">{`Uploading ${uploadingType}...`}</span>\n </Styled.UploadingProgress>\n <Styled.CancelButton icon={'close'} variant=\"text\" onClick={resetState} />\n </Styled.DropZones>\n )}\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'thumbnail')}\n ref={thumbnailInputRef}\n />\n <input\n type=\"file\"\n onChange={(e) => handleInputUpload(e, 'version')}\n ref={versionsInputRef}\n />\n </Styled.DragAndDropWrapper>\n\n {/* Product creation dialog */}\n <EntityPanelUploaderDialog\n isOpen={showProductDialog}\n files={pendingFiles}\n onSubmit={handleDialogSubmit}\n onCancel={handleDialogCancel}\n />\n </ThumbnailUploadProvider>\n )\n}\n"],"names":["dropZones","EntityPanelUploader","children","entityType","entities","projectName","onUploaded","onVersionCreated","dispatch","useDetailsPanelContext","isDraggingFile","setIsDraggingFile","useState","draggingZone","setDraggingZone","dragCounterRef","useRef","uploadingType","setUploadingType","progress","setProgress","showProductDialog","setShowProductDialog","pendingFiles","setPendingFiles","singleEntity","taskId","folderId","productId","versionId","canUploadVersions","uploadReviewableFiles","useReviewablesUpload","availableDropZones","zone","resetState","handleDialogSubmit","productName","sanitizedName","sanitizeProductName","toast","productRes","createProductHelper","createProduct","uploadVersionWithProduct","error","handleUploadError","handleDialogCancel","createVersion","useCreateVersionMutation","useCreateProductMutation","handleVersionUpload","files","nextVersion","getNextVersionNumber","versionRes","createVersionHelper","handleThumbnailFileUploaded","thumbnails","newUpdatedAt","operations","entity","entityToPatch","e","currentAssignees","updateEntities","handleUploadThumbnail","file","promises","id","promise","axios","updatedEntities","res","i","useUpdateEntitiesMutation","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleInputUpload","event","type","thumbnailInputRef","versionsInputRef","jsxs","ThumbnailUploadProvider","Styled.DragAndDropWrapper","clsx","jsx","ThumbnailWrapper","Styled.DropZones","Dropzone","Styled.UploadingProgress","Styled.Progress","Styled.CancelButton","EntityPanelUploaderDialog"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("../../../../_virtual/jsx-runtime.cjs.js"),a=require("react");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");const H=require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/SubtasksModulesContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");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");const N=require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const w=a.createContext(void 0),A=({children:c})=>{const[t,p]=a.useState(!1),{siteInfo:u,user:n,cloudInfo:d}=N.useGlobalContext(),{data:s,isLoading:f}=H.useGetFeedbackVerificationQuery({},{skip:!n?.name||!d?.connected}),F=()=>{if(!t){const e=document.createElement("script");e.src="https://do.featurebase.app/js/sdk.js",e.id="featurebase-sdk",e.async=!0,document.body.appendChild(e),p(!0)}},m=()=>{const e=window;typeof e.Featurebase!="function"&&(e.Featurebase=function(){(e.Featurebase.q=e.Featurebase.q||[]).push(arguments)})},y=u?.version?.split("+")[0]||"unknown",h=u?.version?.split("+")[1]||"unknown",k=()=>{if(!n?.name||!s?.available)return;const e={...s.data,customFields:{origin:window.location.origin,serverVersion:y,frontendVersion:h,instanceId:d?.instanceId}};console.log(e),window.Featurebase("identify",e,i=>{i?console.error(i):console.log("Featurebase identify completed")})},[o,v]=a.useState(!1),[z,S]=a.useState(0),C=()=>{const e=window;if(typeof e.Featurebase=="function"){if(console.log("Initializing Featurebase messenger widget"),!s?.available)return console.warn("messenger verification not available, skipping messenger init");e.Featurebase("boot",{theme:"dark",...s?.data},r=>{r?console.error(r):(console.log("Featurebase messenger completed"),v(!0),e.Featurebase("onUnreadCountChange",function(i){S(i)}))})}},E=()=>{const e=[];if(n?.data?.isAdmin){const i=["Server","Addon","Pipeline"];e.push(...i)}else u?.disableChangelog||e.push("Highlights");const r=window;return typeof r.Featurebase=="function"&&r.Featurebase("init_changelog_widget",{organization:"ayon",dropdown:{enabled:!0},popup:{enabled:!0,usersName:n?.attrib?.fullName,autoOpenForNewUpdates:!0},category:e,theme:"dark"}),!1},M=()=>{const e=window;return typeof e.Featurebase=="function"&&e.Featurebase("initialize_feedback_widget",{organization:"ayon",theme:"dark",metadata:{}},r=>{r&&console.error("Error initializing feedback widget:",r)}),!1},P=()=>{const e=window;return typeof e.Featurebase=="function"&&e.Featurebase("initialize_portal_widget",{organization:"ayon",fullScreen:!0,initialPage:"MainView"},r=>r?(console.error("Error initializing portal widget:",r),!1):!0),!1},x=()=>{const e=window;return typeof e.Featurebase=="function"&&e.Featurebase("initialize_survey_widget",{organization:"ayon",placement:"bottom-right",theme:"dark",email:n?.attrib?.email,featurebaseJwt:s?.data?.featurebaseJwt,locale:"en"},r=>{r?console.error("Error initializing survey widget:",r):console.log("Survey widget initialized successfully")}),!1};a.useEffect(()=>{n?.name&&u&&(u.disableFeedback||t||(F(),m(),E(),M(),P()))},[n?.name,t,u]);const[b,V]=a.useState(!1);a.useEffect(()=>{!n?.name||!d||!s||!t||b||(k(),x(),V(!0))},[n?.name,d?.instanceId,s?.available,t,window.location.pathname,b]),a.useEffect(()=>{f||!t||C()},[s,f,t]);const _=()=>{window.postMessage({target:"FeaturebaseWidget",data:{action:"openFeedbackWidget"}})},I=(e="MainView",r)=>{window.postMessage({target:"FeaturebaseWidget",data:{action:"changePage",payload:e,openWidget:!0,...r&&{articleId:r}}})},[l,q]=a.useState(!1),g=document.getElementById("fb-messenger-root"),L=e=>g instanceof HTMLElement&&(g.style.display=e?"block":"none");a.useEffect(()=>{!t||!o||L(l)},[t,o,l]),a.useEffect(()=>{if(!t||!o)return;const e=window;typeof e.Featurebase=="function"&&e.Featurebase("onHide",function(){q(!1)})},[t,o]);const W=(e="Home",r)=>{const i=window;if(typeof i.Featurebase!="function"){window.alert("Featurebase SDK is not loaded yet. Please try again later."),console.warn("Featurebase SDK is not loaded yet.");return}if(l){i.Featurebase("hide"),q(!1);return}switch(q(!0),e){case"Home":i.Featurebase("show");break;case"Messages":i.Featurebase("show","messages");break;case"Changelog":i.Featurebase("show","changelog");break;case"Help":i.Featurebase("show","help");break;case"ShowArticle":r?i.Featurebase("showArticle",r):i.Featurebase("show","help");break;case"NewMessage":i.Featurebase("showNewMessage",r);break;default:i.Featurebase("show");break}};return j.jsxRuntimeExports.jsx(w.Provider,{value:{openSupport:W,openFeedback:_,openPortal:I,messengerLoaded:o,unreadCount:z,messengerVisibility:l,setMessengerVisibility:q,loaded:t},children:c})},D=()=>{const c=a.useContext(w);if(!c)throw new Error("useFeedback must be used within a FeedbackProvider");return c};exports.FeedbackProvider=A;exports.useFeedback=D;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("../../../../_virtual/jsx-runtime.cjs.js"),a=require("react");require("../../api/base/client.cjs.js");require("../../api/generated/graphql.cjs.js");require("../../api/generated/graphqlLinks.cjs.js");require("../../api/generated/access.cjs.js");require("../../api/generated/actions.cjs.js");require("../../api/generated/activityFeed.cjs.js");require("../../api/generated/addons.cjs.js");require("../../api/generated/anatomy.cjs.js");require("../../api/generated/attributes.cjs.js");require("../../api/generated/authentication.cjs.js");require("../../api/generated/bundles.cjs.js");require("../../api/generated/configuration.cjs.js");require("../../api/generated/desktop.cjs.js");require("../../api/generated/entityLists.cjs.js");require("../../api/generated/events.cjs.js");require("../../api/generated/files.cjs.js");require("../../api/generated/folders.cjs.js");require("../../api/generated/inbox.cjs.js");require("../../api/generated/links.cjs.js");require("../../api/generated/market.cjs.js");require("../../api/generated/onboarding.cjs.js");require("../../api/generated/operations.cjs.js");require("../../api/generated/products.cjs.js");require("../../api/generated/projectDashboard.cjs.js");require("../../api/generated/projects.cjs.js");require("../../api/generated/projectFolders.cjs.js");require("../../api/generated/reviewables.cjs.js");require("../../api/generated/services.cjs.js");require("../../api/generated/system.cjs.js");require("../../api/generated/tasks.cjs.js");require("../../api/generated/teams.cjs.js");require("../../api/generated/thumbnails.cjs.js");require("../../api/generated/uRIs.cjs.js");require("../../api/generated/users.cjs.js");require("../../api/generated/versions.cjs.js");require("../../api/generated/workfiles.cjs.js");require("../../api/generated/ynputCloud.cjs.js");require("../../api/generated/grouping.cjs.js");require("../../api/generated/views.cjs.js");require("../../api/queries/actions/getActions.cjs.js");require("../../api/queries/activities/getActivities.cjs.js");require("../../api/queries/activities/updateActivities.cjs.js");require("../../api/queries/activities/updateReaction.cjs.js");require("../../api/queries/activities/getMentions.cjs.js");require("../../api/queries/activities/getCategories.cjs.js");require("../../api/queries/addons/getAddons.cjs.js");require("../../api/queries/addons/updateAddons.cjs.js");require("../../api/queries/attributes/getAttributes.cjs.js");require("../../api/queries/attributes/updateAttributes.cjs.js");require("../../api/queries/authentication/getAuthentication.cjs.js");const H=require("../../api/queries/cloud/cloud.cjs.js");require("../../api/queries/config/getConfig.cjs.js");require("../../api/queries/config/updateConfig.cjs.js");require("../../api/queries/entities/getEntity.cjs.js");require("../../api/queries/entities/getEntityPanel.cjs.js");require("../../api/queries/entities/updateEntity.cjs.js");require("../../api/queries/entityLists/getLists.cjs.js");require("../../api/queries/entityLists/updateLists.cjs.js");require("../../api/queries/entityLists/getListsAttributes.cjs.js");require("../../api/queries/entityLists/updateListsAttributes.cjs.js");require("../../api/queries/entityLists/listFolders.cjs.js");require("../../api/queries/folders/getFolders.cjs.js");require("../../api/queries/grouping/getGrouping.cjs.js");require("../../api/queries/links/updateLinks.cjs.js");require("../../api/queries/links/getLinks.cjs.js");require("../../api/queries/links/getEntityLinks.cjs.js");require("../../api/queries/overview/getOverview.cjs.js");require("../../api/queries/overview/updateOverview.cjs.js");require("../../api/queries/versions/getVersionsProducts.cjs.js");require("../../api/queries/permissions/getPermissions.cjs.js");require("../../api/queries/products/createProduct.cjs.js");require("../../api/queries/project/getProject.cjs.js");require("../../api/queries/project/updateProject.cjs.js");require("../../api/queries/projectFolders/projectFolders.cjs.js");require("../../api/queries/review/getReview.cjs.js");require("../../api/queries/review/updateReview.cjs.js");require("../../api/queries/share/share.cjs.js");require("../../api/queries/system/getSystem.cjs.js");require("../../api/queries/tasks/getTasks.cjs.js");require("../../api/queries/tasks/updateTasks.cjs.js");require("../../api/queries/userDashboard/getUserDashboard.cjs.js");require("../../api/queries/users/getUsers.cjs.js");require("../../api/queries/users/updateUsers.cjs.js");require("../../api/queries/users/guests.cjs.js");require("../../api/queries/versions/updateVersions.cjs.js");require("../../api/queries/views/getViews.cjs.js");require("../../api/queries/views/updateViews.cjs.js");require("../../api/queries/watchers/getWatchers.cjs.js");require("../../api/queries/uris/getUris.cjs.js");require("../../context/RemoteModulesContext.cjs.js");require("../../context/DetailsPanelContext.cjs.js");require("../../context/SubtasksModulesContext.cjs.js");require("../../context/ThumbnailUploaderContext.cjs.js");require("../../context/SettingsPanelContext.cjs.js");require("../../context/pip/PiPProvider.cjs.js");require("react-dom");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");const N=require("../../context/GlobalContext.cjs.js");require("../../context/ProjectContext.cjs.js");require("../../context/ProjectFoldersContext.cjs.js");require("../../context/UriContext.cjs.js");const w=a.createContext(void 0),A=({children:c})=>{const[t,p]=a.useState(!1),{siteInfo:u,user:n,cloudInfo:d}=N.useGlobalContext(),{data:s,isLoading:f}=H.useGetFeedbackVerificationQuery({},{skip:!n?.name||!d?.connected}),F=()=>{if(!t){const e=document.createElement("script");e.src="https://do.featurebase.app/js/sdk.js",e.id="featurebase-sdk",e.async=!0,document.body.appendChild(e),p(!0)}},m=()=>{const e=window;typeof e.Featurebase!="function"&&(e.Featurebase=function(){(e.Featurebase.q=e.Featurebase.q||[]).push(arguments)})},y=u?.version?.split("+")[0]||"unknown",h=u?.version?.split("+")[1]||"unknown",k=()=>{if(!n?.name||!s?.available)return;const e={...s.data,customFields:{origin:window.location.origin,serverVersion:y,frontendVersion:h,instanceId:d?.instanceId}};console.log(e),window.Featurebase("identify",e,i=>{i?console.error(i):console.log("Featurebase identify completed")})},[o,v]=a.useState(!1),[z,S]=a.useState(0),C=()=>{const e=window;if(typeof e.Featurebase=="function"){if(console.log("Initializing Featurebase messenger widget"),!s?.available)return console.warn("messenger verification not available, skipping messenger init");e.Featurebase("boot",{theme:"dark",...s?.data},r=>{r?console.error(r):(console.log("Featurebase messenger completed"),v(!0),e.Featurebase("onUnreadCountChange",function(i){S(i)}))})}},E=()=>{const e=[];if(n?.data?.isAdmin){const i=["Server","Addon","Pipeline"];e.push(...i)}else u?.disableChangelog||e.push("Highlights");const r=window;return typeof r.Featurebase=="function"&&r.Featurebase("init_changelog_widget",{organization:"ayon",dropdown:{enabled:!0},popup:{enabled:!0,usersName:n?.attrib?.fullName,autoOpenForNewUpdates:!0},category:e,theme:"dark"}),!1},M=()=>{const e=window;return typeof e.Featurebase=="function"&&e.Featurebase("initialize_feedback_widget",{organization:"ayon",theme:"dark",metadata:{}},r=>{r&&console.error("Error initializing feedback widget:",r)}),!1},P=()=>{const e=window;return typeof e.Featurebase=="function"&&e.Featurebase("initialize_portal_widget",{organization:"ayon",fullScreen:!0,initialPage:"MainView"},r=>r?(console.error("Error initializing portal widget:",r),!1):!0),!1},x=()=>{const e=window;return typeof e.Featurebase=="function"&&e.Featurebase("initialize_survey_widget",{organization:"ayon",placement:"bottom-right",theme:"dark",email:n?.attrib?.email,featurebaseJwt:s?.data?.featurebaseJwt,locale:"en"},r=>{r?console.error("Error initializing survey widget:",r):console.log("Survey widget initialized successfully")}),!1};a.useEffect(()=>{n?.name&&u&&(u.disableFeedback||t||(F(),m(),E(),M(),P()))},[n?.name,t,u]);const[b,V]=a.useState(!1);a.useEffect(()=>{!n?.name||!d||!s||!t||b||(k(),x(),V(!0))},[n?.name,d?.instanceId,s?.available,t,window.location.pathname,b]),a.useEffect(()=>{f||!t||C()},[s,f,t]);const _=()=>{window.postMessage({target:"FeaturebaseWidget",data:{action:"openFeedbackWidget"}})},I=(e="MainView",r)=>{window.postMessage({target:"FeaturebaseWidget",data:{action:"changePage",payload:e,openWidget:!0,...r&&{articleId:r}}})},[l,q]=a.useState(!1),g=document.getElementById("fb-messenger-root"),L=e=>g instanceof HTMLElement&&(g.style.display=e?"block":"none");a.useEffect(()=>{!t||!o||L(l)},[t,o,l]),a.useEffect(()=>{if(!t||!o)return;const e=window;typeof e.Featurebase=="function"&&e.Featurebase("onHide",function(){q(!1)})},[t,o]);const W=(e="Home",r)=>{const i=window;if(typeof i.Featurebase!="function"){window.alert("Featurebase SDK is not loaded yet. Please try again later."),console.warn("Featurebase SDK is not loaded yet.");return}if(l){i.Featurebase("hide"),q(!1);return}switch(q(!0),e){case"Home":i.Featurebase("show");break;case"Messages":i.Featurebase("show","messages");break;case"Changelog":i.Featurebase("show","changelog");break;case"Help":i.Featurebase("show","help");break;case"ShowArticle":r?i.Featurebase("showArticle",r):i.Featurebase("show","help");break;case"NewMessage":i.Featurebase("showNewMessage",r);break;default:i.Featurebase("show");break}};return j.jsxRuntimeExports.jsx(w.Provider,{value:{openSupport:W,openFeedback:_,openPortal:I,messengerLoaded:o,unreadCount:z,messengerVisibility:l,setMessengerVisibility:q,loaded:t},children:c})},D=()=>{const c=a.useContext(w);if(!c)throw new Error("useFeedback must be used within a FeedbackProvider");return c};exports.FeedbackProvider=A;exports.useFeedback=D;
|
|
2
2
|
//# sourceMappingURL=FeedbackContext.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackContext.cjs.js","sources":["../../../../../src/components/Feedback/FeedbackContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode, useEffect, useState } from 'react'\nimport { useGetFeedbackVerificationQuery } from '@shared/api'\nimport { useGlobalContext } from '@shared/context'\n\nexport type FeedbackContextType = {\n loaded: boolean\n openSupport: (\n page?: 'Home' | 'Messages' | 'Changelog' | 'Help' | 'NewMessage' | 'ShowArticle',\n id?: string,\n ) => void\n messengerLoaded: boolean // whether the messenger widget is loaded\n unreadCount: number // number of unread messages\n messengerVisibility: boolean\n setMessengerVisibility: (show: boolean) => void // show/hide the messenger icon\n openFeedback: () => void\n openPortal: (\n page?: 'MainView' | 'RoadmapView' | 'CreatePost' | 'PostsView' | 'ChangelogView' | 'HelpView',\n articleId?: string,\n ) => void\n}\n\nconst FeedbackContext = createContext<FeedbackContextType | undefined>(undefined)\n\ntype FeedbackProviderProps = {\n children: ReactNode\n}\n\nexport const FeedbackProvider: React.FC<FeedbackProviderProps> = ({ children }) => {\n const [scriptLoaded, setScriptLoaded] = useState(false)\n const { siteInfo, user, cloudInfo } = useGlobalContext()\n const { data: verification, isLoading: isLoadingVerification } = useGetFeedbackVerificationQuery(\n {},\n {\n skip: !user?.name || !cloudInfo?.connected,\n },\n )\n\n const loadScript = () => {\n if (!scriptLoaded) {\n const script = document.createElement('script')\n script.src = 'https://do.featurebase.app/js/sdk.js'\n script.id = 'featurebase-sdk'\n script.async = true\n document.body.appendChild(script)\n setScriptLoaded(true)\n }\n }\n\n const initialize = () => {\n // Initialize Featurebase\n const win = window as any\n if (typeof win.Featurebase !== 'function') {\n win.Featurebase = function () {\n ;(win.Featurebase.q = win.Featurebase.q || []).push(arguments)\n }\n }\n }\n\n const serverVersion = siteInfo?.version?.split('+')[0] || 'unknown'\n const frontendVersion = siteInfo?.version?.split('+')[1] || 'unknown'\n\n const identifyUser = () => {\n if (!user?.name || !verification?.available) return\n\n const identifyData = {\n ...verification.data,\n customFields: {\n origin: window.location.origin,\n serverVersion: serverVersion,\n frontendVersion: frontendVersion,\n instanceId: cloudInfo?.instanceId,\n },\n }\n\n console.log(identifyData)\n\n const win = window as any\n win.Featurebase('identify', identifyData, (err: any) => {\n // Callback function. Called when identify completed.\n if (err) {\n console.error(err)\n } else {\n console.log('Featurebase identify completed')\n }\n })\n }\n\n const [messengerLoaded, setMessengerLoaded] = useState(false)\n const [unreadCount, setUnreadCount] = useState(0)\n\n // MESSENGER WIDGET\n const initializeMessenger = (): void => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n console.log('Initializing Featurebase messenger widget')\n if (!verification?.available)\n return console.warn('messenger verification not available, skipping messenger init')\n win.Featurebase(\n 'boot',\n {\n theme: 'dark',\n ...verification?.data,\n },\n (err: any) => {\n // Callback function. Called when identify completed.\n if (err) {\n console.error(err)\n } else {\n console.log('Featurebase messenger completed')\n setMessengerLoaded(true)\n\n // register event listener for unread messages\n win.Featurebase('onUnreadCountChange', function (unreadCount: number) {\n setUnreadCount(unreadCount)\n })\n }\n },\n )\n }\n }\n\n // CHANGELOG WIDGET\n const initializeChangelog = (): boolean => {\n // everyone sees highlights\n const categories: string[] = []\n\n if (user?.data?.isAdmin) {\n // admins see everything\n const adminCategories = ['Server', 'Addon', 'Pipeline']\n categories.push(...adminCategories)\n } else if (!siteInfo?.disableChangelog) {\n // users only see highlights (unless disabled)\n // admins do not see highlights as it is a subset of the other categories\n categories.push('Highlights')\n }\n\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase('init_changelog_widget', {\n organization: 'ayon',\n dropdown: {\n enabled: true,\n },\n popup: {\n enabled: true,\n usersName: user?.attrib?.fullName,\n autoOpenForNewUpdates: true,\n },\n category: categories,\n theme: 'dark',\n })\n }\n return false\n }\n\n // FEEDBACK WIDGET\n const initializeFeedbackWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_feedback_widget',\n {\n organization: 'ayon',\n theme: 'dark',\n metadata: {},\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing feedback widget:', error)\n } else {\n }\n },\n )\n }\n return false\n }\n\n // PORTAL WIDGET (old)\n const initializePortalWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_portal_widget',\n {\n organization: 'ayon',\n fullScreen: true,\n initialPage: 'MainView',\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing portal widget:', error)\n return false\n } else {\n return true\n }\n },\n )\n }\n return false\n }\n\n // SURVEY WIDGET\n const initializeSurveyWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_survey_widget',\n {\n organization: 'ayon',\n placement: 'bottom-right',\n theme: 'dark',\n email: user?.attrib?.email,\n featurebaseJwt: verification?.data?.featurebaseJwt,\n locale: 'en',\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing survey widget:', error)\n } else {\n console.log('Survey widget initialized successfully')\n }\n },\n )\n }\n return false\n }\n\n // Use an environment variable to skip loading Featurebase in certain environments\n // @ts-expect-error: Vite provides import.meta.env at runtime\n const skipFeaturebase = import.meta.env.VITE_SKIP_FEATUREBASE === 'true'\n\n // Load Featurebase script and initialize widgets\n useEffect(() => {\n // if skip flag is set, do not load the script\n if (skipFeaturebase) return\n // if not logged in, do not load the script\n if (!user?.name) return\n if (!siteInfo) return\n if (siteInfo.disableFeedback) return\n\n // if already loaded, do not load again\n if (scriptLoaded) return\n\n // Load the Featurebase script\n loadScript()\n\n // Initialize Featurebase\n initialize()\n\n // Initialize changelog widget\n initializeChangelog()\n\n // Initialize feedback widget\n initializeFeedbackWidget()\n\n // Initialize portal widget\n initializePortalWidget()\n }, [user?.name, scriptLoaded, siteInfo])\n\n const [identified, setIdentified] = useState(false)\n // verify user\n useEffect(() => {\n // check if we can identify the user\n if (!user?.name || !cloudInfo || !verification || !scriptLoaded) return\n // if we are already identified, do not identify again\n if (identified) return\n // Identify the user\n identifyUser()\n\n // Initialize survey widget\n initializeSurveyWidget()\n\n setIdentified(true)\n }, [\n user?.name,\n cloudInfo?.instanceId,\n verification?.available,\n scriptLoaded,\n window.location.pathname,\n identified,\n ])\n\n // load messenger widget once verification is done loading\n // we don't need verification but we should use it if we have it\n useEffect(() => {\n // wait for script to be loaded and verification to finish loading\n if (isLoadingVerification || !scriptLoaded) return\n\n // initialize the messenger widget\n initializeMessenger()\n }, [verification, isLoadingVerification, scriptLoaded])\n\n const openFeedback: FeedbackContextType['openFeedback'] = () => {\n window.postMessage({\n target: 'FeaturebaseWidget',\n data: {\n action: 'openFeedbackWidget',\n },\n })\n }\n\n const openPortal = (\n page:\n | 'MainView'\n | 'RoadmapView'\n | 'CreatePost'\n | 'PostsView'\n | 'ChangelogView'\n | 'HelpView' = 'MainView',\n articleId?: string,\n ) => {\n window.postMessage({\n target: 'FeaturebaseWidget',\n data: {\n action: 'changePage',\n payload: page,\n openWidget: true,\n ...(articleId && { articleId }),\n },\n })\n }\n\n const [messengerVisibility, setMessengerVisibility] = useState(false)\n const supportElement = document.getElementById('fb-messenger-root')\n\n const setSupportDisplay = (show: boolean) =>\n supportElement instanceof HTMLElement &&\n (supportElement.style.display = show ? 'block' : 'none')\n\n useEffect(() => {\n if (!scriptLoaded || !messengerLoaded) return\n setSupportDisplay(messengerVisibility)\n }, [scriptLoaded, messengerLoaded, messengerVisibility])\n\n // when the messenger is hidden, we need to hide the root element again\n useEffect(() => {\n if (!scriptLoaded || !messengerLoaded) return\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase('onHide', function () {\n // hide the messenger root element\n setMessengerVisibility(false)\n })\n }\n }, [scriptLoaded, messengerLoaded])\n\n const openSupport: FeedbackContextType['openSupport'] = (page = 'Home', id) => {\n const win = window as any\n if (typeof win.Featurebase !== 'function') {\n window.alert('Featurebase SDK is not loaded yet. Please try again later.')\n console.warn('Featurebase SDK is not loaded yet.')\n return\n }\n\n if (messengerVisibility) {\n // if the messenger is already visible, close it\n win.Featurebase('hide')\n setMessengerVisibility(false)\n return\n }\n\n // ensure the messenger is visible\n setMessengerVisibility(true)\n\n switch (page) {\n case 'Home':\n // Show messenger home\n win.Featurebase('show')\n break\n case 'Messages':\n // Show messages view\n win.Featurebase('show', 'messages')\n break\n case 'Changelog':\n // Show changelog view\n win.Featurebase('show', 'changelog')\n break\n case 'Help':\n // Open help center\n win.Featurebase('show', 'help')\n break\n case 'ShowArticle':\n // Open a specific help article\n if (id) win.Featurebase('showArticle', id)\n else win.Featurebase('show', 'help')\n break\n case 'NewMessage':\n // Open new message dialog\n win.Featurebase('showNewMessage', id)\n break\n default:\n // Default to showing the main widget\n win.Featurebase('show')\n break\n }\n }\n\n return (\n <FeedbackContext.Provider\n value={{\n openSupport,\n openFeedback,\n openPortal,\n messengerLoaded,\n unreadCount,\n messengerVisibility,\n setMessengerVisibility,\n loaded: scriptLoaded,\n }}\n >\n {children}\n </FeedbackContext.Provider>\n )\n}\n\nexport const useFeedback = (): FeedbackContextType => {\n const context = useContext(FeedbackContext)\n if (!context) {\n throw new Error('useFeedback must be used within a FeedbackProvider')\n }\n return context\n}\n"],"names":["FeedbackContext","createContext","FeedbackProvider","children","scriptLoaded","setScriptLoaded","useState","siteInfo","user","cloudInfo","useGlobalContext","verification","isLoadingVerification","useGetFeedbackVerificationQuery","loadScript","script","initialize","win","serverVersion","frontendVersion","identifyUser","identifyData","err","messengerLoaded","setMessengerLoaded","unreadCount","setUnreadCount","initializeMessenger","initializeChangelog","categories","adminCategories","initializeFeedbackWidget","error","initializePortalWidget","initializeSurveyWidget","useEffect","identified","setIdentified","openFeedback","openPortal","page","articleId","messengerVisibility","setMessengerVisibility","supportElement","setSupportDisplay","show","openSupport","id","jsx","useFeedback","context","useContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FeedbackContext.cjs.js","sources":["../../../../../src/components/Feedback/FeedbackContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode, useEffect, useState } from 'react'\nimport { useGetFeedbackVerificationQuery } from '@shared/api'\nimport { useGlobalContext } from '@shared/context'\n\nexport type FeedbackContextType = {\n loaded: boolean\n openSupport: (\n page?: 'Home' | 'Messages' | 'Changelog' | 'Help' | 'NewMessage' | 'ShowArticle',\n id?: string,\n ) => void\n messengerLoaded: boolean // whether the messenger widget is loaded\n unreadCount: number // number of unread messages\n messengerVisibility: boolean\n setMessengerVisibility: (show: boolean) => void // show/hide the messenger icon\n openFeedback: () => void\n openPortal: (\n page?: 'MainView' | 'RoadmapView' | 'CreatePost' | 'PostsView' | 'ChangelogView' | 'HelpView',\n articleId?: string,\n ) => void\n}\n\nconst FeedbackContext = createContext<FeedbackContextType | undefined>(undefined)\n\ntype FeedbackProviderProps = {\n children: ReactNode\n}\n\nexport const FeedbackProvider: React.FC<FeedbackProviderProps> = ({ children }) => {\n const [scriptLoaded, setScriptLoaded] = useState(false)\n const { siteInfo, user, cloudInfo } = useGlobalContext()\n const { data: verification, isLoading: isLoadingVerification } = useGetFeedbackVerificationQuery(\n {},\n {\n skip: !user?.name || !cloudInfo?.connected,\n },\n )\n\n const loadScript = () => {\n if (!scriptLoaded) {\n const script = document.createElement('script')\n script.src = 'https://do.featurebase.app/js/sdk.js'\n script.id = 'featurebase-sdk'\n script.async = true\n document.body.appendChild(script)\n setScriptLoaded(true)\n }\n }\n\n const initialize = () => {\n // Initialize Featurebase\n const win = window as any\n if (typeof win.Featurebase !== 'function') {\n win.Featurebase = function () {\n ;(win.Featurebase.q = win.Featurebase.q || []).push(arguments)\n }\n }\n }\n\n const serverVersion = siteInfo?.version?.split('+')[0] || 'unknown'\n const frontendVersion = siteInfo?.version?.split('+')[1] || 'unknown'\n\n const identifyUser = () => {\n if (!user?.name || !verification?.available) return\n\n const identifyData = {\n ...verification.data,\n customFields: {\n origin: window.location.origin,\n serverVersion: serverVersion,\n frontendVersion: frontendVersion,\n instanceId: cloudInfo?.instanceId,\n },\n }\n\n console.log(identifyData)\n\n const win = window as any\n win.Featurebase('identify', identifyData, (err: any) => {\n // Callback function. Called when identify completed.\n if (err) {\n console.error(err)\n } else {\n console.log('Featurebase identify completed')\n }\n })\n }\n\n const [messengerLoaded, setMessengerLoaded] = useState(false)\n const [unreadCount, setUnreadCount] = useState(0)\n\n // MESSENGER WIDGET\n const initializeMessenger = (): void => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n console.log('Initializing Featurebase messenger widget')\n if (!verification?.available)\n return console.warn('messenger verification not available, skipping messenger init')\n win.Featurebase(\n 'boot',\n {\n theme: 'dark',\n ...verification?.data,\n },\n (err: any) => {\n // Callback function. Called when identify completed.\n if (err) {\n console.error(err)\n } else {\n console.log('Featurebase messenger completed')\n setMessengerLoaded(true)\n\n // register event listener for unread messages\n win.Featurebase('onUnreadCountChange', function (unreadCount: number) {\n setUnreadCount(unreadCount)\n })\n }\n },\n )\n }\n }\n\n // CHANGELOG WIDGET\n const initializeChangelog = (): boolean => {\n // everyone sees highlights\n const categories: string[] = []\n\n if (user?.data?.isAdmin) {\n // admins see everything\n const adminCategories = ['Server', 'Addon', 'Pipeline']\n categories.push(...adminCategories)\n } else if (!siteInfo?.disableChangelog) {\n // users only see highlights (unless disabled)\n // admins do not see highlights as it is a subset of the other categories\n categories.push('Highlights')\n }\n\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase('init_changelog_widget', {\n organization: 'ayon',\n dropdown: {\n enabled: true,\n },\n popup: {\n enabled: true,\n usersName: user?.attrib?.fullName,\n autoOpenForNewUpdates: true,\n },\n category: categories,\n theme: 'dark',\n })\n }\n return false\n }\n\n // FEEDBACK WIDGET\n const initializeFeedbackWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_feedback_widget',\n {\n organization: 'ayon',\n theme: 'dark',\n metadata: {},\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing feedback widget:', error)\n } else {\n }\n },\n )\n }\n return false\n }\n\n // PORTAL WIDGET (old)\n const initializePortalWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_portal_widget',\n {\n organization: 'ayon',\n fullScreen: true,\n initialPage: 'MainView',\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing portal widget:', error)\n return false\n } else {\n return true\n }\n },\n )\n }\n return false\n }\n\n // SURVEY WIDGET\n const initializeSurveyWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_survey_widget',\n {\n organization: 'ayon',\n placement: 'bottom-right',\n theme: 'dark',\n email: user?.attrib?.email,\n featurebaseJwt: verification?.data?.featurebaseJwt,\n locale: 'en',\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing survey widget:', error)\n } else {\n console.log('Survey widget initialized successfully')\n }\n },\n )\n }\n return false\n }\n\n // Use an environment variable to skip loading Featurebase in certain environments\n // @ts-expect-error: Vite provides import.meta.env at runtime\n const skipFeaturebase = import.meta.env.VITE_SKIP_FEATUREBASE === 'true'\n\n // Load Featurebase script and initialize widgets\n useEffect(() => {\n // if skip flag is set, do not load the script\n if (skipFeaturebase) return\n // if not logged in, do not load the script\n if (!user?.name) return\n if (!siteInfo) return\n if (siteInfo.disableFeedback) return\n\n // if already loaded, do not load again\n if (scriptLoaded) return\n\n // Load the Featurebase script\n loadScript()\n\n // Initialize Featurebase\n initialize()\n\n // Initialize changelog widget\n initializeChangelog()\n\n // Initialize feedback widget\n initializeFeedbackWidget()\n\n // Initialize portal widget\n initializePortalWidget()\n }, [user?.name, scriptLoaded, siteInfo])\n\n const [identified, setIdentified] = useState(false)\n // verify user\n useEffect(() => {\n // check if we can identify the user\n if (!user?.name || !cloudInfo || !verification || !scriptLoaded) return\n // if we are already identified, do not identify again\n if (identified) return\n // Identify the user\n identifyUser()\n\n // Initialize survey widget\n initializeSurveyWidget()\n\n setIdentified(true)\n }, [\n user?.name,\n cloudInfo?.instanceId,\n verification?.available,\n scriptLoaded,\n window.location.pathname,\n identified,\n ])\n\n // load messenger widget once verification is done loading\n // we don't need verification but we should use it if we have it\n useEffect(() => {\n // wait for script to be loaded and verification to finish loading\n if (isLoadingVerification || !scriptLoaded) return\n\n // initialize the messenger widget\n initializeMessenger()\n }, [verification, isLoadingVerification, scriptLoaded])\n\n const openFeedback: FeedbackContextType['openFeedback'] = () => {\n window.postMessage({\n target: 'FeaturebaseWidget',\n data: {\n action: 'openFeedbackWidget',\n },\n })\n }\n\n const openPortal = (\n page:\n | 'MainView'\n | 'RoadmapView'\n | 'CreatePost'\n | 'PostsView'\n | 'ChangelogView'\n | 'HelpView' = 'MainView',\n articleId?: string,\n ) => {\n window.postMessage({\n target: 'FeaturebaseWidget',\n data: {\n action: 'changePage',\n payload: page,\n openWidget: true,\n ...(articleId && { articleId }),\n },\n })\n }\n\n const [messengerVisibility, setMessengerVisibility] = useState(false)\n const supportElement = document.getElementById('fb-messenger-root')\n\n const setSupportDisplay = (show: boolean) =>\n supportElement instanceof HTMLElement &&\n (supportElement.style.display = show ? 'block' : 'none')\n\n useEffect(() => {\n if (!scriptLoaded || !messengerLoaded) return\n setSupportDisplay(messengerVisibility)\n }, [scriptLoaded, messengerLoaded, messengerVisibility])\n\n // when the messenger is hidden, we need to hide the root element again\n useEffect(() => {\n if (!scriptLoaded || !messengerLoaded) return\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase('onHide', function () {\n // hide the messenger root element\n setMessengerVisibility(false)\n })\n }\n }, [scriptLoaded, messengerLoaded])\n\n const openSupport: FeedbackContextType['openSupport'] = (page = 'Home', id) => {\n const win = window as any\n if (typeof win.Featurebase !== 'function') {\n window.alert('Featurebase SDK is not loaded yet. Please try again later.')\n console.warn('Featurebase SDK is not loaded yet.')\n return\n }\n\n if (messengerVisibility) {\n // if the messenger is already visible, close it\n win.Featurebase('hide')\n setMessengerVisibility(false)\n return\n }\n\n // ensure the messenger is visible\n setMessengerVisibility(true)\n\n switch (page) {\n case 'Home':\n // Show messenger home\n win.Featurebase('show')\n break\n case 'Messages':\n // Show messages view\n win.Featurebase('show', 'messages')\n break\n case 'Changelog':\n // Show changelog view\n win.Featurebase('show', 'changelog')\n break\n case 'Help':\n // Open help center\n win.Featurebase('show', 'help')\n break\n case 'ShowArticle':\n // Open a specific help article\n if (id) win.Featurebase('showArticle', id)\n else win.Featurebase('show', 'help')\n break\n case 'NewMessage':\n // Open new message dialog\n win.Featurebase('showNewMessage', id)\n break\n default:\n // Default to showing the main widget\n win.Featurebase('show')\n break\n }\n }\n\n return (\n <FeedbackContext.Provider\n value={{\n openSupport,\n openFeedback,\n openPortal,\n messengerLoaded,\n unreadCount,\n messengerVisibility,\n setMessengerVisibility,\n loaded: scriptLoaded,\n }}\n >\n {children}\n </FeedbackContext.Provider>\n )\n}\n\nexport const useFeedback = (): FeedbackContextType => {\n const context = useContext(FeedbackContext)\n if (!context) {\n throw new Error('useFeedback must be used within a FeedbackProvider')\n }\n return context\n}\n"],"names":["FeedbackContext","createContext","FeedbackProvider","children","scriptLoaded","setScriptLoaded","useState","siteInfo","user","cloudInfo","useGlobalContext","verification","isLoadingVerification","useGetFeedbackVerificationQuery","loadScript","script","initialize","win","serverVersion","frontendVersion","identifyUser","identifyData","err","messengerLoaded","setMessengerLoaded","unreadCount","setUnreadCount","initializeMessenger","initializeChangelog","categories","adminCategories","initializeFeedbackWidget","error","initializePortalWidget","initializeSurveyWidget","useEffect","identified","setIdentified","openFeedback","openPortal","page","articleId","messengerVisibility","setMessengerVisibility","supportElement","setSupportDisplay","show","openSupport","id","jsx","useFeedback","context","useContext"],"mappings":"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"}
|
|
@@ -78,6 +78,7 @@ import "../../api/queries/review/getReview.es.js";
|
|
|
78
78
|
import "../../api/queries/review/updateReview.es.js";
|
|
79
79
|
import "../../api/queries/share/share.es.js";
|
|
80
80
|
import "../../api/queries/system/getSystem.es.js";
|
|
81
|
+
import "../../api/queries/tasks/getTasks.es.js";
|
|
81
82
|
import "../../api/queries/tasks/updateTasks.es.js";
|
|
82
83
|
import "../../api/queries/userDashboard/getUserDashboard.es.js";
|
|
83
84
|
import "../../api/queries/users/getUsers.es.js";
|
|
@@ -106,7 +107,7 @@ import { useGlobalContext as q } from "../../context/GlobalContext.es.js";
|
|
|
106
107
|
import "../../context/ProjectContext.es.js";
|
|
107
108
|
import "../../context/ProjectFoldersContext.es.js";
|
|
108
109
|
import "../../context/UriContext.es.js";
|
|
109
|
-
const w = A(void 0),
|
|
110
|
+
const w = A(void 0), Jt = ({ children: c }) => {
|
|
110
111
|
const [o, F] = p(!1), { siteInfo: n, user: r, cloudInfo: u } = q(), { data: a, isLoading: f } = U(
|
|
111
112
|
{},
|
|
112
113
|
{
|
|
@@ -308,14 +309,14 @@ const w = A(void 0), Gt = ({ children: c }) => {
|
|
|
308
309
|
children: c
|
|
309
310
|
}
|
|
310
311
|
);
|
|
311
|
-
},
|
|
312
|
+
}, Kt = () => {
|
|
312
313
|
const c = D(w);
|
|
313
314
|
if (!c)
|
|
314
315
|
throw new Error("useFeedback must be used within a FeedbackProvider");
|
|
315
316
|
return c;
|
|
316
317
|
};
|
|
317
318
|
export {
|
|
318
|
-
|
|
319
|
-
|
|
319
|
+
Jt as FeedbackProvider,
|
|
320
|
+
Kt as useFeedback
|
|
320
321
|
};
|
|
321
322
|
//# sourceMappingURL=FeedbackContext.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackContext.es.js","sources":["../../../../../src/components/Feedback/FeedbackContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode, useEffect, useState } from 'react'\nimport { useGetFeedbackVerificationQuery } from '@shared/api'\nimport { useGlobalContext } from '@shared/context'\n\nexport type FeedbackContextType = {\n loaded: boolean\n openSupport: (\n page?: 'Home' | 'Messages' | 'Changelog' | 'Help' | 'NewMessage' | 'ShowArticle',\n id?: string,\n ) => void\n messengerLoaded: boolean // whether the messenger widget is loaded\n unreadCount: number // number of unread messages\n messengerVisibility: boolean\n setMessengerVisibility: (show: boolean) => void // show/hide the messenger icon\n openFeedback: () => void\n openPortal: (\n page?: 'MainView' | 'RoadmapView' | 'CreatePost' | 'PostsView' | 'ChangelogView' | 'HelpView',\n articleId?: string,\n ) => void\n}\n\nconst FeedbackContext = createContext<FeedbackContextType | undefined>(undefined)\n\ntype FeedbackProviderProps = {\n children: ReactNode\n}\n\nexport const FeedbackProvider: React.FC<FeedbackProviderProps> = ({ children }) => {\n const [scriptLoaded, setScriptLoaded] = useState(false)\n const { siteInfo, user, cloudInfo } = useGlobalContext()\n const { data: verification, isLoading: isLoadingVerification } = useGetFeedbackVerificationQuery(\n {},\n {\n skip: !user?.name || !cloudInfo?.connected,\n },\n )\n\n const loadScript = () => {\n if (!scriptLoaded) {\n const script = document.createElement('script')\n script.src = 'https://do.featurebase.app/js/sdk.js'\n script.id = 'featurebase-sdk'\n script.async = true\n document.body.appendChild(script)\n setScriptLoaded(true)\n }\n }\n\n const initialize = () => {\n // Initialize Featurebase\n const win = window as any\n if (typeof win.Featurebase !== 'function') {\n win.Featurebase = function () {\n ;(win.Featurebase.q = win.Featurebase.q || []).push(arguments)\n }\n }\n }\n\n const serverVersion = siteInfo?.version?.split('+')[0] || 'unknown'\n const frontendVersion = siteInfo?.version?.split('+')[1] || 'unknown'\n\n const identifyUser = () => {\n if (!user?.name || !verification?.available) return\n\n const identifyData = {\n ...verification.data,\n customFields: {\n origin: window.location.origin,\n serverVersion: serverVersion,\n frontendVersion: frontendVersion,\n instanceId: cloudInfo?.instanceId,\n },\n }\n\n console.log(identifyData)\n\n const win = window as any\n win.Featurebase('identify', identifyData, (err: any) => {\n // Callback function. Called when identify completed.\n if (err) {\n console.error(err)\n } else {\n console.log('Featurebase identify completed')\n }\n })\n }\n\n const [messengerLoaded, setMessengerLoaded] = useState(false)\n const [unreadCount, setUnreadCount] = useState(0)\n\n // MESSENGER WIDGET\n const initializeMessenger = (): void => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n console.log('Initializing Featurebase messenger widget')\n if (!verification?.available)\n return console.warn('messenger verification not available, skipping messenger init')\n win.Featurebase(\n 'boot',\n {\n theme: 'dark',\n ...verification?.data,\n },\n (err: any) => {\n // Callback function. Called when identify completed.\n if (err) {\n console.error(err)\n } else {\n console.log('Featurebase messenger completed')\n setMessengerLoaded(true)\n\n // register event listener for unread messages\n win.Featurebase('onUnreadCountChange', function (unreadCount: number) {\n setUnreadCount(unreadCount)\n })\n }\n },\n )\n }\n }\n\n // CHANGELOG WIDGET\n const initializeChangelog = (): boolean => {\n // everyone sees highlights\n const categories: string[] = []\n\n if (user?.data?.isAdmin) {\n // admins see everything\n const adminCategories = ['Server', 'Addon', 'Pipeline']\n categories.push(...adminCategories)\n } else if (!siteInfo?.disableChangelog) {\n // users only see highlights (unless disabled)\n // admins do not see highlights as it is a subset of the other categories\n categories.push('Highlights')\n }\n\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase('init_changelog_widget', {\n organization: 'ayon',\n dropdown: {\n enabled: true,\n },\n popup: {\n enabled: true,\n usersName: user?.attrib?.fullName,\n autoOpenForNewUpdates: true,\n },\n category: categories,\n theme: 'dark',\n })\n }\n return false\n }\n\n // FEEDBACK WIDGET\n const initializeFeedbackWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_feedback_widget',\n {\n organization: 'ayon',\n theme: 'dark',\n metadata: {},\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing feedback widget:', error)\n } else {\n }\n },\n )\n }\n return false\n }\n\n // PORTAL WIDGET (old)\n const initializePortalWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_portal_widget',\n {\n organization: 'ayon',\n fullScreen: true,\n initialPage: 'MainView',\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing portal widget:', error)\n return false\n } else {\n return true\n }\n },\n )\n }\n return false\n }\n\n // SURVEY WIDGET\n const initializeSurveyWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_survey_widget',\n {\n organization: 'ayon',\n placement: 'bottom-right',\n theme: 'dark',\n email: user?.attrib?.email,\n featurebaseJwt: verification?.data?.featurebaseJwt,\n locale: 'en',\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing survey widget:', error)\n } else {\n console.log('Survey widget initialized successfully')\n }\n },\n )\n }\n return false\n }\n\n // Use an environment variable to skip loading Featurebase in certain environments\n // @ts-expect-error: Vite provides import.meta.env at runtime\n const skipFeaturebase = import.meta.env.VITE_SKIP_FEATUREBASE === 'true'\n\n // Load Featurebase script and initialize widgets\n useEffect(() => {\n // if skip flag is set, do not load the script\n if (skipFeaturebase) return\n // if not logged in, do not load the script\n if (!user?.name) return\n if (!siteInfo) return\n if (siteInfo.disableFeedback) return\n\n // if already loaded, do not load again\n if (scriptLoaded) return\n\n // Load the Featurebase script\n loadScript()\n\n // Initialize Featurebase\n initialize()\n\n // Initialize changelog widget\n initializeChangelog()\n\n // Initialize feedback widget\n initializeFeedbackWidget()\n\n // Initialize portal widget\n initializePortalWidget()\n }, [user?.name, scriptLoaded, siteInfo])\n\n const [identified, setIdentified] = useState(false)\n // verify user\n useEffect(() => {\n // check if we can identify the user\n if (!user?.name || !cloudInfo || !verification || !scriptLoaded) return\n // if we are already identified, do not identify again\n if (identified) return\n // Identify the user\n identifyUser()\n\n // Initialize survey widget\n initializeSurveyWidget()\n\n setIdentified(true)\n }, [\n user?.name,\n cloudInfo?.instanceId,\n verification?.available,\n scriptLoaded,\n window.location.pathname,\n identified,\n ])\n\n // load messenger widget once verification is done loading\n // we don't need verification but we should use it if we have it\n useEffect(() => {\n // wait for script to be loaded and verification to finish loading\n if (isLoadingVerification || !scriptLoaded) return\n\n // initialize the messenger widget\n initializeMessenger()\n }, [verification, isLoadingVerification, scriptLoaded])\n\n const openFeedback: FeedbackContextType['openFeedback'] = () => {\n window.postMessage({\n target: 'FeaturebaseWidget',\n data: {\n action: 'openFeedbackWidget',\n },\n })\n }\n\n const openPortal = (\n page:\n | 'MainView'\n | 'RoadmapView'\n | 'CreatePost'\n | 'PostsView'\n | 'ChangelogView'\n | 'HelpView' = 'MainView',\n articleId?: string,\n ) => {\n window.postMessage({\n target: 'FeaturebaseWidget',\n data: {\n action: 'changePage',\n payload: page,\n openWidget: true,\n ...(articleId && { articleId }),\n },\n })\n }\n\n const [messengerVisibility, setMessengerVisibility] = useState(false)\n const supportElement = document.getElementById('fb-messenger-root')\n\n const setSupportDisplay = (show: boolean) =>\n supportElement instanceof HTMLElement &&\n (supportElement.style.display = show ? 'block' : 'none')\n\n useEffect(() => {\n if (!scriptLoaded || !messengerLoaded) return\n setSupportDisplay(messengerVisibility)\n }, [scriptLoaded, messengerLoaded, messengerVisibility])\n\n // when the messenger is hidden, we need to hide the root element again\n useEffect(() => {\n if (!scriptLoaded || !messengerLoaded) return\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase('onHide', function () {\n // hide the messenger root element\n setMessengerVisibility(false)\n })\n }\n }, [scriptLoaded, messengerLoaded])\n\n const openSupport: FeedbackContextType['openSupport'] = (page = 'Home', id) => {\n const win = window as any\n if (typeof win.Featurebase !== 'function') {\n window.alert('Featurebase SDK is not loaded yet. Please try again later.')\n console.warn('Featurebase SDK is not loaded yet.')\n return\n }\n\n if (messengerVisibility) {\n // if the messenger is already visible, close it\n win.Featurebase('hide')\n setMessengerVisibility(false)\n return\n }\n\n // ensure the messenger is visible\n setMessengerVisibility(true)\n\n switch (page) {\n case 'Home':\n // Show messenger home\n win.Featurebase('show')\n break\n case 'Messages':\n // Show messages view\n win.Featurebase('show', 'messages')\n break\n case 'Changelog':\n // Show changelog view\n win.Featurebase('show', 'changelog')\n break\n case 'Help':\n // Open help center\n win.Featurebase('show', 'help')\n break\n case 'ShowArticle':\n // Open a specific help article\n if (id) win.Featurebase('showArticle', id)\n else win.Featurebase('show', 'help')\n break\n case 'NewMessage':\n // Open new message dialog\n win.Featurebase('showNewMessage', id)\n break\n default:\n // Default to showing the main widget\n win.Featurebase('show')\n break\n }\n }\n\n return (\n <FeedbackContext.Provider\n value={{\n openSupport,\n openFeedback,\n openPortal,\n messengerLoaded,\n unreadCount,\n messengerVisibility,\n setMessengerVisibility,\n loaded: scriptLoaded,\n }}\n >\n {children}\n </FeedbackContext.Provider>\n )\n}\n\nexport const useFeedback = (): FeedbackContextType => {\n const context = useContext(FeedbackContext)\n if (!context) {\n throw new Error('useFeedback must be used within a FeedbackProvider')\n }\n return context\n}\n"],"names":["FeedbackContext","createContext","FeedbackProvider","children","scriptLoaded","setScriptLoaded","useState","siteInfo","user","cloudInfo","useGlobalContext","verification","isLoadingVerification","useGetFeedbackVerificationQuery","loadScript","script","initialize","win","serverVersion","frontendVersion","identifyUser","identifyData","err","messengerLoaded","setMessengerLoaded","unreadCount","setUnreadCount","initializeMessenger","initializeChangelog","categories","adminCategories","initializeFeedbackWidget","error","initializePortalWidget","initializeSurveyWidget","useEffect","identified","setIdentified","openFeedback","openPortal","page","articleId","messengerVisibility","setMessengerVisibility","supportElement","setSupportDisplay","show","openSupport","id","jsx","useFeedback","context","useContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,MAAMA,IAAkBC,EAA+C,MAAS,GAMnEC,KAAoD,CAAC,EAAE,UAAAC,QAAe;AACjF,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAChD,EAAE,UAAAC,GAAU,MAAAC,GAAM,WAAAC,EAAA,IAAcC,EAAA,GAChC,EAAE,MAAMC,GAAc,WAAWC,MAA0BC;AAAA,IAC/D,CAAA;AAAA,IACA;AAAA,MACE,MAAM,CAACL,GAAM,QAAQ,CAACC,GAAW;AAAA,IAAA;AAAA,EACnC,GAGIK,IAAa,MAAM;AACvB,QAAI,CAACV,GAAc;AACjB,YAAMW,IAAS,SAAS,cAAc,QAAQ;AAC9C,MAAAA,EAAO,MAAM,wCACbA,EAAO,KAAK,mBACZA,EAAO,QAAQ,IACf,SAAS,KAAK,YAAYA,CAAM,GAChCV,EAAgB,EAAI;AAAA,IACtB;AAAA,EACF,GAEMW,IAAa,MAAM;AAEvB,UAAMC,IAAM;AACZ,IAAI,OAAOA,EAAI,eAAgB,eAC7BA,EAAI,cAAc,WAAY;AAC3B,OAACA,EAAI,YAAY,IAAIA,EAAI,YAAY,KAAK,CAAA,GAAI,KAAK,SAAS;AAAA,IAC/D;AAAA,EAEJ,GAEMC,IAAgBX,GAAU,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK,WACpDY,IAAkBZ,GAAU,SAAS,MAAM,GAAG,EAAE,CAAC,KAAK,WAEtDa,IAAe,MAAM;AACzB,QAAI,CAACZ,GAAM,QAAQ,CAACG,GAAc,UAAW;AAE7C,UAAMU,IAAe;AAAA,MACnB,GAAGV,EAAa;AAAA,MAChB,cAAc;AAAA,QACZ,QAAQ,OAAO,SAAS;AAAA,QACxB,eAAAO;AAAA,QACA,iBAAAC;AAAA,QACA,YAAYV,GAAW;AAAA,MAAA;AAAA,IACzB;AAGF,YAAQ,IAAIY,CAAY,GAEZ,OACR,YAAY,YAAYA,GAAc,CAACC,MAAa;AAEtD,MAAIA,IACF,QAAQ,MAAMA,CAAG,IAEjB,QAAQ,IAAI,gCAAgC;AAAA,IAEhD,CAAC;AAAA,EACH,GAEM,CAACC,GAAiBC,CAAkB,IAAIlB,EAAS,EAAK,GACtD,CAACmB,GAAaC,CAAc,IAAIpB,EAAS,CAAC,GAG1CqB,IAAsB,MAAY;AACtC,UAAMV,IAAM;AACZ,QAAI,OAAOA,EAAI,eAAgB,YAAY;AAEzC,UADA,QAAQ,IAAI,2CAA2C,GACnD,CAACN,GAAc;AACjB,eAAO,QAAQ,KAAK,+DAA+D;AACrF,MAAAM,EAAI;AAAA,QACF;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,GAAGN,GAAc;AAAA,QAAA;AAAA,QAEnB,CAACW,MAAa;AAEZ,UAAIA,IACF,QAAQ,MAAMA,CAAG,KAEjB,QAAQ,IAAI,iCAAiC,GAC7CE,EAAmB,EAAI,GAGvBP,EAAI,YAAY,uBAAuB,SAAUQ,GAAqB;AACpE,YAAAC,EAAeD,CAAW;AAAA,UAC5B,CAAC;AAAA,QAEL;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF,GAGMG,IAAsB,MAAe;AAEzC,UAAMC,IAAuB,CAAA;AAE7B,QAAIrB,GAAM,MAAM,SAAS;AAEvB,YAAMsB,IAAkB,CAAC,UAAU,SAAS,UAAU;AACtD,MAAAD,EAAW,KAAK,GAAGC,CAAe;AAAA,IACpC,MAAA,CAAYvB,GAAU,oBAGpBsB,EAAW,KAAK,YAAY;AAG9B,UAAMZ,IAAM;AACZ,WAAI,OAAOA,EAAI,eAAgB,cAC7BA,EAAI,YAAY,yBAAyB;AAAA,MACvC,cAAc;AAAA,MACd,UAAU;AAAA,QACR,SAAS;AAAA,MAAA;AAAA,MAEX,OAAO;AAAA,QACL,SAAS;AAAA,QACT,WAAWT,GAAM,QAAQ;AAAA,QACzB,uBAAuB;AAAA,MAAA;AAAA,MAEzB,UAAUqB;AAAA,MACV,OAAO;AAAA,IAAA,CACR,GAEI;AAAA,EACT,GAGME,IAA2B,MAAe;AAC9C,UAAMd,IAAM;AACZ,WAAI,OAAOA,EAAI,eAAgB,cAC7BA,EAAI;AAAA,MACF;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,OAAO;AAAA,QACP,UAAU,CAAA;AAAA,MAAC;AAAA,MAEb,CAACe,MAAe;AACd,QAAIA,KACF,QAAQ,MAAM,uCAAuCA,CAAK;AAAA,MAG9D;AAAA,IAAA,GAGG;AAAA,EACT,GAGMC,IAAyB,MAAe;AAC5C,UAAMhB,IAAM;AACZ,WAAI,OAAOA,EAAI,eAAgB,cAC7BA,EAAI;AAAA,MACF;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,aAAa;AAAA,MAAA;AAAA,MAEf,CAACe,MACKA,KACF,QAAQ,MAAM,qCAAqCA,CAAK,GACjD,MAEA;AAAA,IAEX,GAGG;AAAA,EACT,GAGME,IAAyB,MAAe;AAC5C,UAAMjB,IAAM;AACZ,WAAI,OAAOA,EAAI,eAAgB,cAC7BA,EAAI;AAAA,MACF;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,WAAW;AAAA,QACX,OAAO;AAAA,QACP,OAAOT,GAAM,QAAQ;AAAA,QACrB,gBAAgBG,GAAc,MAAM;AAAA,QACpC,QAAQ;AAAA,MAAA;AAAA,MAEV,CAACqB,MAAe;AACd,QAAIA,IACF,QAAQ,MAAM,qCAAqCA,CAAK,IAExD,QAAQ,IAAI,wCAAwC;AAAA,MAExD;AAAA,IAAA,GAGG;AAAA,EACT;AAOA,EAAAG,EAAU,MAAM;AAId,IAAK3B,GAAM,QACND,MACDA,EAAS,mBAGTH,MAGJU,EAAA,GAGAE,EAAA,GAGAY,EAAA,GAGAG,EAAA,GAGAE,EAAA;AAAA,EACF,GAAG,CAACzB,GAAM,MAAMJ,GAAcG,CAAQ,CAAC;AAEvC,QAAM,CAAC6B,GAAYC,CAAa,IAAI/B,EAAS,EAAK;AAElD,EAAA6B,EAAU,MAAM;AAEd,IAAI,CAAC3B,GAAM,QAAQ,CAACC,KAAa,CAACE,KAAgB,CAACP,KAE/CgC,MAEJhB,EAAA,GAGAc,EAAA,GAEAG,EAAc,EAAI;AAAA,EACpB,GAAG;AAAA,IACD7B,GAAM;AAAA,IACNC,GAAW;AAAA,IACXE,GAAc;AAAA,IACdP;AAAA,IACA,OAAO,SAAS;AAAA,IAChBgC;AAAA,EAAA,CACD,GAIDD,EAAU,MAAM;AAEd,IAAIvB,KAAyB,CAACR,KAG9BuB,EAAA;AAAA,EACF,GAAG,CAAChB,GAAcC,GAAuBR,CAAY,CAAC;AAEtD,QAAMkC,IAAoD,MAAM;AAC9D,WAAO,YAAY;AAAA,MACjB,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ;AAAA,MAAA;AAAA,IACV,CACD;AAAA,EACH,GAEMC,IAAa,CACjBC,IAMiB,YACjBC,MACG;AACH,WAAO,YAAY;AAAA,MACjB,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ;AAAA,QACR,SAASD;AAAA,QACT,YAAY;AAAA,QACZ,GAAIC,KAAa,EAAE,WAAAA,EAAA;AAAA,MAAU;AAAA,IAC/B,CACD;AAAA,EACH,GAEM,CAACC,GAAqBC,CAAsB,IAAIrC,EAAS,EAAK,GAC9DsC,IAAiB,SAAS,eAAe,mBAAmB,GAE5DC,IAAoB,CAACC,MACzBF,aAA0B,gBACzBA,EAAe,MAAM,UAAUE,IAAO,UAAU;AAEnD,EAAAX,EAAU,MAAM;AACd,IAAI,CAAC/B,KAAgB,CAACmB,KACtBsB,EAAkBH,CAAmB;AAAA,EACvC,GAAG,CAACtC,GAAcmB,GAAiBmB,CAAmB,CAAC,GAGvDP,EAAU,MAAM;AACd,QAAI,CAAC/B,KAAgB,CAACmB,EAAiB;AACvC,UAAMN,IAAM;AACZ,IAAI,OAAOA,EAAI,eAAgB,cAC7BA,EAAI,YAAY,UAAU,WAAY;AAEpC,MAAA0B,EAAuB,EAAK;AAAA,IAC9B,CAAC;AAAA,EAEL,GAAG,CAACvC,GAAcmB,CAAe,CAAC;AAElC,QAAMwB,IAAkD,CAACP,IAAO,QAAQQ,MAAO;AAC7E,UAAM/B,IAAM;AACZ,QAAI,OAAOA,EAAI,eAAgB,YAAY;AACzC,aAAO,MAAM,4DAA4D,GACzE,QAAQ,KAAK,oCAAoC;AACjD;AAAA,IACF;AAEA,QAAIyB,GAAqB;AAEvB,MAAAzB,EAAI,YAAY,MAAM,GACtB0B,EAAuB,EAAK;AAC5B;AAAA,IACF;AAKA,YAFAA,EAAuB,EAAI,GAEnBH,GAAA;AAAA,MACN,KAAK;AAEH,QAAAvB,EAAI,YAAY,MAAM;AACtB;AAAA,MACF,KAAK;AAEH,QAAAA,EAAI,YAAY,QAAQ,UAAU;AAClC;AAAA,MACF,KAAK;AAEH,QAAAA,EAAI,YAAY,QAAQ,WAAW;AACnC;AAAA,MACF,KAAK;AAEH,QAAAA,EAAI,YAAY,QAAQ,MAAM;AAC9B;AAAA,MACF,KAAK;AAEH,QAAI+B,IAAI/B,EAAI,YAAY,eAAe+B,CAAE,IACpC/B,EAAI,YAAY,QAAQ,MAAM;AACnC;AAAA,MACF,KAAK;AAEH,QAAAA,EAAI,YAAY,kBAAkB+B,CAAE;AACpC;AAAA,MACF;AAEE,QAAA/B,EAAI,YAAY,MAAM;AACtB;AAAA,IAAA;AAAA,EAEN;AAEA,SACEgC,gBAAAA,EAAAA;AAAAA,IAACjD,EAAgB;AAAA,IAAhB;AAAA,MACC,OAAO;AAAA,QACL,aAAA+C;AAAA,QACA,cAAAT;AAAA,QACA,YAAAC;AAAA,QACA,iBAAAhB;AAAA,QACA,aAAAE;AAAA,QACA,qBAAAiB;AAAA,QACA,wBAAAC;AAAA,QACA,QAAQvC;AAAA,MAAA;AAAA,MAGT,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGP,GAEa+C,KAAc,MAA2B;AACpD,QAAMC,IAAUC,EAAWpD,CAAe;AAC1C,MAAI,CAACmD;AACH,UAAM,IAAI,MAAM,oDAAoD;AAEtE,SAAOA;AACT;"}
|
|
1
|
+
{"version":3,"file":"FeedbackContext.es.js","sources":["../../../../../src/components/Feedback/FeedbackContext.tsx"],"sourcesContent":["import React, { createContext, useContext, ReactNode, useEffect, useState } from 'react'\nimport { useGetFeedbackVerificationQuery } from '@shared/api'\nimport { useGlobalContext } from '@shared/context'\n\nexport type FeedbackContextType = {\n loaded: boolean\n openSupport: (\n page?: 'Home' | 'Messages' | 'Changelog' | 'Help' | 'NewMessage' | 'ShowArticle',\n id?: string,\n ) => void\n messengerLoaded: boolean // whether the messenger widget is loaded\n unreadCount: number // number of unread messages\n messengerVisibility: boolean\n setMessengerVisibility: (show: boolean) => void // show/hide the messenger icon\n openFeedback: () => void\n openPortal: (\n page?: 'MainView' | 'RoadmapView' | 'CreatePost' | 'PostsView' | 'ChangelogView' | 'HelpView',\n articleId?: string,\n ) => void\n}\n\nconst FeedbackContext = createContext<FeedbackContextType | undefined>(undefined)\n\ntype FeedbackProviderProps = {\n children: ReactNode\n}\n\nexport const FeedbackProvider: React.FC<FeedbackProviderProps> = ({ children }) => {\n const [scriptLoaded, setScriptLoaded] = useState(false)\n const { siteInfo, user, cloudInfo } = useGlobalContext()\n const { data: verification, isLoading: isLoadingVerification } = useGetFeedbackVerificationQuery(\n {},\n {\n skip: !user?.name || !cloudInfo?.connected,\n },\n )\n\n const loadScript = () => {\n if (!scriptLoaded) {\n const script = document.createElement('script')\n script.src = 'https://do.featurebase.app/js/sdk.js'\n script.id = 'featurebase-sdk'\n script.async = true\n document.body.appendChild(script)\n setScriptLoaded(true)\n }\n }\n\n const initialize = () => {\n // Initialize Featurebase\n const win = window as any\n if (typeof win.Featurebase !== 'function') {\n win.Featurebase = function () {\n ;(win.Featurebase.q = win.Featurebase.q || []).push(arguments)\n }\n }\n }\n\n const serverVersion = siteInfo?.version?.split('+')[0] || 'unknown'\n const frontendVersion = siteInfo?.version?.split('+')[1] || 'unknown'\n\n const identifyUser = () => {\n if (!user?.name || !verification?.available) return\n\n const identifyData = {\n ...verification.data,\n customFields: {\n origin: window.location.origin,\n serverVersion: serverVersion,\n frontendVersion: frontendVersion,\n instanceId: cloudInfo?.instanceId,\n },\n }\n\n console.log(identifyData)\n\n const win = window as any\n win.Featurebase('identify', identifyData, (err: any) => {\n // Callback function. Called when identify completed.\n if (err) {\n console.error(err)\n } else {\n console.log('Featurebase identify completed')\n }\n })\n }\n\n const [messengerLoaded, setMessengerLoaded] = useState(false)\n const [unreadCount, setUnreadCount] = useState(0)\n\n // MESSENGER WIDGET\n const initializeMessenger = (): void => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n console.log('Initializing Featurebase messenger widget')\n if (!verification?.available)\n return console.warn('messenger verification not available, skipping messenger init')\n win.Featurebase(\n 'boot',\n {\n theme: 'dark',\n ...verification?.data,\n },\n (err: any) => {\n // Callback function. Called when identify completed.\n if (err) {\n console.error(err)\n } else {\n console.log('Featurebase messenger completed')\n setMessengerLoaded(true)\n\n // register event listener for unread messages\n win.Featurebase('onUnreadCountChange', function (unreadCount: number) {\n setUnreadCount(unreadCount)\n })\n }\n },\n )\n }\n }\n\n // CHANGELOG WIDGET\n const initializeChangelog = (): boolean => {\n // everyone sees highlights\n const categories: string[] = []\n\n if (user?.data?.isAdmin) {\n // admins see everything\n const adminCategories = ['Server', 'Addon', 'Pipeline']\n categories.push(...adminCategories)\n } else if (!siteInfo?.disableChangelog) {\n // users only see highlights (unless disabled)\n // admins do not see highlights as it is a subset of the other categories\n categories.push('Highlights')\n }\n\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase('init_changelog_widget', {\n organization: 'ayon',\n dropdown: {\n enabled: true,\n },\n popup: {\n enabled: true,\n usersName: user?.attrib?.fullName,\n autoOpenForNewUpdates: true,\n },\n category: categories,\n theme: 'dark',\n })\n }\n return false\n }\n\n // FEEDBACK WIDGET\n const initializeFeedbackWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_feedback_widget',\n {\n organization: 'ayon',\n theme: 'dark',\n metadata: {},\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing feedback widget:', error)\n } else {\n }\n },\n )\n }\n return false\n }\n\n // PORTAL WIDGET (old)\n const initializePortalWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_portal_widget',\n {\n organization: 'ayon',\n fullScreen: true,\n initialPage: 'MainView',\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing portal widget:', error)\n return false\n } else {\n return true\n }\n },\n )\n }\n return false\n }\n\n // SURVEY WIDGET\n const initializeSurveyWidget = (): boolean => {\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase(\n 'initialize_survey_widget',\n {\n organization: 'ayon',\n placement: 'bottom-right',\n theme: 'dark',\n email: user?.attrib?.email,\n featurebaseJwt: verification?.data?.featurebaseJwt,\n locale: 'en',\n },\n (error: any) => {\n if (error) {\n console.error('Error initializing survey widget:', error)\n } else {\n console.log('Survey widget initialized successfully')\n }\n },\n )\n }\n return false\n }\n\n // Use an environment variable to skip loading Featurebase in certain environments\n // @ts-expect-error: Vite provides import.meta.env at runtime\n const skipFeaturebase = import.meta.env.VITE_SKIP_FEATUREBASE === 'true'\n\n // Load Featurebase script and initialize widgets\n useEffect(() => {\n // if skip flag is set, do not load the script\n if (skipFeaturebase) return\n // if not logged in, do not load the script\n if (!user?.name) return\n if (!siteInfo) return\n if (siteInfo.disableFeedback) return\n\n // if already loaded, do not load again\n if (scriptLoaded) return\n\n // Load the Featurebase script\n loadScript()\n\n // Initialize Featurebase\n initialize()\n\n // Initialize changelog widget\n initializeChangelog()\n\n // Initialize feedback widget\n initializeFeedbackWidget()\n\n // Initialize portal widget\n initializePortalWidget()\n }, [user?.name, scriptLoaded, siteInfo])\n\n const [identified, setIdentified] = useState(false)\n // verify user\n useEffect(() => {\n // check if we can identify the user\n if (!user?.name || !cloudInfo || !verification || !scriptLoaded) return\n // if we are already identified, do not identify again\n if (identified) return\n // Identify the user\n identifyUser()\n\n // Initialize survey widget\n initializeSurveyWidget()\n\n setIdentified(true)\n }, [\n user?.name,\n cloudInfo?.instanceId,\n verification?.available,\n scriptLoaded,\n window.location.pathname,\n identified,\n ])\n\n // load messenger widget once verification is done loading\n // we don't need verification but we should use it if we have it\n useEffect(() => {\n // wait for script to be loaded and verification to finish loading\n if (isLoadingVerification || !scriptLoaded) return\n\n // initialize the messenger widget\n initializeMessenger()\n }, [verification, isLoadingVerification, scriptLoaded])\n\n const openFeedback: FeedbackContextType['openFeedback'] = () => {\n window.postMessage({\n target: 'FeaturebaseWidget',\n data: {\n action: 'openFeedbackWidget',\n },\n })\n }\n\n const openPortal = (\n page:\n | 'MainView'\n | 'RoadmapView'\n | 'CreatePost'\n | 'PostsView'\n | 'ChangelogView'\n | 'HelpView' = 'MainView',\n articleId?: string,\n ) => {\n window.postMessage({\n target: 'FeaturebaseWidget',\n data: {\n action: 'changePage',\n payload: page,\n openWidget: true,\n ...(articleId && { articleId }),\n },\n })\n }\n\n const [messengerVisibility, setMessengerVisibility] = useState(false)\n const supportElement = document.getElementById('fb-messenger-root')\n\n const setSupportDisplay = (show: boolean) =>\n supportElement instanceof HTMLElement &&\n (supportElement.style.display = show ? 'block' : 'none')\n\n useEffect(() => {\n if (!scriptLoaded || !messengerLoaded) return\n setSupportDisplay(messengerVisibility)\n }, [scriptLoaded, messengerLoaded, messengerVisibility])\n\n // when the messenger is hidden, we need to hide the root element again\n useEffect(() => {\n if (!scriptLoaded || !messengerLoaded) return\n const win = window as any\n if (typeof win.Featurebase === 'function') {\n win.Featurebase('onHide', function () {\n // hide the messenger root element\n setMessengerVisibility(false)\n })\n }\n }, [scriptLoaded, messengerLoaded])\n\n const openSupport: FeedbackContextType['openSupport'] = (page = 'Home', id) => {\n const win = window as any\n if (typeof win.Featurebase !== 'function') {\n window.alert('Featurebase SDK is not loaded yet. Please try again later.')\n console.warn('Featurebase SDK is not loaded yet.')\n return\n }\n\n if (messengerVisibility) {\n // if the messenger is already visible, close it\n win.Featurebase('hide')\n setMessengerVisibility(false)\n return\n }\n\n // ensure the messenger is visible\n setMessengerVisibility(true)\n\n switch (page) {\n case 'Home':\n // Show messenger home\n win.Featurebase('show')\n break\n case 'Messages':\n // Show messages view\n win.Featurebase('show', 'messages')\n break\n case 'Changelog':\n // Show changelog view\n win.Featurebase('show', 'changelog')\n break\n case 'Help':\n // Open help center\n win.Featurebase('show', 'help')\n break\n case 'ShowArticle':\n // Open a specific help article\n if (id) win.Featurebase('showArticle', id)\n else win.Featurebase('show', 'help')\n break\n case 'NewMessage':\n // Open new message dialog\n win.Featurebase('showNewMessage', id)\n break\n default:\n // Default to showing the main widget\n win.Featurebase('show')\n break\n }\n }\n\n return (\n <FeedbackContext.Provider\n value={{\n openSupport,\n openFeedback,\n openPortal,\n messengerLoaded,\n unreadCount,\n messengerVisibility,\n setMessengerVisibility,\n loaded: scriptLoaded,\n }}\n >\n {children}\n </FeedbackContext.Provider>\n )\n}\n\nexport const useFeedback = (): FeedbackContextType => {\n const context = useContext(FeedbackContext)\n if (!context) {\n throw new Error('useFeedback must be used within a FeedbackProvider')\n }\n return context\n}\n"],"names":["FeedbackContext","createContext","FeedbackProvider","children","scriptLoaded","setScriptLoaded","useState","siteInfo","user","cloudInfo","useGlobalContext","verification","isLoadingVerification","useGetFeedbackVerificationQuery","loadScript","script","initialize","win","serverVersion","frontendVersion","identifyUser","identifyData","err","messengerLoaded","setMessengerLoaded","unreadCount","setUnreadCount","initializeMessenger","initializeChangelog","categories","adminCategories","initializeFeedbackWidget","error","initializePortalWidget","initializeSurveyWidget","useEffect","identified","setIdentified","openFeedback","openPortal","page","articleId","messengerVisibility","setMessengerVisibility","supportElement","setSupportDisplay","show","openSupport","id","jsx","useFeedback","context","useContext"],"mappings":"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"}
|